3 Commits

Author SHA1 Message Date
pheralb 6fc3130fba ⚙️ Trying to fix prod deployment
📦 Build / 🛠️ Build app (push) Has been cancelled
🧑‍🚀 Check / 📦 SVGs Size (push) Has been cancelled
🧑‍🚀 Check / ⚡ Testing with Vitest (push) Has been cancelled
🚀 Deploy / ☁️ API (push) Has been cancelled
2025-07-13 20:51:48 +01:00
pheralb a1ecb75140 📦 Upgrade figma/typings, @upstash/*, lucide-svelte, shiki, svelte & svelte-check dependencies 2025-07-13 20:43:52 +01:00
pheralb 4cf881de70 ⚙️ Separate markdown config in another file, create custom config.js file 2025-07-13 20:42:54 +01:00
5 changed files with 216 additions and 190 deletions
+51
View File
@@ -0,0 +1,51 @@
import { escapeSvelte } from 'mdsvex';
import { createHighlighter, makeSingletonHighlighter } from 'shiki';
// Markdown Plugins
import remarkGfm from 'remark-gfm';
import rehypeSlug from 'rehype-slug';
import rehypeAutolinkHeadings from 'rehype-autolink-headings';
// Highlighter
const getHighlighter = makeSingletonHighlighter(createHighlighter);
/** @type {import('mdsvex').MdsvexOptions} */
const mdsvexOptions = {
remarkPlugins: [[remarkGfm]],
rehypePlugins: [
[rehypeSlug],
[
rehypeAutolinkHeadings,
{
behavior: 'wrap',
properties: {
className: [
`before:content-['#'] before:absolute before:-ml-[1em] before:text-neutral-100/0 hover:before:text-neutral-200/50 pl-[1em] -ml-[1em]`
]
}
}
]
],
extensions: ['.md'],
highlight: {
highlighter: async (code, lang = 'text') => {
const highlighter = await getHighlighter({
themes: ['github-light', 'github-dark'],
langs: ['javascript', 'typescript', 'bash', 'json']
});
await highlighter.loadLanguage('javascript', 'typescript', 'bash');
const html = escapeSvelte(
highlighter.codeToHtml(code, {
lang,
themes: {
light: 'github-light',
dark: 'github-dark'
}
})
);
return `{@html \`${html}\` }`;
}
}
};
export { mdsvexOptions };
+7 -7
View File
@@ -39,22 +39,22 @@
"build:figma": "concurrently -n plugin,svelte 'npm run build:plugin -- --define:SITE_URL=\\\"$npm_package_config_siteURL\\\"' 'npm run build'"
},
"dependencies": {
"@figma/plugin-typings": "1.100.2",
"@figma/plugin-typings": "1.115.0",
"@svelte-dev/pretty-code": "1.0.0",
"@svgr/core": "8.1.0",
"@svgr/plugin-jsx": "8.1.0",
"@upstash/ratelimit": "2.0.3",
"@upstash/redis": "1.34.0",
"@upstash/ratelimit": "2.0.5",
"@upstash/redis": "1.35.1",
"clsx": "2.1.1",
"downloadjs": "1.4.7",
"fuse.js": "7.1.0",
"jszip": "3.10.1",
"lucide-svelte": "0.503.0",
"lucide-svelte": "0.525.0",
"mode-watcher": "0.5.1",
"rehype-autolink-headings": "7.1.0",
"rehype-slug": "6.0.0",
"remark-gfm": "4.0.1",
"shiki": "3.3.0",
"shiki": "3.7.0",
"svelte-sonner": "0.3.28",
"tailwind-merge": "2.6.0",
"tailwind-variants": "0.3.1"
@@ -81,8 +81,8 @@
"prettier": "3.3.3",
"prettier-plugin-svelte": "3.2.6",
"prettier-plugin-tailwindcss": "0.6.6",
"svelte": "4.2.19",
"svelte-check": "4.0.2",
"svelte": "4.2.20",
"svelte-check": "4.0.9",
"sveltekit-search-params": "3.0.0",
"tailwindcss": "3.4.17",
"tslib": "2.7.0",
+152 -134
View File
@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@figma/plugin-typings':
specifier: 1.100.2
version: 1.100.2
specifier: 1.115.0
version: 1.115.0
'@svelte-dev/pretty-code':
specifier: 1.0.0
version: 1.0.0(shikiji@0.10.2)
@@ -21,11 +21,11 @@ importers:
specifier: 8.1.0
version: 8.1.0(@svgr/core@8.1.0(typescript@5.6.2))
'@upstash/ratelimit':
specifier: 2.0.3
version: 2.0.3
specifier: 2.0.5
version: 2.0.5(@upstash/redis@1.35.1)
'@upstash/redis':
specifier: 1.34.0
version: 1.34.0
specifier: 1.35.1
version: 1.35.1
clsx:
specifier: 2.1.1
version: 2.1.1
@@ -39,11 +39,11 @@ importers:
specifier: 3.10.1
version: 3.10.1
lucide-svelte:
specifier: 0.503.0
version: 0.503.0(svelte@4.2.19)
specifier: 0.525.0
version: 0.525.0(svelte@4.2.20)
mode-watcher:
specifier: 0.5.1
version: 0.5.1(svelte@4.2.19)
version: 0.5.1(svelte@4.2.20)
rehype-autolink-headings:
specifier: 7.1.0
version: 7.1.0
@@ -54,11 +54,11 @@ importers:
specifier: 4.0.1
version: 4.0.1
shiki:
specifier: 3.3.0
version: 3.3.0
specifier: 3.7.0
version: 3.7.0
svelte-sonner:
specifier: 0.3.28
version: 0.3.28(svelte@4.2.19)
version: 0.3.28(svelte@4.2.20)
tailwind-merge:
specifier: 2.6.0
version: 2.6.0
@@ -68,16 +68,16 @@ importers:
devDependencies:
'@sveltejs/adapter-auto':
specifier: 3.2.5
version: 3.2.5(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))
version: 3.2.5(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))
'@sveltejs/adapter-node':
specifier: 5.2.5
version: 5.2.5(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))
version: 5.2.5(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))
'@sveltejs/kit':
specifier: 2.5.28
version: 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))
version: 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))
'@sveltejs/vite-plugin-svelte':
specifier: 3.1.2
version: 3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))
version: 3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))
'@tailwindcss/typography':
specifier: 0.5.16
version: 0.5.16(tailwindcss@3.4.17)
@@ -95,7 +95,7 @@ importers:
version: 10.4.21(postcss@8.5.3)
bits-ui:
specifier: 0.22.0
version: 0.22.0(svelte@4.2.19)
version: 0.22.0(svelte@4.2.20)
concurrently:
specifier: 9.0.1
version: 9.0.1
@@ -110,13 +110,13 @@ importers:
version: 9.1.0(eslint@9.11.0(jiti@1.21.7))
eslint-plugin-svelte:
specifier: 2.44.0
version: 2.44.0(eslint@9.11.0(jiti@1.21.7))(svelte@4.2.19)
version: 2.44.0(eslint@9.11.0(jiti@1.21.7))(svelte@4.2.20)
globals:
specifier: 15.9.0
version: 15.9.0
mdsvex:
specifier: 0.12.5
version: 0.12.5(svelte@4.2.19)
version: 0.12.5(svelte@4.2.20)
postcss:
specifier: 8.5.3
version: 8.5.3
@@ -125,19 +125,19 @@ importers:
version: 3.3.3
prettier-plugin-svelte:
specifier: 3.2.6
version: 3.2.6(prettier@3.3.3)(svelte@4.2.19)
version: 3.2.6(prettier@3.3.3)(svelte@4.2.20)
prettier-plugin-tailwindcss:
specifier: 0.6.6
version: 0.6.6(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19))(prettier@3.3.3)
version: 0.6.6(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.20))(prettier@3.3.3)
svelte:
specifier: 4.2.19
version: 4.2.19
specifier: 4.2.20
version: 4.2.20
svelte-check:
specifier: 4.0.2
version: 4.0.2(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.2)
specifier: 4.0.9
version: 4.0.9(picomatch@4.0.2)(svelte@4.2.20)(typescript@5.6.2)
sveltekit-search-params:
specifier: 3.0.0
version: 3.0.0(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))
version: 3.0.0(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))
tailwindcss:
specifier: 3.4.17
version: 3.4.17
@@ -546,8 +546,8 @@ packages:
resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@figma/plugin-typings@1.100.2':
resolution: {integrity: sha512-xRlneaT5D6afuzkt8J28DXgHAcglncqNVzh1qe5bJVzTLfniiDQY5N/IVXIJj/u7vXYMY6uqvJt8UBFe5l4FXA==}
'@figma/plugin-typings@1.115.0':
resolution: {integrity: sha512-qAnJuOkZDXKzMacnkugoi9rIIQ9/P3CP0zqsSklXuXhREWsqOTua35Fpkxmp25DHjPqs6tC+eVuVWvKWHHq4pA==}
'@floating-ui/core@1.6.9':
resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
@@ -746,23 +746,23 @@ packages:
cpu: [x64]
os: [win32]
'@shikijs/core@3.3.0':
resolution: {integrity: sha512-CovkFL2WVaHk6PCrwv6ctlmD4SS1qtIfN8yEyDXDYWh4ONvomdM9MaFw20qHuqJOcb8/xrkqoWQRJ//X10phOQ==}
'@shikijs/core@3.7.0':
resolution: {integrity: sha512-yilc0S9HvTPyahHpcum8eonYrQtmGTU0lbtwxhA6jHv4Bm1cAdlPFRCJX4AHebkCm75aKTjjRAW+DezqD1b/cg==}
'@shikijs/engine-javascript@3.3.0':
resolution: {integrity: sha512-XlhnFGv0glq7pfsoN0KyBCz9FJU678LZdQ2LqlIdAj6JKsg5xpYKay3DkazXWExp3DTJJK9rMOuGzU2911pg7Q==}
'@shikijs/engine-javascript@3.7.0':
resolution: {integrity: sha512-0t17s03Cbv+ZcUvv+y33GtX75WBLQELgNdVghnsdhTgU3hVcWcMsoP6Lb0nDTl95ZJfbP1mVMO0p3byVh3uuzA==}
'@shikijs/engine-oniguruma@3.3.0':
resolution: {integrity: sha512-l0vIw+GxeNU7uGnsu6B+Crpeqf+WTQ2Va71cHb5ZYWEVEPdfYwY5kXwYqRJwHrxz9WH+pjSpXQz+TJgAsrkA5A==}
'@shikijs/engine-oniguruma@3.7.0':
resolution: {integrity: sha512-5BxcD6LjVWsGu4xyaBC5bu8LdNgPCVBnAkWTtOCs/CZxcB22L8rcoWfv7Hh/3WooVjBZmFtyxhgvkQFedPGnFw==}
'@shikijs/langs@3.3.0':
resolution: {integrity: sha512-zt6Kf/7XpBQKSI9eqku+arLkAcDQ3NHJO6zFjiChI8w0Oz6Jjjay7pToottjQGjSDCFk++R85643WbyINcuL+g==}
'@shikijs/langs@3.7.0':
resolution: {integrity: sha512-1zYtdfXLr9xDKLTGy5kb7O0zDQsxXiIsw1iIBcNOO8Yi5/Y1qDbJ+0VsFoqTlzdmneO8Ij35g7QKF8kcLyznCQ==}
'@shikijs/themes@3.3.0':
resolution: {integrity: sha512-tXeCvLXBnqq34B0YZUEaAD1lD4lmN6TOHAhnHacj4Owh7Ptb/rf5XCDeROZt2rEOk5yuka3OOW2zLqClV7/SOg==}
'@shikijs/themes@3.7.0':
resolution: {integrity: sha512-VJx8497iZPy5zLiiCTSIaOChIcKQwR0FebwE9S3rcN0+J/GTWwQ1v/bqhTbpbY3zybPKeO8wdammqkpXc4NVjQ==}
'@shikijs/types@3.3.0':
resolution: {integrity: sha512-KPCGnHG6k06QG/2pnYGbFtFvpVJmC3uIpXrAiPrawETifujPBv0Se2oUxm5qYgjCvGJS9InKvjytOdN+bGuX+Q==}
'@shikijs/types@3.7.0':
resolution: {integrity: sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -983,11 +983,13 @@ packages:
resolution: {integrity: sha512-7qJHGxpQgQr9/vmeS1PktEwvNAF7TI4iJDi8Pu2CFZ9YUGHZH4fOP5TfYlZ4aVxfopnELiE4BS4FBjyK7V1/xQ==}
engines: {node: '>=16.0.0'}
'@upstash/ratelimit@2.0.3':
resolution: {integrity: sha512-BMUpZPZ9IMwrUwohw0HoVAwjBRo5SDb0riAxfCGrLbutuZTPiVagh017Cm3GfhMqwUWLOp0xJQxTCXp812UJVQ==}
'@upstash/ratelimit@2.0.5':
resolution: {integrity: sha512-1FRv0cs3ZlBjCNOCpCmKYmt9BYGIJf0J0R3pucOPE88R21rL7jNjXG+I+rN/BVOvYJhI9niRAS/JaSNjiSICxA==}
peerDependencies:
'@upstash/redis': ^1.34.3
'@upstash/redis@1.34.0':
resolution: {integrity: sha512-TrXNoJLkysIl8SBc4u9bNnyoFYoILpCcFJcLyWCccb/QSUmaVKdvY0m5diZqc3btExsapcMbaw/s/wh9Sf1pJw==}
'@upstash/redis@1.35.1':
resolution: {integrity: sha512-sIMuAMU9IYbE2bkgDby8KLoQKRiBMXn0moXxqLvUmQ7VUu2CvulZLtK8O0x3WQZFvvZhU5sRC2/lOVZdGfudkA==}
'@vitest/expect@2.1.1':
resolution: {integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==}
@@ -1163,6 +1165,10 @@ packages:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
@@ -1222,9 +1228,6 @@ packages:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
crypto-js@4.2.0:
resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
css-tree@2.3.1:
resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
@@ -1723,8 +1726,8 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
lucide-svelte@0.503.0:
resolution: {integrity: sha512-oT1idMbgJKCCLWI4U7bdUYUZqxS78fiTGJuKGZ5u0NJNyuiUErDu3G7sXkYpfDwwspeid7gZSjrlJbTINEfErw==}
lucide-svelte@0.525.0:
resolution: {integrity: sha512-kfuN6JcCqTfCz2B76aXnyGLAzEBRSYw5GaUspM5RNHQZS5aI5yaKu06fbaofOk8cDvUtY0AUm/zAix7aUX6Q3A==}
peerDependencies:
svelte: ^3 || ^4 || ^5.0.0-next.42
@@ -1935,11 +1938,11 @@ packages:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
oniguruma-parser@0.12.0:
resolution: {integrity: sha512-fD9o5ebCmEAA9dLysajdQvuKzLL7cj+w7DQjuO3Cb6IwafENfx6iL+RGkmyW82pVRsvgzixsWinHvgxTMJvdIA==}
oniguruma-parser@0.12.1:
resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
oniguruma-to-es@4.3.1:
resolution: {integrity: sha512-VtX1kepWO+7HG7IWV5v72JhiqofK7XsiHmtgnvurnNOTdIvE5mrdWYtsOrQyrXCv1L2Ckm08hywp+MFO7rC4Ug==}
oniguruma-to-es@4.3.3:
resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==}
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
@@ -2190,6 +2193,10 @@ packages:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
regex-recursion@6.0.2:
resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
@@ -2291,11 +2298,12 @@ packages:
resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
engines: {node: '>= 0.4'}
shiki@3.3.0:
resolution: {integrity: sha512-j0Z1tG5vlOFGW8JVj0Cpuatzvshes7VJy5ncDmmMaYcmnGW0Js1N81TOW98ivTFNZfKRn9uwEg/aIm638o368g==}
shiki@3.7.0:
resolution: {integrity: sha512-ZcI4UT9n6N2pDuM2n3Jbk0sR4Swzq43nLPgS/4h0E3B/NrFn2HKElrDtceSf8Zx/OWYOo7G1SAtBLypCp+YXqg==}
shikiji-core@0.10.2:
resolution: {integrity: sha512-9Of8HMlF96usXJHmCL3Gd0Fcf0EcyJUF9m8EoAKKd98mHXi0La2AZl1h6PegSFGtiYcBDK/fLuKbDa1l16r1fA==}
deprecated: Deprecated, use @shikijs/core instead
shikiji@0.10.2:
resolution: {integrity: sha512-wtZg3T0vtYV2PnqusWQs3mDaJBdCPWxFDrBM/SE5LfrX92gjUvfEMlc+vJnoKY6Z/S44OWaCRzNIsdBRWcTAiw==}
@@ -2371,8 +2379,8 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
svelte-check@4.0.2:
resolution: {integrity: sha512-w2yqcG9ELJe2RJCnAvB7v0OgkHhL3czzz/tVoxGFfO6y4mOrF6QHCDhXijeXzsU7LVKEwWS3Qd9tza4JBuDxqA==}
svelte-check@4.0.9:
resolution: {integrity: sha512-SVNCz2L+9ZELGli7G0n3B3QE5kdf0u27RtKr2ZivWQhcWIXatZxwM4VrQ6AiA2k9zKp2mk5AxkEhdjbpjv7rEw==}
engines: {node: '>= 18.0.0'}
hasBin: true
peerDependencies:
@@ -2399,8 +2407,8 @@ packages:
peerDependencies:
svelte: ^3.0.0 || ^4.0.0 || ^5.0.0-next.1
svelte@4.2.19:
resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==}
svelte@4.2.20:
resolution: {integrity: sha512-eeEgGc2DtiUil5ANdtd8vPwt9AgaMdnuUFnPft9F5oMvU/FHu5IHFic+p1dR/UOB7XU2mX2yHW+NcTch4DCh5Q==}
engines: {node: '>=16'}
sveltekit-search-params@3.0.0:
@@ -2514,6 +2522,9 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
undici-types@6.19.8:
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
@@ -2986,7 +2997,7 @@ snapshots:
'@eslint/core': 0.12.0
levn: 0.4.1
'@figma/plugin-typings@1.100.2': {}
'@figma/plugin-typings@1.115.0': {}
'@floating-ui/core@1.6.9':
dependencies:
@@ -3033,7 +3044,7 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@melt-ui/svelte@0.76.2(svelte@4.2.19)':
'@melt-ui/svelte@0.76.2(svelte@4.2.20)':
dependencies:
'@floating-ui/core': 1.6.9
'@floating-ui/dom': 1.6.13
@@ -3041,7 +3052,7 @@ snapshots:
dequal: 2.0.3
focus-trap: 7.6.4
nanoid: 5.1.2
svelte: 4.2.19
svelte: 4.2.20
'@nodelib/fs.scandir@2.1.5':
dependencies:
@@ -3153,33 +3164,33 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.34.8':
optional: true
'@shikijs/core@3.3.0':
'@shikijs/core@3.7.0':
dependencies:
'@shikijs/types': 3.3.0
'@shikijs/types': 3.7.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
'@shikijs/engine-javascript@3.3.0':
'@shikijs/engine-javascript@3.7.0':
dependencies:
'@shikijs/types': 3.3.0
'@shikijs/types': 3.7.0
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 4.3.1
oniguruma-to-es: 4.3.3
'@shikijs/engine-oniguruma@3.3.0':
'@shikijs/engine-oniguruma@3.7.0':
dependencies:
'@shikijs/types': 3.3.0
'@shikijs/types': 3.7.0
'@shikijs/vscode-textmate': 10.0.2
'@shikijs/langs@3.3.0':
'@shikijs/langs@3.7.0':
dependencies:
'@shikijs/types': 3.3.0
'@shikijs/types': 3.7.0
'@shikijs/themes@3.3.0':
'@shikijs/themes@3.7.0':
dependencies:
'@shikijs/types': 3.3.0
'@shikijs/types': 3.7.0
'@shikijs/types@3.3.0':
'@shikijs/types@3.7.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -3197,22 +3208,22 @@ snapshots:
- shikiji
- supports-color
'@sveltejs/adapter-auto@3.2.5(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))':
'@sveltejs/adapter-auto@3.2.5(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))':
dependencies:
'@sveltejs/kit': 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))
'@sveltejs/kit': 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))
import-meta-resolve: 4.1.0
'@sveltejs/adapter-node@5.2.5(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))':
'@sveltejs/adapter-node@5.2.5(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))':
dependencies:
'@rollup/plugin-commonjs': 28.0.2(rollup@4.34.8)
'@rollup/plugin-json': 6.1.0(rollup@4.34.8)
'@rollup/plugin-node-resolve': 15.3.1(rollup@4.34.8)
'@sveltejs/kit': 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))
'@sveltejs/kit': 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))
rollup: 4.34.8
'@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))':
'@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))':
dependencies:
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))
'@types/cookie': 0.6.0
cookie: 0.6.0
devalue: 5.1.1
@@ -3224,28 +3235,28 @@ snapshots:
sade: 1.8.1
set-cookie-parser: 2.7.1
sirv: 2.0.4
svelte: 4.2.19
svelte: 4.2.20
tiny-glob: 0.2.9
vite: 5.4.7(@types/node@22.5.5)
'@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))':
'@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))':
dependencies:
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))
debug: 4.4.0
svelte: 4.2.19
svelte: 4.2.20
vite: 5.4.7(@types/node@22.5.5)
transitivePeerDependencies:
- supports-color
'@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))':
'@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))':
dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))
'@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))
debug: 4.4.0
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.17
svelte: 4.2.19
svelte-hmr: 0.16.0(svelte@4.2.19)
svelte: 4.2.20
svelte-hmr: 0.16.0(svelte@4.2.20)
vite: 5.4.7(@types/node@22.5.5)
vitefu: 0.2.5(vite@5.4.7(@types/node@22.5.5))
transitivePeerDependencies:
@@ -3455,15 +3466,16 @@ snapshots:
'@upstash/core-analytics@0.0.10':
dependencies:
'@upstash/redis': 1.34.0
'@upstash/redis': 1.35.1
'@upstash/ratelimit@2.0.3':
'@upstash/ratelimit@2.0.5(@upstash/redis@1.35.1)':
dependencies:
'@upstash/core-analytics': 0.0.10
'@upstash/redis': 1.35.1
'@upstash/redis@1.34.0':
'@upstash/redis@1.35.1':
dependencies:
crypto-js: 4.2.0
uncrypto: 0.1.3
'@vitest/expect@2.1.1':
dependencies:
@@ -3565,12 +3577,12 @@ snapshots:
binary-extensions@2.3.0: {}
bits-ui@0.22.0(svelte@4.2.19):
bits-ui@0.22.0(svelte@4.2.20):
dependencies:
'@internationalized/date': 3.7.0
'@melt-ui/svelte': 0.76.2(svelte@4.2.19)
'@melt-ui/svelte': 0.76.2(svelte@4.2.20)
nanoid: 5.1.2
svelte: 4.2.19
svelte: 4.2.20
brace-expansion@1.1.11:
dependencies:
@@ -3639,6 +3651,10 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
chokidar@4.0.3:
dependencies:
readdirp: 4.1.2
cliui@8.0.1:
dependencies:
string-width: 4.2.3
@@ -3700,8 +3716,6 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
crypto-js@4.2.0: {}
css-tree@2.3.1:
dependencies:
mdn-data: 2.0.30
@@ -3824,7 +3838,7 @@ snapshots:
dependencies:
eslint: 9.11.0(jiti@1.21.7)
eslint-plugin-svelte@2.44.0(eslint@9.11.0(jiti@1.21.7))(svelte@4.2.19):
eslint-plugin-svelte@2.44.0(eslint@9.11.0(jiti@1.21.7))(svelte@4.2.20):
dependencies:
'@eslint-community/eslint-utils': 4.4.1(eslint@9.11.0(jiti@1.21.7))
'@jridgewell/sourcemap-codec': 1.5.0
@@ -3837,9 +3851,9 @@ snapshots:
postcss-safe-parser: 6.0.0(postcss@8.5.3)
postcss-selector-parser: 6.1.2
semver: 7.7.1
svelte-eslint-parser: 0.41.1(svelte@4.2.19)
svelte-eslint-parser: 0.41.1(svelte@4.2.20)
optionalDependencies:
svelte: 4.2.19
svelte: 4.2.20
transitivePeerDependencies:
- ts-node
@@ -4234,9 +4248,9 @@ snapshots:
dependencies:
yallist: 3.1.1
lucide-svelte@0.503.0(svelte@4.2.19):
lucide-svelte@0.525.0(svelte@4.2.20):
dependencies:
svelte: 4.2.19
svelte: 4.2.20
magic-string@0.30.17:
dependencies:
@@ -4360,13 +4374,13 @@ snapshots:
mdn-data@2.0.30: {}
mdsvex@0.12.5(svelte@4.2.19):
mdsvex@0.12.5(svelte@4.2.20):
dependencies:
'@types/mdast': 4.0.4
'@types/unist': 2.0.11
prism-svelte: 0.4.7
prismjs: 1.29.0
svelte: 4.2.19
svelte: 4.2.20
unist-util-visit: 2.0.3
vfile-message: 2.0.4
@@ -4578,9 +4592,9 @@ snapshots:
minipass@7.1.2: {}
mode-watcher@0.5.1(svelte@4.2.19):
mode-watcher@0.5.1(svelte@4.2.20):
dependencies:
svelte: 4.2.19
svelte: 4.2.20
mri@1.2.0: {}
@@ -4615,11 +4629,11 @@ snapshots:
object-hash@3.0.0: {}
oniguruma-parser@0.12.0: {}
oniguruma-parser@0.12.1: {}
oniguruma-to-es@4.3.1:
oniguruma-to-es@4.3.3:
dependencies:
oniguruma-parser: 0.12.0
oniguruma-parser: 0.12.1
regex: 6.0.1
regex-recursion: 6.0.2
@@ -4753,16 +4767,16 @@ snapshots:
prelude-ls@1.2.1: {}
prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19):
prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.20):
dependencies:
prettier: 3.3.3
svelte: 4.2.19
svelte: 4.2.20
prettier-plugin-tailwindcss@0.6.6(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19))(prettier@3.3.3):
prettier-plugin-tailwindcss@0.6.6(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.20))(prettier@3.3.3):
dependencies:
prettier: 3.3.3
optionalDependencies:
prettier-plugin-svelte: 3.2.6(prettier@3.3.3)(svelte@4.2.19)
prettier-plugin-svelte: 3.2.6(prettier@3.3.3)(svelte@4.2.20)
prettier@3.3.3: {}
@@ -4796,6 +4810,8 @@ snapshots:
dependencies:
picomatch: 2.3.1
readdirp@4.1.2: {}
regex-recursion@6.0.2:
dependencies:
regex-utilities: 2.3.0
@@ -4946,14 +4962,14 @@ snapshots:
shell-quote@1.8.2: {}
shiki@3.3.0:
shiki@3.7.0:
dependencies:
'@shikijs/core': 3.3.0
'@shikijs/engine-javascript': 3.3.0
'@shikijs/engine-oniguruma': 3.3.0
'@shikijs/langs': 3.3.0
'@shikijs/themes': 3.3.0
'@shikijs/types': 3.3.0
'@shikijs/core': 3.7.0
'@shikijs/engine-javascript': 3.7.0
'@shikijs/engine-oniguruma': 3.7.0
'@shikijs/langs': 3.7.0
'@shikijs/themes': 3.7.0
'@shikijs/types': 3.7.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -5037,19 +5053,19 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
svelte-check@4.0.2(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.2):
svelte-check@4.0.9(picomatch@4.0.2)(svelte@4.2.20)(typescript@5.6.2):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
chokidar: 3.6.0
chokidar: 4.0.3
fdir: 6.4.3(picomatch@4.0.2)
picocolors: 1.1.1
sade: 1.8.1
svelte: 4.2.19
svelte: 4.2.20
typescript: 5.6.2
transitivePeerDependencies:
- picomatch
svelte-eslint-parser@0.41.1(svelte@4.2.19):
svelte-eslint-parser@0.41.1(svelte@4.2.20):
dependencies:
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
@@ -5057,17 +5073,17 @@ snapshots:
postcss: 8.5.3
postcss-scss: 4.0.9(postcss@8.5.3)
optionalDependencies:
svelte: 4.2.19
svelte: 4.2.20
svelte-hmr@0.16.0(svelte@4.2.19):
svelte-hmr@0.16.0(svelte@4.2.20):
dependencies:
svelte: 4.2.19
svelte: 4.2.20
svelte-sonner@0.3.28(svelte@4.2.19):
svelte-sonner@0.3.28(svelte@4.2.20):
dependencies:
svelte: 4.2.19
svelte: 4.2.20
svelte@4.2.19:
svelte@4.2.20:
dependencies:
'@ampproject/remapping': 2.3.0
'@jridgewell/sourcemap-codec': 1.5.0
@@ -5084,11 +5100,11 @@ snapshots:
magic-string: 0.30.17
periscopic: 3.1.0
sveltekit-search-params@3.0.0(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)):
sveltekit-search-params@3.0.0(@sveltejs/kit@2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)):
dependencies:
'@sveltejs/kit': 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.7(@types/node@22.5.5))
svelte: 4.2.19
'@sveltejs/kit': 2.5.28(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5)))(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.20)(vite@5.4.7(@types/node@22.5.5))
svelte: 4.2.20
transitivePeerDependencies:
- supports-color
- vite
@@ -5197,6 +5213,8 @@ snapshots:
typescript@5.6.2: {}
uncrypto@0.1.3: {}
undici-types@6.19.8: {}
unified@11.0.5:
+3 -1
View File
@@ -2,8 +2,10 @@ import { Redis } from '@upstash/redis';
import { Ratelimit } from '@upstash/ratelimit';
import { UPSTASH_REDIS_TOKEN, UPSTASH_REDIS_URL, SVGL_API_REQUESTS } from '$env/static/private';
const cleanUrl = UPSTASH_REDIS_URL.replace(/^['"]|['"]$/g, '').trim();
const redis = new Redis({
url: UPSTASH_REDIS_URL,
url: cleanUrl,
token: UPSTASH_REDIS_TOKEN
});
+3 -48
View File
@@ -4,55 +4,10 @@ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
import adapter from '@sveltejs/adapter-node';
// 📦 Extensions:
import { mdsvex, escapeSvelte } from 'mdsvex';
import { createHighlighter, makeSingletonHighlighter } from 'shiki';
import { mdsvex } from 'mdsvex';
// 🎨 Markdown Plugins:
import remarkGfm from 'remark-gfm';
import rehypeAutolinkHeadings from 'rehype-autolink-headings';
import rehypeSlug from 'rehype-slug';
// 📄 Markdown config:
const getHighlighter = makeSingletonHighlighter(createHighlighter);
/** @type {import('mdsvex').MdsvexOptions} */
const mdsvexOptions = {
remarkPlugins: [[remarkGfm]],
rehypePlugins: [
[rehypeSlug],
[
rehypeAutolinkHeadings,
{
behavior: 'wrap',
properties: {
className: [
`before:content-['#'] before:absolute before:-ml-[1em] before:text-neutral-100/0 hover:before:text-neutral-200/50 pl-[1em] -ml-[1em]`
]
}
}
]
],
extensions: ['.md'],
highlight: {
highlighter: async (code, lang = 'text') => {
const highlighter = await getHighlighter({
themes: ['github-light', 'github-dark'],
langs: ['javascript', 'typescript', 'bash', 'json']
});
await highlighter.loadLanguage('javascript', 'typescript', 'bash');
const html = escapeSvelte(
highlighter.codeToHtml(code, {
lang,
themes: {
light: 'github-light',
dark: 'github-dark'
}
})
);
return `{@html \`${html}\` }`;
}
}
};
// 📄 Markdown Config:
import { mdsvexOptions } from './markdown.config.js';
// 🧡 Svelte config:
/** @type {import('@sveltejs/kit').Config} */