feat: add emoji support
This commit is contained in:
parent
559bb72b91
commit
424c7b2ff4
6 changed files with 56 additions and 27 deletions
|
|
@ -1,5 +1,6 @@
|
|||
import { defineMDSveXConfig as defineConfig } from 'mdsvex';
|
||||
import remarkGFM from 'remark-gfm';
|
||||
import remarkEmoji from 'remark-emoji';
|
||||
|
||||
const config = defineConfig({
|
||||
layout: {
|
||||
|
|
@ -11,7 +12,7 @@ const config = defineConfig({
|
|||
dashes: 'oldschool',
|
||||
},
|
||||
|
||||
remarkPlugins: [remarkGFM],
|
||||
remarkPlugins: [remarkGFM, remarkEmoji],
|
||||
rehypePlugins: [],
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
"postcss-normalize": "^10.0.1",
|
||||
"prettier": "^2.6.2",
|
||||
"prettier-plugin-svelte": "^2.7.0",
|
||||
"remark-emoji": "^3.0.2",
|
||||
"remark-gfm": "^3.0.1",
|
||||
"svelte": "^3.44.0",
|
||||
"svelte-check": "^2.7.1",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
// svelte-ignore unused-export-let
|
||||
export let description;
|
||||
export let created;
|
||||
export let updated;
|
||||
export let updated = '';
|
||||
// svelte-ignore unused-export-let
|
||||
export let keywords;
|
||||
// svelte-ignore unused-export-let
|
||||
|
|
|
|||
|
|
@ -3,17 +3,17 @@ import type { BlogPostFrontmatter, BlogPostMeta } from '../../types';
|
|||
export async function GET() {
|
||||
const modules = import.meta.glob('./*.svx');
|
||||
const posts: BlogPostMeta[] = [];
|
||||
|
||||
const resolved = (await Promise.all(Object.values(modules).map((f) => f()))) as {
|
||||
metadata: BlogPostFrontmatter;
|
||||
}[];
|
||||
resolved.forEach((file, index) => {
|
||||
const path = Object.keys(modules)[index];
|
||||
const { metadata } = file;
|
||||
|
||||
resolved.forEach(({ metadata }, index) => {
|
||||
const path = Object.keys(modules)[index].replace('.svx', '');
|
||||
if (!metadata.hidden) posts.push({ ...metadata, href: `blog/${path}` });
|
||||
if (!metadata.hidden) posts.push({ ...metadata, href: `blog/${path.replace('.svx', '')}` });
|
||||
});
|
||||
|
||||
posts.sort((a, b) => new Date(b.date).valueOf() - new Date(a.date).valueOf());
|
||||
posts.sort((a, b) => new Date(b.created).valueOf() - new Date(a.created).valueOf());
|
||||
|
||||
return {
|
||||
body: { posts },
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ hidden: false
|
|||
}
|
||||
</script>
|
||||
|
||||
|
||||
Moving away from BigTech is not an easy task. However, in these days, there are plenty polished
|
||||
alternatives out there. Over the years I tried out many different services and software. I will
|
||||
present what worked best for me here.
|
||||
|
|
@ -32,32 +33,32 @@ Privacy is not a black-and-white game.
|
|||
|
||||
| Name | Description | Cost | Selfhostable |
|
||||
| --------------------------------------------------------- | -------------------------------------------- | :---------------: | :----------: |
|
||||
| [Bitwarden](https://bitwarden.com/) | Password manager | free | yes |
|
||||
| [SimpleLogin](https://simplelogin.io/) | Email aliases | free for students | yes |
|
||||
| [Mailbox.org](https://mailbox.org/en/) | Email hosting | 1 € / m | no |
|
||||
| [Element](https://element.io/) | Instant messenging | free | yes |
|
||||
| [OpenStreetMap](https://www.openstreetmap.org/) | Global map | free | no |
|
||||
| [Baïkal](https://sabre.io/baikal/) | Lightweight calendar synchronisation | free | yes |
|
||||
| [Filebrowser](https://github.com/filebrowser/filebrowser) | Lightweight file organisation in the browser | free | yes |
|
||||
| [xBrowserSync](https://www.xbrowsersync.org/) | Bookmark sync | free | yes |
|
||||
| [Bitwarden](https://bitwarden.com/) | Password manager | free | :white_check_mark: |
|
||||
| [SimpleLogin](https://simplelogin.io/) | Email aliases | free for students | :white_check_mark: |
|
||||
| [Mailbox.org](https://mailbox.org/en/) | Email hosting | 1 € / m | :x: |
|
||||
| [Element](https://element.io/) | Instant messenging | free | :white_check_mark: |
|
||||
| [OpenStreetMap](https://www.openstreetmap.org/) | Global map | free | :x: |
|
||||
| [Baïkal](https://sabre.io/baikal/) | Lightweight calendar synchronisation | free | :white_check_mark: |
|
||||
| [Filebrowser](https://github.com/filebrowser/filebrowser) | Lightweight file organisation in the browser | free | :white_check_mark: |
|
||||
| [xBrowserSync](https://www.xbrowsersync.org/) | Bookmark sync | free | :white_check_mark: |
|
||||
|
||||
## PC Software
|
||||
|
||||
| Name | Description | Cost | Selfhostable |
|
||||
| --------------------------------------------------------- | -------------------------------------------- | :---------------: | :----------: |
|
||||
| [Ungoogled Chromium](https://github.com/ungoogled-software/ungoogled-chromium) | Browser | free | NaN |
|
||||
| [KDE Software Suite](https://kde.org/) | Desktop environment | free | NaN |
|
||||
| [i3wm](https://i3wm.org/) | Desktop environment | free | NaN |
|
||||
| [VSCodium](https://vscodium.com/) | No telemetry VSCode | free | NaN |
|
||||
| [Xournal++](https://xournalpp.github.io/) | PDF annotation and creation | free | NaN |
|
||||
| [Ungoogled Chromium](https://github.com/ungoogled-software/ungoogled-chromium) | Browser | free | - |
|
||||
| [KDE Software Suite](https://kde.org/) | Desktop environment | free | - |
|
||||
| [i3wm](https://i3wm.org/) | Desktop environment | free | - |
|
||||
| [VSCodium](https://vscodium.com/) | No telemetry VSCode | free | - |
|
||||
| [Xournal++](https://xournalpp.github.io/) | PDF annotation and creation | free | - |
|
||||
|
||||
## Android Apps
|
||||
|
||||
| Name | Description | Cost | Selfhostable |
|
||||
| --------------------------------------------------------- | -------------------------------------------- | :---------------: | :----------: |
|
||||
| [Infinity](https://f-droid.org/packages/ml.docilealligator.infinityforreddit/) | Reddit client | free | NaN |
|
||||
| [Aegis](https://f-droid.org/en/packages/com.beemdevelopment.aegis) | 2FA Manager | free | NaN |
|
||||
| [FindMyDevice](https://f-droid.org/en/packages/de.nulide.findmydevice/) | Remote phone control | free | yes |
|
||||
| [AdAway](https://f-droid.org/en/packages/org.adaway/) | Adblocking with hosts file | free | NaN |
|
||||
| [OsmAnd+](https://f-droid.org/en/packages/net.osmand.plus/) | Global map | free | no |
|
||||
| [StreetComplete](https://f-droid.org/en/packages/de.westnordost.streetcomplete/) | Improve OpenStreetMap | free | NaN |
|
||||
| [Infinity](https://f-droid.org/packages/ml.docilealligator.infinityforreddit/) | Reddit client | free | - |
|
||||
| [Aegis](https://f-droid.org/en/packages/com.beemdevelopment.aegis) | 2FA Manager | free | - |
|
||||
| [FindMyDevice](https://f-droid.org/en/packages/de.nulide.findmydevice/) | Remote phone control | free | :white_check_mark: |
|
||||
| [AdAway](https://f-droid.org/en/packages/org.adaway/) | Adblocking with hosts file | free | - |
|
||||
| [OsmAnd+](https://f-droid.org/en/packages/net.osmand.plus/) | Global map | free | :x: |
|
||||
| [StreetComplete](https://f-droid.org/en/packages/de.westnordost.streetcomplete/) | Improve OpenStreetMap | free | - |
|
||||
|
|
|
|||
28
yarn.lock
28
yarn.lock
|
|
@ -613,6 +613,11 @@ emoji-regex@^8.0.0:
|
|||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
|
||||
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
|
||||
|
||||
emoticon@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-4.0.1.tgz#2d2bbbf231ce3a5909e185bbb64a9da703a1e749"
|
||||
integrity sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==
|
||||
|
||||
es6-promise@^3.1.2:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
|
||||
|
|
@ -1215,6 +1220,11 @@ lodash.merge@^4.6.2:
|
|||
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
|
||||
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
|
||||
|
||||
lodash@^4.17.21:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
longest-streak@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d"
|
||||
|
|
@ -1727,6 +1737,13 @@ natural-compare@^1.4.0:
|
|||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
|
||||
|
||||
node-emoji@^1.11.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c"
|
||||
integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==
|
||||
dependencies:
|
||||
lodash "^4.17.21"
|
||||
|
||||
node-fetch@^2.6.7:
|
||||
version "2.6.7"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
|
||||
|
|
@ -1929,6 +1946,15 @@ regexpp@^3.2.0:
|
|||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
||||
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
|
||||
|
||||
remark-emoji@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-3.0.2.tgz#786e88af1ecae682d74d7e1219989f34708205da"
|
||||
integrity sha512-hEgxEv2sBtvhT3tNG/tQeeFY3EbslftaOoG14dDZndLo25fWJ6Fbg4ukFbIotOWWrfXyASjXjyHT+6n366k3mg==
|
||||
dependencies:
|
||||
emoticon "^4.0.0"
|
||||
node-emoji "^1.11.0"
|
||||
unist-util-visit "^4.1.0"
|
||||
|
||||
remark-gfm@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f"
|
||||
|
|
@ -2288,7 +2314,7 @@ unist-util-visit-parents@^5.0.0:
|
|||
"@types/unist" "^2.0.0"
|
||||
unist-util-is "^5.0.0"
|
||||
|
||||
unist-util-visit@^4.0.0:
|
||||
unist-util-visit@^4.0.0, unist-util-visit@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.0.tgz#f41e407a9e94da31594e6b1c9811c51ab0b3d8f5"
|
||||
integrity sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue