diff --git a/frontend-sveltekit/.gitignore b/frontend-sveltekit/.gitignore new file mode 100644 index 0000000..6635cf5 --- /dev/null +++ b/frontend-sveltekit/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/frontend-sveltekit/.npmrc b/frontend-sveltekit/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/frontend-sveltekit/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/frontend-sveltekit/.prettierignore b/frontend-sveltekit/.prettierignore new file mode 100644 index 0000000..3897265 --- /dev/null +++ b/frontend-sveltekit/.prettierignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/frontend-sveltekit/.prettierrc b/frontend-sveltekit/.prettierrc new file mode 100644 index 0000000..9573023 --- /dev/null +++ b/frontend-sveltekit/.prettierrc @@ -0,0 +1,8 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/frontend-sveltekit/README.md b/frontend-sveltekit/README.md new file mode 100644 index 0000000..5c91169 --- /dev/null +++ b/frontend-sveltekit/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/frontend-sveltekit/package.json b/frontend-sveltekit/package.json new file mode 100644 index 0000000..99e802a --- /dev/null +++ b/frontend-sveltekit/package.json @@ -0,0 +1,37 @@ +{ + "name": "frontend-sveltekit", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check .", + "format": "prettier --write ." + }, + "devDependencies": { + "@poppanator/sveltekit-svg": "^4.1.3", + "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/kit": "^1.27.4", + "@tailwindcss/typography": "^0.5.10", + "@types/streamsaver": "^2.0.4", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.32", + "prettier": "^3.0.0", + "prettier-plugin-svelte": "^3.0.0", + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "tailwindcss": "^3.3.6", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^4.4.2" + }, + "type": "module", + "dependencies": { + "common": "workspace:^", + "eva-icons": "^1.1.3", + "streamsaver": "^2.0.6" + } +} diff --git a/frontend/postcss.config.js b/frontend-sveltekit/postcss.config.js similarity index 100% rename from frontend/postcss.config.js rename to frontend-sveltekit/postcss.config.js diff --git a/frontend-sveltekit/src copy/App.svelte b/frontend-sveltekit/src copy/App.svelte new file mode 100644 index 0000000..8be0f0d --- /dev/null +++ b/frontend-sveltekit/src copy/App.svelte @@ -0,0 +1,24 @@ + + + diff --git a/frontend-sveltekit/src copy/main.ts b/frontend-sveltekit/src copy/main.ts new file mode 100644 index 0000000..8a909a1 --- /dev/null +++ b/frontend-sveltekit/src copy/main.ts @@ -0,0 +1,8 @@ +import './app.css' +import App from './App.svelte' + +const app = new App({ + target: document.getElementById('app'), +}) + +export default app diff --git a/frontend-sveltekit/src copy/vite-env.d.ts b/frontend-sveltekit/src copy/vite-env.d.ts new file mode 100644 index 0000000..356dbea --- /dev/null +++ b/frontend-sveltekit/src copy/vite-env.d.ts @@ -0,0 +1,8 @@ +/// +/// + +declare module "*svg?component" { + import { ComponentType, SvelteComponentTyped } from "svelte"; + const icon: ComponentType; + export default icon; +} diff --git a/frontend-sveltekit/src/app.css b/frontend-sveltekit/src/app.css new file mode 100644 index 0000000..b5c61c9 --- /dev/null +++ b/frontend-sveltekit/src/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/frontend-sveltekit/src/app.d.ts b/frontend-sveltekit/src/app.d.ts new file mode 100644 index 0000000..f59b884 --- /dev/null +++ b/frontend-sveltekit/src/app.d.ts @@ -0,0 +1,12 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } +} + +export {}; diff --git a/frontend-sveltekit/src/app.html b/frontend-sveltekit/src/app.html new file mode 100644 index 0000000..efbc242 --- /dev/null +++ b/frontend-sveltekit/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/frontend-sveltekit/src/lib/components/Container.svelte b/frontend-sveltekit/src/lib/components/Container.svelte new file mode 100644 index 0000000..92e5102 --- /dev/null +++ b/frontend-sveltekit/src/lib/components/Container.svelte @@ -0,0 +1,5 @@ +
+ +
diff --git a/frontend-sveltekit/src/lib/components/SourceLink.svelte b/frontend-sveltekit/src/lib/components/SourceLink.svelte new file mode 100644 index 0000000..be72f57 --- /dev/null +++ b/frontend-sveltekit/src/lib/components/SourceLink.svelte @@ -0,0 +1,15 @@ + + + + + Fuente + diff --git a/frontend-sveltekit/src/lib/fetch.ts b/frontend-sveltekit/src/lib/fetch.ts new file mode 100644 index 0000000..ee93bc0 --- /dev/null +++ b/frontend-sveltekit/src/lib/fetch.ts @@ -0,0 +1,64 @@ +import { zData, type Distribution, zError, zDumpMetadata } from 'common/schema.js'; + +export async function downloadFile(dataPath: string, datasetId: string, dist: Distribution) { + const streamSaver = await import('streamsaver'); + if (!dist.downloadURL) throw new Error('no downloadURL'); + const outputS = streamSaver.createWriteStream( + dist.downloadURL.slice(dist.downloadURL.lastIndexOf('/') + 1) + ); + const res = await fetchGzipped( + `${dataPath}/${datasetId}/${dist.identifier}/${dist.fileName || dist.identifier}.gz` + ); + await res.body!.pipeTo(outputS); +} + +async function fetchGzipped(url: string): Promise { + let res = await fetch(url); + if (res.status === 404 && url.endsWith('.gz')) { + // probar cargando el archivo no comprimido + res = await fetch(url.slice(0, url.length - '.gz'.length)); + return res; + } + const ds = new DecompressionStream('gzip'); + const decompressedStream = res.body!.pipeThrough(ds); + const resD = new Response(decompressedStream); + return resD; +} +let cachedGzippedJson = new Map(); + +async function loadGzippedJson(url: string): Promise { + const cachedEntry = cachedGzippedJson.get(url); + if (cachedEntry) { + if (+cachedEntry.date + 10 * 60 * 1000 > +new Date()) { + return cachedEntry.data; + } else { + cachedGzippedJson.delete(url); + } + } + + const res = await fetchGzipped(url); + const json = await res.json(); + cachedGzippedJson.set(url, { date: new Date(), data: json }); + return json; +} + +export async function fetchData(portalUrl: string) { + const json = await loadGzippedJson(`${portalUrl}/data.json.gz`); + if (import.meta.env.DEV) console.debug(json); + return zData.parse(json); +} +export async function fetchDumpMetadata(dumpUrl: string) { + const json = await loadGzippedJson(`${dumpUrl}/dump-metadata.json.gz`); + if (import.meta.env.DEV) console.debug(json); + return zDumpMetadata.parse(json); +} +export async function fetchErrors(url: string) { + const res = await fetchGzipped(`${url}/errors.jsonl.gz`); + const text = await res.text(); + const lines = text + .split('\n') + .filter((line) => !!line) + .map((line) => JSON.parse(line)) + .map((json) => zError.parse(json)); + return lines; +} diff --git a/frontend-sveltekit/src/lib/nav/Nav.svelte b/frontend-sveltekit/src/lib/nav/Nav.svelte new file mode 100644 index 0000000..ed2698f --- /dev/null +++ b/frontend-sveltekit/src/lib/nav/Nav.svelte @@ -0,0 +1,41 @@ + + + diff --git a/frontend-sveltekit/src/lib/nav/NavItem.svelte b/frontend-sveltekit/src/lib/nav/NavItem.svelte new file mode 100644 index 0000000..3faf8f9 --- /dev/null +++ b/frontend-sveltekit/src/lib/nav/NavItem.svelte @@ -0,0 +1,14 @@ + + +
  • + + + +
  • diff --git a/frontend-sveltekit/src/lib/router.ts b/frontend-sveltekit/src/lib/router.ts new file mode 100644 index 0000000..0e42e88 --- /dev/null +++ b/frontend-sveltekit/src/lib/router.ts @@ -0,0 +1,44 @@ +import navaid, { type Params } from "navaid"; +import { writable } from "svelte/store"; + +export const routes = { + Home: "/", + Dump: "/dump/:dumpUrl", + Portal: "/dump/:dumpUrl/:portal", + Dataset: "/dump/:dumpUrl/:portal/dataset/:id", +}; + +export function generateDumpName(dumpUrl: string) { + const clean = decodeURIComponent(dumpUrl).replace(/\/+$/, ""); + return clean.slice(clean.lastIndexOf("/") + 1); +} + +const title = "Archivo de portales de datos de Argentina"; +const titles: { [key in ComponentType]: (params: Params) => string } = { + Home: () => title, + NotFound: () => title, + Dump: (params) => `${generateDumpName(params.dumpUrl)} - ${title}`, + Portal: (params) => `${params.portal} - ${title}`, + Dataset: (params) => `${params.id} - ${title}`, +}; + +export type ComponentType = "NotFound" | keyof typeof routes; + +type Route = { + component: ComponentType; + params?: Params; +}; +export const currentRoute = writable({ component: "Home" }); +currentRoute.subscribe( + (route) => (document.title = titles[route.component](route.params!)), +); + +export const router = navaid(undefined, () => + currentRoute.set({ component: "NotFound" }), +); +for (const [component, path] of Object.entries(routes)) { + router.on(path, (params) => + currentRoute.set({ component: component as keyof typeof routes, params }), + ); +} +router.listen(); diff --git a/frontend-sveltekit/src/lib/routes/Dataset.svelte b/frontend-sveltekit/src/lib/routes/Dataset.svelte new file mode 100644 index 0000000..fca93d0 --- /dev/null +++ b/frontend-sveltekit/src/lib/routes/Dataset.svelte @@ -0,0 +1,103 @@ + + +
    +
    diff --git a/frontend-sveltekit/src/lib/routes/NotFound.svelte b/frontend-sveltekit/src/lib/routes/NotFound.svelte new file mode 100644 index 0000000..84c5aec --- /dev/null +++ b/frontend-sveltekit/src/lib/routes/NotFound.svelte @@ -0,0 +1 @@ +

    Esa página no pudo ser encontrada.

    diff --git a/frontend-sveltekit/src/lib/routes/Portal.svelte b/frontend-sveltekit/src/lib/routes/Portal.svelte new file mode 100644 index 0000000..ae290c4 --- /dev/null +++ b/frontend-sveltekit/src/lib/routes/Portal.svelte @@ -0,0 +1,110 @@ + + +
    +
    diff --git a/frontend-sveltekit/src/routes/+layout.svelte b/frontend-sveltekit/src/routes/+layout.svelte new file mode 100644 index 0000000..f87b35e --- /dev/null +++ b/frontend-sveltekit/src/routes/+layout.svelte @@ -0,0 +1,5 @@ + + + diff --git a/frontend-sveltekit/src/routes/+page.svelte b/frontend-sveltekit/src/routes/+page.svelte new file mode 100644 index 0000000..18abf37 --- /dev/null +++ b/frontend-sveltekit/src/routes/+page.svelte @@ -0,0 +1,37 @@ + + +
    + +
    +

    Archivo de portales de datos abiertos

    +

    + Esta herramienta permite ver datos en archivos de portales de datos abiertos de transicion-desordenada-diablo + (un mejor nombre sería genial), creada en el marco de + un pedido hecho al gobierno entrante el 10 de + diciembre de 2023 por garantizar el mantenimiento de las políticas de datos públicos en Argentina. +

    + + + +

    + Los archivos y las herramientas fueron creados por + Nulo con ayuda de varias personas. El código está disponible + en GitHub. +

    +
    +
    +
    diff --git a/frontend-sveltekit/src/routes/dump/[dumpUrl]/+page.svelte b/frontend-sveltekit/src/routes/dump/[dumpUrl]/+page.svelte new file mode 100644 index 0000000..3fe200e --- /dev/null +++ b/frontend-sveltekit/src/routes/dump/[dumpUrl]/+page.svelte @@ -0,0 +1,45 @@ + + +
    + +
    + + Viendo archivo en + {data.url} + +
    + +
      + {#each data.metadata.sites as site} + {@const portalLink = `/dump/${data.dumpUrl}`} +
    • +
      +
      +

      {site.title}

      +

      {site.description}

      +
      +
      + Ver portal + +
      +
      +
    • + {/each} +
    +
    +
    diff --git a/frontend-sveltekit/src/routes/dump/[dumpUrl]/+page.ts b/frontend-sveltekit/src/routes/dump/[dumpUrl]/+page.ts new file mode 100644 index 0000000..4b26f85 --- /dev/null +++ b/frontend-sveltekit/src/routes/dump/[dumpUrl]/+page.ts @@ -0,0 +1,12 @@ +import { fetchDumpMetadata } from '$lib/fetch'; + +/** @type {import('./$types').PageLoad} */ +export async function load({ params }) { + const url = decodeURIComponent(params.dumpUrl); + const metadata = await fetchDumpMetadata(url); + return { + dumpUrl: params.dumpUrl, + url, + metadata + }; +} diff --git a/frontend-sveltekit/static/favicon.png b/frontend-sveltekit/static/favicon.png new file mode 100644 index 0000000..825b9e6 Binary files /dev/null and b/frontend-sveltekit/static/favicon.png differ diff --git a/frontend-sveltekit/svelte.config.js b/frontend-sveltekit/svelte.config.js new file mode 100644 index 0000000..1cf26a0 --- /dev/null +++ b/frontend-sveltekit/svelte.config.js @@ -0,0 +1,18 @@ +import adapter from '@sveltejs/adapter-auto'; +import { vitePreprocess } from '@sveltejs/kit/vite'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter() + } +}; + +export default config; diff --git a/frontend-sveltekit/tailwind.config.js b/frontend-sveltekit/tailwind.config.js new file mode 100644 index 0000000..c53d292 --- /dev/null +++ b/frontend-sveltekit/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{html,js,svelte,ts}'], + theme: { + extend: {} + }, + plugins: [require('@tailwindcss/typography')] +}; diff --git a/frontend-sveltekit/tsconfig.json b/frontend-sveltekit/tsconfig.json new file mode 100644 index 0000000..82081ab --- /dev/null +++ b/frontend-sveltekit/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/frontend-sveltekit/vite.config.ts b/frontend-sveltekit/vite.config.ts new file mode 100644 index 0000000..a50186d --- /dev/null +++ b/frontend-sveltekit/vite.config.ts @@ -0,0 +1,7 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; +import svg from '@poppanator/sveltekit-svg'; + +export default defineConfig({ + plugins: [sveltekit(), svg()] +}); diff --git a/frontend/src/lib/fetch.ts b/frontend/src/lib/fetch.ts index 3a622bc..6393e24 100644 --- a/frontend/src/lib/fetch.ts +++ b/frontend/src/lib/fetch.ts @@ -1,11 +1,16 @@ -import streamSaver from "streamsaver"; -import { zData, type Distribution, zError, zDumpMetadata } from "common/schema"; +import { + zData, + type Distribution, + zError, + zDumpMetadata, +} from "common/schema.js"; export async function downloadFile( dataPath: string, datasetId: string, dist: Distribution, ) { + const streamSaver = await import("streamsaver"); if (!dist.downloadURL) throw new Error("no downloadURL"); const outputS = streamSaver.createWriteStream( dist.downloadURL.slice(dist.downloadURL.lastIndexOf("/") + 1), diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js deleted file mode 100644 index d6ff45b..0000000 --- a/frontend/tailwind.config.js +++ /dev/null @@ -1,8 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: ["./index.html", "./src/**/*.svelte"], - theme: { - extend: {}, - }, - plugins: [require("@tailwindcss/typography")], -}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53f817e..7b9e85d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,6 +49,9 @@ importers: specifier: ^3.22.4 version: 3.22.4 devDependencies: + '@poppanator/sveltekit-svg': + specifier: ^4.1.3 + version: 4.1.3(svelte@4.2.8)(svgo@3.0.5)(vite@5.0.7) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 version: 3.0.1(svelte@4.2.8)(vite@5.0.7) @@ -94,9 +97,64 @@ importers: vite: specifier: ^5.0.0 version: 5.0.7 - vite-plugin-svelte-svg: - specifier: ^2.3.0 - version: 2.3.0(svelte@4.2.8)(vite@5.0.7) + + frontend-sveltekit: + dependencies: + common: + specifier: workspace:^ + version: link:../common + eva-icons: + specifier: ^1.1.3 + version: 1.1.3 + streamsaver: + specifier: ^2.0.6 + version: 2.0.6 + devDependencies: + '@poppanator/sveltekit-svg': + specifier: ^4.1.3 + version: 4.1.3(svelte@4.2.8)(svgo@3.0.5)(vite@4.5.1) + '@sveltejs/adapter-auto': + specifier: ^2.0.0 + version: 2.1.1(@sveltejs/kit@1.27.7) + '@sveltejs/kit': + specifier: ^1.27.4 + version: 1.27.7(svelte@4.2.8)(vite@4.5.1) + '@tailwindcss/typography': + specifier: ^0.5.10 + version: 0.5.10(tailwindcss@3.3.6) + '@types/streamsaver': + specifier: ^2.0.4 + version: 2.0.4 + autoprefixer: + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.32) + postcss: + specifier: ^8.4.32 + version: 8.4.32 + prettier: + specifier: ^3.0.0 + version: 3.1.0 + prettier-plugin-svelte: + specifier: ^3.0.0 + version: 3.1.2(prettier@3.1.0)(svelte@4.2.8) + svelte: + specifier: ^4.2.7 + version: 4.2.8 + svelte-check: + specifier: ^3.6.0 + version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + tailwindcss: + specifier: ^3.3.6 + version: 3.3.6 + tslib: + specifier: ^2.4.1 + version: 2.6.2 + typescript: + specifier: ^5.0.0 + version: 5.3.3 + vite: + specifier: ^4.4.2 + version: 4.5.1 packages: @@ -113,6 +171,15 @@ packages: '@jridgewell/trace-mapping': 0.3.20 dev: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.19.8: resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} engines: {node: '>=12'} @@ -122,6 +189,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.19.8: resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} engines: {node: '>=12'} @@ -131,6 +207,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.19.8: resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} engines: {node: '>=12'} @@ -140,6 +225,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.19.8: resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} engines: {node: '>=12'} @@ -149,6 +243,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.19.8: resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} engines: {node: '>=12'} @@ -158,6 +261,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.19.8: resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} engines: {node: '>=12'} @@ -167,6 +279,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.19.8: resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} engines: {node: '>=12'} @@ -176,6 +297,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.19.8: resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} engines: {node: '>=12'} @@ -185,6 +315,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.19.8: resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} engines: {node: '>=12'} @@ -194,6 +333,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.19.8: resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} engines: {node: '>=12'} @@ -203,6 +351,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.19.8: resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} engines: {node: '>=12'} @@ -212,6 +369,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.19.8: resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} engines: {node: '>=12'} @@ -221,6 +387,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.19.8: resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} engines: {node: '>=12'} @@ -230,6 +405,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.19.8: resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} engines: {node: '>=12'} @@ -239,6 +423,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.19.8: resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} engines: {node: '>=12'} @@ -248,6 +441,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.19.8: resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} engines: {node: '>=12'} @@ -257,6 +459,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.19.8: resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} engines: {node: '>=12'} @@ -266,6 +477,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.19.8: resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} engines: {node: '>=12'} @@ -275,6 +495,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.19.8: resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} engines: {node: '>=12'} @@ -284,6 +513,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.19.8: resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} engines: {node: '>=12'} @@ -293,6 +531,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.19.8: resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} engines: {node: '>=12'} @@ -302,6 +549,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.19.8: resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} engines: {node: '>=12'} @@ -314,7 +570,6 @@ packages: /@fastify/busboy@2.1.0: resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} - dev: false /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -367,6 +622,34 @@ packages: fastq: 1.15.0 dev: true + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + dev: true + + /@poppanator/sveltekit-svg@4.1.3(svelte@4.2.8)(svgo@3.0.5)(vite@4.5.1): + resolution: {integrity: sha512-cKdFxFPPzS470xy2XFQ2m/URa9On4fw7n5wvBqAwVO4sY8dmski+2N3GKFELt4tvzM3JPjAqz76Ex7U5IpKeIg==} + peerDependencies: + svelte: '>=4.x' + svgo: '>=3.x' + vite: '>=4.x' + dependencies: + svelte: 4.2.8 + svgo: 3.0.5 + vite: 4.5.1 + dev: true + + /@poppanator/sveltekit-svg@4.1.3(svelte@4.2.8)(svgo@3.0.5)(vite@5.0.7): + resolution: {integrity: sha512-cKdFxFPPzS470xy2XFQ2m/URa9On4fw7n5wvBqAwVO4sY8dmski+2N3GKFELt4tvzM3JPjAqz76Ex7U5IpKeIg==} + peerDependencies: + svelte: '>=4.x' + svgo: '>=3.x' + vite: '>=4.x' + dependencies: + svelte: 4.2.8 + svgo: 3.0.5 + vite: 5.0.7 + dev: true + /@rollup/rollup-android-arm-eabi@4.7.0: resolution: {integrity: sha512-rGku10pL1StFlFvXX5pEv88KdGW6DHUghsxyP/aRYb9eH+74jTGJ3U0S/rtlsQ4yYq1Hcc7AMkoJOb1xu29Fxw==} cpu: [arm] @@ -471,6 +754,59 @@ packages: dev: true optional: true + /@sveltejs/adapter-auto@2.1.1(@sveltejs/kit@1.27.7): + resolution: {integrity: sha512-nzi6x/7/3Axh5VKQ8Eed3pYxastxoa06Y/bFhWb7h3Nu+nGRVxKAy3+hBJgmPCwWScy8n0TsstZjSVKfyrIHkg==} + peerDependencies: + '@sveltejs/kit': ^1.0.0 + dependencies: + '@sveltejs/kit': 1.27.7(svelte@4.2.8)(vite@4.5.1) + import-meta-resolve: 4.0.0 + dev: true + + /@sveltejs/kit@1.27.7(svelte@4.2.8)(vite@4.5.1): + resolution: {integrity: sha512-AzXYDoYt42clCBwLF9GTHsXyg2DFR31Ncyt8yxu8Aw4tgB433V+w+hcr1RTfAN9zKW2J2PY9FMQ8FoX/4Vw8CA==} + engines: {node: ^16.14 || >=18} + hasBin: true + requiresBuild: true + peerDependencies: + svelte: ^3.54.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.8)(vite@4.5.1) + '@types/cookie': 0.5.4 + cookie: 0.5.0 + devalue: 4.3.2 + esm-env: 1.0.0 + kleur: 4.1.5 + magic-string: 0.30.5 + mrmime: 1.0.1 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.3 + svelte: 4.2.8 + tiny-glob: 0.2.9 + undici: 5.26.5 + vite: 4.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.8)(vite@4.5.1): + resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^2.2.0 + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.8)(vite@4.5.1) + debug: 4.3.4 + svelte: 4.2.8 + vite: 4.5.1 + transitivePeerDependencies: + - supports-color + dev: true + /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.7): resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} engines: {node: ^18.0.0 || >=20} @@ -487,6 +823,26 @@ packages: - supports-color dev: true + /@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.8)(vite@4.5.1): + resolution: {integrity: sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.8)(vite@4.5.1) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.5 + svelte: 4.2.8 + svelte-hmr: 0.15.3(svelte@4.2.8) + vite: 4.5.1 + vitefu: 0.2.5(vite@4.5.1) + transitivePeerDependencies: + - supports-color + dev: true + /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.7): resolution: {integrity: sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==} engines: {node: ^18.0.0 || >=20} @@ -532,6 +888,10 @@ packages: resolution: {integrity: sha512-BRbo1fOtyVbhfLyuCWw6wAWp+U8UQle+ZXu84MYYWzYSEB28dyfnRBIE99eoG+qdAC0po6L2ScIEivcT07UaMA==} dev: true + /@types/cookie@0.5.4: + resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} + dev: true + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -695,6 +1055,11 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: true + /css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: @@ -766,6 +1131,10 @@ packages: engines: {node: '>=8'} dev: true + /devalue@4.3.2: + resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} + dev: true + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true @@ -814,6 +1183,36 @@ packages: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + /esbuild@0.19.8: resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} engines: {node: '>=12'} @@ -849,6 +1248,10 @@ packages: engines: {node: '>=6'} dev: true + /esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + dev: true + /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: @@ -939,6 +1342,14 @@ packages: path-is-absolute: 1.0.1 dev: true + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true @@ -958,6 +1369,10 @@ packages: resolve-from: 4.0.0 dev: true + /import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + dev: true + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -1107,6 +1522,11 @@ packages: engines: {node: '>=4'} dev: true + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -1296,6 +1716,16 @@ packages: source-map-js: 1.0.2 dev: true + /prettier-plugin-svelte@3.1.2(prettier@3.1.0)(svelte@4.2.8): + resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + dependencies: + prettier: 3.1.0 + svelte: 4.2.8 + dev: true + /prettier-plugin-tailwindcss@0.5.9(prettier@3.1.0): resolution: {integrity: sha512-9x3t1s2Cjbut2QiP+O0mDqV3gLXTe2CgRlQDgucopVkUdw26sQi53p/q4qvGxMLBDfk/dcTV57Aa/zYwz9l8Ew==} engines: {node: '>=14.21.3'} @@ -1407,6 +1837,14 @@ packages: glob: 7.2.3 dev: true + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + /rollup@4.7.0: resolution: {integrity: sha512-7Kw0dUP4BWH78zaZCqF1rPyQ8D5DSU6URG45v1dqS/faNsx9WXyess00uTOZxKr7oR/4TOjO1CPudT8L1UsEgw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -1450,6 +1888,19 @@ packages: rimraf: 2.7.1 dev: true + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: true + + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.24 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: true + /sorcery@0.11.0: resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} hasBin: true @@ -1656,6 +2107,13 @@ packages: any-promise: 1.3.0 dev: true + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -1663,6 +2121,11 @@ packages: is-number: 7.0.0 dev: true + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true @@ -1681,6 +2144,13 @@ packages: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true + /undici@5.26.5: + resolution: {integrity: sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: true + /undici@5.28.2: resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} engines: {node: '>=14.0'} @@ -1703,15 +2173,39 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /vite-plugin-svelte-svg@2.3.0(svelte@4.2.8)(vite@5.0.7): - resolution: {integrity: sha512-Bzo62u9Fj9PDldSvPrUgCzIFc9MmNbhxAUdBCofPyPyuVtoKaQxtsI01JXLk35x8/OQFHfxoTShEgPxtd4+c9Q==} + /vite@4.5.1: + resolution: {integrity: sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true peerDependencies: - svelte: '>= 3.0.0 < 5.0.0' - vite: < 5.0.0 + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true dependencies: - svelte: 4.2.8 - svgo: 3.0.5 - vite: 5.0.7 + esbuild: 0.18.20 + postcss: 8.4.32 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 dev: true /vite@5.0.7: @@ -1749,6 +2243,17 @@ packages: fsevents: 2.3.3 dev: true + /vitefu@0.2.5(vite@4.5.1): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 4.5.1 + dev: true + /vitefu@0.2.5(vite@5.0.7): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3560da3..ca3ff71 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,5 @@ packages: - "frontend/" + - "frontend-sveltekit/" - "downloader/" - "common/"