From ce861b011e1e79997a931292e98a3b7808571039 Mon Sep 17 00:00:00 2001 From: thehunter911 Date: Mon, 29 Apr 2024 22:20:43 -0400 Subject: [PATCH 1/5] detach legacy deps --- .npmrc | 1 + .svelte-kit/generated/client-manifest.js | 53 - .svelte-kit/generated/client-matchers.js | 1 - .svelte-kit/generated/root.svelte | 56 - .svelte-kit/runtime/app/env.js | 20 - .svelte-kit/runtime/app/navigation.js | 24 - .svelte-kit/runtime/app/paths.js | 1 - .svelte-kit/runtime/app/stores.js | 97 - .svelte-kit/runtime/client/singletons.js | 13 - .svelte-kit/runtime/client/start.js | 1689 -------- .svelte-kit/runtime/components/error.svelte | 29 - .svelte-kit/runtime/components/layout.svelte | 1 - .svelte-kit/runtime/env.js | 8 - .svelte-kit/runtime/paths.js | 13 - .svelte-kit/runtime/server/index.js | 3408 ----------------- .svelte-kit/tsconfig.json | 36 - .../types/src/routes/3MTOpeningCeremony.d.ts | 7 - .svelte-kit/types/src/routes/__error.d.ts | 7 - .svelte-kit/types/src/routes/__layout.d.ts | 7 - .../src/routes/archive/AlgebraClasses.d.ts | 7 - .../types/src/routes/archive/join.d.ts | 7 - .../types/src/routes/classes/index.d.ts | 7 - .../types/src/routes/classes/instructors.d.ts | 7 - .../types/src/routes/classes/tutoring.d.ts | 7 - .../src/routes/competitions/3mt-2023.d.ts | 7 - .../types/src/routes/competitions/index.d.ts | 7 - .../src/routes/competitions/mmt-2024.d.ts | 7 - .../competitions/mmt-2024/mmt-2024-CA.d.ts | 7 - .../competitions/mmt-2024/mmt-2024-GA.d.ts | 7 - .../competitions/mmt-2024/mmt-2024-IL.d.ts | 7 - .../competitions/mmt-2024/mmt-2024-MA.d.ts | 7 - .../competitions/mmt-2024/mmt-2024-WA.d.ts | 7 - .../mmt-2024/mmt-2024-online.d.ts | 7 - .../routes/competitions/past/3mt-2022.d.ts | 7 - .../routes/competitions/past/3mt-2023.d.ts | 7 - .../src/routes/competitions/past/index.d.ts | 7 - .../routes/competitions/past/mmt-2022.d.ts | 7 - .../routes/competitions/past/mmt-2023.d.ts | 7 - .../past/mmt-2023/mmt-2023-CA.d.ts | 7 - .../past/mmt-2023/mmt-2023-WA.d.ts | 7 - .../past/mmt-2023/mmt-2023-online.d.ts | 7 - .svelte-kit/types/src/routes/donate.d.ts | 7 - .svelte-kit/types/src/routes/index.d.ts | 7 - .svelte-kit/types/src/routes/our-team.d.ts | 7 - .svelte-kit/types/src/routes/redirect.d.ts | 7 - .svelte-kit/types/src/routes/resources.d.ts | 7 - .svelte-kit/types/src/routes/sponsors.d.ts | 7 - 47 files changed, 1 insertion(+), 5666 deletions(-) delete mode 100644 .svelte-kit/generated/client-manifest.js delete mode 100644 .svelte-kit/generated/client-matchers.js delete mode 100644 .svelte-kit/generated/root.svelte delete mode 100644 .svelte-kit/runtime/app/env.js delete mode 100644 .svelte-kit/runtime/app/navigation.js delete mode 100644 .svelte-kit/runtime/app/paths.js delete mode 100644 .svelte-kit/runtime/app/stores.js delete mode 100644 .svelte-kit/runtime/client/singletons.js delete mode 100644 .svelte-kit/runtime/client/start.js delete mode 100644 .svelte-kit/runtime/components/error.svelte delete mode 100644 .svelte-kit/runtime/components/layout.svelte delete mode 100644 .svelte-kit/runtime/env.js delete mode 100644 .svelte-kit/runtime/paths.js delete mode 100644 .svelte-kit/runtime/server/index.js delete mode 100644 .svelte-kit/tsconfig.json delete mode 100644 .svelte-kit/types/src/routes/3MTOpeningCeremony.d.ts delete mode 100644 .svelte-kit/types/src/routes/__error.d.ts delete mode 100644 .svelte-kit/types/src/routes/__layout.d.ts delete mode 100644 .svelte-kit/types/src/routes/archive/AlgebraClasses.d.ts delete mode 100644 .svelte-kit/types/src/routes/archive/join.d.ts delete mode 100644 .svelte-kit/types/src/routes/classes/index.d.ts delete mode 100644 .svelte-kit/types/src/routes/classes/instructors.d.ts delete mode 100644 .svelte-kit/types/src/routes/classes/tutoring.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/3mt-2023.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/index.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/mmt-2024.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-CA.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-GA.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-IL.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-MA.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-WA.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-online.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/past/3mt-2022.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/past/3mt-2023.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/past/index.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/past/mmt-2022.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/past/mmt-2023.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-CA.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-WA.d.ts delete mode 100644 .svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-online.d.ts delete mode 100644 .svelte-kit/types/src/routes/donate.d.ts delete mode 100644 .svelte-kit/types/src/routes/index.d.ts delete mode 100644 .svelte-kit/types/src/routes/our-team.d.ts delete mode 100644 .svelte-kit/types/src/routes/redirect.d.ts delete mode 100644 .svelte-kit/types/src/routes/resources.d.ts delete mode 100644 .svelte-kit/types/src/routes/sponsors.d.ts diff --git a/.npmrc b/.npmrc index b6f27f13..61a29cec 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,2 @@ engine-strict=true +legacy-peer-deps=true \ No newline at end of file diff --git a/.svelte-kit/generated/client-manifest.js b/.svelte-kit/generated/client-manifest.js deleted file mode 100644 index 03f4247a..00000000 --- a/.svelte-kit/generated/client-manifest.js +++ /dev/null @@ -1,53 +0,0 @@ -export { matchers } from './client-matchers.js'; - -export const components = [ - () => import("..\\..\\src\\routes\\__layout.svelte"), - () => import("..\\..\\src\\routes\\__error.svelte"), - () => import("..\\..\\src\\routes\\3MTOpeningCeremony.svelte"), - () => import("..\\..\\src\\routes\\archive\\AlgebraClasses.svelte"), - () => import("..\\..\\src\\routes\\archive\\join.svelte"), - () => import("..\\..\\src\\routes\\classes\\index.svelte"), - () => import("..\\..\\src\\routes\\classes\\instructors.svelte"), - () => import("..\\..\\src\\routes\\classes\\tutoring.svelte"), - () => import("..\\..\\src\\routes\\competitions\\index.svelte"), - () => import("..\\..\\src\\routes\\competitions\\mmt-2024.svelte"), - () => import("..\\..\\src\\routes\\competitions\\past\\3mt-2022.svelte"), - () => import("..\\..\\src\\routes\\competitions\\past\\3mt-2023.svelte"), - () => import("..\\..\\src\\routes\\competitions\\past\\index.svelte"), - () => import("..\\..\\src\\routes\\competitions\\past\\mmt-2022.svelte"), - () => import("..\\..\\src\\routes\\competitions\\past\\mmt-2023\\mmt-2023-CA.svelte"), - () => import("..\\..\\src\\routes\\competitions\\past\\mmt-2023\\mmt-2023-WA.svelte"), - () => import("..\\..\\src\\routes\\competitions\\past\\mmt-2023\\mmt-2023-online.svelte"), - () => import("..\\..\\src\\routes\\competitions\\past\\mmt-2023.svelte"), - () => import("..\\..\\src\\routes\\donate.svelte"), - () => import("..\\..\\src\\routes\\index.svelte"), - () => import("..\\..\\src\\routes\\our-team.svelte"), - () => import("..\\..\\src\\routes\\past-tests.svelte"), - () => import("..\\..\\src\\routes\\redirect.svelte"), - () => import("..\\..\\src\\routes\\sponsors.svelte") -]; - -export const dictionary = { - "": [[0, 19], [1]], - "3MTOpeningCeremony": [[0, 2], [1]], - "classes": [[0, 5], [1]], - "competitions": [[0, 8], [1]], - "donate": [[0, 18], [1]], - "our-team": [[0, 20], [1]], - "past-tests": [[0, 21], [1]], - "redirect": [[0, 22], [1]], - "sponsors": [[0, 23], [1]], - "archive/AlgebraClasses": [[0, 3], [1]], - "archive/join": [[0, 4], [1]], - "classes/instructors": [[0, 6], [1]], - "classes/tutoring": [[0, 7], [1]], - "competitions/mmt-2024": [[0, 9], [1]], - "competitions/past": [[0, 12], [1]], - "competitions/past/3mt-2022": [[0, 10], [1]], - "competitions/past/3mt-2023": [[0, 11], [1]], - "competitions/past/mmt-2022": [[0, 13], [1]], - "competitions/past/mmt-2023": [[0, 17], [1]], - "competitions/past/mmt-2023/mmt-2023-CA": [[0, 14], [1]], - "competitions/past/mmt-2023/mmt-2023-WA": [[0, 15], [1]], - "competitions/past/mmt-2023/mmt-2023-online": [[0, 16], [1]] -}; \ No newline at end of file diff --git a/.svelte-kit/generated/client-matchers.js b/.svelte-kit/generated/client-matchers.js deleted file mode 100644 index f6bd30a4..00000000 --- a/.svelte-kit/generated/client-matchers.js +++ /dev/null @@ -1 +0,0 @@ -export const matchers = {}; \ No newline at end of file diff --git a/.svelte-kit/generated/root.svelte b/.svelte-kit/generated/root.svelte deleted file mode 100644 index d07e1558..00000000 --- a/.svelte-kit/generated/root.svelte +++ /dev/null @@ -1,56 +0,0 @@ - - - -{#if components[1]} - - {#if components[2]} - - - - {:else} - - {/if} - -{:else} - -{/if} - -{#if mounted} -
- {#if navigated} - {title} - {/if} -
-{/if} \ No newline at end of file diff --git a/.svelte-kit/runtime/app/env.js b/.svelte-kit/runtime/app/env.js deleted file mode 100644 index d2299cba..00000000 --- a/.svelte-kit/runtime/app/env.js +++ /dev/null @@ -1,20 +0,0 @@ -export { prerendering } from '../env.js'; - -/** - * @type {import('$app/env').browser} - */ -const browser = !import.meta.env.SSR; -/** - * @type {import('$app/env').dev} - */ -const dev = !!import.meta.env.DEV; -/** - * @type {import('$app/env').mode} - */ -const mode = import.meta.env.MODE; -/** - * @type {import('$app/env').amp} - */ -const amp = !!import.meta.env.VITE_SVELTEKIT_AMP; - -export { amp, browser, dev, mode }; diff --git a/.svelte-kit/runtime/app/navigation.js b/.svelte-kit/runtime/app/navigation.js deleted file mode 100644 index 14f1f9aa..00000000 --- a/.svelte-kit/runtime/app/navigation.js +++ /dev/null @@ -1,24 +0,0 @@ -import { client } from '../client/singletons.js'; - -/** - * @param {string} name - */ -function guard(name) { - return () => { - throw new Error(`Cannot call ${name}(...) on the server`); - }; -} - -const ssr = import.meta.env.SSR; - -const disableScrollHandling = ssr - ? guard('disableScrollHandling') - : client.disable_scroll_handling; -const goto = ssr ? guard('goto') : client.goto; -const invalidate = ssr ? guard('invalidate') : client.invalidate; -const prefetch = ssr ? guard('prefetch') : client.prefetch; -const prefetchRoutes = ssr ? guard('prefetchRoutes') : client.prefetch_routes; -const beforeNavigate = ssr ? () => {} : client.before_navigate; -const afterNavigate = ssr ? () => {} : client.after_navigate; - -export { afterNavigate, beforeNavigate, disableScrollHandling, goto, invalidate, prefetch, prefetchRoutes }; diff --git a/.svelte-kit/runtime/app/paths.js b/.svelte-kit/runtime/app/paths.js deleted file mode 100644 index 7ed4fff2..00000000 --- a/.svelte-kit/runtime/app/paths.js +++ /dev/null @@ -1 +0,0 @@ -export { assets, base } from '../paths.js'; diff --git a/.svelte-kit/runtime/app/stores.js b/.svelte-kit/runtime/app/stores.js deleted file mode 100644 index 9c66bab9..00000000 --- a/.svelte-kit/runtime/app/stores.js +++ /dev/null @@ -1,97 +0,0 @@ -import { getContext } from 'svelte'; -import { browser } from './env.js'; -import '../env.js'; - -// TODO remove this (for 1.0? after 1.0?) -let warned = false; -function stores() { - if (!warned) { - console.error('stores() is deprecated; use getStores() instead'); - warned = true; - } - return getStores(); -} - -/** - * @type {import('$app/stores').getStores} - */ -const getStores = () => { - const stores = getContext('__svelte__'); - - return { - page: { - subscribe: stores.page.subscribe - }, - navigating: { - subscribe: stores.navigating.subscribe - }, - // TODO remove this (for 1.0? after 1.0?) - // @ts-expect-error - deprecated, not part of type definitions, but still callable - get preloading() { - console.error('stores.preloading is deprecated; use stores.navigating instead'); - return { - subscribe: stores.navigating.subscribe - }; - }, - session: stores.session, - updated: stores.updated - }; -}; - -/** @type {typeof import('$app/stores').page} */ -const page = { - /** @param {(value: any) => void} fn */ - subscribe(fn) { - const store = getStores().page; - return store.subscribe(fn); - } -}; - -/** @type {typeof import('$app/stores').navigating} */ -const navigating = { - subscribe(fn) { - const store = getStores().navigating; - return store.subscribe(fn); - } -}; - -/** @param {string} verb */ -const throw_error = (verb) => { - throw new Error( - browser - ? `Cannot ${verb} session store before subscribing` - : `Can only ${verb} session store in browser` - ); -}; - -/** @type {typeof import('$app/stores').session} */ -const session = { - subscribe(fn) { - const store = getStores().session; - - if (browser) { - session.set = store.set; - session.update = store.update; - } - - return store.subscribe(fn); - }, - set: () => throw_error('set'), - update: () => throw_error('update') -}; - -/** @type {typeof import('$app/stores').updated} */ -const updated = { - subscribe(fn) { - const store = getStores().updated; - - if (browser) { - updated.check = store.check; - } - - return store.subscribe(fn); - }, - check: () => throw_error('check') -}; - -export { getStores, navigating, page, session, stores, updated }; diff --git a/.svelte-kit/runtime/client/singletons.js b/.svelte-kit/runtime/client/singletons.js deleted file mode 100644 index cd43f65f..00000000 --- a/.svelte-kit/runtime/client/singletons.js +++ /dev/null @@ -1,13 +0,0 @@ -/** @type {import('./types').Client} */ -let client; - -/** - * @param {{ - * client: import('./types').Client; - * }} opts - */ -function init(opts) { - client = opts.client; -} - -export { client, init }; diff --git a/.svelte-kit/runtime/client/start.js b/.svelte-kit/runtime/client/start.js deleted file mode 100644 index 456b59d5..00000000 --- a/.svelte-kit/runtime/client/start.js +++ /dev/null @@ -1,1689 +0,0 @@ -import { onMount, tick } from 'svelte'; -import { writable } from 'svelte/store'; -import { assets, set_paths } from '../paths.js'; -import Root from '__GENERATED__/root.svelte'; -import { components, dictionary, matchers } from '__GENERATED__/client-manifest.js'; -import { init } from './singletons.js'; - -/** - * @param {unknown} err - * @return {Error} - */ -function coalesce_to_error(err) { - return err instanceof Error || - (err && /** @type {any} */ (err).name && /** @type {any} */ (err).message) - ? /** @type {Error} */ (err) - : new Error(JSON.stringify(err)); -} - -/** - * @param {import('types').LoadOutput} loaded - * @returns {import('types').NormalizedLoadOutput} - */ -function normalize(loaded) { - // TODO remove for 1.0 - // @ts-expect-error - if (loaded.fallthrough) { - throw new Error( - 'fallthrough is no longer supported. Use matchers instead: https://kit.svelte.dev/docs/routing#advanced-routing-matching' - ); - } - - // TODO remove for 1.0 - if ('maxage' in loaded) { - throw new Error('maxage should be replaced with cache: { maxage }'); - } - - const has_error_status = - loaded.status && loaded.status >= 400 && loaded.status <= 599 && !loaded.redirect; - if (loaded.error || has_error_status) { - const status = loaded.status; - - if (!loaded.error && has_error_status) { - return { status: status || 500, error: new Error() }; - } - - const error = typeof loaded.error === 'string' ? new Error(loaded.error) : loaded.error; - - if (!(error instanceof Error)) { - return { - status: 500, - error: new Error( - `"error" property returned from load() must be a string or instance of Error, received type "${typeof error}"` - ) - }; - } - - if (!status || status < 400 || status > 599) { - console.warn('"error" returned from load() without a valid status code — defaulting to 500'); - return { status: 500, error }; - } - - return { status, error }; - } - - if (loaded.redirect) { - if (!loaded.status || Math.floor(loaded.status / 100) !== 3) { - return { - status: 500, - error: new Error( - '"redirect" property returned from load() must be accompanied by a 3xx status code' - ) - }; - } - - if (typeof loaded.redirect !== 'string') { - return { - status: 500, - error: new Error('"redirect" property returned from load() must be a string') - }; - } - } - - if (loaded.dependencies) { - if ( - !Array.isArray(loaded.dependencies) || - loaded.dependencies.some((dep) => typeof dep !== 'string') - ) { - return { - status: 500, - error: new Error('"dependencies" property returned from load() must be of type string[]') - }; - } - } - - // TODO remove before 1.0 - if (/** @type {any} */ (loaded).context) { - throw new Error( - 'You are returning "context" from a load function. ' + - '"context" was renamed to "stuff", please adjust your code accordingly.' - ); - } - - return /** @type {import('types').NormalizedLoadOutput} */ (loaded); -} - -/** - * @param {string} path - * @param {import('types').TrailingSlash} trailing_slash - */ -function normalize_path(path, trailing_slash) { - if (path === '/' || trailing_slash === 'ignore') return path; - - if (trailing_slash === 'never') { - return path.endsWith('/') ? path.slice(0, -1) : path; - } else if (trailing_slash === 'always' && !path.endsWith('/')) { - return path + '/'; - } - - return path; -} - -/** - * Hash using djb2 - * @param {import('types').StrictBody} value - */ -function hash(value) { - let hash = 5381; - let i = value.length; - - if (typeof value === 'string') { - while (i) hash = (hash * 33) ^ value.charCodeAt(--i); - } else { - while (i) hash = (hash * 33) ^ value[--i]; - } - - return (hash >>> 0).toString(36); -} - -/** @param {HTMLDocument} doc */ -function get_base_uri(doc) { - let baseURI = doc.baseURI; - - if (!baseURI) { - const baseTags = doc.getElementsByTagName('base'); - baseURI = baseTags.length ? baseTags[0].href : doc.URL; - } - - return baseURI; -} - -function scroll_state() { - return { - x: pageXOffset, - y: pageYOffset - }; -} - -/** @param {Event} event */ -function find_anchor(event) { - const node = event - .composedPath() - .find((e) => e instanceof Node && e.nodeName.toUpperCase() === 'A'); // SVG elements have a lowercase name - return /** @type {HTMLAnchorElement | SVGAElement | undefined} */ (node); -} - -/** @param {HTMLAnchorElement | SVGAElement} node */ -function get_href(node) { - return node instanceof SVGAElement - ? new URL(node.href.baseVal, document.baseURI) - : new URL(node.href); -} - -/** @param {any} value */ -function notifiable_store(value) { - const store = writable(value); - let ready = true; - - function notify() { - ready = true; - store.update((val) => val); - } - - /** @param {any} new_value */ - function set(new_value) { - ready = false; - store.set(new_value); - } - - /** @param {(value: any) => void} run */ - function subscribe(run) { - /** @type {any} */ - let old_value; - return store.subscribe((new_value) => { - if (old_value === undefined || (ready && new_value !== old_value)) { - run((old_value = new_value)); - } - }); - } - - return { notify, set, subscribe }; -} - -function create_updated_store() { - const { set, subscribe } = writable(false); - - const interval = +( - /** @type {string} */ (import.meta.env.VITE_SVELTEKIT_APP_VERSION_POLL_INTERVAL) - ); - const initial = import.meta.env.VITE_SVELTEKIT_APP_VERSION; - - /** @type {NodeJS.Timeout} */ - let timeout; - - async function check() { - if (import.meta.env.DEV || import.meta.env.SSR) return false; - - clearTimeout(timeout); - - if (interval) timeout = setTimeout(check, interval); - - const file = import.meta.env.VITE_SVELTEKIT_APP_VERSION_FILE; - - const res = await fetch(`${assets}/${file}`, { - headers: { - pragma: 'no-cache', - 'cache-control': 'no-cache' - } - }); - - if (res.ok) { - const { version } = await res.json(); - const updated = version !== initial; - - if (updated) { - set(true); - clearTimeout(timeout); - } - - return updated; - } else { - throw new Error(`Version check failed: ${res.status}`); - } - } - - if (interval) timeout = setTimeout(check, interval); - - return { - subscribe, - check - }; -} - -/** - * @param {RequestInfo} resource - * @param {RequestInit} [opts] - */ -function initial_fetch(resource, opts) { - const url = JSON.stringify(typeof resource === 'string' ? resource : resource.url); - - let selector = `script[sveltekit\\:data-type="data"][sveltekit\\:data-url=${url}]`; - - if (opts && typeof opts.body === 'string') { - selector += `[sveltekit\\:data-body="${hash(opts.body)}"]`; - } - - const script = document.querySelector(selector); - if (script && script.textContent) { - const { body, ...init } = JSON.parse(script.textContent); - return Promise.resolve(new Response(body, init)); - } - - return fetch(resource, opts); -} - -const param_pattern = /^(\.\.\.)?(\w+)(?:=(\w+))?$/; - -/** @param {string} id */ -function parse_route_id(id) { - /** @type {string[]} */ - const names = []; - - /** @type {string[]} */ - const types = []; - - // `/foo` should get an optional trailing slash, `/foo.json` should not - // const add_trailing_slash = !/\.[a-z]+$/.test(key); - let add_trailing_slash = true; - - const pattern = - id === '' - ? /^\/$/ - : new RegExp( - `^${decodeURIComponent(id) - .split(/(?:@[a-zA-Z0-9_-]+)?(?:\/|$)/) - .map((segment, i, segments) => { - // special case — /[...rest]/ could contain zero segments - const match = /^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(segment); - if (match) { - names.push(match[1]); - types.push(match[2]); - return '(?:/(.*))?'; - } - - const is_last = i === segments.length - 1; - - return ( - segment && - '/' + - segment - .split(/\[(.+?)\]/) - .map((content, i) => { - if (i % 2) { - const [, rest, name, type] = /** @type {RegExpMatchArray} */ ( - param_pattern.exec(content) - ); - names.push(name); - types.push(type); - return rest ? '(.*?)' : '([^/]+?)'; - } - - if (is_last && content.includes('.')) add_trailing_slash = false; - - return ( - content // allow users to specify characters on the file system in an encoded manner - .normalize() - // We use [ and ] to denote parameters, so users must encode these on the file - // system to match against them. We don't decode all characters since others - // can already be epressed and so that '%' can be easily used directly in filenames - .replace(/%5[Bb]/g, '[') - .replace(/%5[Dd]/g, ']') - // '#', '/', and '?' can only appear in URL path segments in an encoded manner. - // They will not be touched by decodeURI so need to be encoded here, so - // that we can match against them. - // We skip '/' since you can't create a file with it on any OS - .replace(/#/g, '%23') - .replace(/\?/g, '%3F') - // escape characters that have special meaning in regex - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - ); // TODO handle encoding - }) - .join('') - ); - }) - .join('')}${add_trailing_slash ? '/?' : ''}$` - ); - - return { pattern, names, types }; -} - -/** - * @param {RegExpMatchArray} match - * @param {string[]} names - * @param {string[]} types - * @param {Record} matchers - */ -function exec(match, names, types, matchers) { - /** @type {Record} */ - const params = {}; - - for (let i = 0; i < names.length; i += 1) { - const name = names[i]; - const type = types[i]; - const value = match[i + 1] || ''; - - if (type) { - const matcher = matchers[type]; - if (!matcher) throw new Error(`Missing "${type}" param matcher`); // TODO do this ahead of time? - - if (!matcher(value)) return; - } - - params[name] = value; - } - - return params; -} - -/** - * @param {import('types').CSRComponentLoader[]} components - * @param {Record} dictionary - * @param {Record boolean>} matchers - * @returns {import('types').CSRRoute[]} - */ -function parse(components, dictionary, matchers) { - const routes = Object.entries(dictionary).map(([id, [a, b, has_shadow]]) => { - const { pattern, names, types } = parse_route_id(id); - - return { - id, - /** @param {string} path */ - exec: (path) => { - const match = pattern.exec(path); - if (match) return exec(match, names, types, matchers); - }, - a: a.map((n) => components[n]), - b: b.map((n) => components[n]), - has_shadow: !!has_shadow - }; - }); - - return routes; -} - -const SCROLL_KEY = 'sveltekit:scroll'; -const INDEX_KEY = 'sveltekit:index'; - -const routes = parse(components, dictionary, matchers); - -// we import the root layout/error components eagerly, so that -// connectivity errors after initialisation don't nuke the app -const default_layout = components[0](); -const default_error = components[1](); - -const root_stuff = {}; - -// We track the scroll position associated with each history entry in sessionStorage, -// rather than on history.state itself, because when navigation is driven by -// popstate it's too late to update the scroll position associated with the -// state we're navigating from - -/** @typedef {{ x: number, y: number }} ScrollPosition */ -/** @type {Record} */ -let scroll_positions = {}; -try { - scroll_positions = JSON.parse(sessionStorage[SCROLL_KEY]); -} catch { - // do nothing -} - -/** @param {number} index */ -function update_scroll_positions(index) { - scroll_positions[index] = scroll_state(); -} - -/** - * @param {{ - * target: Element; - * session: App.Session; - * base: string; - * trailing_slash: import('types').TrailingSlash; - * }} opts - * @returns {import('./types').Client} - */ -function create_client({ target, session, base, trailing_slash }) { - /** @type {Map} */ - const cache = new Map(); - - /** @type {Array<((href: string) => boolean)>} */ - const invalidated = []; - - const stores = { - url: notifiable_store({}), - page: notifiable_store({}), - navigating: writable(/** @type {import('types').Navigation | null} */ (null)), - session: writable(session), - updated: create_updated_store() - }; - - /** @type {{id: string | null, promise: Promise | null}} */ - const load_cache = { - id: null, - promise: null - }; - - const callbacks = { - /** @type {Array<(opts: { from: URL, to: URL | null, cancel: () => void }) => void>} */ - before_navigate: [], - - /** @type {Array<(opts: { from: URL | null, to: URL }) => void>} */ - after_navigate: [] - }; - - /** @type {import('./types').NavigationState} */ - let current = { - branch: [], - error: null, - session_id: 0, - stuff: root_stuff, - // @ts-ignore - we need the initial value to be null - url: null - }; - - let started = false; - let autoscroll = true; - let updating = false; - let session_id = 1; - - /** @type {Promise | null} */ - let invalidating = null; - - /** @type {import('svelte').SvelteComponent} */ - let root; - - /** @type {App.Session} */ - let $session; - - let ready = false; - stores.session.subscribe(async (value) => { - $session = value; - - if (!ready) return; - session_id += 1; - - update(new URL(location.href), [], true); - }); - ready = true; - - let router_enabled = true; - - // keeping track of the history index in order to prevent popstate navigation events if needed - let current_history_index = history.state?.[INDEX_KEY]; - - if (!current_history_index) { - // we use Date.now() as an offset so that cross-document navigations - // within the app don't result in data loss - current_history_index = Date.now(); - - // create initial history entry, so we can return here - history.replaceState( - { ...history.state, [INDEX_KEY]: current_history_index }, - '', - location.href - ); - } - - // if we reload the page, or Cmd-Shift-T back to it, - // recover scroll position - const scroll = scroll_positions[current_history_index]; - if (scroll) { - history.scrollRestoration = 'manual'; - scrollTo(scroll.x, scroll.y); - } - - let hash_navigating = false; - - /** @type {import('types').Page} */ - let page; - - /** @type {{}} */ - let token; - - /** - * @param {string} href - * @param {{ noscroll?: boolean; replaceState?: boolean; keepfocus?: boolean; state?: any }} opts - * @param {string[]} redirect_chain - */ - async function goto( - href, - { noscroll = false, replaceState = false, keepfocus = false, state = {} }, - redirect_chain - ) { - const url = new URL(href, get_base_uri(document)); - - if (router_enabled) { - return navigate({ - url, - scroll: noscroll ? scroll_state() : null, - keepfocus, - redirect_chain, - details: { - state, - replaceState - }, - accepted: () => {}, - blocked: () => {} - }); - } - - await native_navigation(url); - } - - /** @param {URL} url */ - async function prefetch(url) { - const intent = get_navigation_intent(url); - - if (!intent) { - throw new Error('Attempted to prefetch a URL that does not belong to this app'); - } - - load_cache.promise = load_route(intent, false); - load_cache.id = intent.id; - - return load_cache.promise; - } - - /** - * Returns `true` if update completes, `false` if it is aborted - * @param {URL} url - * @param {string[]} redirect_chain - * @param {boolean} no_cache - * @param {{hash?: string, scroll: { x: number, y: number } | null, keepfocus: boolean, details: { replaceState: boolean, state: any } | null}} [opts] - */ - async function update(url, redirect_chain, no_cache, opts) { - const intent = get_navigation_intent(url); - - const current_token = (token = {}); - let navigation_result = intent && (await load_route(intent, no_cache)); - - if ( - !navigation_result && - url.origin === location.origin && - url.pathname === location.pathname - ) { - // this could happen in SPA fallback mode if the user navigated to - // `/non-existent-page`. if we fall back to reloading the page, it - // will create an infinite loop. so whereas we normally handle - // unknown routes by going to the server, in this special case - // we render a client-side error page instead - navigation_result = await load_root_error_page({ - status: 404, - error: new Error(`Not found: ${url.pathname}`), - url, - routeId: null - }); - } - - if (!navigation_result) { - await native_navigation(url); - return false; // unnecessary, but TypeScript prefers it this way - } - - // abort if user navigated during update - if (token !== current_token) return false; - - invalidated.length = 0; - - if (navigation_result.redirect) { - if (redirect_chain.length > 10 || redirect_chain.includes(url.pathname)) { - navigation_result = await load_root_error_page({ - status: 500, - error: new Error('Redirect loop'), - url, - routeId: null - }); - } else { - if (router_enabled) { - goto(new URL(navigation_result.redirect, url).href, {}, [ - ...redirect_chain, - url.pathname - ]); - } else { - await native_navigation(new URL(navigation_result.redirect, location.href)); - } - - return false; - } - } else if (navigation_result.props?.page?.status >= 400) { - const updated = await stores.updated.check(); - if (updated) { - await native_navigation(url); - } - } - - updating = true; - - if (opts && opts.details) { - const { details } = opts; - const change = details.replaceState ? 0 : 1; - details.state[INDEX_KEY] = current_history_index += change; - history[details.replaceState ? 'replaceState' : 'pushState'](details.state, '', url); - } - - if (started) { - current = navigation_result.state; - - root.$set(navigation_result.props); - } else { - initialize(navigation_result); - } - - // opts must be passed if we're navigating - if (opts) { - const { scroll, keepfocus } = opts; - - if (!keepfocus) { - // Reset page selection and focus - // We try to mimic browsers' behaviour as closely as possible by targeting the - // first scrollable region, but unfortunately it's not a perfect match — e.g. - // shift-tabbing won't immediately cycle up from the end of the page on Chromium - // See https://html.spec.whatwg.org/multipage/interaction.html#get-the-focusable-area - const root = document.body; - const tabindex = root.getAttribute('tabindex'); - - getSelection()?.removeAllRanges(); - root.tabIndex = -1; - root.focus({ preventScroll: true }); - - // restore `tabindex` as to prevent `root` from stealing input from elements - if (tabindex !== null) { - root.setAttribute('tabindex', tabindex); - } else { - root.removeAttribute('tabindex'); - } - } - - // need to render the DOM before we can scroll to the rendered elements - await tick(); - - if (autoscroll) { - const deep_linked = url.hash && document.getElementById(url.hash.slice(1)); - if (scroll) { - scrollTo(scroll.x, scroll.y); - } else if (deep_linked) { - // Here we use `scrollIntoView` on the element instead of `scrollTo` - // because it natively supports the `scroll-margin` and `scroll-behavior` - // CSS properties. - deep_linked.scrollIntoView(); - } else { - scrollTo(0, 0); - } - } - } else { - // in this case we're simply invalidating - await tick(); - } - - load_cache.promise = null; - load_cache.id = null; - autoscroll = true; - updating = false; - - if (navigation_result.props.page) { - page = navigation_result.props.page; - } - - const leaf_node = navigation_result.state.branch[navigation_result.state.branch.length - 1]; - router_enabled = leaf_node?.module.router !== false; - - return true; - } - - /** @param {import('./types').NavigationResult} result */ - function initialize(result) { - current = result.state; - - const style = document.querySelector('style[data-sveltekit]'); - if (style) style.remove(); - - page = result.props.page; - - root = new Root({ - target, - props: { ...result.props, stores }, - hydrate: true - }); - - started = true; - - if (router_enabled) { - const navigation = { from: null, to: new URL(location.href) }; - callbacks.after_navigate.forEach((fn) => fn(navigation)); - } - } - - /** - * - * @param {{ - * url: URL; - * params: Record; - * stuff: Record; - * branch: Array; - * status: number; - * error: Error | null; - * routeId: string | null; - * }} opts - */ - async function get_navigation_result_from_branch({ - url, - params, - stuff, - branch, - status, - error, - routeId - }) { - const filtered = /** @type {import('./types').BranchNode[] } */ (branch.filter(Boolean)); - const redirect = filtered.find((f) => f.loaded?.redirect); - - /** @type {import('./types').NavigationResult} */ - const result = { - redirect: redirect?.loaded?.redirect, - state: { - url, - params, - branch, - error, - stuff, - session_id - }, - props: { - components: filtered.map((node) => node.module.default) - } - }; - - for (let i = 0; i < filtered.length; i += 1) { - const loaded = filtered[i].loaded; - result.props[`props_${i}`] = loaded ? await loaded.props : null; - } - - const page_changed = - !current.url || - url.href !== current.url.href || - current.error !== error || - current.stuff !== stuff; - - if (page_changed) { - result.props.page = { error, params, routeId, status, stuff, url }; - - // TODO remove this for 1.0 - /** - * @param {string} property - * @param {string} replacement - */ - const print_error = (property, replacement) => { - Object.defineProperty(result.props.page, property, { - get: () => { - throw new Error(`$page.${property} has been replaced by $page.url.${replacement}`); - } - }); - }; - - print_error('origin', 'origin'); - print_error('path', 'pathname'); - print_error('query', 'searchParams'); - } - - const leaf = filtered[filtered.length - 1]; - const load_cache = leaf?.loaded?.cache; - - if (load_cache) { - const key = url.pathname + url.search; // omit hash - let ready = false; - - const clear = () => { - if (cache.get(key) === result) { - cache.delete(key); - } - - unsubscribe(); - clearTimeout(timeout); - }; - - const timeout = setTimeout(clear, load_cache.maxage * 1000); - - const unsubscribe = stores.session.subscribe(() => { - if (ready) clear(); - }); - - ready = true; - - cache.set(key, result); - } - - return result; - } - - /** - * @param {{ - * status?: number; - * error?: Error; - * module: import('types').CSRComponent; - * url: URL; - * params: Record; - * stuff: Record; - * props?: Record; - * routeId: string | null; - * }} options - */ - async function load_node({ status, error, module, url, params, stuff, props, routeId }) { - /** @type {import('./types').BranchNode} */ - const node = { - module, - uses: { - params: new Set(), - url: false, - session: false, - stuff: false, - dependencies: new Set() - }, - loaded: null, - stuff - }; - - /** @param dep {string} */ - function add_dependency(dep) { - const { href } = new URL(dep, url); - node.uses.dependencies.add(href); - } - - if (props) { - // shadow endpoint props means we need to mark this URL as a dependency of itself - node.uses.dependencies.add(url.href); - } - - /** @type {Record} */ - const uses_params = {}; - for (const key in params) { - Object.defineProperty(uses_params, key, { - get() { - node.uses.params.add(key); - return params[key]; - }, - enumerable: true - }); - } - - const session = $session; - - if (module.load) { - /** @type {import('types').LoadInput} */ - const load_input = { - routeId, - params: uses_params, - props: props || {}, - get url() { - node.uses.url = true; - return url; - }, - get session() { - node.uses.session = true; - return session; - }, - get stuff() { - node.uses.stuff = true; - return { ...stuff }; - }, - fetch(resource, info) { - const requested = typeof resource === 'string' ? resource : resource.url; - add_dependency(requested); - - return started ? fetch(resource, info) : initial_fetch(resource, info); - }, - status: status ?? null, - error: error ?? null - }; - - if (import.meta.env.DEV) { - // TODO remove this for 1.0 - Object.defineProperty(load_input, 'page', { - get: () => { - throw new Error('`page` in `load` functions has been replaced by `url` and `params`'); - } - }); - } - - const loaded = await module.load.call(null, load_input); - - if (!loaded) { - throw new Error('load function must return a value'); - } - - node.loaded = normalize(loaded); - if (node.loaded.stuff) node.stuff = node.loaded.stuff; - if (node.loaded.dependencies) { - node.loaded.dependencies.forEach(add_dependency); - } - } else if (props) { - node.loaded = normalize({ props }); - } - - return node; - } - - /** - * @param {import('./types').NavigationIntent} intent - * @param {boolean} no_cache - */ - async function load_route({ id, url, params, route }, no_cache) { - if (load_cache.id === id && load_cache.promise) { - return load_cache.promise; - } - - if (!no_cache) { - const cached = cache.get(id); - if (cached) return cached; - } - - const { a, b, has_shadow } = route; - - const changed = current.url && { - url: id !== current.url.pathname + current.url.search, - params: Object.keys(params).filter((key) => current.params[key] !== params[key]), - session: session_id !== current.session_id - }; - - /** @type {Array} */ - let branch = []; - - /** @type {Record} */ - let stuff = root_stuff; - let stuff_changed = false; - - /** @type {number | undefined} */ - let status = 200; - - /** @type {Error | null} */ - let error = null; - - // preload modules to avoid waterfall, but handle rejections - // so they don't get reported to Sentry et al (we don't need - // to act on the failures at this point) - a.forEach((loader) => loader().catch(() => {})); - - load: for (let i = 0; i < a.length; i += 1) { - /** @type {import('./types').BranchNode | undefined} */ - let node; - - try { - if (!a[i]) continue; - - const module = await a[i](); - const previous = current.branch[i]; - - const changed_since_last_render = - !previous || - module !== previous.module || - (changed.url && previous.uses.url) || - changed.params.some((param) => previous.uses.params.has(param)) || - (changed.session && previous.uses.session) || - Array.from(previous.uses.dependencies).some((dep) => invalidated.some((fn) => fn(dep))) || - (stuff_changed && previous.uses.stuff); - - if (changed_since_last_render) { - /** @type {Record} */ - let props = {}; - - const is_shadow_page = has_shadow && i === a.length - 1; - - if (is_shadow_page) { - const res = await fetch( - `${url.pathname}${url.pathname.endsWith('/') ? '' : '/'}__data.json${url.search}`, - { - headers: { - 'x-sveltekit-load': 'true' - } - } - ); - - if (res.ok) { - const redirect = res.headers.get('x-sveltekit-location'); - - if (redirect) { - return { - redirect, - props: {}, - state: current - }; - } - - props = res.status === 204 ? {} : await res.json(); - } else { - status = res.status; - error = new Error('Failed to load data'); - } - } - - if (!error) { - node = await load_node({ - module, - url, - params, - props, - stuff, - routeId: route.id - }); - } - - if (node) { - if (is_shadow_page) { - node.uses.url = true; - } - - if (node.loaded) { - if (node.loaded.error) { - status = node.loaded.status; - error = node.loaded.error; - } - - if (node.loaded.redirect) { - return { - redirect: node.loaded.redirect, - props: {}, - state: current - }; - } - - if (node.loaded.stuff) { - stuff_changed = true; - } - } - } - } else { - node = previous; - } - } catch (e) { - status = 500; - error = coalesce_to_error(e); - } - - if (error) { - while (i--) { - if (b[i]) { - let error_loaded; - - /** @type {import('./types').BranchNode | undefined} */ - let node_loaded; - let j = i; - while (!(node_loaded = branch[j])) { - j -= 1; - } - - try { - error_loaded = await load_node({ - status, - error, - module: await b[i](), - url, - params, - stuff: node_loaded.stuff, - routeId: route.id - }); - - if (error_loaded?.loaded?.error) { - continue; - } - - if (error_loaded?.loaded?.stuff) { - stuff = { - ...stuff, - ...error_loaded.loaded.stuff - }; - } - - branch = branch.slice(0, j + 1).concat(error_loaded); - break load; - } catch (e) { - continue; - } - } - } - - return await load_root_error_page({ - status, - error, - url, - routeId: route.id - }); - } else { - if (node?.loaded?.stuff) { - stuff = { - ...stuff, - ...node.loaded.stuff - }; - } - - branch.push(node); - } - } - - return await get_navigation_result_from_branch({ - url, - params, - stuff, - branch, - status, - error, - routeId: route.id - }); - } - - /** - * @param {{ - * status: number; - * error: Error; - * url: URL; - * routeId: string | null - * }} opts - */ - async function load_root_error_page({ status, error, url, routeId }) { - /** @type {Record} */ - const params = {}; // error page does not have params - - const root_layout = await load_node({ - module: await default_layout, - url, - params, - stuff: {}, - routeId - }); - - const root_error = await load_node({ - status, - error, - module: await default_error, - url, - params, - stuff: (root_layout && root_layout.loaded && root_layout.loaded.stuff) || {}, - routeId - }); - - return await get_navigation_result_from_branch({ - url, - params, - stuff: { - ...root_layout?.loaded?.stuff, - ...root_error?.loaded?.stuff - }, - branch: [root_layout, root_error], - status, - error, - routeId - }); - } - - /** @param {URL} url */ - function get_navigation_intent(url) { - if (url.origin !== location.origin || !url.pathname.startsWith(base)) return; - - const path = decodeURI(url.pathname.slice(base.length) || '/'); - - for (const route of routes) { - const params = route.exec(path); - - if (params) { - /** @type {import('./types').NavigationIntent} */ - const intent = { - id: url.pathname + url.search, - route, - params, - url - }; - - return intent; - } - } - } - - /** - * @param {{ - * url: URL; - * scroll: { x: number, y: number } | null; - * keepfocus: boolean; - * redirect_chain: string[]; - * details: { - * replaceState: boolean; - * state: any; - * } | null; - * accepted: () => void; - * blocked: () => void; - * }} opts - */ - async function navigate({ url, scroll, keepfocus, redirect_chain, details, accepted, blocked }) { - const from = current.url; - let should_block = false; - - const navigation = { - from, - to: url, - cancel: () => (should_block = true) - }; - - callbacks.before_navigate.forEach((fn) => fn(navigation)); - - if (should_block) { - blocked(); - return; - } - - const pathname = normalize_path(url.pathname, trailing_slash); - const normalized = new URL(url.origin + pathname + url.search + url.hash); - - update_scroll_positions(current_history_index); - - accepted(); - - if (started) { - stores.navigating.set({ - from: current.url, - to: normalized - }); - } - - const completed = await update(normalized, redirect_chain, false, { - scroll, - keepfocus, - details - }); - - if (completed) { - const navigation = { from, to: normalized }; - callbacks.after_navigate.forEach((fn) => fn(navigation)); - - stores.navigating.set(null); - } - } - - /** - * Loads `href` the old-fashioned way, with a full page reload. - * Returns a `Promise` that never resolves (to prevent any - * subsequent work, e.g. history manipulation, from happening) - * @param {URL} url - */ - function native_navigation(url) { - location.href = url.href; - return new Promise(() => {}); - } - - return { - after_navigate: (fn) => { - onMount(() => { - callbacks.after_navigate.push(fn); - - return () => { - const i = callbacks.after_navigate.indexOf(fn); - callbacks.after_navigate.splice(i, 1); - }; - }); - }, - - before_navigate: (fn) => { - onMount(() => { - callbacks.before_navigate.push(fn); - - return () => { - const i = callbacks.before_navigate.indexOf(fn); - callbacks.before_navigate.splice(i, 1); - }; - }); - }, - - disable_scroll_handling: () => { - if (import.meta.env.DEV && started && !updating) { - throw new Error('Can only disable scroll handling during navigation'); - } - - if (updating || !started) { - autoscroll = false; - } - }, - - goto: (href, opts = {}) => goto(href, opts, []), - - invalidate: (resource) => { - if (typeof resource === 'function') { - invalidated.push(resource); - } else { - const { href } = new URL(resource, location.href); - invalidated.push((dep) => dep === href); - } - - if (!invalidating) { - invalidating = Promise.resolve().then(async () => { - await update(new URL(location.href), [], true); - - invalidating = null; - }); - } - - return invalidating; - }, - - prefetch: async (href) => { - const url = new URL(href, get_base_uri(document)); - await prefetch(url); - }, - - // TODO rethink this API - prefetch_routes: async (pathnames) => { - const matching = pathnames - ? routes.filter((route) => pathnames.some((pathname) => route.exec(pathname))) - : routes; - - const promises = matching.map((r) => Promise.all(r.a.map((load) => load()))); - - await Promise.all(promises); - }, - - _start_router: () => { - history.scrollRestoration = 'manual'; - - // Adopted from Nuxt.js - // Reset scrollRestoration to auto when leaving page, allowing page reload - // and back-navigation from other pages to use the browser to restore the - // scrolling position. - addEventListener('beforeunload', (e) => { - let should_block = false; - - const navigation = { - from: current.url, - to: null, - cancel: () => (should_block = true) - }; - - callbacks.before_navigate.forEach((fn) => fn(navigation)); - - if (should_block) { - e.preventDefault(); - e.returnValue = ''; - } else { - history.scrollRestoration = 'auto'; - } - }); - - addEventListener('visibilitychange', () => { - if (document.visibilityState === 'hidden') { - update_scroll_positions(current_history_index); - - try { - sessionStorage[SCROLL_KEY] = JSON.stringify(scroll_positions); - } catch { - // do nothing - } - } - }); - - /** @param {Event} event */ - const trigger_prefetch = (event) => { - const a = find_anchor(event); - if (a && a.href && a.hasAttribute('sveltekit:prefetch')) { - prefetch(get_href(a)); - } - }; - - /** @type {NodeJS.Timeout} */ - let mousemove_timeout; - - /** @param {MouseEvent|TouchEvent} event */ - const handle_mousemove = (event) => { - clearTimeout(mousemove_timeout); - mousemove_timeout = setTimeout(() => { - // event.composedPath(), which is used in find_anchor, will be empty if the event is read in a timeout - // add a layer of indirection to address that - event.target?.dispatchEvent( - new CustomEvent('sveltekit:trigger_prefetch', { bubbles: true }) - ); - }, 20); - }; - - addEventListener('touchstart', trigger_prefetch); - addEventListener('mousemove', handle_mousemove); - addEventListener('sveltekit:trigger_prefetch', trigger_prefetch); - - /** @param {MouseEvent} event */ - addEventListener('click', (event) => { - if (!router_enabled) return; - - // Adapted from https://github.com/visionmedia/page.js - // MIT license https://github.com/visionmedia/page.js#license - if (event.button || event.which !== 1) return; - if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return; - if (event.defaultPrevented) return; - - const a = find_anchor(event); - if (!a) return; - - if (!a.href) return; - - const is_svg_a_element = a instanceof SVGAElement; - const url = get_href(a); - - // Ignore if url does not have origin (e.g. `mailto:`, `tel:`.) - // MEMO: Without this condition, firefox will open mailer twice. - // See: https://github.com/sveltejs/kit/issues/4045 - if (!is_svg_a_element && url.origin === 'null') return; - - // Ignore if tag has - // 1. 'download' attribute - // 2. 'rel' attribute includes external - const rel = (a.getAttribute('rel') || '').split(/\s+/); - - if ( - a.hasAttribute('download') || - rel.includes('external') || - a.hasAttribute('sveltekit:reload') - ) { - return; - } - - // Ignore if has a target - if (is_svg_a_element ? a.target.baseVal : a.target) return; - - // Check if new url only differs by hash and use the browser default behavior in that case - // This will ensure the `hashchange` event is fired - // Removing the hash does a full page navigation in the browser, so make sure a hash is present - const [base, hash] = url.href.split('#'); - if (hash !== undefined && base === location.href.split('#')[0]) { - // set this flag to distinguish between navigations triggered by - // clicking a hash link and those triggered by popstate - hash_navigating = true; - - update_scroll_positions(current_history_index); - - stores.page.set({ ...page, url }); - stores.page.notify(); - - return; - } - - navigate({ - url, - scroll: a.hasAttribute('sveltekit:noscroll') ? scroll_state() : null, - keepfocus: false, - redirect_chain: [], - details: { - state: {}, - replaceState: url.href === location.href - }, - accepted: () => event.preventDefault(), - blocked: () => event.preventDefault() - }); - }); - - addEventListener('popstate', (event) => { - if (event.state && router_enabled) { - // if a popstate-driven navigation is cancelled, we need to counteract it - // with history.go, which means we end up back here, hence this check - if (event.state[INDEX_KEY] === current_history_index) return; - - navigate({ - url: new URL(location.href), - scroll: scroll_positions[event.state[INDEX_KEY]], - keepfocus: false, - redirect_chain: [], - details: null, - accepted: () => { - current_history_index = event.state[INDEX_KEY]; - }, - blocked: () => { - const delta = current_history_index - event.state[INDEX_KEY]; - history.go(delta); - } - }); - } - }); - - addEventListener('hashchange', () => { - // if the hashchange happened as a result of clicking on a link, - // we need to update history, otherwise we have to leave it alone - if (hash_navigating) { - hash_navigating = false; - history.replaceState( - { ...history.state, [INDEX_KEY]: ++current_history_index }, - '', - location.href - ); - } - }); - }, - - _hydrate: async ({ status, error, nodes, params, routeId }) => { - const url = new URL(location.href); - - /** @type {Array} */ - const branch = []; - - /** @type {Record} */ - let stuff = {}; - - /** @type {import('./types').NavigationResult | undefined} */ - let result; - - let error_args; - - try { - for (let i = 0; i < nodes.length; i += 1) { - const is_leaf = i === nodes.length - 1; - - let props; - - if (is_leaf) { - const serialized = document.querySelector('script[sveltekit\\:data-type="props"]'); - if (serialized) { - props = JSON.parse(/** @type {string} */ (serialized.textContent)); - } - } - - const node = await load_node({ - module: await nodes[i], - url, - params, - stuff, - status: is_leaf ? status : undefined, - error: is_leaf ? error : undefined, - props, - routeId - }); - - if (props) { - node.uses.dependencies.add(url.href); - node.uses.url = true; - } - - branch.push(node); - - if (node && node.loaded) { - if (node.loaded.error) { - if (error) throw node.loaded.error; - error_args = { - status: node.loaded.status, - error: node.loaded.error, - url, - routeId - }; - } else if (node.loaded.stuff) { - stuff = { - ...stuff, - ...node.loaded.stuff - }; - } - } - } - - result = error_args - ? await load_root_error_page(error_args) - : await get_navigation_result_from_branch({ - url, - params, - stuff, - branch, - status, - error, - routeId - }); - } catch (e) { - if (error) throw e; - - result = await load_root_error_page({ - status: 500, - error: coalesce_to_error(e), - url, - routeId - }); - } - - if (result.redirect) { - // this is a real edge case — `load` would need to return - // a redirect but only in the browser - await native_navigation(new URL(result.redirect, location.href)); - } - - initialize(result); - } - }; -} - -/** - * @param {{ - * paths: { - * assets: string; - * base: string; - * }, - * target: Element; - * session: any; - * route: boolean; - * spa: boolean; - * trailing_slash: import('types').TrailingSlash; - * hydrate: { - * status: number; - * error: Error; - * nodes: Array>; - * params: Record; - * routeId: string | null; - * }; - * }} opts - */ -async function start({ paths, target, session, route, spa, trailing_slash, hydrate }) { - const client = create_client({ - target, - session, - base: paths.base, - trailing_slash - }); - - init({ client }); - set_paths(paths); - - if (hydrate) { - await client._hydrate(hydrate); - } - - if (route) { - if (spa) client.goto(location.href, { replaceState: true }); - client._start_router(); - } - - dispatchEvent(new CustomEvent('sveltekit:start')); -} - -export { start }; diff --git a/.svelte-kit/runtime/components/error.svelte b/.svelte-kit/runtime/components/error.svelte deleted file mode 100644 index 4c354191..00000000 --- a/.svelte-kit/runtime/components/error.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - -

{status}

- -
{error.message}
- - - -{#if error.frame} -
{error.frame}
-{/if} -{#if error.stack} -
{error.stack}
-{/if} diff --git a/.svelte-kit/runtime/components/layout.svelte b/.svelte-kit/runtime/components/layout.svelte deleted file mode 100644 index 49aeb95a..00000000 --- a/.svelte-kit/runtime/components/layout.svelte +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.svelte-kit/runtime/env.js b/.svelte-kit/runtime/env.js deleted file mode 100644 index bbc86ed2..00000000 --- a/.svelte-kit/runtime/env.js +++ /dev/null @@ -1,8 +0,0 @@ -let prerendering = false; - -/** @param {boolean} value */ -function set_prerendering(value) { - prerendering = value; -} - -export { prerendering, set_prerendering }; diff --git a/.svelte-kit/runtime/paths.js b/.svelte-kit/runtime/paths.js deleted file mode 100644 index 64963b5b..00000000 --- a/.svelte-kit/runtime/paths.js +++ /dev/null @@ -1,13 +0,0 @@ -/** @type {string} */ -let base = ''; - -/** @type {string} */ -let assets = ''; - -/** @param {{ base: string, assets: string }} paths */ -function set_paths(paths) { - base = paths.base; - assets = paths.assets || base; -} - -export { assets, base, set_paths }; diff --git a/.svelte-kit/runtime/server/index.js b/.svelte-kit/runtime/server/index.js deleted file mode 100644 index 903a9de0..00000000 --- a/.svelte-kit/runtime/server/index.js +++ /dev/null @@ -1,3408 +0,0 @@ -/** @param {Partial | undefined} object */ -function to_headers(object) { - const headers = new Headers(); - - if (object) { - for (const key in object) { - const value = object[key]; - if (!value) continue; - - if (Array.isArray(value)) { - value.forEach((value) => { - headers.append(key, /** @type {string} */ (value)); - }); - } else { - headers.set(key, /** @type {string} */ (value)); - } - } - } - - return headers; -} - -/** - * Hash using djb2 - * @param {import('types').StrictBody} value - */ -function hash(value) { - let hash = 5381; - let i = value.length; - - if (typeof value === 'string') { - while (i) hash = (hash * 33) ^ value.charCodeAt(--i); - } else { - while (i) hash = (hash * 33) ^ value[--i]; - } - - return (hash >>> 0).toString(36); -} - -/** @param {Record} obj */ -function lowercase_keys(obj) { - /** @type {Record} */ - const clone = {}; - - for (const key in obj) { - clone[key.toLowerCase()] = obj[key]; - } - - return clone; -} - -/** @param {Record} params */ -function decode_params(params) { - for (const key in params) { - // input has already been decoded by decodeURI - // now handle the rest that decodeURIComponent would do - params[key] = params[key] - .replace(/%23/g, '#') - .replace(/%3[Bb]/g, ';') - .replace(/%2[Cc]/g, ',') - .replace(/%2[Ff]/g, '/') - .replace(/%3[Ff]/g, '?') - .replace(/%3[Aa]/g, ':') - .replace(/%40/g, '@') - .replace(/%26/g, '&') - .replace(/%3[Dd]/g, '=') - .replace(/%2[Bb]/g, '+') - .replace(/%24/g, '$'); - } - - return params; -} - -/** @param {any} body */ -function is_pojo(body) { - if (typeof body !== 'object') return false; - - if (body) { - if (body instanceof Uint8Array) return false; - - // body could be a node Readable, but we don't want to import - // node built-ins, so we use duck typing - if (body._readableState && typeof body.pipe === 'function') return false; - - // similarly, it could be a web ReadableStream - if (typeof ReadableStream !== 'undefined' && body instanceof ReadableStream) return false; - } - - return true; -} - -/** @param {import('types').RequestEvent} event */ -function normalize_request_method(event) { - const method = event.request.method.toLowerCase(); - return method === 'delete' ? 'del' : method; // 'delete' is a reserved word -} - -/** @param {string} body */ -function error(body) { - return new Response(body, { - status: 500 - }); -} - -/** @param {unknown} s */ -function is_string(s) { - return typeof s === 'string' || s instanceof String; -} - -const text_types = new Set([ - 'application/xml', - 'application/json', - 'application/x-www-form-urlencoded', - 'multipart/form-data' -]); - -/** - * Decides how the body should be parsed based on its mime type. Should match what's in parse_body - * - * @param {string | undefined | null} content_type The `content-type` header of a request/response. - * @returns {boolean} - */ -function is_text(content_type) { - if (!content_type) return true; // defaults to json - const type = content_type.split(';')[0].toLowerCase(); // get the mime type - - return type.startsWith('text/') || type.endsWith('+xml') || text_types.has(type); -} - -/** - * @param {import('types').RequestEvent} event - * @param {{ [method: string]: import('types').RequestHandler }} mod - * @returns {Promise} - */ -async function render_endpoint(event, mod) { - const method = normalize_request_method(event); - - /** @type {import('types').RequestHandler} */ - let handler = mod[method]; - - if (!handler && method === 'head') { - handler = mod.get; - } - - if (!handler) { - const allowed = []; - - for (const method in ['get', 'post', 'put', 'patch']) { - if (mod[method]) allowed.push(method.toUpperCase()); - } - - if (mod.del) allowed.push('DELETE'); - if (mod.get || mod.head) allowed.push('HEAD'); - - return event.request.headers.get('x-sveltekit-load') - ? // TODO would be nice to avoid these requests altogether, - // by noting whether or not page endpoints export `get` - new Response(undefined, { - status: 204 - }) - : new Response(`${event.request.method} method not allowed`, { - status: 405, - headers: { - // https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405 - // "The server must generate an Allow header field in a 405 status code response" - allow: allowed.join(', ') - } - }); - } - - const response = await handler(event); - const preface = `Invalid response from route ${event.url.pathname}`; - - if (typeof response !== 'object') { - return error(`${preface}: expected an object, got ${typeof response}`); - } - - // TODO remove for 1.0 - // @ts-expect-error - if (response.fallthrough) { - throw new Error( - 'fallthrough is no longer supported. Use matchers instead: https://kit.svelte.dev/docs/routing#advanced-routing-matching' - ); - } - - const { status = 200, body = {} } = response; - const headers = - response.headers instanceof Headers - ? new Headers(response.headers) - : to_headers(response.headers); - - const type = headers.get('content-type'); - - if (!is_text(type) && !(body instanceof Uint8Array || is_string(body))) { - return error( - `${preface}: body must be an instance of string or Uint8Array if content-type is not a supported textual content-type` - ); - } - - /** @type {import('types').StrictBody} */ - let normalized_body; - - if (is_pojo(body) && (!type || type.startsWith('application/json'))) { - headers.set('content-type', 'application/json; charset=utf-8'); - normalized_body = JSON.stringify(body); - } else { - normalized_body = /** @type {import('types').StrictBody} */ (body); - } - - if ( - (typeof normalized_body === 'string' || normalized_body instanceof Uint8Array) && - !headers.has('etag') - ) { - const cache_control = headers.get('cache-control'); - if (!cache_control || !/(no-store|immutable)/.test(cache_control)) { - headers.set('etag', `"${hash(normalized_body)}"`); - } - } - - return new Response(method !== 'head' ? normalized_body : undefined, { - status, - headers - }); -} - -var chars$1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$'; -var unsafeChars = /[<>\b\f\n\r\t\0\u2028\u2029]/g; -var reserved = /^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/; -var escaped = { - '<': '\\u003C', - '>': '\\u003E', - '/': '\\u002F', - '\\': '\\\\', - '\b': '\\b', - '\f': '\\f', - '\n': '\\n', - '\r': '\\r', - '\t': '\\t', - '\0': '\\0', - '\u2028': '\\u2028', - '\u2029': '\\u2029' -}; -var objectProtoOwnPropertyNames = Object.getOwnPropertyNames(Object.prototype).sort().join('\0'); -function devalue(value) { - var counts = new Map(); - function walk(thing) { - if (typeof thing === 'function') { - throw new Error("Cannot stringify a function"); - } - if (counts.has(thing)) { - counts.set(thing, counts.get(thing) + 1); - return; - } - counts.set(thing, 1); - if (!isPrimitive(thing)) { - var type = getType(thing); - switch (type) { - case 'Number': - case 'String': - case 'Boolean': - case 'Date': - case 'RegExp': - return; - case 'Array': - thing.forEach(walk); - break; - case 'Set': - case 'Map': - Array.from(thing).forEach(walk); - break; - default: - var proto = Object.getPrototypeOf(thing); - if (proto !== Object.prototype && - proto !== null && - Object.getOwnPropertyNames(proto).sort().join('\0') !== objectProtoOwnPropertyNames) { - throw new Error("Cannot stringify arbitrary non-POJOs"); - } - if (Object.getOwnPropertySymbols(thing).length > 0) { - throw new Error("Cannot stringify POJOs with symbolic keys"); - } - Object.keys(thing).forEach(function (key) { return walk(thing[key]); }); - } - } - } - walk(value); - var names = new Map(); - Array.from(counts) - .filter(function (entry) { return entry[1] > 1; }) - .sort(function (a, b) { return b[1] - a[1]; }) - .forEach(function (entry, i) { - names.set(entry[0], getName(i)); - }); - function stringify(thing) { - if (names.has(thing)) { - return names.get(thing); - } - if (isPrimitive(thing)) { - return stringifyPrimitive(thing); - } - var type = getType(thing); - switch (type) { - case 'Number': - case 'String': - case 'Boolean': - return "Object(" + stringify(thing.valueOf()) + ")"; - case 'RegExp': - return "new RegExp(" + stringifyString(thing.source) + ", \"" + thing.flags + "\")"; - case 'Date': - return "new Date(" + thing.getTime() + ")"; - case 'Array': - var members = thing.map(function (v, i) { return i in thing ? stringify(v) : ''; }); - var tail = thing.length === 0 || (thing.length - 1 in thing) ? '' : ','; - return "[" + members.join(',') + tail + "]"; - case 'Set': - case 'Map': - return "new " + type + "([" + Array.from(thing).map(stringify).join(',') + "])"; - default: - var obj = "{" + Object.keys(thing).map(function (key) { return safeKey(key) + ":" + stringify(thing[key]); }).join(',') + "}"; - var proto = Object.getPrototypeOf(thing); - if (proto === null) { - return Object.keys(thing).length > 0 - ? "Object.assign(Object.create(null)," + obj + ")" - : "Object.create(null)"; - } - return obj; - } - } - var str = stringify(value); - if (names.size) { - var params_1 = []; - var statements_1 = []; - var values_1 = []; - names.forEach(function (name, thing) { - params_1.push(name); - if (isPrimitive(thing)) { - values_1.push(stringifyPrimitive(thing)); - return; - } - var type = getType(thing); - switch (type) { - case 'Number': - case 'String': - case 'Boolean': - values_1.push("Object(" + stringify(thing.valueOf()) + ")"); - break; - case 'RegExp': - values_1.push(thing.toString()); - break; - case 'Date': - values_1.push("new Date(" + thing.getTime() + ")"); - break; - case 'Array': - values_1.push("Array(" + thing.length + ")"); - thing.forEach(function (v, i) { - statements_1.push(name + "[" + i + "]=" + stringify(v)); - }); - break; - case 'Set': - values_1.push("new Set"); - statements_1.push(name + "." + Array.from(thing).map(function (v) { return "add(" + stringify(v) + ")"; }).join('.')); - break; - case 'Map': - values_1.push("new Map"); - statements_1.push(name + "." + Array.from(thing).map(function (_a) { - var k = _a[0], v = _a[1]; - return "set(" + stringify(k) + ", " + stringify(v) + ")"; - }).join('.')); - break; - default: - values_1.push(Object.getPrototypeOf(thing) === null ? 'Object.create(null)' : '{}'); - Object.keys(thing).forEach(function (key) { - statements_1.push("" + name + safeProp(key) + "=" + stringify(thing[key])); - }); - } - }); - statements_1.push("return " + str); - return "(function(" + params_1.join(',') + "){" + statements_1.join(';') + "}(" + values_1.join(',') + "))"; - } - else { - return str; - } -} -function getName(num) { - var name = ''; - do { - name = chars$1[num % chars$1.length] + name; - num = ~~(num / chars$1.length) - 1; - } while (num >= 0); - return reserved.test(name) ? name + "_" : name; -} -function isPrimitive(thing) { - return Object(thing) !== thing; -} -function stringifyPrimitive(thing) { - if (typeof thing === 'string') - return stringifyString(thing); - if (thing === void 0) - return 'void 0'; - if (thing === 0 && 1 / thing < 0) - return '-0'; - var str = String(thing); - if (typeof thing === 'number') - return str.replace(/^(-)?0\./, '$1.'); - return str; -} -function getType(thing) { - return Object.prototype.toString.call(thing).slice(8, -1); -} -function escapeUnsafeChar(c) { - return escaped[c] || c; -} -function escapeUnsafeChars(str) { - return str.replace(unsafeChars, escapeUnsafeChar); -} -function safeKey(key) { - return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? key : escapeUnsafeChars(JSON.stringify(key)); -} -function safeProp(key) { - return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? "." + key : "[" + escapeUnsafeChars(JSON.stringify(key)) + "]"; -} -function stringifyString(str) { - var result = '"'; - for (var i = 0; i < str.length; i += 1) { - var char = str.charAt(i); - var code = char.charCodeAt(0); - if (char === '"') { - result += '\\"'; - } - else if (char in escaped) { - result += escaped[char]; - } - else if (code >= 0xd800 && code <= 0xdfff) { - var next = str.charCodeAt(i + 1); - // If this is the beginning of a [high, low] surrogate pair, - // add the next two characters, otherwise escape - if (code <= 0xdbff && (next >= 0xdc00 && next <= 0xdfff)) { - result += char + str[++i]; - } - else { - result += "\\u" + code.toString(16).toUpperCase(); - } - } - else { - result += char; - } - } - result += '"'; - return result; -} - -function noop() { } -function safe_not_equal(a, b) { - return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); -} -Promise.resolve(); - -const subscriber_queue = []; -/** - * Creates a `Readable` store that allows reading by subscription. - * @param value initial value - * @param {StartStopNotifier}start start and stop notifications for subscriptions - */ -function readable(value, start) { - return { - subscribe: writable(value, start).subscribe - }; -} -/** - * Create a `Writable` store that allows both updating and reading by subscription. - * @param {*=}value initial value - * @param {StartStopNotifier=}start start and stop notifications for subscriptions - */ -function writable(value, start = noop) { - let stop; - const subscribers = new Set(); - function set(new_value) { - if (safe_not_equal(value, new_value)) { - value = new_value; - if (stop) { // store is ready - const run_queue = !subscriber_queue.length; - for (const subscriber of subscribers) { - subscriber[1](); - subscriber_queue.push(subscriber, value); - } - if (run_queue) { - for (let i = 0; i < subscriber_queue.length; i += 2) { - subscriber_queue[i][0](subscriber_queue[i + 1]); - } - subscriber_queue.length = 0; - } - } - } - } - function update(fn) { - set(fn(value)); - } - function subscribe(run, invalidate = noop) { - const subscriber = [run, invalidate]; - subscribers.add(subscriber); - if (subscribers.size === 1) { - stop = start(set) || noop; - } - run(value); - return () => { - subscribers.delete(subscriber); - if (subscribers.size === 0) { - stop(); - stop = null; - } - }; - } - return { set, update, subscribe }; -} - -/** - * @param {unknown} err - * @return {Error} - */ -function coalesce_to_error(err) { - return err instanceof Error || - (err && /** @type {any} */ (err).name && /** @type {any} */ (err).message) - ? /** @type {Error} */ (err) - : new Error(JSON.stringify(err)); -} - -/** - * Inside a script element, only ``, so the script element might be unexpectedly - * kept open until until an unrelated HTML comment in the page. - * - * U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR are escaped for the sake of pre-2018 - * browsers. - * - * @see tests for unsafe parsing examples. - * @see https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements - * @see https://html.spec.whatwg.org/multipage/syntax.html#cdata-rcdata-restrictions - * @see https://html.spec.whatwg.org/multipage/parsing.html#script-data-state - * @see https://html.spec.whatwg.org/multipage/parsing.html#script-data-double-escaped-state - * @see https://github.com/tc39/proposal-json-superset - * @type {Record} - */ -const render_json_payload_script_dict = { - '<': '\\u003C', - '\u2028': '\\u2028', - '\u2029': '\\u2029' -}; - -const render_json_payload_script_regex = new RegExp( - `[${Object.keys(render_json_payload_script_dict).join('')}]`, - 'g' -); - -/** - * Generates a raw HTML string containing a safe script element carrying JSON data and associated attributes. - * - * It escapes all the special characters needed to guarantee the element is unbroken, but care must - * be taken to ensure it is inserted in the document at an acceptable position for a script element, - * and that the resulting string isn't further modified. - * - * Attribute names must be type-checked so we don't need to escape them. - * - * @param {import('types').PayloadScriptAttributes} attrs A list of attributes to be added to the element. - * @param {import('types').JSONValue} payload The data to be carried by the element. Must be serializable to JSON. - * @returns {string} The raw HTML of a script element carrying the JSON payload. - * @example const html = render_json_payload_script({ type: 'data', url: '/data.json' }, { foo: 'bar' }); - */ -function render_json_payload_script(attrs, payload) { - const safe_payload = JSON.stringify(payload).replace( - render_json_payload_script_regex, - (match) => render_json_payload_script_dict[match] - ); - - let safe_attrs = ''; - for (const [key, value] of Object.entries(attrs)) { - if (value === undefined) continue; - safe_attrs += ` sveltekit:data-${key}=${escape_html_attr(value)}`; - } - - return ``; -} - -/** - * When inside a double-quoted attribute value, only `&` and `"` hold special meaning. - * @see https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(double-quoted)-state - * @type {Record} - */ -const escape_html_attr_dict = { - '&': '&', - '"': '"' -}; - -const escape_html_attr_regex = new RegExp( - // special characters - `[${Object.keys(escape_html_attr_dict).join('')}]|` + - // high surrogate without paired low surrogate - '[\\ud800-\\udbff](?![\\udc00-\\udfff])|' + - // a valid surrogate pair, the only match with 2 code units - // we match it so that we can match unpaired low surrogates in the same pass - // TODO: use lookbehind assertions once they are widely supported: (?...`; - */ -function escape_html_attr(str) { - const escaped_str = str.replace(escape_html_attr_regex, (match) => { - if (match.length === 2) { - // valid surrogate pair - return match; - } - - return escape_html_attr_dict[match] ?? `&#${match.charCodeAt(0)};`; - }); - - return `"${escaped_str}"`; -} - -const s = JSON.stringify; - -/** @param {URL} url */ -function create_prerendering_url_proxy(url) { - return new Proxy(url, { - get: (target, prop, receiver) => { - if (prop === 'search' || prop === 'searchParams') { - throw new Error(`Cannot access url.${prop} on a page with prerendering enabled`); - } - return Reflect.get(target, prop, receiver); - } - }); -} - -const encoder = new TextEncoder(); - -/** - * SHA-256 hashing function adapted from https://bitwiseshiftleft.github.io/sjcl - * modified and redistributed under BSD license - * @param {string} data - */ -function sha256(data) { - if (!key[0]) precompute(); - - const out = init.slice(0); - const array = encode$1(data); - - for (let i = 0; i < array.length; i += 16) { - const w = array.subarray(i, i + 16); - - let tmp; - let a; - let b; - - let out0 = out[0]; - let out1 = out[1]; - let out2 = out[2]; - let out3 = out[3]; - let out4 = out[4]; - let out5 = out[5]; - let out6 = out[6]; - let out7 = out[7]; - - /* Rationale for placement of |0 : - * If a value can overflow is original 32 bits by a factor of more than a few - * million (2^23 ish), there is a possibility that it might overflow the - * 53-bit mantissa and lose precision. - * - * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that - * propagates around the loop, and on the hash state out[]. I don't believe - * that the clamps on out4 and on out0 are strictly necessary, but it's close - * (for out4 anyway), and better safe than sorry. - * - * The clamps on out[] are necessary for the output to be correct even in the - * common case and for short inputs. - */ - - for (let i = 0; i < 64; i++) { - // load up the input word for this round - - if (i < 16) { - tmp = w[i]; - } else { - a = w[(i + 1) & 15]; - - b = w[(i + 14) & 15]; - - tmp = w[i & 15] = - (((a >>> 7) ^ (a >>> 18) ^ (a >>> 3) ^ (a << 25) ^ (a << 14)) + - ((b >>> 17) ^ (b >>> 19) ^ (b >>> 10) ^ (b << 15) ^ (b << 13)) + - w[i & 15] + - w[(i + 9) & 15]) | - 0; - } - - tmp = - tmp + - out7 + - ((out4 >>> 6) ^ (out4 >>> 11) ^ (out4 >>> 25) ^ (out4 << 26) ^ (out4 << 21) ^ (out4 << 7)) + - (out6 ^ (out4 & (out5 ^ out6))) + - key[i]; // | 0; - - // shift register - out7 = out6; - out6 = out5; - out5 = out4; - - out4 = (out3 + tmp) | 0; - - out3 = out2; - out2 = out1; - out1 = out0; - - out0 = - (tmp + - ((out1 & out2) ^ (out3 & (out1 ^ out2))) + - ((out1 >>> 2) ^ - (out1 >>> 13) ^ - (out1 >>> 22) ^ - (out1 << 30) ^ - (out1 << 19) ^ - (out1 << 10))) | - 0; - } - - out[0] = (out[0] + out0) | 0; - out[1] = (out[1] + out1) | 0; - out[2] = (out[2] + out2) | 0; - out[3] = (out[3] + out3) | 0; - out[4] = (out[4] + out4) | 0; - out[5] = (out[5] + out5) | 0; - out[6] = (out[6] + out6) | 0; - out[7] = (out[7] + out7) | 0; - } - - const bytes = new Uint8Array(out.buffer); - reverse_endianness(bytes); - - return base64(bytes); -} - -/** The SHA-256 initialization vector */ -const init = new Uint32Array(8); - -/** The SHA-256 hash key */ -const key = new Uint32Array(64); - -/** Function to precompute init and key. */ -function precompute() { - /** @param {number} x */ - function frac(x) { - return (x - Math.floor(x)) * 0x100000000; - } - - let prime = 2; - - for (let i = 0; i < 64; prime++) { - let is_prime = true; - - for (let factor = 2; factor * factor <= prime; factor++) { - if (prime % factor === 0) { - is_prime = false; - - break; - } - } - - if (is_prime) { - if (i < 8) { - init[i] = frac(prime ** (1 / 2)); - } - - key[i] = frac(prime ** (1 / 3)); - - i++; - } - } -} - -/** @param {Uint8Array} bytes */ -function reverse_endianness(bytes) { - for (let i = 0; i < bytes.length; i += 4) { - const a = bytes[i + 0]; - const b = bytes[i + 1]; - const c = bytes[i + 2]; - const d = bytes[i + 3]; - - bytes[i + 0] = d; - bytes[i + 1] = c; - bytes[i + 2] = b; - bytes[i + 3] = a; - } -} - -/** @param {string} str */ -function encode$1(str) { - const encoded = encoder.encode(str); - const length = encoded.length * 8; - - // result should be a multiple of 512 bits in length, - // with room for a 1 (after the data) and two 32-bit - // words containing the original input bit length - const size = 512 * Math.ceil((length + 65) / 512); - const bytes = new Uint8Array(size / 8); - bytes.set(encoded); - - // append a 1 - bytes[encoded.length] = 0b10000000; - - reverse_endianness(bytes); - - // add the input bit length - const words = new Uint32Array(bytes.buffer); - words[words.length - 2] = Math.floor(length / 0x100000000); // this will always be zero for us - words[words.length - 1] = length; - - return words; -} - -/* - Based on https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727 - - MIT License - Copyright (c) 2020 Egor Nepomnyaschih - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ -const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - -/** @param {Uint8Array} bytes */ -function base64(bytes) { - const l = bytes.length; - - let result = ''; - let i; - - for (i = 2; i < l; i += 3) { - result += chars[bytes[i - 2] >> 2]; - result += chars[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += chars[((bytes[i - 1] & 0x0f) << 2) | (bytes[i] >> 6)]; - result += chars[bytes[i] & 0x3f]; - } - - if (i === l + 1) { - // 1 octet yet to write - result += chars[bytes[i - 2] >> 2]; - result += chars[(bytes[i - 2] & 0x03) << 4]; - result += '=='; - } - - if (i === l) { - // 2 octets yet to write - result += chars[bytes[i - 2] >> 2]; - result += chars[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += chars[(bytes[i - 1] & 0x0f) << 2]; - result += '='; - } - - return result; -} - -/** @type {Promise} */ -let csp_ready; - -/** @type {() => string} */ -let generate_nonce; - -/** @type {(input: string) => string} */ -let generate_hash; - -if (typeof crypto !== 'undefined') { - const array = new Uint8Array(16); - - generate_nonce = () => { - crypto.getRandomValues(array); - return base64(array); - }; - - generate_hash = sha256; -} else { - // TODO: remove this in favor of web crypto API once we no longer support Node 14 - const name = 'crypto'; // store in a variable to fool esbuild when adapters bundle kit - csp_ready = import(name).then((crypto) => { - generate_nonce = () => { - return crypto.randomBytes(16).toString('base64'); - }; - - generate_hash = (input) => { - return crypto.createHash('sha256').update(input, 'utf-8').digest().toString('base64'); - }; - }); -} - -const quoted = new Set([ - 'self', - 'unsafe-eval', - 'unsafe-hashes', - 'unsafe-inline', - 'none', - 'strict-dynamic', - 'report-sample' -]); - -const crypto_pattern = /^(nonce|sha\d\d\d)-/; - -class Csp { - /** @type {boolean} */ - #use_hashes; - - /** @type {boolean} */ - #dev; - - /** @type {boolean} */ - #script_needs_csp; - - /** @type {boolean} */ - #style_needs_csp; - - /** @type {import('types').CspDirectives} */ - #directives; - - /** @type {import('types').Csp.Source[]} */ - #script_src; - - /** @type {import('types').Csp.Source[]} */ - #style_src; - - /** - * @param {{ - * mode: string, - * directives: import('types').CspDirectives - * }} config - * @param {{ - * dev: boolean; - * prerender: boolean; - * needs_nonce: boolean; - * }} opts - */ - constructor({ mode, directives }, { dev, prerender, needs_nonce }) { - this.#use_hashes = mode === 'hash' || (mode === 'auto' && prerender); - this.#directives = dev ? { ...directives } : directives; // clone in dev so we can safely mutate - this.#dev = dev; - - const d = this.#directives; - - if (dev) { - // remove strict-dynamic in dev... - // TODO reinstate this if we can figure out how to make strict-dynamic work - // if (d['default-src']) { - // d['default-src'] = d['default-src'].filter((name) => name !== 'strict-dynamic'); - // if (d['default-src'].length === 0) delete d['default-src']; - // } - - // if (d['script-src']) { - // d['script-src'] = d['script-src'].filter((name) => name !== 'strict-dynamic'); - // if (d['script-src'].length === 0) delete d['script-src']; - // } - - const effective_style_src = d['style-src'] || d['default-src']; - - // ...and add unsafe-inline so we can inject - - - - `; - - if (options.service_worker) { - head += - ''; - - body += ``; - } - } else { - if (inlined_style) { - const attributes = []; - if (options.dev) attributes.push(' data-sveltekit'); - if (csp.style_needs_nonce) attributes.push(` nonce="${csp.nonce}"`); - - csp.add_style(inlined_style); - - head += `\n\t${inlined_style}`; - } - - // prettier-ignore - head += Array.from(stylesheets) - .map((dep) => { - const attributes = [ - 'rel="stylesheet"', - `href="${options.prefix + dep}"` - ]; - - if (csp.style_needs_nonce) { - attributes.push(`nonce="${csp.nonce}"`); - } - - if (styles.has(dep)) { - // don't load stylesheets that are already inlined - // include them in disabled state so that Vite can detect them and doesn't try to add them - attributes.push('disabled', 'media="(max-width: 0)"'); - } - - return `\n\t`; - }) - .join(''); - - if (page_config.router || page_config.hydrate) { - head += Array.from(modulepreloads) - .map((dep) => `\n\t`) - .join(''); - - const attributes = ['type="module"', `data-hydrate="${target}"`]; - - csp.add_script(init_app); - - if (csp.script_needs_nonce) { - attributes.push(`nonce="${csp.nonce}"`); - } - - body += `\n\t\t`; - - body += serialized_data - .map(({ url, body, response }) => - render_json_payload_script( - { type: 'data', url, body: typeof body === 'string' ? hash(body) : undefined }, - response - ) - ) - .join('\n\t'); - - if (shadow_props) { - body += render_json_payload_script({ type: 'props' }, shadow_props); - } - } - - if (options.service_worker) { - // always include service worker unless it's turned off explicitly - csp.add_script(init_service_worker); - - head += ` - ${init_service_worker}`; - } - } - - if (state.prerender && !options.amp) { - const http_equiv = []; - - const csp_headers = csp.get_meta(); - if (csp_headers) { - http_equiv.push(csp_headers); - } - - if (cache) { - http_equiv.push(``); - } - - if (http_equiv.length > 0) { - head = http_equiv.join('\n') + head; - } - } - - const segments = event.url.pathname.slice(options.paths.base.length).split('/').slice(2); - const assets = - options.paths.assets || (segments.length > 0 ? segments.map(() => '..').join('/') : '.'); - - const html = await resolve_opts.transformPage({ - html: options.template({ head, body, assets, nonce: /** @type {string} */ (csp.nonce) }) - }); - - const headers = new Headers({ - 'content-type': 'text/html', - etag: `"${hash(html)}"` - }); - - if (cache) { - headers.set('cache-control', `${is_private ? 'private' : 'public'}, max-age=${cache.maxage}`); - } - - if (!options.floc) { - headers.set('permissions-policy', 'interest-cohort=()'); - } - - if (!state.prerender) { - const csp_header = csp.get_header(); - if (csp_header) { - headers.set('content-security-policy', csp_header); - } - } - - return new Response(html, { - status, - headers - }); -} - -/** - * @param {any} data - * @param {(error: Error) => void} [fail] - */ -function try_serialize(data, fail) { - try { - return devalue(data); - } catch (err) { - if (fail) fail(coalesce_to_error(err)); - return null; - } -} - -// Ensure we return something truthy so the client will not re-render the page over the error - -/** @param {(Error & {frame?: string} & {loc?: object}) | undefined | null} error */ -function serialize_error(error) { - if (!error) return null; - let serialized = try_serialize(error); - if (!serialized) { - const { name, message, stack } = error; - serialized = try_serialize({ ...error, name, message, stack }); - } - if (!serialized) { - serialized = '{}'; - } - return serialized; -} - -/*! - * cookie - * Copyright(c) 2012-2014 Roman Shtylman - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - * @public - */ - -var parse_1 = parse$1; -var serialize_1 = serialize; - -/** - * Module variables. - * @private - */ - -var __toString = Object.prototype.toString; - -/** - * RegExp to match field-content in RFC 7230 sec 3.2 - * - * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] - * field-vchar = VCHAR / obs-text - * obs-text = %x80-FF - */ - -var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/; - -/** - * Parse a cookie header. - * - * Parse the given cookie header string into an object - * The object has the various cookies as keys(names) => values - * - * @param {string} str - * @param {object} [options] - * @return {object} - * @public - */ - -function parse$1(str, options) { - if (typeof str !== 'string') { - throw new TypeError('argument str must be a string'); - } - - var obj = {}; - var opt = options || {}; - var dec = opt.decode || decode; - - var index = 0; - while (index < str.length) { - var eqIdx = str.indexOf('=', index); - - // no more cookie pairs - if (eqIdx === -1) { - break - } - - var endIdx = str.indexOf(';', index); - - if (endIdx === -1) { - endIdx = str.length; - } else if (endIdx < eqIdx) { - // backtrack on prior semicolon - index = str.lastIndexOf(';', eqIdx - 1) + 1; - continue - } - - var key = str.slice(index, eqIdx).trim(); - - // only assign once - if (undefined === obj[key]) { - var val = str.slice(eqIdx + 1, endIdx).trim(); - - // quoted values - if (val.charCodeAt(0) === 0x22) { - val = val.slice(1, -1); - } - - obj[key] = tryDecode(val, dec); - } - - index = endIdx + 1; - } - - return obj; -} - -/** - * Serialize data into a cookie header. - * - * Serialize the a name value pair into a cookie string suitable for - * http headers. An optional options object specified cookie parameters. - * - * serialize('foo', 'bar', { httpOnly: true }) - * => "foo=bar; httpOnly" - * - * @param {string} name - * @param {string} val - * @param {object} [options] - * @return {string} - * @public - */ - -function serialize(name, val, options) { - var opt = options || {}; - var enc = opt.encode || encode; - - if (typeof enc !== 'function') { - throw new TypeError('option encode is invalid'); - } - - if (!fieldContentRegExp.test(name)) { - throw new TypeError('argument name is invalid'); - } - - var value = enc(val); - - if (value && !fieldContentRegExp.test(value)) { - throw new TypeError('argument val is invalid'); - } - - var str = name + '=' + value; - - if (null != opt.maxAge) { - var maxAge = opt.maxAge - 0; - - if (isNaN(maxAge) || !isFinite(maxAge)) { - throw new TypeError('option maxAge is invalid') - } - - str += '; Max-Age=' + Math.floor(maxAge); - } - - if (opt.domain) { - if (!fieldContentRegExp.test(opt.domain)) { - throw new TypeError('option domain is invalid'); - } - - str += '; Domain=' + opt.domain; - } - - if (opt.path) { - if (!fieldContentRegExp.test(opt.path)) { - throw new TypeError('option path is invalid'); - } - - str += '; Path=' + opt.path; - } - - if (opt.expires) { - var expires = opt.expires; - - if (!isDate(expires) || isNaN(expires.valueOf())) { - throw new TypeError('option expires is invalid'); - } - - str += '; Expires=' + expires.toUTCString(); - } - - if (opt.httpOnly) { - str += '; HttpOnly'; - } - - if (opt.secure) { - str += '; Secure'; - } - - if (opt.priority) { - var priority = typeof opt.priority === 'string' - ? opt.priority.toLowerCase() - : opt.priority; - - switch (priority) { - case 'low': - str += '; Priority=Low'; - break - case 'medium': - str += '; Priority=Medium'; - break - case 'high': - str += '; Priority=High'; - break - default: - throw new TypeError('option priority is invalid') - } - } - - if (opt.sameSite) { - var sameSite = typeof opt.sameSite === 'string' - ? opt.sameSite.toLowerCase() : opt.sameSite; - - switch (sameSite) { - case true: - str += '; SameSite=Strict'; - break; - case 'lax': - str += '; SameSite=Lax'; - break; - case 'strict': - str += '; SameSite=Strict'; - break; - case 'none': - str += '; SameSite=None'; - break; - default: - throw new TypeError('option sameSite is invalid'); - } - } - - return str; -} - -/** - * URL-decode string value. Optimized to skip native call when no %. - * - * @param {string} str - * @returns {string} - */ - -function decode (str) { - return str.indexOf('%') !== -1 - ? decodeURIComponent(str) - : str -} - -/** - * URL-encode value. - * - * @param {string} str - * @returns {string} - */ - -function encode (val) { - return encodeURIComponent(val) -} - -/** - * Determine if value is a Date. - * - * @param {*} val - * @private - */ - -function isDate (val) { - return __toString.call(val) === '[object Date]' || - val instanceof Date -} - -/** - * Try decoding a string using a decoding function. - * - * @param {string} str - * @param {function} decode - * @private - */ - -function tryDecode(str, decode) { - try { - return decode(str); - } catch (e) { - return str; - } -} - -var setCookie = {exports: {}}; - -var defaultParseOptions = { - decodeValues: true, - map: false, - silent: false, -}; - -function isNonEmptyString(str) { - return typeof str === "string" && !!str.trim(); -} - -function parseString(setCookieValue, options) { - var parts = setCookieValue.split(";").filter(isNonEmptyString); - var nameValue = parts.shift().split("="); - var name = nameValue.shift(); - var value = nameValue.join("="); // everything after the first =, joined by a "=" if there was more than one part - - options = options - ? Object.assign({}, defaultParseOptions, options) - : defaultParseOptions; - - try { - value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value - } catch (e) { - console.error( - "set-cookie-parser encountered an error while decoding a cookie with value '" + - value + - "'. Set options.decodeValues to false to disable this feature.", - e - ); - } - - var cookie = { - name: name, // grab everything before the first = - value: value, - }; - - parts.forEach(function (part) { - var sides = part.split("="); - var key = sides.shift().trimLeft().toLowerCase(); - var value = sides.join("="); - if (key === "expires") { - cookie.expires = new Date(value); - } else if (key === "max-age") { - cookie.maxAge = parseInt(value, 10); - } else if (key === "secure") { - cookie.secure = true; - } else if (key === "httponly") { - cookie.httpOnly = true; - } else if (key === "samesite") { - cookie.sameSite = value; - } else { - cookie[key] = value; - } - }); - - return cookie; -} - -function parse(input, options) { - options = options - ? Object.assign({}, defaultParseOptions, options) - : defaultParseOptions; - - if (!input) { - if (!options.map) { - return []; - } else { - return {}; - } - } - - if (input.headers && input.headers["set-cookie"]) { - // fast-path for node.js (which automatically normalizes header names to lower-case - input = input.headers["set-cookie"]; - } else if (input.headers) { - // slow-path for other environments - see #25 - var sch = - input.headers[ - Object.keys(input.headers).find(function (key) { - return key.toLowerCase() === "set-cookie"; - }) - ]; - // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36 - if (!sch && input.headers.cookie && !options.silent) { - console.warn( - "Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning." - ); - } - input = sch; - } - if (!Array.isArray(input)) { - input = [input]; - } - - options = options - ? Object.assign({}, defaultParseOptions, options) - : defaultParseOptions; - - if (!options.map) { - return input.filter(isNonEmptyString).map(function (str) { - return parseString(str, options); - }); - } else { - var cookies = {}; - return input.filter(isNonEmptyString).reduce(function (cookies, str) { - var cookie = parseString(str, options); - cookies[cookie.name] = cookie; - return cookies; - }, cookies); - } -} - -/* - Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas - that are within a single set-cookie field-value, such as in the Expires portion. - - This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2 - Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128 - React Native's fetch does this for *every* header, including set-cookie. - - Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25 - Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation -*/ -function splitCookiesString(cookiesString) { - if (Array.isArray(cookiesString)) { - return cookiesString; - } - if (typeof cookiesString !== "string") { - return []; - } - - var cookiesStrings = []; - var pos = 0; - var start; - var ch; - var lastComma; - var nextStart; - var cookiesSeparatorFound; - - function skipWhitespace() { - while (pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))) { - pos += 1; - } - return pos < cookiesString.length; - } - - function notSpecialChar() { - ch = cookiesString.charAt(pos); - - return ch !== "=" && ch !== ";" && ch !== ","; - } - - while (pos < cookiesString.length) { - start = pos; - cookiesSeparatorFound = false; - - while (skipWhitespace()) { - ch = cookiesString.charAt(pos); - if (ch === ",") { - // ',' is a cookie separator if we have later first '=', not ';' or ',' - lastComma = pos; - pos += 1; - - skipWhitespace(); - nextStart = pos; - - while (pos < cookiesString.length && notSpecialChar()) { - pos += 1; - } - - // currently special character - if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") { - // we found cookies separator - cookiesSeparatorFound = true; - // pos is inside the next cookie, so back up and return it. - pos = nextStart; - cookiesStrings.push(cookiesString.substring(start, lastComma)); - start = pos; - } else { - // in param ',' or param separator ';', - // we continue from that comma - pos = lastComma + 1; - } - } else { - pos += 1; - } - } - - if (!cookiesSeparatorFound || pos >= cookiesString.length) { - cookiesStrings.push(cookiesString.substring(start, cookiesString.length)); - } - } - - return cookiesStrings; -} - -setCookie.exports = parse; -setCookie.exports.parse = parse; -var parseString_1 = setCookie.exports.parseString = parseString; -var splitCookiesString_1 = setCookie.exports.splitCookiesString = splitCookiesString; - -/** - * @param {import('types').LoadOutput} loaded - * @returns {import('types').NormalizedLoadOutput} - */ -function normalize(loaded) { - // TODO remove for 1.0 - // @ts-expect-error - if (loaded.fallthrough) { - throw new Error( - 'fallthrough is no longer supported. Use matchers instead: https://kit.svelte.dev/docs/routing#advanced-routing-matching' - ); - } - - // TODO remove for 1.0 - if ('maxage' in loaded) { - throw new Error('maxage should be replaced with cache: { maxage }'); - } - - const has_error_status = - loaded.status && loaded.status >= 400 && loaded.status <= 599 && !loaded.redirect; - if (loaded.error || has_error_status) { - const status = loaded.status; - - if (!loaded.error && has_error_status) { - return { status: status || 500, error: new Error() }; - } - - const error = typeof loaded.error === 'string' ? new Error(loaded.error) : loaded.error; - - if (!(error instanceof Error)) { - return { - status: 500, - error: new Error( - `"error" property returned from load() must be a string or instance of Error, received type "${typeof error}"` - ) - }; - } - - if (!status || status < 400 || status > 599) { - console.warn('"error" returned from load() without a valid status code — defaulting to 500'); - return { status: 500, error }; - } - - return { status, error }; - } - - if (loaded.redirect) { - if (!loaded.status || Math.floor(loaded.status / 100) !== 3) { - return { - status: 500, - error: new Error( - '"redirect" property returned from load() must be accompanied by a 3xx status code' - ) - }; - } - - if (typeof loaded.redirect !== 'string') { - return { - status: 500, - error: new Error('"redirect" property returned from load() must be a string') - }; - } - } - - if (loaded.dependencies) { - if ( - !Array.isArray(loaded.dependencies) || - loaded.dependencies.some((dep) => typeof dep !== 'string') - ) { - return { - status: 500, - error: new Error('"dependencies" property returned from load() must be of type string[]') - }; - } - } - - // TODO remove before 1.0 - if (/** @type {any} */ (loaded).context) { - throw new Error( - 'You are returning "context" from a load function. ' + - '"context" was renamed to "stuff", please adjust your code accordingly.' - ); - } - - return /** @type {import('types').NormalizedLoadOutput} */ (loaded); -} - -const absolute = /^([a-z]+:)?\/?\//; -const scheme = /^[a-z]+:/; - -/** - * @param {string} base - * @param {string} path - */ -function resolve(base, path) { - if (scheme.test(path)) return path; - - const base_match = absolute.exec(base); - const path_match = absolute.exec(path); - - if (!base_match) { - throw new Error(`bad base path: "${base}"`); - } - - const baseparts = path_match ? [] : base.slice(base_match[0].length).split('/'); - const pathparts = path_match ? path.slice(path_match[0].length).split('/') : path.split('/'); - - baseparts.pop(); - - for (let i = 0; i < pathparts.length; i += 1) { - const part = pathparts[i]; - if (part === '.') continue; - else if (part === '..') baseparts.pop(); - else baseparts.push(part); - } - - const prefix = (path_match && path_match[0]) || (base_match && base_match[0]) || ''; - - return `${prefix}${baseparts.join('/')}`; -} - -/** @param {string} path */ -function is_root_relative(path) { - return path[0] === '/' && path[1] !== '/'; -} - -/** - * @param {string} path - * @param {import('types').TrailingSlash} trailing_slash - */ -function normalize_path(path, trailing_slash) { - if (path === '/' || trailing_slash === 'ignore') return path; - - if (trailing_slash === 'never') { - return path.endsWith('/') ? path.slice(0, -1) : path; - } else if (trailing_slash === 'always' && !path.endsWith('/')) { - return path + '/'; - } - - return path; -} - -/** - * @param {string} hostname - * @param {string} [constraint] - */ -function domain_matches(hostname, constraint) { - if (!constraint) return true; - - const normalized = constraint[0] === '.' ? constraint.slice(1) : constraint; - - if (hostname === normalized) return true; - return hostname.endsWith('.' + normalized); -} - -/** - * @param {string} path - * @param {string} [constraint] - */ -function path_matches(path, constraint) { - if (!constraint) return true; - - const normalized = constraint.endsWith('/') ? constraint.slice(0, -1) : constraint; - - if (path === normalized) return true; - return path.startsWith(normalized + '/'); -} - -/** - * @param {{ - * event: import('types').RequestEvent; - * options: import('types').SSROptions; - * state: import('types').SSRState; - * route: import('types').SSRPage | null; - * node: import('types').SSRNode; - * $session: any; - * stuff: Record; - * is_error: boolean; - * is_leaf: boolean; - * status?: number; - * error?: Error; - * }} opts - * @returns {Promise} - */ -async function load_node({ - event, - options, - state, - route, - node, - $session, - stuff, - is_error, - is_leaf, - status, - error -}) { - const { module } = node; - - let uses_credentials = false; - - /** @type {Array} */ - const fetched = []; - - const cookies = parse_1(event.request.headers.get('cookie') || ''); - - /** @type {import('set-cookie-parser').Cookie[]} */ - const new_cookies = []; - - /** @type {import('types').LoadOutput} */ - let loaded; - - /** @type {import('types').ShadowData} */ - const shadow = is_leaf - ? await load_shadow_data( - /** @type {import('types').SSRPage} */ (route), - event, - options, - !!state.prerender - ) - : {}; - - if (shadow.cookies) { - shadow.cookies.forEach((header) => { - new_cookies.push(parseString_1(header)); - }); - } - - if (shadow.error) { - loaded = { - status: shadow.status, - error: shadow.error - }; - } else if (shadow.redirect) { - loaded = { - status: shadow.status, - redirect: shadow.redirect - }; - } else if (module.load) { - /** @type {import('types').LoadInput} */ - const load_input = { - url: state.prerender ? create_prerendering_url_proxy(event.url) : event.url, - params: event.params, - props: shadow.body || {}, - routeId: event.routeId, - get session() { - uses_credentials = true; - return $session; - }, - /** - * @param {RequestInfo} resource - * @param {RequestInit} opts - */ - fetch: async (resource, opts = {}) => { - /** @type {string} */ - let requested; - - if (typeof resource === 'string') { - requested = resource; - } else { - requested = resource.url; - - opts = { - method: resource.method, - headers: resource.headers, - body: resource.body, - mode: resource.mode, - credentials: resource.credentials, - cache: resource.cache, - redirect: resource.redirect, - referrer: resource.referrer, - integrity: resource.integrity, - ...opts - }; - } - - opts.headers = new Headers(opts.headers); - - // merge headers from request - for (const [key, value] of event.request.headers) { - if ( - key !== 'authorization' && - key !== 'cookie' && - key !== 'host' && - key !== 'if-none-match' && - !opts.headers.has(key) - ) { - opts.headers.set(key, value); - } - } - - const resolved = resolve(event.url.pathname, requested.split('?')[0]); - - /** @type {Response} */ - let response; - - /** @type {import('types').PrerenderDependency} */ - let dependency; - - // handle fetch requests for static assets. e.g. prebaked data, etc. - // we need to support everything the browser's fetch supports - const prefix = options.paths.assets || options.paths.base; - const filename = decodeURIComponent( - resolved.startsWith(prefix) ? resolved.slice(prefix.length) : resolved - ).slice(1); - const filename_html = `${filename}/index.html`; // path may also match path/index.html - - const is_asset = options.manifest.assets.has(filename); - const is_asset_html = options.manifest.assets.has(filename_html); - - if (is_asset || is_asset_html) { - const file = is_asset ? filename : filename_html; - - if (options.read) { - const type = is_asset - ? options.manifest.mimeTypes[filename.slice(filename.lastIndexOf('.'))] - : 'text/html'; - - response = new Response(options.read(file), { - headers: type ? { 'content-type': type } : {} - }); - } else { - response = await fetch( - `${event.url.origin}/${file}`, - /** @type {RequestInit} */ (opts) - ); - } - } else if (is_root_relative(resolved)) { - if (opts.credentials !== 'omit') { - uses_credentials = true; - - const authorization = event.request.headers.get('authorization'); - - // combine cookies from the initiating request with any that were - // added via set-cookie - const combined_cookies = { ...cookies }; - - for (const cookie of new_cookies) { - if (!domain_matches(event.url.hostname, cookie.domain)) continue; - if (!path_matches(resolved, cookie.path)) continue; - - combined_cookies[cookie.name] = cookie.value; - } - - const cookie = Object.entries(combined_cookies) - .map(([name, value]) => `${name}=${value}`) - .join('; '); - - if (cookie) { - opts.headers.set('cookie', cookie); - } - - if (authorization && !opts.headers.has('authorization')) { - opts.headers.set('authorization', authorization); - } - } - - if (opts.body && typeof opts.body !== 'string') { - // per https://developer.mozilla.org/en-US/docs/Web/API/Request/Request, this can be a - // Blob, BufferSource, FormData, URLSearchParams, USVString, or ReadableStream object. - // non-string bodies are irksome to deal with, but luckily aren't particularly useful - // in this context anyway, so we take the easy route and ban them - throw new Error('Request body must be a string'); - } - - response = await respond( - // we set `credentials` to `undefined` to workaround a bug in Cloudflare - // (https://github.com/sveltejs/kit/issues/3728) — which is fine, because - // we only need the headers - new Request(new URL(requested, event.url).href, { ...opts, credentials: undefined }), - options, - { - ...state, - initiator: route - } - ); - - if (state.prerender) { - dependency = { response, body: null }; - state.prerender.dependencies.set(resolved, dependency); - } - } else { - // external - if (resolved.startsWith('//')) { - requested = event.url.protocol + requested; - } - - // external fetch - // allow cookie passthrough for "same-origin" - // if SvelteKit is serving my.domain.com: - // - domain.com WILL NOT receive cookies - // - my.domain.com WILL receive cookies - // - api.domain.dom WILL NOT receive cookies - // - sub.my.domain.com WILL receive cookies - // ports do not affect the resolution - // leading dot prevents mydomain.com matching domain.com - if ( - `.${new URL(requested).hostname}`.endsWith(`.${event.url.hostname}`) && - opts.credentials !== 'omit' - ) { - uses_credentials = true; - - const cookie = event.request.headers.get('cookie'); - if (cookie) opts.headers.set('cookie', cookie); - } - - const external_request = new Request(requested, /** @type {RequestInit} */ (opts)); - response = await options.hooks.externalFetch.call(null, external_request); - } - - const set_cookie = response.headers.get('set-cookie'); - if (set_cookie) { - new_cookies.push( - ...splitCookiesString_1(set_cookie) - .map((str) => parseString_1(str)) - ); - } - - const proxy = new Proxy(response, { - get(response, key, _receiver) { - async function text() { - const body = await response.text(); - - /** @type {import('types').ResponseHeaders} */ - const headers = {}; - for (const [key, value] of response.headers) { - // TODO skip others besides set-cookie and etag? - if (key !== 'set-cookie' && key !== 'etag') { - headers[key] = value; - } - } - - if (!opts.body || typeof opts.body === 'string') { - const status_number = Number(response.status); - if (isNaN(status_number)) { - throw new Error( - `response.status is not a number. value: "${ - response.status - }" type: ${typeof response.status}` - ); - } - - fetched.push({ - url: requested, - body: opts.body, - response: { - status: status_number, - statusText: response.statusText, - headers, - body - } - }); - } - - if (dependency) { - dependency.body = body; - } - - return body; - } - - if (key === 'arrayBuffer') { - return async () => { - const buffer = await response.arrayBuffer(); - - if (dependency) { - dependency.body = new Uint8Array(buffer); - } - - // TODO should buffer be inlined into the page (albeit base64'd)? - // any conditions in which it shouldn't be? - - return buffer; - }; - } - - if (key === 'text') { - return text; - } - - if (key === 'json') { - return async () => { - return JSON.parse(await text()); - }; - } - - // TODO arrayBuffer? - - return Reflect.get(response, key, response); - } - }); - - return proxy; - }, - stuff: { ...stuff }, - status: is_error ? status ?? null : null, - error: is_error ? error ?? null : null - }; - - if (options.dev) { - // TODO remove this for 1.0 - Object.defineProperty(load_input, 'page', { - get: () => { - throw new Error('`page` in `load` functions has been replaced by `url` and `params`'); - } - }); - } - - loaded = await module.load.call(null, load_input); - - if (!loaded) { - // TODO do we still want to enforce this now that there's no fallthrough? - throw new Error(`load function must return a value${options.dev ? ` (${node.entry})` : ''}`); - } - } else if (shadow.body) { - loaded = { - props: shadow.body - }; - } else { - loaded = {}; - } - - // generate __data.json files when prerendering - if (shadow.body && state.prerender) { - const pathname = `${event.url.pathname.replace(/\/$/, '')}/__data.json`; - - const dependency = { - response: new Response(undefined), - body: JSON.stringify(shadow.body) - }; - - state.prerender.dependencies.set(pathname, dependency); - } - - return { - node, - props: shadow.body, - loaded: normalize(loaded), - stuff: loaded.stuff || stuff, - fetched, - set_cookie_headers: new_cookies.map((new_cookie) => { - const { name, value, ...options } = new_cookie; - // @ts-expect-error - return serialize_1(name, value, options); - }), - uses_credentials - }; -} - -/** - * - * @param {import('types').SSRPage} route - * @param {import('types').RequestEvent} event - * @param {import('types').SSROptions} options - * @param {boolean} prerender - * @returns {Promise} - */ -async function load_shadow_data(route, event, options, prerender) { - if (!route.shadow) return {}; - - try { - const mod = await route.shadow(); - - if (prerender && (mod.post || mod.put || mod.del || mod.patch)) { - throw new Error('Cannot prerender pages that have endpoints with mutative methods'); - } - - const method = normalize_request_method(event); - const is_get = method === 'head' || method === 'get'; - const handler = method === 'head' ? mod.head || mod.get : mod[method]; - - if (!handler && !is_get) { - return { - status: 405, - error: new Error(`${method} method not allowed`) - }; - } - - /** @type {import('types').ShadowData} */ - const data = { - status: 200, - cookies: [], - body: {} - }; - - if (!is_get) { - const result = await handler(event); - - // TODO remove for 1.0 - // @ts-expect-error - if (result.fallthrough) { - throw new Error( - 'fallthrough is no longer supported. Use matchers instead: https://kit.svelte.dev/docs/routing#advanced-routing-matching' - ); - } - - const { status, headers, body } = validate_shadow_output(result); - data.status = status; - - add_cookies(/** @type {string[]} */ (data.cookies), headers); - - // Redirects are respected... - if (status >= 300 && status < 400) { - data.redirect = /** @type {string} */ ( - headers instanceof Headers ? headers.get('location') : headers.location - ); - return data; - } - - // ...but 4xx and 5xx status codes _don't_ result in the error page - // rendering for non-GET requests — instead, we allow the page - // to render with any validation errors etc that were returned - data.body = body; - } - - const get = (method === 'head' && mod.head) || mod.get; - if (get) { - const result = await get(event); - - // TODO remove for 1.0 - // @ts-expect-error - if (result.fallthrough) { - throw new Error( - 'fallthrough is no longer supported. Use matchers instead: https://kit.svelte.dev/docs/routing#advanced-routing-matching' - ); - } - - const { status, headers, body } = validate_shadow_output(result); - add_cookies(/** @type {string[]} */ (data.cookies), headers); - data.status = status; - - if (status >= 400) { - data.error = new Error('Failed to load data'); - return data; - } - - if (status >= 300) { - data.redirect = /** @type {string} */ ( - headers instanceof Headers ? headers.get('location') : headers.location - ); - return data; - } - - data.body = { ...body, ...data.body }; - } - - return data; - } catch (e) { - const error = coalesce_to_error(e); - options.handle_error(error, event); - - return { - status: 500, - error - }; - } -} - -/** - * @param {string[]} target - * @param {Partial} headers - */ -function add_cookies(target, headers) { - const cookies = headers['set-cookie']; - if (cookies) { - if (Array.isArray(cookies)) { - target.push(...cookies); - } else { - target.push(/** @type {string} */ (cookies)); - } - } -} - -/** - * @param {import('types').ShadowEndpointOutput} result - */ -function validate_shadow_output(result) { - const { status = 200, body = {} } = result; - let headers = result.headers || {}; - - if (headers instanceof Headers) { - if (headers.has('set-cookie')) { - throw new Error( - 'Endpoint request handler cannot use Headers interface with Set-Cookie headers' - ); - } - } else { - headers = lowercase_keys(/** @type {Record} */ (headers)); - } - - if (!is_pojo(body)) { - throw new Error('Body returned from endpoint request handler must be a plain object'); - } - - return { status, headers, body }; -} - -/** - * @typedef {import('./types.js').Loaded} Loaded - * @typedef {import('types').SSROptions} SSROptions - * @typedef {import('types').SSRState} SSRState - */ - -/** - * @param {{ - * event: import('types').RequestEvent; - * options: SSROptions; - * state: SSRState; - * $session: any; - * status: number; - * error: Error; - * resolve_opts: import('types').RequiredResolveOptions; - * }} opts - */ -async function respond_with_error({ - event, - options, - state, - $session, - status, - error, - resolve_opts -}) { - try { - const branch = []; - let stuff = {}; - - if (resolve_opts.ssr) { - const default_layout = await options.manifest._.nodes[0](); // 0 is always the root layout - const default_error = await options.manifest._.nodes[1](); // 1 is always the root error - - const layout_loaded = /** @type {Loaded} */ ( - await load_node({ - event, - options, - state, - route: null, - node: default_layout, - $session, - stuff: {}, - is_error: false, - is_leaf: false - }) - ); - - const error_loaded = /** @type {Loaded} */ ( - await load_node({ - event, - options, - state, - route: null, - node: default_error, - $session, - stuff: layout_loaded ? layout_loaded.stuff : {}, - is_error: true, - is_leaf: false, - status, - error - }) - ); - - branch.push(layout_loaded, error_loaded); - stuff = error_loaded.stuff; - } - - return await render_response({ - options, - state, - $session, - page_config: { - hydrate: options.hydrate, - router: options.router - }, - stuff, - status, - error, - branch, - event, - resolve_opts - }); - } catch (err) { - const error = coalesce_to_error(err); - - options.handle_error(error, event); - - return new Response(error.stack, { - status: 500 - }); - } -} - -/** - * @typedef {import('./types.js').Loaded} Loaded - * @typedef {import('types').SSRNode} SSRNode - * @typedef {import('types').SSROptions} SSROptions - * @typedef {import('types').SSRState} SSRState - */ - -/** - * @param {{ - * event: import('types').RequestEvent; - * options: SSROptions; - * state: SSRState; - * $session: any; - * resolve_opts: import('types').RequiredResolveOptions; - * route: import('types').SSRPage; - * }} opts - * @returns {Promise} - */ -async function respond$1(opts) { - const { event, options, state, $session, route, resolve_opts } = opts; - - /** @type {Array} */ - let nodes; - - if (!resolve_opts.ssr) { - return await render_response({ - ...opts, - branch: [], - page_config: { - hydrate: true, - router: true - }, - status: 200, - error: null, - event, - stuff: {} - }); - } - - try { - nodes = await Promise.all( - // we use == here rather than === because [undefined] serializes as "[null]" - route.a.map((n) => (n == undefined ? n : options.manifest._.nodes[n]())) - ); - } catch (err) { - const error = coalesce_to_error(err); - - options.handle_error(error, event); - - return await respond_with_error({ - event, - options, - state, - $session, - status: 500, - error, - resolve_opts - }); - } - - // the leaf node will be present. only layouts may be undefined - const leaf = /** @type {SSRNode} */ (nodes[nodes.length - 1]).module; - - let page_config = get_page_config(leaf, options); - - if (state.prerender) { - // if the page isn't marked as prerenderable (or is explicitly - // marked NOT prerenderable, if `prerender.default` is `true`), - // then bail out at this point - const should_prerender = leaf.prerender ?? state.prerender.default; - if (!should_prerender) { - return new Response(undefined, { - status: 204 - }); - } - } - - /** @type {Array} */ - let branch = []; - - /** @type {number} */ - let status = 200; - - /** @type {Error | null} */ - let error = null; - - /** @type {string[]} */ - let set_cookie_headers = []; - - let stuff = {}; - - ssr: { - for (let i = 0; i < nodes.length; i += 1) { - const node = nodes[i]; - - /** @type {Loaded | undefined} */ - let loaded; - - if (node) { - try { - loaded = await load_node({ - ...opts, - node, - stuff, - is_error: false, - is_leaf: i === nodes.length - 1 - }); - - set_cookie_headers = set_cookie_headers.concat(loaded.set_cookie_headers); - - if (loaded.loaded.redirect) { - return with_cookies( - new Response(undefined, { - status: loaded.loaded.status, - headers: { - location: loaded.loaded.redirect - } - }), - set_cookie_headers - ); - } - - if (loaded.loaded.error) { - ({ status, error } = loaded.loaded); - } - } catch (err) { - const e = coalesce_to_error(err); - - options.handle_error(e, event); - - status = 500; - error = e; - } - - if (loaded && !error) { - branch.push(loaded); - } - - if (error) { - while (i--) { - if (route.b[i]) { - const index = /** @type {number} */ (route.b[i]); - const error_node = await options.manifest._.nodes[index](); - - /** @type {Loaded} */ - let node_loaded; - let j = i; - while (!(node_loaded = branch[j])) { - j -= 1; - } - - try { - const error_loaded = /** @type {import('./types').Loaded} */ ( - await load_node({ - ...opts, - node: error_node, - stuff: node_loaded.stuff, - is_error: true, - is_leaf: false, - status, - error - }) - ); - - if (error_loaded.loaded.error) { - continue; - } - - page_config = get_page_config(error_node.module, options); - branch = branch.slice(0, j + 1).concat(error_loaded); - stuff = { ...node_loaded.stuff, ...error_loaded.stuff }; - break ssr; - } catch (err) { - const e = coalesce_to_error(err); - - options.handle_error(e, event); - - continue; - } - } - } - - // TODO backtrack until we find an __error.svelte component - // that we can use as the leaf node - // for now just return regular error page - return with_cookies( - await respond_with_error({ - event, - options, - state, - $session, - status, - error, - resolve_opts - }), - set_cookie_headers - ); - } - } - - if (loaded && loaded.loaded.stuff) { - stuff = { - ...stuff, - ...loaded.loaded.stuff - }; - } - } - } - - try { - return with_cookies( - await render_response({ - ...opts, - stuff, - event, - page_config, - status, - error, - branch: branch.filter(Boolean) - }), - set_cookie_headers - ); - } catch (err) { - const error = coalesce_to_error(err); - - options.handle_error(error, event); - - return with_cookies( - await respond_with_error({ - ...opts, - status: 500, - error - }), - set_cookie_headers - ); - } -} - -/** - * @param {import('types').SSRComponent} leaf - * @param {SSROptions} options - */ -function get_page_config(leaf, options) { - // TODO remove for 1.0 - if ('ssr' in leaf) { - throw new Error( - '`export const ssr` has been removed — use the handle hook instead: https://kit.svelte.dev/docs/hooks#handle' - ); - } - - return { - router: 'router' in leaf ? !!leaf.router : options.router, - hydrate: 'hydrate' in leaf ? !!leaf.hydrate : options.hydrate - }; -} - -/** - * @param {Response} response - * @param {string[]} set_cookie_headers - */ -function with_cookies(response, set_cookie_headers) { - if (set_cookie_headers.length) { - set_cookie_headers.forEach((value) => { - response.headers.append('set-cookie', value); - }); - } - return response; -} - -/** - * @param {import('types').RequestEvent} event - * @param {import('types').SSRPage} route - * @param {import('types').SSROptions} options - * @param {import('types').SSRState} state - * @param {import('types').RequiredResolveOptions} resolve_opts - * @returns {Promise} - */ -async function render_page(event, route, options, state, resolve_opts) { - if (state.initiator === route) { - // infinite request cycle detected - return new Response(`Not found: ${event.url.pathname}`, { - status: 404 - }); - } - - if (route.shadow) { - const type = negotiate(event.request.headers.get('accept') || 'text/html', [ - 'text/html', - 'application/json' - ]); - - if (type === 'application/json') { - return render_endpoint(event, await route.shadow()); - } - } - - const $session = await options.hooks.getSession(event); - - return respond$1({ - event, - options, - state, - $session, - resolve_opts, - route - }); -} - -/** - * @param {string} accept - * @param {string[]} types - */ -function negotiate(accept, types) { - const parts = accept - .split(',') - .map((str, i) => { - const match = /([^/]+)\/([^;]+)(?:;q=([0-9.]+))?/.exec(str); - if (match) { - const [, type, subtype, q = '1'] = match; - return { type, subtype, q: +q, i }; - } - - throw new Error(`Invalid Accept header: ${accept}`); - }) - .sort((a, b) => { - if (a.q !== b.q) { - return b.q - a.q; - } - - if ((a.subtype === '*') !== (b.subtype === '*')) { - return a.subtype === '*' ? 1 : -1; - } - - if ((a.type === '*') !== (b.type === '*')) { - return a.type === '*' ? 1 : -1; - } - - return a.i - b.i; - }); - - let accepted; - let min_priority = Infinity; - - for (const mimetype of types) { - const [type, subtype] = mimetype.split('/'); - const priority = parts.findIndex( - (part) => - (part.type === type || part.type === '*') && - (part.subtype === subtype || part.subtype === '*') - ); - - if (priority !== -1 && priority < min_priority) { - accepted = mimetype; - min_priority = priority; - } - } - - return accepted; -} - -/** - * @param {RegExpMatchArray} match - * @param {string[]} names - * @param {string[]} types - * @param {Record} matchers - */ -function exec(match, names, types, matchers) { - /** @type {Record} */ - const params = {}; - - for (let i = 0; i < names.length; i += 1) { - const name = names[i]; - const type = types[i]; - const value = match[i + 1] || ''; - - if (type) { - const matcher = matchers[type]; - if (!matcher) throw new Error(`Missing "${type}" param matcher`); // TODO do this ahead of time? - - if (!matcher(value)) return; - } - - params[name] = value; - } - - return params; -} - -const DATA_SUFFIX = '/__data.json'; - -/** @param {{ html: string }} opts */ -const default_transform = ({ html }) => html; - -/** @type {import('types').Respond} */ -async function respond(request, options, state) { - let url = new URL(request.url); - - const { parameter, allowed } = options.method_override; - const method_override = url.searchParams.get(parameter)?.toUpperCase(); - - if (method_override) { - if (request.method === 'POST') { - if (allowed.includes(method_override)) { - request = new Proxy(request, { - get: (target, property, _receiver) => { - if (property === 'method') return method_override; - return Reflect.get(target, property, target); - } - }); - } else { - const verb = allowed.length === 0 ? 'enabled' : 'allowed'; - const body = `${parameter}=${method_override} is not ${verb}. See https://kit.svelte.dev/docs/configuration#methodoverride`; - - return new Response(body, { - status: 400 - }); - } - } else { - throw new Error(`${parameter}=${method_override} is only allowed with POST requests`); - } - } - - let decoded = decodeURI(url.pathname); - - /** @type {import('types').SSRRoute | null} */ - let route = null; - - /** @type {Record} */ - let params = {}; - - if (options.paths.base && !state.prerender?.fallback) { - if (!decoded.startsWith(options.paths.base)) { - return new Response(undefined, { status: 404 }); - } - decoded = decoded.slice(options.paths.base.length) || '/'; - } - - const is_data_request = decoded.endsWith(DATA_SUFFIX); - - if (is_data_request) { - decoded = decoded.slice(0, -DATA_SUFFIX.length) || '/'; - url = new URL(url.origin + url.pathname.slice(0, -DATA_SUFFIX.length) + url.search); - } - - if (!state.prerender || !state.prerender.fallback) { - const matchers = await options.manifest._.matchers(); - - for (const candidate of options.manifest._.routes) { - const match = candidate.pattern.exec(decoded); - if (!match) continue; - - const matched = exec(match, candidate.names, candidate.types, matchers); - if (matched) { - route = candidate; - params = decode_params(matched); - break; - } - } - } - - if (route?.type === 'page') { - const normalized = normalize_path(url.pathname, options.trailing_slash); - - if (normalized !== url.pathname && !state.prerender?.fallback) { - return new Response(undefined, { - status: 301, - headers: { - 'x-sveltekit-normalize': '1', - location: - // ensure paths starting with '//' are not treated as protocol-relative - (normalized.startsWith('//') ? url.origin + normalized : normalized) + - (url.search === '?' ? '' : url.search) - } - }); - } - } - - /** @type {import('types').RequestEvent} */ - const event = { - get clientAddress() { - if (!state.getClientAddress) { - throw new Error( - `${ - import.meta.env.VITE_SVELTEKIT_ADAPTER_NAME - } does not specify getClientAddress. Please raise an issue` - ); - } - - Object.defineProperty(event, 'clientAddress', { - value: state.getClientAddress() - }); - - return event.clientAddress; - }, - locals: {}, - params, - platform: state.platform, - request, - routeId: route && route.id, - url - }; - - // TODO remove this for 1.0 - /** - * @param {string} property - * @param {string} replacement - * @param {string} suffix - */ - const removed = (property, replacement, suffix = '') => ({ - get: () => { - throw new Error(`event.${property} has been replaced by event.${replacement}` + suffix); - } - }); - - const details = '. See https://github.com/sveltejs/kit/pull/3384 for details'; - - const body_getter = { - get: () => { - throw new Error( - 'To access the request body use the text/json/arrayBuffer/formData methods, e.g. `body = await request.json()`' + - details - ); - } - }; - - Object.defineProperties(event, { - method: removed('method', 'request.method', details), - headers: removed('headers', 'request.headers', details), - origin: removed('origin', 'url.origin'), - path: removed('path', 'url.pathname'), - query: removed('query', 'url.searchParams'), - body: body_getter, - rawBody: body_getter - }); - - /** @type {import('types').RequiredResolveOptions} */ - let resolve_opts = { - ssr: true, - transformPage: default_transform - }; - - // TODO match route before calling handle? - - try { - const response = await options.hooks.handle({ - event, - resolve: async (event, opts) => { - if (opts) { - resolve_opts = { - ssr: opts.ssr !== false, - transformPage: opts.transformPage || default_transform - }; - } - - if (state.prerender && state.prerender.fallback) { - return await render_response({ - event, - options, - state, - $session: await options.hooks.getSession(event), - page_config: { router: true, hydrate: true }, - stuff: {}, - status: 200, - error: null, - branch: [], - resolve_opts: { - ...resolve_opts, - ssr: false - } - }); - } - - if (route) { - /** @type {Response} */ - let response; - - if (is_data_request && route.type === 'page' && route.shadow) { - response = await render_endpoint(event, await route.shadow()); - - // loading data for a client-side transition is a special case - if (request.headers.has('x-sveltekit-load')) { - // since redirects are opaque to the browser, we need to repackage - // 3xx responses as 200s with a custom header - if (response.status >= 300 && response.status < 400) { - const location = response.headers.get('location'); - - if (location) { - const headers = new Headers(response.headers); - headers.set('x-sveltekit-location', location); - response = new Response(undefined, { - status: 204, - headers - }); - } - } - } - } else { - response = - route.type === 'endpoint' - ? await render_endpoint(event, await route.load()) - : await render_page(event, route, options, state, resolve_opts); - } - - if (response) { - // respond with 304 if etag matches - if (response.status === 200 && response.headers.has('etag')) { - let if_none_match_value = request.headers.get('if-none-match'); - - // ignore W/ prefix https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match#directives - if (if_none_match_value?.startsWith('W/"')) { - if_none_match_value = if_none_match_value.substring(2); - } - - const etag = /** @type {string} */ (response.headers.get('etag')); - - if (if_none_match_value === etag) { - const headers = new Headers({ etag }); - - // https://datatracker.ietf.org/doc/html/rfc7232#section-4.1 - for (const key of [ - 'cache-control', - 'content-location', - 'date', - 'expires', - 'vary' - ]) { - const value = response.headers.get(key); - if (value) headers.set(key, value); - } - - return new Response(undefined, { - status: 304, - headers - }); - } - } - - return response; - } - } - - // if this request came direct from the user, rather than - // via a `fetch` in a `load`, render a 404 page - if (!state.initiator) { - const $session = await options.hooks.getSession(event); - return await respond_with_error({ - event, - options, - state, - $session, - status: 404, - error: new Error(`Not found: ${event.url.pathname}`), - resolve_opts - }); - } - - if (state.prerender) { - return new Response('not found', { status: 404 }); - } - - // we can't load the endpoint from our own manifest, - // so we need to make an actual HTTP request - return await fetch(request); - }, - - // TODO remove for 1.0 - // @ts-expect-error - get request() { - throw new Error('request in handle has been replaced with event' + details); - } - }); - - // TODO for 1.0, change the error message to point to docs rather than PR - if (response && !(response instanceof Response)) { - throw new Error('handle must return a Response object' + details); - } - - return response; - } catch (/** @type {unknown} */ e) { - const error = coalesce_to_error(e); - - options.handle_error(error, event); - - try { - const $session = await options.hooks.getSession(event); - return await respond_with_error({ - event, - options, - state, - $session, - status: 500, - error, - resolve_opts - }); - } catch (/** @type {unknown} */ e) { - const error = coalesce_to_error(e); - - return new Response(options.dev ? error.stack : error.message, { - status: 500 - }); - } - } -} - -export { respond }; diff --git a/.svelte-kit/tsconfig.json b/.svelte-kit/tsconfig.json deleted file mode 100644 index c8dfa42c..00000000 --- a/.svelte-kit/tsconfig.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": "..", - "paths": { - "$lib": [ - "src/lib" - ], - "$lib/*": [ - "src/lib/*" - ] - }, - "rootDirs": [ - "..", - "./types" - ], - "importsNotUsedAsValues": "error", - "isolatedModules": true, - "preserveValueImports": true, - "lib": [ - "esnext", - "DOM" - ], - "moduleResolution": "node", - "module": "esnext", - "target": "esnext" - }, - "include": [ - "../src/**/*.js", - "../src/**/*.ts", - "../src/**/*.svelte" - ], - "exclude": [ - "../node_modules/**", - "./**" - ] -} \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/3MTOpeningCeremony.d.ts b/.svelte-kit/types/src/routes/3MTOpeningCeremony.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/3MTOpeningCeremony.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/__error.d.ts b/.svelte-kit/types/src/routes/__error.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/__error.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/__layout.d.ts b/.svelte-kit/types/src/routes/__layout.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/__layout.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/archive/AlgebraClasses.d.ts b/.svelte-kit/types/src/routes/archive/AlgebraClasses.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/archive/AlgebraClasses.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/archive/join.d.ts b/.svelte-kit/types/src/routes/archive/join.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/archive/join.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/classes/index.d.ts b/.svelte-kit/types/src/routes/classes/index.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/classes/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/classes/instructors.d.ts b/.svelte-kit/types/src/routes/classes/instructors.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/classes/instructors.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/classes/tutoring.d.ts b/.svelte-kit/types/src/routes/classes/tutoring.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/classes/tutoring.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/3mt-2023.d.ts b/.svelte-kit/types/src/routes/competitions/3mt-2023.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/3mt-2023.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/index.d.ts b/.svelte-kit/types/src/routes/competitions/index.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/mmt-2024.d.ts b/.svelte-kit/types/src/routes/competitions/mmt-2024.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/mmt-2024.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-CA.d.ts b/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-CA.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-CA.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-GA.d.ts b/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-GA.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-GA.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-IL.d.ts b/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-IL.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-IL.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-MA.d.ts b/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-MA.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-MA.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-WA.d.ts b/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-WA.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-WA.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-online.d.ts b/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-online.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/mmt-2024/mmt-2024-online.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/past/3mt-2022.d.ts b/.svelte-kit/types/src/routes/competitions/past/3mt-2022.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/past/3mt-2022.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/past/3mt-2023.d.ts b/.svelte-kit/types/src/routes/competitions/past/3mt-2023.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/past/3mt-2023.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/past/index.d.ts b/.svelte-kit/types/src/routes/competitions/past/index.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/past/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/past/mmt-2022.d.ts b/.svelte-kit/types/src/routes/competitions/past/mmt-2022.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/past/mmt-2022.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/past/mmt-2023.d.ts b/.svelte-kit/types/src/routes/competitions/past/mmt-2023.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/past/mmt-2023.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-CA.d.ts b/.svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-CA.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-CA.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-WA.d.ts b/.svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-WA.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-WA.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-online.d.ts b/.svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-online.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/competitions/past/mmt-2023/mmt-2023-online.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/donate.d.ts b/.svelte-kit/types/src/routes/donate.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/donate.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/index.d.ts b/.svelte-kit/types/src/routes/index.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/our-team.d.ts b/.svelte-kit/types/src/routes/our-team.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/our-team.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/redirect.d.ts b/.svelte-kit/types/src/routes/redirect.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/redirect.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/resources.d.ts b/.svelte-kit/types/src/routes/resources.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/resources.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/sponsors.d.ts b/.svelte-kit/types/src/routes/sponsors.d.ts deleted file mode 100644 index 16e375e0..00000000 --- a/.svelte-kit/types/src/routes/sponsors.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this file is auto-generated -import type { Load as GenericLoad } from '@sveltejs/kit'; - -export type Load< - InputProps extends Record = Record, - OutputProps extends Record = InputProps -> = GenericLoad<{}, InputProps, OutputProps>; \ No newline at end of file From a5ad2dbb9cdea45013ce6bdd652d77c06b6c7cc5 Mon Sep 17 00:00:00 2001 From: thehunter911 Date: Mon, 29 Apr 2024 22:35:37 -0400 Subject: [PATCH 2/5] rebuild deps; upgrade versioning; migrate from svelte to vite --- jsconfig.json | 26 +- package-lock.json | 4306 +++++++++++++++++++++++++++----------------- package.json | 25 +- postcss.config.js | 6 + svelte.config.js | 9 +- tailwind.config.js | 9 + vite.config.js | 6 + 7 files changed, 2755 insertions(+), 1632 deletions(-) create mode 100644 postcss.config.js create mode 100644 tailwind.config.js create mode 100644 vite.config.js diff --git a/jsconfig.json b/jsconfig.json index 6241d1ad..2473a65b 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,10 +1,20 @@ { - "compilerOptions": { - "baseUrl": ".", - "paths": { - "$lib": ["src/lib"], - "$lib/*": ["src/lib/*"] - } - }, + "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 + // except $lib which is handled by https://kit.svelte.dev/docs/configuration#files + // + // 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 "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] -} +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index bb961bbc..2709cf33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "sveltekit", "version": "0.0.1", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -10,6 +10,7 @@ "dependencies": { "@fontsource/fira-mono": "^4.5.0", "@lukeed/uuid": "^2.0.0", + "@supabase/supabase-js": "^2.42.5", "@vercel/analytics": "^1.2.2", "cookie": "^0.4.1", "svelte-hamburgers": "^4.0.1", @@ -19,1031 +20,1058 @@ "svelte-routing": "^2.12.0" }, "devDependencies": { - "@sveltejs/adapter-auto": "next", - "@sveltejs/kit": "next", + "@fontsource/fira-mono": "^4.5.10", + "@neoconfetti/svelte": "^1.0.0", + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "autoprefixer": "^10.4.19", "carbon-components-svelte": "^0.67.9", + "postcss": "^8.4.38", "prettier-plugin-svelte": "3.2.1", - "svelte": "^3.46.0" + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "tailwindcss": "^3.4.3", + "typescript": "^5.0.0", + "vite": "^5.0.3" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, "engines": { - "node": ">=6.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@fontsource/fira-mono": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@fontsource/fira-mono/-/fira-mono-4.5.8.tgz", - "integrity": "sha512-sFuSPB/Km8B1fy3CH0NqO5Nb4GmVMzp3XFaw6MwK293xhm3OnB68QJawwTTjLewcrS78wOTAhTUB058qxurJoQ==" - }, - "node_modules/@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node": ">=12" } }, - "node_modules/@lukeed/csprng": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.0.1.tgz", - "integrity": "sha512-uSvJdwQU5nK+Vdf6zxcWAY2A8r7uqe+gePwLWzJ+fsQehq18pc0I2hJKwypZ2aLM90+Er9u1xn4iLJPZ+xlL4g==", + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@lukeed/uuid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@lukeed/uuid/-/uuid-2.0.0.tgz", - "integrity": "sha512-dUz8OmYvlY5A9wXaroHIMSPASpSYRLCqbPvxGSyHguhtTQIy24lC+EGxQlwv71AhRCO55WOtgwhzQLpw27JaJQ==", - "dependencies": { - "@lukeed/csprng": "^1.0.0" - }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 8.0.0" + "node": ">=12" } }, - "node_modules/@sveltejs/adapter-auto": { - "version": "1.0.0-next.42", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.42.tgz", - "integrity": "sha512-AMTrR0A2Uss1FQkpYDV/7lYgQtRHyTrvwGCrll1lwZNPexb9MZGU4+x8csGKTNgf29Dg3lCEc9JBQti89rHZbw==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@sveltejs/adapter-cloudflare": "1.0.0-next.19", - "@sveltejs/adapter-netlify": "1.0.0-next.57", - "@sveltejs/adapter-vercel": "1.0.0-next.51" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@sveltejs/adapter-cloudflare": { - "version": "1.0.0-next.19", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.19.tgz", - "integrity": "sha512-LET3DUYpl+deoKhkWCzhHUT7iipYkgVkOcRIJX7qT4m23A+MAbzcAC3npgwEYSe9RokOSWMVBr3tVujeES5EeA==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "esbuild": "^0.14.21", - "worktop": "0.8.0-next.13" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@sveltejs/adapter-netlify": { - "version": "1.0.0-next.57", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.57.tgz", - "integrity": "sha512-rqvOr488+7NGkEHw/D6v1Y8Fg0MbiUP/YI1uSYjKy+tA8/4FOdBgU8Nk8daPTxWEU+CpsgzvA4X8IVonuML9SA==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@iarna/toml": "^2.2.5", - "esbuild": "^0.14.21", - "tiny-glob": "^0.2.9" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@sveltejs/adapter-vercel": { - "version": "1.0.0-next.51", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.51.tgz", - "integrity": "sha512-U4GSe1tYcWq90XCQfLK4qmEEVA1MyWgnT6i7LhbLVOoNP8bf3ict3xKjGrHcx/CY4jNUBA80DXSkj/hpFkweAg==", + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "esbuild": "^0.14.21" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.330", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.330.tgz", - "integrity": "sha512-Wb95D5tOF8BViZuikqzZLAcupdS7TpXtadNPgpEOxKowmkrW8xjRrrfVdPIkNOLqAP1V+gKInmQ/gFYmnv5EjA==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", - "chokidar": "^3.5.3", - "sade": "^1.7.4", - "vite": "^2.9.0" - }, - "bin": { - "svelte-kit": "svelte-kit.js" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.13" - }, - "peerDependencies": { - "svelte": "^3.44.0" + "node": ">=12" } }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "1.0.0-next.44", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.44.tgz", - "integrity": "sha512-n+sssEWbzykPS447FmnNyU5GxEhrBPDVd0lxNZnxRGz9P6651LjjwAnISKr3CKgT9v8IybP8VD0n2i5XzbqExg==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@rollup/pluginutils": "^4.2.1", - "debug": "^4.3.4", - "deepmerge": "^4.2.2", - "kleur": "^4.1.4", - "magic-string": "^0.26.1", - "svelte-hmr": "^0.14.11" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.13.1 || >= 16" - }, - "peerDependencies": { - "diff-match-patch": "^1.0.5", - "svelte": "^3.44.0", - "vite": "^2.9.0" - }, - "peerDependenciesMeta": { - "diff-match-patch": { - "optional": true - } - } - }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" - }, - "node_modules/@types/marked": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.8.tgz", - "integrity": "sha512-HVNzMT5QlWCOdeuBsgXP8EZzKUf0+AXzN+sLmjvaB3ZlLqO+e4u0uXrdw9ub69wBKFs+c6/pA4r9sy6cCDvImw==" - }, - "node_modules/@vercel/analytics": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.2.2.tgz", - "integrity": "sha512-X0rctVWkQV1e5Y300ehVNqpOfSOufo7ieA5PIdna8yX/U7Vjz0GFsGf4qvAhxV02uQ2CVt7GYcrFfddXXK2Y4A==", - "dependencies": { - "server-only": "^0.0.1" - }, - "peerDependencies": { - "next": ">= 13", - "react": "^18 || ^19" - }, - "peerDependenciesMeta": { - "next": { - "optional": true - }, - "react": { - "optional": true - } + "node": ">=12" } }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "bin": { - "acorn": "bin/acorn" - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.4.0" + "node": ">=12" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" - } - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dependencies": { - "dequal": "^2.0.3" + "node": ">=12" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/carbon-components-svelte": { - "version": "0.67.9", - "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.67.9.tgz", - "integrity": "sha512-QZd7oxWlBjWx3TbXZhke8voFAQtuoZeQoGx/RkCRbUqBbWsMAaGLn/umTP9+kpiHeMX8/7Hl/CTML+CkKOfE1g==", - "dev": true, - "dependencies": { - "flatpickr": "4.6.9" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/code-red": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", - "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15", - "@types/estree": "^1.0.1", - "acorn": "^8.10.0", - "estree-walker": "^3.0.3", - "periscopic": "^3.1.0" - } - }, - "node_modules/code-red/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/esbuild": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.39.tgz", - "integrity": "sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "esbuild-android-64": "0.14.39", - "esbuild-android-arm64": "0.14.39", - "esbuild-darwin-64": "0.14.39", - "esbuild-darwin-arm64": "0.14.39", - "esbuild-freebsd-64": "0.14.39", - "esbuild-freebsd-arm64": "0.14.39", - "esbuild-linux-32": "0.14.39", - "esbuild-linux-64": "0.14.39", - "esbuild-linux-arm": "0.14.39", - "esbuild-linux-arm64": "0.14.39", - "esbuild-linux-mips64le": "0.14.39", - "esbuild-linux-ppc64le": "0.14.39", - "esbuild-linux-riscv64": "0.14.39", - "esbuild-linux-s390x": "0.14.39", - "esbuild-netbsd-64": "0.14.39", - "esbuild-openbsd-64": "0.14.39", - "esbuild-sunos-64": "0.14.39", - "esbuild-windows-32": "0.14.39", - "esbuild-windows-64": "0.14.39", - "esbuild-windows-arm64": "0.14.39" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz", - "integrity": "sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", "cpu": [ - "x64" + "s390x" ], "dev": true, "optional": true, "os": [ - "android" + "linux" ], "engines": { "node": ">=12" } }, - "node_modules/esbuild-android-arm64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz", - "integrity": "sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==", + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", "cpu": [ - "arm64" + "x64" ], "dev": true, "optional": true, "os": [ - "android" + "linux" ], "engines": { "node": ">=12" } }, - "node_modules/esbuild-darwin-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz", - "integrity": "sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", "cpu": [ "x64" ], "dev": true, "optional": true, "os": [ - "darwin" + "netbsd" ], "engines": { "node": ">=12" } }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz", - "integrity": "sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", "cpu": [ - "arm64" + "x64" ], "dev": true, "optional": true, "os": [ - "darwin" + "openbsd" ], "engines": { "node": ">=12" } }, - "node_modules/esbuild-freebsd-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz", - "integrity": "sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", "cpu": [ "x64" ], "dev": true, "optional": true, "os": [ - "freebsd" + "sunos" ], "engines": { "node": ">=12" } }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz", - "integrity": "sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", "cpu": [ "arm64" ], "dev": true, "optional": true, "os": [ - "freebsd" + "win32" ], "engines": { "node": ">=12" } }, - "node_modules/esbuild-linux-32": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz", - "integrity": "sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", "cpu": [ "ia32" ], "dev": true, "optional": true, "os": [ - "linux" + "win32" ], "engines": { "node": ">=12" } }, - "node_modules/esbuild-linux-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz", - "integrity": "sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==", + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", "cpu": [ "x64" ], "dev": true, "optional": true, "os": [ - "linux" + "win32" ], "engines": { "node": ">=12" } }, - "node_modules/esbuild-linux-arm": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz", - "integrity": "sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==", - "cpu": [ - "arm" - ], + "node_modules/@fontsource/fira-mono": { + "version": "4.5.10", + "resolved": "https://registry.npmjs.org/@fontsource/fira-mono/-/fira-mono-4.5.10.tgz", + "integrity": "sha512-bxUnRP8xptGRo8YXeY073DSpfK74XpSb0ZyRNpHV9WvLnJ7TwPOjZll8hTMin7zLC6iOp59pDZ8EQDj1gzgAQQ==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, "engines": { "node": ">=12" } }, - "node_modules/esbuild-linux-arm64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz", - "integrity": "sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==", - "cpu": [ - "arm64" - ], + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@lukeed/uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@lukeed/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w==", + "dependencies": { + "@lukeed/csprng": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@neoconfetti/svelte": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@neoconfetti/svelte/-/svelte-1.0.0.tgz", + "integrity": "sha512-SmksyaJAdSlMa9cTidVSIqYo1qti+WTsviNDwgjNVm+KQ3DRP2Df9umDIzC4vCcpEYY+chQe0i2IKnLw03AT8Q==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz", - "integrity": "sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==", - "cpu": [ - "mips64el" - ], + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz", - "integrity": "sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==", - "cpu": [ - "ppc64" - ], + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz", - "integrity": "sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==", - "cpu": [ - "riscv64" - ], + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=14" } }, - "node_modules/esbuild-linux-s390x": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz", - "integrity": "sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==", + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.1.tgz", + "integrity": "sha512-P6Wg856Ou/DLpR+O0ZLneNmrv7QpqBg+hK4wE05ijbC/t349BRfMfx+UFj5Ha3fCFopIa6iSZlpdaB4agkWp2Q==", "cpu": [ - "s390x" + "arm" ], "dev": true, "optional": true, "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } + "android" + ] }, - "node_modules/esbuild-netbsd-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz", - "integrity": "sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.1.tgz", + "integrity": "sha512-piwZDjuW2WiHr05djVdUkrG5JbjnGbtx8BXQchYCMfib/nhjzWoiScelZ+s5IJI7lecrwSxHCzW026MWBL+oJQ==", "cpu": [ - "x64" + "arm64" ], "dev": true, "optional": true, "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } + "android" + ] }, - "node_modules/esbuild-openbsd-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz", - "integrity": "sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.1.tgz", + "integrity": "sha512-LsZXXIsN5Q460cKDT4Y+bzoPDhBmO5DTr7wP80d+2EnYlxSgkwdPfE3hbE+Fk8dtya+8092N9srjBTJ0di8RIA==", "cpu": [ - "x64" + "arm64" ], "dev": true, "optional": true, "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } + "darwin" + ] }, - "node_modules/esbuild-sunos-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz", - "integrity": "sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.1.tgz", + "integrity": "sha512-S7TYNQpWXB9APkxu/SLmYHezWwCoZRA9QLgrDeml+SR2A1LLPD2DBUdUlvmCF7FUpRMKvbeeWky+iizQj65Etw==", "cpu": [ "x64" ], "dev": true, "optional": true, "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } + "darwin" + ] }, - "node_modules/esbuild-windows-32": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz", - "integrity": "sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.1.tgz", + "integrity": "sha512-Lq2JR5a5jsA5um2ZoLiXXEaOagnVyCpCW7xvlcqHC7y46tLwTEgUSTM3a2TfmmTMmdqv+jknUioWXlmxYxE9Yw==", "cpu": [ - "ia32" + "arm" ], "dev": true, "optional": true, "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } + "linux" + ] }, - "node_modules/esbuild-windows-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz", - "integrity": "sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.1.tgz", + "integrity": "sha512-9BfzwyPNV0IizQoR+5HTNBGkh1KXE8BqU0DBkqMngmyFW7BfuIZyMjQ0s6igJEiPSBvT3ZcnIFohZ19OqjhDPg==", "cpu": [ - "x64" + "arm" ], "dev": true, "optional": true, "os": [ - "win32" + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.1.tgz", + "integrity": "sha512-e2uWaoxo/rtzA52OifrTSXTvJhAXb0XeRkz4CdHBK2KtxrFmuU/uNd544Ogkpu938BzEfvmWs8NZ8Axhw33FDw==", + "cpu": [ + "arm64" ], - "engines": { - "node": ">=12" - } + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/esbuild-windows-arm64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz", - "integrity": "sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.1.tgz", + "integrity": "sha512-ekggix/Bc/d/60H1Mi4YeYb/7dbal1kEDZ6sIFVAE8pUSx7PiWeEh+NWbL7bGu0X68BBIkgF3ibRJe1oFTksQQ==", "cpu": [ "arm64" ], "dev": true, "optional": true, "os": [ - "win32" + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.1.tgz", + "integrity": "sha512-UGV0dUo/xCv4pkr/C8KY7XLFwBNnvladt8q+VmdKrw/3RUd3rD0TptwjisvE2TTnnlENtuY4/PZuoOYRiGp8Gw==", + "cpu": [ + "ppc64" ], - "engines": { - "node": ">=12" - } + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.1.tgz", + "integrity": "sha512-gEYmYYHaehdvX46mwXrU49vD6Euf1Bxhq9pPb82cbUU9UT2NV+RSckQ5tKWOnNXZixKsy8/cPGtiUWqzPuAcXQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.1.tgz", + "integrity": "sha512-xeae5pMAxHFp6yX5vajInG2toST5lsCTrckSRUFwNgzYqnUjNBcQyqk1bXUxX5yhjWFl2Mnz3F8vQjl+2FRIcw==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/flatpickr": { - "version": "4.6.9", - "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz", - "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==", - "dev": true + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.1.tgz", + "integrity": "sha512-AsdnINQoDWfKpBzCPqQWxSPdAWzSgnYbrJYtn6W0H2E9It5bZss99PiLA8CgmDRfvKygt20UpZ3xkhFlIfX9zQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.1.tgz", + "integrity": "sha512-KoB4fyKXTR+wYENkIG3fFF+5G6N4GFvzYx8Jax8BR4vmddtuqSb5oQmYu2Uu067vT/Fod7gxeQYKupm8gAcMSQ==", + "cpu": [ + "x64" + ], "dev": true, - "hasInstallScript": true, "optional": true, "os": [ - "darwin" + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.1.tgz", + "integrity": "sha512-J0d3NVNf7wBL9t4blCNat+d0PYqAx8wOoY+/9Q5cujnafbX7BmtYk3XvzkqLmFECaWvXGLuHmKj/wrILUinmQg==", + "cpu": [ + "arm64" ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "dev": true, + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.1.tgz", + "integrity": "sha512-xjgkWUwlq7IbgJSIxvl516FJ2iuC/7ttjsAxSPpC9kkI5iQQFHKyEN5BjbhvJ/IXIZ3yIBcW5QDlWAyrA+TFag==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.1.tgz", + "integrity": "sha512-0QbCkfk6cnnVKWqqlC0cUrrUMDMfu5ffvYMTUHf+qMN2uAb3MKP31LPcwiMXBNsvoFGs/kYdFOsuLmvppCopXA==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@supabase/auth-js": { + "version": "2.64.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.64.1.tgz", + "integrity": "sha512-tA2PXLoWEzhD0N1Vysree+HftfeWBbFV0E+taND5rj/pZTjkwKq/9GlrnXkbs5pnw+tsnABDRo2WLZmymihGdA==", "dependencies": { - "is-glob": "^4.0.1" + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.3.1.tgz", + "integrity": "sha512-QyzNle/rVzlOi4BbVqxLSH828VdGY1RElqGFAj+XeVypj6+PVtMlD21G8SDnsPQDtlqqTtoGRgdMlQZih5hTuw==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/node-fetch": { + "version": "2.6.15", + "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", + "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", + "dependencies": { + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">= 6" + "node": "4.x || >=6.0.0" } }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true + "node_modules/@supabase/postgrest-js": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.2.tgz", + "integrity": "sha512-9/7pUmXExvGuEK1yZhVYXPZnLEkDTwxgMQHXLrN5BwPZZm4iUCL1YEyep/Z2lIZah8d8M433mVAUEGsihUj5KQ==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true + "node_modules/@supabase/realtime-js": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.9.4.tgz", + "integrity": "sha512-wdq+2hZpgw0r2ldRs87d3U08Y8BrsO1bZxPNqbImpYshAEkusDz4vufR8KaqujKxqewmXS6YnUhuRVdvSEIKCA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14", + "@types/phoenix": "^1.5.4", + "@types/ws": "^8.5.10", + "ws": "^8.14.2" + } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, + "node_modules/@supabase/storage-js": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.5.tgz", + "integrity": "sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==", "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "@supabase/node-fetch": "^2.6.14" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/@supabase/supabase-js": { + "version": "2.42.7", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.42.7.tgz", + "integrity": "sha512-BEIEYe5KJpzd8Z3k4CKyjNuBmgSihDdE8MJO/Fg7O5h/lQg8qOp1MMWLWPP5aVKt4TYled/W82ePNJflqc2JbQ==", + "dependencies": { + "@supabase/auth-js": "2.64.1", + "@supabase/functions-js": "2.3.1", + "@supabase/node-fetch": "2.6.15", + "@supabase/postgrest-js": "1.15.2", + "@supabase/realtime-js": "2.9.4", + "@supabase/storage-js": "2.5.5" + } + }, + "node_modules/@sveltejs/adapter-auto": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-3.2.0.tgz", + "integrity": "sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==", "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "import-meta-resolve": "^4.0.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" } }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "node_modules/@sveltejs/kit": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.7.tgz", + "integrity": "sha512-6uedTzrb7nQrw6HALxnPrPaXdIN2jJJTzTIl96Z3P5NiG+OAfpdPbrWrvkJ3GN4CfWqrmU4dJqwMMRMTD/C7ow==", "dev": true, + "hasInstallScript": true, "dependencies": { - "has": "^1.0.3" + "@types/cookie": "^0.6.0", + "cookie": "^0.6.0", + "devalue": "^5.0.0", + "esm-env": "^1.0.0", + "import-meta-resolve": "^4.0.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^2.0.4", + "tiny-glob": "^0.2.9" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "node_modules/@sveltejs/kit/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.0.tgz", + "integrity": "sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "@sveltejs/vite-plugin-svelte-inspector": "^2.0.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.9", + "svelte-hmr": "^0.16.0", + "vitefu": "^0.2.5" }, "engines": { - "node": ">=0.10.0" + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", + "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, "engines": { - "node": ">=0.12.0" + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" } }, - "node_modules/is-reference": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", - "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/marked": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.2.tgz", + "integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==" + }, + "node_modules/@types/node": { + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dependencies": { - "@types/estree": "*" + "undici-types": "~5.26.4" } }, - "node_modules/kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/@types/phoenix": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.4.tgz", + "integrity": "sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==" }, - "node_modules/locate-character": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" + "node_modules/@types/pug": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz", + "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==", + "dev": true }, - "node_modules/magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", - "dev": true, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vercel/analytics": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.2.2.tgz", + "integrity": "sha512-X0rctVWkQV1e5Y300ehVNqpOfSOufo7ieA5PIdna8yX/U7Vjz0GFsGf4qvAhxV02uQ2CVt7GYcrFfddXXK2Y4A==", "dependencies": { - "sourcemap-codec": "^1.4.8" + "server-only": "^0.0.1" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "next": ">= 13", + "react": "^18 || ^19" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + } } }, - "node_modules/marked": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", - "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "bin": { - "marked": "bin/marked.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">= 12" + "node": ">=0.4.0" } }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/mrmime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", - "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true }, - "node_modules/periscopic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, - "node_modules/periscopic/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dequal": "^2.0.3" } }, - "node_modules/postcss": { - "version": "8.4.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", - "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==", + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "dev": true, "funding": [ { @@ -1052,1194 +1080,2250 @@ }, { "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.3", + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" }, "engines": { "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "dependencies": { + "dequal": "^2.0.3" } }, - "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, - "peer": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, "engines": { - "node": ">=14" + "node": ">=8" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prettier-plugin-svelte": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.1.tgz", - "integrity": "sha512-ENAPbIxASf2R79IZwgkG5sBdeNA9kLRlXVvKKmTXh79zWTy0KKoT86XO2pHrTitUPINd+iXWy12MRmgzKGVckA==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "peerDependencies": { - "prettier": "^3.0.0", - "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "picomatch": "^2.2.1" + "fill-range": "^7.0.1" }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regexparam": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.0.tgz", - "integrity": "sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow==", - "dev": true, "engines": { "node": ">=8" } }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { - "resolve": "bin/resolve" + "browserslist": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/rollup": { - "version": "2.73.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.73.0.tgz", - "integrity": "sha512-h/UngC3S4Zt28mB3g0+2YCMegT5yoftnQplwzPqGZcKvlld5e+kT/QRmJiL+qxGyZKOYpgirWGdLyEO1b0dpLQ==", + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": "*" } }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "dependencies": { - "mri": "^1.1.0" - }, "engines": { "node": ">=6" } }, - "node_modules/server-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", - "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==" - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/caniuse-lite": { + "version": "1.0.30001614", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", + "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "node_modules/svelte": { - "version": "3.50.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.50.1.tgz", - "integrity": "sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA==", - "engines": { - "node": ">= 8" + "node_modules/carbon-components-svelte": { + "version": "0.67.9", + "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.67.9.tgz", + "integrity": "sha512-QZd7oxWlBjWx3TbXZhke8voFAQtuoZeQoGx/RkCRbUqBbWsMAaGLn/umTP9+kpiHeMX8/7Hl/CTML+CkKOfE1g==", + "dev": true, + "dependencies": { + "flatpickr": "4.6.9" } }, - "node_modules/svelte-hamburgers": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/svelte-hamburgers/-/svelte-hamburgers-4.0.1.tgz", - "integrity": "sha512-5xm430w5XNukmxyJ4tW2ln7oSA9qQ4TiKiIfbaDmwmUuCpnW6GD4cDSTG5U/2PwerI7AFNhIhB5iNwnzE2RQXA==" - }, - "node_modules/svelte-hmr": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.11.tgz", - "integrity": "sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" + "node": ">= 8.10.0" }, - "peerDependencies": { - "svelte": ">=3.19.0" + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/svelte-inview": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/svelte-inview/-/svelte-inview-4.0.1.tgz", - "integrity": "sha512-8NuT/DKFiZAccDw1Z16cIsdZ7K6/BGxrUfDaFaWTCEdn3YqMj1TUAkfmQ08FQ1+INl1G+TQS+ImXIBiiISgXog==", - "peerDependencies": { - "svelte": "^3.0.0 || ^4.0.0" + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" } }, - "node_modules/svelte-markdown": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/svelte-markdown/-/svelte-markdown-0.2.3.tgz", - "integrity": "sha512-2h680NzTXnAD0CXhxe3GeHl6W+ayG4iKQRl+BIDRw+R0mUE0OiNxP1Vt8Rn+aWevB/LBiBIPCAwvL+0BkG057A==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { - "@types/marked": "^4.0.1", - "marked": "^4.0.10" + "color-name": "~1.1.4" }, - "peerDependencies": { - "svelte": "^3.0.0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/svelte-multiselect": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/svelte-multiselect/-/svelte-multiselect-10.1.0.tgz", - "integrity": "sha512-zL16kwO13c5pkT6jgDxY1WXMSfH7z2EO3VI78I57AjYIM2u+XYaz1KUlfNOkQTmgVcVj7PmSF9xzXKMtf1xxCQ==", - "dependencies": { - "svelte": "^4.0.5" + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" } }, - "node_modules/svelte-multiselect/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "^1.0.0" + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/svelte-multiselect/node_modules/magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/svelte-multiselect/node_modules/svelte": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.0.tgz", - "integrity": "sha512-kVsdPjDbLrv74SmLSUzAsBGquMs4MPgWGkGLpH+PjOYnFOziAvENVzgJmyOCV2gntxE32aNm8/sqNKD6LbIpeQ==", - "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@jridgewell/sourcemap-codec": "^1.4.15", - "@jridgewell/trace-mapping": "^0.3.18", - "acorn": "^8.9.0", - "aria-query": "^5.3.0", - "axobject-query": "^3.2.1", - "code-red": "^1.0.3", - "css-tree": "^2.3.1", - "estree-walker": "^3.0.3", - "is-reference": "^3.0.1", - "locate-character": "^3.0.0", - "magic-string": "^0.30.0", - "periscopic": "^3.1.0" + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=16" - } - }, - "node_modules/svelte-routing": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/svelte-routing/-/svelte-routing-2.12.0.tgz", - "integrity": "sha512-6i4Mncy4P2b7gD7+BOT9JzQvrfGfGXqFra8VXYU5//bpn6AzJ0PLEhH1E/KwY2AxleOiS/8Nm37MGuic2kn15A==" - }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "dependencies": { - "is-number": "^7.0.0" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=8.0" + "node": ">=4" } }, - "node_modules/vite": { - "version": "2.9.15", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz", - "integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "esbuild": "^0.14.27", - "postcss": "^8.4.13", - "resolve": "^1.22.0", - "rollup": ">=2.59.0 <2.78.0" - }, - "bin": { - "vite": "bin/vite.js" + "ms": "2.1.2" }, "engines": { - "node": ">=12.2.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "less": "*", - "sass": "*", - "stylus": "*" + "node": ">=6.0" }, "peerDependenciesMeta": { - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { + "supports-color": { "optional": true } } }, - "node_modules/worktop": { - "version": "0.8.0-next.13", - "resolved": "https://registry.npmjs.org/worktop/-/worktop-0.8.0-next.13.tgz", - "integrity": "sha512-aLPWSneFtPJr3RAf841orF9GNlVdVkQd2Wj/BbcGHp3whBZoXx6dcwwClA9fezm7muNan4SuT+ZTyMWdoJSCAg==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "dependencies": { - "mrmime": "^1.0.0", - "regexparam": "^2.0.0" - }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@fontsource/fira-mono": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@fontsource/fira-mono/-/fira-mono-4.5.8.tgz", - "integrity": "sha512-sFuSPB/Km8B1fy3CH0NqO5Nb4GmVMzp3XFaw6MwK293xhm3OnB68QJawwTTjLewcrS78wOTAhTUB058qxurJoQ==" - }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" } }, - "@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "node_modules/devalue": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz", + "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==", + "dev": true }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true }, - "@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true }, - "@lukeed/csprng": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.0.1.tgz", - "integrity": "sha512-uSvJdwQU5nK+Vdf6zxcWAY2A8r7uqe+gePwLWzJ+fsQehq18pc0I2hJKwypZ2aLM90+Er9u1xn4iLJPZ+xlL4g==" + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, - "@lukeed/uuid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@lukeed/uuid/-/uuid-2.0.0.tgz", - "integrity": "sha512-dUz8OmYvlY5A9wXaroHIMSPASpSYRLCqbPvxGSyHguhtTQIy24lC+EGxQlwv71AhRCO55WOtgwhzQLpw27JaJQ==", - "requires": { - "@lukeed/csprng": "^1.0.0" - } + "node_modules/electron-to-chromium": { + "version": "1.4.751", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz", + "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true }, - "@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, - "requires": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" + "engines": { + "node": ">=6" } }, - "@sveltejs/adapter-auto": { - "version": "1.0.0-next.42", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.42.tgz", - "integrity": "sha512-AMTrR0A2Uss1FQkpYDV/7lYgQtRHyTrvwGCrll1lwZNPexb9MZGU4+x8csGKTNgf29Dg3lCEc9JBQti89rHZbw==", - "dev": true, - "requires": { - "@sveltejs/adapter-cloudflare": "1.0.0-next.19", - "@sveltejs/adapter-netlify": "1.0.0-next.57", - "@sveltejs/adapter-vercel": "1.0.0-next.51" + "node_modules/esm-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", + "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", + "dev": true + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" } }, - "@sveltejs/adapter-cloudflare": { - "version": "1.0.0-next.19", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.19.tgz", - "integrity": "sha512-LET3DUYpl+deoKhkWCzhHUT7iipYkgVkOcRIJX7qT4m23A+MAbzcAC3npgwEYSe9RokOSWMVBr3tVujeES5EeA==", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "requires": { - "esbuild": "^0.14.21", - "worktop": "0.8.0-next.13" + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" } }, - "@sveltejs/adapter-netlify": { - "version": "1.0.0-next.57", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.57.tgz", - "integrity": "sha512-rqvOr488+7NGkEHw/D6v1Y8Fg0MbiUP/YI1uSYjKy+tA8/4FOdBgU8Nk8daPTxWEU+CpsgzvA4X8IVonuML9SA==", + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, - "requires": { - "@iarna/toml": "^2.2.5", - "esbuild": "^0.14.21", - "tiny-glob": "^0.2.9" + "dependencies": { + "reusify": "^1.0.4" } }, - "@sveltejs/adapter-vercel": { - "version": "1.0.0-next.51", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.51.tgz", - "integrity": "sha512-U4GSe1tYcWq90XCQfLK4qmEEVA1MyWgnT6i7LhbLVOoNP8bf3ict3xKjGrHcx/CY4jNUBA80DXSkj/hpFkweAg==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "requires": { - "esbuild": "^0.14.21" + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "@sveltejs/kit": { - "version": "1.0.0-next.330", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.330.tgz", - "integrity": "sha512-Wb95D5tOF8BViZuikqzZLAcupdS7TpXtadNPgpEOxKowmkrW8xjRrrfVdPIkNOLqAP1V+gKInmQ/gFYmnv5EjA==", + "node_modules/flatpickr": { + "version": "4.6.9", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz", + "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==", + "dev": true + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, - "requires": { - "@sveltejs/vite-plugin-svelte": "^1.0.0-next.32", - "chokidar": "^3.5.3", - "sade": "^1.7.4", - "vite": "^2.9.0" + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@sveltejs/vite-plugin-svelte": { - "version": "1.0.0-next.44", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.44.tgz", - "integrity": "sha512-n+sssEWbzykPS447FmnNyU5GxEhrBPDVd0lxNZnxRGz9P6651LjjwAnISKr3CKgT9v8IybP8VD0n2i5XzbqExg==", + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, - "requires": { - "@rollup/pluginutils": "^4.2.1", - "debug": "^4.3.4", - "deepmerge": "^4.2.2", - "kleur": "^4.1.4", - "magic-string": "^0.26.1", - "svelte-hmr": "^0.14.11" + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" - }, - "@types/marked": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.8.tgz", - "integrity": "sha512-HVNzMT5QlWCOdeuBsgXP8EZzKUf0+AXzN+sLmjvaB3ZlLqO+e4u0uXrdw9ub69wBKFs+c6/pA4r9sy6cCDvImw==" + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, - "@vercel/analytics": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.2.2.tgz", - "integrity": "sha512-X0rctVWkQV1e5Y300ehVNqpOfSOufo7ieA5PIdna8yX/U7Vjz0GFsGf4qvAhxV02uQ2CVt7GYcrFfddXXK2Y4A==", - "requires": { - "server-only": "^0.0.1" + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "requires": { - "dequal": "^2.0.3" + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "requires": { - "dequal": "^2.0.3" + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", "dev": true }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, - "requires": { - "fill-range": "^7.0.1" + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "carbon-components-svelte": { - "version": "0.67.9", - "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.67.9.tgz", - "integrity": "sha512-QZd7oxWlBjWx3TbXZhke8voFAQtuoZeQoGx/RkCRbUqBbWsMAaGLn/umTP9+kpiHeMX8/7Hl/CTML+CkKOfE1g==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "requires": { - "flatpickr": "4.6.9" + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "code-red": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", - "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.15", - "@types/estree": "^1.0.1", - "acorn": "^8.10.0", - "estree-walker": "^3.0.3", - "periscopic": "^3.1.0" - }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { - "estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "requires": { - "@types/estree": "^1.0.0" - } - } + "once": "^1.3.0", + "wrappy": "1" } }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "requires": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "requires": { - "ms": "2.1.2" + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" - }, - "esbuild": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.39.tgz", - "integrity": "sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "requires": { - "esbuild-android-64": "0.14.39", - "esbuild-android-arm64": "0.14.39", - "esbuild-darwin-64": "0.14.39", - "esbuild-darwin-arm64": "0.14.39", - "esbuild-freebsd-64": "0.14.39", - "esbuild-freebsd-arm64": "0.14.39", - "esbuild-linux-32": "0.14.39", - "esbuild-linux-64": "0.14.39", - "esbuild-linux-arm": "0.14.39", - "esbuild-linux-arm64": "0.14.39", - "esbuild-linux-mips64le": "0.14.39", - "esbuild-linux-ppc64le": "0.14.39", - "esbuild-linux-riscv64": "0.14.39", - "esbuild-linux-s390x": "0.14.39", - "esbuild-netbsd-64": "0.14.39", - "esbuild-openbsd-64": "0.14.39", - "esbuild-sunos-64": "0.14.39", - "esbuild-windows-32": "0.14.39", - "esbuild-windows-64": "0.14.39", - "esbuild-windows-arm64": "0.14.39" + "engines": { + "node": ">=0.10.0" } }, - "esbuild-android-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz", - "integrity": "sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "optional": true + "engines": { + "node": ">=8" + } }, - "esbuild-android-arm64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz", - "integrity": "sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "optional": true + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } }, - "esbuild-darwin-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz", - "integrity": "sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "optional": true + "engines": { + "node": ">=0.12.0" + } }, - "esbuild-darwin-arm64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz", - "integrity": "sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==", - "dev": true, - "optional": true + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dependencies": { + "@types/estree": "*" + } }, - "esbuild-freebsd-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz", - "integrity": "sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==", - "dev": true, - "optional": true + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, - "esbuild-freebsd-arm64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz", - "integrity": "sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==", + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, - "optional": true + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } }, - "esbuild-linux-32": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz", - "integrity": "sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==", + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", "dev": true, - "optional": true + "bin": { + "jiti": "bin/jiti.js" + } }, - "esbuild-linux-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz", - "integrity": "sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==", + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, - "optional": true + "engines": { + "node": ">=6" + } }, - "esbuild-linux-arm": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz", - "integrity": "sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==", + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, - "optional": true + "engines": { + "node": ">=10" + } }, - "esbuild-linux-arm64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz", - "integrity": "sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==", - "dev": true, - "optional": true + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" }, - "esbuild-linux-mips64le": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz", - "integrity": "sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==", + "node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "dev": true, - "optional": true + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" }, - "esbuild-linux-ppc64le": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz", - "integrity": "sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "optional": true + "engines": { + "node": ">= 8" + } }, - "esbuild-linux-riscv64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz", - "integrity": "sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "optional": true + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } }, - "esbuild-linux-s390x": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz", - "integrity": "sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==", + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, - "optional": true + "engines": { + "node": ">=4" + } }, - "esbuild-netbsd-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz", - "integrity": "sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "optional": true + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "esbuild-openbsd-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz", - "integrity": "sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "optional": true + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "esbuild-sunos-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz", - "integrity": "sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==", + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, - "optional": true + "engines": { + "node": ">=16 || 14 >=14.17" + } }, - "esbuild-windows-32": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz", - "integrity": "sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==", + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, - "optional": true + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } }, - "esbuild-windows-64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz", - "integrity": "sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==", + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "dev": true, - "optional": true + "engines": { + "node": ">=4" + } }, - "esbuild-windows-arm64": { - "version": "0.14.39", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz", - "integrity": "sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==", + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, - "optional": true + "engines": { + "node": ">=10" + } }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, - "requires": { - "to-regex-range": "^5.0.1" + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, - "flatpickr": { - "version": "4.6.9", - "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz", - "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, - "optional": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "requires": { - "is-glob": "^4.0.1" + "engines": { + "node": ">=0.10.0" } }, - "globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true - }, - "globrex": { + "node_modules/normalize-range": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, - "requires": { - "function-bind": "^1.1.1" + "engines": { + "node": ">=0.10.0" } }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, - "requires": { - "binary-extensions": "^2.0.0" + "engines": { + "node": ">=0.10.0" } }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "dev": true, - "requires": { - "has": "^1.0.3" + "engines": { + "node": ">= 6" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "requires": { - "is-extglob": "^2.1.1" + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-reference": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", - "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", - "requires": { - "@types/estree": "*" + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" } }, - "kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "locate-character": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" - }, - "magic-string": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", - "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "marked": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", - "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==" - }, - "mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true - }, - "mrmime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", - "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "periscopic": { + "node_modules/periscopic": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "requires": { + "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", "is-reference": "^3.0.0" - }, - "dependencies": { - "estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "requires": { - "@types/estree": "^1.0.0" - } - } } }, - "picocolors": { + "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } }, - "postcss": { - "version": "8.4.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", - "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==", + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, - "requires": { - "nanoid": "^3.3.3", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" } }, - "prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", "dev": true, - "peer": true + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } }, - "prettier-plugin-svelte": { + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prettier-plugin-svelte": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.1.tgz", "integrity": "sha512-ENAPbIxASf2R79IZwgkG5sBdeNA9kLRlXVvKKmTXh79zWTy0KKoT86XO2pHrTitUPINd+iXWy12MRmgzKGVckA==", "dev": true, - "requires": {} + "peerDependencies": { + "prettier": "^3.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } }, - "readdirp": { + "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "requires": { + "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "regexparam": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-2.0.0.tgz", - "integrity": "sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow==", - "dev": true - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, - "requires": { - "is-core-module": "^2.8.1", + "dependencies": { + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "rollup": { - "version": "2.73.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.73.0.tgz", - "integrity": "sha512-h/UngC3S4Zt28mB3g0+2YCMegT5yoftnQplwzPqGZcKvlld5e+kT/QRmJiL+qxGyZKOYpgirWGdLyEO1b0dpLQ==", + "node_modules/rollup": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.1.tgz", + "integrity": "sha512-0gG94inrUtg25sB2V/pApwiv1lUb0bQ25FPNuzO89Baa+B+c0ccaaBKM5zkZV/12pUUdH+lWCSm9wmHqyocuVQ==", "dev": true, - "requires": { + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.17.1", + "@rollup/rollup-android-arm64": "4.17.1", + "@rollup/rollup-darwin-arm64": "4.17.1", + "@rollup/rollup-darwin-x64": "4.17.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.17.1", + "@rollup/rollup-linux-arm-musleabihf": "4.17.1", + "@rollup/rollup-linux-arm64-gnu": "4.17.1", + "@rollup/rollup-linux-arm64-musl": "4.17.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.17.1", + "@rollup/rollup-linux-riscv64-gnu": "4.17.1", + "@rollup/rollup-linux-s390x-gnu": "4.17.1", + "@rollup/rollup-linux-x64-gnu": "4.17.1", + "@rollup/rollup-linux-x64-musl": "4.17.1", + "@rollup/rollup-win32-arm64-msvc": "4.17.1", + "@rollup/rollup-win32-ia32-msvc": "4.17.1", + "@rollup/rollup-win32-x64-msvc": "4.17.1", "fsevents": "~2.3.2" } }, - "sade": { + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", "dev": true, - "requires": { + "dependencies": { "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" } }, - "server-only": { + "node_modules/server-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==" }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", "dev": true }, - "svelte": { - "version": "3.50.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.50.1.tgz", - "integrity": "sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA==" - }, - "svelte-hamburgers": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/svelte-hamburgers/-/svelte-hamburgers-4.0.1.tgz", - "integrity": "sha512-5xm430w5XNukmxyJ4tW2ln7oSA9qQ4TiKiIfbaDmwmUuCpnW6GD4cDSTG5U/2PwerI7AFNhIhB5iNwnzE2RQXA==" - }, - "svelte-hmr": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.11.tgz", - "integrity": "sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": {} - }, - "svelte-inview": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/svelte-inview/-/svelte-inview-4.0.1.tgz", - "integrity": "sha512-8NuT/DKFiZAccDw1Z16cIsdZ7K6/BGxrUfDaFaWTCEdn3YqMj1TUAkfmQ08FQ1+INl1G+TQS+ImXIBiiISgXog==", - "requires": {} - }, - "svelte-markdown": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/svelte-markdown/-/svelte-markdown-0.2.3.tgz", - "integrity": "sha512-2h680NzTXnAD0CXhxe3GeHl6W+ayG4iKQRl+BIDRw+R0mUE0OiNxP1Vt8Rn+aWevB/LBiBIPCAwvL+0BkG057A==", - "requires": { - "@types/marked": "^4.0.1", - "marked": "^4.0.10" + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "svelte-multiselect": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/svelte-multiselect/-/svelte-multiselect-10.1.0.tgz", - "integrity": "sha512-zL16kwO13c5pkT6jgDxY1WXMSfH7z2EO3VI78I57AjYIM2u+XYaz1KUlfNOkQTmgVcVj7PmSF9xzXKMtf1xxCQ==", - "requires": { - "svelte": "^4.0.5" - }, - "dependencies": { - "estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "requires": { - "@types/estree": "^1.0.0" - } - }, - "magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, - "svelte": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.0.tgz", - "integrity": "sha512-kVsdPjDbLrv74SmLSUzAsBGquMs4MPgWGkGLpH+PjOYnFOziAvENVzgJmyOCV2gntxE32aNm8/sqNKD6LbIpeQ==", - "requires": { - "@ampproject/remapping": "^2.2.1", - "@jridgewell/sourcemap-codec": "^1.4.15", - "@jridgewell/trace-mapping": "^0.3.18", - "acorn": "^8.9.0", - "aria-query": "^5.3.0", - "axobject-query": "^3.2.1", - "code-red": "^1.0.3", - "css-tree": "^2.3.1", - "estree-walker": "^3.0.3", - "is-reference": "^3.0.1", - "locate-character": "^3.0.0", - "magic-string": "^0.30.0", - "periscopic": "^3.1.0" - } - } + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" } }, - "svelte-routing": { - "version": "2.12.0", + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sorcery": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", + "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.14", + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0" + }, + "bin": { + "sorcery": "bin/sorcery" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "4.2.15", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.15.tgz", + "integrity": "sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte-check": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.7.0.tgz", + "integrity": "sha512-Va6sGL4Vy4znn0K+vaatk98zoBvG2aDee4y3r5X4S80z8DXfbACHvdLlyXa4C4c5tQzK9H0Uq2pbd20wH3ucjQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^5.1.3", + "typescript": "^5.0.3" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" + } + }, + "node_modules/svelte-hamburgers": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/svelte-hamburgers/-/svelte-hamburgers-4.2.0.tgz", + "integrity": "sha512-6Iq0uHXHeQZMvsn6Ft84qdSpf+PfmhwdyuSVoJeGHG6UfazB5ffJoMmahs9y9THAtvnBl+Hzus5BOy80PzWy0w==", + "peerDependencies": { + "svelte": "^3.46.4 || ^4.0.0" + } + }, + "node_modules/svelte-hmr": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", + "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/svelte-inview": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/svelte-inview/-/svelte-inview-4.0.2.tgz", + "integrity": "sha512-saJp2QRCUEBletGPnI3utxROHqruDGRPfPhtdpNYQwD97P2oCKiVIlZE3tFNEiC7h3nCvU+8czaKWcH1o/axrA==", + "peerDependencies": { + "svelte": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/svelte-markdown": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/svelte-markdown/-/svelte-markdown-0.2.3.tgz", + "integrity": "sha512-2h680NzTXnAD0CXhxe3GeHl6W+ayG4iKQRl+BIDRw+R0mUE0OiNxP1Vt8Rn+aWevB/LBiBIPCAwvL+0BkG057A==", + "dependencies": { + "@types/marked": "^4.0.1", + "marked": "^4.0.10" + }, + "peerDependencies": { + "svelte": "^3.0.0" + } + }, + "node_modules/svelte-multiselect": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/svelte-multiselect/-/svelte-multiselect-10.3.0.tgz", + "integrity": "sha512-Pyvlcn4TK3dB2WWo6hDEeNH+x2O/DP82UuUf61PQFX8KMB3cm1Cam+zTKrcrOoRRVI2SwH/8dPF8hSTfJFaMmA==", + "dependencies": { + "svelte": "4.2.12" + } + }, + "node_modules/svelte-multiselect/node_modules/svelte": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.12.tgz", + "integrity": "sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte-preprocess": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.4.tgz", + "integrity": "sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.6", + "detect-indent": "^6.1.0", + "magic-string": "^0.30.5", + "sorcery": "^0.11.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0", + "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte-routing": { + "version": "2.12.0", "resolved": "https://registry.npmjs.org/svelte-routing/-/svelte-routing-2.12.0.tgz", "integrity": "sha512-6i4Mncy4P2b7gD7+BOT9JzQvrfGfGXqFra8VXYU5//bpn6AzJ0PLEhH1E/KwY2AxleOiS/8Nm37MGuic2kn15A==" }, - "tiny-glob": { + "node_modules/tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-glob": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", "dev": true, - "requires": { + "dependencies": { "globalyzer": "0.1.0", "globrex": "^0.1.2" } }, - "to-regex-range": { + "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.10.tgz", + "integrity": "sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==", + "dev": true, + "dependencies": { + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "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 + } + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "vite": { - "version": "2.9.15", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz", - "integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==", + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, - "requires": { - "esbuild": "^0.14.27", - "fsevents": "~2.3.2", - "postcss": "^8.4.13", - "resolve": "^1.22.0", - "rollup": ">=2.59.0 <2.78.0" + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "worktop": { - "version": "0.8.0-next.13", - "resolved": "https://registry.npmjs.org/worktop/-/worktop-0.8.0-next.13.tgz", - "integrity": "sha512-aLPWSneFtPJr3RAf841orF9GNlVdVkQd2Wj/BbcGHp3whBZoXx6dcwwClA9fezm7muNan4SuT+ZTyMWdoJSCAg==", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "requires": { - "mrmime": "^1.0.0", - "regexparam": "^2.0.0" + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" } } } diff --git a/package.json b/package.json index 54203531..42a78c52 100644 --- a/package.json +++ b/package.json @@ -3,22 +3,33 @@ "name": "sveltekit", "version": "0.0.1", "scripts": { - "dev": "svelte-kit dev", - "build": "svelte-kit build", - "package": "svelte-kit package", - "preview": "svelte-kit preview" + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch" }, "devDependencies": { - "@sveltejs/adapter-auto": "next", - "@sveltejs/kit": "next", + "@fontsource/fira-mono": "^4.5.10", + "@neoconfetti/svelte": "^1.0.0", + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "autoprefixer": "^10.4.19", "carbon-components-svelte": "^0.67.9", + "postcss": "^8.4.38", "prettier-plugin-svelte": "3.2.1", - "svelte": "^3.46.0" + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "tailwindcss": "^3.4.3", + "typescript": "^5.0.0", + "vite": "^5.0.3" }, "type": "module", "dependencies": { "@fontsource/fira-mono": "^4.5.0", "@lukeed/uuid": "^2.0.0", + "@supabase/supabase-js": "^2.42.5", "@vercel/analytics": "^1.2.2", "cookie": "^0.4.1", "svelte-hamburgers": "^4.0.1", diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..2e7af2b7 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/svelte.config.js b/svelte.config.js index 48e3f1e7..3e745258 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,15 +1,12 @@ import adapter from '@sveltejs/adapter-auto'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; /** @type {import('@sveltejs/kit').Config} */ const config = { kit: { adapter: adapter(), - - // Override http methods in the Todo forms - methodOverride: { - allowed: ['PATCH', 'DELETE'] - } - } + }, + preprocess: vitePreprocess(), }; export default config; diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 00000000..13207ccb --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,9 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{html,js,svelte,ts}'], + theme: { + extend: {}, + }, + plugins: [], +} + diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 00000000..bbf8c7da --- /dev/null +++ b/vite.config.js @@ -0,0 +1,6 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit()] +}); From a6ecdece697abfff503384df72804f3cdce2b9a6 Mon Sep 17 00:00:00 2001 From: thehunter911 Date: Mon, 29 Apr 2024 22:38:12 -0400 Subject: [PATCH 3/5] migrated svelte => sveltekit --- src/app.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app.html b/src/app.html index 9a31a659..1cd13b85 100644 --- a/src/app.html +++ b/src/app.html @@ -1,6 +1,6 @@ - + - %svelte.head% - + %sveltekit.head% + -
%svelte.body%
+
%sveltekit.body%
From a1d76951271df6aef1e1c54477b629ca1efcbb99 Mon Sep 17 00:00:00 2001 From: thehunter911 Date: Mon, 29 Apr 2024 22:43:42 -0400 Subject: [PATCH 4/5] restructure --- src/routes/{__error.svelte => +error.svelte} | 0 src/routes/{__layout.svelte => +layout.svelte} | 0 src/routes/{index.svelte => +page.svelte} | 0 src/routes/{donate.svelte => donate/+page.svelte} | 0 src/routes/{our-team.svelte => our-team/+page.svelte} | 0 src/routes/{past-tests.svelte => past-tests/+page.svelte} | 0 src/routes/{sponsors.svelte => sponsors/+page.svelte} | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename src/routes/{__error.svelte => +error.svelte} (100%) rename src/routes/{__layout.svelte => +layout.svelte} (100%) rename src/routes/{index.svelte => +page.svelte} (100%) rename src/routes/{donate.svelte => donate/+page.svelte} (100%) rename src/routes/{our-team.svelte => our-team/+page.svelte} (100%) rename src/routes/{past-tests.svelte => past-tests/+page.svelte} (100%) rename src/routes/{sponsors.svelte => sponsors/+page.svelte} (100%) diff --git a/src/routes/__error.svelte b/src/routes/+error.svelte similarity index 100% rename from src/routes/__error.svelte rename to src/routes/+error.svelte diff --git a/src/routes/__layout.svelte b/src/routes/+layout.svelte similarity index 100% rename from src/routes/__layout.svelte rename to src/routes/+layout.svelte diff --git a/src/routes/index.svelte b/src/routes/+page.svelte similarity index 100% rename from src/routes/index.svelte rename to src/routes/+page.svelte diff --git a/src/routes/donate.svelte b/src/routes/donate/+page.svelte similarity index 100% rename from src/routes/donate.svelte rename to src/routes/donate/+page.svelte diff --git a/src/routes/our-team.svelte b/src/routes/our-team/+page.svelte similarity index 100% rename from src/routes/our-team.svelte rename to src/routes/our-team/+page.svelte diff --git a/src/routes/past-tests.svelte b/src/routes/past-tests/+page.svelte similarity index 100% rename from src/routes/past-tests.svelte rename to src/routes/past-tests/+page.svelte diff --git a/src/routes/sponsors.svelte b/src/routes/sponsors/+page.svelte similarity index 100% rename from src/routes/sponsors.svelte rename to src/routes/sponsors/+page.svelte From eb7458e115048ea093b96c1739731e3db7e153bb Mon Sep 17 00:00:00 2001 From: BRama10 Date: Tue, 30 Apr 2024 13:07:06 -0400 Subject: [PATCH 5/5] chain legacy builds; add middleware --- package-lock.json | 25 +++++++++++++++++++++++- package.json | 3 ++- src/app.css | 4 ++++ src/hooks.js | 9 +++++++++ src/lib/store.js | 2 +- src/routes/+layout.server.js | 38 ++++++++++++++++++++++++++++++++++++ 6 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 src/routes/+layout.server.js diff --git a/package-lock.json b/package-lock.json index 2709cf33..d8294cd3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,8 @@ "svelte-inview": "^4.0.1", "svelte-markdown": "^0.2.3", "svelte-multiselect": "^10.1.0", - "svelte-routing": "^2.12.0" + "svelte-routing": "^2.12.0", + "ua-parser-js": "^1.0.37" }, "devDependencies": { "@fontsource/fira-mono": "^4.5.10", @@ -3058,6 +3059,28 @@ "node": ">=14.17" } }, + "node_modules/ua-parser-js": { + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", diff --git a/package.json b/package.json index 42a78c52..e81d7983 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "svelte-inview": "^4.0.1", "svelte-markdown": "^0.2.3", "svelte-multiselect": "^10.1.0", - "svelte-routing": "^2.12.0" + "svelte-routing": "^2.12.0", + "ua-parser-js": "^1.0.37" } } diff --git a/src/app.css b/src/app.css index d37818cb..21192df8 100644 --- a/src/app.css +++ b/src/app.css @@ -1,5 +1,9 @@ @import "@fontsource/fira-mono"; +@tailwind base; +@tailwind components; +@tailwind utilities; + :root { font-family: "Ubuntu", "Roboto", Arial, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", diff --git a/src/hooks.js b/src/hooks.js index c87a9a45..d6ad6dc6 100644 --- a/src/hooks.js +++ b/src/hooks.js @@ -1,10 +1,18 @@ import cookie from 'cookie'; import { v4 as uuid } from '@lukeed/uuid'; +/** @type {import('@sveltejs/kit').Handle} */ export const handle = async ({ event, resolve }) => { const cookies = cookie.parse(event.request.headers.get('cookie') || ''); + // @ts-ignore event.locals.userid = cookies.userid || uuid(); + // @ts-ignore + event.locals.tracking = event.request.headers; + + // @ts-ignore + event.locals.ip = event.getClientAddress() + const response = await resolve(event); if (!cookies.userid) { @@ -12,6 +20,7 @@ export const handle = async ({ event, resolve }) => { // set a cookie so that we recognise them when they return response.headers.set( 'set-cookie', + // @ts-ignore cookie.serialize('userid', event.locals.userid, { path: '/', httpOnly: true diff --git a/src/lib/store.js b/src/lib/store.js index 6c222b7f..c5f0ea36 100644 --- a/src/lib/store.js +++ b/src/lib/store.js @@ -1,5 +1,5 @@ import { writable } from "svelte/store"; -import { browser } from "$app/env"; +import { browser } from "$app/environment"; let persistedUser = browser && localStorage.getItem("user"); export let user = writable(persistedUser ? JSON.parse(persistedUser) : true); diff --git a/src/routes/+layout.server.js b/src/routes/+layout.server.js new file mode 100644 index 00000000..c483b64e --- /dev/null +++ b/src/routes/+layout.server.js @@ -0,0 +1,38 @@ +// @ts-nocheck +import { UAParser } from 'ua-parser-js'; + + +/** @type {import('./$types').LayoutServerLoad} */ +export async function load({ locals }) { + console.log('data server local') + + const agentParser = new UAParser(locals.tracking.get('user-agent')); + + const info = { + 'referer' : locals.tracking.get('referer'), + 'host' : locals.tracking.get('host'), + 'connection' : locals.tracking.get('connection'), + 'cache-control' : locals.tracking.get('cache-control'), + 'sec-ch-ua' : locals.tracking.get('sec-ch-ua'), + 'sec-ch-ua-mobile' : locals.tracking.get('sec-ch-ua-mobile'), + 'sec-ch-ua-platform' : locals.tracking.get('sec-ch-ua-platform'), + 'upgrade-insecure-requests' : locals.tracking.get('upgrade-insecure-requests'), + 'user-agent' : agentParser.getResult(), + 'accept' : locals.tracking.get('accept'), + 'sec-fetch-site': locals.tracking.get('sec-fetch-site'), + 'sec-fetch-mode' : locals.tracking.get('sec-fetch-mode'), + 'sec-fetch-user' : locals.tracking.get('sec-fetch-user'), + 'sec-fetch-dest' : locals.tracking.get('sec-fetch-dest'), + 'accept-encoding' : locals.tracking.get('accept-encoding'), + 'accept-language' : locals.tracking.get('accept-language'), + 'cookie' : locals.tracking.get('cookie'), + 'if-none-match' : locals.tracking.get('if-none-match'), + } + + const ip = locals.ip; + + // @ts-ignore + console.log(info); + + return {}; +} \ No newline at end of file