diff --git a/astro.config.mjs b/astro.config.mjs index 91c1f92..3a5003b 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -42,9 +42,7 @@ export default defineConfig({ ], server: { watch: { - // Customize watch behavior to reduce file watchers ignored: ["**/node_modules/**", "**/dist/**", "**/.git/**"], - usePolling: process.env.NODE_ENV === "production", }, }, }, diff --git a/package.json b/package.json index b74ac80..d945710 100644 --- a/package.json +++ b/package.json @@ -11,13 +11,13 @@ }, "dependencies": { "@astrojs/check": "^0.9.5", - "@astrojs/mdx": "^4.3.8", - "@astrojs/svelte": "^7.2.0", + "@astrojs/mdx": "^4.3.9", + "@astrojs/svelte": "^7.2.1", "@astrojs/tailwind": "^6.0.2", - "astro": "^5.15.1", + "astro": "^5.15.2", "astro-i18n-aut": "^0.7.3", "exifreader": "^4.32.0", - "svelte": "^5.42.2", + "svelte": "^5.42.3", "svelte-gestures": "^5.2.2", "tailwindcss": "^4.1.16", "thumbhash": "^0.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3bde905..7eedf15 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,26 +12,26 @@ importers: specifier: ^0.9.5 version: 0.9.5(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3) '@astrojs/mdx': - specifier: ^4.3.8 - version: 4.3.8(astro@5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1)) + specifier: ^4.3.9 + version: 4.3.9(astro@5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1)) '@astrojs/svelte': - specifier: ^7.2.0 - version: 7.2.0(@types/node@24.9.1)(astro@5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1))(jiti@2.6.1)(svelte@5.42.2)(typescript@5.9.3)(yaml@2.8.1) + specifier: ^7.2.1 + version: 7.2.1(@types/node@24.9.1)(astro@5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1))(jiti@2.6.1)(svelte@5.42.3)(typescript@5.9.3)(yaml@2.8.1) '@astrojs/tailwind': specifier: ^6.0.2 - version: 6.0.2(astro@5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@4.1.16) + version: 6.0.2(astro@5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@4.1.16) astro: - specifier: ^5.15.1 - version: 5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1) + specifier: ^5.15.2 + version: 5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1) astro-i18n-aut: specifier: ^0.7.3 - version: 0.7.3(astro@5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1)) + version: 0.7.3(astro@5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1)) exifreader: specifier: ^4.32.0 version: 4.32.0 svelte: - specifier: ^5.42.2 - version: 5.42.2 + specifier: ^5.42.3 + version: 5.42.3 svelte-gestures: specifier: ^5.2.2 version: 5.2.2 @@ -83,7 +83,7 @@ importers: version: 66.5.4(postcss@8.5.6)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)) unplugin-icons: specifier: ^22.5.0 - version: 22.5.0(@vue/compiler-sfc@3.5.13)(svelte@5.42.2) + version: 22.5.0(@vue/compiler-sfc@3.5.13)(svelte@5.42.3) vite-plugin-glsl: specifier: ^1.5.4 version: 1.5.4(@rollup/pluginutils@5.3.0(rollup@4.52.5))(esbuild@0.25.11)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)) @@ -123,8 +123,8 @@ packages: '@astrojs/markdown-remark@6.3.8': resolution: {integrity: sha512-uFNyFWadnULWK2cOw4n0hLKeu+xaVWeuECdP10cQ3K2fkybtTlhb7J7TcScdjmS8Yps7oje9S/ehYMfZrhrgCg==} - '@astrojs/mdx@4.3.8': - resolution: {integrity: sha512-PXT0n2FfZAWEmQi4u4AZ0OPDDrDIF+aXPZGT5HCf52dex5EV3htMByeJUqYIoXdmazAFTASub0vRZLWBqJhJ9w==} + '@astrojs/mdx@4.3.9': + resolution: {integrity: sha512-80LHiM4z3FxAjATHNgFpa8nlTNSprAWB4UUKnr/QG56Pwk7uRnJWrXlok4wSCi/3fg8kTZ98A408Q91M+iqJdw==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 @@ -136,8 +136,8 @@ packages: '@astrojs/sitemap@3.6.0': resolution: {integrity: sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==} - '@astrojs/svelte@7.2.0': - resolution: {integrity: sha512-6AbtExkKc+m0tHR7Plf4bd3Myx0FMHmAICFfp4eAlv8IavjFmZMIjosRvm2+1l8MTH80p+cQxQmo/R3K+RvXlw==} + '@astrojs/svelte@7.2.1': + resolution: {integrity: sha512-ch1hGF9RSHVCFMnneGuEx3aJcdQqk7GDHmqihDrL6OpMCfX9yQSM7EegsDPXv5oCU6PtjbkegGHaSeugghq12w==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 @@ -964,8 +964,8 @@ packages: peerDependencies: astro: ^5.0.0 - astro@5.15.1: - resolution: {integrity: sha512-VM679M1qxOjGo6q3vKYDNDddkALGgMopG93IwbEXd3Buc2xVLuuPj4HNziNugSbPQx5S6UReMp5uzw10EJN81A==} + astro@5.15.2: + resolution: {integrity: sha512-xQQ+PiYJ7WpUJrHJpAb52TQAUCFmSR8lAtQr3tFfSIZoTQiEMFx3HITJ01t3eDUpHjja8J6JcYqgAhr9xygKQg==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -1187,8 +1187,8 @@ packages: duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - electron-to-chromium@1.5.240: - resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==} + electron-to-chromium@1.5.241: + resolution: {integrity: sha512-ILMvKX/ZV5WIJzzdtuHg8xquk2y0BOGlFOxBVwTpbiXqWIH0hamG45ddU4R3PQ0gYu+xgo0vdHXHli9sHIGb4w==} emmet@2.4.11: resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} @@ -1750,8 +1750,8 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - ofetch@1.4.1: - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + ofetch@1.5.0: + resolution: {integrity: sha512-A7llJ7eZyziA5xq9//3ZurA8OhFqtS99K5/V1sLBJ5j137CM/OAjlbA/TEJXBuOWwOfLqih+oH5U3ran4za1FQ==} ogl@1.0.11: resolution: {integrity: sha512-kUpC154AFfxi16pmZUK4jk3J+8zxwTWGPo03EoYA8QPbzikHoaC82n6pNTbd+oEaJonaE8aPWBlX7ad9zrqLsA==} @@ -2079,8 +2079,8 @@ packages: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@5.42.2: - resolution: {integrity: sha512-iSry5jsBHispVczyt9UrBX/1qu3HQ/UyKPAIjqlvlu3o/eUvc+kpyMyRS2O4HLLx4MvLurLGIUOyyP11pyD59g==} + svelte@5.42.3: + resolution: {integrity: sha512-+8dUmdJGvKSWEfbAgIaUmpD97s1bBAGxEf6s7wQonk+HNdMmrBZtpStzRypRqrYBFUmmhaUgBHUjraE8gLqWAw==} engines: {node: '>=18'} tailwindcss@4.1.16: @@ -2653,12 +2653,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.8(astro@5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1))': + '@astrojs/mdx@4.3.9(astro@5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1))': dependencies: '@astrojs/markdown-remark': 6.3.8 '@mdx-js/mdx': 3.1.1 acorn: 8.15.0 - astro: 5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1) + astro: 5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -2682,12 +2682,12 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.25.76 - '@astrojs/svelte@7.2.0(@types/node@24.9.1)(astro@5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1))(jiti@2.6.1)(svelte@5.42.2)(typescript@5.9.3)(yaml@2.8.1)': + '@astrojs/svelte@7.2.1(@types/node@24.9.1)(astro@5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1))(jiti@2.6.1)(svelte@5.42.3)(typescript@5.9.3)(yaml@2.8.1)': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.42.2)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)) - astro: 5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1) - svelte: 5.42.2 - svelte2tsx: 0.7.45(svelte@5.42.2)(typescript@5.9.3) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.42.3)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)) + astro: 5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1) + svelte: 5.42.3 + svelte2tsx: 0.7.45(svelte@5.42.3)(typescript@5.9.3) typescript: 5.9.3 vite: 6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1) transitivePeerDependencies: @@ -2704,9 +2704,9 @@ snapshots: - tsx - yaml - '@astrojs/tailwind@6.0.2(astro@5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@4.1.16)': + '@astrojs/tailwind@6.0.2(astro@5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@4.1.16)': dependencies: - astro: 5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1) + astro: 5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1) autoprefixer: 10.4.21(postcss@8.5.6) postcss: 8.5.6 postcss-load-config: 4.0.2(postcss@8.5.6) @@ -3176,23 +3176,23 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.42.2)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)))(svelte@5.42.2)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.42.3)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)))(svelte@5.42.3)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.42.2)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.42.3)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)) debug: 4.4.3 - svelte: 5.42.2 + svelte: 5.42.3 vite: 6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.42.2)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.42.3)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.42.2)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)))(svelte@5.42.2)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.42.3)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)))(svelte@5.42.3)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)) debug: 4.4.3 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.21 - svelte: 5.42.2 + svelte: 5.42.3 vite: 6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1) vitefu: 1.1.1(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)(yaml@2.8.1)) transitivePeerDependencies: @@ -3318,7 +3318,7 @@ snapshots: dependencies: '@iconify/utils': 3.0.2 '@unocss/core': 66.5.4 - ofetch: 1.4.1 + ofetch: 1.5.0 transitivePeerDependencies: - supports-color @@ -3345,7 +3345,7 @@ snapshots: '@unocss/preset-web-fonts@66.5.4': dependencies: '@unocss/core': 66.5.4 - ofetch: 1.4.1 + ofetch: 1.5.0 '@unocss/preset-wind3@66.5.4': dependencies: @@ -3540,9 +3540,9 @@ snapshots: astro-font@1.1.0: {} - astro-i18n-aut@0.7.3(astro@5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1)): + astro-i18n-aut@0.7.3(astro@5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1)): dependencies: - astro: 5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1) + astro: 5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1) dedent: 1.7.0 fast-glob: 3.3.3 fs-extra: 11.3.2 @@ -3550,7 +3550,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - astro@5.15.1(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1): + astro@5.15.2(@types/node@24.9.1)(jiti@2.6.1)(rollup@4.52.5)(typescript@5.9.3)(yaml@2.8.1): dependencies: '@astrojs/compiler': 2.13.0 '@astrojs/internal-helpers': 0.7.4 @@ -3696,7 +3696,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.8.20 caniuse-lite: 1.0.30001751 - electron-to-chromium: 1.5.240 + electron-to-chromium: 1.5.241 node-releases: 2.0.26 update-browserslist-db: 1.1.4(browserslist@4.27.0) @@ -3825,7 +3825,7 @@ snapshots: duplexer@0.1.2: {} - electron-to-chromium@1.5.240: {} + electron-to-chromium@1.5.241: {} emmet@2.4.11: dependencies: @@ -4753,7 +4753,7 @@ snapshots: normalize-range@0.1.2: {} - ofetch@1.4.1: + ofetch@1.5.0: dependencies: destr: 2.0.5 node-fetch-native: 1.6.7 @@ -5191,14 +5191,14 @@ snapshots: svelte-gestures@5.2.2: {} - svelte2tsx@0.7.45(svelte@5.42.2)(typescript@5.9.3): + svelte2tsx@0.7.45(svelte@5.42.3)(typescript@5.9.3): dependencies: dedent-js: 1.0.1 scule: 1.3.0 - svelte: 5.42.2 + svelte: 5.42.3 typescript: 5.9.3 - svelte@5.42.2: + svelte@5.42.3: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 @@ -5294,7 +5294,7 @@ snapshots: unifont@0.6.0: dependencies: css-tree: 3.1.0 - ofetch: 1.4.1 + ofetch: 1.5.0 ohash: 2.0.11 unist-util-find-after@5.0.0: @@ -5372,7 +5372,7 @@ snapshots: - postcss - supports-color - unplugin-icons@22.5.0(@vue/compiler-sfc@3.5.13)(svelte@5.42.2): + unplugin-icons@22.5.0(@vue/compiler-sfc@3.5.13)(svelte@5.42.3): dependencies: '@antfu/install-pkg': 1.1.0 '@iconify/utils': 3.0.2 @@ -5381,7 +5381,7 @@ snapshots: unplugin: 2.3.10 optionalDependencies: '@vue/compiler-sfc': 3.5.13 - svelte: 5.42.2 + svelte: 5.42.3 transitivePeerDependencies: - supports-color @@ -5405,7 +5405,7 @@ snapshots: h3: 1.15.4 lru-cache: 10.4.3 node-fetch-native: 1.6.7 - ofetch: 1.4.1 + ofetch: 1.5.0 ufo: 1.6.1 update-browserslist-db@1.1.4(browserslist@4.27.0): diff --git a/src/helpers/memorium.ts b/src/helpers/memorium.ts index dd4355d..7cf0981 100644 --- a/src/helpers/memorium.ts +++ b/src/helpers/memorium.ts @@ -23,27 +23,33 @@ export type MemoriumEntry = MemoriumFile | MemoriumDir; const SERVER_URL = "https://marka.max-richter.dev"; //const SERVER_URL = "http://localhost:8080"; +const cache = {}; + export async function listResource( id: string, ): Promise { const url = `${SERVER_URL}/resources/${id}`; - console.log(url); + if (cache[url]) return cache[url]; try { const response = await fetch(url, { signal: AbortSignal.timeout(5000) }); if (response.ok) { const json = await response.json(); if (json.type == "dir") { - return { + const res = { ...json, content: json.content.filter((res: MemoriumEntry) => res.mime === "application/markdown" ), }; + cache[url] = res; + return res; } + cache[url] = json; return json; } } catch (_e) { console.log("Failed to get: ", url); + cache[url] = undefined; return; } } diff --git a/src/pages/resources/index.astro b/src/pages/resources/index.astro index 2a0725d..811d1d2 100644 --- a/src/pages/resources/index.astro +++ b/src/pages/resources/index.astro @@ -35,7 +35,6 @@ async function getCoverImage(resourceName: string) { await Promise.all( resources.map(async (resource) => { const cover = await getCoverImage(resource.id); - console.log({ cover }); return (