From ff2a2fee48c4d4b9634ef35a14edf6dcdc36c751 Mon Sep 17 00:00:00 2001 From: schreifuchs Date: Tue, 20 Jan 2026 18:39:07 +0100 Subject: [PATCH] feat: nextcloud sync --- .gemini/settings.json | 12 + GEMINI.md | 62 ++++ TODO_NEXTCLOUD.md | 36 +++ package.json | 8 +- pnpm-lock.yaml | 396 +++++++++++++++++++++++-- pnpm-workspace.yaml | 2 + src/lib/components/Markdown.svelte | 65 ++-- src/lib/server/nextcloud.ts | 21 ++ src/routes/assets/[...path]/+server.ts | 29 ++ src/routes/fotos/+page.server.ts | 16 + src/routes/fotos/+page.svelte | 5 +- src/routes/informatik/+page.server.ts | 16 + src/routes/informatik/+page.svelte | 5 +- src/routes/musig/+page.server.ts | 16 + src/routes/musig/+page.svelte | 5 +- src/routes/video/+page.server.ts | 16 + src/routes/video/+page.svelte | 5 +- svelte.config.js | 12 +- 18 files changed, 647 insertions(+), 80 deletions(-) create mode 100644 .gemini/settings.json create mode 100644 GEMINI.md create mode 100644 TODO_NEXTCLOUD.md create mode 100644 pnpm-workspace.yaml create mode 100644 src/lib/server/nextcloud.ts create mode 100644 src/routes/assets/[...path]/+server.ts create mode 100644 src/routes/fotos/+page.server.ts create mode 100644 src/routes/informatik/+page.server.ts create mode 100644 src/routes/musig/+page.server.ts create mode 100644 src/routes/video/+page.server.ts diff --git a/.gemini/settings.json b/.gemini/settings.json new file mode 100644 index 0000000..3cc6af9 --- /dev/null +++ b/.gemini/settings.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://raw.githubusercontent.com/google-gemini/gemini-cli/main/schemas/settings.schema.json", + "mcpServers": { + "svelte": { + "command": "npx", + "args": [ + "-y", + "@sveltejs/mcp" + ] + } + } +} diff --git a/GEMINI.md b/GEMINI.md new file mode 100644 index 0000000..b99c76c --- /dev/null +++ b/GEMINI.md @@ -0,0 +1,62 @@ +# Project Context: Schreifuchs.ch + +## Overview +This project is a personal portfolio website for "Schreifuchs", featuring sections for Photography (Fotos), Informatics (Informatik), Music (Musig), and Video. It is currently being transitioned from a static site to a dynamic Node.js site powered by Nextcloud via WebDAV. + +- [Nextcloud Integration Plan](./TODO_NEXTCLOUD.md) + +## Tech Stack +- **Framework:** Svelte 5 (using Runes) & SvelteKit +- **Language:** TypeScript +- **Styling:** Tailwind CSS (with custom text-shadow plugin) +- **Bundler:** Vite +- **Adapter:** `@sveltejs/adapter-static` (SSG) +- **Markdown:** `@ts-stack/markdown` for content rendering + +## Directory Structure +- `src/routes/`: File-based routing. + - `src/routes/fotos`, `informatik`, `musig`, `video`: Feature-specific pages. +- `src/lib/`: Shared utilities and components. + - `src/lib/components/`: Reusable UI components (`ImageTile`, `ImageLinkTile`, `Markdown`). + - `src/lib/images/`: Local image assets imported in components. +- `static/`: Static assets served as-is. + - Contains Markdown content files (`Fotos.md`, etc.) and their associated attachments. + +## Key Conventions +- **Svelte 5:** Use Runes (`$state`, `$derived`, `$props`, etc.) for reactivity. +- **Styling:** Use Tailwind utility classes. The font family is configured to 'Outfit'. +- **Content:** Content is largely driven by Markdown files located in `static/` which are fetched and parsed. +- **Static Generation:** The site is built as a static site outputting to the `build/` directory. + +## Development Scripts +- `npm run dev`: Start development server. +- `npm run build`: Build for production. +- `npm run check`: Run Svelte and TypeScript checks. + +--- + +# Agent Instructions (Svelte MCP) + +You are able to use the Svelte MCP server, where you have access to comprehensive Svelte 5 and SvelteKit documentation. Here's how to use the available tools effectively: + +## Available MCP Tools: + +### 1. list-sections + +Use this FIRST to discover all available documentation sections. Returns a structured list with titles, use_cases, and paths. +When asked about Svelte or SvelteKit topics, ALWAYS use this tool at the start of the chat to find relevant sections. + +### 2. get-documentation + +Retrieves full documentation content for specific sections. Accepts single or multiple sections. +After calling the list-sections tool, you MUST analyze the returned documentation sections (especially the use_cases field) and then use the get-documentation tool to fetch ALL documentation sections that are relevant for the user's task. + +### 3. svelte-autofixer + +Analyzes Svelte code and returns issues and suggestions. +You MUST use this tool whenever writing Svelte code before sending it to the user. Keep calling it until no issues or suggestions are returned. + +### 4. playground-link + +Generates a Svelte Playground link with the provided code. +After completing the code, ask the user if they want a playground link. Only call this tool after user confirmation and NEVER if code was written to files in their project. \ No newline at end of file diff --git a/TODO_NEXTCLOUD.md b/TODO_NEXTCLOUD.md new file mode 100644 index 0000000..fcce75c --- /dev/null +++ b/TODO_NEXTCLOUD.md @@ -0,0 +1,36 @@ +# Plan: Nextcloud WebDAV Integration + +Transition from static file hosting to a dynamic SvelteKit (Node.js) application that fetches content directly from Nextcloud. + +## 1. Infrastructure Shift +- [ ] Replace `@sveltejs/adapter-static` with `@sveltejs/adapter-node`. +- [ ] Update `svelte.config.js` to use the Node adapter. +- [ ] Remove `fallback: undefined` and other static-specific configurations. + +## 2. Dependencies +- [ ] Install `webdav` client library. +- [ ] Install `dotenv` (if not already handled by SvelteKit's built-in env support). + +## 3. Secure Configuration +- [ ] Set up `.env` with: + - `NEXTCLOUD_URL` + - `NEXTCLOUD_USER` + - `NEXTCLOUD_PASSWORD` +- [ ] Use `$env/dynamic/private` to access these in server-side code only. + +## 4. Server-Side Data Fetching +- [ ] Create `src/lib/server/nextcloud.ts` to initialize and export the WebDAV client. +- [ ] Implement `+page.server.ts` for each content route: + - Fetch Markdown content from Nextcloud. + - Return the raw string to the frontend. +- [ ] Update `Markdown.svelte` to receive and render raw strings instead of fetching from a URL on the client. + +## 5. Asset Proxying +- [ ] Create a catch-all server route (e.g., `src/routes/assets/[...path]/+server.ts`). +- [ ] This route will: + - Authenticate with WebDAV. + - Stream images/files from Nextcloud directly to the browser. +- [ ] Update Markdown rendering logic to rewrite image URLs to point to this proxy route. + +## 6. Optimization (Optional but Recommended) +- [ ] Implement server-side caching (e.g., using a simple TTL cache or Redis) to avoid hitting Nextcloud on every single request. diff --git a/package.json b/package.json index f3a9059..47e6639 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,11 @@ }, "devDependencies": { "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/adapter-static": "^3.0.2", + "@sveltejs/adapter-node": "^5.5.1", "@sveltejs/kit": "^2.5.27", "@sveltejs/vite-plugin-svelte": "^4.0.0", + "@types/mime-types": "^3.0.1", + "@types/node": "^25.0.9", "autoprefixer": "^10.4.19", "postcss": "^8.4.38", "svelte": "^5.0.0", @@ -26,6 +28,8 @@ "dependencies": { "@fontsource/outfit": "^5.0.13", "@ts-stack/markdown": "^1.5.0", - "svelte-preprocess": "^6.0.2" + "mime-types": "^3.0.2", + "svelte-preprocess": "^6.0.2", + "webdav": "^5.8.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f6cdf42..87571b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,22 +14,34 @@ importers: '@ts-stack/markdown': specifier: ^1.5.0 version: 1.5.0 + mime-types: + specifier: ^3.0.2 + version: 3.0.2 svelte-preprocess: specifier: ^6.0.2 version: 6.0.2(postcss-load-config@4.0.2(postcss@8.4.38))(postcss@8.4.38)(svelte@5.47.0)(typescript@5.9.3) + webdav: + specifier: ^5.8.0 + version: 5.8.0 devDependencies: '@sveltejs/adapter-auto': specifier: ^3.0.0 - version: 3.2.0(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21)) - '@sveltejs/adapter-static': - specifier: ^3.0.2 - version: 3.0.2(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21)) + version: 3.2.0(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21(@types/node@25.0.9))) + '@sveltejs/adapter-node': + specifier: ^5.5.1 + version: 5.5.1(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21(@types/node@25.0.9))) '@sveltejs/kit': specifier: ^2.5.27 - version: 2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21) + version: 2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21(@types/node@25.0.9)) '@sveltejs/vite-plugin-svelte': specifier: ^4.0.0 - version: 4.0.4(svelte@5.47.0)(vite@5.4.21) + version: 4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)) + '@types/mime-types': + specifier: ^3.0.1 + version: 3.0.1 + '@types/node': + specifier: ^25.0.9 + version: 25.0.9 autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) @@ -41,7 +53,7 @@ importers: version: 5.47.0 svelte-check: specifier: ^4.0.0 - version: 4.3.5(svelte@5.47.0)(typescript@5.9.3) + version: 4.3.5(picomatch@4.0.3)(svelte@5.47.0)(typescript@5.9.3) tailwindcss: specifier: ^3.4.3 version: 3.4.3 @@ -50,7 +62,7 @@ importers: version: 5.9.3 vite: specifier: ^5.4.4 - version: 5.4.21 + version: 5.4.21(@types/node@25.0.9) packages: @@ -58,6 +70,9 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + '@buttercup/fetch@0.2.1': + resolution: {integrity: sha512-sCgECOx8wiqY8NN1xN22BqqKzXYIG2AicNLlakOAI4f0WgyLVUbAigMf8CZhBtJxdudTcB1gD5lciqi44jwJvg==} + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -246,6 +261,42 @@ packages: '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@rollup/plugin-commonjs@28.0.9': + resolution: {integrity: sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.55.2': resolution: {integrity: sha512-21J6xzayjy3O6NdnlO6aXi/urvSRjm6nCI6+nF6ra2YofKruGixN9kfT+dt55HVNwfDmpDHJcaS3JuP/boNnlA==} cpu: [arm] @@ -384,10 +435,10 @@ packages: peerDependencies: '@sveltejs/kit': ^2.0.0 - '@sveltejs/adapter-static@3.0.2': - resolution: {integrity: sha512-/EBFydZDwfwFfFEuF1vzUseBoRziwKP7AoHAwv+Ot3M084sE/HTVBHf9mCmXfdM9ijprY5YEugZjleflncX5fQ==} + '@sveltejs/adapter-node@5.5.1': + resolution: {integrity: sha512-VpZdPNRPQuZRtgfAMETPWWKpZx9JwXmUUsgz/+eSpw/Oh7+2O1uZHlsQTuyfxydJHPrRzjfu/ItcJjY4oscCiQ==} peerDependencies: - '@sveltejs/kit': ^2.0.0 + '@sveltejs/kit': ^2.4.0 '@sveltejs/kit@2.50.0': resolution: {integrity: sha512-Hj8sR8O27p2zshFEIJzsvfhLzxga/hWw6tRLnBjMYw70m1aS9BSYCqAUtzDBjRREtX1EvLMYgaC0mYE3Hz4KWA==} @@ -432,6 +483,15 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/mime-types@3.0.1': + resolution: {integrity: sha512-xRMsfuQbnRq1Ef+C+RKaENOxXX87Ygl38W1vDfPHRku02TgQr+Qd8iivLtAMcR0KF5/29xlnFihkTlbqFrGOVQ==} + + '@types/node@25.0.9': + resolution: {integrity: sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==} + + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -481,6 +541,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -497,6 +560,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + byte-length@1.0.2: + resolution: {integrity: sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q==} + camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} @@ -504,6 +570,9 @@ packages: caniuse-lite@1.0.30001617: resolution: {integrity: sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==} + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -527,6 +596,9 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} @@ -535,11 +607,18 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -574,6 +653,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -589,10 +672,17 @@ packages: esrap@2.2.1: resolution: {integrity: sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} + fast-xml-parser@4.5.3: + resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} + hasBin: true + fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -605,6 +695,10 @@ packages: picomatch: optional: true + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -613,6 +707,10 @@ packages: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -641,6 +739,9 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hot-patcher@2.0.1: + resolution: {integrity: sha512-ECg1JFG0YzehicQaogenlcs2qg6WsXQsxtnbr1i696u5tLUjtJdQAh0u2g0Q5YV45f263Ta1GnUJsc8WIfJf4Q==} + import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} @@ -648,6 +749,9 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} @@ -663,10 +767,16 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} @@ -685,6 +795,9 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + layerr@3.0.0: + resolution: {integrity: sha512-tv754Ki2dXpPVApOrjTyRo4/QegVb9eVFq4mjqp4+NM5NaX7syQvN5BBNfV/ZpAHCEHV24XdUVrBAoka4jt3pA==} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -709,6 +822,9 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -717,10 +833,22 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.1: resolution: {integrity: sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==} engines: {node: '>=16 || 14 >=14.17'} @@ -749,6 +877,18 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nested-property@4.0.0: + resolution: {integrity: sha512-yFehXNWRs4cM0+dz7QxCd06hTbWbSkV0ISsqBfkntU6TOY4Qm3Q88fRRLOddkGh2Qq6dZvnKVAahfhjcUvLnyA==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} @@ -775,6 +915,9 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-posix@1.0.0: + resolution: {integrity: sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA==} + path-scurry@1.11.0: resolution: {integrity: sha512-LNHTaVkzaYaLGlO+0u3rQTz7QrHTFOuKyba9JMTQutkmtNew8dw8wOD7mTU/5fCPZzCWpfW0XnQKzY61P0aTaw==} engines: {node: '>=16 || 14 >=14.17'} @@ -789,6 +932,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -842,6 +989,9 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -856,6 +1006,9 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -919,6 +1072,9 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strnum@1.1.2: + resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -1008,12 +1164,22 @@ packages: engines: {node: '>=14.17'} hasBin: true + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + update-browserslist-db@1.0.15: resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' + url-join@5.0.0: + resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -1056,6 +1222,14 @@ packages: vite: optional: true + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + webdav@5.8.0: + resolution: {integrity: sha512-iuFG7NamJ41Oshg4930iQgfIpRrUiatPWIekeznYgEf2EOraTRcDPTjy7gIOMtkdpKTaqPk1E68NO5PAGtJahA==} + engines: {node: '>=14'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -1081,6 +1255,10 @@ snapshots: '@alloc/quick-lru@5.2.0': {} + '@buttercup/fetch@0.2.1': + optionalDependencies: + node-fetch: 3.3.2 + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -1202,6 +1380,42 @@ snapshots: '@polka/url@1.0.0-next.25': {} + '@rollup/plugin-commonjs@28.0.9(rollup@4.55.2)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.55.2) + commondir: 1.0.1 + estree-walker: 2.0.2 + fdir: 6.5.0(picomatch@4.0.3) + is-reference: 1.2.1 + magic-string: 0.30.21 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.55.2 + + '@rollup/plugin-json@6.1.0(rollup@4.55.2)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.55.2) + optionalDependencies: + rollup: 4.55.2 + + '@rollup/plugin-node-resolve@16.0.3(rollup@4.55.2)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.55.2) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 4.55.2 + + '@rollup/pluginutils@5.3.0(rollup@4.55.2)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.55.2 + '@rollup/rollup-android-arm-eabi@4.55.2': optional: true @@ -1283,20 +1497,24 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21))': + '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21(@types/node@25.0.9)))': dependencies: - '@sveltejs/kit': 2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21) + '@sveltejs/kit': 2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21(@types/node@25.0.9)) import-meta-resolve: 4.1.0 - '@sveltejs/adapter-static@3.0.2(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21))': + '@sveltejs/adapter-node@5.5.1(@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21(@types/node@25.0.9)))': dependencies: - '@sveltejs/kit': 2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21) + '@rollup/plugin-commonjs': 28.0.9(rollup@4.55.2) + '@rollup/plugin-json': 6.1.0(rollup@4.55.2) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.55.2) + '@sveltejs/kit': 2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21(@types/node@25.0.9)) + rollup: 4.55.2 - '@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21)': + '@sveltejs/kit@2.50.0(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)))(svelte@5.47.0)(typescript@5.9.3)(vite@5.4.21(@types/node@25.0.9))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.47.0)(vite@5.4.21) + '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -1309,29 +1527,29 @@ snapshots: set-cookie-parser: 2.6.0 sirv: 3.0.2 svelte: 5.47.0 - vite: 5.4.21 + vite: 5.4.21(@types/node@25.0.9) optionalDependencies: typescript: 5.9.3 - '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21))(svelte@5.47.0)(vite@5.4.21)': + '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)))(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9))': dependencies: - '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.47.0)(vite@5.4.21) + '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)) debug: 4.4.3 svelte: 5.47.0 - vite: 5.4.21 + vite: 5.4.21(@types/node@25.0.9) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21)': + '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21))(svelte@5.47.0)(vite@5.4.21) + '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)))(svelte@5.47.0)(vite@5.4.21(@types/node@25.0.9)) debug: 4.4.3 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.21 svelte: 5.47.0 - vite: 5.4.21 - vitefu: 1.1.1(vite@5.4.21) + vite: 5.4.21(@types/node@25.0.9) + vitefu: 1.1.1(vite@5.4.21(@types/node@25.0.9)) transitivePeerDependencies: - supports-color @@ -1345,6 +1563,14 @@ snapshots: '@types/estree@1.0.8': {} + '@types/mime-types@3.0.1': {} + + '@types/node@25.0.9': + dependencies: + undici-types: 7.16.0 + + '@types/resolve@1.20.2': {} + acorn@8.15.0: {} ansi-regex@5.0.1: {} @@ -1382,6 +1608,8 @@ snapshots: balanced-match@1.0.2: {} + base-64@1.0.0: {} + binary-extensions@2.3.0: {} brace-expansion@2.0.1: @@ -1399,10 +1627,14 @@ snapshots: node-releases: 2.0.14 update-browserslist-db: 1.0.15(browserslist@4.23.0) + byte-length@1.0.2: {} + camelcase-css@2.0.1: {} caniuse-lite@1.0.30001617: {} + charenc@0.0.2: {} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -1429,6 +1661,8 @@ snapshots: commander@4.1.1: {} + commondir@1.0.1: {} + cookie@0.6.0: {} cross-spawn@7.0.3: @@ -1437,8 +1671,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + crypt@0.0.2: {} + cssesc@3.0.0: {} + data-uri-to-buffer@4.0.1: {} + debug@4.4.3: dependencies: ms: 2.1.3 @@ -1459,6 +1697,8 @@ snapshots: emoji-regex@9.2.2: {} + entities@6.0.1: {} + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -1493,6 +1733,8 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + estree-walker@2.0.2: {} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -1501,11 +1743,22 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.5 + fast-xml-parser@4.5.3: + dependencies: + strnum: 1.1.2 + fastq@1.17.1: dependencies: reusify: 1.0.4 - fdir@6.5.0: {} + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 fill-range@7.0.1: dependencies: @@ -1516,6 +1769,10 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + fraction.js@4.3.7: {} fsevents@2.3.3: @@ -1543,12 +1800,16 @@ snapshots: dependencies: function-bind: 1.1.2 + hot-patcher@2.0.1: {} + import-meta-resolve@4.1.0: {} is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 + is-buffer@1.1.6: {} + is-core-module@2.13.1: dependencies: hasown: 2.0.2 @@ -1561,8 +1822,14 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-module@1.0.0: {} + is-number@7.0.0: {} + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.8 + is-reference@3.0.3: dependencies: '@types/estree': 1.0.8 @@ -1579,6 +1846,8 @@ snapshots: kleur@4.1.5: {} + layerr@3.0.0: {} + lilconfig@2.1.0: {} lilconfig@3.1.1: {} @@ -1597,6 +1866,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + merge2@1.4.1: {} micromatch@4.0.5: @@ -1604,10 +1879,20 @@ snapshots: braces: 3.0.2 picomatch: 2.3.1 + mime-db@1.54.0: {} + + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + minimatch@9.0.4: dependencies: brace-expansion: 2.0.1 + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + minipass@7.1.1: {} mri@1.2.0: {} @@ -1626,6 +1911,16 @@ snapshots: nanoid@3.3.7: {} + nested-property@4.0.0: {} + + node-domexception@1.0.0: {} + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + node-releases@2.0.14: {} normalize-path@3.0.0: {} @@ -1640,6 +1935,8 @@ snapshots: path-parse@1.0.7: {} + path-posix@1.0.0: {} + path-scurry@1.11.0: dependencies: lru-cache: 10.2.2 @@ -1651,6 +1948,8 @@ snapshots: picomatch@2.3.1: {} + picomatch@4.0.3: {} + pify@2.3.0: {} pirates@4.0.6: {} @@ -1698,6 +1997,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + querystringify@2.2.0: {} + queue-microtask@1.2.3: {} read-cache@1.0.0: @@ -1710,6 +2011,8 @@ snapshots: readdirp@4.1.2: {} + requires-port@1.0.0: {} + resolve@1.22.8: dependencies: is-core-module: 2.13.1 @@ -1797,6 +2100,8 @@ snapshots: dependencies: ansi-regex: 6.0.1 + strnum@1.1.2: {} + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -1809,11 +2114,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.3.5(svelte@5.47.0)(typescript@5.9.3): + svelte-check@4.3.5(picomatch@4.0.3)(svelte@5.47.0)(typescript@5.9.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 - fdir: 6.5.0 + fdir: 6.5.0(picomatch@4.0.3) picocolors: 1.0.0 sade: 1.8.1 svelte: 5.47.0 @@ -1894,25 +2199,54 @@ snapshots: typescript@5.9.3: {} + undici-types@7.16.0: {} + update-browserslist-db@1.0.15(browserslist@4.23.0): dependencies: browserslist: 4.23.0 escalade: 3.1.2 picocolors: 1.0.0 + url-join@5.0.0: {} + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + util-deprecate@1.0.2: {} - vite@5.4.21: + vite@5.4.21(@types/node@25.0.9): dependencies: esbuild: 0.21.5 postcss: 8.5.6 rollup: 4.55.2 optionalDependencies: + '@types/node': 25.0.9 fsevents: 2.3.3 - vitefu@1.1.1(vite@5.4.21): + vitefu@1.1.1(vite@5.4.21(@types/node@25.0.9)): optionalDependencies: - vite: 5.4.21 + vite: 5.4.21(@types/node@25.0.9) + + web-streams-polyfill@3.3.3: {} + + webdav@5.8.0: + dependencies: + '@buttercup/fetch': 0.2.1 + base-64: 1.0.0 + byte-length: 1.0.2 + entities: 6.0.1 + fast-xml-parser: 4.5.3 + hot-patcher: 2.0.1 + layerr: 3.0.0 + md5: 2.3.0 + minimatch: 9.0.5 + nested-property: 4.0.0 + node-fetch: 3.3.2 + path-posix: 1.0.0 + url-join: 5.0.0 + url-parse: 1.5.10 which@2.0.2: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..efc037a --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +onlyBuiltDependencies: + - esbuild diff --git a/src/lib/components/Markdown.svelte b/src/lib/components/Markdown.svelte index 07f1008..d030734 100644 --- a/src/lib/components/Markdown.svelte +++ b/src/lib/components/Markdown.svelte @@ -1,47 +1,46 @@
- {#if content != null} - {#each content as element, i} - {@html element.outerHTML} - {/each} - {/if} + {@html html}