From bab711ee5d2e347c09ca3a0993b940bee4191676 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 24 Jan 2024 16:39:06 -0500 Subject: [PATCH 001/454] feat: dev/preview platform emulation (#11730) * introduce devPlatform kit configuration * Revert "introduce devPlatform kit configuration" This reverts commit 4a847e484f548c5ec6784633e5b05339b4c48670. * add emulatPlatform method to adapters * use latest wrangler release * make wrangler a peer dependency of the cloudflare adapters * add emulate function to adapter API * regenerate types * fix * move cloudflare adapter changes into separate PR * lockfile * emulate platform during prerender * fix types * test * docs * regenerate types * reset pnpm-lock.yaml * prettier * goddammit * Create chatty-walls-warn.md --------- Co-authored-by: Dario Piotrowicz Co-authored-by: Rich Harris --- .changeset/chatty-walls-warn.md | 5 ++++ .../99-writing-adapters.md | 12 ++++++++- packages/kit/src/core/postbuild/prerender.js | 5 +++- packages/kit/src/exports/public.d.ts | 16 ++++++++++++ packages/kit/src/exports/vite/dev/index.js | 6 ++++- .../kit/src/exports/vite/preview/index.js | 6 ++++- packages/kit/src/runtime/server/respond.js | 12 ++++++--- packages/kit/src/types/internal.d.ts | 5 +++- packages/kit/src/utils/route_config.js | 1 + .../routes/adapter/dynamic/+page.server.js | 11 ++++++++ .../src/routes/adapter/dynamic/+page.svelte | 5 ++++ .../adapter/prerendered/+page.server.js | 11 ++++++++ .../routes/adapter/prerendered/+page.svelte | 5 ++++ .../kit/test/apps/basics/svelte.config.js | 15 +++++++++++ packages/kit/test/apps/basics/test/test.js | 26 +++++++++++++++++++ packages/kit/types/index.d.ts | 16 ++++++++++++ 16 files changed, 149 insertions(+), 8 deletions(-) create mode 100644 .changeset/chatty-walls-warn.md create mode 100644 packages/kit/test/apps/basics/src/routes/adapter/dynamic/+page.server.js create mode 100644 packages/kit/test/apps/basics/src/routes/adapter/dynamic/+page.svelte create mode 100644 packages/kit/test/apps/basics/src/routes/adapter/prerendered/+page.server.js create mode 100644 packages/kit/test/apps/basics/src/routes/adapter/prerendered/+page.svelte diff --git a/.changeset/chatty-walls-warn.md b/.changeset/chatty-walls-warn.md new file mode 100644 index 000000000000..bd2481409320 --- /dev/null +++ b/.changeset/chatty-walls-warn.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": minor +--- + +feat: dev/preview/prerender platform emulation diff --git a/documentation/docs/25-build-and-deploy/99-writing-adapters.md b/documentation/docs/25-build-and-deploy/99-writing-adapters.md index 183d4c727981..c4092af15fb2 100644 --- a/documentation/docs/25-build-and-deploy/99-writing-adapters.md +++ b/documentation/docs/25-build-and-deploy/99-writing-adapters.md @@ -4,7 +4,7 @@ title: Writing adapters If an adapter for your preferred environment doesn't yet exist, you can build your own. We recommend [looking at the source for an adapter](https://github.com/sveltejs/kit/tree/main/packages) to a platform similar to yours and copying it as a starting point. -Adapters packages must implement the following API, which creates an `Adapter`: +Adapter packages implement the following API, which creates an `Adapter`: ```js // @errors: 2322 @@ -21,6 +21,14 @@ export default function (options) { async adapt(builder) { // adapter implementation }, + async emulate() { + return { + async platform({ config, prerender }) { + // the returned object becomes `event.platform` during dev, build and + // preview. Its shape is that of `App.Platform` + } + } + }, supports: { read: ({ config, route }) => { // Return `true` if the route with the given `config` can use `read` @@ -34,6 +42,8 @@ export default function (options) { } ``` +Of these, `name` and `adapt` are required. `emulate` and `supports` are optional. + Within the `adapt` method, there are a number of things that an adapter should do: - Clear out the build directory diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index c29ff168f562..05c995ab9771 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -92,6 +92,8 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { /** @type {import('types').ValidatedKitConfig} */ const config = (await load_config()).kit; + const emulator = await config.adapter?.emulate?.(); + /** @type {import('types').Logger} */ const log = logger({ verbose }); @@ -211,7 +213,8 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { // stuff in `static` return readFileSync(join(config.files.assets, file)); - } + }, + emulator }); const encoded_id = response.headers.get('x-sveltekit-routeid'); diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 6b21eaae8e46..a9b808387123 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -45,6 +45,11 @@ export interface Adapter { */ read?: (details: { config: any; route: { id: string } }) => boolean; }; + /** + * Creates an `Emulator`, which allows the adapter to influence the environment + * during dev, build and prerendering + */ + emulate?(): MaybePromise; } export type LoadProperties | void> = input extends void @@ -260,6 +265,17 @@ export interface Cookies { ): string; } +/** + * A collection of functions that influence the environment during dev, build and prerendering + */ +export class Emulator { + /** + * A function that is called with the current route `config` and `prerender` option + * and returns an `App.Platform` object + */ + platform?(details: { config: any; prerender: PrerenderOption }): MaybePromise; +} + export interface KitConfig { /** * Your [adapter](https://kit.svelte.dev/docs/adapters) is run when executing `vite build`. It determines how the output is converted for different platforms. diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index cfe846dbe326..5981025da4ce 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -420,6 +420,9 @@ export async function dev(vite, vite_config, svelte_config) { const env = loadEnv(vite_config.mode, svelte_config.kit.env.dir, ''); + // TODO because of `RecursiveRequired`, TypeScript thinks this is guaranteed to exist, but it isn't + const emulator = await svelte_config.kit.adapter?.emulate?.(); + return () => { const serve_static_middleware = vite.middlewares.stack.find( (middleware) => @@ -529,7 +532,8 @@ export async function dev(vite, vite_config, svelte_config) { read: (file) => fs.readFileSync(path.join(svelte_config.kit.files.assets, file)), before_handle: (event, config, prerender) => { async_local_storage.enterWith({ event, config, prerender }); - } + }, + emulator }); if (rendered.status === 404) { diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index c34af3121e1d..3246fc6fe008 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -51,6 +51,9 @@ export async function preview(vite, vite_config, svelte_config) { read: (file) => createReadableStream(`${dir}/${file}`) }); + // TODO because of `RecursiveRequired`, TypeScript thinks this is guaranteed to exist, but it isn't + const emulator = await svelte_config.kit.adapter?.emulate?.(); + return () => { // Remove the base middleware. It screws with the URL. // It also only lets through requests beginning with the base path, so that requests beginning @@ -191,7 +194,8 @@ export async function preview(vite, vite_config, svelte_config) { if (remoteAddress) return remoteAddress; throw new Error('Could not determine clientAddress'); }, - read: (file) => fs.readFileSync(join(svelte_config.kit.files.assets, file)) + read: (file) => fs.readFileSync(join(svelte_config.kit.files.assets, file)), + emulator }) ); }); diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js index bf59ba4cfd30..555248738c41 100644 --- a/packages/kit/src/runtime/server/respond.js +++ b/packages/kit/src/runtime/server/respond.js @@ -271,7 +271,7 @@ export async function respond(request, options, manifest, state) { } } - if (DEV && state.before_handle) { + if (state.before_handle || state.emulator?.platform) { let config = {}; /** @type {import('types').PrerenderOption} */ @@ -283,11 +283,17 @@ export async function respond(request, options, manifest, state) { prerender = node.prerender ?? prerender; } else if (route.page) { const nodes = await load_page_nodes(route.page, manifest); - config = get_page_config(nodes); + config = get_page_config(nodes) ?? config; prerender = get_option(nodes, 'prerender') ?? false; } - state.before_handle(event, config, prerender); + if (state.before_handle) { + state.before_handle(event, config, prerender); + } + + if (state.emulator?.platform) { + event.platform = await state.emulator.platform({ config, prerender }); + } } } diff --git a/packages/kit/src/types/internal.d.ts b/packages/kit/src/types/internal.d.ts index 22e11e906ea8..864de0be71a3 100644 --- a/packages/kit/src/types/internal.d.ts +++ b/packages/kit/src/types/internal.d.ts @@ -15,7 +15,8 @@ import { HandleClientError, Reroute, RequestEvent, - SSRManifest + SSRManifest, + Emulator } from '@sveltejs/kit'; import { HttpMethod, @@ -128,6 +129,7 @@ export class InternalServer extends Server { read: (file: string) => Buffer; /** A hook called before `handle` during dev, so that `AsyncLocalStorage` can be populated */ before_handle?: (event: RequestEvent, config: any, prerender: PrerenderOption) => void; + emulator?: Emulator; } ): Promise; } @@ -418,6 +420,7 @@ export interface SSRState { prerender_default?: PrerenderOption; read?: (file: string) => Buffer; before_handle?: (event: RequestEvent, config: any, prerender: PrerenderOption) => void; + emulator?: Emulator; } export type StrictBody = string | ArrayBufferView; diff --git a/packages/kit/src/utils/route_config.js b/packages/kit/src/utils/route_config.js index 30563018c1d5..27b67f71f765 100644 --- a/packages/kit/src/utils/route_config.js +++ b/packages/kit/src/utils/route_config.js @@ -16,5 +16,6 @@ export function get_page_config(nodes) { }; } + // TODO 3.0 always return `current`? then we can get rid of `?? {}` in other places return Object.keys(current).length ? current : undefined; } diff --git a/packages/kit/test/apps/basics/src/routes/adapter/dynamic/+page.server.js b/packages/kit/test/apps/basics/src/routes/adapter/dynamic/+page.server.js new file mode 100644 index 000000000000..96d1373d993d --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/adapter/dynamic/+page.server.js @@ -0,0 +1,11 @@ +export const prerender = false; + +export const config = { + message: 'hello from dynamic page' +}; + +export function load({ platform }) { + return { + platform + }; +} diff --git a/packages/kit/test/apps/basics/src/routes/adapter/dynamic/+page.svelte b/packages/kit/test/apps/basics/src/routes/adapter/dynamic/+page.svelte new file mode 100644 index 000000000000..23ba131ac214 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/adapter/dynamic/+page.svelte @@ -0,0 +1,5 @@ + + +
{JSON.stringify(data.platform)}
diff --git a/packages/kit/test/apps/basics/src/routes/adapter/prerendered/+page.server.js b/packages/kit/test/apps/basics/src/routes/adapter/prerendered/+page.server.js new file mode 100644 index 000000000000..90cc61d03496 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/adapter/prerendered/+page.server.js @@ -0,0 +1,11 @@ +export const prerender = true; + +export const config = { + message: 'hello from prerendered page' +}; + +export function load({ platform }) { + return { + platform + }; +} diff --git a/packages/kit/test/apps/basics/src/routes/adapter/prerendered/+page.svelte b/packages/kit/test/apps/basics/src/routes/adapter/prerendered/+page.svelte new file mode 100644 index 000000000000..23ba131ac214 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/adapter/prerendered/+page.svelte @@ -0,0 +1,5 @@ + + +
{JSON.stringify(data.platform)}
diff --git a/packages/kit/test/apps/basics/svelte.config.js b/packages/kit/test/apps/basics/svelte.config.js index b74fb4612ff7..f7986e3e3ab9 100644 --- a/packages/kit/test/apps/basics/svelte.config.js +++ b/packages/kit/test/apps/basics/svelte.config.js @@ -1,6 +1,21 @@ /** @type {import('@sveltejs/kit').Config} */ const config = { kit: { + adapter: { + name: 'test-adapter', + adapt() {}, + emulate() { + return { + platform({ config, prerender }) { + return { config, prerender }; + } + }; + }, + supports: { + read: () => true + } + }, + prerender: { entries: [ '*', diff --git a/packages/kit/test/apps/basics/test/test.js b/packages/kit/test/apps/basics/test/test.js index b408d1b56c3e..9c6d8a5c14f8 100644 --- a/packages/kit/test/apps/basics/test/test.js +++ b/packages/kit/test/apps/basics/test/test.js @@ -7,6 +7,32 @@ test.skip(() => process.env.KIT_E2E_BROWSER === 'webkit'); test.describe.configure({ mode: 'parallel' }); +test.describe('adapter', () => { + test('populates event.platform for dynamic SSR', async ({ page }) => { + await page.goto('/adapter/dynamic'); + const json = JSON.parse(await page.textContent('pre')); + + expect(json).toEqual({ + config: { + message: 'hello from dynamic page' + }, + prerender: false + }); + }); + + test('populates event.platform for prerendered page', async ({ page }) => { + await page.goto('/adapter/prerendered'); + const json = JSON.parse(await page.textContent('pre')); + + expect(json).toEqual({ + config: { + message: 'hello from prerendered page' + }, + prerender: true + }); + }); +}); + test.describe('Imports', () => { test('imports from node_modules', async ({ page, clicknav }) => { await page.goto('/imports'); diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 231e2ea8ee23..5c43bbac143f 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -27,6 +27,11 @@ declare module '@sveltejs/kit' { */ read?: (details: { config: any; route: { id: string } }) => boolean; }; + /** + * Creates an `Emulator`, which allows the adapter to influence the environment + * during dev, build and prerendering + */ + emulate?(): MaybePromise; } export type LoadProperties | void> = input extends void @@ -242,6 +247,17 @@ declare module '@sveltejs/kit' { ): string; } + /** + * A collection of functions that influence the environment during dev, build and prerendering + */ + export class Emulator { + /** + * A function that is called with the current route `config` and `prerender` option + * and returns an `App.Platform` object + */ + platform?(details: { config: any; prerender: PrerenderOption }): MaybePromise; + } + export interface KitConfig { /** * Your [adapter](https://kit.svelte.dev/docs/adapters) is run when executing `vite build`. It determines how the output is converted for different platforms. From bf1a6777f788b5270d27fae379de5a25627d578b Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 24 Jan 2024 14:29:00 -0800 Subject: [PATCH 002/454] chore: upgrade to latest Vite and Svelte (#11725) --- package.json | 2 +- packages/adapter-static/package.json | 4 +- .../test/apps/prerendered/package.json | 4 +- .../adapter-static/test/apps/spa/package.json | 4 +- packages/create-svelte/package.json | 2 +- .../templates/default/package.json | 4 +- packages/enhanced-img/package.json | 4 +- packages/kit/package.json | 4 +- packages/kit/test/apps/amp/package.json | 4 +- packages/kit/test/apps/basics/package.json | 4 +- packages/kit/test/apps/dev-only/package.json | 4 +- packages/kit/test/apps/embed/package.json | 4 +- packages/kit/test/apps/no-ssr/package.json | 4 +- packages/kit/test/apps/options-2/package.json | 4 +- packages/kit/test/apps/options/package.json | 4 +- packages/kit/test/apps/writes/package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../apps/private-dynamic-env/package.json | 4 +- .../package.json | 4 +- .../apps/private-static-env/package.json | 4 +- .../package.json | 4 +- .../apps/server-only-folder/package.json | 4 +- .../package.json | 4 +- .../apps/server-only-module/package.json | 4 +- .../package.json | 4 +- .../service-worker-private-env/package.json | 4 +- .../apps/syntax-error/package.json | 4 +- .../kit/test/prerendering/basics/package.json | 4 +- .../test/prerendering/options/package.json | 4 +- .../test/prerendering/paths-base/package.json | 4 +- packages/package/package.json | 2 +- playgrounds/basic/package.json | 4 +- pnpm-lock.yaml | 573 +++++++++--------- sites/kit.svelte.dev/package.json | 4 +- 37 files changed, 356 insertions(+), 355 deletions(-) diff --git a/package.json b/package.json index cb54c9e6c219..6a58191dac82 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "@changesets/cli": "^2.27.1", "@sveltejs/eslint-config": "^6.0.4", "@svitejs/changesets-changelog-github-compact": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^6.18.1", + "@typescript-eslint/eslint-plugin": "^6.19.1", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.35.1", diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index 68e2351a0654..0e554d4c898c 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -35,9 +35,9 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "@types/node": "^18.19.3", "sirv": "^2.0.4", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "peerDependencies": { "@sveltejs/kit": "^2.0.0" diff --git a/packages/adapter-static/test/apps/prerendered/package.json b/packages/adapter-static/test/apps/prerendered/package.json index f29d027f1991..b3aef3073c57 100644 --- a/packages/adapter-static/test/apps/prerendered/package.json +++ b/packages/adapter-static/test/apps/prerendered/package.json @@ -12,8 +12,8 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "sirv-cli": "^2.0.2", - "svelte": "^4.2.8", - "vite": "^5.0.11" + "svelte": "^4.2.9", + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/adapter-static/test/apps/spa/package.json b/packages/adapter-static/test/apps/spa/package.json index 057fb26bf091..4e0d1ea429a9 100644 --- a/packages/adapter-static/test/apps/spa/package.json +++ b/packages/adapter-static/test/apps/spa/package.json @@ -13,8 +13,8 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "sirv-cli": "^2.0.2", - "svelte": "^4.2.8", - "vite": "^5.0.11" + "svelte": "^4.2.9", + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/create-svelte/package.json b/packages/create-svelte/package.json index e7fb1a3dc362..6b9ab76aee88 100644 --- a/packages/create-svelte/package.json +++ b/packages/create-svelte/package.json @@ -22,7 +22,7 @@ "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", "sucrase": "^3.34.0", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "tiny-glob": "^0.2.9", "typescript": "^5.3.3", "vitest": "^1.2.0" diff --git a/packages/create-svelte/templates/default/package.json b/packages/create-svelte/templates/default/package.json index 82f64c412a7b..cb7c885681c8 100644 --- a/packages/create-svelte/templates/default/package.json +++ b/packages/create-svelte/templates/default/package.json @@ -12,9 +12,9 @@ "@sveltejs/adapter-auto": "workspace:*", "@sveltejs/kit": "workspace:*", "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module", "dependencies": { diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index ee5138ab417e..202709adb637 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -35,9 +35,9 @@ "@types/node": "^18.19.3", "estree-walker": "^3.0.3", "rollup": "^4.9.5", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "typescript": "^5.3.3", - "vite": "^5.0.11", + "vite": "^5.0.12", "vitest": "^1.2.0" } } diff --git a/packages/kit/package.json b/packages/kit/package.json index 01d3a0503aa5..f4e24ec85fe5 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -33,10 +33,10 @@ "@types/set-cookie-parser": "^2.4.7", "dts-buddy": "^0.4.3", "rollup": "^4.9.5", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-preprocess": "^5.1.3", "typescript": "^5.3.3", - "vite": "^5.0.11", + "vite": "^5.0.12", "vitest": "^1.2.0" }, "peerDependencies": { diff --git a/packages/kit/test/apps/amp/package.json b/packages/kit/test/apps/amp/package.json index 9a1de58d990c..d9bbe70ddd3d 100644 --- a/packages/kit/test/apps/amp/package.json +++ b/packages/kit/test/apps/amp/package.json @@ -17,10 +17,10 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", "dropcss": "^1.0.16", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index 4d0d79908fa4..e68ca1857fa5 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -18,10 +18,10 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", "marked": "^11.1.0", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/apps/dev-only/package.json b/packages/kit/test/apps/dev-only/package.json index 8ec984177e8b..a0e8c164c5c7 100644 --- a/packages/kit/test/apps/dev-only/package.json +++ b/packages/kit/test/apps/dev-only/package.json @@ -13,10 +13,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/apps/embed/package.json b/packages/kit/test/apps/embed/package.json index b41c255770de..8b9044cfa79c 100644 --- a/packages/kit/test/apps/embed/package.json +++ b/packages/kit/test/apps/embed/package.json @@ -15,10 +15,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/apps/no-ssr/package.json b/packages/kit/test/apps/no-ssr/package.json index 67da05a07672..f2738498614c 100644 --- a/packages/kit/test/apps/no-ssr/package.json +++ b/packages/kit/test/apps/no-ssr/package.json @@ -15,10 +15,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/apps/options-2/package.json b/packages/kit/test/apps/options-2/package.json index e80f933044f7..3f460ec314b2 100644 --- a/packages/kit/test/apps/options-2/package.json +++ b/packages/kit/test/apps/options-2/package.json @@ -16,10 +16,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/apps/options/package.json b/packages/kit/test/apps/options/package.json index bf81231022bd..c98514329717 100644 --- a/packages/kit/test/apps/options/package.json +++ b/packages/kit/test/apps/options/package.json @@ -15,10 +15,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/apps/writes/package.json b/packages/kit/test/apps/writes/package.json index 84f243c64d45..2fb15cac5448 100644 --- a/packages/kit/test/apps/writes/package.json +++ b/packages/kit/test/apps/writes/package.json @@ -15,10 +15,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json index 4d56f85b2c4d..ab238bb45c81 100644 --- a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json +++ b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json @@ -12,10 +12,10 @@ "@sveltejs/adapter-auto": "workspace:^", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json index 4d56f85b2c4d..ab238bb45c81 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json @@ -12,10 +12,10 @@ "@sveltejs/adapter-auto": "workspace:^", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json index b87a0177a66d..8a213aa39f0b 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json @@ -12,10 +12,10 @@ "@sveltejs/adapter-auto": "workspace:^", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json index 328d16b54e7f..7249f0474294 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json index bcaad5840857..92b21b9a0d8d 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json index 0e9ce597d74c..aff1e6b791e9 100644 --- a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-static-env/package.json b/packages/kit/test/build-errors/apps/private-static-env/package.json index 67ad251e202c..b5b7015cb3ce 100644 --- a/packages/kit/test/build-errors/apps/private-static-env/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env/package.json @@ -13,10 +13,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json index 33415f2ea294..4f78621f2b80 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-folder/package.json b/packages/kit/test/build-errors/apps/server-only-folder/package.json index a1a9fb697747..dd27b97468e3 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json index d3cd03ab0484..ea989e647c85 100644 --- a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-module/package.json b/packages/kit/test/build-errors/apps/server-only-module/package.json index 5e5ab149184c..b284658cdf6e 100644 --- a/packages/kit/test/build-errors/apps/server-only-module/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json index 2e52e3b9ca59..e4c82dafc225 100644 --- a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json index 2589addaeefc..d71e58dd1ad4 100644 --- a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/syntax-error/package.json b/packages/kit/test/build-errors/apps/syntax-error/package.json index 6f83402f59a5..217c97dc211f 100644 --- a/packages/kit/test/build-errors/apps/syntax-error/package.json +++ b/packages/kit/test/build-errors/apps/syntax-error/package.json @@ -10,10 +10,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module" } diff --git a/packages/kit/test/prerendering/basics/package.json b/packages/kit/test/prerendering/basics/package.json index 5b7f28112e90..abb06e463493 100644 --- a/packages/kit/test/prerendering/basics/package.json +++ b/packages/kit/test/prerendering/basics/package.json @@ -13,10 +13,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11", + "vite": "^5.0.12", "vitest": "^1.2.0" }, "type": "module" diff --git a/packages/kit/test/prerendering/options/package.json b/packages/kit/test/prerendering/options/package.json index eec3a4cb7766..7a8d0f7cec43 100644 --- a/packages/kit/test/prerendering/options/package.json +++ b/packages/kit/test/prerendering/options/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11", + "vite": "^5.0.12", "vitest": "^1.2.0" }, "type": "module" diff --git a/packages/kit/test/prerendering/paths-base/package.json b/packages/kit/test/prerendering/paths-base/package.json index b298e3f68450..901e0625d5d4 100644 --- a/packages/kit/test/prerendering/paths-base/package.json +++ b/packages/kit/test/prerendering/paths-base/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11", + "vite": "^5.0.12", "vitest": "^1.2.0" }, "type": "module" diff --git a/packages/package/package.json b/packages/package/package.json index 0f2ab578d0f1..4bbbb5da77a6 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -21,7 +21,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "@types/node": "^18.19.3", "@types/semver": "^7.5.6", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-preprocess": "^5.1.3", "typescript": "^5.3.3", "uvu": "^0.5.6" diff --git a/playgrounds/basic/package.json b/playgrounds/basic/package.json index d955657faa57..a59d9d3a0a1a 100644 --- a/playgrounds/basic/package.json +++ b/playgrounds/basic/package.json @@ -24,10 +24,10 @@ "@sveltejs/package": "workspace:*", "@sveltejs/vite-plugin-svelte": "^3.0.1", "publint": "^0.2.0", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.11" + "vite": "^5.0.12" }, "type": "module", "exports": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f538945982b9..8097ff5c56a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,13 +13,13 @@ importers: version: 2.27.1 '@sveltejs/eslint-config': specifier: ^6.0.4 - version: 6.0.4(@typescript-eslint/eslint-plugin@6.18.1)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@50.0.1)(eslint@8.56.0)(typescript@5.3.3) + version: 6.0.4(@typescript-eslint/eslint-plugin@6.19.1)(@typescript-eslint/parser@6.19.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@50.0.1)(eslint@8.56.0)(typescript@5.3.3) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.18.1 - version: 6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3) + specifier: ^6.19.1 + version: 6.19.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0)(typescript@5.3.3) eslint: specifier: ^8.56.0 version: 8.56.0 @@ -47,7 +47,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) '@types/node': specifier: ^18.19.3 version: 18.19.3 @@ -134,7 +134,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) '@types/node': specifier: ^18.19.3 version: 18.19.3 @@ -174,7 +174,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) '@types/node': specifier: ^18.19.3 version: 18.19.3 @@ -204,7 +204,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) '@types/node': specifier: ^18.19.3 version: 18.19.3 @@ -212,14 +212,14 @@ importers: specifier: ^2.0.4 version: 2.0.4 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/adapter-static/test/apps/prerendered: devDependencies: @@ -228,16 +228,16 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) sirv-cli: specifier: ^2.0.2 version: 2.0.2 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/adapter-static/test/apps/spa: devDependencies: @@ -249,16 +249,16 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) sirv-cli: specifier: ^2.0.2 version: 2.0.2 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/adapter-vercel: dependencies: @@ -274,7 +274,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) '@types/node': specifier: ^18.19.3 version: 18.19.3 @@ -314,13 +314,13 @@ importers: version: 3.1.1 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.1.2(prettier@3.1.1)(svelte@4.2.8) + version: 3.1.2(prettier@3.1.1)(svelte@4.2.9) sucrase: specifier: ^3.34.0 version: 3.34.0 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 tiny-glob: specifier: ^0.2.9 version: 0.2.9 @@ -348,16 +348,16 @@ importers: version: link:../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/create-svelte/templates/skeleton: devDependencies: @@ -372,7 +372,7 @@ importers: version: 0.30.5 svelte-parse-markup: specifier: ^0.1.2 - version: 0.1.2(svelte@4.2.8) + version: 0.1.2(svelte@4.2.9) vite-imagetools: specifier: ^6.2.8 version: 6.2.8(rollup@4.9.5) @@ -390,14 +390,14 @@ importers: specifier: ^4.9.5 version: 4.9.5 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) vitest: specifier: ^1.2.0 version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) @@ -446,7 +446,7 @@ importers: version: 1.41.0 '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) '@types/connect': specifier: ^3.4.38 version: 3.4.38 @@ -466,17 +466,17 @@ importers: specifier: ^4.9.5 version: 4.9.5 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-preprocess: specifier: ^5.1.3 - version: 5.1.3(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3) + version: 5.1.3(postcss@8.4.32)(svelte@4.2.9)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) vitest: specifier: ^1.2.0 version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) @@ -491,7 +491,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -499,17 +499,17 @@ importers: specifier: ^1.0.16 version: 1.0.16 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/apps/basics: devDependencies: @@ -518,7 +518,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -526,17 +526,17 @@ importers: specifier: ^11.1.0 version: 11.1.0 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/apps/dev-only: devDependencies: @@ -545,22 +545,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/apps/embed: devDependencies: @@ -569,22 +569,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/apps/no-ssr: devDependencies: @@ -593,22 +593,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/apps/options: devDependencies: @@ -617,22 +617,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/apps/options-2: devDependencies: @@ -644,22 +644,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/apps/writes: devDependencies: @@ -668,22 +668,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors: devDependencies: @@ -701,19 +701,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment: devDependencies: @@ -725,19 +725,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/prerenderable-not-prerendered: devDependencies: @@ -749,19 +749,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/private-dynamic-env: devDependencies: @@ -770,19 +770,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import: devDependencies: @@ -791,19 +791,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/private-static-env: devDependencies: @@ -812,22 +812,22 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/private-static-env-dynamic-import: devDependencies: @@ -836,19 +836,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/server-only-folder: devDependencies: @@ -857,19 +857,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/server-only-folder-dynamic-import: devDependencies: @@ -878,19 +878,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/server-only-module: devDependencies: @@ -899,19 +899,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/server-only-module-dynamic-import: devDependencies: @@ -920,19 +920,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/service-worker-dynamic-public-env: devDependencies: @@ -941,19 +941,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/service-worker-private-env: devDependencies: @@ -962,19 +962,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/syntax-error: devDependencies: @@ -983,19 +983,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) packages/kit/test/prerendering/basics: devDependencies: @@ -1004,19 +1004,19 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) vitest: specifier: ^1.2.0 version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) @@ -1028,19 +1028,19 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) vitest: specifier: ^1.2.0 version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) @@ -1052,19 +1052,19 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) vitest: specifier: ^1.2.0 version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) @@ -1125,11 +1125,11 @@ importers: version: 7.5.4 svelte2tsx: specifier: ~0.7.0 - version: 0.7.0(svelte@4.2.8)(typescript@5.3.3) + version: 0.7.0(svelte@4.2.9)(typescript@5.3.3) devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) '@types/node': specifier: ^18.19.3 version: 18.19.3 @@ -1137,11 +1137,11 @@ importers: specifier: ^7.5.6 version: 7.5.6 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-preprocess: specifier: ^5.1.3 - version: 5.1.3(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3) + version: 5.1.3(postcss@8.4.32)(svelte@4.2.9)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1183,22 +1183,22 @@ importers: version: link:../../packages/package '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) publint: specifier: ^0.2.0 version: 0.2.7 svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) sites/kit.svelte.dev: dependencies: @@ -1226,10 +1226,10 @@ importers: version: link:../../packages/kit '@sveltejs/site-kit': specifier: 6.0.0-next.59 - version: 6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.8) + version: 6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.9) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.11) + version: 3.0.1(svelte@4.2.9)(vite@5.0.12) '@types/d3-geo': specifier: ^3.1.0 version: 3.1.0 @@ -1253,7 +1253,7 @@ importers: version: 3.1.1 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.1.2(prettier@3.1.1)(svelte@4.2.8) + version: 3.1.2(prettier@3.1.1)(svelte@4.2.9) prism-svelte: specifier: ^0.5.0 version: 0.5.0 @@ -1264,14 +1264,14 @@ importers: specifier: ^3.1.2 version: 3.1.2(typescript@5.0.4) svelte: - specifier: ^4.2.8 - version: 4.2.8 + specifier: ^4.2.9 + version: 4.2.9 typescript: specifier: 5.0.4 version: 5.0.4 vite: - specifier: ^5.0.11 - version: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.0.12 + version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) vitest: specifier: ^1.2.0 version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) @@ -2293,7 +2293,7 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@6.18.1)(@typescript-eslint/parser@6.18.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@50.0.1)(eslint@8.56.0)(typescript@5.3.3): + /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@6.19.1)(@typescript-eslint/parser@6.19.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@50.0.1)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-U9pwmDs+DbmsnCgTfu6Bacdwqn0DuI1IQNSiQqTgzVyYfaaj+zy9ZoQCiJfxFBGXHkklyXuRHp0KMx346N0lcQ==} peerDependencies: '@typescript-eslint/eslint-plugin': '>= 5' @@ -2304,8 +2304,8 @@ packages: eslint-plugin-unicorn: '>= 47' typescript: '>= 4' dependencies: - '@typescript-eslint/eslint-plugin': 6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 eslint-config-prettier: 9.1.0(eslint@8.56.0) eslint-plugin-svelte: 2.35.1(eslint@8.56.0) @@ -2313,7 +2313,7 @@ packages: typescript: 5.3.3 dev: true - /@sveltejs/site-kit@6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.8): + /@sveltejs/site-kit@6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.9): resolution: {integrity: sha512-nAUCuunhN0DmurQBxbsauqvdvv4mL0F/Aluxq0hFf6gB3iSn9WdaUZdPMXoujy+8cy+m6UvKuyhkgApZhmOLvw==} peerDependencies: '@sveltejs/kit': ^1.20.0 @@ -2321,11 +2321,11 @@ packages: dependencies: '@sveltejs/kit': link:packages/kit esm-env: 1.0.0 - svelte: 4.2.8 - svelte-local-storage-store: 0.6.4(svelte@4.2.8) + svelte: 4.2.9 + svelte-local-storage-store: 0.6.4(svelte@4.2.9) dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.11): + /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12): resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} engines: {node: ^18.0.0 || >=20} peerDependencies: @@ -2333,30 +2333,30 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.11) + '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.9)(vite@5.0.12) debug: 4.3.4 - svelte: 4.2.8 - vite: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + svelte: 4.2.9 + vite: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.11): + /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.0.12): resolution: {integrity: sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.11) + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.5 - svelte: 4.2.8 - svelte-hmr: 0.15.3(svelte@4.2.8) - vite: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) - vitefu: 0.2.5(vite@5.0.11) + svelte: 4.2.9 + svelte-hmr: 0.15.3(svelte@4.2.9) + vite: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + vitefu: 0.2.5(vite@5.0.12) transitivePeerDependencies: - supports-color dev: true @@ -2473,8 +2473,8 @@ packages: '@types/node': 18.19.3 dev: true - /@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-nISDRYnnIpk7VCFrGcu1rnZfM1Dh9LRHnfgdkjcbi/l7g16VYRri3TjXi9Ir4lOZSw5N/gnV/3H7jIPQ8Q4daA==} + /@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -2485,11 +2485,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.18.1 - '@typescript-eslint/type-utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.18.1 + '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.19.1 + '@typescript-eslint/type-utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.19.1 debug: 4.3.4 eslint: 8.56.0 graphemer: 1.4.0 @@ -2502,8 +2502,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==} + /@typescript-eslint/parser@6.19.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2512,10 +2512,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.18.1 - '@typescript-eslint/types': 6.18.1 - '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.18.1 + '@typescript-eslint/scope-manager': 6.19.1 + '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.19.1 debug: 4.3.4 eslint: 8.56.0 typescript: 5.3.3 @@ -2523,16 +2523,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.18.1: - resolution: {integrity: sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw==} + /@typescript-eslint/scope-manager@6.19.1: + resolution: {integrity: sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.18.1 - '@typescript-eslint/visitor-keys': 6.18.1 + '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/visitor-keys': 6.19.1 dev: true - /@typescript-eslint/type-utils@6.18.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q==} + /@typescript-eslint/type-utils@6.19.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2541,8 +2541,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) - '@typescript-eslint/utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.56.0 ts-api-utils: 1.0.3(typescript@5.3.3) @@ -2551,13 +2551,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.18.1: - resolution: {integrity: sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw==} + /@typescript-eslint/types@6.19.1: + resolution: {integrity: sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.18.1(typescript@5.3.3): - resolution: {integrity: sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA==} + /@typescript-eslint/typescript-estree@6.19.1(typescript@5.3.3): + resolution: {integrity: sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -2565,8 +2565,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.18.1 - '@typescript-eslint/visitor-keys': 6.18.1 + '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/visitor-keys': 6.19.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -2578,8 +2578,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.18.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ==} + /@typescript-eslint/utils@6.19.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2587,9 +2587,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.18.1 - '@typescript-eslint/types': 6.18.1 - '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.19.1 + '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: @@ -2597,11 +2597,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.18.1: - resolution: {integrity: sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA==} + /@typescript-eslint/visitor-keys@6.19.1: + resolution: {integrity: sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/types': 6.19.1 eslint-visitor-keys: 3.4.3 dev: true @@ -2863,8 +2863,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + /axobject-query@4.0.0: + resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} dependencies: dequal: 2.0.3 @@ -5301,14 +5301,14 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.8): + /prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.9): resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 dependencies: prettier: 3.1.1 - svelte: 4.2.8 + svelte: 4.2.9 dev: true /prettier@2.8.8: @@ -5933,7 +5933,7 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check@3.6.3(postcss@8.4.32)(svelte@4.2.8): + /svelte-check@3.6.3(postcss@8.4.32)(svelte@4.2.9): resolution: {integrity: sha512-Q2nGnoysxUnB9KjnjpQLZwdjK62DHyW6nuH/gm2qteFnDk0lCehe/6z8TsIvYeKjC6luKaWxiNGyOcWiLLPSwA==} hasBin: true peerDependencies: @@ -5945,8 +5945,8 @@ packages: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.8 - svelte-preprocess: 5.1.3(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3) + svelte: 4.2.9 + svelte-preprocess: 5.1.3(postcss@8.4.32)(svelte@4.2.9)(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - '@babel/core' @@ -5976,33 +5976,33 @@ packages: postcss-scss: 4.0.9(postcss@8.4.32) dev: true - /svelte-hmr@0.15.3(svelte@4.2.8): + /svelte-hmr@0.15.3(svelte@4.2.9): resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.8 + svelte: 4.2.9 dev: true - /svelte-local-storage-store@0.6.4(svelte@4.2.8): + /svelte-local-storage-store@0.6.4(svelte@4.2.9): resolution: {integrity: sha512-45WoY2vSGPQM1sIQJ9jTkPPj20hYeqm+af6mUGRFSPP5WglZf36YYoZqwmZZ8Dt/2SU8lem+BTA8/Z/8TkqNLg==} engines: {node: '>=0.14'} peerDependencies: svelte: ^3.48.0 || >4.0.0 dependencies: - svelte: 4.2.8 + svelte: 4.2.9 dev: true - /svelte-parse-markup@0.1.2(svelte@4.2.8): + /svelte-parse-markup@0.1.2(svelte@4.2.9): resolution: {integrity: sha512-DycY7DJr7VqofiJ63ut1/NEG92HrWWL56VWITn/cJCu+LlZhMoBkBXT4opUitPEEwbq1nMQbv4vTKUfbOqIW1g==} peerDependencies: svelte: ^3.0.0 || ^4.0.0 dependencies: - svelte: 4.2.8 + svelte: 4.2.9 dev: false - /svelte-preprocess@5.1.3(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3): + /svelte-preprocess@5.1.3(postcss@8.4.32)(svelte@4.2.9)(typescript@5.3.3): resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} engines: {node: '>= 16.0.0', pnpm: ^8.0.0} requiresBuild: true @@ -6046,11 +6046,11 @@ packages: postcss: 8.4.32 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.8 + svelte: 4.2.9 typescript: 5.3.3 dev: true - /svelte2tsx@0.7.0(svelte@4.2.8)(typescript@5.3.3): + /svelte2tsx@0.7.0(svelte@4.2.9)(typescript@5.3.3): resolution: {integrity: sha512-qAelcydnmuiDvD1HsrWi23RWx24RZTKRv6n4JaGC/pkoJfbLkJPQT2wa1qN0ZyfKTNLSyoj2FW9z62l/AUzUNA==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 @@ -6058,20 +6058,21 @@ packages: dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.8 + svelte: 4.2.9 typescript: 5.3.3 dev: false - /svelte@4.2.8: - resolution: {integrity: sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==} + /svelte@4.2.9: + resolution: {integrity: sha512-hsoB/WZGEPFXeRRLPhPrbRz67PhP6sqYgvwcAs+gWdSQSvNDw+/lTeUJSWe5h2xC97Fz/8QxAOqItwBzNJPU8w==} engines: {node: '>=16'} dependencies: '@ampproject/remapping': 2.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.20 + '@types/estree': 1.0.5 acorn: 8.11.3 aria-query: 5.3.0 - axobject-query: 3.2.1 + axobject-query: 4.0.0 code-red: 1.0.4 css-tree: 2.3.1 estree-walker: 3.0.3 @@ -6398,7 +6399,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + vite: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) transitivePeerDependencies: - '@types/node' - less @@ -6410,8 +6411,8 @@ packages: - terser dev: true - /vite@5.0.11(@types/node@18.19.3)(lightningcss@1.22.1): - resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==} + /vite@5.0.12(@types/node@18.19.3)(lightningcss@1.22.1): + resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6447,7 +6448,7 @@ packages: fsevents: 2.3.3 dev: true - /vitefu@0.2.5(vite@5.0.11): + /vitefu@0.2.5(vite@5.0.12): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -6455,7 +6456,7 @@ packages: vite: optional: true dependencies: - vite: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + vite: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) dev: true /vitest@1.2.0(@types/node@18.19.3)(lightningcss@1.22.1): @@ -6502,7 +6503,7 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.8.1 - vite: 5.0.11(@types/node@18.19.3)(lightningcss@1.22.1) + vite: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) vite-node: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) why-is-node-running: 2.2.2 transitivePeerDependencies: diff --git a/sites/kit.svelte.dev/package.json b/sites/kit.svelte.dev/package.json index c782f65b42f0..c80a206611c9 100644 --- a/sites/kit.svelte.dev/package.json +++ b/sites/kit.svelte.dev/package.json @@ -30,9 +30,9 @@ "prism-svelte": "^0.5.0", "prismjs": "^1.29.0", "shiki-twoslash": "^3.1.2", - "svelte": "^4.2.8", + "svelte": "^4.2.9", "typescript": "5.0.4", - "vite": "^5.0.11", + "vite": "^5.0.12", "vitest": "^1.2.0" }, "type": "module", From 507311b79821d4d725917a3666db9c9844d9076e Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Thu, 25 Jan 2024 10:04:04 +0100 Subject: [PATCH 003/454] fix: strip `/@fs` prefix correctly on Windows when invoking `read()` in dev mode (#11728) Windows absolute paths look like `/@fs/C:/..` - when stripping the fs prefix, we need to remove the additional slash after the fs --- .changeset/fresh-points-smoke.md | 5 +++++ packages/kit/src/exports/vite/dev/index.js | 10 +++++----- packages/kit/src/utils/filesystem.js | 13 +++++++++++++ .../basics/src/routes/read-file/+page.server.js | 8 +++++++- .../basics/src/routes/read-file/+page.svelte | 1 + .../apps/basics/test/cross-platform/test.js | 17 +++++++++++++++++ packages/kit/test/apps/basics/test/test.js | 13 ------------- packages/kit/test/apps/read-file-test.txt | 1 + 8 files changed, 49 insertions(+), 19 deletions(-) create mode 100644 .changeset/fresh-points-smoke.md create mode 100644 packages/kit/test/apps/read-file-test.txt diff --git a/.changeset/fresh-points-smoke.md b/.changeset/fresh-points-smoke.md new file mode 100644 index 000000000000..100667bb8544 --- /dev/null +++ b/.changeset/fresh-points-smoke.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: strip `/@fs` prefix correctly on Windows when invoking `read()` in dev mode diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 5981025da4ce..c3616321094e 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -8,7 +8,7 @@ import { isCSSRequest, loadEnv, buildErrorMessage } from 'vite'; import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js'; import { installPolyfills } from '../../../exports/node/polyfills.js'; import { coalesce_to_error } from '../../../utils/error.js'; -import { posixify, resolve_entry, to_fs } from '../../../utils/filesystem.js'; +import { from_fs, posixify, resolve_entry, to_fs } from '../../../utils/filesystem.js'; import { load_error_page } from '../../../core/config/index.js'; import { SVELTE_KIT_ASSETS } from '../../../constants.js'; import * as sync from '../../../core/sync/sync.js'; @@ -87,7 +87,7 @@ export async function dev(vite, vite_config, svelte_config) { /** @param {string} id */ async function resolve(id) { - const url = id.startsWith('..') ? `/@fs${path.posix.resolve(id)}` : `/${id}`; + const url = id.startsWith('..') ? to_fs(path.posix.resolve(id)) : `/${id}`; const module = await loud_ssr_load_module(url); @@ -137,8 +137,8 @@ export async function dev(vite, vite_config, svelte_config) { server_assets: new Proxy( {}, { - has: (_, /** @type {string} */ file) => fs.existsSync(file.replace(/^\/@fs/, '')), - get: (_, /** @type {string} */ file) => fs.statSync(file.replace(/^\/@fs/, '')).size + has: (_, /** @type {string} */ file) => fs.existsSync(from_fs(file)), + get: (_, /** @type {string} */ file) => fs.statSync(from_fs(file)).size } ), nodes: manifest_data.nodes.map((node, index) => { @@ -493,7 +493,7 @@ export async function dev(vite, vite_config, svelte_config) { await server.init({ env, - read: (file) => createReadableStream(file.replace(/^\/@fs/, '')) + read: (file) => createReadableStream(from_fs(file)) }); const request = await getRequest({ diff --git a/packages/kit/src/utils/filesystem.js b/packages/kit/src/utils/filesystem.js index d79ead041153..3534295ff011 100644 --- a/packages/kit/src/utils/filesystem.js +++ b/packages/kit/src/utils/filesystem.js @@ -148,6 +148,19 @@ export function to_fs(str) { }${str}`; } +/** + * Removes `/@fs` prefix from given path and posixifies it + * @param {string} str + */ +export function from_fs(str) { + str = posixify(str); + if (!str.startsWith('/@fs')) return str; + + str = str.slice(4); + // Windows/Linux separation - Windows starts with a drive letter, we need to strip the additional / here + return str[2] === ':' && /[A-Z]/.test(str[1]) ? str.slice(1) : str; +} + /** * Given an entry point like [cwd]/src/hooks, returns a filename like [cwd]/src/hooks.js or [cwd]/src/hooks/index.js * @param {string} entry diff --git a/packages/kit/test/apps/basics/src/routes/read-file/+page.server.js b/packages/kit/test/apps/basics/src/routes/read-file/+page.server.js index e6e59d503a8a..1b89fef87df1 100644 --- a/packages/kit/test/apps/basics/src/routes/read-file/+page.server.js +++ b/packages/kit/test/apps/basics/src/routes/read-file/+page.server.js @@ -3,6 +3,11 @@ import { read } from '$app/server'; import auto from './auto.txt'; import url from './url.txt?url'; +const glob = import.meta.glob('../../../../read-file-test.txt', { + as: 'url', + eager: true +}); + export async function load() { if (!dev && !auto.startsWith('data:')) { throw new Error('expected auto.txt to be inlined'); @@ -10,6 +15,7 @@ export async function load() { return { auto: await read(auto).text(), - url: await read(url).text() + url: await read(url).text(), + glob: await read(Object.values(glob)[0]).text() }; } diff --git a/packages/kit/test/apps/basics/src/routes/read-file/+page.svelte b/packages/kit/test/apps/basics/src/routes/read-file/+page.svelte index a23efdda786c..0b8a429cb0b9 100644 --- a/packages/kit/test/apps/basics/src/routes/read-file/+page.svelte +++ b/packages/kit/test/apps/basics/src/routes/read-file/+page.svelte @@ -4,3 +4,4 @@

{data.auto}

{data.url}

+

{data.glob}

diff --git a/packages/kit/test/apps/basics/test/cross-platform/test.js b/packages/kit/test/apps/basics/test/cross-platform/test.js index 93b38f17302b..76418c2fa83f 100644 --- a/packages/kit/test/apps/basics/test/cross-platform/test.js +++ b/packages/kit/test/apps/basics/test/cross-platform/test.js @@ -1033,3 +1033,20 @@ test.describe('XSS', () => { ); }); }); + +test.describe('$app/server', () => { + test('can read a file', async ({ page }) => { + await page.goto('/read-file'); + + const auto = await page.textContent('[data-testid="auto"]'); + const url = await page.textContent('[data-testid="url"]'); + const glob = await page.textContent('[data-testid="glob"]'); + + // the emoji is there to check that base64 decoding works correctly + expect(auto.trim()).toBe('Imported without ?url 😎'); + expect(url.trim()).toBe('Imported with ?url 😎'); + expect(glob.trim()).toBe( + 'Imported with url glob from the read-file test in basics. Placed here outside the app folder to force a /@fs prefix 😎' + ); + }); +}); diff --git a/packages/kit/test/apps/basics/test/test.js b/packages/kit/test/apps/basics/test/test.js index 9c6d8a5c14f8..170c0eb16ae2 100644 --- a/packages/kit/test/apps/basics/test/test.js +++ b/packages/kit/test/apps/basics/test/test.js @@ -732,19 +732,6 @@ test.describe('$app/paths', () => { }); }); -test.describe('$app/server', () => { - test('can read a file', async ({ page }) => { - await page.goto('/read-file'); - - const auto = await page.textContent('[data-testid="auto"]'); - const url = await page.textContent('[data-testid="url"]'); - - // the emoji is there to check that base64 decoding works correctly - expect(auto.trim()).toBe('Imported without ?url 😎'); - expect(url.trim()).toBe('Imported with ?url 😎'); - }); -}); - test.describe('$app/stores', () => { test('can access page.url', async ({ baseURL, page }) => { await page.goto('/origin'); diff --git a/packages/kit/test/apps/read-file-test.txt b/packages/kit/test/apps/read-file-test.txt new file mode 100644 index 000000000000..7417d9e87b0b --- /dev/null +++ b/packages/kit/test/apps/read-file-test.txt @@ -0,0 +1 @@ +Imported with url glob from the read-file test in basics. Placed here outside the app folder to force a /@fs prefix 😎 From 0dfb0cc0ed0658a2a8b56a53481ca82a997d71bf Mon Sep 17 00:00:00 2001 From: codenoid <14269809+codenoid@users.noreply.github.com> Date: Fri, 26 Jan 2024 00:00:13 +0700 Subject: [PATCH 004/454] fix: version range handling in update_pkg function (#11716) keep user's library version if higher than hard-defined version fixes #11693 --- .changeset/silly-donkeys-shout.md | 5 + packages/migrate/README.md | 1 + .../migrate/migrations/package/migrate_pkg.js | 8 +- .../routes/migrate_page_js/index.js | 4 +- .../routes/migrate_page_server/index.js | 4 +- .../migrations/routes/migrate_server/index.js | 2 +- .../migrations/svelte-4/migrate.spec.js | 1 - packages/migrate/package.json | 4 +- packages/migrate/utils.js | 37 ++-- packages/migrate/utils.spec.js | 166 ++++++++++-------- 10 files changed, 133 insertions(+), 99 deletions(-) create mode 100644 .changeset/silly-donkeys-shout.md diff --git a/.changeset/silly-donkeys-shout.md b/.changeset/silly-donkeys-shout.md new file mode 100644 index 000000000000..a1879cdc773d --- /dev/null +++ b/.changeset/silly-donkeys-shout.md @@ -0,0 +1,5 @@ +--- +"svelte-migrate": patch +--- + +fix: don't downgrade versions when bumping dependencies diff --git a/packages/migrate/README.md b/packages/migrate/README.md index 83f0892ad1dc..fbb6685678f4 100644 --- a/packages/migrate/README.md +++ b/packages/migrate/README.md @@ -3,6 +3,7 @@ A CLI for migrating Svelte(Kit) codebases. Run it using + ``` npx svelte-migrate [migration] ``` diff --git a/packages/migrate/migrations/package/migrate_pkg.js b/packages/migrate/migrations/package/migrate_pkg.js index eeb751f1d97e..3e5f5b6ab273 100644 --- a/packages/migrate/migrations/package/migrate_pkg.js +++ b/packages/migrate/migrations/package/migrate_pkg.js @@ -34,10 +34,10 @@ function analyze(config, file) { const dest = svelte_extension ? name.slice(0, -svelte_extension.length) + '.svelte' : name.endsWith('.d.ts') - ? name - : name.endsWith('.ts') - ? name.slice(0, -3) + '.js' - : name; + ? name + : name.endsWith('.ts') + ? name.slice(0, -3) + '.js' + : name; return { name, diff --git a/packages/migrate/migrations/routes/migrate_page_js/index.js b/packages/migrate/migrations/routes/migrate_page_js/index.js index e30b005a57f2..2fdb5e66d942 100644 --- a/packages/migrate/migrations/routes/migrate_page_js/index.js +++ b/packages/migrate/migrations/routes/migrate_page_js/index.js @@ -90,8 +90,8 @@ export function migrate_page(content, filename) { const message = is_string_like(nodes.error) ? nodes.error.getText() : is_new(nodes.error, 'Error') - ? /** @type {string | undefined} */ (nodes.error.arguments[0]?.getText()) - : false; + ? /** @type {string | undefined} */ (nodes.error.arguments[0]?.getText()) + : false; if (message !== false) { automigration( diff --git a/packages/migrate/migrations/routes/migrate_page_server/index.js b/packages/migrate/migrations/routes/migrate_page_server/index.js index db5f77b69cbc..d6556e7ac744 100644 --- a/packages/migrate/migrations/routes/migrate_page_server/index.js +++ b/packages/migrate/migrations/routes/migrate_page_server/index.js @@ -46,8 +46,8 @@ export function migrate_page_server(content, filename) { const load_name = match?.[3] ? `LayoutServerLoad.${match[3]}` : match?.[2] - ? 'LayoutServerLoad' - : 'PageServerLoad'; + ? 'LayoutServerLoad' + : 'PageServerLoad'; const has_load = file.exports.map.has('GET'); const has_action = non_get_methods.some((method) => file.exports.map.has(method)); diff --git a/packages/migrate/migrations/routes/migrate_server/index.js b/packages/migrate/migrations/routes/migrate_server/index.js index eeaa902ee965..d9092d554651 100644 --- a/packages/migrate/migrations/routes/migrate_server/index.js +++ b/packages/migrate/migrations/routes/migrate_server/index.js @@ -147,7 +147,7 @@ export function migrate_server(content) { init.length > 0 ? `new Response(${body}, {${join_whitespace}${init.join( `,${join_whitespace}` - )}${end_whitespace}})` + )}${end_whitespace}})` : `new Response(${body})`; if (safe_body) { diff --git a/packages/migrate/migrations/svelte-4/migrate.spec.js b/packages/migrate/migrations/svelte-4/migrate.spec.js index d3c66b5dc46b..f0c34cddd1da 100644 --- a/packages/migrate/migrations/svelte-4/migrate.spec.js +++ b/packages/migrate/migrations/svelte-4/migrate.spec.js @@ -363,7 +363,6 @@ test('Update package.json', () => { ); }); - test('Does not downgrade versions', () => { const result = update_pkg_json_content(`{ "devDependencies": { diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 51aa21f224f9..f3f936e44678 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -41,6 +41,8 @@ }, "scripts": { "test": "vitest run --silent", - "check": "tsc" + "check": "tsc", + "lint": "prettier --check .", + "format": "pnpm lint --write" } } diff --git a/packages/migrate/utils.js b/packages/migrate/utils.js index a01be4bde3f6..71ec9e44e979 100644 --- a/packages/migrate/utils.js +++ b/packages/migrate/utils.js @@ -215,23 +215,30 @@ export function update_pkg(content, updates) { * @param {'dependencies' | 'devDependencies' | undefined} [insert] */ function update_pkg(name, version, additional = '', insert) { - if (pkg.dependencies?.[name]) { - const existing_range = pkg.dependencies[name]; - - if (semver.validRange(existing_range) && !semver.subset(existing_range, version)) { - log_migration(`Updated ${name} to ${version} ${additional}`); - pkg.dependencies[name] = version; + /** + * @param {string} type + */ + const updateVersion = (type) => { + const existingRange = pkg[type]?.[name]; + + if ( + existingRange && + semver.validRange(existingRange) && + !semver.subset(existingRange, version) + ) { + // Check if the new version range is an upgrade + const minExistingVersion = semver.minVersion(existingRange); + const minNewVersion = semver.minVersion(version); + + if (minExistingVersion && minNewVersion && semver.gt(minNewVersion, minExistingVersion)) { + log_migration(`Updated ${name} to ${version}`); + pkg[type][name] = version; + } } - } - - if (pkg.devDependencies?.[name]) { - const existing_range = pkg.devDependencies[name]; + }; - if (semver.validRange(existing_range) && !semver.subset(existing_range, version)) { - log_migration(`Updated ${name} to ${version} ${additional}`); - pkg.devDependencies[name] = version; - } - } + updateVersion('dependencies'); + updateVersion('devDependencies'); if (insert && !pkg[insert]?.[name]) { if (!pkg[insert]) pkg[insert] = {}; diff --git a/packages/migrate/utils.spec.js b/packages/migrate/utils.spec.js index cd9437e2968f..a75641e6055f 100644 --- a/packages/migrate/utils.spec.js +++ b/packages/migrate/utils.spec.js @@ -1,73 +1,93 @@ -import { assert, test } from 'vitest'; -import { update_pkg } from './utils.js'; - -test('Inserts package at correct position (1)', () => { - const result = update_pkg( - `{ - "dependencies": { - "a": "1", - "z": "3", - "c": "4" - } -}`, - [['b', '2', '', 'dependencies']] - ); - - assert.equal( - result, - `{ - "dependencies": { - "a": "1", - "b": "2", - "z": "3", - "c": "4" - } -}` - ); -}); - -test('Inserts package at correct position (2)', () => { - const result = update_pkg( - `{ - "dependencies": { - "a": "1", - "b": "2" - } -}`, - [['c', '3', '', 'dependencies']] - ); - - assert.equal( - result, - `{ - "dependencies": { - "a": "1", - "b": "2", - "c": "3" - } -}` - ); -}); - -test('Inserts package at correct position (3)', () => { - const result = update_pkg( - `{ - "dependencies": { - "b": "2", - "c": "3" - } -}`, - [['a', '1', '', 'dependencies']] - ); - - assert.equal( - result, - `{ - "dependencies": { - "a": "1", - "b": "2", - "c": "3" - } -}` - ); -}); +import { assert, test } from 'vitest'; +import { update_pkg } from './utils.js'; + +test('Inserts package at correct position (1)', () => { + const result = update_pkg( + `{ + "dependencies": { + "a": "1", + "z": "3", + "c": "4" + } +}`, + [['b', '2', '', 'dependencies']] + ); + + assert.equal( + result, + `{ + "dependencies": { + "a": "1", + "b": "2", + "z": "3", + "c": "4" + } +}` + ); +}); + +test('Inserts package at correct position (2)', () => { + const result = update_pkg( + `{ + "dependencies": { + "a": "1", + "b": "2" + } +}`, + [['c', '3', '', 'dependencies']] + ); + + assert.equal( + result, + `{ + "dependencies": { + "a": "1", + "b": "2", + "c": "3" + } +}` + ); +}); + +test('Inserts package at correct position (3)', () => { + const result = update_pkg( + `{ + "dependencies": { + "b": "2", + "c": "3" + } +}`, + [['a', '1', '', 'dependencies']] + ); + + assert.equal( + result, + `{ + "dependencies": { + "a": "1", + "b": "2", + "c": "3" + } +}` + ); +}); + +test('Does not downgrade versions', () => { + const result = update_pkg( + `{ + "devDependencies": { + "@sveltejs/kit": "^2.4.3" + } +}`, + [['@sveltejs/kit', '^2.0.0']] + ); + + assert.equal( + result, + `{ + "devDependencies": { + "@sveltejs/kit": "^2.4.3" + } +}` + ); +}); From 440a5463e2f6939db4560955e5969850de855ad6 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Thu, 25 Jan 2024 18:55:55 +0100 Subject: [PATCH 005/454] chore: clean up emulator types (#11737) * chore: clean up emulator types - the Emulator type is not a class export - make validated config types more correct by leaving adapter types as optional * fix * ok that doesnt work for some reason --------- Co-authored-by: Rich Harris --- packages/kit/src/core/adapt/index.js | 3 ++- packages/kit/src/exports/public.d.ts | 2 +- packages/kit/src/exports/vite/dev/index.js | 2 -- packages/kit/src/exports/vite/index.js | 1 - packages/kit/src/exports/vite/preview/index.js | 1 - packages/kit/src/types/internal.d.ts | 12 +++++++++--- packages/kit/types/index.d.ts | 11 +++++++++-- 7 files changed, 21 insertions(+), 11 deletions(-) diff --git a/packages/kit/src/core/adapt/index.js b/packages/kit/src/core/adapt/index.js index 235d18526687..3cfe52753248 100644 --- a/packages/kit/src/core/adapt/index.js +++ b/packages/kit/src/core/adapt/index.js @@ -19,7 +19,8 @@ export async function adapt( log, vite_config ) { - const { name, adapt } = config.kit.adapter; + // This is only called when adapter is truthy, so the cast is safe + const { name, adapt } = /** @type {import('@sveltejs/kit').Adapter} */ (config.kit.adapter); console.log(colors.bold().cyan(`\n> Using ${name}`)); diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index a9b808387123..e8d1c16ea01b 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -268,7 +268,7 @@ export interface Cookies { /** * A collection of functions that influence the environment during dev, build and prerendering */ -export class Emulator { +export interface Emulator { /** * A function that is called with the current route `config` and `prerender` option * and returns an `App.Platform` object diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index c3616321094e..503cb51feb45 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -419,8 +419,6 @@ export async function dev(vite, vite_config, svelte_config) { }); const env = loadEnv(vite_config.mode, svelte_config.kit.env.dir, ''); - - // TODO because of `RecursiveRequired`, TypeScript thinks this is guaranteed to exist, but it isn't const emulator = await svelte_config.kit.adapter?.emulate?.(); return () => { diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 94d511ab86e7..e80fb786aca9 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -164,7 +164,6 @@ export async function sveltekit() { preprocess, onwarn: svelte_config.onwarn, compilerOptions: { - // @ts-expect-error SvelteKit requires hydratable true by default hydratable: isSvelte5Plus() ? undefined : true, ...svelte_config.compilerOptions }, diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 3246fc6fe008..1e70d40573ee 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -51,7 +51,6 @@ export async function preview(vite, vite_config, svelte_config) { read: (file) => createReadableStream(`${dir}/${file}`) }); - // TODO because of `RecursiveRequired`, TypeScript thinks this is guaranteed to exist, but it isn't const emulator = await svelte_config.kit.adapter?.emulate?.(); return () => { diff --git a/packages/kit/src/types/internal.d.ts b/packages/kit/src/types/internal.d.ts index 864de0be71a3..af50cbe74c7d 100644 --- a/packages/kit/src/types/internal.d.ts +++ b/packages/kit/src/types/internal.d.ts @@ -16,7 +16,8 @@ import { Reroute, RequestEvent, SSRManifest, - Emulator + Emulator, + Adapter } from '@sveltejs/kit'; import { HttpMethod, @@ -434,9 +435,14 @@ export interface Uses { search_params: Set; } -export type ValidatedConfig = RecursiveRequired; +export type ValidatedConfig = Config & { + kit: ValidatedKitConfig; + extensions: string[]; +}; -export type ValidatedKitConfig = RecursiveRequired; +export type ValidatedKitConfig = Omit, 'adapter'> & { + adapter?: Adapter; +}; export * from '../exports/index.js'; export * from './private.js'; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 5c43bbac143f..eaa09c454eff 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -250,7 +250,7 @@ declare module '@sveltejs/kit' { /** * A collection of functions that influence the environment during dev, build and prerendering */ - export class Emulator { + export interface Emulator { /** * A function that is called with the current route `config` and `prerender` option * and returns an `App.Platform` object @@ -1748,7 +1748,14 @@ declare module '@sveltejs/kit' { endpoint_id?: string; } - type ValidatedConfig = RecursiveRequired; + type ValidatedConfig = Config & { + kit: ValidatedKitConfig; + extensions: string[]; + }; + + type ValidatedKitConfig = Omit, 'adapter'> & { + adapter?: Adapter; + }; /** * Throws an error with a HTTP status code and an optional message. * When called during request handling, this will cause SvelteKit to From 969e69fa0f0d2f631a64166a7f80035971056401 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Jan 2024 13:30:24 -0500 Subject: [PATCH 006/454] Version Packages (#11735) Co-authored-by: github-actions[bot] --- .changeset/chatty-walls-warn.md | 5 ----- .changeset/fresh-points-smoke.md | 5 ----- .changeset/silly-donkeys-shout.md | 5 ----- packages/kit/CHANGELOG.md | 10 ++++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- packages/migrate/CHANGELOG.md | 6 ++++++ packages/migrate/package.json | 2 +- 8 files changed, 19 insertions(+), 18 deletions(-) delete mode 100644 .changeset/chatty-walls-warn.md delete mode 100644 .changeset/fresh-points-smoke.md delete mode 100644 .changeset/silly-donkeys-shout.md diff --git a/.changeset/chatty-walls-warn.md b/.changeset/chatty-walls-warn.md deleted file mode 100644 index bd2481409320..000000000000 --- a/.changeset/chatty-walls-warn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": minor ---- - -feat: dev/preview/prerender platform emulation diff --git a/.changeset/fresh-points-smoke.md b/.changeset/fresh-points-smoke.md deleted file mode 100644 index 100667bb8544..000000000000 --- a/.changeset/fresh-points-smoke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: strip `/@fs` prefix correctly on Windows when invoking `read()` in dev mode diff --git a/.changeset/silly-donkeys-shout.md b/.changeset/silly-donkeys-shout.md deleted file mode 100644 index a1879cdc773d..000000000000 --- a/.changeset/silly-donkeys-shout.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"svelte-migrate": patch ---- - -fix: don't downgrade versions when bumping dependencies diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 2822769a443c..68eb111af76e 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,15 @@ # @sveltejs/kit +## 2.5.0 + +### Minor Changes + +- feat: dev/preview/prerender platform emulation ([#11730](https://github.com/sveltejs/kit/pull/11730)) + +### Patch Changes + +- fix: strip `/@fs` prefix correctly on Windows when invoking `read()` in dev mode ([#11728](https://github.com/sveltejs/kit/pull/11728)) + ## 2.4.3 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index f4e24ec85fe5..eba4b9a2df7d 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.4.3", + "version": "2.5.0", "description": "The fastest way to build Svelte apps", "repository": { "type": "git", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index a2e8d436bc72..e1acb48e7e4b 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.4.3'; +export const VERSION = '2.5.0'; diff --git a/packages/migrate/CHANGELOG.md b/packages/migrate/CHANGELOG.md index c0ec91d0c929..f31a8eac4a37 100644 --- a/packages/migrate/CHANGELOG.md +++ b/packages/migrate/CHANGELOG.md @@ -1,5 +1,11 @@ # svelte-migrate +## 1.3.7 + +### Patch Changes + +- fix: don't downgrade versions when bumping dependencies ([#11716](https://github.com/sveltejs/kit/pull/11716)) + ## 1.3.6 ### Patch Changes diff --git a/packages/migrate/package.json b/packages/migrate/package.json index f3f936e44678..d9c81c41a48c 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -1,6 +1,6 @@ { "name": "svelte-migrate", - "version": "1.3.6", + "version": "1.3.7", "description": "A CLI for migrating Svelte(Kit) codebases", "repository": { "type": "git", From 99cddbfdb2332111d348043476462f5356a23660 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 27 Jan 2024 17:09:37 -0800 Subject: [PATCH 007/454] chore(deps): update pnpm to v8.15.0 (#11750) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6a58191dac82..ed20f600dbc7 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "eslint-plugin-unicorn": "^50.0.0", "playwright": "^1.41.0" }, - "packageManager": "pnpm@8.14.3", + "packageManager": "pnpm@8.15.0", "engines": { "pnpm": "^8.0.0" } From a6333a5d0833781c6572098a6240976e84fb5150 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 20:32:13 -0800 Subject: [PATCH 008/454] chore(deps): update pnpm to v8.15.1 (#11756) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ed20f600dbc7..4d07386ca663 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "eslint-plugin-unicorn": "^50.0.0", "playwright": "^1.41.0" }, - "packageManager": "pnpm@8.15.0", + "packageManager": "pnpm@8.15.1", "engines": { "pnpm": "^8.0.0" } From 311fe8f3c01c7216ae1317d026ba62636f6f660e Mon Sep 17 00:00:00 2001 From: Patrick Date: Wed, 31 Jan 2024 12:45:32 +0100 Subject: [PATCH 009/454] fix: `popstate` navigations take `pushState` navigations into account (#11765) Fixes #11523 --- .changeset/stale-games-shake.md | 5 +++++ packages/kit/src/runtime/client/client.js | 1 + packages/kit/test/apps/basics/test/client.test.js | 11 +++++++++++ 3 files changed, 17 insertions(+) create mode 100644 .changeset/stale-games-shake.md diff --git a/.changeset/stale-games-shake.md b/.changeset/stale-games-shake.md new file mode 100644 index 000000000000..a2345b83c677 --- /dev/null +++ b/.changeset/stale-games-shake.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: `popstate` navigations take `pushState` navigations into account diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index e1bc5f7368d3..8caf64c2618c 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -1818,6 +1818,7 @@ export function pushState(url, state) { }; history.pushState(opts, '', resolve_url(url)); + has_navigated = true; page = { ...page, state }; root.$set({ page }); diff --git a/packages/kit/test/apps/basics/test/client.test.js b/packages/kit/test/apps/basics/test/client.test.js index f0e9ead9f209..21a5546bc978 100644 --- a/packages/kit/test/apps/basics/test/client.test.js +++ b/packages/kit/test/apps/basics/test/client.test.js @@ -989,6 +989,17 @@ test.describe('Shallow routing', () => { await expect(page.locator('span')).not.toHaveText(now); }); + test('Does not navigate when going back to shallow route', async ({ baseURL, page }) => { + await page.goto('/shallow-routing/push-state'); + await page.locator('[data-id="two"]').click(); + await page.goBack(); + await page.goForward(); + + expect(page.url()).toBe(`${baseURL}/shallow-routing/push-state/a`); + await expect(page.locator('h1')).toHaveText('parent'); + await expect(page.locator('p')).toHaveText('active: true'); + }); + test('Replaces state on the current URL', async ({ baseURL, page, clicknav }) => { await page.goto('/shallow-routing/replace-state/b'); await clicknav('[href="/shallow-routing/replace-state"]'); From f7c4f36e833dce4ae0f79a6c1634810edd744fe3 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Fri, 2 Feb 2024 17:12:08 +0100 Subject: [PATCH 010/454] fix: relax status code types (#11781) Keep the status codes as `number` because restricting to certain numbers makes it unnecessarily hard to use compared to the benefits (we have runtime errors already to check for invalid codes). Closes #11780 --- .changeset/mighty-spies-explain.md | 5 +++++ packages/kit/src/exports/index.js | 22 +++++++++++++++------- packages/kit/types/index.d.ts | 6 +++--- 3 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 .changeset/mighty-spies-explain.md diff --git a/.changeset/mighty-spies-explain.md b/.changeset/mighty-spies-explain.md new file mode 100644 index 000000000000..354937e953a5 --- /dev/null +++ b/.changeset/mighty-spies-explain.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: relax status code types diff --git a/packages/kit/src/exports/index.js b/packages/kit/src/exports/index.js index 283ba840c2ef..32fb827dc629 100644 --- a/packages/kit/src/exports/index.js +++ b/packages/kit/src/exports/index.js @@ -3,6 +3,7 @@ import { BROWSER, DEV } from 'esm-env'; export { VERSION } from '../version.js'; +// TODO 3.0: remove these types as they are not used anymore (we can't remove them yet because that would be a breaking change) /** * @template {number} TNumber * @template {any[]} [TArray=[]] @@ -15,6 +16,9 @@ export { VERSION } from '../version.js'; * @typedef {Exclude, LessThan>} NumericRange */ +// Keep the status codes as `number` because restricting to certain numbers makes it unnecessarily hard to use compared to the benefits +// (we have runtime errors already to check for invalid codes). Also see https://github.com/sveltejs/kit/issues/11780 + // we have to repeat the JSDoc because the display for function overloads is broken // see https://github.com/microsoft/TypeScript/issues/55056 @@ -23,10 +27,10 @@ export { VERSION } from '../version.js'; * When called during request handling, this will cause SvelteKit to * return an error response without invoking `handleError`. * Make sure you're not catching the thrown error, which would prevent SvelteKit from handling it. - * @param {NumericRange<400, 599>} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. + * @param {number} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. * @param {App.Error} body An object that conforms to the App.Error type. If a string is passed, it will be used as the message property. * @overload - * @param {NumericRange<400, 599>} status + * @param {number} status * @param {App.Error} body * @return {never} * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling. @@ -37,10 +41,10 @@ export { VERSION } from '../version.js'; * When called during request handling, this will cause SvelteKit to * return an error response without invoking `handleError`. * Make sure you're not catching the thrown error, which would prevent SvelteKit from handling it. - * @param {NumericRange<400, 599>} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. + * @param {number} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. * @param {{ message: string } extends App.Error ? App.Error | string | undefined : never} [body] An object that conforms to the App.Error type. If a string is passed, it will be used as the message property. * @overload - * @param {NumericRange<400, 599>} status + * @param {number} status * @param {{ message: string } extends App.Error ? App.Error | string | undefined : never} [body] * @return {never} * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling. @@ -51,7 +55,7 @@ export { VERSION } from '../version.js'; * When called during request handling, this will cause SvelteKit to * return an error response without invoking `handleError`. * Make sure you're not catching the thrown error, which would prevent SvelteKit from handling it. - * @param {NumericRange<400, 599>} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. + * @param {number} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses). Must be in the range 400-599. * @param {{ message: string } extends App.Error ? App.Error | string | undefined : never} body An object that conforms to the App.Error type. If a string is passed, it will be used as the message property. * @return {never} * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling. @@ -80,7 +84,7 @@ export function isHttpError(e, status) { /** * Redirect a request. When called during request handling, SvelteKit will return a redirect response. * Make sure you're not catching the thrown redirect, which would prevent SvelteKit from handling it. - * @param {NumericRange<300, 308>} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages). Must be in the range 300-308. + * @param {300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | ({} & number)} status The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages). Must be in the range 300-308. * @param {string | URL} location The location to redirect to. * @throws {Redirect} This error instructs SvelteKit to redirect to the specified location. * @throws {Error} If the provided status is invalid. @@ -91,7 +95,11 @@ export function redirect(status, location) { throw new Error('Invalid status code'); } - throw new Redirect(status, location.toString()); + throw new Redirect( + // @ts-ignore + status, + location.toString() + ); } /** diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index eaa09c454eff..65e5351aaedb 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -1766,7 +1766,7 @@ declare module '@sveltejs/kit' { * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling. * @throws {Error} If the provided status is invalid (not between 400 and 599). */ - export function error(status: NumericRange<400, 599>, body: App.Error): never; + export function error(status: number, body: App.Error): never; /** * Throws an error with a HTTP status code and an optional message. * When called during request handling, this will cause SvelteKit to @@ -1777,7 +1777,7 @@ declare module '@sveltejs/kit' { * @throws {HttpError} This error instructs SvelteKit to initiate HTTP error handling. * @throws {Error} If the provided status is invalid (not between 400 and 599). */ - export function error(status: NumericRange<400, 599>, body?: { + export function error(status: number, body?: { message: string; } extends App.Error ? App.Error | string | undefined : never): never; /** @@ -1795,7 +1795,7 @@ declare module '@sveltejs/kit' { * @throws {Redirect} This error instructs SvelteKit to redirect to the specified location. * @throws {Error} If the provided status is invalid. * */ - export function redirect(status: NumericRange<300, 308>, location: string | URL): never; + export function redirect(status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | ({} & number), location: string | URL): never; /** * Checks whether this is a redirect thrown by {@link redirect}. * @param e The object to check. From c749e85d2502d5eac03f739c8f18a2f3a4dcb13e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 16:52:18 -0800 Subject: [PATCH 011/454] chore(deps): update dependency marked to v12 (#11795) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/kit/test/apps/basics/package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ sites/kit.svelte.dev/package.json | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index e68ca1857fa5..0ea278f5c878 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -17,7 +17,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "marked": "^11.1.0", + "marked": "^12.0.0", "svelte": "^4.2.9", "svelte-check": "^3.6.3", "typescript": "^5.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8097ff5c56a4..388fa5a77959 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -523,8 +523,8 @@ importers: specifier: ^7.0.3 version: 7.0.3 marked: - specifier: ^11.1.0 - version: 11.1.0 + specifier: ^12.0.0 + version: 12.0.0 svelte: specifier: ^4.2.9 version: 4.2.9 @@ -1246,8 +1246,8 @@ importers: specifier: ^1.22.1 version: 1.22.1 marked: - specifier: ^11.1.0 - version: 11.1.0 + specifier: ^12.0.0 + version: 12.0.0 prettier: specifier: ^3.1.1 version: 3.1.1 @@ -4730,8 +4730,8 @@ packages: engines: {node: '>=8'} dev: true - /marked@11.1.0: - resolution: {integrity: sha512-fvKJWAPEafVj1dwGwcPI5mBB/0pvViL6NlCbNDG1HOIRwwAU/jeMoFxfbRLuirO1wRH7m4yPvBqD/O1wyWvayw==} + /marked@12.0.0: + resolution: {integrity: sha512-Vkwtq9rLqXryZnWaQc86+FHLC6tr/fycMfYAhiOIXkrNmeGAyhSxjqu0Rs1i0bBqw5u0S7+lV9fdH2ZSVaoa0w==} engines: {node: '>= 18'} hasBin: true dev: true diff --git a/sites/kit.svelte.dev/package.json b/sites/kit.svelte.dev/package.json index c80a206611c9..9807bd64c492 100644 --- a/sites/kit.svelte.dev/package.json +++ b/sites/kit.svelte.dev/package.json @@ -24,7 +24,7 @@ "browserslist": "^4.22.2", "flexsearch": "^0.7.31", "lightningcss": "^1.22.1", - "marked": "^11.1.0", + "marked": "^12.0.0", "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", "prism-svelte": "^0.5.0", From a1466b8c62ffb94cc4a9ad0ccc2cf6d4beaab6ab Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 Feb 2024 06:44:52 -0800 Subject: [PATCH 012/454] chore(deps): update pnpm/action-setup action to v3 (#11816) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/audit.yml | 2 +- .github/workflows/ci.yml | 8 ++++---- .github/workflows/release.yml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml index c6f0fd940480..d9e2b67503ae 100644 --- a/.github/workflows/audit.yml +++ b/.github/workflows/audit.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2.4.0 + - uses: pnpm/action-setup@v3.0.0 - uses: actions/setup-node@v4 with: node-version: '20.x' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a71cf9e3818..47253ea02828 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2.4.0 + - uses: pnpm/action-setup@v3.0.0 - uses: actions/setup-node@v4 with: node-version: '18.x' @@ -50,7 +50,7 @@ jobs: steps: - run: git config --global core.autocrlf false - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2.4.0 + - uses: pnpm/action-setup@v3.0.0 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} @@ -106,7 +106,7 @@ jobs: steps: - run: git config --global core.autocrlf false - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2.4.0 + - uses: pnpm/action-setup@v3.0.0 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} @@ -130,7 +130,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2.4.0 + - uses: pnpm/action-setup@v3.0.0 - uses: actions/setup-node@v4 with: node-version: 18 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a25d80ea4ce1..27473a6a40bd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: with: # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits fetch-depth: 0 - - uses: pnpm/action-setup@v2.4.0 + - uses: pnpm/action-setup@v3.0.0 - name: Setup Node.js uses: actions/setup-node@v4 with: From 08cd13919b128d7ed484f8afdaddbd64f3e9164f Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 8 Feb 2024 09:57:14 -0800 Subject: [PATCH 013/454] chore: update chokidar to 3.6.0 (#11811) --- .changeset/sixty-drinks-exercise.md | 5 + package.json | 4 +- packages/adapter-static/package.json | 4 +- .../test/apps/prerendered/package.json | 4 +- .../adapter-static/test/apps/spa/package.json | 4 +- packages/create-svelte/package.json | 2 +- .../templates/default/package.json | 4 +- packages/enhanced-img/package.json | 4 +- packages/kit/package.json | 4 +- packages/kit/src/exports/public.d.ts | 11 +- packages/kit/test/apps/amp/package.json | 4 +- packages/kit/test/apps/basics/package.json | 4 +- packages/kit/test/apps/dev-only/package.json | 4 +- packages/kit/test/apps/embed/package.json | 4 +- packages/kit/test/apps/no-ssr/package.json | 4 +- packages/kit/test/apps/options-2/package.json | 4 +- packages/kit/test/apps/options/package.json | 4 +- packages/kit/test/apps/writes/package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../apps/private-dynamic-env/package.json | 4 +- .../package.json | 4 +- .../apps/private-static-env/package.json | 4 +- .../package.json | 4 +- .../apps/server-only-folder/package.json | 4 +- .../package.json | 4 +- .../apps/server-only-module/package.json | 4 +- .../package.json | 4 +- .../service-worker-private-env/package.json | 4 +- .../apps/syntax-error/package.json | 4 +- .../kit/test/prerendering/basics/package.json | 4 +- .../test/prerendering/options/package.json | 4 +- .../test/prerendering/paths-base/package.json | 4 +- packages/kit/types/index.d.ts | 11 +- packages/package/package.json | 4 +- playgrounds/basic/package.json | 4 +- pnpm-lock.yaml | 1934 +++++++++-------- sites/kit.svelte.dev/package.json | 4 +- 40 files changed, 1101 insertions(+), 1002 deletions(-) create mode 100644 .changeset/sixty-drinks-exercise.md diff --git a/.changeset/sixty-drinks-exercise.md b/.changeset/sixty-drinks-exercise.md new file mode 100644 index 000000000000..5618d9b12b34 --- /dev/null +++ b/.changeset/sixty-drinks-exercise.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/package": patch +--- + +chore: update chokidar to 3.6.0 diff --git a/package.json b/package.json index 4d07386ca663..c27f8931ea74 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,11 @@ "@changesets/cli": "^2.27.1", "@sveltejs/eslint-config": "^6.0.4", "@svitejs/changesets-changelog-github-compact": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^6.19.1", + "@typescript-eslint/eslint-plugin": "^6.21.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.35.1", - "eslint-plugin-unicorn": "^50.0.0", + "eslint-plugin-unicorn": "^51.0.1", "playwright": "^1.41.0" }, "packageManager": "pnpm@8.15.1", diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index 0e554d4c898c..0297cd6d49b5 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -35,9 +35,9 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "@types/node": "^18.19.3", "sirv": "^2.0.4", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "peerDependencies": { "@sveltejs/kit": "^2.0.0" diff --git a/packages/adapter-static/test/apps/prerendered/package.json b/packages/adapter-static/test/apps/prerendered/package.json index b3aef3073c57..ad230a72d4c9 100644 --- a/packages/adapter-static/test/apps/prerendered/package.json +++ b/packages/adapter-static/test/apps/prerendered/package.json @@ -12,8 +12,8 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "sirv-cli": "^2.0.2", - "svelte": "^4.2.9", - "vite": "^5.0.12" + "svelte": "^4.2.10", + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/adapter-static/test/apps/spa/package.json b/packages/adapter-static/test/apps/spa/package.json index 4e0d1ea429a9..be928ecceceb 100644 --- a/packages/adapter-static/test/apps/spa/package.json +++ b/packages/adapter-static/test/apps/spa/package.json @@ -13,8 +13,8 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "sirv-cli": "^2.0.2", - "svelte": "^4.2.9", - "vite": "^5.0.12" + "svelte": "^4.2.10", + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/create-svelte/package.json b/packages/create-svelte/package.json index 6b9ab76aee88..0bff77dcf10a 100644 --- a/packages/create-svelte/package.json +++ b/packages/create-svelte/package.json @@ -22,7 +22,7 @@ "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", "sucrase": "^3.34.0", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "tiny-glob": "^0.2.9", "typescript": "^5.3.3", "vitest": "^1.2.0" diff --git a/packages/create-svelte/templates/default/package.json b/packages/create-svelte/templates/default/package.json index cb7c885681c8..f15a5208ea74 100644 --- a/packages/create-svelte/templates/default/package.json +++ b/packages/create-svelte/templates/default/package.json @@ -12,9 +12,9 @@ "@sveltejs/adapter-auto": "workspace:*", "@sveltejs/kit": "workspace:*", "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module", "dependencies": { diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 202709adb637..0e7ad3a9f901 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -35,9 +35,9 @@ "@types/node": "^18.19.3", "estree-walker": "^3.0.3", "rollup": "^4.9.5", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "typescript": "^5.3.3", - "vite": "^5.0.12", + "vite": "^5.1.0", "vitest": "^1.2.0" } } diff --git a/packages/kit/package.json b/packages/kit/package.json index eba4b9a2df7d..a7f507f9edc8 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -33,10 +33,10 @@ "@types/set-cookie-parser": "^2.4.7", "dts-buddy": "^0.4.3", "rollup": "^4.9.5", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-preprocess": "^5.1.3", "typescript": "^5.3.3", - "vite": "^5.0.12", + "vite": "^5.1.0", "vitest": "^1.2.0" }, "peerDependencies": { diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index e8d1c16ea01b..861aff321902 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -79,11 +79,12 @@ export interface ActionFailure | undefined = u [uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure } -type UnpackValidationError = T extends ActionFailure - ? X - : T extends void - ? undefined // needs to be undefined, because void will corrupt union type - : T; +type UnpackValidationError = + T extends ActionFailure + ? X + : T extends void + ? undefined // needs to be undefined, because void will corrupt union type + : T; /** * This object is passed to the `adapt` function of adapters. diff --git a/packages/kit/test/apps/amp/package.json b/packages/kit/test/apps/amp/package.json index d9bbe70ddd3d..1ae297dab459 100644 --- a/packages/kit/test/apps/amp/package.json +++ b/packages/kit/test/apps/amp/package.json @@ -17,10 +17,10 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", "dropcss": "^1.0.16", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index 0ea278f5c878..0c3bfe9709f4 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -18,10 +18,10 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", "marked": "^12.0.0", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/apps/dev-only/package.json b/packages/kit/test/apps/dev-only/package.json index a0e8c164c5c7..8a6a1c9b376b 100644 --- a/packages/kit/test/apps/dev-only/package.json +++ b/packages/kit/test/apps/dev-only/package.json @@ -13,10 +13,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/apps/embed/package.json b/packages/kit/test/apps/embed/package.json index 8b9044cfa79c..989f65f7547e 100644 --- a/packages/kit/test/apps/embed/package.json +++ b/packages/kit/test/apps/embed/package.json @@ -15,10 +15,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/apps/no-ssr/package.json b/packages/kit/test/apps/no-ssr/package.json index f2738498614c..3f2cdbed89ad 100644 --- a/packages/kit/test/apps/no-ssr/package.json +++ b/packages/kit/test/apps/no-ssr/package.json @@ -15,10 +15,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/apps/options-2/package.json b/packages/kit/test/apps/options-2/package.json index 3f460ec314b2..41ae007ca29f 100644 --- a/packages/kit/test/apps/options-2/package.json +++ b/packages/kit/test/apps/options-2/package.json @@ -16,10 +16,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/apps/options/package.json b/packages/kit/test/apps/options/package.json index c98514329717..f17d01fb121d 100644 --- a/packages/kit/test/apps/options/package.json +++ b/packages/kit/test/apps/options/package.json @@ -15,10 +15,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/apps/writes/package.json b/packages/kit/test/apps/writes/package.json index 2fb15cac5448..98a8c298f756 100644 --- a/packages/kit/test/apps/writes/package.json +++ b/packages/kit/test/apps/writes/package.json @@ -15,10 +15,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json index ab238bb45c81..f12f781a8c50 100644 --- a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json +++ b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json @@ -12,10 +12,10 @@ "@sveltejs/adapter-auto": "workspace:^", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json index ab238bb45c81..f12f781a8c50 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json @@ -12,10 +12,10 @@ "@sveltejs/adapter-auto": "workspace:^", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json index 8a213aa39f0b..b9634f2035ac 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json @@ -12,10 +12,10 @@ "@sveltejs/adapter-auto": "workspace:^", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json index 7249f0474294..75822705e27a 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json index 92b21b9a0d8d..740157ae6fab 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json index aff1e6b791e9..877b0b41cba1 100644 --- a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-static-env/package.json b/packages/kit/test/build-errors/apps/private-static-env/package.json index b5b7015cb3ce..944454ce26ac 100644 --- a/packages/kit/test/build-errors/apps/private-static-env/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env/package.json @@ -13,10 +13,10 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json index 4f78621f2b80..b07ed5696b7b 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-folder/package.json b/packages/kit/test/build-errors/apps/server-only-folder/package.json index dd27b97468e3..e89ff0349b78 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json index ea989e647c85..2068a14f253e 100644 --- a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-module/package.json b/packages/kit/test/build-errors/apps/server-only-module/package.json index b284658cdf6e..95fd768b2064 100644 --- a/packages/kit/test/build-errors/apps/server-only-module/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json index e4c82dafc225..a9e55f2bccd0 100644 --- a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json index d71e58dd1ad4..c2d958a8cac6 100644 --- a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/syntax-error/package.json b/packages/kit/test/build-errors/apps/syntax-error/package.json index 217c97dc211f..d4eedf21335c 100644 --- a/packages/kit/test/build-errors/apps/syntax-error/package.json +++ b/packages/kit/test/build-errors/apps/syntax-error/package.json @@ -10,10 +10,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module" } diff --git a/packages/kit/test/prerendering/basics/package.json b/packages/kit/test/prerendering/basics/package.json index abb06e463493..6e22c9966f1d 100644 --- a/packages/kit/test/prerendering/basics/package.json +++ b/packages/kit/test/prerendering/basics/package.json @@ -13,10 +13,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12", + "vite": "^5.1.0", "vitest": "^1.2.0" }, "type": "module" diff --git a/packages/kit/test/prerendering/options/package.json b/packages/kit/test/prerendering/options/package.json index 7a8d0f7cec43..798a975cf6d0 100644 --- a/packages/kit/test/prerendering/options/package.json +++ b/packages/kit/test/prerendering/options/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12", + "vite": "^5.1.0", "vitest": "^1.2.0" }, "type": "module" diff --git a/packages/kit/test/prerendering/paths-base/package.json b/packages/kit/test/prerendering/paths-base/package.json index 901e0625d5d4..c4ffcd077ced 100644 --- a/packages/kit/test/prerendering/paths-base/package.json +++ b/packages/kit/test/prerendering/paths-base/package.json @@ -12,10 +12,10 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12", + "vite": "^5.1.0", "vitest": "^1.2.0" }, "type": "module" diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 65e5351aaedb..1a8a768e703c 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -61,11 +61,12 @@ declare module '@sveltejs/kit' { [uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure } - type UnpackValidationError = T extends ActionFailure - ? X - : T extends void - ? undefined // needs to be undefined, because void will corrupt union type - : T; + type UnpackValidationError = + T extends ActionFailure + ? X + : T extends void + ? undefined // needs to be undefined, because void will corrupt union type + : T; /** * This object is passed to the `adapt` function of adapters. diff --git a/packages/package/package.json b/packages/package/package.json index 4bbbb5da77a6..1a2a63116cca 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -11,7 +11,7 @@ "homepage": "https://kit.svelte.dev", "type": "module", "dependencies": { - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "kleur": "^4.1.5", "sade": "^1.8.1", "semver": "^7.5.4", @@ -21,7 +21,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "@types/node": "^18.19.3", "@types/semver": "^7.5.6", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-preprocess": "^5.1.3", "typescript": "^5.3.3", "uvu": "^0.5.6" diff --git a/playgrounds/basic/package.json b/playgrounds/basic/package.json index a59d9d3a0a1a..aaa3cb2a0a6b 100644 --- a/playgrounds/basic/package.json +++ b/playgrounds/basic/package.json @@ -24,10 +24,10 @@ "@sveltejs/package": "workspace:*", "@sveltejs/vite-plugin-svelte": "^3.0.1", "publint": "^0.2.0", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.0.12" + "vite": "^5.1.0" }, "type": "module", "exports": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 388fa5a77959..651e35dadb6e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,13 +13,13 @@ importers: version: 2.27.1 '@sveltejs/eslint-config': specifier: ^6.0.4 - version: 6.0.4(@typescript-eslint/eslint-plugin@6.19.1)(@typescript-eslint/parser@6.19.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@50.0.1)(eslint@8.56.0)(typescript@5.3.3) + version: 6.0.4(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@51.0.1)(eslint@8.56.0)(typescript@5.3.3) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.19.1 - version: 6.19.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0)(typescript@5.3.3) + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) eslint: specifier: ^8.56.0 version: 8.56.0 @@ -30,11 +30,11 @@ importers: specifier: ^2.35.1 version: 2.35.1(eslint@8.56.0) eslint-plugin-unicorn: - specifier: ^50.0.0 - version: 50.0.1(eslint@8.56.0) + specifier: ^51.0.1 + version: 51.0.1(eslint@8.56.0) playwright: specifier: ^1.41.0 - version: 1.41.0 + version: 1.41.2 packages/adapter-auto: dependencies: @@ -47,10 +47,10 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 typescript: specifier: ^5.3.3 version: 5.3.3 @@ -59,10 +59,10 @@ importers: dependencies: '@cloudflare/workers-types': specifier: ^4.20231121.0 - version: 4.20231121.0 + version: 4.20240129.0 esbuild: specifier: ^0.19.11 - version: 0.19.11 + version: 0.19.12 worktop: specifier: 0.8.0-next.18 version: 0.8.0-next.18 @@ -72,7 +72,7 @@ importers: version: link:../kit '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 '@types/ws': specifier: ^8.5.10 version: 8.5.10 @@ -84,23 +84,23 @@ importers: dependencies: '@cloudflare/workers-types': specifier: ^4.20231121.0 - version: 4.20231121.0 + version: 4.20240129.0 '@iarna/toml': specifier: ^2.2.5 version: 2.2.5 esbuild: specifier: ^0.19.11 - version: 0.19.11 + version: 0.19.12 devDependencies: '@cloudflare/kv-asset-handler': specifier: ^0.3.0 - version: 0.3.0 + version: 0.3.1 '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 typescript: specifier: ^5.3.3 version: 5.3.3 @@ -112,59 +112,59 @@ importers: version: 2.2.5 esbuild: specifier: ^0.19.11 - version: 0.19.11 + version: 0.19.12 set-cookie-parser: specifier: ^2.6.0 version: 2.6.0 devDependencies: '@netlify/functions': specifier: ^2.4.1 - version: 2.4.1 + version: 2.5.1 '@rollup/plugin-commonjs': specifier: ^25.0.7 - version: 25.0.7(rollup@4.9.5) + version: 25.0.7(rollup@4.9.6) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.9.5) + version: 6.1.0(rollup@4.9.6) '@rollup/plugin-node-resolve': specifier: ^15.2.3 - version: 15.2.3(rollup@4.9.5) + version: 15.2.3(rollup@4.9.6) '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 '@types/set-cookie-parser': specifier: ^2.4.7 version: 2.4.7 rollup: specifier: ^4.9.5 - version: 4.9.5 + version: 4.9.6 typescript: specifier: ^5.3.3 version: 5.3.3 vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/adapter-node: dependencies: '@rollup/plugin-commonjs': specifier: ^25.0.7 - version: 25.0.7(rollup@4.9.5) + version: 25.0.7(rollup@4.9.6) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.9.5) + version: 6.1.0(rollup@4.9.6) '@rollup/plugin-node-resolve': specifier: ^15.2.3 - version: 15.2.3(rollup@4.9.5) + version: 15.2.3(rollup@4.9.6) rollup: specifier: ^4.9.5 - version: 4.9.5 + version: 4.9.6 devDependencies: '@polka/url': specifier: 1.0.0-next.24 @@ -174,13 +174,13 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 c8: specifier: ^9.0.0 - version: 9.0.0 + version: 9.1.0 polka: specifier: 1.0.0-next.24 version: 1.0.0-next.24 @@ -192,34 +192,34 @@ importers: version: 5.3.3 vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/adapter-static: devDependencies: '@playwright/test': specifier: ^1.41.0 - version: 1.41.0 + version: 1.41.2 '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 sirv: specifier: ^2.0.4 version: 2.0.4 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/adapter-static/test/apps/prerendered: devDependencies: @@ -228,16 +228,16 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) sirv-cli: specifier: ^2.0.2 version: 2.0.2 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/adapter-static/test/apps/spa: devDependencies: @@ -249,41 +249,41 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) sirv-cli: specifier: ^2.0.2 version: 2.0.2 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/adapter-vercel: dependencies: '@vercel/nft': specifier: ^0.26.1 - version: 0.26.1 + version: 0.26.3 esbuild: specifier: ^0.19.11 - version: 0.19.11 + version: 0.19.12 devDependencies: '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 typescript: specifier: ^5.3.3 version: 5.3.3 vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/amp: dependencies: @@ -302,7 +302,7 @@ importers: devDependencies: '@playwright/test': specifier: ^1.41.0 - version: 1.41.0 + version: 1.41.2 '@types/gitignore-parser': specifier: ^0.0.3 version: 0.0.3 @@ -311,16 +311,16 @@ importers: version: 0.0.2 prettier: specifier: ^3.1.1 - version: 3.1.1 + version: 3.2.5 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.1.2(prettier@3.1.1)(svelte@4.2.9) + version: 3.1.2(prettier@3.2.5)(svelte@4.2.10) sucrase: specifier: ^3.34.0 - version: 3.34.0 + version: 3.35.0 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 tiny-glob: specifier: ^0.2.9 version: 0.2.9 @@ -329,7 +329,7 @@ importers: version: 5.3.3 vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/create-svelte/templates/default: dependencies: @@ -348,16 +348,16 @@ importers: version: link:../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/create-svelte/templates/skeleton: devDependencies: @@ -369,38 +369,38 @@ importers: dependencies: magic-string: specifier: ^0.30.5 - version: 0.30.5 + version: 0.30.7 svelte-parse-markup: specifier: ^0.1.2 - version: 0.1.2(svelte@4.2.9) + version: 0.1.2(svelte@4.2.10) vite-imagetools: specifier: ^6.2.8 - version: 6.2.8(rollup@4.9.5) + version: 6.2.9(rollup@4.9.6) devDependencies: '@types/estree': specifier: ^1.0.5 version: 1.0.5 '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 estree-walker: specifier: ^3.0.3 version: 3.0.3 rollup: specifier: ^4.9.5 - version: 4.9.5 + version: 4.9.6 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit: dependencies: @@ -424,7 +424,7 @@ importers: version: 4.1.5 magic-string: specifier: ^0.30.5 - version: 0.30.5 + version: 0.30.7 mrmime: specifier: ^2.0.0 version: 2.0.0 @@ -443,16 +443,16 @@ importers: devDependencies: '@playwright/test': specifier: ^1.41.0 - version: 1.41.0 + version: 1.41.2 '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) '@types/connect': specifier: ^3.4.38 version: 3.4.38 '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 '@types/sade': specifier: ^1.7.8 version: 1.7.8 @@ -461,25 +461,25 @@ importers: version: 2.4.7 dts-buddy: specifier: ^0.4.3 - version: 0.4.3(typescript@5.3.3) + version: 0.4.4(typescript@5.3.3) rollup: specifier: ^4.9.5 - version: 4.9.5 + version: 4.9.6 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-preprocess: specifier: ^5.1.3 - version: 5.1.3(postcss@8.4.32)(svelte@4.2.9)(typescript@5.3.3) + version: 5.1.3(postcss@8.4.35)(svelte@4.2.10)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/apps/amp: devDependencies: @@ -491,7 +491,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -499,17 +499,17 @@ importers: specifier: ^1.0.16 version: 1.0.16 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/apps/basics: devDependencies: @@ -518,7 +518,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -526,17 +526,17 @@ importers: specifier: ^12.0.0 version: 12.0.0 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/apps/dev-only: devDependencies: @@ -545,22 +545,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/apps/embed: devDependencies: @@ -569,22 +569,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/apps/no-ssr: devDependencies: @@ -593,22 +593,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/apps/options: devDependencies: @@ -617,22 +617,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/apps/options-2: devDependencies: @@ -644,22 +644,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/apps/writes: devDependencies: @@ -668,28 +668,28 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors: devDependencies: vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch: devDependencies: @@ -701,19 +701,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment: devDependencies: @@ -725,19 +725,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/prerenderable-not-prerendered: devDependencies: @@ -749,19 +749,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/private-dynamic-env: devDependencies: @@ -770,19 +770,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import: devDependencies: @@ -791,19 +791,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/private-static-env: devDependencies: @@ -812,22 +812,22 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/private-static-env-dynamic-import: devDependencies: @@ -836,19 +836,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/server-only-folder: devDependencies: @@ -857,19 +857,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/server-only-folder-dynamic-import: devDependencies: @@ -878,19 +878,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/server-only-module: devDependencies: @@ -899,19 +899,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/server-only-module-dynamic-import: devDependencies: @@ -920,19 +920,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/service-worker-dynamic-public-env: devDependencies: @@ -941,19 +941,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/service-worker-private-env: devDependencies: @@ -962,19 +962,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/build-errors/apps/syntax-error: devDependencies: @@ -983,19 +983,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/prerendering/basics: devDependencies: @@ -1004,22 +1004,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/prerendering/options: devDependencies: @@ -1028,22 +1028,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/kit/test/prerendering/paths-base: devDependencies: @@ -1052,22 +1052,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/migrate: dependencies: @@ -1076,13 +1076,13 @@ importers: version: 4.1.5 magic-string: specifier: ^0.30.5 - version: 0.30.5 + version: 0.30.7 prompts: specifier: ^2.4.2 version: 2.4.2 semver: specifier: ^7.5.4 - version: 7.5.4 + version: 7.6.0 tiny-glob: specifier: ^0.2.9 version: 0.2.9 @@ -1095,7 +1095,7 @@ importers: devDependencies: '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 '@types/prompts': specifier: ^2.4.9 version: 2.4.9 @@ -1104,16 +1104,16 @@ importers: version: 7.5.6 prettier: specifier: ^3.1.1 - version: 3.1.1 + version: 3.2.5 vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages/package: dependencies: chokidar: - specifier: ^3.5.3 - version: 3.5.3 + specifier: ^3.6.0 + version: 3.6.0 kleur: specifier: ^4.1.5 version: 4.1.5 @@ -1122,26 +1122,26 @@ importers: version: 1.8.1 semver: specifier: ^7.5.4 - version: 7.5.4 + version: 7.6.0 svelte2tsx: specifier: ~0.7.0 - version: 0.7.0(svelte@4.2.9)(typescript@5.3.3) + version: 0.7.1(svelte@4.2.10)(typescript@5.3.3) devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 '@types/semver': specifier: ^7.5.6 version: 7.5.6 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-preprocess: specifier: ^5.1.3 - version: 5.1.3(postcss@8.4.32)(svelte@4.2.9)(typescript@5.3.3) + version: 5.1.3(postcss@8.4.35)(svelte@4.2.10)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1183,22 +1183,22 @@ importers: version: link:../../packages/package '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) publint: specifier: ^0.2.0 version: 0.2.7 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.32)(svelte@4.2.9) + version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) sites/kit.svelte.dev: dependencies: @@ -1226,34 +1226,34 @@ importers: version: link:../../packages/kit '@sveltejs/site-kit': specifier: 6.0.0-next.59 - version: 6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.9) + version: 6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.10) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.9)(vite@5.0.12) + version: 3.0.2(svelte@4.2.10)(vite@5.1.0) '@types/d3-geo': specifier: ^3.1.0 version: 3.1.0 '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.14 browserslist: specifier: ^4.22.2 - version: 4.22.2 + version: 4.22.3 flexsearch: specifier: ^0.7.31 - version: 0.7.31 + version: 0.7.43 lightningcss: specifier: ^1.22.1 - version: 1.22.1 + version: 1.23.0 marked: specifier: ^12.0.0 version: 12.0.0 prettier: specifier: ^3.1.1 - version: 3.1.1 + version: 3.2.5 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.1.2(prettier@3.1.1)(svelte@4.2.9) + version: 3.1.2(prettier@3.2.5)(svelte@4.2.10) prism-svelte: specifier: ^0.5.0 version: 0.5.0 @@ -1264,17 +1264,17 @@ importers: specifier: ^3.1.2 version: 3.1.2(typescript@5.0.4) svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.10 + version: 4.2.10 typescript: specifier: 5.0.4 version: 5.0.4 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + specifier: ^5.1.0 + version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) vitest: specifier: ^1.2.0 - version: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) packages: @@ -1288,7 +1288,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} @@ -1312,11 +1312,11 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/runtime@7.23.6: - resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.14.0 + regenerator-runtime: 0.14.1 dev: true /@bcoe/v8-coverage@0.2.3: @@ -1326,7 +1326,7 @@ packages: /@changesets/apply-release-plan@7.0.0: resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@changesets/config': 3.0.0 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.0 @@ -1338,18 +1338,18 @@ packages: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 7.6.0 dev: true /@changesets/assemble-release-plan@6.0.0: resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.0.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 + semver: 7.6.0 dev: true /@changesets/changelog-git@0.2.0: @@ -1362,7 +1362,7 @@ packages: resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} hasBin: true dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@changesets/apply-release-plan': 7.0.0 '@changesets/assemble-release-plan': 6.0.0 '@changesets/changelog-git': 0.2.0 @@ -1390,7 +1390,7 @@ packages: p-limit: 2.3.0 preferred-pm: 3.1.2 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 7.6.0 spawndamnit: 2.0.0 term-size: 2.2.1 tty-table: 4.2.3 @@ -1421,7 +1421,7 @@ packages: '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.5.4 + semver: 7.6.0 dev: true /@changesets/get-github-info@0.5.2: @@ -1436,7 +1436,7 @@ packages: /@changesets/get-release-plan@4.0.0: resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@changesets/assemble-release-plan': 6.0.0 '@changesets/config': 3.0.0 '@changesets/pre': 2.0.0 @@ -1452,7 +1452,7 @@ packages: /@changesets/git@3.0.0: resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -1477,7 +1477,7 @@ packages: /@changesets/pre@2.0.0: resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -1487,7 +1487,7 @@ packages: /@changesets/read@0.6.0: resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/parse': 0.4.0 @@ -1508,7 +1508,7 @@ packages: /@changesets/write@0.3.0: resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 @@ -1532,202 +1532,202 @@ packages: bundledDependencies: - is-unicode-supported - /@cloudflare/kv-asset-handler@0.3.0: - resolution: {integrity: sha512-9CB/MKf/wdvbfkUdfrj+OkEwZ5b7rws0eogJ4293h+7b6KX5toPwym+VQKmILafNB9YiehqY0DlNrDcDhdWHSQ==} + /@cloudflare/kv-asset-handler@0.3.1: + resolution: {integrity: sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA==} dependencies: mime: 3.0.0 dev: true - /@cloudflare/workers-types@4.20231121.0: - resolution: {integrity: sha512-+kWfpCkqiepwAKXyHoE0gnkPgkLhz0/9HOBIGhHRsUvUKvhUtm3mbqqoGRWgF1qcjzrDUBbrrOq4MYHfFtc2RA==} + /@cloudflare/workers-types@4.20240129.0: + resolution: {integrity: sha512-VyHbih/bqh/RN2FRxnXznG0bpBIg9RfSP1ldbAVnCXFinjOdv0zm2P/RWqOVN9+FgU5sanRltwwT7jGngxZy8w==} dev: false - /@emnapi/runtime@0.44.0: - resolution: {integrity: sha512-ZX/etZEZw8DR7zAB1eVQT40lNo0jeqpb6dCgOvctB6FIQ5PoXfMuNY8+ayQfu8tNQbAB8gQWSSJupR8NxeiZXw==} + /@emnapi/runtime@0.45.0: + resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==} requiresBuild: true dependencies: tslib: 2.6.2 dev: false optional: true - /@esbuild/aix-ppc64@0.19.11: - resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] requiresBuild: true optional: true - /@esbuild/android-arm64@0.19.11: - resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm@0.19.11: - resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/android-x64@0.19.11: - resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.19.11: - resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@esbuild/darwin-x64@0.19.11: - resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.19.11: - resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.19.11: - resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/linux-arm64@0.19.11: - resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-arm@0.19.11: - resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32@0.19.11: - resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-loong64@0.19.11: - resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.19.11: - resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.19.11: - resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.19.11: - resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-s390x@0.19.11: - resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-x64@0.19.11: - resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.19.11: - resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.19.11: - resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /@esbuild/sunos-x64@0.19.11: - resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /@esbuild/win32-arm64@0.19.11: - resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-ia32@0.19.11: - resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-x64@0.19.11: - resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1757,7 +1757,7 @@ packages: debug: 4.3.4 espree: 9.6.1 globals: 13.24.0 - ignore: 5.3.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -1775,11 +1775,11 @@ packages: resolution: {integrity: sha512-8OJiUK2lzJjvDlkmamEfhtpL1cyFApg1Pk4kE5Pw5UTf1ETF3Yy/pprgwV5I+LQPDjuFvinsinT9xSUZ2b/zuQ==} dev: false - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.1 + '@humanwhocodes/object-schema': 2.0.2 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -1791,38 +1791,38 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true /@iarna/toml@2.2.5: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} dev: false - /@img/sharp-darwin-arm64@0.33.0: - resolution: {integrity: sha512-070tEheekI1LJWTGPC9WlQEa5UoKTXzzlORBHMX4TbfUxMiL336YHR8vBEUNsjse0RJCX8dZ4ZXwT595aEF1ug==} + /@img/sharp-darwin-arm64@0.33.2: + resolution: {integrity: sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [darwin] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.0 + '@img/sharp-libvips-darwin-arm64': 1.0.1 dev: false optional: true - /@img/sharp-darwin-x64@0.33.0: - resolution: {integrity: sha512-pu/nvn152F3qbPeUkr+4e9zVvEhD3jhwzF473veQfMPkOYo9aoWXSfdZH/E6F+nYC3qvFjbxbvdDbUtEbghLqw==} + /@img/sharp-darwin-x64@0.33.2: + resolution: {integrity: sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [darwin] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.0 + '@img/sharp-libvips-darwin-x64': 1.0.1 dev: false optional: true - /@img/sharp-libvips-darwin-arm64@1.0.0: - resolution: {integrity: sha512-VzYd6OwnUR81sInf3alj1wiokY50DjsHz5bvfnsFpxs5tqQxESoHtJO6xyksDs3RIkyhMWq2FufXo6GNSU9BMw==} + /@img/sharp-libvips-darwin-arm64@1.0.1: + resolution: {integrity: sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==} engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [darwin] @@ -1830,8 +1830,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-darwin-x64@1.0.0: - resolution: {integrity: sha512-dD9OznTlHD6aovRswaPNEy8dKtSAmNo4++tO7uuR4o5VxbVAOoEQ1uSmN4iFAdQneTHws1lkTZeiXPrcCkh6IA==} + /@img/sharp-libvips-darwin-x64@1.0.1: + resolution: {integrity: sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==} engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [darwin] @@ -1839,8 +1839,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-arm64@1.0.0: - resolution: {integrity: sha512-xTYThiqEZEZc0PRU90yVtM3KE7lw1bKdnDQ9kCTHWbqWyHOe4NpPOtMGy27YnN51q0J5dqRrvicfPbALIOeAZA==} + /@img/sharp-libvips-linux-arm64@1.0.1: + resolution: {integrity: sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==} engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] @@ -1848,8 +1848,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-arm@1.0.0: - resolution: {integrity: sha512-VwgD2eEikDJUk09Mn9Dzi1OW2OJFRQK+XlBTkUNmAWPrtj8Ly0yq05DFgu1VCMx2/DqCGQVi5A1dM9hTmxf3uw==} + /@img/sharp-libvips-linux-arm@1.0.1: + resolution: {integrity: sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==} engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm] os: [linux] @@ -1857,8 +1857,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-s390x@1.0.0: - resolution: {integrity: sha512-o9E46WWBC6JsBlwU4QyU9578G77HBDT1NInd+aERfxeOPbk0qBZHgoDsQmA2v9TbqJRWzoBPx1aLOhprBMgPjw==} + /@img/sharp-libvips-linux-s390x@1.0.1: + resolution: {integrity: sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==} engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [s390x] os: [linux] @@ -1866,8 +1866,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-x64@1.0.0: - resolution: {integrity: sha512-naldaJy4hSVhWBgEjfdBY85CAa4UO+W1nx6a1sWStHZ7EUfNiuBTTN2KUYT5dH1+p/xij1t2QSXfCiFJoC5S/Q==} + /@img/sharp-libvips-linux-x64@1.0.1: + resolution: {integrity: sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==} engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] @@ -1875,8 +1875,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linuxmusl-arm64@1.0.0: - resolution: {integrity: sha512-OdorplCyvmSAPsoJLldtLh3nLxRrkAAAOHsGWGDYfN0kh730gifK+UZb3dWORRa6EusNqCTjfXV4GxvgJ/nPDQ==} + /@img/sharp-libvips-linuxmusl-arm64@1.0.1: + resolution: {integrity: sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==} engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] @@ -1884,8 +1884,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linuxmusl-x64@1.0.0: - resolution: {integrity: sha512-FW8iK6rJrg+X2jKD0Ajhjv6y74lToIBEvkZhl42nZt563FfxkCYacrXZtd+q/sRQDypQLzY5WdLkVTbJoPyqNg==} + /@img/sharp-libvips-linuxmusl-x64@1.0.1: + resolution: {integrity: sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==} engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] @@ -1893,84 +1893,84 @@ packages: dev: false optional: true - /@img/sharp-linux-arm64@0.33.0: - resolution: {integrity: sha512-dcomVSrtgF70SyOr8RCOCQ8XGVThXwe71A1d8MGA+mXEVRJ/J6/TrCbBEJh9ddcEIIsrnrkolaEvYSHqVhswQw==} + /@img/sharp-linux-arm64@0.33.2: + resolution: {integrity: sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.0 + '@img/sharp-libvips-linux-arm64': 1.0.1 dev: false optional: true - /@img/sharp-linux-arm@0.33.0: - resolution: {integrity: sha512-4horD3wMFd5a0ddbDY8/dXU9CaOgHjEHALAddXgafoR5oWq5s8X61PDgsSeh4Qupsdo6ycfPPSSNBrfVQnwwrg==} + /@img/sharp-linux-arm@0.33.2: + resolution: {integrity: sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==} engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.0 + '@img/sharp-libvips-linux-arm': 1.0.1 dev: false optional: true - /@img/sharp-linux-s390x@0.33.0: - resolution: {integrity: sha512-TiVJbx38J2rNVfA309ffSOB+3/7wOsZYQEOlKqOUdWD/nqkjNGrX+YQGz7nzcf5oy2lC+d37+w183iNXRZNngQ==} + /@img/sharp-linux-s390x@0.33.2: + resolution: {integrity: sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==} engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [s390x] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.0 + '@img/sharp-libvips-linux-s390x': 1.0.1 dev: false optional: true - /@img/sharp-linux-x64@0.33.0: - resolution: {integrity: sha512-PaZM4Zi7/Ek71WgTdvR+KzTZpBqrQOFcPe7/8ZoPRlTYYRe43k6TWsf4GVH6XKRLMYeSp8J89RfAhBrSP4itNA==} + /@img/sharp-linux-x64@0.33.2: + resolution: {integrity: sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.0 + '@img/sharp-libvips-linux-x64': 1.0.1 dev: false optional: true - /@img/sharp-linuxmusl-arm64@0.33.0: - resolution: {integrity: sha512-1QLbbN0zt+32eVrg7bb1lwtvEaZwlhEsY1OrijroMkwAqlHqFj6R33Y47s2XUv7P6Ie1PwCxK/uFnNqMnkd5kg==} + /@img/sharp-linuxmusl-arm64@0.33.2: + resolution: {integrity: sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==} engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 dev: false optional: true - /@img/sharp-linuxmusl-x64@0.33.0: - resolution: {integrity: sha512-CecqgB/CnkvCWFhmfN9ZhPGMLXaEBXl4o7WtA6U3Ztrlh/s7FUKX4vNxpMSYLIrWuuzjiaYdfU3+Tdqh1xaHfw==} + /@img/sharp-linuxmusl-x64@0.33.2: + resolution: {integrity: sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==} engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.0 + '@img/sharp-libvips-linuxmusl-x64': 1.0.1 dev: false optional: true - /@img/sharp-wasm32@0.33.0: - resolution: {integrity: sha512-Hn4js32gUX9qkISlemZBUPuMs0k/xNJebUNl/L6djnU07B/HAA2KaxRVb3HvbU5fL242hLOcp0+tR+M8dvJUFw==} + /@img/sharp-wasm32@0.33.2: + resolution: {integrity: sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [wasm32] requiresBuild: true dependencies: - '@emnapi/runtime': 0.44.0 + '@emnapi/runtime': 0.45.0 dev: false optional: true - /@img/sharp-win32-ia32@0.33.0: - resolution: {integrity: sha512-5HfcsCZi3l5nPRF2q3bllMVMDXBqEWI3Q8KQONfzl0TferFE5lnsIG0A1YrntMAGqvkzdW6y1Ci1A2uTvxhfzg==} + /@img/sharp-win32-ia32@0.33.2: + resolution: {integrity: sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [ia32] os: [win32] @@ -1978,8 +1978,8 @@ packages: dev: false optional: true - /@img/sharp-win32-x64@0.33.0: - resolution: {integrity: sha512-i3DtP/2ce1yKFj4OzOnOYltOEL/+dp4dc4dJXJBv6god1AFTcmkaA99H/7SwOmkCOBQkbVvA3lCGm3/5nDtf9Q==} + /@img/sharp-win32-x64@0.33.2: + resolution: {integrity: sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [win32] @@ -1987,6 +1987,18 @@ packages: dev: false optional: true + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} @@ -2005,7 +2017,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} @@ -2019,29 +2031,22 @@ packages: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.20: - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.21: - resolution: {integrity: sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -2050,7 +2055,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -2069,7 +2074,7 @@ packages: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.4 + semver: 7.6.0 tar: 6.2.0 transitivePeerDependencies: - encoding @@ -2080,11 +2085,11 @@ packages: resolution: {integrity: sha512-SmksyaJAdSlMa9cTidVSIqYo1qti+WTsviNDwgjNVm+KQ3DRP2Df9umDIzC4vCcpEYY+chQe0i2IKnLw03AT8Q==} dev: true - /@netlify/functions@2.4.1: - resolution: {integrity: sha512-sRFYBaz6dJP1MdUtk/5QNmshhg5UDmB+DUssmH6v9WUG85MrwyExEfGfJA5eClXATjXm0coTvO5nLAlyCpK7QQ==} + /@netlify/functions@2.5.1: + resolution: {integrity: sha512-7//hmiFHXGusAzuzEuXvRT9ItaeRjRs5lRs6lYUkaAXO1jnTWYDB2XdqFq5X4yMRX+/A96nrQ2HwCE+Pd0YMwg==} engines: {node: '>=14.0.0'} dependencies: - '@netlify/serverless-functions-api': 1.12.3 + '@netlify/serverless-functions-api': 1.13.0 is-promise: 4.0.0 dev: true @@ -2093,8 +2098,8 @@ packages: engines: {node: ^14.16.0 || >=16.0.0} dev: true - /@netlify/serverless-functions-api@1.12.3: - resolution: {integrity: sha512-g1AZ78pCvMnalZtbnViVLGfG5ufjKyKoi3plLSUtZqh0wVuMR7ZGegeZHhOoY4wRfkkETVvWfhgfcpLMbGM5Lg==} + /@netlify/serverless-functions-api@1.13.0: + resolution: {integrity: sha512-H3SMpHw24jWjnEMqbXgILWdo3/Iv/2DRzOZZevqqEswRTOWcQJGlU35Dth72VAOxhPyWXjulogG1zJNRw8m2sQ==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@netlify/node-cookies': 0.1.0 @@ -2117,20 +2122,27 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.17.1 - /@playwright/test@1.41.0: - resolution: {integrity: sha512-Grvzj841THwtpBOrfiHOeYTJQxDRnKofMSzCiV8XeyLWu3o89qftQ4BCKfkziJhSUQRd0utKhrddtIsiraIwmw==} + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@playwright/test@1.41.2: + resolution: {integrity: sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==} engines: {node: '>=16'} hasBin: true dependencies: - playwright: 1.41.0 + playwright: 1.41.2 dev: true /@polka/url@1.0.0-next.24: resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} - /@rollup/plugin-commonjs@25.0.7(rollup@4.9.5): + /@rollup/plugin-commonjs@25.0.7(rollup@4.9.6): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2139,15 +2151,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.5) + '@rollup/pluginutils': 5.1.0(rollup@4.9.6) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.5 - rollup: 4.9.5 + magic-string: 0.30.7 + rollup: 4.9.6 - /@rollup/plugin-json@6.1.0(rollup@4.9.5): + /@rollup/plugin-json@6.1.0(rollup@4.9.6): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2156,10 +2168,10 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.5) - rollup: 4.9.5 + '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + rollup: 4.9.6 - /@rollup/plugin-node-resolve@15.2.3(rollup@4.9.5): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.9.6): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2168,13 +2180,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.5) + '@rollup/pluginutils': 5.1.0(rollup@4.9.6) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.9.5 + rollup: 4.9.6 /@rollup/pluginutils@4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -2184,7 +2196,7 @@ packages: picomatch: 2.3.1 dev: false - /@rollup/pluginutils@5.1.0(rollup@4.9.5): + /@rollup/pluginutils@5.1.0(rollup@4.9.6): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2196,94 +2208,94 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.9.5 + rollup: 4.9.6 - /@rollup/rollup-android-arm-eabi@4.9.5: - resolution: {integrity: sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==} + /@rollup/rollup-android-arm-eabi@4.9.6: + resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.9.5: - resolution: {integrity: sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==} + /@rollup/rollup-android-arm64@4.9.6: + resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.9.5: - resolution: {integrity: sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==} + /@rollup/rollup-darwin-arm64@4.9.6: + resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.9.5: - resolution: {integrity: sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==} + /@rollup/rollup-darwin-x64@4.9.6: + resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.9.5: - resolution: {integrity: sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==} + /@rollup/rollup-linux-arm-gnueabihf@4.9.6: + resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.9.5: - resolution: {integrity: sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==} + /@rollup/rollup-linux-arm64-gnu@4.9.6: + resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.9.5: - resolution: {integrity: sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==} + /@rollup/rollup-linux-arm64-musl@4.9.6: + resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.9.5: - resolution: {integrity: sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==} + /@rollup/rollup-linux-riscv64-gnu@4.9.6: + resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.9.5: - resolution: {integrity: sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==} + /@rollup/rollup-linux-x64-gnu@4.9.6: + resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.9.5: - resolution: {integrity: sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==} + /@rollup/rollup-linux-x64-musl@4.9.6: + resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.9.5: - resolution: {integrity: sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==} + /@rollup/rollup-win32-arm64-msvc@4.9.6: + resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.9.5: - resolution: {integrity: sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==} + /@rollup/rollup-win32-ia32-msvc@4.9.6: + resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.9.5: - resolution: {integrity: sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==} + /@rollup/rollup-win32-x64-msvc@4.9.6: + resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} cpu: [x64] os: [win32] requiresBuild: true @@ -2293,7 +2305,7 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@6.19.1)(@typescript-eslint/parser@6.19.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@50.0.1)(eslint@8.56.0)(typescript@5.3.3): + /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@51.0.1)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-U9pwmDs+DbmsnCgTfu6Bacdwqn0DuI1IQNSiQqTgzVyYfaaj+zy9ZoQCiJfxFBGXHkklyXuRHp0KMx346N0lcQ==} peerDependencies: '@typescript-eslint/eslint-plugin': '>= 5' @@ -2304,16 +2316,16 @@ packages: eslint-plugin-unicorn: '>= 47' typescript: '>= 4' dependencies: - '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 eslint-config-prettier: 9.1.0(eslint@8.56.0) eslint-plugin-svelte: 2.35.1(eslint@8.56.0) - eslint-plugin-unicorn: 50.0.1(eslint@8.56.0) + eslint-plugin-unicorn: 51.0.1(eslint@8.56.0) typescript: 5.3.3 dev: true - /@sveltejs/site-kit@6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.9): + /@sveltejs/site-kit@6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.10): resolution: {integrity: sha512-nAUCuunhN0DmurQBxbsauqvdvv4mL0F/Aluxq0hFf6gB3iSn9WdaUZdPMXoujy+8cy+m6UvKuyhkgApZhmOLvw==} peerDependencies: '@sveltejs/kit': ^1.20.0 @@ -2321,11 +2333,11 @@ packages: dependencies: '@sveltejs/kit': link:packages/kit esm-env: 1.0.0 - svelte: 4.2.9 - svelte-local-storage-store: 0.6.4(svelte@4.2.9) + svelte: 4.2.10 + svelte-local-storage-store: 0.6.4(svelte@4.2.10) dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12): + /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.0): resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} engines: {node: ^18.0.0 || >=20} peerDependencies: @@ -2333,30 +2345,30 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.9)(vite@5.0.12) + '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.10)(vite@5.1.0) debug: 4.3.4 - svelte: 4.2.9 - vite: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + svelte: 4.2.10 + vite: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.0.12): - resolution: {integrity: sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==} + /@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.10)(vite@5.1.0): + resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12) + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.0) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.5 - svelte: 4.2.9 - svelte-hmr: 0.15.3(svelte@4.2.9) - vite: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) - vitefu: 0.2.5(vite@5.0.12) + magic-string: 0.30.7 + svelte: 4.2.10 + svelte-hmr: 0.15.3(svelte@4.2.10) + vite: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + vitefu: 0.2.5(vite@5.1.0) transitivePeerDependencies: - supports-color dev: true @@ -2366,7 +2378,7 @@ packages: engines: {node: ^14.13.1 || ^16.0.0 || >=18} dependencies: '@changesets/get-github-info': 0.5.2 - dotenv: 16.3.1 + dotenv: 16.4.1 transitivePeerDependencies: - encoding dev: true @@ -2383,7 +2395,7 @@ packages: /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.19.3 + '@types/node': 18.19.14 dev: true /@types/cookie@0.6.0: @@ -2393,14 +2405,14 @@ packages: /@types/d3-geo@3.1.0: resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} dependencies: - '@types/geojson': 7946.0.13 + '@types/geojson': 7946.0.14 dev: true /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - /@types/geojson@7946.0.13: - resolution: {integrity: sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==} + /@types/geojson@7946.0.14: + resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} dev: true /@types/gitignore-parser@0.0.3: @@ -2427,8 +2439,8 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@18.19.3: - resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==} + /@types/node@18.19.14: + resolution: {integrity: sha512-EnQ4Us2rmOS64nHDWr0XqAD8DsO6f3XR6lf9UIIrZQpUzPVdN/oPuEzfDWNHSyXLvoGgjuEm/sPwFGSSs35Wtg==} dependencies: undici-types: 5.26.5 dev: true @@ -2440,7 +2452,7 @@ packages: /@types/prompts@2.4.9: resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} dependencies: - '@types/node': 18.19.3 + '@types/node': 18.19.14 kleur: 3.0.3 dev: true @@ -2464,17 +2476,17 @@ packages: /@types/set-cookie-parser@2.4.7: resolution: {integrity: sha512-+ge/loa0oTozxip6zmhRIk8Z/boU51wl9Q6QdLZcokIGMzY5lFXYy/x7Htj2HTC6/KZP1hUbZ1ekx8DYXICvWg==} dependencies: - '@types/node': 18.19.3 + '@types/node': 18.19.14 dev: true /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 18.19.3 + '@types/node': 18.19.14 dev: true - /@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==} + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -2485,25 +2497,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.19.1 - '@typescript-eslint/type-utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.19.1 + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.56.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.19.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==} + /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2512,10 +2524,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.19.1 - '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.19.1 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.56.0 typescript: 5.3.3 @@ -2523,16 +2535,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.19.1: - resolution: {integrity: sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==} + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/visitor-keys': 6.19.1 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/type-utils@6.19.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==} + /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2541,23 +2553,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) - '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.56.0 - ts-api-utils: 1.0.3(typescript@5.3.3) + ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.19.1: - resolution: {integrity: sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==} + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.19.1(typescript@5.3.3): - resolution: {integrity: sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==} + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -2565,21 +2577,21 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/visitor-keys': 6.19.1 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.19.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==} + /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2587,21 +2599,21 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.19.1 - '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) eslint: 8.56.0 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.19.1: - resolution: {integrity: sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==} + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2635,9 +2647,9 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vercel/nft@0.26.1: - resolution: {integrity: sha512-SdYX2qfw657niCQ2ZYTp72Cs3zI+tAm6DGyQEZnyGwjkVSPd1Tl3KIYLy/5NJKNoLI/uxMnHasECFJEnJ8Fb1A==} - engines: {node: '>=18'} + /@vercel/nft@0.26.3: + resolution: {integrity: sha512-h1z/NN9ppS4YOKwSgBoopJlhm7tS2Qb/9Ld1HXjDpvvTE7mY0xVD8nllXs+RihD9uTGJISOIMzp18Eg0EApaMA==} + engines: {node: '>=16'} hasBin: true dependencies: '@mapbox/node-pre-gyp': 1.0.11 @@ -2650,45 +2662,45 @@ packages: glob: 7.2.3 graceful-fs: 4.2.11 micromatch: 4.0.5 - node-gyp-build: 4.7.1 + node-gyp-build: 4.8.0 resolve-from: 5.0.0 transitivePeerDependencies: - encoding - supports-color dev: false - /@vitest/expect@1.2.0: - resolution: {integrity: sha512-H+2bHzhyvgp32o7Pgj2h9RTHN0pgYaoi26Oo3mE+dCi1PAqV31kIIVfTbqMO3Bvshd5mIrJLc73EwSRrbol9Lw==} + /@vitest/expect@1.2.2: + resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} dependencies: - '@vitest/spy': 1.2.0 - '@vitest/utils': 1.2.0 + '@vitest/spy': 1.2.2 + '@vitest/utils': 1.2.2 chai: 4.4.1 dev: true - /@vitest/runner@1.2.0: - resolution: {integrity: sha512-vaJkDoQaNUTroT70OhM0NPznP7H3WyRwt4LvGwCVYs/llLaqhoSLnlIhUClZpbF5RgAee29KRcNz0FEhYcgxqA==} + /@vitest/runner@1.2.2: + resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} dependencies: - '@vitest/utils': 1.2.0 + '@vitest/utils': 1.2.2 p-limit: 5.0.0 pathe: 1.1.2 dev: true - /@vitest/snapshot@1.2.0: - resolution: {integrity: sha512-P33EE7TrVgB3HDLllrjK/GG6WSnmUtWohbwcQqmm7TAk9AVHpdgf7M3F3qRHKm6vhr7x3eGIln7VH052Smo6Kw==} + /@vitest/snapshot@1.2.2: + resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} dependencies: - magic-string: 0.30.5 + magic-string: 0.30.7 pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.2.0: - resolution: {integrity: sha512-MNxSAfxUaCeowqyyGwC293yZgk7cECZU9wGb8N1pYQ0yOn/SIr8t0l9XnGRdQZvNV/ZHBYu6GO/W3tj5K3VN1Q==} + /@vitest/spy@1.2.2: + resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} dependencies: - tinyspy: 2.2.0 + tinyspy: 2.2.1 dev: true - /@vitest/utils@1.2.0: - resolution: {integrity: sha512-FyD5bpugsXlwVpTcGLDf3wSPYy8g541fQt14qtzo8mJ4LdEpDKZ9mQy2+qdJm2TZRpjY5JLXihXCgIxiRJgi5g==} + /@vitest/utils@1.2.2: + resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -2753,6 +2765,11 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -2772,6 +2789,11 @@ packages: engines: {node: '>=10'} dev: true + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true @@ -2810,11 +2832,12 @@ packages: dependencies: dequal: 2.0.3 - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 + call-bind: 1.0.6 + is-array-buffer: 3.0.4 dev: true /array-union@2.1.0: @@ -2826,22 +2849,23 @@ packages: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.2 dev: true @@ -2858,8 +2882,8 @@ packages: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} dev: false - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.6: + resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} engines: {node: '>= 0.4'} dev: true @@ -2911,15 +2935,15 @@ packages: wcwidth: 1.0.1 dev: true - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + /browserslist@4.22.3: + resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001568 - electron-to-chromium: 1.4.611 + caniuse-lite: 1.0.30001585 + electron-to-chromium: 1.4.661 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) + update-browserslist-db: 1.0.13(browserslist@4.22.3) dev: true /buffer-crc32@0.2.13: @@ -2930,8 +2954,8 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - /c8@9.0.0: - resolution: {integrity: sha512-nFJhU2Cz6Frh2awk3IW7wwk3wx27/U2v8ojQCHGc1GWTCHS6aMu4lal327/ZnnYj7oSThGF1X3qUP1yzAJBcOQ==} + /c8@9.1.0: + resolution: {integrity: sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==} engines: {node: '>=14.14.0'} hasBin: true dependencies: @@ -2953,12 +2977,14 @@ packages: engines: {node: '>=8'} dev: true - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + /call-bind@1.0.6: + resolution: {integrity: sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==} + engines: {node: '>= 0.4'} dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.1.1 + get-intrinsic: 1.2.4 + set-function-length: 1.2.1 dev: true /callsites@3.1.0: @@ -2980,8 +3006,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001568: - resolution: {integrity: sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==} + /caniuse-lite@1.0.30001585: + resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} dev: true /chai@4.4.1: @@ -3024,8 +3050,8 @@ packages: get-func-name: 2.0.2 dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 @@ -3152,7 +3178,7 @@ packages: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} /console-clear@1.1.1: resolution: {integrity: sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==} @@ -3172,10 +3198,10 @@ packages: engines: {node: '>= 0.6'} dev: false - /core-js-compat@3.34.0: - resolution: {integrity: sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==} + /core-js-compat@3.35.1: + resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==} dependencies: - browserslist: 4.22.2 + browserslist: 4.22.3 dev: true /cross-env@7.0.3: @@ -3315,11 +3341,12 @@ packages: clone: 1.0.4 dev: true - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + /define-data-property@1.1.2: + resolution: {integrity: sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.1 dev: true @@ -3328,7 +3355,7 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.2 has-property-descriptors: 1.0.1 object-keys: 1.1.1 dev: true @@ -3385,8 +3412,8 @@ packages: esutils: 2.0.3 dev: true - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + /dotenv@16.4.1: + resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} engines: {node: '>=12'} dev: true @@ -3394,8 +3421,8 @@ packages: resolution: {integrity: sha512-QgA6BUh2SoBYE/dSuMmeGhNdoGtGewt3Rn66xKyXoGNyjrKRXf163wuM+xeQ83p87l/3ALoB6Il1dgKyGS5pEw==} dev: true - /dts-buddy@0.4.3(typescript@5.3.3): - resolution: {integrity: sha512-vytwDCQAj8rqYPbGsrjiOCRv3O2ipwyUwSc5/II1MpS/Eq6KNZNkGU1djOA31nL7jh7092W/nwbwZHCKedf8Vw==} + /dts-buddy@0.4.4(typescript@5.3.3): + resolution: {integrity: sha512-7pjuo2cmXNx9gYinJy1/KQr998KpAQfv52EKdvJvdQkk+ud++EGBCDgoxMiR3vuU/NvWDDvh1zc0lgnH+NsRtA==} hasBin: true peerDependencies: typescript: '>=5.0.4 <5.4' @@ -3405,20 +3432,28 @@ packages: globrex: 0.1.2 kleur: 4.1.5 locate-character: 3.0.0 - magic-string: 0.30.5 + magic-string: 0.30.7 sade: 1.8.1 tiny-glob: 0.2.9 - ts-api-utils: 1.0.3(typescript@5.3.3) + ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 dev: true - /electron-to-chromium@1.4.611: - resolution: {integrity: sha512-ZtRpDxrjHapOwxtv+nuth5ByB8clyn8crVynmRNGO3wG3LOp8RTcyZDqwaI6Ng6y8FCK2hVZmJoqwCskKbNMaw==} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /electron-to-chromium@1.4.661: + resolution: {integrity: sha512-AFg4wDHSOk5F+zA8aR+SVIOabu7m0e7BiJnigCvPXzIGy731XENw/lmNxTySpVFtkFEy+eyt4oHhh5FF3NjQNw==} dev: true /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -3437,53 +3472,58 @@ packages: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 es-set-tostringtag: 2.0.2 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 globalthis: 1.0.3 gopd: 1.0.1 has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.3 string.prototype.trim: 1.2.8 string.prototype.trimend: 1.0.7 string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 + typed-array-buffer: 1.0.1 typed-array-byte-length: 1.0.0 typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} dev: true /es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 hasown: 2.0.0 dev: true @@ -3506,38 +3546,38 @@ packages: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true - /esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.19.11 - '@esbuild/android-arm': 0.19.11 - '@esbuild/android-arm64': 0.19.11 - '@esbuild/android-x64': 0.19.11 - '@esbuild/darwin-arm64': 0.19.11 - '@esbuild/darwin-x64': 0.19.11 - '@esbuild/freebsd-arm64': 0.19.11 - '@esbuild/freebsd-x64': 0.19.11 - '@esbuild/linux-arm': 0.19.11 - '@esbuild/linux-arm64': 0.19.11 - '@esbuild/linux-ia32': 0.19.11 - '@esbuild/linux-loong64': 0.19.11 - '@esbuild/linux-mips64el': 0.19.11 - '@esbuild/linux-ppc64': 0.19.11 - '@esbuild/linux-riscv64': 0.19.11 - '@esbuild/linux-s390x': 0.19.11 - '@esbuild/linux-x64': 0.19.11 - '@esbuild/netbsd-x64': 0.19.11 - '@esbuild/openbsd-x64': 0.19.11 - '@esbuild/sunos-x64': 0.19.11 - '@esbuild/win32-arm64': 0.19.11 - '@esbuild/win32-ia32': 0.19.11 - '@esbuild/win32-x64': 0.19.11 - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} dev: true @@ -3586,19 +3626,19 @@ packages: eslint-compat-utils: 0.1.2(eslint@8.56.0) esutils: 2.0.3 known-css-properties: 0.29.0 - postcss: 8.4.32 - postcss-load-config: 3.1.4(postcss@8.4.32) - postcss-safe-parser: 6.0.0(postcss@8.4.32) - postcss-selector-parser: 6.0.13 - semver: 7.5.4 + postcss: 8.4.35 + postcss-load-config: 3.1.4(postcss@8.4.35) + postcss-safe-parser: 6.0.0(postcss@8.4.35) + postcss-selector-parser: 6.0.15 + semver: 7.6.0 svelte-eslint-parser: 0.33.1 transitivePeerDependencies: - supports-color - ts-node dev: true - /eslint-plugin-unicorn@50.0.1(eslint@8.56.0): - resolution: {integrity: sha512-KxenCZxqSYW0GWHH18okDlOQcpezcitm5aOSz6EnobyJ6BIByiPDviQRjJIUAjG/tMN11958MxaQ+qCoU6lfDA==} + /eslint-plugin-unicorn@51.0.1(eslint@8.56.0): + resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.56.0' @@ -3608,7 +3648,7 @@ packages: '@eslint/eslintrc': 2.1.4 ci-info: 4.0.0 clean-regexp: 1.0.0 - core-js-compat: 3.34.0 + core-js-compat: 3.35.1 eslint: 8.56.0 esquery: 1.5.0 indent-string: 4.0.0 @@ -3618,7 +3658,7 @@ packages: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - semver: 7.5.4 + semver: 7.6.0 strip-indent: 3.0.0 transitivePeerDependencies: - supports-color @@ -3646,7 +3686,7 @@ packages: '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.56.0 - '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 @@ -3667,7 +3707,7 @@ packages: glob-parent: 6.0.2 globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -3784,8 +3824,8 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 @@ -3847,8 +3887,8 @@ packages: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true - /flexsearch@0.7.31: - resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} + /flexsearch@0.7.43: + resolution: {integrity: sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg==} dev: true /for-each@0.3.3: @@ -3915,7 +3955,7 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 functions-have-names: 1.2.3 @@ -3949,9 +3989,11 @@ packages: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 @@ -3968,12 +4010,13 @@ packages: engines: {node: '>=16'} dev: true - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.6 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 dev: true /gitignore-parser@0.0.2: @@ -3994,15 +4037,16 @@ packages: is-glob: 4.0.3 dev: true - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 dev: true /glob@7.2.3: @@ -4049,7 +4093,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -4060,7 +4104,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 dev: true /graceful-fs@4.2.11: @@ -4096,7 +4140,7 @@ packages: /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 dev: true /has-proto@1.0.1: @@ -4109,8 +4153,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 @@ -4167,16 +4211,16 @@ packages: minimatch: 5.1.6 dev: true - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} dev: true - /imagetools-core@6.0.3: - resolution: {integrity: sha512-3J7Dww03g0dZU5NLbuDRqCqH/AnedR0T3mOl7AP0Curqt/OEtghiDw7Py+Dwa17xL7yJ0uemdEutWkOZm6CnaQ==} + /imagetools-core@6.0.4: + resolution: {integrity: sha512-N1qs5qn7u9nR3kboISkYuvJm8MohiphCfBa+wx1UOropVaFis9/mh6wuDPLHJNhl6/64C7q2Pch5NASVKAaSrg==} engines: {node: '>=12.0.0'} dependencies: - sharp: 0.33.0 + sharp: 0.33.2 dev: false /import-fresh@3.3.0: @@ -4210,13 +4254,13 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + es-errors: 1.3.0 hasown: 2.0.0 - side-channel: 1.0.4 + side-channel: 1.0.5 dev: true /internmap@2.0.3: @@ -4224,12 +4268,12 @@ packages: engines: {node: '>=12'} dev: false - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 dev: true /is-arrayish@0.2.1: @@ -4256,8 +4300,8 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.6 + has-tostringtag: 1.0.2 dev: true /is-builtin-module@3.2.1: @@ -4280,7 +4324,7 @@ packages: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-extglob@2.1.1: @@ -4309,7 +4353,7 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-number@7.0.0: @@ -4344,14 +4388,14 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.6 + has-tostringtag: 1.0.2 dev: true /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 dev: true /is-stream@3.0.0: @@ -4363,7 +4407,7 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-subdir@1.2.0: @@ -4380,17 +4424,17 @@ packages: has-symbols: 1.0.3 dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 dev: true /is-windows@1.0.2: @@ -4428,6 +4472,15 @@ packages: istanbul-lib-report: 3.0.1 dev: true + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true @@ -4474,8 +4527,8 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} dev: true /jsonfile@4.0.0: @@ -4515,8 +4568,8 @@ packages: type-check: 0.4.0 dev: true - /lightningcss-darwin-arm64@1.22.1: - resolution: {integrity: sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==} + /lightningcss-darwin-arm64@1.23.0: + resolution: {integrity: sha512-kl4Pk3Q2lnE6AJ7Qaij47KNEfY2/UXRZBT/zqGA24B8qwkgllr/j7rclKOf1axcslNXvvUdztjo4Xqh39Yq1aA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] @@ -4524,8 +4577,8 @@ packages: dev: true optional: true - /lightningcss-darwin-x64@1.22.1: - resolution: {integrity: sha512-5p2rnlVTv6Gpw4PlTLq925nTVh+HFh4MpegX8dPDYJae+NFVjQ67gY7O6iHIzQjLipDiYejFF0yHrhjU3XgLBQ==} + /lightningcss-darwin-x64@1.23.0: + resolution: {integrity: sha512-KeRFCNoYfDdcolcFXvokVw+PXCapd2yHS1Diko1z1BhRz/nQuD5XyZmxjWdhmhN/zj5sH8YvWsp0/lPLVzqKpg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -4533,8 +4586,8 @@ packages: dev: true optional: true - /lightningcss-freebsd-x64@1.22.1: - resolution: {integrity: sha512-1FaBtcFrZqB2hkFbAxY//Pnp8koThvyB6AhjbdVqKD4/pu13Rl91fKt2N9qyeQPUt3xy7ORUvSO+dPk3J6EjXg==} + /lightningcss-freebsd-x64@1.23.0: + resolution: {integrity: sha512-xhnhf0bWPuZxcqknvMDRFFo2TInrmQRWZGB0f6YoAsZX8Y+epfjHeeOIGCfAmgF0DgZxHwYc8mIR5tQU9/+ROA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] @@ -4542,8 +4595,8 @@ packages: dev: true optional: true - /lightningcss-linux-arm-gnueabihf@1.22.1: - resolution: {integrity: sha512-6rub98tYGfE5I5j0BP8t/2d4BZyu1S7Iz9vUkm0H26snAFHYxLfj3RbQn0xHHIePSetjLnhcg3QlfwUAkD/FYg==} + /lightningcss-linux-arm-gnueabihf@1.23.0: + resolution: {integrity: sha512-fBamf/bULvmWft9uuX+bZske236pUZEoUlaHNBjnueaCTJ/xd8eXgb0cEc7S5o0Nn6kxlauMBnqJpF70Bgq3zg==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] @@ -4551,8 +4604,8 @@ packages: dev: true optional: true - /lightningcss-linux-arm64-gnu@1.22.1: - resolution: {integrity: sha512-nYO5qGtb/1kkTZu3FeTiM+2B2TAb7m2DkLCTgQIs2bk2o9aEs7I96fwySKcoHWQAiQDGR9sMux9vkV4KQXqPaQ==} + /lightningcss-linux-arm64-gnu@1.23.0: + resolution: {integrity: sha512-RS7sY77yVLOmZD6xW2uEHByYHhQi5JYWmgVumYY85BfNoVI3DupXSlzbw+b45A9NnVKq45+oXkiN6ouMMtTwfg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -4560,8 +4613,8 @@ packages: dev: true optional: true - /lightningcss-linux-arm64-musl@1.22.1: - resolution: {integrity: sha512-MCV6RuRpzXbunvzwY644iz8cw4oQxvW7oer9xPkdadYqlEyiJJ6wl7FyJOH7Q6ZYH4yjGAUCvxDBxPbnDu9ZVg==} + /lightningcss-linux-arm64-musl@1.23.0: + resolution: {integrity: sha512-cU00LGb6GUXCwof6ACgSMKo3q7XYbsyTj0WsKHLi1nw7pV0NCq8nFTn6ZRBYLoKiV8t+jWl0Hv8KkgymmK5L5g==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -4569,8 +4622,8 @@ packages: dev: true optional: true - /lightningcss-linux-x64-gnu@1.22.1: - resolution: {integrity: sha512-RjNgpdM20VUXgV7us/VmlO3Vn2ZRiDnc3/bUxCVvySZWPiVPprpqW/QDWuzkGa+NCUf6saAM5CLsZLSxncXJwg==} + /lightningcss-linux-x64-gnu@1.23.0: + resolution: {integrity: sha512-q4jdx5+5NfB0/qMbXbOmuC6oo7caPnFghJbIAV90cXZqgV8Am3miZhC4p+sQVdacqxfd+3nrle4C8icR3p1AYw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -4578,8 +4631,8 @@ packages: dev: true optional: true - /lightningcss-linux-x64-musl@1.22.1: - resolution: {integrity: sha512-ZgO4C7Rd6Hv/5MnyY2KxOYmIlzk4rplVolDt3NbkNR8DndnyX0Q5IR4acJWNTBICQ21j3zySzKbcJaiJpk/4YA==} + /lightningcss-linux-x64-musl@1.23.0: + resolution: {integrity: sha512-G9Ri3qpmF4qef2CV/80dADHKXRAQeQXpQTLx7AiQrBYQHqBjB75oxqj06FCIe5g4hNCqLPnM9fsO4CyiT1sFSQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -4587,8 +4640,8 @@ packages: dev: true optional: true - /lightningcss-win32-x64-msvc@1.22.1: - resolution: {integrity: sha512-4pozV4eyD0MDET41ZLHAeBo+H04Nm2UEYIk5w/ts40231dRFV7E0cjwbnZvSoc1DXFgecAhiC0L16ruv/ZDCpg==} + /lightningcss-win32-x64-msvc@1.23.0: + resolution: {integrity: sha512-1rcBDJLU+obPPJM6qR5fgBUiCdZwZLafZM5f9kwjFLkb/UBNIzmae39uCSmh71nzPCTXZqHbvwu23OWnWEz+eg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -4596,21 +4649,21 @@ packages: dev: true optional: true - /lightningcss@1.22.1: - resolution: {integrity: sha512-Fy45PhibiNXkm0cK5FJCbfO8Y6jUpD/YcHf/BtuI+jvYYqSXKF4muk61jjE8YxCR9y+hDYIWSzHTc+bwhDE6rQ==} + /lightningcss@1.23.0: + resolution: {integrity: sha512-SEArWKMHhqn/0QzOtclIwH5pXIYQOUEkF8DgICd/105O+GCgd7jxjNod/QPnBCSWvpRHQBGVz5fQ9uScby03zA==} engines: {node: '>= 12.0.0'} dependencies: detect-libc: 1.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.22.1 - lightningcss-darwin-x64: 1.22.1 - lightningcss-freebsd-x64: 1.22.1 - lightningcss-linux-arm-gnueabihf: 1.22.1 - lightningcss-linux-arm64-gnu: 1.22.1 - lightningcss-linux-arm64-musl: 1.22.1 - lightningcss-linux-x64-gnu: 1.22.1 - lightningcss-linux-x64-musl: 1.22.1 - lightningcss-win32-x64-msvc: 1.22.1 + lightningcss-darwin-arm64: 1.23.0 + lightningcss-darwin-x64: 1.23.0 + lightningcss-freebsd-x64: 1.23.0 + lightningcss-linux-arm-gnueabihf: 1.23.0 + lightningcss-linux-arm64-gnu: 1.23.0 + lightningcss-linux-arm64-musl: 1.23.0 + lightningcss-linux-x64-gnu: 1.23.0 + lightningcss-linux-x64-musl: 1.23.0 + lightningcss-win32-x64-msvc: 1.23.0 dev: true /lilconfig@2.1.0: @@ -4682,6 +4735,11 @@ packages: tslib: 2.6.2 dev: false + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + dev: true + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: @@ -4700,8 +4758,8 @@ packages: hasBin: true dev: true - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -4717,7 +4775,7 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true /map-obj@1.0.1: @@ -4829,6 +4887,11 @@ packages: engines: {node: '>=8'} dev: false + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -4867,7 +4930,7 @@ packages: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 - ufo: 1.3.2 + ufo: 1.4.0 dev: true /mri@1.2.0: @@ -4917,8 +4980,8 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-gyp-build@4.7.1: - resolution: {integrity: sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==} + /node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true dev: false @@ -5003,7 +5066,7 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 @@ -5144,6 +5207,14 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + dev: true + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -5191,23 +5262,23 @@ packages: /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: - jsonc-parser: 3.2.0 + jsonc-parser: 3.2.1 mlly: 1.5.0 pathe: 1.1.2 dev: true - /playwright-core@1.41.0: - resolution: {integrity: sha512-UGKASUhXmvqm2Lxa1fNr8sFwAtqjpgBRr9jQ7XBI8Rn5uFiEowGUGwrruUQsVPIom4bk7Lt+oLGpXobnXzrBIw==} + /playwright-core@1.41.2: + resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==} engines: {node: '>=16'} hasBin: true dev: true - /playwright@1.41.0: - resolution: {integrity: sha512-XOsfl5ZtAik/T9oek4V0jAypNlaCNzuKOwVhqhgYT3os6kH34PzbRb74F0VWcLYa5WFdnmxl7qyAHBXvPv7lqQ==} + /playwright@1.41.2: + resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.41.0 + playwright-core: 1.41.2 optionalDependencies: fsevents: 2.3.2 dev: true @@ -5225,7 +5296,7 @@ packages: trouter: 4.0.0 dev: true - /postcss-load-config@3.1.4(postcss@8.4.32): + /postcss-load-config@3.1.4(postcss@8.4.35): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -5238,47 +5309,38 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.32 + postcss: 8.4.35 yaml: 1.10.2 dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.32): + /postcss-safe-parser@6.0.0(postcss@8.4.35): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-scss@4.0.9(postcss@8.4.32): + /postcss-scss@4.0.9(postcss@8.4.35): resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.4.29 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + /postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 dev: true - /postcss@8.4.32: - resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -5301,14 +5363,14 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.9): + /prettier-plugin-svelte@3.1.2(prettier@3.2.5)(svelte@4.2.10): resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 dependencies: - prettier: 3.1.1 - svelte: 4.2.9 + prettier: 3.2.5 + svelte: 4.2.10 dev: true /prettier@2.8.8: @@ -5317,8 +5379,8 @@ packages: hasBin: true dev: true - /prettier@3.1.1: - resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true dev: true @@ -5432,8 +5494,8 @@ packages: strip-indent: 3.0.0 dev: true - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} dev: true /regexp-tree@0.1.27: @@ -5445,7 +5507,7 @@ packages: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 set-function-name: 2.0.1 dev: true @@ -5504,26 +5566,26 @@ packages: dependencies: glob: 7.2.3 - /rollup@4.9.5: - resolution: {integrity: sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==} + /rollup@4.9.6: + resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.5 - '@rollup/rollup-android-arm64': 4.9.5 - '@rollup/rollup-darwin-arm64': 4.9.5 - '@rollup/rollup-darwin-x64': 4.9.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.5 - '@rollup/rollup-linux-arm64-gnu': 4.9.5 - '@rollup/rollup-linux-arm64-musl': 4.9.5 - '@rollup/rollup-linux-riscv64-gnu': 4.9.5 - '@rollup/rollup-linux-x64-gnu': 4.9.5 - '@rollup/rollup-linux-x64-musl': 4.9.5 - '@rollup/rollup-win32-arm64-msvc': 4.9.5 - '@rollup/rollup-win32-ia32-msvc': 4.9.5 - '@rollup/rollup-win32-x64-msvc': 4.9.5 + '@rollup/rollup-android-arm-eabi': 4.9.6 + '@rollup/rollup-android-arm64': 4.9.6 + '@rollup/rollup-darwin-arm64': 4.9.6 + '@rollup/rollup-darwin-x64': 4.9.6 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 + '@rollup/rollup-linux-arm64-gnu': 4.9.6 + '@rollup/rollup-linux-arm64-musl': 4.9.6 + '@rollup/rollup-linux-riscv64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-musl': 4.9.6 + '@rollup/rollup-win32-arm64-msvc': 4.9.6 + '@rollup/rollup-win32-ia32-msvc': 4.9.6 + '@rollup/rollup-win32-x64-msvc': 4.9.6 fsevents: 2.3.3 /run-parallel@1.2.0: @@ -5537,12 +5599,12 @@ packages: dependencies: mri: 1.2.0 - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -5551,11 +5613,12 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.6 + es-errors: 1.3.0 is-regex: 1.1.4 dev: true @@ -5587,8 +5650,8 @@ packages: hasBin: true dev: false - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} engines: {node: '>=10'} hasBin: true dependencies: @@ -5601,12 +5664,14 @@ packages: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: false - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - get-intrinsic: 1.2.2 + define-data-property: 1.1.2 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.1 dev: true @@ -5615,39 +5680,39 @@ packages: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.2 functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 dev: true - /sharp@0.33.0: - resolution: {integrity: sha512-99DZKudjm/Rmz+M0/26t4DKpXyywAOJaayGS9boEn7FvgtG0RYBi46uPE2c+obcJRtA3AZa0QwJot63gJQ1F0Q==} - engines: {libvips: '>=8.15.0', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + /sharp@0.33.2: + resolution: {integrity: sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==} + engines: {libvips: '>=8.15.1', node: ^18.17.0 || ^20.3.0 || >=21.0.0} requiresBuild: true dependencies: color: 4.2.3 detect-libc: 2.0.2 - semver: 7.5.4 + semver: 7.6.0 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.0 - '@img/sharp-darwin-x64': 0.33.0 - '@img/sharp-libvips-darwin-arm64': 1.0.0 - '@img/sharp-libvips-darwin-x64': 1.0.0 - '@img/sharp-libvips-linux-arm': 1.0.0 - '@img/sharp-libvips-linux-arm64': 1.0.0 - '@img/sharp-libvips-linux-s390x': 1.0.0 - '@img/sharp-libvips-linux-x64': 1.0.0 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.0 - '@img/sharp-libvips-linuxmusl-x64': 1.0.0 - '@img/sharp-linux-arm': 0.33.0 - '@img/sharp-linux-arm64': 0.33.0 - '@img/sharp-linux-s390x': 0.33.0 - '@img/sharp-linux-x64': 0.33.0 - '@img/sharp-linuxmusl-arm64': 0.33.0 - '@img/sharp-linuxmusl-x64': 0.33.0 - '@img/sharp-wasm32': 0.33.0 - '@img/sharp-win32-ia32': 0.33.0 - '@img/sharp-win32-x64': 0.33.0 + '@img/sharp-darwin-arm64': 0.33.2 + '@img/sharp-darwin-x64': 0.33.2 + '@img/sharp-libvips-darwin-arm64': 1.0.1 + '@img/sharp-libvips-darwin-x64': 1.0.1 + '@img/sharp-libvips-linux-arm': 1.0.1 + '@img/sharp-libvips-linux-arm64': 1.0.1 + '@img/sharp-libvips-linux-s390x': 1.0.1 + '@img/sharp-libvips-linux-x64': 1.0.1 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 + '@img/sharp-libvips-linuxmusl-x64': 1.0.1 + '@img/sharp-linux-arm': 0.33.2 + '@img/sharp-linux-arm64': 0.33.2 + '@img/sharp-linux-s390x': 0.33.2 + '@img/sharp-linux-x64': 0.33.2 + '@img/sharp-linuxmusl-arm64': 0.33.2 + '@img/sharp-linuxmusl-x64': 0.33.2 + '@img/sharp-wasm32': 0.33.2 + '@img/sharp-win32-ia32': 0.33.2 + '@img/sharp-win32-x64': 0.33.2 dev: false /shebang-command@1.2.0: @@ -5691,16 +5756,18 @@ packages: /shiki@0.10.1: resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} dependencies: - jsonc-parser: 3.2.0 + jsonc-parser: 3.2.1 vscode-oniguruma: 1.7.0 vscode-textmate: 5.2.0 dev: true - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.5: + resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.6 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 object-inspect: 1.13.1 dev: true @@ -5795,14 +5862,14 @@ packages: spdx-license-ids: 3.0.16 dev: true - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + /spdx-exceptions@2.4.0: + resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} dev: true /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: - spdx-exceptions: 2.3.0 + spdx-exceptions: 2.4.0 spdx-license-ids: 3.0.16 dev: true @@ -5836,11 +5903,20 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + /string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -5848,7 +5924,7 @@ packages: /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -5856,7 +5932,7 @@ packages: /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -5873,6 +5949,13 @@ packages: dependencies: ansi-regex: 5.0.1 + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -5901,14 +5984,14 @@ packages: acorn: 8.11.3 dev: true - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 - glob: 7.1.6 + glob: 10.3.10 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -5933,20 +6016,20 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check@3.6.3(postcss@8.4.32)(svelte@4.2.9): + /svelte-check@3.6.3(postcss@8.4.35)(svelte@4.2.10): resolution: {integrity: sha512-Q2nGnoysxUnB9KjnjpQLZwdjK62DHyW6nuH/gm2qteFnDk0lCehe/6z8TsIvYeKjC6luKaWxiNGyOcWiLLPSwA==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 dependencies: - '@jridgewell/trace-mapping': 0.3.21 - chokidar: 3.5.3 + '@jridgewell/trace-mapping': 0.3.22 + chokidar: 3.6.0 fast-glob: 3.3.2 import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.9 - svelte-preprocess: 5.1.3(postcss@8.4.32)(svelte@4.2.9)(typescript@5.3.3) + svelte: 4.2.10 + svelte-preprocess: 5.1.3(postcss@8.4.35)(svelte@4.2.10)(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - '@babel/core' @@ -5972,37 +6055,37 @@ packages: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.32 - postcss-scss: 4.0.9(postcss@8.4.32) + postcss: 8.4.35 + postcss-scss: 4.0.9(postcss@8.4.35) dev: true - /svelte-hmr@0.15.3(svelte@4.2.9): + /svelte-hmr@0.15.3(svelte@4.2.10): resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.9 + svelte: 4.2.10 dev: true - /svelte-local-storage-store@0.6.4(svelte@4.2.9): + /svelte-local-storage-store@0.6.4(svelte@4.2.10): resolution: {integrity: sha512-45WoY2vSGPQM1sIQJ9jTkPPj20hYeqm+af6mUGRFSPP5WglZf36YYoZqwmZZ8Dt/2SU8lem+BTA8/Z/8TkqNLg==} engines: {node: '>=0.14'} peerDependencies: svelte: ^3.48.0 || >4.0.0 dependencies: - svelte: 4.2.9 + svelte: 4.2.10 dev: true - /svelte-parse-markup@0.1.2(svelte@4.2.9): + /svelte-parse-markup@0.1.2(svelte@4.2.10): resolution: {integrity: sha512-DycY7DJr7VqofiJ63ut1/NEG92HrWWL56VWITn/cJCu+LlZhMoBkBXT4opUitPEEwbq1nMQbv4vTKUfbOqIW1g==} peerDependencies: svelte: ^3.0.0 || ^4.0.0 dependencies: - svelte: 4.2.9 + svelte: 4.2.10 dev: false - /svelte-preprocess@5.1.3(postcss@8.4.32)(svelte@4.2.9)(typescript@5.3.3): + /svelte-preprocess@5.1.3(postcss@8.4.35)(svelte@4.2.10)(typescript@5.3.3): resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} engines: {node: '>= 16.0.0', pnpm: ^8.0.0} requiresBuild: true @@ -6042,33 +6125,33 @@ packages: dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 - magic-string: 0.30.5 - postcss: 8.4.32 + magic-string: 0.30.7 + postcss: 8.4.35 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.9 + svelte: 4.2.10 typescript: 5.3.3 dev: true - /svelte2tsx@0.7.0(svelte@4.2.9)(typescript@5.3.3): - resolution: {integrity: sha512-qAelcydnmuiDvD1HsrWi23RWx24RZTKRv6n4JaGC/pkoJfbLkJPQT2wa1qN0ZyfKTNLSyoj2FW9z62l/AUzUNA==} + /svelte2tsx@0.7.1(svelte@4.2.10)(typescript@5.3.3): + resolution: {integrity: sha512-0lKa6LrqJxRan0bDmBd/uFsVzYSXnoFUDaczaH0znke/XI79oy1JjFaF51J9EsOvpn8lXPlrUc3n/MA/ORNxBg==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.9 + svelte: 4.2.10 typescript: 5.3.3 dev: false - /svelte@4.2.9: - resolution: {integrity: sha512-hsoB/WZGEPFXeRRLPhPrbRz67PhP6sqYgvwcAs+gWdSQSvNDw+/lTeUJSWe5h2xC97Fz/8QxAOqItwBzNJPU8w==} + /svelte@4.2.10: + resolution: {integrity: sha512-Ep06yCaCdgG1Mafb/Rx8sJ1QS3RW2I2BxGp2Ui9LBHSZ2/tO/aGLc5WqPjgiAP6KAnLJGaIr/zzwQlOo1b8MxA==} engines: {node: '>=16'} dependencies: '@ampproject/remapping': 2.2.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 '@types/estree': 1.0.5 acorn: 8.11.3 aria-query: 5.3.0 @@ -6078,7 +6161,7 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.5 + magic-string: 0.30.7 periscopic: 3.1.0 /tar@6.2.0: @@ -6130,8 +6213,8 @@ packages: globalyzer: 0.1.0 globrex: 0.1.2 - /tinybench@2.5.1: - resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} dev: true /tinydate@1.3.0: @@ -6139,13 +6222,13 @@ packages: engines: {node: '>=4'} dev: true - /tinypool@0.8.1: - resolution: {integrity: sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==} + /tinypool@0.8.2: + resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} dev: true @@ -6188,9 +6271,9 @@ packages: regexparam: 3.0.0 dev: true - /ts-api-utils@1.0.3(typescript@5.3.3): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} + /ts-api-utils@1.2.1(typescript@5.3.3): + resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: @@ -6258,42 +6341,42 @@ packages: engines: {node: '>=8'} dev: true - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + /typed-array-buffer@1.0.1: + resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.6 + es-errors: 1.3.0 + is-typed-array: 1.1.13 dev: true /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 for-each: 0.3.3 has-proto: 1.0.1 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 for-each: 0.3.3 has-proto: 1.0.1 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 for-each: 0.3.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typescript@5.0.4: @@ -6307,14 +6390,14 @@ packages: engines: {node: '>=14.17'} hasBin: true - /ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + /ufo@1.4.0: + resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} dev: true /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -6329,14 +6412,14 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /update-browserslist-db@1.0.13(browserslist@4.22.2): + /update-browserslist-db@1.0.13(browserslist@4.22.3): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 + browserslist: 4.22.3 + escalade: 3.1.2 picocolors: 1.0.0 dev: true @@ -6368,7 +6451,7 @@ packages: resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 dev: true @@ -6380,18 +6463,18 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-imagetools@6.2.8(rollup@4.9.5): - resolution: {integrity: sha512-52r/BvprawSlUXayDn5ncX3mqaoxBbOaYG4eakzwREoCXEOTvp+A4HDXrDoeS6PM9T/3ZH7CqBhgmIYm6B/mpQ==} + /vite-imagetools@6.2.9(rollup@4.9.6): + resolution: {integrity: sha512-C4ZYhgj2vAj43/TpZ06XlDNP0p/7LIeYbgUYr+xG44nM++4HGX6YZBKAYpiBNgiCFUTJ6eXkRppWBrfPMevgmg==} engines: {node: '>=12.0.0'} dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.5) - imagetools-core: 6.0.3 + '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + imagetools-core: 6.0.4 transitivePeerDependencies: - rollup dev: false - /vite-node@1.2.0(@types/node@18.19.3)(lightningcss@1.22.1): - resolution: {integrity: sha512-ETnQTHeAbbOxl7/pyBck9oAPZZZo+kYnFt1uQDD+hPReOc+wCjXw4r4jHriBRuVDB5isHmPXxrfc1yJnfBERqg==} + /vite-node@1.2.2(@types/node@18.19.14)(lightningcss@1.23.0): + resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -6399,7 +6482,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + vite: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) transitivePeerDependencies: - '@types/node' - less @@ -6411,8 +6494,8 @@ packages: - terser dev: true - /vite@5.0.12(@types/node@18.19.3)(lightningcss@1.22.1): - resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + /vite@5.1.0(@types/node@18.19.14)(lightningcss@1.23.0): + resolution: {integrity: sha512-STmSFzhY4ljuhz14bg9LkMTk3d98IO6DIArnTY6MeBwiD1Za2StcQtz7fzOUnRCqrHSD5+OS2reg4HOz1eoLnw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6439,16 +6522,16 @@ packages: terser: optional: true dependencies: - '@types/node': 18.19.3 - esbuild: 0.19.11 - lightningcss: 1.22.1 - postcss: 8.4.33 - rollup: 4.9.5 + '@types/node': 18.19.14 + esbuild: 0.19.12 + lightningcss: 1.23.0 + postcss: 8.4.35 + rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 dev: true - /vitefu@0.2.5(vite@5.0.12): + /vitefu@0.2.5(vite@5.1.0): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -6456,11 +6539,11 @@ packages: vite: optional: true dependencies: - vite: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) + vite: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) dev: true - /vitest@1.2.0(@types/node@18.19.3)(lightningcss@1.22.1): - resolution: {integrity: sha512-Ixs5m7BjqvLHXcibkzKRQUvD/XLw0E3rvqaCMlrm/0LMsA0309ZqYvTlPzkhh81VlEyVZXFlwWnkhb6/UMtcaQ==} + /vitest@1.2.2(@types/node@18.19.14)(lightningcss@1.23.0): + resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6484,27 +6567,27 @@ packages: jsdom: optional: true dependencies: - '@types/node': 18.19.3 - '@vitest/expect': 1.2.0 - '@vitest/runner': 1.2.0 - '@vitest/snapshot': 1.2.0 - '@vitest/spy': 1.2.0 - '@vitest/utils': 1.2.0 + '@types/node': 18.19.14 + '@vitest/expect': 1.2.2 + '@vitest/runner': 1.2.2 + '@vitest/snapshot': 1.2.2 + '@vitest/spy': 1.2.2 + '@vitest/utils': 1.2.2 acorn-walk: 8.3.2 cac: 6.7.14 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 - magic-string: 0.30.5 + magic-string: 0.30.7 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 strip-literal: 1.3.0 - tinybench: 2.5.1 - tinypool: 0.8.1 - vite: 5.0.12(@types/node@18.19.3)(lightningcss@1.22.1) - vite-node: 1.2.0(@types/node@18.19.3)(lightningcss@1.22.1) + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + vite-node: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -6561,15 +6644,15 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /which@1.3.1: @@ -6628,6 +6711,15 @@ packages: strip-ansi: 6.0.1 dev: true + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -6687,7 +6779,7 @@ packages: engines: {node: '>=12'} dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 diff --git a/sites/kit.svelte.dev/package.json b/sites/kit.svelte.dev/package.json index 9807bd64c492..a111a4b8e2e6 100644 --- a/sites/kit.svelte.dev/package.json +++ b/sites/kit.svelte.dev/package.json @@ -30,9 +30,9 @@ "prism-svelte": "^0.5.0", "prismjs": "^1.29.0", "shiki-twoslash": "^3.1.2", - "svelte": "^4.2.9", + "svelte": "^4.2.10", "typescript": "5.0.4", - "vite": "^5.0.12", + "vite": "^5.1.0", "vitest": "^1.2.0" }, "type": "module", From bbdd6e2a33875f39732b7d4c246db21bf17419f8 Mon Sep 17 00:00:00 2001 From: mrkv Date: Fri, 9 Feb 2024 14:28:47 +0300 Subject: [PATCH 014/454] docs: update for BODY_SIZE_LIMIT from 0 to Infinity (#11804) closes #11817 --- documentation/docs/25-build-and-deploy/40-adapter-node.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/25-build-and-deploy/40-adapter-node.md b/documentation/docs/25-build-and-deploy/40-adapter-node.md index a06e4a29112a..44d0ff46dfed 100644 --- a/documentation/docs/25-build-and-deploy/40-adapter-node.md +++ b/documentation/docs/25-build-and-deploy/40-adapter-node.md @@ -116,7 +116,7 @@ We instead read from the _right_, accounting for the number of trusted proxies. ### `BODY_SIZE_LIMIT` -The maximum request body size to accept in bytes including while streaming. Defaults to 512kb. You can disable this option with a value of 0 and implement a custom check in [`handle`](hooks#server-hooks-handle) if you need something more advanced. +The maximum request body size to accept in bytes including while streaming. Defaults to 512kb. You can disable this option with a value of `Infinity` (0 in older versions of the adapter) and implement a custom check in [`handle`](hooks#server-hooks-handle) if you need something more advanced. ## Options From 578598e2b75bed897b61e55c13e70fe575516128 Mon Sep 17 00:00:00 2001 From: Sebastian Ullrich Date: Sun, 11 Feb 2024 16:27:28 +0100 Subject: [PATCH 015/454] docs: update static adapter deploy to pages workflow (#11827) --- .../docs/25-build-and-deploy/50-adapter-static.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/documentation/docs/25-build-and-deploy/50-adapter-static.md b/documentation/docs/25-build-and-deploy/50-adapter-static.md index 8bf95f712a20..55ea0fe377f4 100644 --- a/documentation/docs/25-build-and-deploy/50-adapter-static.md +++ b/documentation/docs/25-build-and-deploy/50-adapter-static.md @@ -123,18 +123,18 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 # If you're using pnpm, add this step then change the commands and cache key below to use `pnpm` # - name: Install pnpm - # uses: pnpm/action-setup@v2 + # uses: pnpm/action-setup@v3 # with: # version: 8 - name: Install Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: npm - name: Install dependencies @@ -147,7 +147,7 @@ jobs: npm run build - name: Upload Artifacts - uses: actions/upload-pages-artifact@v2 + uses: actions/upload-pages-artifact@v3 with: # this should match the `pages` option in your adapter-static options path: 'build/' @@ -167,7 +167,7 @@ jobs: steps: - name: Deploy id: deployment - uses: actions/deploy-pages@v2 + uses: actions/deploy-pages@v4 ``` If you're not using GitHub actions to deploy your site (for example, you're pushing the built site to its own repo), add an empty `.nojekyll` file in your `static` directory to prevent Jekyll from interfering. From f1a3a5fa2550b04d9b7f5663890e7754c66eb9d6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 14:50:16 -0800 Subject: [PATCH 016/454] chore(deps): update dependency @typescript-eslint/eslint-plugin to v7 (#11829) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 92 +++++++++++++++++++++++++------------------------- 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/package.json b/package.json index c27f8931ea74..85b0abfe4cf6 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "@changesets/cli": "^2.27.1", "@sveltejs/eslint-config": "^6.0.4", "@svitejs/changesets-changelog-github-compact": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.35.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 651e35dadb6e..2115a933c5ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,13 +13,13 @@ importers: version: 2.27.1 '@sveltejs/eslint-config': specifier: ^6.0.4 - version: 6.0.4(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@51.0.1)(eslint@8.56.0)(typescript@5.3.3) + version: 6.0.4(@typescript-eslint/eslint-plugin@7.0.1)(@typescript-eslint/parser@7.0.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@51.0.1)(eslint@8.56.0)(typescript@5.3.3) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + specifier: ^7.0.0 + version: 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3) eslint: specifier: ^8.56.0 version: 8.56.0 @@ -2305,7 +2305,7 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@51.0.1)(eslint@8.56.0)(typescript@5.3.3): + /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@7.0.1)(@typescript-eslint/parser@7.0.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@51.0.1)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-U9pwmDs+DbmsnCgTfu6Bacdwqn0DuI1IQNSiQqTgzVyYfaaj+zy9ZoQCiJfxFBGXHkklyXuRHp0KMx346N0lcQ==} peerDependencies: '@typescript-eslint/eslint-plugin': '>= 5' @@ -2316,8 +2316,8 @@ packages: eslint-plugin-unicorn: '>= 47' typescript: '>= 4' dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 eslint-config-prettier: 9.1.0(eslint@8.56.0) eslint-plugin-svelte: 2.35.1(eslint@8.56.0) @@ -2485,23 +2485,23 @@ packages: '@types/node': 18.19.14 dev: true - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + /@typescript-eslint/eslint-plugin@7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.0.1 + '@typescript-eslint/type-utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.0.1 debug: 4.3.4 eslint: 8.56.0 graphemer: 1.4.0 @@ -2514,20 +2514,20 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + /@typescript-eslint/parser@7.0.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-8GcRRZNzaHxKzBPU3tKtFNing571/GwPBeCvmAUw0yBtfE2XVd0zFKJIMSWkHJcPQi0ekxjIts6L/rrZq5cxGQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/scope-manager': 7.0.1 + '@typescript-eslint/types': 7.0.1 + '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.0.1 debug: 4.3.4 eslint: 8.56.0 typescript: 5.3.3 @@ -2535,26 +2535,26 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.21.0: - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + /@typescript-eslint/scope-manager@7.0.1: + resolution: {integrity: sha512-v7/T7As10g3bcWOOPAcbnMDuvctHzCFYCG/8R4bK4iYzdFqsZTbXGln0cZNVcwQcwewsYU2BJLay8j0/4zOk4w==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/types': 7.0.1 + '@typescript-eslint/visitor-keys': 7.0.1 dev: true - /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + /@typescript-eslint/type-utils@7.0.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-YtT9UcstTG5Yqy4xtLiClm1ZpM/pWVGFnkAa90UfdkkZsR1eP2mR/1jbHeYp8Ay1l1JHPyGvoUYR6o3On5Nhmw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) + '@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.56.0 ts-api-utils: 1.2.1(typescript@5.3.3) @@ -2563,13 +2563,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.21.0: - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + /@typescript-eslint/types@7.0.1: + resolution: {integrity: sha512-uJDfmirz4FHib6ENju/7cz9SdMSkeVvJDK3VcMFvf/hAShg8C74FW+06MaQPODHfDJp/z/zHfgawIJRjlu0RLg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + /@typescript-eslint/typescript-estree@7.0.1(typescript@5.3.3): + resolution: {integrity: sha512-SO9wHb6ph0/FN5OJxH4MiPscGah5wjOd0RRpaLvuBv9g8565Fgu0uMySFEPqwPHiQU90yzJ2FjRYKGrAhS1xig==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -2577,8 +2577,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/types': 7.0.1 + '@typescript-eslint/visitor-keys': 7.0.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -2590,18 +2590,18 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + /@typescript-eslint/utils@7.0.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-oe4his30JgPbnv+9Vef1h48jm0S6ft4mNwi9wj7bX10joGn07QRfqIqFHoMiajrtoU88cIhXf8ahwgrcbNLgPA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.0.1 + '@typescript-eslint/types': 7.0.1 + '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) eslint: 8.56.0 semver: 7.6.0 transitivePeerDependencies: @@ -2609,11 +2609,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + /@typescript-eslint/visitor-keys@7.0.1: + resolution: {integrity: sha512-hwAgrOyk++RTXrP4KzCg7zB2U0xt7RUU0ZdMSCsqF3eKUwkdXUMyTb0qdCuji7VIbcpG62kKTU9M1J1c9UpFBw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/types': 7.0.1 eslint-visitor-keys: 3.4.3 dev: true From 3d82b9c4fafa5c191c586b5ebe4fe41d3e0b72cc Mon Sep 17 00:00:00 2001 From: srgeneroso <5541794+SrGeneroso@users.noreply.github.com> Date: Tue, 13 Feb 2024 16:06:18 +0100 Subject: [PATCH 017/454] fix: path missing in first item of "On this page" component for kit docs. (#11831) --- sites/kit.svelte.dev/src/lib/server/docs/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sites/kit.svelte.dev/src/lib/server/docs/index.js b/sites/kit.svelte.dev/src/lib/server/docs/index.js index c0f721e719e4..a04cb4de686c 100644 --- a/sites/kit.svelte.dev/src/lib/server/docs/index.js +++ b/sites/kit.svelte.dev/src/lib/server/docs/index.js @@ -63,6 +63,8 @@ for (const [file, asset] of Object.entries(markdown)) { category: category.title, title, file: `${category_dir}/${basename}`, + slug, + path: slug, sections: await get_sections(body), body }; @@ -78,6 +80,8 @@ export async function get_parsed_docs(slug) { category: page.category, title: page.title, file: page.file, + path: page.path, + slug: page.slug, sections: page.sections, content: await render_content(page.file, page.body) }; From 996080acaeb2e10b9389907f2f6e8cd0f27b4fe0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 13 Feb 2024 20:33:38 -0800 Subject: [PATCH 018/454] chore(deps): update pnpm to v8.15.2 (#11832) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 85b0abfe4cf6..afb38fe1aa33 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "eslint-plugin-unicorn": "^51.0.1", "playwright": "^1.41.0" }, - "packageManager": "pnpm@8.15.1", + "packageManager": "pnpm@8.15.2", "engines": { "pnpm": "^8.0.0" } From cd6db35a6974d11c65f82d06cb9e86047ab8f8f6 Mon Sep 17 00:00:00 2001 From: Luke Hagar Date: Wed, 14 Feb 2024 08:04:00 -0600 Subject: [PATCH 019/454] docs: corrected dead link for SST (#11841) --- documentation/docs/25-build-and-deploy/30-adapter-auto.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/25-build-and-deploy/30-adapter-auto.md b/documentation/docs/25-build-and-deploy/30-adapter-auto.md index dcbfdc40034f..78f3ab5225f4 100644 --- a/documentation/docs/25-build-and-deploy/30-adapter-auto.md +++ b/documentation/docs/25-build-and-deploy/30-adapter-auto.md @@ -8,7 +8,7 @@ When you create a new SvelteKit project with `npm create svelte@latest`, it inst - [`@sveltejs/adapter-netlify`](adapter-netlify) for [Netlify](https://netlify.com/) - [`@sveltejs/adapter-vercel`](adapter-vercel) for [Vercel](https://vercel.com/) - [`svelte-adapter-azure-swa`](https://github.com/geoffrich/svelte-adapter-azure-swa) for [Azure Static Web Apps](https://docs.microsoft.com/en-us/azure/static-web-apps/) -- [`svelte-kit-sst`](https://github.com/serverless-stack/sst/tree/main/packages/svelte-kit-sst) for [AWS via SST](https://docs.sst.dev/start/svelte) +- [`svelte-kit-sst`](https://github.com/sst/sst/tree/master/packages/svelte-kit-sst) for [AWS via SST](https://docs.sst.dev/start/svelte) It's recommended to install the appropriate adapter to your `devDependencies` once you've settled on a target environment, since this will add the adapter to your lockfile and slightly improve install times on CI. @@ -18,4 +18,4 @@ To add configuration options, such as `{ edge: true }` in [`adapter-vercel`](ada ## Adding community adapters -You can add zero-config support for additional adapters by editing [adapters.js](https://github.com/sveltejs/kit/blob/main/packages/adapter-auto/adapters.js) and opening a pull request. \ No newline at end of file +You can add zero-config support for additional adapters by editing [adapters.js](https://github.com/sveltejs/kit/blob/main/packages/adapter-auto/adapters.js) and opening a pull request. From 53412fd74120e452f5e538ed142374a462d2419e Mon Sep 17 00:00:00 2001 From: Hyunbin <47051820+hyunbinseo@users.noreply.github.com> Date: Sat, 17 Feb 2024 00:58:54 +0900 Subject: [PATCH 020/454] chore: bump typescript-eslint to v7 (#11845) --- .changeset/mighty-radios-know.md | 5 +++++ .../create-svelte/shared/+eslint+typescript/package.json | 4 ++-- packages/create-svelte/shared/+eslint/package.json | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/mighty-radios-know.md diff --git a/.changeset/mighty-radios-know.md b/.changeset/mighty-radios-know.md new file mode 100644 index 000000000000..dd8463d54712 --- /dev/null +++ b/.changeset/mighty-radios-know.md @@ -0,0 +1,5 @@ +--- +"create-svelte": patch +--- + +chore: bump typescript-eslint to v7 diff --git a/packages/create-svelte/shared/+eslint+typescript/package.json b/packages/create-svelte/shared/+eslint+typescript/package.json index d2072f21cd2b..983a77c6c1b3 100644 --- a/packages/create-svelte/shared/+eslint+typescript/package.json +++ b/packages/create-svelte/shared/+eslint+typescript/package.json @@ -1,6 +1,6 @@ { "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0" + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0" } } diff --git a/packages/create-svelte/shared/+eslint/package.json b/packages/create-svelte/shared/+eslint/package.json index 7f67ae6ae775..5fd8c6851288 100644 --- a/packages/create-svelte/shared/+eslint/package.json +++ b/packages/create-svelte/shared/+eslint/package.json @@ -1,6 +1,6 @@ { "devDependencies": { - "@types/eslint": "8.56.0", + "@types/eslint": "^8.56.0", "eslint": "^8.56.0", "eslint-plugin-svelte": "^2.35.1" } From 6ab5d2660f64f6b9d0189f943bca189218b631a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 16 Feb 2024 12:36:55 -0800 Subject: [PATCH 021/454] chore(deps): update pnpm to v8.15.3 (#11853) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index afb38fe1aa33..a1146dbf7c5e 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "eslint-plugin-unicorn": "^51.0.1", "playwright": "^1.41.0" }, - "packageManager": "pnpm@8.15.2", + "packageManager": "pnpm@8.15.3", "engines": { "pnpm": "^8.0.0" } From d94a82a3e42eb9fd439330b0f57303b72d15501e Mon Sep 17 00:00:00 2001 From: VoiceOfSoftware <68920618+VoiceOfSoftware@users.noreply.github.com> Date: Fri, 16 Feb 2024 18:35:59 -0800 Subject: [PATCH 022/454] docs: fix typo (#11864) --- documentation/docs/30-advanced/40-service-workers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/30-advanced/40-service-workers.md b/documentation/docs/30-advanced/40-service-workers.md index a4888a6ac8de..2a719d4392d4 100644 --- a/documentation/docs/30-advanced/40-service-workers.md +++ b/documentation/docs/30-advanced/40-service-workers.md @@ -147,4 +147,4 @@ This disables access to DOM typings like `HTMLElement` which are not available i ## Other solutions -SvelteKit's service worker implementation is deliberately low-level. If you need a more full-flegded but also more opinionated solution, we recommend looking at solutions like [Vite PWA plugin](https://vite-pwa-org.netlify.app/frameworks/sveltekit.html), which uses [Workbox](https://web.dev/learn/pwa/workbox). For more general information on service workers, we recommend [the MDN web docs](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers). +SvelteKit's service worker implementation is deliberately low-level. If you need a more full-fledged but also more opinionated solution, we recommend looking at solutions like [Vite PWA plugin](https://vite-pwa-org.netlify.app/frameworks/sveltekit.html), which uses [Workbox](https://web.dev/learn/pwa/workbox). For more general information on service workers, we recommend [the MDN web docs](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers). From 511126b51d4aaa770704491ff0890a76fa116205 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 19 Feb 2024 17:14:09 +0800 Subject: [PATCH 023/454] fix: prevent false positive `history.pushState` warnings (#11858) fixes #11671 The warning currently incorrectly fires when we use history.pushState() internally such as clicking on a link. You can test this in a stackblitz starter project. This is because one of the early exit conditions in the warning method is failing incorrectly. import.meta.url returns the client.js file with a query parameter when loading it from node_modules. This causes the substring search for the module filename in the error stack to always return false (because of the query params that are not present in the error stack) The solution is to simply return the URL without the query parameters if any. --- .changeset/loud-kangaroos-leave.md | 5 +++++ packages/kit/src/runtime/client/client.js | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .changeset/loud-kangaroos-leave.md diff --git a/.changeset/loud-kangaroos-leave.md b/.changeset/loud-kangaroos-leave.md new file mode 100644 index 000000000000..5caa295445fb --- /dev/null +++ b/.changeset/loud-kangaroos-leave.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: prevent false positive `history.pushState` and `history.replaceState` warnings diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 8caf64c2618c..ce5c39dd3960 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -67,6 +67,8 @@ const snapshots = storage.get(SNAPSHOT_KEY) ?? {}; if (DEV && BROWSER) { let warned = false; + const current_module_url = import.meta.url.split('?')[0]; // remove query params that vite adds to the URL when it is loaded from node_modules + const warn = () => { if (warned) return; @@ -76,7 +78,8 @@ if (DEV && BROWSER) { if (!stack) return; if (!stack[0].includes('https:') && !stack[0].includes('http:')) stack = stack.slice(1); // Chrome includes the error message in the stack stack = stack.slice(2); // remove `warn` and the place where `warn` was called - if (stack[0].includes(import.meta.url)) return; + // Can be falsy if was called directly from an anonymous function + if (stack[0]?.includes(current_module_url)) return; warned = true; From 654b73eeed11d87a16d836e047716ec1d072b885 Mon Sep 17 00:00:00 2001 From: sacrosanctic Date: Tue, 20 Feb 2024 20:24:28 -0800 Subject: [PATCH 024/454] docs: link to max duration vercel docs (#11869) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> Co-authored-by: Willow (GHOST) --- documentation/docs/25-build-and-deploy/90-adapter-vercel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md index ae9b91444c6f..265985a9db99 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -59,7 +59,7 @@ Additionally, the following option applies to edge functions: And the following option apply to serverless functions: - `memory`: the amount of memory available to the function. Defaults to `1024` Mb, and can be decreased to `128` Mb or [increased](https://vercel.com/docs/concepts/limits/overview#serverless-function-memory) in 64Mb increments up to `3008` Mb on Pro or Enterprise accounts -- `maxDuration`: maximum execution duration of the function. Defaults to `10` seconds for Hobby accounts, `15` for Pro and `900` for Enterprise +- `maxDuration`: [maximum execution duration](https://vercel.com/docs/functions/runtimes#max-duration) of the function. Defaults to `10` seconds for Hobby accounts, `15` for Pro and `900` for Enterprise - `isr`: configuration Incremental Static Regeneration, described below If your functions need to access data in a specific region, it's recommended that they be deployed in the same region (or close to it) for optimal performance. From 75e1f5ff012ba95ee21ae151a8ede821dfb85fe5 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Thu, 22 Feb 2024 05:12:56 +0100 Subject: [PATCH 025/454] fix: prevent stale values after invalidation (#11870) --- .changeset/angry-gorillas-peel.md | 5 ++++ packages/kit/src/runtime/client/client.js | 29 +++++++++++-------- .../invalidate-then-goto/+layout.server.js | 7 +++++ .../invalidate-then-goto/+page.server.js | 7 +++++ .../invalidate-then-goto/+page.svelte | 23 +++++++++++++++ .../kit/test/apps/basics/test/client.test.js | 22 ++++++++++++++ 6 files changed, 81 insertions(+), 12 deletions(-) create mode 100644 .changeset/angry-gorillas-peel.md create mode 100644 packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+layout.server.js create mode 100644 packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+page.server.js create mode 100644 packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+page.svelte diff --git a/.changeset/angry-gorillas-peel.md b/.changeset/angry-gorillas-peel.md new file mode 100644 index 000000000000..f4642f4135f8 --- /dev/null +++ b/.changeset/angry-gorillas-peel.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: prevent stale values after invalidation diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index ce5c39dd3960..dd400677931f 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -308,20 +308,23 @@ async function _invalidate() { const nav_token = (token = {}); const navigation_result = intent && (await load_route(intent)); - if (nav_token !== token) return; + if (!navigation_result || nav_token !== token) return; - if (navigation_result) { - if (navigation_result.type === 'redirect') { - await _goto(new URL(navigation_result.location, current.url).href, {}, 1, nav_token); - } else { - if (navigation_result.props.page !== undefined) { - page = navigation_result.props.page; - } - root.$set(navigation_result.props); - } + if (navigation_result.type === 'redirect') { + return _goto(new URL(navigation_result.location, current.url).href, {}, 1, nav_token); } + if (navigation_result.props.page) { + page = navigation_result.props.page; + } + current = navigation_result.state; + reset_invalidation(); + root.$set(navigation_result.props); +} + +function reset_invalidation() { invalidated.length = 0; + force_invalidation = false; } /** @param {number} index */ @@ -1092,6 +1095,9 @@ async function load_root_error_page({ status, error, url, route }) { } /** + * Resolve the full info (which route, params, etc.) for a client-side navigation from the URL, + * taking the reroute hook into account. If this isn't a client-side-navigation (or the URL is undefined), + * returns undefined. * @param {URL | undefined} url * @param {boolean} invalidating */ @@ -1281,8 +1287,7 @@ async function navigate({ // reset invalidation only after a finished navigation. If there are redirects or // additional invalidations, they should get the same invalidation treatment - invalidated.length = 0; - force_invalidation = false; + reset_invalidation(); updating = true; diff --git a/packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+layout.server.js b/packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+layout.server.js new file mode 100644 index 000000000000..07aab9465aca --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+layout.server.js @@ -0,0 +1,7 @@ +/** @type {import('./$types').LayoutServerLoad} */ +export function load({ depends }) { + depends('invalidate-depends:goto'); + return { + layoutDate: new Date().getTime() + }; +} diff --git a/packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+page.server.js b/packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+page.server.js new file mode 100644 index 000000000000..ec11392c4c35 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+page.server.js @@ -0,0 +1,7 @@ +/** @type {import('./$types').PageServerLoad} */ +export function load({ url }) { + url.searchParams.get('x'); + return { + pageDate: new Date().getTime() + }; +} diff --git a/packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+page.svelte b/packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+page.svelte new file mode 100644 index 000000000000..887e7b8d5a57 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/load/invalidation/invalidate-then-goto/+page.svelte @@ -0,0 +1,23 @@ + + +

{data.layoutDate}

+

{data.pageDate}

+ + diff --git a/packages/kit/test/apps/basics/test/client.test.js b/packages/kit/test/apps/basics/test/client.test.js index 21a5546bc978..2ae2b2818b74 100644 --- a/packages/kit/test/apps/basics/test/client.test.js +++ b/packages/kit/test/apps/basics/test/client.test.js @@ -594,6 +594,28 @@ test.describe('Invalidation', () => { await page.locator('button').click(); await expect(page.getByText('updated')).toBeVisible(); }); + + test('goto after invalidation does not reset state', async ({ page }) => { + await page.goto('/load/invalidation/invalidate-then-goto'); + const layout = await page.textContent('p.layout'); + const _page = await page.textContent('p.page'); + expect(layout).toBeDefined(); + expect(_page).toBeDefined(); + + await page.click('button.invalidate'); + await page.evaluate(() => window.promise); + const next_layout_1 = await page.textContent('p.layout'); + const next_page_1 = await page.textContent('p.page'); + expect(next_layout_1).not.toBe(layout); + expect(next_page_1).toBe(_page); + + await page.click('button.goto'); + await page.evaluate(() => window.promise); + const next_layout_2 = await page.textContent('p.layout'); + const next_page_2 = await page.textContent('p.page'); + expect(next_layout_2).toBe(next_layout_1); + expect(next_page_2).not.toBe(next_page_1); + }); }); test.describe('data-sveltekit attributes', () => { From 4ae1cd152a60a22044ab3b8aa5572a2b79864583 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 20:56:56 -0800 Subject: [PATCH 026/454] Version Packages (#11767) Co-authored-by: github-actions[bot] --- .changeset/angry-gorillas-peel.md | 5 ----- .changeset/loud-kangaroos-leave.md | 5 ----- .changeset/mighty-radios-know.md | 5 ----- .changeset/mighty-spies-explain.md | 5 ----- .changeset/sixty-drinks-exercise.md | 5 ----- .changeset/stale-games-shake.md | 5 ----- packages/create-svelte/CHANGELOG.md | 6 ++++++ packages/create-svelte/package.json | 2 +- packages/kit/CHANGELOG.md | 12 ++++++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- packages/package/CHANGELOG.md | 6 ++++++ packages/package/package.json | 2 +- 13 files changed, 28 insertions(+), 34 deletions(-) delete mode 100644 .changeset/angry-gorillas-peel.md delete mode 100644 .changeset/loud-kangaroos-leave.md delete mode 100644 .changeset/mighty-radios-know.md delete mode 100644 .changeset/mighty-spies-explain.md delete mode 100644 .changeset/sixty-drinks-exercise.md delete mode 100644 .changeset/stale-games-shake.md diff --git a/.changeset/angry-gorillas-peel.md b/.changeset/angry-gorillas-peel.md deleted file mode 100644 index f4642f4135f8..000000000000 --- a/.changeset/angry-gorillas-peel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: prevent stale values after invalidation diff --git a/.changeset/loud-kangaroos-leave.md b/.changeset/loud-kangaroos-leave.md deleted file mode 100644 index 5caa295445fb..000000000000 --- a/.changeset/loud-kangaroos-leave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: prevent false positive `history.pushState` and `history.replaceState` warnings diff --git a/.changeset/mighty-radios-know.md b/.changeset/mighty-radios-know.md deleted file mode 100644 index dd8463d54712..000000000000 --- a/.changeset/mighty-radios-know.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"create-svelte": patch ---- - -chore: bump typescript-eslint to v7 diff --git a/.changeset/mighty-spies-explain.md b/.changeset/mighty-spies-explain.md deleted file mode 100644 index 354937e953a5..000000000000 --- a/.changeset/mighty-spies-explain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: relax status code types diff --git a/.changeset/sixty-drinks-exercise.md b/.changeset/sixty-drinks-exercise.md deleted file mode 100644 index 5618d9b12b34..000000000000 --- a/.changeset/sixty-drinks-exercise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/package": patch ---- - -chore: update chokidar to 3.6.0 diff --git a/.changeset/stale-games-shake.md b/.changeset/stale-games-shake.md deleted file mode 100644 index a2345b83c677..000000000000 --- a/.changeset/stale-games-shake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: `popstate` navigations take `pushState` navigations into account diff --git a/packages/create-svelte/CHANGELOG.md b/packages/create-svelte/CHANGELOG.md index baae478f2695..5fbfa1ff9bc9 100644 --- a/packages/create-svelte/CHANGELOG.md +++ b/packages/create-svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # create-svelte +## 6.0.9 + +### Patch Changes + +- chore: bump typescript-eslint to v7 ([#11845](https://github.com/sveltejs/kit/pull/11845)) + ## 6.0.8 ### Patch Changes diff --git a/packages/create-svelte/package.json b/packages/create-svelte/package.json index 0bff77dcf10a..a7a77a87b44a 100644 --- a/packages/create-svelte/package.json +++ b/packages/create-svelte/package.json @@ -1,6 +1,6 @@ { "name": "create-svelte", - "version": "6.0.8", + "version": "6.0.9", "description": "A CLI for creating new SvelteKit projects", "repository": { "type": "git", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 68eb111af76e..e48cda5fffe1 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,17 @@ # @sveltejs/kit +## 2.5.1 + +### Patch Changes + +- fix: prevent stale values after invalidation ([#11870](https://github.com/sveltejs/kit/pull/11870)) + +- fix: prevent false positive `history.pushState` and `history.replaceState` warnings ([#11858](https://github.com/sveltejs/kit/pull/11858)) + +- fix: relax status code types ([#11781](https://github.com/sveltejs/kit/pull/11781)) + +- fix: `popstate` navigations take `pushState` navigations into account ([#11765](https://github.com/sveltejs/kit/pull/11765)) + ## 2.5.0 ### Minor Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index a7f507f9edc8..f83880533f07 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.5.0", + "version": "2.5.1", "description": "The fastest way to build Svelte apps", "repository": { "type": "git", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index e1acb48e7e4b..bcc7aca8dd86 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.5.0'; +export const VERSION = '2.5.1'; diff --git a/packages/package/CHANGELOG.md b/packages/package/CHANGELOG.md index 596668021acf..ddbf0b6baa71 100644 --- a/packages/package/CHANGELOG.md +++ b/packages/package/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/package +## 2.2.7 + +### Patch Changes + +- chore: update chokidar to 3.6.0 ([#11811](https://github.com/sveltejs/kit/pull/11811)) + ## 2.2.6 ### Patch Changes diff --git a/packages/package/package.json b/packages/package/package.json index 1a2a63116cca..12a3626bc1c6 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/package", - "version": "2.2.6", + "version": "2.2.7", "description": "The fastest way to build Svelte packages", "repository": { "type": "git", From 8d7aa6f4ab3369d6a3ee1000910a14f90edffaed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 24 Feb 2024 20:56:56 -0800 Subject: [PATCH 027/454] chore(deps): update pnpm to v8.15.4 (#11893) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a1146dbf7c5e..0437858b5d80 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "eslint-plugin-unicorn": "^51.0.1", "playwright": "^1.41.0" }, - "packageManager": "pnpm@8.15.3", + "packageManager": "pnpm@8.15.4", "engines": { "pnpm": "^8.0.0" } From f6f9e70097c721e76a2f42b0e4dee48f815bc160 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 26 Feb 2024 07:37:09 -0800 Subject: [PATCH 028/454] fix: tsconfig includes should cover svelte.config.js (#11886) --- .changeset/sixty-files-lay.md | 5 +++++ packages/kit/src/core/sync/write_tsconfig.js | 1 + packages/kit/src/core/sync/write_tsconfig.spec.js | 1 + 3 files changed, 7 insertions(+) create mode 100644 .changeset/sixty-files-lay.md diff --git a/.changeset/sixty-files-lay.md b/.changeset/sixty-files-lay.md new file mode 100644 index 000000000000..9fb960235714 --- /dev/null +++ b/.changeset/sixty-files-lay.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: tsconfig includes should cover svelte.config.js diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index 73bd239159c9..dc12107b4435 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -58,6 +58,7 @@ export function get_tsconfig(kit) { 'ambient.d.ts', 'non-ambient.d.ts', './types/**/$types.d.ts', + config_relative('svelte.config.js'), config_relative('vite.config.js'), config_relative('vite.config.ts') ]); diff --git a/packages/kit/src/core/sync/write_tsconfig.spec.js b/packages/kit/src/core/sync/write_tsconfig.spec.js index fbfa18cc97b9..ebabcb6c9278 100644 --- a/packages/kit/src/core/sync/write_tsconfig.spec.js +++ b/packages/kit/src/core/sync/write_tsconfig.spec.js @@ -77,6 +77,7 @@ test('Creates tsconfig include from kit.files', () => { 'ambient.d.ts', 'non-ambient.d.ts', './types/**/$types.d.ts', + '../svelte.config.js', '../vite.config.js', '../vite.config.ts', '../app/**/*.js', From 4d98369e19f99e239c4ee747a078b0abeb142c53 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 07:37:59 -0800 Subject: [PATCH 029/454] Version Packages (#11903) Co-authored-by: github-actions[bot] --- .changeset/sixty-files-lay.md | 5 ----- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .changeset/sixty-files-lay.md diff --git a/.changeset/sixty-files-lay.md b/.changeset/sixty-files-lay.md deleted file mode 100644 index 9fb960235714..000000000000 --- a/.changeset/sixty-files-lay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: tsconfig includes should cover svelte.config.js diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index e48cda5fffe1..aadc33b6c2cd 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.5.2 + +### Patch Changes + +- fix: tsconfig includes should cover svelte.config.js ([#11886](https://github.com/sveltejs/kit/pull/11886)) + ## 2.5.1 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index f83880533f07..75873f868ea8 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.5.1", + "version": "2.5.2", "description": "The fastest way to build Svelte apps", "repository": { "type": "git", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index bcc7aca8dd86..829e64d9db2e 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.5.1'; +export const VERSION = '2.5.2'; From 41bb2c0fc752843651e00de133da618884c2c5ee Mon Sep 17 00:00:00 2001 From: Simon Shutter Date: Mon, 26 Feb 2024 10:32:23 -0800 Subject: [PATCH 030/454] docs: mention that rest of example follows (#11897) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- documentation/docs/20-core-concepts/10-routing.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/documentation/docs/20-core-concepts/10-routing.md b/documentation/docs/20-core-concepts/10-routing.md index d21be05291af..66f9ce3a6091 100644 --- a/documentation/docs/20-core-concepts/10-routing.md +++ b/documentation/docs/20-core-concepts/10-routing.md @@ -205,6 +205,8 @@ We can create a layout that only applies to pages below `/settings` (while inher ``` +You can see how `data` is populated by looking at the `+layout.js` example in the next section just below. + By default, each layout inherits the layout above it. Sometimes that isn't what you want - in this case, [advanced layouts](advanced-routing#advanced-layouts) can help you. ### +layout.js From b3c0105cb0be8f4b3ce52d2b24ebe1ca6410e45c Mon Sep 17 00:00:00 2001 From: Quentin Deroubaix <139884126+quentinderoubaix@users.noreply.github.com> Date: Wed, 6 Mar 2024 09:47:32 +0100 Subject: [PATCH 031/454] feat: support specifying the tsconfig in svelte-package (#11698) closes #9373 Adds the option tsconfig to svelte-package, allowing to specify which tsconfig / jsconfig to use during the packaging. --- .changeset/clean-dots-switch.md | 5 +++ .../docs/30-advanced/70-packaging.md | 1 + packages/package/src/cli.js | 5 +++ packages/package/src/index.js | 25 +++++++---- packages/package/src/types.d.ts | 1 + packages/package/src/typescript.js | 42 ++++++++++++------- .../expected/runes.svelte.d.ts | 1 + .../expected/runes.svelte.js | 1 + .../fixtures/tsconfig-specified/package.json | 16 +++++++ .../src/lib/runes.svelte.ts | 2 + .../tsconfig-specified/svelte.config.js | 7 ++++ .../tsconfig-specified/tsconfig.build.json | 6 +++ .../fixtures/tsconfig-specified/tsconfig.json | 6 +++ packages/package/test/index.js | 4 ++ 14 files changed, 99 insertions(+), 23 deletions(-) create mode 100644 .changeset/clean-dots-switch.md create mode 100644 packages/package/test/fixtures/tsconfig-specified/expected/runes.svelte.d.ts create mode 100644 packages/package/test/fixtures/tsconfig-specified/expected/runes.svelte.js create mode 100644 packages/package/test/fixtures/tsconfig-specified/package.json create mode 100644 packages/package/test/fixtures/tsconfig-specified/src/lib/runes.svelte.ts create mode 100644 packages/package/test/fixtures/tsconfig-specified/svelte.config.js create mode 100644 packages/package/test/fixtures/tsconfig-specified/tsconfig.build.json create mode 100644 packages/package/test/fixtures/tsconfig-specified/tsconfig.json diff --git a/.changeset/clean-dots-switch.md b/.changeset/clean-dots-switch.md new file mode 100644 index 000000000000..863acd875a06 --- /dev/null +++ b/.changeset/clean-dots-switch.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/package": minor +--- + +feat: add option to specify the tsconfig/jsconfig diff --git a/documentation/docs/30-advanced/70-packaging.md b/documentation/docs/30-advanced/70-packaging.md index 602bce96860b..50f85516e16e 100644 --- a/documentation/docs/30-advanced/70-packaging.md +++ b/documentation/docs/30-advanced/70-packaging.md @@ -197,6 +197,7 @@ You should think carefully about whether or not the changes you make to your pac - `-i`/`--input` — the input directory which contains all the files of the package. Defaults to `src/lib` - `-o`/`--o` — the output directory where the processed files are written to. Your `package.json`'s `exports` should point to files inside there, and the `files` array should include that folder. Defaults to `dist` - `-t`/`--types` — whether or not to create type definitions (`d.ts` files). We strongly recommend doing this as it fosters ecosystem library quality. Defaults to `true` +- `--tsconfig` - the path to a tsconfig or jsconfig. When not provided, searches for the next upper tsconfig/jsconfig in the workspace path. ## Publishing diff --git a/packages/package/src/cli.js b/packages/package/src/cli.js index cc464eddfe33..4833dc489359 100644 --- a/packages/package/src/cli.js +++ b/packages/package/src/cli.js @@ -24,6 +24,10 @@ prog .option('-o, --output', 'Output directory', 'dist') .option('-t, --types', 'Emit type declarations', true) .option('-w, --watch', 'Rerun when files change', false) + .option( + '--tsconfig', + 'A path to a tsconfig or jsconfig file. When not provided, searches for the next upper tsconfig/jsconfig in the workspace path.' + ) .action(async (args) => { try { const config = await load_config(); @@ -42,6 +46,7 @@ prog cwd: process.cwd(), input: args.input ?? config.kit?.files?.lib ?? 'src/lib', output: args.output, + tsconfig: args.tsconfig, types: args.types, config }; diff --git a/packages/package/src/index.js b/packages/package/src/index.js index 1970464779bc..6d7450182643 100644 --- a/packages/package/src/index.js +++ b/packages/package/src/index.js @@ -22,7 +22,7 @@ export async function build(options) { * @param {(name: string, code: string) => void} analyse_code */ async function do_build(options, analyse_code) { - const { input, output, temp, extensions, alias } = normalize_options(options); + const { input, output, temp, extensions, alias, tsconfig } = normalize_options(options); if (!fs.existsSync(input)) { throw new Error(`${path.relative('.', input)} does not exist`); @@ -38,7 +38,7 @@ async function do_build(options, analyse_code) { } for (const file of files) { - await process_file(input, temp, file, options.config.preprocess, alias, analyse_code); + await process_file(input, temp, file, options.config.preprocess, alias, tsconfig, analyse_code); } rimraf(output); @@ -62,7 +62,7 @@ export async function watch(options) { validate(); - const { input, output, extensions, alias } = normalize_options(options); + const { input, output, extensions, alias, tsconfig } = normalize_options(options); const message = `\nWatching ${path.relative(options.cwd, input)} for changes...\n`; @@ -119,7 +119,15 @@ export async function watch(options) { if (type === 'add' || type === 'change') { console.log(`Processing ${file.name}`); try { - await process_file(input, output, file, options.config.preprocess, alias, analyse_code); + await process_file( + input, + output, + file, + options.config.preprocess, + alias, + tsconfig, + analyse_code + ); } catch (e) { errored = true; console.error(e); @@ -170,6 +178,7 @@ function normalize_options(options) { '__package__' ); const extensions = options.config.extensions ?? ['.svelte']; + const tsconfig = options.tsconfig ? path.resolve(options.cwd, options.tsconfig) : undefined; const alias = { $lib: path.resolve(options.cwd, options.config.kit?.files?.lib ?? 'src/lib'), @@ -181,7 +190,8 @@ function normalize_options(options) { output, temp, extensions, - alias + alias, + tsconfig }; } @@ -191,9 +201,10 @@ function normalize_options(options) { * @param {import('./types.js').File} file * @param {import('svelte/types/compiler/preprocess').PreprocessorGroup | undefined} preprocessor * @param {Record} aliases + * @param {string | undefined} tsconfig * @param {(name: string, code: string) => void} analyse_code */ -async function process_file(input, output, file, preprocessor, aliases, analyse_code) { +async function process_file(input, output, file, preprocessor, aliases, tsconfig, analyse_code) { const filename = path.join(input, file.name); const dest = path.join(output, file.dest); @@ -208,7 +219,7 @@ async function process_file(input, output, file, preprocessor, aliases, analyse_ } if (file.name.endsWith('.ts') && !file.name.endsWith('.d.ts')) { - contents = await transpile_ts(filename, contents); + contents = await transpile_ts(tsconfig, filename, contents); } contents = resolve_aliases(input, file.name, contents, aliases); diff --git a/packages/package/src/types.d.ts b/packages/package/src/types.d.ts index 6724137d8d1d..f575d4627cee 100644 --- a/packages/package/src/types.d.ts +++ b/packages/package/src/types.d.ts @@ -5,6 +5,7 @@ export interface Options { input: string; output: string; types: boolean; + tsconfig?: string; config: { extensions?: string[]; kit?: { diff --git a/packages/package/src/typescript.js b/packages/package/src/typescript.js index 5163676082e3..f2f7c31a8e79 100644 --- a/packages/package/src/typescript.js +++ b/packages/package/src/typescript.js @@ -62,12 +62,13 @@ export async function emit_dts(input, output, cwd, alias, files) { /** * TS -> JS * + * @param {string | undefined} tsconfig * @param {string} filename * @param {string} source */ -export async function transpile_ts(filename, source) { +export async function transpile_ts(tsconfig, filename, source) { const ts = await try_load_ts(); - const options = load_tsconfig(filename, ts); + const options = load_tsconfig(tsconfig, filename, ts); // transpileModule treats NodeNext as CommonJS because it doesn't read the package.json. Therefore we need to override it. // Also see https://github.com/microsoft/TypeScript/issues/53022 (the filename workaround doesn't work). return ts.transpileModule(source, { @@ -91,28 +92,37 @@ async function try_load_ts() { } /** + * @param {string | undefined} tsconfig * @param {string} filename * @param {import('typescript')} ts */ -function load_tsconfig(filename, ts) { +function load_tsconfig(tsconfig, filename, ts) { let config_filename; - // ts.findConfigFile is broken (it will favour a distant tsconfig - // over a near jsconfig, and then only when you call it twice) - // so we implement it ourselves - let dir = filename; - while (dir !== (dir = path.dirname(dir))) { - const tsconfig = path.join(dir, 'tsconfig.json'); - const jsconfig = path.join(dir, 'jsconfig.json'); - + if (tsconfig) { if (fs.existsSync(tsconfig)) { config_filename = tsconfig; - break; + } else { + throw new Error('Failed to locate provided tsconfig or jsconfig'); } - - if (fs.existsSync(jsconfig)) { - config_filename = jsconfig; - break; + } else { + // ts.findConfigFile is broken (it will favour a distant tsconfig + // over a near jsconfig, and then only when you call it twice) + // so we implement it ourselves + let dir = filename; + while (dir !== (dir = path.dirname(dir))) { + const tsconfig = path.join(dir, 'tsconfig.json'); + const jsconfig = path.join(dir, 'jsconfig.json'); + + if (fs.existsSync(tsconfig)) { + config_filename = tsconfig; + break; + } + + if (fs.existsSync(jsconfig)) { + config_filename = jsconfig; + break; + } } } diff --git a/packages/package/test/fixtures/tsconfig-specified/expected/runes.svelte.d.ts b/packages/package/test/fixtures/tsconfig-specified/expected/runes.svelte.d.ts new file mode 100644 index 000000000000..2b17805f4351 --- /dev/null +++ b/packages/package/test/fixtures/tsconfig-specified/expected/runes.svelte.d.ts @@ -0,0 +1 @@ +export declare const x = true; diff --git a/packages/package/test/fixtures/tsconfig-specified/expected/runes.svelte.js b/packages/package/test/fixtures/tsconfig-specified/expected/runes.svelte.js new file mode 100644 index 000000000000..30dc55a73230 --- /dev/null +++ b/packages/package/test/fixtures/tsconfig-specified/expected/runes.svelte.js @@ -0,0 +1 @@ +export const x = true; diff --git a/packages/package/test/fixtures/tsconfig-specified/package.json b/packages/package/test/fixtures/tsconfig-specified/package.json new file mode 100644 index 000000000000..6dac2ac90c18 --- /dev/null +++ b/packages/package/test/fixtures/tsconfig-specified/package.json @@ -0,0 +1,16 @@ +{ + "name": "typescript", + "private": true, + "version": "1.0.0", + "description": "typescript package using esnext", + "type": "module", + "peerDependencies": { + "svelte": "^4.0.0" + }, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "svelte": "./dist/index.js" + } + } +} diff --git a/packages/package/test/fixtures/tsconfig-specified/src/lib/runes.svelte.ts b/packages/package/test/fixtures/tsconfig-specified/src/lib/runes.svelte.ts new file mode 100644 index 000000000000..edfdd5c0d60a --- /dev/null +++ b/packages/package/test/fixtures/tsconfig-specified/src/lib/runes.svelte.ts @@ -0,0 +1,2 @@ +// a comment to delete +export const x = true; diff --git a/packages/package/test/fixtures/tsconfig-specified/svelte.config.js b/packages/package/test/fixtures/tsconfig-specified/svelte.config.js new file mode 100644 index 000000000000..8e74287e522a --- /dev/null +++ b/packages/package/test/fixtures/tsconfig-specified/svelte.config.js @@ -0,0 +1,7 @@ +import preprocess from 'svelte-preprocess'; + +export default { + preprocess: preprocess({ + preserve: ['ld+json'] + }) +}; diff --git a/packages/package/test/fixtures/tsconfig-specified/tsconfig.build.json b/packages/package/test/fixtures/tsconfig-specified/tsconfig.build.json new file mode 100644 index 000000000000..644cc2ca2660 --- /dev/null +++ b/packages/package/test/fixtures/tsconfig-specified/tsconfig.build.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "removeComments": true + } +} diff --git a/packages/package/test/fixtures/tsconfig-specified/tsconfig.json b/packages/package/test/fixtures/tsconfig-specified/tsconfig.json new file mode 100644 index 000000000000..b7f8a03f204e --- /dev/null +++ b/packages/package/test/fixtures/tsconfig-specified/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext" + } +} diff --git a/packages/package/test/index.js b/packages/package/test/index.js index ec323577817b..73667f593266 100644 --- a/packages/package/test/index.js +++ b/packages/package/test/index.js @@ -151,6 +151,10 @@ test('SvelteKit interop', async () => { await test_make_package('svelte-kit'); }); +test('create package with tsconfig specified', async () => { + await test_make_package('tsconfig-specified', { tsconfig: 'tsconfig.build.json' }); +}); + // chokidar doesn't fire events in github actions :shrug: if (!process.env.CI) { test('watches for changes', async () => { From 30c78f223a4f9e6c4547d087338a8b8cc477ba55 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Wed, 6 Mar 2024 09:55:03 +0100 Subject: [PATCH 032/454] fix: exclude service worker from tsconfig again (#11727) Removing this was an accidental breaking change as part of #10994, strictly speaking. The new solution isn't ideal but very few people will use `$env/static/public` so it's probably fine. fixes #11721 --- .changeset/odd-masks-check.md | 5 +++++ documentation/docs/30-advanced/40-service-workers.md | 2 +- packages/kit/src/core/sync/write_tsconfig.js | 11 ++++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 .changeset/odd-masks-check.md diff --git a/.changeset/odd-masks-check.md b/.changeset/odd-masks-check.md new file mode 100644 index 000000000000..899ecfeb10fc --- /dev/null +++ b/.changeset/odd-masks-check.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: exclude server worker from tsconfig again diff --git a/documentation/docs/30-advanced/40-service-workers.md b/documentation/docs/30-advanced/40-service-workers.md index 2a719d4392d4..11d880698745 100644 --- a/documentation/docs/30-advanced/40-service-workers.md +++ b/documentation/docs/30-advanced/40-service-workers.md @@ -143,7 +143,7 @@ const sw = /** @type {ServiceWorkerGlobalScope} */ (/** @type {unknown} */ (self const sw = self as unknown as ServiceWorkerGlobalScope; ``` -This disables access to DOM typings like `HTMLElement` which are not available inside a service worker and instantiates the correct globals. The reassignment of `self` to `sw` allows you to type cast it in the process (there are a couple of ways to do this, but the easiest that requires no additional files). Use `sw` instead of `self` in the rest of the file. The reference to the SvelteKit types ensures that the `$service-worker` import has proper type definitions. +This disables access to DOM typings like `HTMLElement` which are not available inside a service worker and instantiates the correct globals. The reassignment of `self` to `sw` allows you to type cast it in the process (there are a couple of ways to do this, but this is the easiest that requires no additional files). Use `sw` instead of `self` in the rest of the file. The reference to the SvelteKit types ensures that the `$service-worker` import has proper type definitions. If you import `$env/static/public` you either have to `// @ts-ignore` the import or add `/// ` to the reference types. ## Other solutions diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index dc12107b4435..fdbb99973a23 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -55,7 +55,7 @@ export function get_tsconfig(kit) { const config_relative = (file) => posixify(path.relative(kit.outDir, file)); const include = new Set([ - 'ambient.d.ts', + 'ambient.d.ts', // careful: changing this name would be a breaking change, because it's referenced in the service-workers documentation 'non-ambient.d.ts', './types/**/$types.d.ts', config_relative('svelte.config.js'), @@ -82,6 +82,15 @@ export function get_tsconfig(kit) { include.add(config_relative(`${test_folder}/**/*.svelte`)); const exclude = [config_relative('node_modules/**')]; + // Add service worker to exclude list so that worker types references in it don't spill over into the rest of the app + // (i.e. suddenly ServiceWorkerGlobalScope would be available throughout the app, and some types might even clash) + if (path.extname(kit.files.serviceWorker)) { + exclude.push(config_relative(kit.files.serviceWorker)); + } else { + exclude.push(config_relative(`${kit.files.serviceWorker}.js`)); + exclude.push(config_relative(`${kit.files.serviceWorker}.ts`)); + exclude.push(config_relative(`${kit.files.serviceWorker}.d.ts`)); + } const config = { compilerOptions: { From 873a09eac86817d1cbb53bf3f9c8842d7346d20d Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:40:09 +0100 Subject: [PATCH 033/454] fix: revert tsconfig change, fix types (#11908) The inclusion of `svelte.config.js` is a breaking change since it's type-checked now and that can break projects which did type-check without errors previously closes #11906 Also relaxes the report-uri types, fully qualified urls are also ok closes #11905 --- .changeset/afraid-ghosts-yell.md | 5 +++++ packages/kit/src/core/sync/write_tsconfig.js | 1 - packages/kit/src/core/sync/write_tsconfig.spec.js | 1 - packages/kit/src/types/private.d.ts | 3 +-- packages/kit/types/index.d.ts | 3 +-- 5 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 .changeset/afraid-ghosts-yell.md diff --git a/.changeset/afraid-ghosts-yell.md b/.changeset/afraid-ghosts-yell.md new file mode 100644 index 000000000000..792c2333c1ec --- /dev/null +++ b/.changeset/afraid-ghosts-yell.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: revert tsconfig change that includes svelte.config.js diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index fdbb99973a23..0bf360ab77d1 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -58,7 +58,6 @@ export function get_tsconfig(kit) { 'ambient.d.ts', // careful: changing this name would be a breaking change, because it's referenced in the service-workers documentation 'non-ambient.d.ts', './types/**/$types.d.ts', - config_relative('svelte.config.js'), config_relative('vite.config.js'), config_relative('vite.config.ts') ]); diff --git a/packages/kit/src/core/sync/write_tsconfig.spec.js b/packages/kit/src/core/sync/write_tsconfig.spec.js index ebabcb6c9278..fbfa18cc97b9 100644 --- a/packages/kit/src/core/sync/write_tsconfig.spec.js +++ b/packages/kit/src/core/sync/write_tsconfig.spec.js @@ -77,7 +77,6 @@ test('Creates tsconfig include from kit.files', () => { 'ambient.d.ts', 'non-ambient.d.ts', './types/**/$types.d.ts', - '../svelte.config.js', '../vite.config.js', '../vite.config.ts', '../app/**/*.js', diff --git a/packages/kit/src/types/private.d.ts b/packages/kit/src/types/private.d.ts index e84cf1644a4f..0207a8f5f05b 100644 --- a/packages/kit/src/types/private.d.ts +++ b/packages/kit/src/types/private.d.ts @@ -73,7 +73,6 @@ export namespace Csp { type SchemeSource = 'http:' | 'https:' | 'data:' | 'mediastream:' | 'blob:' | 'filesystem:'; type Source = HostSource | SchemeSource | CryptoSource | BaseSource; type Sources = Source[]; - type UriPath = `${HttpDelineator}${string}`; } export interface CspDirectives { @@ -113,7 +112,7 @@ export interface CspDirectives { 'form-action'?: Array; 'frame-ancestors'?: Array; 'navigate-to'?: Array; - 'report-uri'?: Csp.UriPath[]; + 'report-uri'?: string[]; 'report-to'?: string[]; 'require-trusted-types-for'?: Array<'script'>; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 1a8a768e703c..1219176d5665 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -1419,7 +1419,6 @@ declare module '@sveltejs/kit' { type SchemeSource = 'http:' | 'https:' | 'data:' | 'mediastream:' | 'blob:' | 'filesystem:'; type Source = HostSource | SchemeSource | CryptoSource | BaseSource; type Sources = Source[]; - type UriPath = `${HttpDelineator}${string}`; } interface CspDirectives { @@ -1459,7 +1458,7 @@ declare module '@sveltejs/kit' { 'form-action'?: Array; 'frame-ancestors'?: Array; 'navigate-to'?: Array; - 'report-uri'?: Csp.UriPath[]; + 'report-uri'?: string[]; 'report-to'?: string[]; 'require-trusted-types-for'?: Array<'script'>; From 3f0526c98c6cbb0812bf7a9144d30cee42b8a5be Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 8 Mar 2024 08:59:49 -0800 Subject: [PATCH 034/454] breaking: precompress by default (#11945) --- .changeset/strong-rocks-perform.md | 5 +++++ documentation/docs/25-build-and-deploy/40-adapter-node.md | 4 ++-- packages/adapter-node/index.js | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/strong-rocks-perform.md diff --git a/.changeset/strong-rocks-perform.md b/.changeset/strong-rocks-perform.md new file mode 100644 index 000000000000..6cf62c21f00e --- /dev/null +++ b/.changeset/strong-rocks-perform.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/adapter-node": major +--- + +breaking: change default value of `precompress` option to true to serve precompressed assets by default diff --git a/documentation/docs/25-build-and-deploy/40-adapter-node.md b/documentation/docs/25-build-and-deploy/40-adapter-node.md index 44d0ff46dfed..143c62b3abcf 100644 --- a/documentation/docs/25-build-and-deploy/40-adapter-node.md +++ b/documentation/docs/25-build-and-deploy/40-adapter-node.md @@ -132,7 +132,7 @@ export default { adapter: adapter({ // default options are shown out: 'build', - precompress: false, + precompress: true, envPrefix: '' }) } @@ -145,7 +145,7 @@ The directory to build the server to. It defaults to `build` — i.e. `node buil ### precompress -Enables precompressing using gzip and brotli for assets and prerendered pages. It defaults to `false`. +Enables precompressing using gzip and brotli for assets and prerendered pages. It defaults to `true`. ### envPrefix diff --git a/packages/adapter-node/index.js b/packages/adapter-node/index.js index 2f9ab8ed441f..9b0b3158ab82 100644 --- a/packages/adapter-node/index.js +++ b/packages/adapter-node/index.js @@ -9,7 +9,7 @@ const files = fileURLToPath(new URL('./files', import.meta.url).href); /** @type {import('./index.js').default} */ export default function (opts = {}) { - const { out = 'build', precompress, envPrefix = '' } = opts; + const { out = 'build', precompress = true, envPrefix = '' } = opts; return { name: '@sveltejs/adapter-node', From 63c7f79cb2370753c352412154559116a44c112c Mon Sep 17 00:00:00 2001 From: Karim Jordan <113807903+karimfromjordan@users.noreply.github.com> Date: Sat, 9 Mar 2024 00:06:55 +0700 Subject: [PATCH 035/454] feat: graceful shutdown and systemd socket activation in adapter-node (#11653) --- .changeset/early-peas-listen.md | 5 ++ .changeset/stale-donkeys-mix.md | 5 ++ .../25-build-and-deploy/40-adapter-node.md | 55 +++++++++++- packages/adapter-node/src/env.js | 9 +- packages/adapter-node/src/index.js | 86 ++++++++++++++++++- 5 files changed, 151 insertions(+), 9 deletions(-) create mode 100644 .changeset/early-peas-listen.md create mode 100644 .changeset/stale-donkeys-mix.md diff --git a/.changeset/early-peas-listen.md b/.changeset/early-peas-listen.md new file mode 100644 index 000000000000..8e4d2c9a255c --- /dev/null +++ b/.changeset/early-peas-listen.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/adapter-node": minor +--- + +feat: add systemd socket activation diff --git a/.changeset/stale-donkeys-mix.md b/.changeset/stale-donkeys-mix.md new file mode 100644 index 000000000000..8fcfb1c805f4 --- /dev/null +++ b/.changeset/stale-donkeys-mix.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/adapter-node": major +--- + +breaking: add graceful shutdown diff --git a/documentation/docs/25-build-and-deploy/40-adapter-node.md b/documentation/docs/25-build-and-deploy/40-adapter-node.md index 143c62b3abcf..c1170f23b7bf 100644 --- a/documentation/docs/25-build-and-deploy/40-adapter-node.md +++ b/documentation/docs/25-build-and-deploy/40-adapter-node.md @@ -118,6 +118,14 @@ We instead read from the _right_, accounting for the number of trusted proxies. The maximum request body size to accept in bytes including while streaming. Defaults to 512kb. You can disable this option with a value of `Infinity` (0 in older versions of the adapter) and implement a custom check in [`handle`](hooks#server-hooks-handle) if you need something more advanced. +### `SHUTDOWN_TIMEOUT` + +The number of seconds to wait before forcefully closing any remaining connections after receiving a `SIGTERM` or `SIGINT` signal. Defaults to `30`. Internally the adapter calls [`closeAllConnections`](https://nodejs.org/api/http.html#servercloseallconnections). See [Graceful shutdown](#graceful-shutdown) for more details. + +### `IDLE_TIMEOUT` + +When using systemd socket activation, `IDLE_TIMEOUT` specifies the number of seconds after which the app is automatically put to sleep when receiving no requests. If not set, the app runs continuously. See [Socket activation](#socket-activation) for more details. + ## Options The adapter can be configured with various options: @@ -162,6 +170,46 @@ MY_CUSTOM_ORIGIN=https://my.site \ node build ``` +## Graceful shutdown + +By default `adapter-node` gracefully shuts down the HTTP server when a `SIGTERM` or `SIGINT` signal is received. It will: + +1. reject new requests ([`server.close`](https://nodejs.org/api/http.html#serverclosecallback)) +2. wait for requests that have already been made but not received a response yet to finish and close connections once they become idle ([`server.closeIdleConnections`](https://nodejs.org/api/http.html#servercloseidleconnections)) +3. and finally, close any remaining connections that are still active after [`SHUTDOWN_TIMEOUT`](#environment-variables-shutdown-timeout) seconds. ([`server.closeAllConnections`](https://nodejs.org/api/http.html#servercloseallconnections)) + +> If you want to customize this behaviour you can use a [custom server](#custom-server). + +## Socket activation + +Most Linux operating systems today use a modern process manager called systemd to start the server and run and manage services. You can configure your server to allocate a socket and start and scale your app on demand. This is called [socket activation](http://0pointer.de/blog/projects/socket-activated-containers.html). In this case, the OS will pass two environment variables to your app — `LISTEN_PID` and `LISTEN_FDS`. The adapter will then listen on file descriptor 3 which refers to a systemd socket unit that you will have to create. + +> You can still use [`envPrefix`](#options-envprefix) with systemd socket activation. `LISTEN_PID` and `LISTEN_FDS` are always read without a prefix. + +To take advantage of socket activation follow these steps. + +1. Run your app as a [systemd service](https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html). It can either run directly on the host system or inside a container (using Docker or a systemd portable service for example). If you additionally pass an [`IDLE_TIMEOUT`](#environment-variables-idle-timeout) environment variable to your app it will gracefully shutdown if there are no requests for `IDLE_TIMEOUT` seconds. systemd will automatically start your app again when new requests are coming in. + +```ini +/// file: /etc/systemd/system/myapp.service +[Service] +Environment=NODE_ENV=production IDLE_TIMEOUT=60 +ExecStart=/usr/bin/node /usr/bin/myapp/build +``` + +2. Create an accompanying [socket unit](https://www.freedesktop.org/software/systemd/man/latest/systemd.socket.html). The adapter only accepts a single socket. + +```ini +/// file: /etc/systemd/system/myapp.socket +[Socket] +ListenStream=3000 + +[Install] +WantedBy=sockets.target +``` + +3. Make sure systemd has recognised both units by running `sudo systemctl daemon-reload`. Then enable the socket on boot and start it immediately using `sudo systemctl enable --now myapp.socket`. The app will then automatically start once the first request is made to `localhost:3000`. + ## Custom server The adapter creates two files in your build directory — `index.js` and `handler.js`. Running `index.js` — e.g. `node build`, if you use the default build directory — will start a server on the configured port. @@ -191,9 +239,9 @@ app.listen(3000, () => { ## Troubleshooting -### Is there a hook for cleaning up before the server exits? +### Is there a hook for cleaning up before the app exits? -There's nothing built-in to SvelteKit for this, because such a cleanup hook depends highly on the execution environment you're on. For Node, you can use its built-in `process.on(...)` to implement a callback that runs before the server exits: +There's nothing built-in to SvelteKit for this, because such a cleanup hook depends highly on the execution environment you're on. For Node, you can use its built-in `process.on(...)` to implement a callback that runs before the app exits: ```js // @errors: 2304 2580 @@ -202,6 +250,5 @@ function shutdownGracefully() { db.shutdown(); } -process.on('SIGINT', shutdownGracefully); -process.on('SIGTERM', shutdownGracefully); +process.on('exit', shutdownGracefully); ``` diff --git a/packages/adapter-node/src/env.js b/packages/adapter-node/src/env.js index ce754a36a8e9..0240abd0e798 100644 --- a/packages/adapter-node/src/env.js +++ b/packages/adapter-node/src/env.js @@ -10,9 +10,13 @@ const expected = new Set([ 'PROTOCOL_HEADER', 'HOST_HEADER', 'PORT_HEADER', - 'BODY_SIZE_LIMIT' + 'BODY_SIZE_LIMIT', + 'SHUTDOWN_TIMEOUT', + 'IDLE_TIMEOUT' ]); +const expected_unprefixed = new Set(['LISTEN_PID', 'LISTEN_FDS']); + if (ENV_PREFIX) { for (const name in process.env) { if (name.startsWith(ENV_PREFIX)) { @@ -31,6 +35,7 @@ if (ENV_PREFIX) { * @param {any} fallback */ export function env(name, fallback) { - const prefixed = ENV_PREFIX + name; + const prefix = expected_unprefixed.has(name) ? '' : ENV_PREFIX; + const prefixed = prefix + name; return prefixed in process.env ? process.env[prefixed] : fallback; } diff --git a/packages/adapter-node/src/index.js b/packages/adapter-node/src/index.js index ea3feee05860..639b04995872 100644 --- a/packages/adapter-node/src/index.js +++ b/packages/adapter-node/src/index.js @@ -6,10 +6,90 @@ export const path = env('SOCKET_PATH', false); export const host = env('HOST', '0.0.0.0'); export const port = env('PORT', !path && '3000'); +const shutdown_timeout = parseInt(env('SHUTDOWN_TIMEOUT', '30')); +const idle_timeout = parseInt(env('IDLE_TIMEOUT', '0')); +const listen_pid = parseInt(env('LISTEN_PID', '0')); +const listen_fds = parseInt(env('LISTEN_FDS', '0')); +// https://www.freedesktop.org/software/systemd/man/latest/sd_listen_fds.html +const SD_LISTEN_FDS_START = 3; + +if (listen_pid !== 0 && listen_pid !== process.pid) { + throw new Error(`received LISTEN_PID ${listen_pid} but current process id is ${process.pid}`); +} +if (listen_fds > 1) { + throw new Error( + `only one socket is allowed for socket activation, but LISTEN_FDS was set to ${listen_fds}` + ); +} + +const socket_activation = listen_pid === process.pid && listen_fds === 1; + +let requests = 0; +/** @type {NodeJS.Timeout | void} */ +let shutdown_timeout_id; +/** @type {NodeJS.Timeout | void} */ +let idle_timeout_id; + const server = polka().use(handler); -server.listen({ path, host, port }, () => { - console.log(`Listening on ${path ? path : host + ':' + port}`); -}); +function shutdown() { + if (shutdown_timeout_id) return; + + // @ts-expect-error this was added in 18.2.0 but is not reflected in the types + server.server.closeIdleConnections(); + + server.server.close(() => { + if (shutdown_timeout_id) { + shutdown_timeout_id = clearTimeout(shutdown_timeout_id); + } + if (idle_timeout_id) { + idle_timeout_id = clearTimeout(idle_timeout_id); + } + }); + + shutdown_timeout_id = setTimeout( + // @ts-expect-error this was added in 18.2.0 but is not reflected in the types + () => server.server.closeAllConnections(), + shutdown_timeout * 1000 + ); +} + +server.server.on( + 'request', + /** @param {import('node:http').IncomingMessage} req */ + (req) => { + requests++; + + if (socket_activation && idle_timeout_id) { + idle_timeout_id = clearTimeout(idle_timeout_id); + } + + req.on('close', () => { + requests--; + + if (requests === 0 && shutdown_timeout_id) { + // when all requests are done, close the connections, so the app shuts down without delay + // @ts-expect-error this was added in 18.2.0 but is not reflected in the types + server.server.closeIdleConnections(); + } + if (requests === 0 && socket_activation && idle_timeout) { + idle_timeout_id = setTimeout(shutdown, idle_timeout * 1000); + } + }); + } +); + +if (socket_activation) { + server.listen({ fd: SD_LISTEN_FDS_START }, () => { + console.log(`Listening on file descriptor ${SD_LISTEN_FDS_START}`); + }); +} else { + server.listen({ path, host, port }, () => { + console.log(`Listening on ${path ? path : host + ':' + port}`); + }); +} + +process.on('SIGTERM', shutdown); +process.on('SIGINT', shutdown); export { server }; From ce979fcae575cd4393c5e29894153104204ff1b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Mar 2024 09:10:13 -0800 Subject: [PATCH 036/454] chore(deps): update all non-major dependencies to v1.0.0-next.25 (#11950) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/adapter-node/package.json | 4 ++-- pnpm-lock.yaml | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index ac5c689e0e35..d02b49067eb3 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -33,12 +33,12 @@ "prepublishOnly": "pnpm build" }, "devDependencies": { - "@polka/url": "1.0.0-next.24", + "@polka/url": "1.0.0-next.25", "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "@types/node": "^18.19.3", "c8": "^9.0.0", - "polka": "1.0.0-next.24", + "polka": "1.0.0-next.25", "sirv": "^2.0.4", "typescript": "^5.3.3", "vitest": "^1.2.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2115a933c5ad..8f428eb93359 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -167,8 +167,8 @@ importers: version: 4.9.6 devDependencies: '@polka/url': - specifier: 1.0.0-next.24 - version: 1.0.0-next.24 + specifier: 1.0.0-next.25 + version: 1.0.0-next.25 '@sveltejs/kit': specifier: workspace:^ version: link:../kit @@ -182,8 +182,8 @@ importers: specifier: ^9.0.0 version: 9.1.0 polka: - specifier: 1.0.0-next.24 - version: 1.0.0-next.24 + specifier: 1.0.0-next.25 + version: 1.0.0-next.25 sirv: specifier: ^2.0.4 version: 2.0.4 @@ -2139,8 +2139,8 @@ packages: playwright: 1.41.2 dev: true - /@polka/url@1.0.0-next.24: - resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + /@polka/url@1.0.0-next.25: + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} /@rollup/plugin-commonjs@25.0.7(rollup@4.9.6): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} @@ -5288,11 +5288,11 @@ packages: engines: {node: '>=4'} dev: true - /polka@1.0.0-next.24: - resolution: {integrity: sha512-i0EB3KPaALOLBC8K27UhPzzDyhsrn6KxDu0+agIz6ZgA2oNqqQjxBn+z9w2Ba4obV/PoqEJtyfzBkYgqKEJYiA==} + /polka@1.0.0-next.25: + resolution: {integrity: sha512-LBgDEGL73aeb/5yAwO9JWsqCuqPdvEdwA/n25Y38F4kv6jqFaLbgIWVuZfsv9Sc9O052eoWWrAjGB75oCQvELw==} engines: {node: '>=8'} dependencies: - '@polka/url': 1.0.0-next.24 + '@polka/url': 1.0.0-next.25 trouter: 4.0.0 dev: true @@ -5808,7 +5808,7 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.24 + '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 From 6cc860e7e92e55f2e1011aa24cc6c83a57dae342 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 8 Mar 2024 09:11:21 -0800 Subject: [PATCH 037/454] Version Packages (#11941) Co-authored-by: github-actions[bot] --- .changeset/afraid-ghosts-yell.md | 5 ----- .changeset/clean-dots-switch.md | 5 ----- .changeset/early-peas-listen.md | 5 ----- .changeset/odd-masks-check.md | 5 ----- .changeset/stale-donkeys-mix.md | 5 ----- .changeset/strong-rocks-perform.md | 5 ----- packages/adapter-node/CHANGELOG.md | 17 +++++++++++++++++ packages/adapter-node/package.json | 2 +- packages/kit/CHANGELOG.md | 8 ++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- packages/package/CHANGELOG.md | 6 ++++++ packages/package/package.json | 2 +- 13 files changed, 35 insertions(+), 34 deletions(-) delete mode 100644 .changeset/afraid-ghosts-yell.md delete mode 100644 .changeset/clean-dots-switch.md delete mode 100644 .changeset/early-peas-listen.md delete mode 100644 .changeset/odd-masks-check.md delete mode 100644 .changeset/stale-donkeys-mix.md delete mode 100644 .changeset/strong-rocks-perform.md diff --git a/.changeset/afraid-ghosts-yell.md b/.changeset/afraid-ghosts-yell.md deleted file mode 100644 index 792c2333c1ec..000000000000 --- a/.changeset/afraid-ghosts-yell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: revert tsconfig change that includes svelte.config.js diff --git a/.changeset/clean-dots-switch.md b/.changeset/clean-dots-switch.md deleted file mode 100644 index 863acd875a06..000000000000 --- a/.changeset/clean-dots-switch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/package": minor ---- - -feat: add option to specify the tsconfig/jsconfig diff --git a/.changeset/early-peas-listen.md b/.changeset/early-peas-listen.md deleted file mode 100644 index 8e4d2c9a255c..000000000000 --- a/.changeset/early-peas-listen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/adapter-node": minor ---- - -feat: add systemd socket activation diff --git a/.changeset/odd-masks-check.md b/.changeset/odd-masks-check.md deleted file mode 100644 index 899ecfeb10fc..000000000000 --- a/.changeset/odd-masks-check.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: exclude server worker from tsconfig again diff --git a/.changeset/stale-donkeys-mix.md b/.changeset/stale-donkeys-mix.md deleted file mode 100644 index 8fcfb1c805f4..000000000000 --- a/.changeset/stale-donkeys-mix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/adapter-node": major ---- - -breaking: add graceful shutdown diff --git a/.changeset/strong-rocks-perform.md b/.changeset/strong-rocks-perform.md deleted file mode 100644 index 6cf62c21f00e..000000000000 --- a/.changeset/strong-rocks-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/adapter-node": major ---- - -breaking: change default value of `precompress` option to true to serve precompressed assets by default diff --git a/packages/adapter-node/CHANGELOG.md b/packages/adapter-node/CHANGELOG.md index 3955accef7c5..a054541e7420 100644 --- a/packages/adapter-node/CHANGELOG.md +++ b/packages/adapter-node/CHANGELOG.md @@ -1,5 +1,22 @@ # @sveltejs/adapter-node +## 5.0.0 + +### Major Changes + +- breaking: add graceful shutdown ([#11653](https://github.com/sveltejs/kit/pull/11653)) + +- breaking: change default value of `precompress` option to true to serve precompressed assets by default ([#11945](https://github.com/sveltejs/kit/pull/11945)) + +### Minor Changes + +- feat: add systemd socket activation ([#11653](https://github.com/sveltejs/kit/pull/11653)) + +### Patch Changes + +- Updated dependencies [[`873a09eac86817d1cbb53bf3f9c8842d7346d20d`](https://github.com/sveltejs/kit/commit/873a09eac86817d1cbb53bf3f9c8842d7346d20d), [`30c78f223a4f9e6c4547d087338a8b8cc477ba55`](https://github.com/sveltejs/kit/commit/30c78f223a4f9e6c4547d087338a8b8cc477ba55)]: + - @sveltejs/kit@2.5.3 + ## 4.0.1 ### Patch Changes diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index d02b49067eb3..3d6560b4ed18 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-node", - "version": "4.0.1", + "version": "5.0.0", "description": "Adapter for SvelteKit apps that generates a standalone Node server", "repository": { "type": "git", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index aadc33b6c2cd..307af5cec063 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,13 @@ # @sveltejs/kit +## 2.5.3 + +### Patch Changes + +- fix: revert tsconfig change that includes svelte.config.js ([#11908](https://github.com/sveltejs/kit/pull/11908)) + +- fix: exclude server worker from tsconfig again ([#11727](https://github.com/sveltejs/kit/pull/11727)) + ## 2.5.2 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 75873f868ea8..be28bc52769d 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.5.2", + "version": "2.5.3", "description": "The fastest way to build Svelte apps", "repository": { "type": "git", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 829e64d9db2e..555d5913dfb8 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.5.2'; +export const VERSION = '2.5.3'; diff --git a/packages/package/CHANGELOG.md b/packages/package/CHANGELOG.md index ddbf0b6baa71..e370f7f29394 100644 --- a/packages/package/CHANGELOG.md +++ b/packages/package/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/package +## 2.3.0 + +### Minor Changes + +- feat: add option to specify the tsconfig/jsconfig ([#11698](https://github.com/sveltejs/kit/pull/11698)) + ## 2.2.7 ### Patch Changes diff --git a/packages/package/package.json b/packages/package/package.json index 12a3626bc1c6..056e46430bab 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/package", - "version": "2.2.7", + "version": "2.3.0", "description": "The fastest way to build Svelte packages", "repository": { "type": "git", From f8206967b256a2955f5d752b6ddff2c98f52df78 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 8 Mar 2024 09:23:52 -0800 Subject: [PATCH 038/454] docs: describe how to compress adapter-node responses (#11957) --- documentation/docs/25-build-and-deploy/40-adapter-node.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/documentation/docs/25-build-and-deploy/40-adapter-node.md b/documentation/docs/25-build-and-deploy/40-adapter-node.md index c1170f23b7bf..6c570289788e 100644 --- a/documentation/docs/25-build-and-deploy/40-adapter-node.md +++ b/documentation/docs/25-build-and-deploy/40-adapter-node.md @@ -32,6 +32,12 @@ node build Development dependencies will be bundled into your app using [Rollup](https://rollupjs.org). To control whether a given package is bundled or externalised, place it in `devDependencies` or `dependencies` respectively in your `package.json`. +### Compressing responses + +You will typically want to compress responses coming from the server. If you are already deploying your server behind a reverse proxy for SSL or load balancing, it typically results in better performance to also handle compression at that layer since Node.js is single-threaded. + +However, if you're building a [#custom-server](custom server) and do want to add a compression middleware there, note that we would recommend using [`@polka/compression`](https://www.npmjs.com/package/@polka/compression) since SvelteKit streams responses and the more popular `compression` package does not support streaming and may cause errors when used. + ## Environment variables In `dev` and `preview`, SvelteKit will read environment variables from your `.env` file (or `.env.local`, or `.env.[mode]`, [as determined by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files).) From b8641cf40f311f6b7e2d00c94fd99399f1b928e4 Mon Sep 17 00:00:00 2001 From: Karim Jordan <113807903+karimfromjordan@users.noreply.github.com> Date: Sat, 9 Mar 2024 03:29:34 +0700 Subject: [PATCH 039/454] fix: adapter-node v5 regression (#11960) --- .changeset/sharp-impalas-repair.md | 5 +++++ packages/adapter-node/src/index.js | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 .changeset/sharp-impalas-repair.md diff --git a/.changeset/sharp-impalas-repair.md b/.changeset/sharp-impalas-repair.md new file mode 100644 index 000000000000..6c3450f77254 --- /dev/null +++ b/.changeset/sharp-impalas-repair.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/adapter-node": patch +--- + +fix: regression preventing built application from starting diff --git a/packages/adapter-node/src/index.js b/packages/adapter-node/src/index.js index 639b04995872..929610362166 100644 --- a/packages/adapter-node/src/index.js +++ b/packages/adapter-node/src/index.js @@ -32,6 +32,16 @@ let idle_timeout_id; const server = polka().use(handler); +if (socket_activation) { + server.listen({ fd: SD_LISTEN_FDS_START }, () => { + console.log(`Listening on file descriptor ${SD_LISTEN_FDS_START}`); + }); +} else { + server.listen({ path, host, port }, () => { + console.log(`Listening on ${path ? path : host + ':' + port}`); + }); +} + function shutdown() { if (shutdown_timeout_id) return; @@ -79,16 +89,6 @@ server.server.on( } ); -if (socket_activation) { - server.listen({ fd: SD_LISTEN_FDS_START }, () => { - console.log(`Listening on file descriptor ${SD_LISTEN_FDS_START}`); - }); -} else { - server.listen({ path, host, port }, () => { - console.log(`Listening on ${path ? path : host + ':' + port}`); - }); -} - process.on('SIGTERM', shutdown); process.on('SIGINT', shutdown); From 679b5989fe62e3964b9a73b712d7b41831aa1f07 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 8 Mar 2024 15:31:08 -0500 Subject: [PATCH 040/454] Version Packages (#11961) Co-authored-by: github-actions[bot] --- .changeset/sharp-impalas-repair.md | 5 ----- packages/adapter-node/CHANGELOG.md | 6 ++++++ packages/adapter-node/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/sharp-impalas-repair.md diff --git a/.changeset/sharp-impalas-repair.md b/.changeset/sharp-impalas-repair.md deleted file mode 100644 index 6c3450f77254..000000000000 --- a/.changeset/sharp-impalas-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/adapter-node": patch ---- - -fix: regression preventing built application from starting diff --git a/packages/adapter-node/CHANGELOG.md b/packages/adapter-node/CHANGELOG.md index a054541e7420..679ab14adf60 100644 --- a/packages/adapter-node/CHANGELOG.md +++ b/packages/adapter-node/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/adapter-node +## 5.0.1 + +### Patch Changes + +- fix: regression preventing built application from starting ([#11960](https://github.com/sveltejs/kit/pull/11960)) + ## 5.0.0 ### Major Changes diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index 3d6560b4ed18..b671d8ee86fa 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-node", - "version": "5.0.0", + "version": "5.0.1", "description": "Adapter for SvelteKit apps that generates a standalone Node server", "repository": { "type": "git", From 30c5f7bc9c964691d1398066be7d8d58a5aea5f5 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:49:52 +0100 Subject: [PATCH 041/454] fix: handle optional and rest routes for ISR correctly (#11928) * fix: handle optional and rest routes for ISR correctly When turning on ISR in adapter-vercel for a route ending in an optional or rest parameter, and that parameter not being set, the regex would yield wrong results. Consider a route like `foo/[...rest]` and the URL is just `/foo`, then the route config for Vercel would turn that into a ISR-request like `foo/[..rest]?pathname/%2Ffoo%2F` - note the trailing slash, which comes from the regex looking like `foo/$1/$2`. This trailing slash which wasn't there before can subsequently lead to the SvelteKit runtime issuing a trailing slash redirect (it thinks we're on /foo/ and issues a redirect to /foo), which is wrong an will lead to infinite redirects in the browser. The fix is to account for optional and rest parameters when constructing the regex for the Vercel route config. * Update packages/adapter-vercel/test/utils.spec.js Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> * Update packages/adapter-vercel/utils.js Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> * Update .changeset/dirty-points-drop.md Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> * Update packages/adapter-vercel/utils.js Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> * make the import unfollowable for typescript --------- Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/dirty-points-drop.md | 5 ++ packages/adapter-vercel/index.js | 15 +--- packages/adapter-vercel/test/utils.spec.js | 99 +++++++++++++++++++++- packages/adapter-vercel/utils.js | 70 ++++++++++++--- 4 files changed, 163 insertions(+), 26 deletions(-) create mode 100644 .changeset/dirty-points-drop.md diff --git a/.changeset/dirty-points-drop.md b/.changeset/dirty-points-drop.md new file mode 100644 index 000000000000..78c6338edaab --- /dev/null +++ b/.changeset/dirty-points-drop.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/adapter-vercel": patch +--- + +fix: handle optional and rest routes for incremental static regeneration (ISR) correctly diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index c2cfdbd80093..4c795588e1b9 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -3,7 +3,7 @@ import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { nodeFileTrace } from '@vercel/nft'; import esbuild from 'esbuild'; -import { get_pathname } from './utils.js'; +import { get_pathname, pattern_to_src } from './utils.js'; const name = '@sveltejs/adapter-vercel'; const DEFAULT_FUNCTION_NAME = 'fn'; @@ -305,18 +305,7 @@ const plugin = function (defaults = {}) { if (is_prerendered(route)) continue; const pattern = route.pattern.toString(); - - let src = pattern - // remove leading / and trailing $/ - .slice(1, -2) - // replace escaped \/ with / - .replace(/\\\//g, '/'); - - // replace the root route "^/" with "^/?" - if (src === '^/') { - src = '^/?'; - } - + const src = pattern_to_src(pattern); const name = functions.get(pattern) ?? 'fn-0'; const isr = isr_config.get(route); diff --git a/packages/adapter-vercel/test/utils.spec.js b/packages/adapter-vercel/test/utils.spec.js index 077040135338..866523a99351 100644 --- a/packages/adapter-vercel/test/utils.spec.js +++ b/packages/adapter-vercel/test/utils.spec.js @@ -1,5 +1,8 @@ import { assert, test } from 'vitest'; -import { get_pathname } from '../utils.js'; +import { get_pathname, pattern_to_src } from '../utils.js'; + +// workaround so that TypeScript doesn't follow that import which makes it pick up that file and then error on missing import aliases +const { parse_route_id } = await import('../../kit/src/' + 'utils/routing.js'); /** * @param {import('@sveltejs/kit').RouteDefinition['segments']} segments @@ -14,6 +17,16 @@ test('get_pathname for simple route', () => { run_get_pathname_test([{ content: 'foo', dynamic: false, rest: false }], 'foo'); }); +test('get_pathname for simple route with multiple segments', () => { + run_get_pathname_test( + [ + { content: 'foo', dynamic: false, rest: false }, + { content: 'bar', dynamic: false, rest: false } + ], + 'foo/bar' + ); +}); + test('get_pathname for route with parameters', () => { run_get_pathname_test( [ @@ -33,3 +46,87 @@ test('get_pathname for route with parameters within segment', () => { 'foo-$1/$2-buz' ); }); + +test('get_pathname for route with optional parameters within segment', () => { + run_get_pathname_test( + [ + { content: 'foo-[[bar]]', dynamic: true, rest: false }, + { content: '[[baz]]-buz', dynamic: true, rest: false } + ], + 'foo-$1/$2-buz' + ); +}); + +test('get_pathname for route with rest parameter', () => { + run_get_pathname_test( + [ + { content: 'foo', dynamic: false, rest: false }, + { content: '[[...rest]]', dynamic: true, rest: true } + ], + 'foo$1' + ); +}); + +test('get_pathname for route with required and rest parameter', () => { + run_get_pathname_test( + [ + { content: '[foo]', dynamic: true, rest: false }, + { content: '[...rest]', dynamic: true, rest: true } + ], + '$1$2' + ); +}); + +test('get_pathname for route with required and optional parameter', () => { + run_get_pathname_test( + [ + { content: '[foo]', dynamic: true, rest: false }, + { content: '[[optional]]', dynamic: true, rest: true } + ], + '$1$2' + ); +}); + +test('get_pathname for route with required and optional parameter', () => { + run_get_pathname_test( + [ + { content: '[foo]', dynamic: true, rest: false }, + { content: '[[...rest]]', dynamic: true, rest: true }, + { content: 'bar', dynamic: false, rest: false } + ], + '$1$2/bar' + ); +}); + +/** + * @param {string} route_id + * @param {string} expected + */ +function run_pattern_to_src_test(route_id, expected) { + const { pattern } = parse_route_id(route_id); + assert.equal(pattern_to_src(pattern.toString()), expected); +} + +test('pattern_to_src for simple route', () => { + run_pattern_to_src_test('/', '^/?'); +}); + +test('pattern_to_src for route with parameters', () => { + run_pattern_to_src_test('/foo/[bar]', '^/foo/([^/]+?)/?'); +}); + +test('pattern_to_src for route with optional parameters', () => { + run_pattern_to_src_test('/foo/[[bar]]', '^/foo(/[^/]+)?/?'); +}); + +test('pattern_to_src for route with optional parameter in the middle', () => { + run_pattern_to_src_test('/foo/[[bar]]/baz', '^/foo(/[^/]+)?/baz/?'); +}); + +test('pattern_to_src for route with rest parameter', () => { + run_pattern_to_src_test('/foo/[...bar]', '^/foo(/.*)?/?'); +}); + +test('pattern_to_src for route with rest parameter in the middle', () => { + run_pattern_to_src_test('/foo/[...bar]/baz', '^/foo(/.*)?/baz/?'); +}); diff --git a/packages/adapter-vercel/utils.js b/packages/adapter-vercel/utils.js index de10073e8846..a41a9cb7a92c 100644 --- a/packages/adapter-vercel/utils.js +++ b/packages/adapter-vercel/utils.js @@ -2,22 +2,68 @@ export function get_pathname(route) { let i = 1; - return route.segments + const pathname = route.segments .map((segment) => { if (!segment.dynamic) { - return segment.content; + return '/' + segment.content; } const parts = segment.content.split(/\[(.+?)\](?!\])/); - return parts - .map((content, j) => { - if (j % 2) { - return `$${i++}`; - } else { - return content; - } - }) - .join(''); + let result = ''; + + if ( + parts.length === 3 && + !parts[0] && + !parts[2] && + (parts[1].startsWith('...') || parts[1][0] === '[') + ) { + // Special case: segment is a single optional or rest parameter. + // In that case we don't prepend a slash (also see comment in pattern_to_src). + result = `$${i++}`; + } else { + result = + '/' + + parts + .map((content, j) => { + if (j % 2) { + return `$${i++}`; + } else { + return content; + } + }) + .join(''); + } + + return result; }) - .join('/'); + .join(''); + + return pathname[0] === '/' ? pathname.slice(1) : pathname; +} + +/** + * Adjusts the stringified route regex for Vercel's routing system + * @param {string} pattern stringified route regex + */ +export function pattern_to_src(pattern) { + let src = pattern + // remove leading / and trailing $/ + .slice(1, -2) + // replace escaped \/ with / + .replace(/\\\//g, '/'); + + // replace the root route "^/" with "^/?" + if (src === '^/') { + src = '^/?'; + } + + // Move non-capturing groups that swallow slashes into their following capturing groups. + // This is necessary because during ISR we're using the regex to construct the __pathname + // query parameter: In case of a route like [required]/[...rest] we need to turn them + // into $1$2 and not $1/$2, because if [...rest] is empty, we don't want to have a trailing + // slash in the __pathname query parameter which wasn't there in the original URL, as that + // could result in a false trailing slash redirect in the SvelteKit runtime, leading to infinite redirects. + src = src.replace(/\(\?:\/\((.+?)\)\)/g, '(/$1)'); + + return src; } From b94010dcb741daacf44ae4f8a1bcf379f7e828a7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 09:51:09 -0400 Subject: [PATCH 042/454] Version Packages (#11969) Co-authored-by: github-actions[bot] --- .changeset/dirty-points-drop.md | 5 ----- packages/adapter-vercel/CHANGELOG.md | 6 ++++++ packages/adapter-vercel/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/dirty-points-drop.md diff --git a/.changeset/dirty-points-drop.md b/.changeset/dirty-points-drop.md deleted file mode 100644 index 78c6338edaab..000000000000 --- a/.changeset/dirty-points-drop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/adapter-vercel": patch ---- - -fix: handle optional and rest routes for incremental static regeneration (ISR) correctly diff --git a/packages/adapter-vercel/CHANGELOG.md b/packages/adapter-vercel/CHANGELOG.md index 3a00c8de842c..0b47bc2c9a9a 100644 --- a/packages/adapter-vercel/CHANGELOG.md +++ b/packages/adapter-vercel/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/adapter-vercel +## 5.1.1 + +### Patch Changes + +- fix: handle optional and rest routes for incremental static regeneration (ISR) correctly ([#11928](https://github.com/sveltejs/kit/pull/11928)) + ## 5.1.0 ### Minor Changes diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 46acd695f05d..e5d2f120c6c5 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-vercel", - "version": "5.1.0", + "version": "5.1.1", "description": "A SvelteKit adapter that creates a Vercel app", "repository": { "type": "git", From 4562275ed42964148df03c79434172024897c08c Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 12 Mar 2024 22:56:17 +0800 Subject: [PATCH 043/454] fix: prevent navigation when preloading fails due to network error (#11944) fixes #9508 Adds a preload tokens set, which is updated with the corresponding pending preloads. This set is checked when an error occurs during a navigation to check if this is a preload navigation, and if yes, don't trigger the error --------- Co-authored-by: Simon Holthausen --- .changeset/good-roses-design.md | 5 ++ packages/kit/src/runtime/client/client.js | 83 +++++++++++++++---- .../preload-data/offline/+layout.server.js | 5 ++ .../preload-data/offline/+page.svelte | 8 ++ .../offline/slow-navigation/+page.server.js | 5 ++ .../offline/slow-navigation/+page.svelte | 0 .../preload-data/offline/target/+page.svelte | 0 .../kit/test/apps/basics/test/client.test.js | 72 ++++++++++++++++ 8 files changed, 162 insertions(+), 16 deletions(-) create mode 100644 .changeset/good-roses-design.md create mode 100644 packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/+layout.server.js create mode 100644 packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/+page.svelte create mode 100644 packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/slow-navigation/+page.server.js create mode 100644 packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/slow-navigation/+page.svelte create mode 100644 packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/target/+page.svelte diff --git a/.changeset/good-roses-design.md b/.changeset/good-roses-design.md new file mode 100644 index 000000000000..b2055ea2c9a3 --- /dev/null +++ b/.changeset/good-roses-design.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: prevent navigation when `data-sveltekit-preload-data` fails to fetch due to network error diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index dd400677931f..69e3a61b44ab 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -172,7 +172,7 @@ const invalidated = []; */ const components = []; -/** @type {{id: string, promise: Promise} | null} */ +/** @type {{id: string, token: {}, promise: Promise} | null} */ let load_cache = null; /** @type {Array<(navigation: import('@sveltejs/kit').BeforeNavigate) => void>} */ @@ -219,6 +219,14 @@ let page; /** @type {{}} */ let token; +/** + * A set of tokens which are associated to current preloads. + * If a preload becomes a real navigation, it's removed from the set. + * If a preload token is in the set and the preload errors, the error + * handling logic (for example reloading) is skipped. + */ +const preload_tokens = new Set(); + /** @type {Promise | null} */ let pending_invalidate; @@ -375,16 +383,26 @@ async function _goto(url, options, redirect_count, nav_token) { /** @param {import('./types.js').NavigationIntent} intent */ async function _preload_data(intent) { - load_cache = { - id: intent.id, - promise: load_route(intent).then((result) => { - if (result.type === 'loaded' && result.state.error) { - // Don't cache errors, because they might be transient - load_cache = null; - } - return result; - }) - }; + // Reuse the existing pending preload if it's for the same navigation. + // Prevents an edge case where same preload is triggered multiple times, + // then a later one is becoming the real navigation and the preload tokens + // get out of sync. + if (intent.id !== load_cache?.id) { + const preload = {}; + preload_tokens.add(preload); + load_cache = { + id: intent.id, + token: preload, + promise: load_route({ ...intent, preload }).then((result) => { + preload_tokens.delete(preload); + if (result.type === 'loaded' && result.state.error) { + // Don't cache errors, because they might be transient + load_cache = null; + } + return result; + }) + }; + } return load_cache.promise; } @@ -803,11 +821,31 @@ function diff_search_params(old_url, new_url) { } /** - * @param {import('./types.js').NavigationIntent} intent + * @param {Omit & { error: App.Error }} opts + * @returns {import('./types.js').NavigationFinished} + */ +function preload_error({ error, url, route, params }) { + return { + type: 'loaded', + state: { + error, + url, + route, + params, + branch: [] + }, + props: { page, constructors: [] } + }; +} + +/** + * @param {import('./types.js').NavigationIntent & { preload?: {} }} intent * @returns {Promise} */ -async function load_route({ id, invalidating, url, params, route }) { +async function load_route({ id, invalidating, url, params, route, preload }) { if (load_cache?.id === id) { + // the preload becomes the real navigation + preload_tokens.delete(load_cache.token); return load_cache.promise; } @@ -855,9 +893,15 @@ async function load_route({ id, invalidating, url, params, route }) { try { server_data = await load_data(url, invalid_server_nodes); } catch (error) { + const handled_error = await handle_error(error, { url, params, route: { id } }); + + if (preload_tokens.has(preload)) { + return preload_error({ error: handled_error, url, params, route }); + } + return load_root_error_page({ status: get_status(error), - error: await handle_error(error, { url, params, route: { id: route.id } }), + error: handled_error, url, route }); @@ -940,6 +984,15 @@ async function load_route({ id, invalidating, url, params, route }) { }; } + if (preload_tokens.has(preload)) { + return preload_error({ + error: await handle_error(err, { params, url, route: { id: route.id } }), + url, + params, + route + }); + } + let status = get_status(err); /** @type {App.Error} */ let error; @@ -972,8 +1025,6 @@ async function load_route({ id, invalidating, url, params, route }) { route }); } else { - // if we get here, it's because the root `load` function failed, - // and we need to fall back to the server return await server_fallback(url, { id: route.id }, error, status); } } diff --git a/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/+layout.server.js b/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/+layout.server.js new file mode 100644 index 000000000000..9d06c5313fd0 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/+layout.server.js @@ -0,0 +1,5 @@ +export function load({ url }) { + return { + url: url.toString() + }; +} diff --git a/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/+page.svelte b/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/+page.svelte new file mode 100644 index 000000000000..15e990e00a5c --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/+page.svelte @@ -0,0 +1,8 @@ +target + +slow-navigation diff --git a/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/slow-navigation/+page.server.js b/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/slow-navigation/+page.server.js new file mode 100644 index 000000000000..e7f852a46324 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/slow-navigation/+page.server.js @@ -0,0 +1,5 @@ +export async function load() { + return new Promise((resolve) => { + setTimeout(resolve, 1000); + }); +} diff --git a/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/slow-navigation/+page.svelte b/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/slow-navigation/+page.svelte new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/target/+page.svelte b/packages/kit/test/apps/basics/src/routes/data-sveltekit/preload-data/offline/target/+page.svelte new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/kit/test/apps/basics/test/client.test.js b/packages/kit/test/apps/basics/test/client.test.js index 2ae2b2818b74..4df2ba593000 100644 --- a/packages/kit/test/apps/basics/test/client.test.js +++ b/packages/kit/test/apps/basics/test/client.test.js @@ -665,6 +665,78 @@ test.describe('data-sveltekit attributes', () => { expect(requests.length).toBe(0); }); + test('data-sveltekit-preload-data network failure does not trigger navigation', async ({ + page, + context, + browserName + }) => { + await page.goto('/data-sveltekit/preload-data/offline'); + + await context.setOffline(true); + + await page.locator('#one').dispatchEvent('mousemove'); + await Promise.all([ + page.waitForTimeout(100), // wait for preloading to start + page.waitForLoadState('networkidle') // wait for preloading to finish + ]); + + let offline_url = /\/data-sveltekit\/preload-data\/offline/; + if (browserName === 'chromium') { + // it's chrome-error://chromewebdata/ on ubuntu but not on windows + offline_url = /chrome-error:\/\/chromewebdata\/|\/data-sveltekit\/preload-data\/offline/; + } + expect(page).toHaveURL(offline_url); + }); + + test('data-sveltekit-preload-data error does not block user navigation', async ({ + page, + context, + browserName + }) => { + await page.goto('/data-sveltekit/preload-data/offline'); + + await context.setOffline(true); + + await page.locator('#one').dispatchEvent('mousemove'); + await Promise.all([ + page.waitForTimeout(100), // wait for preloading to start + page.waitForLoadState('networkidle') // wait for preloading to finish + ]); + + expect(page).toHaveURL('/data-sveltekit/preload-data/offline'); + + await page.locator('#one').dispatchEvent('click'); + await page.waitForTimeout(100); // wait for navigation to start + await page.waitForLoadState('networkidle'); + + let offline_url = /\/data-sveltekit\/preload-data\/offline/; + if (browserName === 'chromium') { + // it's chrome-error://chromewebdata/ on ubuntu but not on windows + offline_url = /chrome-error:\/\/chromewebdata\/|\/data-sveltekit\/preload-data\/offline/; + } + expect(page).toHaveURL(offline_url); + }); + + test('data-sveltekit-preload does not abort ongoing navigation', async ({ + page, + browserName + }) => { + await page.goto('/data-sveltekit/preload-data/offline'); + + await page.locator('#slow-navigation').dispatchEvent('click'); + await page.waitForTimeout(100); // wait for navigation to start + await page.locator('#slow-navigation').dispatchEvent('mousemove'); + await Promise.all([ + page.waitForTimeout(100), // wait for preloading to start + page.waitForLoadState('networkidle') // wait for preloading to finish + ]); + + expect(page).toHaveURL( + '/data-sveltekit/preload-data/offline/slow-navigation' || + (browserName === 'chromium' && 'chrome-error://chromewebdata/') + ); + }); + test('data-sveltekit-reload', async ({ baseURL, page, clicknav }) => { /** @type {string[]} */ const requests = []; From cb338a6f2916a5306d454a93de753d41c03ba75c Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 12 Mar 2024 11:37:15 -0400 Subject: [PATCH 044/454] feat: implement `adapter.emulate` (#11732) Co-authored-by: Tee Ming Co-authored-by: Dario Piotrowicz Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- packages/adapter-cloudflare-workers/index.js | 29 + .../adapter-cloudflare-workers/package.json | 5 +- packages/adapter-cloudflare/ambient.d.ts | 6 +- packages/adapter-cloudflare/index.js | 28 + packages/adapter-cloudflare/package.json | 3 +- pnpm-lock.yaml | 562 +++++++++++++++++- 6 files changed, 620 insertions(+), 13 deletions(-) diff --git a/packages/adapter-cloudflare-workers/index.js b/packages/adapter-cloudflare-workers/index.js index e5874cf186d5..f9237e44dbb7 100644 --- a/packages/adapter-cloudflare-workers/index.js +++ b/packages/adapter-cloudflare-workers/index.js @@ -4,6 +4,7 @@ import { execSync } from 'node:child_process'; import esbuild from 'esbuild'; import toml from '@iarna/toml'; import { fileURLToPath } from 'node:url'; +import { getPlatformProxy } from 'wrangler'; /** * @typedef {{ @@ -140,6 +141,34 @@ export default function ({ config = 'wrangler.toml' } = {}) { const bucket_dir = `${site.bucket}${builder.config.kit.paths.base}`; builder.writeClient(bucket_dir); builder.writePrerendered(bucket_dir); + }, + + async emulate() { + const proxy = await getPlatformProxy(); + const platform = /** @type {App.Platform} */ ({ + env: proxy.env, + context: proxy.ctx, + caches: proxy.caches, + cf: proxy.cf + }); + + /** @type {Record} */ + const env = {}; + const prerender_platform = /** @type {App.Platform} */ (/** @type {unknown} */ ({ env })); + + for (const key in proxy.env) { + Object.defineProperty(env, key, { + get: () => { + throw new Error(`Cannot access platform.env.${key} in a prerenderable route`); + } + }); + } + + return { + platform: ({ prerender }) => { + return prerender ? prerender_platform : platform; + } + }; } }; } diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index a45c713e01c9..221595035025 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -27,7 +27,7 @@ "scripts": { "lint": "prettier --check .", "format": "pnpm lint --write", - "check": "tsc" + "check": "tsc --skipLibCheck" }, "dependencies": { "@cloudflare/workers-types": "^4.20231121.0", @@ -41,6 +41,7 @@ "typescript": "^5.3.3" }, "peerDependencies": { - "@sveltejs/kit": "^2.0.0" + "@sveltejs/kit": "^2.0.0", + "wrangler": "^3.28.4" } } diff --git a/packages/adapter-cloudflare/ambient.d.ts b/packages/adapter-cloudflare/ambient.d.ts index 5b3c951b4139..fbd01afd6557 100644 --- a/packages/adapter-cloudflare/ambient.d.ts +++ b/packages/adapter-cloudflare/ambient.d.ts @@ -1,12 +1,12 @@ -import { Cache, CacheStorage, IncomingRequestCfProperties } from '@cloudflare/workers-types'; +import { CacheStorage, IncomingRequestCfProperties } from '@cloudflare/workers-types'; declare global { namespace App { export interface Platform { - context?: { + context: { waitUntil(promise: Promise): void; }; - caches?: CacheStorage & { default: Cache }; + caches: CacheStorage; cf?: IncomingRequestCfProperties; } } diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 612b432c9dc4..16adc5f88e72 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -2,6 +2,7 @@ import { writeFileSync } from 'node:fs'; import * as path from 'node:path'; import { fileURLToPath } from 'node:url'; import * as esbuild from 'esbuild'; +import { getPlatformProxy } from 'wrangler'; // list from https://developers.cloudflare.com/workers/runtime-apis/nodejs/ const compatible_node_modules = [ @@ -124,6 +125,33 @@ export default function (options = {}) { }` ); } + }, + async emulate() { + const proxy = await getPlatformProxy(); + const platform = /** @type {App.Platform} */ ({ + env: proxy.env, + context: proxy.ctx, + caches: proxy.caches, + cf: proxy.cf + }); + + /** @type {Record} */ + const env = {}; + const prerender_platform = /** @type {App.Platform} */ (/** @type {unknown} */ ({ env })); + + for (const key in proxy.env) { + Object.defineProperty(env, key, { + get: () => { + throw new Error(`Cannot access platform.env.${key} in a prerenderable route`); + } + }); + } + + return { + platform: ({ prerender }) => { + return prerender ? prerender_platform : platform; + } + }; } }; } diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 6f523eab87a0..2b4841cb0648 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -43,7 +43,8 @@ "typescript": "^5.3.3" }, "peerDependencies": { - "@sveltejs/kit": "^2.0.0" + "@sveltejs/kit": "^2.0.0", + "wrangler": "^3.28.4" }, "publishConfig": { "access": "public" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f428eb93359..5bbc53c64777 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,6 +66,9 @@ importers: worktop: specifier: 0.8.0-next.18 version: 0.8.0-next.18 + wrangler: + specifier: ^3.28.4 + version: 3.30.1(@cloudflare/workers-types@4.20240129.0) devDependencies: '@sveltejs/kit': specifier: workspace:^ @@ -91,6 +94,9 @@ importers: esbuild: specifier: ^0.19.11 version: 0.19.12 + wrangler: + specifier: ^3.28.4 + version: 3.30.1(@cloudflare/workers-types@4.20240129.0) devDependencies: '@cloudflare/kv-asset-handler': specifier: ^0.3.0 @@ -1536,12 +1542,63 @@ packages: resolution: {integrity: sha512-lKN2XCfKCmpKb86a1tl4GIwsJYDy9TGuwjhDELLmpKygQhw8X2xR4dusgpC5Tg7q1pB96Eb0rBo81kxSILQMwA==} dependencies: mime: 3.0.0 - dev: true + + /@cloudflare/workerd-darwin-64@1.20240223.1: + resolution: {integrity: sha512-GgHnvkazLFZ7bmR96+dTX0+WS13a+5CHOOP3qNUSR9oEnR4hHzpNIO75MuZsm9RPAXrvtT7nSJmYwiGCZXh6og==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@cloudflare/workerd-darwin-arm64@1.20240223.1: + resolution: {integrity: sha512-ZF98vUmVlC0EVEd3RRuhMq4HYWFcqmPtMIMPUN2+ivEHR92TE+6E/AvdeE6wcE7fKHQ+fk3dH+ZgB0GcfptfnA==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@cloudflare/workerd-linux-64@1.20240223.1: + resolution: {integrity: sha512-1kH41ewNTGMmAk2zUX0Xj9VSfidl26GQ0ZrWMdi5kwf6gAHd3oVWNigJN078Jx56SgQxNcqVGX1LunqF949asw==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@cloudflare/workerd-linux-arm64@1.20240223.1: + resolution: {integrity: sha512-Ro8Og5C4evh890JrRm0B8sHyumRtgL+mUqPeNcEsyG45jAQy5xHpapHnmJAMJV6ah+zDc1cZtQq+en39SojXvQ==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@cloudflare/workerd-windows-64@1.20240223.1: + resolution: {integrity: sha512-eNP5sfaP6WL07DaoigYou5ASPF7jHsFiNzzD2vGOI7yFd5sPlb7sJ4SpIy+BCX0LdqFnjmlUo5Xr+/I6qJ2Nww==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true /@cloudflare/workers-types@4.20240129.0: resolution: {integrity: sha512-VyHbih/bqh/RN2FRxnXznG0bpBIg9RfSP1ldbAVnCXFinjOdv0zm2P/RWqOVN9+FgU5sanRltwwT7jGngxZy8w==} dev: false + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: false + /@emnapi/runtime@0.45.0: resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==} requiresBuild: true @@ -1550,6 +1607,24 @@ packages: dev: false optional: true + /@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19): + resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} + peerDependencies: + esbuild: '*' + dependencies: + esbuild: 0.17.19 + dev: false + + /@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19): + resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==} + peerDependencies: + esbuild: '*' + dependencies: + esbuild: 0.17.19 + escape-string-regexp: 4.0.0 + rollup-plugin-node-polyfills: 0.2.1 + dev: false + /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -1558,6 +1633,15 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + /@esbuild/android-arm64@0.19.12: resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} @@ -1566,6 +1650,15 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + /@esbuild/android-arm@0.19.12: resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} @@ -1574,6 +1667,15 @@ packages: requiresBuild: true optional: true + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + /@esbuild/android-x64@0.19.12: resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} @@ -1582,6 +1684,15 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@esbuild/darwin-arm64@0.19.12: resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} @@ -1590,6 +1701,15 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@esbuild/darwin-x64@0.19.12: resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} @@ -1598,6 +1718,15 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + /@esbuild/freebsd-arm64@0.19.12: resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} @@ -1606,6 +1735,15 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + /@esbuild/freebsd-x64@0.19.12: resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} @@ -1614,6 +1752,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esbuild/linux-arm64@0.19.12: resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} @@ -1622,6 +1769,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esbuild/linux-arm@0.19.12: resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} @@ -1630,6 +1786,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esbuild/linux-ia32@0.19.12: resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} @@ -1638,6 +1803,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esbuild/linux-loong64@0.19.12: resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} @@ -1646,6 +1820,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esbuild/linux-mips64el@0.19.12: resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} @@ -1654,6 +1837,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esbuild/linux-ppc64@0.19.12: resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} @@ -1662,6 +1854,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esbuild/linux-riscv64@0.19.12: resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} @@ -1670,6 +1871,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esbuild/linux-s390x@0.19.12: resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} @@ -1678,6 +1888,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@esbuild/linux-x64@0.19.12: resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} @@ -1686,6 +1905,15 @@ packages: requiresBuild: true optional: true + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + /@esbuild/netbsd-x64@0.19.12: resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} @@ -1694,6 +1922,15 @@ packages: requiresBuild: true optional: true + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + /@esbuild/openbsd-x64@0.19.12: resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} @@ -1702,6 +1939,15 @@ packages: requiresBuild: true optional: true + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + /@esbuild/sunos-x64@0.19.12: resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} @@ -1710,6 +1956,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@esbuild/win32-arm64@0.19.12: resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} @@ -1718,6 +1973,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@esbuild/win32-ia32@0.19.12: resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} @@ -1726,6 +1990,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@esbuild/win32-x64@0.19.12: resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} @@ -1771,6 +2044,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} + dev: false + /@fontsource/fira-mono@5.0.8: resolution: {integrity: sha512-8OJiUK2lzJjvDlkmamEfhtpL1cyFApg1Pk4kE5Pw5UTf1ETF3Yy/pprgwV5I+LQPDjuFvinsinT9xSUZ2b/zuQ==} dev: false @@ -2043,6 +2321,13 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: @@ -2435,6 +2720,12 @@ packages: resolution: {integrity: sha512-C6NscC1RO9iz1YmvqPlFdbo/q8krKwrvWsciw2MG+pH+WUgxWKv1VFpY/Y2AAZubzUpA4FH6d+FDtroboN9xMw==} dev: true + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + dependencies: + '@types/node': 18.19.14 + dev: false + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true @@ -2443,7 +2734,6 @@ packages: resolution: {integrity: sha512-EnQ4Us2rmOS64nHDWr0XqAD8DsO6f3XR6lf9UIIrZQpUzPVdN/oPuEzfDWNHSyXLvoGgjuEm/sPwFGSSs35Wtg==} dependencies: undici-types: 5.26.5 - dev: true /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2731,7 +3021,6 @@ packages: /acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - dev: true /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} @@ -2874,6 +3163,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /as-table@1.0.55: + resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + dependencies: + printable-characters: 1.0.42 + dev: false + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -2912,6 +3207,10 @@ packages: file-uri-to-path: 1.0.0 dev: false + /blake3-wasm@2.1.5: + resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} + dev: false + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -3010,6 +3309,15 @@ packages: resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} dev: true + /capnp-ts@0.7.0: + resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} + dependencies: + debug: 4.3.4 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + dev: false + /chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} @@ -3193,6 +3501,11 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: false + /cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} @@ -3288,6 +3601,10 @@ packages: d3-array: 3.2.4 dev: false + /data-uri-to-buffer@2.0.2: + resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + dev: false + /dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true @@ -3546,6 +3863,36 @@ packages: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + dev: false + /esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} @@ -3589,7 +3936,6 @@ packages: /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - dev: true /eslint-compat-utils@0.1.2(eslint@8.56.0): resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} @@ -3761,6 +4107,10 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + dev: false + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -3789,6 +4139,11 @@ packages: strip-final-newline: 3.0.0 dev: true + /exit-hook@2.2.1: + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} + engines: {node: '>=6'} + dev: false + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true @@ -4005,6 +4360,13 @@ packages: engines: {node: '>=4'} dev: true + /get-source@2.0.12: + resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + dependencies: + data-uri-to-buffer: 2.0.2 + source-map: 0.6.1 + dev: false + /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -4037,6 +4399,10 @@ packages: is-glob: 4.0.3 dev: true + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false + /glob@10.3.10: resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} @@ -4758,6 +5124,12 @@ packages: hasBin: true dev: true + /magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + dev: false + /magic-string@0.30.7: resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} engines: {node: '>=12'} @@ -4833,7 +5205,6 @@ packages: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} hasBin: true - dev: true /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} @@ -4845,6 +5216,29 @@ packages: engines: {node: '>=4'} dev: true + /miniflare@3.20240223.0: + resolution: {integrity: sha512-8T/36FEfvsL4aMF7SLZ28v+PQL0jsUlVw/u114GYcdobkyPax9E6Ahn0XePOHEqLxQSndwPee+eS1phHANFePA==} + engines: {node: '>=16.13'} + hasBin: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + acorn: 8.11.3 + acorn-walk: 8.3.2 + capnp-ts: 0.7.0 + exit-hook: 2.2.1 + glob-to-regexp: 0.4.1 + stoppable: 1.1.0 + undici: 5.28.2 + workerd: 1.20240223.1 + ws: 8.16.0 + youch: 3.3.3 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -4944,6 +5338,11 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + /mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + dev: false + /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: @@ -4956,7 +5355,6 @@ packages: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4980,6 +5378,11 @@ packages: dependencies: whatwg-url: 5.0.0 + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: false + /node-gyp-build@4.8.0: resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true @@ -5215,6 +5618,10 @@ packages: minipass: 7.0.4 dev: true + /path-to-regexp@6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + dev: false + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -5394,6 +5801,10 @@ packages: react-is: 18.2.0 dev: true + /printable-characters@1.0.42: + resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} + dev: false + /prism-svelte@0.5.0: resolution: {integrity: sha512-db91Bf3pRGKDPz1lAqLFSJXeW13mulUJxhycysFpfXV5MIK7RgWWK2E5aPAa71s8TCzQUXxF5JOV42/iOs6QkA==} dev: true @@ -5541,6 +5952,11 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: false + /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -5566,6 +5982,27 @@ packages: dependencies: glob: 7.2.3 + /rollup-plugin-inject@3.0.2: + resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. + dependencies: + estree-walker: 0.6.1 + magic-string: 0.25.9 + rollup-pluginutils: 2.8.2 + dev: false + + /rollup-plugin-node-polyfills@0.2.1: + resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} + dependencies: + rollup-plugin-inject: 3.0.2 + dev: false + + /rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + dependencies: + estree-walker: 0.6.1 + dev: false + /rollup@4.9.6: resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -5635,6 +6072,14 @@ packages: rimraf: 2.7.1 dev: true + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + dev: false + /semiver@1.1.0: resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} engines: {node: '>=6'} @@ -5848,6 +6293,16 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: false + + /sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + dev: false + /spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: @@ -5885,10 +6340,22 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true + /stacktracey@2.1.8: + resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} + dependencies: + as-table: 1.0.55 + get-source: 2.0.12 + dev: false + /std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: true + /stoppable@1.1.0: + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} + engines: {node: '>=4', npm: '>=6'} + dev: false + /stream-transform@2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: @@ -6405,7 +6872,13 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: true + + /undici@5.28.2: + resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: false /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -6685,6 +7158,19 @@ packages: string-width: 4.2.3 dev: false + /workerd@1.20240223.1: + resolution: {integrity: sha512-Mo1fwdp6DLva4/fWdL09ZdYllkO45I4YpWG5PbF/YUGFlu2aMk24fmU6Pd6fo5/cWek4F+n3LmYEKKHfqjiJIA==} + engines: {node: '>=16'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20240223.1 + '@cloudflare/workerd-darwin-arm64': 1.20240223.1 + '@cloudflare/workerd-linux-64': 1.20240223.1 + '@cloudflare/workerd-linux-arm64': 1.20240223.1 + '@cloudflare/workerd-windows-64': 1.20240223.1 + dev: false + /worktop@0.8.0-next.18: resolution: {integrity: sha512-+TvsA6VAVoMC3XDKR5MoC/qlLqDixEfOBysDEKnPIPou/NvoPWCAuXHXMsswwlvmEuvX56lQjvELLyLuzTKvRw==} engines: {node: '>=12'} @@ -6693,6 +7179,39 @@ packages: regexparam: 3.0.0 dev: false + /wrangler@3.30.1(@cloudflare/workers-types@4.20240129.0): + resolution: {integrity: sha512-cT6Ezx8h2v5QiI0HWhnHVy32ng4omdMVdhaMQLuMnyMIHmyDoRg7pmrbhtZfj0663gExLdVtE4ucK//yncVTwg==} + engines: {node: '>=16.17.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^4.20230914.0 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true + dependencies: + '@cloudflare/kv-asset-handler': 0.3.1 + '@cloudflare/workers-types': 4.20240129.0 + '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) + '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) + blake3-wasm: 2.1.5 + chokidar: 3.6.0 + esbuild: 0.17.19 + miniflare: 3.20240223.0 + nanoid: 3.3.7 + path-to-regexp: 6.2.1 + resolve: 1.22.8 + resolve.exports: 2.0.2 + selfsigned: 2.4.1 + source-map: 0.6.1 + xxhash-wasm: 1.0.2 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -6723,6 +7242,23 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + 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 + dev: false + + /xxhash-wasm@1.0.2: + resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} + dev: false + /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} dev: true @@ -6796,3 +7332,15 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true + + /youch@3.3.3: + resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==} + dependencies: + cookie: 0.5.0 + mustache: 4.2.0 + stacktracey: 2.1.8 + dev: false + + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false From 3d3e9a55d44036ba9503fcacc861de66c910d802 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 09:16:28 -0700 Subject: [PATCH 045/454] chore(deps): update dependency ts-morph to v22 (#11967) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/migrate/package.json | 2 +- pnpm-lock.yaml | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/migrate/package.json b/packages/migrate/package.json index d9c81c41a48c..a6f7583befbb 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -29,7 +29,7 @@ "prompts": "^2.4.2", "semver": "^7.5.4", "tiny-glob": "^0.2.9", - "ts-morph": "^21.0.1", + "ts-morph": "^22.0.0", "typescript": "^5.3.3" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5bbc53c64777..14a85fcd5a3f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1093,8 +1093,8 @@ importers: specifier: ^0.2.9 version: 0.2.9 ts-morph: - specifier: ^21.0.1 - version: 21.0.1 + specifier: ^22.0.0 + version: 22.0.0 typescript: specifier: ^5.3.3 version: 5.3.3 @@ -2668,8 +2668,8 @@ packages: - encoding dev: true - /@ts-morph/common@0.22.0: - resolution: {integrity: sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==} + /@ts-morph/common@0.23.0: + resolution: {integrity: sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==} dependencies: fast-glob: 3.3.2 minimatch: 9.0.3 @@ -3416,8 +3416,8 @@ packages: engines: {node: '>=0.8'} dev: true - /code-block-writer@12.0.0: - resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} + /code-block-writer@13.0.1: + resolution: {integrity: sha512-c5or4P6erEA69TxaxTNcHUNcIn+oyxSRTOWV+pSYF+z4epXqNvwvJ70XPGjPNgue83oAFAPBRQYwpAJ/Hpe/Sg==} dev: false /code-red@1.0.4: @@ -6751,11 +6751,11 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /ts-morph@21.0.1: - resolution: {integrity: sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==} + /ts-morph@22.0.0: + resolution: {integrity: sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==} dependencies: - '@ts-morph/common': 0.22.0 - code-block-writer: 12.0.0 + '@ts-morph/common': 0.23.0 + code-block-writer: 13.0.1 dev: false /tslib@2.6.2: From 4447269e979f2b5be18e0fded0b5843a6258542d Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 12 Mar 2024 09:17:54 -0700 Subject: [PATCH 046/454] changeset for migrate dependency bump --- .changeset/grumpy-foxes-end.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/grumpy-foxes-end.md diff --git a/.changeset/grumpy-foxes-end.md b/.changeset/grumpy-foxes-end.md new file mode 100644 index 000000000000..01b3f2e1cbfd --- /dev/null +++ b/.changeset/grumpy-foxes-end.md @@ -0,0 +1,5 @@ +--- +"svelte-migrate": patch +--- + +chore(deps): update dependency ts-morph to v22 From 731b03c3da2c92a792f7c8275890685162dcc94e Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 13 Mar 2024 12:49:40 +0800 Subject: [PATCH 047/454] chore: docs and changeset for #11732 (#11974) * add changeset * documentation * Update documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> * Update documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md Co-authored-by: Dario Piotrowicz --------- Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> Co-authored-by: Dario Piotrowicz --- .changeset/lucky-chefs-sleep.md | 6 ++++++ .../25-build-and-deploy/60-adapter-cloudflare.md | 12 +++++++----- .../70-adapter-cloudflare-workers.md | 10 ++++++---- 3 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 .changeset/lucky-chefs-sleep.md diff --git a/.changeset/lucky-chefs-sleep.md b/.changeset/lucky-chefs-sleep.md new file mode 100644 index 000000000000..ded7270e4d8d --- /dev/null +++ b/.changeset/lucky-chefs-sleep.md @@ -0,0 +1,6 @@ +--- +"@sveltejs/adapter-cloudflare-workers": minor +"@sveltejs/adapter-cloudflare": minor +--- + +feat: emulate Cloudflare Workers bindings and incoming request properties in `event.platform` for `dev` and `preview` diff --git a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md index 5859d1326fbc..92ce42d8bfbf 100644 --- a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md +++ b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md @@ -4,7 +4,7 @@ title: Cloudflare Pages To deploy to [Cloudflare Pages](https://developers.cloudflare.com/pages/), use [`adapter-cloudflare`](https://github.com/sveltejs/kit/tree/main/packages/adapter-cloudflare). -This adapter will be installed by default when you use [`adapter-auto`](adapter-auto). If you plan on staying with Cloudflare Pages you can switch from [`adapter-auto`](adapter-auto) to using this adapter directly so that type declarations will be automatically applied and you can set Cloudflare-specific options. +This adapter will be installed by default when you use [`adapter-auto`](adapter-auto). If you plan on staying with Cloudflare Pages, you can switch from [`adapter-auto`](adapter-auto) to using this adapter directly so that values specific to Cloudflare Workers are emulated during local development, type declarations are automatically applied, and the ability to set Cloudflare-specific options is provided. ## Comparisons @@ -57,9 +57,9 @@ When configuring your project settings, you must use the following settings: - **Build command** – `npm run build` or `vite build` - **Build output directory** – `.svelte-kit/cloudflare` -## Bindings +## Runtime APIs -The [`env`](https://developers.cloudflare.com/workers/runtime-apis/fetch-event#parameters) object contains your project's [bindings](https://developers.cloudflare.com/pages/platform/functions/bindings/), which consist of KV/DO namespaces, etc. It is passed to SvelteKit via the `platform` property, along with `context` and `caches`, meaning that you can access it in hooks and endpoints: +The [`env`](https://developers.cloudflare.com/workers/runtime-apis/fetch-event#parameters) object contains your project's [bindings](https://developers.cloudflare.com/pages/platform/functions/bindings/), which consist of KV/DO namespaces, etc. It is passed to SvelteKit via the `platform` property, along with [`context`](https://developers.cloudflare.com/workers/runtime-apis/handlers/fetch/#contextwaituntil), [`caches`](https://developers.cloudflare.com/workers/runtime-apis/cache/), and [`cf`](https://developers.cloudflare.com/workers/runtime-apis/request/#the-cf-property-requestinitcfproperties), meaning that you can access it in hooks and endpoints: ```js // @errors: 7031 @@ -70,7 +70,7 @@ export async function POST({ request, platform }) { > SvelteKit's built-in `$env` module should be preferred for environment variables. -To make these types available to your app, reference them in your `src/app.d.ts`: +To include type declarations for your bindings, reference them in your `src/app.d.ts`: ```diff /// file: src/app.d.ts @@ -90,7 +90,9 @@ export {}; ### Testing Locally -`platform.env` is only available in the final build and not in dev mode. For testing the build, you can use [wrangler](https://developers.cloudflare.com/workers/cli-wrangler) **version 3**. Once you have built your site, run `wrangler pages dev .svelte-kit/cloudflare`. Ensure you have your [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) in your `wrangler.toml`. +Cloudflare Workers specific values in the `platform` property are emulated during dev and preview modes. The [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) in your `wrangler.toml` will be used to populate `platform.env` during local development. + +For testing the build, you should use [wrangler](https://developers.cloudflare.com/workers/cli-wrangler) **version 3**. Once you have built your site, run `wrangler pages dev .svelte-kit/cloudflare`. ## Notes diff --git a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md index 68e54b320a7b..5c51091ef765 100644 --- a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md +++ b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md @@ -84,9 +84,9 @@ If you would like to enable [Node.js compatibility](https://developers.cloudflar compatibility_flags = [ "nodejs_compat" ] ``` -## Bindings +## Runtime APIs -The [`env`](https://developers.cloudflare.com/workers/runtime-apis/fetch-event#parameters) object contains your project's [bindings](https://developers.cloudflare.com/workers/platform/environment-variables/), which consist of KV/DO namespaces, etc. It is passed to SvelteKit via the `platform` property, along with `context` and `caches`, meaning that you can access it in hooks and endpoints: +The [`env`](https://developers.cloudflare.com/workers/runtime-apis/fetch-event#parameters) object contains your project's [bindings](https://developers.cloudflare.com/pages/platform/functions/bindings/), which consist of KV/DO namespaces, etc. It is passed to SvelteKit via the `platform` property, along with [`context`](https://developers.cloudflare.com/workers/runtime-apis/handlers/fetch/#contextwaituntil), [`caches`](https://developers.cloudflare.com/workers/runtime-apis/cache/), and [`cf`](https://developers.cloudflare.com/workers/runtime-apis/request/#the-cf-property-requestinitcfproperties), meaning that you can access it in hooks and endpoints: ```js // @errors: 7031 @@ -97,7 +97,7 @@ export async function POST({ request, platform }) { > SvelteKit's built-in `$env` module should be preferred for environment variables. -To make these types available to your app, reference them in your `src/app.d.ts`: +To include type declarations for your bindings, reference them in your `src/app.d.ts`: ```diff /// file: src/app.d.ts @@ -117,7 +117,9 @@ export {}; ### Testing Locally -`platform.env` is only available in the final build and not in dev mode. For testing the build, you can use [wrangler](https://developers.cloudflare.com/workers/cli-wrangler). Once you have built your site, run `wrangler dev`. Ensure you have your [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) in your `wrangler.toml`. Wrangler version 3 is recommended. +Cloudflare Workers specific values in the `platform` property are emulated during dev and preview modes. The [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) in your `wrangler.toml` will be used to populate `platform.env` during local development. + +For testing the build, you should use [wrangler](https://developers.cloudflare.com/workers/cli-wrangler) **version 3**. Once you have built your site, run `wrangler dev`. ## Troubleshooting From d5eb685648f0b219e7c9497eb14220df3828748f Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 13 Mar 2024 09:35:14 -0700 Subject: [PATCH 048/454] site: fix twitter card (#11978) --- sites/kit.svelte.dev/src/app.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sites/kit.svelte.dev/src/app.html b/sites/kit.svelte.dev/src/app.html index 3d482fa08955..cdd57db42d05 100644 --- a/sites/kit.svelte.dev/src/app.html +++ b/sites/kit.svelte.dev/src/app.html @@ -12,8 +12,8 @@ - - + + Date: Wed, 13 Mar 2024 09:47:52 -0700 Subject: [PATCH 049/454] Version Packages (#11973) Co-authored-by: github-actions[bot] --- .changeset/good-roses-design.md | 5 ----- .changeset/grumpy-foxes-end.md | 5 ----- .changeset/lucky-chefs-sleep.md | 6 ------ packages/adapter-cloudflare-workers/CHANGELOG.md | 11 +++++++++++ packages/adapter-cloudflare-workers/package.json | 2 +- packages/adapter-cloudflare/CHANGELOG.md | 11 +++++++++++ packages/adapter-cloudflare/package.json | 2 +- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- packages/migrate/CHANGELOG.md | 6 ++++++ packages/migrate/package.json | 2 +- 12 files changed, 39 insertions(+), 21 deletions(-) delete mode 100644 .changeset/good-roses-design.md delete mode 100644 .changeset/grumpy-foxes-end.md delete mode 100644 .changeset/lucky-chefs-sleep.md diff --git a/.changeset/good-roses-design.md b/.changeset/good-roses-design.md deleted file mode 100644 index b2055ea2c9a3..000000000000 --- a/.changeset/good-roses-design.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: prevent navigation when `data-sveltekit-preload-data` fails to fetch due to network error diff --git a/.changeset/grumpy-foxes-end.md b/.changeset/grumpy-foxes-end.md deleted file mode 100644 index 01b3f2e1cbfd..000000000000 --- a/.changeset/grumpy-foxes-end.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"svelte-migrate": patch ---- - -chore(deps): update dependency ts-morph to v22 diff --git a/.changeset/lucky-chefs-sleep.md b/.changeset/lucky-chefs-sleep.md deleted file mode 100644 index ded7270e4d8d..000000000000 --- a/.changeset/lucky-chefs-sleep.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sveltejs/adapter-cloudflare-workers": minor -"@sveltejs/adapter-cloudflare": minor ---- - -feat: emulate Cloudflare Workers bindings and incoming request properties in `event.platform` for `dev` and `preview` diff --git a/packages/adapter-cloudflare-workers/CHANGELOG.md b/packages/adapter-cloudflare-workers/CHANGELOG.md index 9a4f46be3207..b9a2ec9fa3ea 100644 --- a/packages/adapter-cloudflare-workers/CHANGELOG.md +++ b/packages/adapter-cloudflare-workers/CHANGELOG.md @@ -1,5 +1,16 @@ # @sveltejs/adapter-cloudflare-workers +## 2.2.0 + +### Minor Changes + +- feat: emulate Cloudflare Workers bindings and incoming request properties in `event.platform` for `dev` and `preview` ([#11974](https://github.com/sveltejs/kit/pull/11974)) + +### Patch Changes + +- Updated dependencies [[`4562275ed42964148df03c79434172024897c08c`](https://github.com/sveltejs/kit/commit/4562275ed42964148df03c79434172024897c08c)]: + - @sveltejs/kit@2.5.4 + ## 2.1.0 ### Minor Changes diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index 221595035025..ff42d4285d30 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare-workers", - "version": "2.1.0", + "version": "2.2.0", "description": "SvelteKit adapter that creates a Cloudflare Workers site using a function for dynamic server rendering", "repository": { "type": "git", diff --git a/packages/adapter-cloudflare/CHANGELOG.md b/packages/adapter-cloudflare/CHANGELOG.md index e26a8c92b183..c02352f57c77 100644 --- a/packages/adapter-cloudflare/CHANGELOG.md +++ b/packages/adapter-cloudflare/CHANGELOG.md @@ -1,5 +1,16 @@ # @sveltejs/adapter-cloudflare +## 4.2.0 + +### Minor Changes + +- feat: emulate Cloudflare Workers bindings and incoming request properties in `event.platform` for `dev` and `preview` ([#11974](https://github.com/sveltejs/kit/pull/11974)) + +### Patch Changes + +- Updated dependencies [[`4562275ed42964148df03c79434172024897c08c`](https://github.com/sveltejs/kit/commit/4562275ed42964148df03c79434172024897c08c)]: + - @sveltejs/kit@2.5.4 + ## 4.1.0 ### Minor Changes diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 2b4841cb0648..833a0af97c00 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare", - "version": "4.1.0", + "version": "4.2.0", "description": "Adapter for building SvelteKit applications on Cloudflare Pages with Workers integration", "repository": { "type": "git", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 307af5cec063..fff4aa882bc7 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.5.4 + +### Patch Changes + +- fix: prevent navigation when `data-sveltekit-preload-data` fails to fetch due to network error ([#11944](https://github.com/sveltejs/kit/pull/11944)) + ## 2.5.3 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index be28bc52769d..05e2bb9ab708 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.5.3", + "version": "2.5.4", "description": "The fastest way to build Svelte apps", "repository": { "type": "git", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 555d5913dfb8..ce6b81dc26bd 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.5.3'; +export const VERSION = '2.5.4'; diff --git a/packages/migrate/CHANGELOG.md b/packages/migrate/CHANGELOG.md index f31a8eac4a37..105b80db64a7 100644 --- a/packages/migrate/CHANGELOG.md +++ b/packages/migrate/CHANGELOG.md @@ -1,5 +1,11 @@ # svelte-migrate +## 1.3.8 + +### Patch Changes + +- chore(deps): update dependency ts-morph to v22 ([`4447269e979f2b5be18e0fded0b5843a6258542d`](https://github.com/sveltejs/kit/commit/4447269e979f2b5be18e0fded0b5843a6258542d)) + ## 1.3.7 ### Patch Changes diff --git a/packages/migrate/package.json b/packages/migrate/package.json index a6f7583befbb..f423a05bdb9c 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -1,6 +1,6 @@ { "name": "svelte-migrate", - "version": "1.3.7", + "version": "1.3.8", "description": "A CLI for migrating Svelte(Kit) codebases", "repository": { "type": "git", From bd2eae7eb043922b0ccb6c3eed62953cb9e17fb2 Mon Sep 17 00:00:00 2001 From: Loris Sigrist <43482866+LorisSigrist@users.noreply.github.com> Date: Thu, 14 Mar 2024 16:38:42 +0100 Subject: [PATCH 050/454] fix: support shorthand attribute syntax on enhanced-img (#11884) Co-authored-by: Willow (GHOST) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/good-parrots-act.md | 5 +++++ packages/enhanced-img/src/preprocessor.js | 4 ++++ packages/enhanced-img/test/Input.svelte | 3 +++ packages/enhanced-img/test/Output.svelte | 12 ++++++++++++ 4 files changed, 24 insertions(+) create mode 100644 .changeset/good-parrots-act.md diff --git a/.changeset/good-parrots-act.md b/.changeset/good-parrots-act.md new file mode 100644 index 000000000000..ea0bb9f28012 --- /dev/null +++ b/.changeset/good-parrots-act.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/enhanced-img": patch +--- + +fix: support shorthand attribute syntax diff --git a/packages/enhanced-img/src/preprocessor.js b/packages/enhanced-img/src/preprocessor.js index 0575f88c5259..5dcc54431d8e 100644 --- a/packages/enhanced-img/src/preprocessor.js +++ b/packages/enhanced-img/src/preprocessor.js @@ -53,6 +53,10 @@ export function image(opts) { .trim(); s.update(node.start, node.end, dynamic_img_to_picture(content, node, src_var_name)); return; + } else if (src_attribute.type === 'AttributeShorthand') { + const src_var_name = content.substring(src_attribute.start, src_attribute.end).trim(); + s.update(node.start, node.end, dynamic_img_to_picture(content, node, src_var_name)); + return; } const original_url = src_attribute.raw.trim(); diff --git a/packages/enhanced-img/test/Input.svelte b/packages/enhanced-img/test/Input.svelte index 72b12eefc365..84e067bbb941 100644 --- a/packages/enhanced-img/test/Input.svelte +++ b/packages/enhanced-img/test/Input.svelte @@ -2,6 +2,7 @@ import manual_image1 from './no.png'; import manual_image2 from './no.svg'; + const src = manual_image1; const images = [manual_image1, manual_image2]; let foo: string = 'bar'; @@ -31,6 +32,8 @@ + + {#each images as image} diff --git a/packages/enhanced-img/test/Output.svelte b/packages/enhanced-img/test/Output.svelte index fe7caca8a830..8873ec20a811 100644 --- a/packages/enhanced-img/test/Output.svelte +++ b/packages/enhanced-img/test/Output.svelte @@ -5,6 +5,7 @@ import manual_image2 from './no.svg'; + const src = manual_image1; const images = [manual_image1, manual_image2]; let foo: string = 'bar'; @@ -30,6 +31,17 @@ absolute path test +{#if typeof src === 'string'} + attribute shorthand test +{:else} + + {#each Object.entries(src.sources) as [format, srcset]} + + {/each} + attribute shorthand test + +{/if} + svg test {#each images as image} From 6e9b75eb6cb2830238feefc65079e89f543d5029 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 08:44:19 -0700 Subject: [PATCH 051/454] Version Packages (#11980) Co-authored-by: github-actions[bot] --- .changeset/good-parrots-act.md | 5 ----- packages/enhanced-img/CHANGELOG.md | 6 ++++++ packages/enhanced-img/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/good-parrots-act.md diff --git a/.changeset/good-parrots-act.md b/.changeset/good-parrots-act.md deleted file mode 100644 index ea0bb9f28012..000000000000 --- a/.changeset/good-parrots-act.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/enhanced-img": patch ---- - -fix: support shorthand attribute syntax diff --git a/packages/enhanced-img/CHANGELOG.md b/packages/enhanced-img/CHANGELOG.md index 8843576c11a8..55857577b993 100644 --- a/packages/enhanced-img/CHANGELOG.md +++ b/packages/enhanced-img/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/enhanced-img +## 0.1.9 + +### Patch Changes + +- fix: support shorthand attribute syntax ([#11884](https://github.com/sveltejs/kit/pull/11884)) + ## 0.1.8 ### Patch Changes diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 0e7ad3a9f901..1abacbef5347 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/enhanced-img", - "version": "0.1.8", + "version": "0.1.9", "description": "Image optimization for your Svelte apps", "repository": { "type": "git", From 965a2654a296e0f0a60f1b609dc96490afd98e3e Mon Sep 17 00:00:00 2001 From: Joel Kuzmarski Date: Thu, 14 Mar 2024 22:14:06 -0500 Subject: [PATCH 052/454] docs: show how options are passed on adapter-vercel page (#11837) --- .../25-build-and-deploy/90-adapter-vercel.md | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md index 265985a9db99..0a6aa44b01ba 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -69,11 +69,21 @@ If your functions need to access data in a specific region, it's recommended tha You may set the `images` config to control how Vercel builds your images. See the [image configuration reference](https://vercel.com/docs/build-output-api/v3/configuration#images) for full details. As an example, you may set: ``` -{ - sizes: [640, 828, 1200, 1920, 3840], - formats: ['image/avif', 'image/webp'], - minimumCacheTTL: 300 -} +/// file: svelte.config.js +import adapter from '@sveltejs/adapter-vercel'; + +export default { + kit: { + adapter({ + images: { + sizes: [640, 828, 1200, 1920, 3840], + formats: ['image/avif', 'image/webp'], + minimumCacheTTL: 300, + domains: ['example-app.vercel.app'], + } + }) + } +}; ``` ## Incremental Static Regeneration From 74ccfa279702716372b7c1157abb07f8b1e4e14f Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:29:26 -0700 Subject: [PATCH 053/454] chore: upgrade undici (#11984) --- pnpm-lock.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 14a85fcd5a3f..87d40612162f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2044,8 +2044,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@fastify/busboy@2.1.0: - resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + /@fastify/busboy@2.1.1: + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} dev: false @@ -5228,7 +5228,7 @@ packages: exit-hook: 2.2.1 glob-to-regexp: 0.4.1 stoppable: 1.1.0 - undici: 5.28.2 + undici: 5.28.3 workerd: 1.20240223.1 ws: 8.16.0 youch: 3.3.3 @@ -6873,11 +6873,11 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici@5.28.2: - resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + /undici@5.28.3: + resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} engines: {node: '>=14.0'} dependencies: - '@fastify/busboy': 2.1.0 + '@fastify/busboy': 2.1.1 dev: false /universalify@0.1.2: From 8f185a03e38872f78ad7da37ab19a9549062cfdb Mon Sep 17 00:00:00 2001 From: Owen Versteeg Date: Thu, 14 Mar 2024 23:53:26 -0400 Subject: [PATCH 054/454] docs: standardize comment in jsconfig/tsconfig (#11788) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/sweet-weeks-pretend.md | 5 +++++ packages/create-svelte/shared/+checkjs/jsconfig.json | 3 ++- packages/create-svelte/shared/+typescript/tsconfig.json | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/sweet-weeks-pretend.md diff --git a/.changeset/sweet-weeks-pretend.md b/.changeset/sweet-weeks-pretend.md new file mode 100644 index 000000000000..128821ae1492 --- /dev/null +++ b/.changeset/sweet-weeks-pretend.md @@ -0,0 +1,5 @@ +--- +"create-svelte": patch +--- + +docs: update comment about path aliases diff --git a/packages/create-svelte/shared/+checkjs/jsconfig.json b/packages/create-svelte/shared/+checkjs/jsconfig.json index 81def1550ede..fc93cbd9409f 100644 --- a/packages/create-svelte/shared/+checkjs/jsconfig.json +++ b/packages/create-svelte/shared/+checkjs/jsconfig.json @@ -11,7 +11,8 @@ "strict": true, "moduleResolution": "bundler" } - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias and https://kit.svelte.dev/docs/configuration#files + // 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 diff --git a/packages/create-svelte/shared/+typescript/tsconfig.json b/packages/create-svelte/shared/+typescript/tsconfig.json index 82081abc3613..fc93cbd9409f 100644 --- a/packages/create-svelte/shared/+typescript/tsconfig.json +++ b/packages/create-svelte/shared/+typescript/tsconfig.json @@ -12,6 +12,7 @@ "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 From 5132c32fa18badd5698774b1ee0da4b10a7bfbdf Mon Sep 17 00:00:00 2001 From: Joel Kuzmarski Date: Thu, 14 Mar 2024 22:59:22 -0500 Subject: [PATCH 055/454] docs: update image best practices (#11792) --- documentation/docs/40-best-practices/07-images.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/documentation/docs/40-best-practices/07-images.md b/documentation/docs/40-best-practices/07-images.md index 5130aaeb5c45..bc2811b05802 100644 --- a/documentation/docs/40-best-practices/07-images.md +++ b/documentation/docs/40-best-practices/07-images.md @@ -137,7 +137,7 @@ By default, enhanced images will be transformed to more efficient formats. Howev In some cases, the images may not be accessible at build time — e.g. they may live inside a content management system or elsewhere. -Using a content delivery network (CDN) can allow you to optimize these images dynamically, and provides more flexibility with regards to sizes, but it may involve some setup overhead and usage costs. Depending on caching strategy, the browser may not be able to use a cached copy of the asset until a [304 response](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304) is received from the CDN. Building HTML to target CDNs may result in slightly smaller and simpler HTML because they can serve the appropriate file format for an `` tag based on the `User-Agent` header whereas build-time optimizations must produce `` tags with multiple sources. Finally, some CDNs may generate images lazily, which could have a negative performance impact for sites with low traffic and frequently changing images. +Using a content delivery network (CDN) can allow you to optimize these images dynamically, and provides more flexibility with regards to sizes, but it may involve some setup overhead and usage costs. Depending on caching strategy, the browser may not be able to use a cached copy of the asset until a [304 response](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304) is received from the CDN. Building HTML to target CDNs allows using an `` tag since the CDN can serve the appropriate format based on the `User-Agent` header, whereas build-time optimizations must produce `` tags with multiple sources. Finally, some CDNs may generate images lazily, which could have a negative performance impact for sites with low traffic and frequently changing images. CDNs can generally be used without any need for a library. However, there are a number of libraries with Svelte support that make it easier. [`@unpic/svelte`](https://unpic.pics/img/svelte/) is a CDN-agnostic library with support for a large number of providers. You may also find that specific CDNs like [Cloudinary](https://svelte.cloudinary.dev/) have Svelte support. Finally, some content management systems (CMS) which support Svelte (such as [Contentful](https://www.contentful.com/sveltekit-starter-guide/), [Storyblok](https://github.com/storyblok/storyblok-svelte), and [Contentstack](https://www.contentstack.com/docs/developers/sample-apps/build-a-starter-website-with-sveltekit-and-contentstack)) have built-in support for image handling. @@ -147,6 +147,8 @@ CDNs can generally be used without any need for a library. However, there are a - Consider serving all images via CDN regardless of the image optimization types you use. CDNs reduce latency by distributing copies of static assets globally. - Your original images should have a good quality/resolution and should have 2x the width it will be displayed at to serve HiDPI devices. Image processing can size images down to save bandwidth when serving smaller screens, but it would be a waste of bandwidth to invent pixels to size images up. - For images which are much larger than the width of a mobile device (roughly 400px), such as a hero image taking the width of the page design, specify `sizes` so that smaller images can be served on smaller devices. -- Choose one image per page which is the most important/largest one and give it `priority` so it loads faster. This gives you better web vitals scores (largest contentful paint in particular). -- Give the image a container or styling so that it is constrained and does not jump around. `width` and `height` help the browser reserving space while the image is still loading. `@sveltejs/enhanced-img` will add a `width` and `height` for you. +- For important images, such as the [largest contentful paint (LCP)](https://web.dev/articles/lcp) image, set `fetchpriority="high" loading="eager"` to prioritize loading as early as possible. +- Give the image a container or styling so that it is constrained and does not jump around while the page is loading affecting your [cumulative layout shift (CLS)](https://web.dev/articles/cls). `width` and `height` help the browser to reserve space while the image is still loading, so `@sveltejs/enhanced-img` will add a `width` and `height` for you. - Always provide a good `alt` text. The Svelte compiler will warn you if you don't do this. +- Do not use `em` or `rem` in `sizes` and change the default size of these measures. When used in `sizes` or `@media` queries, `em` and `rem` are both defined to mean the user's default `font-size`. For a `sizes` declaration like `sizes="(min-width: 768px) min(100vw, 108rem), 64rem"`, the actual `em` or `rem` that controls how the image is laid out on the page can be different if changed by CSS. For example, do not do something like `html { font-size: 62.5%; }` as the slot reserved by the browser preloader will now end up being larger than the actual slot of the CSS object model once it has been created. + From 9a57116cb71237a3497e79690aaf5472a1c6a2aa Mon Sep 17 00:00:00 2001 From: Shohei Maeda <11495867+smaeda-ks@users.noreply.github.com> Date: Fri, 15 Mar 2024 13:14:32 +0900 Subject: [PATCH 056/454] feat: add framework metadata in Vercel build output files (#11800) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/hot-clocks-unite.md | 5 +++++ packages/adapter-vercel/index.js | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 .changeset/hot-clocks-unite.md diff --git a/.changeset/hot-clocks-unite.md b/.changeset/hot-clocks-unite.md new file mode 100644 index 000000000000..91286ba1f203 --- /dev/null +++ b/.changeset/hot-clocks-unite.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/adapter-vercel": minor +--- + +feat: add framework metadata in Vercel build output files diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 4c795588e1b9..a6d33b515ba1 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -4,6 +4,7 @@ import { fileURLToPath } from 'node:url'; import { nodeFileTrace } from '@vercel/nft'; import esbuild from 'esbuild'; import { get_pathname, pattern_to_src } from './utils.js'; +import { VERSION } from '@sveltejs/kit'; const name = '@sveltejs/adapter-vercel'; const DEFAULT_FUNCTION_NAME = 'fn'; @@ -174,7 +175,11 @@ const plugin = function (defaults = {}) { { runtime: config.runtime, regions: config.regions, - entrypoint: 'index.js' + entrypoint: 'index.js', + framework: { + slug: 'sveltekit', + version: VERSION + } }, null, '\t' @@ -588,7 +593,11 @@ async function create_function_bundle(builder, entry, dir, config) { maxDuration: config.maxDuration, handler: path.relative(base + ancestor, entry), launcherType: 'Nodejs', - experimentalResponseStreaming: !config.isr + experimentalResponseStreaming: !config.isr, + framework: { + slug: 'sveltekit', + version: VERSION + } }, null, '\t' From a6e52cc259f64c836c6e2730919126df7290be23 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 18 Mar 2024 06:00:37 +0800 Subject: [PATCH 057/454] docs: specify emulated bindings are local-only (#11992) * specify emulated bindings are local only * update workers docs too --- documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md | 2 +- .../docs/25-build-and-deploy/70-adapter-cloudflare-workers.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md index 92ce42d8bfbf..d819350a1d05 100644 --- a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md +++ b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md @@ -90,7 +90,7 @@ export {}; ### Testing Locally -Cloudflare Workers specific values in the `platform` property are emulated during dev and preview modes. The [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) in your `wrangler.toml` will be used to populate `platform.env` during local development. +Cloudflare Workers specific values in the `platform` property are emulated during dev and preview modes. Local [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) are created based on the configuration in your `wrangler.toml` file and are used to populate `platform.env` during development. For testing the build, you should use [wrangler](https://developers.cloudflare.com/workers/cli-wrangler) **version 3**. Once you have built your site, run `wrangler pages dev .svelte-kit/cloudflare`. diff --git a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md index 5c51091ef765..eba4d9556c7d 100644 --- a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md +++ b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md @@ -117,7 +117,7 @@ export {}; ### Testing Locally -Cloudflare Workers specific values in the `platform` property are emulated during dev and preview modes. The [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) in your `wrangler.toml` will be used to populate `platform.env` during local development. +Cloudflare Workers specific values in the `platform` property are emulated during dev and preview modes. Local [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) are created based on the configuration in your `wrangler.toml` file and are used to populate `platform.env` during development. For testing the build, you should use [wrangler](https://developers.cloudflare.com/workers/cli-wrangler) **version 3**. Once you have built your site, run `wrangler dev`. From 6a5d40ef098f63e7e9209bca2058ccf1820bc060 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 17 Mar 2024 18:11:18 -0700 Subject: [PATCH 058/454] chore(deps): update pnpm to v8.15.5 (#12000) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0437858b5d80..cd91a7ab3086 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "eslint-plugin-unicorn": "^51.0.1", "playwright": "^1.41.0" }, - "packageManager": "pnpm@8.15.4", + "packageManager": "pnpm@8.15.5", "engines": { "pnpm": "^8.0.0" } From af5a257b4386dceddca472885329e5c8863dfcd5 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 19 Mar 2024 09:52:55 -0400 Subject: [PATCH 059/454] feat: implement skew protection (#11987) * feat: implement skew protection * format * strict * only set skew protection cookie for document requests * d'oh * simplify * unused * revert now-unneeded change * fix * Update .changeset/slow-drinks-burn.md Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> * fix * add a comment * egregious hack --------- Co-authored-by: Rich Harris Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/slow-drinks-burn.md | 5 ++ .../25-build-and-deploy/90-adapter-vercel.md | 8 ++ packages/adapter-vercel/files/edge.js | 1 + packages/adapter-vercel/index.js | 79 ++++++++++++++----- 4 files changed, 74 insertions(+), 19 deletions(-) create mode 100644 .changeset/slow-drinks-burn.md diff --git a/.changeset/slow-drinks-burn.md b/.changeset/slow-drinks-burn.md new file mode 100644 index 000000000000..c14a938f7368 --- /dev/null +++ b/.changeset/slow-drinks-burn.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-vercel': minor +--- + +feat: implement version skew protection diff --git a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md index 0a6aa44b01ba..4d6ad4fa9aec 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -153,6 +153,14 @@ export function load() { Since all of these variables are unchanged between build time and run time when building on Vercel, we recommend using `$env/static/private` — which will statically replace the variables, enabling optimisations like dead code elimination — rather than `$env/dynamic/private`. +## Skew protection + +When a new version of your app is deployed, assets belonging to the previous version may no longer be accessible. If a user is actively using your app when this happens, it can cause errors when they navigate — this is known as _version skew_. SvelteKit mitigates this by detecting errors resulting from version skew and causing a hard reload to get the latest version of the app, but this will cause any client-side state to be lost. (You can also proactively mitigate it by observing the [`updated`](/docs/modules#$app-stores-updated) store value, which tells clients when a new version has been deployed.) + +[Skew protection](https://vercel.com/docs/deployments/skew-protection) is a Vercel feature that routes client requests to their original deployment. When a user visits your app, a cookie is set with the deployment ID, and any subsequent requests will be routed to that deployment for as long as skew protection is active. When they reload the page, they will get the newest deployment. (The `updated` store is exempted from this behaviour, and so will continue to report new deployments.) To enable it, visit the Advanced section of your project settings on Vercel. + +Cookie-based skew protection comes with one caveat: if a user has multiple versions of your app open in multiple tabs, requests from older versions will be routed to the newer one, meaning they will fall back to SvelteKit's built-in skew protection. + ## Notes ### Vercel functions diff --git a/packages/adapter-vercel/files/edge.js b/packages/adapter-vercel/files/edge.js index ce603b6e3920..9834559a2235 100644 --- a/packages/adapter-vercel/files/edge.js +++ b/packages/adapter-vercel/files/edge.js @@ -12,6 +12,7 @@ const initialized = server.init({ */ export default async (request, context) => { await initialized; + return server.respond(request, { getClientAddress() { return /** @type {string} */ (request.headers.get('x-forwarded-for')); diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index a6d33b515ba1..7506a90d782d 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -58,7 +58,12 @@ const plugin = function (defaults = {}) { functions: `${dir}/functions` }; - const static_config = static_vercel_config(builder, defaults); + builder.log.minor('Copying assets...'); + + builder.writeClient(dirs.static); + builder.writePrerendered(dirs.static); + + const static_config = static_vercel_config(builder, defaults, dirs.static); builder.log.minor('Generating serverless function...'); @@ -368,11 +373,6 @@ const plugin = function (defaults = {}) { // including ISR aliases if there is only one function static_config.routes.push({ src: '/.*', dest: `/${DEFAULT_FUNCTION_NAME}` }); - builder.log.minor('Copying assets...'); - - builder.writeClient(dirs.static); - builder.writePrerendered(dirs.static); - builder.log.minor('Writing routes...'); write(`${dir}/config.json`, JSON.stringify(static_config, null, '\t')); @@ -425,8 +425,9 @@ function write(file, data) { /** * @param {import('@sveltejs/kit').Builder} builder * @param {import('.').Config} config + * @param {string} dir */ -function static_vercel_config(builder, config) { +function static_vercel_config(builder, config, dir) { /** @type {any[]} */ const prerendered_redirects = []; @@ -467,20 +468,60 @@ function static_vercel_config(builder, config) { overrides[page.file] = { path: overrides_path }; } - return { - version: 3, - routes: [ - ...prerendered_redirects, - { - src: `/${builder.getAppPath()}/immutable/.+`, - headers: { - 'cache-control': 'public, immutable, max-age=31536000' + const routes = [ + ...prerendered_redirects, + { + src: `/${builder.getAppPath()}/immutable/.+`, + headers: { + 'cache-control': 'public, immutable, max-age=31536000' + } + } + ]; + + // https://vercel.com/docs/deployments/skew-protection + if (process.env.VERCEL_SKEW_PROTECTION_ENABLED) { + routes.push({ + src: '/.*', + has: [ + { + type: 'header', + key: 'Sec-Fetch-Dest', + value: 'document' } + ], + headers: { + 'Set-Cookie': `__vdpl=${process.env.VERCEL_DEPLOYMENT_ID}; Path=${builder.config.kit.paths.base}/; SameSite=Strict; Secure; HttpOnly` }, - { - handle: 'filesystem' - } - ], + continue: true + }); + + // this is a dreadful hack that is necessary until the Vercel Build Output API + // allows you to set multiple cookies for a single route. essentially, since we + // know that the entry file will be requested immediately, we can set the second + // cookie in _that_ response rather than the document response + const base = `${dir}/${builder.config.kit.appDir}/immutable/entry`; + const entry = fs.readdirSync(base).find((file) => file.startsWith('start.')); + + if (!entry) { + throw new Error('Could not find entry point'); + } + + routes.splice(-2, 0, { + src: `/${builder.getAppPath()}/immutable/entry/${entry}`, + headers: { + 'Set-Cookie': `__vdpl=; Path=/${builder.getAppPath()}/version.json; SameSite=Strict; Secure; HttpOnly` + }, + continue: true + }); + } + + routes.push({ + handle: 'filesystem' + }); + + return { + version: 3, + routes, overrides, images }; From 35e46205b901083250ad333b650d39fe714c4bd1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 10:17:56 -0400 Subject: [PATCH 060/454] Version Packages (#11985) Co-authored-by: github-actions[bot] --- .changeset/hot-clocks-unite.md | 5 ----- .changeset/slow-drinks-burn.md | 5 ----- .changeset/sweet-weeks-pretend.md | 5 ----- packages/adapter-vercel/CHANGELOG.md | 8 ++++++++ packages/adapter-vercel/package.json | 2 +- packages/create-svelte/CHANGELOG.md | 6 ++++++ packages/create-svelte/package.json | 2 +- 7 files changed, 16 insertions(+), 17 deletions(-) delete mode 100644 .changeset/hot-clocks-unite.md delete mode 100644 .changeset/slow-drinks-burn.md delete mode 100644 .changeset/sweet-weeks-pretend.md diff --git a/.changeset/hot-clocks-unite.md b/.changeset/hot-clocks-unite.md deleted file mode 100644 index 91286ba1f203..000000000000 --- a/.changeset/hot-clocks-unite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/adapter-vercel": minor ---- - -feat: add framework metadata in Vercel build output files diff --git a/.changeset/slow-drinks-burn.md b/.changeset/slow-drinks-burn.md deleted file mode 100644 index c14a938f7368..000000000000 --- a/.changeset/slow-drinks-burn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/adapter-vercel': minor ---- - -feat: implement version skew protection diff --git a/.changeset/sweet-weeks-pretend.md b/.changeset/sweet-weeks-pretend.md deleted file mode 100644 index 128821ae1492..000000000000 --- a/.changeset/sweet-weeks-pretend.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"create-svelte": patch ---- - -docs: update comment about path aliases diff --git a/packages/adapter-vercel/CHANGELOG.md b/packages/adapter-vercel/CHANGELOG.md index 0b47bc2c9a9a..328182ed3766 100644 --- a/packages/adapter-vercel/CHANGELOG.md +++ b/packages/adapter-vercel/CHANGELOG.md @@ -1,5 +1,13 @@ # @sveltejs/adapter-vercel +## 5.2.0 + +### Minor Changes + +- feat: add framework metadata in Vercel build output files ([#11800](https://github.com/sveltejs/kit/pull/11800)) + +- feat: implement version skew protection ([#11987](https://github.com/sveltejs/kit/pull/11987)) + ## 5.1.1 ### Patch Changes diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index e5d2f120c6c5..c7aa9af1d437 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-vercel", - "version": "5.1.1", + "version": "5.2.0", "description": "A SvelteKit adapter that creates a Vercel app", "repository": { "type": "git", diff --git a/packages/create-svelte/CHANGELOG.md b/packages/create-svelte/CHANGELOG.md index 5fbfa1ff9bc9..33d1b59aab10 100644 --- a/packages/create-svelte/CHANGELOG.md +++ b/packages/create-svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # create-svelte +## 6.0.10 + +### Patch Changes + +- docs: update comment about path aliases ([#11788](https://github.com/sveltejs/kit/pull/11788)) + ## 6.0.9 ### Patch Changes diff --git a/packages/create-svelte/package.json b/packages/create-svelte/package.json index a7a77a87b44a..2e98a6883383 100644 --- a/packages/create-svelte/package.json +++ b/packages/create-svelte/package.json @@ -1,6 +1,6 @@ { "name": "create-svelte", - "version": "6.0.9", + "version": "6.0.10", "description": "A CLI for creating new SvelteKit projects", "repository": { "type": "git", From 7d746377b3a8d1732cf9577ed6cc683673259de2 Mon Sep 17 00:00:00 2001 From: Simon Green Date: Fri, 22 Mar 2024 11:07:58 -0600 Subject: [PATCH 061/454] docs: correct mistake on database setup guide (#12019) --- documentation/docs/60-appendix/10-faq.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/60-appendix/10-faq.md b/documentation/docs/60-appendix/10-faq.md index 934924a6ec37..c566fff8f9ac 100644 --- a/documentation/docs/60-appendix/10-faq.md +++ b/documentation/docs/60-appendix/10-faq.md @@ -91,7 +91,7 @@ Make sure you've read the [documentation section on integrations](./integrations ### How do I setup a database? -Put the code to query your database in a [server route](./routing#server) - don't query the database in .svelte files. You can create a `db.js` or similar that sets up a connection immediately and makes the client accessible throughout the app as a singleton. You can execute any one-time setup code in `hooks.js` and import your database helpers into any endpoint that needs them. +Put the code to query your database in a [server route](./routing#server) - don't query the database in .svelte files. You can create a `db.js` or similar that sets up a connection immediately and makes the client accessible throughout the app as a singleton. You can execute any one-time setup code in `hooks.server.js` and import your database helpers into any endpoint that needs them. ### How do I use a client-side only library that depends on `document` or `window`? From 4b999c8cfd4e3459ca005296428c56de24247097 Mon Sep 17 00:00:00 2001 From: Sandro Bauer <12230153+Sandr0x00@users.noreply.github.com> Date: Mon, 25 Mar 2024 02:54:52 +0100 Subject: [PATCH 062/454] docs: fix custom server link in adapter-node compressing responses section (#12033) --- documentation/docs/25-build-and-deploy/40-adapter-node.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/25-build-and-deploy/40-adapter-node.md b/documentation/docs/25-build-and-deploy/40-adapter-node.md index 6c570289788e..41be8063af1b 100644 --- a/documentation/docs/25-build-and-deploy/40-adapter-node.md +++ b/documentation/docs/25-build-and-deploy/40-adapter-node.md @@ -36,7 +36,7 @@ Development dependencies will be bundled into your app using [Rollup](https://ro You will typically want to compress responses coming from the server. If you are already deploying your server behind a reverse proxy for SSL or load balancing, it typically results in better performance to also handle compression at that layer since Node.js is single-threaded. -However, if you're building a [#custom-server](custom server) and do want to add a compression middleware there, note that we would recommend using [`@polka/compression`](https://www.npmjs.com/package/@polka/compression) since SvelteKit streams responses and the more popular `compression` package does not support streaming and may cause errors when used. +However, if you're building a [custom server](#custom-server) and do want to add a compression middleware there, note that we would recommend using [`@polka/compression`](https://www.npmjs.com/package/@polka/compression) since SvelteKit streams responses and the more popular `compression` package does not support streaming and may cause errors when used. ## Environment variables From e934685c60403e39e350cf22b6283e8cfbf1c3a5 Mon Sep 17 00:00:00 2001 From: Luke Schlangen Date: Tue, 26 Mar 2024 20:27:13 -0500 Subject: [PATCH 063/454] feat: support Google Cloud in adapter-auto (#12015) --- .changeset/young-dolls-exist.md | 5 +++++ documentation/docs/25-build-and-deploy/30-adapter-auto.md | 1 + packages/adapter-auto/adapters.js | 6 ++++++ 3 files changed, 12 insertions(+) create mode 100644 .changeset/young-dolls-exist.md diff --git a/.changeset/young-dolls-exist.md b/.changeset/young-dolls-exist.md new file mode 100644 index 000000000000..2a13d0b8cc46 --- /dev/null +++ b/.changeset/young-dolls-exist.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/adapter-auto": minor +--- + +feat: add support for Google Cloud Run diff --git a/documentation/docs/25-build-and-deploy/30-adapter-auto.md b/documentation/docs/25-build-and-deploy/30-adapter-auto.md index 78f3ab5225f4..9c94b40e5cc2 100644 --- a/documentation/docs/25-build-and-deploy/30-adapter-auto.md +++ b/documentation/docs/25-build-and-deploy/30-adapter-auto.md @@ -9,6 +9,7 @@ When you create a new SvelteKit project with `npm create svelte@latest`, it inst - [`@sveltejs/adapter-vercel`](adapter-vercel) for [Vercel](https://vercel.com/) - [`svelte-adapter-azure-swa`](https://github.com/geoffrich/svelte-adapter-azure-swa) for [Azure Static Web Apps](https://docs.microsoft.com/en-us/azure/static-web-apps/) - [`svelte-kit-sst`](https://github.com/sst/sst/tree/master/packages/svelte-kit-sst) for [AWS via SST](https://docs.sst.dev/start/svelte) +- [`@sveltejs/adapter-node`](https://kit.svelte.dev/docs/adapter-node) for [Google Cloud Run](https://cloud.google.com/run) It's recommended to install the appropriate adapter to your `devDependencies` once you've settled on a target environment, since this will add the adapter to your lockfile and slightly improve install times on CI. diff --git a/packages/adapter-auto/adapters.js b/packages/adapter-auto/adapters.js index 07a996ff7168..040876900506 100644 --- a/packages/adapter-auto/adapters.js +++ b/packages/adapter-auto/adapters.js @@ -30,5 +30,11 @@ export const adapters = [ test: () => !!process.env.SST, module: 'svelte-kit-sst', version: '2' + }, + { + name: 'Google Cloud Run', + test: () => !!process.env.GCP_BUILDPACKS, + module: '@sveltejs/adapter-node', + version: '5' } ]; From f685af921ff4b00fa0203ad497e4eaa49f596b87 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 06:14:17 -0700 Subject: [PATCH 064/454] Version Packages (#12042) Co-authored-by: github-actions[bot] --- .changeset/young-dolls-exist.md | 5 ----- packages/adapter-auto/CHANGELOG.md | 6 ++++++ packages/adapter-auto/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/young-dolls-exist.md diff --git a/.changeset/young-dolls-exist.md b/.changeset/young-dolls-exist.md deleted file mode 100644 index 2a13d0b8cc46..000000000000 --- a/.changeset/young-dolls-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/adapter-auto": minor ---- - -feat: add support for Google Cloud Run diff --git a/packages/adapter-auto/CHANGELOG.md b/packages/adapter-auto/CHANGELOG.md index 116fbca6b29c..4f5321d3caea 100644 --- a/packages/adapter-auto/CHANGELOG.md +++ b/packages/adapter-auto/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/adapter-auto +## 3.2.0 + +### Minor Changes + +- feat: add support for Google Cloud Run ([#12015](https://github.com/sveltejs/kit/pull/12015)) + ## 3.1.1 ### Patch Changes diff --git a/packages/adapter-auto/package.json b/packages/adapter-auto/package.json index 19d698513d41..5146b15d17b0 100644 --- a/packages/adapter-auto/package.json +++ b/packages/adapter-auto/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-auto", - "version": "3.1.1", + "version": "3.2.0", "description": "Automatically chooses the SvelteKit adapter for your current environment, if possible.", "repository": { "type": "git", From f1a2133ada07684b3d82e3bd950b48ae8909728e Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 28 Mar 2024 13:31:25 -0400 Subject: [PATCH 065/454] skip hydrate if ssr: false (#12050) * skip hydrate if ssr: false * changeset --- .changeset/sweet-otters-glow.md | 5 +++++ packages/kit/src/runtime/client/client.js | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 .changeset/sweet-otters-glow.md diff --git a/.changeset/sweet-otters-glow.md b/.changeset/sweet-otters-glow.md new file mode 100644 index 000000000000..9a3bd007bb61 --- /dev/null +++ b/.changeset/sweet-otters-glow.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: only hydrate when page is server-rendered diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 69e3a61b44ab..d39f3edbcf6e 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -419,8 +419,9 @@ async function _preload_code(pathname) { /** * @param {import('./types.js').NavigationFinished} result * @param {HTMLElement} target + * @param {boolean} hydrate */ -function initialize(result, target) { +function initialize(result, target, hydrate) { if (DEV && result.state.error && document.querySelector('vite-error-overlay')) return; current = result.state; @@ -433,7 +434,7 @@ function initialize(result, target) { root = new app.root({ target, props: { ...result.props, stores, components }, - hydrate: true + hydrate }); restore_snapshot(current_navigation_index); @@ -1406,7 +1407,7 @@ async function navigate({ root.$set(navigation_result.props); has_navigated = true; } else { - initialize(navigation_result, target); + initialize(navigation_result, target, false); } const { activeElement } = document; @@ -2382,7 +2383,7 @@ async function _hydrate( result.props.page.state = {}; } - initialize(result, target); + initialize(result, target, true); } /** From 80386437030c5c79913e859e3c32fd194613e1b6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 Mar 2024 13:34:49 -0400 Subject: [PATCH 066/454] Version Packages (#12051) Co-authored-by: github-actions[bot] --- .changeset/sweet-otters-glow.md | 5 ----- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .changeset/sweet-otters-glow.md diff --git a/.changeset/sweet-otters-glow.md b/.changeset/sweet-otters-glow.md deleted file mode 100644 index 9a3bd007bb61..000000000000 --- a/.changeset/sweet-otters-glow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: only hydrate when page is server-rendered diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index fff4aa882bc7..0e2b7819d7d6 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.5.5 + +### Patch Changes + +- fix: only hydrate when page is server-rendered ([#12050](https://github.com/sveltejs/kit/pull/12050)) + ## 2.5.4 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 05e2bb9ab708..ecbe1b46ad09 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.5.4", + "version": "2.5.5", "description": "The fastest way to build Svelte apps", "repository": { "type": "git", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index ce6b81dc26bd..d5932b8d1a9c 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.5.4'; +export const VERSION = '2.5.5'; From af18abeb4cefe6df5f88b0e1faa8df8eb2247c99 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 29 Mar 2024 08:14:44 -0700 Subject: [PATCH 067/454] chore(deps): upgrade vite-imagetools to v7 (#12055) --- .changeset/weak-seas-approve.md | 5 +++++ .../docs/40-best-practices/07-images.md | 3 ++- packages/enhanced-img/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 4 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 .changeset/weak-seas-approve.md diff --git a/.changeset/weak-seas-approve.md b/.changeset/weak-seas-approve.md new file mode 100644 index 000000000000..555d763e105a --- /dev/null +++ b/.changeset/weak-seas-approve.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/enhanced-img": minor +--- + +chore(deps): upgrade vite-imagetools to v7 diff --git a/documentation/docs/40-best-practices/07-images.md b/documentation/docs/40-best-practices/07-images.md index bc2811b05802..876b95bd576b 100644 --- a/documentation/docs/40-best-practices/07-images.md +++ b/documentation/docs/40-best-practices/07-images.md @@ -51,6 +51,8 @@ export default defineConfig({ }); ``` +Building will take longer on the first build due to the computational expense of transforming images. However, the build output will be cached in `./node_modules/.cache/imagetools` so that subsequent builds will be fast. + ### Basic usage Use in your `.svelte` components by using `` rather than `` and referencing the image file with a [Vite asset import](https://vitejs.dev/guide/assets.html#static-asset-handling) path: @@ -151,4 +153,3 @@ CDNs can generally be used without any need for a library. However, there are a - Give the image a container or styling so that it is constrained and does not jump around while the page is loading affecting your [cumulative layout shift (CLS)](https://web.dev/articles/cls). `width` and `height` help the browser to reserve space while the image is still loading, so `@sveltejs/enhanced-img` will add a `width` and `height` for you. - Always provide a good `alt` text. The Svelte compiler will warn you if you don't do this. - Do not use `em` or `rem` in `sizes` and change the default size of these measures. When used in `sizes` or `@media` queries, `em` and `rem` are both defined to mean the user's default `font-size`. For a `sizes` declaration like `sizes="(min-width: 768px) min(100vw, 108rem), 64rem"`, the actual `em` or `rem` that controls how the image is laid out on the page can be different if changed by CSS. For example, do not do something like `html { font-size: 62.5%; }` as the slot reserved by the browser preloader will now end up being larger than the actual slot of the CSS object model once it has been created. - diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 1abacbef5347..c151dc104c98 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -28,7 +28,7 @@ "dependencies": { "magic-string": "^0.30.5", "svelte-parse-markup": "^0.1.2", - "vite-imagetools": "^6.2.8" + "vite-imagetools": "^7.0.0" }, "devDependencies": { "@types/estree": "^1.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87d40612162f..a522a03acf57 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -380,8 +380,8 @@ importers: specifier: ^0.1.2 version: 0.1.2(svelte@4.2.10) vite-imagetools: - specifier: ^6.2.8 - version: 6.2.9(rollup@4.9.6) + specifier: ^7.0.0 + version: 7.0.0(rollup@4.9.6) devDependencies: '@types/estree': specifier: ^1.0.5 @@ -4582,9 +4582,9 @@ packages: engines: {node: '>= 4'} dev: true - /imagetools-core@6.0.4: - resolution: {integrity: sha512-N1qs5qn7u9nR3kboISkYuvJm8MohiphCfBa+wx1UOropVaFis9/mh6wuDPLHJNhl6/64C7q2Pch5NASVKAaSrg==} - engines: {node: '>=12.0.0'} + /imagetools-core@7.0.0: + resolution: {integrity: sha512-6fYbD7u4VIOt6fqKrOlbF77JXgUVyUmEJIPlfYVTuR/S2Ig9cX3gukGiLEU0aSetcfE7CYnhLTPtTEu4mLwhCw==} + engines: {node: '>=18.0.0'} dependencies: sharp: 0.33.2 dev: false @@ -6936,12 +6936,12 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-imagetools@6.2.9(rollup@4.9.6): - resolution: {integrity: sha512-C4ZYhgj2vAj43/TpZ06XlDNP0p/7LIeYbgUYr+xG44nM++4HGX6YZBKAYpiBNgiCFUTJ6eXkRppWBrfPMevgmg==} - engines: {node: '>=12.0.0'} + /vite-imagetools@7.0.0(rollup@4.9.6): + resolution: {integrity: sha512-RNCW15Z/m5Y6HJROH8F7yQsqAy1//aJwIQI4Rffaf5rXJCrx/YPO0FV71w95rH6rmNW0S40gttXnd+zPx4m3rQ==} + engines: {node: '>=18.0.0'} dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.9.6) - imagetools-core: 6.0.4 + imagetools-core: 7.0.0 transitivePeerDependencies: - rollup dev: false From 335104713e89536cc3f9a1675d0cae622b9c86db Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 29 Mar 2024 08:15:06 -0700 Subject: [PATCH 068/454] docs: highlight that enhanced-img only works with local files (#12058) --- documentation/docs/40-best-practices/07-images.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/documentation/docs/40-best-practices/07-images.md b/documentation/docs/40-best-practices/07-images.md index 876b95bd576b..4624ce62447f 100644 --- a/documentation/docs/40-best-practices/07-images.md +++ b/documentation/docs/40-best-practices/07-images.md @@ -24,9 +24,11 @@ Doing this manually is tedious. There are a variety of techniques you can use, d ## @sveltejs/enhanced-img -> **WARNING**: The `@sveltejs/enhanced-img` package is experimental. It uses pre-1.0 versioning and may introduce breaking changes with every minor version release. +`@sveltejs/enhanced-img` is a plugin offered on top of Vite's built-in asset handling. It provides plug and play image processing that serves smaller file formats like `avif` or `webp`, automatically sets the intrinsic `width` and `height` of the image to avoid layout shift, creates images of multiple sizes for various devices, and strips EXIF data for privacy. It will work in any Vite-based project including, but not limited to, SvelteKit projects. -`@sveltejs/enhanced-img` builds on top of Vite's built-in asset handling. It offers plug and play image processing that serves smaller file formats like `avif` or `webp`, automatically sets the intrinsic `width` and `height` of the image to avoid layout shift, creates images of multiple sizes for various devices, and strips EXIF data for privacy. It will work in any Vite-based project including, but not limited to, SvelteKit projects. +> As a build plugin, `@sveltejs/enhanced-img` can only optimize files located on your machine during the build process. If you have an image located elsewhere (such as a path served from your database, CMS, or backend), please read about [loading images dynamically from a CDN](#loading-images-dynamically-from-a-cdn). +> +> **WARNING**: The `@sveltejs/enhanced-img` package is experimental. It uses pre-1.0 versioning and may introduce breaking changes with every minor version release. ### Setup From 8658603cb1e02674c2e85740148f51111f8b9c78 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sun, 31 Mar 2024 08:17:12 -0700 Subject: [PATCH 069/454] fix: upgrade vite-imagetools to 7.0.1 --- .changeset/weak-seas-approve.md | 2 +- packages/enhanced-img/package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.changeset/weak-seas-approve.md b/.changeset/weak-seas-approve.md index 555d763e105a..3dca0773e6b9 100644 --- a/.changeset/weak-seas-approve.md +++ b/.changeset/weak-seas-approve.md @@ -2,4 +2,4 @@ "@sveltejs/enhanced-img": minor --- -chore(deps): upgrade vite-imagetools to v7 +feat: upgrade vite-imagetools to v7. caches build output by default diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index c151dc104c98..4eadd9584ede 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -28,7 +28,7 @@ "dependencies": { "magic-string": "^0.30.5", "svelte-parse-markup": "^0.1.2", - "vite-imagetools": "^7.0.0" + "vite-imagetools": "^7.0.1" }, "devDependencies": { "@types/estree": "^1.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a522a03acf57..ee2c830c6685 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -380,8 +380,8 @@ importers: specifier: ^0.1.2 version: 0.1.2(svelte@4.2.10) vite-imagetools: - specifier: ^7.0.0 - version: 7.0.0(rollup@4.9.6) + specifier: ^7.0.1 + version: 7.0.1(rollup@4.9.6) devDependencies: '@types/estree': specifier: ^1.0.5 @@ -6936,8 +6936,8 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-imagetools@7.0.0(rollup@4.9.6): - resolution: {integrity: sha512-RNCW15Z/m5Y6HJROH8F7yQsqAy1//aJwIQI4Rffaf5rXJCrx/YPO0FV71w95rH6rmNW0S40gttXnd+zPx4m3rQ==} + /vite-imagetools@7.0.1(rollup@4.9.6): + resolution: {integrity: sha512-23jnLhkTH0HR9Vd9LxMYnajOLeo0RJNEAHhtlsQP6kfPuOBoTzt54rWbEWB9jmhEXAOflLQpM+FrmilVPAoyGA==} engines: {node: '>=18.0.0'} dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.9.6) From f1e73c2fe54280d254a1bdfba430a678f4db527a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 31 Mar 2024 08:43:35 -0700 Subject: [PATCH 070/454] Version Packages (#12059) Co-authored-by: github-actions[bot] --- .changeset/weak-seas-approve.md | 5 ----- packages/enhanced-img/CHANGELOG.md | 6 ++++++ packages/enhanced-img/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/weak-seas-approve.md diff --git a/.changeset/weak-seas-approve.md b/.changeset/weak-seas-approve.md deleted file mode 100644 index 3dca0773e6b9..000000000000 --- a/.changeset/weak-seas-approve.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/enhanced-img": minor ---- - -feat: upgrade vite-imagetools to v7. caches build output by default diff --git a/packages/enhanced-img/CHANGELOG.md b/packages/enhanced-img/CHANGELOG.md index 55857577b993..3a8aecc606a9 100644 --- a/packages/enhanced-img/CHANGELOG.md +++ b/packages/enhanced-img/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/enhanced-img +## 0.2.0 + +### Minor Changes + +- feat: upgrade vite-imagetools to v7. caches build output by default ([#12055](https://github.com/sveltejs/kit/pull/12055)) + ## 0.1.9 ### Patch Changes diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 4eadd9584ede..9618bdef5a73 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/enhanced-img", - "version": "0.1.9", + "version": "0.2.0", "description": "Image optimization for your Svelte apps", "repository": { "type": "git", From 38294bef6ae347b2153aea9f9f56bed025a0cebd Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 1 Apr 2024 17:31:25 -0700 Subject: [PATCH 071/454] chore: address vite warning (#12066) --- sites/kit.svelte.dev/src/lib/server/docs/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sites/kit.svelte.dev/src/lib/server/docs/index.js b/sites/kit.svelte.dev/src/lib/server/docs/index.js index a04cb4de686c..d53c5a235584 100644 --- a/sites/kit.svelte.dev/src/lib/server/docs/index.js +++ b/sites/kit.svelte.dev/src/lib/server/docs/index.js @@ -13,12 +13,14 @@ import { read } from '$app/server'; import { error } from '@sveltejs/kit'; const meta = import.meta.glob('../../../../../../documentation/docs/*/meta.json', { - as: 'url', + query: '?url', + import: 'default', eager: true }); const markdown = import.meta.glob('../../../../../../documentation/docs/*/*.md', { - as: 'url', + query: '?url', + import: 'default', eager: true }); From d3a9095689622eb320774fbc4f38b2e5935e6f09 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 09:18:11 -0700 Subject: [PATCH 072/454] chore(deps): update pnpm to v8.15.6 (#12068) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd91a7ab3086..fa5bb98a0856 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "eslint-plugin-unicorn": "^51.0.1", "playwright": "^1.41.0" }, - "packageManager": "pnpm@8.15.5", + "packageManager": "pnpm@8.15.6", "engines": { "pnpm": "^8.0.0" } From df6641a701f8155d7023ab6a5b17ef39df31d730 Mon Sep 17 00:00:00 2001 From: Rahim Alwer Date: Thu, 4 Apr 2024 00:08:06 +1100 Subject: [PATCH 073/454] fix: add `workerd` to esbuild conditions (#12069) * fix: add `workerd` condition to cloudflare worker build * Update packages/adapter-cloudflare/index.js Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> * Update packages/adapter-cloudflare-workers/index.js Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> * Update .changeset/popular-chairs-pull.md --------- Co-authored-by: Tee Ming Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/popular-chairs-pull.md | 6 ++++++ packages/adapter-cloudflare-workers/index.js | 3 ++- packages/adapter-cloudflare/index.js | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .changeset/popular-chairs-pull.md diff --git a/.changeset/popular-chairs-pull.md b/.changeset/popular-chairs-pull.md new file mode 100644 index 000000000000..570883ee0184 --- /dev/null +++ b/.changeset/popular-chairs-pull.md @@ -0,0 +1,6 @@ +--- +"@sveltejs/adapter-cloudflare-workers": patch +"@sveltejs/adapter-cloudflare": patch +--- + +fix: add `workerd` to esbuild conditions diff --git a/packages/adapter-cloudflare-workers/index.js b/packages/adapter-cloudflare-workers/index.js index f9237e44dbb7..40962940bea3 100644 --- a/packages/adapter-cloudflare-workers/index.js +++ b/packages/adapter-cloudflare-workers/index.js @@ -86,7 +86,8 @@ export default function ({ config = 'wrangler.toml' } = {}) { try { const result = await esbuild.build({ platform: 'browser', - conditions: ['worker', 'browser'], + // https://github.com/cloudflare/workers-sdk/blob/a12b2786ce745f24475174bcec994ad691e65b0f/packages/wrangler/src/deployment-bundle/bundle.ts#L35-L36 + conditions: ['workerd', 'worker', 'browser'], sourcemap: 'linked', target: 'es2022', entryPoints: [`${tmp}/entry.js`], diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 16adc5f88e72..30603c50030e 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -74,7 +74,8 @@ export default function (options = {}) { try { const result = await esbuild.build({ platform: 'browser', - conditions: ['worker', 'browser'], + // https://github.com/cloudflare/workers-sdk/blob/a12b2786ce745f24475174bcec994ad691e65b0f/packages/wrangler/src/deployment-bundle/bundle.ts#L35-L36 + conditions: ['workerd', 'worker', 'browser'], sourcemap: 'linked', target: 'es2022', entryPoints: [`${tmp}/_worker.js`], From 5ecf75c7eae136029c2777f03ada4bb4ba9436d3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Apr 2024 09:02:31 -0700 Subject: [PATCH 074/454] chore(deps): update dependency eslint-plugin-unicorn to v52 (#12077) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index fa5bb98a0856..abfc8243f69c 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.35.1", - "eslint-plugin-unicorn": "^51.0.1", + "eslint-plugin-unicorn": "^52.0.0", "playwright": "^1.41.0" }, "packageManager": "pnpm@8.15.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee2c830c6685..3bf10d133c62 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 2.27.1 '@sveltejs/eslint-config': specifier: ^6.0.4 - version: 6.0.4(@typescript-eslint/eslint-plugin@7.0.1)(@typescript-eslint/parser@7.0.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@51.0.1)(eslint@8.56.0)(typescript@5.3.3) + version: 6.0.4(@typescript-eslint/eslint-plugin@7.0.1)(@typescript-eslint/parser@7.0.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@52.0.0)(eslint@8.56.0)(typescript@5.3.3) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 @@ -30,8 +30,8 @@ importers: specifier: ^2.35.1 version: 2.35.1(eslint@8.56.0) eslint-plugin-unicorn: - specifier: ^51.0.1 - version: 51.0.1(eslint@8.56.0) + specifier: ^52.0.0 + version: 52.0.0(eslint@8.56.0) playwright: specifier: ^1.41.0 version: 1.41.2 @@ -2590,7 +2590,7 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@7.0.1)(@typescript-eslint/parser@7.0.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@51.0.1)(eslint@8.56.0)(typescript@5.3.3): + /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@7.0.1)(@typescript-eslint/parser@7.0.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@52.0.0)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-U9pwmDs+DbmsnCgTfu6Bacdwqn0DuI1IQNSiQqTgzVyYfaaj+zy9ZoQCiJfxFBGXHkklyXuRHp0KMx346N0lcQ==} peerDependencies: '@typescript-eslint/eslint-plugin': '>= 5' @@ -2606,7 +2606,7 @@ packages: eslint: 8.56.0 eslint-config-prettier: 9.1.0(eslint@8.56.0) eslint-plugin-svelte: 2.35.1(eslint@8.56.0) - eslint-plugin-unicorn: 51.0.1(eslint@8.56.0) + eslint-plugin-unicorn: 52.0.0(eslint@8.56.0) typescript: 5.3.3 dev: true @@ -3983,8 +3983,8 @@ packages: - ts-node dev: true - /eslint-plugin-unicorn@51.0.1(eslint@8.56.0): - resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==} + /eslint-plugin-unicorn@52.0.0(eslint@8.56.0): + resolution: {integrity: sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.56.0' From a84d9b3d1a1db18f7df421d9f6b7f81943b82bbf Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Thu, 4 Apr 2024 20:30:02 +0100 Subject: [PATCH 075/454] fix: don't strip `lang="ts"` tag in Svelte 5 (#12080) * fix: don't strip `lang="ts"` tag in Svelte 5 closes https://github.com/sveltejs/svelte/issues/10766 * rename parameters --------- Co-authored-by: Rich Harris --- .changeset/loud-pens-mate.md | 5 +++++ packages/package/src/utils.js | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 .changeset/loud-pens-mate.md diff --git a/.changeset/loud-pens-mate.md b/.changeset/loud-pens-mate.md new file mode 100644 index 000000000000..36e6f03dcfca --- /dev/null +++ b/.changeset/loud-pens-mate.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/package": patch +--- + +fix: don't strip `lang="ts"` tag in Svelte 5 diff --git a/packages/package/src/utils.js b/packages/package/src/utils.js index 39012a6f1779..0c5f25736620 100644 --- a/packages/package/src/utils.js +++ b/packages/package/src/utils.js @@ -1,7 +1,10 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; +import { VERSION } from 'svelte/compiler'; import { posixify, mkdirp, walk } from './filesystem.js'; +const is_svelte_5_plus = Number(VERSION.split('.')[0]) >= 5; + /** * Resolves aliases * @@ -45,8 +48,13 @@ export function strip_lang_tags(content) { return content .replace( /()|(]*?)\s(?:type|lang)=(["'])(.*?)\3/g, - // things like application/ld+json should be kept as-is. Preprocessed languages are "ts" etc - (match, s1, s2, _, s4) => (s4?.startsWith('application/') ? match : (s1 ?? '') + (s2 ?? '')) + // Things like application/ld+json should be kept as-is. Preprocessed languages are "ts" etc. + // Svelte 5 deals with TypeScript natively, and in the template, too, therefore keep it in. + // Not removing it would mean Svelte parses without its TS plugin and then runs into errors. + (match, comment, tag_open, _, type) => + type?.startsWith('application/') || (is_svelte_5_plus && type === 'ts') + ? match + : (comment ?? '') + (tag_open ?? '') ) .replace(/()|(]*?)\s(?:type|lang)=(["']).*?\3/g, '$1$2'); } From 41b7ae9be2dcfc5a9750190e1f837c20019d48c6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 4 Apr 2024 15:31:25 -0400 Subject: [PATCH 076/454] Version Packages (#12074) Co-authored-by: github-actions[bot] --- .changeset/loud-pens-mate.md | 5 ----- .changeset/popular-chairs-pull.md | 6 ------ packages/adapter-cloudflare-workers/CHANGELOG.md | 6 ++++++ packages/adapter-cloudflare-workers/package.json | 2 +- packages/adapter-cloudflare/CHANGELOG.md | 6 ++++++ packages/adapter-cloudflare/package.json | 2 +- packages/package/CHANGELOG.md | 6 ++++++ packages/package/package.json | 2 +- 8 files changed, 21 insertions(+), 14 deletions(-) delete mode 100644 .changeset/loud-pens-mate.md delete mode 100644 .changeset/popular-chairs-pull.md diff --git a/.changeset/loud-pens-mate.md b/.changeset/loud-pens-mate.md deleted file mode 100644 index 36e6f03dcfca..000000000000 --- a/.changeset/loud-pens-mate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/package": patch ---- - -fix: don't strip `lang="ts"` tag in Svelte 5 diff --git a/.changeset/popular-chairs-pull.md b/.changeset/popular-chairs-pull.md deleted file mode 100644 index 570883ee0184..000000000000 --- a/.changeset/popular-chairs-pull.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sveltejs/adapter-cloudflare-workers": patch -"@sveltejs/adapter-cloudflare": patch ---- - -fix: add `workerd` to esbuild conditions diff --git a/packages/adapter-cloudflare-workers/CHANGELOG.md b/packages/adapter-cloudflare-workers/CHANGELOG.md index b9a2ec9fa3ea..f88e6c1ba320 100644 --- a/packages/adapter-cloudflare-workers/CHANGELOG.md +++ b/packages/adapter-cloudflare-workers/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/adapter-cloudflare-workers +## 2.2.1 + +### Patch Changes + +- fix: add `workerd` to esbuild conditions ([#12069](https://github.com/sveltejs/kit/pull/12069)) + ## 2.2.0 ### Minor Changes diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index ff42d4285d30..74aee17b83ac 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare-workers", - "version": "2.2.0", + "version": "2.2.1", "description": "SvelteKit adapter that creates a Cloudflare Workers site using a function for dynamic server rendering", "repository": { "type": "git", diff --git a/packages/adapter-cloudflare/CHANGELOG.md b/packages/adapter-cloudflare/CHANGELOG.md index c02352f57c77..52b085ffa499 100644 --- a/packages/adapter-cloudflare/CHANGELOG.md +++ b/packages/adapter-cloudflare/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/adapter-cloudflare +## 4.2.1 + +### Patch Changes + +- fix: add `workerd` to esbuild conditions ([#12069](https://github.com/sveltejs/kit/pull/12069)) + ## 4.2.0 ### Minor Changes diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 833a0af97c00..7af46e90ce70 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare", - "version": "4.2.0", + "version": "4.2.1", "description": "Adapter for building SvelteKit applications on Cloudflare Pages with Workers integration", "repository": { "type": "git", diff --git a/packages/package/CHANGELOG.md b/packages/package/CHANGELOG.md index e370f7f29394..ad5d7d92db32 100644 --- a/packages/package/CHANGELOG.md +++ b/packages/package/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/package +## 2.3.1 + +### Patch Changes + +- fix: don't strip `lang="ts"` tag in Svelte 5 ([#12080](https://github.com/sveltejs/kit/pull/12080)) + ## 2.3.0 ### Minor Changes diff --git a/packages/package/package.json b/packages/package/package.json index 056e46430bab..0f6d39d23677 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/package", - "version": "2.3.0", + "version": "2.3.1", "description": "The fastest way to build Svelte packages", "repository": { "type": "git", From f80ba75dfd967fb9d28d705d6891933bab603dc9 Mon Sep 17 00:00:00 2001 From: Quang Phan Date: Mon, 8 Apr 2024 22:16:06 +0700 Subject: [PATCH 077/454] feat: add `platformProxy` option to configure `getPlatformProxy` (#12011) * feat: allow passing config to getPlatformProxy via platformProxy option * remove platformProxy default value * Update packages/adapter-cloudflare-workers/index.js * Update 60-adapter-cloudflare.md * Update 60-adapter-cloudflare.md * Update 70-adapter-cloudflare-workers.md * Update index.d.ts * Update packages/adapter-cloudflare-workers/index.d.ts * Update packages/adapter-cloudflare-workers/index.js * Update documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md * Update documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md * Update documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md * Update documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md * Update 60-adapter-cloudflare.md * Update documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md * Update documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md --------- Co-authored-by: Tee Ming --- .changeset/tough-dolphins-kick.md | 6 ++++ .../60-adapter-cloudflare.md | 15 +++++++-- .../70-adapter-cloudflare-workers.md | 33 ++++++++++--------- .../adapter-cloudflare-workers/index.d.ts | 6 ++++ packages/adapter-cloudflare-workers/index.js | 4 +-- packages/adapter-cloudflare/index.d.ts | 9 ++++- packages/adapter-cloudflare/index.js | 2 +- 7 files changed, 53 insertions(+), 22 deletions(-) create mode 100644 .changeset/tough-dolphins-kick.md diff --git a/.changeset/tough-dolphins-kick.md b/.changeset/tough-dolphins-kick.md new file mode 100644 index 000000000000..7f08d35ed8a0 --- /dev/null +++ b/.changeset/tough-dolphins-kick.md @@ -0,0 +1,6 @@ +--- +"@sveltejs/adapter-cloudflare-workers": minor +"@sveltejs/adapter-cloudflare": minor +--- + +feat: support platform emulation configuration via the `platformProxy` adapter option diff --git a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md index d819350a1d05..a41e4b422a96 100644 --- a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md +++ b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md @@ -28,7 +28,10 @@ export default { routes: { include: ['/*'], exclude: [''] - } + }, + platformProxy: { + persist: './your-custom-path' + } }) } }; @@ -36,7 +39,9 @@ export default { ## Options -The `routes` option allows you to customise the [`_routes.json`](https://developers.cloudflare.com/pages/platform/functions/routing/#create-a-_routesjson-file) file generated by `adapter-cloudflare`. +### routes + +Allows you to customise the [`_routes.json`](https://developers.cloudflare.com/pages/platform/functions/routing/#create-a-_routesjson-file) file generated by `adapter-cloudflare`. - `include` defines routes that will invoke a function, and defaults to `['/*']` - `exclude` defines routes that will _not_ invoke a function — this is a faster and cheaper way to serve your app's static assets. This array can include the following special values: @@ -47,6 +52,10 @@ The `routes` option allows you to customise the [`_routes.json`](https://develop You can have up to 100 `include` and `exclude` rules combined. Generally you can omit the `routes` options, but if (for example) your `` paths exceed that limit, you may find it helpful to manually create an `exclude` list that includes `'/articles/*'` instead of the auto-generated `['/articles/foo', '/articles/bar', '/articles/baz', ...]`. +### platformProxy + +Preferences for the emulated `platform.env` local bindings. See the [getPlatformProxy](https://developers.cloudflare.com/workers/wrangler/api/#syntax) Wrangler API documentation for a full list of options. + ## Deployment Please follow the [Get Started Guide](https://developers.cloudflare.com/pages/get-started) for Cloudflare Pages to begin. @@ -90,7 +99,7 @@ export {}; ### Testing Locally -Cloudflare Workers specific values in the `platform` property are emulated during dev and preview modes. Local [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) are created based on the configuration in your `wrangler.toml` file and are used to populate `platform.env` during development. +Cloudflare Workers specific values in the `platform` property are emulated during dev and preview modes. Local [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) are created based on the configuration in your `wrangler.toml` file and are used to populate `platform.env` during development and preview. Use the adapter config [`platformProxy` option](#options-platformproxy) to change your preferences for the bindings. For testing the build, you should use [wrangler](https://developers.cloudflare.com/workers/cli-wrangler) **version 3**. Once you have built your site, run `wrangler pages dev .svelte-kit/cloudflare`. diff --git a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md index eba4d9556c7d..0d1c29f3c947 100644 --- a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md +++ b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md @@ -17,11 +17,26 @@ import adapter from '@sveltejs/adapter-cloudflare-workers'; export default { kit: { - adapter: adapter() + adapter: adapter({ + config: '.toml', + platformProxy: { + persist: './your-custom-path' + } + }) } }; ``` +## Options + +### config + +Path to your custom `wrangler.toml` config file. + +### platformProxy + +Preferences for the emulated `platform.env` local bindings. See the [getPlatformProxy](https://developers.cloudflare.com/workers/wrangler/api/#syntax) Wrangler API documentation for a full list of options. + ## Basic Configuration This adapter expects to find a [wrangler.toml](https://developers.cloudflare.com/workers/platform/sites/configuration) file in the project root. It should look something like this: @@ -63,19 +78,7 @@ wrangler deploy ## Custom config -If you would like to use a config file other than `wrangler.toml`, you can do like so: - -```js -// @errors: 2307 -/// file: svelte.config.js -import adapter from '@sveltejs/adapter-cloudflare-workers'; - -export default { - kit: { - adapter: adapter({ config: '.toml' }) - } -}; -``` +If you would like to use a config file other than `wrangler.toml` you can specify so using the [`config` option](#options-config). If you would like to enable [Node.js compatibility](https://developers.cloudflare.com/workers/runtime-apis/nodejs/#enable-nodejs-from-the-cloudflare-dashboard), you can add "nodejs_compat" flag to `wrangler.toml`: @@ -117,7 +120,7 @@ export {}; ### Testing Locally -Cloudflare Workers specific values in the `platform` property are emulated during dev and preview modes. Local [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) are created based on the configuration in your `wrangler.toml` file and are used to populate `platform.env` during development. +Cloudflare Workers specific values in the `platform` property are emulated during dev and preview modes. Local [bindings](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) are created based on the configuration in your `wrangler.toml` file and are used to populate `platform.env` during development and preview. Use the adapter config [`platformProxy` option](#options-platformproxy) to change your preferences for the bindings. For testing the build, you should use [wrangler](https://developers.cloudflare.com/workers/cli-wrangler) **version 3**. Once you have built your site, run `wrangler dev`. diff --git a/packages/adapter-cloudflare-workers/index.d.ts b/packages/adapter-cloudflare-workers/index.d.ts index 5bfd868e0604..b76003735910 100644 --- a/packages/adapter-cloudflare-workers/index.d.ts +++ b/packages/adapter-cloudflare-workers/index.d.ts @@ -1,8 +1,14 @@ import { Adapter } from '@sveltejs/kit'; import './ambient.js'; +import { GetPlatformProxyOptions } from 'wrangler'; export default function plugin(options?: AdapterOptions): Adapter; export interface AdapterOptions { config?: string; + /** + * Config object passed to {@link https://developers.cloudflare.com/workers/wrangler/api/#getplatformproxy | getPlatformProxy} + * during development and preview. + */ + platformProxy?: GetPlatformProxyOptions; } diff --git a/packages/adapter-cloudflare-workers/index.js b/packages/adapter-cloudflare-workers/index.js index 40962940bea3..df592eea4ffe 100644 --- a/packages/adapter-cloudflare-workers/index.js +++ b/packages/adapter-cloudflare-workers/index.js @@ -32,7 +32,7 @@ const compatible_node_modules = [ ]; /** @type {import('./index.js').default} */ -export default function ({ config = 'wrangler.toml' } = {}) { +export default function ({ config = 'wrangler.toml', platformProxy = {} } = {}) { return { name: '@sveltejs/adapter-cloudflare-workers', @@ -145,7 +145,7 @@ export default function ({ config = 'wrangler.toml' } = {}) { }, async emulate() { - const proxy = await getPlatformProxy(); + const proxy = await getPlatformProxy(platformProxy); const platform = /** @type {App.Platform} */ ({ env: proxy.env, context: proxy.ctx, diff --git a/packages/adapter-cloudflare/index.d.ts b/packages/adapter-cloudflare/index.d.ts index 0ef6ee967d85..a1cacb498e24 100644 --- a/packages/adapter-cloudflare/index.d.ts +++ b/packages/adapter-cloudflare/index.d.ts @@ -1,5 +1,6 @@ import { Adapter } from '@sveltejs/kit'; import './ambient.js'; +import { GetPlatformProxyOptions } from 'wrangler'; export default function plugin(options?: AdapterOptions): Adapter; @@ -17,7 +18,7 @@ export interface AdapterOptions { fallback?: 'plaintext' | 'spa'; /** - * Customize the automatically-generated `_routes.json` file + * Customize the automatically-generated `_routes.json` file. * https://developers.cloudflare.com/pages/platform/functions/routing/#create-a-_routesjson-file */ routes?: { @@ -42,6 +43,12 @@ export interface AdapterOptions { */ exclude?: string[]; }; + + /** + * Config object passed to {@link https://developers.cloudflare.com/workers/wrangler/api/#getplatformproxy | getPlatformProxy} + * during development and preview. + */ + platformProxy?: GetPlatformProxyOptions; } export interface RoutesJSONSpec { diff --git a/packages/adapter-cloudflare/index.js b/packages/adapter-cloudflare/index.js index 30603c50030e..aa141f85312b 100644 --- a/packages/adapter-cloudflare/index.js +++ b/packages/adapter-cloudflare/index.js @@ -128,7 +128,7 @@ export default function (options = {}) { } }, async emulate() { - const proxy = await getPlatformProxy(); + const proxy = await getPlatformProxy(options.platformProxy); const platform = /** @type {App.Platform} */ ({ env: proxy.env, context: proxy.ctx, From 7acc801a271a18de1fad8697cd26f71795bdea17 Mon Sep 17 00:00:00 2001 From: Jeremiasz Major Date: Thu, 11 Apr 2024 02:52:11 +0200 Subject: [PATCH 078/454] feat: upgrade eslint in create-svelte to v9 (#12089) --- .changeset/kind-cats-argue.md | 5 +++ .../+eslint+prettier+typescript/.eslintrc.cjs | 31 ----------------- .../eslint.config.js | 33 +++++++++++++++++++ .../+eslint+prettier-typescript/.eslintrc.cjs | 15 --------- .../eslint.config.js | 23 +++++++++++++ .../shared/+eslint+svelte5/package.json | 2 +- .../shared/+eslint+typescript/.eslintrc.cjs | 30 ----------------- .../+eslint+typescript/eslint.config.js | 30 +++++++++++++++++ .../shared/+eslint+typescript/package.json | 3 +- .../shared/+eslint-typescript/.eslintrc.cjs | 15 --------- .../+eslint-typescript/eslint.config.js | 20 +++++++++++ .../shared/+eslint/.eslintignore | 13 -------- .../create-svelte/shared/+eslint/package.json | 7 ++-- 13 files changed, 117 insertions(+), 110 deletions(-) create mode 100644 .changeset/kind-cats-argue.md delete mode 100644 packages/create-svelte/shared/+eslint+prettier+typescript/.eslintrc.cjs create mode 100644 packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js delete mode 100644 packages/create-svelte/shared/+eslint+prettier-typescript/.eslintrc.cjs create mode 100644 packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js delete mode 100644 packages/create-svelte/shared/+eslint+typescript/.eslintrc.cjs create mode 100644 packages/create-svelte/shared/+eslint+typescript/eslint.config.js delete mode 100644 packages/create-svelte/shared/+eslint-typescript/.eslintrc.cjs create mode 100644 packages/create-svelte/shared/+eslint-typescript/eslint.config.js delete mode 100644 packages/create-svelte/shared/+eslint/.eslintignore diff --git a/.changeset/kind-cats-argue.md b/.changeset/kind-cats-argue.md new file mode 100644 index 000000000000..085e06a528f7 --- /dev/null +++ b/.changeset/kind-cats-argue.md @@ -0,0 +1,5 @@ +--- +"create-svelte": minor +--- + +feat: upgrade eslint to v9 diff --git a/packages/create-svelte/shared/+eslint+prettier+typescript/.eslintrc.cjs b/packages/create-svelte/shared/+eslint+prettier+typescript/.eslintrc.cjs deleted file mode 100644 index 0b757582c066..000000000000 --- a/packages/create-svelte/shared/+eslint+prettier+typescript/.eslintrc.cjs +++ /dev/null @@ -1,31 +0,0 @@ -/** @type { import("eslint").Linter.Config } */ -module.exports = { - root: true, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:svelte/recommended', - 'prettier' - ], - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - parserOptions: { - sourceType: 'module', - ecmaVersion: 2020, - extraFileExtensions: ['.svelte'] - }, - env: { - browser: true, - es2017: true, - node: true - }, - overrides: [ - { - files: ['*.svelte'], - parser: 'svelte-eslint-parser', - parserOptions: { - parser: '@typescript-eslint/parser' - } - } - ] -}; diff --git a/packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js b/packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js new file mode 100644 index 000000000000..2a47c1f5a015 --- /dev/null +++ b/packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js @@ -0,0 +1,33 @@ +import js from '@eslint/js'; +import ts from 'typescript-eslint'; +import svelte from 'eslint-plugin-svelte'; +import prettier from 'eslint-config-prettier'; +import globals from 'globals'; + +/** @type {import('eslint').Linter.FlatConfig[]} */ +export default [ + js.configs.recommended, + ...ts.configs.recommended, + ...svelte.configs['flat/recommended'], + prettier, + ...svelte.configs['flat/prettier'], + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + } + } + }, + { + files: ['**/*.svelte'], + languageOptions: { + parserOptions: { + parser: ts.parser + } + } + }, + { + ignores: ['build/', '.svelte-kit/', 'package/'] + } +]; diff --git a/packages/create-svelte/shared/+eslint+prettier-typescript/.eslintrc.cjs b/packages/create-svelte/shared/+eslint+prettier-typescript/.eslintrc.cjs deleted file mode 100644 index 50b97a54680b..000000000000 --- a/packages/create-svelte/shared/+eslint+prettier-typescript/.eslintrc.cjs +++ /dev/null @@ -1,15 +0,0 @@ -/** @type { import("eslint").Linter.Config } */ -module.exports = { - root: true, - extends: ['eslint:recommended', 'plugin:svelte/recommended', 'prettier'], - parserOptions: { - sourceType: 'module', - ecmaVersion: 2020, - extraFileExtensions: ['.svelte'] - }, - env: { - browser: true, - es2017: true, - node: true - } -}; diff --git a/packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js b/packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js new file mode 100644 index 000000000000..7898355c1419 --- /dev/null +++ b/packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js'; +import svelte from 'eslint-plugin-svelte'; +import prettier from 'eslint-config-prettier'; +import globals from 'globals'; + +/** @type {import('eslint').Linter.FlatConfig[]} */ +export default [ + js.configs.recommended, + ...svelte.configs['flat/recommended'], + prettier, + ...svelte.configs['flat/prettier'], + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + } + } + }, + { + ignores: ['build/', '.svelte-kit/', 'package/'] + } +]; diff --git a/packages/create-svelte/shared/+eslint+svelte5/package.json b/packages/create-svelte/shared/+eslint+svelte5/package.json index 92bbf44b1af3..6add01035892 100644 --- a/packages/create-svelte/shared/+eslint+svelte5/package.json +++ b/packages/create-svelte/shared/+eslint+svelte5/package.json @@ -1,5 +1,5 @@ { "devDependencies": { - "eslint-plugin-svelte": "^2.36.0-next.4" + "eslint-plugin-svelte": "^2.36.0" } } diff --git a/packages/create-svelte/shared/+eslint+typescript/.eslintrc.cjs b/packages/create-svelte/shared/+eslint+typescript/.eslintrc.cjs deleted file mode 100644 index 419521f727e7..000000000000 --- a/packages/create-svelte/shared/+eslint+typescript/.eslintrc.cjs +++ /dev/null @@ -1,30 +0,0 @@ -/** @type { import("eslint").Linter.Config } */ -module.exports = { - root: true, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:svelte/recommended' - ], - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - parserOptions: { - sourceType: 'module', - ecmaVersion: 2020, - extraFileExtensions: ['.svelte'] - }, - env: { - browser: true, - es2017: true, - node: true - }, - overrides: [ - { - files: ['*.svelte'], - parser: 'svelte-eslint-parser', - parserOptions: { - parser: '@typescript-eslint/parser' - } - } - ] -}; diff --git a/packages/create-svelte/shared/+eslint+typescript/eslint.config.js b/packages/create-svelte/shared/+eslint+typescript/eslint.config.js new file mode 100644 index 000000000000..d1b02a3d63c0 --- /dev/null +++ b/packages/create-svelte/shared/+eslint+typescript/eslint.config.js @@ -0,0 +1,30 @@ +import js from '@eslint/js'; +import ts from 'typescript-eslint'; +import svelte from 'eslint-plugin-svelte'; +import globals from 'globals'; + +/** @type {import('eslint').Linter.FlatConfig[]} */ +export default [ + js.configs.recommended, + ...ts.configs.recommended, + ...svelte.configs['flat/recommended'], + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + } + } + }, + { + files: ['**/*.svelte'], + languageOptions: { + parserOptions: { + parser: ts.parser + } + } + }, + { + ignores: ['build/', '.svelte-kit/', 'package/'] + } +]; diff --git a/packages/create-svelte/shared/+eslint+typescript/package.json b/packages/create-svelte/shared/+eslint+typescript/package.json index 983a77c6c1b3..7f85c33791a1 100644 --- a/packages/create-svelte/shared/+eslint+typescript/package.json +++ b/packages/create-svelte/shared/+eslint+typescript/package.json @@ -1,6 +1,5 @@ { "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0" + "typescript-eslint": "^7.5.0" } } diff --git a/packages/create-svelte/shared/+eslint-typescript/.eslintrc.cjs b/packages/create-svelte/shared/+eslint-typescript/.eslintrc.cjs deleted file mode 100644 index 702ea973b33e..000000000000 --- a/packages/create-svelte/shared/+eslint-typescript/.eslintrc.cjs +++ /dev/null @@ -1,15 +0,0 @@ -/** @type { import("eslint").Linter.Config } */ -module.exports = { - root: true, - extends: ['eslint:recommended', 'plugin:svelte/recommended'], - parserOptions: { - sourceType: 'module', - ecmaVersion: 2020, - extraFileExtensions: ['.svelte'] - }, - env: { - browser: true, - es2017: true, - node: true - } -}; diff --git a/packages/create-svelte/shared/+eslint-typescript/eslint.config.js b/packages/create-svelte/shared/+eslint-typescript/eslint.config.js new file mode 100644 index 000000000000..7cfe48b812ad --- /dev/null +++ b/packages/create-svelte/shared/+eslint-typescript/eslint.config.js @@ -0,0 +1,20 @@ +import js from '@eslint/js'; +import svelte from 'eslint-plugin-svelte'; +import globals from 'globals'; + +/** @type {import('eslint').Linter.FlatConfig[]} */ +export default [ + js.configs.recommended, + ...svelte.configs['flat/recommended'], + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + } + } + }, + { + ignores: ['build/', '.svelte-kit/', 'package/'] + } +]; diff --git a/packages/create-svelte/shared/+eslint/.eslintignore b/packages/create-svelte/shared/+eslint/.eslintignore deleted file mode 100644 index 38972655faff..000000000000 --- a/packages/create-svelte/shared/+eslint/.eslintignore +++ /dev/null @@ -1,13 +0,0 @@ -.DS_Store -node_modules -/build -/.svelte-kit -/package -.env -.env.* -!.env.example - -# Ignore files for PNPM, NPM and YARN -pnpm-lock.yaml -package-lock.json -yarn.lock diff --git a/packages/create-svelte/shared/+eslint/package.json b/packages/create-svelte/shared/+eslint/package.json index 5fd8c6851288..a4ad106768f9 100644 --- a/packages/create-svelte/shared/+eslint/package.json +++ b/packages/create-svelte/shared/+eslint/package.json @@ -1,7 +1,8 @@ { "devDependencies": { - "@types/eslint": "^8.56.0", - "eslint": "^8.56.0", - "eslint-plugin-svelte": "^2.35.1" + "@types/eslint": "^8.56.7", + "eslint": "^9.0.0", + "eslint-plugin-svelte": "^2.36.0", + "globals": "^15.0.0" } } From 273b7bc51dfe24b203ba35fb7cedc54de25c846d Mon Sep 17 00:00:00 2001 From: Jeremiasz Major Date: Thu, 11 Apr 2024 17:21:25 +0200 Subject: [PATCH 079/454] chore: upgrade eslint to v9 (#12098) --- .eslintrc.json | 18 - eslint.config.js | 20 + package.json | 10 +- .../kit/test/apps/basics/test/client.test.js | 10 +- pnpm-lock.yaml | 494 +++++++++++------- 5 files changed, 329 insertions(+), 223 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.js diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 9501511a710b..000000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "root": true, - "extends": "@sveltejs", - "env": { - "es2022": true - }, - "ignorePatterns": [ - "packages/create-svelte/shared/", - "packages/kit/test/prerendering/*/build", - "packages/adapter-static/test/apps/*/build", - "packages/adapter-cloudflare/files", - "packages/adapter-netlify/files", - "packages/adapter-node/files" - ], - "rules": { - "no-undef": "off" - } -} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000000..7abf2505883b --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,20 @@ +import svelte_config from '@sveltejs/eslint-config'; + +/** @type {import('eslint').Linter.FlatConfig[]} */ +export default [ + ...svelte_config, + { + rules: { + 'no-undef': 'off' + } + }, + { + ignores: [ + '**/.svelte-kit', + 'packages/adapter-static/test/apps/*/build', + 'packages/adapter-cloudflare/files', + 'packages/adapter-netlify/files', + 'packages/adapter-node/files' + ] + } +]; diff --git a/package.json b/package.json index abfc8243f69c..fad73bf85e78 100644 --- a/package.json +++ b/package.json @@ -22,14 +22,14 @@ }, "devDependencies": { "@changesets/cli": "^2.27.1", - "@sveltejs/eslint-config": "^6.0.4", + "@sveltejs/eslint-config": "^7.0.1", "@svitejs/changesets-changelog-github-compact": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "eslint": "^8.56.0", + "eslint": "^9.0.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.35.1", + "eslint-plugin-svelte": "^2.36.0", "eslint-plugin-unicorn": "^52.0.0", - "playwright": "^1.41.0" + "playwright": "^1.41.0", + "typescript-eslint": "^7.6.0" }, "packageManager": "pnpm@8.15.6", "engines": { diff --git a/packages/kit/test/apps/basics/test/client.test.js b/packages/kit/test/apps/basics/test/client.test.js index 4df2ba593000..2a57fd5566cd 100644 --- a/packages/kit/test/apps/basics/test/client.test.js +++ b/packages/kit/test/apps/basics/test/client.test.js @@ -717,10 +717,7 @@ test.describe('data-sveltekit attributes', () => { expect(page).toHaveURL(offline_url); }); - test('data-sveltekit-preload does not abort ongoing navigation', async ({ - page, - browserName - }) => { + test('data-sveltekit-preload does not abort ongoing navigation', async ({ page }) => { await page.goto('/data-sveltekit/preload-data/offline'); await page.locator('#slow-navigation').dispatchEvent('click'); @@ -731,10 +728,7 @@ test.describe('data-sveltekit attributes', () => { page.waitForLoadState('networkidle') // wait for preloading to finish ]); - expect(page).toHaveURL( - '/data-sveltekit/preload-data/offline/slow-navigation' || - (browserName === 'chromium' && 'chrome-error://chromewebdata/') - ); + expect(page).toHaveURL('/data-sveltekit/preload-data/offline/slow-navigation'); }); test('data-sveltekit-reload', async ({ baseURL, page, clicknav }) => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3bf10d133c62..988c6f20c559 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,29 +12,29 @@ importers: specifier: ^2.27.1 version: 2.27.1 '@sveltejs/eslint-config': - specifier: ^6.0.4 - version: 6.0.4(@typescript-eslint/eslint-plugin@7.0.1)(@typescript-eslint/parser@7.0.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@52.0.0)(eslint@8.56.0)(typescript@5.3.3) + specifier: ^7.0.1 + version: 7.0.1(@stylistic/eslint-plugin-js@1.7.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.36.0)(eslint-plugin-unicorn@52.0.0)(eslint@9.0.0)(typescript-eslint@7.6.0)(typescript@5.3.3) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 - '@typescript-eslint/eslint-plugin': - specifier: ^7.0.0 - version: 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3) eslint: - specifier: ^8.56.0 - version: 8.56.0 + specifier: ^9.0.0 + version: 9.0.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@9.0.0) eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.35.1(eslint@8.56.0) + specifier: ^2.36.0 + version: 2.36.0(eslint@9.0.0) eslint-plugin-unicorn: specifier: ^52.0.0 - version: 52.0.0(eslint@8.56.0) + version: 52.0.0(eslint@9.0.0) playwright: specifier: ^1.41.0 version: 1.41.2 + typescript-eslint: + specifier: ^7.6.0 + version: 7.6.0(eslint@9.0.0)(typescript@5.3.3) packages/adapter-auto: dependencies: @@ -476,7 +476,7 @@ importers: version: 4.2.10 svelte-preprocess: specifier: ^5.1.3 - version: 5.1.3(postcss@8.4.35)(svelte@4.2.10)(typescript@5.3.3) + version: 5.1.3(postcss@8.4.38)(svelte@4.2.10)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -509,7 +509,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -536,7 +536,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -560,7 +560,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -584,7 +584,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -608,7 +608,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -632,7 +632,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -659,7 +659,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -683,7 +683,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -713,7 +713,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -737,7 +737,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -761,7 +761,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -782,7 +782,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -803,7 +803,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -827,7 +827,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -848,7 +848,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -869,7 +869,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -890,7 +890,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -911,7 +911,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -932,7 +932,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -953,7 +953,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -974,7 +974,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -995,7 +995,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1016,7 +1016,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1040,7 +1040,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1064,7 +1064,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1147,7 +1147,7 @@ importers: version: 4.2.10 svelte-preprocess: specifier: ^5.1.3 - version: 5.1.3(postcss@8.4.35)(svelte@4.2.10)(typescript@5.3.3) + version: 5.1.3(postcss@8.4.38)(svelte@4.2.10)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1198,7 +1198,7 @@ importers: version: 4.2.10 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.35)(svelte@4.2.10) + version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -2007,13 +2007,13 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.0.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.56.0 + eslint: 9.0.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2039,9 +2039,26 @@ packages: - supports-color dev: true - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/eslintrc@3.0.2: + resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 10.0.1 + globals: 14.0.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@9.0.0: + resolution: {integrity: sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true /@fastify/busboy@2.1.1: @@ -2053,11 +2070,11 @@ packages: resolution: {integrity: sha512-8OJiUK2lzJjvDlkmamEfhtpL1cyFApg1Pk4kE5Pw5UTf1ETF3Yy/pprgwV5I+LQPDjuFvinsinT9xSUZ2b/zuQ==} dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + /@humanwhocodes/config-array@0.12.3: + resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -2069,8 +2086,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true /@iarna/toml@2.2.5: @@ -2590,24 +2607,39 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@7.0.1)(@typescript-eslint/parser@7.0.1)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.35.1)(eslint-plugin-unicorn@52.0.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-U9pwmDs+DbmsnCgTfu6Bacdwqn0DuI1IQNSiQqTgzVyYfaaj+zy9ZoQCiJfxFBGXHkklyXuRHp0KMx346N0lcQ==} + /@stylistic/eslint-plugin-js@1.7.0(eslint@9.0.0): + resolution: {integrity: sha512-PN6On/+or63FGnhhMKSQfYcWutRlzOiYlVdLM6yN7lquoBTqUJHYnl4TA4MHwiAt46X5gRxDr1+xPZ1lOLcL+Q==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/eslint-plugin': '>= 5' - '@typescript-eslint/parser': '>= 5' - eslint: '>= 8' - eslint-config-prettier: '>= 8' - eslint-plugin-svelte: '>= 2' - eslint-plugin-unicorn: '>= 47' - typescript: '>= 4' - dependencies: - '@typescript-eslint/eslint-plugin': 7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - eslint: 8.56.0 - eslint-config-prettier: 9.1.0(eslint@8.56.0) - eslint-plugin-svelte: 2.35.1(eslint@8.56.0) - eslint-plugin-unicorn: 52.0.0(eslint@8.56.0) + eslint: '>=8.40.0' + dependencies: + '@types/eslint': 8.56.7 + acorn: 8.11.3 + escape-string-regexp: 4.0.0 + eslint: 9.0.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + dev: true + + /@sveltejs/eslint-config@7.0.1(@stylistic/eslint-plugin-js@1.7.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.36.0)(eslint-plugin-unicorn@52.0.0)(eslint@9.0.0)(typescript-eslint@7.6.0)(typescript@5.3.3): + resolution: {integrity: sha512-0c65gMzIRkfSNxVtUmMB/0I0A+ypyIS7aJhXXU7dEdoOEmdN5K+GpGB4ybYBmqODJdZlNRmwNFaKxzzUGBkXQA==} + peerDependencies: + '@stylistic/eslint-plugin-js': '>= 1' + eslint: '>= 9' + eslint-config-prettier: '>= 9' + eslint-plugin-svelte: '>= 2.36' + eslint-plugin-unicorn: '>= 50' + typescript: '>= 5' + typescript-eslint: '>= 7.5' + dependencies: + '@stylistic/eslint-plugin-js': 1.7.0(eslint@9.0.0) + eslint: 9.0.0 + eslint-config-prettier: 9.1.0(eslint@9.0.0) + eslint-plugin-svelte: 2.36.0(eslint@9.0.0) + eslint-plugin-unicorn: 52.0.0(eslint@9.0.0) + globals: 15.0.0 typescript: 5.3.3 + typescript-eslint: 7.6.0(eslint@9.0.0)(typescript@5.3.3) dev: true /@sveltejs/site-kit@6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.10): @@ -2693,6 +2725,13 @@ packages: '@types/geojson': 7946.0.14 dev: true + /@types/eslint@8.56.7: + resolution: {integrity: sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -2763,6 +2802,10 @@ packages: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true + /@types/set-cookie-parser@2.4.7: resolution: {integrity: sha512-+ge/loa0oTozxip6zmhRIk8Z/boU51wl9Q6QdLZcokIGMzY5lFXYy/x7Htj2HTC6/KZP1hUbZ1ekx8DYXICvWg==} dependencies: @@ -2775,9 +2818,9 @@ packages: '@types/node': 18.19.14 dev: true - /@typescript-eslint/eslint-plugin@7.0.1(@typescript-eslint/parser@7.0.1)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.3.3): + resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 eslint: ^8.56.0 @@ -2787,26 +2830,26 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/type-utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/type-utils': 7.6.0(eslint@9.0.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 9.0.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-8GcRRZNzaHxKzBPU3tKtFNing571/GwPBeCvmAUw0yBtfE2XVd0zFKJIMSWkHJcPQi0ekxjIts6L/rrZq5cxGQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/parser@7.6.0(eslint@9.0.0)(typescript@5.3.3): + resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 typescript: '*' @@ -2814,28 +2857,28 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 9.0.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@7.0.1: - resolution: {integrity: sha512-v7/T7As10g3bcWOOPAcbnMDuvctHzCFYCG/8R4bK4iYzdFqsZTbXGln0cZNVcwQcwewsYU2BJLay8j0/4zOk4w==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/scope-manager@7.6.0: + resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 dev: true - /@typescript-eslint/type-utils@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-YtT9UcstTG5Yqy4xtLiClm1ZpM/pWVGFnkAa90UfdkkZsR1eP2mR/1jbHeYp8Ay1l1JHPyGvoUYR6o3On5Nhmw==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@7.6.0(eslint@9.0.0)(typescript@5.3.3): + resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 typescript: '*' @@ -2843,67 +2886,67 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - '@typescript-eslint/utils': 7.0.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.3.3) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.56.0 - ts-api-utils: 1.2.1(typescript@5.3.3) + eslint: 9.0.0 + ts-api-utils: 1.3.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@7.0.1: - resolution: {integrity: sha512-uJDfmirz4FHib6ENju/7cz9SdMSkeVvJDK3VcMFvf/hAShg8C74FW+06MaQPODHfDJp/z/zHfgawIJRjlu0RLg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@7.6.0: + resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==} + engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@7.0.1(typescript@5.3.3): - resolution: {integrity: sha512-SO9wHb6ph0/FN5OJxH4MiPscGah5wjOd0RRpaLvuBv9g8565Fgu0uMySFEPqwPHiQU90yzJ2FjRYKGrAhS1xig==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@7.6.0(typescript@5.3.3): + resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/visitor-keys': 7.0.1 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.3 + minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@7.0.1(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-oe4his30JgPbnv+9Vef1h48jm0S6ft4mNwi9wj7bX10joGn07QRfqIqFHoMiajrtoU88cIhXf8ahwgrcbNLgPA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@7.6.0(eslint@9.0.0)(typescript@5.3.3): + resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 7.0.1 - '@typescript-eslint/types': 7.0.1 - '@typescript-eslint/typescript-estree': 7.0.1(typescript@5.3.3) - eslint: 8.56.0 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.3.3) + eslint: 9.0.0 semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@7.0.1: - resolution: {integrity: sha512-hwAgrOyk++RTXrP4KzCg7zB2U0xt7RUU0ZdMSCsqF3eKUwkdXUMyTb0qdCuji7VIbcpG62kKTU9M1J1c9UpFBw==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@7.6.0: + resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.0.1 + '@typescript-eslint/types': 7.6.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2933,10 +2976,6 @@ packages: - supports-color dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - /@vercel/nft@0.26.3: resolution: {integrity: sha512-h1z/NN9ppS4YOKwSgBoopJlhm7tS2Qb/9Ld1HXjDpvvTE7mY0xVD8nllXs+RihD9uTGJISOIMzp18Eg0EApaMA==} engines: {node: '>=16'} @@ -3722,13 +3761,6 @@ packages: path-type: 4.0.0 dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - /dotenv@16.4.1: resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} engines: {node: '>=12'} @@ -3937,65 +3969,66 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-compat-utils@0.1.2(eslint@8.56.0): - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + /eslint-compat-utils@0.5.0(eslint@9.0.0): + resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.56.0 + eslint: 9.0.0 + semver: 7.6.0 dev: true - /eslint-config-prettier@9.1.0(eslint@8.56.0): + /eslint-config-prettier@9.1.0(eslint@9.0.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.56.0 + eslint: 9.0.0 dev: true - /eslint-plugin-svelte@2.35.1(eslint@8.56.0): - resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==} + /eslint-plugin-svelte@2.36.0(eslint@9.0.0): + resolution: {integrity: sha512-D30hSj13Y8YEn7yGXos7EYp0lpEb3Z2V/M+6a3MZ13KGVhaefdW2A9j8IBIcW4YR+j6fo901USzLeXQz/XbWeQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 - svelte: ^3.37.0 || ^4.0.0 + eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.95 peerDependenciesMeta: svelte: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4 - eslint: 8.56.0 - eslint-compat-utils: 0.1.2(eslint@8.56.0) + eslint: 9.0.0 + eslint-compat-utils: 0.5.0(eslint@9.0.0) esutils: 2.0.3 - known-css-properties: 0.29.0 - postcss: 8.4.35 - postcss-load-config: 3.1.4(postcss@8.4.35) - postcss-safe-parser: 6.0.0(postcss@8.4.35) - postcss-selector-parser: 6.0.15 + known-css-properties: 0.30.0 + postcss: 8.4.38 + postcss-load-config: 3.1.4(postcss@8.4.38) + postcss-safe-parser: 6.0.0(postcss@8.4.38) + postcss-selector-parser: 6.0.16 semver: 7.6.0 - svelte-eslint-parser: 0.33.1 + svelte-eslint-parser: 0.34.1 transitivePeerDependencies: - supports-color - ts-node dev: true - /eslint-plugin-unicorn@52.0.0(eslint@8.56.0): + /eslint-plugin-unicorn@52.0.0(eslint@9.0.0): resolution: {integrity: sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.56.0' dependencies: '@babel/helper-validator-identifier': 7.22.20 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint/eslintrc': 2.1.4 ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.35.1 - eslint: 8.56.0 + eslint: 9.0.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -4018,46 +4051,55 @@ packages: estraverse: 5.3.0 dev: true + /eslint-scope@8.0.1: + resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /eslint@9.0.0: + resolution: {integrity: sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/eslintrc': 3.0.2 + '@eslint/js': 9.0.0 + '@humanwhocodes/config-array': 0.12.3 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.1 + eslint-visitor-keys: 4.0.0 + espree: 10.0.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 graphemer: 1.4.0 ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -4073,6 +4115,15 @@ packages: /esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + /espree@10.0.1: + resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 4.0.0 + dev: true + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4189,11 +4240,11 @@ packages: engines: {node: '>=12'} dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 dev: true /file-uri-to-path@1.0.0: @@ -4229,13 +4280,12 @@ packages: pkg-dir: 4.2.0 dev: true - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} dependencies: flatted: 3.2.9 keyv: 4.5.4 - rimraf: 3.0.2 dev: true /flatted@3.2.9: @@ -4442,6 +4492,16 @@ packages: type-fest: 0.20.2 dev: true + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + dev: true + + /globals@15.0.0: + resolution: {integrity: sha512-m/C/yR4mjO6pXDTm9/R/SpYTAIyaUB4EOzcaaMEl7mds7Mshct9GfejiJNQGjHHbdMPey13Kpu4TMbYi9ex1pw==} + engines: {node: '>=18'} + dev: true + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -4922,8 +4982,8 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - /known-css-properties@0.29.0: - resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} + /known-css-properties@0.30.0: + resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} dev: true /levn@0.4.1: @@ -5256,6 +5316,13 @@ packages: dependencies: brace-expansion: 2.0.1 + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -5703,7 +5770,7 @@ packages: trouter: 4.0.0 dev: true - /postcss-load-config@3.1.4(postcss@8.4.35): + /postcss-load-config@3.1.4(postcss@8.4.38): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -5716,30 +5783,30 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.35 + postcss: 8.4.38 yaml: 1.10.2 dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.35): + /postcss-safe-parser@6.0.0(postcss@8.4.38): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.35 + postcss: 8.4.38 dev: true - /postcss-scss@4.0.9(postcss@8.4.35): + /postcss-scss@4.0.9(postcss@8.4.38): resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.4.29 dependencies: - postcss: 8.4.35 + postcss: 8.4.38 dev: true - /postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -5755,6 +5822,15 @@ packages: source-map-js: 1.0.2 dev: true + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + dev: true + /preferred-pm@3.1.2: resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} engines: {node: '>=10'} @@ -5981,6 +6057,7 @@ packages: hasBin: true dependencies: glob: 7.2.3 + dev: false /rollup-plugin-inject@3.0.2: resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} @@ -6293,6 +6370,11 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: true + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -6483,7 +6565,7 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check@3.6.3(postcss@8.4.35)(svelte@4.2.10): + /svelte-check@3.6.3(postcss@8.4.38)(svelte@4.2.10): resolution: {integrity: sha512-Q2nGnoysxUnB9KjnjpQLZwdjK62DHyW6nuH/gm2qteFnDk0lCehe/6z8TsIvYeKjC6luKaWxiNGyOcWiLLPSwA==} hasBin: true peerDependencies: @@ -6496,7 +6578,7 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.10 - svelte-preprocess: 5.1.3(postcss@8.4.35)(svelte@4.2.10)(typescript@5.3.3) + svelte-preprocess: 5.1.3(postcss@8.4.38)(svelte@4.2.10)(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - '@babel/core' @@ -6510,11 +6592,11 @@ packages: - sugarss dev: true - /svelte-eslint-parser@0.33.1: - resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==} + /svelte-eslint-parser@0.34.1: + resolution: {integrity: sha512-9+uLA1pqI9AZioKVGJzYYmlOZWxfoCXSbAM9iaNm7H01XlYlzRTtJfZgl9o3StQGN41PfGJIbkKkfk3e/pHFfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - svelte: ^3.37.0 || ^4.0.0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.94 peerDependenciesMeta: svelte: optional: true @@ -6522,8 +6604,8 @@ packages: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.35 - postcss-scss: 4.0.9(postcss@8.4.35) + postcss: 8.4.38 + postcss-scss: 4.0.9(postcss@8.4.38) dev: true /svelte-hmr@0.15.3(svelte@4.2.10): @@ -6552,7 +6634,7 @@ packages: svelte: 4.2.10 dev: false - /svelte-preprocess@5.1.3(postcss@8.4.35)(svelte@4.2.10)(typescript@5.3.3): + /svelte-preprocess@5.1.3(postcss@8.4.38)(svelte@4.2.10)(typescript@5.3.3): resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} engines: {node: '>= 16.0.0', pnpm: ^8.0.0} requiresBuild: true @@ -6593,7 +6675,7 @@ packages: '@types/pug': 2.0.10 detect-indent: 6.1.0 magic-string: 0.30.7 - postcss: 8.4.35 + postcss: 8.4.38 sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.10 @@ -6747,6 +6829,15 @@ packages: typescript: 5.3.3 dev: true + /ts-api-utils@1.3.0(typescript@5.3.3): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true + /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true @@ -6846,6 +6937,25 @@ packages: is-typed-array: 1.1.13 dev: true + /typescript-eslint@7.6.0(eslint@9.0.0)(typescript@5.3.3): + resolution: {integrity: sha512-LY6vH6F1l5jpGqRtU+uK4+mOecIb4Cd4kaz1hAiJrgnNiHUA8wiw8BkJyYS+MRLM69F1QuSKwtGlQqnGl1Rc6w==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.3.3) + '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.3.3) + eslint: 9.0.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} From ed8970ef74d804d198fc92f44e66578743f9b5b9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Apr 2024 09:13:15 -0700 Subject: [PATCH 080/454] Version Packages (#12093) Co-authored-by: github-actions[bot] --- .changeset/kind-cats-argue.md | 5 ----- .changeset/tough-dolphins-kick.md | 6 ------ packages/adapter-cloudflare-workers/CHANGELOG.md | 6 ++++++ packages/adapter-cloudflare-workers/package.json | 2 +- packages/adapter-cloudflare/CHANGELOG.md | 6 ++++++ packages/adapter-cloudflare/package.json | 2 +- packages/create-svelte/CHANGELOG.md | 6 ++++++ packages/create-svelte/package.json | 2 +- 8 files changed, 21 insertions(+), 14 deletions(-) delete mode 100644 .changeset/kind-cats-argue.md delete mode 100644 .changeset/tough-dolphins-kick.md diff --git a/.changeset/kind-cats-argue.md b/.changeset/kind-cats-argue.md deleted file mode 100644 index 085e06a528f7..000000000000 --- a/.changeset/kind-cats-argue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"create-svelte": minor ---- - -feat: upgrade eslint to v9 diff --git a/.changeset/tough-dolphins-kick.md b/.changeset/tough-dolphins-kick.md deleted file mode 100644 index 7f08d35ed8a0..000000000000 --- a/.changeset/tough-dolphins-kick.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sveltejs/adapter-cloudflare-workers": minor -"@sveltejs/adapter-cloudflare": minor ---- - -feat: support platform emulation configuration via the `platformProxy` adapter option diff --git a/packages/adapter-cloudflare-workers/CHANGELOG.md b/packages/adapter-cloudflare-workers/CHANGELOG.md index f88e6c1ba320..dcb9a534b45e 100644 --- a/packages/adapter-cloudflare-workers/CHANGELOG.md +++ b/packages/adapter-cloudflare-workers/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/adapter-cloudflare-workers +## 2.3.0 + +### Minor Changes + +- feat: support platform emulation configuration via the `platformProxy` adapter option ([#12011](https://github.com/sveltejs/kit/pull/12011)) + ## 2.2.1 ### Patch Changes diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index 74aee17b83ac..7a20d9d28d51 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare-workers", - "version": "2.2.1", + "version": "2.3.0", "description": "SvelteKit adapter that creates a Cloudflare Workers site using a function for dynamic server rendering", "repository": { "type": "git", diff --git a/packages/adapter-cloudflare/CHANGELOG.md b/packages/adapter-cloudflare/CHANGELOG.md index 52b085ffa499..8b462bc8b653 100644 --- a/packages/adapter-cloudflare/CHANGELOG.md +++ b/packages/adapter-cloudflare/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/adapter-cloudflare +## 4.3.0 + +### Minor Changes + +- feat: support platform emulation configuration via the `platformProxy` adapter option ([#12011](https://github.com/sveltejs/kit/pull/12011)) + ## 4.2.1 ### Patch Changes diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 7af46e90ce70..c690d917b86b 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare", - "version": "4.2.1", + "version": "4.3.0", "description": "Adapter for building SvelteKit applications on Cloudflare Pages with Workers integration", "repository": { "type": "git", diff --git a/packages/create-svelte/CHANGELOG.md b/packages/create-svelte/CHANGELOG.md index 33d1b59aab10..635d54f0ab46 100644 --- a/packages/create-svelte/CHANGELOG.md +++ b/packages/create-svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # create-svelte +## 6.1.0 + +### Minor Changes + +- feat: upgrade eslint to v9 ([#12089](https://github.com/sveltejs/kit/pull/12089)) + ## 6.0.10 ### Patch Changes diff --git a/packages/create-svelte/package.json b/packages/create-svelte/package.json index 2e98a6883383..94a07347f49f 100644 --- a/packages/create-svelte/package.json +++ b/packages/create-svelte/package.json @@ -1,6 +1,6 @@ { "name": "create-svelte", - "version": "6.0.10", + "version": "6.1.0", "description": "A CLI for creating new SvelteKit projects", "repository": { "type": "git", From bbab296f6fcc05af6b999182798bcdedabbaa4c9 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Fri, 12 Apr 2024 13:15:39 -0400 Subject: [PATCH 081/454] fix: do not re-escape cookies collected from fetch calls during SSR (#11904) * fix: do not re-escape cookies collected from fetch calls during SSR * add test * add changeset --- .changeset/fair-suns-report.md | 5 +++++ packages/kit/src/runtime/server/fetch.js | 5 ++++- .../cookies/collect-without-re-escaping/+page.js | 10 ++++++++++ .../cookies/collect-without-re-escaping/+page.svelte | 5 +++++ .../collect-without-re-escaping/set-cookie/+server.js | 4 ++++ .../apps/basics/test/cross-platform/client.test.js | 5 +++++ 6 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 .changeset/fair-suns-report.md create mode 100644 packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/+page.js create mode 100644 packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/+page.svelte create mode 100644 packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/set-cookie/+server.js diff --git a/.changeset/fair-suns-report.md b/.changeset/fair-suns-report.md new file mode 100644 index 000000000000..e4034ae49237 --- /dev/null +++ b/.changeset/fair-suns-report.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: avoid incorrectly un- and re-escaping cookies collected during a server-side `fetch` diff --git a/packages/kit/src/runtime/server/fetch.js b/packages/kit/src/runtime/server/fetch.js index e5911209239c..6d0ae7835f03 100644 --- a/packages/kit/src/runtime/server/fetch.js +++ b/packages/kit/src/runtime/server/fetch.js @@ -132,13 +132,16 @@ export function create_fetch({ event, options, manifest, state, get_cookie_heade const set_cookie = response.headers.get('set-cookie'); if (set_cookie) { for (const str of set_cookie_parser.splitCookiesString(set_cookie)) { - const { name, value, ...options } = set_cookie_parser.parseString(str); + const { name, value, ...options } = set_cookie_parser.parseString(str, { + decodeValues: false + }); const path = options.path ?? (url.pathname.split('/').slice(0, -1).join('/') || '/'); // options.sameSite is string, something more specific is required - type cast is safe set_internal(name, value, { path, + encode: (value) => value, .../** @type {import('cookie').CookieSerializeOptions} */ (options) }); } diff --git a/packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/+page.js b/packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/+page.js new file mode 100644 index 000000000000..8f6f487e6029 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/+page.js @@ -0,0 +1,10 @@ +import { browser } from '$app/environment'; + +/** @type {import('@sveltejs/kit').Load}*/ +export async function load({ fetch }) { + if (!browser) { + // We don't want the client-side collected cookie to clobber the + // server-side collected cookie that we're actually testing. + await fetch('/cookies/collect-without-re-escaping/set-cookie'); + } +} diff --git a/packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/+page.svelte b/packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/+page.svelte new file mode 100644 index 000000000000..14ad3ba15ac5 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/+page.svelte @@ -0,0 +1,5 @@ + + +

{browser && document.cookie}

diff --git a/packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/set-cookie/+server.js b/packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/set-cookie/+server.js new file mode 100644 index 000000000000..c4a2c1ec28f2 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/cookies/collect-without-re-escaping/set-cookie/+server.js @@ -0,0 +1,4 @@ +/** @type {import('@sveltejs/kit').RequestHandler} */ +export async function GET() { + return new Response(null, { headers: { 'set-cookie': 'cookie-special-characters="foo"' } }); +} diff --git a/packages/kit/test/apps/basics/test/cross-platform/client.test.js b/packages/kit/test/apps/basics/test/cross-platform/client.test.js index 7bda137157dc..dfa97ce7f3be 100644 --- a/packages/kit/test/apps/basics/test/cross-platform/client.test.js +++ b/packages/kit/test/apps/basics/test/cross-platform/client.test.js @@ -827,6 +827,11 @@ test.describe('cookies', () => { await page.locator('button').click(); await expect(page.locator('p')).toHaveText('foo=bar'); }); + + test("fetch during SSR doesn't un- and re-escape cookies", async ({ page }) => { + await page.goto('/cookies/collect-without-re-escaping'); + await expect(page.locator('p')).toHaveText('cookie-special-characters="foo"'); + }); }); test.describe('Interactivity', () => { From 94b7344c10168ed5099898a6c0bab3d9498d8893 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sat, 13 Apr 2024 17:03:15 -0700 Subject: [PATCH 082/454] chore: upgrade vite, vitest, esbuild, and rollup (#12118) --- .changeset/many-ladybugs-greet.md | 8 + .../adapter-cloudflare-workers/package.json | 2 +- packages/adapter-cloudflare/package.json | 2 +- packages/adapter-netlify/package.json | 6 +- packages/adapter-node/package.json | 2 +- packages/adapter-static/package.json | 2 +- .../test/apps/prerendered/package.json | 2 +- .../adapter-static/test/apps/spa/package.json | 2 +- packages/adapter-vercel/package.json | 4 +- packages/create-svelte/package.json | 2 +- .../templates/default/package.json | 2 +- packages/enhanced-img/package.json | 6 +- packages/kit/package.json | 8 +- packages/kit/test/apps/amp/package.json | 2 +- packages/kit/test/apps/basics/package.json | 2 +- packages/kit/test/apps/dev-only/package.json | 2 +- packages/kit/test/apps/embed/package.json | 2 +- packages/kit/test/apps/no-ssr/package.json | 2 +- packages/kit/test/apps/options-2/package.json | 2 +- packages/kit/test/apps/options/package.json | 2 +- packages/kit/test/apps/writes/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../apps/private-dynamic-env/package.json | 2 +- .../package.json | 2 +- .../apps/private-static-env/package.json | 2 +- .../package.json | 2 +- .../apps/server-only-folder/package.json | 2 +- .../package.json | 2 +- .../apps/server-only-module/package.json | 2 +- .../package.json | 2 +- .../service-worker-private-env/package.json | 2 +- .../apps/syntax-error/package.json | 2 +- packages/kit/test/build-errors/package.json | 2 +- .../kit/test/prerendering/basics/package.json | 4 +- .../test/prerendering/options/package.json | 4 +- .../test/prerendering/paths-base/package.json | 4 +- packages/migrate/package.json | 2 +- playgrounds/basic/package.json | 2 +- pnpm-lock.yaml | 2081 +++++++++-------- sites/kit.svelte.dev/package.json | 4 +- 43 files changed, 1142 insertions(+), 1053 deletions(-) create mode 100644 .changeset/many-ladybugs-greet.md diff --git a/.changeset/many-ladybugs-greet.md b/.changeset/many-ladybugs-greet.md new file mode 100644 index 000000000000..e24a23cea6f8 --- /dev/null +++ b/.changeset/many-ladybugs-greet.md @@ -0,0 +1,8 @@ +--- +"@sveltejs/adapter-cloudflare-workers": minor +"@sveltejs/adapter-cloudflare": minor +"@sveltejs/adapter-netlify": minor +"@sveltejs/adapter-vercel": minor +--- + +chore(deps): upgrade esbuild diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index 7a20d9d28d51..0850fc37f761 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -32,7 +32,7 @@ "dependencies": { "@cloudflare/workers-types": "^4.20231121.0", "@iarna/toml": "^2.2.5", - "esbuild": "^0.19.11" + "esbuild": "^0.20.2" }, "devDependencies": { "@cloudflare/kv-asset-handler": "^0.3.0", diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index c690d917b86b..8c358681822f 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "@cloudflare/workers-types": "^4.20231121.0", - "esbuild": "^0.19.11", + "esbuild": "^0.20.2", "worktop": "0.8.0-next.18" }, "devDependencies": { diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 5e68879ea390..83ae56f1bdf1 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -34,7 +34,7 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "esbuild": "^0.19.11", + "esbuild": "^0.20.2", "set-cookie-parser": "^2.6.0" }, "devDependencies": { @@ -46,9 +46,9 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "@types/node": "^18.19.3", "@types/set-cookie-parser": "^2.4.7", - "rollup": "^4.9.5", + "rollup": "^4.14.2", "typescript": "^5.3.3", - "vitest": "^1.2.0" + "vitest": "^1.5.0" }, "peerDependencies": { "@sveltejs/kit": "^2.4.0" diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index b671d8ee86fa..ca500e2c3f2a 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -41,7 +41,7 @@ "polka": "1.0.0-next.25", "sirv": "^2.0.4", "typescript": "^5.3.3", - "vitest": "^1.2.0" + "vitest": "^1.5.0" }, "dependencies": { "@rollup/plugin-commonjs": "^25.0.7", diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index 0297cd6d49b5..6ce5af933017 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -37,7 +37,7 @@ "sirv": "^2.0.4", "svelte": "^4.2.10", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "peerDependencies": { "@sveltejs/kit": "^2.0.0" diff --git a/packages/adapter-static/test/apps/prerendered/package.json b/packages/adapter-static/test/apps/prerendered/package.json index ad230a72d4c9..71d623a0c7d4 100644 --- a/packages/adapter-static/test/apps/prerendered/package.json +++ b/packages/adapter-static/test/apps/prerendered/package.json @@ -13,7 +13,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "sirv-cli": "^2.0.2", "svelte": "^4.2.10", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/adapter-static/test/apps/spa/package.json b/packages/adapter-static/test/apps/spa/package.json index be928ecceceb..03dc372aad88 100644 --- a/packages/adapter-static/test/apps/spa/package.json +++ b/packages/adapter-static/test/apps/spa/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "sirv-cli": "^2.0.2", "svelte": "^4.2.10", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index c7aa9af1d437..f9a3f667aac1 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -32,14 +32,14 @@ }, "dependencies": { "@vercel/nft": "^0.26.1", - "esbuild": "^0.19.11" + "esbuild": "^0.20.2" }, "devDependencies": { "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "@types/node": "^18.19.3", "typescript": "^5.3.3", - "vitest": "^1.2.0" + "vitest": "^1.5.0" }, "peerDependencies": { "@sveltejs/kit": "^2.4.0" diff --git a/packages/create-svelte/package.json b/packages/create-svelte/package.json index 94a07347f49f..a0b3b1ca2df3 100644 --- a/packages/create-svelte/package.json +++ b/packages/create-svelte/package.json @@ -25,7 +25,7 @@ "svelte": "^4.2.10", "tiny-glob": "^0.2.9", "typescript": "^5.3.3", - "vitest": "^1.2.0" + "vitest": "^1.5.0" }, "scripts": { "build": "node scripts/build-templates", diff --git a/packages/create-svelte/templates/default/package.json b/packages/create-svelte/templates/default/package.json index f15a5208ea74..360e46b6759a 100644 --- a/packages/create-svelte/templates/default/package.json +++ b/packages/create-svelte/templates/default/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.0", "svelte": "^4.2.10", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module", "dependencies": { diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 9618bdef5a73..d79a7f89275e 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -34,10 +34,10 @@ "@types/estree": "^1.0.5", "@types/node": "^18.19.3", "estree-walker": "^3.0.3", - "rollup": "^4.9.5", + "rollup": "^4.14.2", "svelte": "^4.2.10", "typescript": "^5.3.3", - "vite": "^5.1.0", - "vitest": "^1.2.0" + "vite": "^5.2.8", + "vitest": "^1.5.0" } } diff --git a/packages/kit/package.json b/packages/kit/package.json index ecbe1b46ad09..8759e65c5d45 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -31,13 +31,13 @@ "@types/node": "^18.19.3", "@types/sade": "^1.7.8", "@types/set-cookie-parser": "^2.4.7", - "dts-buddy": "^0.4.3", - "rollup": "^4.9.5", + "dts-buddy": "0.4.6", + "rollup": "^4.14.2", "svelte": "^4.2.10", "svelte-preprocess": "^5.1.3", "typescript": "^5.3.3", - "vite": "^5.1.0", - "vitest": "^1.2.0" + "vite": "^5.2.8", + "vitest": "^1.5.0" }, "peerDependencies": { "@sveltejs/vite-plugin-svelte": "^3.0.0", diff --git a/packages/kit/test/apps/amp/package.json b/packages/kit/test/apps/amp/package.json index 1ae297dab459..8c2942132c68 100644 --- a/packages/kit/test/apps/amp/package.json +++ b/packages/kit/test/apps/amp/package.json @@ -20,7 +20,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index 0c3bfe9709f4..a9a4f3bea734 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -21,7 +21,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/apps/dev-only/package.json b/packages/kit/test/apps/dev-only/package.json index 8a6a1c9b376b..148e92fde2bf 100644 --- a/packages/kit/test/apps/dev-only/package.json +++ b/packages/kit/test/apps/dev-only/package.json @@ -16,7 +16,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/apps/embed/package.json b/packages/kit/test/apps/embed/package.json index 989f65f7547e..d842b21fd2ce 100644 --- a/packages/kit/test/apps/embed/package.json +++ b/packages/kit/test/apps/embed/package.json @@ -18,7 +18,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/apps/no-ssr/package.json b/packages/kit/test/apps/no-ssr/package.json index 3f2cdbed89ad..291ea332fb81 100644 --- a/packages/kit/test/apps/no-ssr/package.json +++ b/packages/kit/test/apps/no-ssr/package.json @@ -18,7 +18,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/apps/options-2/package.json b/packages/kit/test/apps/options-2/package.json index 41ae007ca29f..720ef42edc2c 100644 --- a/packages/kit/test/apps/options-2/package.json +++ b/packages/kit/test/apps/options-2/package.json @@ -19,7 +19,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/apps/options/package.json b/packages/kit/test/apps/options/package.json index f17d01fb121d..7af44dba4833 100644 --- a/packages/kit/test/apps/options/package.json +++ b/packages/kit/test/apps/options/package.json @@ -18,7 +18,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/apps/writes/package.json b/packages/kit/test/apps/writes/package.json index 98a8c298f756..a29ed1ab8880 100644 --- a/packages/kit/test/apps/writes/package.json +++ b/packages/kit/test/apps/writes/package.json @@ -18,7 +18,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json index f12f781a8c50..2ef0df162e6e 100644 --- a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json +++ b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json index f12f781a8c50..2ef0df162e6e 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json index b9634f2035ac..19227a24a23f 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json index 75822705e27a..c327090ac84b 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json index 740157ae6fab..eb4a984251a3 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json index 877b0b41cba1..de43b6cea186 100644 --- a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-static-env/package.json b/packages/kit/test/build-errors/apps/private-static-env/package.json index 944454ce26ac..a6bac1be1a21 100644 --- a/packages/kit/test/build-errors/apps/private-static-env/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env/package.json @@ -16,7 +16,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json index b07ed5696b7b..6302dbd79506 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-folder/package.json b/packages/kit/test/build-errors/apps/server-only-folder/package.json index e89ff0349b78..f72eba3f81ac 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json index 2068a14f253e..a44c3648efbf 100644 --- a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-module/package.json b/packages/kit/test/build-errors/apps/server-only-module/package.json index 95fd768b2064..a84b1b127223 100644 --- a/packages/kit/test/build-errors/apps/server-only-module/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json index a9e55f2bccd0..5f56b026483c 100644 --- a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json index c2d958a8cac6..9331252d0954 100644 --- a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json @@ -15,7 +15,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/syntax-error/package.json b/packages/kit/test/build-errors/apps/syntax-error/package.json index d4eedf21335c..e892d8c3560b 100644 --- a/packages/kit/test/build-errors/apps/syntax-error/package.json +++ b/packages/kit/test/build-errors/apps/syntax-error/package.json @@ -13,7 +13,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module" } diff --git a/packages/kit/test/build-errors/package.json b/packages/kit/test/build-errors/package.json index 5ce9595202ed..acee92783b35 100644 --- a/packages/kit/test/build-errors/package.json +++ b/packages/kit/test/build-errors/package.json @@ -8,6 +8,6 @@ }, "type": "module", "devDependencies": { - "vitest": "^1.2.0" + "vitest": "^1.5.0" } } diff --git a/packages/kit/test/prerendering/basics/package.json b/packages/kit/test/prerendering/basics/package.json index 6e22c9966f1d..6f0fabefb30a 100644 --- a/packages/kit/test/prerendering/basics/package.json +++ b/packages/kit/test/prerendering/basics/package.json @@ -16,8 +16,8 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0", - "vitest": "^1.2.0" + "vite": "^5.2.8", + "vitest": "^1.5.0" }, "type": "module" } diff --git a/packages/kit/test/prerendering/options/package.json b/packages/kit/test/prerendering/options/package.json index 798a975cf6d0..f12c4fac788d 100644 --- a/packages/kit/test/prerendering/options/package.json +++ b/packages/kit/test/prerendering/options/package.json @@ -15,8 +15,8 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0", - "vitest": "^1.2.0" + "vite": "^5.2.8", + "vitest": "^1.5.0" }, "type": "module" } diff --git a/packages/kit/test/prerendering/paths-base/package.json b/packages/kit/test/prerendering/paths-base/package.json index c4ffcd077ced..397ef17ef5e5 100644 --- a/packages/kit/test/prerendering/paths-base/package.json +++ b/packages/kit/test/prerendering/paths-base/package.json @@ -15,8 +15,8 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0", - "vitest": "^1.2.0" + "vite": "^5.2.8", + "vitest": "^1.5.0" }, "type": "module" } diff --git a/packages/migrate/package.json b/packages/migrate/package.json index f423a05bdb9c..fa1dbfdf4aea 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -37,7 +37,7 @@ "@types/prompts": "^2.4.9", "@types/semver": "^7.5.6", "prettier": "^3.1.1", - "vitest": "^1.2.0" + "vitest": "^1.5.0" }, "scripts": { "test": "vitest run --silent", diff --git a/playgrounds/basic/package.json b/playgrounds/basic/package.json index aaa3cb2a0a6b..6c128e71cac4 100644 --- a/playgrounds/basic/package.json +++ b/playgrounds/basic/package.json @@ -27,7 +27,7 @@ "svelte": "^4.2.10", "svelte-check": "^3.6.3", "typescript": "^5.3.3", - "vite": "^5.1.0" + "vite": "^5.2.8" }, "type": "module", "exports": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 988c6f20c559..d224111d8272 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 2.27.1 '@sveltejs/eslint-config': specifier: ^7.0.1 - version: 7.0.1(@stylistic/eslint-plugin-js@1.7.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.36.0)(eslint-plugin-unicorn@52.0.0)(eslint@9.0.0)(typescript-eslint@7.6.0)(typescript@5.3.3) + version: 7.0.1(@stylistic/eslint-plugin-js@1.7.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.37.0)(eslint-plugin-unicorn@52.0.0)(eslint@9.0.0)(typescript-eslint@7.6.0)(typescript@5.4.5) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 @@ -25,16 +25,16 @@ importers: version: 9.1.0(eslint@9.0.0) eslint-plugin-svelte: specifier: ^2.36.0 - version: 2.36.0(eslint@9.0.0) + version: 2.37.0(eslint@9.0.0) eslint-plugin-unicorn: specifier: ^52.0.0 version: 52.0.0(eslint@9.0.0) playwright: specifier: ^1.41.0 - version: 1.41.2 + version: 1.43.1 typescript-eslint: specifier: ^7.6.0 - version: 7.6.0(eslint@9.0.0)(typescript@5.3.3) + version: 7.6.0(eslint@9.0.0)(typescript@5.4.5) packages/adapter-auto: dependencies: @@ -47,56 +47,56 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 packages/adapter-cloudflare: dependencies: '@cloudflare/workers-types': specifier: ^4.20231121.0 - version: 4.20240129.0 + version: 4.20240405.0 esbuild: - specifier: ^0.19.11 - version: 0.19.12 + specifier: ^0.20.2 + version: 0.20.2 worktop: specifier: 0.8.0-next.18 version: 0.8.0-next.18 wrangler: specifier: ^3.28.4 - version: 3.30.1(@cloudflare/workers-types@4.20240129.0) + version: 3.50.0(@cloudflare/workers-types@4.20240405.0) devDependencies: '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 '@types/ws': specifier: ^8.5.10 version: 8.5.10 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 packages/adapter-cloudflare-workers: dependencies: '@cloudflare/workers-types': specifier: ^4.20231121.0 - version: 4.20240129.0 + version: 4.20240405.0 '@iarna/toml': specifier: ^2.2.5 version: 2.2.5 esbuild: - specifier: ^0.19.11 - version: 0.19.12 + specifier: ^0.20.2 + version: 0.20.2 wrangler: specifier: ^3.28.4 - version: 3.30.1(@cloudflare/workers-types@4.20240129.0) + version: 3.50.0(@cloudflare/workers-types@4.20240405.0) devDependencies: '@cloudflare/kv-asset-handler': specifier: ^0.3.0 @@ -106,10 +106,10 @@ importers: version: link:../kit '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 packages/adapter-netlify: dependencies: @@ -117,60 +117,60 @@ importers: specifier: ^2.2.5 version: 2.2.5 esbuild: - specifier: ^0.19.11 - version: 0.19.12 + specifier: ^0.20.2 + version: 0.20.2 set-cookie-parser: specifier: ^2.6.0 version: 2.6.0 devDependencies: '@netlify/functions': specifier: ^2.4.1 - version: 2.5.1 + version: 2.6.0 '@rollup/plugin-commonjs': specifier: ^25.0.7 - version: 25.0.7(rollup@4.9.6) + version: 25.0.7(rollup@4.14.2) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.9.6) + version: 6.1.0(rollup@4.14.2) '@rollup/plugin-node-resolve': specifier: ^15.2.3 - version: 15.2.3(rollup@4.9.6) + version: 15.2.3(rollup@4.14.2) '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 '@types/set-cookie-parser': specifier: ^2.4.7 version: 2.4.7 rollup: - specifier: ^4.9.5 - version: 4.9.6 + specifier: ^4.14.2 + version: 4.14.2 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/adapter-node: dependencies: '@rollup/plugin-commonjs': specifier: ^25.0.7 - version: 25.0.7(rollup@4.9.6) + version: 25.0.7(rollup@4.14.2) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.9.6) + version: 6.1.0(rollup@4.14.2) '@rollup/plugin-node-resolve': specifier: ^15.2.3 - version: 15.2.3(rollup@4.9.6) + version: 15.2.3(rollup@4.14.2) rollup: specifier: ^4.9.5 - version: 4.9.6 + version: 4.14.2 devDependencies: '@polka/url': specifier: 1.0.0-next.25 @@ -180,10 +180,10 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 c8: specifier: ^9.0.0 version: 9.1.0 @@ -195,37 +195,37 @@ importers: version: 2.0.4 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/adapter-static: devDependencies: '@playwright/test': specifier: ^1.41.0 - version: 1.41.2 + version: 1.43.1 '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 sirv: specifier: ^2.0.4 version: 2.0.4 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/adapter-static/test/apps/prerendered: devDependencies: @@ -234,16 +234,16 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) sirv-cli: specifier: ^2.0.2 version: 2.0.2 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/adapter-static/test/apps/spa: devDependencies: @@ -255,41 +255,41 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) sirv-cli: specifier: ^2.0.2 version: 2.0.2 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/adapter-vercel: dependencies: '@vercel/nft': specifier: ^0.26.1 - version: 0.26.3 + version: 0.26.4 esbuild: - specifier: ^0.19.11 - version: 0.19.12 + specifier: ^0.20.2 + version: 0.20.2 devDependencies: '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/amp: dependencies: @@ -308,7 +308,7 @@ importers: devDependencies: '@playwright/test': specifier: ^1.41.0 - version: 1.41.2 + version: 1.43.1 '@types/gitignore-parser': specifier: ^0.0.3 version: 0.0.3 @@ -320,28 +320,28 @@ importers: version: 3.2.5 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.1.2(prettier@3.2.5)(svelte@4.2.10) + version: 3.1.2(prettier@3.2.5)(svelte@4.2.14) sucrase: specifier: ^3.34.0 version: 3.35.0 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 tiny-glob: specifier: ^0.2.9 version: 0.2.9 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/create-svelte/templates/default: dependencies: '@fontsource/fira-mono': specifier: ^5.0.8 - version: 5.0.8 + version: 5.0.12 devDependencies: '@neoconfetti/svelte': specifier: ^1.0.0 @@ -354,16 +354,16 @@ importers: version: link:../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/create-svelte/templates/skeleton: devDependencies: @@ -375,38 +375,38 @@ importers: dependencies: magic-string: specifier: ^0.30.5 - version: 0.30.7 + version: 0.30.9 svelte-parse-markup: specifier: ^0.1.2 - version: 0.1.2(svelte@4.2.10) + version: 0.1.2(svelte@4.2.14) vite-imagetools: specifier: ^7.0.1 - version: 7.0.1(rollup@4.9.6) + version: 7.0.1(rollup@4.14.2) devDependencies: '@types/estree': specifier: ^1.0.5 version: 1.0.5 '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 estree-walker: specifier: ^3.0.3 version: 3.0.3 rollup: - specifier: ^4.9.5 - version: 4.9.6 + specifier: ^4.14.2 + version: 4.14.2 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit: dependencies: @@ -430,7 +430,7 @@ importers: version: 4.1.5 magic-string: specifier: ^0.30.5 - version: 0.30.7 + version: 0.30.9 mrmime: specifier: ^2.0.0 version: 2.0.0 @@ -449,43 +449,43 @@ importers: devDependencies: '@playwright/test': specifier: ^1.41.0 - version: 1.41.2 + version: 1.43.1 '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) '@types/connect': specifier: ^3.4.38 version: 3.4.38 '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 '@types/sade': specifier: ^1.7.8 - version: 1.7.8 + version: 1.8.0 '@types/set-cookie-parser': specifier: ^2.4.7 version: 2.4.7 dts-buddy: - specifier: ^0.4.3 - version: 0.4.4(typescript@5.3.3) + specifier: 0.4.6 + version: 0.4.6(typescript@5.4.5) rollup: - specifier: ^4.9.5 - version: 4.9.6 + specifier: ^4.14.2 + version: 4.14.2 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-preprocess: specifier: ^5.1.3 - version: 5.1.3(postcss@8.4.38)(svelte@4.2.10)(typescript@5.3.3) + version: 5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/apps/amp: devDependencies: @@ -497,7 +497,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -506,16 +506,16 @@ importers: version: 1.0.16 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/apps/basics: devDependencies: @@ -524,25 +524,25 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) cross-env: specifier: ^7.0.3 version: 7.0.3 marked: specifier: ^12.0.0 - version: 12.0.0 + version: 12.0.1 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/apps/dev-only: devDependencies: @@ -551,22 +551,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/apps/embed: devDependencies: @@ -575,22 +575,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/apps/no-ssr: devDependencies: @@ -599,22 +599,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/apps/options: devDependencies: @@ -623,22 +623,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/apps/options-2: devDependencies: @@ -650,22 +650,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/apps/writes: devDependencies: @@ -674,28 +674,28 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors: devDependencies: vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch: devDependencies: @@ -707,19 +707,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment: devDependencies: @@ -731,19 +731,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/prerenderable-not-prerendered: devDependencies: @@ -755,19 +755,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/private-dynamic-env: devDependencies: @@ -776,19 +776,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import: devDependencies: @@ -797,19 +797,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/private-static-env: devDependencies: @@ -818,22 +818,22 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/private-static-env-dynamic-import: devDependencies: @@ -842,19 +842,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/server-only-folder: devDependencies: @@ -863,19 +863,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/server-only-folder-dynamic-import: devDependencies: @@ -884,19 +884,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/server-only-module: devDependencies: @@ -905,19 +905,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/server-only-module-dynamic-import: devDependencies: @@ -926,19 +926,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/service-worker-dynamic-public-env: devDependencies: @@ -947,19 +947,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/service-worker-private-env: devDependencies: @@ -968,19 +968,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/syntax-error: devDependencies: @@ -989,19 +989,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/prerendering/basics: devDependencies: @@ -1010,22 +1010,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/prerendering/options: devDependencies: @@ -1034,22 +1034,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/kit/test/prerendering/paths-base: devDependencies: @@ -1058,22 +1058,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/migrate: dependencies: @@ -1082,7 +1082,7 @@ importers: version: 4.1.5 magic-string: specifier: ^0.30.5 - version: 0.30.7 + version: 0.30.9 prompts: specifier: ^2.4.2 version: 2.4.2 @@ -1097,23 +1097,23 @@ importers: version: 22.0.0 typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 devDependencies: '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 '@types/prompts': specifier: ^2.4.9 version: 2.4.9 '@types/semver': specifier: ^7.5.6 - version: 7.5.6 + version: 7.5.8 prettier: specifier: ^3.1.1 version: 3.2.5 vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages/package: dependencies: @@ -1131,26 +1131,26 @@ importers: version: 7.6.0 svelte2tsx: specifier: ~0.7.0 - version: 0.7.1(svelte@4.2.10)(typescript@5.3.3) + version: 0.7.6(svelte@4.2.14)(typescript@5.4.5) devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 '@types/semver': specifier: ^7.5.6 - version: 7.5.6 + version: 7.5.8 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-preprocess: specifier: ^5.1.3 - version: 5.1.3(postcss@8.4.38)(svelte@4.2.10)(typescript@5.3.3) + version: 5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 uvu: specifier: ^0.5.6 version: 0.5.6 @@ -1189,28 +1189,28 @@ importers: version: link:../../packages/package '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) publint: specifier: ^0.2.0 version: 0.2.7 svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 svelte-check: specifier: ^3.6.3 - version: 3.6.3(postcss@8.4.38)(svelte@4.2.10) + version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) typescript: specifier: ^5.3.3 - version: 5.3.3 + version: 5.4.5 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) sites/kit.svelte.dev: dependencies: d3-geo: specifier: ^3.1.0 - version: 3.1.0 + version: 3.1.1 d3-geo-projection: specifier: ^4.0.0 version: 4.0.0 @@ -1232,34 +1232,34 @@ importers: version: link:../../packages/kit '@sveltejs/site-kit': specifier: 6.0.0-next.59 - version: 6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.10) + version: 6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.14) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.2(svelte@4.2.10)(vite@5.1.0) + version: 3.1.0(svelte@4.2.14)(vite@5.2.8) '@types/d3-geo': specifier: ^3.1.0 version: 3.1.0 '@types/node': specifier: ^18.19.3 - version: 18.19.14 + version: 18.19.31 browserslist: specifier: ^4.22.2 - version: 4.22.3 + version: 4.23.0 flexsearch: specifier: ^0.7.31 version: 0.7.43 lightningcss: specifier: ^1.22.1 - version: 1.23.0 + version: 1.24.1 marked: specifier: ^12.0.0 - version: 12.0.0 + version: 12.0.1 prettier: specifier: ^3.1.1 version: 3.2.5 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.1.2(prettier@3.2.5)(svelte@4.2.10) + version: 3.1.2(prettier@3.2.5)(svelte@4.2.14) prism-svelte: specifier: ^0.5.0 version: 0.5.0 @@ -1271,16 +1271,16 @@ importers: version: 3.1.2(typescript@5.0.4) svelte: specifier: ^4.2.10 - version: 4.2.10 + version: 4.2.14 typescript: specifier: 5.0.4 version: 5.0.4 vite: - specifier: ^5.1.0 - version: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^5.2.8 + version: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) vitest: - specifier: ^1.2.0 - version: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + specifier: ^1.5.0 + version: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) packages: @@ -1289,19 +1289,19 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 dev: true /@babel/helper-validator-identifier@7.22.20: @@ -1309,17 +1309,18 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 + picocolors: 1.0.0 dev: true - /@babel/runtime@7.23.9: - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} + /@babel/runtime@7.24.4: + resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 @@ -1332,7 +1333,7 @@ packages: /@changesets/apply-release-plan@7.0.0: resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.4 '@changesets/config': 3.0.0 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.0 @@ -1350,7 +1351,7 @@ packages: /@changesets/assemble-release-plan@6.0.0: resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.4 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.0.0 '@changesets/types': 6.0.0 @@ -1368,7 +1369,7 @@ packages: resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} hasBin: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.4 '@changesets/apply-release-plan': 7.0.0 '@changesets/assemble-release-plan': 6.0.0 '@changesets/changelog-git': 0.2.0 @@ -1383,7 +1384,7 @@ packages: '@changesets/types': 6.0.0 '@changesets/write': 0.3.0 '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.6 + '@types/semver': 7.5.8 ansi-colors: 4.1.3 chalk: 2.4.2 ci-info: 3.9.0 @@ -1394,7 +1395,7 @@ packages: meow: 6.1.1 outdent: 0.5.0 p-limit: 2.3.0 - preferred-pm: 3.1.2 + preferred-pm: 3.1.3 resolve-from: 5.0.0 semver: 7.6.0 spawndamnit: 2.0.0 @@ -1442,7 +1443,7 @@ packages: /@changesets/get-release-plan@4.0.0: resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.4 '@changesets/assemble-release-plan': 6.0.0 '@changesets/config': 3.0.0 '@changesets/pre': 2.0.0 @@ -1458,7 +1459,7 @@ packages: /@changesets/git@3.0.0: resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.4 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -1483,7 +1484,7 @@ packages: /@changesets/pre@2.0.0: resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.4 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -1493,7 +1494,7 @@ packages: /@changesets/read@0.6.0: resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.4 '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/parse': 0.4.0 @@ -1514,15 +1515,15 @@ packages: /@changesets/write@0.3.0: resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.4 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 dev: true - /@clack/core@0.3.3: - resolution: {integrity: sha512-5ZGyb75BUBjlll6eOa1m/IZBxwk91dooBWhPSL67sWcLS0zt9SnswRL0l26TVdBhb0wnWORRxUn//uH6n4z7+A==} + /@clack/core@0.3.4: + resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} dependencies: picocolors: 1.0.0 sisteransi: 1.0.5 @@ -1531,7 +1532,7 @@ packages: /@clack/prompts@0.7.0: resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} dependencies: - '@clack/core': 0.3.3 + '@clack/core': 0.3.4 picocolors: 1.0.0 sisteransi: 1.0.5 dev: false @@ -1543,8 +1544,8 @@ packages: dependencies: mime: 3.0.0 - /@cloudflare/workerd-darwin-64@1.20240223.1: - resolution: {integrity: sha512-GgHnvkazLFZ7bmR96+dTX0+WS13a+5CHOOP3qNUSR9oEnR4hHzpNIO75MuZsm9RPAXrvtT7nSJmYwiGCZXh6og==} + /@cloudflare/workerd-darwin-64@1.20240405.0: + resolution: {integrity: sha512-ut8kwpHmlz9dNSjoov6v1b6jS50J46Mj9QcMA0t1Hne36InaQk/qqPSd12fN5p2GesZ9OOBJvBdDsTblVdyJ1w==} engines: {node: '>=16'} cpu: [x64] os: [darwin] @@ -1552,8 +1553,8 @@ packages: dev: false optional: true - /@cloudflare/workerd-darwin-arm64@1.20240223.1: - resolution: {integrity: sha512-ZF98vUmVlC0EVEd3RRuhMq4HYWFcqmPtMIMPUN2+ivEHR92TE+6E/AvdeE6wcE7fKHQ+fk3dH+ZgB0GcfptfnA==} + /@cloudflare/workerd-darwin-arm64@1.20240405.0: + resolution: {integrity: sha512-x3A3Ym+J2DH1uYnw0aedeKOTnUebEo312+Aladv7bFri97pjRJcqVbYhMtOHLkHjwYn7bpKSY2eL5iM+0XT29A==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] @@ -1561,8 +1562,8 @@ packages: dev: false optional: true - /@cloudflare/workerd-linux-64@1.20240223.1: - resolution: {integrity: sha512-1kH41ewNTGMmAk2zUX0Xj9VSfidl26GQ0ZrWMdi5kwf6gAHd3oVWNigJN078Jx56SgQxNcqVGX1LunqF949asw==} + /@cloudflare/workerd-linux-64@1.20240405.0: + resolution: {integrity: sha512-3tYpfjtxEQ0R30Pna7OF3Bz0CTx30hc0QNtH61KnkvXtaeYMkWutSKQKXIuVlPa/7v1MHp+8ViBXMflmS7HquA==} engines: {node: '>=16'} cpu: [x64] os: [linux] @@ -1570,8 +1571,8 @@ packages: dev: false optional: true - /@cloudflare/workerd-linux-arm64@1.20240223.1: - resolution: {integrity: sha512-Ro8Og5C4evh890JrRm0B8sHyumRtgL+mUqPeNcEsyG45jAQy5xHpapHnmJAMJV6ah+zDc1cZtQq+en39SojXvQ==} + /@cloudflare/workerd-linux-arm64@1.20240405.0: + resolution: {integrity: sha512-NpKZlvmdgcX/m4tP5zM91AfJpZrue2/GRA+Sl3szxAivu2uE5jDVf5SS9dzqzCVfPrdhylqH7yeL4U/cafFNOg==} engines: {node: '>=16'} cpu: [arm64] os: [linux] @@ -1579,8 +1580,8 @@ packages: dev: false optional: true - /@cloudflare/workerd-windows-64@1.20240223.1: - resolution: {integrity: sha512-eNP5sfaP6WL07DaoigYou5ASPF7jHsFiNzzD2vGOI7yFd5sPlb7sJ4SpIy+BCX0LdqFnjmlUo5Xr+/I6qJ2Nww==} + /@cloudflare/workerd-windows-64@1.20240405.0: + resolution: {integrity: sha512-REBeJMxvUCjwuEVzSSIBtzAyM69QjToab8qBst0S9vdih+9DObym4dw8CevdBQhDbFrHiyL9E6pAZpLPNHVgCw==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -1588,8 +1589,8 @@ packages: dev: false optional: true - /@cloudflare/workers-types@4.20240129.0: - resolution: {integrity: sha512-VyHbih/bqh/RN2FRxnXznG0bpBIg9RfSP1ldbAVnCXFinjOdv0zm2P/RWqOVN9+FgU5sanRltwwT7jGngxZy8w==} + /@cloudflare/workers-types@4.20240405.0: + resolution: {integrity: sha512-sEVOhyOgXUwfLkgHqbLZa/sfkSYrh7/zLmI6EZNibPaVPvAnAcItbNNl3SAlLyLKuwf8m4wAIAgu9meKWCvXjg==} dev: false /@cspotcode/source-map-support@0.8.1: @@ -1599,8 +1600,8 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: false - /@emnapi/runtime@0.45.0: - resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==} + /@emnapi/runtime@1.1.1: + resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==} requiresBuild: true dependencies: tslib: 2.6.2 @@ -1625,8 +1626,8 @@ packages: rollup-plugin-node-polyfills: 0.2.1 dev: false - /@esbuild/aix-ppc64@0.19.12: - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] @@ -1642,8 +1643,8 @@ packages: dev: false optional: true - /@esbuild/android-arm64@0.19.12: - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + /@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1659,8 +1660,8 @@ packages: dev: false optional: true - /@esbuild/android-arm@0.19.12: - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + /@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -1676,8 +1677,8 @@ packages: dev: false optional: true - /@esbuild/android-x64@0.19.12: - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + /@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1693,8 +1694,8 @@ packages: dev: false optional: true - /@esbuild/darwin-arm64@0.19.12: - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + /@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1710,8 +1711,8 @@ packages: dev: false optional: true - /@esbuild/darwin-x64@0.19.12: - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + /@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1727,8 +1728,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-arm64@0.19.12: - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + /@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1744,8 +1745,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-x64@0.19.12: - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + /@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1761,8 +1762,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm64@0.19.12: - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + /@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1778,8 +1779,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm@0.19.12: - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + /@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1795,8 +1796,8 @@ packages: dev: false optional: true - /@esbuild/linux-ia32@0.19.12: - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + /@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1812,8 +1813,8 @@ packages: dev: false optional: true - /@esbuild/linux-loong64@0.19.12: - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1829,8 +1830,8 @@ packages: dev: false optional: true - /@esbuild/linux-mips64el@0.19.12: - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1846,8 +1847,8 @@ packages: dev: false optional: true - /@esbuild/linux-ppc64@0.19.12: - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1863,8 +1864,8 @@ packages: dev: false optional: true - /@esbuild/linux-riscv64@0.19.12: - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1880,8 +1881,8 @@ packages: dev: false optional: true - /@esbuild/linux-s390x@0.19.12: - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1897,8 +1898,8 @@ packages: dev: false optional: true - /@esbuild/linux-x64@0.19.12: - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1914,8 +1915,8 @@ packages: dev: false optional: true - /@esbuild/netbsd-x64@0.19.12: - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -1931,8 +1932,8 @@ packages: dev: false optional: true - /@esbuild/openbsd-x64@0.19.12: - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -1948,8 +1949,8 @@ packages: dev: false optional: true - /@esbuild/sunos-x64@0.19.12: - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -1965,8 +1966,8 @@ packages: dev: false optional: true - /@esbuild/win32-arm64@0.19.12: - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -1982,8 +1983,8 @@ packages: dev: false optional: true - /@esbuild/win32-ia32@0.19.12: - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1999,8 +2000,8 @@ packages: dev: false optional: true - /@esbuild/win32-x64@0.19.12: - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2066,8 +2067,8 @@ packages: engines: {node: '>=14'} dev: false - /@fontsource/fira-mono@5.0.8: - resolution: {integrity: sha512-8OJiUK2lzJjvDlkmamEfhtpL1cyFApg1Pk4kE5Pw5UTf1ETF3Yy/pprgwV5I+LQPDjuFvinsinT9xSUZ2b/zuQ==} + /@fontsource/fira-mono@5.0.12: + resolution: {integrity: sha512-1uFRjqCcxVv4F31PjyLm8o4oNlT5ywwh6OwcDGkZbafOeFZHXekvholS9IlfZkRsZvVhSbFRHT/5iDib4KTtpg==} dev: false /@humanwhocodes/config-array@0.12.3: @@ -2094,30 +2095,30 @@ packages: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} dev: false - /@img/sharp-darwin-arm64@0.33.2: - resolution: {integrity: sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==} + /@img/sharp-darwin-arm64@0.33.3: + resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [darwin] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.1 + '@img/sharp-libvips-darwin-arm64': 1.0.2 dev: false optional: true - /@img/sharp-darwin-x64@0.33.2: - resolution: {integrity: sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==} + /@img/sharp-darwin-x64@0.33.3: + resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [darwin] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.1 + '@img/sharp-libvips-darwin-x64': 1.0.2 dev: false optional: true - /@img/sharp-libvips-darwin-arm64@1.0.1: - resolution: {integrity: sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==} + /@img/sharp-libvips-darwin-arm64@1.0.2: + resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [darwin] @@ -2125,8 +2126,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-darwin-x64@1.0.1: - resolution: {integrity: sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==} + /@img/sharp-libvips-darwin-x64@1.0.2: + resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [darwin] @@ -2134,8 +2135,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-arm64@1.0.1: - resolution: {integrity: sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==} + /@img/sharp-libvips-linux-arm64@1.0.2: + resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] @@ -2143,8 +2144,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-arm@1.0.1: - resolution: {integrity: sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==} + /@img/sharp-libvips-linux-arm@1.0.2: + resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm] os: [linux] @@ -2152,8 +2153,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-s390x@1.0.1: - resolution: {integrity: sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==} + /@img/sharp-libvips-linux-s390x@1.0.2: + resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [s390x] os: [linux] @@ -2161,8 +2162,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-x64@1.0.1: - resolution: {integrity: sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==} + /@img/sharp-libvips-linux-x64@1.0.2: + resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] @@ -2170,8 +2171,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linuxmusl-arm64@1.0.1: - resolution: {integrity: sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==} + /@img/sharp-libvips-linuxmusl-arm64@1.0.2: + resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] @@ -2179,8 +2180,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linuxmusl-x64@1.0.1: - resolution: {integrity: sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==} + /@img/sharp-libvips-linuxmusl-x64@1.0.2: + resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] @@ -2188,84 +2189,84 @@ packages: dev: false optional: true - /@img/sharp-linux-arm64@0.33.2: - resolution: {integrity: sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==} + /@img/sharp-linux-arm64@0.33.3: + resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.1 + '@img/sharp-libvips-linux-arm64': 1.0.2 dev: false optional: true - /@img/sharp-linux-arm@0.33.2: - resolution: {integrity: sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==} + /@img/sharp-linux-arm@0.33.3: + resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==} engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.1 + '@img/sharp-libvips-linux-arm': 1.0.2 dev: false optional: true - /@img/sharp-linux-s390x@0.33.2: - resolution: {integrity: sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==} + /@img/sharp-linux-s390x@0.33.3: + resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==} engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [s390x] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.1 + '@img/sharp-libvips-linux-s390x': 1.0.2 dev: false optional: true - /@img/sharp-linux-x64@0.33.2: - resolution: {integrity: sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==} + /@img/sharp-linux-x64@0.33.3: + resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.1 + '@img/sharp-libvips-linux-x64': 1.0.2 dev: false optional: true - /@img/sharp-linuxmusl-arm64@0.33.2: - resolution: {integrity: sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==} + /@img/sharp-linuxmusl-arm64@0.33.3: + resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==} engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 dev: false optional: true - /@img/sharp-linuxmusl-x64@0.33.2: - resolution: {integrity: sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==} + /@img/sharp-linuxmusl-x64@0.33.3: + resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==} engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] requiresBuild: true optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.1 + '@img/sharp-libvips-linuxmusl-x64': 1.0.2 dev: false optional: true - /@img/sharp-wasm32@0.33.2: - resolution: {integrity: sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==} + /@img/sharp-wasm32@0.33.3: + resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [wasm32] requiresBuild: true dependencies: - '@emnapi/runtime': 0.45.0 + '@emnapi/runtime': 1.1.1 dev: false optional: true - /@img/sharp-win32-ia32@0.33.2: - resolution: {integrity: sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==} + /@img/sharp-win32-ia32@0.33.3: + resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [ia32] os: [win32] @@ -2273,8 +2274,8 @@ packages: dev: false optional: true - /@img/sharp-win32-x64@0.33.2: - resolution: {integrity: sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==} + /@img/sharp-win32-x64@0.33.3: + resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [win32] @@ -2306,49 +2307,49 @@ packages: '@sinclair/typebox': 0.27.8 dev: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.2 + '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.22: - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 dev: false /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.4 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -2357,7 +2358,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.4 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -2369,7 +2370,7 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true dependencies: - detect-libc: 2.0.2 + detect-libc: 2.0.3 https-proxy-agent: 5.0.1 make-dir: 3.1.0 node-fetch: 2.7.0 @@ -2377,7 +2378,7 @@ packages: npmlog: 5.0.1 rimraf: 3.0.2 semver: 7.6.0 - tar: 6.2.0 + tar: 6.2.1 transitivePeerDependencies: - encoding - supports-color @@ -2387,12 +2388,11 @@ packages: resolution: {integrity: sha512-SmksyaJAdSlMa9cTidVSIqYo1qti+WTsviNDwgjNVm+KQ3DRP2Df9umDIzC4vCcpEYY+chQe0i2IKnLw03AT8Q==} dev: true - /@netlify/functions@2.5.1: - resolution: {integrity: sha512-7//hmiFHXGusAzuzEuXvRT9ItaeRjRs5lRs6lYUkaAXO1jnTWYDB2XdqFq5X4yMRX+/A96nrQ2HwCE+Pd0YMwg==} + /@netlify/functions@2.6.0: + resolution: {integrity: sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ==} engines: {node: '>=14.0.0'} dependencies: - '@netlify/serverless-functions-api': 1.13.0 - is-promise: 4.0.0 + '@netlify/serverless-functions-api': 1.14.0 dev: true /@netlify/node-cookies@0.1.0: @@ -2400,8 +2400,8 @@ packages: engines: {node: ^14.16.0 || >=16.0.0} dev: true - /@netlify/serverless-functions-api@1.13.0: - resolution: {integrity: sha512-H3SMpHw24jWjnEMqbXgILWdo3/Iv/2DRzOZZevqqEswRTOWcQJGlU35Dth72VAOxhPyWXjulogG1zJNRw8m2sQ==} + /@netlify/serverless-functions-api@1.14.0: + resolution: {integrity: sha512-HUNETLNvNiC2J+SB/YuRwJA9+agPrc0azSoWVk8H85GC+YE114hcS5JW+dstpKwVerp2xILE3vNWN7IMXP5Q5Q==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@netlify/node-cookies': 0.1.0 @@ -2433,18 +2433,18 @@ packages: dev: true optional: true - /@playwright/test@1.41.2: - resolution: {integrity: sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==} + /@playwright/test@1.43.1: + resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} engines: {node: '>=16'} hasBin: true dependencies: - playwright: 1.41.2 + playwright: 1.43.1 dev: true /@polka/url@1.0.0-next.25: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - /@rollup/plugin-commonjs@25.0.7(rollup@4.9.6): + /@rollup/plugin-commonjs@25.0.7(rollup@4.14.2): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2453,15 +2453,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.14.2) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.7 - rollup: 4.9.6 + magic-string: 0.30.9 + rollup: 4.14.2 - /@rollup/plugin-json@6.1.0(rollup@4.9.6): + /@rollup/plugin-json@6.1.0(rollup@4.14.2): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2470,10 +2470,10 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) - rollup: 4.9.6 + '@rollup/pluginutils': 5.1.0(rollup@4.14.2) + rollup: 4.14.2 - /@rollup/plugin-node-resolve@15.2.3(rollup@4.9.6): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.14.2): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2482,13 +2482,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.14.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.9.6 + rollup: 4.14.2 /@rollup/pluginutils@4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -2498,7 +2498,7 @@ packages: picomatch: 2.3.1 dev: false - /@rollup/pluginutils@5.1.0(rollup@4.9.6): + /@rollup/pluginutils@5.1.0(rollup@4.14.2): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2510,94 +2510,108 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.9.6 + rollup: 4.14.2 - /@rollup/rollup-android-arm-eabi@4.9.6: - resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} + /@rollup/rollup-android-arm-eabi@4.14.2: + resolution: {integrity: sha512-ahxSgCkAEk+P/AVO0vYr7DxOD3CwAQrT0Go9BJyGQ9Ef0QxVOfjDZMiF4Y2s3mLyPrjonchIMH/tbWHucJMykQ==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.9.6: - resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} + /@rollup/rollup-android-arm64@4.14.2: + resolution: {integrity: sha512-lAarIdxZWbFSHFSDao9+I/F5jDaKyCqAPMq5HqnfpBw8dKDiCaaqM0lq5h1pQTLeIqueeay4PieGR5jGZMWprw==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.9.6: - resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} + /@rollup/rollup-darwin-arm64@4.14.2: + resolution: {integrity: sha512-SWsr8zEUk82KSqquIMgZEg2GE5mCSfr9sE/thDROkX6pb3QQWPp8Vw8zOq2GyxZ2t0XoSIUlvHDkrf5Gmf7x3Q==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.9.6: - resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} + /@rollup/rollup-darwin-x64@4.14.2: + resolution: {integrity: sha512-o/HAIrQq0jIxJAhgtIvV5FWviYK4WB0WwV91SLUnsliw1lSAoLsmgEEgRWzDguAFeUEUUoIWXiJrPqU7vGiVkA==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.9.6: - resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.14.2: + resolution: {integrity: sha512-nwlJ65UY9eGq91cBi6VyDfArUJSKOYt5dJQBq8xyLhvS23qO+4Nr/RreibFHjP6t+5ap2ohZrUJcHv5zk5ju/g==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.9.6: - resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} + /@rollup/rollup-linux-arm64-gnu@4.14.2: + resolution: {integrity: sha512-Pg5TxxO2IVlMj79+c/9G0LREC9SY3HM+pfAwX7zj5/cAuwrbfj2Wv9JbMHIdPCfQpYsI4g9mE+2Bw/3aeSs2rQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.9.6: - resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} + /@rollup/rollup-linux-arm64-musl@4.14.2: + resolution: {integrity: sha512-cAOTjGNm84gc6tS02D1EXtG7tDRsVSDTBVXOLbj31DkwfZwgTPYZ6aafSU7rD/4R2a34JOwlF9fQayuTSkoclA==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.9.6: - resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} + /@rollup/rollup-linux-powerpc64le-gnu@4.14.2: + resolution: {integrity: sha512-4RyT6v1kXb7C0fn6zV33rvaX05P0zHoNzaXI/5oFHklfKm602j+N4mn2YvoezQViRLPnxP8M1NaY4s/5kXO5cw==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.14.2: + resolution: {integrity: sha512-KNUH6jC/vRGAKSorySTyc/yRYlCwN/5pnMjXylfBniwtJx5O7X17KG/0efj8XM3TZU7raYRXJFFReOzNmL1n1w==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.9.6: - resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} + /@rollup/rollup-linux-s390x-gnu@4.14.2: + resolution: {integrity: sha512-xPV4y73IBEXToNPa3h5lbgXOi/v0NcvKxU0xejiFw6DtIYQqOTMhZ2DN18/HrrP0PmiL3rGtRG9gz1QE8vFKXQ==} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.14.2: + resolution: {integrity: sha512-QBhtr07iFGmF9egrPOWyO5wciwgtzKkYPNLVCFZTmr4TWmY0oY2Dm/bmhHjKRwZoGiaKdNcKhFtUMBKvlchH+Q==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.9.6: - resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} + /@rollup/rollup-linux-x64-musl@4.14.2: + resolution: {integrity: sha512-8zfsQRQGH23O6qazZSFY5jP5gt4cFvRuKTpuBsC1ZnSWxV8ZKQpPqOZIUtdfMOugCcBvFGRa1pDC/tkf19EgBw==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.9.6: - resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} + /@rollup/rollup-win32-arm64-msvc@4.14.2: + resolution: {integrity: sha512-H4s8UjgkPnlChl6JF5empNvFHp77Jx+Wfy2EtmYPe9G22XV+PMuCinZVHurNe8ggtwoaohxARJZbaH/3xjB/FA==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.9.6: - resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} + /@rollup/rollup-win32-ia32-msvc@4.14.2: + resolution: {integrity: sha512-djqpAjm/i8erWYF0K6UY4kRO3X5+T4TypIqw60Q8MTqSBaQNpNXDhxdjpZ3ikgb+wn99svA7jxcXpiyg9MUsdw==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.9.6: - resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} + /@rollup/rollup-win32-x64-msvc@4.14.2: + resolution: {integrity: sha512-teAqzLT0yTYZa8ZP7zhFKEx4cotS8Tkk5XiqNMJhD4CpaWB1BHARE4Qy+RzwnXvSAYv+Q3jAqCVBS+PS+Yee8Q==} cpu: [x64] os: [win32] requiresBuild: true @@ -2613,7 +2627,7 @@ packages: peerDependencies: eslint: '>=8.40.0' dependencies: - '@types/eslint': 8.56.7 + '@types/eslint': 8.56.9 acorn: 8.11.3 escape-string-regexp: 4.0.0 eslint: 9.0.0 @@ -2621,7 +2635,7 @@ packages: espree: 9.6.1 dev: true - /@sveltejs/eslint-config@7.0.1(@stylistic/eslint-plugin-js@1.7.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.36.0)(eslint-plugin-unicorn@52.0.0)(eslint@9.0.0)(typescript-eslint@7.6.0)(typescript@5.3.3): + /@sveltejs/eslint-config@7.0.1(@stylistic/eslint-plugin-js@1.7.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.37.0)(eslint-plugin-unicorn@52.0.0)(eslint@9.0.0)(typescript-eslint@7.6.0)(typescript@5.4.5): resolution: {integrity: sha512-0c65gMzIRkfSNxVtUmMB/0I0A+ypyIS7aJhXXU7dEdoOEmdN5K+GpGB4ybYBmqODJdZlNRmwNFaKxzzUGBkXQA==} peerDependencies: '@stylistic/eslint-plugin-js': '>= 1' @@ -2635,14 +2649,14 @@ packages: '@stylistic/eslint-plugin-js': 1.7.0(eslint@9.0.0) eslint: 9.0.0 eslint-config-prettier: 9.1.0(eslint@9.0.0) - eslint-plugin-svelte: 2.36.0(eslint@9.0.0) + eslint-plugin-svelte: 2.37.0(eslint@9.0.0) eslint-plugin-unicorn: 52.0.0(eslint@9.0.0) globals: 15.0.0 - typescript: 5.3.3 - typescript-eslint: 7.6.0(eslint@9.0.0)(typescript@5.3.3) + typescript: 5.4.5 + typescript-eslint: 7.6.0(eslint@9.0.0)(typescript@5.4.5) dev: true - /@sveltejs/site-kit@6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.10): + /@sveltejs/site-kit@6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.14): resolution: {integrity: sha512-nAUCuunhN0DmurQBxbsauqvdvv4mL0F/Aluxq0hFf6gB3iSn9WdaUZdPMXoujy+8cy+m6UvKuyhkgApZhmOLvw==} peerDependencies: '@sveltejs/kit': ^1.20.0 @@ -2650,42 +2664,42 @@ packages: dependencies: '@sveltejs/kit': link:packages/kit esm-env: 1.0.0 - svelte: 4.2.10 - svelte-local-storage-store: 0.6.4(svelte@4.2.10) + svelte: 4.2.14 + svelte-local-storage-store: 0.6.4(svelte@4.2.14) dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.0): - resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} + /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8): + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {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 dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.10)(vite@5.1.0) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.8) debug: 4.3.4 - svelte: 4.2.10 - vite: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + svelte: 4.2.14 + vite: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.10)(vite@5.1.0): - resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==} + /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.14)(vite@5.2.8): + resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.0) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.7 - svelte: 4.2.10 - svelte-hmr: 0.15.3(svelte@4.2.10) - vite: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) - vitefu: 0.2.5(vite@5.1.0) + magic-string: 0.30.9 + svelte: 4.2.14 + svelte-hmr: 0.16.0(svelte@4.2.14) + vite: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) + vitefu: 0.2.5(vite@5.2.8) transitivePeerDependencies: - supports-color dev: true @@ -2695,7 +2709,7 @@ packages: engines: {node: ^14.13.1 || ^16.0.0 || >=18} dependencies: '@changesets/get-github-info': 0.5.2 - dotenv: 16.4.1 + dotenv: 16.4.5 transitivePeerDependencies: - encoding dev: true @@ -2704,7 +2718,7 @@ packages: resolution: {integrity: sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==} dependencies: fast-glob: 3.3.2 - minimatch: 9.0.3 + minimatch: 9.0.4 mkdirp: 3.0.1 path-browserify: 1.0.1 dev: false @@ -2712,7 +2726,7 @@ packages: /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.19.14 + '@types/node': 18.19.31 dev: true /@types/cookie@0.6.0: @@ -2725,8 +2739,8 @@ packages: '@types/geojson': 7946.0.14 dev: true - /@types/eslint@8.56.7: - resolution: {integrity: sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==} + /@types/eslint@8.56.9: + resolution: {integrity: sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -2749,28 +2763,23 @@ packages: /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true /@types/minimist@1.2.5: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: true - /@types/mri@1.1.5: - resolution: {integrity: sha512-C6NscC1RO9iz1YmvqPlFdbo/q8krKwrvWsciw2MG+pH+WUgxWKv1VFpY/Y2AAZubzUpA4FH6d+FDtroboN9xMw==} - dev: true - /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 18.19.14 + '@types/node': 18.19.31 dev: false /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@18.19.14: - resolution: {integrity: sha512-EnQ4Us2rmOS64nHDWr0XqAD8DsO6f3XR6lf9UIIrZQpUzPVdN/oPuEzfDWNHSyXLvoGgjuEm/sPwFGSSs35Wtg==} + /@types/node@18.19.31: + resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} dependencies: undici-types: 5.26.5 @@ -2781,7 +2790,7 @@ packages: /@types/prompts@2.4.9: resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} dependencies: - '@types/node': 18.19.14 + '@types/node': 18.19.31 kleur: 3.0.3 dev: true @@ -2792,14 +2801,11 @@ packages: /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - /@types/sade@1.7.8: - resolution: {integrity: sha512-WGEWfxQ8VHLm3JS4ljRR3MSPqVjY0JMo6zsbBywOjFIxP8Cizxx1p6r6FxOnAOZpUn4VOFoRRTXFmaOLD/+VOQ==} + /@types/sade@1.8.0: + resolution: {integrity: sha512-AaEFFSbi9xUFPVmsmlo0X8gXpdUJxoT6Ve36Qqorqb/wxagc5v4W44mCPeiw5HqWjwypJ1X1qNL7lmofqX5C7g==} + deprecated: This is a stub types definition. sade provides its own type definitions, so you do not need this installed. dependencies: - '@types/mri': 1.1.5 - dev: true - - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + sade: 1.8.1 dev: true /@types/semver@7.5.8: @@ -2809,16 +2815,16 @@ packages: /@types/set-cookie-parser@2.4.7: resolution: {integrity: sha512-+ge/loa0oTozxip6zmhRIk8Z/boU51wl9Q6QdLZcokIGMzY5lFXYy/x7Htj2HTC6/KZP1hUbZ1ekx8DYXICvWg==} dependencies: - '@types/node': 18.19.14 + '@types/node': 18.19.31 dev: true /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 18.19.14 + '@types/node': 18.19.31 dev: true - /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.3.3): + /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2830,10 +2836,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.3.3) + '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.6.0 - '@typescript-eslint/type-utils': 7.6.0(eslint@9.0.0)(typescript@5.3.3) - '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.3.3) + '@typescript-eslint/type-utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4 eslint: 9.0.0 @@ -2841,13 +2847,13 @@ packages: ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.6.0(eslint@9.0.0)(typescript@5.3.3): + /@typescript-eslint/parser@7.6.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2859,11 +2865,11 @@ packages: dependencies: '@typescript-eslint/scope-manager': 7.6.0 '@typescript-eslint/types': 7.6.0 - '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4 eslint: 9.0.0 - typescript: 5.3.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -2876,7 +2882,7 @@ packages: '@typescript-eslint/visitor-keys': 7.6.0 dev: true - /@typescript-eslint/type-utils@7.6.0(eslint@9.0.0)(typescript@5.3.3): + /@typescript-eslint/type-utils@7.6.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2886,12 +2892,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.3.3) - '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) debug: 4.3.4 eslint: 9.0.0 - ts-api-utils: 1.3.0(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -2901,7 +2907,7 @@ packages: engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@7.6.0(typescript@5.3.3): + /@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.5): resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2917,13 +2923,13 @@ packages: is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@7.6.0(eslint@9.0.0)(typescript@5.3.3): + /@typescript-eslint/utils@7.6.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2934,7 +2940,7 @@ packages: '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.6.0 '@typescript-eslint/types': 7.6.0 - '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) eslint: 9.0.0 semver: 7.6.0 transitivePeerDependencies: @@ -2976,15 +2982,15 @@ packages: - supports-color dev: true - /@vercel/nft@0.26.3: - resolution: {integrity: sha512-h1z/NN9ppS4YOKwSgBoopJlhm7tS2Qb/9Ld1HXjDpvvTE7mY0xVD8nllXs+RihD9uTGJISOIMzp18Eg0EApaMA==} + /@vercel/nft@0.26.4: + resolution: {integrity: sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==} engines: {node: '>=16'} hasBin: true dependencies: '@mapbox/node-pre-gyp': 1.0.11 '@rollup/pluginutils': 4.2.1 acorn: 8.11.3 - acorn-import-attributes: 1.9.2(acorn@8.11.3) + acorn-import-attributes: 1.9.5(acorn@8.11.3) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -2998,38 +3004,38 @@ packages: - supports-color dev: false - /@vitest/expect@1.2.2: - resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} + /@vitest/expect@1.5.0: + resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} dependencies: - '@vitest/spy': 1.2.2 - '@vitest/utils': 1.2.2 + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 chai: 4.4.1 dev: true - /@vitest/runner@1.2.2: - resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} + /@vitest/runner@1.5.0: + resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} dependencies: - '@vitest/utils': 1.2.2 + '@vitest/utils': 1.5.0 p-limit: 5.0.0 pathe: 1.1.2 dev: true - /@vitest/snapshot@1.2.2: - resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} + /@vitest/snapshot@1.5.0: + resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} dependencies: - magic-string: 0.30.7 + magic-string: 0.30.9 pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.2.2: - resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} + /@vitest/spy@1.5.0: + resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} dependencies: tinyspy: 2.2.1 dev: true - /@vitest/utils@1.2.2: - resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==} + /@vitest/utils@1.5.0: + resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -3041,8 +3047,8 @@ packages: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: false - /acorn-import-attributes@1.9.2(acorn@8.11.3): - resolution: {integrity: sha512-O+nfJwNolEA771IYJaiLWK1UAwjNsQmZbTRqqwBYxCgVQTmpFEMvBw6LOIQV0Me339L5UMVYFyRohGnGlQDdIQ==} + /acorn-import-attributes@1.9.5(acorn@8.11.3): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: acorn: ^8 dependencies: @@ -3164,7 +3170,7 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 is-array-buffer: 3.0.4 dev: true @@ -3177,9 +3183,9 @@ packages: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -3188,13 +3194,13 @@ packages: engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 - call-bind: 1.0.6 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 dev: true /arrify@1.0.1: @@ -3216,9 +3222,11 @@ packages: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} dev: false - /available-typed-arrays@1.0.6: - resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 dev: true /axobject-query@4.0.0: @@ -3236,8 +3244,8 @@ packages: is-windows: 1.0.2 dev: true - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} /bindings@1.5.0: @@ -3273,15 +3281,15 @@ packages: wcwidth: 1.0.1 dev: true - /browserslist@4.22.3: - resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001585 - electron-to-chromium: 1.4.661 + caniuse-lite: 1.0.30001609 + electron-to-chromium: 1.4.736 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.3) + update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: true /buffer-crc32@0.2.13: @@ -3303,7 +3311,7 @@ packages: foreground-child: 3.1.1 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-reports: 3.1.6 + istanbul-reports: 3.1.7 test-exclude: 6.0.0 v8-to-istanbul: 9.2.0 yargs: 17.7.2 @@ -3315,14 +3323,15 @@ packages: engines: {node: '>=8'} dev: true - /call-bind@1.0.6: - resolution: {integrity: sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==} + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} dependencies: + es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 - set-function-length: 1.2.1 + set-function-length: 1.2.2 dev: true /callsites@3.1.0: @@ -3344,8 +3353,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001585: - resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} + /caniuse-lite@1.0.30001609: + resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} dev: true /capnp-ts@0.7.0: @@ -3507,6 +3516,11 @@ packages: color-string: 1.9.1 dev: false + /commander@12.0.0: + resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==} + engines: {node: '>=18'} + dev: false + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false @@ -3550,10 +3564,10 @@ packages: engines: {node: '>= 0.6'} dev: false - /core-js-compat@3.35.1: - resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==} + /core-js-compat@3.36.1: + resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} dependencies: - browserslist: 4.22.3 + browserslist: 4.23.0 dev: true /cross-env@7.0.3: @@ -3586,7 +3600,7 @@ packages: engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} dependencies: mdn-data: 2.0.30 - source-map-js: 1.0.2 + source-map-js: 1.2.0 /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -3630,11 +3644,11 @@ packages: dependencies: commander: 7.2.0 d3-array: 3.2.4 - d3-geo: 3.1.0 + d3-geo: 3.1.1 dev: false - /d3-geo@3.1.0: - resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} + /d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} engines: {node: '>=12'} dependencies: d3-array: 3.2.4 @@ -3644,6 +3658,33 @@ packages: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} dev: false + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + /dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true @@ -3697,22 +3738,21 @@ packages: clone: 1.0.4 dev: true - /define-data-property@1.1.2: - resolution: {integrity: sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==} + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} dependencies: + es-define-property: 1.0.0 es-errors: 1.3.0 - get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 dev: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.2 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 dev: true @@ -3735,8 +3775,8 @@ packages: hasBin: true dev: true - /detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + /detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} dev: false @@ -3749,8 +3789,8 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + /diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} dev: true @@ -3761,8 +3801,8 @@ packages: path-type: 4.0.0 dev: true - /dotenv@16.4.1: - resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} dev: true @@ -3770,30 +3810,30 @@ packages: resolution: {integrity: sha512-QgA6BUh2SoBYE/dSuMmeGhNdoGtGewt3Rn66xKyXoGNyjrKRXf163wuM+xeQ83p87l/3ALoB6Il1dgKyGS5pEw==} dev: true - /dts-buddy@0.4.4(typescript@5.3.3): - resolution: {integrity: sha512-7pjuo2cmXNx9gYinJy1/KQr998KpAQfv52EKdvJvdQkk+ud++EGBCDgoxMiR3vuU/NvWDDvh1zc0lgnH+NsRtA==} + /dts-buddy@0.4.6(typescript@5.4.5): + resolution: {integrity: sha512-0gccY0vIuVCwbx4F9X5soE6ABKyjev2XVgwX2PYBx5hXfnrTeCBZwpf5F7MlVxzLo0pHfO9yNNo21cjZQZD/aw==} hasBin: true peerDependencies: - typescript: '>=5.0.4 <5.4' + typescript: '>=5.0.4 <5.5' dependencies: - '@jridgewell/source-map': 0.3.5 + '@jridgewell/source-map': 0.3.6 '@jridgewell/sourcemap-codec': 1.4.15 globrex: 0.1.2 kleur: 4.1.5 locate-character: 3.0.0 - magic-string: 0.30.7 + magic-string: 0.30.9 sade: 1.8.1 tiny-glob: 0.2.9 - ts-api-utils: 1.2.1(typescript@5.3.3) - typescript: 5.3.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 dev: true /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.661: - resolution: {integrity: sha512-AFg4wDHSOk5F+zA8aR+SVIOabu7m0e7BiJnigCvPXzIGy731XENw/lmNxTySpVFtkFEy+eyt4oHhh5FF3NjQNw==} + /electron-to-chromium@1.4.736: + resolution: {integrity: sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q==} dev: true /emoji-regex@8.0.0: @@ -3817,49 +3857,63 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.6 - call-bind: 1.0.6 - es-set-tostringtag: 2.0.2 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 globalthis: 1.0.3 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 internal-slot: 1.0.7 is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-negative-zero: 2.0.2 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.1.0 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.1 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 dev: true /es-errors@1.3.0: @@ -3867,19 +3921,26 @@ packages: engines: {node: '>= 0.4'} dev: true - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 - hasown: 2.0.0 + hasown: 2.0.2 dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -3925,35 +3986,35 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: false - /esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 + '@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 /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} @@ -3988,8 +4049,8 @@ packages: eslint: 9.0.0 dev: true - /eslint-plugin-svelte@2.36.0(eslint@9.0.0): - resolution: {integrity: sha512-D30hSj13Y8YEn7yGXos7EYp0lpEb3Z2V/M+6a3MZ13KGVhaefdW2A9j8IBIcW4YR+j6fo901USzLeXQz/XbWeQ==} + /eslint-plugin-svelte@2.37.0(eslint@9.0.0): + resolution: {integrity: sha512-H/2Gz7agYHEMEEzRuLYuCmAIdjuBnbhFG9hOK0yCdSBvvJGJMkjo+lR6j67OIvLOavgp4L7zA5LnDKi8WqdPhQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 @@ -4027,7 +4088,7 @@ packages: '@eslint/eslintrc': 2.1.4 ci-info: 4.0.0 clean-regexp: 1.0.0 - core-js-compat: 3.35.1 + core-js-compat: 3.36.1 eslint: 9.0.0 esquery: 1.5.0 indent-string: 4.0.0 @@ -4184,7 +4245,7 @@ packages: human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.2.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 @@ -4284,12 +4345,12 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} dependencies: - flatted: 3.2.9 + flatted: 3.3.1 keyv: 4.5.4 dev: true - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true /flexsearch@0.7.43: @@ -4360,9 +4421,9 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 functions-have-names: 1.2.3 dev: true @@ -4400,9 +4461,9 @@ packages: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 dev: true /get-port@3.2.0: @@ -4426,7 +4487,7 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 dev: true @@ -4453,16 +4514,16 @@ packages: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: false - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + /glob@10.3.12: + resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 + minimatch: 9.0.4 minipass: 7.0.4 - path-scurry: 1.10.1 + path-scurry: 1.10.2 dev: true /glob@7.2.3: @@ -4563,14 +4624,14 @@ packages: engines: {node: '>=8'} dev: true - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - get-intrinsic: 1.2.4 + es-define-property: 1.0.0 dev: true - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} dev: true @@ -4590,8 +4651,8 @@ packages: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} dev: false - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 @@ -4646,7 +4707,7 @@ packages: resolution: {integrity: sha512-6fYbD7u4VIOt6fqKrOlbF77JXgUVyUmEJIPlfYVTuR/S2Ig9cX3gukGiLEU0aSetcfE7CYnhLTPtTEu4mLwhCw==} engines: {node: '>=18.0.0'} dependencies: - sharp: 0.33.2 + sharp: 0.33.3 dev: false /import-fresh@3.3.0: @@ -4685,8 +4746,8 @@ packages: engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - hasown: 2.0.0 - side-channel: 1.0.5 + hasown: 2.0.2 + side-channel: 1.0.6 dev: true /internmap@2.0.3: @@ -4698,7 +4759,7 @@ packages: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 get-intrinsic: 1.2.4 dev: true @@ -4720,13 +4781,13 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 has-tostringtag: 1.0.2 dev: true @@ -4744,7 +4805,14 @@ packages: /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -4770,8 +4838,8 @@ packages: /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} dev: true @@ -4796,10 +4864,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - dev: true - /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: @@ -4814,14 +4878,15 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 has-tostringtag: 1.0.2 dev: true - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 dev: true /is-stream@3.0.0: @@ -4854,13 +4919,13 @@ packages: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 dev: true /is-windows@1.0.2: @@ -4890,8 +4955,8 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 @@ -4911,6 +4976,10 @@ packages: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true + /js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + dev: true + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -4953,6 +5022,12 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: false + /jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} dev: true @@ -4994,8 +5069,8 @@ packages: type-check: 0.4.0 dev: true - /lightningcss-darwin-arm64@1.23.0: - resolution: {integrity: sha512-kl4Pk3Q2lnE6AJ7Qaij47KNEfY2/UXRZBT/zqGA24B8qwkgllr/j7rclKOf1axcslNXvvUdztjo4Xqh39Yq1aA==} + /lightningcss-darwin-arm64@1.24.1: + resolution: {integrity: sha512-1jQ12jBy+AE/73uGQWGSafK5GoWgmSiIQOGhSEXiFJSZxzV+OXIx+a9h2EYHxdJfX864M+2TAxWPWb0Vv+8y4w==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] @@ -5003,8 +5078,8 @@ packages: dev: true optional: true - /lightningcss-darwin-x64@1.23.0: - resolution: {integrity: sha512-KeRFCNoYfDdcolcFXvokVw+PXCapd2yHS1Diko1z1BhRz/nQuD5XyZmxjWdhmhN/zj5sH8YvWsp0/lPLVzqKpg==} + /lightningcss-darwin-x64@1.24.1: + resolution: {integrity: sha512-R4R1d7VVdq2mG4igMU+Di8GPf0b64ZLnYVkubYnGG0Qxq1KaXQtAzcLI43EkpnoWvB/kUg8JKCWH4S13NfiLcQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -5012,8 +5087,8 @@ packages: dev: true optional: true - /lightningcss-freebsd-x64@1.23.0: - resolution: {integrity: sha512-xhnhf0bWPuZxcqknvMDRFFo2TInrmQRWZGB0f6YoAsZX8Y+epfjHeeOIGCfAmgF0DgZxHwYc8mIR5tQU9/+ROA==} + /lightningcss-freebsd-x64@1.24.1: + resolution: {integrity: sha512-z6NberUUw5ALES6Ixn2shmjRRrM1cmEn1ZQPiM5IrZ6xHHL5a1lPin9pRv+w6eWfcrEo+qGG6R9XfJrpuY3e4g==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] @@ -5021,8 +5096,8 @@ packages: dev: true optional: true - /lightningcss-linux-arm-gnueabihf@1.23.0: - resolution: {integrity: sha512-fBamf/bULvmWft9uuX+bZske236pUZEoUlaHNBjnueaCTJ/xd8eXgb0cEc7S5o0Nn6kxlauMBnqJpF70Bgq3zg==} + /lightningcss-linux-arm-gnueabihf@1.24.1: + resolution: {integrity: sha512-NLQLnBQW/0sSg74qLNI8F8QKQXkNg4/ukSTa+XhtkO7v3BnK19TS1MfCbDHt+TTdSgNEBv0tubRuapcKho2EWw==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] @@ -5030,8 +5105,8 @@ packages: dev: true optional: true - /lightningcss-linux-arm64-gnu@1.23.0: - resolution: {integrity: sha512-RS7sY77yVLOmZD6xW2uEHByYHhQi5JYWmgVumYY85BfNoVI3DupXSlzbw+b45A9NnVKq45+oXkiN6ouMMtTwfg==} + /lightningcss-linux-arm64-gnu@1.24.1: + resolution: {integrity: sha512-AQxWU8c9E9JAjAi4Qw9CvX2tDIPjgzCTrZCSXKELfs4mCwzxRkHh2RCxX8sFK19RyJoJAjA/Kw8+LMNRHS5qEg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -5039,8 +5114,8 @@ packages: dev: true optional: true - /lightningcss-linux-arm64-musl@1.23.0: - resolution: {integrity: sha512-cU00LGb6GUXCwof6ACgSMKo3q7XYbsyTj0WsKHLi1nw7pV0NCq8nFTn6ZRBYLoKiV8t+jWl0Hv8KkgymmK5L5g==} + /lightningcss-linux-arm64-musl@1.24.1: + resolution: {integrity: sha512-JCgH/SrNrhqsguUA0uJUM1PvN5+dVuzPIlXcoWDHSv2OU/BWlj2dUYr3XNzEw748SmNZPfl2NjQrAdzaPOn1lA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -5048,8 +5123,8 @@ packages: dev: true optional: true - /lightningcss-linux-x64-gnu@1.23.0: - resolution: {integrity: sha512-q4jdx5+5NfB0/qMbXbOmuC6oo7caPnFghJbIAV90cXZqgV8Am3miZhC4p+sQVdacqxfd+3nrle4C8icR3p1AYw==} + /lightningcss-linux-x64-gnu@1.24.1: + resolution: {integrity: sha512-TYdEsC63bHV0h47aNRGN3RiK7aIeco3/keN4NkoSQ5T8xk09KHuBdySltWAvKLgT8JvR+ayzq8ZHnL1wKWY0rw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -5057,8 +5132,8 @@ packages: dev: true optional: true - /lightningcss-linux-x64-musl@1.23.0: - resolution: {integrity: sha512-G9Ri3qpmF4qef2CV/80dADHKXRAQeQXpQTLx7AiQrBYQHqBjB75oxqj06FCIe5g4hNCqLPnM9fsO4CyiT1sFSQ==} + /lightningcss-linux-x64-musl@1.24.1: + resolution: {integrity: sha512-HLfzVik3RToot6pQ2Rgc3JhfZkGi01hFetHt40HrUMoeKitLoqUUT5owM6yTZPTytTUW9ukLBJ1pc3XNMSvlLw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -5066,8 +5141,8 @@ packages: dev: true optional: true - /lightningcss-win32-x64-msvc@1.23.0: - resolution: {integrity: sha512-1rcBDJLU+obPPJM6qR5fgBUiCdZwZLafZM5f9kwjFLkb/UBNIzmae39uCSmh71nzPCTXZqHbvwu23OWnWEz+eg==} + /lightningcss-win32-x64-msvc@1.24.1: + resolution: {integrity: sha512-joEupPjYJ7PjZtDsS5lzALtlAudAbgIBMGJPNeFe5HfdmJXFd13ECmEM+5rXNxYVMRHua2w8132R6ab5Z6K9Ow==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -5075,21 +5150,21 @@ packages: dev: true optional: true - /lightningcss@1.23.0: - resolution: {integrity: sha512-SEArWKMHhqn/0QzOtclIwH5pXIYQOUEkF8DgICd/105O+GCgd7jxjNod/QPnBCSWvpRHQBGVz5fQ9uScby03zA==} + /lightningcss@1.24.1: + resolution: {integrity: sha512-kUpHOLiH5GB0ERSv4pxqlL0RYKnOXtgGtVe7shDGfhS0AZ4D1ouKFYAcLcZhql8aMspDNzaUCumGHZ78tb2fTg==} engines: {node: '>= 12.0.0'} dependencies: detect-libc: 1.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.23.0 - lightningcss-darwin-x64: 1.23.0 - lightningcss-freebsd-x64: 1.23.0 - lightningcss-linux-arm-gnueabihf: 1.23.0 - lightningcss-linux-arm64-gnu: 1.23.0 - lightningcss-linux-arm64-musl: 1.23.0 - lightningcss-linux-x64-gnu: 1.23.0 - lightningcss-linux-x64-musl: 1.23.0 - lightningcss-win32-x64-msvc: 1.23.0 + lightningcss-darwin-arm64: 1.24.1 + lightningcss-darwin-x64: 1.24.1 + lightningcss-freebsd-x64: 1.24.1 + lightningcss-linux-arm-gnueabihf: 1.24.1 + lightningcss-linux-arm64-gnu: 1.24.1 + lightningcss-linux-arm64-musl: 1.24.1 + lightningcss-linux-x64-gnu: 1.24.1 + lightningcss-linux-x64-musl: 1.24.1 + lightningcss-win32-x64-msvc: 1.24.1 dev: true /lilconfig@2.1.0: @@ -5120,7 +5195,7 @@ packages: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} dependencies: - mlly: 1.5.0 + mlly: 1.6.1 pkg-types: 1.0.3 dev: true @@ -5190,8 +5265,8 @@ packages: sourcemap-codec: 1.4.8 dev: false - /magic-string@0.30.7: - resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} + /magic-string@0.30.9: + resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -5220,8 +5295,8 @@ packages: engines: {node: '>=8'} dev: true - /marked@12.0.0: - resolution: {integrity: sha512-Vkwtq9rLqXryZnWaQc86+FHLC6tr/fycMfYAhiOIXkrNmeGAyhSxjqu0Rs1i0bBqw5u0S7+lV9fdH2ZSVaoa0w==} + /marked@12.0.1: + resolution: {integrity: sha512-Y1/V2yafOcOdWQCX0XpAKXzDakPOpn6U0YLxTJs3cww6VxOzZV1BTOOYWLvH3gX38cq+iLwljHHTnMtlDfg01Q==} engines: {node: '>= 18'} hasBin: true dev: true @@ -5276,8 +5351,8 @@ packages: engines: {node: '>=4'} dev: true - /miniflare@3.20240223.0: - resolution: {integrity: sha512-8T/36FEfvsL4aMF7SLZ28v+PQL0jsUlVw/u114GYcdobkyPax9E6Ahn0XePOHEqLxQSndwPee+eS1phHANFePA==} + /miniflare@3.20240405.1: + resolution: {integrity: sha512-oShOR/ckr9JTO1bkPQH0nXvuSgJjoE+E5+M1tvP01Q8Z+Q0GJnzU2+FDYUH8yIK/atHv7snU8yy0X6KWVn1YdQ==} engines: {node: '>=16.13'} hasBin: true dependencies: @@ -5288,8 +5363,8 @@ packages: exit-hook: 2.2.1 glob-to-regexp: 0.4.1 stoppable: 1.1.0 - undici: 5.28.3 - workerd: 1.20240223.1 + undici: 5.28.4 + workerd: 1.20240405.0 ws: 8.16.0 youch: 3.3.3 zod: 3.22.4 @@ -5310,18 +5385,11 @@ packages: dependencies: brace-expansion: 2.0.1 - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: true /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} @@ -5385,13 +5453,13 @@ packages: hasBin: true dev: false - /mlly@1.5.0: - resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + /mlly@1.6.1: + resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} dependencies: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 - ufo: 1.4.0 + ufo: 1.5.3 dev: true /mri@1.2.0: @@ -5503,8 +5571,8 @@ packages: npm-normalize-package-bin: 2.0.0 dev: true - /npm-run-path@5.2.0: - resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 @@ -5536,7 +5604,7 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 @@ -5638,7 +5706,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5677,16 +5745,16 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + /path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} engines: {node: '>=16 || 14 >=14.17'} dependencies: lru-cache: 10.2.0 minipass: 7.0.4 dev: true - /path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + /path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} dev: false /path-type@4.0.0: @@ -5737,22 +5805,22 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.1 - mlly: 1.5.0 + mlly: 1.6.1 pathe: 1.1.2 dev: true - /playwright-core@1.41.2: - resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==} + /playwright-core@1.43.1: + resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} engines: {node: '>=16'} hasBin: true dev: true - /playwright@1.41.2: - resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==} + /playwright@1.43.1: + resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.41.2 + playwright-core: 1.43.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -5770,6 +5838,11 @@ packages: trouter: 4.0.0 dev: true + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + /postcss-load-config@3.1.4(postcss@8.4.38): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -5813,15 +5886,6 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss@8.4.35: - resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /postcss@8.4.38: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} @@ -5831,8 +5895,8 @@ packages: source-map-js: 1.2.0 dev: true - /preferred-pm@3.1.2: - resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} + /preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} engines: {node: '>=10'} dependencies: find-up: 5.0.0 @@ -5846,14 +5910,14 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-svelte@3.1.2(prettier@3.2.5)(svelte@4.2.10): + /prettier-plugin-svelte@3.1.2(prettier@3.2.5)(svelte@4.2.14): resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 dependencies: prettier: 3.2.5 - svelte: 4.2.10 + svelte: 4.2.14 dev: true /prettier@2.8.8: @@ -5990,13 +6054,14 @@ packages: hasBin: true dev: true - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 define-properties: 1.2.1 - set-function-name: 2.0.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 dev: true /regexparam@3.0.0: @@ -6080,26 +6145,28 @@ packages: estree-walker: 0.6.1 dev: false - /rollup@4.9.6: - resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} + /rollup@4.14.2: + resolution: {integrity: sha512-WkeoTWvuBoFjFAhsEOHKRoZ3r9GfTyhh7Vff1zwebEFLEFjT1lG3784xEgKiTa7E+e70vsC81roVL2MP4tgEEQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.6 - '@rollup/rollup-android-arm64': 4.9.6 - '@rollup/rollup-darwin-arm64': 4.9.6 - '@rollup/rollup-darwin-x64': 4.9.6 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 - '@rollup/rollup-linux-arm64-gnu': 4.9.6 - '@rollup/rollup-linux-arm64-musl': 4.9.6 - '@rollup/rollup-linux-riscv64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-musl': 4.9.6 - '@rollup/rollup-win32-arm64-msvc': 4.9.6 - '@rollup/rollup-win32-ia32-msvc': 4.9.6 - '@rollup/rollup-win32-x64-msvc': 4.9.6 + '@rollup/rollup-android-arm-eabi': 4.14.2 + '@rollup/rollup-android-arm64': 4.14.2 + '@rollup/rollup-darwin-arm64': 4.14.2 + '@rollup/rollup-darwin-x64': 4.14.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.14.2 + '@rollup/rollup-linux-arm64-gnu': 4.14.2 + '@rollup/rollup-linux-arm64-musl': 4.14.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.14.2 + '@rollup/rollup-linux-riscv64-gnu': 4.14.2 + '@rollup/rollup-linux-s390x-gnu': 4.14.2 + '@rollup/rollup-linux-x64-gnu': 4.14.2 + '@rollup/rollup-linux-x64-musl': 4.14.2 + '@rollup/rollup-win32-arm64-msvc': 4.14.2 + '@rollup/rollup-win32-ia32-msvc': 4.14.2 + '@rollup/rollup-win32-x64-msvc': 4.14.2 fsevents: 2.3.3 /run-parallel@1.2.0: @@ -6113,11 +6180,11 @@ packages: dependencies: mri: 1.2.0 - /safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 @@ -6131,11 +6198,16 @@ packages: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 dev: true + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: false + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true @@ -6186,55 +6258,56 @@ packages: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: false - /set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.2 + define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 dev: true - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.2 + define-data-property: 1.1.4 + es-errors: 1.3.0 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 dev: true - /sharp@0.33.2: - resolution: {integrity: sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==} - engines: {libvips: '>=8.15.1', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + /sharp@0.33.3: + resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==} + engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} requiresBuild: true dependencies: color: 4.2.3 - detect-libc: 2.0.2 + detect-libc: 2.0.3 semver: 7.6.0 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.2 - '@img/sharp-darwin-x64': 0.33.2 - '@img/sharp-libvips-darwin-arm64': 1.0.1 - '@img/sharp-libvips-darwin-x64': 1.0.1 - '@img/sharp-libvips-linux-arm': 1.0.1 - '@img/sharp-libvips-linux-arm64': 1.0.1 - '@img/sharp-libvips-linux-s390x': 1.0.1 - '@img/sharp-libvips-linux-x64': 1.0.1 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 - '@img/sharp-libvips-linuxmusl-x64': 1.0.1 - '@img/sharp-linux-arm': 0.33.2 - '@img/sharp-linux-arm64': 0.33.2 - '@img/sharp-linux-s390x': 0.33.2 - '@img/sharp-linux-x64': 0.33.2 - '@img/sharp-linuxmusl-arm64': 0.33.2 - '@img/sharp-linuxmusl-x64': 0.33.2 - '@img/sharp-wasm32': 0.33.2 - '@img/sharp-win32-ia32': 0.33.2 - '@img/sharp-win32-x64': 0.33.2 + '@img/sharp-darwin-arm64': 0.33.3 + '@img/sharp-darwin-x64': 0.33.3 + '@img/sharp-libvips-darwin-arm64': 1.0.2 + '@img/sharp-libvips-darwin-x64': 1.0.2 + '@img/sharp-libvips-linux-arm': 1.0.2 + '@img/sharp-libvips-linux-arm64': 1.0.2 + '@img/sharp-libvips-linux-s390x': 1.0.2 + '@img/sharp-libvips-linux-x64': 1.0.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + '@img/sharp-linux-arm': 0.33.3 + '@img/sharp-linux-arm64': 0.33.3 + '@img/sharp-linux-s390x': 0.33.3 + '@img/sharp-linux-x64': 0.33.3 + '@img/sharp-linuxmusl-arm64': 0.33.3 + '@img/sharp-linuxmusl-x64': 0.33.3 + '@img/sharp-wasm32': 0.33.3 + '@img/sharp-win32-ia32': 0.33.3 + '@img/sharp-win32-x64': 0.33.3 dev: false /shebang-command@1.2.0: @@ -6283,11 +6356,11 @@ packages: vscode-textmate: 5.2.0 dev: true - /side-channel@1.0.5: - resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 @@ -6366,14 +6439,9 @@ packages: sander: 0.5.1 dev: true - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} - dev: true /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} @@ -6396,22 +6464,22 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.16 + spdx-license-ids: 3.0.17 dev: true - /spdx-exceptions@2.4.0: - resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} dev: true /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: - spdx-exceptions: 2.4.0 - spdx-license-ids: 3.0.16 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.17 dev: true - /spdx-license-ids@3.0.16: - resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + /spdx-license-ids@3.0.17: + resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} dev: true /sprintf-js@1.0.3: @@ -6461,29 +6529,31 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true /string_decoder@1.3.0: @@ -6527,10 +6597,10 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + /strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} dependencies: - acorn: 8.11.3 + js-tokens: 9.0.0 dev: true /sucrase@3.35.0: @@ -6538,9 +6608,9 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.10 + glob: 10.3.12 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -6565,21 +6635,21 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check@3.6.3(postcss@8.4.38)(svelte@4.2.10): - resolution: {integrity: sha512-Q2nGnoysxUnB9KjnjpQLZwdjK62DHyW6nuH/gm2qteFnDk0lCehe/6z8TsIvYeKjC6luKaWxiNGyOcWiLLPSwA==} + /svelte-check@3.6.9(postcss@8.4.38)(svelte@4.2.14): + resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 fast-glob: 3.3.2 import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.10 - svelte-preprocess: 5.1.3(postcss@8.4.38)(svelte@4.2.10)(typescript@5.3.3) - typescript: 5.3.3 + svelte: 4.2.14 + svelte-preprocess: 5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -6608,33 +6678,33 @@ packages: postcss-scss: 4.0.9(postcss@8.4.38) dev: true - /svelte-hmr@0.15.3(svelte@4.2.10): - resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} + /svelte-hmr@0.16.0(svelte@4.2.14): + resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.10 + svelte: 4.2.14 dev: true - /svelte-local-storage-store@0.6.4(svelte@4.2.10): + /svelte-local-storage-store@0.6.4(svelte@4.2.14): resolution: {integrity: sha512-45WoY2vSGPQM1sIQJ9jTkPPj20hYeqm+af6mUGRFSPP5WglZf36YYoZqwmZZ8Dt/2SU8lem+BTA8/Z/8TkqNLg==} engines: {node: '>=0.14'} peerDependencies: svelte: ^3.48.0 || >4.0.0 dependencies: - svelte: 4.2.10 + svelte: 4.2.14 dev: true - /svelte-parse-markup@0.1.2(svelte@4.2.10): + /svelte-parse-markup@0.1.2(svelte@4.2.14): resolution: {integrity: sha512-DycY7DJr7VqofiJ63ut1/NEG92HrWWL56VWITn/cJCu+LlZhMoBkBXT4opUitPEEwbq1nMQbv4vTKUfbOqIW1g==} peerDependencies: svelte: ^3.0.0 || ^4.0.0 dependencies: - svelte: 4.2.10 + svelte: 4.2.14 dev: false - /svelte-preprocess@5.1.3(postcss@8.4.38)(svelte@4.2.10)(typescript@5.3.3): + /svelte-preprocess@5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5): resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} engines: {node: '>= 16.0.0', pnpm: ^8.0.0} requiresBuild: true @@ -6674,33 +6744,33 @@ packages: dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 - magic-string: 0.30.7 + magic-string: 0.30.9 postcss: 8.4.38 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.10 - typescript: 5.3.3 + svelte: 4.2.14 + typescript: 5.4.5 dev: true - /svelte2tsx@0.7.1(svelte@4.2.10)(typescript@5.3.3): - resolution: {integrity: sha512-0lKa6LrqJxRan0bDmBd/uFsVzYSXnoFUDaczaH0znke/XI79oy1JjFaF51J9EsOvpn8lXPlrUc3n/MA/ORNxBg==} + /svelte2tsx@0.7.6(svelte@4.2.14)(typescript@5.4.5): + resolution: {integrity: sha512-awHvYsakyiGjRqqSOhb2F+qJ6lUT9klQe0UQofAcdHNaKKeDHA8kEZ8zYKGG3BiDPurKYMGvH5/lZ+jeIoG7yQ==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.10 - typescript: 5.3.3 + svelte: 4.2.14 + typescript: 5.4.5 dev: false - /svelte@4.2.10: - resolution: {integrity: sha512-Ep06yCaCdgG1Mafb/Rx8sJ1QS3RW2I2BxGp2Ui9LBHSZ2/tO/aGLc5WqPjgiAP6KAnLJGaIr/zzwQlOo1b8MxA==} + /svelte@4.2.14: + resolution: {integrity: sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==} engines: {node: '>=16'} dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 '@types/estree': 1.0.5 acorn: 8.11.3 aria-query: 5.3.0 @@ -6710,11 +6780,11 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.7 + magic-string: 0.30.9 periscopic: 3.1.0 - /tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 @@ -6771,8 +6841,8 @@ packages: engines: {node: '>=4'} dev: true - /tinypool@0.8.2: - resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + /tinypool@0.8.3: + resolution: {integrity: sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==} engines: {node: '>=14.0.0'} dev: true @@ -6820,28 +6890,33 @@ packages: regexparam: 3.0.0 dev: true - /ts-api-utils@1.2.1(typescript@5.3.3): - resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.3.3 - dev: true - - /ts-api-utils@1.3.0(typescript@5.3.3): + /ts-api-utils@1.3.0(typescript@5.4.5): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.3.3 + typescript: 5.4.5 dev: true /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true + /ts-json-schema-generator@1.5.1: + resolution: {integrity: sha512-apX5qG2+NA66j7b4AJm8q/DpdTeOsjfh7A3LpKsUiil0FepkNwtN28zYgjrsiiya2/OPhsr/PSjX5FUYg79rCg==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + '@types/json-schema': 7.0.15 + commander: 12.0.0 + glob: 8.1.0 + json5: 2.2.3 + normalize-path: 3.0.0 + safe-stable-stringify: 2.4.3 + typescript: 5.4.5 + dev: false + /ts-morph@22.0.0: resolution: {integrity: sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==} dependencies: @@ -6899,45 +6974,51 @@ packages: engines: {node: '>=8'} dev: true - /typed-array-buffer@1.0.1: - resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 dev: true - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 + gopd: 1.0.1 + has-proto: 1.0.3 is-typed-array: 1.1.13 dev: true - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.6 - call-bind: 1.0.6 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 + gopd: 1.0.1 + has-proto: 1.0.3 is-typed-array: 1.1.13 dev: true - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 dev: true - /typescript-eslint@7.6.0(eslint@9.0.0)(typescript@5.3.3): + /typescript-eslint@7.6.0(eslint@9.0.0)(typescript@5.4.5): resolution: {integrity: sha512-LY6vH6F1l5jpGqRtU+uK4+mOecIb4Cd4kaz1hAiJrgnNiHUA8wiw8BkJyYS+MRLM69F1QuSKwtGlQqnGl1Rc6w==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -6947,11 +7028,11 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.3.3) - '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.3.3) - '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) eslint: 9.0.0 - typescript: 5.3.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -6962,19 +7043,19 @@ packages: hasBin: true dev: true - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true - /ufo@1.4.0: - resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} dev: true /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.6 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -6983,8 +7064,8 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici@5.28.3: - resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} + /undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} dependencies: '@fastify/busboy': 2.1.1 @@ -6995,13 +7076,13 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /update-browserslist-db@1.0.13(browserslist@4.22.3): + /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.3 + browserslist: 4.23.0 escalade: 3.1.2 picocolors: 1.0.0 dev: true @@ -7025,7 +7106,7 @@ packages: hasBin: true dependencies: dequal: 2.0.3 - diff: 5.1.0 + diff: 5.2.0 kleur: 4.1.5 sade: 1.8.1 dev: true @@ -7034,7 +7115,7 @@ packages: resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 dev: true @@ -7046,18 +7127,18 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-imagetools@7.0.1(rollup@4.9.6): + /vite-imagetools@7.0.1(rollup@4.14.2): resolution: {integrity: sha512-23jnLhkTH0HR9Vd9LxMYnajOLeo0RJNEAHhtlsQP6kfPuOBoTzt54rWbEWB9jmhEXAOflLQpM+FrmilVPAoyGA==} engines: {node: '>=18.0.0'} dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.9.6) + '@rollup/pluginutils': 5.1.0(rollup@4.14.2) imagetools-core: 7.0.0 transitivePeerDependencies: - rollup dev: false - /vite-node@1.2.2(@types/node@18.19.14)(lightningcss@1.23.0): - resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} + /vite-node@1.5.0(@types/node@18.19.31)(lightningcss@1.24.1): + resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -7065,7 +7146,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + vite: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) transitivePeerDependencies: - '@types/node' - less @@ -7077,8 +7158,8 @@ packages: - terser dev: true - /vite@5.1.0(@types/node@18.19.14)(lightningcss@1.23.0): - resolution: {integrity: sha512-STmSFzhY4ljuhz14bg9LkMTk3d98IO6DIArnTY6MeBwiD1Za2StcQtz7fzOUnRCqrHSD5+OS2reg4HOz1eoLnw==} + /vite@5.2.8(@types/node@18.19.31)(lightningcss@1.24.1): + resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -7105,16 +7186,16 @@ packages: terser: optional: true dependencies: - '@types/node': 18.19.14 - esbuild: 0.19.12 - lightningcss: 1.23.0 - postcss: 8.4.35 - rollup: 4.9.6 + '@types/node': 18.19.31 + esbuild: 0.20.2 + lightningcss: 1.24.1 + postcss: 8.4.38 + rollup: 4.14.2 optionalDependencies: fsevents: 2.3.3 dev: true - /vitefu@0.2.5(vite@5.1.0): + /vitefu@0.2.5(vite@5.2.8): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -7122,18 +7203,18 @@ packages: vite: optional: true dependencies: - vite: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) + vite: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) dev: true - /vitest@1.2.2(@types/node@18.19.14)(lightningcss@1.23.0): - resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} + /vitest@1.5.0(@types/node@18.19.31)(lightningcss@1.24.1): + resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 + '@vitest/browser': 1.5.0 + '@vitest/ui': 1.5.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -7150,27 +7231,26 @@ packages: jsdom: optional: true dependencies: - '@types/node': 18.19.14 - '@vitest/expect': 1.2.2 - '@vitest/runner': 1.2.2 - '@vitest/snapshot': 1.2.2 - '@vitest/spy': 1.2.2 - '@vitest/utils': 1.2.2 + '@types/node': 18.19.31 + '@vitest/expect': 1.5.0 + '@vitest/runner': 1.5.0 + '@vitest/snapshot': 1.5.0 + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 acorn-walk: 8.3.2 - cac: 6.7.14 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 - magic-string: 0.30.7 + magic-string: 0.30.9 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 1.3.0 + strip-literal: 2.1.0 tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.1.0(@types/node@18.19.14)(lightningcss@1.23.0) - vite-node: 1.2.2(@types/node@18.19.14)(lightningcss@1.23.0) + tinypool: 0.8.3 + vite: 5.2.8(@types/node@18.19.31)(lightningcss@1.24.1) + vite-node: 1.5.0(@types/node@18.19.31)(lightningcss@1.24.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -7227,12 +7307,12 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.6 - call-bind: 1.0.6 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 @@ -7268,17 +7348,17 @@ packages: string-width: 4.2.3 dev: false - /workerd@1.20240223.1: - resolution: {integrity: sha512-Mo1fwdp6DLva4/fWdL09ZdYllkO45I4YpWG5PbF/YUGFlu2aMk24fmU6Pd6fo5/cWek4F+n3LmYEKKHfqjiJIA==} + /workerd@1.20240405.0: + resolution: {integrity: sha512-AWrOSBh4Ll7sBWHuh0aywm8hDkKqsZmcwnDB0PVGszWZM5mndNBI5iJ/8haXVpdoyqkJQEVdhET9JDi4yU8tRg==} engines: {node: '>=16'} hasBin: true requiresBuild: true optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20240223.1 - '@cloudflare/workerd-darwin-arm64': 1.20240223.1 - '@cloudflare/workerd-linux-64': 1.20240223.1 - '@cloudflare/workerd-linux-arm64': 1.20240223.1 - '@cloudflare/workerd-windows-64': 1.20240223.1 + '@cloudflare/workerd-darwin-64': 1.20240405.0 + '@cloudflare/workerd-darwin-arm64': 1.20240405.0 + '@cloudflare/workerd-linux-64': 1.20240405.0 + '@cloudflare/workerd-linux-arm64': 1.20240405.0 + '@cloudflare/workerd-windows-64': 1.20240405.0 dev: false /worktop@0.8.0-next.18: @@ -7289,30 +7369,31 @@ packages: regexparam: 3.0.0 dev: false - /wrangler@3.30.1(@cloudflare/workers-types@4.20240129.0): - resolution: {integrity: sha512-cT6Ezx8h2v5QiI0HWhnHVy32ng4omdMVdhaMQLuMnyMIHmyDoRg7pmrbhtZfj0663gExLdVtE4ucK//yncVTwg==} + /wrangler@3.50.0(@cloudflare/workers-types@4.20240405.0): + resolution: {integrity: sha512-JlLuch+6DtaC5HGp8YD9Au++XvMv34g3ySdlB5SyPbaObELi8P9ZID5vgyf9AA75djzxL7cuNOk1YdKCJEuq0w==} engines: {node: '>=16.17.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20230914.0 + '@cloudflare/workers-types': ^4.20240405.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true dependencies: '@cloudflare/kv-asset-handler': 0.3.1 - '@cloudflare/workers-types': 4.20240129.0 + '@cloudflare/workers-types': 4.20240405.0 '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) blake3-wasm: 2.1.5 chokidar: 3.6.0 esbuild: 0.17.19 - miniflare: 3.20240223.0 + miniflare: 3.20240405.1 nanoid: 3.3.7 - path-to-regexp: 6.2.1 + path-to-regexp: 6.2.2 resolve: 1.22.8 resolve.exports: 2.0.2 selfsigned: 2.4.1 source-map: 0.6.1 + ts-json-schema-generator: 1.5.1 xxhash-wasm: 1.0.2 optionalDependencies: fsevents: 2.3.3 diff --git a/sites/kit.svelte.dev/package.json b/sites/kit.svelte.dev/package.json index a111a4b8e2e6..ed145f1f158e 100644 --- a/sites/kit.svelte.dev/package.json +++ b/sites/kit.svelte.dev/package.json @@ -32,8 +32,8 @@ "shiki-twoslash": "^3.1.2", "svelte": "^4.2.10", "typescript": "5.0.4", - "vite": "^5.1.0", - "vitest": "^1.2.0" + "vite": "^5.2.8", + "vitest": "^1.5.0" }, "type": "module", "dependencies": { From af4b0d3fe1a0152ddedde00494e6f614acf40ab5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 13 Apr 2024 17:03:29 -0700 Subject: [PATCH 083/454] chore(deps): update pnpm to v8.15.7 (#12119) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fad73bf85e78..e8858e2690da 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "playwright": "^1.41.0", "typescript-eslint": "^7.6.0" }, - "packageManager": "pnpm@8.15.6", + "packageManager": "pnpm@8.15.7", "engines": { "pnpm": "^8.0.0" } From ef0aa0c4d12247de54fe5496bdf7c0a7c2942171 Mon Sep 17 00:00:00 2001 From: Kazuma Oe Date: Sun, 14 Apr 2024 09:12:34 +0900 Subject: [PATCH 084/454] fix: set the correct for the ESLint config ignores (#12110) --- .changeset/chilly-wombats-roll.md | 5 +++++ .../shared/+eslint+prettier+typescript/eslint.config.js | 2 +- .../shared/+eslint+prettier-typescript/eslint.config.js | 2 +- .../create-svelte/shared/+eslint+typescript/eslint.config.js | 2 +- .../create-svelte/shared/+eslint-typescript/eslint.config.js | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .changeset/chilly-wombats-roll.md diff --git a/.changeset/chilly-wombats-roll.md b/.changeset/chilly-wombats-roll.md new file mode 100644 index 000000000000..a46bfcf298c7 --- /dev/null +++ b/.changeset/chilly-wombats-roll.md @@ -0,0 +1,5 @@ +--- +'create-svelte': patch +--- + +fix: set the correct for the ESLint config ignores diff --git a/packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js b/packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js index 2a47c1f5a015..a351fa90e2d7 100644 --- a/packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js +++ b/packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js @@ -28,6 +28,6 @@ export default [ } }, { - ignores: ['build/', '.svelte-kit/', 'package/'] + ignores: ['build/', '.svelte-kit/', 'dist/'] } ]; diff --git a/packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js b/packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js index 7898355c1419..e6d28f342c49 100644 --- a/packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js +++ b/packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js @@ -18,6 +18,6 @@ export default [ } }, { - ignores: ['build/', '.svelte-kit/', 'package/'] + ignores: ['build/', '.svelte-kit/', 'dist/'] } ]; diff --git a/packages/create-svelte/shared/+eslint+typescript/eslint.config.js b/packages/create-svelte/shared/+eslint+typescript/eslint.config.js index d1b02a3d63c0..7f9681653819 100644 --- a/packages/create-svelte/shared/+eslint+typescript/eslint.config.js +++ b/packages/create-svelte/shared/+eslint+typescript/eslint.config.js @@ -25,6 +25,6 @@ export default [ } }, { - ignores: ['build/', '.svelte-kit/', 'package/'] + ignores: ['build/', '.svelte-kit/', 'dist/'] } ]; diff --git a/packages/create-svelte/shared/+eslint-typescript/eslint.config.js b/packages/create-svelte/shared/+eslint-typescript/eslint.config.js index 7cfe48b812ad..dcd0d0051c23 100644 --- a/packages/create-svelte/shared/+eslint-typescript/eslint.config.js +++ b/packages/create-svelte/shared/+eslint-typescript/eslint.config.js @@ -15,6 +15,6 @@ export default [ } }, { - ignores: ['build/', '.svelte-kit/', 'package/'] + ignores: ['build/', '.svelte-kit/', 'dist/'] } ]; From cd5ea0a8ab5d51cb82a3ce6088198906b0a28039 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sun, 14 Apr 2024 09:25:52 -0700 Subject: [PATCH 085/454] fix: go back to eslint 8 until typescript-eslint supports eslint 9 (#12124) --- .changeset/chilly-wombats-roll.md | 2 +- .eslintrc.json | 18 ++ eslint.config.js | 20 -- package.json | 10 +- .../+eslint+prettier+typescript/.eslintrc.cjs | 31 +++ .../eslint.config.js | 33 --- .../+eslint+prettier-typescript/.eslintrc.cjs | 15 + .../eslint.config.js | 23 -- .../shared/+eslint+svelte5/package.json | 2 +- .../shared/+eslint+typescript/.eslintrc.cjs | 30 ++ .../+eslint+typescript/eslint.config.js | 30 -- .../shared/+eslint+typescript/package.json | 3 +- .../shared/+eslint-typescript/.eslintrc.cjs | 15 + .../+eslint-typescript/eslint.config.js | 20 -- .../shared/+eslint/.eslintignore | 13 + .../create-svelte/shared/+eslint/package.json | 7 +- pnpm-lock.yaml | 259 +++++++----------- 17 files changed, 226 insertions(+), 305 deletions(-) create mode 100644 .eslintrc.json delete mode 100644 eslint.config.js create mode 100644 packages/create-svelte/shared/+eslint+prettier+typescript/.eslintrc.cjs delete mode 100644 packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js create mode 100644 packages/create-svelte/shared/+eslint+prettier-typescript/.eslintrc.cjs delete mode 100644 packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js create mode 100644 packages/create-svelte/shared/+eslint+typescript/.eslintrc.cjs delete mode 100644 packages/create-svelte/shared/+eslint+typescript/eslint.config.js create mode 100644 packages/create-svelte/shared/+eslint-typescript/.eslintrc.cjs delete mode 100644 packages/create-svelte/shared/+eslint-typescript/eslint.config.js create mode 100644 packages/create-svelte/shared/+eslint/.eslintignore diff --git a/.changeset/chilly-wombats-roll.md b/.changeset/chilly-wombats-roll.md index a46bfcf298c7..ffb6cba3f056 100644 --- a/.changeset/chilly-wombats-roll.md +++ b/.changeset/chilly-wombats-roll.md @@ -2,4 +2,4 @@ 'create-svelte': patch --- -fix: set the correct for the ESLint config ignores +fix: go back to eslint 8 until typescript-eslint supports eslint 9 diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000000..9501511a710b --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "root": true, + "extends": "@sveltejs", + "env": { + "es2022": true + }, + "ignorePatterns": [ + "packages/create-svelte/shared/", + "packages/kit/test/prerendering/*/build", + "packages/adapter-static/test/apps/*/build", + "packages/adapter-cloudflare/files", + "packages/adapter-netlify/files", + "packages/adapter-node/files" + ], + "rules": { + "no-undef": "off" + } +} diff --git a/eslint.config.js b/eslint.config.js deleted file mode 100644 index 7abf2505883b..000000000000 --- a/eslint.config.js +++ /dev/null @@ -1,20 +0,0 @@ -import svelte_config from '@sveltejs/eslint-config'; - -/** @type {import('eslint').Linter.FlatConfig[]} */ -export default [ - ...svelte_config, - { - rules: { - 'no-undef': 'off' - } - }, - { - ignores: [ - '**/.svelte-kit', - 'packages/adapter-static/test/apps/*/build', - 'packages/adapter-cloudflare/files', - 'packages/adapter-netlify/files', - 'packages/adapter-node/files' - ] - } -]; diff --git a/package.json b/package.json index e8858e2690da..3324fb2591f2 100644 --- a/package.json +++ b/package.json @@ -22,14 +22,14 @@ }, "devDependencies": { "@changesets/cli": "^2.27.1", - "@sveltejs/eslint-config": "^7.0.1", + "@sveltejs/eslint-config": "^6.0.4", "@svitejs/changesets-changelog-github-compact": "^1.1.0", - "eslint": "^9.0.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.36.0", + "eslint-plugin-svelte": "^2.35.1", "eslint-plugin-unicorn": "^52.0.0", - "playwright": "^1.41.0", - "typescript-eslint": "^7.6.0" + "playwright": "^1.41.0" }, "packageManager": "pnpm@8.15.7", "engines": { diff --git a/packages/create-svelte/shared/+eslint+prettier+typescript/.eslintrc.cjs b/packages/create-svelte/shared/+eslint+prettier+typescript/.eslintrc.cjs new file mode 100644 index 000000000000..0b757582c066 --- /dev/null +++ b/packages/create-svelte/shared/+eslint+prettier+typescript/.eslintrc.cjs @@ -0,0 +1,31 @@ +/** @type { import("eslint").Linter.Config } */ +module.exports = { + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended', + 'prettier' + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] +}; diff --git a/packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js b/packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js deleted file mode 100644 index a351fa90e2d7..000000000000 --- a/packages/create-svelte/shared/+eslint+prettier+typescript/eslint.config.js +++ /dev/null @@ -1,33 +0,0 @@ -import js from '@eslint/js'; -import ts from 'typescript-eslint'; -import svelte from 'eslint-plugin-svelte'; -import prettier from 'eslint-config-prettier'; -import globals from 'globals'; - -/** @type {import('eslint').Linter.FlatConfig[]} */ -export default [ - js.configs.recommended, - ...ts.configs.recommended, - ...svelte.configs['flat/recommended'], - prettier, - ...svelte.configs['flat/prettier'], - { - languageOptions: { - globals: { - ...globals.browser, - ...globals.node - } - } - }, - { - files: ['**/*.svelte'], - languageOptions: { - parserOptions: { - parser: ts.parser - } - } - }, - { - ignores: ['build/', '.svelte-kit/', 'dist/'] - } -]; diff --git a/packages/create-svelte/shared/+eslint+prettier-typescript/.eslintrc.cjs b/packages/create-svelte/shared/+eslint+prettier-typescript/.eslintrc.cjs new file mode 100644 index 000000000000..50b97a54680b --- /dev/null +++ b/packages/create-svelte/shared/+eslint+prettier-typescript/.eslintrc.cjs @@ -0,0 +1,15 @@ +/** @type { import("eslint").Linter.Config } */ +module.exports = { + root: true, + extends: ['eslint:recommended', 'plugin:svelte/recommended', 'prettier'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + } +}; diff --git a/packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js b/packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js deleted file mode 100644 index e6d28f342c49..000000000000 --- a/packages/create-svelte/shared/+eslint+prettier-typescript/eslint.config.js +++ /dev/null @@ -1,23 +0,0 @@ -import js from '@eslint/js'; -import svelte from 'eslint-plugin-svelte'; -import prettier from 'eslint-config-prettier'; -import globals from 'globals'; - -/** @type {import('eslint').Linter.FlatConfig[]} */ -export default [ - js.configs.recommended, - ...svelte.configs['flat/recommended'], - prettier, - ...svelte.configs['flat/prettier'], - { - languageOptions: { - globals: { - ...globals.browser, - ...globals.node - } - } - }, - { - ignores: ['build/', '.svelte-kit/', 'dist/'] - } -]; diff --git a/packages/create-svelte/shared/+eslint+svelte5/package.json b/packages/create-svelte/shared/+eslint+svelte5/package.json index 6add01035892..92bbf44b1af3 100644 --- a/packages/create-svelte/shared/+eslint+svelte5/package.json +++ b/packages/create-svelte/shared/+eslint+svelte5/package.json @@ -1,5 +1,5 @@ { "devDependencies": { - "eslint-plugin-svelte": "^2.36.0" + "eslint-plugin-svelte": "^2.36.0-next.4" } } diff --git a/packages/create-svelte/shared/+eslint+typescript/.eslintrc.cjs b/packages/create-svelte/shared/+eslint+typescript/.eslintrc.cjs new file mode 100644 index 000000000000..419521f727e7 --- /dev/null +++ b/packages/create-svelte/shared/+eslint+typescript/.eslintrc.cjs @@ -0,0 +1,30 @@ +/** @type { import("eslint").Linter.Config } */ +module.exports = { + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended' + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] +}; diff --git a/packages/create-svelte/shared/+eslint+typescript/eslint.config.js b/packages/create-svelte/shared/+eslint+typescript/eslint.config.js deleted file mode 100644 index 7f9681653819..000000000000 --- a/packages/create-svelte/shared/+eslint+typescript/eslint.config.js +++ /dev/null @@ -1,30 +0,0 @@ -import js from '@eslint/js'; -import ts from 'typescript-eslint'; -import svelte from 'eslint-plugin-svelte'; -import globals from 'globals'; - -/** @type {import('eslint').Linter.FlatConfig[]} */ -export default [ - js.configs.recommended, - ...ts.configs.recommended, - ...svelte.configs['flat/recommended'], - { - languageOptions: { - globals: { - ...globals.browser, - ...globals.node - } - } - }, - { - files: ['**/*.svelte'], - languageOptions: { - parserOptions: { - parser: ts.parser - } - } - }, - { - ignores: ['build/', '.svelte-kit/', 'dist/'] - } -]; diff --git a/packages/create-svelte/shared/+eslint+typescript/package.json b/packages/create-svelte/shared/+eslint+typescript/package.json index 7f85c33791a1..983a77c6c1b3 100644 --- a/packages/create-svelte/shared/+eslint+typescript/package.json +++ b/packages/create-svelte/shared/+eslint+typescript/package.json @@ -1,5 +1,6 @@ { "devDependencies": { - "typescript-eslint": "^7.5.0" + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0" } } diff --git a/packages/create-svelte/shared/+eslint-typescript/.eslintrc.cjs b/packages/create-svelte/shared/+eslint-typescript/.eslintrc.cjs new file mode 100644 index 000000000000..702ea973b33e --- /dev/null +++ b/packages/create-svelte/shared/+eslint-typescript/.eslintrc.cjs @@ -0,0 +1,15 @@ +/** @type { import("eslint").Linter.Config } */ +module.exports = { + root: true, + extends: ['eslint:recommended', 'plugin:svelte/recommended'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + } +}; diff --git a/packages/create-svelte/shared/+eslint-typescript/eslint.config.js b/packages/create-svelte/shared/+eslint-typescript/eslint.config.js deleted file mode 100644 index dcd0d0051c23..000000000000 --- a/packages/create-svelte/shared/+eslint-typescript/eslint.config.js +++ /dev/null @@ -1,20 +0,0 @@ -import js from '@eslint/js'; -import svelte from 'eslint-plugin-svelte'; -import globals from 'globals'; - -/** @type {import('eslint').Linter.FlatConfig[]} */ -export default [ - js.configs.recommended, - ...svelte.configs['flat/recommended'], - { - languageOptions: { - globals: { - ...globals.browser, - ...globals.node - } - } - }, - { - ignores: ['build/', '.svelte-kit/', 'dist/'] - } -]; diff --git a/packages/create-svelte/shared/+eslint/.eslintignore b/packages/create-svelte/shared/+eslint/.eslintignore new file mode 100644 index 000000000000..38972655faff --- /dev/null +++ b/packages/create-svelte/shared/+eslint/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/packages/create-svelte/shared/+eslint/package.json b/packages/create-svelte/shared/+eslint/package.json index a4ad106768f9..5fd8c6851288 100644 --- a/packages/create-svelte/shared/+eslint/package.json +++ b/packages/create-svelte/shared/+eslint/package.json @@ -1,8 +1,7 @@ { "devDependencies": { - "@types/eslint": "^8.56.7", - "eslint": "^9.0.0", - "eslint-plugin-svelte": "^2.36.0", - "globals": "^15.0.0" + "@types/eslint": "^8.56.0", + "eslint": "^8.56.0", + "eslint-plugin-svelte": "^2.35.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d224111d8272..9294e2127afb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,29 +12,29 @@ importers: specifier: ^2.27.1 version: 2.27.1 '@sveltejs/eslint-config': - specifier: ^7.0.1 - version: 7.0.1(@stylistic/eslint-plugin-js@1.7.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.37.0)(eslint-plugin-unicorn@52.0.0)(eslint@9.0.0)(typescript-eslint@7.6.0)(typescript@5.4.5) + specifier: ^6.0.4 + version: 6.0.4(@typescript-eslint/eslint-plugin@7.6.0)(@typescript-eslint/parser@7.6.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.37.0)(eslint-plugin-unicorn@52.0.0)(eslint@8.57.0)(typescript@5.4.5) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 + '@typescript-eslint/eslint-plugin': + specifier: ^7.0.0 + version: 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5) eslint: - specifier: ^9.0.0 - version: 9.0.0 + specifier: ^8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.0.0) + version: 9.1.0(eslint@8.57.0) eslint-plugin-svelte: - specifier: ^2.36.0 - version: 2.37.0(eslint@9.0.0) + specifier: ^2.35.1 + version: 2.37.0(eslint@8.57.0) eslint-plugin-unicorn: specifier: ^52.0.0 - version: 52.0.0(eslint@9.0.0) + version: 52.0.0(eslint@8.57.0) playwright: specifier: ^1.41.0 version: 1.43.1 - typescript-eslint: - specifier: ^7.6.0 - version: 7.6.0(eslint@9.0.0)(typescript@5.4.5) packages/adapter-auto: dependencies: @@ -2008,13 +2008,13 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@9.0.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 9.0.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2040,26 +2040,9 @@ packages: - supports-color dev: true - /@eslint/eslintrc@3.0.2: - resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 10.0.1 - globals: 14.0.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@9.0.0: - resolution: {integrity: sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true /@fastify/busboy@2.1.1: @@ -2071,8 +2054,8 @@ packages: resolution: {integrity: sha512-1uFRjqCcxVv4F31PjyLm8o4oNlT5ywwh6OwcDGkZbafOeFZHXekvholS9IlfZkRsZvVhSbFRHT/5iDib4KTtpg==} dev: false - /@humanwhocodes/config-array@0.12.3: - resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -2621,39 +2604,24 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@stylistic/eslint-plugin-js@1.7.0(eslint@9.0.0): - resolution: {integrity: sha512-PN6On/+or63FGnhhMKSQfYcWutRlzOiYlVdLM6yN7lquoBTqUJHYnl4TA4MHwiAt46X5gRxDr1+xPZ1lOLcL+Q==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: '>=8.40.0' - dependencies: - '@types/eslint': 8.56.9 - acorn: 8.11.3 - escape-string-regexp: 4.0.0 - eslint: 9.0.0 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - dev: true - - /@sveltejs/eslint-config@7.0.1(@stylistic/eslint-plugin-js@1.7.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.37.0)(eslint-plugin-unicorn@52.0.0)(eslint@9.0.0)(typescript-eslint@7.6.0)(typescript@5.4.5): - resolution: {integrity: sha512-0c65gMzIRkfSNxVtUmMB/0I0A+ypyIS7aJhXXU7dEdoOEmdN5K+GpGB4ybYBmqODJdZlNRmwNFaKxzzUGBkXQA==} + /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@7.6.0)(@typescript-eslint/parser@7.6.0)(eslint-config-prettier@9.1.0)(eslint-plugin-svelte@2.37.0)(eslint-plugin-unicorn@52.0.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-U9pwmDs+DbmsnCgTfu6Bacdwqn0DuI1IQNSiQqTgzVyYfaaj+zy9ZoQCiJfxFBGXHkklyXuRHp0KMx346N0lcQ==} peerDependencies: - '@stylistic/eslint-plugin-js': '>= 1' - eslint: '>= 9' - eslint-config-prettier: '>= 9' - eslint-plugin-svelte: '>= 2.36' - eslint-plugin-unicorn: '>= 50' - typescript: '>= 5' - typescript-eslint: '>= 7.5' - dependencies: - '@stylistic/eslint-plugin-js': 1.7.0(eslint@9.0.0) - eslint: 9.0.0 - eslint-config-prettier: 9.1.0(eslint@9.0.0) - eslint-plugin-svelte: 2.37.0(eslint@9.0.0) - eslint-plugin-unicorn: 52.0.0(eslint@9.0.0) - globals: 15.0.0 + '@typescript-eslint/eslint-plugin': '>= 5' + '@typescript-eslint/parser': '>= 5' + eslint: '>= 8' + eslint-config-prettier: '>= 8' + eslint-plugin-svelte: '>= 2' + eslint-plugin-unicorn: '>= 47' + typescript: '>= 4' + dependencies: + '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + eslint-plugin-svelte: 2.37.0(eslint@8.57.0) + eslint-plugin-unicorn: 52.0.0(eslint@8.57.0) typescript: 5.4.5 - typescript-eslint: 7.6.0(eslint@9.0.0)(typescript@5.4.5) dev: true /@sveltejs/site-kit@6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.14): @@ -2739,13 +2707,6 @@ packages: '@types/geojson': 7946.0.14 dev: true - /@types/eslint@8.56.9: - resolution: {integrity: sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==} - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - dev: true - /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -2824,7 +2785,7 @@ packages: '@types/node': 18.19.31 dev: true - /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.4.5): + /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2836,13 +2797,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.6.0 - '@typescript-eslint/type-utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/type-utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4 - eslint: 9.0.0 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -2853,7 +2814,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.6.0(eslint@9.0.0)(typescript@5.4.5): + /@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2868,7 +2829,7 @@ packages: '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.6.0 debug: 4.3.4 - eslint: 9.0.0 + eslint: 8.57.0 typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -2882,7 +2843,7 @@ packages: '@typescript-eslint/visitor-keys': 7.6.0 dev: true - /@typescript-eslint/type-utils@7.6.0(eslint@9.0.0)(typescript@5.4.5): + /@typescript-eslint/type-utils@7.6.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -2893,9 +2854,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4 - eslint: 9.0.0 + eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: @@ -2929,19 +2890,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@7.6.0(eslint@9.0.0)(typescript@5.4.5): + /@typescript-eslint/utils@7.6.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.6.0 '@typescript-eslint/types': 7.6.0 '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) - eslint: 9.0.0 + eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -2982,6 +2943,10 @@ packages: - supports-color dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /@vercel/nft@0.26.4: resolution: {integrity: sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==} engines: {node: '>=16'} @@ -3801,6 +3766,13 @@ packages: path-type: 4.0.0 dev: true + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + /dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} @@ -4030,26 +4002,26 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-compat-utils@0.5.0(eslint@9.0.0): + /eslint-compat-utils@0.5.0(eslint@8.57.0): resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 9.0.0 + eslint: 8.57.0 semver: 7.6.0 dev: true - /eslint-config-prettier@9.1.0(eslint@9.0.0): + /eslint-config-prettier@9.1.0(eslint@8.57.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.0.0 + eslint: 8.57.0 dev: true - /eslint-plugin-svelte@2.37.0(eslint@9.0.0): + /eslint-plugin-svelte@2.37.0(eslint@8.57.0): resolution: {integrity: sha512-H/2Gz7agYHEMEEzRuLYuCmAIdjuBnbhFG9hOK0yCdSBvvJGJMkjo+lR6j67OIvLOavgp4L7zA5LnDKi8WqdPhQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: @@ -4059,11 +4031,11 @@ packages: svelte: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4 - eslint: 9.0.0 - eslint-compat-utils: 0.5.0(eslint@9.0.0) + eslint: 8.57.0 + eslint-compat-utils: 0.5.0(eslint@8.57.0) esutils: 2.0.3 known-css-properties: 0.30.0 postcss: 8.4.38 @@ -4077,19 +4049,19 @@ packages: - ts-node dev: true - /eslint-plugin-unicorn@52.0.0(eslint@9.0.0): + /eslint-plugin-unicorn@52.0.0(eslint@8.57.0): resolution: {integrity: sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.56.0' dependencies: '@babel/helper-validator-identifier': 7.22.20 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint/eslintrc': 2.1.4 ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.36.1 - eslint: 9.0.0 + eslint: 8.57.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -4112,55 +4084,46 @@ packages: estraverse: 5.3.0 dev: true - /eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - - /eslint@9.0.0: - resolution: {integrity: sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 3.0.2 - '@eslint/js': 9.0.0 - '@humanwhocodes/config-array': 0.12.3 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 + doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 - eslint-visitor-keys: 4.0.0 - espree: 10.0.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 + file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 + globals: 13.24.0 graphemer: 1.4.0 ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 + js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -4176,15 +4139,6 @@ packages: /esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} - /espree@10.0.1: - resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 4.0.0 - dev: true - /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4301,11 +4255,11 @@ packages: engines: {node: '>=12'} dev: true - /file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 4.0.1 + flat-cache: 3.2.0 dev: true /file-uri-to-path@1.0.0: @@ -4341,12 +4295,13 @@ packages: pkg-dir: 4.2.0 dev: true - /flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.3.1 keyv: 4.5.4 + rimraf: 3.0.2 dev: true /flatted@3.3.1: @@ -4553,16 +4508,6 @@ packages: type-fest: 0.20.2 dev: true - /globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - dev: true - - /globals@15.0.0: - resolution: {integrity: sha512-m/C/yR4mjO6pXDTm9/R/SpYTAIyaUB4EOzcaaMEl7mds7Mshct9GfejiJNQGjHHbdMPey13Kpu4TMbYi9ex1pw==} - engines: {node: '>=18'} - dev: true - /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -6122,7 +6067,6 @@ packages: hasBin: true dependencies: glob: 7.2.3 - dev: false /rollup-plugin-inject@3.0.2: resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} @@ -7018,25 +6962,6 @@ packages: possible-typed-array-names: 1.0.0 dev: true - /typescript-eslint@7.6.0(eslint@9.0.0)(typescript@5.4.5): - resolution: {integrity: sha512-LY6vH6F1l5jpGqRtU+uK4+mOecIb4Cd4kaz1hAiJrgnNiHUA8wiw8BkJyYS+MRLM69F1QuSKwtGlQqnGl1Rc6w==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.4.5) - eslint: 9.0.0 - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - dev: true - /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} From f71f38149aae0c76b3a58bbbcefbdad16d8392fd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 14 Apr 2024 09:26:32 -0700 Subject: [PATCH 086/454] Version Packages (#12111) Co-authored-by: github-actions[bot] --- .changeset/chilly-wombats-roll.md | 5 ----- .changeset/fair-suns-report.md | 5 ----- .changeset/many-ladybugs-greet.md | 8 -------- packages/adapter-cloudflare-workers/CHANGELOG.md | 11 +++++++++++ packages/adapter-cloudflare-workers/package.json | 2 +- packages/adapter-cloudflare/CHANGELOG.md | 11 +++++++++++ packages/adapter-cloudflare/package.json | 2 +- packages/adapter-netlify/CHANGELOG.md | 11 +++++++++++ packages/adapter-netlify/package.json | 2 +- packages/adapter-vercel/CHANGELOG.md | 11 +++++++++++ packages/adapter-vercel/package.json | 2 +- packages/create-svelte/CHANGELOG.md | 6 ++++++ packages/create-svelte/package.json | 2 +- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 16 files changed, 63 insertions(+), 25 deletions(-) delete mode 100644 .changeset/chilly-wombats-roll.md delete mode 100644 .changeset/fair-suns-report.md delete mode 100644 .changeset/many-ladybugs-greet.md diff --git a/.changeset/chilly-wombats-roll.md b/.changeset/chilly-wombats-roll.md deleted file mode 100644 index ffb6cba3f056..000000000000 --- a/.changeset/chilly-wombats-roll.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'create-svelte': patch ---- - -fix: go back to eslint 8 until typescript-eslint supports eslint 9 diff --git a/.changeset/fair-suns-report.md b/.changeset/fair-suns-report.md deleted file mode 100644 index e4034ae49237..000000000000 --- a/.changeset/fair-suns-report.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: avoid incorrectly un- and re-escaping cookies collected during a server-side `fetch` diff --git a/.changeset/many-ladybugs-greet.md b/.changeset/many-ladybugs-greet.md deleted file mode 100644 index e24a23cea6f8..000000000000 --- a/.changeset/many-ladybugs-greet.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@sveltejs/adapter-cloudflare-workers": minor -"@sveltejs/adapter-cloudflare": minor -"@sveltejs/adapter-netlify": minor -"@sveltejs/adapter-vercel": minor ---- - -chore(deps): upgrade esbuild diff --git a/packages/adapter-cloudflare-workers/CHANGELOG.md b/packages/adapter-cloudflare-workers/CHANGELOG.md index dcb9a534b45e..136503fc171b 100644 --- a/packages/adapter-cloudflare-workers/CHANGELOG.md +++ b/packages/adapter-cloudflare-workers/CHANGELOG.md @@ -1,5 +1,16 @@ # @sveltejs/adapter-cloudflare-workers +## 2.4.0 + +### Minor Changes + +- chore(deps): upgrade esbuild ([#12118](https://github.com/sveltejs/kit/pull/12118)) + +### Patch Changes + +- Updated dependencies [[`bbab296f6fcc05af6b999182798bcdedabbaa4c9`](https://github.com/sveltejs/kit/commit/bbab296f6fcc05af6b999182798bcdedabbaa4c9)]: + - @sveltejs/kit@2.5.6 + ## 2.3.0 ### Minor Changes diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index 0850fc37f761..922b1ee65d11 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare-workers", - "version": "2.3.0", + "version": "2.4.0", "description": "SvelteKit adapter that creates a Cloudflare Workers site using a function for dynamic server rendering", "repository": { "type": "git", diff --git a/packages/adapter-cloudflare/CHANGELOG.md b/packages/adapter-cloudflare/CHANGELOG.md index 8b462bc8b653..91cca9765d65 100644 --- a/packages/adapter-cloudflare/CHANGELOG.md +++ b/packages/adapter-cloudflare/CHANGELOG.md @@ -1,5 +1,16 @@ # @sveltejs/adapter-cloudflare +## 4.4.0 + +### Minor Changes + +- chore(deps): upgrade esbuild ([#12118](https://github.com/sveltejs/kit/pull/12118)) + +### Patch Changes + +- Updated dependencies [[`bbab296f6fcc05af6b999182798bcdedabbaa4c9`](https://github.com/sveltejs/kit/commit/bbab296f6fcc05af6b999182798bcdedabbaa4c9)]: + - @sveltejs/kit@2.5.6 + ## 4.3.0 ### Minor Changes diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 8c358681822f..790cb53876e5 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare", - "version": "4.3.0", + "version": "4.4.0", "description": "Adapter for building SvelteKit applications on Cloudflare Pages with Workers integration", "repository": { "type": "git", diff --git a/packages/adapter-netlify/CHANGELOG.md b/packages/adapter-netlify/CHANGELOG.md index b9f8000d7024..1178f20d189b 100644 --- a/packages/adapter-netlify/CHANGELOG.md +++ b/packages/adapter-netlify/CHANGELOG.md @@ -1,5 +1,16 @@ # @sveltejs/adapter-netlify +## 4.2.0 + +### Minor Changes + +- chore(deps): upgrade esbuild ([#12118](https://github.com/sveltejs/kit/pull/12118)) + +### Patch Changes + +- Updated dependencies [[`bbab296f6fcc05af6b999182798bcdedabbaa4c9`](https://github.com/sveltejs/kit/commit/bbab296f6fcc05af6b999182798bcdedabbaa4c9)]: + - @sveltejs/kit@2.5.6 + ## 4.1.0 ### Minor Changes diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 83ae56f1bdf1..be3b7ad993a8 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-netlify", - "version": "4.1.0", + "version": "4.2.0", "description": "A SvelteKit adapter that creates a Netlify app", "repository": { "type": "git", diff --git a/packages/adapter-vercel/CHANGELOG.md b/packages/adapter-vercel/CHANGELOG.md index 328182ed3766..50f220183b42 100644 --- a/packages/adapter-vercel/CHANGELOG.md +++ b/packages/adapter-vercel/CHANGELOG.md @@ -1,5 +1,16 @@ # @sveltejs/adapter-vercel +## 5.3.0 + +### Minor Changes + +- chore(deps): upgrade esbuild ([#12118](https://github.com/sveltejs/kit/pull/12118)) + +### Patch Changes + +- Updated dependencies [[`bbab296f6fcc05af6b999182798bcdedabbaa4c9`](https://github.com/sveltejs/kit/commit/bbab296f6fcc05af6b999182798bcdedabbaa4c9)]: + - @sveltejs/kit@2.5.6 + ## 5.2.0 ### Minor Changes diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index f9a3f667aac1..b1d7d5bbe739 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-vercel", - "version": "5.2.0", + "version": "5.3.0", "description": "A SvelteKit adapter that creates a Vercel app", "repository": { "type": "git", diff --git a/packages/create-svelte/CHANGELOG.md b/packages/create-svelte/CHANGELOG.md index 635d54f0ab46..badec536ac34 100644 --- a/packages/create-svelte/CHANGELOG.md +++ b/packages/create-svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # create-svelte +## 6.1.1 + +### Patch Changes + +- fix: go back to eslint 8 until typescript-eslint supports eslint 9 ([#12110](https://github.com/sveltejs/kit/pull/12110)) + ## 6.1.0 ### Minor Changes diff --git a/packages/create-svelte/package.json b/packages/create-svelte/package.json index a0b3b1ca2df3..ec30e6976f32 100644 --- a/packages/create-svelte/package.json +++ b/packages/create-svelte/package.json @@ -1,6 +1,6 @@ { "name": "create-svelte", - "version": "6.1.0", + "version": "6.1.1", "description": "A CLI for creating new SvelteKit projects", "repository": { "type": "git", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 0e2b7819d7d6..1b796988a4e3 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.5.6 + +### Patch Changes + +- fix: avoid incorrectly un- and re-escaping cookies collected during a server-side `fetch` ([#11904](https://github.com/sveltejs/kit/pull/11904)) + ## 2.5.5 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 8759e65c5d45..8e9f8643b553 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.5.5", + "version": "2.5.6", "description": "The fastest way to build Svelte apps", "repository": { "type": "git", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index d5932b8d1a9c..b3ca5fd719bc 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.5.5'; +export const VERSION = '2.5.6'; From bd54aa188df2a721ab7af311dab4e668958f16f5 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:45:37 +0200 Subject: [PATCH 087/454] feat: add self-closing-tags migration (#12128) * feat: add self-closing-tags migration Companion to sveltejs/svelte#11114. This adds an npx svelte-migrate self-closing-tags migration that replaces all the self-closing non-void elements in your .svelte files. * use local Svelte installation --- .changeset/sixty-walls-act.md | 5 + .../default/src/routes/sverdle/+page.svelte | 2 +- .../anchor-afternavigate/+page.svelte | 2 +- .../anchor-onmount/+page.svelte | 2 +- .../data-sveltekit/noscroll/+page.svelte | 2 +- .../noscroll/target/+page.svelte | 2 +- .../routes/iframes/nested/parent/+page.svelte | 2 +- .../src/routes/no-ssr/margin/+page.svelte | 2 +- .../basics/src/routes/routing/+page.svelte | 2 +- .../scroll/cross-document/a/+page.svelte | 2 +- .../migrations/self-closing-tags/index.js | 56 +++++ .../migrations/self-closing-tags/migrate.js | 191 ++++++++++++++++++ .../self-closing-tags/migrate.spec.js | 31 +++ packages/migrate/package.json | 5 +- pnpm-lock.yaml | 13 ++ .../src/routes/home/Video.svelte | 2 +- 16 files changed, 310 insertions(+), 11 deletions(-) create mode 100644 .changeset/sixty-walls-act.md create mode 100644 packages/migrate/migrations/self-closing-tags/index.js create mode 100644 packages/migrate/migrations/self-closing-tags/migrate.js create mode 100644 packages/migrate/migrations/self-closing-tags/migrate.spec.js diff --git a/.changeset/sixty-walls-act.md b/.changeset/sixty-walls-act.md new file mode 100644 index 000000000000..f3271cbfd42b --- /dev/null +++ b/.changeset/sixty-walls-act.md @@ -0,0 +1,5 @@ +--- +"svelte-migrate": minor +--- + +feat: add self-closing-tags migration diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/+page.svelte b/packages/create-svelte/templates/default/src/routes/sverdle/+page.svelte index 68ab6400de82..42d987106d37 100644 --- a/packages/create-svelte/templates/default/src/routes/sverdle/+page.svelte +++ b/packages/create-svelte/templates/default/src/routes/sverdle/+page.svelte @@ -200,7 +200,7 @@ stageHeight: window.innerHeight, colors: ['#ff3e00', '#40b3ff', '#676778'] }} - /> + > {/if} diff --git a/packages/create-svelte/templates/default/src/routes/+page.svelte b/packages/create-svelte/templates/default/src/routes/+page.svelte deleted file mode 100644 index 97201ef364c8..000000000000 --- a/packages/create-svelte/templates/default/src/routes/+page.svelte +++ /dev/null @@ -1,59 +0,0 @@ - - - - Home - - - -
-

- - - - Welcome - - - - to your new
SvelteKit app -

- -

- try editing src/routes/+page.svelte -

- - -
- - diff --git a/packages/create-svelte/templates/default/src/routes/+page.ts b/packages/create-svelte/templates/default/src/routes/+page.ts deleted file mode 100644 index a72419a63f41..000000000000 --- a/packages/create-svelte/templates/default/src/routes/+page.ts +++ /dev/null @@ -1,3 +0,0 @@ -// since there's no dynamic data here, we can prerender -// it so that it gets served as a static asset in production -export const prerender = true; diff --git a/packages/create-svelte/templates/default/src/routes/Counter.svelte b/packages/create-svelte/templates/default/src/routes/Counter.svelte deleted file mode 100644 index e40221d44b60..000000000000 --- a/packages/create-svelte/templates/default/src/routes/Counter.svelte +++ /dev/null @@ -1,106 +0,0 @@ - - -
- - -
-
- - {Math.floor($displayed_count)} -
-
- - -
- - diff --git a/packages/create-svelte/templates/default/src/routes/Header.svelte b/packages/create-svelte/templates/default/src/routes/Header.svelte deleted file mode 100644 index 368b721e891b..000000000000 --- a/packages/create-svelte/templates/default/src/routes/Header.svelte +++ /dev/null @@ -1,129 +0,0 @@ - - -
-
- - SvelteKit - -
- - - -
- - GitHub - -
-
- - diff --git a/packages/create-svelte/templates/default/src/routes/about/+page.svelte b/packages/create-svelte/templates/default/src/routes/about/+page.svelte deleted file mode 100644 index 7f7946d23050..000000000000 --- a/packages/create-svelte/templates/default/src/routes/about/+page.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - About - - - -
-

About this app

- -

- This is a SvelteKit app. You can make your own by typing the - following into your command line and following the prompts: -

- -
npm create svelte@latest
- -

- The page you're looking at is purely static HTML, with no client-side interactivity needed. - Because of that, we don't need to load any JavaScript. Try viewing the page's source, or opening - the devtools network panel and reloading. -

- -

- The Sverdle page illustrates SvelteKit's data loading and form handling. Try - using it with JavaScript disabled! -

-
diff --git a/packages/create-svelte/templates/default/src/routes/about/+page.ts b/packages/create-svelte/templates/default/src/routes/about/+page.ts deleted file mode 100644 index e739ef4b6c11..000000000000 --- a/packages/create-svelte/templates/default/src/routes/about/+page.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { dev } from '$app/environment'; - -// we don't need any JS on this page, though we'll load -// it in dev so that we get hot module replacement -export const csr = dev; - -// since there's no dynamic data here, we can prerender -// it so that it gets served as a static asset in production -export const prerender = true; diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/+page.server.ts b/packages/create-svelte/templates/default/src/routes/sverdle/+page.server.ts deleted file mode 100644 index 0f52fe8d654c..000000000000 --- a/packages/create-svelte/templates/default/src/routes/sverdle/+page.server.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { fail } from '@sveltejs/kit'; -import { Game } from './game'; -import type { PageServerLoad, Actions } from './$types'; - -/** @satisfies {import('./$types').PageServerLoad} */ -export const load = (({ cookies }) => { - const game = new Game(cookies.get('sverdle')); - - return { - /** - * The player's guessed words so far - */ - guesses: game.guesses, - - /** - * An array of strings like '__x_c' corresponding to the guesses, where 'x' means - * an exact match, and 'c' means a close match (right letter, wrong place) - */ - answers: game.answers, - - /** - * The correct answer, revealed if the game is over - */ - answer: game.answers.length >= 6 ? game.answer : null - }; -}) satisfies PageServerLoad; - -/** @satisfies {import('./$types').Actions} */ -export const actions = { - /** - * Modify game state in reaction to a keypress. If client-side JavaScript - * is available, this will happen in the browser instead of here - */ - update: async ({ request, cookies }) => { - const game = new Game(cookies.get('sverdle')); - - const data = await request.formData(); - const key = data.get('key'); - - const i = game.answers.length; - - if (key === 'backspace') { - game.guesses[i] = game.guesses[i].slice(0, -1); - } else { - game.guesses[i] += key; - } - - cookies.set('sverdle', game.toString(), { path: '/' }); - }, - - /** - * Modify game state in reaction to a guessed word. This logic always runs on - * the server, so that people can't cheat by peeking at the JavaScript - */ - enter: async ({ request, cookies }) => { - const game = new Game(cookies.get('sverdle')); - - const data = await request.formData(); - const guess = /** @type {string[]} */ data.getAll('guess') /***/ as string[]; - - if (!game.enter(guess)) { - return fail(400, { badGuess: true }); - } - - cookies.set('sverdle', game.toString(), { path: '/' }); - }, - - restart: async ({ cookies }) => { - cookies.delete('sverdle', { path: '/' }); - } -} satisfies Actions; diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/+page.svelte b/packages/create-svelte/templates/default/src/routes/sverdle/+page.svelte deleted file mode 100644 index 42d987106d37..000000000000 --- a/packages/create-svelte/templates/default/src/routes/sverdle/+page.svelte +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - Sverdle - - - -

Sverdle

- -
{ - // prevent default callback from resetting the form - return ({ update }) => { - update({ reset: false }); - }; - }} -> - How to play - -
- {#each Array.from(Array(6).keys()) as row (row)} - {@const current = row === i} -

Row {row + 1}

-
- {#each Array.from(Array(5).keys()) as column (column)} - {@const guess = current ? currentGuess : data.guesses[row]} - {@const answer = data.answers[row]?.[column]} - {@const value = guess?.[column] ?? ''} - {@const selected = current && column === guess.length} - {@const exact = answer === 'x'} - {@const close = answer === 'c'} - {@const missing = answer === '_'} -
- {value} - - {#if exact} - (correct) - {:else if close} - (present) - {:else if missing} - (absent) - {:else} - empty - {/if} - - -
- {/each} -
- {/each} -
- -
- {#if won || data.answers.length >= 6} - {#if !won && data.answer} -

the answer was "{data.answer}"

- {/if} - - {:else} -
- - - - - {#each ['qwertyuiop', 'asdfghjkl', 'zxcvbnm'] as row} -
- {#each row as letter} - - {/each} -
- {/each} -
- {/if} -
-
- -{#if won} -
-{/if} - - diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/game.ts b/packages/create-svelte/templates/default/src/routes/sverdle/game.ts deleted file mode 100644 index d5cbe932e4cb..000000000000 --- a/packages/create-svelte/templates/default/src/routes/sverdle/game.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { words, allowed } from './words.server'; - -export class Game { - index: number; - guesses: string[]; - answers: string[]; - answer: string; - - /** - * Create a game object from the player's cookie, or initialise a new game - * @param {string | undefined} serialized - */ - constructor(serialized: string | undefined = undefined) { - if (serialized) { - const [index, guesses, answers] = serialized.split('-'); - - this.index = +index; - this.guesses = guesses ? guesses.split(' ') : []; - this.answers = answers ? answers.split(' ') : []; - } else { - this.index = Math.floor(Math.random() * words.length); - this.guesses = ['', '', '', '', '', '']; - this.answers = /** @type {string[]} */ [] /***/; - } - - this.answer = words[this.index]; - } - - /** - * Update game state based on a guess of a five-letter word. Returns - * true if the guess was valid, false otherwise - * @param {string[]} letters - */ - enter(letters: string[]) { - const word = letters.join(''); - const valid = allowed.has(word); - - if (!valid) return false; - - this.guesses[this.answers.length] = word; - - const available = Array.from(this.answer); - const answer = Array(5).fill('_'); - - // first, find exact matches - for (let i = 0; i < 5; i += 1) { - if (letters[i] === available[i]) { - answer[i] = 'x'; - available[i] = ' '; - } - } - - // then find close matches (this has to happen - // in a second step, otherwise an early close - // match can prevent a later exact match) - for (let i = 0; i < 5; i += 1) { - if (answer[i] === '_') { - const index = available.indexOf(letters[i]); - if (index !== -1) { - answer[i] = 'c'; - available[index] = ' '; - } - } - } - - this.answers.push(answer.join('')); - - return true; - } - - /** - * Serialize game state so it can be set as a cookie - */ - toString() { - return `${this.index}-${this.guesses.join(' ')}-${this.answers.join(' ')}`; - } -} diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/how-to-play/+page.svelte b/packages/create-svelte/templates/default/src/routes/sverdle/how-to-play/+page.svelte deleted file mode 100644 index e8e2cec3198e..000000000000 --- a/packages/create-svelte/templates/default/src/routes/sverdle/how-to-play/+page.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - How to play Sverdle - - - -
-

How to play Sverdle

- -

- Sverdle is a clone of Wordle, the - word guessing game. To play, enter a five-letter English word. For example: -

- -
- r - i - t - z - y -
- -

- The y is in the right place. r and - t - are the right letters, but in the wrong place. The other letters are wrong, and can be discarded. - Let's make another guess: -

- -
- p - a - r - t - y -
- -

This time we guessed right! You have six guesses to get the word.

- -

- Unlike the original Wordle, Sverdle runs on the server instead of in the browser, making it - impossible to cheat. It uses <form> and cookies to submit data, meaning you can - even play with JavaScript disabled! -

-
- - diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/how-to-play/+page.ts b/packages/create-svelte/templates/default/src/routes/sverdle/how-to-play/+page.ts deleted file mode 100644 index e739ef4b6c11..000000000000 --- a/packages/create-svelte/templates/default/src/routes/sverdle/how-to-play/+page.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { dev } from '$app/environment'; - -// we don't need any JS on this page, though we'll load -// it in dev so that we get hot module replacement -export const csr = dev; - -// since there's no dynamic data here, we can prerender -// it so that it gets served as a static asset in production -export const prerender = true; diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/reduced-motion.ts b/packages/create-svelte/templates/default/src/routes/sverdle/reduced-motion.ts deleted file mode 100644 index 27b9d51161d0..000000000000 --- a/packages/create-svelte/templates/default/src/routes/sverdle/reduced-motion.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { readable } from 'svelte/store'; -import { browser } from '$app/environment'; - -const reduced_motion_query = '(prefers-reduced-motion: reduce)'; - -const get_initial_motion_preference = () => { - if (!browser) return false; - return window.matchMedia(reduced_motion_query).matches; -}; - -export const reduced_motion = readable(get_initial_motion_preference(), (set) => { - if (browser) { - /** - * @param {MediaQueryListEvent} event - */ - const set_reduced_motion = (event: MediaQueryListEvent) => { - set(event.matches); - }; - const media_query_list = window.matchMedia(reduced_motion_query); - media_query_list.addEventListener('change', set_reduced_motion); - - return () => { - media_query_list.removeEventListener('change', set_reduced_motion); - }; - } -}); diff --git a/packages/create-svelte/templates/default/src/routes/sverdle/words.server.ts b/packages/create-svelte/templates/default/src/routes/sverdle/words.server.ts deleted file mode 100644 index 56082a33115d..000000000000 --- a/packages/create-svelte/templates/default/src/routes/sverdle/words.server.ts +++ /dev/null @@ -1,12980 +0,0 @@ -/** The list of possible words */ -export const words = [ - 'aback', - 'abase', - 'abate', - 'abbey', - 'abbot', - 'abhor', - 'abide', - 'abled', - 'abode', - 'abort', - 'about', - 'above', - 'abuse', - 'abyss', - 'acorn', - 'acrid', - 'actor', - 'acute', - 'adage', - 'adapt', - 'adept', - 'admin', - 'admit', - 'adobe', - 'adopt', - 'adore', - 'adorn', - 'adult', - 'affix', - 'afire', - 'afoot', - 'afoul', - 'after', - 'again', - 'agape', - 'agate', - 'agent', - 'agile', - 'aging', - 'aglow', - 'agony', - 'agora', - 'agree', - 'ahead', - 'aider', - 'aisle', - 'alarm', - 'album', - 'alert', - 'algae', - 'alibi', - 'alien', - 'align', - 'alike', - 'alive', - 'allay', - 'alley', - 'allot', - 'allow', - 'alloy', - 'aloft', - 'alone', - 'along', - 'aloof', - 'aloud', - 'alpha', - 'altar', - 'alter', - 'amass', - 'amaze', - 'amber', - 'amble', - 'amend', - 'amiss', - 'amity', - 'among', - 'ample', - 'amply', - 'amuse', - 'angel', - 'anger', - 'angle', - 'angry', - 'angst', - 'anime', - 'ankle', - 'annex', - 'annoy', - 'annul', - 'anode', - 'antic', - 'anvil', - 'aorta', - 'apart', - 'aphid', - 'aping', - 'apnea', - 'apple', - 'apply', - 'apron', - 'aptly', - 'arbor', - 'ardor', - 'arena', - 'argue', - 'arise', - 'armor', - 'aroma', - 'arose', - 'array', - 'arrow', - 'arson', - 'artsy', - 'ascot', - 'ashen', - 'aside', - 'askew', - 'assay', - 'asset', - 'atoll', - 'atone', - 'attic', - 'audio', - 'audit', - 'augur', - 'aunty', - 'avail', - 'avert', - 'avian', - 'avoid', - 'await', - 'awake', - 'award', - 'aware', - 'awash', - 'awful', - 'awoke', - 'axial', - 'axiom', - 'axion', - 'azure', - 'bacon', - 'badge', - 'badly', - 'bagel', - 'baggy', - 'baker', - 'baler', - 'balmy', - 'banal', - 'banjo', - 'barge', - 'baron', - 'basal', - 'basic', - 'basil', - 'basin', - 'basis', - 'baste', - 'batch', - 'bathe', - 'baton', - 'batty', - 'bawdy', - 'bayou', - 'beach', - 'beady', - 'beard', - 'beast', - 'beech', - 'beefy', - 'befit', - 'began', - 'begat', - 'beget', - 'begin', - 'begun', - 'being', - 'belch', - 'belie', - 'belle', - 'belly', - 'below', - 'bench', - 'beret', - 'berry', - 'berth', - 'beset', - 'betel', - 'bevel', - 'bezel', - 'bible', - 'bicep', - 'biddy', - 'bigot', - 'bilge', - 'billy', - 'binge', - 'bingo', - 'biome', - 'birch', - 'birth', - 'bison', - 'bitty', - 'black', - 'blade', - 'blame', - 'bland', - 'blank', - 'blare', - 'blast', - 'blaze', - 'bleak', - 'bleat', - 'bleed', - 'bleep', - 'blend', - 'bless', - 'blimp', - 'blind', - 'blink', - 'bliss', - 'blitz', - 'bloat', - 'block', - 'bloke', - 'blond', - 'blood', - 'bloom', - 'blown', - 'bluer', - 'bluff', - 'blunt', - 'blurb', - 'blurt', - 'blush', - 'board', - 'boast', - 'bobby', - 'boney', - 'bongo', - 'bonus', - 'booby', - 'boost', - 'booth', - 'booty', - 'booze', - 'boozy', - 'borax', - 'borne', - 'bosom', - 'bossy', - 'botch', - 'bough', - 'boule', - 'bound', - 'bowel', - 'boxer', - 'brace', - 'braid', - 'brain', - 'brake', - 'brand', - 'brash', - 'brass', - 'brave', - 'bravo', - 'brawl', - 'brawn', - 'bread', - 'break', - 'breed', - 'briar', - 'bribe', - 'brick', - 'bride', - 'brief', - 'brine', - 'bring', - 'brink', - 'briny', - 'brisk', - 'broad', - 'broil', - 'broke', - 'brood', - 'brook', - 'broom', - 'broth', - 'brown', - 'brunt', - 'brush', - 'brute', - 'buddy', - 'budge', - 'buggy', - 'bugle', - 'build', - 'built', - 'bulge', - 'bulky', - 'bully', - 'bunch', - 'bunny', - 'burly', - 'burnt', - 'burst', - 'bused', - 'bushy', - 'butch', - 'butte', - 'buxom', - 'buyer', - 'bylaw', - 'cabal', - 'cabby', - 'cabin', - 'cable', - 'cacao', - 'cache', - 'cacti', - 'caddy', - 'cadet', - 'cagey', - 'cairn', - 'camel', - 'cameo', - 'canal', - 'candy', - 'canny', - 'canoe', - 'canon', - 'caper', - 'caput', - 'carat', - 'cargo', - 'carol', - 'carry', - 'carve', - 'caste', - 'catch', - 'cater', - 'catty', - 'caulk', - 'cause', - 'cavil', - 'cease', - 'cedar', - 'cello', - 'chafe', - 'chaff', - 'chain', - 'chair', - 'chalk', - 'champ', - 'chant', - 'chaos', - 'chard', - 'charm', - 'chart', - 'chase', - 'chasm', - 'cheap', - 'cheat', - 'check', - 'cheek', - 'cheer', - 'chess', - 'chest', - 'chick', - 'chide', - 'chief', - 'child', - 'chili', - 'chill', - 'chime', - 'china', - 'chirp', - 'chock', - 'choir', - 'choke', - 'chord', - 'chore', - 'chose', - 'chuck', - 'chump', - 'chunk', - 'churn', - 'chute', - 'cider', - 'cigar', - 'cinch', - 'circa', - 'civic', - 'civil', - 'clack', - 'claim', - 'clamp', - 'clang', - 'clank', - 'clash', - 'clasp', - 'class', - 'clean', - 'clear', - 'cleat', - 'cleft', - 'clerk', - 'click', - 'cliff', - 'climb', - 'cling', - 'clink', - 'cloak', - 'clock', - 'clone', - 'close', - 'cloth', - 'cloud', - 'clout', - 'clove', - 'clown', - 'cluck', - 'clued', - 'clump', - 'clung', - 'coach', - 'coast', - 'cobra', - 'cocoa', - 'colon', - 'color', - 'comet', - 'comfy', - 'comic', - 'comma', - 'conch', - 'condo', - 'conic', - 'copse', - 'coral', - 'corer', - 'corny', - 'couch', - 'cough', - 'could', - 'count', - 'coupe', - 'court', - 'coven', - 'cover', - 'covet', - 'covey', - 'cower', - 'coyly', - 'crack', - 'craft', - 'cramp', - 'crane', - 'crank', - 'crash', - 'crass', - 'crate', - 'crave', - 'crawl', - 'craze', - 'crazy', - 'creak', - 'cream', - 'credo', - 'creed', - 'creek', - 'creep', - 'creme', - 'crepe', - 'crept', - 'cress', - 'crest', - 'crick', - 'cried', - 'crier', - 'crime', - 'crimp', - 'crisp', - 'croak', - 'crock', - 'crone', - 'crony', - 'crook', - 'cross', - 'croup', - 'crowd', - 'crown', - 'crude', - 'cruel', - 'crumb', - 'crump', - 'crush', - 'crust', - 'crypt', - 'cubic', - 'cumin', - 'curio', - 'curly', - 'curry', - 'curse', - 'curve', - 'curvy', - 'cutie', - 'cyber', - 'cycle', - 'cynic', - 'daddy', - 'daily', - 'dairy', - 'daisy', - 'dally', - 'dance', - 'dandy', - 'datum', - 'daunt', - 'dealt', - 'death', - 'debar', - 'debit', - 'debug', - 'debut', - 'decal', - 'decay', - 'decor', - 'decoy', - 'decry', - 'defer', - 'deign', - 'deity', - 'delay', - 'delta', - 'delve', - 'demon', - 'demur', - 'denim', - 'dense', - 'depot', - 'depth', - 'derby', - 'deter', - 'detox', - 'deuce', - 'devil', - 'diary', - 'dicey', - 'digit', - 'dilly', - 'dimly', - 'diner', - 'dingo', - 'dingy', - 'diode', - 'dirge', - 'dirty', - 'disco', - 'ditch', - 'ditto', - 'ditty', - 'diver', - 'dizzy', - 'dodge', - 'dodgy', - 'dogma', - 'doing', - 'dolly', - 'donor', - 'donut', - 'dopey', - 'doubt', - 'dough', - 'dowdy', - 'dowel', - 'downy', - 'dowry', - 'dozen', - 'draft', - 'drain', - 'drake', - 'drama', - 'drank', - 'drape', - 'drawl', - 'drawn', - 'dread', - 'dream', - 'dress', - 'dried', - 'drier', - 'drift', - 'drill', - 'drink', - 'drive', - 'droit', - 'droll', - 'drone', - 'drool', - 'droop', - 'dross', - 'drove', - 'drown', - 'druid', - 'drunk', - 'dryer', - 'dryly', - 'duchy', - 'dully', - 'dummy', - 'dumpy', - 'dunce', - 'dusky', - 'dusty', - 'dutch', - 'duvet', - 'dwarf', - 'dwell', - 'dwelt', - 'dying', - 'eager', - 'eagle', - 'early', - 'earth', - 'easel', - 'eaten', - 'eater', - 'ebony', - 'eclat', - 'edict', - 'edify', - 'eerie', - 'egret', - 'eight', - 'eject', - 'eking', - 'elate', - 'elbow', - 'elder', - 'elect', - 'elegy', - 'elfin', - 'elide', - 'elite', - 'elope', - 'elude', - 'email', - 'embed', - 'ember', - 'emcee', - 'empty', - 'enact', - 'endow', - 'enema', - 'enemy', - 'enjoy', - 'ennui', - 'ensue', - 'enter', - 'entry', - 'envoy', - 'epoch', - 'epoxy', - 'equal', - 'equip', - 'erase', - 'erect', - 'erode', - 'error', - 'erupt', - 'essay', - 'ester', - 'ether', - 'ethic', - 'ethos', - 'etude', - 'evade', - 'event', - 'every', - 'evict', - 'evoke', - 'exact', - 'exalt', - 'excel', - 'exert', - 'exile', - 'exist', - 'expel', - 'extol', - 'extra', - 'exult', - 'eying', - 'fable', - 'facet', - 'faint', - 'fairy', - 'faith', - 'false', - 'fancy', - 'fanny', - 'farce', - 'fatal', - 'fatty', - 'fault', - 'fauna', - 'favor', - 'feast', - 'fecal', - 'feign', - 'fella', - 'felon', - 'femme', - 'femur', - 'fence', - 'feral', - 'ferry', - 'fetal', - 'fetch', - 'fetid', - 'fetus', - 'fever', - 'fewer', - 'fiber', - 'fibre', - 'ficus', - 'field', - 'fiend', - 'fiery', - 'fifth', - 'fifty', - 'fight', - 'filer', - 'filet', - 'filly', - 'filmy', - 'filth', - 'final', - 'finch', - 'finer', - 'first', - 'fishy', - 'fixer', - 'fizzy', - 'fjord', - 'flack', - 'flail', - 'flair', - 'flake', - 'flaky', - 'flame', - 'flank', - 'flare', - 'flash', - 'flask', - 'fleck', - 'fleet', - 'flesh', - 'flick', - 'flier', - 'fling', - 'flint', - 'flirt', - 'float', - 'flock', - 'flood', - 'floor', - 'flora', - 'floss', - 'flour', - 'flout', - 'flown', - 'fluff', - 'fluid', - 'fluke', - 'flume', - 'flung', - 'flunk', - 'flush', - 'flute', - 'flyer', - 'foamy', - 'focal', - 'focus', - 'foggy', - 'foist', - 'folio', - 'folly', - 'foray', - 'force', - 'forge', - 'forgo', - 'forte', - 'forth', - 'forty', - 'forum', - 'found', - 'foyer', - 'frail', - 'frame', - 'frank', - 'fraud', - 'freak', - 'freed', - 'freer', - 'fresh', - 'friar', - 'fried', - 'frill', - 'frisk', - 'fritz', - 'frock', - 'frond', - 'front', - 'frost', - 'froth', - 'frown', - 'froze', - 'fruit', - 'fudge', - 'fugue', - 'fully', - 'fungi', - 'funky', - 'funny', - 'furor', - 'furry', - 'fussy', - 'fuzzy', - 'gaffe', - 'gaily', - 'gamer', - 'gamma', - 'gamut', - 'gassy', - 'gaudy', - 'gauge', - 'gaunt', - 'gauze', - 'gavel', - 'gawky', - 'gayer', - 'gayly', - 'gazer', - 'gecko', - 'geeky', - 'geese', - 'genie', - 'genre', - 'ghost', - 'ghoul', - 'giant', - 'giddy', - 'gipsy', - 'girly', - 'girth', - 'given', - 'giver', - 'glade', - 'gland', - 'glare', - 'glass', - 'glaze', - 'gleam', - 'glean', - 'glide', - 'glint', - 'gloat', - 'globe', - 'gloom', - 'glory', - 'gloss', - 'glove', - 'glyph', - 'gnash', - 'gnome', - 'godly', - 'going', - 'golem', - 'golly', - 'gonad', - 'goner', - 'goody', - 'gooey', - 'goofy', - 'goose', - 'gorge', - 'gouge', - 'gourd', - 'grace', - 'grade', - 'graft', - 'grail', - 'grain', - 'grand', - 'grant', - 'grape', - 'graph', - 'grasp', - 'grass', - 'grate', - 'grave', - 'gravy', - 'graze', - 'great', - 'greed', - 'green', - 'greet', - 'grief', - 'grill', - 'grime', - 'grimy', - 'grind', - 'gripe', - 'groan', - 'groin', - 'groom', - 'grope', - 'gross', - 'group', - 'grout', - 'grove', - 'growl', - 'grown', - 'gruel', - 'gruff', - 'grunt', - 'guard', - 'guava', - 'guess', - 'guest', - 'guide', - 'guild', - 'guile', - 'guilt', - 'guise', - 'gulch', - 'gully', - 'gumbo', - 'gummy', - 'guppy', - 'gusto', - 'gusty', - 'gypsy', - 'habit', - 'hairy', - 'halve', - 'handy', - 'happy', - 'hardy', - 'harem', - 'harpy', - 'harry', - 'harsh', - 'haste', - 'hasty', - 'hatch', - 'hater', - 'haunt', - 'haute', - 'haven', - 'havoc', - 'hazel', - 'heady', - 'heard', - 'heart', - 'heath', - 'heave', - 'heavy', - 'hedge', - 'hefty', - 'heist', - 'helix', - 'hello', - 'hence', - 'heron', - 'hilly', - 'hinge', - 'hippo', - 'hippy', - 'hitch', - 'hoard', - 'hobby', - 'hoist', - 'holly', - 'homer', - 'honey', - 'honor', - 'horde', - 'horny', - 'horse', - 'hotel', - 'hotly', - 'hound', - 'house', - 'hovel', - 'hover', - 'howdy', - 'human', - 'humid', - 'humor', - 'humph', - 'humus', - 'hunch', - 'hunky', - 'hurry', - 'husky', - 'hussy', - 'hutch', - 'hydro', - 'hyena', - 'hymen', - 'hyper', - 'icily', - 'icing', - 'ideal', - 'idiom', - 'idiot', - 'idler', - 'idyll', - 'igloo', - 'iliac', - 'image', - 'imbue', - 'impel', - 'imply', - 'inane', - 'inbox', - 'incur', - 'index', - 'inept', - 'inert', - 'infer', - 'ingot', - 'inlay', - 'inlet', - 'inner', - 'input', - 'inter', - 'intro', - 'ionic', - 'irate', - 'irony', - 'islet', - 'issue', - 'itchy', - 'ivory', - 'jaunt', - 'jazzy', - 'jelly', - 'jerky', - 'jetty', - 'jewel', - 'jiffy', - 'joint', - 'joist', - 'joker', - 'jolly', - 'joust', - 'judge', - 'juice', - 'juicy', - 'jumbo', - 'jumpy', - 'junta', - 'junto', - 'juror', - 'kappa', - 'karma', - 'kayak', - 'kebab', - 'khaki', - 'kinky', - 'kiosk', - 'kitty', - 'knack', - 'knave', - 'knead', - 'kneed', - 'kneel', - 'knelt', - 'knife', - 'knock', - 'knoll', - 'known', - 'koala', - 'krill', - 'label', - 'labor', - 'laden', - 'ladle', - 'lager', - 'lance', - 'lanky', - 'lapel', - 'lapse', - 'large', - 'larva', - 'lasso', - 'latch', - 'later', - 'lathe', - 'latte', - 'laugh', - 'layer', - 'leach', - 'leafy', - 'leaky', - 'leant', - 'leapt', - 'learn', - 'lease', - 'leash', - 'least', - 'leave', - 'ledge', - 'leech', - 'leery', - 'lefty', - 'legal', - 'leggy', - 'lemon', - 'lemur', - 'leper', - 'level', - 'lever', - 'libel', - 'liege', - 'light', - 'liken', - 'lilac', - 'limbo', - 'limit', - 'linen', - 'liner', - 'lingo', - 'lipid', - 'lithe', - 'liver', - 'livid', - 'llama', - 'loamy', - 'loath', - 'lobby', - 'local', - 'locus', - 'lodge', - 'lofty', - 'logic', - 'login', - 'loopy', - 'loose', - 'lorry', - 'loser', - 'louse', - 'lousy', - 'lover', - 'lower', - 'lowly', - 'loyal', - 'lucid', - 'lucky', - 'lumen', - 'lumpy', - 'lunar', - 'lunch', - 'lunge', - 'lupus', - 'lurch', - 'lurid', - 'lusty', - 'lying', - 'lymph', - 'lynch', - 'lyric', - 'macaw', - 'macho', - 'macro', - 'madam', - 'madly', - 'mafia', - 'magic', - 'magma', - 'maize', - 'major', - 'maker', - 'mambo', - 'mamma', - 'mammy', - 'manga', - 'mange', - 'mango', - 'mangy', - 'mania', - 'manic', - 'manly', - 'manor', - 'maple', - 'march', - 'marry', - 'marsh', - 'mason', - 'masse', - 'match', - 'matey', - 'mauve', - 'maxim', - 'maybe', - 'mayor', - 'mealy', - 'meant', - 'meaty', - 'mecca', - 'medal', - 'media', - 'medic', - 'melee', - 'melon', - 'mercy', - 'merge', - 'merit', - 'merry', - 'metal', - 'meter', - 'metro', - 'micro', - 'midge', - 'midst', - 'might', - 'milky', - 'mimic', - 'mince', - 'miner', - 'minim', - 'minor', - 'minty', - 'minus', - 'mirth', - 'miser', - 'missy', - 'mocha', - 'modal', - 'model', - 'modem', - 'mogul', - 'moist', - 'molar', - 'moldy', - 'money', - 'month', - 'moody', - 'moose', - 'moral', - 'moron', - 'morph', - 'mossy', - 'motel', - 'motif', - 'motor', - 'motto', - 'moult', - 'mound', - 'mount', - 'mourn', - 'mouse', - 'mouth', - 'mover', - 'movie', - 'mower', - 'mucky', - 'mucus', - 'muddy', - 'mulch', - 'mummy', - 'munch', - 'mural', - 'murky', - 'mushy', - 'music', - 'musky', - 'musty', - 'myrrh', - 'nadir', - 'naive', - 'nanny', - 'nasal', - 'nasty', - 'natal', - 'naval', - 'navel', - 'needy', - 'neigh', - 'nerdy', - 'nerve', - 'never', - 'newer', - 'newly', - 'nicer', - 'niche', - 'niece', - 'night', - 'ninja', - 'ninny', - 'ninth', - 'noble', - 'nobly', - 'noise', - 'noisy', - 'nomad', - 'noose', - 'north', - 'nosey', - 'notch', - 'novel', - 'nudge', - 'nurse', - 'nutty', - 'nylon', - 'nymph', - 'oaken', - 'obese', - 'occur', - 'ocean', - 'octal', - 'octet', - 'odder', - 'oddly', - 'offal', - 'offer', - 'often', - 'olden', - 'older', - 'olive', - 'ombre', - 'omega', - 'onion', - 'onset', - 'opera', - 'opine', - 'opium', - 'optic', - 'orbit', - 'order', - 'organ', - 'other', - 'otter', - 'ought', - 'ounce', - 'outdo', - 'outer', - 'outgo', - 'ovary', - 'ovate', - 'overt', - 'ovine', - 'ovoid', - 'owing', - 'owner', - 'oxide', - 'ozone', - 'paddy', - 'pagan', - 'paint', - 'paler', - 'palsy', - 'panel', - 'panic', - 'pansy', - 'papal', - 'paper', - 'parer', - 'parka', - 'parry', - 'parse', - 'party', - 'pasta', - 'paste', - 'pasty', - 'patch', - 'patio', - 'patsy', - 'patty', - 'pause', - 'payee', - 'payer', - 'peace', - 'peach', - 'pearl', - 'pecan', - 'pedal', - 'penal', - 'pence', - 'penne', - 'penny', - 'perch', - 'peril', - 'perky', - 'pesky', - 'pesto', - 'petal', - 'petty', - 'phase', - 'phone', - 'phony', - 'photo', - 'piano', - 'picky', - 'piece', - 'piety', - 'piggy', - 'pilot', - 'pinch', - 'piney', - 'pinky', - 'pinto', - 'piper', - 'pique', - 'pitch', - 'pithy', - 'pivot', - 'pixel', - 'pixie', - 'pizza', - 'place', - 'plaid', - 'plain', - 'plait', - 'plane', - 'plank', - 'plant', - 'plate', - 'plaza', - 'plead', - 'pleat', - 'plied', - 'plier', - 'pluck', - 'plumb', - 'plume', - 'plump', - 'plunk', - 'plush', - 'poesy', - 'point', - 'poise', - 'poker', - 'polar', - 'polka', - 'polyp', - 'pooch', - 'poppy', - 'porch', - 'poser', - 'posit', - 'posse', - 'pouch', - 'pound', - 'pouty', - 'power', - 'prank', - 'prawn', - 'preen', - 'press', - 'price', - 'prick', - 'pride', - 'pried', - 'prime', - 'primo', - 'print', - 'prior', - 'prism', - 'privy', - 'prize', - 'probe', - 'prone', - 'prong', - 'proof', - 'prose', - 'proud', - 'prove', - 'prowl', - 'proxy', - 'prude', - 'prune', - 'psalm', - 'pubic', - 'pudgy', - 'puffy', - 'pulpy', - 'pulse', - 'punch', - 'pupal', - 'pupil', - 'puppy', - 'puree', - 'purer', - 'purge', - 'purse', - 'pushy', - 'putty', - 'pygmy', - 'quack', - 'quail', - 'quake', - 'qualm', - 'quark', - 'quart', - 'quash', - 'quasi', - 'queen', - 'queer', - 'quell', - 'query', - 'quest', - 'queue', - 'quick', - 'quiet', - 'quill', - 'quilt', - 'quirk', - 'quite', - 'quota', - 'quote', - 'quoth', - 'rabbi', - 'rabid', - 'racer', - 'radar', - 'radii', - 'radio', - 'rainy', - 'raise', - 'rajah', - 'rally', - 'ralph', - 'ramen', - 'ranch', - 'randy', - 'range', - 'rapid', - 'rarer', - 'raspy', - 'ratio', - 'ratty', - 'raven', - 'rayon', - 'razor', - 'reach', - 'react', - 'ready', - 'realm', - 'rearm', - 'rebar', - 'rebel', - 'rebus', - 'rebut', - 'recap', - 'recur', - 'recut', - 'reedy', - 'refer', - 'refit', - 'regal', - 'rehab', - 'reign', - 'relax', - 'relay', - 'relic', - 'remit', - 'renal', - 'renew', - 'repay', - 'repel', - 'reply', - 'rerun', - 'reset', - 'resin', - 'retch', - 'retro', - 'retry', - 'reuse', - 'revel', - 'revue', - 'rhino', - 'rhyme', - 'rider', - 'ridge', - 'rifle', - 'right', - 'rigid', - 'rigor', - 'rinse', - 'ripen', - 'riper', - 'risen', - 'riser', - 'risky', - 'rival', - 'river', - 'rivet', - 'roach', - 'roast', - 'robin', - 'robot', - 'rocky', - 'rodeo', - 'roger', - 'rogue', - 'roomy', - 'roost', - 'rotor', - 'rouge', - 'rough', - 'round', - 'rouse', - 'route', - 'rover', - 'rowdy', - 'rower', - 'royal', - 'ruddy', - 'ruder', - 'rugby', - 'ruler', - 'rumba', - 'rumor', - 'rupee', - 'rural', - 'rusty', - 'sadly', - 'safer', - 'saint', - 'salad', - 'sally', - 'salon', - 'salsa', - 'salty', - 'salve', - 'salvo', - 'sandy', - 'saner', - 'sappy', - 'sassy', - 'satin', - 'satyr', - 'sauce', - 'saucy', - 'sauna', - 'saute', - 'savor', - 'savoy', - 'savvy', - 'scald', - 'scale', - 'scalp', - 'scaly', - 'scamp', - 'scant', - 'scare', - 'scarf', - 'scary', - 'scene', - 'scent', - 'scion', - 'scoff', - 'scold', - 'scone', - 'scoop', - 'scope', - 'score', - 'scorn', - 'scour', - 'scout', - 'scowl', - 'scram', - 'scrap', - 'scree', - 'screw', - 'scrub', - 'scrum', - 'scuba', - 'sedan', - 'seedy', - 'segue', - 'seize', - 'semen', - 'sense', - 'sepia', - 'serif', - 'serum', - 'serve', - 'setup', - 'seven', - 'sever', - 'sewer', - 'shack', - 'shade', - 'shady', - 'shaft', - 'shake', - 'shaky', - 'shale', - 'shall', - 'shalt', - 'shame', - 'shank', - 'shape', - 'shard', - 'share', - 'shark', - 'sharp', - 'shave', - 'shawl', - 'shear', - 'sheen', - 'sheep', - 'sheer', - 'sheet', - 'sheik', - 'shelf', - 'shell', - 'shied', - 'shift', - 'shine', - 'shiny', - 'shire', - 'shirk', - 'shirt', - 'shoal', - 'shock', - 'shone', - 'shook', - 'shoot', - 'shore', - 'shorn', - 'short', - 'shout', - 'shove', - 'shown', - 'showy', - 'shrew', - 'shrub', - 'shrug', - 'shuck', - 'shunt', - 'shush', - 'shyly', - 'siege', - 'sieve', - 'sight', - 'sigma', - 'silky', - 'silly', - 'since', - 'sinew', - 'singe', - 'siren', - 'sissy', - 'sixth', - 'sixty', - 'skate', - 'skier', - 'skiff', - 'skill', - 'skimp', - 'skirt', - 'skulk', - 'skull', - 'skunk', - 'slack', - 'slain', - 'slang', - 'slant', - 'slash', - 'slate', - 'slave', - 'sleek', - 'sleep', - 'sleet', - 'slept', - 'slice', - 'slick', - 'slide', - 'slime', - 'slimy', - 'sling', - 'slink', - 'sloop', - 'slope', - 'slosh', - 'sloth', - 'slump', - 'slung', - 'slunk', - 'slurp', - 'slush', - 'slyly', - 'smack', - 'small', - 'smart', - 'smash', - 'smear', - 'smell', - 'smelt', - 'smile', - 'smirk', - 'smite', - 'smith', - 'smock', - 'smoke', - 'smoky', - 'smote', - 'snack', - 'snail', - 'snake', - 'snaky', - 'snare', - 'snarl', - 'sneak', - 'sneer', - 'snide', - 'sniff', - 'snipe', - 'snoop', - 'snore', - 'snort', - 'snout', - 'snowy', - 'snuck', - 'snuff', - 'soapy', - 'sober', - 'soggy', - 'solar', - 'solid', - 'solve', - 'sonar', - 'sonic', - 'sooth', - 'sooty', - 'sorry', - 'sound', - 'south', - 'sower', - 'space', - 'spade', - 'spank', - 'spare', - 'spark', - 'spasm', - 'spawn', - 'speak', - 'spear', - 'speck', - 'speed', - 'spell', - 'spelt', - 'spend', - 'spent', - 'sperm', - 'spice', - 'spicy', - 'spied', - 'spiel', - 'spike', - 'spiky', - 'spill', - 'spilt', - 'spine', - 'spiny', - 'spire', - 'spite', - 'splat', - 'split', - 'spoil', - 'spoke', - 'spoof', - 'spook', - 'spool', - 'spoon', - 'spore', - 'sport', - 'spout', - 'spray', - 'spree', - 'sprig', - 'spunk', - 'spurn', - 'spurt', - 'squad', - 'squat', - 'squib', - 'stack', - 'staff', - 'stage', - 'staid', - 'stain', - 'stair', - 'stake', - 'stale', - 'stalk', - 'stall', - 'stamp', - 'stand', - 'stank', - 'stare', - 'stark', - 'start', - 'stash', - 'state', - 'stave', - 'stead', - 'steak', - 'steal', - 'steam', - 'steed', - 'steel', - 'steep', - 'steer', - 'stein', - 'stern', - 'stick', - 'stiff', - 'still', - 'stilt', - 'sting', - 'stink', - 'stint', - 'stock', - 'stoic', - 'stoke', - 'stole', - 'stomp', - 'stone', - 'stony', - 'stood', - 'stool', - 'stoop', - 'store', - 'stork', - 'storm', - 'story', - 'stout', - 'stove', - 'strap', - 'straw', - 'stray', - 'strip', - 'strut', - 'stuck', - 'study', - 'stuff', - 'stump', - 'stung', - 'stunk', - 'stunt', - 'style', - 'suave', - 'sugar', - 'suing', - 'suite', - 'sulky', - 'sully', - 'sumac', - 'sunny', - 'super', - 'surer', - 'surge', - 'surly', - 'sushi', - 'swami', - 'swamp', - 'swarm', - 'swash', - 'swath', - 'swear', - 'sweat', - 'sweep', - 'sweet', - 'swell', - 'swept', - 'swift', - 'swill', - 'swine', - 'swing', - 'swirl', - 'swish', - 'swoon', - 'swoop', - 'sword', - 'swore', - 'sworn', - 'swung', - 'synod', - 'syrup', - 'tabby', - 'table', - 'taboo', - 'tacit', - 'tacky', - 'taffy', - 'taint', - 'taken', - 'taker', - 'tally', - 'talon', - 'tamer', - 'tango', - 'tangy', - 'taper', - 'tapir', - 'tardy', - 'tarot', - 'taste', - 'tasty', - 'tatty', - 'taunt', - 'tawny', - 'teach', - 'teary', - 'tease', - 'teddy', - 'teeth', - 'tempo', - 'tenet', - 'tenor', - 'tense', - 'tenth', - 'tepee', - 'tepid', - 'terra', - 'terse', - 'testy', - 'thank', - 'theft', - 'their', - 'theme', - 'there', - 'these', - 'theta', - 'thick', - 'thief', - 'thigh', - 'thing', - 'think', - 'third', - 'thong', - 'thorn', - 'those', - 'three', - 'threw', - 'throb', - 'throw', - 'thrum', - 'thumb', - 'thump', - 'thyme', - 'tiara', - 'tibia', - 'tidal', - 'tiger', - 'tight', - 'tilde', - 'timer', - 'timid', - 'tipsy', - 'titan', - 'tithe', - 'title', - 'toast', - 'today', - 'toddy', - 'token', - 'tonal', - 'tonga', - 'tonic', - 'tooth', - 'topaz', - 'topic', - 'torch', - 'torso', - 'torus', - 'total', - 'totem', - 'touch', - 'tough', - 'towel', - 'tower', - 'toxic', - 'toxin', - 'trace', - 'track', - 'tract', - 'trade', - 'trail', - 'train', - 'trait', - 'tramp', - 'trash', - 'trawl', - 'tread', - 'treat', - 'trend', - 'triad', - 'trial', - 'tribe', - 'trice', - 'trick', - 'tried', - 'tripe', - 'trite', - 'troll', - 'troop', - 'trope', - 'trout', - 'trove', - 'truce', - 'truck', - 'truer', - 'truly', - 'trump', - 'trunk', - 'truss', - 'trust', - 'truth', - 'tryst', - 'tubal', - 'tuber', - 'tulip', - 'tulle', - 'tumor', - 'tunic', - 'turbo', - 'tutor', - 'twang', - 'tweak', - 'tweed', - 'tweet', - 'twice', - 'twine', - 'twirl', - 'twist', - 'twixt', - 'tying', - 'udder', - 'ulcer', - 'ultra', - 'umbra', - 'uncle', - 'uncut', - 'under', - 'undid', - 'undue', - 'unfed', - 'unfit', - 'unify', - 'union', - 'unite', - 'unity', - 'unlit', - 'unmet', - 'unset', - 'untie', - 'until', - 'unwed', - 'unzip', - 'upper', - 'upset', - 'urban', - 'urine', - 'usage', - 'usher', - 'using', - 'usual', - 'usurp', - 'utile', - 'utter', - 'vague', - 'valet', - 'valid', - 'valor', - 'value', - 'valve', - 'vapid', - 'vapor', - 'vault', - 'vaunt', - 'vegan', - 'venom', - 'venue', - 'verge', - 'verse', - 'verso', - 'verve', - 'vicar', - 'video', - 'vigil', - 'vigor', - 'villa', - 'vinyl', - 'viola', - 'viper', - 'viral', - 'virus', - 'visit', - 'visor', - 'vista', - 'vital', - 'vivid', - 'vixen', - 'vocal', - 'vodka', - 'vogue', - 'voice', - 'voila', - 'vomit', - 'voter', - 'vouch', - 'vowel', - 'vying', - 'wacky', - 'wafer', - 'wager', - 'wagon', - 'waist', - 'waive', - 'waltz', - 'warty', - 'waste', - 'watch', - 'water', - 'waver', - 'waxen', - 'weary', - 'weave', - 'wedge', - 'weedy', - 'weigh', - 'weird', - 'welch', - 'welsh', - 'wench', - 'whack', - 'whale', - 'wharf', - 'wheat', - 'wheel', - 'whelp', - 'where', - 'which', - 'whiff', - 'while', - 'whine', - 'whiny', - 'whirl', - 'whisk', - 'white', - 'whole', - 'whoop', - 'whose', - 'widen', - 'wider', - 'widow', - 'width', - 'wield', - 'wight', - 'willy', - 'wimpy', - 'wince', - 'winch', - 'windy', - 'wiser', - 'wispy', - 'witch', - 'witty', - 'woken', - 'woman', - 'women', - 'woody', - 'wooer', - 'wooly', - 'woozy', - 'wordy', - 'world', - 'worry', - 'worse', - 'worst', - 'worth', - 'would', - 'wound', - 'woven', - 'wrack', - 'wrath', - 'wreak', - 'wreck', - 'wrest', - 'wring', - 'wrist', - 'write', - 'wrong', - 'wrote', - 'wrung', - 'wryly', - 'yacht', - 'yearn', - 'yeast', - 'yield', - 'young', - 'youth', - 'zebra', - 'zesty', - 'zonal' -]; - -/** The list of valid guesses, of which the list of possible words is a subset */ -export const allowed = new Set([ - ...words, - 'aahed', - 'aalii', - 'aargh', - 'aarti', - 'abaca', - 'abaci', - 'abacs', - 'abaft', - 'abaka', - 'abamp', - 'aband', - 'abash', - 'abask', - 'abaya', - 'abbas', - 'abbed', - 'abbes', - 'abcee', - 'abeam', - 'abear', - 'abele', - 'abers', - 'abets', - 'abies', - 'abler', - 'ables', - 'ablet', - 'ablow', - 'abmho', - 'abohm', - 'aboil', - 'aboma', - 'aboon', - 'abord', - 'abore', - 'abram', - 'abray', - 'abrim', - 'abrin', - 'abris', - 'absey', - 'absit', - 'abuna', - 'abune', - 'abuts', - 'abuzz', - 'abyes', - 'abysm', - 'acais', - 'acari', - 'accas', - 'accoy', - 'acerb', - 'acers', - 'aceta', - 'achar', - 'ached', - 'aches', - 'achoo', - 'acids', - 'acidy', - 'acing', - 'acini', - 'ackee', - 'acker', - 'acmes', - 'acmic', - 'acned', - 'acnes', - 'acock', - 'acold', - 'acred', - 'acres', - 'acros', - 'acted', - 'actin', - 'acton', - 'acyls', - 'adaws', - 'adays', - 'adbot', - 'addax', - 'added', - 'adder', - 'addio', - 'addle', - 'adeem', - 'adhan', - 'adieu', - 'adios', - 'adits', - 'adman', - 'admen', - 'admix', - 'adobo', - 'adown', - 'adoze', - 'adrad', - 'adred', - 'adsum', - 'aduki', - 'adunc', - 'adust', - 'advew', - 'adyta', - 'adzed', - 'adzes', - 'aecia', - 'aedes', - 'aegis', - 'aeons', - 'aerie', - 'aeros', - 'aesir', - 'afald', - 'afara', - 'afars', - 'afear', - 'aflaj', - 'afore', - 'afrit', - 'afros', - 'agama', - 'agami', - 'agars', - 'agast', - 'agave', - 'agaze', - 'agene', - 'agers', - 'agger', - 'aggie', - 'aggri', - 'aggro', - 'aggry', - 'aghas', - 'agila', - 'agios', - 'agism', - 'agist', - 'agita', - 'aglee', - 'aglet', - 'agley', - 'agloo', - 'aglus', - 'agmas', - 'agoge', - 'agone', - 'agons', - 'agood', - 'agria', - 'agrin', - 'agros', - 'agued', - 'agues', - 'aguna', - 'aguti', - 'aheap', - 'ahent', - 'ahigh', - 'ahind', - 'ahing', - 'ahint', - 'ahold', - 'ahull', - 'ahuru', - 'aidas', - 'aided', - 'aides', - 'aidoi', - 'aidos', - 'aiery', - 'aigas', - 'aight', - 'ailed', - 'aimed', - 'aimer', - 'ainee', - 'ainga', - 'aioli', - 'aired', - 'airer', - 'airns', - 'airth', - 'airts', - 'aitch', - 'aitus', - 'aiver', - 'aiyee', - 'aizle', - 'ajies', - 'ajiva', - 'ajuga', - 'ajwan', - 'akees', - 'akela', - 'akene', - 'aking', - 'akita', - 'akkas', - 'alaap', - 'alack', - 'alamo', - 'aland', - 'alane', - 'alang', - 'alans', - 'alant', - 'alapa', - 'alaps', - 'alary', - 'alate', - 'alays', - 'albas', - 'albee', - 'alcid', - 'alcos', - 'aldea', - 'alder', - 'aldol', - 'aleck', - 'alecs', - 'alefs', - 'aleft', - 'aleph', - 'alews', - 'aleye', - 'alfas', - 'algal', - 'algas', - 'algid', - 'algin', - 'algor', - 'algum', - 'alias', - 'alifs', - 'aline', - 'alist', - 'aliya', - 'alkie', - 'alkos', - 'alkyd', - 'alkyl', - 'allee', - 'allel', - 'allis', - 'allod', - 'allyl', - 'almah', - 'almas', - 'almeh', - 'almes', - 'almud', - 'almug', - 'alods', - 'aloed', - 'aloes', - 'aloha', - 'aloin', - 'aloos', - 'alowe', - 'altho', - 'altos', - 'alula', - 'alums', - 'alure', - 'alvar', - 'alway', - 'amahs', - 'amain', - 'amate', - 'amaut', - 'amban', - 'ambit', - 'ambos', - 'ambry', - 'ameba', - 'ameer', - 'amene', - 'amens', - 'ament', - 'amias', - 'amice', - 'amici', - 'amide', - 'amido', - 'amids', - 'amies', - 'amiga', - 'amigo', - 'amine', - 'amino', - 'amins', - 'amirs', - 'amlas', - 'amman', - 'ammon', - 'ammos', - 'amnia', - 'amnic', - 'amnio', - 'amoks', - 'amole', - 'amort', - 'amour', - 'amove', - 'amowt', - 'amped', - 'ampul', - 'amrit', - 'amuck', - 'amyls', - 'anana', - 'anata', - 'ancho', - 'ancle', - 'ancon', - 'andro', - 'anear', - 'anele', - 'anent', - 'angas', - 'anglo', - 'anigh', - 'anile', - 'anils', - 'anima', - 'animi', - 'anion', - 'anise', - 'anker', - 'ankhs', - 'ankus', - 'anlas', - 'annal', - 'annas', - 'annat', - 'anoas', - 'anole', - 'anomy', - 'ansae', - 'antae', - 'antar', - 'antas', - 'anted', - 'antes', - 'antis', - 'antra', - 'antre', - 'antsy', - 'anura', - 'anyon', - 'apace', - 'apage', - 'apaid', - 'apayd', - 'apays', - 'apeak', - 'apeek', - 'apers', - 'apert', - 'apery', - 'apgar', - 'aphis', - 'apian', - 'apiol', - 'apish', - 'apism', - 'apode', - 'apods', - 'apoop', - 'aport', - 'appal', - 'appay', - 'appel', - 'appro', - 'appui', - 'appuy', - 'apres', - 'apses', - 'apsis', - 'apsos', - 'apted', - 'apter', - 'aquae', - 'aquas', - 'araba', - 'araks', - 'arame', - 'arars', - 'arbas', - 'arced', - 'archi', - 'arcos', - 'arcus', - 'ardeb', - 'ardri', - 'aread', - 'areae', - 'areal', - 'arear', - 'areas', - 'areca', - 'aredd', - 'arede', - 'arefy', - 'areic', - 'arene', - 'arepa', - 'arere', - 'arete', - 'arets', - 'arett', - 'argal', - 'argan', - 'argil', - 'argle', - 'argol', - 'argon', - 'argot', - 'argus', - 'arhat', - 'arias', - 'ariel', - 'ariki', - 'arils', - 'ariot', - 'arish', - 'arked', - 'arled', - 'arles', - 'armed', - 'armer', - 'armet', - 'armil', - 'arnas', - 'arnut', - 'aroba', - 'aroha', - 'aroid', - 'arpas', - 'arpen', - 'arrah', - 'arras', - 'arret', - 'arris', - 'arroz', - 'arsed', - 'arses', - 'arsey', - 'arsis', - 'artal', - 'artel', - 'artic', - 'artis', - 'aruhe', - 'arums', - 'arval', - 'arvee', - 'arvos', - 'aryls', - 'asana', - 'ascon', - 'ascus', - 'asdic', - 'ashed', - 'ashes', - 'ashet', - 'asked', - 'asker', - 'askoi', - 'askos', - 'aspen', - 'asper', - 'aspic', - 'aspie', - 'aspis', - 'aspro', - 'assai', - 'assam', - 'asses', - 'assez', - 'assot', - 'aster', - 'astir', - 'astun', - 'asura', - 'asway', - 'aswim', - 'asyla', - 'ataps', - 'ataxy', - 'atigi', - 'atilt', - 'atimy', - 'atlas', - 'atman', - 'atmas', - 'atmos', - 'atocs', - 'atoke', - 'atoks', - 'atoms', - 'atomy', - 'atony', - 'atopy', - 'atria', - 'atrip', - 'attap', - 'attar', - 'atuas', - 'audad', - 'auger', - 'aught', - 'aulas', - 'aulic', - 'auloi', - 'aulos', - 'aumil', - 'aunes', - 'aunts', - 'aurae', - 'aural', - 'aurar', - 'auras', - 'aurei', - 'aures', - 'auric', - 'auris', - 'aurum', - 'autos', - 'auxin', - 'avale', - 'avant', - 'avast', - 'avels', - 'avens', - 'avers', - 'avgas', - 'avine', - 'avion', - 'avise', - 'aviso', - 'avize', - 'avows', - 'avyze', - 'awarn', - 'awato', - 'awave', - 'aways', - 'awdls', - 'aweel', - 'aweto', - 'awing', - 'awmry', - 'awned', - 'awner', - 'awols', - 'awork', - 'axels', - 'axile', - 'axils', - 'axing', - 'axite', - 'axled', - 'axles', - 'axman', - 'axmen', - 'axoid', - 'axone', - 'axons', - 'ayahs', - 'ayaya', - 'ayelp', - 'aygre', - 'ayins', - 'ayont', - 'ayres', - 'ayrie', - 'azans', - 'azide', - 'azido', - 'azine', - 'azlon', - 'azoic', - 'azole', - 'azons', - 'azote', - 'azoth', - 'azuki', - 'azurn', - 'azury', - 'azygy', - 'azyme', - 'azyms', - 'baaed', - 'baals', - 'babas', - 'babel', - 'babes', - 'babka', - 'baboo', - 'babul', - 'babus', - 'bacca', - 'bacco', - 'baccy', - 'bacha', - 'bachs', - 'backs', - 'baddy', - 'baels', - 'baffs', - 'baffy', - 'bafts', - 'baghs', - 'bagie', - 'bahts', - 'bahus', - 'bahut', - 'bails', - 'bairn', - 'baisa', - 'baith', - 'baits', - 'baiza', - 'baize', - 'bajan', - 'bajra', - 'bajri', - 'bajus', - 'baked', - 'baken', - 'bakes', - 'bakra', - 'balas', - 'balds', - 'baldy', - 'baled', - 'bales', - 'balks', - 'balky', - 'balls', - 'bally', - 'balms', - 'baloo', - 'balsa', - 'balti', - 'balun', - 'balus', - 'bambi', - 'banak', - 'banco', - 'bancs', - 'banda', - 'bandh', - 'bands', - 'bandy', - 'baned', - 'banes', - 'bangs', - 'bania', - 'banks', - 'banns', - 'bants', - 'bantu', - 'banty', - 'banya', - 'bapus', - 'barbe', - 'barbs', - 'barby', - 'barca', - 'barde', - 'bardo', - 'bards', - 'bardy', - 'bared', - 'barer', - 'bares', - 'barfi', - 'barfs', - 'baric', - 'barks', - 'barky', - 'barms', - 'barmy', - 'barns', - 'barny', - 'barps', - 'barra', - 'barre', - 'barro', - 'barry', - 'barye', - 'basan', - 'based', - 'basen', - 'baser', - 'bases', - 'basho', - 'basij', - 'basks', - 'bason', - 'basse', - 'bassi', - 'basso', - 'bassy', - 'basta', - 'basti', - 'basto', - 'basts', - 'bated', - 'bates', - 'baths', - 'batik', - 'batta', - 'batts', - 'battu', - 'bauds', - 'bauks', - 'baulk', - 'baurs', - 'bavin', - 'bawds', - 'bawks', - 'bawls', - 'bawns', - 'bawrs', - 'bawty', - 'bayed', - 'bayer', - 'bayes', - 'bayle', - 'bayts', - 'bazar', - 'bazoo', - 'beads', - 'beaks', - 'beaky', - 'beals', - 'beams', - 'beamy', - 'beano', - 'beans', - 'beany', - 'beare', - 'bears', - 'beath', - 'beats', - 'beaty', - 'beaus', - 'beaut', - 'beaux', - 'bebop', - 'becap', - 'becke', - 'becks', - 'bedad', - 'bedel', - 'bedes', - 'bedew', - 'bedim', - 'bedye', - 'beedi', - 'beefs', - 'beeps', - 'beers', - 'beery', - 'beets', - 'befog', - 'begad', - 'begar', - 'begem', - 'begot', - 'begum', - 'beige', - 'beigy', - 'beins', - 'bekah', - 'belah', - 'belar', - 'belay', - 'belee', - 'belga', - 'bells', - 'belon', - 'belts', - 'bemad', - 'bemas', - 'bemix', - 'bemud', - 'bends', - 'bendy', - 'benes', - 'benet', - 'benga', - 'benis', - 'benne', - 'benni', - 'benny', - 'bento', - 'bents', - 'benty', - 'bepat', - 'beray', - 'beres', - 'bergs', - 'berko', - 'berks', - 'berme', - 'berms', - 'berob', - 'beryl', - 'besat', - 'besaw', - 'besee', - 'beses', - 'besit', - 'besom', - 'besot', - 'besti', - 'bests', - 'betas', - 'beted', - 'betes', - 'beths', - 'betid', - 'beton', - 'betta', - 'betty', - 'bever', - 'bevor', - 'bevue', - 'bevvy', - 'bewet', - 'bewig', - 'bezes', - 'bezil', - 'bezzy', - 'bhais', - 'bhaji', - 'bhang', - 'bhats', - 'bhels', - 'bhoot', - 'bhuna', - 'bhuts', - 'biach', - 'biali', - 'bialy', - 'bibbs', - 'bibes', - 'biccy', - 'bices', - 'bided', - 'bider', - 'bides', - 'bidet', - 'bidis', - 'bidon', - 'bield', - 'biers', - 'biffo', - 'biffs', - 'biffy', - 'bifid', - 'bigae', - 'biggs', - 'biggy', - 'bigha', - 'bight', - 'bigly', - 'bigos', - 'bijou', - 'biked', - 'biker', - 'bikes', - 'bikie', - 'bilbo', - 'bilby', - 'biled', - 'biles', - 'bilgy', - 'bilks', - 'bills', - 'bimah', - 'bimas', - 'bimbo', - 'binal', - 'bindi', - 'binds', - 'biner', - 'bines', - 'bings', - 'bingy', - 'binit', - 'binks', - 'bints', - 'biogs', - 'biont', - 'biota', - 'biped', - 'bipod', - 'birds', - 'birks', - 'birle', - 'birls', - 'biros', - 'birrs', - 'birse', - 'birsy', - 'bises', - 'bisks', - 'bisom', - 'bitch', - 'biter', - 'bites', - 'bitos', - 'bitou', - 'bitsy', - 'bitte', - 'bitts', - 'bivia', - 'bivvy', - 'bizes', - 'bizzo', - 'bizzy', - 'blabs', - 'blads', - 'blady', - 'blaer', - 'blaes', - 'blaff', - 'blags', - 'blahs', - 'blain', - 'blams', - 'blart', - 'blase', - 'blash', - 'blate', - 'blats', - 'blatt', - 'blaud', - 'blawn', - 'blaws', - 'blays', - 'blear', - 'blebs', - 'blech', - 'blees', - 'blent', - 'blert', - 'blest', - 'blets', - 'bleys', - 'blimy', - 'bling', - 'blini', - 'blins', - 'bliny', - 'blips', - 'blist', - 'blite', - 'blits', - 'blive', - 'blobs', - 'blocs', - 'blogs', - 'blook', - 'bloop', - 'blore', - 'blots', - 'blows', - 'blowy', - 'blubs', - 'blude', - 'bluds', - 'bludy', - 'blued', - 'blues', - 'bluet', - 'bluey', - 'bluid', - 'blume', - 'blunk', - 'blurs', - 'blype', - 'boabs', - 'boaks', - 'boars', - 'boart', - 'boats', - 'bobac', - 'bobak', - 'bobas', - 'bobol', - 'bobos', - 'bocca', - 'bocce', - 'bocci', - 'boche', - 'bocks', - 'boded', - 'bodes', - 'bodge', - 'bodhi', - 'bodle', - 'boeps', - 'boets', - 'boeuf', - 'boffo', - 'boffs', - 'bogan', - 'bogey', - 'boggy', - 'bogie', - 'bogle', - 'bogue', - 'bogus', - 'bohea', - 'bohos', - 'boils', - 'boing', - 'boink', - 'boite', - 'boked', - 'bokeh', - 'bokes', - 'bokos', - 'bolar', - 'bolas', - 'bolds', - 'boles', - 'bolix', - 'bolls', - 'bolos', - 'bolts', - 'bolus', - 'bomas', - 'bombe', - 'bombo', - 'bombs', - 'bonce', - 'bonds', - 'boned', - 'boner', - 'bones', - 'bongs', - 'bonie', - 'bonks', - 'bonne', - 'bonny', - 'bonza', - 'bonze', - 'booai', - 'booay', - 'boobs', - 'boody', - 'booed', - 'boofy', - 'boogy', - 'boohs', - 'books', - 'booky', - 'bools', - 'booms', - 'boomy', - 'boong', - 'boons', - 'boord', - 'boors', - 'boose', - 'boots', - 'boppy', - 'borak', - 'boral', - 'boras', - 'borde', - 'bords', - 'bored', - 'boree', - 'borel', - 'borer', - 'bores', - 'borgo', - 'boric', - 'borks', - 'borms', - 'borna', - 'boron', - 'borts', - 'borty', - 'bortz', - 'bosie', - 'bosks', - 'bosky', - 'boson', - 'bosun', - 'botas', - 'botel', - 'botes', - 'bothy', - 'botte', - 'botts', - 'botty', - 'bouge', - 'bouks', - 'boult', - 'bouns', - 'bourd', - 'bourg', - 'bourn', - 'bouse', - 'bousy', - 'bouts', - 'bovid', - 'bowat', - 'bowed', - 'bower', - 'bowes', - 'bowet', - 'bowie', - 'bowls', - 'bowne', - 'bowrs', - 'bowse', - 'boxed', - 'boxen', - 'boxes', - 'boxla', - 'boxty', - 'boyar', - 'boyau', - 'boyed', - 'boyfs', - 'boygs', - 'boyla', - 'boyos', - 'boysy', - 'bozos', - 'braai', - 'brach', - 'brack', - 'bract', - 'brads', - 'braes', - 'brags', - 'brail', - 'braks', - 'braky', - 'brame', - 'brane', - 'brank', - 'brans', - 'brant', - 'brast', - 'brats', - 'brava', - 'bravi', - 'braws', - 'braxy', - 'brays', - 'braza', - 'braze', - 'bream', - 'brede', - 'breds', - 'breem', - 'breer', - 'brees', - 'breid', - 'breis', - 'breme', - 'brens', - 'brent', - 'brere', - 'brers', - 'breve', - 'brews', - 'breys', - 'brier', - 'bries', - 'brigs', - 'briki', - 'briks', - 'brill', - 'brims', - 'brins', - 'brios', - 'brise', - 'briss', - 'brith', - 'brits', - 'britt', - 'brize', - 'broch', - 'brock', - 'brods', - 'brogh', - 'brogs', - 'brome', - 'bromo', - 'bronc', - 'brond', - 'brool', - 'broos', - 'brose', - 'brosy', - 'brows', - 'brugh', - 'bruin', - 'bruit', - 'brule', - 'brume', - 'brung', - 'brusk', - 'brust', - 'bruts', - 'buats', - 'buaze', - 'bubal', - 'bubas', - 'bubba', - 'bubbe', - 'bubby', - 'bubus', - 'buchu', - 'bucko', - 'bucks', - 'bucku', - 'budas', - 'budis', - 'budos', - 'buffa', - 'buffe', - 'buffi', - 'buffo', - 'buffs', - 'buffy', - 'bufos', - 'bufty', - 'buhls', - 'buhrs', - 'buiks', - 'buist', - 'bukes', - 'bulbs', - 'bulgy', - 'bulks', - 'bulla', - 'bulls', - 'bulse', - 'bumbo', - 'bumfs', - 'bumph', - 'bumps', - 'bumpy', - 'bunas', - 'bunce', - 'bunco', - 'bunde', - 'bundh', - 'bunds', - 'bundt', - 'bundu', - 'bundy', - 'bungs', - 'bungy', - 'bunia', - 'bunje', - 'bunjy', - 'bunko', - 'bunks', - 'bunns', - 'bunts', - 'bunty', - 'bunya', - 'buoys', - 'buppy', - 'buran', - 'buras', - 'burbs', - 'burds', - 'buret', - 'burfi', - 'burgh', - 'burgs', - 'burin', - 'burka', - 'burke', - 'burks', - 'burls', - 'burns', - 'buroo', - 'burps', - 'burqa', - 'burro', - 'burrs', - 'burry', - 'bursa', - 'burse', - 'busby', - 'buses', - 'busks', - 'busky', - 'bussu', - 'busti', - 'busts', - 'busty', - 'buteo', - 'butes', - 'butle', - 'butoh', - 'butts', - 'butty', - 'butut', - 'butyl', - 'buzzy', - 'bwana', - 'bwazi', - 'byded', - 'bydes', - 'byked', - 'bykes', - 'byres', - 'byrls', - 'byssi', - 'bytes', - 'byway', - 'caaed', - 'cabas', - 'caber', - 'cabob', - 'caboc', - 'cabre', - 'cacas', - 'cacks', - 'cacky', - 'cadee', - 'cades', - 'cadge', - 'cadgy', - 'cadie', - 'cadis', - 'cadre', - 'caeca', - 'caese', - 'cafes', - 'caffs', - 'caged', - 'cager', - 'cages', - 'cagot', - 'cahow', - 'caids', - 'cains', - 'caird', - 'cajon', - 'cajun', - 'caked', - 'cakes', - 'cakey', - 'calfs', - 'calid', - 'calif', - 'calix', - 'calks', - 'calla', - 'calls', - 'calms', - 'calmy', - 'calos', - 'calpa', - 'calps', - 'calve', - 'calyx', - 'caman', - 'camas', - 'cames', - 'camis', - 'camos', - 'campi', - 'campo', - 'camps', - 'campy', - 'camus', - 'caned', - 'caneh', - 'caner', - 'canes', - 'cangs', - 'canid', - 'canna', - 'canns', - 'canso', - 'canst', - 'canto', - 'cants', - 'canty', - 'capas', - 'caped', - 'capes', - 'capex', - 'caphs', - 'capiz', - 'caple', - 'capon', - 'capos', - 'capot', - 'capri', - 'capul', - 'carap', - 'carbo', - 'carbs', - 'carby', - 'cardi', - 'cards', - 'cardy', - 'cared', - 'carer', - 'cares', - 'caret', - 'carex', - 'carks', - 'carle', - 'carls', - 'carns', - 'carny', - 'carob', - 'carom', - 'caron', - 'carpi', - 'carps', - 'carrs', - 'carse', - 'carta', - 'carte', - 'carts', - 'carvy', - 'casas', - 'casco', - 'cased', - 'cases', - 'casks', - 'casky', - 'casts', - 'casus', - 'cates', - 'cauda', - 'cauks', - 'cauld', - 'cauls', - 'caums', - 'caups', - 'cauri', - 'causa', - 'cavas', - 'caved', - 'cavel', - 'caver', - 'caves', - 'cavie', - 'cawed', - 'cawks', - 'caxon', - 'ceaze', - 'cebid', - 'cecal', - 'cecum', - 'ceded', - 'ceder', - 'cedes', - 'cedis', - 'ceiba', - 'ceili', - 'ceils', - 'celeb', - 'cella', - 'celli', - 'cells', - 'celom', - 'celts', - 'cense', - 'cento', - 'cents', - 'centu', - 'ceorl', - 'cepes', - 'cerci', - 'cered', - 'ceres', - 'cerge', - 'ceria', - 'ceric', - 'cerne', - 'ceroc', - 'ceros', - 'certs', - 'certy', - 'cesse', - 'cesta', - 'cesti', - 'cetes', - 'cetyl', - 'cezve', - 'chace', - 'chack', - 'chaco', - 'chado', - 'chads', - 'chaft', - 'chais', - 'chals', - 'chams', - 'chana', - 'chang', - 'chank', - 'chape', - 'chaps', - 'chapt', - 'chara', - 'chare', - 'chark', - 'charr', - 'chars', - 'chary', - 'chats', - 'chave', - 'chavs', - 'chawk', - 'chaws', - 'chaya', - 'chays', - 'cheep', - 'chefs', - 'cheka', - 'chela', - 'chelp', - 'chemo', - 'chems', - 'chere', - 'chert', - 'cheth', - 'chevy', - 'chews', - 'chewy', - 'chiao', - 'chias', - 'chibs', - 'chica', - 'chich', - 'chico', - 'chics', - 'chiel', - 'chiks', - 'chile', - 'chimb', - 'chimo', - 'chimp', - 'chine', - 'ching', - 'chink', - 'chino', - 'chins', - 'chips', - 'chirk', - 'chirl', - 'chirm', - 'chiro', - 'chirr', - 'chirt', - 'chiru', - 'chits', - 'chive', - 'chivs', - 'chivy', - 'chizz', - 'choco', - 'chocs', - 'chode', - 'chogs', - 'choil', - 'choko', - 'choky', - 'chola', - 'choli', - 'cholo', - 'chomp', - 'chons', - 'choof', - 'chook', - 'choom', - 'choon', - 'chops', - 'chota', - 'chott', - 'chout', - 'choux', - 'chowk', - 'chows', - 'chubs', - 'chufa', - 'chuff', - 'chugs', - 'chums', - 'churl', - 'churr', - 'chuse', - 'chuts', - 'chyle', - 'chyme', - 'chynd', - 'cibol', - 'cided', - 'cides', - 'ciels', - 'ciggy', - 'cilia', - 'cills', - 'cimar', - 'cimex', - 'cinct', - 'cines', - 'cinqs', - 'cions', - 'cippi', - 'circs', - 'cires', - 'cirls', - 'cirri', - 'cisco', - 'cissy', - 'cists', - 'cital', - 'cited', - 'citer', - 'cites', - 'cives', - 'civet', - 'civie', - 'civvy', - 'clach', - 'clade', - 'clads', - 'claes', - 'clags', - 'clame', - 'clams', - 'clans', - 'claps', - 'clapt', - 'claro', - 'clart', - 'clary', - 'clast', - 'clats', - 'claut', - 'clave', - 'clavi', - 'claws', - 'clays', - 'cleck', - 'cleek', - 'cleep', - 'clefs', - 'clegs', - 'cleik', - 'clems', - 'clepe', - 'clept', - 'cleve', - 'clews', - 'clied', - 'clies', - 'clift', - 'clime', - 'cline', - 'clint', - 'clipe', - 'clips', - 'clipt', - 'clits', - 'cloam', - 'clods', - 'cloff', - 'clogs', - 'cloke', - 'clomb', - 'clomp', - 'clonk', - 'clons', - 'cloop', - 'cloot', - 'clops', - 'clote', - 'clots', - 'clour', - 'clous', - 'clows', - 'cloye', - 'cloys', - 'cloze', - 'clubs', - 'clues', - 'cluey', - 'clunk', - 'clype', - 'cnida', - 'coact', - 'coady', - 'coala', - 'coals', - 'coaly', - 'coapt', - 'coarb', - 'coate', - 'coati', - 'coats', - 'cobbs', - 'cobby', - 'cobia', - 'coble', - 'cobza', - 'cocas', - 'cocci', - 'cocco', - 'cocks', - 'cocky', - 'cocos', - 'codas', - 'codec', - 'coded', - 'coden', - 'coder', - 'codes', - 'codex', - 'codon', - 'coeds', - 'coffs', - 'cogie', - 'cogon', - 'cogue', - 'cohab', - 'cohen', - 'cohoe', - 'cohog', - 'cohos', - 'coifs', - 'coign', - 'coils', - 'coins', - 'coirs', - 'coits', - 'coked', - 'cokes', - 'colas', - 'colby', - 'colds', - 'coled', - 'coles', - 'coley', - 'colic', - 'colin', - 'colls', - 'colly', - 'colog', - 'colts', - 'colza', - 'comae', - 'comal', - 'comas', - 'combe', - 'combi', - 'combo', - 'combs', - 'comby', - 'comer', - 'comes', - 'comix', - 'commo', - 'comms', - 'commy', - 'compo', - 'comps', - 'compt', - 'comte', - 'comus', - 'coned', - 'cones', - 'coney', - 'confs', - 'conga', - 'conge', - 'congo', - 'conia', - 'conin', - 'conks', - 'conky', - 'conne', - 'conns', - 'conte', - 'conto', - 'conus', - 'convo', - 'cooch', - 'cooed', - 'cooee', - 'cooer', - 'cooey', - 'coofs', - 'cooks', - 'cooky', - 'cools', - 'cooly', - 'coomb', - 'cooms', - 'coomy', - 'coons', - 'coops', - 'coopt', - 'coost', - 'coots', - 'cooze', - 'copal', - 'copay', - 'coped', - 'copen', - 'coper', - 'copes', - 'coppy', - 'copra', - 'copsy', - 'coqui', - 'coram', - 'corbe', - 'corby', - 'cords', - 'cored', - 'cores', - 'corey', - 'corgi', - 'coria', - 'corks', - 'corky', - 'corms', - 'corni', - 'corno', - 'corns', - 'cornu', - 'corps', - 'corse', - 'corso', - 'cosec', - 'cosed', - 'coses', - 'coset', - 'cosey', - 'cosie', - 'costa', - 'coste', - 'costs', - 'cotan', - 'coted', - 'cotes', - 'coths', - 'cotta', - 'cotts', - 'coude', - 'coups', - 'courb', - 'courd', - 'coure', - 'cours', - 'couta', - 'couth', - 'coved', - 'coves', - 'covin', - 'cowal', - 'cowan', - 'cowed', - 'cowks', - 'cowls', - 'cowps', - 'cowry', - 'coxae', - 'coxal', - 'coxed', - 'coxes', - 'coxib', - 'coyau', - 'coyed', - 'coyer', - 'coypu', - 'cozed', - 'cozen', - 'cozes', - 'cozey', - 'cozie', - 'craal', - 'crabs', - 'crags', - 'craic', - 'craig', - 'crake', - 'crame', - 'crams', - 'crans', - 'crape', - 'craps', - 'crapy', - 'crare', - 'craws', - 'crays', - 'creds', - 'creel', - 'crees', - 'crems', - 'crena', - 'creps', - 'crepy', - 'crewe', - 'crews', - 'crias', - 'cribs', - 'cries', - 'crims', - 'crine', - 'crios', - 'cripe', - 'crips', - 'crise', - 'crith', - 'crits', - 'croci', - 'crocs', - 'croft', - 'crogs', - 'cromb', - 'crome', - 'cronk', - 'crons', - 'crool', - 'croon', - 'crops', - 'crore', - 'crost', - 'crout', - 'crows', - 'croze', - 'cruck', - 'crudo', - 'cruds', - 'crudy', - 'crues', - 'cruet', - 'cruft', - 'crunk', - 'cruor', - 'crura', - 'cruse', - 'crusy', - 'cruve', - 'crwth', - 'cryer', - 'ctene', - 'cubby', - 'cubeb', - 'cubed', - 'cuber', - 'cubes', - 'cubit', - 'cuddy', - 'cuffo', - 'cuffs', - 'cuifs', - 'cuing', - 'cuish', - 'cuits', - 'cukes', - 'culch', - 'culet', - 'culex', - 'culls', - 'cully', - 'culms', - 'culpa', - 'culti', - 'cults', - 'culty', - 'cumec', - 'cundy', - 'cunei', - 'cunit', - 'cunts', - 'cupel', - 'cupid', - 'cuppa', - 'cuppy', - 'curat', - 'curbs', - 'curch', - 'curds', - 'curdy', - 'cured', - 'curer', - 'cures', - 'curet', - 'curfs', - 'curia', - 'curie', - 'curli', - 'curls', - 'curns', - 'curny', - 'currs', - 'cursi', - 'curst', - 'cusec', - 'cushy', - 'cusks', - 'cusps', - 'cuspy', - 'cusso', - 'cusum', - 'cutch', - 'cuter', - 'cutes', - 'cutey', - 'cutin', - 'cutis', - 'cutto', - 'cutty', - 'cutup', - 'cuvee', - 'cuzes', - 'cwtch', - 'cyano', - 'cyans', - 'cycad', - 'cycas', - 'cyclo', - 'cyder', - 'cylix', - 'cymae', - 'cymar', - 'cymas', - 'cymes', - 'cymol', - 'cysts', - 'cytes', - 'cyton', - 'czars', - 'daals', - 'dabba', - 'daces', - 'dacha', - 'dacks', - 'dadah', - 'dadas', - 'dados', - 'daffs', - 'daffy', - 'dagga', - 'daggy', - 'dagos', - 'dahls', - 'daiko', - 'daine', - 'daint', - 'daker', - 'daled', - 'dales', - 'dalis', - 'dalle', - 'dalts', - 'daman', - 'damar', - 'dames', - 'damme', - 'damns', - 'damps', - 'dampy', - 'dancy', - 'dangs', - 'danio', - 'danks', - 'danny', - 'dants', - 'daraf', - 'darbs', - 'darcy', - 'dared', - 'darer', - 'dares', - 'darga', - 'dargs', - 'daric', - 'daris', - 'darks', - 'darky', - 'darns', - 'darre', - 'darts', - 'darzi', - 'dashi', - 'dashy', - 'datal', - 'dated', - 'dater', - 'dates', - 'datos', - 'datto', - 'daube', - 'daubs', - 'dauby', - 'dauds', - 'dault', - 'daurs', - 'dauts', - 'daven', - 'davit', - 'dawah', - 'dawds', - 'dawed', - 'dawen', - 'dawks', - 'dawns', - 'dawts', - 'dayan', - 'daych', - 'daynt', - 'dazed', - 'dazer', - 'dazes', - 'deads', - 'deair', - 'deals', - 'deans', - 'deare', - 'dearn', - 'dears', - 'deary', - 'deash', - 'deave', - 'deaws', - 'deawy', - 'debag', - 'debby', - 'debel', - 'debes', - 'debts', - 'debud', - 'debur', - 'debus', - 'debye', - 'decad', - 'decaf', - 'decan', - 'decko', - 'decks', - 'decos', - 'dedal', - 'deeds', - 'deedy', - 'deely', - 'deems', - 'deens', - 'deeps', - 'deere', - 'deers', - 'deets', - 'deeve', - 'deevs', - 'defat', - 'deffo', - 'defis', - 'defog', - 'degas', - 'degum', - 'degus', - 'deice', - 'deids', - 'deify', - 'deils', - 'deism', - 'deist', - 'deked', - 'dekes', - 'dekko', - 'deled', - 'deles', - 'delfs', - 'delft', - 'delis', - 'dells', - 'delly', - 'delos', - 'delph', - 'delts', - 'deman', - 'demes', - 'demic', - 'demit', - 'demob', - 'demoi', - 'demos', - 'dempt', - 'denar', - 'denay', - 'dench', - 'denes', - 'denet', - 'denis', - 'dents', - 'deoxy', - 'derat', - 'deray', - 'dered', - 'deres', - 'derig', - 'derma', - 'derms', - 'derns', - 'derny', - 'deros', - 'derro', - 'derry', - 'derth', - 'dervs', - 'desex', - 'deshi', - 'desis', - 'desks', - 'desse', - 'devas', - 'devel', - 'devis', - 'devon', - 'devos', - 'devot', - 'dewan', - 'dewar', - 'dewax', - 'dewed', - 'dexes', - 'dexie', - 'dhaba', - 'dhaks', - 'dhals', - 'dhikr', - 'dhobi', - 'dhole', - 'dholl', - 'dhols', - 'dhoti', - 'dhows', - 'dhuti', - 'diact', - 'dials', - 'diane', - 'diazo', - 'dibbs', - 'diced', - 'dicer', - 'dices', - 'dicht', - 'dicks', - 'dicky', - 'dicot', - 'dicta', - 'dicts', - 'dicty', - 'diddy', - 'didie', - 'didos', - 'didst', - 'diebs', - 'diels', - 'diene', - 'diets', - 'diffs', - 'dight', - 'dikas', - 'diked', - 'diker', - 'dikes', - 'dikey', - 'dildo', - 'dilli', - 'dills', - 'dimbo', - 'dimer', - 'dimes', - 'dimps', - 'dinar', - 'dined', - 'dines', - 'dinge', - 'dings', - 'dinic', - 'dinks', - 'dinky', - 'dinna', - 'dinos', - 'dints', - 'diols', - 'diota', - 'dippy', - 'dipso', - 'diram', - 'direr', - 'dirke', - 'dirks', - 'dirls', - 'dirts', - 'disas', - 'disci', - 'discs', - 'dishy', - 'disks', - 'disme', - 'dital', - 'ditas', - 'dited', - 'dites', - 'ditsy', - 'ditts', - 'ditzy', - 'divan', - 'divas', - 'dived', - 'dives', - 'divis', - 'divna', - 'divos', - 'divot', - 'divvy', - 'diwan', - 'dixie', - 'dixit', - 'diyas', - 'dizen', - 'djinn', - 'djins', - 'doabs', - 'doats', - 'dobby', - 'dobes', - 'dobie', - 'dobla', - 'dobra', - 'dobro', - 'docht', - 'docks', - 'docos', - 'docus', - 'doddy', - 'dodos', - 'doeks', - 'doers', - 'doest', - 'doeth', - 'doffs', - 'dogan', - 'doges', - 'dogey', - 'doggo', - 'doggy', - 'dogie', - 'dohyo', - 'doilt', - 'doily', - 'doits', - 'dojos', - 'dolce', - 'dolci', - 'doled', - 'doles', - 'dolia', - 'dolls', - 'dolma', - 'dolor', - 'dolos', - 'dolts', - 'domal', - 'domed', - 'domes', - 'domic', - 'donah', - 'donas', - 'donee', - 'doner', - 'donga', - 'dongs', - 'donko', - 'donna', - 'donne', - 'donny', - 'donsy', - 'doobs', - 'dooce', - 'doody', - 'dooks', - 'doole', - 'dools', - 'dooly', - 'dooms', - 'doomy', - 'doona', - 'doorn', - 'doors', - 'doozy', - 'dopas', - 'doped', - 'doper', - 'dopes', - 'dorad', - 'dorba', - 'dorbs', - 'doree', - 'dores', - 'doric', - 'doris', - 'dorks', - 'dorky', - 'dorms', - 'dormy', - 'dorps', - 'dorrs', - 'dorsa', - 'dorse', - 'dorts', - 'dorty', - 'dosai', - 'dosas', - 'dosed', - 'doseh', - 'doser', - 'doses', - 'dosha', - 'dotal', - 'doted', - 'doter', - 'dotes', - 'dotty', - 'douar', - 'douce', - 'doucs', - 'douks', - 'doula', - 'douma', - 'doums', - 'doups', - 'doura', - 'douse', - 'douts', - 'doved', - 'doven', - 'dover', - 'doves', - 'dovie', - 'dowar', - 'dowds', - 'dowed', - 'dower', - 'dowie', - 'dowle', - 'dowls', - 'dowly', - 'downa', - 'downs', - 'dowps', - 'dowse', - 'dowts', - 'doxed', - 'doxes', - 'doxie', - 'doyen', - 'doyly', - 'dozed', - 'dozer', - 'dozes', - 'drabs', - 'drack', - 'draco', - 'draff', - 'drags', - 'drail', - 'drams', - 'drant', - 'draps', - 'drats', - 'drave', - 'draws', - 'drays', - 'drear', - 'dreck', - 'dreed', - 'dreer', - 'drees', - 'dregs', - 'dreks', - 'drent', - 'drere', - 'drest', - 'dreys', - 'dribs', - 'drice', - 'dries', - 'drily', - 'drips', - 'dript', - 'droid', - 'droil', - 'droke', - 'drole', - 'drome', - 'drony', - 'droob', - 'droog', - 'drook', - 'drops', - 'dropt', - 'drouk', - 'drows', - 'drubs', - 'drugs', - 'drums', - 'drupe', - 'druse', - 'drusy', - 'druxy', - 'dryad', - 'dryas', - 'dsobo', - 'dsomo', - 'duads', - 'duals', - 'duans', - 'duars', - 'dubbo', - 'ducal', - 'ducat', - 'duces', - 'ducks', - 'ducky', - 'ducts', - 'duddy', - 'duded', - 'dudes', - 'duels', - 'duets', - 'duett', - 'duffs', - 'dufus', - 'duing', - 'duits', - 'dukas', - 'duked', - 'dukes', - 'dukka', - 'dulce', - 'dules', - 'dulia', - 'dulls', - 'dulse', - 'dumas', - 'dumbo', - 'dumbs', - 'dumka', - 'dumky', - 'dumps', - 'dunam', - 'dunch', - 'dunes', - 'dungs', - 'dungy', - 'dunks', - 'dunno', - 'dunny', - 'dunsh', - 'dunts', - 'duomi', - 'duomo', - 'duped', - 'duper', - 'dupes', - 'duple', - 'duply', - 'duppy', - 'dural', - 'duras', - 'dured', - 'dures', - 'durgy', - 'durns', - 'duroc', - 'duros', - 'duroy', - 'durra', - 'durrs', - 'durry', - 'durst', - 'durum', - 'durzi', - 'dusks', - 'dusts', - 'duxes', - 'dwaal', - 'dwale', - 'dwalm', - 'dwams', - 'dwang', - 'dwaum', - 'dweeb', - 'dwile', - 'dwine', - 'dyads', - 'dyers', - 'dyked', - 'dykes', - 'dykey', - 'dykon', - 'dynel', - 'dynes', - 'dzhos', - 'eagre', - 'ealed', - 'eales', - 'eaned', - 'eards', - 'eared', - 'earls', - 'earns', - 'earnt', - 'earst', - 'eased', - 'easer', - 'eases', - 'easle', - 'easts', - 'eathe', - 'eaved', - 'eaves', - 'ebbed', - 'ebbet', - 'ebons', - 'ebook', - 'ecads', - 'eched', - 'eches', - 'echos', - 'ecrus', - 'edema', - 'edged', - 'edger', - 'edges', - 'edile', - 'edits', - 'educe', - 'educt', - 'eejit', - 'eensy', - 'eeven', - 'eevns', - 'effed', - 'egads', - 'egers', - 'egest', - 'eggar', - 'egged', - 'egger', - 'egmas', - 'ehing', - 'eider', - 'eidos', - 'eigne', - 'eiked', - 'eikon', - 'eilds', - 'eisel', - 'ejido', - 'ekkas', - 'elain', - 'eland', - 'elans', - 'elchi', - 'eldin', - 'elemi', - 'elfed', - 'eliad', - 'elint', - 'elmen', - 'eloge', - 'elogy', - 'eloin', - 'elops', - 'elpee', - 'elsin', - 'elute', - 'elvan', - 'elven', - 'elver', - 'elves', - 'emacs', - 'embar', - 'embay', - 'embog', - 'embow', - 'embox', - 'embus', - 'emeer', - 'emend', - 'emerg', - 'emery', - 'emeus', - 'emics', - 'emirs', - 'emits', - 'emmas', - 'emmer', - 'emmet', - 'emmew', - 'emmys', - 'emoji', - 'emong', - 'emote', - 'emove', - 'empts', - 'emule', - 'emure', - 'emyde', - 'emyds', - 'enarm', - 'enate', - 'ended', - 'ender', - 'endew', - 'endue', - 'enews', - 'enfix', - 'eniac', - 'enlit', - 'enmew', - 'ennog', - 'enoki', - 'enols', - 'enorm', - 'enows', - 'enrol', - 'ensew', - 'ensky', - 'entia', - 'enure', - 'enurn', - 'envoi', - 'enzym', - 'eorls', - 'eosin', - 'epact', - 'epees', - 'ephah', - 'ephas', - 'ephod', - 'ephor', - 'epics', - 'epode', - 'epopt', - 'epris', - 'eques', - 'equid', - 'erbia', - 'erevs', - 'ergon', - 'ergos', - 'ergot', - 'erhus', - 'erica', - 'erick', - 'erics', - 'ering', - 'erned', - 'ernes', - 'erose', - 'erred', - 'erses', - 'eruct', - 'erugo', - 'eruvs', - 'erven', - 'ervil', - 'escar', - 'escot', - 'esile', - 'eskar', - 'esker', - 'esnes', - 'esses', - 'estoc', - 'estop', - 'estro', - 'etage', - 'etape', - 'etats', - 'etens', - 'ethal', - 'ethne', - 'ethyl', - 'etics', - 'etnas', - 'ettin', - 'ettle', - 'etuis', - 'etwee', - 'etyma', - 'eughs', - 'euked', - 'eupad', - 'euros', - 'eusol', - 'evens', - 'evert', - 'evets', - 'evhoe', - 'evils', - 'evite', - 'evohe', - 'ewers', - 'ewest', - 'ewhow', - 'ewked', - 'exams', - 'exeat', - 'execs', - 'exeem', - 'exeme', - 'exfil', - 'exies', - 'exine', - 'exing', - 'exits', - 'exode', - 'exome', - 'exons', - 'expat', - 'expos', - 'exude', - 'exuls', - 'exurb', - 'eyass', - 'eyers', - 'eyots', - 'eyras', - 'eyres', - 'eyrie', - 'eyrir', - 'ezine', - 'fabby', - 'faced', - 'facer', - 'faces', - 'facia', - 'facta', - 'facts', - 'faddy', - 'faded', - 'fader', - 'fades', - 'fadge', - 'fados', - 'faena', - 'faery', - 'faffs', - 'faffy', - 'faggy', - 'fagin', - 'fagot', - 'faiks', - 'fails', - 'faine', - 'fains', - 'fairs', - 'faked', - 'faker', - 'fakes', - 'fakey', - 'fakie', - 'fakir', - 'falaj', - 'falls', - 'famed', - 'fames', - 'fanal', - 'fands', - 'fanes', - 'fanga', - 'fango', - 'fangs', - 'fanks', - 'fanon', - 'fanos', - 'fanum', - 'faqir', - 'farad', - 'farci', - 'farcy', - 'fards', - 'fared', - 'farer', - 'fares', - 'farle', - 'farls', - 'farms', - 'faros', - 'farro', - 'farse', - 'farts', - 'fasci', - 'fasti', - 'fasts', - 'fated', - 'fates', - 'fatly', - 'fatso', - 'fatwa', - 'faugh', - 'fauld', - 'fauns', - 'faurd', - 'fauts', - 'fauve', - 'favas', - 'favel', - 'faver', - 'faves', - 'favus', - 'fawns', - 'fawny', - 'faxed', - 'faxes', - 'fayed', - 'fayer', - 'fayne', - 'fayre', - 'fazed', - 'fazes', - 'feals', - 'feare', - 'fears', - 'feart', - 'fease', - 'feats', - 'feaze', - 'feces', - 'fecht', - 'fecit', - 'fecks', - 'fedex', - 'feebs', - 'feeds', - 'feels', - 'feens', - 'feers', - 'feese', - 'feeze', - 'fehme', - 'feint', - 'feist', - 'felch', - 'felid', - 'fells', - 'felly', - 'felts', - 'felty', - 'femal', - 'femes', - 'femmy', - 'fends', - 'fendy', - 'fenis', - 'fenks', - 'fenny', - 'fents', - 'feods', - 'feoff', - 'ferer', - 'feres', - 'feria', - 'ferly', - 'fermi', - 'ferms', - 'ferns', - 'ferny', - 'fesse', - 'festa', - 'fests', - 'festy', - 'fetas', - 'feted', - 'fetes', - 'fetor', - 'fetta', - 'fetts', - 'fetwa', - 'feuar', - 'feuds', - 'feued', - 'feyed', - 'feyer', - 'feyly', - 'fezes', - 'fezzy', - 'fiars', - 'fiats', - 'fibro', - 'fices', - 'fiche', - 'fichu', - 'ficin', - 'ficos', - 'fides', - 'fidge', - 'fidos', - 'fiefs', - 'fient', - 'fiere', - 'fiers', - 'fiest', - 'fifed', - 'fifer', - 'fifes', - 'fifis', - 'figgy', - 'figos', - 'fiked', - 'fikes', - 'filar', - 'filch', - 'filed', - 'files', - 'filii', - 'filks', - 'fille', - 'fillo', - 'fills', - 'filmi', - 'films', - 'filos', - 'filum', - 'finca', - 'finds', - 'fined', - 'fines', - 'finis', - 'finks', - 'finny', - 'finos', - 'fiord', - 'fiqhs', - 'fique', - 'fired', - 'firer', - 'fires', - 'firie', - 'firks', - 'firms', - 'firns', - 'firry', - 'firth', - 'fiscs', - 'fisks', - 'fists', - 'fisty', - 'fitch', - 'fitly', - 'fitna', - 'fitte', - 'fitts', - 'fiver', - 'fives', - 'fixed', - 'fixes', - 'fixit', - 'fjeld', - 'flabs', - 'flaff', - 'flags', - 'flaks', - 'flamm', - 'flams', - 'flamy', - 'flane', - 'flans', - 'flaps', - 'flary', - 'flats', - 'flava', - 'flawn', - 'flaws', - 'flawy', - 'flaxy', - 'flays', - 'fleam', - 'fleas', - 'fleek', - 'fleer', - 'flees', - 'flegs', - 'fleme', - 'fleur', - 'flews', - 'flexi', - 'flexo', - 'fleys', - 'flics', - 'flied', - 'flies', - 'flimp', - 'flims', - 'flips', - 'flirs', - 'flisk', - 'flite', - 'flits', - 'flitt', - 'flobs', - 'flocs', - 'floes', - 'flogs', - 'flong', - 'flops', - 'flors', - 'flory', - 'flosh', - 'flota', - 'flote', - 'flows', - 'flubs', - 'flued', - 'flues', - 'fluey', - 'fluky', - 'flump', - 'fluor', - 'flurr', - 'fluty', - 'fluyt', - 'flyby', - 'flype', - 'flyte', - 'foals', - 'foams', - 'foehn', - 'fogey', - 'fogie', - 'fogle', - 'fogou', - 'fohns', - 'foids', - 'foils', - 'foins', - 'folds', - 'foley', - 'folia', - 'folic', - 'folie', - 'folks', - 'folky', - 'fomes', - 'fonda', - 'fonds', - 'fondu', - 'fones', - 'fonly', - 'fonts', - 'foods', - 'foody', - 'fools', - 'foots', - 'footy', - 'foram', - 'forbs', - 'forby', - 'fordo', - 'fords', - 'forel', - 'fores', - 'forex', - 'forks', - 'forky', - 'forme', - 'forms', - 'forts', - 'forza', - 'forze', - 'fossa', - 'fosse', - 'fouat', - 'fouds', - 'fouer', - 'fouet', - 'foule', - 'fouls', - 'fount', - 'fours', - 'fouth', - 'fovea', - 'fowls', - 'fowth', - 'foxed', - 'foxes', - 'foxie', - 'foyle', - 'foyne', - 'frabs', - 'frack', - 'fract', - 'frags', - 'fraim', - 'franc', - 'frape', - 'fraps', - 'frass', - 'frate', - 'frati', - 'frats', - 'fraus', - 'frays', - 'frees', - 'freet', - 'freit', - 'fremd', - 'frena', - 'freon', - 'frere', - 'frets', - 'fribs', - 'frier', - 'fries', - 'frigs', - 'frise', - 'frist', - 'frith', - 'frits', - 'fritt', - 'frize', - 'frizz', - 'froes', - 'frogs', - 'frons', - 'frore', - 'frorn', - 'frory', - 'frosh', - 'frows', - 'frowy', - 'frugs', - 'frump', - 'frush', - 'frust', - 'fryer', - 'fubar', - 'fubby', - 'fubsy', - 'fucks', - 'fucus', - 'fuddy', - 'fudgy', - 'fuels', - 'fuero', - 'fuffs', - 'fuffy', - 'fugal', - 'fuggy', - 'fugie', - 'fugio', - 'fugle', - 'fugly', - 'fugus', - 'fujis', - 'fulls', - 'fumed', - 'fumer', - 'fumes', - 'fumet', - 'fundi', - 'funds', - 'fundy', - 'fungo', - 'fungs', - 'funks', - 'fural', - 'furan', - 'furca', - 'furls', - 'furol', - 'furrs', - 'furth', - 'furze', - 'furzy', - 'fused', - 'fusee', - 'fusel', - 'fuses', - 'fusil', - 'fusks', - 'fusts', - 'fusty', - 'futon', - 'fuzed', - 'fuzee', - 'fuzes', - 'fuzil', - 'fyces', - 'fyked', - 'fykes', - 'fyles', - 'fyrds', - 'fytte', - 'gabba', - 'gabby', - 'gable', - 'gaddi', - 'gades', - 'gadge', - 'gadid', - 'gadis', - 'gadje', - 'gadjo', - 'gadso', - 'gaffs', - 'gaged', - 'gager', - 'gages', - 'gaids', - 'gains', - 'gairs', - 'gaita', - 'gaits', - 'gaitt', - 'gajos', - 'galah', - 'galas', - 'galax', - 'galea', - 'galed', - 'gales', - 'galls', - 'gally', - 'galop', - 'galut', - 'galvo', - 'gamas', - 'gamay', - 'gamba', - 'gambe', - 'gambo', - 'gambs', - 'gamed', - 'games', - 'gamey', - 'gamic', - 'gamin', - 'gamme', - 'gammy', - 'gamps', - 'ganch', - 'gandy', - 'ganef', - 'ganev', - 'gangs', - 'ganja', - 'ganof', - 'gants', - 'gaols', - 'gaped', - 'gaper', - 'gapes', - 'gapos', - 'gappy', - 'garbe', - 'garbo', - 'garbs', - 'garda', - 'gares', - 'garis', - 'garms', - 'garni', - 'garre', - 'garth', - 'garum', - 'gases', - 'gasps', - 'gaspy', - 'gasts', - 'gatch', - 'gated', - 'gater', - 'gates', - 'gaths', - 'gator', - 'gauch', - 'gaucy', - 'gauds', - 'gauje', - 'gault', - 'gaums', - 'gaumy', - 'gaups', - 'gaurs', - 'gauss', - 'gauzy', - 'gavot', - 'gawcy', - 'gawds', - 'gawks', - 'gawps', - 'gawsy', - 'gayal', - 'gazal', - 'gazar', - 'gazed', - 'gazes', - 'gazon', - 'gazoo', - 'geals', - 'geans', - 'geare', - 'gears', - 'geats', - 'gebur', - 'gecks', - 'geeks', - 'geeps', - 'geest', - 'geist', - 'geits', - 'gelds', - 'gelee', - 'gelid', - 'gelly', - 'gelts', - 'gemel', - 'gemma', - 'gemmy', - 'gemot', - 'genal', - 'genas', - 'genes', - 'genet', - 'genic', - 'genii', - 'genip', - 'genny', - 'genoa', - 'genom', - 'genro', - 'gents', - 'genty', - 'genua', - 'genus', - 'geode', - 'geoid', - 'gerah', - 'gerbe', - 'geres', - 'gerle', - 'germs', - 'germy', - 'gerne', - 'gesse', - 'gesso', - 'geste', - 'gests', - 'getas', - 'getup', - 'geums', - 'geyan', - 'geyer', - 'ghast', - 'ghats', - 'ghaut', - 'ghazi', - 'ghees', - 'ghest', - 'ghyll', - 'gibed', - 'gibel', - 'giber', - 'gibes', - 'gibli', - 'gibus', - 'gifts', - 'gigas', - 'gighe', - 'gigot', - 'gigue', - 'gilas', - 'gilds', - 'gilet', - 'gills', - 'gilly', - 'gilpy', - 'gilts', - 'gimel', - 'gimme', - 'gimps', - 'gimpy', - 'ginch', - 'ginge', - 'gings', - 'ginks', - 'ginny', - 'ginzo', - 'gipon', - 'gippo', - 'gippy', - 'girds', - 'girls', - 'girns', - 'giron', - 'giros', - 'girrs', - 'girsh', - 'girts', - 'gismo', - 'gisms', - 'gists', - 'gitch', - 'gites', - 'giust', - 'gived', - 'gives', - 'gizmo', - 'glace', - 'glads', - 'glady', - 'glaik', - 'glair', - 'glams', - 'glans', - 'glary', - 'glaum', - 'glaur', - 'glazy', - 'gleba', - 'glebe', - 'gleby', - 'glede', - 'gleds', - 'gleed', - 'gleek', - 'glees', - 'gleet', - 'gleis', - 'glens', - 'glent', - 'gleys', - 'glial', - 'glias', - 'glibs', - 'gliff', - 'glift', - 'glike', - 'glime', - 'glims', - 'glisk', - 'glits', - 'glitz', - 'gloam', - 'globi', - 'globs', - 'globy', - 'glode', - 'glogg', - 'gloms', - 'gloop', - 'glops', - 'glost', - 'glout', - 'glows', - 'gloze', - 'glued', - 'gluer', - 'glues', - 'gluey', - 'glugs', - 'glume', - 'glums', - 'gluon', - 'glute', - 'gluts', - 'gnarl', - 'gnarr', - 'gnars', - 'gnats', - 'gnawn', - 'gnaws', - 'gnows', - 'goads', - 'goafs', - 'goals', - 'goary', - 'goats', - 'goaty', - 'goban', - 'gobar', - 'gobbi', - 'gobbo', - 'gobby', - 'gobis', - 'gobos', - 'godet', - 'godso', - 'goels', - 'goers', - 'goest', - 'goeth', - 'goety', - 'gofer', - 'goffs', - 'gogga', - 'gogos', - 'goier', - 'gojis', - 'golds', - 'goldy', - 'goles', - 'golfs', - 'golpe', - 'golps', - 'gombo', - 'gomer', - 'gompa', - 'gonch', - 'gonef', - 'gongs', - 'gonia', - 'gonif', - 'gonks', - 'gonna', - 'gonof', - 'gonys', - 'gonzo', - 'gooby', - 'goods', - 'goofs', - 'googs', - 'gooks', - 'gooky', - 'goold', - 'gools', - 'gooly', - 'goons', - 'goony', - 'goops', - 'goopy', - 'goors', - 'goory', - 'goosy', - 'gopak', - 'gopik', - 'goral', - 'goras', - 'gored', - 'gores', - 'goris', - 'gorms', - 'gormy', - 'gorps', - 'gorse', - 'gorsy', - 'gosht', - 'gosse', - 'gotch', - 'goths', - 'gothy', - 'gotta', - 'gouch', - 'gouks', - 'goura', - 'gouts', - 'gouty', - 'gowan', - 'gowds', - 'gowfs', - 'gowks', - 'gowls', - 'gowns', - 'goxes', - 'goyim', - 'goyle', - 'graal', - 'grabs', - 'grads', - 'graff', - 'graip', - 'grama', - 'grame', - 'gramp', - 'grams', - 'grana', - 'grans', - 'grapy', - 'gravs', - 'grays', - 'grebe', - 'grebo', - 'grece', - 'greek', - 'grees', - 'grege', - 'grego', - 'grein', - 'grens', - 'grese', - 'greve', - 'grews', - 'greys', - 'grice', - 'gride', - 'grids', - 'griff', - 'grift', - 'grigs', - 'grike', - 'grins', - 'griot', - 'grips', - 'gript', - 'gripy', - 'grise', - 'grist', - 'grisy', - 'grith', - 'grits', - 'grize', - 'groat', - 'grody', - 'grogs', - 'groks', - 'groma', - 'grone', - 'groof', - 'grosz', - 'grots', - 'grouf', - 'grovy', - 'grows', - 'grrls', - 'grrrl', - 'grubs', - 'grued', - 'grues', - 'grufe', - 'grume', - 'grump', - 'grund', - 'gryce', - 'gryde', - 'gryke', - 'grype', - 'grypt', - 'guaco', - 'guana', - 'guano', - 'guans', - 'guars', - 'gucks', - 'gucky', - 'gudes', - 'guffs', - 'gugas', - 'guids', - 'guimp', - 'guiro', - 'gulag', - 'gular', - 'gulas', - 'gules', - 'gulet', - 'gulfs', - 'gulfy', - 'gulls', - 'gulph', - 'gulps', - 'gulpy', - 'gumma', - 'gummi', - 'gumps', - 'gundy', - 'gunge', - 'gungy', - 'gunks', - 'gunky', - 'gunny', - 'guqin', - 'gurdy', - 'gurge', - 'gurls', - 'gurly', - 'gurns', - 'gurry', - 'gursh', - 'gurus', - 'gushy', - 'gusla', - 'gusle', - 'gusli', - 'gussy', - 'gusts', - 'gutsy', - 'gutta', - 'gutty', - 'guyed', - 'guyle', - 'guyot', - 'guyse', - 'gwine', - 'gyals', - 'gyans', - 'gybed', - 'gybes', - 'gyeld', - 'gymps', - 'gynae', - 'gynie', - 'gynny', - 'gynos', - 'gyoza', - 'gypos', - 'gyppo', - 'gyppy', - 'gyral', - 'gyred', - 'gyres', - 'gyron', - 'gyros', - 'gyrus', - 'gytes', - 'gyved', - 'gyves', - 'haafs', - 'haars', - 'hable', - 'habus', - 'hacek', - 'hacks', - 'hadal', - 'haded', - 'hades', - 'hadji', - 'hadst', - 'haems', - 'haets', - 'haffs', - 'hafiz', - 'hafts', - 'haggs', - 'hahas', - 'haick', - 'haika', - 'haiks', - 'haiku', - 'hails', - 'haily', - 'hains', - 'haint', - 'hairs', - 'haith', - 'hajes', - 'hajis', - 'hajji', - 'hakam', - 'hakas', - 'hakea', - 'hakes', - 'hakim', - 'hakus', - 'halal', - 'haled', - 'haler', - 'hales', - 'halfa', - 'halfs', - 'halid', - 'hallo', - 'halls', - 'halma', - 'halms', - 'halon', - 'halos', - 'halse', - 'halts', - 'halva', - 'halwa', - 'hamal', - 'hamba', - 'hamed', - 'hames', - 'hammy', - 'hamza', - 'hanap', - 'hance', - 'hanch', - 'hands', - 'hangi', - 'hangs', - 'hanks', - 'hanky', - 'hansa', - 'hanse', - 'hants', - 'haole', - 'haoma', - 'hapax', - 'haply', - 'happi', - 'hapus', - 'haram', - 'hards', - 'hared', - 'hares', - 'harim', - 'harks', - 'harls', - 'harms', - 'harns', - 'haros', - 'harps', - 'harts', - 'hashy', - 'hasks', - 'hasps', - 'hasta', - 'hated', - 'hates', - 'hatha', - 'hauds', - 'haufs', - 'haugh', - 'hauld', - 'haulm', - 'hauls', - 'hault', - 'hauns', - 'hause', - 'haver', - 'haves', - 'hawed', - 'hawks', - 'hawms', - 'hawse', - 'hayed', - 'hayer', - 'hayey', - 'hayle', - 'hazan', - 'hazed', - 'hazer', - 'hazes', - 'heads', - 'heald', - 'heals', - 'heame', - 'heaps', - 'heapy', - 'heare', - 'hears', - 'heast', - 'heats', - 'heben', - 'hebes', - 'hecht', - 'hecks', - 'heder', - 'hedgy', - 'heeds', - 'heedy', - 'heels', - 'heeze', - 'hefte', - 'hefts', - 'heids', - 'heigh', - 'heils', - 'heirs', - 'hejab', - 'hejra', - 'heled', - 'heles', - 'helio', - 'hells', - 'helms', - 'helos', - 'helot', - 'helps', - 'helve', - 'hemal', - 'hemes', - 'hemic', - 'hemin', - 'hemps', - 'hempy', - 'hench', - 'hends', - 'henge', - 'henna', - 'henny', - 'henry', - 'hents', - 'hepar', - 'herbs', - 'herby', - 'herds', - 'heres', - 'herls', - 'herma', - 'herms', - 'herns', - 'heros', - 'herry', - 'herse', - 'hertz', - 'herye', - 'hesps', - 'hests', - 'hetes', - 'heths', - 'heuch', - 'heugh', - 'hevea', - 'hewed', - 'hewer', - 'hewgh', - 'hexad', - 'hexed', - 'hexer', - 'hexes', - 'hexyl', - 'heyed', - 'hiant', - 'hicks', - 'hided', - 'hider', - 'hides', - 'hiems', - 'highs', - 'hight', - 'hijab', - 'hijra', - 'hiked', - 'hiker', - 'hikes', - 'hikoi', - 'hilar', - 'hilch', - 'hillo', - 'hills', - 'hilts', - 'hilum', - 'hilus', - 'himbo', - 'hinau', - 'hinds', - 'hings', - 'hinky', - 'hinny', - 'hints', - 'hiois', - 'hiply', - 'hired', - 'hiree', - 'hirer', - 'hires', - 'hissy', - 'hists', - 'hithe', - 'hived', - 'hiver', - 'hives', - 'hizen', - 'hoaed', - 'hoagy', - 'hoars', - 'hoary', - 'hoast', - 'hobos', - 'hocks', - 'hocus', - 'hodad', - 'hodja', - 'hoers', - 'hogan', - 'hogen', - 'hoggs', - 'hoghs', - 'hohed', - 'hoick', - 'hoied', - 'hoiks', - 'hoing', - 'hoise', - 'hokas', - 'hoked', - 'hokes', - 'hokey', - 'hokis', - 'hokku', - 'hokum', - 'holds', - 'holed', - 'holes', - 'holey', - 'holks', - 'holla', - 'hollo', - 'holme', - 'holms', - 'holon', - 'holos', - 'holts', - 'homas', - 'homed', - 'homes', - 'homey', - 'homie', - 'homme', - 'homos', - 'honan', - 'honda', - 'honds', - 'honed', - 'honer', - 'hones', - 'hongi', - 'hongs', - 'honks', - 'honky', - 'hooch', - 'hoods', - 'hoody', - 'hooey', - 'hoofs', - 'hooka', - 'hooks', - 'hooky', - 'hooly', - 'hoons', - 'hoops', - 'hoord', - 'hoors', - 'hoosh', - 'hoots', - 'hooty', - 'hoove', - 'hopak', - 'hoped', - 'hoper', - 'hopes', - 'hoppy', - 'horah', - 'horal', - 'horas', - 'horis', - 'horks', - 'horme', - 'horns', - 'horst', - 'horsy', - 'hosed', - 'hosel', - 'hosen', - 'hoser', - 'hoses', - 'hosey', - 'hosta', - 'hosts', - 'hotch', - 'hoten', - 'hotty', - 'houff', - 'houfs', - 'hough', - 'houri', - 'hours', - 'houts', - 'hovea', - 'hoved', - 'hoven', - 'hoves', - 'howbe', - 'howes', - 'howff', - 'howfs', - 'howks', - 'howls', - 'howre', - 'howso', - 'hoxed', - 'hoxes', - 'hoyas', - 'hoyed', - 'hoyle', - 'hubby', - 'hucks', - 'hudna', - 'hudud', - 'huers', - 'huffs', - 'huffy', - 'huger', - 'huggy', - 'huhus', - 'huias', - 'hulas', - 'hules', - 'hulks', - 'hulky', - 'hullo', - 'hulls', - 'hully', - 'humas', - 'humfs', - 'humic', - 'humps', - 'humpy', - 'hunks', - 'hunts', - 'hurds', - 'hurls', - 'hurly', - 'hurra', - 'hurst', - 'hurts', - 'hushy', - 'husks', - 'husos', - 'hutia', - 'huzza', - 'huzzy', - 'hwyls', - 'hydra', - 'hyens', - 'hygge', - 'hying', - 'hykes', - 'hylas', - 'hyleg', - 'hyles', - 'hylic', - 'hymns', - 'hynde', - 'hyoid', - 'hyped', - 'hypes', - 'hypha', - 'hyphy', - 'hypos', - 'hyrax', - 'hyson', - 'hythe', - 'iambi', - 'iambs', - 'ibrik', - 'icers', - 'iched', - 'iches', - 'ichor', - 'icier', - 'icker', - 'ickle', - 'icons', - 'ictal', - 'ictic', - 'ictus', - 'idant', - 'ideas', - 'idees', - 'ident', - 'idled', - 'idles', - 'idola', - 'idols', - 'idyls', - 'iftar', - 'igapo', - 'igged', - 'iglus', - 'ihram', - 'ikans', - 'ikats', - 'ikons', - 'ileac', - 'ileal', - 'ileum', - 'ileus', - 'iliad', - 'ilial', - 'ilium', - 'iller', - 'illth', - 'imago', - 'imams', - 'imari', - 'imaum', - 'imbar', - 'imbed', - 'imide', - 'imido', - 'imids', - 'imine', - 'imino', - 'immew', - 'immit', - 'immix', - 'imped', - 'impis', - 'impot', - 'impro', - 'imshi', - 'imshy', - 'inapt', - 'inarm', - 'inbye', - 'incel', - 'incle', - 'incog', - 'incus', - 'incut', - 'indew', - 'india', - 'indie', - 'indol', - 'indow', - 'indri', - 'indue', - 'inerm', - 'infix', - 'infos', - 'infra', - 'ingan', - 'ingle', - 'inion', - 'inked', - 'inker', - 'inkle', - 'inned', - 'innit', - 'inorb', - 'inrun', - 'inset', - 'inspo', - 'intel', - 'intil', - 'intis', - 'intra', - 'inula', - 'inure', - 'inurn', - 'inust', - 'invar', - 'inwit', - 'iodic', - 'iodid', - 'iodin', - 'iotas', - 'ippon', - 'irade', - 'irids', - 'iring', - 'irked', - 'iroko', - 'irone', - 'irons', - 'isbas', - 'ishes', - 'isled', - 'isles', - 'isnae', - 'issei', - 'istle', - 'items', - 'ither', - 'ivied', - 'ivies', - 'ixias', - 'ixnay', - 'ixora', - 'ixtle', - 'izard', - 'izars', - 'izzat', - 'jaaps', - 'jabot', - 'jacal', - 'jacks', - 'jacky', - 'jaded', - 'jades', - 'jafas', - 'jaffa', - 'jagas', - 'jager', - 'jaggs', - 'jaggy', - 'jagir', - 'jagra', - 'jails', - 'jaker', - 'jakes', - 'jakey', - 'jalap', - 'jalop', - 'jambe', - 'jambo', - 'jambs', - 'jambu', - 'james', - 'jammy', - 'jamon', - 'janes', - 'janns', - 'janny', - 'janty', - 'japan', - 'japed', - 'japer', - 'japes', - 'jarks', - 'jarls', - 'jarps', - 'jarta', - 'jarul', - 'jasey', - 'jaspe', - 'jasps', - 'jatos', - 'jauks', - 'jaups', - 'javas', - 'javel', - 'jawan', - 'jawed', - 'jaxie', - 'jeans', - 'jeats', - 'jebel', - 'jedis', - 'jeels', - 'jeely', - 'jeeps', - 'jeers', - 'jeeze', - 'jefes', - 'jeffs', - 'jehad', - 'jehus', - 'jelab', - 'jello', - 'jells', - 'jembe', - 'jemmy', - 'jenny', - 'jeons', - 'jerid', - 'jerks', - 'jerry', - 'jesse', - 'jests', - 'jesus', - 'jetes', - 'jeton', - 'jeune', - 'jewed', - 'jewie', - 'jhala', - 'jiaos', - 'jibba', - 'jibbs', - 'jibed', - 'jiber', - 'jibes', - 'jiffs', - 'jiggy', - 'jigot', - 'jihad', - 'jills', - 'jilts', - 'jimmy', - 'jimpy', - 'jingo', - 'jinks', - 'jinne', - 'jinni', - 'jinns', - 'jirds', - 'jirga', - 'jirre', - 'jisms', - 'jived', - 'jiver', - 'jives', - 'jivey', - 'jnana', - 'jobed', - 'jobes', - 'jocko', - 'jocks', - 'jocky', - 'jocos', - 'jodel', - 'joeys', - 'johns', - 'joins', - 'joked', - 'jokes', - 'jokey', - 'jokol', - 'joled', - 'joles', - 'jolls', - 'jolts', - 'jolty', - 'jomon', - 'jomos', - 'jones', - 'jongs', - 'jonty', - 'jooks', - 'joram', - 'jorum', - 'jotas', - 'jotty', - 'jotun', - 'joual', - 'jougs', - 'jouks', - 'joule', - 'jours', - 'jowar', - 'jowed', - 'jowls', - 'jowly', - 'joyed', - 'jubas', - 'jubes', - 'jucos', - 'judas', - 'judgy', - 'judos', - 'jugal', - 'jugum', - 'jujus', - 'juked', - 'jukes', - 'jukus', - 'julep', - 'jumar', - 'jumby', - 'jumps', - 'junco', - 'junks', - 'junky', - 'jupes', - 'jupon', - 'jural', - 'jurat', - 'jurel', - 'jures', - 'justs', - 'jutes', - 'jutty', - 'juves', - 'juvie', - 'kaama', - 'kabab', - 'kabar', - 'kabob', - 'kacha', - 'kacks', - 'kadai', - 'kades', - 'kadis', - 'kafir', - 'kagos', - 'kagus', - 'kahal', - 'kaiak', - 'kaids', - 'kaies', - 'kaifs', - 'kaika', - 'kaiks', - 'kails', - 'kaims', - 'kaing', - 'kains', - 'kakas', - 'kakis', - 'kalam', - 'kales', - 'kalif', - 'kalis', - 'kalpa', - 'kamas', - 'kames', - 'kamik', - 'kamis', - 'kamme', - 'kanae', - 'kanas', - 'kandy', - 'kaneh', - 'kanes', - 'kanga', - 'kangs', - 'kanji', - 'kants', - 'kanzu', - 'kaons', - 'kapas', - 'kaphs', - 'kapok', - 'kapow', - 'kapus', - 'kaput', - 'karas', - 'karat', - 'karks', - 'karns', - 'karoo', - 'karos', - 'karri', - 'karst', - 'karsy', - 'karts', - 'karzy', - 'kasha', - 'kasme', - 'katal', - 'katas', - 'katis', - 'katti', - 'kaugh', - 'kauri', - 'kauru', - 'kaury', - 'kaval', - 'kavas', - 'kawas', - 'kawau', - 'kawed', - 'kayle', - 'kayos', - 'kazis', - 'kazoo', - 'kbars', - 'kebar', - 'kebob', - 'kecks', - 'kedge', - 'kedgy', - 'keech', - 'keefs', - 'keeks', - 'keels', - 'keema', - 'keeno', - 'keens', - 'keeps', - 'keets', - 'keeve', - 'kefir', - 'kehua', - 'keirs', - 'kelep', - 'kelim', - 'kells', - 'kelly', - 'kelps', - 'kelpy', - 'kelts', - 'kelty', - 'kembo', - 'kembs', - 'kemps', - 'kempt', - 'kempy', - 'kenaf', - 'kench', - 'kendo', - 'kenos', - 'kente', - 'kents', - 'kepis', - 'kerbs', - 'kerel', - 'kerfs', - 'kerky', - 'kerma', - 'kerne', - 'kerns', - 'keros', - 'kerry', - 'kerve', - 'kesar', - 'kests', - 'ketas', - 'ketch', - 'ketes', - 'ketol', - 'kevel', - 'kevil', - 'kexes', - 'keyed', - 'keyer', - 'khadi', - 'khafs', - 'khans', - 'khaph', - 'khats', - 'khaya', - 'khazi', - 'kheda', - 'kheth', - 'khets', - 'khoja', - 'khors', - 'khoum', - 'khuds', - 'kiaat', - 'kiack', - 'kiang', - 'kibbe', - 'kibbi', - 'kibei', - 'kibes', - 'kibla', - 'kicks', - 'kicky', - 'kiddo', - 'kiddy', - 'kidel', - 'kidge', - 'kiefs', - 'kiers', - 'kieve', - 'kievs', - 'kight', - 'kikes', - 'kikoi', - 'kiley', - 'kilim', - 'kills', - 'kilns', - 'kilos', - 'kilps', - 'kilts', - 'kilty', - 'kimbo', - 'kinas', - 'kinda', - 'kinds', - 'kindy', - 'kines', - 'kings', - 'kinin', - 'kinks', - 'kinos', - 'kiore', - 'kipes', - 'kippa', - 'kipps', - 'kirby', - 'kirks', - 'kirns', - 'kirri', - 'kisan', - 'kissy', - 'kists', - 'kited', - 'kiter', - 'kites', - 'kithe', - 'kiths', - 'kitul', - 'kivas', - 'kiwis', - 'klang', - 'klaps', - 'klett', - 'klick', - 'klieg', - 'kliks', - 'klong', - 'kloof', - 'kluge', - 'klutz', - 'knags', - 'knaps', - 'knarl', - 'knars', - 'knaur', - 'knawe', - 'knees', - 'knell', - 'knish', - 'knits', - 'knive', - 'knobs', - 'knops', - 'knosp', - 'knots', - 'knout', - 'knowe', - 'knows', - 'knubs', - 'knurl', - 'knurr', - 'knurs', - 'knuts', - 'koans', - 'koaps', - 'koban', - 'kobos', - 'koels', - 'koffs', - 'kofta', - 'kogal', - 'kohas', - 'kohen', - 'kohls', - 'koine', - 'kojis', - 'kokam', - 'kokas', - 'koker', - 'kokra', - 'kokum', - 'kolas', - 'kolos', - 'kombu', - 'konbu', - 'kondo', - 'konks', - 'kooks', - 'kooky', - 'koori', - 'kopek', - 'kophs', - 'kopje', - 'koppa', - 'korai', - 'koras', - 'korat', - 'kores', - 'korma', - 'koros', - 'korun', - 'korus', - 'koses', - 'kotch', - 'kotos', - 'kotow', - 'koura', - 'kraal', - 'krabs', - 'kraft', - 'krais', - 'krait', - 'krang', - 'krans', - 'kranz', - 'kraut', - 'krays', - 'kreep', - 'kreng', - 'krewe', - 'krona', - 'krone', - 'kroon', - 'krubi', - 'krunk', - 'ksars', - 'kubie', - 'kudos', - 'kudus', - 'kudzu', - 'kufis', - 'kugel', - 'kuias', - 'kukri', - 'kukus', - 'kulak', - 'kulan', - 'kulas', - 'kulfi', - 'kumis', - 'kumys', - 'kuris', - 'kurre', - 'kurta', - 'kurus', - 'kusso', - 'kutas', - 'kutch', - 'kutis', - 'kutus', - 'kuzus', - 'kvass', - 'kvell', - 'kwela', - 'kyack', - 'kyaks', - 'kyang', - 'kyars', - 'kyats', - 'kybos', - 'kydst', - 'kyles', - 'kylie', - 'kylin', - 'kylix', - 'kyloe', - 'kynde', - 'kynds', - 'kypes', - 'kyrie', - 'kytes', - 'kythe', - 'laari', - 'labda', - 'labia', - 'labis', - 'labra', - 'laced', - 'lacer', - 'laces', - 'lacet', - 'lacey', - 'lacks', - 'laddy', - 'laded', - 'lader', - 'lades', - 'laers', - 'laevo', - 'lagan', - 'lahal', - 'lahar', - 'laich', - 'laics', - 'laids', - 'laigh', - 'laika', - 'laiks', - 'laird', - 'lairs', - 'lairy', - 'laith', - 'laity', - 'laked', - 'laker', - 'lakes', - 'lakhs', - 'lakin', - 'laksa', - 'laldy', - 'lalls', - 'lamas', - 'lambs', - 'lamby', - 'lamed', - 'lamer', - 'lames', - 'lamia', - 'lammy', - 'lamps', - 'lanai', - 'lanas', - 'lanch', - 'lande', - 'lands', - 'lanes', - 'lanks', - 'lants', - 'lapin', - 'lapis', - 'lapje', - 'larch', - 'lards', - 'lardy', - 'laree', - 'lares', - 'largo', - 'laris', - 'larks', - 'larky', - 'larns', - 'larnt', - 'larum', - 'lased', - 'laser', - 'lases', - 'lassi', - 'lassu', - 'lassy', - 'lasts', - 'latah', - 'lated', - 'laten', - 'latex', - 'lathi', - 'laths', - 'lathy', - 'latke', - 'latus', - 'lauan', - 'lauch', - 'lauds', - 'laufs', - 'laund', - 'laura', - 'laval', - 'lavas', - 'laved', - 'laver', - 'laves', - 'lavra', - 'lavvy', - 'lawed', - 'lawer', - 'lawin', - 'lawks', - 'lawns', - 'lawny', - 'laxed', - 'laxer', - 'laxes', - 'laxly', - 'layed', - 'layin', - 'layup', - 'lazar', - 'lazed', - 'lazes', - 'lazos', - 'lazzi', - 'lazzo', - 'leads', - 'leady', - 'leafs', - 'leaks', - 'leams', - 'leans', - 'leany', - 'leaps', - 'leare', - 'lears', - 'leary', - 'leats', - 'leavy', - 'leaze', - 'leben', - 'leccy', - 'ledes', - 'ledgy', - 'ledum', - 'leear', - 'leeks', - 'leeps', - 'leers', - 'leese', - 'leets', - 'leeze', - 'lefte', - 'lefts', - 'leger', - 'leges', - 'legge', - 'leggo', - 'legit', - 'lehrs', - 'lehua', - 'leirs', - 'leish', - 'leman', - 'lemed', - 'lemel', - 'lemes', - 'lemma', - 'lemme', - 'lends', - 'lenes', - 'lengs', - 'lenis', - 'lenos', - 'lense', - 'lenti', - 'lento', - 'leone', - 'lepid', - 'lepra', - 'lepta', - 'lered', - 'leres', - 'lerps', - 'lesbo', - 'leses', - 'lests', - 'letch', - 'lethe', - 'letup', - 'leuch', - 'leuco', - 'leuds', - 'leugh', - 'levas', - 'levee', - 'leves', - 'levin', - 'levis', - 'lewis', - 'lexes', - 'lexis', - 'lezes', - 'lezza', - 'lezzy', - 'liana', - 'liane', - 'liang', - 'liard', - 'liars', - 'liart', - 'liber', - 'libra', - 'libri', - 'lichi', - 'licht', - 'licit', - 'licks', - 'lidar', - 'lidos', - 'liefs', - 'liens', - 'liers', - 'lieus', - 'lieve', - 'lifer', - 'lifes', - 'lifts', - 'ligan', - 'liger', - 'ligge', - 'ligne', - 'liked', - 'liker', - 'likes', - 'likin', - 'lills', - 'lilos', - 'lilts', - 'liman', - 'limas', - 'limax', - 'limba', - 'limbi', - 'limbs', - 'limby', - 'limed', - 'limen', - 'limes', - 'limey', - 'limma', - 'limns', - 'limos', - 'limpa', - 'limps', - 'linac', - 'linch', - 'linds', - 'lindy', - 'lined', - 'lines', - 'liney', - 'linga', - 'lings', - 'lingy', - 'linin', - 'links', - 'linky', - 'linns', - 'linny', - 'linos', - 'lints', - 'linty', - 'linum', - 'linux', - 'lions', - 'lipas', - 'lipes', - 'lipin', - 'lipos', - 'lippy', - 'liras', - 'lirks', - 'lirot', - 'lisks', - 'lisle', - 'lisps', - 'lists', - 'litai', - 'litas', - 'lited', - 'liter', - 'lites', - 'litho', - 'liths', - 'litre', - 'lived', - 'liven', - 'lives', - 'livor', - 'livre', - 'llano', - 'loach', - 'loads', - 'loafs', - 'loams', - 'loans', - 'loast', - 'loave', - 'lobar', - 'lobed', - 'lobes', - 'lobos', - 'lobus', - 'loche', - 'lochs', - 'locie', - 'locis', - 'locks', - 'locos', - 'locum', - 'loden', - 'lodes', - 'loess', - 'lofts', - 'logan', - 'loges', - 'loggy', - 'logia', - 'logie', - 'logoi', - 'logon', - 'logos', - 'lohan', - 'loids', - 'loins', - 'loipe', - 'loirs', - 'lokes', - 'lolls', - 'lolly', - 'lolog', - 'lomas', - 'lomed', - 'lomes', - 'loner', - 'longa', - 'longe', - 'longs', - 'looby', - 'looed', - 'looey', - 'loofa', - 'loofs', - 'looie', - 'looks', - 'looky', - 'looms', - 'loons', - 'loony', - 'loops', - 'loord', - 'loots', - 'loped', - 'loper', - 'lopes', - 'loppy', - 'loral', - 'loran', - 'lords', - 'lordy', - 'lorel', - 'lores', - 'loric', - 'loris', - 'losed', - 'losel', - 'losen', - 'loses', - 'lossy', - 'lotah', - 'lotas', - 'lotes', - 'lotic', - 'lotos', - 'lotsa', - 'lotta', - 'lotte', - 'lotto', - 'lotus', - 'loued', - 'lough', - 'louie', - 'louis', - 'louma', - 'lound', - 'louns', - 'loupe', - 'loups', - 'loure', - 'lours', - 'loury', - 'louts', - 'lovat', - 'loved', - 'loves', - 'lovey', - 'lovie', - 'lowan', - 'lowed', - 'lowes', - 'lownd', - 'lowne', - 'lowns', - 'lowps', - 'lowry', - 'lowse', - 'lowts', - 'loxed', - 'loxes', - 'lozen', - 'luach', - 'luaus', - 'lubed', - 'lubes', - 'lubra', - 'luces', - 'lucks', - 'lucre', - 'ludes', - 'ludic', - 'ludos', - 'luffa', - 'luffs', - 'luged', - 'luger', - 'luges', - 'lulls', - 'lulus', - 'lumas', - 'lumbi', - 'lumme', - 'lummy', - 'lumps', - 'lunas', - 'lunes', - 'lunet', - 'lungi', - 'lungs', - 'lunks', - 'lunts', - 'lupin', - 'lured', - 'lurer', - 'lures', - 'lurex', - 'lurgi', - 'lurgy', - 'lurks', - 'lurry', - 'lurve', - 'luser', - 'lushy', - 'lusks', - 'lusts', - 'lusus', - 'lutea', - 'luted', - 'luter', - 'lutes', - 'luvvy', - 'luxed', - 'luxer', - 'luxes', - 'lweis', - 'lyams', - 'lyard', - 'lyart', - 'lyase', - 'lycea', - 'lycee', - 'lycra', - 'lymes', - 'lynes', - 'lyres', - 'lysed', - 'lyses', - 'lysin', - 'lysis', - 'lysol', - 'lyssa', - 'lyted', - 'lytes', - 'lythe', - 'lytic', - 'lytta', - 'maaed', - 'maare', - 'maars', - 'mabes', - 'macas', - 'maced', - 'macer', - 'maces', - 'mache', - 'machi', - 'machs', - 'macks', - 'macle', - 'macon', - 'madge', - 'madid', - 'madre', - 'maerl', - 'mafic', - 'mages', - 'maggs', - 'magot', - 'magus', - 'mahoe', - 'mahua', - 'mahwa', - 'maids', - 'maiko', - 'maiks', - 'maile', - 'maill', - 'mails', - 'maims', - 'mains', - 'maire', - 'mairs', - 'maise', - 'maist', - 'makar', - 'makes', - 'makis', - 'makos', - 'malam', - 'malar', - 'malas', - 'malax', - 'males', - 'malic', - 'malik', - 'malis', - 'malls', - 'malms', - 'malmy', - 'malts', - 'malty', - 'malus', - 'malva', - 'malwa', - 'mamas', - 'mamba', - 'mamee', - 'mamey', - 'mamie', - 'manas', - 'manat', - 'mandi', - 'maneb', - 'maned', - 'maneh', - 'manes', - 'manet', - 'mangs', - 'manis', - 'manky', - 'manna', - 'manos', - 'manse', - 'manta', - 'manto', - 'manty', - 'manul', - 'manus', - 'mapau', - 'maqui', - 'marae', - 'marah', - 'maras', - 'marcs', - 'mardy', - 'mares', - 'marge', - 'margs', - 'maria', - 'marid', - 'marka', - 'marks', - 'marle', - 'marls', - 'marly', - 'marms', - 'maron', - 'maror', - 'marra', - 'marri', - 'marse', - 'marts', - 'marvy', - 'masas', - 'mased', - 'maser', - 'mases', - 'mashy', - 'masks', - 'massa', - 'massy', - 'masts', - 'masty', - 'masus', - 'matai', - 'mated', - 'mater', - 'mates', - 'maths', - 'matin', - 'matlo', - 'matte', - 'matts', - 'matza', - 'matzo', - 'mauby', - 'mauds', - 'mauls', - 'maund', - 'mauri', - 'mausy', - 'mauts', - 'mauzy', - 'maven', - 'mavie', - 'mavin', - 'mavis', - 'mawed', - 'mawks', - 'mawky', - 'mawns', - 'mawrs', - 'maxed', - 'maxes', - 'maxis', - 'mayan', - 'mayas', - 'mayed', - 'mayos', - 'mayst', - 'mazed', - 'mazer', - 'mazes', - 'mazey', - 'mazut', - 'mbira', - 'meads', - 'meals', - 'meane', - 'means', - 'meany', - 'meare', - 'mease', - 'meath', - 'meats', - 'mebos', - 'mechs', - 'mecks', - 'medii', - 'medle', - 'meeds', - 'meers', - 'meets', - 'meffs', - 'meins', - 'meint', - 'meiny', - 'meith', - 'mekka', - 'melas', - 'melba', - 'melds', - 'melic', - 'melik', - 'mells', - 'melts', - 'melty', - 'memes', - 'memos', - 'menad', - 'mends', - 'mened', - 'menes', - 'menge', - 'mengs', - 'mensa', - 'mense', - 'mensh', - 'menta', - 'mento', - 'menus', - 'meous', - 'meows', - 'merch', - 'mercs', - 'merde', - 'mered', - 'merel', - 'merer', - 'meres', - 'meril', - 'meris', - 'merks', - 'merle', - 'merls', - 'merse', - 'mesal', - 'mesas', - 'mesel', - 'meses', - 'meshy', - 'mesic', - 'mesne', - 'meson', - 'messy', - 'mesto', - 'meted', - 'metes', - 'metho', - 'meths', - 'metic', - 'metif', - 'metis', - 'metol', - 'metre', - 'meuse', - 'meved', - 'meves', - 'mewed', - 'mewls', - 'meynt', - 'mezes', - 'mezze', - 'mezzo', - 'mhorr', - 'miaou', - 'miaow', - 'miasm', - 'miaul', - 'micas', - 'miche', - 'micht', - 'micks', - 'micky', - 'micos', - 'micra', - 'middy', - 'midgy', - 'midis', - 'miens', - 'mieve', - 'miffs', - 'miffy', - 'mifty', - 'miggs', - 'mihas', - 'mihis', - 'miked', - 'mikes', - 'mikra', - 'mikva', - 'milch', - 'milds', - 'miler', - 'miles', - 'milfs', - 'milia', - 'milko', - 'milks', - 'mille', - 'mills', - 'milor', - 'milos', - 'milpa', - 'milts', - 'milty', - 'miltz', - 'mimed', - 'mimeo', - 'mimer', - 'mimes', - 'mimsy', - 'minae', - 'minar', - 'minas', - 'mincy', - 'minds', - 'mined', - 'mines', - 'minge', - 'mings', - 'mingy', - 'minis', - 'minke', - 'minks', - 'minny', - 'minos', - 'mints', - 'mired', - 'mires', - 'mirex', - 'mirid', - 'mirin', - 'mirks', - 'mirky', - 'mirly', - 'miros', - 'mirvs', - 'mirza', - 'misch', - 'misdo', - 'mises', - 'misgo', - 'misos', - 'missa', - 'mists', - 'misty', - 'mitch', - 'miter', - 'mites', - 'mitis', - 'mitre', - 'mitts', - 'mixed', - 'mixen', - 'mixer', - 'mixes', - 'mixte', - 'mixup', - 'mizen', - 'mizzy', - 'mneme', - 'moans', - 'moats', - 'mobby', - 'mobes', - 'mobey', - 'mobie', - 'moble', - 'mochi', - 'mochs', - 'mochy', - 'mocks', - 'moder', - 'modes', - 'modge', - 'modii', - 'modus', - 'moers', - 'mofos', - 'moggy', - 'mohel', - 'mohos', - 'mohrs', - 'mohua', - 'mohur', - 'moile', - 'moils', - 'moira', - 'moire', - 'moits', - 'mojos', - 'mokes', - 'mokis', - 'mokos', - 'molal', - 'molas', - 'molds', - 'moled', - 'moles', - 'molla', - 'molls', - 'molly', - 'molto', - 'molts', - 'molys', - 'momes', - 'momma', - 'mommy', - 'momus', - 'monad', - 'monal', - 'monas', - 'monde', - 'mondo', - 'moner', - 'mongo', - 'mongs', - 'monic', - 'monie', - 'monks', - 'monos', - 'monte', - 'monty', - 'moobs', - 'mooch', - 'moods', - 'mooed', - 'mooks', - 'moola', - 'mooli', - 'mools', - 'mooly', - 'moong', - 'moons', - 'moony', - 'moops', - 'moors', - 'moory', - 'moots', - 'moove', - 'moped', - 'moper', - 'mopes', - 'mopey', - 'moppy', - 'mopsy', - 'mopus', - 'morae', - 'moras', - 'morat', - 'moray', - 'morel', - 'mores', - 'moria', - 'morne', - 'morns', - 'morra', - 'morro', - 'morse', - 'morts', - 'mosed', - 'moses', - 'mosey', - 'mosks', - 'mosso', - 'moste', - 'mosts', - 'moted', - 'moten', - 'motes', - 'motet', - 'motey', - 'moths', - 'mothy', - 'motis', - 'motte', - 'motts', - 'motty', - 'motus', - 'motza', - 'mouch', - 'moues', - 'mould', - 'mouls', - 'moups', - 'moust', - 'mousy', - 'moved', - 'moves', - 'mowas', - 'mowed', - 'mowra', - 'moxas', - 'moxie', - 'moyas', - 'moyle', - 'moyls', - 'mozed', - 'mozes', - 'mozos', - 'mpret', - 'mucho', - 'mucic', - 'mucid', - 'mucin', - 'mucks', - 'mucor', - 'mucro', - 'mudge', - 'mudir', - 'mudra', - 'muffs', - 'mufti', - 'mugga', - 'muggs', - 'muggy', - 'muhly', - 'muids', - 'muils', - 'muirs', - 'muist', - 'mujik', - 'mulct', - 'muled', - 'mules', - 'muley', - 'mulga', - 'mulie', - 'mulla', - 'mulls', - 'mulse', - 'mulsh', - 'mumms', - 'mumps', - 'mumsy', - 'mumus', - 'munga', - 'munge', - 'mungo', - 'mungs', - 'munis', - 'munts', - 'muntu', - 'muons', - 'muras', - 'mured', - 'mures', - 'murex', - 'murid', - 'murks', - 'murls', - 'murly', - 'murra', - 'murre', - 'murri', - 'murrs', - 'murry', - 'murti', - 'murva', - 'musar', - 'musca', - 'mused', - 'muser', - 'muses', - 'muset', - 'musha', - 'musit', - 'musks', - 'musos', - 'musse', - 'mussy', - 'musth', - 'musts', - 'mutch', - 'muted', - 'muter', - 'mutes', - 'mutha', - 'mutis', - 'muton', - 'mutts', - 'muxed', - 'muxes', - 'muzak', - 'muzzy', - 'mvule', - 'myall', - 'mylar', - 'mynah', - 'mynas', - 'myoid', - 'myoma', - 'myope', - 'myops', - 'myopy', - 'mysid', - 'mythi', - 'myths', - 'mythy', - 'myxos', - 'mzees', - 'naams', - 'naans', - 'nabes', - 'nabis', - 'nabks', - 'nabla', - 'nabob', - 'nache', - 'nacho', - 'nacre', - 'nadas', - 'naeve', - 'naevi', - 'naffs', - 'nagas', - 'naggy', - 'nagor', - 'nahal', - 'naiad', - 'naifs', - 'naiks', - 'nails', - 'naira', - 'nairu', - 'naked', - 'naker', - 'nakfa', - 'nalas', - 'naled', - 'nalla', - 'named', - 'namer', - 'names', - 'namma', - 'namus', - 'nanas', - 'nance', - 'nancy', - 'nandu', - 'nanna', - 'nanos', - 'nanua', - 'napas', - 'naped', - 'napes', - 'napoo', - 'nappa', - 'nappe', - 'nappy', - 'naras', - 'narco', - 'narcs', - 'nards', - 'nares', - 'naric', - 'naris', - 'narks', - 'narky', - 'narre', - 'nashi', - 'natch', - 'nates', - 'natis', - 'natty', - 'nauch', - 'naunt', - 'navar', - 'naves', - 'navew', - 'navvy', - 'nawab', - 'nazes', - 'nazir', - 'nazis', - 'nduja', - 'neafe', - 'neals', - 'neaps', - 'nears', - 'neath', - 'neats', - 'nebek', - 'nebel', - 'necks', - 'neddy', - 'needs', - 'neeld', - 'neele', - 'neemb', - 'neems', - 'neeps', - 'neese', - 'neeze', - 'negro', - 'negus', - 'neifs', - 'neist', - 'neive', - 'nelis', - 'nelly', - 'nemas', - 'nemns', - 'nempt', - 'nenes', - 'neons', - 'neper', - 'nepit', - 'neral', - 'nerds', - 'nerka', - 'nerks', - 'nerol', - 'nerts', - 'nertz', - 'nervy', - 'nests', - 'netes', - 'netop', - 'netts', - 'netty', - 'neuks', - 'neume', - 'neums', - 'nevel', - 'neves', - 'nevus', - 'newbs', - 'newed', - 'newel', - 'newie', - 'newsy', - 'newts', - 'nexts', - 'nexus', - 'ngaio', - 'ngana', - 'ngati', - 'ngoma', - 'ngwee', - 'nicad', - 'nicht', - 'nicks', - 'nicol', - 'nidal', - 'nided', - 'nides', - 'nidor', - 'nidus', - 'niefs', - 'nieve', - 'nifes', - 'niffs', - 'niffy', - 'nifty', - 'niger', - 'nighs', - 'nihil', - 'nikab', - 'nikah', - 'nikau', - 'nills', - 'nimbi', - 'nimbs', - 'nimps', - 'niner', - 'nines', - 'ninon', - 'nipas', - 'nippy', - 'niqab', - 'nirls', - 'nirly', - 'nisei', - 'nisse', - 'nisus', - 'niter', - 'nites', - 'nitid', - 'niton', - 'nitre', - 'nitro', - 'nitry', - 'nitty', - 'nival', - 'nixed', - 'nixer', - 'nixes', - 'nixie', - 'nizam', - 'nkosi', - 'noahs', - 'nobby', - 'nocks', - 'nodal', - 'noddy', - 'nodes', - 'nodus', - 'noels', - 'noggs', - 'nohow', - 'noils', - 'noily', - 'noint', - 'noirs', - 'noles', - 'nolls', - 'nolos', - 'nomas', - 'nomen', - 'nomes', - 'nomic', - 'nomoi', - 'nomos', - 'nonas', - 'nonce', - 'nones', - 'nonet', - 'nongs', - 'nonis', - 'nonny', - 'nonyl', - 'noobs', - 'nooit', - 'nooks', - 'nooky', - 'noons', - 'noops', - 'nopal', - 'noria', - 'noris', - 'norks', - 'norma', - 'norms', - 'nosed', - 'noser', - 'noses', - 'notal', - 'noted', - 'noter', - 'notes', - 'notum', - 'nould', - 'noule', - 'nouls', - 'nouns', - 'nouny', - 'noups', - 'novae', - 'novas', - 'novum', - 'noway', - 'nowed', - 'nowls', - 'nowts', - 'nowty', - 'noxal', - 'noxes', - 'noyau', - 'noyed', - 'noyes', - 'nubby', - 'nubia', - 'nucha', - 'nuddy', - 'nuder', - 'nudes', - 'nudie', - 'nudzh', - 'nuffs', - 'nugae', - 'nuked', - 'nukes', - 'nulla', - 'nulls', - 'numbs', - 'numen', - 'nummy', - 'nunny', - 'nurds', - 'nurdy', - 'nurls', - 'nurrs', - 'nutso', - 'nutsy', - 'nyaff', - 'nyala', - 'nying', - 'nyssa', - 'oaked', - 'oaker', - 'oakum', - 'oared', - 'oases', - 'oasis', - 'oasts', - 'oaten', - 'oater', - 'oaths', - 'oaves', - 'obang', - 'obeah', - 'obeli', - 'obeys', - 'obias', - 'obied', - 'obiit', - 'obits', - 'objet', - 'oboes', - 'obole', - 'oboli', - 'obols', - 'occam', - 'ocher', - 'oches', - 'ochre', - 'ochry', - 'ocker', - 'ocrea', - 'octad', - 'octan', - 'octas', - 'octyl', - 'oculi', - 'odahs', - 'odals', - 'odeon', - 'odeum', - 'odism', - 'odist', - 'odium', - 'odors', - 'odour', - 'odyle', - 'odyls', - 'ofays', - 'offed', - 'offie', - 'oflag', - 'ofter', - 'ogams', - 'ogeed', - 'ogees', - 'oggin', - 'ogham', - 'ogive', - 'ogled', - 'ogler', - 'ogles', - 'ogmic', - 'ogres', - 'ohias', - 'ohing', - 'ohmic', - 'ohone', - 'oidia', - 'oiled', - 'oiler', - 'oinks', - 'oints', - 'ojime', - 'okapi', - 'okays', - 'okehs', - 'okras', - 'oktas', - 'oldie', - 'oleic', - 'olein', - 'olent', - 'oleos', - 'oleum', - 'olios', - 'ollas', - 'ollav', - 'oller', - 'ollie', - 'ology', - 'olpae', - 'olpes', - 'omasa', - 'omber', - 'ombus', - 'omens', - 'omers', - 'omits', - 'omlah', - 'omovs', - 'omrah', - 'oncer', - 'onces', - 'oncet', - 'oncus', - 'onely', - 'oners', - 'onery', - 'onium', - 'onkus', - 'onlay', - 'onned', - 'ontic', - 'oobit', - 'oohed', - 'oomph', - 'oonts', - 'ooped', - 'oorie', - 'ooses', - 'ootid', - 'oozed', - 'oozes', - 'opahs', - 'opals', - 'opens', - 'opepe', - 'oping', - 'oppos', - 'opsin', - 'opted', - 'opter', - 'orach', - 'oracy', - 'orals', - 'orang', - 'orant', - 'orate', - 'orbed', - 'orcas', - 'orcin', - 'ordos', - 'oread', - 'orfes', - 'orgia', - 'orgic', - 'orgue', - 'oribi', - 'oriel', - 'orixa', - 'orles', - 'orlon', - 'orlop', - 'ormer', - 'ornis', - 'orpin', - 'orris', - 'ortho', - 'orval', - 'orzos', - 'oscar', - 'oshac', - 'osier', - 'osmic', - 'osmol', - 'ossia', - 'ostia', - 'otaku', - 'otary', - 'ottar', - 'ottos', - 'oubit', - 'oucht', - 'ouens', - 'ouija', - 'oulks', - 'oumas', - 'oundy', - 'oupas', - 'ouped', - 'ouphe', - 'ouphs', - 'ourie', - 'ousel', - 'ousts', - 'outby', - 'outed', - 'outre', - 'outro', - 'outta', - 'ouzel', - 'ouzos', - 'ovals', - 'ovels', - 'ovens', - 'overs', - 'ovist', - 'ovoli', - 'ovolo', - 'ovule', - 'owche', - 'owies', - 'owled', - 'owler', - 'owlet', - 'owned', - 'owres', - 'owrie', - 'owsen', - 'oxbow', - 'oxers', - 'oxeye', - 'oxids', - 'oxies', - 'oxime', - 'oxims', - 'oxlip', - 'oxter', - 'oyers', - 'ozeki', - 'ozzie', - 'paals', - 'paans', - 'pacas', - 'paced', - 'pacer', - 'paces', - 'pacey', - 'pacha', - 'packs', - 'pacos', - 'pacta', - 'pacts', - 'padis', - 'padle', - 'padma', - 'padre', - 'padri', - 'paean', - 'paedo', - 'paeon', - 'paged', - 'pager', - 'pages', - 'pagle', - 'pagod', - 'pagri', - 'paiks', - 'pails', - 'pains', - 'paire', - 'pairs', - 'paisa', - 'paise', - 'pakka', - 'palas', - 'palay', - 'palea', - 'paled', - 'pales', - 'palet', - 'palis', - 'palki', - 'palla', - 'palls', - 'pally', - 'palms', - 'palmy', - 'palpi', - 'palps', - 'palsa', - 'pampa', - 'panax', - 'pance', - 'panda', - 'pands', - 'pandy', - 'paned', - 'panes', - 'panga', - 'pangs', - 'panim', - 'panko', - 'panne', - 'panni', - 'panto', - 'pants', - 'panty', - 'paoli', - 'paolo', - 'papas', - 'papaw', - 'papes', - 'pappi', - 'pappy', - 'parae', - 'paras', - 'parch', - 'pardi', - 'pards', - 'pardy', - 'pared', - 'paren', - 'pareo', - 'pares', - 'pareu', - 'parev', - 'parge', - 'pargo', - 'paris', - 'parki', - 'parks', - 'parky', - 'parle', - 'parly', - 'parma', - 'parol', - 'parps', - 'parra', - 'parrs', - 'parti', - 'parts', - 'parve', - 'parvo', - 'paseo', - 'pases', - 'pasha', - 'pashm', - 'paska', - 'paspy', - 'passe', - 'pasts', - 'pated', - 'paten', - 'pater', - 'pates', - 'paths', - 'patin', - 'patka', - 'patly', - 'patte', - 'patus', - 'pauas', - 'pauls', - 'pavan', - 'paved', - 'paven', - 'paver', - 'paves', - 'pavid', - 'pavin', - 'pavis', - 'pawas', - 'pawaw', - 'pawed', - 'pawer', - 'pawks', - 'pawky', - 'pawls', - 'pawns', - 'paxes', - 'payed', - 'payor', - 'paysd', - 'peage', - 'peags', - 'peaks', - 'peaky', - 'peals', - 'peans', - 'peare', - 'pears', - 'peart', - 'pease', - 'peats', - 'peaty', - 'peavy', - 'peaze', - 'pebas', - 'pechs', - 'pecke', - 'pecks', - 'pecky', - 'pedes', - 'pedis', - 'pedro', - 'peece', - 'peeks', - 'peels', - 'peens', - 'peeoy', - 'peepe', - 'peeps', - 'peers', - 'peery', - 'peeve', - 'peggy', - 'peghs', - 'peins', - 'peise', - 'peize', - 'pekan', - 'pekes', - 'pekin', - 'pekoe', - 'pelas', - 'pelau', - 'peles', - 'pelfs', - 'pells', - 'pelma', - 'pelon', - 'pelta', - 'pelts', - 'pends', - 'pendu', - 'pened', - 'penes', - 'pengo', - 'penie', - 'penis', - 'penks', - 'penna', - 'penni', - 'pents', - 'peons', - 'peony', - 'pepla', - 'pepos', - 'peppy', - 'pepsi', - 'perai', - 'perce', - 'percs', - 'perdu', - 'perdy', - 'perea', - 'peres', - 'peris', - 'perks', - 'perms', - 'perns', - 'perog', - 'perps', - 'perry', - 'perse', - 'perst', - 'perts', - 'perve', - 'pervo', - 'pervs', - 'pervy', - 'pesos', - 'pests', - 'pesty', - 'petar', - 'peter', - 'petit', - 'petre', - 'petri', - 'petti', - 'petto', - 'pewee', - 'pewit', - 'peyse', - 'phage', - 'phang', - 'phare', - 'pharm', - 'pheer', - 'phene', - 'pheon', - 'phese', - 'phial', - 'phish', - 'phizz', - 'phlox', - 'phoca', - 'phono', - 'phons', - 'phots', - 'phpht', - 'phuts', - 'phyla', - 'phyle', - 'piani', - 'pians', - 'pibal', - 'pical', - 'picas', - 'piccy', - 'picks', - 'picot', - 'picra', - 'picul', - 'piend', - 'piers', - 'piert', - 'pieta', - 'piets', - 'piezo', - 'pight', - 'pigmy', - 'piing', - 'pikas', - 'pikau', - 'piked', - 'piker', - 'pikes', - 'pikey', - 'pikis', - 'pikul', - 'pilae', - 'pilaf', - 'pilao', - 'pilar', - 'pilau', - 'pilaw', - 'pilch', - 'pilea', - 'piled', - 'pilei', - 'piler', - 'piles', - 'pilis', - 'pills', - 'pilow', - 'pilum', - 'pilus', - 'pimas', - 'pimps', - 'pinas', - 'pined', - 'pines', - 'pingo', - 'pings', - 'pinko', - 'pinks', - 'pinna', - 'pinny', - 'pinon', - 'pinot', - 'pinta', - 'pints', - 'pinup', - 'pions', - 'piony', - 'pious', - 'pioye', - 'pioys', - 'pipal', - 'pipas', - 'piped', - 'pipes', - 'pipet', - 'pipis', - 'pipit', - 'pippy', - 'pipul', - 'pirai', - 'pirls', - 'pirns', - 'pirog', - 'pisco', - 'pises', - 'pisky', - 'pisos', - 'pissy', - 'piste', - 'pitas', - 'piths', - 'piton', - 'pitot', - 'pitta', - 'piums', - 'pixes', - 'pized', - 'pizes', - 'plaas', - 'plack', - 'plage', - 'plans', - 'plaps', - 'plash', - 'plasm', - 'plast', - 'plats', - 'platt', - 'platy', - 'playa', - 'plays', - 'pleas', - 'plebe', - 'plebs', - 'plena', - 'pleon', - 'plesh', - 'plews', - 'plica', - 'plies', - 'plims', - 'pling', - 'plink', - 'ploat', - 'plods', - 'plong', - 'plonk', - 'plook', - 'plops', - 'plots', - 'plotz', - 'plouk', - 'plows', - 'ploye', - 'ploys', - 'plues', - 'pluff', - 'plugs', - 'plums', - 'plumy', - 'pluot', - 'pluto', - 'plyer', - 'poach', - 'poaka', - 'poake', - 'poboy', - 'pocks', - 'pocky', - 'podal', - 'poddy', - 'podex', - 'podge', - 'podgy', - 'podia', - 'poems', - 'poeps', - 'poets', - 'pogey', - 'pogge', - 'pogos', - 'pohed', - 'poilu', - 'poind', - 'pokal', - 'poked', - 'pokes', - 'pokey', - 'pokie', - 'poled', - 'poler', - 'poles', - 'poley', - 'polio', - 'polis', - 'polje', - 'polks', - 'polls', - 'polly', - 'polos', - 'polts', - 'polys', - 'pombe', - 'pomes', - 'pommy', - 'pomos', - 'pomps', - 'ponce', - 'poncy', - 'ponds', - 'pones', - 'poney', - 'ponga', - 'pongo', - 'pongs', - 'pongy', - 'ponks', - 'ponts', - 'ponty', - 'ponzu', - 'poods', - 'pooed', - 'poofs', - 'poofy', - 'poohs', - 'pooja', - 'pooka', - 'pooks', - 'pools', - 'poons', - 'poops', - 'poopy', - 'poori', - 'poort', - 'poots', - 'poove', - 'poovy', - 'popes', - 'poppa', - 'popsy', - 'porae', - 'poral', - 'pored', - 'porer', - 'pores', - 'porge', - 'porgy', - 'porin', - 'porks', - 'porky', - 'porno', - 'porns', - 'porny', - 'porta', - 'ports', - 'porty', - 'posed', - 'poses', - 'posey', - 'posho', - 'posts', - 'potae', - 'potch', - 'poted', - 'potes', - 'potin', - 'potoo', - 'potsy', - 'potto', - 'potts', - 'potty', - 'pouff', - 'poufs', - 'pouke', - 'pouks', - 'poule', - 'poulp', - 'poult', - 'poupe', - 'poupt', - 'pours', - 'pouts', - 'powan', - 'powin', - 'pownd', - 'powns', - 'powny', - 'powre', - 'poxed', - 'poxes', - 'poynt', - 'poyou', - 'poyse', - 'pozzy', - 'praam', - 'prads', - 'prahu', - 'prams', - 'prana', - 'prang', - 'praos', - 'prase', - 'prate', - 'prats', - 'pratt', - 'praty', - 'praus', - 'prays', - 'predy', - 'preed', - 'prees', - 'preif', - 'prems', - 'premy', - 'prent', - 'preon', - 'preop', - 'preps', - 'presa', - 'prese', - 'prest', - 'preve', - 'prexy', - 'preys', - 'prial', - 'pricy', - 'prief', - 'prier', - 'pries', - 'prigs', - 'prill', - 'prima', - 'primi', - 'primp', - 'prims', - 'primy', - 'prink', - 'prion', - 'prise', - 'priss', - 'proas', - 'probs', - 'prods', - 'proem', - 'profs', - 'progs', - 'proin', - 'proke', - 'prole', - 'proll', - 'promo', - 'proms', - 'pronk', - 'props', - 'prore', - 'proso', - 'pross', - 'prost', - 'prosy', - 'proto', - 'proul', - 'prows', - 'proyn', - 'prunt', - 'pruta', - 'pryer', - 'pryse', - 'pseud', - 'pshaw', - 'psion', - 'psoae', - 'psoai', - 'psoas', - 'psora', - 'psych', - 'psyop', - 'pubco', - 'pubes', - 'pubis', - 'pucan', - 'pucer', - 'puces', - 'pucka', - 'pucks', - 'puddy', - 'pudge', - 'pudic', - 'pudor', - 'pudsy', - 'pudus', - 'puers', - 'puffa', - 'puffs', - 'puggy', - 'pugil', - 'puhas', - 'pujah', - 'pujas', - 'pukas', - 'puked', - 'puker', - 'pukes', - 'pukey', - 'pukka', - 'pukus', - 'pulao', - 'pulas', - 'puled', - 'puler', - 'pules', - 'pulik', - 'pulis', - 'pulka', - 'pulks', - 'pulli', - 'pulls', - 'pully', - 'pulmo', - 'pulps', - 'pulus', - 'pumas', - 'pumie', - 'pumps', - 'punas', - 'punce', - 'punga', - 'pungs', - 'punji', - 'punka', - 'punks', - 'punky', - 'punny', - 'punto', - 'punts', - 'punty', - 'pupae', - 'pupas', - 'pupus', - 'purda', - 'pured', - 'pures', - 'purin', - 'puris', - 'purls', - 'purpy', - 'purrs', - 'pursy', - 'purty', - 'puses', - 'pusle', - 'pussy', - 'putid', - 'puton', - 'putti', - 'putto', - 'putts', - 'puzel', - 'pwned', - 'pyats', - 'pyets', - 'pygal', - 'pyins', - 'pylon', - 'pyned', - 'pynes', - 'pyoid', - 'pyots', - 'pyral', - 'pyran', - 'pyres', - 'pyrex', - 'pyric', - 'pyros', - 'pyxed', - 'pyxes', - 'pyxie', - 'pyxis', - 'pzazz', - 'qadis', - 'qaids', - 'qajaq', - 'qanat', - 'qapik', - 'qibla', - 'qophs', - 'qorma', - 'quads', - 'quaff', - 'quags', - 'quair', - 'quais', - 'quaky', - 'quale', - 'quant', - 'quare', - 'quass', - 'quate', - 'quats', - 'quayd', - 'quays', - 'qubit', - 'quean', - 'queme', - 'quena', - 'quern', - 'queyn', - 'queys', - 'quich', - 'quids', - 'quiff', - 'quims', - 'quina', - 'quine', - 'quino', - 'quins', - 'quint', - 'quipo', - 'quips', - 'quipu', - 'quire', - 'quirt', - 'quist', - 'quits', - 'quoad', - 'quods', - 'quoif', - 'quoin', - 'quoit', - 'quoll', - 'quonk', - 'quops', - 'qursh', - 'quyte', - 'rabat', - 'rabic', - 'rabis', - 'raced', - 'races', - 'rache', - 'racks', - 'racon', - 'radge', - 'radix', - 'radon', - 'raffs', - 'rafts', - 'ragas', - 'ragde', - 'raged', - 'ragee', - 'rager', - 'rages', - 'ragga', - 'raggs', - 'raggy', - 'ragis', - 'ragus', - 'rahed', - 'rahui', - 'raias', - 'raids', - 'raiks', - 'raile', - 'rails', - 'raine', - 'rains', - 'raird', - 'raita', - 'raits', - 'rajas', - 'rajes', - 'raked', - 'rakee', - 'raker', - 'rakes', - 'rakia', - 'rakis', - 'rakus', - 'rales', - 'ramal', - 'ramee', - 'ramet', - 'ramie', - 'ramin', - 'ramis', - 'rammy', - 'ramps', - 'ramus', - 'ranas', - 'rance', - 'rands', - 'ranee', - 'ranga', - 'rangi', - 'rangs', - 'rangy', - 'ranid', - 'ranis', - 'ranke', - 'ranks', - 'rants', - 'raped', - 'raper', - 'rapes', - 'raphe', - 'rappe', - 'rared', - 'raree', - 'rares', - 'rarks', - 'rased', - 'raser', - 'rases', - 'rasps', - 'rasse', - 'rasta', - 'ratal', - 'ratan', - 'ratas', - 'ratch', - 'rated', - 'ratel', - 'rater', - 'rates', - 'ratha', - 'rathe', - 'raths', - 'ratoo', - 'ratos', - 'ratus', - 'rauns', - 'raupo', - 'raved', - 'ravel', - 'raver', - 'raves', - 'ravey', - 'ravin', - 'rawer', - 'rawin', - 'rawly', - 'rawns', - 'raxed', - 'raxes', - 'rayah', - 'rayas', - 'rayed', - 'rayle', - 'rayne', - 'razed', - 'razee', - 'razer', - 'razes', - 'razoo', - 'readd', - 'reads', - 'reais', - 'reaks', - 'realo', - 'reals', - 'reame', - 'reams', - 'reamy', - 'reans', - 'reaps', - 'rears', - 'reast', - 'reata', - 'reate', - 'reave', - 'rebbe', - 'rebec', - 'rebid', - 'rebit', - 'rebop', - 'rebuy', - 'recal', - 'recce', - 'recco', - 'reccy', - 'recit', - 'recks', - 'recon', - 'recta', - 'recti', - 'recto', - 'redan', - 'redds', - 'reddy', - 'reded', - 'redes', - 'redia', - 'redid', - 'redip', - 'redly', - 'redon', - 'redos', - 'redox', - 'redry', - 'redub', - 'redux', - 'redye', - 'reech', - 'reede', - 'reeds', - 'reefs', - 'reefy', - 'reeks', - 'reeky', - 'reels', - 'reens', - 'reest', - 'reeve', - 'refed', - 'refel', - 'reffo', - 'refis', - 'refix', - 'refly', - 'refry', - 'regar', - 'reges', - 'reggo', - 'regie', - 'regma', - 'regna', - 'regos', - 'regur', - 'rehem', - 'reifs', - 'reify', - 'reiki', - 'reiks', - 'reink', - 'reins', - 'reird', - 'reist', - 'reive', - 'rejig', - 'rejon', - 'reked', - 'rekes', - 'rekey', - 'relet', - 'relie', - 'relit', - 'rello', - 'reman', - 'remap', - 'remen', - 'remet', - 'remex', - 'remix', - 'renay', - 'rends', - 'reney', - 'renga', - 'renig', - 'renin', - 'renne', - 'renos', - 'rente', - 'rents', - 'reoil', - 'reorg', - 'repeg', - 'repin', - 'repla', - 'repos', - 'repot', - 'repps', - 'repro', - 'reran', - 'rerig', - 'resat', - 'resaw', - 'resay', - 'resee', - 'reses', - 'resew', - 'resid', - 'resit', - 'resod', - 'resow', - 'resto', - 'rests', - 'resty', - 'resus', - 'retag', - 'retax', - 'retem', - 'retia', - 'retie', - 'retox', - 'revet', - 'revie', - 'rewan', - 'rewax', - 'rewed', - 'rewet', - 'rewin', - 'rewon', - 'rewth', - 'rexes', - 'rezes', - 'rheas', - 'rheme', - 'rheum', - 'rhies', - 'rhime', - 'rhine', - 'rhody', - 'rhomb', - 'rhone', - 'rhumb', - 'rhyne', - 'rhyta', - 'riads', - 'rials', - 'riant', - 'riata', - 'ribas', - 'ribby', - 'ribes', - 'riced', - 'ricer', - 'rices', - 'ricey', - 'richt', - 'ricin', - 'ricks', - 'rides', - 'ridgy', - 'ridic', - 'riels', - 'riems', - 'rieve', - 'rifer', - 'riffs', - 'rifte', - 'rifts', - 'rifty', - 'riggs', - 'rigol', - 'riled', - 'riles', - 'riley', - 'rille', - 'rills', - 'rimae', - 'rimed', - 'rimer', - 'rimes', - 'rimus', - 'rinds', - 'rindy', - 'rines', - 'rings', - 'rinks', - 'rioja', - 'riots', - 'riped', - 'ripes', - 'ripps', - 'rises', - 'rishi', - 'risks', - 'risps', - 'risus', - 'rites', - 'ritts', - 'ritzy', - 'rivas', - 'rived', - 'rivel', - 'riven', - 'rives', - 'riyal', - 'rizas', - 'roads', - 'roams', - 'roans', - 'roars', - 'roary', - 'roate', - 'robed', - 'robes', - 'roble', - 'rocks', - 'roded', - 'rodes', - 'roguy', - 'rohes', - 'roids', - 'roils', - 'roily', - 'roins', - 'roist', - 'rojak', - 'rojis', - 'roked', - 'roker', - 'rokes', - 'rolag', - 'roles', - 'rolfs', - 'rolls', - 'romal', - 'roman', - 'romeo', - 'romps', - 'ronde', - 'rondo', - 'roneo', - 'rones', - 'ronin', - 'ronne', - 'ronte', - 'ronts', - 'roods', - 'roofs', - 'roofy', - 'rooks', - 'rooky', - 'rooms', - 'roons', - 'roops', - 'roopy', - 'roosa', - 'roose', - 'roots', - 'rooty', - 'roped', - 'roper', - 'ropes', - 'ropey', - 'roque', - 'roral', - 'rores', - 'roric', - 'rorid', - 'rorie', - 'rorts', - 'rorty', - 'rosed', - 'roses', - 'roset', - 'roshi', - 'rosin', - 'rosit', - 'rosti', - 'rosts', - 'rotal', - 'rotan', - 'rotas', - 'rotch', - 'roted', - 'rotes', - 'rotis', - 'rotls', - 'roton', - 'rotos', - 'rotte', - 'rouen', - 'roues', - 'roule', - 'rouls', - 'roums', - 'roups', - 'roupy', - 'roust', - 'routh', - 'routs', - 'roved', - 'roven', - 'roves', - 'rowan', - 'rowed', - 'rowel', - 'rowen', - 'rowie', - 'rowme', - 'rownd', - 'rowth', - 'rowts', - 'royne', - 'royst', - 'rozet', - 'rozit', - 'ruana', - 'rubai', - 'rubby', - 'rubel', - 'rubes', - 'rubin', - 'ruble', - 'rubli', - 'rubus', - 'ruche', - 'rucks', - 'rudas', - 'rudds', - 'rudes', - 'rudie', - 'rudis', - 'rueda', - 'ruers', - 'ruffe', - 'ruffs', - 'rugae', - 'rugal', - 'ruggy', - 'ruing', - 'ruins', - 'rukhs', - 'ruled', - 'rules', - 'rumal', - 'rumbo', - 'rumen', - 'rumes', - 'rumly', - 'rummy', - 'rumpo', - 'rumps', - 'rumpy', - 'runch', - 'runds', - 'runed', - 'runes', - 'rungs', - 'runic', - 'runny', - 'runts', - 'runty', - 'rupia', - 'rurps', - 'rurus', - 'rusas', - 'ruses', - 'rushy', - 'rusks', - 'rusma', - 'russe', - 'rusts', - 'ruths', - 'rutin', - 'rutty', - 'ryals', - 'rybat', - 'ryked', - 'rykes', - 'rymme', - 'rynds', - 'ryots', - 'ryper', - 'saags', - 'sabal', - 'sabed', - 'saber', - 'sabes', - 'sabha', - 'sabin', - 'sabir', - 'sable', - 'sabot', - 'sabra', - 'sabre', - 'sacks', - 'sacra', - 'saddo', - 'sades', - 'sadhe', - 'sadhu', - 'sadis', - 'sados', - 'sadza', - 'safed', - 'safes', - 'sagas', - 'sager', - 'sages', - 'saggy', - 'sagos', - 'sagum', - 'saheb', - 'sahib', - 'saice', - 'saick', - 'saics', - 'saids', - 'saiga', - 'sails', - 'saims', - 'saine', - 'sains', - 'sairs', - 'saist', - 'saith', - 'sajou', - 'sakai', - 'saker', - 'sakes', - 'sakia', - 'sakis', - 'sakti', - 'salal', - 'salat', - 'salep', - 'sales', - 'salet', - 'salic', - 'salix', - 'salle', - 'salmi', - 'salol', - 'salop', - 'salpa', - 'salps', - 'salse', - 'salto', - 'salts', - 'salue', - 'salut', - 'saman', - 'samas', - 'samba', - 'sambo', - 'samek', - 'samel', - 'samen', - 'sames', - 'samey', - 'samfu', - 'sammy', - 'sampi', - 'samps', - 'sands', - 'saned', - 'sanes', - 'sanga', - 'sangh', - 'sango', - 'sangs', - 'sanko', - 'sansa', - 'santo', - 'sants', - 'saola', - 'sapan', - 'sapid', - 'sapor', - 'saran', - 'sards', - 'sared', - 'saree', - 'sarge', - 'sargo', - 'sarin', - 'saris', - 'sarks', - 'sarky', - 'sarod', - 'saros', - 'sarus', - 'saser', - 'sasin', - 'sasse', - 'satai', - 'satay', - 'sated', - 'satem', - 'sates', - 'satis', - 'sauba', - 'sauch', - 'saugh', - 'sauls', - 'sault', - 'saunt', - 'saury', - 'sauts', - 'saved', - 'saver', - 'saves', - 'savey', - 'savin', - 'sawah', - 'sawed', - 'sawer', - 'saxes', - 'sayed', - 'sayer', - 'sayid', - 'sayne', - 'sayon', - 'sayst', - 'sazes', - 'scabs', - 'scads', - 'scaff', - 'scags', - 'scail', - 'scala', - 'scall', - 'scams', - 'scand', - 'scans', - 'scapa', - 'scape', - 'scapi', - 'scarp', - 'scars', - 'scart', - 'scath', - 'scats', - 'scatt', - 'scaud', - 'scaup', - 'scaur', - 'scaws', - 'sceat', - 'scena', - 'scend', - 'schav', - 'schmo', - 'schul', - 'schwa', - 'sclim', - 'scody', - 'scogs', - 'scoog', - 'scoot', - 'scopa', - 'scops', - 'scots', - 'scoug', - 'scoup', - 'scowp', - 'scows', - 'scrab', - 'scrae', - 'scrag', - 'scran', - 'scrat', - 'scraw', - 'scray', - 'scrim', - 'scrip', - 'scrob', - 'scrod', - 'scrog', - 'scrow', - 'scudi', - 'scudo', - 'scuds', - 'scuff', - 'scuft', - 'scugs', - 'sculk', - 'scull', - 'sculp', - 'sculs', - 'scums', - 'scups', - 'scurf', - 'scurs', - 'scuse', - 'scuta', - 'scute', - 'scuts', - 'scuzz', - 'scyes', - 'sdayn', - 'sdein', - 'seals', - 'seame', - 'seams', - 'seamy', - 'seans', - 'seare', - 'sears', - 'sease', - 'seats', - 'seaze', - 'sebum', - 'secco', - 'sechs', - 'sects', - 'seder', - 'sedes', - 'sedge', - 'sedgy', - 'sedum', - 'seeds', - 'seeks', - 'seeld', - 'seels', - 'seely', - 'seems', - 'seeps', - 'seepy', - 'seers', - 'sefer', - 'segar', - 'segni', - 'segno', - 'segol', - 'segos', - 'sehri', - 'seifs', - 'seils', - 'seine', - 'seirs', - 'seise', - 'seism', - 'seity', - 'seiza', - 'sekos', - 'sekts', - 'selah', - 'seles', - 'selfs', - 'sella', - 'selle', - 'sells', - 'selva', - 'semee', - 'semes', - 'semie', - 'semis', - 'senas', - 'sends', - 'senes', - 'sengi', - 'senna', - 'senor', - 'sensa', - 'sensi', - 'sente', - 'senti', - 'sents', - 'senvy', - 'senza', - 'sepad', - 'sepal', - 'sepic', - 'sepoy', - 'septa', - 'septs', - 'serac', - 'serai', - 'seral', - 'sered', - 'serer', - 'seres', - 'serfs', - 'serge', - 'seric', - 'serin', - 'serks', - 'seron', - 'serow', - 'serra', - 'serre', - 'serrs', - 'serry', - 'servo', - 'sesey', - 'sessa', - 'setae', - 'setal', - 'seton', - 'setts', - 'sewan', - 'sewar', - 'sewed', - 'sewel', - 'sewen', - 'sewin', - 'sexed', - 'sexer', - 'sexes', - 'sexto', - 'sexts', - 'seyen', - 'shads', - 'shags', - 'shahs', - 'shako', - 'shakt', - 'shalm', - 'shaly', - 'shama', - 'shams', - 'shand', - 'shans', - 'shaps', - 'sharn', - 'shash', - 'shaul', - 'shawm', - 'shawn', - 'shaws', - 'shaya', - 'shays', - 'shchi', - 'sheaf', - 'sheal', - 'sheas', - 'sheds', - 'sheel', - 'shend', - 'shent', - 'sheol', - 'sherd', - 'shere', - 'shero', - 'shets', - 'sheva', - 'shewn', - 'shews', - 'shiai', - 'shiel', - 'shier', - 'shies', - 'shill', - 'shily', - 'shims', - 'shins', - 'ships', - 'shirr', - 'shirs', - 'shish', - 'shiso', - 'shist', - 'shite', - 'shits', - 'shiur', - 'shiva', - 'shive', - 'shivs', - 'shlep', - 'shlub', - 'shmek', - 'shmoe', - 'shoat', - 'shoed', - 'shoer', - 'shoes', - 'shogi', - 'shogs', - 'shoji', - 'shojo', - 'shola', - 'shool', - 'shoon', - 'shoos', - 'shope', - 'shops', - 'shorl', - 'shote', - 'shots', - 'shott', - 'showd', - 'shows', - 'shoyu', - 'shred', - 'shris', - 'shrow', - 'shtik', - 'shtum', - 'shtup', - 'shule', - 'shuln', - 'shuls', - 'shuns', - 'shura', - 'shute', - 'shuts', - 'shwas', - 'shyer', - 'sials', - 'sibbs', - 'sibyl', - 'sices', - 'sicht', - 'sicko', - 'sicks', - 'sicky', - 'sidas', - 'sided', - 'sider', - 'sides', - 'sidha', - 'sidhe', - 'sidle', - 'sield', - 'siens', - 'sient', - 'sieth', - 'sieur', - 'sifts', - 'sighs', - 'sigil', - 'sigla', - 'signa', - 'signs', - 'sijos', - 'sikas', - 'siker', - 'sikes', - 'silds', - 'siled', - 'silen', - 'siler', - 'siles', - 'silex', - 'silks', - 'sills', - 'silos', - 'silts', - 'silty', - 'silva', - 'simar', - 'simas', - 'simba', - 'simis', - 'simps', - 'simul', - 'sinds', - 'sined', - 'sines', - 'sings', - 'sinhs', - 'sinks', - 'sinky', - 'sinus', - 'siped', - 'sipes', - 'sippy', - 'sired', - 'siree', - 'sires', - 'sirih', - 'siris', - 'siroc', - 'sirra', - 'sirup', - 'sisal', - 'sises', - 'sista', - 'sists', - 'sitar', - 'sited', - 'sites', - 'sithe', - 'sitka', - 'situp', - 'situs', - 'siver', - 'sixer', - 'sixes', - 'sixmo', - 'sixte', - 'sizar', - 'sized', - 'sizel', - 'sizer', - 'sizes', - 'skags', - 'skail', - 'skald', - 'skank', - 'skart', - 'skats', - 'skatt', - 'skaws', - 'skean', - 'skear', - 'skeds', - 'skeed', - 'skeef', - 'skeen', - 'skeer', - 'skees', - 'skeet', - 'skegg', - 'skegs', - 'skein', - 'skelf', - 'skell', - 'skelm', - 'skelp', - 'skene', - 'skens', - 'skeos', - 'skeps', - 'skers', - 'skets', - 'skews', - 'skids', - 'skied', - 'skies', - 'skiey', - 'skimo', - 'skims', - 'skink', - 'skins', - 'skint', - 'skios', - 'skips', - 'skirl', - 'skirr', - 'skite', - 'skits', - 'skive', - 'skivy', - 'sklim', - 'skoal', - 'skody', - 'skoff', - 'skogs', - 'skols', - 'skool', - 'skort', - 'skosh', - 'skran', - 'skrik', - 'skuas', - 'skugs', - 'skyed', - 'skyer', - 'skyey', - 'skyfs', - 'skyre', - 'skyrs', - 'skyte', - 'slabs', - 'slade', - 'slaes', - 'slags', - 'slaid', - 'slake', - 'slams', - 'slane', - 'slank', - 'slaps', - 'slart', - 'slats', - 'slaty', - 'slaws', - 'slays', - 'slebs', - 'sleds', - 'sleer', - 'slews', - 'sleys', - 'slier', - 'slily', - 'slims', - 'slipe', - 'slips', - 'slipt', - 'slish', - 'slits', - 'slive', - 'sloan', - 'slobs', - 'sloes', - 'slogs', - 'sloid', - 'slojd', - 'slomo', - 'sloom', - 'sloot', - 'slops', - 'slopy', - 'slorm', - 'slots', - 'slove', - 'slows', - 'sloyd', - 'slubb', - 'slubs', - 'slued', - 'slues', - 'sluff', - 'slugs', - 'sluit', - 'slums', - 'slurb', - 'slurs', - 'sluse', - 'sluts', - 'slyer', - 'slype', - 'smaak', - 'smaik', - 'smalm', - 'smalt', - 'smarm', - 'smaze', - 'smeek', - 'smees', - 'smeik', - 'smeke', - 'smerk', - 'smews', - 'smirr', - 'smirs', - 'smits', - 'smogs', - 'smoko', - 'smolt', - 'smoor', - 'smoot', - 'smore', - 'smorg', - 'smout', - 'smowt', - 'smugs', - 'smurs', - 'smush', - 'smuts', - 'snabs', - 'snafu', - 'snags', - 'snaps', - 'snarf', - 'snark', - 'snars', - 'snary', - 'snash', - 'snath', - 'snaws', - 'snead', - 'sneap', - 'snebs', - 'sneck', - 'sneds', - 'sneed', - 'snees', - 'snell', - 'snibs', - 'snick', - 'snies', - 'snift', - 'snigs', - 'snips', - 'snipy', - 'snirt', - 'snits', - 'snobs', - 'snods', - 'snoek', - 'snoep', - 'snogs', - 'snoke', - 'snood', - 'snook', - 'snool', - 'snoot', - 'snots', - 'snowk', - 'snows', - 'snubs', - 'snugs', - 'snush', - 'snyes', - 'soaks', - 'soaps', - 'soare', - 'soars', - 'soave', - 'sobas', - 'socas', - 'soces', - 'socko', - 'socks', - 'socle', - 'sodas', - 'soddy', - 'sodic', - 'sodom', - 'sofar', - 'sofas', - 'softa', - 'softs', - 'softy', - 'soger', - 'sohur', - 'soils', - 'soily', - 'sojas', - 'sojus', - 'sokah', - 'soken', - 'sokes', - 'sokol', - 'solah', - 'solan', - 'solas', - 'solde', - 'soldi', - 'soldo', - 'solds', - 'soled', - 'solei', - 'soler', - 'soles', - 'solon', - 'solos', - 'solum', - 'solus', - 'soman', - 'somas', - 'sonce', - 'sonde', - 'sones', - 'songs', - 'sonly', - 'sonne', - 'sonny', - 'sonse', - 'sonsy', - 'sooey', - 'sooks', - 'sooky', - 'soole', - 'sools', - 'sooms', - 'soops', - 'soote', - 'soots', - 'sophs', - 'sophy', - 'sopor', - 'soppy', - 'sopra', - 'soral', - 'soras', - 'sorbo', - 'sorbs', - 'sorda', - 'sordo', - 'sords', - 'sored', - 'soree', - 'sorel', - 'sorer', - 'sores', - 'sorex', - 'sorgo', - 'sorns', - 'sorra', - 'sorta', - 'sorts', - 'sorus', - 'soths', - 'sotol', - 'souce', - 'souct', - 'sough', - 'souks', - 'souls', - 'soums', - 'soups', - 'soupy', - 'sours', - 'souse', - 'souts', - 'sowar', - 'sowce', - 'sowed', - 'sowff', - 'sowfs', - 'sowle', - 'sowls', - 'sowms', - 'sownd', - 'sowne', - 'sowps', - 'sowse', - 'sowth', - 'soyas', - 'soyle', - 'soyuz', - 'sozin', - 'spacy', - 'spado', - 'spaed', - 'spaer', - 'spaes', - 'spags', - 'spahi', - 'spail', - 'spain', - 'spait', - 'spake', - 'spald', - 'spale', - 'spall', - 'spalt', - 'spams', - 'spane', - 'spang', - 'spans', - 'spard', - 'spars', - 'spart', - 'spate', - 'spats', - 'spaul', - 'spawl', - 'spaws', - 'spayd', - 'spays', - 'spaza', - 'spazz', - 'speal', - 'spean', - 'speat', - 'specs', - 'spect', - 'speel', - 'speer', - 'speil', - 'speir', - 'speks', - 'speld', - 'spelk', - 'speos', - 'spets', - 'speug', - 'spews', - 'spewy', - 'spial', - 'spica', - 'spick', - 'spics', - 'spide', - 'spier', - 'spies', - 'spiff', - 'spifs', - 'spiks', - 'spile', - 'spims', - 'spina', - 'spink', - 'spins', - 'spirt', - 'spiry', - 'spits', - 'spitz', - 'spivs', - 'splay', - 'splog', - 'spode', - 'spods', - 'spoom', - 'spoor', - 'spoot', - 'spork', - 'sposh', - 'spots', - 'sprad', - 'sprag', - 'sprat', - 'spred', - 'sprew', - 'sprit', - 'sprod', - 'sprog', - 'sprue', - 'sprug', - 'spuds', - 'spued', - 'spuer', - 'spues', - 'spugs', - 'spule', - 'spume', - 'spumy', - 'spurs', - 'sputa', - 'spyal', - 'spyre', - 'squab', - 'squaw', - 'squeg', - 'squid', - 'squit', - 'squiz', - 'stabs', - 'stade', - 'stags', - 'stagy', - 'staig', - 'stane', - 'stang', - 'staph', - 'staps', - 'starn', - 'starr', - 'stars', - 'stats', - 'staun', - 'staws', - 'stays', - 'stean', - 'stear', - 'stedd', - 'stede', - 'steds', - 'steek', - 'steem', - 'steen', - 'steil', - 'stela', - 'stele', - 'stell', - 'steme', - 'stems', - 'stend', - 'steno', - 'stens', - 'stent', - 'steps', - 'stept', - 'stere', - 'stets', - 'stews', - 'stewy', - 'steys', - 'stich', - 'stied', - 'sties', - 'stilb', - 'stile', - 'stime', - 'stims', - 'stimy', - 'stipa', - 'stipe', - 'stire', - 'stirk', - 'stirp', - 'stirs', - 'stive', - 'stivy', - 'stoae', - 'stoai', - 'stoas', - 'stoat', - 'stobs', - 'stoep', - 'stogy', - 'stoit', - 'stoln', - 'stoma', - 'stond', - 'stong', - 'stonk', - 'stonn', - 'stook', - 'stoor', - 'stope', - 'stops', - 'stopt', - 'stoss', - 'stots', - 'stott', - 'stoun', - 'stoup', - 'stour', - 'stown', - 'stowp', - 'stows', - 'strad', - 'strae', - 'strag', - 'strak', - 'strep', - 'strew', - 'stria', - 'strig', - 'strim', - 'strop', - 'strow', - 'stroy', - 'strum', - 'stubs', - 'stude', - 'studs', - 'stull', - 'stulm', - 'stumm', - 'stums', - 'stuns', - 'stupa', - 'stupe', - 'sture', - 'sturt', - 'styed', - 'styes', - 'styli', - 'stylo', - 'styme', - 'stymy', - 'styre', - 'styte', - 'subah', - 'subas', - 'subby', - 'suber', - 'subha', - 'succi', - 'sucks', - 'sucky', - 'sucre', - 'sudds', - 'sudor', - 'sudsy', - 'suede', - 'suent', - 'suers', - 'suete', - 'suets', - 'suety', - 'sugan', - 'sughs', - 'sugos', - 'suhur', - 'suids', - 'suint', - 'suits', - 'sujee', - 'sukhs', - 'sukuk', - 'sulci', - 'sulfa', - 'sulfo', - 'sulks', - 'sulph', - 'sulus', - 'sumis', - 'summa', - 'sumos', - 'sumph', - 'sumps', - 'sunis', - 'sunks', - 'sunna', - 'sunns', - 'sunup', - 'supes', - 'supra', - 'surah', - 'sural', - 'suras', - 'surat', - 'surds', - 'sured', - 'sures', - 'surfs', - 'surfy', - 'surgy', - 'surra', - 'sused', - 'suses', - 'susus', - 'sutor', - 'sutra', - 'sutta', - 'swabs', - 'swack', - 'swads', - 'swage', - 'swags', - 'swail', - 'swain', - 'swale', - 'swaly', - 'swamy', - 'swang', - 'swank', - 'swans', - 'swaps', - 'swapt', - 'sward', - 'sware', - 'swarf', - 'swart', - 'swats', - 'swayl', - 'sways', - 'sweal', - 'swede', - 'sweed', - 'sweel', - 'sweer', - 'swees', - 'sweir', - 'swelt', - 'swerf', - 'sweys', - 'swies', - 'swigs', - 'swile', - 'swims', - 'swink', - 'swipe', - 'swire', - 'swiss', - 'swith', - 'swits', - 'swive', - 'swizz', - 'swobs', - 'swole', - 'swoln', - 'swops', - 'swopt', - 'swots', - 'swoun', - 'sybbe', - 'sybil', - 'syboe', - 'sybow', - 'sycee', - 'syces', - 'sycon', - 'syens', - 'syker', - 'sykes', - 'sylis', - 'sylph', - 'sylva', - 'symar', - 'synch', - 'syncs', - 'synds', - 'syned', - 'synes', - 'synth', - 'syped', - 'sypes', - 'syphs', - 'syrah', - 'syren', - 'sysop', - 'sythe', - 'syver', - 'taals', - 'taata', - 'taber', - 'tabes', - 'tabid', - 'tabis', - 'tabla', - 'tabor', - 'tabun', - 'tabus', - 'tacan', - 'taces', - 'tacet', - 'tache', - 'tacho', - 'tachs', - 'tacks', - 'tacos', - 'tacts', - 'taels', - 'tafia', - 'taggy', - 'tagma', - 'tahas', - 'tahrs', - 'taiga', - 'taigs', - 'taiko', - 'tails', - 'tains', - 'taira', - 'taish', - 'taits', - 'tajes', - 'takas', - 'takes', - 'takhi', - 'takin', - 'takis', - 'takky', - 'talak', - 'talaq', - 'talar', - 'talas', - 'talcs', - 'talcy', - 'talea', - 'taler', - 'tales', - 'talks', - 'talky', - 'talls', - 'talma', - 'talpa', - 'taluk', - 'talus', - 'tamal', - 'tamed', - 'tames', - 'tamin', - 'tamis', - 'tammy', - 'tamps', - 'tanas', - 'tanga', - 'tangi', - 'tangs', - 'tanhs', - 'tanka', - 'tanks', - 'tanky', - 'tanna', - 'tansy', - 'tanti', - 'tanto', - 'tanty', - 'tapas', - 'taped', - 'tapen', - 'tapes', - 'tapet', - 'tapis', - 'tappa', - 'tapus', - 'taras', - 'tardo', - 'tared', - 'tares', - 'targa', - 'targe', - 'tarns', - 'taroc', - 'tarok', - 'taros', - 'tarps', - 'tarre', - 'tarry', - 'tarsi', - 'tarts', - 'tarty', - 'tasar', - 'tased', - 'taser', - 'tases', - 'tasks', - 'tassa', - 'tasse', - 'tasso', - 'tatar', - 'tater', - 'tates', - 'taths', - 'tatie', - 'tatou', - 'tatts', - 'tatus', - 'taube', - 'tauld', - 'tauon', - 'taupe', - 'tauts', - 'tavah', - 'tavas', - 'taver', - 'tawai', - 'tawas', - 'tawed', - 'tawer', - 'tawie', - 'tawse', - 'tawts', - 'taxed', - 'taxer', - 'taxes', - 'taxis', - 'taxol', - 'taxon', - 'taxor', - 'taxus', - 'tayra', - 'tazza', - 'tazze', - 'teade', - 'teads', - 'teaed', - 'teaks', - 'teals', - 'teams', - 'tears', - 'teats', - 'teaze', - 'techs', - 'techy', - 'tecta', - 'teels', - 'teems', - 'teend', - 'teene', - 'teens', - 'teeny', - 'teers', - 'teffs', - 'teggs', - 'tegua', - 'tegus', - 'tehrs', - 'teiid', - 'teils', - 'teind', - 'teins', - 'telae', - 'telco', - 'teles', - 'telex', - 'telia', - 'telic', - 'tells', - 'telly', - 'teloi', - 'telos', - 'temed', - 'temes', - 'tempi', - 'temps', - 'tempt', - 'temse', - 'tench', - 'tends', - 'tendu', - 'tenes', - 'tenge', - 'tenia', - 'tenne', - 'tenno', - 'tenny', - 'tenon', - 'tents', - 'tenty', - 'tenue', - 'tepal', - 'tepas', - 'tepoy', - 'terai', - 'teras', - 'terce', - 'terek', - 'teres', - 'terfe', - 'terfs', - 'terga', - 'terms', - 'terne', - 'terns', - 'terry', - 'terts', - 'tesla', - 'testa', - 'teste', - 'tests', - 'tetes', - 'teths', - 'tetra', - 'tetri', - 'teuch', - 'teugh', - 'tewed', - 'tewel', - 'tewit', - 'texas', - 'texes', - 'texts', - 'thack', - 'thagi', - 'thaim', - 'thale', - 'thali', - 'thana', - 'thane', - 'thang', - 'thans', - 'thanx', - 'tharm', - 'thars', - 'thaws', - 'thawy', - 'thebe', - 'theca', - 'theed', - 'theek', - 'thees', - 'thegn', - 'theic', - 'thein', - 'thelf', - 'thema', - 'thens', - 'theow', - 'therm', - 'thesp', - 'thete', - 'thews', - 'thewy', - 'thigs', - 'thilk', - 'thill', - 'thine', - 'thins', - 'thiol', - 'thirl', - 'thoft', - 'thole', - 'tholi', - 'thoro', - 'thorp', - 'thous', - 'thowl', - 'thrae', - 'thraw', - 'thrid', - 'thrip', - 'throe', - 'thuds', - 'thugs', - 'thuja', - 'thunk', - 'thurl', - 'thuya', - 'thymi', - 'thymy', - 'tians', - 'tiars', - 'tical', - 'ticca', - 'ticed', - 'tices', - 'tichy', - 'ticks', - 'ticky', - 'tiddy', - 'tided', - 'tides', - 'tiers', - 'tiffs', - 'tifos', - 'tifts', - 'tiges', - 'tigon', - 'tikas', - 'tikes', - 'tikis', - 'tikka', - 'tilak', - 'tiled', - 'tiler', - 'tiles', - 'tills', - 'tilly', - 'tilth', - 'tilts', - 'timbo', - 'timed', - 'times', - 'timon', - 'timps', - 'tinas', - 'tinct', - 'tinds', - 'tinea', - 'tined', - 'tines', - 'tinge', - 'tings', - 'tinks', - 'tinny', - 'tints', - 'tinty', - 'tipis', - 'tippy', - 'tired', - 'tires', - 'tirls', - 'tiros', - 'tirrs', - 'titch', - 'titer', - 'titis', - 'titre', - 'titty', - 'titup', - 'tiyin', - 'tiyns', - 'tizes', - 'tizzy', - 'toads', - 'toady', - 'toaze', - 'tocks', - 'tocky', - 'tocos', - 'todde', - 'toeas', - 'toffs', - 'toffy', - 'tofts', - 'tofus', - 'togae', - 'togas', - 'toged', - 'toges', - 'togue', - 'tohos', - 'toile', - 'toils', - 'toing', - 'toise', - 'toits', - 'tokay', - 'toked', - 'toker', - 'tokes', - 'tokos', - 'tolan', - 'tolar', - 'tolas', - 'toled', - 'toles', - 'tolls', - 'tolly', - 'tolts', - 'tolus', - 'tolyl', - 'toman', - 'tombs', - 'tomes', - 'tomia', - 'tommy', - 'tomos', - 'tondi', - 'tondo', - 'toned', - 'toner', - 'tones', - 'toney', - 'tongs', - 'tonka', - 'tonks', - 'tonne', - 'tonus', - 'tools', - 'tooms', - 'toons', - 'toots', - 'toped', - 'topee', - 'topek', - 'toper', - 'topes', - 'tophe', - 'tophi', - 'tophs', - 'topis', - 'topoi', - 'topos', - 'toppy', - 'toque', - 'torah', - 'toran', - 'toras', - 'torcs', - 'tores', - 'toric', - 'torii', - 'toros', - 'torot', - 'torrs', - 'torse', - 'torsi', - 'torsk', - 'torta', - 'torte', - 'torts', - 'tosas', - 'tosed', - 'toses', - 'toshy', - 'tossy', - 'toted', - 'toter', - 'totes', - 'totty', - 'touks', - 'touns', - 'tours', - 'touse', - 'tousy', - 'touts', - 'touze', - 'touzy', - 'towed', - 'towie', - 'towns', - 'towny', - 'towse', - 'towsy', - 'towts', - 'towze', - 'towzy', - 'toyed', - 'toyer', - 'toyon', - 'toyos', - 'tozed', - 'tozes', - 'tozie', - 'trabs', - 'trads', - 'tragi', - 'traik', - 'trams', - 'trank', - 'tranq', - 'trans', - 'trant', - 'trape', - 'traps', - 'trapt', - 'trass', - 'trats', - 'tratt', - 'trave', - 'trayf', - 'trays', - 'treck', - 'treed', - 'treen', - 'trees', - 'trefa', - 'treif', - 'treks', - 'trema', - 'trems', - 'tress', - 'trest', - 'trets', - 'trews', - 'treyf', - 'treys', - 'triac', - 'tride', - 'trier', - 'tries', - 'triff', - 'trigo', - 'trigs', - 'trike', - 'trild', - 'trill', - 'trims', - 'trine', - 'trins', - 'triol', - 'trior', - 'trios', - 'trips', - 'tripy', - 'trist', - 'troad', - 'troak', - 'troat', - 'trock', - 'trode', - 'trods', - 'trogs', - 'trois', - 'troke', - 'tromp', - 'trona', - 'tronc', - 'trone', - 'tronk', - 'trons', - 'trooz', - 'troth', - 'trots', - 'trows', - 'troys', - 'trued', - 'trues', - 'trugo', - 'trugs', - 'trull', - 'tryer', - 'tryke', - 'tryma', - 'tryps', - 'tsade', - 'tsadi', - 'tsars', - 'tsked', - 'tsuba', - 'tsubo', - 'tuans', - 'tuart', - 'tuath', - 'tubae', - 'tubar', - 'tubas', - 'tubby', - 'tubed', - 'tubes', - 'tucks', - 'tufas', - 'tuffe', - 'tuffs', - 'tufts', - 'tufty', - 'tugra', - 'tuile', - 'tuina', - 'tuism', - 'tuktu', - 'tules', - 'tulpa', - 'tulsi', - 'tumid', - 'tummy', - 'tumps', - 'tumpy', - 'tunas', - 'tunds', - 'tuned', - 'tuner', - 'tunes', - 'tungs', - 'tunny', - 'tupek', - 'tupik', - 'tuple', - 'tuque', - 'turds', - 'turfs', - 'turfy', - 'turks', - 'turme', - 'turms', - 'turns', - 'turnt', - 'turps', - 'turrs', - 'tushy', - 'tusks', - 'tusky', - 'tutee', - 'tutti', - 'tutty', - 'tutus', - 'tuxes', - 'tuyer', - 'twaes', - 'twain', - 'twals', - 'twank', - 'twats', - 'tways', - 'tweel', - 'tween', - 'tweep', - 'tweer', - 'twerk', - 'twerp', - 'twier', - 'twigs', - 'twill', - 'twilt', - 'twink', - 'twins', - 'twiny', - 'twire', - 'twirp', - 'twite', - 'twits', - 'twoer', - 'twyer', - 'tyees', - 'tyers', - 'tyiyn', - 'tykes', - 'tyler', - 'tymps', - 'tynde', - 'tyned', - 'tynes', - 'typal', - 'typed', - 'types', - 'typey', - 'typic', - 'typos', - 'typps', - 'typto', - 'tyran', - 'tyred', - 'tyres', - 'tyros', - 'tythe', - 'tzars', - 'udals', - 'udons', - 'ugali', - 'ugged', - 'uhlan', - 'uhuru', - 'ukase', - 'ulama', - 'ulans', - 'ulema', - 'ulmin', - 'ulnad', - 'ulnae', - 'ulnar', - 'ulnas', - 'ulpan', - 'ulvas', - 'ulyie', - 'ulzie', - 'umami', - 'umbel', - 'umber', - 'umble', - 'umbos', - 'umbre', - 'umiac', - 'umiak', - 'umiaq', - 'ummah', - 'ummas', - 'ummed', - 'umped', - 'umphs', - 'umpie', - 'umpty', - 'umrah', - 'umras', - 'unais', - 'unapt', - 'unarm', - 'unary', - 'unaus', - 'unbag', - 'unban', - 'unbar', - 'unbed', - 'unbid', - 'unbox', - 'uncap', - 'unces', - 'uncia', - 'uncos', - 'uncoy', - 'uncus', - 'undam', - 'undee', - 'undos', - 'undug', - 'uneth', - 'unfix', - 'ungag', - 'unget', - 'ungod', - 'ungot', - 'ungum', - 'unhat', - 'unhip', - 'unica', - 'units', - 'unjam', - 'unked', - 'unket', - 'unkid', - 'unlaw', - 'unlay', - 'unled', - 'unlet', - 'unlid', - 'unman', - 'unmew', - 'unmix', - 'unpay', - 'unpeg', - 'unpen', - 'unpin', - 'unred', - 'unrid', - 'unrig', - 'unrip', - 'unsaw', - 'unsay', - 'unsee', - 'unsew', - 'unsex', - 'unsod', - 'untax', - 'untin', - 'unwet', - 'unwit', - 'unwon', - 'upbow', - 'upbye', - 'updos', - 'updry', - 'upend', - 'upjet', - 'uplay', - 'upled', - 'uplit', - 'upped', - 'upran', - 'uprun', - 'upsee', - 'upsey', - 'uptak', - 'upter', - 'uptie', - 'uraei', - 'urali', - 'uraos', - 'urare', - 'urari', - 'urase', - 'urate', - 'urbex', - 'urbia', - 'urdee', - 'ureal', - 'ureas', - 'uredo', - 'ureic', - 'urena', - 'urent', - 'urged', - 'urger', - 'urges', - 'urial', - 'urite', - 'urman', - 'urnal', - 'urned', - 'urped', - 'ursae', - 'ursid', - 'urson', - 'urubu', - 'urvas', - 'users', - 'usnea', - 'usque', - 'usure', - 'usury', - 'uteri', - 'uveal', - 'uveas', - 'uvula', - 'vacua', - 'vaded', - 'vades', - 'vagal', - 'vagus', - 'vails', - 'vaire', - 'vairs', - 'vairy', - 'vakas', - 'vakil', - 'vales', - 'valis', - 'valse', - 'vamps', - 'vampy', - 'vanda', - 'vaned', - 'vanes', - 'vangs', - 'vants', - 'vaped', - 'vaper', - 'vapes', - 'varan', - 'varas', - 'vardy', - 'varec', - 'vares', - 'varia', - 'varix', - 'varna', - 'varus', - 'varve', - 'vasal', - 'vases', - 'vasts', - 'vasty', - 'vatic', - 'vatus', - 'vauch', - 'vaute', - 'vauts', - 'vawte', - 'vaxes', - 'veale', - 'veals', - 'vealy', - 'veena', - 'veeps', - 'veers', - 'veery', - 'vegas', - 'veges', - 'vegie', - 'vegos', - 'vehme', - 'veils', - 'veily', - 'veins', - 'veiny', - 'velar', - 'velds', - 'veldt', - 'veles', - 'vells', - 'velum', - 'venae', - 'venal', - 'vends', - 'vendu', - 'veney', - 'venge', - 'venin', - 'vents', - 'venus', - 'verbs', - 'verra', - 'verry', - 'verst', - 'verts', - 'vertu', - 'vespa', - 'vesta', - 'vests', - 'vetch', - 'vexed', - 'vexer', - 'vexes', - 'vexil', - 'vezir', - 'vials', - 'viand', - 'vibes', - 'vibex', - 'vibey', - 'viced', - 'vices', - 'vichy', - 'viers', - 'views', - 'viewy', - 'vifda', - 'viffs', - 'vigas', - 'vigia', - 'vilde', - 'viler', - 'villi', - 'vills', - 'vimen', - 'vinal', - 'vinas', - 'vinca', - 'vined', - 'viner', - 'vines', - 'vinew', - 'vinic', - 'vinos', - 'vints', - 'viold', - 'viols', - 'vired', - 'vireo', - 'vires', - 'virga', - 'virge', - 'virid', - 'virls', - 'virtu', - 'visas', - 'vised', - 'vises', - 'visie', - 'visne', - 'vison', - 'visto', - 'vitae', - 'vitas', - 'vitex', - 'vitro', - 'vitta', - 'vivas', - 'vivat', - 'vivda', - 'viver', - 'vives', - 'vizir', - 'vizor', - 'vleis', - 'vlies', - 'vlogs', - 'voars', - 'vocab', - 'voces', - 'voddy', - 'vodou', - 'vodun', - 'voema', - 'vogie', - 'voids', - 'voile', - 'voips', - 'volae', - 'volar', - 'voled', - 'voles', - 'volet', - 'volks', - 'volta', - 'volte', - 'volti', - 'volts', - 'volva', - 'volve', - 'vomer', - 'voted', - 'votes', - 'vouge', - 'voulu', - 'vowed', - 'vower', - 'voxel', - 'vozhd', - 'vraic', - 'vrils', - 'vroom', - 'vrous', - 'vrouw', - 'vrows', - 'vuggs', - 'vuggy', - 'vughs', - 'vughy', - 'vulgo', - 'vulns', - 'vulva', - 'vutty', - 'waacs', - 'wacke', - 'wacko', - 'wacks', - 'wadds', - 'waddy', - 'waded', - 'wader', - 'wades', - 'wadge', - 'wadis', - 'wadts', - 'waffs', - 'wafts', - 'waged', - 'wages', - 'wagga', - 'wagyu', - 'wahoo', - 'waide', - 'waifs', - 'waift', - 'wails', - 'wains', - 'wairs', - 'waite', - 'waits', - 'wakas', - 'waked', - 'waken', - 'waker', - 'wakes', - 'wakfs', - 'waldo', - 'walds', - 'waled', - 'waler', - 'wales', - 'walie', - 'walis', - 'walks', - 'walla', - 'walls', - 'wally', - 'walty', - 'wamed', - 'wames', - 'wamus', - 'wands', - 'waned', - 'wanes', - 'waney', - 'wangs', - 'wanks', - 'wanky', - 'wanle', - 'wanly', - 'wanna', - 'wants', - 'wanty', - 'wanze', - 'waqfs', - 'warbs', - 'warby', - 'wards', - 'wared', - 'wares', - 'warez', - 'warks', - 'warms', - 'warns', - 'warps', - 'warre', - 'warst', - 'warts', - 'wases', - 'washy', - 'wasms', - 'wasps', - 'waspy', - 'wasts', - 'watap', - 'watts', - 'wauff', - 'waugh', - 'wauks', - 'waulk', - 'wauls', - 'waurs', - 'waved', - 'waves', - 'wavey', - 'wawas', - 'wawes', - 'wawls', - 'waxed', - 'waxer', - 'waxes', - 'wayed', - 'wazir', - 'wazoo', - 'weald', - 'weals', - 'weamb', - 'weans', - 'wears', - 'webby', - 'weber', - 'wecht', - 'wedel', - 'wedgy', - 'weeds', - 'weeke', - 'weeks', - 'weels', - 'weems', - 'weens', - 'weeny', - 'weeps', - 'weepy', - 'weest', - 'weete', - 'weets', - 'wefte', - 'wefts', - 'weids', - 'weils', - 'weirs', - 'weise', - 'weize', - 'wekas', - 'welds', - 'welke', - 'welks', - 'welkt', - 'wells', - 'welly', - 'welts', - 'wembs', - 'wends', - 'wenge', - 'wenny', - 'wents', - 'weros', - 'wersh', - 'wests', - 'wetas', - 'wetly', - 'wexed', - 'wexes', - 'whamo', - 'whams', - 'whang', - 'whaps', - 'whare', - 'whata', - 'whats', - 'whaup', - 'whaur', - 'wheal', - 'whear', - 'wheen', - 'wheep', - 'wheft', - 'whelk', - 'whelm', - 'whens', - 'whets', - 'whews', - 'wheys', - 'whids', - 'whift', - 'whigs', - 'whilk', - 'whims', - 'whins', - 'whios', - 'whips', - 'whipt', - 'whirr', - 'whirs', - 'whish', - 'whiss', - 'whist', - 'whits', - 'whity', - 'whizz', - 'whomp', - 'whoof', - 'whoot', - 'whops', - 'whore', - 'whorl', - 'whort', - 'whoso', - 'whows', - 'whump', - 'whups', - 'whyda', - 'wicca', - 'wicks', - 'wicky', - 'widdy', - 'wides', - 'wiels', - 'wifed', - 'wifes', - 'wifey', - 'wifie', - 'wifty', - 'wigan', - 'wigga', - 'wiggy', - 'wikis', - 'wilco', - 'wilds', - 'wiled', - 'wiles', - 'wilga', - 'wilis', - 'wilja', - 'wills', - 'wilts', - 'wimps', - 'winds', - 'wined', - 'wines', - 'winey', - 'winge', - 'wings', - 'wingy', - 'winks', - 'winna', - 'winns', - 'winos', - 'winze', - 'wiped', - 'wiper', - 'wipes', - 'wired', - 'wirer', - 'wires', - 'wirra', - 'wised', - 'wises', - 'wisha', - 'wisht', - 'wisps', - 'wists', - 'witan', - 'wited', - 'wites', - 'withe', - 'withs', - 'withy', - 'wived', - 'wiver', - 'wives', - 'wizen', - 'wizes', - 'woads', - 'woald', - 'wocks', - 'wodge', - 'woful', - 'wojus', - 'woker', - 'wokka', - 'wolds', - 'wolfs', - 'wolly', - 'wolve', - 'wombs', - 'womby', - 'womyn', - 'wonga', - 'wongi', - 'wonks', - 'wonky', - 'wonts', - 'woods', - 'wooed', - 'woofs', - 'woofy', - 'woold', - 'wools', - 'woons', - 'woops', - 'woopy', - 'woose', - 'woosh', - 'wootz', - 'words', - 'works', - 'worms', - 'wormy', - 'worts', - 'wowed', - 'wowee', - 'woxen', - 'wrang', - 'wraps', - 'wrapt', - 'wrast', - 'wrate', - 'wrawl', - 'wrens', - 'wrick', - 'wried', - 'wrier', - 'wries', - 'writs', - 'wroke', - 'wroot', - 'wroth', - 'wryer', - 'wuddy', - 'wudus', - 'wulls', - 'wurst', - 'wuses', - 'wushu', - 'wussy', - 'wuxia', - 'wyled', - 'wyles', - 'wynds', - 'wynns', - 'wyted', - 'wytes', - 'xebec', - 'xenia', - 'xenic', - 'xenon', - 'xeric', - 'xerox', - 'xerus', - 'xoana', - 'xrays', - 'xylan', - 'xylem', - 'xylic', - 'xylol', - 'xylyl', - 'xysti', - 'xysts', - 'yaars', - 'yabas', - 'yabba', - 'yabby', - 'yacca', - 'yacka', - 'yacks', - 'yaffs', - 'yager', - 'yages', - 'yagis', - 'yahoo', - 'yaird', - 'yakka', - 'yakow', - 'yales', - 'yamen', - 'yampy', - 'yamun', - 'yangs', - 'yanks', - 'yapok', - 'yapon', - 'yapps', - 'yappy', - 'yarak', - 'yarco', - 'yards', - 'yarer', - 'yarfa', - 'yarks', - 'yarns', - 'yarrs', - 'yarta', - 'yarto', - 'yates', - 'yauds', - 'yauld', - 'yaups', - 'yawed', - 'yawey', - 'yawls', - 'yawns', - 'yawny', - 'yawps', - 'ybore', - 'yclad', - 'ycled', - 'ycond', - 'ydrad', - 'ydred', - 'yeads', - 'yeahs', - 'yealm', - 'yeans', - 'yeard', - 'years', - 'yecch', - 'yechs', - 'yechy', - 'yedes', - 'yeeds', - 'yeesh', - 'yeggs', - 'yelks', - 'yells', - 'yelms', - 'yelps', - 'yelts', - 'yenta', - 'yente', - 'yerba', - 'yerds', - 'yerks', - 'yeses', - 'yesks', - 'yests', - 'yesty', - 'yetis', - 'yetts', - 'yeuks', - 'yeuky', - 'yeven', - 'yeves', - 'yewen', - 'yexed', - 'yexes', - 'yfere', - 'yiked', - 'yikes', - 'yills', - 'yince', - 'yipes', - 'yippy', - 'yirds', - 'yirks', - 'yirrs', - 'yirth', - 'yites', - 'yitie', - 'ylems', - 'ylike', - 'ylkes', - 'ymolt', - 'ympes', - 'yobbo', - 'yobby', - 'yocks', - 'yodel', - 'yodhs', - 'yodle', - 'yogas', - 'yogee', - 'yoghs', - 'yogic', - 'yogin', - 'yogis', - 'yoick', - 'yojan', - 'yoked', - 'yokel', - 'yoker', - 'yokes', - 'yokul', - 'yolks', - 'yolky', - 'yomim', - 'yomps', - 'yonic', - 'yonis', - 'yonks', - 'yoofs', - 'yoops', - 'yores', - 'yorks', - 'yorps', - 'youks', - 'yourn', - 'yours', - 'yourt', - 'youse', - 'yowed', - 'yowes', - 'yowie', - 'yowls', - 'yowza', - 'yrapt', - 'yrent', - 'yrivd', - 'yrneh', - 'ysame', - 'ytost', - 'yuans', - 'yucas', - 'yucca', - 'yucch', - 'yucko', - 'yucks', - 'yucky', - 'yufts', - 'yugas', - 'yuked', - 'yukes', - 'yukky', - 'yukos', - 'yulan', - 'yules', - 'yummo', - 'yummy', - 'yumps', - 'yupon', - 'yuppy', - 'yurta', - 'yurts', - 'yuzus', - 'zabra', - 'zacks', - 'zaida', - 'zaidy', - 'zaire', - 'zakat', - 'zaman', - 'zambo', - 'zamia', - 'zanja', - 'zante', - 'zanza', - 'zanze', - 'zappy', - 'zarfs', - 'zaris', - 'zatis', - 'zaxes', - 'zayin', - 'zazen', - 'zeals', - 'zebec', - 'zebub', - 'zebus', - 'zedas', - 'zeins', - 'zendo', - 'zerda', - 'zerks', - 'zeros', - 'zests', - 'zetas', - 'zexes', - 'zezes', - 'zhomo', - 'zibet', - 'ziffs', - 'zigan', - 'zilas', - 'zilch', - 'zilla', - 'zills', - 'zimbi', - 'zimbs', - 'zinco', - 'zincs', - 'zincy', - 'zineb', - 'zines', - 'zings', - 'zingy', - 'zinke', - 'zinky', - 'zippo', - 'zippy', - 'ziram', - 'zitis', - 'zizel', - 'zizit', - 'zlote', - 'zloty', - 'zoaea', - 'zobos', - 'zobus', - 'zocco', - 'zoeae', - 'zoeal', - 'zoeas', - 'zoism', - 'zoist', - 'zombi', - 'zonae', - 'zonda', - 'zoned', - 'zoner', - 'zones', - 'zonks', - 'zooea', - 'zooey', - 'zooid', - 'zooks', - 'zooms', - 'zoons', - 'zooty', - 'zoppa', - 'zoppo', - 'zoril', - 'zoris', - 'zorro', - 'zouks', - 'zowee', - 'zowie', - 'zulus', - 'zupan', - 'zupas', - 'zuppa', - 'zurfs', - 'zuzim', - 'zygal', - 'zygon', - 'zymes', - 'zymic' -]); diff --git a/packages/create-svelte/templates/default/static/favicon.png b/packages/create-svelte/templates/default/static/favicon.png deleted file mode 100644 index 825b9e65af7c104cfb07089bb28659393b4f2097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/packages/create-svelte/templates/skeleton/src/lib/index.ts b/packages/create-svelte/templates/skeleton/src/lib/index.ts deleted file mode 100644 index 856f2b6c38ae..000000000000 --- a/packages/create-svelte/templates/skeleton/src/lib/index.ts +++ /dev/null @@ -1 +0,0 @@ -// place files you want to import through the `$lib` alias in this folder. diff --git a/packages/create-svelte/templates/skeleton/src/routes/+page.svelte b/packages/create-svelte/templates/skeleton/src/routes/+page.svelte deleted file mode 100644 index 5982b0ae37dd..000000000000 --- a/packages/create-svelte/templates/skeleton/src/routes/+page.svelte +++ /dev/null @@ -1,2 +0,0 @@ -

Welcome to SvelteKit

-

Visit kit.svelte.dev to read the documentation

diff --git a/packages/create-svelte/templates/skeleton/static/favicon.png b/packages/create-svelte/templates/skeleton/static/favicon.png deleted file mode 100644 index 825b9e65af7c104cfb07089bb28659393b4f2097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/packages/create-svelte/templates/skeletonlib/src/lib/index.ts b/packages/create-svelte/templates/skeletonlib/src/lib/index.ts deleted file mode 100644 index 47d3c46fb896..000000000000 --- a/packages/create-svelte/templates/skeletonlib/src/lib/index.ts +++ /dev/null @@ -1 +0,0 @@ -// Reexport your entry components here diff --git a/packages/create-svelte/templates/skeletonlib/src/routes/+page.svelte b/packages/create-svelte/templates/skeletonlib/src/routes/+page.svelte deleted file mode 100644 index 0a45b69f099b..000000000000 --- a/packages/create-svelte/templates/skeletonlib/src/routes/+page.svelte +++ /dev/null @@ -1,3 +0,0 @@ -

Welcome to your library project

-

Create your package using @sveltejs/package and preview/showcase your work with SvelteKit

-

Visit kit.svelte.dev to read the documentation

diff --git a/packages/create-svelte/templates/skeletonlib/static/favicon.png b/packages/create-svelte/templates/skeletonlib/static/favicon.png deleted file mode 100644 index 825b9e65af7c104cfb07089bb28659393b4f2097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH fileURLToPath(new URL(path, import.meta.url)); - -// use a directory outside of packages to ensure it isn't added to the pnpm workspace -const test_workspace_dir = resolve_path('../../../.test-tmp/create-svelte/'); - -const existing_workspace_overrides = JSON.parse( - fs.readFileSync(resolve_path('../../../package.json'), 'utf-8') -).pnpm?.overrides; - -const overrides = { ...existing_workspace_overrides }; - -for (const pkg_path of glob(resolve_path('../../../packages/*/package.json'))) { - const name = JSON.parse(fs.readFileSync(pkg_path, 'utf-8')).name; - // use `file:` protocol for opting into stricter resolve logic which catches more bugs - overrides[name] = `file:${path.dirname(path.resolve(pkg_path))}`; -} - -try { - const kit_dir = resolve_path('../../../packages/kit'); - const ls_vite_result = execSync('pnpm ls --json vite', { cwd: kit_dir }); - const vite_version = JSON.parse(ls_vite_result.toString())[0].devDependencies.vite.version; - overrides.vite = vite_version; -} catch (e) { - console.error('failed to parse installed vite version from packages/kit'); - throw e; -} - -// prepare test pnpm workspace -fs.rmSync(test_workspace_dir, { recursive: true, force: true }); -fs.mkdirSync(test_workspace_dir, { recursive: true }); -const workspace = { - name: 'svelte-check-test-fake-pnpm-workspace', - private: true, - version: '0.0.0', - pnpm: { overrides }, - // convert override query "@foo/bar@>x [query.replace(/(@?[^@]+)@.*$/, '$1'), range]) - ) -}; - -fs.writeFileSync( - path.join(test_workspace_dir, 'package.json'), - JSON.stringify(workspace, null, '\t') -); - -fs.writeFileSync(path.join(test_workspace_dir, 'pnpm-workspace.yaml'), 'packages:\n - ./*\n'); - -const exec_async = promisify(exec); - -beforeAll(async () => { - await exec_async('pnpm install --no-frozen-lockfile', { - cwd: test_workspace_dir - }); -}, 60000); - -/** @param {any} pkg */ -function patch_package_json(pkg) { - Object.entries(overrides).forEach(([key, value]) => { - if (pkg.devDependencies?.[key]) { - pkg.devDependencies[key] = value; - } - - if (pkg.dependencies?.[key]) { - pkg.dependencies[key] = value; - } - - if (!pkg.pnpm) { - pkg.pnpm = {}; - } - - if (!pkg.pnpm.overrides) { - pkg.pnpm.overrides = {}; - } - - pkg.pnpm.overrides = { ...pkg.pnpm.overrides, ...overrides }; - }); - pkg.private = true; -} - -/** - * Tests in different templates can be run concurrently for a nice speedup locally, but tests within a template must be run sequentially. - * It'd be better to group tests by template, but vitest doesn't support that yet. - * @type {Map import('node:child_process').PromiseWithChild][]>} - */ -const script_test_map = new Map(); - -const templates = /** @type {Array<'default' | 'skeleton' | 'skeletonlib'>} */ ( - fs.readdirSync('templates') -); - -for (const template of templates) { - if (template[0] === '.') continue; - - for (const types of /** @type {const} */ (['checkjs', 'typescript'])) { - for (const svelteVersion of /** @type {const} */ (['svelte4', 'svelte5'])) { - const test_id = `${template}-${types}-${svelteVersion}`; - const cwd = path.join(test_workspace_dir, test_id); - fs.rmSync(cwd, { recursive: true, force: true }); - - create(cwd, { - name: `create-svelte-test-${test_id}`, - template, - types, - prettier: true, - eslint: true, - playwright: false, - vitest: false, - svelte5: svelteVersion === 'svelte5' - }); - - const pkg = JSON.parse(fs.readFileSync(path.join(cwd, 'package.json'), 'utf-8')); - patch_package_json(pkg); - - fs.writeFileSync(path.join(cwd, 'package.json'), JSON.stringify(pkg, null, '\t') + '\n'); - - // run provided scripts that are non-blocking. All of them should exit with 0 - // package script requires lib dir - // TODO: lint should run before format - const scripts_to_test = ['format', 'lint', 'check', 'build', 'package'].filter( - (s) => s in pkg.scripts - ); - - for (const script of scripts_to_test) { - const tests = script_test_map.get(script) ?? []; - tests.push([test_id, () => exec_async(`pnpm ${script}`, { cwd })]); - script_test_map.set(script, tests); - } - } - } -} - -for (const [script, tests] of script_test_map) { - describe.concurrent( - script, - () => { - for (const [name, task] of tests) { - test(name, task); - } - }, - { timeout: 60000 } - ); -} diff --git a/packages/create-svelte/tsconfig.json b/packages/create-svelte/tsconfig.json index 41f0745444fe..e4d8da465f83 100644 --- a/packages/create-svelte/tsconfig.json +++ b/packages/create-svelte/tsconfig.json @@ -9,5 +9,5 @@ "allowSyntheticDefaultImports": true, "strict": true }, - "include": ["./scripts/**/*", "./test/*.js", "./*.js"] + "include": ["./*.js"] } diff --git a/packages/create-svelte/types/index.d.ts b/packages/create-svelte/types/index.d.ts deleted file mode 100644 index 1f1a4a6191bc..000000000000 --- a/packages/create-svelte/types/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Options } from './internal.js'; - -/** - * Create a new SvelteKit project. - * @param {string} cwd - Path to the directory to create - * @param {import('./internal').Options} options - */ -export function create(cwd: string, options: Options): Promise; diff --git a/packages/create-svelte/types/internal.d.ts b/packages/create-svelte/types/internal.d.ts deleted file mode 100644 index c7e6804cabf3..000000000000 --- a/packages/create-svelte/types/internal.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -export type Options = { - name: string; - template: 'default' | 'skeleton' | 'skeletonlib'; - types: 'typescript' | 'checkjs' | null; - prettier: boolean; - eslint: boolean; - playwright: boolean; - vitest: boolean; - svelte5?: boolean; // optional to not introduce a breaking change to the `create` API -}; - -export type File = { - name: string; - contents: string; -}; - -export type Condition = - | 'eslint' - | 'prettier' - | 'typescript' - | 'checkjs' - | 'playwright' - | 'vitest' - | 'skeleton' - | 'default' - | 'skeletonlib' - | 'svelte5'; - -export type Common = { - files: Array<{ - name: string; - include: Condition[]; - exclude: Condition[]; - contents: string; - }>; -}; diff --git a/packages/create-svelte/utils.js b/packages/create-svelte/utils.js deleted file mode 100644 index a22ad37f34db..000000000000 --- a/packages/create-svelte/utils.js +++ /dev/null @@ -1,71 +0,0 @@ -import fs from 'node:fs'; -import path from 'node:path'; -import process from 'node:process'; -import { fileURLToPath } from 'node:url'; - -/** @param {string} dir */ -export function mkdirp(dir) { - try { - fs.mkdirSync(dir, { recursive: true }); - } catch (e) { - if (/** @type {any} */ (e).code === 'EEXIST') return; - throw e; - } -} - -/** @param {string} path */ -export function rimraf(path) { - (fs.rmSync || fs.rmdirSync)(path, { recursive: true, force: true }); -} - -/** - * @template T - * @param {T} x - */ -function identity(x) { - return x; -} - -/** - * @param {string} from - * @param {string} to - * @param {(basename: string) => string} rename - */ -export function copy(from, to, rename = identity) { - if (!fs.existsSync(from)) return; - - const stats = fs.statSync(from); - - if (stats.isDirectory()) { - fs.readdirSync(from).forEach((file) => { - copy(path.join(from, file), path.join(to, rename(file))); - }); - } else { - mkdirp(path.dirname(to)); - fs.copyFileSync(from, to); - } -} - -/** @param {string} path */ -export function dist(path) { - return fileURLToPath(new URL(`./dist/${path}`, import.meta.url).href); -} - -/** @type {string} */ -export const package_manager = get_package_manager() || 'npm'; - -/** - * Supports npm, pnpm, Yarn, cnpm, bun and any other package manager that sets the - * npm_config_user_agent env variable. - * Thanks to https://github.com/zkochan/packages/tree/main/which-pm-runs for this code! - */ -function get_package_manager() { - if (!process.env.npm_config_user_agent) { - return undefined; - } - const user_agent = process.env.npm_config_user_agent; - const pm_spec = user_agent.split(' ')[0]; - const separator_pos = pm_spec.lastIndexOf('/'); - const name = pm_spec.substring(0, separator_pos); - return name === 'npminstall' ? 'cnpm' : name; -} diff --git a/packages/create-svelte/vitest.config.js b/packages/create-svelte/vitest.config.js deleted file mode 100644 index 3f5451417a27..000000000000 --- a/packages/create-svelte/vitest.config.js +++ /dev/null @@ -1,5 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - test: { dir: './test', include: ['*.js'] } -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8569e4bbf2ab..ee1c5ce662e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -289,81 +289,7 @@ importers: specifier: ^5.3.3 version: 5.4.5 - packages/create-svelte: - dependencies: - '@clack/prompts': - specifier: ^0.7.0 - version: 0.7.0 - kleur: - specifier: ^4.1.5 - version: 4.1.5 - devDependencies: - '@playwright/test': - specifier: ^1.44.1 - version: 1.44.1 - '@types/gitignore-parser': - specifier: ^0.0.3 - version: 0.0.3 - '@types/node': - specifier: ^18.19.48 - version: 18.19.50 - gitignore-parser: - specifier: ^0.0.2 - version: 0.0.2 - prettier: - specifier: ^3.1.1 - version: 3.2.5 - prettier-plugin-svelte: - specifier: ^3.1.2 - version: 3.1.2(prettier@3.2.5)(svelte@4.2.19) - sucrase: - specifier: ^3.34.0 - version: 3.35.0 - svelte: - specifier: ^4.2.10 - version: 4.2.19 - tiny-glob: - specifier: ^0.2.9 - version: 0.2.9 - typescript: - specifier: ^5.3.3 - version: 5.4.5 - vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) - - packages/create-svelte/templates/default: - devDependencies: - '@fontsource/fira-mono': - specifier: ^5.0.0 - version: 5.0.12 - '@neoconfetti/svelte': - specifier: ^2.0.0 - version: 2.2.1 - '@sveltejs/adapter-auto': - specifier: workspace:* - version: link:../../../adapter-auto - '@sveltejs/kit': - specifier: workspace:* - version: link:../../../kit - '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.0 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) - svelte: - specifier: ^4.2.10 - version: 4.2.19 - typescript: - specifier: ^5.3.3 - version: 5.4.5 - vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) - - packages/create-svelte/templates/skeleton: - devDependencies: - '@sveltejs/adapter-auto': - specifier: workspace:* - version: link:../../../adapter-auto + packages/create-svelte: {} packages/enhanced-img: dependencies: @@ -1390,14 +1316,6 @@ packages: '@changesets/write@0.3.2': resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} - '@clack/core@0.3.4': - resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} - - '@clack/prompts@0.7.0': - resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} - bundledDependencies: - - is-unicode-supported - '@cloudflare/kv-asset-handler@0.3.4': resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} engines: {node: '>=16.13'} @@ -1752,9 +1670,6 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@fontsource/fira-mono@5.0.12': - resolution: {integrity: sha512-1uFRjqCcxVv4F31PjyLm8o4oNlT5ywwh6OwcDGkZbafOeFZHXekvholS9IlfZkRsZvVhSbFRHT/5iDib4KTtpg==} - '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -1879,10 +1794,6 @@ packages: cpu: [x64] os: [win32] - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1921,9 +1832,6 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - '@neoconfetti/svelte@2.2.1': - resolution: {integrity: sha512-2Ts0Rxaf6clW2qG+AKhTwpl01AAyZEAe03XeuQ7Vp+qYIaM3ycuI94j546fmEkUxwACwGI3Zl2cZ/pncTuNcJg==} - '@netlify/functions@2.6.0': resolution: {integrity: sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ==} engines: {node: '>=14.0.0'} @@ -1948,10 +1856,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@playwright/test@1.44.1': resolution: {integrity: sha512-1hZ4TNvD5z9VuhNJ/walIjvMVvYkZKf71axoF/uiAqpntQJXpG64dlXhoDXE3OczPuTuvjf/M5KWFg5VAVUS3Q==} engines: {node: '>=16'} @@ -2155,9 +2059,6 @@ packages: '@types/geojson@7946.0.14': resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} - '@types/gitignore-parser@0.0.3': - resolution: {integrity: sha512-sbdu1sG2pQcwjEYWTsX78OqJo5pKnonwC4FV3m2JeQRE2xYb3q0icHHopCHEvpn4uIBuvWBTpJUCJ76ISK24CA==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2331,10 +2232,6 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -2343,13 +2240,6 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -2494,10 +2384,6 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -2651,18 +2537,12 @@ packages: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: resolution: {directory: packages/kit/test/apps/dev-only/_test_dependencies/cjs-only, type: directory} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.4.736: resolution: {integrity: sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} @@ -2865,10 +2745,6 @@ packages: flexsearch@0.7.43: resolution: {integrity: sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg==} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -2919,10 +2795,6 @@ packages: get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} - gitignore-parser@0.0.2: - resolution: {integrity: sha512-X6mpqUv59uWLGD4n3hZ8Cu8KbF2PMWPSFYmxZjdkpm3yOU7hSUYnzTkZI1mcWqchphvqyuz3/BhgBR4E/JtkCg==} - engines: {node: '>=0.10.0'} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2934,11 +2806,6 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.1: - resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} - engines: {node: '>=16 || 14 >=14.18'} - hasBin: true - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -3090,10 +2957,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@3.4.0: - resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} - engines: {node: '>=14'} - js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -3197,9 +3060,6 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - local-access@1.1.0: resolution: {integrity: sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==} engines: {node: '>=6'} @@ -3227,10 +3087,6 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -3309,10 +3165,6 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -3337,9 +3189,6 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3486,10 +3335,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@6.2.2: resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} @@ -3522,10 +3367,6 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - playwright-core@1.44.1: resolution: {integrity: sha512-wh0JWtYTrhv1+OSsLPgFzGzt67Y7BE/ZS3jEqgGBlp2ppp1ZDj8c+9IARNW4dwf1poq5MgHreEM2KV/GuR4cFA==} engines: {node: '>=16'} @@ -3826,10 +3667,6 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -3837,10 +3674,6 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -3857,11 +3690,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -3966,13 +3794,6 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -4024,9 +3845,6 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-morph@24.0.0: resolution: {integrity: sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw==} @@ -4211,14 +4029,6 @@ packages: '@cloudflare/workers-types': optional: true - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -4424,17 +4234,6 @@ snapshots: human-id: 1.0.2 prettier: 2.8.8 - '@clack/core@0.3.4': - dependencies: - picocolors: 1.1.0 - sisteransi: 1.0.5 - - '@clack/prompts@0.7.0': - dependencies: - '@clack/core': 0.3.4 - picocolors: 1.1.0 - sisteransi: 1.0.5 - '@cloudflare/kv-asset-handler@0.3.4': dependencies: mime: 3.0.0 @@ -4645,8 +4444,6 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@fontsource/fira-mono@5.0.12': {} - '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.3.0': {} @@ -4728,15 +4525,6 @@ snapshots: '@img/sharp-win32-x64@0.33.3': optional: true - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 @@ -4799,8 +4587,6 @@ snapshots: - encoding - supports-color - '@neoconfetti/svelte@2.2.1': {} - '@netlify/functions@2.6.0': dependencies: '@netlify/serverless-functions-api': 1.14.0 @@ -4824,9 +4610,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@pkgjs/parseargs@0.11.0': - optional: true - '@playwright/test@1.44.1': dependencies: playwright: 1.44.1 @@ -5023,8 +4806,6 @@ snapshots: '@types/geojson@7946.0.14': {} - '@types/gitignore-parser@0.0.3': {} - '@types/json-schema@7.0.15': {} '@types/node-forge@1.3.11': @@ -5237,18 +5018,12 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -5395,8 +5170,6 @@ snapshots: commander@2.20.3: {} - commander@4.1.1: {} - commander@7.2.0: {} commondir@1.0.1: {} @@ -5511,14 +5284,10 @@ snapshots: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: {} - eastasianwidth@0.2.0: {} - electron-to-chromium@1.4.736: {} emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 @@ -5799,11 +5568,6 @@ snapshots: flexsearch@0.7.43: {} - foreground-child@3.1.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -5857,8 +5621,6 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - gitignore-parser@0.0.2: {} - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -5869,14 +5631,6 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.4.1: - dependencies: - foreground-child: 3.1.1 - jackspeak: 3.4.0 - minimatch: 9.0.5 - minipass: 7.1.2 - path-scurry: 1.11.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -6010,12 +5764,6 @@ snapshots: isexe@2.0.0: {} - jackspeak@3.4.0: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -6095,8 +5843,6 @@ snapshots: lilconfig@2.1.0: {} - lines-and-columns@1.2.4: {} - local-access@1.1.0: {} locate-character@3.0.0: {} @@ -6121,8 +5867,6 @@ snapshots: dependencies: tslib: 2.6.2 - lru-cache@10.2.0: {} - lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 @@ -6200,8 +5944,6 @@ snapshots: minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: dependencies: minipass: 3.3.6 @@ -6217,12 +5959,6 @@ snapshots: mustache@4.2.0: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - nanoid@3.3.7: {} natural-compare@1.4.0: {} @@ -6344,11 +6080,6 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.2.0 - minipass: 7.1.2 - path-to-regexp@6.2.2: {} path-type@4.0.0: {} @@ -6371,8 +6102,6 @@ snapshots: pify@4.0.1: {} - pirates@4.0.6: {} - playwright-core@1.44.1: {} playwright@1.44.1: @@ -6681,12 +6410,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -6695,10 +6418,6 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - strip-bom@3.0.0: {} strip-final-newline@3.0.0: {} @@ -6709,16 +6428,6 @@ snapshots: strip-json-comments@3.1.1: {} - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.4.1 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -6808,14 +6517,6 @@ snapshots: text-table@0.2.0: {} - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - tiny-glob@0.2.9: dependencies: globalyzer: 0.1.0 @@ -6858,8 +6559,6 @@ snapshots: dependencies: typescript: 5.4.5 - ts-interface-checker@0.1.13: {} - ts-morph@24.0.0: dependencies: '@ts-morph/common': 0.25.0 @@ -7062,18 +6761,6 @@ snapshots: - supports-color - utf-8-validate - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - wrappy@1.0.2: {} ws@8.18.0: {} From bfaf80332470bc98c85b63deda1f4ba006815380 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 10:03:52 -0700 Subject: [PATCH 337/454] Version Packages (#12849) Co-authored-by: github-actions[bot] --- .changeset/breezy-cars-wink.md | 5 ----- .changeset/early-emus-pump.md | 6 ------ .changeset/serious-geckos-itch.md | 5 ----- .changeset/shy-seals-draw.md | 5 ----- packages/adapter-auto/CHANGELOG.md | 6 ++++++ packages/adapter-auto/package.json | 2 +- packages/create-svelte/CHANGELOG.md | 6 ++++++ packages/create-svelte/package.json | 2 +- packages/migrate/CHANGELOG.md | 9 +++++++++ packages/migrate/package.json | 2 +- packages/package/CHANGELOG.md | 6 ++++++ packages/package/package.json | 2 +- 12 files changed, 31 insertions(+), 25 deletions(-) delete mode 100644 .changeset/breezy-cars-wink.md delete mode 100644 .changeset/early-emus-pump.md delete mode 100644 .changeset/serious-geckos-itch.md delete mode 100644 .changeset/shy-seals-draw.md diff --git a/.changeset/breezy-cars-wink.md b/.changeset/breezy-cars-wink.md deleted file mode 100644 index 94bdbe5067cf..000000000000 --- a/.changeset/breezy-cars-wink.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'create-svelte': major ---- - -breaking: the `create-svelte` package has been replaced by the `sv` package diff --git a/.changeset/early-emus-pump.md b/.changeset/early-emus-pump.md deleted file mode 100644 index ded019ffb7ad..000000000000 --- a/.changeset/early-emus-pump.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'svelte-migrate': patch -'@sveltejs/package': patch ---- - -docs: demonstrate sv migrate over prior commands diff --git a/.changeset/serious-geckos-itch.md b/.changeset/serious-geckos-itch.md deleted file mode 100644 index 0b040737c534..000000000000 --- a/.changeset/serious-geckos-itch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/adapter-auto': minor ---- - -feat: add support for Bun package manager diff --git a/.changeset/shy-seals-draw.md b/.changeset/shy-seals-draw.md deleted file mode 100644 index 0a50e44dd987..000000000000 --- a/.changeset/shy-seals-draw.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'svelte-migrate': patch ---- - -fix: bump enhanced-img version to avoid peer dep warning diff --git a/packages/adapter-auto/CHANGELOG.md b/packages/adapter-auto/CHANGELOG.md index fc8eaa8fc38d..862cfeb6fa54 100644 --- a/packages/adapter-auto/CHANGELOG.md +++ b/packages/adapter-auto/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/adapter-auto +## 3.3.0 +### Minor Changes + + +- feat: add support for Bun package manager ([#12854](https://github.com/sveltejs/kit/pull/12854)) + ## 3.2.5 ### Patch Changes diff --git a/packages/adapter-auto/package.json b/packages/adapter-auto/package.json index cdd438351c1a..d9bf9d9a91c1 100644 --- a/packages/adapter-auto/package.json +++ b/packages/adapter-auto/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-auto", - "version": "3.2.5", + "version": "3.3.0", "description": "Automatically chooses the SvelteKit adapter for your current environment, if possible.", "keywords": [ "adapter", diff --git a/packages/create-svelte/CHANGELOG.md b/packages/create-svelte/CHANGELOG.md index eac417529afb..9c00ac242399 100644 --- a/packages/create-svelte/CHANGELOG.md +++ b/packages/create-svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # create-svelte +## 7.0.0 +### Major Changes + + +- breaking: the `create-svelte` package has been replaced by the `sv` package ([#12850](https://github.com/sveltejs/kit/pull/12850)) + ## 6.4.0 ### Minor Changes diff --git a/packages/create-svelte/package.json b/packages/create-svelte/package.json index 36e22010aa1d..9cdc02f715d4 100644 --- a/packages/create-svelte/package.json +++ b/packages/create-svelte/package.json @@ -1,6 +1,6 @@ { "name": "create-svelte", - "version": "6.4.0", + "version": "7.0.0", "type": "module", "description": "A CLI for creating new SvelteKit projects", "keywords": [ diff --git a/packages/migrate/CHANGELOG.md b/packages/migrate/CHANGELOG.md index 46a11658197a..6e0af16e45d5 100644 --- a/packages/migrate/CHANGELOG.md +++ b/packages/migrate/CHANGELOG.md @@ -1,5 +1,14 @@ # svelte-migrate +## 1.6.5 +### Patch Changes + + +- docs: demonstrate sv migrate over prior commands ([#12840](https://github.com/sveltejs/kit/pull/12840)) + + +- fix: bump enhanced-img version to avoid peer dep warning ([#12852](https://github.com/sveltejs/kit/pull/12852)) + ## 1.6.4 ### Patch Changes diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 1ee9b53b2ffc..341640a9b301 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -1,6 +1,6 @@ { "name": "svelte-migrate", - "version": "1.6.4", + "version": "1.6.5", "description": "A CLI for migrating Svelte(Kit) codebases", "keywords": [ "migration", diff --git a/packages/package/CHANGELOG.md b/packages/package/CHANGELOG.md index 75c43031ec6c..150413827f13 100644 --- a/packages/package/CHANGELOG.md +++ b/packages/package/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/package +## 2.3.6 +### Patch Changes + + +- docs: demonstrate sv migrate over prior commands ([#12840](https://github.com/sveltejs/kit/pull/12840)) + ## 2.3.5 ### Patch Changes diff --git a/packages/package/package.json b/packages/package/package.json index 297d915fe30b..6809eabef077 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/package", - "version": "2.3.5", + "version": "2.3.6", "description": "The fastest way to build Svelte packages", "repository": { "type": "git", From 57ba428a0470b6305a0b00df475c5d10ec937a67 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 10:48:18 -0700 Subject: [PATCH 338/454] fix: restore repository information --- packages/create-svelte/package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/create-svelte/package.json b/packages/create-svelte/package.json index 9cdc02f715d4..f0a172780880 100644 --- a/packages/create-svelte/package.json +++ b/packages/create-svelte/package.json @@ -13,6 +13,11 @@ "template", "wizard" ], + "repository": { + "type": "git", + "url": "https://github.com/sveltejs/kit", + "directory": "packages/create-svelte" + }, "license": "MIT", "homepage": "https://svelte.dev", "files": [ From e6c1c1e4a31526cafc49ecebeaa2841f17bef9a4 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:07:51 -0700 Subject: [PATCH 339/454] chore: remove kit.svelte.dev (#12856) --- package.json | 2 + packages/kit/src/exports/public.d.ts | 11 +- .../kit/src/runtime/server/page/render.js | 5 +- packages/kit/types/index.d.ts | 11 +- packages/migrate/package.json | 1 - pnpm-lock.yaml | 374 +----------------- pnpm-workspace.yaml | 1 - sites/kit.svelte.dev/.gitignore | 8 - sites/kit.svelte.dev/.prettierignore | 1 - sites/kit.svelte.dev/README.md | 13 - sites/kit.svelte.dev/package.json | 45 --- sites/kit.svelte.dev/scripts/tsconfig.json | 12 - sites/kit.svelte.dev/scripts/types/index.js | 327 --------------- sites/kit.svelte.dev/src/app.d.ts | 12 - sites/kit.svelte.dev/src/app.html | 61 --- sites/kit.svelte.dev/src/hooks.server.js | 23 -- .../src/lib/icons/left-small.svg | 11 - sites/kit.svelte.dev/src/lib/icons/pause.svg | 4 - sites/kit.svelte.dev/src/lib/icons/play.svg | 3 - sites/kit.svelte.dev/src/lib/icons/plus.svg | 11 - sites/kit.svelte.dev/src/lib/icons/search.svg | 6 - .../kit.svelte.dev/src/lib/icons/up-small.svg | 11 - .../src/lib/server/docs/index.js | 127 ------ .../src/lib/server/docs/types.d.ts | 24 -- .../kit.svelte.dev/src/lib/server/renderer.js | 81 ---- sites/kit.svelte.dev/src/routes/+error.svelte | 65 --- .../src/routes/+layout.server.js | 27 -- .../kit.svelte.dev/src/routes/+layout.svelte | 103 ----- sites/kit.svelte.dev/src/routes/+page.js | 5 - sites/kit.svelte.dev/src/routes/+page.svelte | 100 ----- .../src/routes/content.json/+server.js | 10 - .../src/routes/content.json/content.server.js | 114 ------ .../src/routes/docs/+layout.server.js | 9 - .../src/routes/docs/+layout.svelte | 89 ----- sites/kit.svelte.dev/src/routes/docs/+page.js | 5 - .../src/routes/docs/[slug]/+page.server.js | 7 - .../src/routes/docs/[slug]/+page.svelte | 134 ------- .../src/routes/edge.svg/+server.js | 144 ------- .../src/routes/edge.svg/countries.json | 251 ------------ .../src/routes/edge.svg/land-110m.json | 1 - sites/kit.svelte.dev/src/routes/faq/+page.js | 5 - .../src/routes/home/Deployment.svelte | 297 -------------- .../src/routes/home/Features.svelte | 120 ------ .../src/routes/home/Hero.svelte | 192 --------- .../src/routes/home/Intro.svelte | 37 -- .../src/routes/home/Showcase.svelte | 106 ----- .../src/routes/home/Svelte.svelte | 114 ------ .../src/routes/home/Video.svelte | 261 ------------ .../kit.svelte.dev/src/routes/home/cc-off.svg | 22 -- .../kit.svelte.dev/src/routes/home/cc-on.svg | 14 - .../kit.svelte.dev/src/routes/home/common.css | 54 --- .../src/routes/home/logos/appengine.svg | 63 --- .../src/routes/home/logos/azure.svg | 16 - .../src/routes/home/logos/cloudflare.svg | 18 - .../src/routes/home/logos/deno.svg | 60 --- .../src/routes/home/logos/firebase.svg | 36 -- .../src/routes/home/logos/html5.svg | 17 - .../src/routes/home/logos/lambda.svg | 15 - .../src/routes/home/logos/netlify.svg | 16 - .../src/routes/home/logos/node.svg | 1 - .../src/routes/home/logos/vercel.svg | 3 - .../src/routes/home/showcase/asmeditor.png | Bin 162044 -> 0 bytes .../src/routes/home/showcase/dropzone.png | Bin 242780 -> 0 bytes .../src/routes/home/showcase/monogram.png | Bin 470593 -> 0 bytes .../src/routes/home/showcase/pausly.png | Bin 108121 -> 0 bytes .../src/routes/home/showcase/pocketbase.png | Bin 206721 -> 0 bytes .../src/routes/home/showcase/pronauns.png | Bin 99313 -> 0 bytes .../src/routes/home/showcase/pudding.png | Bin 141461 -> 0 bytes .../src/routes/home/showcase/raster.png | Bin 299222 -> 0 bytes .../routes/home/showcase/tradingstrategy.png | Bin 57224 -> 0 bytes .../src/routes/home/subtitles.vtt | 98 ----- .../home/svelte-kit-logotype.svg.svelte | 46 --- .../src/routes/home/svelte-kit-machine.webp | Bin 211500 -> 0 bytes .../src/routes/home/sveltekit-logo.svg | 1 - .../src/routes/home/volume-high.svg | 3 - .../src/routes/home/volume-off.svg | 3 - .../src/routes/nav.json/+server.js | 28 -- sites/kit.svelte.dev/src/routes/schema.json | 89 ----- .../kit.svelte.dev/src/routes/search/+page.js | 1 - .../src/routes/search/+page.server.js | 20 - .../src/routes/search/+page.svelte | 55 --- sites/kit.svelte.dev/static/favicon.png | Bin 1373 -> 0 bytes .../images/svelte-android-chrome-192.png | Bin 1986 -> 0 bytes .../images/svelte-android-chrome-512.png | Bin 5185 -> 0 bytes .../static/images/svelte-kit-horizontal.svg | 1 - .../static/images/twitter-thumbnail.jpg | Bin 65292 -> 0 bytes sites/kit.svelte.dev/static/manifest.json | 20 - sites/kit.svelte.dev/static/opensearch.xml | 10 - sites/kit.svelte.dev/static/robots.txt | 3 - sites/kit.svelte.dev/svelte.config.js | 16 - sites/kit.svelte.dev/tsconfig.json | 11 - sites/kit.svelte.dev/vercel.json | 9 - sites/kit.svelte.dev/vite.config.js | 38 -- 93 files changed, 29 insertions(+), 4139 deletions(-) delete mode 100644 sites/kit.svelte.dev/.gitignore delete mode 100644 sites/kit.svelte.dev/.prettierignore delete mode 100644 sites/kit.svelte.dev/README.md delete mode 100644 sites/kit.svelte.dev/package.json delete mode 100644 sites/kit.svelte.dev/scripts/tsconfig.json delete mode 100644 sites/kit.svelte.dev/scripts/types/index.js delete mode 100644 sites/kit.svelte.dev/src/app.d.ts delete mode 100644 sites/kit.svelte.dev/src/app.html delete mode 100644 sites/kit.svelte.dev/src/hooks.server.js delete mode 100644 sites/kit.svelte.dev/src/lib/icons/left-small.svg delete mode 100644 sites/kit.svelte.dev/src/lib/icons/pause.svg delete mode 100644 sites/kit.svelte.dev/src/lib/icons/play.svg delete mode 100644 sites/kit.svelte.dev/src/lib/icons/plus.svg delete mode 100644 sites/kit.svelte.dev/src/lib/icons/search.svg delete mode 100644 sites/kit.svelte.dev/src/lib/icons/up-small.svg delete mode 100644 sites/kit.svelte.dev/src/lib/server/docs/index.js delete mode 100644 sites/kit.svelte.dev/src/lib/server/docs/types.d.ts delete mode 100644 sites/kit.svelte.dev/src/lib/server/renderer.js delete mode 100644 sites/kit.svelte.dev/src/routes/+error.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/+layout.server.js delete mode 100644 sites/kit.svelte.dev/src/routes/+layout.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/+page.js delete mode 100644 sites/kit.svelte.dev/src/routes/+page.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/content.json/+server.js delete mode 100644 sites/kit.svelte.dev/src/routes/content.json/content.server.js delete mode 100644 sites/kit.svelte.dev/src/routes/docs/+layout.server.js delete mode 100644 sites/kit.svelte.dev/src/routes/docs/+layout.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/docs/+page.js delete mode 100644 sites/kit.svelte.dev/src/routes/docs/[slug]/+page.server.js delete mode 100644 sites/kit.svelte.dev/src/routes/docs/[slug]/+page.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/edge.svg/+server.js delete mode 100644 sites/kit.svelte.dev/src/routes/edge.svg/countries.json delete mode 100644 sites/kit.svelte.dev/src/routes/edge.svg/land-110m.json delete mode 100644 sites/kit.svelte.dev/src/routes/faq/+page.js delete mode 100644 sites/kit.svelte.dev/src/routes/home/Deployment.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/home/Features.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/home/Hero.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/home/Intro.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/home/Showcase.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/home/Svelte.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/home/Video.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/home/cc-off.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/cc-on.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/common.css delete mode 100644 sites/kit.svelte.dev/src/routes/home/logos/appengine.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/logos/azure.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/logos/cloudflare.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/logos/deno.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/logos/firebase.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/logos/html5.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/logos/lambda.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/logos/netlify.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/logos/node.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/logos/vercel.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/showcase/asmeditor.png delete mode 100644 sites/kit.svelte.dev/src/routes/home/showcase/dropzone.png delete mode 100644 sites/kit.svelte.dev/src/routes/home/showcase/monogram.png delete mode 100644 sites/kit.svelte.dev/src/routes/home/showcase/pausly.png delete mode 100644 sites/kit.svelte.dev/src/routes/home/showcase/pocketbase.png delete mode 100644 sites/kit.svelte.dev/src/routes/home/showcase/pronauns.png delete mode 100644 sites/kit.svelte.dev/src/routes/home/showcase/pudding.png delete mode 100644 sites/kit.svelte.dev/src/routes/home/showcase/raster.png delete mode 100644 sites/kit.svelte.dev/src/routes/home/showcase/tradingstrategy.png delete mode 100644 sites/kit.svelte.dev/src/routes/home/subtitles.vtt delete mode 100644 sites/kit.svelte.dev/src/routes/home/svelte-kit-logotype.svg.svelte delete mode 100644 sites/kit.svelte.dev/src/routes/home/svelte-kit-machine.webp delete mode 100644 sites/kit.svelte.dev/src/routes/home/sveltekit-logo.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/volume-high.svg delete mode 100644 sites/kit.svelte.dev/src/routes/home/volume-off.svg delete mode 100644 sites/kit.svelte.dev/src/routes/nav.json/+server.js delete mode 100644 sites/kit.svelte.dev/src/routes/schema.json delete mode 100644 sites/kit.svelte.dev/src/routes/search/+page.js delete mode 100644 sites/kit.svelte.dev/src/routes/search/+page.server.js delete mode 100644 sites/kit.svelte.dev/src/routes/search/+page.svelte delete mode 100644 sites/kit.svelte.dev/static/favicon.png delete mode 100644 sites/kit.svelte.dev/static/images/svelte-android-chrome-192.png delete mode 100644 sites/kit.svelte.dev/static/images/svelte-android-chrome-512.png delete mode 100644 sites/kit.svelte.dev/static/images/svelte-kit-horizontal.svg delete mode 100644 sites/kit.svelte.dev/static/images/twitter-thumbnail.jpg delete mode 100644 sites/kit.svelte.dev/static/manifest.json delete mode 100644 sites/kit.svelte.dev/static/opensearch.xml delete mode 100644 sites/kit.svelte.dev/static/robots.txt delete mode 100644 sites/kit.svelte.dev/svelte.config.js delete mode 100644 sites/kit.svelte.dev/tsconfig.json delete mode 100644 sites/kit.svelte.dev/vercel.json delete mode 100644 sites/kit.svelte.dev/vite.config.js diff --git a/package.json b/package.json index e0a5dd431af5..7c2bb37ed198 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,8 @@ "@svitejs/changesets-changelog-github-compact": "^1.1.0", "eslint": "^9.6.0", "playwright": "^1.44.1", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", "typescript-eslint": "^8.0.0" }, "packageManager": "pnpm@9.12.1", diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index f4fc6b5895b8..c61c053171cf 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -79,12 +79,11 @@ export interface ActionFailure | undefined = u [uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure } -type UnpackValidationError = - T extends ActionFailure - ? X - : T extends void - ? undefined // needs to be undefined, because void will corrupt union type - : T; +type UnpackValidationError = T extends ActionFailure + ? X + : T extends void + ? undefined // needs to be undefined, because void will corrupt union type + : T; /** * This object is passed to the `adapt` function of adapters. diff --git a/packages/kit/src/runtime/server/page/render.js b/packages/kit/src/runtime/server/page/render.js index 6c275c6d968e..6d8b8eb44633 100644 --- a/packages/kit/src/runtime/server/page/render.js +++ b/packages/kit/src/runtime/server/page/render.js @@ -566,9 +566,8 @@ function get_data(event, options, nodes, csp, global) { str = devalue.uneval({ id, data, error }, replacer); } - push( - `${global}.resolve(${str})\n` - ); + const nonce = csp.script_needs_nonce ? ` nonce="${csp.nonce}"` : ''; + push(`${global}.resolve(${str})\n`); if (count === 0) done(); } ); diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index ff5299a1f94c..cacc70c9c613 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -61,12 +61,11 @@ declare module '@sveltejs/kit' { [uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure } - type UnpackValidationError = - T extends ActionFailure - ? X - : T extends void - ? undefined // needs to be undefined, because void will corrupt union type - : T; + type UnpackValidationError = T extends ActionFailure + ? X + : T extends void + ? undefined // needs to be undefined, because void will corrupt union type + : T; /** * This object is passed to the `adapt` function of adapters. diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 341640a9b301..99eb9d77921d 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -42,7 +42,6 @@ "@types/node": "^18.19.48", "@types/prompts": "^2.4.9", "@types/semver": "^7.5.6", - "prettier": "^3.1.1", "svelte": "^4.2.10", "vitest": "^2.0.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee1c5ce662e6..682ac22e7c49 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,12 @@ importers: playwright: specifier: ^1.44.1 version: 1.44.1 + prettier: + specifier: ^3.1.1 + version: 3.1.1 + prettier-plugin-svelte: + specifier: ^3.1.2 + version: 3.1.2(prettier@3.1.1)(svelte@4.2.19) typescript-eslint: specifier: ^8.0.0 version: 8.4.0(eslint@9.6.0)(typescript@5.4.5) @@ -1061,9 +1067,6 @@ importers: '@types/semver': specifier: ^7.5.6 version: 7.5.8 - prettier: - specifier: ^3.1.1 - version: 3.2.5 svelte: specifier: ^4.2.10 version: 4.2.19 @@ -1100,7 +1103,7 @@ importers: version: 7.5.8 prettier: specifier: ^3.1.1 - version: 3.2.5 + version: 3.1.1 svelte: specifier: ^4.2.10 version: 4.2.19 @@ -1165,85 +1168,6 @@ importers: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) - sites/kit.svelte.dev: - dependencies: - d3-geo: - specifier: ^3.1.0 - version: 3.1.1 - d3-geo-projection: - specifier: ^4.0.0 - version: 4.0.0 - topojson-client: - specifier: ^3.1.0 - version: 3.1.0 - devDependencies: - '@sveltejs/adapter-vercel': - specifier: workspace:^ - version: link:../../packages/adapter-vercel - '@sveltejs/amp': - specifier: workspace:^ - version: link:../../packages/amp - '@sveltejs/enhanced-img': - specifier: workspace:^ - version: link:../../packages/enhanced-img - '@sveltejs/kit': - specifier: workspace:^ - version: link:../../packages/kit - '@sveltejs/site-kit': - specifier: 6.0.0-next.64 - version: 6.0.0-next.64(@sveltejs/kit@packages+kit)(svelte@4.2.19) - '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) - '@types/d3-geo': - specifier: ^3.1.0 - version: 3.1.0 - '@types/node': - specifier: ^18.19.48 - version: 18.19.50 - '@vercel/speed-insights': - specifier: ^1.0.0 - version: 1.0.11(@sveltejs/kit@packages+kit)(svelte@4.2.19) - browserslist: - specifier: ^4.22.2 - version: 4.23.0 - flexsearch: - specifier: ^0.7.31 - version: 0.7.43 - lightningcss: - specifier: ^1.22.1 - version: 1.24.1 - marked: - specifier: ^12.0.0 - version: 12.0.1 - prettier: - specifier: ^3.1.1 - version: 3.2.5 - prettier-plugin-svelte: - specifier: ^3.1.2 - version: 3.1.2(prettier@3.2.5)(svelte@4.2.19) - prism-svelte: - specifier: ^0.5.0 - version: 0.5.0 - prismjs: - specifier: ^1.29.0 - version: 1.29.0 - shiki-twoslash: - specifier: ^3.1.2 - version: 3.1.2(typescript@5.0.4) - svelte: - specifier: ^4.2.10 - version: 4.2.19 - typescript: - specifier: 5.0.4 - version: 5.0.4 - vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) - vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) - packages: '@aashutoshrathi/word-wrap@1.2.6': @@ -2013,12 +1937,6 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 - '@sveltejs/site-kit@6.0.0-next.64': - resolution: {integrity: sha512-SosLY07DBA79yJhRR9vQpk9eXlSc3VjzOlIJQFvPzgsbu727rq5u3dudFEsm0NeQFoAF+NNgDYi5D85v5Yc+vQ==} - peerDependencies: - '@sveltejs/kit': ^1.20.0 - svelte: ^4.0.0 - '@sveltejs/vite-plugin-svelte-inspector@2.1.0': resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {node: ^18.0.0 || >=20} @@ -2047,18 +1965,12 @@ packages: '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - '@types/d3-geo@3.1.0': - resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} - '@types/eslint@8.56.12': resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/geojson@7946.0.14': - resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2143,43 +2055,11 @@ packages: resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript/twoslash@3.1.0': - resolution: {integrity: sha512-kTwMUQ8xtAZaC4wb2XuLkPqFVBj2dNBueMQ89NWEuw87k2nLBbuafeG5cob/QEr6YduxIdTVUjix0MtC7mPlmg==} - - '@typescript/vfs@1.3.4': - resolution: {integrity: sha512-RbyJiaAGQPIcAGWFa3jAXSuAexU4BFiDRF1g3hy7LmRqfNpYlTQWGXjcrOaVZjJ8YkkpuwG0FcsYvtWQpd9igQ==} - - '@typescript/vfs@1.3.5': - resolution: {integrity: sha512-pI8Saqjupf9MfLw7w2+og+fmb0fZS0J6vsKXXrp4/PDXEFvntgzXmChCXC/KefZZS0YGS6AT8e0hGAJcTsdJlg==} - '@vercel/nft@0.27.1': resolution: {integrity: sha512-K6upzYHCV1cq2gP83r1o8uNV1vwvAlozvMqp7CEjYWxo0CMI8/4jKcDkVjlypVhrfZ54SXwh9QbH0ZIk/vQCsw==} engines: {node: '>=16'} hasBin: true - '@vercel/speed-insights@1.0.11': - resolution: {integrity: sha512-l9hzSNmJvb2Yqpgd/BzpiT0J0aQDdtqxOf3Xm+iW4PICxVvhY1ef7Otdx4GXI+88dVkws57qMzXiShz19gXzSQ==} - peerDependencies: - '@sveltejs/kit': ^1 || ^2 - next: '>= 13' - react: ^18 || ^19 - svelte: ^4 - vue: ^3 - vue-router: ^4 - peerDependenciesMeta: - '@sveltejs/kit': - optional: true - next: - optional: true - react: - optional: true - svelte: - optional: true - vue: - optional: true - vue-router: - optional: true - '@vitest/expect@2.0.1': resolution: {integrity: sha512-yw70WL3ZwzbI2O3MOXYP2Shf4vqVkS3q5FckLJ6lhT9VMMtDyWdofD53COZcoeuHwsBymdOZp99r5bOr5g+oeA==} @@ -2307,11 +2187,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2320,9 +2195,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001609: - resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} - capnp-ts@0.7.0: resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} @@ -2381,13 +2253,6 @@ packages: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -2438,19 +2303,6 @@ packages: engines: {node: '>=4'} hasBin: true - d3-array@3.2.4: - resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} - engines: {node: '>=12'} - - d3-geo-projection@4.0.0: - resolution: {integrity: sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==} - engines: {node: '>=12'} - hasBin: true - - d3-geo@3.1.1: - resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} - engines: {node: '>=12'} - data-uri-to-buffer@2.0.2: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} @@ -2537,9 +2389,6 @@ packages: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: resolution: {directory: packages/kit/test/apps/dev-only/_test_dependencies/cjs-only, type: directory} - electron-to-chromium@1.4.736: - resolution: {integrity: sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q==} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2561,10 +2410,6 @@ packages: engines: {node: '>=12'} hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2712,10 +2557,6 @@ packages: picomatch: optional: true - fenceparser@1.1.1: - resolution: {integrity: sha512-VdkTsK7GWLT0VWMK5S5WTAPn61wJ98WPFwJiRHumhg4ESNUO/tnkU8bzzzc62o6Uk1SVhuZFLnakmDA4SGV7wA==} - engines: {node: '>=12'} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -2742,9 +2583,6 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - flexsearch@0.7.43: - resolution: {integrity: sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg==} - fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -2899,10 +2737,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} - engines: {node: '>=12'} - is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -2974,9 +2808,6 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -3090,10 +2921,6 @@ packages: lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} @@ -3104,11 +2931,6 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} - marked@12.0.1: - resolution: {integrity: sha512-Y1/V2yafOcOdWQCX0XpAKXzDakPOpn6U0YLxTJs3cww6VxOzZV1BTOOYWLvH3gX38cq+iLwljHHTnMtlDfg01Q==} - engines: {node: '>= 18'} - hasBin: true - marked@14.1.1: resolution: {integrity: sha512-eS59oxof5eBVDCKTs+mJbvB/6Vq137GbimF9wkTIlto2/B2ppY5nigUUQgKVmA3bI2mPTIshUyDj5j612ZxlQQ==} engines: {node: '>= 18'} @@ -3220,9 +3042,6 @@ packages: resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -3428,8 +3247,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + prettier@3.1.1: + resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} engines: {node: '>=14'} hasBin: true @@ -3440,13 +3259,6 @@ packages: printable-characters@1.0.42: resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} - prism-svelte@0.5.0: - resolution: {integrity: sha512-db91Bf3pRGKDPz1lAqLFSJXeW13mulUJxhycysFpfXV5MIK7RgWWK2E5aPAa71s8TCzQUXxF5JOV42/iOs6QkA==} - - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -3591,14 +3403,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki-twoslash@3.1.2: - resolution: {integrity: sha512-JBcRIIizi+exIA/OUhYkV6jtyeZco0ykCkIRd5sgwIt1Pm4pz+maoaRZpm6SkhPwvif4fCA7xOtJOykhpIV64Q==} - peerDependencies: - typescript: '>3' - - shiki@0.10.1: - resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} - siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -3726,12 +3530,6 @@ packages: peerDependencies: svelte: ^3.0.0 || ^4.0.0 || ^5.0.0-next.1 - svelte-persisted-store@0.9.4: - resolution: {integrity: sha512-Em3cDSsd3fAkQhvNc4+V7ZT86GnIkFrlcKK/oNSHFhF5fbNoavdxvtTZ0pCF2ueG/Oqg5kSbAFxn0rkeICpHUA==} - engines: {node: '>=0.14'} - peerDependencies: - svelte: ^3.48.0 || ^4.0.0 || ^5.0.0-next.0 - svelte-preprocess@6.0.0: resolution: {integrity: sha512-sbyHnWBwIphuaJWC7hnJd6ZoW/VN0va3jVb/8dDfeT2+0hVmo1DCx+zBK0/JfUKQmzg/FOEtcsGKRnbt8pRRkw==} engines: {node: '>= 18.0.0'} @@ -3824,10 +3622,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - topojson-client@3.1.0: - resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} - hasBin: true - totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -3864,11 +3658,6 @@ packages: typescript: optional: true - typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} - hasBin: true - typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} @@ -3891,12 +3680,6 @@ packages: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -3981,12 +3764,6 @@ packages: jsdom: optional: true - vscode-oniguruma@1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - - vscode-textmate@5.2.0: - resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} - webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -4744,13 +4521,6 @@ snapshots: tiny-glob: 0.2.9 vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) - '@sveltejs/site-kit@6.0.0-next.64(@sveltejs/kit@packages+kit)(svelte@4.2.19)': - dependencies: - '@sveltejs/kit': link:packages/kit - esm-env: 1.0.0 - svelte: 4.2.19 - svelte-persisted-store: 0.9.4(svelte@4.2.19) - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) @@ -4793,10 +4563,6 @@ snapshots: '@types/cookie@0.6.0': {} - '@types/d3-geo@3.1.0': - dependencies: - '@types/geojson': 7946.0.14 - '@types/eslint@8.56.12': dependencies: '@types/estree': 1.0.6 @@ -4804,8 +4570,6 @@ snapshots: '@types/estree@1.0.6': {} - '@types/geojson@7946.0.14': {} - '@types/json-schema@7.0.15': {} '@types/node-forge@1.3.11': @@ -4916,26 +4680,6 @@ snapshots: '@typescript-eslint/types': 8.4.0 eslint-visitor-keys: 3.4.3 - '@typescript/twoslash@3.1.0': - dependencies: - '@typescript/vfs': 1.3.5 - debug: 4.3.5 - lz-string: 1.5.0 - transitivePeerDependencies: - - supports-color - - '@typescript/vfs@1.3.4': - dependencies: - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - - '@typescript/vfs@1.3.5': - dependencies: - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - '@vercel/nft@0.27.1': dependencies: '@mapbox/node-pre-gyp': 1.0.11 @@ -4954,11 +4698,6 @@ snapshots: - encoding - supports-color - '@vercel/speed-insights@1.0.11(@sveltejs/kit@packages+kit)(svelte@4.2.19)': - optionalDependencies: - '@sveltejs/kit': link:packages/kit - svelte: 4.2.19 - '@vitest/expect@2.0.1': dependencies: '@vitest/spy': 2.0.1 @@ -5083,19 +4822,10 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001609 - electron-to-chromium: 1.4.736 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - cac@6.7.14: {} callsites@3.1.0: {} - caniuse-lite@1.0.30001609: {} - capnp-ts@0.7.0: dependencies: debug: 4.3.5 @@ -5168,10 +4898,6 @@ snapshots: color-convert: 2.0.1 color-string: 1.9.1 - commander@2.20.3: {} - - commander@7.2.0: {} - commondir@1.0.1: {} concat-map@0.0.1: {} @@ -5211,20 +4937,6 @@ snapshots: cssesc@3.0.0: {} - d3-array@3.2.4: - dependencies: - internmap: 2.0.3 - - d3-geo-projection@4.0.0: - dependencies: - commander: 7.2.0 - d3-array: 3.2.4 - d3-geo: 3.1.1 - - d3-geo@3.1.1: - dependencies: - d3-array: 3.2.4 - data-uri-to-buffer@2.0.2: {} dataloader@1.4.0: {} @@ -5251,7 +4963,8 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@1.0.3: {} + detect-libc@1.0.3: + optional: true detect-libc@2.0.3: {} @@ -5284,8 +4997,6 @@ snapshots: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: {} - electron-to-chromium@1.4.736: {} - emoji-regex@8.0.0: {} enhanced-resolve@5.17.1: @@ -5349,8 +5060,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - escalade@3.1.2: {} - escape-string-regexp@4.0.0: {} eslint-compat-utils@0.5.1(eslint@9.6.0): @@ -5537,8 +5246,6 @@ snapshots: optionalDependencies: picomatch: 4.0.2 - fenceparser@1.1.1: {} - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -5566,8 +5273,6 @@ snapshots: flatted@3.3.1: {} - flexsearch@0.7.43: {} - fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -5720,8 +5425,6 @@ snapshots: inherits@2.0.4: {} - internmap@2.0.3: {} - is-arrayish@0.3.2: {} is-binary-path@2.1.0: @@ -5779,8 +5482,6 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - jsonc-parser@3.2.1: {} - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -5840,6 +5541,7 @@ snapshots: lightningcss-linux-x64-gnu: 1.24.1 lightningcss-linux-x64-musl: 1.24.1 lightningcss-win32-x64-msvc: 1.24.1 + optional: true lilconfig@2.1.0: {} @@ -5872,8 +5574,6 @@ snapshots: pseudomap: 1.0.2 yallist: 2.1.2 - lz-string@1.5.0: {} - magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 @@ -5886,8 +5586,6 @@ snapshots: dependencies: semver: 6.3.1 - marked@12.0.1: {} - marked@14.1.1: {} mdn-data@2.0.30: {} @@ -5978,8 +5676,6 @@ snapshots: node-gyp-build@4.8.0: {} - node-releases@2.0.14: {} - nopt@5.0.0: dependencies: abbrev: 1.1.1 @@ -6143,14 +5839,14 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.1.2(prettier@3.2.5)(svelte@4.2.19): + prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.19): dependencies: - prettier: 3.2.5 + prettier: 3.1.1 svelte: 4.2.19 prettier@2.8.8: {} - prettier@3.2.5: {} + prettier@3.1.1: {} pretty-format@29.7.0: dependencies: @@ -6160,10 +5856,6 @@ snapshots: printable-characters@1.0.42: {} - prism-svelte@0.5.0: {} - - prismjs@1.29.0: {} - prompts@2.4.2: dependencies: kleur: 3.0.3 @@ -6327,22 +6019,6 @@ snapshots: shebang-regex@3.0.0: {} - shiki-twoslash@3.1.2(typescript@5.0.4): - dependencies: - '@typescript/twoslash': 3.1.0 - '@typescript/vfs': 1.3.4 - fenceparser: 1.1.1 - shiki: 0.10.1 - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - - shiki@0.10.1: - dependencies: - jsonc-parser: 3.2.1 - vscode-oniguruma: 1.7.0 - vscode-textmate: 5.2.0 - siginfo@2.0.0: {} signal-exit@3.0.7: {} @@ -6464,10 +6140,6 @@ snapshots: dependencies: svelte: 4.2.19 - svelte-persisted-store@0.9.4(svelte@4.2.19): - dependencies: - svelte: 4.2.19 - svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19)(typescript@5.4.5): dependencies: detect-indent: 6.1.0 @@ -6543,10 +6215,6 @@ snapshots: dependencies: is-number: 7.0.0 - topojson-client@3.1.0: - dependencies: - commander: 2.20.3 - totalist@3.0.1: {} tr46@0.0.3: {} @@ -6581,8 +6249,6 @@ snapshots: - eslint - supports-color - typescript@5.0.4: {} - typescript@5.4.5: {} ufo@1.5.3: {} @@ -6604,12 +6270,6 @@ snapshots: universalify@0.1.2: {} - update-browserslist-db@1.0.13(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.1.0 - uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -6694,10 +6354,6 @@ snapshots: - supports-color - terser - vscode-oniguruma@1.7.0: {} - - vscode-textmate@5.2.0: {} - webidl-conversions@3.0.1: {} whatwg-url@5.0.0: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 061febda7d04..a390bbed591a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,5 @@ packages: - 'packages/*' - - 'sites/*' - 'packages/adapter-static/test/apps/*' - 'packages/kit/test/apps/*' - 'packages/kit/test/prerendering/*' diff --git a/sites/kit.svelte.dev/.gitignore b/sites/kit.svelte.dev/.gitignore deleted file mode 100644 index ee68d9012e07..000000000000 --- a/sites/kit.svelte.dev/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.DS_Store -.env -/.svelte-kit/ -/.snippets -/.vercel/ -/build/ -/functions/ -/src/lib/generated/type-info.js diff --git a/sites/kit.svelte.dev/.prettierignore b/sites/kit.svelte.dev/.prettierignore deleted file mode 100644 index 1a660d2ed75c..000000000000 --- a/sites/kit.svelte.dev/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -src/routes/edge.svg/land-110m.json diff --git a/sites/kit.svelte.dev/README.md b/sites/kit.svelte.dev/README.md deleted file mode 100644 index dcc5e5381231..000000000000 --- a/sites/kit.svelte.dev/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# kit.svelte.dev - -This is the SvelteKit website. The docs live [here](../../documentation). - -## Developing - -Once you've [set up the repo](../../CONTRIBUTING.md#preparing), `cd` into this directory and start the dev server: - -```bash -cd sites/kit.svelte.dev -pnpm run update -pnpm dev -``` diff --git a/sites/kit.svelte.dev/package.json b/sites/kit.svelte.dev/package.json deleted file mode 100644 index 124d9c9f4588..000000000000 --- a/sites/kit.svelte.dev/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "kit.svelte.dev", - "private": true, - "version": "0.0.1", - "scripts": { - "lint": "prettier --check .", - "format": "prettier --write .", - "update": "node scripts/types", - "dev": "pnpm run update && vite dev", - "build": "pnpm run update && vite build", - "prebuild": "test \"$CI\" = true && npx pnpm install --store=node_modules/.pnpm-store || echo skipping pnpm install", - "preview": "vite preview", - "test": "vitest run" - }, - "devDependencies": { - "@sveltejs/adapter-vercel": "workspace:^", - "@sveltejs/amp": "workspace:^", - "@sveltejs/enhanced-img": "workspace:^", - "@sveltejs/kit": "workspace:^", - "@sveltejs/site-kit": "6.0.0-next.64", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "@types/d3-geo": "^3.1.0", - "@types/node": "^18.19.48", - "@vercel/speed-insights": "^1.0.0", - "browserslist": "^4.22.2", - "flexsearch": "^0.7.31", - "lightningcss": "^1.22.1", - "marked": "^12.0.0", - "prettier": "^3.1.1", - "prettier-plugin-svelte": "^3.1.2", - "prism-svelte": "^0.5.0", - "prismjs": "^1.29.0", - "shiki-twoslash": "^3.1.2", - "svelte": "^4.2.10", - "typescript": "5.0.4", - "vite": "^5.3.2", - "vitest": "^2.0.1" - }, - "type": "module", - "dependencies": { - "d3-geo": "^3.1.0", - "d3-geo-projection": "^4.0.0", - "topojson-client": "^3.1.0" - } -} diff --git a/sites/kit.svelte.dev/scripts/tsconfig.json b/sites/kit.svelte.dev/scripts/tsconfig.json deleted file mode 100644 index d47321a09d38..000000000000 --- a/sites/kit.svelte.dev/scripts/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "module": "ESNext", - "target": "ESNext", - "moduleResolution": "Bundler", - "allowJs": true, - "outDir": "./dist", - "checkJs": true, - "strict": true - }, - "include": ["**/*.ts", "**/*.js"] -} diff --git a/sites/kit.svelte.dev/scripts/types/index.js b/sites/kit.svelte.dev/scripts/types/index.js deleted file mode 100644 index 556cc47bbd9c..000000000000 --- a/sites/kit.svelte.dev/scripts/types/index.js +++ /dev/null @@ -1,327 +0,0 @@ -import { readFile, readdir, writeFile } from 'node:fs/promises'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import { format } from 'prettier'; -import ts from 'typescript'; -import { mkdirp } from '../../../../packages/kit/src/utils/filesystem.js'; - -/** - * @typedef {{ - * name: string; - * comment: string; - * markdown?: string; - * snippet: string; - * deprecated: string | null; - * children: Extracted[] } - * } Extracted - */ - -/** @type {Array<{ name: string; comment: string; exports: Extracted[]; types: Extracted[]; exempt?: boolean; }>} */ -const modules = []; - -/** - * @param {string} code - * @param {ts.NodeArray} statements - */ -async function get_types(code, statements) { - /** @type {Extracted[]} */ - const exports = []; - - /** @type {Extracted[]} */ - const types = []; - - if (statements) { - for (const statement of statements) { - const modifiers = ts.canHaveModifiers(statement) ? ts.getModifiers(statement) : undefined; - - const export_modifier = modifiers?.find( - (modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword - ); - - if (!export_modifier) continue; - - if ( - ts.isClassDeclaration(statement) || - ts.isInterfaceDeclaration(statement) || - ts.isTypeAliasDeclaration(statement) || - ts.isModuleDeclaration(statement) || - ts.isVariableStatement(statement) || - ts.isFunctionDeclaration(statement) - ) { - const name_node = ts.isVariableStatement(statement) - ? statement.declarationList.declarations[0] - : statement; - - // @ts-ignore no idea why it's complaining here - const name = name_node.name?.escapedText; - - let start = statement.pos; - let comment = ''; - /** @type {string | null} */ - let deprecated_notice = null; - - // @ts-ignore i think typescript is bad at typescript - if (statement.jsDoc) { - // @ts-ignore - const jsDoc = statement.jsDoc[0]; - - // `@link` JSDoc tags (and maybe others?) turn this property into an array, which we need to join manually - if (Array.isArray(jsDoc.comment)) { - comment = jsDoc.comment - .map(({ name, text }) => (name ? `\`${name.escapedText}\`` : text)) - .join(''); - } else { - comment = jsDoc.comment; - } - - if (jsDoc?.tags?.[0]?.tagName?.escapedText === 'deprecated') { - deprecated_notice = jsDoc.tags[0].comment; - } - - // @ts-ignore - start = jsDoc.end; - } - - const i = code.indexOf('export', start); - start = i + 6; - - /** @type {Extracted[]} */ - let children = []; - - let snippet_unformatted = code.slice(start, statement.end).trim(); - - if (ts.isInterfaceDeclaration(statement) || ts.isClassDeclaration(statement)) { - if (statement.members.length > 0) { - for (const member of statement.members) { - // @ts-ignore - children.push(munge_type_element(member)); - } - - children = children.filter(Boolean); - - // collapse `interface Foo {/* lots of stuff*/}` into `interface Foo {…}` - const first = statement.members.at(0); - const last = statement.members.at(-1); - - let body_start = first.pos - start; - while (snippet_unformatted[body_start] !== '{') body_start -= 1; - - let body_end = last.end - start; - while (snippet_unformatted[body_end] !== '}') body_end += 1; - - snippet_unformatted = - snippet_unformatted.slice(0, body_start + 1) + - '/*…*/' + - snippet_unformatted.slice(body_end); - } - } - - const snippet = ( - await format(snippet_unformatted, { - parser: 'typescript', - printWidth: 60, - useTabs: true, - singleQuote: true, - trailingComma: 'none' - }) - ) - .replace(/\s*(\/\*…\*\/)\s*/g, '/*…*/') - .trim(); - - const collection = - ts.isVariableStatement(statement) || ts.isFunctionDeclaration(statement) - ? exports - : types; - - collection.push({ - name, - comment, - snippet, - children, - deprecated: deprecated_notice - }); - } - } - - types.sort((a, b) => (a.name < b.name ? -1 : 1)); - exports.sort((a, b) => (a.name < b.name ? -1 : 1)); - } - - return { types, exports }; -} - -/** - * @param {ts.TypeElement} member - */ -function munge_type_element(member, depth = 1) { - // @ts-ignore - const doc = member.jsDoc?.[0]; - - if (/private api/i.test(doc?.comment)) return; - - /** @type {string[]} */ - const children = []; - - const name = member.name?.escapedText ?? member.name?.getText() ?? 'unknown'; - let snippet = member.getText(); - - for (let i = -1; i < depth; i += 1) { - snippet = snippet.replace(/^\t/gm, ''); - } - - if ( - ts.isPropertySignature(member) && - ts.isTypeLiteralNode(member.type) && - member.type.members.some((member) => member.jsDoc?.[0].comment) - ) { - let a = 0; - while (snippet[a] !== '{') a += 1; - - snippet = snippet.slice(0, a + 1) + '/*…*/}'; - - for (const child of member.type.members) { - children.push(munge_type_element(child, depth + 1)); - } - } - - /** @type {string[]} */ - const bullets = []; - - for (const tag of doc?.tags ?? []) { - const type = tag.tagName.escapedText; - - switch (tag.tagName.escapedText) { - case 'private': - bullets.push(`- private ${tag.comment || ''}`); - break; - - case 'readonly': - bullets.push(`- readonly ${tag.comment || ''}`); - break; - - case 'param': - bullets.push(`- \`${tag.name.getText()}\` ${tag.comment || ''}`); - break; - - case 'default': - bullets.push(`- default \`${tag.comment || ''}\``); - break; - - case 'returns': - bullets.push(`- returns ${tag.comment || ''}`); - break; - - case 'deprecated': - bullets.push(`- deprecated ${tag.comment || ''}`); - break; - - default: - console.log(`unhandled JSDoc tag: ${type}`); - } - } - - return { - name, - snippet, - comment: (doc?.comment ?? '') - .replace(/\/\/\/ type: (.+)/g, '/** @type {$1} */') - .replace(/^( )+/gm, (match, spaces) => { - return '\t'.repeat(match.length / 2); - }), - bullets, - children - }; -} - -/** - * Type declarations include fully qualified URLs so that they become links when - * you hover over names in an editor with TypeScript enabled. We need to remove - * the origin so that they become root-relative, so that they work in preview - * deployments and when developing locally - * @param {string} str - */ -function strip_origin(str) { - return str.replace(/https:\/\/kit\.svelte\.dev/g, ''); -} - -/** - * @param {string} file - */ -async function read_d_ts_file(file) { - const resolved = path.resolve('../../packages/kit', file); - - // We can't use JSDoc comments inside JSDoc, so we would get ts(7031) errors if - // we didn't ignore this error specifically for `/// file:` code examples - const str = await readFile(resolved, 'utf-8'); - - //! For some reason, typescript 5.1> is reading this @errors as a jsdoc tag, and splitting it into separate pieces - return str.replace(/(\s*\*\s*)```js([\s\S]+?)```/g, (match, prefix, code) => { - return `${prefix}\`\`\`js${prefix}// @errors: 7031${code}\`\`\``; - }); -} - -{ - const code = await read_d_ts_file('src/types/private.d.ts'); - const node = ts.createSourceFile('private.d.ts', code, ts.ScriptTarget.Latest, true); - - modules.push({ - name: 'Private types', - comment: '', - ...(await get_types(code, node.statements)) - }); -} - -const dir = fileURLToPath( - new URL('../../../../packages/kit/src/types/synthetic', import.meta.url).href -); -for (const file of await readdir(dir)) { - if (!file.endsWith('.md')) continue; - - const comment = strip_origin(await read_d_ts_file(`${dir}/${file}`)); - - modules.push({ - name: file.replace(/\+/g, '/').slice(0, -3), - comment, - exports: [], - types: [], - exempt: true - }); -} - -{ - const code = await read_d_ts_file('types/index.d.ts'); - const node = ts.createSourceFile('index.d.ts', code, ts.ScriptTarget.Latest, true); - - for (const statement of node.statements) { - if (ts.isModuleDeclaration(statement)) { - // @ts-ignore - const name = statement.name.text || statement.name.escapedText; - - // @ts-ignore - const comment = strip_origin(statement.jsDoc?.[0].comment ?? ''); - - modules.push({ - name, - comment, - // @ts-ignore - ...(await get_types(code, statement.body?.statements)) - }); - } - } -} - -modules.sort((a, b) => (a.name < b.name ? -1 : 1)); - -mkdirp('src/lib/generated'); -writeFile( - 'src/lib/generated/type-info.js', - ` -/* This file is generated by running \`pnpm run update\` - in the sites/kit.svelte.dev directory — do not edit it */ -export const modules = /** @type {import('@sveltejs/site-kit/markdown').Modules} */ (${JSON.stringify( - modules.filter((m) => !m.name.startsWith('_')), - null, - ' ' - )}); -`.trim() -); diff --git a/sites/kit.svelte.dev/src/app.d.ts b/sites/kit.svelte.dev/src/app.d.ts deleted file mode 100644 index f59b884c51ed..000000000000 --- a/sites/kit.svelte.dev/src/app.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -// See https://kit.svelte.dev/docs/types#app -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface Platform {} - } -} - -export {}; diff --git a/sites/kit.svelte.dev/src/app.html b/sites/kit.svelte.dev/src/app.html deleted file mode 100644 index cdd57db42d05..000000000000 --- a/sites/kit.svelte.dev/src/app.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - %sveltekit.head% - - - - -
%sveltekit.body%
- - diff --git a/sites/kit.svelte.dev/src/hooks.server.js b/sites/kit.svelte.dev/src/hooks.server.js deleted file mode 100644 index 572abb94ea5c..000000000000 --- a/sites/kit.svelte.dev/src/hooks.server.js +++ /dev/null @@ -1,23 +0,0 @@ -const redirects = { - '/docs/amp': '/docs/seo#manual-setup-amp', - '/docs/assets': '/docs/images', - '/docs/typescript': '/docs/types' -}; - -const preload_types = ['js', 'css', 'font']; - -/** @type {import('@sveltejs/kit').Handle} */ -export function handle({ event, resolve }) { - if (event.url.pathname in redirects) { - return new Response(undefined, { - status: 308, - headers: { - location: redirects[event.url.pathname] - } - }); - } - - return resolve(event, { - preload: ({ type }) => preload_types.includes(type) - }); -} diff --git a/sites/kit.svelte.dev/src/lib/icons/left-small.svg b/sites/kit.svelte.dev/src/lib/icons/left-small.svg deleted file mode 100644 index ee413e35514e..000000000000 --- a/sites/kit.svelte.dev/src/lib/icons/left-small.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/sites/kit.svelte.dev/src/lib/icons/pause.svg b/sites/kit.svelte.dev/src/lib/icons/pause.svg deleted file mode 100644 index a01d92df27cf..000000000000 --- a/sites/kit.svelte.dev/src/lib/icons/pause.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/sites/kit.svelte.dev/src/lib/icons/play.svg b/sites/kit.svelte.dev/src/lib/icons/play.svg deleted file mode 100644 index d99c4ec90f44..000000000000 --- a/sites/kit.svelte.dev/src/lib/icons/play.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/sites/kit.svelte.dev/src/lib/icons/plus.svg b/sites/kit.svelte.dev/src/lib/icons/plus.svg deleted file mode 100644 index 4826bcaf2caf..000000000000 --- a/sites/kit.svelte.dev/src/lib/icons/plus.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/sites/kit.svelte.dev/src/lib/icons/search.svg b/sites/kit.svelte.dev/src/lib/icons/search.svg deleted file mode 100644 index b588f60bf2a1..000000000000 --- a/sites/kit.svelte.dev/src/lib/icons/search.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - \ No newline at end of file diff --git a/sites/kit.svelte.dev/src/lib/icons/up-small.svg b/sites/kit.svelte.dev/src/lib/icons/up-small.svg deleted file mode 100644 index f067962cf72b..000000000000 --- a/sites/kit.svelte.dev/src/lib/icons/up-small.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/sites/kit.svelte.dev/src/lib/server/docs/index.js b/sites/kit.svelte.dev/src/lib/server/docs/index.js deleted file mode 100644 index 2c467fa9f6c2..000000000000 --- a/sites/kit.svelte.dev/src/lib/server/docs/index.js +++ /dev/null @@ -1,127 +0,0 @@ -import { base } from '$app/paths'; -import { modules } from '$lib/generated/type-info.js'; -import { - escape, - extractFrontmatter, - markedTransform, - normalizeSlugify, - removeMarkdown, - replaceExportTypePlaceholders -} from '@sveltejs/site-kit/markdown'; -import { render_content } from '../renderer'; -import { read } from '$app/server'; -import { error } from '@sveltejs/kit'; - -const meta = import.meta.glob('../../../../../../documentation/docs/*/index.md', { - query: '?url', - import: 'default', - eager: true -}); - -const markdown = import.meta.glob( - '../../../../../../documentation/docs/*/[[:digit:]][[:digit:]]-*.md', - { - query: '?url', - import: 'default', - eager: true - } -); - -export const categories = {}; -export const pages = {}; - -for (const [file, asset] of Object.entries(meta)) { - const slug = /\/\d{2}-(.+)\/index\.md$/.exec(file)[1]; - - const { - metadata: { title, draft } - } = extractFrontmatter(await read(asset).text()); - - if (draft) continue; - - categories[slug] = { - title, - pages: [] - }; -} - -for (const [file, asset] of Object.entries(markdown)) { - const [, category_dir, basename] = /\/(\d{2}-.+?)\/(\d{2}-.+\.md)$/.exec(file); - const category_slug = category_dir.slice(3); - const slug = basename.slice(3, -3); // strip the number prefix and .md suffix - - const category = categories[category_slug]; - if (!category) continue; // draft - - const { - metadata: { draft, title, rank }, - body - } = extractFrontmatter(await read(asset).text()); - - if (draft === 'true') continue; - - category.pages.push({ - title, - path: `${base}/docs/${slug}` - }); - - pages[slug] = { - rank: +rank || undefined, - category: category.title, - title, - file: `${category_dir}/${basename}`, - slug, - path: slug, - sections: await get_sections(body), - body - }; -} - -/** @param {string} slug */ -export async function get_parsed_docs(slug) { - const page = pages[slug]; - if (!page) error(404); - - // TODO this should probably use a type from site-kit - return { - category: page.category, - title: page.title, - file: page.file, - path: page.path, - slug: page.slug, - sections: page.sections, - content: await render_content(page.file, page.body) - }; -} - -export function get_docs_list() { - return Object.values(categories); -} - -/** @param {string} markdown */ -async function get_sections(markdown) { - /** @type {import('./types.js').Section[]} */ - const second_level_headings = []; - - const pattern = /^##\s+(.*)$/gm; - let match; - - const placeholders_rendered = await replaceExportTypePlaceholders(markdown, modules); - - while ((match = pattern.exec(placeholders_rendered)) !== null) { - second_level_headings.push({ - title: removeMarkdown( - escape(await markedTransform(match[1], { paragraph: (txt) => txt })) - .replace(/<\/?code>/g, '') - .replace(/'/g, "'") - .replace(/"/g, '"') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/<(\/)?(em|b|strong|code)>/g, '') - ), - slug: normalizeSlugify(match[1]) - }); - } - - return second_level_headings; -} diff --git a/sites/kit.svelte.dev/src/lib/server/docs/types.d.ts b/sites/kit.svelte.dev/src/lib/server/docs/types.d.ts deleted file mode 100644 index 6b984d72eb27..000000000000 --- a/sites/kit.svelte.dev/src/lib/server/docs/types.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -export type DocsData = Category[]; - -export interface Section { - title: string; - slug: string; - /** Currently, we are only going with 2 level headings, so this will be undefined. In future, we may want to support 3 levels, in which case this will be a list of sections */ - sections?: Section[]; -} - -export type Category = { - title: string; - slug: string; - pages: Page[]; -}; - -export type Page = { - title: string; - slug: string; - file: string; - path: string; - category: string; - content: string; - sections: Section[]; -}; diff --git a/sites/kit.svelte.dev/src/lib/server/renderer.js b/sites/kit.svelte.dev/src/lib/server/renderer.js deleted file mode 100644 index 44bd5069beff..000000000000 --- a/sites/kit.svelte.dev/src/lib/server/renderer.js +++ /dev/null @@ -1,81 +0,0 @@ -import { modules } from '$lib/generated/type-info.js'; -import { renderContentMarkdown, slugify } from '@sveltejs/site-kit/markdown'; -import { parse_route_id } from '../../../../../packages/kit/src/utils/routing.js'; - -/** - * @param {string} filename - * @param {string} body - */ -export const render_content = (filename, body) => - renderContentMarkdown(filename, body, { - cacheCodeSnippets: true, - modules, - - resolveTypeLinks: (module_name, type_name) => { - if (module_name === '@sveltejs/kit') module_name = 'Public Types'; - - return { - page: `/docs/types`, - slug: `${slugify(module_name)}-${slugify(type_name)}` - }; - }, - - twoslashBanner: (filename, source, language, options) => { - const injected = []; - - if ( - source.includes('$app/') || - source.includes('$service-worker') || - source.includes('@sveltejs/kit/') - ) { - injected.push(`// @filename: ambient-kit.d.ts`, `/// `); - } - - if (source.includes('$env/')) { - // TODO we're hardcoding static env vars that are used in code examples - // in the types, which isn't... totally ideal, but will do for now - injected.push( - `declare module '$env/dynamic/private' { export const env: Record }`, - `declare module '$env/dynamic/public' { export const env: Record }`, - `declare module '$env/static/private' { export const API_KEY: string }`, - `declare module '$env/static/public' { export const PUBLIC_BASE_URL: string }` - ); - } - - if (source.includes('./$types') && !source.includes('@filename: $types.d.ts')) { - const params = parse_route_id(`${options.file}` || `+page.${language}`) - .params.map((param) => `${param.name}: string`) - .join(', '); - - injected.push( - `// @filename: $types.d.ts`, - `import type * as Kit from '@sveltejs/kit';`, - `export type PageLoad = Kit.Load<{${params}}>;`, - `export type PageServerLoad = Kit.ServerLoad<{${params}}>;`, - `export type LayoutLoad = Kit.Load<{${params}}>;`, - `export type LayoutServerLoad = Kit.ServerLoad<{${params}}>;`, - `export type RequestHandler = Kit.RequestHandler<{${params}}>;`, - `export type Action = Kit.Action<{${params}}>;`, - `export type Actions = Kit.Actions<{${params}}>;`, - `export type EntryGenerator = () => Promise> | Array<{${params}}>;` - ); - } - - // special case — we need to make allowances for code snippets coming - // from e.g. ambient.d.ts - if (filename.endsWith('30-modules.md')) { - injected.push('// @errors: 7006 7031'); - } - - if (filename.endsWith('10-configuration.md')) { - injected.push('// @errors: 2307'); - } - - // another special case - if (source.includes('$lib/types')) { - injected.push(`declare module '$lib/types' { export interface User {} }`); - } - - return injected.join('\n'); - } - }); diff --git a/sites/kit.svelte.dev/src/routes/+error.svelte b/sites/kit.svelte.dev/src/routes/+error.svelte deleted file mode 100644 index 0751ee710398..000000000000 --- a/sites/kit.svelte.dev/src/routes/+error.svelte +++ /dev/null @@ -1,65 +0,0 @@ - - - - {$page.status} - - -
- {#if $page.status === 404} -

Not found!

- {:else if online} -

Yikes!

- - {#if $page.error.message} -

{$page.status}: {$page.error.message}

- {/if} - -

Please try reloading the page.

- -

- If the error persists, please drop by Discord chatroom - and let us know, or raise an issue on - GitHub. Thanks! -

- {:else} -

It looks like you're offline

- -

Reload the page once you've found the internet.

- {/if} -
- - diff --git a/sites/kit.svelte.dev/src/routes/+layout.server.js b/sites/kit.svelte.dev/src/routes/+layout.server.js deleted file mode 100644 index 8479779fcf81..000000000000 --- a/sites/kit.svelte.dev/src/routes/+layout.server.js +++ /dev/null @@ -1,27 +0,0 @@ -import { fetchBanner } from '@sveltejs/site-kit/components'; - -export const prerender = true; - -export const load = async ({ url, fetch }) => { - const nav_links = fetch('/nav.json').then((r) => r.json()); // TODO why is this behind a `fetch`? does `nav.json` need to be exposed publicly? - const banner = fetchBanner('kit.svelte.dev', fetch); - - return { - nav_title: get_nav_title(url), - nav_links: await nav_links, - banner: await banner - }; -}; - -/** @param {URL} url */ -function get_nav_title(url) { - const list = new Map([[/^docs/, 'Docs']]); - - for (const [regex, title] of list) { - if (regex.test(url.pathname.replace(/^\/(.+)/, '$1'))) { - return title; - } - } - - return ''; -} diff --git a/sites/kit.svelte.dev/src/routes/+layout.svelte b/sites/kit.svelte.dev/src/routes/+layout.svelte deleted file mode 100644 index 39fee2b1c017..000000000000 --- a/sites/kit.svelte.dev/src/routes/+layout.svelte +++ /dev/null @@ -1,103 +0,0 @@ - - -
- - - - - - - -
- -{#if browser} - -{/if} - - diff --git a/sites/kit.svelte.dev/src/routes/+page.js b/sites/kit.svelte.dev/src/routes/+page.js deleted file mode 100644 index ad7a278713ef..000000000000 --- a/sites/kit.svelte.dev/src/routes/+page.js +++ /dev/null @@ -1,5 +0,0 @@ -export function load({ setHeaders }) { - setHeaders({ - 'cache-control': 'public, max-age=60' - }); -} diff --git a/sites/kit.svelte.dev/src/routes/+page.svelte b/sites/kit.svelte.dev/src/routes/+page.svelte deleted file mode 100644 index 4d2963c65641..000000000000 --- a/sites/kit.svelte.dev/src/routes/+page.svelte +++ /dev/null @@ -1,100 +0,0 @@ - - - - SvelteKit • Web development, streamlined - - - - - - - - - - - - {#if schema} - {@html schema} - {/if} - - -
-

SvelteKit

- - - - - - - - - - -
diff --git a/sites/kit.svelte.dev/src/routes/content.json/+server.js b/sites/kit.svelte.dev/src/routes/content.json/+server.js deleted file mode 100644 index af86cda12067..000000000000 --- a/sites/kit.svelte.dev/src/routes/content.json/+server.js +++ /dev/null @@ -1,10 +0,0 @@ -import { content } from './content.server.js'; -import { json } from '@sveltejs/kit'; - -export const prerender = true; - -export async function GET() { - return json({ - blocks: await content() - }); -} diff --git a/sites/kit.svelte.dev/src/routes/content.json/content.server.js b/sites/kit.svelte.dev/src/routes/content.json/content.server.js deleted file mode 100644 index 788b95f65dc7..000000000000 --- a/sites/kit.svelte.dev/src/routes/content.json/content.server.js +++ /dev/null @@ -1,114 +0,0 @@ -import { modules } from '$lib/generated/type-info.js'; -import { pages } from '$lib/server/docs/index.js'; -import { - markedTransform, - replaceExportTypePlaceholders, - slugify -} from '@sveltejs/site-kit/markdown'; - -const categories = [ - { - slug: 'docs', - label: null, - href: (parts) => - parts.length > 1 ? `/docs/${parts[0]}#${parts.slice(1).join('-')}` : `/docs/${parts[0]}` - } -]; - -export async function content() { - /** @type {import('@sveltejs/site-kit/search').Block[]} */ - const blocks = []; - - for (const category of categories) { - const breadcrumbs = category.label ? [category.label] : []; - - for (const [slug, page] of Object.entries(pages)) { - const body = await replaceExportTypePlaceholders(page.body, modules); - - const sections = body.trim().split(/^## /m); - const intro = sections.shift().trim(); - const rank = page.rank; - - blocks.push({ - breadcrumbs: [...breadcrumbs, page.title], - href: category.href([slug]), - content: await plaintext(intro), - rank - }); - - for (const section of sections) { - const lines = section.split('\n'); - const h3 = lines.shift(); - const content = lines.join('\n'); - - const subsections = content.trim().split('### '); - - const intro = subsections.shift().trim(); - - blocks.push({ - breadcrumbs: [...breadcrumbs, page.title, h3], - href: category.href([slug, slugify(h3)]), - content: await plaintext(intro), - rank - }); - - for (const subsection of subsections) { - const lines = subsection.split('\n'); - const h4 = lines.shift(); - - blocks.push({ - breadcrumbs: [...breadcrumbs, page.title, h3, h4], - href: category.href([slug, slugify(h3), slugify(h4)]), - content: await plaintext(lines.join('\n').trim()), - rank - }); - } - } - } - } - - return blocks; -} - -/** @param {string} markdown */ -async function plaintext(markdown) { - const block = (text) => `${text}\n`; - const inline = (text) => text; - - return ( - await markedTransform(markdown, { - code: (source) => - source - .split('// ---cut---\n') - .pop() - .replace(/^\/\/((\/ file:)|( @errors:))[\s\S]*/gm, ''), - blockquote: block, - html: () => '\n', - heading: (text) => `${text}\n`, - hr: () => '', - list: block, - listitem: block, - checkbox: block, - paragraph: (text) => `${text}\n\n`, - table: block, - tablerow: block, - tablecell: (text, opts) => { - return text + ' '; - }, - strong: inline, - em: inline, - codespan: inline, - br: () => '', - del: inline, - link: (href, title, text) => text, - image: (href, title, text) => text, - text: inline - }) - ) - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/&#(\d+);/g, (match, code) => { - return String.fromCharCode(code); - }) - .trim(); -} diff --git a/sites/kit.svelte.dev/src/routes/docs/+layout.server.js b/sites/kit.svelte.dev/src/routes/docs/+layout.server.js deleted file mode 100644 index 77f6b8ffcfb1..000000000000 --- a/sites/kit.svelte.dev/src/routes/docs/+layout.server.js +++ /dev/null @@ -1,9 +0,0 @@ -import { get_docs_list } from '$lib/server/docs/index.js'; - -export const prerender = true; - -export async function load() { - return { - sections: get_docs_list() - }; -} diff --git a/sites/kit.svelte.dev/src/routes/docs/+layout.svelte b/sites/kit.svelte.dev/src/routes/docs/+layout.svelte deleted file mode 100644 index d95c0a861249..000000000000 --- a/sites/kit.svelte.dev/src/routes/docs/+layout.svelte +++ /dev/null @@ -1,89 +0,0 @@ - - -
-
- {#if category} -

{category}

- {/if} - -
- -
- -
-
- - diff --git a/sites/kit.svelte.dev/src/routes/docs/+page.js b/sites/kit.svelte.dev/src/routes/docs/+page.js deleted file mode 100644 index 875f26286eee..000000000000 --- a/sites/kit.svelte.dev/src/routes/docs/+page.js +++ /dev/null @@ -1,5 +0,0 @@ -import { redirect } from '@sveltejs/kit'; - -export function load() { - redirect(307, `./docs/introduction`); -} diff --git a/sites/kit.svelte.dev/src/routes/docs/[slug]/+page.server.js b/sites/kit.svelte.dev/src/routes/docs/[slug]/+page.server.js deleted file mode 100644 index 5d0fdb672a75..000000000000 --- a/sites/kit.svelte.dev/src/routes/docs/[slug]/+page.server.js +++ /dev/null @@ -1,7 +0,0 @@ -import { get_parsed_docs } from '$lib/server/docs/index.js'; - -export const prerender = true; - -export async function load({ params }) { - return { page: await get_parsed_docs(params.slug) }; -} diff --git a/sites/kit.svelte.dev/src/routes/docs/[slug]/+page.svelte b/sites/kit.svelte.dev/src/routes/docs/[slug]/+page.svelte deleted file mode 100644 index c917a1f7f291..000000000000 --- a/sites/kit.svelte.dev/src/routes/docs/[slug]/+page.svelte +++ /dev/null @@ -1,134 +0,0 @@ - - - - {data.page.title} • Docs • SvelteKit - - - - - - -
-

{data.page.title}

- - - Edit this page on GitHub - - - - -
- {@html data.page.content} -
- -
-
- previous - {#if prev} - {prev.title} - {/if} -
- -
- next - {#if next} - {next.title} - {/if} -
-
-
- - diff --git a/sites/kit.svelte.dev/src/routes/edge.svg/+server.js b/sites/kit.svelte.dev/src/routes/edge.svg/+server.js deleted file mode 100644 index 7cb4a3640d9c..000000000000 --- a/sites/kit.svelte.dev/src/routes/edge.svg/+server.js +++ /dev/null @@ -1,144 +0,0 @@ -import { geoPath } from 'd3-geo'; -import { geoSatellite } from 'd3-geo-projection'; -import * as topojson from 'topojson-client'; -import topology from './land-110m.json'; -import countries from './countries.json'; - -const land = topojson.feature(topology, topology.objects.land); - -const font_size = 36; - -/** - * distance of the satellite observer from the earth - * https://github.com/d3/d3-geo-projection#satellite_distance - */ -const distance = 8; - -const w = 1000; -const h = 1000; - -const rad_to_deg = 180 / Math.PI; - -const projection = geoSatellite() - .distance(distance) - .clipAngle(Math.acos(1 / distance) * rad_to_deg) - .translate([w / 2, h / 2]) - .scale(450) - .precision(0.5); - -let isDark = false; - -const path = geoPath(projection); - -/** - * @param {string | null} lat - * @param {string | null} lon - * @param {string} city - * @param {string} country - */ -function render(lat, lon, city, country) { - const coords = lat && lon ? [+lon, +lat] : [-74, 40.7]; - - // spin globe a little west of the user's location so that it isn't - // dead centre, and tilt them slightly towards the vertical center - projection.rotate([-coords[0] - 30, -coords[1] * (30 / 90), 0]); - - const dot = lon && lat ? projection([lon, lat]) : null; - - const MAX_LABEL_LENGTH = 27; - const DEFAULT_LABEL = 'Your location'; - - let label = [city, country].filter(Boolean).join(', ') || DEFAULT_LABEL; - if (label.length > MAX_LABEL_LENGTH) label = city ?? DEFAULT_LABEL; - if (label.length > MAX_LABEL_LENGTH) label = country ?? DEFAULT_LABEL; - if (label.length > MAX_LABEL_LENGTH) label = DEFAULT_LABEL; - - return ` - - - - - - - ${ - dot - ? ` - - - - - ${label.toUpperCase()} - ` - : '' - } - - `; -} - -export function GET({ request, url }) { - const h = request.headers; - - isDark = !!url.searchParams.has('dark'); - - const latitude = h.get('x-vercel-ip-latitude') ?? ''; - const longitude = h.get('x-vercel-ip-longitude') ?? ''; - const city = h.get('x-vercel-ip-city') ?? ''; - const country = countries[h.get('x-vercel-ip-country')]; - - const svg = render(latitude, longitude, decodeURIComponent(city), country).replace( - /\d\.\d+/g, - (match) => match.slice(0, 4) - ); - - return new Response(svg, { - headers: { - 'content-type': 'image/svg+xml', - 'cache-control': 'private, max-age=3600' - } - }); -} diff --git a/sites/kit.svelte.dev/src/routes/edge.svg/countries.json b/sites/kit.svelte.dev/src/routes/edge.svg/countries.json deleted file mode 100644 index bb92e51a95d5..000000000000 --- a/sites/kit.svelte.dev/src/routes/edge.svg/countries.json +++ /dev/null @@ -1,251 +0,0 @@ -{ - "AF": "Afghanistan", - "AL": "Albania", - "DZ": "Algeria", - "AS": "American Samoa", - "AD": "Andorra", - "AO": "Angola", - "AI": "Anguilla", - "AQ": "Antarctica", - "AG": "Antigua and Barbuda", - "AR": "Argentina", - "AM": "Armenia", - "AW": "Aruba", - "AU": "Australia", - "AT": "Austria", - "AZ": "Azerbaijan", - "BS": "Bahamas (the)", - "BH": "Bahrain", - "BD": "Bangladesh", - "BB": "Barbados", - "BY": "Belarus", - "BE": "Belgium", - "BZ": "Belize", - "BJ": "Benin", - "BM": "Bermuda", - "BT": "Bhutan", - "BO": "Bolivia", - "BQ": "Bonaire, Sint Eustatius and Saba", - "BA": "Bosnia and Herzegovina", - "BW": "Botswana", - "BV": "Bouvet Island", - "BR": "Brazil", - "IO": "British Indian Ocean Territory", - "BN": "Brunei Darussalam", - "BG": "Bulgaria", - "BF": "Burkina Faso", - "BI": "Burundi", - "CV": "Cabo Verde", - "KH": "Cambodia", - "CM": "Cameroon", - "CA": "Canada", - "KY": "Cayman Islands", - "CF": "Central African Republic", - "TD": "Chad", - "CL": "Chile", - "CN": "China", - "CX": "Christmas Island", - "CC": "Cocos (Keeling) Islands", - "CO": "Colombia", - "KM": "Comoros", - "CD": "Congo (Kinshasa)", - "CG": "Congo (Brazzaville)", - "CK": "Cook Islands", - "CR": "Costa Rica", - "HR": "Croatia", - "CU": "Cuba", - "CW": "Curaçao", - "CY": "Cyprus", - "CZ": "Czechia", - "CI": "Côte d'Ivoire", - "DK": "Denmark", - "DJ": "Djibouti", - "DM": "Dominica", - "DO": "Dominican Republic", - "EC": "Ecuador", - "EG": "Egypt", - "SV": "El Salvador", - "GQ": "Equatorial Guinea", - "ER": "Eritrea", - "EE": "Estonia", - "SZ": "Eswatini", - "ET": "Ethiopia", - "FK": "Falkland Islands", - "FO": "Faroe Islands", - "FJ": "Fiji", - "FI": "Finland", - "FR": "France", - "GF": "French Guiana", - "PF": "French Polynesia", - "TF": "French Southern Territories", - "GA": "Gabon", - "GM": "Gambia", - "GE": "Georgia", - "DE": "Germany", - "GH": "Ghana", - "GI": "Gibraltar", - "GR": "Greece", - "GL": "Greenland", - "GD": "Grenada", - "GP": "Guadeloupe", - "GU": "Guam", - "GT": "Guatemala", - "GG": "Guernsey", - "GN": "Guinea", - "GW": "Guinea-Bissau", - "GY": "Guyana", - "HT": "Haiti", - "HM": "Heard Island and McDonald Islands", - "VA": "Holy See", - "HN": "Honduras", - "HK": "Hong Kong", - "HU": "Hungary", - "IS": "Iceland", - "IN": "India", - "ID": "Indonesia", - "IR": "Iran", - "IQ": "Iraq", - "IE": "Ireland", - "IM": "Isle of Man", - "IL": "Israel", - "IT": "Italy", - "JM": "Jamaica", - "JP": "Japan", - "JE": "Jersey", - "JO": "Jordan", - "KZ": "Kazakhstan", - "KE": "Kenya", - "KI": "Kiribati", - "KP": "DPRK", - "KR": "Republic of Korea", - "KW": "Kuwait", - "KG": "Kyrgyzstan", - "LA": "Laos", - "LV": "Latvia", - "LB": "Lebanon", - "LS": "Lesotho", - "LR": "Liberia", - "LY": "Libya", - "LI": "Liechtenstein", - "LT": "Lithuania", - "LU": "Luxembourg", - "MO": "Macao", - "MG": "Madagascar", - "MW": "Malawi", - "MY": "Malaysia", - "MV": "Maldives", - "ML": "Mali", - "MT": "Malta", - "MH": "Marshall Islands", - "MQ": "Martinique", - "MR": "Mauritania", - "MU": "Mauritius", - "YT": "Mayotte", - "MX": "Mexico", - "FM": "Micronesia", - "MD": "Moldova", - "MC": "Monaco", - "MN": "Mongolia", - "ME": "Montenegro", - "MS": "Montserrat", - "MA": "Morocco", - "MZ": "Mozambique", - "MM": "Myanmar", - "NA": "Namibia", - "NR": "Nauru", - "NP": "Nepal", - "NL": "Netherlands", - "NC": "New Caledonia", - "NZ": "New Zealand", - "NI": "Nicaragua", - "NE": "Niger", - "NG": "Nigeria", - "NU": "Niue", - "NF": "Norfolk Island", - "MP": "Northern Mariana Islands", - "NO": "Norway", - "OM": "Oman", - "PK": "Pakistan", - "PW": "Palau", - "PS": "Palestine", - "PA": "Panama", - "PG": "Papua New Guinea", - "PY": "Paraguay", - "PE": "Peru", - "PH": "Philippines", - "PN": "Pitcairn", - "PL": "Poland", - "PT": "Portugal", - "PR": "Puerto Rico", - "QA": "Qatar", - "MK": "North Macedonia", - "RO": "Romania", - "RU": "Russian Federation", - "RW": "Rwanda", - "RE": "Réunion", - "BL": "Saint Barthélemy", - "SH": "Saint Helena, Ascension and Tristan da Cunha", - "KN": "Saint Kitts and Nevis", - "LC": "Saint Lucia", - "MF": "Saint Martin (French part)", - "PM": "Saint Pierre and Miquelon", - "VC": "Saint Vincent and the Grenadines", - "WS": "Samoa", - "SM": "San Marino", - "ST": "Sao Tome and Principe", - "SA": "Saudi Arabia", - "SN": "Senegal", - "RS": "Serbia", - "SC": "Seychelles", - "SL": "Sierra Leone", - "SG": "Singapore", - "SX": "Sint Maarten (Dutch part)", - "SK": "Slovakia", - "SI": "Slovenia", - "SB": "Solomon Islands", - "SO": "Somalia", - "ZA": "South Africa", - "GS": "South Georgia and the South Sandwich Islands", - "SS": "South Sudan", - "ES": "Spain", - "LK": "Sri Lanka", - "SD": "Sudan (the)", - "SR": "Suriname", - "SJ": "Svalbard and Jan Mayen", - "SE": "Sweden", - "CH": "Switzerland", - "SY": "Syrian Arab Republic", - "TW": "Taiwan", - "TJ": "Tajikistan", - "TZ": "Tanzania", - "TH": "Thailand", - "TL": "Timor-Leste", - "TG": "Togo", - "TK": "Tokelau", - "TO": "Tonga", - "TT": "Trinidad and Tobago", - "TN": "Tunisia", - "TR": "Turkey", - "TM": "Turkmenistan", - "TC": "Turks and Caicos Islands (the)", - "TV": "Tuvalu", - "UG": "Uganda", - "UA": "Ukraine", - "AE": "UAE", - "GB": "UK", - "UM": "United States Minor Outlying Islands", - "US": "USA", - "UY": "Uruguay", - "UZ": "Uzbekistan", - "VU": "Vanuatu", - "VE": "Venezuela", - "VN": "Vietnam", - "VG": "British Virgin Islands", - "VI": "US Virgin Islands", - "WF": "Wallis and Futuna", - "EH": "Western Sahara", - "YE": "Yemen", - "ZM": "Zambia", - "ZW": "Zimbabwe", - "AX": "Åland Islands" -} diff --git a/sites/kit.svelte.dev/src/routes/edge.svg/land-110m.json b/sites/kit.svelte.dev/src/routes/edge.svg/land-110m.json deleted file mode 100644 index fbd897cb1f1d..000000000000 --- a/sites/kit.svelte.dev/src/routes/edge.svg/land-110m.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Topology","objects":{"land":{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","arcs":[[[0]],[[1]],[[2]],[[3]],[[4]],[[5]],[[6]],[[7]],[[8]],[[9]],[[10]],[[11]],[[12]],[[13]],[[14]],[[15]],[[16,18]],[[19]],[[20]],[[21]],[[22]],[[23]],[[24]],[[25]],[[26]],[[27]],[[28]],[[29]],[[30]],[[31]],[[32]],[[33]],[[34]],[[35]],[[36]],[[37]],[[38]],[[39]],[[40]],[[41]],[[42]],[[43]],[[44]],[[45]],[[46]],[[47]],[[48]],[[49]],[[50]],[[51]],[[52]],[[53]],[[54]],[[55]],[[56]],[[57]],[[58]],[[59]],[[60]],[[61]],[[62]],[[63]],[[64]],[[65]],[[66]],[[67]],[[68]],[[69]],[[70]],[[71]],[[72]],[[73]],[[74]],[[75]],[[76]],[[77]],[[78]],[[79]],[[80]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]],[[90]],[[91]],[[92,115],[114]],[[94]],[[95]],[[96]],[[97]],[[98]],[[99]],[[100]],[[101]],[[102]],[[103]],[[104]],[[105]],[[106]],[[107]],[[108]],[[109]],[[110]],[[111]],[[112]],[[113]],[[116]],[[117]],[[118]],[[119]],[[120]],[[121]],[[122]],[[123]],[[124]],[[125]],[[126]],[[127]],[[128]],[[129]]]}]}},"arcs":[[[33452,3290],[-82,-301],[-81,-266],[-582,81],[-621,-35],[-348,197],[0,23],[-152,174],[625,-23],[599,-58],[207,243],[147,208],[288,-243]],[[5775,3611],[-533,-81],[-364,208],[-163,209],[-11,35],[-180,162],[169,220],[517,-93],[277,-185],[212,-209],[76,-266]],[[37457,4468],[342,-255],[120,-359],[33,-254],[11,-301],[-430,-186],[-452,-150],[-522,-139],[-582,-116],[-658,35],[-365,197],[49,243],[593,162],[239,197],[174,254],[126,220],[168,209],[180,243],[141,0],[414,127],[419,-127]],[[16330,7154],[359,-93],[332,104],[-158,-208],[-261,-151],[-386,47],[-278,208],[60,197],[332,-104]],[[15122,7165],[425,-231],[-164,23],[-359,58],[-381,162],[202,127],[277,-139]],[[22505,8080],[305,-81],[304,69],[163,-335],[-217,46],[-337,-23],[-343,23],[-376,-35],[-283,116],[-146,243],[174,104],[353,-81],[403,-46]],[[30985,8657],[33,-266],[-49,-231],[-76,-220],[-326,-81],[-311,-116],[-364,11],[136,232],[-327,-81],[-310,-81],[-212,174],[-16,243],[305,231],[190,70],[321,-23],[82,301],[16,219],[-6,475],[158,278],[256,93],[147,-220],[65,-220],[120,-267],[92,-254],[76,-267]],[[0,529],[16,-5],[245,344],[501,-185],[32,21],[78,49],[94,61],[81,52],[41,26],[41,-1],[29,-10],[402,-246],[352,246],[63,34],[816,104],[265,-138],[130,-71],[419,-196],[789,-151],[625,-185],[1072,-139],[800,162],[1181,-116],[669,-185],[734,174],[773,162],[60,278],[-1094,23],[-898,139],[-234,231],[-745,128],[49,266],[103,243],[104,220],[-55,243],[-462,162],[-212,209],[-430,185],[675,-35],[642,93],[402,-197],[495,173],[457,220],[223,197],[-98,243],[-359,162],[-408,174],[-571,35],[-500,81],[-539,58],[-180,220],[-359,185],[-217,208],[-87,672],[136,-58],[250,-185],[457,58],[441,81],[228,-255],[441,58],[370,127],[348,162],[315,197],[419,58],[-11,220],[-97,220],[81,208],[359,104],[163,-196],[425,115],[321,151],[397,12],[375,57],[376,139],[299,128],[337,127],[218,-35],[190,-46],[414,81],[370,-104],[381,11],[364,81],[375,-57],[414,-58],[386,23],[403,-12],[413,-11],[381,23],[283,174],[337,92],[349,-127],[331,104],[300,208],[179,-185],[98,-208],[180,-197],[288,174],[332,-220],[375,-70],[321,-162],[392,35],[354,104],[418,-23],[376,-81],[381,-104],[147,254],[-180,197],[-136,209],[-359,46],[-158,220],[-60,220],[-98,440],[213,-81],[364,-35],[359,35],[327,-93],[283,-174],[119,-208],[376,-35],[359,81],[381,116],[342,70],[283,-139],[370,46],[239,451],[224,-266],[321,-104],[348,58],[228,-232],[365,-23],[337,-69],[332,-128],[218,220],[108,209],[278,-232],[381,58],[283,-127],[190,-197],[370,58],[288,127],[283,151],[337,81],[392,69],[354,81],[272,127],[163,186],[65,254],[-32,244],[-87,231],[-98,232],[-87,231],[-71,209],[-16,231],[27,232],[130,220],[109,243],[44,231],[-55,255],[-32,232],[136,266],[152,173],[180,220],[190,186],[223,173],[109,255],[152,162],[174,151],[267,34],[174,186],[196,115],[228,70],[202,150],[157,186],[218,69],[163,-151],[-103,-196],[-283,-174],[-120,-127],[-206,92],[-229,-58],[-190,-139],[-202,-150],[-136,-174],[-38,-231],[17,-220],[130,-197],[-190,-139],[-261,-46],[-153,-197],[-163,-185],[-174,-255],[-44,-220],[98,-243],[147,-185],[229,-139],[212,-185],[114,-232],[60,-220],[82,-232],[130,-196],[82,-220],[38,-544],[81,-220],[22,-232],[87,-231],[-38,-313],[-152,-243],[-163,-197],[-370,-81],[-125,-208],[-169,-197],[-419,-220],[-370,-93],[-348,-127],[-376,-128],[-223,-243],[-446,-23],[-489,23],[-441,-46],[-468,0],[87,-232],[424,-104],[311,-162],[174,-208],[-310,-185],[-479,58],[-397,-151],[-17,-243],[-11,-232],[327,-196],[60,-220],[353,-220],[588,-93],[500,-162],[398,-185],[506,-186],[690,-92],[681,-162],[473,-174],[517,-197],[272,-278],[136,-220],[337,209],[457,173],[484,186],[577,150],[495,162],[691,12],[680,-81],[560,-139],[180,255],[386,173],[702,12],[550,127],[522,128],[577,81],[614,104],[430,150],[-196,209],[-119,208],[0,220],[-539,-23],[-571,-93],[-544,0],[-77,220],[39,440],[125,128],[397,138],[468,139],[337,174],[337,174],[251,231],[380,104],[376,81],[190,47],[430,23],[408,81],[343,116],[337,139],[305,139],[386,185],[245,197],[261,173],[82,232],[-294,139],[98,243],[185,185],[288,116],[305,139],[283,185],[217,232],[136,277],[202,163],[331,-35],[136,-197],[332,-23],[11,220],[142,231],[299,-58],[71,-220],[331,-34],[360,104],[348,69],[315,-34],[120,-243],[305,196],[283,105],[315,81],[310,81],[283,139],[310,92],[240,128],[168,208],[207,-151],[288,81],[202,-277],[157,-209],[316,116],[125,232],[283,162],[365,-35],[108,-220],[229,220],[299,69],[326,23],[294,-11],[310,-70],[300,-34],[130,-197],[180,-174],[304,104],[327,24],[315,0],[310,11],[278,81],[294,70],[245,162],[261,104],[283,58],[212,162],[152,324],[158,197],[288,-93],[109,-208],[239,-139],[289,46],[196,-208],[206,-151],[283,139],[98,255],[250,104],[289,197],[272,81],[326,116],[218,127],[228,139],[218,127],[261,-69],[250,208],[180,162],[261,-11],[229,139],[54,208],[234,162],[228,116],[278,93],[256,46],[244,-35],[262,-58],[223,-162],[27,-254],[245,-197],[168,-162],[332,-70],[185,-162],[229,-162],[266,-35],[223,116],[240,243],[261,-127],[272,-70],[261,-69],[272,-46],[277,0],[229,-614],[-11,-150],[-33,-267],[-266,-150],[-218,-220],[38,-232],[310,12],[-38,-232],[-141,-220],[-131,-243],[212,-185],[321,-58],[321,104],[153,232],[92,220],[153,185],[174,174],[70,208],[147,289],[174,58],[316,24],[277,69],[283,93],[136,231],[82,220],[190,220],[272,151],[234,115],[153,197],[157,104],[202,93],[277,-58],[250,58],[272,69],[305,-34],[201,162],[142,393],[103,-162],[131,-278],[234,-115],[266,-47],[267,70],[283,-46],[261,-12],[174,58],[234,-35],[212,-127],[250,81],[300,0],[255,81],[289,-81],[185,197],[141,196],[191,163],[348,439],[179,-81],[212,-162],[185,-208],[354,-359],[272,-12],[256,0],[299,70],[299,81],[229,162],[190,174],[310,23],[207,127],[218,-116],[141,-185],[196,-185],[305,23],[190,-150],[332,-151],[348,-58],[288,47],[218,185],[185,185],[250,46],[251,-81],[288,-58],[261,93],[250,0],[245,-58],[256,-58],[250,104],[299,93],[283,23],[316,0],[255,58],[251,46],[76,290],[11,243],[174,-162],[49,-266],[92,-244],[115,-196],[234,-105],[315,35],[365,12],[250,35],[364,0],[262,11],[364,-23],[310,-46],[196,-186],[-54,-220],[179,-173],[299,-139],[310,-151],[360,-104],[375,-92],[283,-93],[315,-12],[180,197],[245,-162],[212,-185],[245,-139],[337,-58],[321,-69],[136,-232],[316,-139],[212,-208],[310,-93],[321,12],[299,-35],[332,12],[332,-47],[310,-81],[288,-139],[289,-116],[195,-173],[-32,-232],[-147,-208],[-125,-266],[-98,-209],[-131,-243],[-364,-93],[-163,-208],[-360,-127],[-125,-232],[-190,-220],[-201,-185],[-115,-243],[-70,-220],[-28,-266],[6,-220],[158,-232],[60,-220],[130,-208],[517,-81],[109,-255],[-501,-93],[-424,-127],[-528,-23],[-234,-336],[-49,-278],[-119,-220],[-147,-220],[370,-196],[141,-244],[239,-219],[338,-197],[386,-186],[419,-185],[636,-185],[142,-289],[800,-128],[53,-45],[208,-175],[767,151],[636,-186],[-99520,-142]],[[31180,18764],[361,-355],[389,-147],[-125,-296],[-264,-29],[-141,208],[-92,-239],[-238,-183],[-301,67],[-202,177],[-291,86],[-350,330],[-283,317],[-383,662],[229,-124],[390,-395],[369,-212],[143,271],[90,405],[256,244],[198,-70],[106,-274],[139,-443]],[[33736,20389],[222,-266],[-83,-207],[-375,-177],[-125,207],[-236,-266],[-139,266],[333,354],[236,-148],[167,237]],[[69522,21210],[-427,-38],[-7,314],[41,244],[19,121],[179,-186],[263,-74],[9,-112],[-77,-269]],[[90387,26479],[269,-204],[151,81],[217,113],[166,-39],[20,-702],[-95,-203],[-29,-476],[-97,162],[-193,-412],[-57,32],[-171,19],[-171,505],[-38,390],[-160,515],[7,271],[181,-52]],[[98060,26404],[63,-244],[198,239],[80,-249],[0,-249],[-103,-274],[-182,-435],[-142,-238],[103,-284],[-214,-7],[-238,-223],[-75,-387],[-157,-597],[-219,-264],[-138,-169],[-256,13],[-180,194],[-302,42],[-46,217],[149,438],[349,583],[179,111],[200,225],[238,310],[167,306],[123,441],[106,149],[41,330],[195,273],[61,-251]],[[98502,29218],[202,-622],[5,403],[126,-161],[41,-447],[224,-192],[188,-48],[158,226],[141,-69],[-67,-524],[-85,-345],[-212,12],[-74,-179],[26,-254],[-41,-110],[-105,-319],[-138,-404],[-214,-236],[-48,155],[-116,85],[160,486],[-91,326],[-299,236],[8,214],[201,206],[47,455],[-13,382],[-113,396],[8,104],[-133,244],[-218,523],[-117,418],[104,46],[151,-328],[216,-153],[78,-526]],[[96421,37487],[-105,-142],[-153,160],[-199,266],[-179,313],[-184,416],[-38,201],[119,-9],[156,-201],[122,-200],[89,-166],[228,-366],[144,-272]],[[99547,40335],[96,-171],[-46,-308],[-172,-81],[-153,73],[-27,260],[107,203],[126,-74],[69,98]],[[0,40798],[99822,-145],[-177,-124],[-36,220],[139,121],[88,33],[-99836,184]],[[0,41087],[0,-289]],[[0,41087],[57,27],[-34,-284],[-23,-32]],[[96623,40851],[-92,-78],[-93,259],[10,158],[175,-339]],[[96418,41756],[45,-476],[-75,74],[-58,-32],[-39,163],[-6,453],[133,-182]],[[63904,42571],[45,-711],[72,-276],[-28,-284],[-49,-174],[-94,347],[-53,-175],[53,-438],[-24,-250],[-77,-137],[-18,-500],[-109,-689],[-137,-814],[-172,-1120],[-106,-821],[-125,-685],[-226,-140],[-243,-250],[-160,151],[-220,211],[-77,312],[-18,524],[-98,471],[-26,425],[50,426],[128,102],[1,197],[133,447],[25,377],[-65,280],[-52,372],[-23,544],[97,331],[38,375],[138,22],[155,121],[103,107],[122,7],[158,337],[229,364],[83,297],[-38,253],[118,-71],[153,410],[6,356],[92,264],[96,-254],[74,-251],[69,-390]],[[89877,42448],[100,-464],[179,223],[92,-250],[133,-231],[-29,-262],[60,-506],[42,-295],[70,-72],[75,-505],[-27,-307],[90,-400],[301,-309],[197,-281],[186,-257],[-37,-143],[159,-371],[108,-639],[111,130],[113,-256],[68,91],[48,-626],[197,-363],[129,-226],[217,-478],[78,-475],[7,-337],[-19,-365],[132,-502],[-16,-523],[-48,-274],[-75,-527],[6,-339],[-55,-423],[-123,-538],[-205,-290],[-102,-458],[-93,-292],[-82,-510],[-107,-294],[-70,-442],[-36,-407],[14,-187],[-159,-205],[-311,-22],[-257,-242],[-127,-229],[-168,-254],[-230,262],[-170,104],[43,308],[-152,-112],[-243,-428],[-240,160],[-158,94],[-159,42],[-269,171],[-179,364],[-52,449],[-64,298],[-137,240],[-267,71],[91,287],[-67,438],[-136,-408],[-247,-109],[146,327],[42,341],[107,289],[-22,438],[-226,-504],[-174,-202],[-106,-470],[-217,243],[9,313],[-174,429],[-147,221],[52,137],[-356,358],[-195,17],[-267,287],[-498,-56],[-359,-211],[-317,-197],[-265,39],[-294,-303],[-241,-137],[-53,-309],[-103,-240],[-236,-15],[-174,-52],[-246,107],[-199,-64],[-191,-27],[-165,-315],[-81,26],[-140,-167],[-133,-187],[-203,23],[-186,0],[-295,377],[-149,113],[6,338],[138,81],[47,134],[-10,212],[34,411],[-31,350],[-147,598],[-45,337],[12,336],[-111,385],[-7,174],[-123,235],[-35,463],[-158,467],[-39,252],[122,-255],[-93,548],[137,-171],[83,-229],[-5,303],[-138,465],[-26,186],[-65,177],[31,341],[56,146],[38,295],[-29,346],[114,425],[21,-450],[118,406],[225,198],[136,252],[212,217],[126,46],[77,-73],[219,220],[168,66],[42,129],[74,54],[153,-14],[292,173],[151,262],[71,316],[163,300],[13,236],[7,321],[194,502],[117,-510],[119,118],[-99,279],[87,287],[122,-128],[34,449],[152,291],[67,233],[140,101],[4,165],[122,-69],[5,148],[122,85],[134,80],[205,-271],[155,-350],[173,-4],[177,-56],[-59,325],[133,473],[126,155],[-44,147],[121,338],[168,208],[142,-70],[234,111],[-5,302],[-204,195],[148,86],[184,-147],[148,-242],[234,-151],[79,60],[172,-182],[162,169],[105,-51],[65,113],[127,-292],[-74,-316],[-105,-239],[-96,-20],[32,-236],[-81,-295],[-99,-291],[20,-166],[221,-327],[214,-189],[143,-204],[201,-350],[78,1],[145,-151],[43,-183],[265,-200],[183,202],[55,317],[56,262],[34,324],[85,470],[-39,286],[20,171],[-32,339],[37,445],[53,120],[-43,197],[67,313],[52,325],[7,168],[104,222],[78,-289],[19,-371],[70,-71],[11,-249],[101,-300],[21,-335],[-10,-214]],[[95032,44386],[78,-203],[-194,4],[-106,363],[166,-142],[56,-22]],[[83531,44530],[-117,-11],[-368,414],[259,116],[146,-180],[97,-180],[-17,-159]],[[94680,44747],[-108,-14],[-170,60],[-58,91],[17,235],[183,-93],[91,-124],[45,-155]],[[94910,44908],[-42,-109],[-206,512],[-57,353],[94,0],[100,-473],[111,-283]],[[84565,44589],[-238,-130],[-33,71],[25,201],[119,360],[275,235],[32,139],[239,133],[194,20],[87,74],[105,-74],[-102,-160],[-289,-258],[-233,-170],[-181,-441]],[[82749,45797],[100,-158],[172,48],[69,-251],[-321,-119],[-193,-79],[-149,5],[95,340],[153,5],[74,209]],[[84139,45797],[-41,-328],[-417,-168],[-370,73],[0,216],[220,123],[174,-177],[185,45],[249,216]],[[94409,45654],[12,-119],[-218,251],[-152,212],[-104,197],[41,60],[128,-142],[228,-272],[65,-187]],[[93760,46238],[-56,-33],[-121,134],[-114,243],[14,99],[166,-250],[111,-193]],[[80172,46575],[533,-59],[61,244],[515,-284],[101,-383],[417,-108],[341,-351],[-317,-225],[-306,238],[-251,-16],[-288,44],[-260,106],[-322,225],[-204,59],[-116,-74],[-506,243],[-48,254],[-255,44],[191,564],[337,-35],[224,-231],[115,-45],[38,-210]],[[87423,46908],[-143,-402],[-27,445],[49,212],[58,200],[63,-173],[0,-282]],[[93299,46550],[-78,-59],[-120,227],[-122,375],[-59,450],[38,57],[30,-175],[84,-134],[135,-375],[131,-200],[-39,-166]],[[92217,47343],[-146,-48],[-44,-166],[-152,-144],[-142,-138],[-148,1],[-228,171],[-158,165],[23,183],[249,-86],[152,46],[42,283],[40,15],[27,-314],[158,45],[78,202],[155,211],[-30,348],[166,11],[56,-97],[-5,-327],[-93,-361]],[[85346,48536],[-104,-196],[-192,108],[-54,254],[281,29],[69,-195]],[[86241,48752],[101,-452],[-234,244],[-232,49],[-157,-39],[-192,21],[65,325],[344,24],[305,-172]],[[92538,47921],[-87,-157],[-52,348],[-65,229],[-126,193],[-158,252],[-200,174],[77,143],[150,-166],[94,-130],[117,-142],[111,-248],[106,-189],[33,-307]],[[87261,49899],[78,-955],[287,-354],[232,627],[319,356],[247,1],[238,-206],[206,-212],[298,-113],[482,-407],[513,-338],[192,-302],[154,-297],[43,-349],[462,-365],[68,-313],[-256,-64],[62,-393],[248,-388],[180,-627],[159,20],[-11,-262],[215,-100],[-84,-111],[295,-249],[-30,-171],[-184,-41],[-69,153],[-238,66],[-281,89],[-216,377],[-158,325],[-144,517],[-362,259],[-235,-169],[-170,-195],[35,-436],[-218,-203],[-155,99],[-288,25],[-247,485],[-282,118],[-69,-168],[-352,-18],[118,481],[175,164],[-72,642],[-134,496],[-538,500],[-229,50],[-417,546],[-82,-287],[-107,-52],[-63,216],[-1,257],[-212,290],[299,213],[198,-11],[-23,156],[-407,1],[-110,352],[-248,109],[-117,293],[374,143],[142,192],[446,-242],[44,-220]],[[84788,51419],[-223,-587],[-209,-113],[-267,115],[-463,-29],[-243,-85],[-39,-447],[248,-526],[150,268],[518,201],[-22,-272],[-121,86],[-121,-347],[-245,-229],[263,-757],[-50,-203],[249,-682],[-2,-388],[-148,-173],[-109,207],[134,484],[-273,-229],[-69,164],[36,228],[-200,346],[21,576],[-186,-179],[24,-689],[11,-846],[-176,-85],[-119,173],[79,544],[-43,570],[-117,4],[-86,405],[115,387],[40,469],[139,891],[58,243],[237,439],[217,-174],[350,-82],[319,25],[275,429],[48,-132]],[[85746,51249],[-15,-517],[-143,58],[-42,-359],[114,-312],[-78,-71],[-112,374],[-82,755],[56,472],[92,215],[20,-322],[164,-52],[26,-241]],[[79393,47122],[-308,-12],[-234,494],[-356,482],[-119,358],[-210,481],[-138,443],[-212,827],[-244,493],[-81,508],[-103,461],[-250,372],[-145,506],[-209,330],[-290,652],[-24,300],[178,-24],[430,-114],[246,-577],[215,-401],[153,-246],[263,-635],[283,-9],[233,-405],[161,-495],[211,-270],[-111,-482],[159,-205],[100,-15],[47,-412],[97,-330],[204,-52],[135,-374],[-70,-735],[-11,-914]],[[82742,51659],[312,-546],[-329,-70],[-93,-403],[12,-535],[-267,-404],[-7,-589],[-107,-903],[-41,210],[-316,-266],[-110,361],[-198,34],[-139,189],[-330,-212],[-101,285],[-182,-32],[-229,68],[-43,793],[-138,164],[-134,505],[-38,517],[32,548],[165,392],[204,-202],[214,110],[56,500],[119,112],[333,128],[199,467],[137,374],[110,221],[236,323],[214,411],[140,462],[112,2],[143,-299],[13,-257],[183,-165],[231,-177],[-20,-232],[-186,-29],[50,-289],[-205,-201],[-158,-533],[204,-560],[-48,-272]],[[85104,55551],[28,-392],[16,-332],[-94,-540],[-102,602],[-130,-300],[89,-435],[-79,-277],[-327,343],[-78,428],[84,280],[-176,280],[-87,-245],[-131,23],[-205,-330],[-46,173],[109,498],[175,166],[151,223],[98,-268],[212,162],[45,264],[196,15],[-16,457],[225,-280],[23,-297],[20,-218]],[[72560,54241],[-242,-135],[-132,470],[-49,849],[126,959],[192,-328],[129,-416],[134,-616],[-42,-615],[-116,-168]],[[33073,56553],[-232,-65],[-50,53],[81,163],[-6,233],[160,77],[58,-21],[-11,-440]],[[84439,56653],[-100,-195],[-87,-373],[-87,-175],[-171,409],[57,158],[70,165],[30,367],[153,35],[-44,-398],[205,570],[-26,-563]],[[82917,56084],[-369,-561],[136,414],[200,364],[167,409],[146,587],[49,-482],[-183,-325],[-146,-406]],[[83856,57606],[166,-183],[177,1],[-5,-247],[-129,-251],[-176,-178],[-10,275],[20,301],[-43,282]],[[84861,57766],[78,-660],[-214,157],[5,-199],[68,-364],[-132,-133],[-11,416],[-84,31],[-43,357],[163,-47],[-4,224],[-169,451],[266,-13],[77,-220]],[[83757,58301],[-74,-510],[-119,295],[-142,450],[238,-22],[97,-213]],[[83700,61512],[171,-168],[85,153],[26,-150],[-46,-245],[95,-423],[-73,-491],[-164,-196],[-43,-476],[62,-471],[147,-65],[123,70],[347,-328],[-27,-321],[91,-142],[-29,-272],[-216,290],[-103,310],[-71,-217],[-177,354],[-253,-87],[-138,130],[14,244],[87,151],[-83,136],[-36,-213],[-137,340],[-41,257],[-11,566],[112,-195],[29,925],[90,535],[169,-1]],[[31780,61349],[-71,-149],[-209,4],[-163,-21],[-16,253],[40,86],[227,-3],[142,-52],[50,-118]],[[28638,61137],[-84,-99],[-156,95],[-159,215],[34,135],[116,41],[64,-20],[187,-53],[147,-142],[46,-161],[-195,-11]],[[29839,62320],[241,-93],[34,101],[217,-3],[165,-152],[73,15],[50,-209],[152,11],[-9,-176],[124,-21],[136,-217],[-103,-240],[-132,128],[-127,-25],[-92,28],[-50,-107],[-106,-37],[-43,144],[-92,-85],[-111,-405],[-71,94],[-14,170],[-185,100],[-131,-41],[-169,43],[-130,-110],[-149,184],[24,190],[256,-82],[210,-47],[100,131],[-127,256],[2,226],[-175,92],[62,163],[170,-26]],[[80649,61615],[-240,-284],[-228,183],[-8,509],[137,267],[304,166],[159,-14],[62,-226],[-122,-260],[-64,-341]],[[6794,61855],[-41,-99],[-69,84],[8,165],[-46,216],[14,65],[48,97],[-19,116],[16,55],[21,-11],[107,-100],[49,-51],[45,-79],[71,-207],[-7,-33],[-108,-126],[-89,-92]],[[6645,62777],[-94,-43],[-47,125],[-32,48],[-3,37],[27,50],[99,-56],[73,-90],[-23,-71]],[[6456,63091],[-9,-63],[-149,17],[21,72],[137,-26]],[[6207,63177],[-15,-34],[-19,8],[-97,21],[-35,133],[-11,24],[74,82],[23,-38],[80,-196]],[[5737,63567],[-33,-58],[-93,107],[14,43],[43,58],[64,-12],[5,-138]],[[27867,64030],[110,-216],[260,66],[98,-138],[235,-366],[173,-267],[92,8],[165,-120],[-20,-167],[205,-24],[210,-242],[-33,-138],[-185,-75],[-187,-29],[-191,46],[-398,-57],[186,329],[-113,154],[-179,39],[-96,171],[-66,336],[-157,-23],[-259,159],[-83,124],[-362,91],[-97,115],[104,148],[-273,30],[-199,-307],[-115,-8],[-40,-144],[-138,-65],[-118,56],[146,183],[60,213],[126,131],[142,116],[210,56],[67,65],[240,-42],[219,-7],[261,-201]],[[28462,64617],[-68,-29],[-70,340],[-104,171],[60,375],[84,-23],[97,-491],[1,-343]],[[83659,64045],[-119,-485],[-146,499],[-32,438],[163,581],[223,447],[127,-176],[-49,-357],[-167,-947]],[[28383,66284],[-303,-95],[-19,219],[130,47],[184,-18],[8,-153]],[[28611,66290],[-48,-420],[-51,75],[4,309],[-124,234],[-1,67],[220,-265]],[[87399,70756],[35,-203],[-156,-357],[-114,189],[-143,-137],[-73,-346],[-181,168],[2,281],[154,352],[158,-68],[114,248],[204,-127]],[[59604,71655],[-188,-251],[21,-111],[8,-48],[-285,-240],[-136,77],[-64,237],[132,22],[19,3],[40,143],[200,-8],[253,176]],[[56583,71675],[152,-199],[216,34],[207,-42],[-7,-103],[151,71],[-35,-175],[-400,-50],[3,98],[-339,115],[52,251]],[[54311,73167],[-100,-465],[41,-183],[-58,-303],[-213,222],[-141,64],[-387,300],[38,304],[325,-54],[284,64],[211,51]],[[52558,74927],[166,-419],[-39,-782],[-126,38],[-113,-197],[-105,156],[-11,713],[-64,338],[153,-30],[139,183]],[[89159,72524],[-104,-472],[48,-296],[-145,-416],[-355,-278],[-488,-36],[-396,-675],[-186,227],[-12,442],[-483,-130],[-329,-279],[-325,-11],[282,-435],[-186,-1004],[-179,-248],[-135,229],[69,533],[-176,172],[-113,405],[263,182],[145,371],[280,306],[203,403],[553,177],[297,-121],[291,1050],[185,-282],[408,591],[158,229],[174,723],[-47,664],[117,374],[295,108],[152,-819],[-9,-479],[-256,-595],[4,-610]],[[52655,75484],[-92,-456],[-126,120],[-64,398],[56,219],[179,226],[47,-507]],[[89974,76679],[195,-126],[197,250],[62,-663],[-412,-162],[-244,-587],[-436,404],[-152,-646],[-308,-9],[-39,587],[138,455],[296,33],[81,817],[83,460],[326,-615],[213,-198]],[[32315,78082],[202,-79],[257,16],[-137,-242],[-102,-38],[-353,250],[-69,198],[105,183],[97,-288]],[[32831,79592],[-135,-11],[-360,186],[-258,279],[96,49],[365,-148],[284,-247],[8,-108]],[[15692,79240],[-140,-82],[-456,269],[-84,209],[-248,207],[-50,168],[-286,107],[-107,321],[24,137],[291,-129],[171,-89],[261,-63],[94,-204],[138,-280],[277,-244],[115,-327]],[[34407,80527],[-184,-517],[181,199],[187,-126],[-98,-206],[247,-162],[128,144],[277,-182],[-86,-433],[194,101],[36,-313],[86,-367],[-117,-520],[-125,-22],[-183,111],[60,484],[-77,75],[-322,-513],[-166,21],[196,277],[-267,144],[-298,-35],[-539,18],[-43,175],[173,208],[-121,160],[234,356],[287,941],[172,336],[241,204],[129,-26],[-54,-160],[-148,-372]],[[13136,82508],[267,47],[-84,-671],[242,-475],[-111,1],[-167,270],[-103,272],[-140,184],[-51,260],[16,188],[131,-76]],[[89901,80562],[280,-1046],[-411,195],[-171,-854],[271,-605],[-8,-413],[-211,356],[-182,-457],[-51,496],[31,575],[-32,638],[64,446],[13,790],[-163,581],[24,808],[257,271],[-110,274],[123,83],[73,-391],[96,-569],[-7,-581],[114,-597]],[[48114,81456],[-493,-349],[-393,89],[225,617],[-145,601],[378,463],[210,276],[233,24],[298,-365],[-149,-406],[46,-422],[-210,-528]],[[53524,83435],[-166,-478],[-291,333],[-39,246],[408,195],[88,-296]],[[7498,84325],[-277,-225],[-142,152],[-43,277],[252,210],[148,90],[185,-40],[117,-183],[-240,-281]],[[49165,85222],[-297,-639],[283,81],[304,-3],[-72,-481],[-250,-530],[287,-38],[270,-759],[190,-95],[171,-673],[79,-233],[337,-113],[-34,-378],[-142,-173],[111,-305],[-250,-310],[-371,6],[-473,-163],[-130,116],[-183,-276],[-257,67],[-195,-226],[-148,118],[407,621],[249,127],[-436,99],[-79,235],[291,183],[-152,319],[52,387],[414,-54],[40,343],[-190,372],[-337,104],[-66,160],[101,264],[-92,163],[-149,-279],[-17,569],[-140,301],[101,611],[216,480],[222,-47],[335,49]],[[4006,85976],[-171,-92],[-182,110],[-168,161],[274,101],[220,-54],[27,-226]],[[27981,87304],[-108,-310],[-123,50],[-73,176],[13,41],[107,177],[114,-13],[70,-121]],[[27250,87631],[-325,-326],[-196,13],[-61,160],[207,273],[381,-6],[-6,-114]],[[2297,88264],[171,-113],[173,61],[225,-156],[276,-79],[-23,-64],[-211,-125],[-211,128],[-106,107],[-245,-34],[-66,52],[17,223]],[[26344,89371],[51,-259],[143,91],[161,-155],[304,-203],[318,-184],[25,-281],[204,46],[199,-196],[-247,-186],[-432,142],[-156,266],[-275,-314],[-396,-306],[-95,346],[-377,-57],[242,292],[35,465],[95,542],[201,-49]],[[45969,89843],[-64,-382],[314,-403],[-361,-451],[-801,-405],[-240,-107],[-365,87],[-775,187],[273,261],[-605,289],[492,114],[-12,174],[-583,137],[188,385],[421,87],[433,-400],[422,321],[349,-167],[453,315],[461,-42]],[[28926,90253],[-312,-30],[-69,289],[118,331],[255,82],[217,-163],[3,-253],[-32,-82],[-180,-174]],[[0,91325],[681,-451],[728,-588],[-24,-367],[187,-147],[-64,429],[754,-88],[544,-553],[-276,-257],[-455,-61],[-7,-578],[-111,-122],[-260,17],[-212,206],[-369,172],[-62,257],[-283,96],[-315,-76],[-151,207],[60,219],[-333,-140],[126,-278],[-158,-251]],[[0,88971],[0,2354]],[[23431,91410],[-173,-207],[-374,179],[-226,-65],[-380,266],[245,183],[194,256],[295,-168],[166,-106],[84,-112],[169,-226]],[[0,92833],[99999,-404],[-305,-30],[-49,187],[-99645,247]],[[0,92833],[36,24],[235,-1],[402,-169],[-24,-81],[-286,-141],[-363,-36],[0,404]],[[24848,91640],[-1,-604],[371,463],[332,-380],[-83,-438],[269,-399],[290,427],[202,510],[16,648],[394,-45],[411,-87],[373,-293],[17,-293],[-207,-315],[196,-316],[-36,-288],[-544,-413],[-386,-91],[-287,178],[-83,-297],[-268,-498],[-81,-258],[-322,-400],[-397,-39],[-220,-250],[-18,-384],[-323,-74],[-340,-479],[-301,-665],[-108,-466],[-15,-686],[408,-99],[125,-553],[130,-448],[388,117],[517,-256],[277,-225],[199,-279],[348,-162],[294,-249],[459,-34],[302,-58],[-45,-511],[86,-594],[201,-661],[414,-561],[214,192],[150,607],[-145,934],[-196,311],[445,276],[314,415],[154,411],[-22,395],[-189,502],[-338,445],[328,619],[-121,535],[-93,922],[194,137],[476,-161],[286,-57],[230,155],[258,-200],[342,-343],[85,-229],[495,-45],[-8,-496],[92,-747],[254,-92],[201,-348],[402,328],[266,652],[184,274],[216,-527],[362,-754],[307,-709],[-112,-371],[370,-333],[250,-338],[442,-152],[179,-189],[110,-500],[216,-78],[112,-223],[20,-664],[-202,-222],[-199,-207],[-458,-210],[-349,-486],[-470,-96],[-594,125],[-417,4],[-287,-41],[-233,-424],[-354,-262],[-401,-782],[-320,-545],[236,97],[446,776],[583,493],[416,59],[245,-290],[-262,-397],[88,-637],[91,-446],[361,-295],[459,86],[278,664],[19,-429],[180,-214],[-344,-387],[-615,-351],[-276,-239],[-310,-426],[-211,44],[-11,500],[483,488],[-445,-19],[-309,-72],[48,-194],[-296,-286],[-286,-204],[-293,-175],[-159,-386],[-35,-98],[-3,-313],[92,-313],[115,-15],[-29,216],[83,-131],[-22,-169],[-188,-96],[-133,12],[-205,-104],[-121,-29],[-162,-29],[-231,-171],[408,111],[82,-112],[-389,-177],[-177,-1],[8,72],[-84,-164],[82,-27],[-60,-424],[-203,-455],[-20,152],[-61,31],[-91,147],[57,-318],[66,-106],[8,-222],[-89,-230],[-157,-472],[-25,24],[86,402],[-142,226],[-33,490],[-53,-255],[59,-375],[-175,88],[183,-186],[12,-562],[79,-41],[29,-204],[39,-591],[-176,-439],[-288,-175],[-182,-346],[-139,-38],[-141,-217],[-39,-199],[-305,-383],[-157,-281],[-131,-351],[-43,-419],[50,-411],[92,-505],[124,-418],[1,-256],[132,-685],[-9,-398],[-12,-230],[-69,-361],[-83,-74],[-137,71],[-44,259],[-106,136],[-147,508],[-129,452],[-42,231],[57,393],[-77,325],[-217,494],[-108,91],[-281,-269],[-49,30],[-135,276],[-174,146],[-314,-75],[-247,66],[-212,-41],[-118,-83],[54,-166],[-5,-240],[59,-117],[-53,-77],[-103,87],[-104,-112],[-202,18],[-207,313],[-242,-74],[-202,137],[-173,-42],[-234,-138],[-253,-438],[-276,-255],[-152,-282],[-63,-266],[-3,-407],[14,-284],[52,-201],[1,-1],[-1,-1],[-107,-516],[-49,-426],[-20,-791],[-27,-289],[48,-322],[86,-288],[56,-458],[184,-440],[65,-337],[109,-291],[295,-157],[114,-247],[244,165],[212,60],[208,106],[175,101],[176,241],[67,345],[22,496],[48,173],[188,155],[294,137],[246,-21],[169,50],[66,-125],[-9,-285],[-149,-351],[-66,-360],[51,-103],[-42,-255],[-69,-461],[-71,152],[-58,-10],[1,-87],[53,-3],[-5,-160],[-45,-256],[24,-91],[-29,-212],[18,-56],[-32,-299],[-55,-156],[-50,-19],[-55,-205],[90,-107],[24,88],[82,-75],[29,-23],[61,104],[79,8],[26,-48],[43,29],[129,-53],[128,16],[90,65],[32,66],[89,-31],[66,-40],[73,14],[55,51],[127,-82],[44,-13],[85,-110],[80,-132],[101,-91],[73,-162],[-24,-57],[-14,-132],[29,-216],[-64,-202],[-30,-237],[-9,-261],[15,-152],[7,-266],[-43,-58],[-26,-253],[19,-156],[-56,-151],[12,-159],[43,-97],[70,-321],[108,-238],[130,-252],[100,-212],[-6,-125],[111,-27],[26,48],[77,-145],[136,42],[119,150],[168,119],[95,176],[153,-34],[-10,-58],[155,-21],[124,-102],[90,-177],[105,-164],[143,-18],[209,412],[114,63],[3,195],[51,500],[159,274],[175,11],[22,123],[218,-49],[218,298],[109,132],[134,285],[98,-36],[73,-156],[-54,-199],[-8,-139],[-163,-69],[91,-268],[-3,-309],[-123,-343],[105,-469],[120,38],[62,427],[-86,208],[-14,447],[346,241],[-38,278],[97,186],[100,-415],[195,-9],[180,-330],[11,-195],[249,-6],[297,61],[159,-264],[213,-73],[155,184],[4,149],[344,35],[333,9],[-236,-175],[95,-279],[222,-44],[210,-291],[45,-473],[144,13],[109,-139],[183,-217],[171,-385],[8,-304],[105,-14],[149,-289],[109,-205],[333,-119],[30,107],[225,43],[298,-159],[95,-65],[204,-140],[294,-499],[46,-242],[95,28],[69,-327],[155,-1033],[149,-97],[7,-408],[-208,-487],[86,-178],[491,-92],[10,-593],[211,388],[349,-212],[462,-361],[135,-346],[-45,-327],[323,182],[540,-313],[415,23],[411,-489],[355,-662],[214,-170],[237,-24],[101,-186],[94,-752],[46,-358],[-110,-977],[-142,-385],[-391,-822],[-177,-668],[-206,-513],[-69,-11],[-78,-435],[20,-1107],[-77,-910],[-30,-390],[-88,-233],[-49,-790],[-282,-771],[-47,-610],[-225,-256],[-65,-355],[-302,2],[-437,-227],[-195,-263],[-311,-173],[-327,-470],[-235,-586],[-41,-441],[46,-326],[-51,-597],[-63,-289],[-195,-325],[-308,-1040],[-244,-468],[-189,-277],[-127,-562],[-183,-337],[-121,-372],[-313,-328],[-205,118],[-151,-63],[-256,253],[-189,-19],[-169,327],[-19,-308],[353,-506],[-38,-408],[173,-257],[-14,-289],[-267,-757],[-412,-317],[-557,-123],[-305,59],[59,-352],[-57,-442],[51,-298],[-167,-208],[-284,-82],[-267,216],[-108,-155],[39,-587],[188,-178],[152,186],[82,-307],[-255,-183],[-223,-367],[-41,-595],[-66,-316],[-262,-2],[-218,-302],[-80,-443],[274,-433],[265,-119],[-96,-531],[-328,-333],[-180,-692],[-254,-234],[-113,-276],[89,-614],[185,-342],[-117,30],[-247,4],[-134,-145],[-250,-213],[-45,-552],[-118,-14],[-313,192],[-318,412],[-346,338],[-87,374],[79,346],[-140,393],[-36,1007],[119,568],[293,457],[-422,172],[265,522],[94,982],[309,-208],[145,1224],[-186,157],[-87,-738],[-175,83],[87,845],[95,1095],[127,404],[-79,576],[-23,666],[117,19],[170,954],[192,945],[118,881],[-64,885],[83,487],[-34,730],[163,721],[50,1143],[89,1227],[87,1321],[-20,967],[-58,832],[-279,340],[-24,242],[-551,593],[-498,646],[-214,365],[-115,488],[46,170],[-236,775],[-274,1090],[-262,1177],[-114,269],[-87,435],[-216,386],[-198,239],[90,264],[-134,563],[86,414],[221,373],[148,442],[-60,258],[-106,-275],[-166,259],[56,167],[-47,536],[97,89],[52,368],[105,381],[-20,241],[153,126],[190,236],[-37,183],[103,44],[-12,296],[65,214],[138,40],[117,371],[106,310],[-102,141],[52,343],[-62,540],[59,155],[-44,500],[-112,315],[-93,170],[-59,319],[68,158],[-70,40],[-52,195],[-138,165],[-122,-38],[-56,-205],[-112,-149],[-61,-20],[-27,-123],[132,-321],[-75,-76],[-40,-87],[-130,-30],[-48,353],[-36,-101],[-92,35],[-56,238],[-114,39],[-72,69],[-119,-1],[-8,-128],[-32,89],[-151,131],[-56,124],[32,103],[-11,130],[-77,142],[-109,116],[-95,76],[-19,173],[-73,105],[18,-172],[-55,-141],[-64,164],[-89,58],[-38,120],[2,179],[36,187],[-78,83],[64,114],[-96,186],[-130,238],[-61,200],[-117,185],[-140,267],[31,92],[46,-89],[21,41],[-48,185],[-84,52],[-31,-140],[-161,9],[-100,57],[-115,117],[-154,37],[-79,127],[-142,103],[-174,11],[-127,117],[-149,244],[-314,636],[-144,192],[-226,154],[-156,-43],[-223,-223],[-140,-58],[-196,156],[-208,112],[-260,271],[-208,83],[-314,275],[-233,282],[-70,158],[-155,35],[-284,187],[-116,270],[-299,335],[-139,373],[-66,288],[93,57],[-29,169],[64,153],[1,204],[-93,266],[-25,235],[-94,298],[-244,587],[-280,462],[-135,368],[-238,241],[-51,145],[42,365],[-142,137],[-164,288],[-69,412],[-149,48],[-162,311],[-130,288],[-12,184],[-149,446],[-99,452],[5,227],[-201,235],[-93,-26],[-159,163],[-44,-240],[46,-284],[27,-444],[95,-243],[206,-407],[46,-139],[42,-42],[37,-203],[49,8],[56,-381],[85,-150],[59,-210],[174,-300],[92,-550],[83,-259],[77,-277],[15,-311],[134,-20],[112,-268],[100,-264],[-6,-106],[-117,-217],[-49,3],[-74,359],[-182,337],[-200,286],[-142,150],[9,432],[-42,320],[-132,183],[-191,264],[-37,-76],[-70,154],[-171,143],[-164,343],[20,44],[115,-33],[103,221],[10,266],[-214,422],[-163,163],[-102,369],[-103,388],[-129,472],[-113,531],[-46,302],[-180,340],[-130,71],[-30,169],[-156,30],[-100,159],[-258,59],[-70,95],[-34,324],[-270,594],[-231,821],[10,137],[-123,195],[-215,495],[-38,482],[-148,323],[61,489],[-10,507],[-89,453],[109,557],[67,1072],[-50,792],[-88,506],[-80,274],[33,115],[402,-200],[148,-558],[68,156],[-44,485],[-94,484],[-38,1],[-537,581],[-199,255],[-503,245],[-155,523],[40,362],[-356,252],[-48,476],[-336,429],[-6,304],[-153,223],[-245,188],[-78,515],[-358,478],[-150,558],[-267,38],[-441,15],[-326,170],[-574,613],[-266,112],[-486,211],[-385,-50],[-546,271],[-330,252],[-309,-125],[58,-411],[-154,-38],[-321,-123],[-245,-199],[-307,-126],[-40,348],[125,580],[295,182],[-76,148],[-354,-329],[-190,-394],[-400,-420],[203,-287],[-262,-424],[-299,-247],[-278,-181],[-69,-261],[-434,-305],[-87,-278],[-325,-252],[-191,45],[-259,-165],[-282,-201],[-231,-197],[-477,-169],[-43,99],[304,276],[271,182],[296,324],[345,66],[137,243],[385,353],[62,119],[205,208],[48,448],[141,349],[-320,-179],[-90,102],[-150,-215],[-181,300],[-75,-212],[-104,294],[-278,-236],[-170,0],[-24,352],[50,217],[-179,210],[-361,-113],[-235,277],[-190,142],[-1,334],[-214,252],[108,340],[226,330],[99,303],[225,43],[191,-94],[224,285],[201,-51],[212,183],[-52,270],[-155,106],[205,228],[-170,-7],[-295,-128],[-85,-131],[-219,131],[-392,-67],[-407,142],[-117,238],[-351,343],[390,247],[620,289],[228,0],[-38,-295],[586,22],[-225,366],[-342,226],[-197,295],[-267,252],[-381,187],[155,309],[493,19],[350,270],[66,287],[284,281],[271,68],[526,262],[256,-40],[427,315],[421,-124],[201,-266],[123,114],[469,-35],[-16,-136],[425,-101],[283,59],[585,-186],[534,-56],[214,-77],[370,96],[421,-177],[302,-83],[518,-142],[438,-284],[289,-55],[244,247],[336,184],[413,-72],[416,259],[455,148],[191,-245],[207,138],[62,278],[192,-63],[470,-530],[369,401],[38,-448],[341,96],[105,173],[337,-34],[424,-248],[650,-217],[383,-100],[272,38],[375,-300],[-391,-293],[502,-127],[750,70],[236,103],[296,-354],[302,299],[-283,251],[179,202],[338,27],[223,59],[224,-141],[279,-321],[310,47],[491,-266],[431,94],[405,-14],[-32,367],[247,103],[431,-200],[-2,-559],[177,471],[223,-16],[126,594],[-298,364],[-324,239],[22,653],[329,429],[366,-95],[281,-261],[378,-666],[-247,-290],[517,-120]],[[18287,93781],[-139,-277],[618,179],[386,-298],[314,302],[254,-194],[227,-580],[140,244],[-197,606],[244,86],[276,-94],[311,-239],[175,-575],[86,-417],[466,-293],[502,-279],[-31,-260],[-456,-48],[178,-227],[-94,-217],[-503,93],[-478,160],[-322,-36],[-522,-201],[-824,-103],[-374,-41],[-151,279],[-379,161],[-246,-66],[-343,468],[185,62],[429,101],[392,-26],[362,103],[-537,138],[-594,-47],[-394,12],[-146,217],[644,237],[-428,-9],[-485,156],[233,443],[193,235],[744,359],[284,-114]],[[20972,93958],[-244,-390],[-434,413],[95,83],[372,24],[211,-130]],[[28794,93770],[25,-163],[-296,17],[-299,13],[-304,-80],[-80,36],[-306,313],[12,213],[133,39],[636,-63],[479,-325]],[[25955,93803],[219,-369],[256,477],[704,242],[477,-611],[-42,-387],[550,172],[263,235],[616,-299],[383,-282],[36,-258],[515,134],[290,-376],[670,-234],[242,-238],[263,-553],[-510,-275],[654,-386],[441,-130],[400,-543],[437,-39],[-87,-414],[-487,-687],[-342,253],[-437,568],[-359,-74],[-35,-338],[292,-344],[377,-272],[114,-157],[181,-584],[-96,-425],[-350,160],[-697,473],[393,-509],[289,-357],[45,-206],[-753,236],[-596,343],[-337,287],[97,167],[-414,304],[-405,286],[5,-171],[-803,-94],[-235,203],[183,435],[522,10],[571,76],[-92,211],[96,294],[360,576],[-77,261],[-107,203],[-425,286],[-563,201],[178,150],[-294,367],[-245,34],[-219,201],[-149,-175],[-503,-76],[-1011,132],[-588,174],[-450,89],[-231,207],[290,270],[-394,2],[-88,599],[213,528],[286,241],[717,158],[-204,-382]],[[22123,94208],[331,-124],[496,75],[72,-172],[-259,-283],[420,-254],[-50,-532],[-455,-229],[-268,50],[-192,225],[-690,456],[5,189],[567,-73],[-306,386],[329,286]],[[89889,93835],[-421,-4],[-569,66],[-49,31],[263,234],[348,54],[394,-226],[34,-155]],[[24112,93575],[-298,-442],[-317,22],[-173,519],[4,294],[145,251],[276,161],[579,-20],[530,-144],[-415,-526],[-331,-115]],[[16539,92764],[-731,-294],[-147,259],[-641,312],[93,193],[218,489],[241,388],[-272,362],[939,93],[397,-123],[709,-33],[270,-171],[298,-249],[-349,-149],[-681,-415],[-344,-414],[0,-248]],[[91869,94941],[-321,-234],[-444,53],[-516,233],[66,192],[518,-89],[697,-155]],[[23996,94879],[-151,-229],[-403,44],[-337,155],[148,266],[399,159],[243,-208],[101,-187]],[[90301,95224],[-219,-439],[-1023,16],[-461,-139],[-550,384],[149,406],[366,111],[734,-26],[1004,-313]],[[22639,95907],[212,-273],[9,-303],[-127,-440],[-458,-60],[-298,94],[5,345],[-455,-46],[-18,457],[299,-18],[419,201],[390,-34],[22,77]],[[19941,95601],[109,-210],[247,99],[291,-26],[49,-289],[-169,-281],[-940,-91],[-701,-256],[-423,-14],[-35,193],[577,261],[-1255,-70],[-389,106],[379,577],[262,165],[782,-199],[493,-350],[485,-45],[-397,565],[255,215],[286,-68],[94,-282]],[[65981,92363],[-164,-52],[-907,77],[-74,262],[-503,158],[-40,320],[284,126],[-10,323],[551,503],[-255,73],[665,518],[-75,268],[621,312],[917,380],[925,110],[475,220],[541,76],[193,-233],[-187,-184],[-984,-293],[-848,-282],[-863,-562],[-414,-577],[-435,-568],[56,-491],[531,-484]],[[23699,96131],[308,-190],[547,1],[240,-194],[-64,-222],[319,-134],[177,-140],[374,-26],[406,-50],[441,128],[566,51],[451,-42],[298,-223],[62,-244],[-174,-157],[-414,-127],[-355,72],[-797,-91],[-570,-11],[-449,73],[-738,190],[-96,325],[-34,293],[-279,258],[-574,72],[-322,183],[104,242],[573,-37]],[[17722,96454],[-38,-454],[-214,-205],[-259,-29],[-517,-252],[-444,-91],[-377,128],[472,442],[570,383],[426,-9],[381,87]],[[63641,74970],[141,-419],[130,-28],[85,-159],[-228,-47],[-49,-459],[-47,-207],[-102,-138],[7,-293],[88,-436],[263,-123],[193,-296],[395,-102],[434,156],[27,139],[-52,417],[40,618],[-216,200],[71,405],[-184,34],[61,498],[262,-145],[244,189],[-202,355],[-80,338],[-224,-151],[-28,-433],[-87,383],[-15,144],[68,246],[-53,206],[-322,202],[-125,530],[-154,150],[-9,192],[270,-56],[11,432],[236,96],[243,-88],[50,576],[-50,365],[-278,-28],[-236,144],[-321,-260],[-259,-124],[-127,-350],[-269,-97],[-276,-610],[252,-561],[-27,-398],[303,-696],[146,-311]],[[0,88971],[99997,-3],[-357,-260],[-360,44],[250,-315],[166,-487],[128,-159],[32,-244],[-71,-157],[-518,129],[-777,-445],[-247,-69],[-425,-415],[-403,-362],[-102,-269],[-397,409],[-724,-464],[-126,220],[-268,-254],[-371,81],[-90,-388],[-333,-572],[10,-239],[316,-132],[-37,-860],[-258,-22],[-119,-494],[116,-255],[-486,-301],[-96,-675],[-415,-144],[-83,-600],[-400,-551],[-103,407],[-119,862],[-155,1313],[134,819],[234,353],[15,276],[431,132],[496,744],[479,608],[499,471],[223,833],[-337,-50],[-167,-487],[-705,-648],[-227,726],[-717,-201],[-696,-990],[230,-362],[-620,-154],[-430,-61],[20,427],[-431,90],[-344,-291],[-850,102],[-913,-175],[-900,-1153],[-1065,-1394],[438,-74],[136,-370],[270,-132],[178,296],[305,-39],[401,-650],[9,-502],[-217,-591],[-23,-705],[-126,-945],[-418,-855],[-94,-409],[-377,-688],[-374,-682],[-179,-349],[-370,-346],[-175,-8],[-175,287],[-373,-432],[-43,-197],[-106,36],[-120,-201],[-83,-201],[10,-424],[-143,-130],[-50,-105],[-104,-174],[-185,-97],[-121,-159],[-9,-256],[-32,-65],[111,-96],[157,-259],[240,-697],[68,-383],[3,-681],[-105,-325],[-252,-113],[-222,-245],[-250,-51],[-31,322],[52,443],[-123,615],[206,99],[-190,506],[-135,113],[-34,-112],[-81,-49],[-10,112],[-72,54],[-75,94],[77,260],[65,69],[-25,108],[71,319],[-18,97],[-163,64],[-131,158],[-388,-171],[-204,-277],[-300,-161],[148,274],[-58,230],[220,397],[-147,310],[-242,-209],[-314,-411],[-171,-381],[-272,-29],[-142,-275],[147,-400],[227,-97],[9,-265],[220,-172],[311,421],[247,-230],[179,-15],[46,-310],[-394,-165],[-130,-319],[-270,-296],[-142,-414],[299,-324],[109,-582],[169,-541],[189,-454],[-5,-439],[-174,-161],[66,-315],[164,-184],[-43,-481],[-71,-468],[-155,-53],[-203,-640],[-225,-775],[-258,-705],[-382,-545],[-386,-498],[-313,-68],[-170,-262],[-96,192],[-157,-294],[-388,-296],[-294,-90],[-95,-624],[-154,-35],[-73,429],[66,228],[-373,190],[-131,-97],[-371,-505],[-231,-558],[-61,-410],[212,-623],[260,-772],[252,-365],[169,-475],[127,-1093],[-37,-1039],[-232,-389],[-318,-381],[-227,-492],[-346,-550],[-101,378],[78,401],[-206,335],[-233,87],[-112,307],[-141,611],[-249,271],[-238,-11],[41,464],[-245,-3],[-22,-650],[-150,-863],[-90,-522],[19,-428],[181,-18],[113,-539],[50,-512],[155,-338],[168,-69],[144,-306],[64,-56],[164,-356],[116,-396],[16,-398],[-29,-269],[27,-203],[20,-349],[98,-163],[109,-523],[-5,-199],[-197,-40],[-263,438],[-329,469],[-32,301],[-161,395],[-38,489],[-100,322],[30,431],[-61,250],[-110,227],[-47,292],[-148,334],[-135,280],[-45,-347],[-53,328],[30,369],[82,566],[-27,439],[86,452],[-94,350],[23,644],[-113,306],[-90,707],[-50,746],[-121,490],[-183,-297],[-315,-421],[-156,53],[-172,138],[96,732],[-58,554],[-218,681],[34,213],[-163,76],[-197,481],[-79,309],[-16,301],[-53,284],[-116,344],[-256,23],[25,-243],[-87,-329],[-118,120],[-41,-108],[-78,65],[-108,53],[-39,-216],[-189,7],[-343,-122],[16,-445],[-148,-349],[-400,-398],[-311,-695],[-209,-373],[-276,-386],[-1,-272],[-138,-146],[-250,-212],[-130,-31],[-84,-450],[58,-769],[15,-490],[-118,-561],[-1,-1004],[-144,-29],[-126,-450],[84,-195],[-253,-167],[-93,-402],[-112,-170],[-263,552],[-128,827],[-107,596],[-97,279],[-148,568],[-69,739],[-48,369],[-253,811],[-115,1145],[-83,756],[1,716],[-54,553],[-404,-353],[-196,70],[-362,716],[133,214],[-82,232],[-326,501],[-203,150],[-83,425],[-215,449],[-512,-111],[-451,-11],[-391,-83],[-523,179],[-302,136],[-314,76],[-118,725],[-133,105],[-214,-106],[-280,-286],[-339,196],[-281,454],[-267,168],[-186,561],[-205,788],[-149,-96],[-177,196],[-103,-231],[-165,29],[58,-261],[-25,-135],[89,-445],[109,-510],[137,-135],[47,-207],[190,-248],[16,-244],[-27,-197],[35,-199],[80,-165],[37,-194],[41,-145],[-18,430],[75,310],[76,64],[84,-186],[5,-345],[-61,-348],[53,-226],[49,29],[11,-162],[217,93],[230,-15],[168,-18],[190,400],[207,379],[176,364],[80,201],[35,-51],[-26,-244],[-37,-108],[38,-466],[125,-404],[155,-214],[204,-78],[164,-107],[125,-339],[75,-196],[100,-75],[-1,-132],[-101,-352],[-44,-166],[-117,-189],[-104,-404],[-126,31],[-58,-141],[-44,-300],[34,-395],[-26,-72],[-128,2],[-174,-221],[-27,-288],[-63,-125],[-173,5],[-109,-149],[1,-239],[-134,-164],[-153,56],[-186,-199],[-128,-33],[-201,-159],[-54,-263],[-6,-201],[-277,-249],[-444,-276],[-249,-417],[-122,-32],[-83,34],[-163,-245],[-177,-113],[-233,-31],[-70,-34],[-61,-156],[-73,-43],[-42,-150],[-138,13],[-89,-80],[-192,30],[-72,345],[8,323],[-46,174],[-54,437],[-80,243],[56,29],[-29,270],[34,114],[-12,257],[-36,253],[-84,177],[-22,236],[-143,212],[-148,495],[-79,482],[-192,406],[-124,97],[-184,563],[-32,411],[12,350],[-159,655],[-130,231],[-150,122],[-92,339],[15,133],[-77,307],[-81,131],[-108,440],[-170,476],[-141,406],[-139,-3],[44,325],[12,206],[34,236],[-9,86],[-78,-238],[-60,-446],[-75,-308],[-65,-103],[-93,191],[-125,263],[-198,847],[-29,-53],[115,-624],[171,-594],[210,-920],[102,-321],[90,-334],[249,-654],[-55,-103],[9,-384],[323,-530],[49,-121],[90,-580],[-61,-107],[40,-608],[102,-706],[106,-145],[152,-219],[161,-683],[77,-543],[152,-288],[379,-558],[154,-336],[151,-341],[87,-203],[136,-178],[66,-183],[-9,-245],[-158,-142],[119,-161],[91,-109],[54,-244],[125,-248],[138,-2],[262,151],[302,70],[245,184],[138,39],[99,108],[158,20],[89,12],[128,88],[147,59],[132,202],[105,2],[6,-163],[-25,-344],[1,-310],[-59,-214],[-78,-639],[-134,-659],[-172,-755],[-238,-866],[-237,-661],[-327,-806],[-278,-479],[-415,-586],[-259,-450],[-304,-715],[-64,-312],[-63,-140],[-195,-236],[-68,-246],[-104,-44],[-40,-416],[-89,-238],[-54,-393],[-112,-195],[-128,-728],[16,-335],[178,-216],[8,-153],[-76,-357],[16,-180],[-18,-282],[97,-370],[115,-583],[101,-129],[45,-265],[-11,-588],[34,-519],[11,-923],[49,-290],[-83,-422],[-108,-410],[-177,-366],[-254,-225],[-313,-287],[-313,-634],[-107,-108],[-194,-420],[-115,-136],[-23,-421],[132,-448],[54,-346],[4,-177],[49,29],[-8,-579],[-45,-274],[65,-102],[-41,-246],[-116,-210],[-229,-199],[-334,-320],[-122,-219],[24,-248],[71,-40],[-24,-311],[-70,-430],[-32,-491],[-72,-267],[-190,-298],[-54,-86],[-118,-300],[-77,-303],[-158,-424],[-314,-609],[-196,-355],[-209,-269],[-291,-229],[-141,-31],[-36,-164],[-169,88],[-138,-113],[-301,114],[-168,-72],[-115,31],[-286,-233],[-238,-94],[-171,-223],[-127,-14],[-117,210],[-94,11],[-120,264],[-13,-82],[-37,159],[2,346],[-90,396],[89,108],[-7,453],[-182,553],[-139,501],[-1,1],[-199,768],[-207,446],[-108,432],[-62,575],[-68,428],[-93,910],[-7,707],[-35,322],[-108,243],[-144,489],[-146,708],[-60,371],[-226,577],[-17,453],[-26,372],[38,519],[96,541],[15,254],[90,532],[66,243],[159,386],[90,263],[29,438],[-15,335],[-83,211],[-74,358],[-68,355],[15,122],[85,235],[-84,570],[-57,396],[-139,374],[26,115],[-39,183],[-74,444],[-228,626],[-285,596],[-184,488],[-169,610],[9,196],[61,189],[67,430],[56,438],[-52,90],[96,663],[40,467],[-108,390],[-127,100],[-56,265],[-71,85],[3,163],[-289,-213],[-105,32],[-107,-133],[-222,13],[-149,370],[-91,427],[-197,390],[-209,-8],[-245,1],[-229,-69],[-224,-126],[-436,-346],[-154,-203],[-250,-171],[-248,168],[-126,-7],[-194,116],[-178,-7],[-329,-103],[-193,-170],[-275,-217],[-54,15],[-73,-5],[-286,282],[-252,450],[-237,323],[-187,381],[-75,44],[-200,238],[-144,316],[-49,216],[-34,437],[-122,349],[-108,232],[-71,76],[-69,118],[-32,261],[-41,130],[-80,97],[-149,247],[-117,39],[-63,166],[1,90],[-84,125],[-18,127],[-46,453],[36,262],[-115,460],[-138,210],[122,112],[134,415],[66,304],[-24,318],[78,291],[34,557],[-30,583],[-34,294],[28,295],[-72,281],[-146,255],[12,249],[13,274],[106,161],[91,308],[-18,200],[96,417],[155,376],[93,95],[74,344],[6,315],[100,365],[185,216],[177,603],[144,235],[259,66],[219,403],[139,158],[232,493],[-70,735],[106,508],[37,312],[179,399],[278,270],[206,244],[186,612],[87,362],[205,-2],[167,-251],[264,41],[288,-131],[121,-6],[267,323],[300,102],[175,244],[268,180],[471,105],[459,48],[140,-87],[262,232],[297,5],[113,-137],[190,35],[302,239],[195,-71],[-9,-299],[236,217],[20,-113],[-139,-289],[-2,-274],[96,-147],[-36,-511],[-183,-297],[53,-322],[143,-10],[70,-281],[106,-92],[326,-204],[117,51],[232,-98],[368,-264],[130,-526],[250,-114],[391,-248],[296,-293],[136,153],[133,272],[-65,452],[87,288],[200,277],[192,80],[375,-121],[95,-264],[104,-2],[88,-101],[276,-69],[68,-196],[369,10],[268,-156],[275,-175],[129,-92],[214,188],[114,169],[245,49],[198,-75],[75,-293],[65,193],[222,-140],[217,-33],[137,149],[80,194],[-19,34],[74,276],[56,446],[40,149],[8,6],[99,482],[138,416],[5,21],[-26,452],[68,243],[-102,268],[105,222],[-169,-51],[-233,136],[-191,-340],[-421,-66],[-225,317],[-300,20],[-64,-245],[-192,-71],[-268,315],[-303,-10],[-165,587],[-203,328],[135,459],[-176,283],[308,565],[428,23],[117,449],[529,-78],[334,383],[324,167],[459,13],[485,-416],[399,-229],[323,91],[239,-53],[328,309],[42,252],[-70,403],[-160,218],[-154,68],[-102,181],[-354,499],[-317,223],[-240,347],[202,95],[231,494],[-156,234],[410,241],[-8,129],[-249,-95],[-222,-48],[-185,-191],[-260,-31],[-239,-220],[16,-368],[136,-142],[284,35],[-55,-210],[-304,-103],[-377,-342],[-154,121],[61,277],[-304,173],[50,113],[265,197],[-80,135],[-432,149],[-19,221],[-257,-73],[-103,-325],[-215,-437],[6,-152],[-135,-128],[-84,56],[-78,-713],[-144,-245],[-101,-422],[89,-337],[33,-228],[243,-190],[-51,-145],[-330,-33],[-118,-182],[-232,-319],[-87,275],[3,122],[-169,17],[-145,56],[-336,-154],[192,-332],[-141,-96],[-154,0],[-147,304],[-52,-130],[62,-353],[139,-277],[-105,-130],[155,-272],[137,-171],[4,-334],[-257,157],[82,-302],[-176,-62],[105,-521],[-184,-7],[-228,257],[-104,472],[-49,393],[-108,272],[-143,337],[-18,168],[-48,41],[-5,130],[-154,199],[-24,281],[23,403],[38,184],[-46,93],[-59,46],[-78,192],[-120,118],[-261,218],[-161,213],[-254,176],[-233,435],[56,44],[-127,248],[-5,200],[-179,93],[-85,-255],[-82,198],[6,205],[10,9],[62,54],[-221,86],[-226,-210],[15,-293],[-34,-168],[91,-301],[261,-298],[140,-488],[309,-476],[217,3],[68,-130],[-78,-118],[249,-213],[204,-179],[238,-308],[29,-111],[-52,-211],[-154,276],[-242,97],[-116,-382],[200,-219],[-33,-309],[-116,-35],[-148,-506],[-116,-46],[1,181],[57,317],[60,126],[-108,342],[-85,298],[-115,74],[-82,255],[-179,107],[-120,238],[-206,38],[-217,267],[-254,384],[-189,341],[-86,584],[-138,68],[-226,195],[-128,-80],[-161,-274],[-115,-43],[-252,-334],[-548,160],[-404,-192],[-32,-355],[15,-344],[-263,-393],[-356,-125],[-25,-199],[-171,-327],[-107,-481],[108,-338],[-160,-263],[-60,-384],[-210,-118],[-197,-455],[-352,-8],[-265,11],[-174,-209],[-106,-223],[-136,49],[-103,199],[-79,340],[-259,92],[-112,-153],[-146,83],[-143,-65],[42,462],[-26,363],[-124,55],[-67,224],[22,386],[111,215],[20,239],[58,355],[-6,250],[-56,212],[-12,200],[14,420],[-114,257],[393,426],[340,-107],[373,4],[296,-101],[230,31],[449,-19],[144,354],[53,1177],[-287,620],[-205,299],[-424,228],[-28,430],[360,129],[466,-152],[-88,669],[263,-254],[646,461],[84,484],[243,119],[222,117],[143,162],[244,870],[380,247],[231,-17],[54,125],[232,32],[52,-130],[188,291],[-63,222],[-13,335],[-113,328],[-8,604],[46,159],[80,178],[244,36],[98,163],[223,167],[-9,-304],[-82,-192],[33,-166],[151,-89],[-68,-223],[-83,64],[-200,-425],[76,-288],[4,-228],[281,-138],[-3,-210],[283,111],[156,162],[313,-233],[132,-189],[189,174],[434,273],[350,200],[277,-100],[21,-144],[268,-7],[63,260],[383,191],[-59,497],[10,445],[136,371],[262,202],[221,-442],[223,12],[53,453],[32,349],[-102,-75],[-176,210],[-24,340],[351,164],[350,86],[301,-97],[287,17],[316,327],[-291,280],[-504,-47],[-489,-216],[-452,-125],[-161,322],[-269,195],[62,581],[-135,534],[133,344],[252,371],[635,640],[185,124],[-28,250],[-387,279],[-478,-167],[-269,-413],[43,-361],[-441,-475],[-537,-509],[-202,-832],[198,-416],[265,-328],[-255,-666],[-289,-138],[-106,-992],[-157,-554],[-337,57],[-158,-468],[-321,-27],[-89,558],[-232,671],[-211,835],[-187,363],[-548,-684],[-370,-138],[-385,301],[-99,635],[-88,1364],[256,380],[733,496],[549,609],[508,824],[668,1141],[465,444],[763,741],[610,259],[457,-31],[423,489],[506,-26],[499,118],[869,-433],[-358,-158],[305,-371],[286,206],[456,-358],[761,-140],[1050,-668],[213,-281],[18,-393],[-308,-311],[-454,-157],[-1240,449],[-204,-75],[453,-433],[36,-878],[358,-180],[217,-153],[36,286],[-174,263],[183,215],[672,-368],[234,144],[-187,433],[647,578],[256,-34],[260,-206],[161,406],[-231,352],[136,353],[-204,367],[777,-190],[158,-331],[-351,-73],[2,-328],[218,-203],[429,128],[68,377],[581,282],[969,507],[209,-29],[-273,-359],[344,-61],[199,202],[521,16],[412,245],[317,-356],[315,391],[-291,343],[145,195],[820,-179],[385,-185],[1006,-675],[186,309],[-282,313],[-8,125],[-335,58],[92,280],[-149,461],[-8,189],[512,535],[182,537],[207,116],[735,-156],[58,-328],[-263,-479],[173,-189],[89,-413],[-63,-809],[307,-362],[-120,-395],[-544,-839],[318,-87],[110,213],[306,151],[74,293],[240,281],[-162,336],[130,390],[-304,49],[-67,328],[222,594],[-361,481],[497,398],[-64,421],[139,13],[145,-328],[-109,-570],[297,-108],[-127,426],[465,233],[577,31],[513,-337],[-247,492],[-28,630],[484,119],[668,-26],[602,77],[-226,309],[321,388],[319,16],[540,293],[734,79],[93,162],[729,55],[227,-133],[624,314],[510,-10],[77,255],[265,252],[656,242],[476,-191],[-378,-146],[629,-90],[75,-292],[254,143],[812,-7],[626,-289],[223,-221],[-69,-307],[-307,-175],[-730,-328],[-209,-175],[345,-83],[410,-149],[250,112],[142,-379],[122,153],[444,93],[892,-97],[67,-276],[1162,-88],[15,451],[590,-103],[443,3],[449,-312],[128,-378],[-165,-247],[349,-465],[437,-240],[268,620],[446,-266],[473,159],[538,-182],[204,166],[455,-83],[-201,549],[367,256],[2509,-384],[236,-351],[727,-451],[1122,112],[553,-98],[231,-244],[-33,-432],[342,-168],[372,121],[492,15],[525,-116],[526,66],[484,-526],[344,189],[-224,378],[123,263],[886,-166],[578,36],[799,-282],[-99610,-258]],[[23933,96380],[-126,-17],[-521,38],[-74,165],[559,-9],[195,-109],[-33,-68]],[[19392,96485],[-518,-170],[-411,191],[224,188],[406,60],[392,-92],[-93,-177]],[[56867,96577],[-620,-241],[-490,137],[191,152],[-167,189],[575,119],[110,-222],[401,-134]],[[19538,97019],[-339,-115],[-461,1],[5,84],[285,177],[149,-27],[361,-120]],[[23380,96697],[-411,-122],[-226,138],[-119,221],[-22,245],[360,-24],[162,-39],[332,-205],[-76,-214]],[[22205,96856],[108,-247],[-453,66],[-457,192],[-619,21],[268,176],[-335,142],[-21,227],[546,-81],[751,-215],[212,-281]],[[79187,96845],[-1566,-228],[507,776],[229,66],[208,-38],[704,-336],[-82,-240]],[[55069,97669],[915,-440],[-699,-233],[-155,-435],[-243,-111],[-132,-490],[-335,-23],[-598,361],[252,210],[-416,170],[-541,499],[-216,463],[757,212],[152,-207],[396,8],[105,202],[408,20],[350,-206]],[[57068,98086],[545,-207],[-412,-318],[-806,-70],[-819,98],[-50,163],[-398,11],[-304,271],[858,165],[403,-142],[281,177],[702,-148]],[[64204,98169],[-373,-78],[-250,-45],[-39,-97],[-324,-98],[-301,140],[158,185],[-618,18],[542,107],[422,8],[57,-160],[159,142],[262,97],[412,-129],[-107,-90]],[[77760,97184],[-606,-73],[-773,170],[-462,226],[-213,423],[-379,117],[722,404],[600,133],[540,-297],[640,-572],[-69,-531]],[[25828,97644],[334,-190],[-381,-176],[-513,-445],[-492,-42],[-575,76],[-299,240],[4,215],[220,157],[-508,-4],[-306,196],[-176,268],[193,262],[192,180],[285,42],[-122,135],[646,30],[355,-315],[468,-127],[455,-112],[220,-390]],[[30972,99681],[742,-47],[597,-75],[508,-161],[-12,-157],[-678,-257],[-672,-119],[-251,-133],[605,3],[-656,-358],[-452,-167],[-476,-483],[-573,-98],[-177,-120],[-841,-64],[383,-74],[-192,-105],[230,-292],[-264,-202],[-429,-167],[-132,-232],[-388,-176],[39,-134],[475,23],[6,-144],[-742,-355],[-726,163],[-816,-91],[-414,71],[-525,31],[-35,284],[514,133],[-137,427],[170,41],[742,-255],[-379,379],[-450,113],[225,229],[492,141],[79,206],[-392,231],[-118,304],[759,-26],[220,-64],[433,216],[-625,68],[-972,-38],[-491,201],[-232,239],[-324,173],[-61,202],[413,112],[324,19],[545,96],[409,220],[344,-30],[300,-166],[211,319],[367,95],[498,65],[849,24],[148,-63],[802,100],[601,-38],[602,-37]],[[42472,99925],[1737,-469],[-513,-227],[-1062,-26],[-1496,-58],[140,-105],[984,65],[836,-204],[540,181],[231,-212],[-305,-344],[707,220],[1348,229],[833,-114],[156,-253],[-1132,-420],[-157,-136],[-888,-102],[643,-28],[-324,-431],[-224,-383],[9,-658],[333,-386],[-434,-24],[-457,-187],[513,-313],[65,-502],[-297,-55],[360,-508],[-617,-42],[322,-241],[-91,-208],[-391,-91],[-388,-2],[348,-400],[4,-263],[-549,244],[-143,-158],[375,-148],[364,-361],[105,-476],[-495,-114],[-214,228],[-344,340],[95,-401],[-322,-311],[732,-25],[383,-32],[-745,-515],[-755,-466],[-813,-204],[-306,-2],[-288,-228],[-386,-624],[-597,-414],[-192,-24],[-370,-145],[-399,-138],[-238,-365],[-4,-415],[-141,-388],[-453,-472],[112,-462],[-125,-488],[-142,-577],[-391,-36],[-410,482],[-556,3],[-269,324],[-186,577],[-481,735],[-141,385],[-38,530],[-384,546],[100,435],[-186,208],[275,691],[418,220],[110,247],[58,461],[-318,-209],[-151,-88],[-249,-84],[-341,193],[-19,401],[109,314],[258,9],[567,-157],[-478,375],[-249,202],[-276,-83],[-232,147],[310,550],[-169,220],[-220,409],[-335,626],[-353,230],[3,247],[-745,346],[-590,43],[-743,-24],[-677,-44],[-323,188],[-482,372],[729,186],[559,31],[-1188,154],[-627,241],[39,229],[1051,285],[1018,284],[107,214],[-750,213],[243,235],[961,413],[404,63],[-115,265],[658,156],[854,93],[853,5],[303,-184],[737,325],[663,-221],[390,-46],[577,-192],[-660,318],[38,253],[932,353],[975,-27],[354,218],[982,57],[2219,-74]]],"bbox":[-180,-85.60903777459777,180,83.64513000000002],"transform":{"scale":[0.0036000360003600037,0.0016925586033320111],"translate":[-180,-85.60903777459777]}} diff --git a/sites/kit.svelte.dev/src/routes/faq/+page.js b/sites/kit.svelte.dev/src/routes/faq/+page.js deleted file mode 100644 index 950b7316700e..000000000000 --- a/sites/kit.svelte.dev/src/routes/faq/+page.js +++ /dev/null @@ -1,5 +0,0 @@ -import { redirect } from '@sveltejs/kit'; - -export const load = ({}) => { - redirect(301, '/docs/faq'); -}; diff --git a/sites/kit.svelte.dev/src/routes/home/Deployment.svelte b/sites/kit.svelte.dev/src/routes/home/Deployment.svelte deleted file mode 100644 index 4328500efad7..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/Deployment.svelte +++ /dev/null @@ -1,297 +0,0 @@ - - -
-
-

deploy anywhere

-
-

- Export static HTML files. Run your own Node server. Deploy code to the edge of the world. If - a platform runs JavaScript, it runs SvelteKit — in some cases with zero configuration. -

-

Want to try deploying somewhere else? Swap out your adapter with a single line of code.

-
-
- - -
- - diff --git a/sites/kit.svelte.dev/src/routes/home/Features.svelte b/sites/kit.svelte.dev/src/routes/home/Features.svelte deleted file mode 100644 index 0854a8bb0b11..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/Features.svelte +++ /dev/null @@ -1,120 +0,0 @@ - - -
-
-
-

features? we got 'em.

-

- Mix and match prerendered pages for maximum performance with dynamic - server-side rendering for maximum flexibility. Turn your app into a - client-rendered - PWA with a single line of code, for the whole thing or just one page. Use - accessible client-side routing with automatic - preloading for slick, instantaneous navigation that doesn't reload your - entire page (and your analytics, and all that other junk). Protect your users with automatic - CSRF protection - and easy-to-use - Content Security Policy configuration. Keep your secrets to yourself with - advanced environment variable handling. Handle errors gracefully and - securely. Load data - directly from your database - and connect your back end to your front end with type-safe data loading and - built-in form actions - that work with or without JavaScript. Co-exist with other client-side - routing frameworks on the same page. Add service workers for offline - support. Generate AMP-compliant - pages if you really have to. Build complex UIs with unusually powerful - filesystem-based routes. Nested layouts? Duh. Learn - web standards - that work across environments. Integrate with Tailwind - and Playwright and Vitest and Storybook - and, well, whatever you want. Build libraries as well as apps. - Deploy anywhere with adapters. -

- -

- SvelteKit is the framework that - grows with you, whatever you end up building. -

-
-
-
- - diff --git a/sites/kit.svelte.dev/src/routes/home/Hero.svelte b/sites/kit.svelte.dev/src/routes/home/Hero.svelte deleted file mode 100644 index 11000359ee61..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/Hero.svelte +++ /dev/null @@ -1,192 +0,0 @@ - - -
-
-
- - -
web development, streamlined
- read the docs -
- -
- -
-
-
- - diff --git a/sites/kit.svelte.dev/src/routes/home/Intro.svelte b/sites/kit.svelte.dev/src/routes/home/Intro.svelte deleted file mode 100644 index d3a93005596c..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/Intro.svelte +++ /dev/null @@ -1,37 +0,0 @@ - - - -
-

fast

-

- Powered by Svelte and - Vite, speed is baked into - every crevice: fast setup, fast dev, fast builds, fast page loads, fast navigation. Did we - mention it's fast? -

-
- -
-

fun

-

- No more wasted days figuring out bundler configuration, routing, SSR, CSP, TypeScript, - deployment settings and all the other boring stuff. Code with joy. -

-
- -
-

flexible

-

- SPA? MPA? SSR? SSG? Check. SvelteKit gives you the tools to succeed whatever it is you're - building. And it runs wherever JavaScript does. -

-
-
- - diff --git a/sites/kit.svelte.dev/src/routes/home/Showcase.svelte b/sites/kit.svelte.dev/src/routes/home/Showcase.svelte deleted file mode 100644 index 90f4d6da1db1..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/Showcase.svelte +++ /dev/null @@ -1,106 +0,0 @@ - - -
-

showcase

- -
- {#each showcase as { url, image }} - - - {url} - - {/each} -
-
- - diff --git a/sites/kit.svelte.dev/src/routes/home/Svelte.svelte b/sites/kit.svelte.dev/src/routes/home/Svelte.svelte deleted file mode 100644 index e896bfbd22ee..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/Svelte.svelte +++ /dev/null @@ -1,114 +0,0 @@ - - -
-

- /ˈsvɛlt/ adjective - attractively thin, graceful and stylish -

- -
- - -
-

- SvelteKit is built on Svelte, a UI framework that uses a compiler to let you write - breathtakingly concise components that do minimal work in the browser, using languages you - already know — HTML, CSS and JavaScript. It's a love letter to web development. -

- -

- But don't take our word for it. Developers consistently rank Svelte as the framework they're - - most - - - excited - - - about - - - - using. -

-
-
-
- - diff --git a/sites/kit.svelte.dev/src/routes/home/Video.svelte b/sites/kit.svelte.dev/src/routes/home/Video.svelte deleted file mode 100644 index 057e118794c5..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/Video.svelte +++ /dev/null @@ -1,261 +0,0 @@ - - -
- - - {#if d} -
- {/if} - -
- - - -
- - -
- - diff --git a/sites/kit.svelte.dev/src/routes/home/cc-off.svg b/sites/kit.svelte.dev/src/routes/home/cc-off.svg deleted file mode 100644 index c5d60a43dfc6..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/cc-off.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/cc-on.svg b/sites/kit.svelte.dev/src/routes/home/cc-on.svg deleted file mode 100644 index e429173f5e96..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/cc-on.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/common.css b/sites/kit.svelte.dev/src/routes/home/common.css deleted file mode 100644 index a059dd3df689..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/common.css +++ /dev/null @@ -1,54 +0,0 @@ -.hero-container:dir(rtl) { - max-width: 116rem; -} - -.home { - --background-1: radial-gradient(circle at top right, rgb(230, 233, 236), rgb(244, 245, 247)); - --background-2: var(--sk-theme-2); -} - -.home h2 { - font-size: var(--sk-text-xl); - line-height: 1.2; -} - -.home .grid { - display: grid; - gap: 1em; - margin: 0 0 4rem 0; -} - -.home .grid:last-child { - margin-bottom: 0; -} - -@media (min-width: 900px) { - .home h2 { - font-size: var(--sk-text-xxl); - } - - .home .grid { - grid-template-columns: repeat(var(--columns), 1fr); - gap: 7rem; - } -} - -/* In case JS disabled */ -@media screen and (prefers-color-scheme: dark) { - .home { - /* --background-1: radial-gradient(circle at top right, rgb(49, 49, 49), rgb(77, 77, 77)); */ - --background-1: #222; - --background-2: #444; - } - - body.light .home { - --background-1: radial-gradient(circle at top right, rgb(230, 233, 236), rgb(244, 245, 247)); - --background-2: var(--sk-theme-2); - } -} - -body.dark .home { - /* --background-1: radial-gradient(circle at top right, rgb(49, 49, 49), rgb(77, 77, 77)); */ - --background-1: #222; - --background-2: #444; -} diff --git a/sites/kit.svelte.dev/src/routes/home/logos/appengine.svg b/sites/kit.svelte.dev/src/routes/home/logos/appengine.svg deleted file mode 100644 index 4c2e34391ecc..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/logos/appengine.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/logos/azure.svg b/sites/kit.svelte.dev/src/routes/home/logos/azure.svg deleted file mode 100644 index 996038592311..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/logos/azure.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/logos/cloudflare.svg b/sites/kit.svelte.dev/src/routes/home/logos/cloudflare.svg deleted file mode 100644 index 53b4e416101f..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/logos/cloudflare.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/logos/deno.svg b/sites/kit.svelte.dev/src/routes/home/logos/deno.svg deleted file mode 100644 index 34293615e36f..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/logos/deno.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/logos/firebase.svg b/sites/kit.svelte.dev/src/routes/home/logos/firebase.svg deleted file mode 100644 index 6aec5adc92c1..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/logos/firebase.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/logos/html5.svg b/sites/kit.svelte.dev/src/routes/home/logos/html5.svg deleted file mode 100644 index 72a4b1ef25c5..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/logos/html5.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/logos/lambda.svg b/sites/kit.svelte.dev/src/routes/home/logos/lambda.svg deleted file mode 100644 index 958c9657e2d3..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/logos/lambda.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/logos/netlify.svg b/sites/kit.svelte.dev/src/routes/home/logos/netlify.svg deleted file mode 100644 index 8d4e9d77e17d..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/logos/netlify.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/logos/node.svg b/sites/kit.svelte.dev/src/routes/home/logos/node.svg deleted file mode 100644 index 41d044ac6b3f..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/logos/node.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sites/kit.svelte.dev/src/routes/home/logos/vercel.svg b/sites/kit.svelte.dev/src/routes/home/logos/vercel.svg deleted file mode 100644 index 72948d01a7d0..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/logos/vercel.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/sites/kit.svelte.dev/src/routes/home/showcase/asmeditor.png b/sites/kit.svelte.dev/src/routes/home/showcase/asmeditor.png deleted file mode 100644 index c6059ee483ab49fe6fecfa88244e557d8de65cbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162044 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 VK1r!Pk^vAtFO)T&l_{D8{vU!tkSG8E diff --git a/sites/kit.svelte.dev/src/routes/home/showcase/dropzone.png b/sites/kit.svelte.dev/src/routes/home/showcase/dropzone.png deleted file mode 100644 index d5f1a7c94f2a27cc3d6dda854001572dcc5e7c4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242780 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

-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�EI>td1EiKQzBl$ayk(H|*A|-d@1{`P*8@IR; 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 z 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�X+q_j7;_2VaV+R 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 diff --git a/sites/kit.svelte.dev/src/routes/home/showcase/pausly.png b/sites/kit.svelte.dev/src/routes/home/showcase/pausly.png deleted file mode 100644 index 950a5b29fde19de1d8b94757d9977604b6685f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108121 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

6lgX^o3d(f9Q@+sUw#*K-z+z|-m@v(- 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�&ju*`WpYyr{0ac8r%S)lZ`AT6Deakj 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 Jay4z9{6D_2Ald)` diff --git a/sites/kit.svelte.dev/src/routes/home/showcase/pocketbase.png b/sites/kit.svelte.dev/src/routes/home/showcase/pocketbase.png deleted file mode 100644 index b58ae9a7dbdc8733e92ff08d40c56bb2a1f4bbce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206721 zcmV)8K*qm`P)))4Ld~v(vl1ub|_N?#!y2c|_ zY`(?jQpe`)q6;sa)HU`AO>QpzKz}Z}=puc8)6!xy>CYDJVyPP+{4E0wx?k*L*WcxX z_ZE#md5cbZ9r7pWi1D&KN3b$)eZa~Ssb{mzz5d_{DPnwC#{2na;Goa}_3Gd*X*%wU zdwwshR|jHrgp4RHQB{hG^-2B@v;aRZy68gtt_&4gxpFA4@w~_e%c6djgZfM!Zozh? z&v=eLY_Y|b)|ZRDFG4qMSIR1%ohRB4<-4@oykGL&>J)xUd973agXee;bcuRRBPLW2 zj`$eKJJX|!I=!xRBL7?qwO&`dpr+D{AOBN(P{cr`k8;BAc$Nkh4pHc}P3p z7T9dD)6hNpxGiw{&Gp&dGu%VJbaAPJx;j4|=&6+>mbmEr^Wi|+W)%QhUqHF+5S5-C zP&*;d>nE5lWfwkEZFXnsg*#zcR@OZ*g-x9^>JWx+zL^*xb*umd1_rgy`hr`K^^8Y~ ztAmx&2B_RPPWtTQk>6pA43wCWRx!D>w2(SFaOvQL)|~wt0qEj(%?KK8;D}6^)DacB zjT*d=w=M##M;(gr;9~Fr?YJar`AtBJvEOulmEXPaPk9d`0cQuWjt-8zMV~8>tF$19 z>A_bzD6oBVF%}nJgz>wxR$!JOo=%p|MnR1`-s;d)v>iB7reKKBZ`NHM9)W?@3!Y+h zm8YGyx+c2}==)M2oI^3_qt3fzcPInnGnt1xIj;leEAvBhOeL*>n6#D2Tc@}Fj)Hf} zsvA6%rJhwwRAqJJY#3$6`W-!Y!BTGO-}Yoq-sbF|zTKP5cOR+JzTxaPVwkSoO_;_Ne#9?6rJb z?-$dzt>S|&gP$}YZ5Yq_ zr=Qj?*&so#!@hTt^uHK1FCU~EMjgh?xlsETGd3^W;Y8L;s|kTB{81e%7L{f7r?F33 zGH12{Li~3|##9JK0Jm&BMmH6m&9{U>$QhWK-3Ipc9cWApov)pIK-JW6g%YNNp$&}ahD`*k2O^!^yv8$v zIhCOpuRor(tz|+*ol`x4u9{EiCh#sK2JkM{$vSk*BB!7cCQX>Y3#~nJL_u2Jw`Bx% zP#YrwZIb^T^;X`qV6nSYmUa0>*F6KZ;JvSyD6Lf0T&DUt$s%7(+etn#&_R4(b&q1L zV-BM|PXmg7vs*i#Q@Ac>xvHSZxw{fALr*H-$va< zUC{6FIg|+}Q^?F*pDG>6zamfc6R5**k3~N_z4kiH7nw~s?^nNS7fS>@B7j|iV4wr7 zkl}2(Ds+`^9orz-_S_d5+)xcN63wq&c0r%KUK&X_r0V3Yfwjkz{hAsYx;2i+Mnxx| z%Y&5xYmdizmV8cXfmzB_`Og**A}FyNbO>g@3=+M`kFr4$t?<0*= zpa+}`BN8=Qp^=Oz=d?h5U6dFMw@Jn{3g}C?^2!J_w-84az*C=Rq#A}$fsD(e^@-6r zmwgJWzGHxE1VQu?#qKDrJ8*!O98lCKP8FW2^U1~HbV4?*Zy}!w?!0e!;^PQ_qz;?Q z!U_E8kWiQPy?8p+AWDG37}dB6=GczWksn*K_0Xo#i{6dKSSuOo(jiT44f#V09WdGH zJ8@`I#b{q@ggJD9V{@8zpvvuF8B&aoHkr>jH0ypYH&q}QvYu99VjucRmeG3ruzo!1 zqtC^gxZZFgjyhB)P$a?`!a50WR-CtQyUa$IIRwOhs3bD1y#7%q?Fv}|rXquy4~kO2+~ z|6)0(z6Hq!DcC4qP<;Gm>JKpq7hXC~)JwT8kw4W}JDZgBQ;D4FT1>vl_62gG_0Grz zQ;O;ma>XE&fwgHdXG?4p-5=h=9yCf7!J+{Qw7G%A_;7y?4LUyX3N@8 zIZItwR^OVh*PPJ!JfKM^9~C*2z-N}G1GVm%vLO~gNM$MBC8vvjn#=J~fkZ+#FoAVR%JgOk2`!|7*e%7aA! zy|5Z77n;tNmfsAm76iSltXEQXW3Jvh*mz#+O`DNp3E`gUbF`br>mtw5bN$X)-ZNclkq=8U3kIKb5DktzI`{Oe^XwZ2*)UN!7D?qAth5 zdn1Q^MxB@MqmD!rX_36SQ&q5AX0$4c4hF*s`%<|9ZHpXs01jo?Hv&EXLG@`UvuJsg zRm}aHKnL_P<0w#BTei(g8G+2McrrI$uX#aqXbP@;6O2^BrT#QrZcCir%%Q8%vQ=%( zLLI>fbSx=n{nB*dyYqhJkMXP`c#yn!0X`b-x!W89HZYzMyqazid0(mF1kUxMwC787|3U~7{PiwX}i7sBaa3uA*6sQguW*kr;$O@edQ8R}H&AI=1vZBt1y%_AdcBT4o-&{ELKSRnz znji0IZ!gxAbLofLYU+F64WbdgGrCrt+6a6$u-0o*q5aR8p;L|wX!5s*C)= zdNcez$vJR|QezPKDa{3g& z&Ez=w(p5M<<~&(zK8B1`TQ?|p26EPta|J7IbtBgdwKGpt$KVks6@$(+Ia^#2!>KRV z&1Jl`iD+4dx$N0HjHp}0KeA_BlhMZ+v($3NiGUF0{=CA zA|o5*;WA%PMa5Y+Bah|_7J<8Nbw#@0O@Q&e?7}Dgu_=quer)=nZG}y%8>*ZM(>@X4 zf#$vpqC%HLmdNPCozzqTb{TLV;s$v7pegrzF z*`o0Tg|H3O}c`>X;q!Nbq2Z-m3qz_*%PW06mv4 zc7gjd7?hbKVCpg!?ErI>y5oMNnuXto^nkh~J>7_8bgVQU^_J{G-}HD9@EObeD96b| z2dEhFaM0+_BC-=;(F|E|pFSiyus|+U3k*n`IQFRwHQ}2QKm+UrCN{yI4}u^1VM=;w zY*(BLiuTsT2zDZgMyUVbO4L!sLvfVP!RDi^TaR)d&icO>W)$xHbx7Smk!p(e&O94 zNPo6P9sZDc6{hUgL;j}A8}j`pB7vttQD*8bVh|WD=s82!qyhgj!HN8&p-csCbvz>= z%x4+RQpNVO#mL7%B?QOnC@jBdlIZMwp(7ZdtCDdiVcm^w+LsPT&9e1tat`1E&|llK z-HUb%3_dnnHEX%{r z_Lr?)x56?I6IjtK(8)8_bxT0EyQ=>bJ{hROYLXrbIv?Cmg$o3 z;>krR3MiV zEmVWePt5b|K%CDmCPyfF6h_Y!#6|(;QS0(vpU<5(BPB2#CpR0FUFQ_kwd{FU@0zr5 z8Aw$~J32C^R6N;u5RyEn@%eC}Tnyl^RF?`mCrEX$OZqzzKrg2OPmT65dOz$UuPQL< zR52VI`K-$=9UOH1Ifg&*Gbd2*vq_($au{iD979$Y`%xf$nEJ>dH+~V}|{;PsO2Iz4+0_K$^_)pa=cFqdLxN%(9e=MH@rB zp*{)SNof6Ba3DB;N0denh|cIp96jM<w9yYprm8Qa|H* z?a-uK$ZG!Lx&Oh)OqEG?)|^y+y0VL&v7*bgED`(W?ebT+qAI7JJiq88eF0FsKu*q% z{5*HeYTRb%#Hth+%qG$%GPekcIg`2b<+zN=TOR5$APHFV@L@U`dN}d`|DGpp+&~=j zP2{$R^Te=Se(SBI`1f7tG| z_gz}M!WG)5He4*Oy-Iijef`&BonO&ZE>WK$*$~*EW6Zn242um=cj`2CiG#jwdW4CL;uqI-g-~o;$Uapuv_nKULmfz-xa-ROSx2%E=gs2zgWag^1aB zLN2Qz3-L9yrJFsRP&V$xz%V60bw%58`f&WT34EV?z@hh=mQf;P1PE1y=Im}pi>O1& zqUgJ_cNpg~o6W+?D&L4>(PKN7quRAOUl2{t=w_!Q8kM(Q@#8LF9!y-%LDl6$mq+CN zje4}mW>asb`O_x&-Ri_;>Yq|d*5!}a=~GP#44g6r1;23uT4i-p|IJ_uZP1u!ys6t; zR3BszK^ja}u|bHFsQUg=%rna5Z&5CK{pm-zNN>$7o1Z!VwA0!}7o6Xp1IS9#4y52u zjd35v>dV?Uc4V!x?7p?T>C1NG5h?&oo%5Ts+Hv3fW-R5{L84Pj4`X}f?XJ{re6yR! z?F{2tRBlp(3pN7FbqNsYvy5@sivFrb3)28vUV{1v%+AD#(%4x@m&VZ|D|J>q(h+7+ z0icZiMjOs+$I93*x7Akdlv7V_H@)GF+6FPQ*Sy9x+R>l?ygJnT?|;ws*)M&uUFFJG zZs^6XyWON6b zM-&ifOpYERB?xRCjB8v@hKF6vXxx(G;k+H}i~wwb)il5Ye&JANlXLA$>^}5pma)~0 zs{9)}GUabwmUH@(FLVk7tRsKx@}_H60F9Vz+x+63zn%5RZiBx3>7(1RA3d^NdHXACz9i*4IZv?IOH6$} zk)@EDX<41LL7F)sjDUgFvR1oAH6na4_uKORT_QKaY}tPE>tDCsZgbnV&wcN2ZM&^d zvGu<2?@ng)`C4ZMTd%?gjWf^kY>qz_x76nxEBC>YX4a$hSYx}XeFAu82^a^>cLzah zVbi7l=!VKnch=qPgv7eEW#NAZNebn2ZZ2$h#j-FKm%IGs+xy;jNW0z^7qlDQ^ycmS z^UsT+^Z_YxV%KZKKkJgwVn69U)z1pJGS%AJy&N80Bm{w+6)*TKuuk?Qpci8 z3)AH+GC%=>A8Ww%d*pyI=Zh!WcS}Fy-wZ9Fa_38(yGpCKy5i;AQAdBWopsjP?FPH< z+J18K$qN3id+qDAZyo>LcGfxPv^{Ql%l6$9e$dW5>o;wWo87E!ztgqa$Irh&z@WPX zkG|NF9^}SAPZxkOtWZ8vI#rDye3UC>FA$9SSi9z|xhbGF7P4Gv;SF%v=we^W?|WDx zfdpUm1$W4d*4bU8F1HG({H#8|p@ZWKaEB$S;FI6}p}Ra81@=3O83jaC(B%bn_16?m zf#f(5AU{x!*U14;asn~ELXpw0!aSQgs%arW3L_+gx1?>O8)ch)^-yDs0S;Mp!NGow z`Xw05JEi+uebPBt#3t#khE^kZSpJLNIr;6r+muEV1Oil*BmH5tE?IA0BoT{$LC=jBQ3%) zQvMwbcguRE(=loE=q-6nzM1XI`>suvh9h1ou+!n$vaja-`IT;*bl5Vm%MNHC1JHp> z-H_k;$+W$(3H;&${}h6_$bT*Kx9Ho(`b8-R`kXH-TW@*pGukU&{DO9+?XGN_AY3Yx zO#X#(xkRKVU~I1Jtc@?48Dg@mU3RecbD|UrfMltc(cq^abWpqVpZ-<5=C!UR_d`q6 z*atb$dA8v`px;n5@7p>%Rds+ewL~uF%#qoaVh1TegFPbex}RN^Fu)6N6`c4#IR-|~ z0YsI)^pmFE?Sg1aRsCQ6;c{63T198kqpL1h!)oG!VCi5M5_u_Q0=&HXrNF)26 zM_`PEl4bw^1=PLiRj+K%fBa+GwXd^F6`k3?k2>Or_K6cuZTsKnzU`c|&vrv&AdpGL z7PVVM3(k`1pxoLkjq)JdY5cV62{W=Ox1nZot1bDj1Z>BrF$ zB;7(C{`{>XsW`>j4#G;gST0kR&*bDO0-xhi7v>u`l!n9gV3mAZi#KuZM zg_$mBwc!FRiP_FbjcrY$c4=9aTngx%Y;Jgr0`{JQZypMbeyamk&gf)-z`Tq8`K;fT zhyBVrr&~@WtZo8Jj4$QAa+dZY<*lE9xRogmgS@D<=!j5f^IuV)-v(1RNoC$2mN7BG;i1vfO?W2Tt~a>y z6LRc1h7o~W;@ebSE~Q`GIQvI=Gzpva)v#r&_(drUzjEHW=d~l>_?q^Lm%PyQ?f=2g z3tsTTcCEelYuDc8I%*@;7cj?v7W3GyVFn+%N%xv^vB)c>)MeXN~y(#i7o1#S1;Z`*EnyFHY_aGoD{ z?|a)9Pd~TqE6bwi2ykNFQ3VLK&uRn*$}XJ4001BWNkl{%hByWW~X z(C0_O^b_T`twazxW6xzPYm-Cnd0_m3h=i{k<&83>Mmc3_E#A_RE!-5~ZJNREWt9M9 zy7M{kbj}K(ymuI^U*FeQwgU$c8QUi<~+x@{6=# zm&X2S+3*|A_d>tkt`@miz@L~H%H;p7-~6T>_WD<81n_c~yS&Ov1sfZqWB<35p}ZY@ z@WE}@eeWy5AP0bjAvWV!g5khe8_Ta}COpSqC=lP#;96R=T-J38wG z-6m+U)Jq#0vO=A&2SLj&;AnW@T>U+b8m(R$H0z}oMhEoe?96%uA_vK3nch^!gxs5~ zCbo8iy{v7U12F*jmVbLy`-eyVVY|_dZ`>}p;DWaE&ev_f_j?Dl{rB6yJ@jD@Z6EyL z2ipM$9H7NN^#1p^&;RNy0f6^10LU;bq7;a($UFU=u@(uT;j!5z3}@yERicLh2iX*q z*)lbjd^O}NFKm!L*7M@(tRtr5UcSy8jGh*e!Fzxh7fXd(KsfXXj)UnpW0(Mun!Y&! zZrG!2`pnoHb&$@BWyaoE_I%Z{J#R~tGa`b+1?Z*STGjxbA8hM)(Dneq>Q)D%Jhr7I z`wUCP{n;V>hs5&ciap?14hRBp*OfXjb#WNOQ_1m(gt#N@+jv2|Tv% zEXKq{c%{)HSE9}^qP%uB3I|BiU+75rr^|6X%3@(m$?@sGQyWG3s&*^2hxOI+q3b{`wvtmM=l*e}*U zw>JJ#jK=|N=%VH|o4vHjQKs6UmT_{#XkpF!8_O82D7!|tF@kb|KIBXu#ZLw}1tm6!%>)J=8idvGx@Z z`4*`(4iMuY=r{%@D)vxfk?MX2S4vD|1E?@0yMnNbjG=&fp(H56S{DXr$aeAnO8 z5#?ZegO69DE52MpYc~e~;UM?C<6iBx|Nd_h`MX_visS@bQFaJF``ORZzJ2h0?`>Z= z{k*o{z3y#Gz#b~s9hh*g@^2RomVR!K zf2nP=-FEGUH@ihU_nfl>i10-Fn59V-aP${S`Li&yGIt(3~y_I=W zc?dMeRpr8F)+Ku8Q8=Y-9Sp)9XkG+zoc^R zQ5`!@#@JXRA*=`Q+VL*7qZsls9+knw`+AL51#3EXKW{Kt5q!6qCN*^2tdZ#f!xFIO zd-V}P1&8b`RBoa^p>nbozOJ z<5h|Cb=dJ%HGfzA&zudz*y?zS113L$KZ9*lnPb`R>=&9*F95$bv8z^?b^|sXW7%4w zbm%Ao0?_TPw%XeKhL`VFI)?F3Y4o}?&s|19V-)~M9(TGj(Tb1+mxy__ng4Yt3wB7b zhQSOIc6*03VTpc%wVpOj?s@=dIe-)2rhaC+>0^``<(hVNHQws`kYf)Hb@yY}YJBv; zXy4s65b6w5>Jjt>hXfvxbRRtx{ldxg9&BB-fx`m~HtYQE=R+W)d zFlb>-|3%;7EZCQb3Irw)P|`0L4|4$D@*0T%J}M)C4}bU{>!yg^cDqq~wS_v~`^i`rL@`E0x0UGJtdxDWj2A?=9&e!IMTe%n!U8t!_){o9=+atWnZ zP$nZ^-@2>q__jB$Hc_!su=t(ie{o8<63kC%$SHyqh6ERJ3v=%aTyce z!FwL3Lgi*2su@PhZRGAqRDEdTfxR8O|5oMeW;M=}HDw!B>eILmn;^ zn{lQb;c%6!Up-DGV6?8gA!U(0=kHFi`t|&C&Q<%gt?c~A7=HQlpQ%mRRyGI3Mk`Rz zf!8YXf_h-1e);pCx2x^6lR6?(9ODI}Dv-<0`N=zWFRMqvA*<#7bLzKpLE2D&k zR@lkk;J{lM)0JdQOrfbV*%>KgNILI19q{Lz^w){q_R{fq(kg%wMDuu&y#3V#G)jK{}Dh)Y)gR4FIVx5p?i@ z8lbSjMC7XT$7wvvN``K1hmKKL8VN$g}#!Hmd_@BC(&xjJa4rV3c}xB@`g1c`K~ zqUOX?T1A(BRdjh{e4F{8jKp$_3tEFA)HF^>&6F z;0Qx-&0TiYcTYI(TkUnve{TD$XFs>?bnRW*d*AX#`Tp$o&xgLRefR5MYybXF|JYvh zfseEs-|E)wl#@?tr<`-u*T(-aJ)s*)?k>AkPE^1BTpt683C%it+cK-jvQZBmd_N(6q%v&ri8e`nUSe+83Yx+o0AI2TNHbN?SzYO2gf-`HoVaA_{JdDQ%(P`MOT#t%qH*6*t_ivUQLydF-!0Am1 zxkOeY92hIxV#EMt>S4HXH6B2ZgTuN!8#aJ5*aCpn*qX)VYeCO$iO@Ftmrxi{?Yd9Gfr;@{_!K*sRGE3 zeAheLcH8eDAo1LGpNBnMCzIVl^Ap|d?O(4WHeP_sa|H;z=S{C~JMMgKJ@fRQzyHv7 z(hpD2eq2ZF!g&%YQobo~%<)4PKs(4<{Ei_OTgV*5Z^@BTHn-{hsYc zx4e~%(>C!jsGvE(Tt@XAYn?b@BbMkUK`1w7Va$+g*xf4%K;KC~1Ly@Cu4jXCbqI9v zdURZ&G4r-_*8aiiOML+SZ-4bG+C3idpth9&a(n=CAqx+C+~bu;v~4DT=5OQw9XuHL zD~D>!7|#}ZtQ7%-%z(}(3Ftib*kju@Ei}F~AN83|ueo|o{l%$myDM)e zxrsJr)o1DdPk;JTN!i-DefYy4ZhP#pN85479T#@PCRirtb05gU!LkIrE0%yA0Fqfj zLDdmN$J3Tlk4SIwZ`3bxyECKVmrVBR#I5?iT<1t1RC!z5=IHEsuk+P^8R(RA0A&~O zMIu-IF)*cMB1d1Qaq3wja5?THjHPZK+e>?ae+tsgm&GxgO{G{Fbj(2MJe#jrHp?%G>pV@A` z*PYsFaxUMWJmHD$2vP2vNCfcuH@#VV!UGRz&w1k^Dwl71>5H`7cfR(O_VB;?KMiL% zz2h~nY{_goNZ3q0(p9o<5kM^o(J*{1Tx0|=?-sC3jpqIb0ed2@fZ!h>ik88W# z{MKqL50ZhLVHN1!yngt@~w$#rv{7Z!54|TP|o2T)zkHrXtwP$$%4#0HX{R zrLj)eKA{?%*{3kTuaN5c4CSpyQWVXeTOwdt1!i^G$&CQY;QAo#uhxxzmZjkFxQosZ zS(%yykBWHf2%HE1?xUNY0AHK|#%;#fzzgY<22GKd>bThkkCge}$}c7_L%+vez=-_e zFlaf1oIJ_p-vJ21)Or#$!4z*~FszrxoZziG^)O=v0(``+IsL~{-Pay*oPF*V3G-diD$>lWb$Tv z+)gKmAA8?>1Ssy@u78u8wO^fjO1s%@Zzrn|pJ_Lc?_d7xr?t$@<=yXm^(#7tTi#($ znRuQgD;l?M-}>SgWMcYNd479YLD{_>`>~@0;GQ9q%&W9L?sB*GrB8iA0oAR<#$oad zn-gcA`Y8yE^w|b3TLr1n8Sw1#SG;2T=zHI-Kyx2i1p#fpe(W)A*BkAo?Wrx3^56N& zS9FEtPC`cz=_{W(THC+bZTD!`z41+i79VcE65zd;tfC+i`q_^ht`p+#f9o461Hbpk zKa=k}v@goBTD#riR_*j(o~q;p`1_97-y7ZHmhA>Ik*_xaRr;%(1%JY7*(;(i0DLE& z@O|+iA8&u~*uS)N9(e@t^}a*iq_l^R!0J#sH_6wB zO}_J;@7_M~iI221&pe~uM10nHGWJh@`qOQ{{q|EEcKq?jOI@c+9k*#$6&Yfba!wDS zcew<-i>=DJO}EIpo&+*``3x#%h4q!O%w5_~SM<>O@vP_4Nhq9faaZ6lLX=i$CSsze5Us9IlmIOAV zYz_*H(n)pMuu%I%0C$UHG?W^s! zciy}0e&@TifBna&w_Duq4!W!hmukPm}u5);nJJn)cd%dREB#-uF77 zJ?X_SmrW&CXg~P&x71+1^%XB`XUp!d=fC+s+dn?$k!@?4l|Sa7X9zHru}co&L+)@( z>Em+IYk_Qqwl6OUqvq1 zuSr=i%!pKk+pANo@}{6FF9%mZWQjno(9;bb1V)fUl&v>xWW;a!dzZ7M*lX1TaP!6x zZ4*oT^3jb$n6Z~5ipB`!xYVtBzR6om91vF^IOkACJ)m(8 zTB14cT^T|ICn&RrzV6?30~o*&0LS;f`E}*Z^=^DK1s%J~tvox*r1Hmdd(SuI)}H%H z6c8yVU0&oeyF2JD#t#|%&6#J)#P59yXnroM1jk9l4yzPMTRB1O#x~NIJIZRr;fMa0 z_H9?WDF`bO$W`9|!GF*Wd&ht2#PmaNKcxNsV;`pg@{oUiu`W?!>G#NYy;CN*d$q5A z_A@e3{gd{=|9q84IllbqPqpjFst8s| zZYTW$EwB=E{(0w!&D~R1ac(0M^ka@XQYPMi*FJsthjm;xmPtDL`5v*?0GdBLQC4fj z#{OLXg&n{B-S*X#9=+XX5P-G(BE)&it+s5Z{o)r2y8qzM9~VpFh@8It)&J7&d{2p7 zNrV=u12o2A|D4y;RSQlWxdi-b*#z>!g_}UQyn5u3N2;s<>^=M0&k@kJPy3qqr|m>G zcG_u2wRzwF{t4~(fB(ViH?J%H3uo*i(tCoODZ8aiG(P|NFKD^X%Y_4f{nvlh-uAZt z)H;!R1yK8wpPbl!CCiidzyJN(;fEhCAo2F?*0;V@JM6H-+Gjs|O#7R^d3<~EOJ3Su z{Gu1O4}Ivv?GAUiy@Jl&cH2$L{-o`__nq4t-}oPTipPaw3;+DjWr^G)ymNl12Y|K< z*c@B3OKqv!EM3`DP-w5s`X{wB`HZHC(KiMc%)XV0*=2;6s;}nYY!is21s#6;Nxt%7 z($WJzTMEH{VlwT6)_0ktpbyQMDqwWm+EG!Va1NFZ)qb>RK~U{V;lQ%8UMeD%D5<$1 zmTNM(Thq@0e2W|dbMT)(vh8x+>rUhX3Jf6mr7wL+XDNpsdZ-BWr`xx_bzD2*h{Iy} z;_sgF)CmBDF~AJ+pP%~o?QRGDp5~tHxbt<|&eywMd;6VyQ{Li@x{+? zce&32?UNF5dw>{T%|6=!t5SFe}8e z&}{`2?s9`03E+En`@0vuRH6pkv_k~|zWpUHYya_?W7=82KC}JVetWm4{>y9H9(&)l zz5WHy6@#+1^zXcOoP_dU`;kxRj1^JIV?KIBd(La$+;)=X@4vXuzH&19fijEUrk(N2 zU$%Qa*p^Q$^vS;^i0^$gfB5 zP-g&FkAT!jqdn&pVOB@o9MWw#!IH8blOi|y=Fm^!D zm$3WDtI?lPPVzXT`PSxSrJ?JS%Z|zc(?Qr(pG#}E9oVU9>Lt?bSxIS8R#zmp=e(%AW-T@GDzMRtr{v)D=_jZuwx4k3+ zc=$Ud0w})&03brhi5bu1OR!ONME~sVs>-=IW<;A1h@KKL$XPovc0W0qoQ1}pCnmqDdhiWts z!0PI9(C$xv^do)moo{%p*sdGM?3s}6fw#(&hrsL=) zBaFhY@1kx*iV9fg_5sViJ6`MB?Q0VG`>ynJyX~(c(a1XrNc*t@DcIT_cDzR0N$fKK z9&9sY0MSY0+~Hv49VIA$N%uP>U~p533SxZwJ>bFZi2pgX?JB?#We^NN z;QJayy7iuWwa-a(^Bmb_dk+~OB3?F;G`XAQkJ?VYWcmbMKJ{lm6=40gc2!yG-1F}H zDUFVL&%4@oSJ|Q6OP16A>?r;amlmAx}gB*T13dC?NdX-~M)c%2S@)p8oWIkQKbWl^*EhA&0zGqm=6ffYoMq zM{p@?T$k5_d7yV17_ggbD9dirHX1LbZ(AZ$q4NZ1+8H?r8UPSEfO-)0l4Nj|Ra=ej z_TG7Y-5~hIWGv259bO%t89@^kP(;&gcF($c7nF6%#FCT@m}j5q@_hoJMAwULnN0F&i&M%o-6?F zS?w9Geyz?lkt_1n7d)@M@zclZtR4}(gI@k>b!abo(&O73j{H>n%#nvloiAwb`tr9m z(Hlno#U$$Z>II&|8iHH(am#w zImsM48Zu`cG1=08O%9yp!2^>iY`FH4x-U8%+8#O3BHD3_jw($@M z#=i^tU58<5xqJ_fEe@~jvXrojOGSbFUE4t z?xvx&7b%mlS;zt0Ne;%x>cIVE$@%M_|6JSlN@BkRU;@AaKwVAJS3Y;tM>JY?Q#mj7 zlOKA2yP_;tgWtCj(DRcMzSn*&%Wv0}<+`(f{hM~mPfuz$zU8gk$r3HR{XTb-W$X{h z3dy+|QAEV=SjlmO-9w5DmNF4RgH1z}aW^RkFhzi4Al!5Vbm!9VM2Ce3nCN0z`p0s! z5$JbIxy5ON++>8`P#-qUo&B3%%d+t2)F132-yshlmq^>yWU`GM=^Kh~I7~Lw!FB_T zUR^-%55Ik!u7-R=XmgCv;lMw6l&182@l&5vK#a)ZZSHgzoh<)C#sNOvRVMig0R2OG zo%5+YK8X3KSi=6PtQ?^qCw%Lh?GaD>d)1q-eeRg{u)q2nX-96cGK`=0kG9FvUU)=${Apkt)m}A<1|F`6zicfp!Lm#RD@MSN1x#ki6+(kAZzV3CeZ|-Bo_q^vlHM+O&zWX-R`AZ2hJn(@J z)K$0}$r3#xc{>U)KV3k|=RS9=E+?Z6(}*9MK;A=tr*;07_n*>LQN_vz+Wz^(*=3xM@MKK!a+7 z9izUk3oosJ!`M*1+MNR^yMQ%fX0u-&L!q|0bTB)cMzu3wYE5E_v!JY%sP(GhEM=EH zTeU3vN?Z{R2+jtH&}@~`08Bu$zW@Lr07*naRK1d5eDV)}&^{(PHJka}s9Vdd>U$@i z)b_aAb|Ta-)qZ~UYhP=--{v-QKHvjort+Tlu6MnwJ@~;7)@REA;Ca{t@(%}T4&ZiI zxr!PE+c|trd*h3qCo{R7bUFCea`eo-#lRz3`4#d$Hhi4)gA>}LpYn8FVz|b&uPrnD zd&{PdgC&>bR$>ru)t>*if7SMpe81Cvaf&#K2PrsvY-=$NmSyL_td~MVQ1&{tCow@o~%mDi3KkevHevwR7 z*@(!Q-zSP96fo01v?9MmD zZ)$Moa_u;QFeGYy%|4hIWmLqc)f~^rlgd(&(K&k5ovWOT5bW~!hPvd>(3|XSXsE`YXi73DgKp@KeT9V5VJ;Y98tS*4(h*ZJe zU`Z6bKmF8SY9tc_#?qypir`0nAO!}W?XPI%$lOt$o!*TY4$+K->%1{K&z z$RZ-Dpy#gzR9yawSCAdn+X)!`fKIk=eCyk2ZX=d~@%%P-y0b!Tf&BNymi6o<5^`9`X#qN9Nx{ zc90hczP<6Z9&Tj;E^Z%OytBIgE4w2U;MZl;aYd~ z@hpqq{Jq&DJ6OJ!bt7$26(^84q{LFtQCc4Qq+_0KHyuYfAP5+gScDM*N#hUW`U?@n zufF^3A`s8%B7hJe&(+MY>(5`>|>#NW|amWEwBD(-%`4vWn*Kny&tHHaV{rLOG ztHA`Q!niP7g)u=+&DD0grY;$udD<`4sKAh-%$c(EfM;ikQk^Wjg<(_yB(Zq~#`)wQ z{ZN*NudD6D*c#~FLIEh=fl?qZ1$DyMVQGR%);~Y-M0GAZ3gBd92!<2J5Su^X5b7tQ zJ?c>LKjRL;nek(kLQ1`qsE?NLwyS~05z+}1vgBz~ic76Y?4}n>gqc&Hh^kTfm0*DVKxoWs7{; zCZcM00dlzuR@WUS9g@LuS1cmiQ;Bh(C)ex6klX0_M{Fv{PxBWMZCK+wP>u-MX^XfA& zh7*qarbb+q?q-7Z6M43souW?KJ8W^)CE)Cz%Q9%|?b-y$ze`8-OiQ%kljACa6R#w6M8{fiiA43h^Oytp@|XX!?s`Iw!uw>2 z;K~ll#!Vo!>A`qiZp$bUK`LgvFm5yscHDrS-=@(9F$}nljfB&v4Q5X;e4_jSbh?uY zJHn(=1+xHoevvhHv69GWgAM}ksDXDw%bjVAGSma3Vcd8W0&>;}`cN+o8Xfo~3gdp+ z2H*z4J<@u3+iC9L&{WXnzxA4_aU%kO=~{9@enAg3I_15l?O=oo&LB2;XkxLAukyIt zVB!_^JAjwZ40Q)`-9Za*;XI>Z8jYCFc;V=L#$WUPy1(Pt7njQl{2a(lfcu>BbjK7M zLBN~h(8%L3f)V-ii6;2QzPOGkB_Uf}jX-@BT-HH5-TfbzM|Z9Kk$|d{)1_R3qnQax z1(|khj~OHa(x8pY9p5qVX1Sl3oDjsvJ;_vq4v`I9EOf3BRXUa)&9yj7l)z-v!G0`m zaDy?_jJ^--f|1apvKWj5;!*Af3~Nr%$2j-*@OqxJCz^ z^xnth2<(db4FE3yXFWzocB}@yEj0ne$ZPa^P{M(05zu+XUBDyX|2KV~06<9-sA)eD zd?ElV*rikFf=w2Jzao5#%62?*K8-#zaGHZml^I6I^<~#tRbwcD{Z=Q|I0oht`1N`Y zU}pdv8nL6*54fpKu!x3SxA?4@n9H&(3AU_HribI5RHvxGGi1xvWS5FAXYar)T@A zL-R;rodCp=jOPPtl-90=<9Mu&+${`V@!BfZsdqOcS}D&I%mX-a(}_DwE(2@6lpYA3 z?_k_rq`(h79>?pkB-QLWz3!b)-uD{7tvXGDO$FH&`LL+GEvMBxg98YL&JO2%cG6qE z3{ENKbwq@ zIpe+8jKt8v*%G43|G2ZZ-w@(XkNtGs8-MKo5=~H415E{oYs~4B;TxatzG2vWY@ZpLd#3!6tng2kzD=719nFMbxg(KcM5PGi;BR6lXSx zn3&H>x3U6nwM%rEYTZi`eu`P}SSI#J2BOjx1Xf2ze(=y}=A)@$@Ww-lnZdnXJphDl0Dgbo_O9e*V@ki-jCw z;BLPdvtX~-s9M{2aB$a>+XK}rZ$syj3Y>?IjW&lBk^iKh{9Y#l zT**N9c$0_ffwZS!MJB^Yh0!Bm9&MEyw^eO2!1Y;j2I5EG{JQq4m%U_c;{TcNFL=QV+co#T zN4t*X)2i(GBy~0tU#K$c=M`8Z?Eou`TqW9gyfpf!5%|^3cH!Gx2URxW|FYxoAsZyu zR(ApGF)&)v{&8C$vZ=>s$g{b@=8*%_vMPjYl-0Io+GW}3(*Qd2NRQHC{;6F71s0Eo z#-T3Vfw0&$`(H0QxZPv#JNeqZM0xz=dDKeBjA#n-?2i80aqW>$eWoqH;!K_JmOUMF zJUusP(0NF*&TJ74Dh7$m1e`t4D6%G=(Ma~zD9$qe7|RDkrx6*C65pD$P-4imw~^q zQ}mvrFQEQv&TZa|Q32daw)0Z>#fg8a^5}p&X7Aua$UBwHm>Ll~b$M=|L(vBNW&&Wm z1bYBf<`lcURBrF0J38u_z`jvN*3h#MPTVHA0N z-hVEgSK+BVn3aoA_D#dvrF8W1beEtzKftYsE~$gYauWzs7dNZCxgMx<_FFk%BuXx) zu`-?9xRlj{JpeXdI$yw{ZaT4pocaD-?otJ7kPUo?f#Rw39AAy{>5&EUA13Wvy%y~o z!JpBBV8)^?{SF-p3qimXXjCKD$%Q-FJYfKIz>g-Q9dAkmBjntj8-YSPLn~{2b-+eI zH@ z575RKjx_D^Tr||mR6o16Jy)x~qP-Y->&=-i;eR@Dbce~#p!3xhR6ZA))3Gu7647#Q z;y_Nc?uf>9YnB7Zi4vOXa|SEuA#a@)9z`Cb{N%UN)%!K;gIpahGyCVlpqviAQ{L^j z;pbS5Ten|yT7Y&q%kh&(9w8eOw^4$DTEFw9V3$iwqHOgdH>y_kyEK184zLUQwsJ(! z?d6Ci5K|{0ZWC$i7yDGxAG0&#u`v#k*1#=m`ZiS|4@gLr^=|An%c5(6Jq*JU$>lkK z-?MW7L!k>rC&ISkvl;oFodB%TZrG2i9Hk%2p08HcxQDSqAh08s7Y-~FF4Vn2goWq1 z>GfdY?E8|7>6p1-bk3-wUe^=RD6noYpoOLLGL_u#@H@PiwL6KnmZM{5nZNvw<&sV$Hmxyxee+rhg0R;fUA31fgXC5_EC+g$G z->Un?v$78Uq*dAO&Dlv(k)6<~nW$iW#zUKv-lUpOEL>5Q6GdseCEYsK=mXaYf*hS> zZwh-}`5O~XZzU$8PW$X{i3(~3R!g_+izQuuvbk)8(lh>iQq1FM(0@*hSzdJ@^sDA; z6(HzR9gfuN2_P9gvVr`zY*rbcwcvw%c~9_p-xw=4tE`dv0io+`+zg8^a&`9{b!A`k?iZVnUt;PgJAHX2kuPD=vFBk zNZzAaWC@pCNxdY1IefItrN2?g3Rz4@<$wLMA&x!p>$Eye<9PB%meXs;boVdH+6)(; z2>EvBGrI9C>X5XM{=ji@X+oKrBS*=|>M9lq_dwtwOBSN4nP3xXDvx3K>nN#*8}y4fuJeS{XA7$a|& zK4+OlWldwlN2x#MN`wVGs9yyPSecH)W2ct2J3IpoJnuUu$3bJ)ME9v39o_C!-`@oQ z%nF#kt_QcUN!1U_NAC|h=c<~e=EY|{av_C!0O)+66V_^-PSN+G3^m-O&kKJiW!Xp2 zVt99B%Z`0wwOyYVw7b@LYSgC^z7yd&T6lYU(X%v?%Nd0{(I@8K*9uQ z7r{i0ijdhojombieWC$$kV@xgWqm0R!XHvya((>AjpdJv{zl2grsS;;)gwbCBE?;Q z3f2s)Ga5)4B8>^~QCA)u-QUA&?N}XL^6X>>%B<(_<#Mvp2#!r7$J|kDJkTBL^3lki zA9RZ2KI++2^_)M;SM*4r?_g74fqqFHbyh#w_fn@^8y6aI{!&hpJkUR$8WhfxLMe&f1iV zk@qf})sA#Q2~MiYqOc2;#0x-5OH zD}t2!0LxB`9tW6-qaIA2b-G$^0;$Kq&<>;l84S1^4|_f}9#uAIc=FB6yPB4@x|X$T zSsYed=Ty2r*&EgLM~>Qh%1Q-O^t~c2P-HaHEbd zb>VLSi8$iIL+Nf2%A~hYaKUjOgCZ~I!KRUml!z)9n}D}Y%vm5325OYYbasrk5pZP$ zG97D#?L`uqp9doIhK&B0np^^{Gf+e;c*Y@b^FWjsIZzSh(`Dt7@8{=$5%lpye6}~< z08%FftLazr)<+u*A(&AcR*ySzdp~&Hoqp!PUaU8Uz;5aB zTjhL9PAJef+ZAs|c#$V{C$sj~CuO#Iin+MK=_P(-{WdK9*ZRv=-Q#rTvb2Ax2NsE~ z=_4lc)&8x2Jae=d?L}vQOXQuh%L#dE=>nUqKF?ZQ&4wjLU`jwAxm(T8Yn$}-(lVpa zBQ}}iZB@k%^Hh1&;Do0|j1%cgiFwdw7Xb{Ffc=E>JCvWytbNc`NLDFZ4WL&|Mvu-AJ<6OXL;s%XM91YsnWK~U+9Nb;(Q)XL z*K5(8DIGJ`Ia6=CQueMybLax;aF@5660;U>U1|t~nPY*L<9xc5$LjdVTeLvHQ=?un z{-Vfuw+DO{<%*mR7yMZIb)^RY)ZM7!*zKU_JQH#}_JvV5M*8URz!0#+Zep+qB+gGW z*)BRa5|08wo%DZuS|kwi;F@WqFKw!`){QQnW0#gLbj0Xr%YYFXbM?1nciTBy=~n@j zwdWHaRRz4CvacN~fN%ng+}4Z^(S<58^4cTlCUAJ{LtXBD(Bjp5#kkaTj`zhnj=T$dTZ@UN* z#^E42Z}>nnn85gL5+bL#9t`w5U#_L=cEX#fbHKtQnEVzD?+Bl(Y{MSayeyY_I+}Ia zizR+>xi4^=jlR$L)HTcccxQc^kC}FNz2k8={Y_23qwfXum_ zsJ{1cgIw8%4KH>MU@*Hl1rEly{B{nbT81TM?P!f^RAx*HflQf^7uP~D*MH}1lFO_; zuYE3ga77Fa;bOi}9AICTK!)JZBQ(PdG63r$S_EBuhoC!So9tx%6OMk-8$sMa_B&21 z;xh%pCwC_jqT74s;0ET)FJ7#pun}xZi_VZN;B7jT-s~9goZ<1N_{kl>c=uw@TWe_X zc=6DUiT;_(!T=(+3mcIF&b+Ej_4TGf<2hoWdx=(g$NJsde&{WDC{YPG?ucUeZvo@I zyj}ZdC;V#;py!X-jMEN*Wu%XeUx6T&ewjDrAUBS*0XVD56gud{i)T|qLYmFdm=4%@ zU=H6l-T=@5c)DhXkvDlUuxGpOC+AvKu+-feqOJ7f@OCK#W*aE2i6BTP)t(}+6B}2b zIe3Z4TwSJeBUEY1D6sO)cYL!uByUU-esxQ<$}lc z<$KgSOp0m99P~(4=gZZydJuFy2F4mPE3L|+<>-0+8D(Fe7h_Q@Da(#nfChm?i1W5q z1r2Ve%x){<@h)ctjEWh#`tg_pss_%>d%bhxG4#(|EdvKNUo4LeSU`(loH2yX2VLW3 z=1S!u*)yUAVL)w`Z$t8BE|2oXSdCkSf3;65@HXYcd0T3pX{)xY&9ZTQP_>FVcKp3E zygDNC%tsm)+oMQ>oK(Z1HCK70Yy@u$aR#|yWHo>Yoc3@?G&w4%OnxYSz0EfM&!z9UAaA5^3$AXQ zUvzqHlureZs|_9o9SJCHmkj%$^j!Am{9$Q;bTHcNOA za>0qPyu0~kuo*cX`WpQO{BTn160n{FC=tN$vtcSyzN#N*VG}+RO#6+-#+{=#QkN-= zS3YAeMw`Xy_5c7N07*naRJzV8z1Z*%9YrxpoYnh)>dE&}UpTbl5K5mp=4h-NPpCrb znSww|wrApU&|^ti)=#Ivi8mc16PkJT3~3tKe(qkrHC=^Dzo6(Q_>Blprv(Y&E zIKEK9K^3GRfD6{3N#;~bULoIK;H0Bj*C>r-H~?0WV>t)Fa}gX9O^eg4!dudtlO7by z<@<6)*_=Fi1L5$);5j`Bn!UeDI**Fcv6KIr2j-Ii+m&ZaxBXdwzKqK}K#%ZobBH-V z%bnBZUN2vBTtLFu2x1I!x|V2P(d(+id^hg6Eq2mPLRbUxfGo2~RBmn|Kpuf$Mgx=f zt^#J4^`;kF>YXehO?X7xQ6>~&o6K$zNeK&_Dj5_}n>d_fNv!)|gB zXFys_ks87!(sD+mMFTTB+D%M6vOA%L(;;sy;gX(>A)>6E{kD#V))e(gy-a&gx^+5h zN^14!zbR9k9CEC6$2??QZ>lWDoRvVblR4H zXRd-9m)O`1YZL;Ge=<8zO-eCx5%Mp9ME#6M?9?!%UA9{FJE)%ZcI|q&ePWYn=-ly= zVbh3(8}CBXAmUo>4old2WQz=-yZxbp4WrWRct}IgK$kwe6JxYV8L1G)B1r^3G@>?) zo(EBxKbtD6^RASuGG=`64(UG$>h$+OIofn_6csqqiIf)xUXN`q{7wdGl^%_7z^{?i z=%E3a8d)``ofV97Q~5(WSu6JcMsLeOv-~sz-@%7K1%n=x%Hk#nj^905PEc&Q&T_si zN`q&*K0UU*#`_abmj`cusE)O){f4`##st8t0ohng_TfXZ{q>DZsigaC@F=sT0yrox z^(vh(rie}(@z93q%WxDAdC=Pu6Y7cWo%~RR#(7k{82J_(Z4CUN=MB(!k*YAFQVwBc=xscIb^T?oC; zC>y6L0H`ga(+plRc{AV6y6Og{0G&(wWVI}sI8yJY7$K#7{v1Fx7z6QVI6)V$ns z7B**G&iUet1z$vzroe2)hDq;E0?KPHrUo)PJER6&Ex8)L00vx+Q<*N>Ty@!hrm$&y zGqk|()7_NlhqTGrFUyYO@jh|aAC3IT$njG0n5FnMAk=3CBV5gL0w*IOljcbgE}yGG zD@>+=8;#@CZ2qwrR@B*v%~#~Je$?cgHb zM(@2(CXcq<$NIY+p59$9dDZcBK0)g<5X)hNW7eTsf9-JRJW#y;-Q_-&oId6UDl*D& zi2@4ryXO7X-H>St%)wQYT#uI`f5!2|B&9CLDmzgbQCbhcbY6>o;Xhn{E|Z)T1(z2E zFP8rpM$)WXnG~hIvuy$;6JZBEVS`NGXiusgsv=e+@bi&I*LmfgRnGiO^tU^)-zN-J zf95v7XwO*JaFT%83|lfa{j@RkPS$clL9p)dY$ch4MERSC-F85*&?@wx{-I*xx*B1( zq?pmM|5RYa_H{y{8IhyS+mca&f`au zxvX=tYUN`#-c{eh@wz-IOX?)i8}4jLZ-?}a!N+KyLRP)+qaRr|o|&?h2zBYQGOXA6 z!LOD+1szMDjE-C(E2}0tzVwT1Z!JF`Qnblv;b6%pSI8^n3enoWpwL2P7SZXv-O2RP z_^89JMr4k+R3Rx~kw{NxDRf#WtHIkodRXxSgE$?;p3reP2Bs=WNBqG#(|{Xa-H5vs zs}rj;O5=U0&T%i5uGor>W*mKic44e%%a-LnC}HSbIvH?iynm8LA!u5dI6ezQ;V;+O z=9KvT?1sC)v`#f@n1OAjH8HPeZq{V9GXgFGUfnW`zn@E=86|W45yUYPn=>B4ozky* z`yfy;OmqaKhnnzos)e;3Ku=m!$6@u-C@d`Na#l@~_0>uQP;)vMsIpzC_MG$_W}hp{ zRLZ;aBo5~-LYGa{VZ`5bF2*-=(pCg{Ub4ZXyVp09l<|JeS*b>dJA&)dujT+s;t7N=DQ!gsRB0|2Z24fxS%Y6aZ(8$a1omHU=Ad1P}>* z0G7A{q5V(_TMlEFRPSj9=;ESHHH-jiojiB4PTCb$$lA~wA*sE#o6TtkFA|5G~XvZo@?2?G6@&(b(4t2S~nZsn;N7nM8OYqhK6 z%8lEqiGHnU{|5gQ>Z)VteJ!7{za}FFuF<@1tf7uBuz$1<6HxD!(q`jp7p;%ghN+ZX zIzL}DbO9~&jRmymB6seGM>@@yP23VEDfrUw+T$59PujHUo$NimmSP@^abnZ0eC^ZX z@hmz9hB9gh!7KDC!_oRI(`Vr{MCpiCBebUKTslV+aKSpwd6l&|&hUIt!PxodEL+>P zXv1&@bLS5B%^ zpn<85q(|6J@u@>HMs}jH1XPYZ;Jm-&@@;C~x(qDj!9uy9Q|+UKW7JL^q(@E6@a6mA za9#gs@Y2QJLCsvv>Rlec~t zcoN=d1T>UXyTEI+bQ1_c1l}*28KWzPv&uR3X{wvqo<%dcVL=j^J6e+(Gwo6@+?d%! z%^j!n$wb$B#3)Yy9*+{~I~-FnH0qLFN9-sUd)R?h8X$MyY7eUY8v%j?F4o})z$L00 z{1W9Xhd*~S^wB<*lLoY>4pb~(PUJ?G{Kvcc5>#1N?X67i+-6(n)-B7W&isY7T3W zKc-KkELOkj_}QWG3OsP)5d(xeuEM{u>=KMHUe!9mCa!BEZmDCflW>!D4|;^XSPk>k zBfmHatzn6v#oT!0x9KLQ1b$1)hV+gHLAzWN)e~2wKk*q3L7^(Oox<;$*@3vhEaWqJ zP_IRyKGk;DQ?~Y#f@c=qMp|bnW_-Ry3y8+iO$GvY`I&J4y~46;crJdJ@C$%WQ=!3TIg&3?#g9d7+H2x z$;HTXy>3f(Mk(oLcC#+yZ6{NqJR{BmfBgKp!5~FM0EWWT5PC3U2Rj2=>yBQ}>8r=S z(8$uccejB!u!H=mzsAmAsRPkJy-yl4-+{j}L!A2VP@R7Ak@7UhTcfL+0R@7dzpAvh z-L=bfvta0Mb4opvkt!X4s74J5HceGh{h=qFQW=1#OMJ1Esu7!fdyelFTVttFmnR*p zGP3U~ppp^*12ic&wP-t>Wl#r{M#F*NZU*fjG|&r?Js zv5vEE6Y_%_A<#d{n>u$ls7$ZXdJApS4cM<4Jv08ZAF(M#%Nvd2`aI=xp}qyM=gUn5de-l8IVOo6GxVUIwa4Y5oV4Z= zZAU96Ev$!*%C;4G`&*X_C-;mj^B!QO=D4}0<~6NB3l51g#qX+MPF&KsK2yDtceaqr z?(t!M-k9T5BO3j=XXX^mY1(p*9rXJ64wE|WyeN|wj zld3iJi*g*aF3XcCtLQ8F#6N3P-FFM?5`Hd|(?$^>Fn=r}5DKNodchOd2X}nzBM7LV z#y?|Z(D+F?Pv%bB&m~x;Kl@Q~%O*L0uJ0T@9kYT<`A<6QTtU!lCOf&Y^8z*3Q=Gdl zqsBFYgR?K2OD@rQ z)uG8vwrP4~lcr3dC#p%{pR!8XH}FFm*QImH%}Ra*&97kps8?~%b+J1pc9i+KKF{cg zc5W@Z>weMMG+in*Iqv-8FdjafqlE&>AwRY1^*G@h?M3LCwz-b+jP_!!vQAq9COzvg z-21A2-j~j)V}7rC#XOacOUDDcxo_9Wc>!ly#~R~7n?ZM3!dDwZTQk~Zh=4;grEo4s zx{g%^0_UappGiHkZkl@RqbFikd)_?YN-(c zww$#^fJ9r9ed*iibjS6T+{=v$8BNz`@}6#FV|`YQyMLRTo`Tmp3l_ldYHfGj3W9>sMtTWsf8c7Cn~-L_r8JO;)MZqA6!nbZSD4f$XRWiW*^ zvq1_>0lCE$=WHk4YWJA>LfgE_%hEV2s&)rlqe2y(r}OChSjR?O*5Ne%s7jt^pn-Wj zN04{J;x{g-cM%tFG94y===(DHR@zn}Su|ts9ArPDSzG804b`V%M_WT@Mj5EjmpwBT z+ca`f`BTA3m!R&zJB_lnUUM_n*C&%QwwFsLeY8j;!DZKDjsE44LpTz~A|>?(5Z?BY z5H-=@;Io`S<5B=LWO>Kxz3Iha8Y?f@HEN- zc|>Vvgi&RoJNm?Qd5pmDyB%TEVoBI?2c=a{%#X=0qk)lgI7DBCOmuj415RioA`fu{ z4fVvHDurFP!fq9ViioQnp=A+`arstL2ppi+Cj6@P+=wWZ!My zXuHYV7^{z|eqX=+OC9W%>QNV_ojDc$-3`c%Ko#;> zeRN0D2`ZWkX?2HCMjU^lES6fNGLm(!-ar#kuNy9(xn>f3S$2YImY--8_8`~lp$4o3@ls-!a6^hJE>gDqVasgsafI~QZ$Z+PjniCRQQqGsP zTO3^q zxO3G(fgI5sWzlJ4z}KQ!ot`?qqnM7->SYQ?+;^LV)=sjoH0s^0CxiFQcc#Zq)TLiE z&Qt*|iz5dvG(m5{&UlOoTkfX_I#CyvxID`PyO!!aMhsG-u?eFF0b z>rE%KH+^^nn`Eo}0gY!5iFU!YRoUVToF|cki5%NGd5gx(p0CS~3}vZ93w>MYQ{D*< zfUe_ITQg(hRfkj}SxY(|)@9Gakkg^LvOpsz z&se~X=4{zT&&IOF$xZGgoiX;D{?|6u4s`XJ@xv8IFrIqfuR9;SR*z?>OKzqIhW6Aw z(%=StNR*x{-8WaJ>QAg%64s0~!8qGg$U6j?}UAMF+oxr~386>o!5-jAL? zE^~#Pak#LOU&d4O1Vh#r)1AskTJxp|17o~j*yN&129^R{u8My5BO5edgeUhSPb!zq z>d`M5HG$&iDfOe%3^@orUZ8s+%kJijjszGeGz#ZM@;J?l3K!s64leF?$a>*YR$H%5 zQ#YCPr`^{G+AI$URUC{|nU1nWR(0q_E-ad2hbNDEoAxkmRJU8X9Ku}zZGbQxPtEyr zmGV9W2t?bFJ5*!{5j8BQ%7+nSn><=-iyki&JG8l^?BkPn;@NQaUaVS3yAiRA34jrY z6W2On4I5HGzim!Q@Su^&N%YYG(Rd>gCpW0B&xcJqS!a}t@zM7QgoY!Av}-hlrEJ(C zRg%%3FZV&qeZjP>^&xj-_bC$nc-Hc5RY&S>{FtCEuzzdXU3pD`GSsrW!&AN;_IX%`lb2ZMfR(`STr8u9r);e6=0cMWMFR2 zKBs1wY;QQ-Zvp`Tq|%yFr{$Y0J$ALYlVps&I?{+>L4bHis)GwR!dg{;D|0dxuyl^Y z;fgii1D8JE%bk_?leJp#bM3Mmdo|#5yAiXui;hNd11*AR_qF0;)gDwZs$rz^nKB@m z2A|3fYtr0_!+AHygSR{3?#5oegtX;vB`c?ZLlZK~hobZM7F;%rPD375Z8!Q#nj6-LWzt~ z=8~33y}x(qY2h+B=QzoKdwjuur3s)ss$Az=7tFE=c!=`mmuAd_cgw_1A9ON8r9~o?Ao0vCPElCxuG^A1;?I`V`WyflFC&7Z zJ>;OnM)l!X&krly90FCcUStm z=y~1-!fDn5{tWDj3EH4v)HxlRZ$QAi{U!*Pu{HEo$K(+z{9Tt?C$o3*YJ^>IsCQhd<+#j-^>VHgE~yh& zzVT!L+B(W3N^CxNg_qkJJZEk(cA48!r$zcfn*f0xapZY$=!)4u&+&@LoQ+za`FK&M zPG)O#Ph~EI+#oRI-wVg2T2Edmhm#NOj?2OQgvkN2L^_Mf9j1!XvfD=PU`{Ya=eH5Q zKqam6YxGZ}oGh<7T6w}!n4xfmu$qx=$QP%>A;2o5AYa%@Lw*~Df}Z)pcRop&B{avMh* z4LToXU3V(xA%39kt`o9xJn9$2ukaSBvf4D!600Eq;1SdqVN&UoI6dIe?w4a7s8b=-YP0~}Yyiu^QVu8A)ziX|@#SnY zj>iqn3_0{CL~|^E%Vz#I6EQ>CCDNM?*=T(SVt_pd(zOj5)oHsZUw_4SZ_k}lrEeeQ zoz@mKTONw7M&6|@ z@_Tg4aa>3DQ3Wf@eBy7e@GgM7CoCFTVB zb9rIBqRJv|Qiop+2in

KJ| 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βU3j;&H1Pu`HP(M!Gd znmPs9Y3oNGGU=x9Dt^}-k4b2g^3^IWM6kj!Wb63;m&3qop9$BVm>T}+Punv;%<=%L9aT@6DRZgWr+P8n9%8R$iWY<=xbW$1h45 zyX_|0qU}%Hp3C{VI?Tf#zw>{GHEWlLuYK+Rg#Y@l?}clxy@u(2-E}_+AOHBr2?V~I z;{QIx!-j|O+uy!A{Ka2~efzo)+&3_nrv$DC)FX3LqJ_mf+@Gy~+Y!z9Rgr*RFr2jGFgJ7C*;mes}KP#{ke4 zQi{YQ+LRrt6D+%4{y;Ze7iyC@m`;`tA2LYfjR!4b&2|L}eU^hGWj$1)V=SlKqPnJ5 zS+19K!g0jb|Kjsu&~@v>s(vpIUtMt^ES_*?Sha9y`0%;Q!|zW1Na)vx;{F2du$`c= zgk`>3VF40(tUdKqE{p{vNVff_PVdmKjL;n$D zLZ9`ELwg$?h!`vUM!aIb~Fg0mLa_ zq=6yNC_4)hXNW{Qxi$ee)`x0yVr2@zzO(3ztde?VwQW`HzIma)0>KFGAZyIaLIeA$ z)hBr`^|{v#Ppy|y&S+YGEBpqi<1Jk_E;%7ME{EkqV*}}N%;_gukOhXfeyNizbXteR z^w?<4K$u-JPl|{HjBJW~aR^n`NXEBItL@^- z>H$D7maPCy2r=`B-&(t26M?keVceKe5sYEP@cgY@w=v9^d>XI#Ev7I7N6b6W3%vra zpxeG{FMGHTP}~?|Ne>=87(-Gm9vViB92whP zxqMleG-XN{KxL71ozs+1-7rkpqFlRX4P8|@fV@mo_&c0h-Aku$hYcGRp5C-E93q7c zFZ=M}!x>u2@c~OitrEjvYNpCt4@7lntKJ}@16NsdN(O4#kz5|ZY^QrMY2^{J=nBT8cmU|*#B$id(!nU_gS>*nkHf;*c z3(e=s)jZem4jwqTi|E!K_UzeCG#e7$_{P`Jmhb(nht{oIO=V`$>ERJnW(|1;w}$!i z&kS?toF4AHYZ2!_#QcEP$6+i8m_PmWR-)7X@Tyn6CfsntFKEt(QTgE-5|i}Vb3+RO z@}S|+VFCdElD2?9{V7TVqj^{bhbK>jfEy6L$QQZbMxTKiS?~oG6~}m?BRK{$w~H3% zuk}An9VL;;SM;7ila@8`}8uY1|3@Qyjh!j(h*nSk3r6A-2YP5nlMUI*_9$A&E-@7_G} z04e}n{9jZT0c6%a1Q7S{3*Y+gFG5@Uq;S=%e=F<=!@`8)Tf*3*YeE=4BaFQ4Z3O_B zc%$BUB2=z3x3%b4pD)awOFxd1-h#Yi&Jw;T+k%L1nB55g(jp)SfRYA=y>4C!DOiug z@VLb>y^4`cc7~;rXw=0#ikIq@O`be$f*1ROkHqhV|0JAaGsWC$vX|Us{5Zw{8dyu1 zs&FST2;-&P2m=A+E94}Xpw|TA!9XWTz#M=~2390NRub}KAlB;SVPRajW==-g_=m?U zH5P+9VZ0Ii`P7q7h69h>+o`*Nn}toSdH|cPw~7#_V%d5V>c>+J09Bht35=Z1fW`pe z(7^-4nD$W`o0{Hva>bf3X~I}G@Bk2{*gjV;8yGr-0?>Egz4wOGY1MeguWl!RH;RV< zqquX|?l5-Dm@tO^J^92F;bpIQ1t}IvTunx2>(;H|@y8wuuXyDv383rn;5qz>Ki}+;hXh^N)w$oi-r+*64@Bg~Q%J@md$r31FI&UH6A$ zqnCs}?enPov2Yk$!1rFmpHC3)_MvUz^_#YZ>+f9_rY<-uoIZPI7&U!<=(S~aXj^kf z=r{R-F!G9bFaXREZ$1b4%DXs)T}TTflP*M{voYrn6F**b!TBt&yekuRoaZM;W8xX0 z3BC*1lJuf;Wlb)f!!P0-^Ahq5kv)^0Cb!FD zQl_LS!~oh>kpepGGwWfFD!H{mdk>$viH%l%Ti8GI^+hu4#Bz>7cpVwdrmYq4)>L>` z=$6OGJns0z!V9-I)j43mK)wlN@8Y{V1ptdQsr7fO0I=D5Uuf?M06a>kfRBa&{mXzY zEhL0HJOCU_dEds3Zf8U2LEh4pYs2J;<7xmv^{P<2P%N9b@8Wt9@Acq=4}|&i=7rmC zxtZB);>3x3Vsy};L6n|kZ`em(yVE933galQY}2Nv$^IKS<;W@@P|BMCUASFkJvKdLILWd9lmV;S|Hdvei7+v?1pM=-H z;SFrm@4kybCFRBgVBN4`BYC>64_~G@I6mmW^?8}9j$L6D2Vhrcv1Ypr+2S-wtE^;g z;aX66u*47U}@Q&H-jKM6r$4rhRoB6#Q}Z*{Ox^sdfBT$@8f%b3;!GMi+72P zsO8J3Cx~tZ6USV9zY(!2>Q6wsyeI}xg@^MszxBHC4;LC4e7f4>Y>$iYxdeIX<_K93BP{==ZWCT`Zi8O&zZ>9#7_~ z@fZ~f^%^aR*N$NecrnEQ{`YlZ$1mrHkFUEc{Q8{FhF)h(4P(zc5x#Qfbz%OnkAD@t3!87X11l&d7jysklTR@h{g2na zMrJ`5o@I=XXk04~px;eoJ?5sZsLuFVCL`(PBJ}L?vfPv?7p^Qp^7`^7pm%20nzd%_v)}ui@B2=2PAfUz z*?ZPrYxc~n|C*UKi`=wk#C~^@;C1cbaKm>@k`VCHH{O7q^Jk?3KxMnN_U8JoX*&x5 ztk-yQF+kl^<+=J=7IuUcYWFj5~Hb-}7I% zlk~DHu7D>VdyK=k<0npp+yCjG;FDOmc+FdHqE~4-Oh5Y^cxAzS7=)84ffEYpzJ(L@ z(deC9j2>(9>OF^>7lxpBaXn6OqsJTrZ=f7+LEt$6%brX^fJr-7_hQ)iyz@WIfQUfK zp#FW(Lude?tmH|5I0S?f;iHc}iU9HxSPc1>Fm~)X9>+%XR-Sq084M1uzWOS27BG1L zgHM$=t4yTLNAudM5}f*ST=8uoLzJ%+qX@VB6%uT zu3QFBKJ_#=`7V08UVU{T<}V({-Z27f=b=2&?^3zJr~a7Gk}C?~hZF2**QQOrdy^TKCJU*V5`bXp4iutK+n43$B zplAN;DHu9rD0|TRBakEAShjQ-9%o2i+db%+Uj&n9@b~Ni{Qcq|Lic+whwe+xfEV6A z8UAhaaCrITNig+eBj97BcERMHcfz19cj1oV@tD4~2=)zF00$j%9Hy|m4}01+!}_0n z6?U#!2wQgafVF$xhcSQgzhK#$o8j4~9)*cxj)tzi2f@2oO!{v>dl9T(JP!_?G@Ywv zcu#JvTofITmZ_q&f=LLRuU)sE=YW^zF2Lx{K$!l=XV~0M_Q@OJjjS+T6cOos8JIIn z4j{^gS-C3UCkti^_}$usTIXrTZ~POvb(W16rK+*Gb_FjvnX>$i(wZmPhlYy<-6x09 zqJWU-Dcy*L*Nl;Q`4|?0W{0FzBr5zEfIoqjmY1$wcR%G%MDhdWnuLC>{yL;;=4Zn% zVhVPMfF$SW5%_cNc6*b3l>y3iHo=3^nD;I3#Jp7NCFp?you>|0Fn$DfpP%B>In?1|_zP)?q3jwo{53mJGA3b{uPBJ@o?nci^H}n>4!#Z@E z80--!?2X}E`uEM%t6?bS0MgF6H5hWD>%V*91sFbjI2?zY2Z&}TdL?M5>Z(<%;R7?y zg%@YN05AS-7W^d^FQy5Zbb-7VJuwWmXU}d1vGhB6GAN`)6E+z@n(X*~^2#7kBw$D( zExJabF8ZB5hYlWKcJkR}pm8|aq-p$j=FFL#w@A-ijr}LDC6z-NfhT0#efQmP?KM|( z2$(m4=uZjHl_R%{$>9Bw{AnNt0(#78lXzCH5n zZN*dsDs%JWpWMMfW*ttJBp)PuR0f9t9C@vK;lhZ#U9>xzLZ)liu7e2^#k18EsaCvfZFS3 z{`J7$&Ki!E`o#IUxR7}V7igsKZEbDv>VgIA$tI6B)qfn1-g?qa(o^#GQLZlOq~r@y z8U_Jd8s9O;jOF|=x^^h0PnbgA>9)qLMVuXqA5UPX+{n^-VM6p60!Co=-qIgHmla=z zUh7YTwpnB0#^=Vs|2g$EIQ-P^@Zr(@VamWAaPFWRpnuPKmi}XI7zBWO z5dd!b<+tFyEvsSMx`pt}>u2 zUEgDIkZL!s2@|#I0BZ4Qp6~HFfNs6zl*&!($^%G-eHd;6p`C)VKBU#-vemQ+6V{%iJU{}048-s|37_mLq+PtUAR^f$PY7+w*oGmeA%lnTJtXTi zxl-LZnv4jbJ@1>Vid)zu`84kcY=5S-AKtc_-|z3dk4`$BJ5`)1gNC zzF7FD*Y38rVlR|u(Ag4W3ydA`vfvE9?Sq*Vyy5lMjnS|rmwY|bxbqgo(uUVXi=rDylT}ooowp!^)>(8xm44{-Ogai~8Epc&`Wm<%-yfwc5YQue-Hrh85S!md z@0!4(*i%!&%Y@G5{rTQ`7{<2O^52BlyE4e6e?{i0O_FK1(9rKoefRRHoC1-1#rAti z@it3jnYg?a>r`&%ET&8V03ZNKL_t(XFCc+H8W;76yxHT%kGH8zW|yzYXEeKk4J#%0 z*Nm3K`*>k6Zl0n|R2=G8;k0N!YT>CBN88P~>smgeJZ4dj%BuAM?nDnDY`Yx#EuR1z z9-jo4{tjT}(CN@;!Z4UM{9yRn@w?!Qlkb7SUH=1Z6GnoEc>uV3`xcn{i|@fc4E-K= z$~3tDmruatvuD86>3;&hy8q`G4&REov3+17<^wKYv=D}mIu<5O`%@DFw!k6j9po8L zJgwigo5n{0OdiPDH*e)n@PNYymiM(fZ{%2)fswO-%~5a$?0bDScF@@vbyZs};qszI^iEr3|Lz6EnqTy|xG&0PrDGmXuQ%b!5Q7{*_ahs>@Z%XT9z<_AWl`?! zmtvT;QD(5t`xrDX6$zr?Pnh9psWFLd8}@U!SOG!ZuzNvPvSdPPm4S)8+$Q-m764k| ziy9AO=uLQNH-<#lZoo1y5yd9i>5Iw#6dDdOgjta*JmDrX${}mR33V@Sw5Z)RY`_Rl z`K%t~oxn0Nw26R$r?KkP4@tzQl_*VEbT1{(I|CvQcQdV;6{42MwyC{Rv}*5zz>g*{ z!wWwi%_}n*QpnGQxy9I-i5+(VU-xym>85X?SL9e|;}Ebij`pkf%87|LLp6GBp6fxU zzGk4fY^;;Je8f>1kH~W^WUFbL?Ua44T@}{!Iqa|Rv)daJ(q z9^>^kURDi%iIHBWSQTV(ga2;dg=anEPI=jwBHnVX8yXZaA1vIGzI4OIT|YWU8gm2< z_A|D`>2=C@{21k1e%d4(#&aH}b6^N~>w@pVzBjLdfhz!dzi=kJ{>EUq3Pbx3!`T2+ zj)99lI~L9w^*)U5F%ORFb`uOeb{_QTe*$#H9Kg++H^F^B`bYHW0n9l2ESUY<=ir%_ z7sEMN+GzfZ&%x+XBVqK2p%^jf1Dh}(7qe%cTH2UT=Bzg>QaJA!?c8%;=upSP?nFxn@SdPfaMp9%VGnDsD z4d{8v$fNxjQFn4@m}^d>q$&FuD7 z`E{&>=EEIwPm6SbIh{gl0?&@$^1|JVPolLC7Y~K(SmZJ@0Wvmy)a_cXa~XhUECUlY zTwcJlzg3~lZoS+cMf;TG0d$@to@Bi@gx|lN99({r?ka1VU931|^EWs!W)X@vg5)Jo z3y+N9Go4p!E0=oZ8<$XCj;B^Jc^4+FGG)Rvk5@i6Wnum5Hhd--zZ=klbmNWRgyYaF zKw&b`DZ{ytS2D&}<8AFl9FWlbiC&NQ3f4Z?+oZgGGTaE)+2v>>w%@g@?T@tVJp?)^ zn(w)3e3G|Ip7%vD! zQj6VS`-bOX_ln!0=ezx(&x-e;+lB$~*5+>TE8L*<-#w0pgN6@8&t*5P|9KEhISSy9 zPdptXUW1V{zsJo@`=ITuh0yiAHm()8WBV@HzV8pvr)PKQgEB)k@Nlh)Fq1q~s2lx8 zK-YmI5j@g(!Ub`@@#N!0#58&I0SV@t{HmsHYHErK9bvIB~73;KYLnZY)xPE0ec{X-%3O_oJfUiAAV6U zikd;9yk`NY8Vb*mtlOM-h3d%BW&~qAwJ#-Xq9`!Z)cYH4FhQZvyR(3K7qC@(UZKk( zMoq^eQ{vupjFNjiY%mL;D6O47lrnfPcjjyF@EddpQWk1#$ZM6`YN%3Bnr_gG_|>m| z6>j_A-|g_Rv^r3n1DAjK3OpU<+nf_>K1n)KE9YXe%^IKVGtCzHbi~uz={Sv6HunVX zcIs+zTBGLTsVdGdO<@*}GS^sR-NC#-42OAu7%9Lrec9Pz=f&;>Xz)e7i$8g9C2(!i zuIRn9wT(@b0gWbwxXBJsiZCw{sm36Cg?-uvjr<@w5yhqhL_K4jRW8gq?OAeeDvU(y z0Gbdmfj1_d97gbx(huE6 z91s+-_3e7RL^#PrdrV)r4xpa~L#5HbM^xW|IhmkqSHWU(YF)Ca?OKM2>P4R$_SFwe zm}&~^np{TXVik{&ctdFSPjh+ztC_Usr;hgkDkH6zNr5#N4b%5J)w6ddXo1tBkT&p| zWufjWXum8i&DX}%)G9Uq6sK7p7}NN=cR!eS72kQsot&@8`qcV#dJd4cVdsvWaLMN{ zfhoA#l}?p0XN$^vPm+r`9nf-8Oh-Z)OP4o4Tg0)q7;SFdOwcV8YU@nAknxkZC+c(c zT(0~mw>BU`sQVQonYh^PS=0SMp; zP$t4$av6HQZ0nY1f$eN6`-f}@b^+TmFqkXO2T<68(xwKok&yt`sHs50wlaLS`FLGI zzEpJH97|~Ks3+#psd<8X3=lN=++0d8c&_XShCIvCIwmUR^WDrG z0NjmdHul5>?WEkbq|SFlpEDU*;fD4Yk4vz3Ygb(hz*;oFi$j7)41Apz#a%B?E8Y#i zfrG8G<(^Kdu+L5GleJQH=#zo>^50^-2*x8bLry;CJgB#6I!k-Md=ij)NvpMuaHp#mED}v#zqpZslSO-vZMlXou_n2qL zzTl#?x?KS)aeXP;uI@K|m*eQTFfO`vsQ@Hx0@*pg+EH+MrMxNt%=?`E{XXXb#PStp zhn{Snh>kpJ>h$08JSU? zTFoL*4L9zZZZ~>8?V2-&V%(??%Br;&Z4_u_J(t;G@mVBrVhnj5#$%S~aR{)AT*O&! zJ;gPXoX1(sqV}SrbUv@e&udGXnHR<6oB<$~ySnw;-$4LKbpXe?v!Qthxn1zaVUHxd zWOUX<9~t}^^{%y#N+Z**7r7Sg6aDRQ59a$(`i^XP)9rTo)uPo#bMx2({ggDB%96Kw z(I(A>k@1+FZ3Y$7ciPrYg`oE>oDGyH9X;kJuUh53uLS_}aw`2k0f5`F3=1VV*X-@6 z&tqDxv^db>K#Kz{4(!Jq5D(yOx84fByN`plAoi)trk%UvmWTW2tH+U2l%*$n0O>fOXC8k9zVel?v;bg} zylnx1bQ%X0Zf*gqsG*i~B)PSl~xXc#l*?;2Va=}K%j>A6K{@m^<&BCE%&@o=8E ztXK>1qM_pw8kWt%xm9S>hFhiG&PZGTSKDf_ zJvq=3GSx`k>xl7Wy|0eyQ%60w$?PA^9X;{9=UZ;R1upp11u$mxXs(4QN3>nJ z0S5qOm(H@~%VFk&50>-*7JL1j-vd}|JRNm+d>ufscyh9WO1*XNp%}NHyUlztrEs;| z%)1Qa4(F4LrHzITG*z@u+8v>;ImV{Z>id)1tr<^AUWA29rGs(L%_|jg;TX!-C=Y2H*Fl(V! z7U)+QR6YCT0N^qNfHP;NdI0P7+6HL(teX7U{u842y z0Fq%m5RGF|9qBapbNLsu>CM*x6dkFRb92QAPXMN@2o=_mM$5U?@@<^Bj*irL0Bso=p+!KuwDth7KhQ;k*!XTk|gw;TW5e6)Tuh&JDbw*KSc zRxR?Svw**H#TD>Z7yTt1Gj=TO-MhEiF1cnDx+d$h>~37LWC`4T_dRgycfae-0yZat zRMU|tW)J_aBIjwe4U+RZ@2YWGIP`T*k!Ob}h$l*R9%t zn@7&6*t5w2Yym)dhfQYc%5}Gu16Yo4oq;OpD7czxn-&~-FI%+tv{EEs<-;A}9eO2M zZ(8wI#&OifbF>w7x25;V47onz5dcU>iGA~i8{qQGFN1*t2X+P#X!Ri{2exe40=M1v zJ@|*Oe;uf>Eq!WBTy&hAr|V{tj@YTHteg`M%F_<~jrU{1SI>b6G3$+J2W z_gn#h%P|D}V3UP_JBp8Kd~VM^C3ygSj-M32Bn`LAMU&lR^8@8KKcawE@KX#e{}cgc zE)iVgHcRWy$)vNjGiZY)F+L-9JnALr=SIPAUS1^iiT#Z{&l=xUgW6g_u6dABZ|WlQa^e)BCjcI+{*VdLBE)f+r$kOher zc*n>&os1#7fExh-+jCyj(p~hqg+st;56F6W720}%kPrY?3jyaHPh1E%FKy8|CF>p3 zi;vNEs*EQuZL$YYW+ojZ6%goV8(WAj>R!u3%gg1+Op?;BL7aAnNrYCe3D62o2UmUO z*)o1S91zp($ji{rO=>skx!i{7vw&9tfPeRQUxdRBJ1phsy=1A%`)*ruZgF=}Mp&t2 z%x*uVCmS|wfFJyT0N{1r1IQllqB_!Xa_$x*C3GZ_R>^sb7hdPnc~R8<(fwv2`OI_A z!^oqKF6y z1ppp!HRGF7Rm`!M1_1uhc>vA&B{2O7qbn;@%_rv`a@X5l9O%3-DK-?I-L!cNtVM4$ z*$(3J9<1TIXU}dJJ#r*0Ua|~}F?WY;ZQEhczyWwRZx39oyoVt05X?7zmlrOScYNXr z$HRdB{bBC>1<Ac%D`m%HS+NyeiKMO+OQ8*_}Hk~tV*AX(I$BST}c)8 zZrRnRUECUnmzmV?*c%_mwNf9_@@?kh93MGoO`VK@R@#kyuIp1wXqugHrgNO5m^dDB z=BUXlH*GpE1Up7OfPcWSNliR0QLKu++xp3Q8NJG*8y!8KoZ})9KS(@)9sr7b8ks67 z=P|UMTh1doQcs<4I$pG={WEr!!mMw;xdzs6*vMe;@WT&--MjbT|90`YyTgVJgEec` zqDK%H^BD3SI&=tZ-PVSl!9g50rjRdvrks2d?85Wkmms(sh(PhEBZtGh`LA-Qm^_0N z5waSZ^ZLxU9F zj1!oSkc<6I&MS>46#xndsF#k!l!0luoExc2)i0~JhL1*%6Lmh1j)*NuwHF=1ix?Z0 zXFLtJe|D1{f-eGc1O$7dS5I%wpx^spz8}@8v__l38g1~P+`jkl_g7zA1UoVJZ|s=S zFbu)t)@|D`N3b8;CHkF)+5^3KlrKo3w!$tJEdvw9Dlv`^_W&I(hz7wdl#DtDbJ6NxP<*@jOI*~BCymy6 zE)A5e!ELF$usikYkpt+MWXm*&7tyTD)6G^{qZW}G%Yg=qds1iXGl)W+_c?%}2T;Od z*0)?-E>uV@DpOH87Z58QPt&i)>PU@KKbPLtQ|Av&$Y`9bw#vYmw{d_2z+xW2LRMJa zT-5_u_PP5TUEE0^Jee6AVgy>7cUK@fa-C{QvB%K32J_Imb~9*wQQeq!nN~J%)Lu`e zjbyY$`a%+_sKo_gp#;p>!NM&J=h=G zMQ9uWCQRf3iuJ14Jjh_uvUT)yXvsa3`i&D1eYi}806%_~`CUHIaq|SG_>h5%Gu1j4 z0I~oZDNfUoymHQo6;`Hd^rwoP3#}bx{p8%FRy0EA8^(+F)cHEeg|q{#GBe_jHeJfX) zE5{Pe*>Mw$^`a3NXb`PV<8vTDyeTp6IhV7@z#tqC8`TWjs=P2*#Fv5bn?Q=>0EUu9 z@9u5f-M4u0V$28XiYHW@$jROs6ls7+MxQ2t)vH&-Yp=ZqAN=44`PQvi_JK|%dFrXB z;OL`|hOt>H#co z(z1d@`PpC3I)Hh{Q?v|B{?T-vJM;1)uE%+4(*U43$5a^v=Q>EJ189MlTd`)*hBKG- z91?1bc`n~;O;KF@fxV8&w7O1N5O?N2)@eM^@v1(FZ?YaCU}DAl2+*jlhkp4GELpk) zjyvvnm_2(oTzB2q;q}*F=duuE#*BfLD_0`G+XfRSPT=2GVF`$5pM91?L0|a7-!g!_ z{IV~@w{E%-e*NoTW8P19_@h6X#^8>;Y;)(%g%L-NfI|;Gl*Np85YmZ1ci#D9`0Ky^ zD?S!&)~s1DYSbt$YqN9bPI%>&R}n-W!(N5~{RiNV#BB`VOnHe-(6?_tJV|38pQb?v z#<#V#VV@Vl$tO?d{H0B}3vtWVEih@)BzXAYhxyv2ST}L~x^RV!D)<}I6H^5n@lzU@GTo3~*C{IOW#g2o>8w&v9l4yU+?O%f19JzdQ%8Z{nSYU;5JD^HFKNdmjQbX3W4g z?}bY)`5Yb(`5>Hi)^z@tPCp@_diL4V;l&qc!;Lq76MpuypE2+|^2nnQ5RSq&?uH>l zhQjHmpU&P%0+?6e@p-Skwh;UOQ~1nhJ`D>OE@XzynDGJl?QdUz4}9QH;f_1*z?xwg;BY$M_HcRx1RZ?};X-iNZ&_v9?if+`3*mmn!cA z+x5OG@3t6i@+J^7shMD|G78F&$6xax%21V~P2Oga)F%zzqR*6Tji62Alj22Pasd6i z{R4(u4(fUkhGL(BC!Tl$LEqEx_~Q?=$BevmM;tL6|7T7JAdeuGci6LMFPwAEIS7jS zz z0}tE>GiMrb_3*=w!1urZJqCAcu@LRf9XsHvtFL0&x$3H`;OeWd=4+>(Iu-l(I0DPh z!;gOSFZ}OA5B&#%(IeoVd;T9>c;ST%0;zljg|UYZ9|3dbybL2ojKC5XyAi~ljrTvq z9!>H#lD^Yf$|DfW-gD1AFa-N{B;Gp>`+q%-XX?~b`J|P8xWn-|ES!7s#h)n+0Led0 z-q2_rKwd`J9LBP8UQ<`CfPS^Fj^vc{dg^?O7m-;f-#ZB8A^^FKw13z(hk&sT;4N4O z@Pbb^;3&9ab6dMk+3I060I*88(`XyjZWiOB&n;31uwH$xCjhKhpR)KCz22zj7HKzb z6NpS|Ji%Gu!d@_OaF|Fd+nHeElQJ;k4~e5SWY%e-fSNt!!&jG3UKRUX_X~fqv^HcW z5Otn9fO&MD!Yy4f@9+NmAHdpQ2Ix>|ck0xsaPKef zgFpND$FR8T0Q9ik2-ByZ#U8OKQ>GwzdyqYO1l}&a^a~8SKKt2A;B%k57`rbZ zL$G@gbP+hA@GE)ZPQ#M`D2z&H;r8j%8}kL9X0PDfx$_wG(dhzoyd8naL$Qb~0k+@# z<~JDL-3~9k^b%Z;r)S)I?=Se7betN2&%6Kc-EjVg&u4&0K##nH%a<*KeHb1lZ{Xay zbGXm9eee75KmY9G@ZbY8;n?xx_!`wad*qQv;Lrd3LU{V=r{SX?{V4q8$3HrH-gQAnom}vI#MS&cQ!$E z#4qy_5Le}+000IYNkl_OukG zFJdp+$pct)2#veH2mq{CFX{;Z>(!@bY^TNpNIN*mV7ncz9;E4S$=Cf(M!gahTK0HE zj%3T%uHL*+v``961u+c;gM&fuQV! z6HdgUv8&n3M>%{$@R%qHoe~J8zlnxE>oB*DaskO>)*DX(Ag>{Xc?l@anKOrfqs<<) zDTK}sU9@O1hmZ+`5wIkHN6)3dDd+B$S6<C!A0I$}yBm(@noQps0@2N6uS1 zf1uhwDivcrfUT22sJd$dKSkhZv>R1u6Nc2ZbpRW{iw3^+?50bMCpiRc9;bX>?r-G? z0Tum$A{dm&)+@SH)B?PQQKs>Ojyi2qsOjKZWsTJmh zE|ZciUEwJJG52Tf=*{tnnp>iMPHH1sMkcO2PR&M*0v$>MfO>m;N6R@4C%=B>tCbmo zPq7CL(vh0}7a31@Z#{IrW&fi5Hwu#^=bg3;Oo@51fN7|?^}zK2;_kqi7|yx!$}3Cf z+vH_@%LAB~Q|b4`0zmRsP<=0%PE;O=u2ZIstcjx<^AOOw$J;n-)H16OhN&u}o|}`_ z_bHjypIpM&(OR~!?pn=wcm}8sF9dAWYZC}_n)s!VwyVDvR|n7%B-Qm3R>uM-ewOD> zv<>;2>i`nVY#l&mU!*TmZ%qFy_tgMc>&`Om`LW7<+_t@->zKujfp!dQUKQ1zbPr%C zQ*um>N^r1`vpN#gNYp(^*OB_jc~nQN0M$v(c{EDD)R93Emiw`GoX)ocFLK&2FEh<+ z|7ZcoIe<5}Hi0zO0~kT!g^iij(V}!o_t&!wOx`}V0AM_)iY|6i%fJu>^mA4SoJaa2&ddNdWy!!u4Z18X{}iGw27p2vxHBv`bnPb4*7V6fSGVh)t7d2ynr5IB@;03| zp@d9?7lJ-&%D`Z-Aj*Rz9Vq&4bvspP^Xg=K-dANjg=qeXc8z( zl5?|Ks&RXjlJi_Tl26X7>U@+J=BXLHh}xlC<5g(W2A1_)O#OD#FKiG3RR!?xyb90}l{q zKw=S)nT0|`q<^y~K!k|NS>I$@zk?)#wrXj$Gr`3kV#{u1Jy$?z+IV8dE5cBb7c!C6 z!vmQ2-4-@nmPJMB1T&Xi^;Q{A71|>9FVO?&%D|{qLkS(JBImhigFaP}^Elcp-IMEt zq(xc+#Zo)N)V4AinCp8st$U|wv~}Y}zVU>8LYn>5{^5agd}eSS4`9~(RYW)Sy^U%& z%O>jQ;>Jln5UEngA?tyi>3XXUU}t(8#rl$+186pd)VRfJEN#S~Gngn(8@e~5V-l#L zU3D?;kQi3P_bH9mU#l`627vhg^#Fjy-f-*g>Kur#1ISw8!nuvmk@9k0o4rf@tD+;C zi;+cCunDHB&L{D)JTHptydP^-oiA%Uo6Y_apIjN319TIJI8M5(TDkNOM;$#T$F4KM zjUjGzf2G3Ncv>gAm1z?iaLG9SdX@*U%6O7!<3qqneYUnQb|%Qf$CB+zJVb3iufmJ^ zy<5+S5C9%*ayM-rpE1SQV}0(BTkM-Jrc4apBUp?VxW-tg(Yk9wYwf$ImHEnhBU9U@ z+vU03R)Ib_+VbP6;YDOTA_7TeU^<6fS+ zBRS;UolFy_ds@yJ({-?%TU?n(=d*N#HJ!~#37u~;UhIGN4_^RAk9u$pAl3o=R8k$l n{R8s^_D|9jP;S?}xf1?A8Nt~O^23|Q00000NkvXXu0mjf01OWt diff --git a/sites/kit.svelte.dev/src/routes/home/showcase/pronauns.png b/sites/kit.svelte.dev/src/routes/home/showcase/pronauns.png deleted file mode 100644 index 167c0e17618f8ec8ad7752f8824cff9147f686aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99313 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

-*fMgP(@MfFFj#BzSc&rCvJiu|4nv3H&f>MHuY2G`1Ia`mgTSLogaYls#l$I_*H zmctJry4+fk_o`OR!n#YPn4M#XKB$W^gLh8goFol!K~tvM;%te6NHM_OP^yXAP4iZ- zD0chHiGkBOnsg=`@DPoffZ*)8&lDr|$gS};AfvWbC8NgvExqeLuxH29BC7j1st~er zn(gMb@;*Zz-}O|om4e+6Q!CaB-g26fj>m&nzZLd!hNH{JkbGN;E+>})!0t1?N~qYdYm zVPhe#v~`>Abw7-dO&8M+WY`Rvq{?j&+>iyGU&#qcsrF5bvY&WaQ7SbrGf{B>H+cY4 zO%$cxD;Tl=W)_EX(qH!NTZt5u1*{j8VVECFPkV(MxYBFYF|JEy?-2;5O)S_$bbUvn zP-&7|9oepsc@?G+Gi0r`&^}%Aj*W%@M>`RY_a6>n{uXwubc5y~35dZ0*L*m|&>8uj zB8}!=%l4=AZ!co3CE9^D_-(4Kd!F98i^)WVJwM~RQ7{tJc?G(4dX?ArO+Py5WTA&E zXTUZI6{px)bh>3o{Mh0vyaYhorecZ^wT)t(Y_`Ge^$X}RWo95oi`3N{?8{N;%#tYdP}ck!6>F*e4cKm*r}^;t^XnDUljr_-StZsN}Vd%{7wNWiaZ z`D?$W@!xJ6HI8?~mgr^-6%*xon-0|J_S`Z6_zUY#g>X=+bpnb0csuC-OuGNfz3yni zaBv6K#40O*c(5#MmB#n%Q@CRf>S)(x*zLYb#Hyx-m&lYSI8j%`(bXUv30J)56)y4+ z--RFX(RCyxFW^nj5eO~OO_Y+O|Cisv182hoML<_tbR02xI5SNLzA~;i`yKGPq-jKc+eE^dIsh= zz2pe-mo?d12<6gx`Pb89{Xc4*YhK<}It)guiY5vlI_1f@(P1glj(^WWK_n<7Nu<8n zczIi1q$15y@u_b}l!vU=#!xz<30>(i31lw?byAm_U9ns_>r&xAd0u|I@Vu{wz7)g! z^NR1t7RY@tpe*9ExN?6=GNqVH4xR2E2#ol+8!ne6}@q$Ur_>LnEQ zCVxMT_Y2NRIU2^_m68_-h!`N8;|Qml=zC40JG7ei`Kei^V!0kzXvK;ffUtW`P+&hLirGZOrij53z?Xw4CV^*#`WLg!8)OKH^~*| zPKz^|(kPl-g?MZcLaq8Jd&?phDa&8}D)7Jq^~4NVQTlQd(n(-+mKvTCX=dVwDoHu8vd&_U!k7Z~~Wj)dWyf{~@vbKdFmA0`j*xLx zXfq3`!)`b&Oh*4U+-S%>jNFa}GDNDlwvHL2Rz)mx^)pWNg?dCO@_%~ThX93#+Ohbm z5tC*0COle{7S$2T)aaFAVMF(5cDZ3|+Z-2jFihMV%an-uw{3uCwI_`y4!8#|9o4l# z)38x(OR(URaq{X?p6y=fkJV9)bIV8LVx3+uj3+pOyok%hW3dD;`o}531NmbC!~xwB zwIq0qy_0&s&bRPTMnMI>29fByBgArLOjNo{G8W|P2vklJ5Q;+_s zd4q+{L5tcJS`mMo78PsAz26FZW)9b1pS0*6Rlcn0k1c6SN_PL_PmJ`$Gx(sAV|q*+ zYmYy32^S6$xga`$zbvB((LH3nKD9kpFPdPf46a{Vge@7SeGvpj23kj2z9S zLTR@)sQ(9^-x{l~Hg|R)57J_c^H6gc2#8I$C4Ul>fqIHC_5T(|Jt9yp;s7?m809YG z*z=N6W(F0xM~D0*p0O;FP_9NO`o<&hG}z2uk$I&K>c1T*ngHAbbmePyO0x50LXYZ1 zjt>xef5=gH)Eg8RRq!$ts5CD$5iR7uV+wenBW7R+lmRLIa{0A|FgxLN5lR|@Tk;c= z{0)R_r>!@6fK^=rwBID8T+(zAw6LZ4KdKzT2A>0u-*;Rc#4ieeIv9$K(9V%fpGn!G zoMq9%?5fH+$HhK|JZWI6`U7jQf+g&&{r*&nX8&6 zsjQWl@uV#$al{8bi+rB0D>~r2a%Qh}@#PCA5Kic?)cD^^GcquXY?1oN&DGp+4m&MM zYDJzJf@)B&m)a{0o(8*7Z;CxzSyoyU|1(}F&>}<-VSx3q>J{vfR3Sgr#8GM1$gGu@ z+D3{wwdEq3&XCQ3UpHcO^ZymU|GfxeA}NA9m=K!K-&1YT8|(}g;KjhElSb;dLg#x| zP?24f{#H)=_ebu5iUm#Qm!8w4tr;_nqnry5EpXxd`CQ0x(CKm3A}bB^cRURe%oEN> z208bOrpZaCL+(IRC}MVErg#lh>9R{-%dSf&x>Nz98TemZ0S-L=KMzy~GD&O*!+dL^ znQl!dam?mTE@dMR7=|){hf)5QTL5EVl;AS7K}VGHy85xSeOtINygtV-bj@^oMw zA_!nAu=3-8BkY{GfG+N)oo&D={0VWhM&b4?s#NfGk3l4Qbq#zJSY=r^36oQ?I*3`o9X{Cr7=F}H}HBFZp_Dy!>SdF0)*o)SO$e< zgl=S%tL};zQvcK-z+s3$i6ZxHSnA?!RuKoV&Y8dD@RY3kEsfC+@rP7?C;3N~AVETL zBBB7YHL*Nr6Q&nxcJ}Oa-mCTS0+iW*zYvQ9>AP}Y`)}(AA_$Nki+v*L+roVUS9Q@i zTmu<~f8Tiw`=3u|D}ICI4cf`=Ssz|Z@7OP4=p$nO_f)yw6v{6`bI95k<1!F^k_AT^ zMYY}w-^Sl5Df|CaO9dW;288J|qx?|Yy?ZNXR280GHw>_Y|v zyPy2bBK}1DQ>z1SodLQTsvv*kGD`3LjNY_OuczE+`gg-uf8mdp7lSCDf4|KF81xp_ zA0xMias4i8%Y1}CM05TGq%EkCJ%C9teyq3;>eAIRE=SBgEh@@c7)KP&=Hg z`E%(1{!1F_4wv1g9H|dQ`j5^($p)CHpg@R$(5VK}>i?FyTu2aEFcY*?UHHtZ@Cw3m zv4%cO&0KP0c&10_ZqeazuwMQHpSspxf>7ne97k%b-!(-~eXv{KyF_k!zT{3R(T=MiiN7<;Vzte4)^(Uk$1G!q?i?Gl;= z>Kx9|SQ64}g)M`egNUb5(A*>-tnC(o>+9!3;~xhm!J8s4nFu0+GPH)Bm$4Yq9K^N@ zhlT-TE7M(QI6a*b$#3I;)DdK!uU3pFBvB7MN0V)y1V-5u0UH}XV<;9sJ8te^r4R(9 zUxq#m&2gt!@%VRFBHm$-I#&c5{E1Hp-yh;40Aa<|rbg?(iCi!jm}cFrNx2uG4?cdi zXwLgxytcR+f-2w2SJdVFRIg;Y?^?HAMDCL>IoRHR>7&E2(z;O7ZMk>^|IF=@X`o#E z=C!4IC39ag5=hZ?@+CWohNG5Ddwq%9pmrsG_O%cHr)0X&Q0(eqz}_XST<7DtzXEI zL59G-hjYn;lu?km;;~65tVyIfRZ>Cbl0dXiI|JE_f>aY!M!w$Dvn#JOIGR+c2#2iO z8Eq*4DisYng(BL{(%IxHJd99n>jm+T)vhLv*720ykYO%)oOnWoa=< z*@B^eg$|p>LUIEN>nMl5dz(F7Z&{OBwbghsRBMgMgsqpXuUAzBvzZHsigCSfhR(a^ z=HQE3u*Bm8YZ4!N|HFR#2E;l>H#QS}9Dcaeig-t?PP>l&@CO@D^XNKhgMZ00?L%FN zqC#F=)$(Xsc#{jvO54^_=jCIvNRg}OFoF~odo`PUI)eY3{OXg6 zrbA8z^mpjs3-9!gy+Y#F+S0NBnd0cUxl$?X%$?F~!&m@MwGrI@Vp3dbn|T))C2|Ow z=EO;qyI@!BEBCwEgU%g=&qy6wgWk-8bGV?6ra&1dsrnKuw?O-gQ^)j_sk9f<{s{Ng z*V_L0rCCu#W1X`I=-l>ElA{Fr$3u-kju275Nk}BFcxOp?-@kOY4fYirc!+Z3>1tA77dM znKMqQmjt%OIms~y2}^#D5KPaezOsJ~d0ArORXE<;4&SaAijL+NXRVNX;3M2Tw2~$> zWScK7DPq6#-n^GM59c)^ZjbI~X3k@2e+*HlYM$o_;Gc^V4@sQob(6rKX;+6AY>qf1 zOcQex4t?wnXRHWRnrHWLzJ}d15e0Cv4RRqaOWL?-*M6`5YOMSd_i`oh*;4RqhXU$~ zvt3mMp4c{vr8&UOb=ZXKlE*f9=?Ic$s0d=)0crkfzoY(KN8sAyaAbhTWc!G@UosA! z?77W;<4S{l!%mvMvTTC~O+mi*INf<)TcowkQ)GMa;t1M+H%+-i=sspXCOP(yQFbhC zfR)Yt`pFTTlR{uoS01zcqs%5?rPm<}oI}s(bMFgIO9huN&9f*shl-ondESb^IZgS6 z^s`T;J{(B%EJla)$m?*|pHNF}dkxDrp6Hzgs9!BdCel|ta8~T^*8=>Z;UZOzA(X`c z0!TuozW2uxXGo1n+?r!OfoAI8D!F({`LFkso_lCScyZS~T%Xb6Y{$719wnhgLm04e zwp5_Uu2FGsMkGP_{*|9^{Nmh8Sl-d?1h6=kh2b0ytaxb$Z;V*wOlA$IFZMV9MZ;20?#KqN@l6dVN^<3Q?aqguy@#viL zHCwWV5^`%c_-ix`e?+|RAHrhl^!K!~j&^-E-m=vqt|K@2)34=@2XXhJIOQ_(p#Leu zD5d{0iAbsTG2`igK;{y$5>JvTs;uKFwl|mXEO*GXTNKOfmW`)<_#!+el@3aU+=plQ zJ+Gwjdjs5wmyD}{up<4$57eIUhLRT)oVk@Tmq^4ibG+5M3W2iyjV9F`$5)@?I<>Sx zN-NLH#XI!0-PhDemr@b}HYX+F{xfGQJX*t2cG9xWw(jKGKgRn|O&@9WFh+$qr1U^A z`66;H%|?lmBeR7>Z`}PGnl$uRb%9)?Pvwp+%yYujz-Mx#Q>;G_jQBA!Jd+D1Q3BIk zkBMATErkBLZUEw7H}T;%h(YtGpHjzAzTT#!!9{p%5TmJ7%i1K=ySHmE%KO8pAPRu@ z(>fpOwATI~Coai259BMIH_;KioBERKKd6rM$ya!#9PSTB3uGm&M;md68-8}`J1?ryhR>&0m5FALZ&$FPk@ z!TO=)Ok=9MRU&hKwHuko10+SbrlHm+gT!8$3ERc09sR&WTgTNOC$p(r9$P$BJz`$i>oo z6da4cwY~E~_|Si*@`9$rNpPdViSN1}{u+9}Z2Zj*whW3&&+ptePgrM zZ^un1PlSR{qE$tmZkOx0r!MmnY~&T)mZ$ckO+UM5l)^$A$M8ey%!+ebnL@^M9epjY z4c@-UNQaAu=z(Ej`3?`Uw@&+9e;xD(xtve^*lYMxaedyIeE0zY6{kMT~`4iH{M^`s(cACC2-Iu`IJYo+lsEBVRkVm^gKV$NY( znF{I3#o031g__1qZv|w1Tct`%B3k)rNfc9gUlV6^t}QJ>QL@KbX+=k%&9Pb`Fr<6( zB;bmHUlH}H_r#kY(fy=;3S~F_q zWM)Ob#rQZY!~F=UlsIOOxxf^}AGi|8mdQ-DgK|MQPD1J;E}*mA%A(ZCT*=TpJbsIK zU7K5AKuBszJlE8Nj`{D!r-vq^$P5V99hKGi3R(>0{vIe!9f?*f6tLkC>ijLzwS>#@ zlO@+s2U4hgYmSG9uF!Fub5Uk?XX>%p4$Q-CHwirp8w@dV7leeXMaD@@jz*sYinpYe zfA<0m>)Y`TeWWzu8-0@0W!zX+JkvbX{W#BCo*odJS!wq+w&u4DEw~P|f8}z&!)ixr z6lB=c-=EjmxJUU&u1|}I8{hF_oESCSQ1qi=Negm0FiOPKuMnKCzUa9SSFP(B}+ z)WE2OVD&{xZ5hFh6QOF6o{#5r#i}jeKjYxVP*cAyhDQX`2tq33;2mkZ%BJ7Fkt`Dw z7AB0dza+8XJuLV&rz+^hcJV63kmJTJ&D4iAhfZb=`j!o?UZ~1o36uW1ejh9|8s4E* zl%LqlqMdCx~Zm=F}p?M_v#sw4eSG}81_e~!DaY_WbDQ)N00cFwU@z(~(GieGK29Mt=coe2R1Lf24D5_t zC`Rj1^9N|!czlKLGPr5!I>mFWCDXRJ1uU{$da?PeECF2YCy}(#$H_lg+1{Fc=-H&9 z#eF;=?a>}cf41!2>@byZqwlGwfl8s4-*Fm+iyj$ne6~WA!we2$u%(5C8z)c%xbQ2z z27W%g)1O(7YdRx{p6kn(&BJ0h`1|1Czm_`mM7^WFVqS9L{dYNJ6t1WTGMYus#Vnp9 ztMGBCwx{D;;nZ@af~Opdfm)pDF710I+M}FPakOby6$@~qru!ry%!qhAS!iCX>0rd3 z6tndX@>kd@(MUd}<^%4ymjKgEA98D^h-tgy)Jf=yK$QHi)X4WJXqIs7r4k%%Rqax3 zb{e){Ev?Z_AUTt_xp$opx()tz@^NBRJEcR3)P!X}$-W${PfDmMJMBHFh|kLpT$Tpx zCueY+E)=jkc2$&1w?UGz#lg!6#H%A>7fxZ=i(O+`Qc$SN1i4pH1dIAy z2DxjJoOQTp|NONeS~#&@8F455Li@mgZzH)HgXdYXc!uVP`kL0dL^gNKIQ1NyNyljP z2^VChEf?80KRwt0JiWlxIFRt=1zY#a&Jmk*KNq1iWn083_GtEP%{RPAk#R1kklH)? zRBWDByizvsh`m9cDOTuWouJ5S?Q6*-aa^%1Q&3Ep6n_m`-e@1Voey;x#3D@Aim79v$*Y&`z zsakTLz0&J}C*4yyqF3y@{MTw|C1D=nc9uF8@Dx}c2ha?yW!O$8N--Uv2wgLyH`=Aszs983b9!_D}6ez4WDdU2%C-*d@=F+ zRDlonQ7ARxxCUj)WSY>4a({9)mbaj$Dya~4DWjHDoql<_dGh{GB+#AIGZ%qbAL{<@ zxy|xZ>qF5W^}BO?gY(e%a8h=UD-<}Q>o{OEFD<5bl$bs%Gr%!~OxE9#Moe3M9?fB^ zU|~NXZhCZ?cc|jG&oLLi*j@zum4zo{-(pS_x6+?fik)2*AE+UtK0?s3GlE`a)}kD! z-Q{Az^Vf>JM!mL2CK~y&fcBTCXM;1Sd;Ez^>*;%lI3~J05>vJgy(-w)??%x^HbcNV zQAR&s!B&}b+c;}yq738z@$?pcO}J6}Kc#?lNi!7$3F&U7TS94&5^2WhRtag9hS4z^ zQChktjda849<>b^gWo>S^L>8*!Ct%XduQid@9R2Yp}O0`BIW(gp-)o})IP$oLxUih z#-+|4x$ybZz-_V8x;PY$*HEGY=op4R+FOyg;*=+Vvn$qJ5Lq+@#uuri)WaNodk7A~ zSIM|ygOVDz5AyvG3wM2}oD%sYIEDm1*Xu_bT-(YnyuzYYzk`_CK+e7427Xe} zf4RxiPd1-v*1TM{=2Pf@>ixK&d&g595h?v^dTm)HE#-+FxMi)}!s&IEUiyw_X@sE4 z5lH%zP<|(5pmpQE|&!`HxMk8Hy_&SvRZT*^LM^WByJ7wH8(vTgFEl{JXo**ghQ= zPmA8ApMCyE%g5ECAcz3)6=>O&R(r!D=$oi-Bz4U5H z>op-`ssF7=Ti^wEv;hGnL{{pvdXA)fQjmnM`O=+Djt>=UoZP_jJ!>MUiv22E;l-z~ z#MtFO#DmGuwc04Bmy&@Ww~2Fj0E49*ocD=`3OaRWrd1;yZfnu=kKeQt5kH}S`7z1+ z&r22`B6ff5GR0q%iwTnbkx;REK!NsrX$#p z3Z)bP?XGTYnF%;juA@2Mf5XzF+is_@yOp3&YuYl|`r3e68Y|^hVA`fraJD^R(0C@e zMbNa+++dVezkS^`ck{1TG25C{y`D$eiLZ2_+0!b-A9*Uw(AAVS&XTojqfkLH<7QyN zML!MKoI4wr<_rH2y@W4%Eu}t!M`7AHc2Y`SiEGd?>mzH~cegzS%r~aLh)Z_OqP(z` z3FbY1;7V@Gancs2v0%Nr2Y z*bhVZox6bep(q+VB}9of4(PkWfxQmvpQvNcq$PHCGjeKAa}}RE#X!&h1ls> za);h4bZlmytqJ-AS?B;razyp^ejj*Wkz}B$qSt>c2^7-(5el8Fge0 zd$vcN^Oy1b$9I7l%SxgKMBl^mqbrM*=fb8mtm|MVzt6venoGcz*B7+qydjAWwZ|UE zS0zITg4)UEv>WpuphI*_=fFeyLk=>jksT?Z z+M#Nky%&Qmm_V+r&g-_1cdDcQb0gcUJ9492Rn~hVB8t}dG^L7yOT_|x(8YZx?O^H` ztN0ALHyUbwZKRidlvuj;UvU;OLt4zC9(OoKcKLU|ol4TEjJBo;jHdeo(}Ni(Bz9$0 zu?;?^rH2AC?VBf+FT<>KtN_dMZ;UBA2?bYF;{mKPCmdNxU5maeYx{;>uq!NF1?<9{ zhxB4zG)30_1F4&ZzzQKp^Xo#`eYmktzwsW{GEXU+~KlWYSb} zn#0E=K&QaF|7I7J+?U`_c`3H{Ur{8&8DKaIzV!p+KZOW#eva6NBT2f3bq(8C6>JS5 z67&hY;ugVsL#Jut20^m597+vM+myBqA@zV+{eck3J~nd`McxEXd_GFonIxKy zr@LY~qpW7Isj={ zjNTsD?!9Rvpe?SK=fpRpl7BRbzFQ8aLUSQ&?epx+RVcjXnfmS`aVt~u zit>V%2Yk^GqV+cp3x?kdQa+vQC*M9|VAiuX=6U^?;-Ppr7{7ENlj#Qhsf7H+HpfR+ z?q`w1K&q!~B)YHV3)R+kk&FL`)OGI5?Mf1P5wg)@2^Ep^6J=ikC|alUxK9(F{rZq* zsFbP6rFqnMWn`d9e0QsF|*>WlFpw zzWg#}(wHOoda&e)Ws7I+7r=Wi0blug*0r=hj|WOu7q9&}NRG7*g3G82ahDGmNDfrc~ZCvl}X60R2sn!nr>uv;OAG(0q zNZp9pvM<}n=t<5V<&~`PDEF)n5WEsxtw3tabHj z^|eN!{>MpmPqd!LGxT+n(8_=@xyH9EluwVqS05F1m|kuheI($? z7pO)We%IO@8+kH8#K&n`ciSRA<@o#>Ov*h{^IrX_BQfUVsh#BRXxN*^V0F+Dfpf6&7yAU!CBPt8;{ zAsAJuxr$TD!t@*$%y%b}`_0qmjbj4wWAUqCG_duntrpq)*f%9CPuwL+WLw7F+MV$8 zyzEo9cDB9>{BEQ^3ptN?x=kwO_&P=)jUvgg2F%s8{gJ(vw^>iNbQ&k^^ko8fXfCrF zmq1PvIdg?yBMUv||zB2tH?SiubW&!Cc6^Aaj zfpiBumOU0S=o390CplQj;mwNR#yCt-U`lU+Ksvf?41&h03}Z~E^qBM=M<>^wYqoJ# zxV4kF;OfaY&EeVLM0EDAJggjMeUOQ{c+BA^DB_R|+T7nNB(y7I)x%Pjx$NO!UUjvw z*J{b3O`NR*ojG^)Q*@pQBjxW5-3-(s*J@Lf8yEJ2bb!U=Mad}8FVNO9_Xml^p#&~9 zb(h7hpYYx5m5Mb%me3&1TpB)8fY7ZgaoqOUV2Cc&SXE-R9~P zhWm5}SXNglmHqZ2G~p$->*E2j;#SouBOF>CejD87&!z!y41O_}>`KuFo}cVBhOK-Q zaJb({35ho|QyVCx^&EqNVtc5*`Sq`sPpoccra2TzhV!G;468- z0@SMJ`Dn(FlwHlm3M`Wd>ab71)n=^Yl%DKcPl^AqCuzui=Jlu;lE^Z=PkHS7Xr8I; z4ukGR1A>VJ+D@spWzV{NQ`{#txIQtK=8<#e1)qxpd1(|C9=i+VbNULjT~Pqr7iUFO&ozOyC!0BKQwDTZLlJQK3U;q+{rF) zZQDbS&I^8R(SH$wyDYzZ>!)<>Jb(V$L}8z`d7!haiaVPZ`P(Dwz{;fg&bINv(eVi@ zu{As;jF04FxdpuBuQ*EtOra*vK`i%0YO8Ju=Bx{_4O-otJ`PZnKNhkmb9S9V7_vJz_X-6=6JDZ?#9 z1+^2r%(({uVZrmjxwW33PnFhtF2>$)I5#&)zw|9#`zI`We|sUg7JSi-&1J?5{kiu{ z(0lKjIAcFz1NF13o>X@;%E_VA2|QFeSdj*=SGZ#&U-s~Li(xtFG@cGK><&S#;S9e- zZ;CS}QrxEOm^kCABI*YUQ(QBqeCop5juV=+OG5PA$FLoJgV-)FIt^2)5cDle@9JW* zuydiO^c!Ac4z1YLKH2F0D{L#eAbl__A>?ecV8rZAkp=wXOuAv{siUrvt7v0d_CMlW z_ruDLVD4p>+}siPeidV7matFpf=aA`-`7;3e3Ebf+lr1KS`l9`#RtAC%{)4LTC2~) z0~wsl@ms;KtZo&SJ=+Si*~$D6{!}TdCkP&f17-2!u?XppJUyta?Wy`bW?Sgxn;Sy1 znWUgt60Mf?HCKxr1@}N*kpbijL&)NE1pwZA{{(~Q-&|pUYFQ|sl+luO#2WT2p0-_0 z4hxPigL;$iF#>#T6R)Fi4)SpEZ?ex@Yo*C59WVS}I{b?mRiSN=Jr+JrIma=K*0q~z zk22#ohreL2t#K@jdDtTs_J>@2#h(333};7P*jZ!`%>HVMk*ik*-iE)1Uac>c59EC{ zt}5KP>vk~P=mfST^|3s%UJTtVYyVHUHZmLvjmj@n!$C}-0aS)R0mH7Uj&AkXr1}F77 zxI9?oVyBK|adoS|TB5msy)$F<8sC3DS*}$A3W0F&g8_9)4L8=hxJ%dHZ@3R5gA|&2 zE^mfrpyPzR$>y>xMC+`6t7Mh6jgQ){XUzqt;zfA8#4WxTox$i-Zg;?ThsBF}s<-ssWeAJRwD!?82T)y1i%t+-qAm~=%v=_j)7^~|n zce?++F08IG9Rbc}zqLrB=!U%%#a0N*3R4_(U94M3(0(_8(ZEY|^qY^Etlv%3(Kh@M z$3D(lW*T!!YbMQvlq3g(8C1k2?|Op9PTx}aV5bWaIAJ@By_GKXgTU{s0yKGez-?zZ zZaw0k3-2knytJT@ygY(tRcw~c7QeQi0Y#<&#SDkAt)X`vAU;!}Ey-VLrzCGERsCd3 zt(;oue)_#{%zN5c0ImywjtQI?F2$Dx_9ky2iRB#_5A+!Zw*`NRrNEbCS-mB5_k(bH zWpJz8_*-4WcF($6cL&pYQ&({Z5-L4N4y^)Gj)##^7d zXD~r7?mn4EOLRstI)c07FYX9g3krR4Dr-B0tLhdjUheI@``4KKe#K|jfWY(iD~|KI z4?KjTXWUnwLEazs^kPgN4R{m;Z;4yTE+gI@Z(1UIX9{#uxs(szOp;qpX}SEx`+nxF z@#k(e7Q!(33)+i?SJ5oxTWd2%j??<%+3p==;)|ye2ZLHW*EVV_Bta*2zYpf@1(i{j zDi3{9{*^#1jZP!!ts`1?v!>QJ1rezHbI`)Gdywy8+WP`+(ErYrFI&XzN(X4*Gx-zbWB=;Z5=AE)fM}qWZ z&#dSDi^$e*N%*7O!de>2!|DKcIQ-400u?K%qpv7*Y$+tKJSCB3N^ahDCEkm`<>2At zpWQcyJ=|ee>_?4saZ>5u*f}`1X{|YVatTyPsY!ZG1=Oi(F;?6QMEogg< z^1K|1PSv7PvjQb{>Z`UxH>1v2rk`*W#EUA6PAC?KUPxk z$wEn)yuZ7KrI~wt5t}n%eF(Ugk@Px!bvp8Uy!$qGYahT0TXIOktRo~=KV{eaG0JHT zq1#an!jV`FW;XfQ9RMrqrEu@P+|c6DsT#u8@?^oawu_!%tt#9lj6JL5(Kn1v=2ITG zHrR)yEZz14gwH8k&MkJT}T`EJfom7v@j; z?(_lQCSR?72sJ(i?65qo6=rf!B*mu;O^gcVALG-{=|iq4kVvs29kIhTm0{WL0^NUP z!2tlAgsS3sC(YE4$~}1xy8JZ{_gSJu>O~8 zv$7^osnD%7^sqs))^v)V=dB2y$r6|QNRJ$ik61tal&Wd5pARC&W%DhLOoJ}V_VI?NQqpO7e zeh{bhkV(?hw)t+Lvp4FnmM||AS-xm}#XTZ~K03V=8E3E+@6T6RpXipU2uzQt?YvD6qnLP+h3b*@0{K^r*7cth9S8?ss6u0tlS1rq1$#KG zZ2OW$V7(__)5Qi5MnhD?BIC9y6~&da_ve0JLRXb)mB?Syncm4QU36{eK zkgD@I=LqLo+zmN(^LZ63-pMDWv>#qO7GP)b@dGew)8%3)A8&T2r@Vs_J`+v8T|_tHL3 zUc)g{T(-LzA+tz~pY%-$@p`dy-m;Jyn`@zso*bqsb}|IOhCyxqyt2LV?0ZA=Y6{{0 zr}so~+~RjH6;?u6!jS7j!Vyou*^ym?f(}obFZffVEa~KL_LM;LcD^b&c>ze%jKG8P z8Jk2vcd3FY?uQH;X+x`fh~CYC66ay{?}vOXTegB{N5kEbT(^%K7XpVL2jE{_H~wM3 z^IyLU%Eafq>4HA}k`zf{^yqqID%9g{){pIOZDy{=l-`=qL;eD1q^--#bNiaBCn>Bx z;-FV>1{IUSGTw`#H+e@jN%&S2WTnKp!ushp?ZOUSbO^94&-5IsjrabHJ}x==8`W zuQCZcP*TXva5((C|Y_o@Q^iCI9G+WqM2^i%7yIe=CGDD;O2a|_WeYD$#h2- zW+u1IZAMH`t;a`Vjqtt|B@L?k#rZ)RuMBm9@ygDtoNBY~Av{>jl$ws&gye>rQH?K5 zmrN&jr5an}XM42PJu5yi`t>Yi@CxVuSb#L?mzC@xW@#R@PqXdn8rHXZeT@lD9iQS_ z7*Q$u#LiK5Dbe8uThnw+>4g^@$gv(zK{6HYH$WhRD`lT^)KT0?l-_D9J!iJ-_Kt1)Z49Dt>3Tt|d2SwecbaI67fHPXV`kJN^z`+c<8*u(az2w$*?dsf$FxQaVj-OXXIZJENs1+FS z6t*VbQ*B+g43mtc(l-`oF>V^yG0wQl-C@vjzs&((a^$aF9ysJXw4X?h^on0k0WXUs z2iThkC$N9GvSm0!-l5J4@edi(1le4yDP~3+IhlcH&8O0AYK=}qQnS|a^fP%sDPV)X z6EB(U8(h>86@WBz0+A>`t4>BmL zh)E7!s8I96ou9o)pNhs>nN|ZfI5R?T_D5xsWN$ot-rMOk5T3I6ytik|@PWNuS60FC zc{E?@f!nyWFY)v5=ZkFGpX}i`ltVJ`j#}h{+(-00lL6h4IPk#Z_RgwSL}*SpE4DfEH@vQpR$YH>qSwOV zgi?JyG+m`IFSsBW)-&m8;^_s#Y<+#0TLvpeP|X-+=U5$CGJUalB0e8{Mobn@INOl z6z?npRD3kA$&*WGQPfez8DsQyVJ+$g&irRf`jdgj4OnE(a-{Scr-9;mw%ZwC?$|m| zL3XB-7FrM?)DQ9U2fd=86V-pHBiBtK6|Jgp@$bpFdL2HDV4yfQ>02a~kTt+6C$ijv z@X4-c9chca{`(gNu$x4}*h(3ltBo1QTY130-jM#-UMggkkaiMxEd`K3uv((oby+u1 z78IS(EWe8wX#^)fm+-w}tS-9r`z@5f-tcm8)S2SYP6KYxYW9UjBCI7;I)JayVw!E# z8&TO#_{O@YN^f^H2#)`A;RAE;w4u(zT`5W1;+*oy2Sh6H=9fde^#pv|aIU}YT721S zDTikRl@gn;LtI(g`t0^&`Eza1O}n{!d+*WOl=YeKpo1~b?oK|Y^_VE?m09Kk%D<_`=os4r$RzhXh)x#*`4$qxm}9> zyMF;WcUaUS zllDa6wv2;?VV6$a4T}G9UFz&9qL`B{?}rS@bDnL%-pL#B>}t)mHjm~LO{E^NP~Z3m zhuD)P)4Q9$DobB&iEwf-ek5Z9sDLs^vX(e`#y?Fc1D1BFDau|`Otm8~PDNx1PgyP; z%Euz?^#23AmdffQWyOliyEiQ`Jg}vnc;wswk_CG;ZiggcL z#gMr3cLwImNa;_VMVUjQ9>nakz^I28%npaDVUL=T2XPZEXXp`0lsc>MZhlLdbveJ1 z!bCnpQ-W3DzGN#81@UW_d2^pWUBOhmF%3oq-oah;v~cyY{7q}K`j16;EX`aa%dpeBksD#_Y0xas#+s;q?aNn3Hfg}#6b$lHNIObm_z%%^Oi=h z^EB*@qIVXVS@}^TgYn&#L}LLZ-Gtp|s-k8pLOM(T;J+}x%OY?|UGMF5c8)}6H%|jH zB4Jo$k|KoW!m?``W_MP0;r*R_@xj5H$*Sqj%*FiGtv}(0tR?G_AsfWRyH8p$l2XAv zv}Ry_2t2Ct-rrD2&th|sE{W#dYqZSnW$(u~7My(&+HWDGgyN5UpGgLQyrLbv#=d1U zfbSx|o3VY#Xl}XWkl%VkgIkQY@6pJb?4<6X)jH^UjX%<)5hIfGXIZkbUhS>A#K1*V z4wH08y*`4;3;DB6>-kL_q0O0g${0_>X&?X;PiyJRa>PKdr!NBZT>;6ZD`m9 z!$s?$jOUoIlw~)F9h_uD(|j!Mq^9d5WOe!}Enz5{cuN@9FJ*wC(*wMtNUrgwYu_Z*6~yJW?OHyspzs=NlzMD?e=hPzl<@zVdY<>b6HXE1 z-IFH#kyKT@6>r=JJ6P$AMire6l*|IRIG=H%q+DCP{C_|=W#8Ib>q&2zE!9%P@-e!w zu0a#cPt$)*gu}^6wD=9U&n_QjY*@3?pmY;-XAd+qq62^64JOxNWtqiGl^A+Jb9cyY zf>&V8VjUT4;W6R8?qcXR`>l_7oZrxMwZ0_m2doS8A%M8Uo*--cECa{ygb2P#d-Ji- z*NhzFugAaF<@Vw|V!}%||Fq3wH28H#{S7&Q|M)LiV=woNZuOU4Qkt4S9{{B8yei)` z{Y(BnoQ-BG(MvFmZJwsiO35vGXJx~aSL&z4Wz9(@E3_^+oDigI?93w5A3Jv3+LEh< z3vE6%X9yM$5-M%%P32Mf=0fa37Rnt^_G)J!X4d-m3re)(cfJImlhuS9xwn4wu_jHn zQI@gPz2UFpmR1nSTUi0DS|bio)pI^l2|U6|>FH0xov0OMz*eKB|Gxo9DaF6V!0ig$ zE};qRD^O-}CNo>M<}oIFEaq^kTrL2}{g(KT99~1>)2mm=d7P?NZ*OAGUm`|OF4H$8 ztWRk5e-c2~+JlMYgPTe&yD8hs31+Ao@`aiw?N?6!LbMQ3{Y0?AgoIy^3p#{P6^rS38jcC7g>TL@Rw`J@^>bwV;gr(}xs%l1a0h5* z5_AAy1xeE-lL0H6#9@{~c9x9iE1KI^Jhq#%D;T6Y$%Ul?-q-U8Y~e zCL7uYpY|1Cd=Y;P^>52xErr_mn0uW`PNI8yY9}^tw)F%8qbbua9#YG2b1`?MlP5n8 zj-@^%sa~QA4%QSsGS}wWi+Sx_yo|2by^|MXV>eg3r3<~J^=wlFa>%ogR6)<+Y(ctB z`zGiq?_8q@>6tAy#m+tT1eHVgCV&K+@c;S@1GLz_T* zrT2{&&+Jy2a;#biv09&`^lKiTG_e&=g?J=_Lg^8?eNsdR;8$tyH zjGJAUMCdmpS<@VWf+kK&rxfepzOsLgS{1#?88C%5$;H`g9jLv}1+lKz;kPyT@<5_S zC75%Ae}O~G96ra5zVYtr379DZN_SdV&oj~%jET|%3*Za zGvkSt%GI;Ie;qViP6k1?+Ap=V@FK?x)kWOa=+L`2W0Z=27V|6Z?|hFvJCh`;L>-uF z-v88Bmjc$vjeIZ+Y6)H`7kzps+jh@eLV3lk`WkAgnG?yp??&4bV*dG^y!`f{jJ_t=k` z8s|b39_#v6x!7#Y&B0jTE?a%&PVjG*-uUahce|1Df^BXhv`?Hk5AQMBQH&Ez@BNAs zIeyToHy(%i4N4vU@f8y%!sJdejvc&X=W;YWEV^6BY|p%g{Wzf6vh$yMgJR_;-om4` z`uSsw@a#gWXi@TVIkg((GI7V7&sm+C97UJ1-tpy+rPR#XEo1E?wwN}x4b!~iha==u zcy-)`V1M_y=ElK^66M1(1hU=jxR;>f6HQ9~ie=^8$&7O!pmbX7#P#EItlj5duH1{y zxr-i-KGLgz>}(PtT+-v@Y_79;Njc%?@rEP_#zRxHbgUD=J1NZSmq*Di*61Uh%}h}j z_PkS+e_p|rCes72n=*y?y@VbvG+CPNdxg~7Y%k^DlyE2kLEZi@owm&oNkfmmfxP(cWxYf`pp0h4h<^4(5=zNaRGBE zyz{P~^74|VRKsz~)BFYTj!yht-LyO|9I$yviJrS4dhbNucZVIOWxzDB+vi59(Z;)Z z2CH>rY%|wZcQSvJI^WIZrq3=EoM2&Dm5Jxl-w)NxlS^7%SZ&O&s*#)d6QENa#s9Tx!iJuPySIrI#UborQ=wYcuc}piU6O1f{J^Rvu+1Y{$u3M zAo!qihqcbrKE4wP&MNZcQ=T8x@2-@83UR$c*lZEoMWS+^a2L{~$VaMdlXrTU&K)nI z>=;Xd*K*wqMUi)mzQTSle-}{o z$FZ2!&Ii4Ty$n}8&1M6d8XUe4bBe<^-x6EZl@t<*KA>)mOzC|@m&vByMZ@JfHw%R* z-sbNjhf54i>n@yIe6TYs%~hR`%Rz~*=|s)d5HuAt4}kU1XfX|mbs7V6&T<7Sidb@W zC0=M0L=^3?b!7#7V-l$-vSPD>N)J(uB+Kd{PMF<$3YE#IWve>oH+teXZ6J0OIFgvxD^C4T*!A9a(=>A;&(3P}N;L z+WCjOw`BB}Z$4FEnU@N#E1R(w`s^05IJTSnhY3Z(76g&f>SMTuo7%+cZq|ESP`Cdq zK9AD15YUj^^thxweZCeW-URpQO9eJVE5Oeq?=L`>w`c!)7!;W35{ZQ!U8SOjbg(N1 zv(|eOs4!KRe(^!>+D^sQa?dzh$D~RZ?>sMBi@z*O+OZPnJfm+=6KPiwZf?;=)NmM^ z=^0)vNNBcdA}T(N`I}zoht!1?u$D2~{RfYZj8LJW4D8N%XHpNwe1XXEIsIlLX;Gx_ z8&~#~Hljrt**v6o;)5or8$U&F{{9T`MN{7UtB@rD`3e|V1I$K7$l(rEJJ~y(Z(ME= z6nE2BS}~I6VNZkJxi4K{UO?VCG33t1)EakFB?ZR{b$naYajv1LhubhRmA|kai?5CD zZr&C6?4IzeM`+dmSi`tE9M}*Y_t5y^VO6#SgGcPs#6C|uxTn+TYmr%4+og2ZOu`ye znPpr8%d>e;9eOdRrs;zGzW?hOFxU7AyukGNT>F+iB^{QDKW)ngE!rs+QS7*V{yh`z zAFPz=WS{U`qJ~0U(|mml^xl{+Asb@46uTiyog0do)XtyjM^n*eoG5u ztv;i*Kp4B~d^M;OgwqXfp2fv=kT;msIFr)|)<>FN-k!8>yCe zibz#`YB-+r>X+o%ekmtr^I5xvf`Q$Hc(faI)$3(-XG>_xLE(H<>tm!8OFAvvKAq=R zM~xu6oMH?-DtAk;1jIF$>t|K4?3QIuO0Vk?rLSJmSuZc0*l5*3&c)Th+)+FFpDXFM z`TXC)^5cv^ODL%C(7MXd_TCna{omY@8;=EbTOLL+$;oc-*$*BY7d_0D#+6PrWS;I# zh(~Z$_k7hJ9%%xr&2z2d+CgDL8Zuta_8Z7eZ>s(@>Mm+n;aKHBfUQcu-PRgej?K`S zSCD8HRTsmspfIzli>ES|M5E|vL=Ne!+t@45t$fbKzlV=Hp^uUQl_K2d`u{n8axWz( zJ3xV72ivDaz&}cVZA$N(1hAgRNmT@KXL@aFAQT#!HKjzQ9i0Fhb?54-k6mo5GZi5ToB_F&*3Uu~!ac)n0%-AdL&62D>j={vC_HE6Njtqxt5X*N$REm6x z0S_!ziS%Tqr#fBORsPQqlm@cTpcFm!;5rv`!)Ja~W4%(Ag#7ZOR(B~M4)j0M&-IF1 zsiG>tmT&~ z>7n6v5IqiB(fL$7W&AFdllvPj_jZ9+o>b5CM zf*!d)QiVU3Y6QiLu_mvQFJ#;~L*MD$UoG~XdD+({;v^;@YwyM^j?f2>$#XnDIWe{U zT|h6tE*;RDy<$JujH8By)j(Z-;a(-|||rjWZtxVm#y(hS|Gh zuwfz&Td$YKQvuka=30}dwe{%dmGr^=U@KJCX=JOAt64?n(Y2D552(|0y`)CBWA6Wv zO;zOCJLcQMl-Knw5|tz+7++e zyf*CmAb#i&ZT_KtN1};xf8eQPeAv({XkHxFgAgl|qH;`RNg9tqjw4?{Hrep+DAlb{ zSL&HLfZ#{JcbY_N^+Igp(*v1PE)Do2T6AqpyQTikbf%;?=_Du| zTNvhjCV%~F?v-Z3I1utmWR9)fd{jL`GB-7bLg0^=P3CFH5_v~Z+|JS2oaw($@n_vM z4~7@SB_3L7-#DL`kvR1ENO{q&(u*Upv99RHdKI^WqP0yaeLxg8JjJQ)w(n@IQz2f$ zDr~jqFC+x-lYWtEHgm_J9+)FLk`rxfacfOyW0dXT^37wl-&7Tp8u8jdw#g zTy1`IO91!RHhC&;Z?hkl5q4OJprf%SD#t_qwa=7w+`WCi3zu5Usm#84=00ZF(h>>@){jXpz9K+av*0Gu zlLW8xY?IVk7fbh3Dvs-7cKiUo#k`7OytAIEpH2+jgH-&rL{4eoRX>L5s=F5+1M%$2 zus2ba%m)n3r|v<4s{eV3++bPueOz%<$z(}d+J85*m(GgG*BUCN)1!KLsm#X8f-05X zy^|gAA5YctNqyHPxiwDJcNwvchEF~&Fr?^RcBgZxgJeWg8DMrMzOVIMZR+9BkTVEe zeMswg<)i$F9M`cjiULrozFx*bOxj7ha#$~MWP2~zVS7K|fZjc}Vd=lf6wNv>Au02h zAHcrn)%C)B`DaYCUy7oAb)z__9MKyO%=aq&^ISV4Nj&}udNlO^6h=3O01TG<(kR$F zJIDnLN0|NZRYLq(OiSdYwqzxF7}(ss|80olZb?AxwkdF%UI6nV--9aMhSWj)FRjGH zJ2mon9+g7jo4KQM?Y61@kdG8}unH-NB*_eN8AsJR#I zxi29H;wI-G#$q;)g4-srFwdrPh@Cpe8Ao~Dwzq)~^sWT+Da^n{3ut*J6Wmuln+}qH z29?XodeXt~Zec*x%1{gLj9=11>yJQKa7hox_9-}#HeDquuF+)7wtlh=?619_tZeQ4 zZ{V-exuEFE7ufKCw!8#zh-PIrJL z%ilZ~uD4Mh$$P&X0hh}`?eTjZ%Vo{dcLUU!+W6ps z1|vtEJm=xd;%ZL##xF4S93^T|enxlID8%M++~dL3p*Yu8Xwc8a@)7RkoF!nYiPV^IuRn;kNN>IAi%k_{C<%V6M$@ZfJq{G-q zh7gaSgmv2VBeRjTSI4_h|V(1A&u=-Pc>Hmuuw6j^t4-3lK(1rG=%N?S0C^}gme1T)k zh}JXeCghxF_Q$aM;1>zLCE*RUdVGk~_feQ*JXQfLc-5`OV9z3bwg~&2s-D>uMujLJ zv7b3yIprjU5Ueu0@0v(<+FH}!XrahgD*3|6>85UL9*g zdk0Bq2Otr!Fz8rlb$Xm}n0g^=Vs!#3l@o^v%plV@*kKQ!zJ{Wgue_g!Qt)OS8?xFV zd{Qnp>&kaf`BD%1IU?EIi4GqT^SKf7f}AOySdvA;`$Duz!rLd$&|;u@FW!tdxJqBb z(HhW6xy`@6G2!O@HOyh;F8rVW4$|A{a*2!cjWuV4nG<;CIY3f~o=8;RoH~v*hg^(G z92~F(QO_rcSeg|7rZ%;8CXF|WHHEPmj|mh9bL>Jj z7Zlvb-W2{gClo{Bh>yP5z8St&;^S2lRpO_4$W=zMO>7yc4cazDazsmP%QjX$3s-8G zbJ1Y_bx~hUQS|m{CA1R9RW`(}obFlT=Yq-OGCc-|jlbNEZCY%+oL_E-UZ`X=-<)w2 za@55O0sa-4ly31OBoN@5)s2`~)LH*NxrM;Yr&Gp+N6^io?@nU{v+tRQUl(<7-Z*9% z-B&0PM6aR9h;WaLk_MK8a&baeL;#h)CDF!VHmB0T)tXYA?sw@SxGr)t_FF}D z+{`oHw_f7ei;S))sXV1)4*12vE#q_Rlb4$3f{dG6l@0yRSqyw60CQlyIFYxFE2lY3 z?L`>a<+I&vNq|-eDVs-NjM!Z0m3&_6=D_b&J;2XcH!i0oo=Y>qUh8rs;h7%)MrPPR3f1)xsgp#H??^RH206+SIKVH zyQCy1vkQ`or;}q_yRvoF!ZE)u=T#=}yl0*_eiqJ6GVQ3~7kGx1#~JY?SN%5|V)AFW zTHU&tg0Y>s`dNRP*-<|5>a4dB8`MC=G0M57IwMxmGprnU2+#C~m(a%;h`#{*vFB zuEuE6$%l!N_j=<;@GS1L3%xtvsJ_(Achsx%DH5-OqKB65mx9%u|({u$;Jly~vH?d7(cB6ec}k5Z>HF{D?H6}NcPz$L~D z+%@yBJhvIuBHk8uZoxUj28os$qols}(v)Ih-uV+=-ec#vDd-wXk$>o)m1^ridUy^m zCVua%DD;)ZADgN7VC!K0BzqV}6P0~^N%M}t8At13v~(@gc6Y31DkTkv?BJgEjK*(F|2 zkGf4I&X*V|Ff8_s6PbPfi+cRIoSbB)g7##Pc=FpI$M0;735X-`)5Wmt5pAw zj>F$9Z9@~+8g8bGjeWu;laVFk=vIstYg-XgN`>LI0t=gekG*VP)=jnK;$O5T3+1U@ zghP>Zf5TEAB(fvI<9EGfxOIvo;1xyw=|#7r);_XX7Polb6T1SP^V^AI%*5|##nVge z>QH|OtFEi&SnD>o^Px^^Wk}vemkMN0xiSC}p~Q8bdY~-__ciw+_-W{LjcS(njD@ca zP$>rED2IKCSimnMS`VehJvtFgh*}iHo$fq@19!+j`?FicN(TLKTzQ;nHOg%X-+$5huKr;c=@7a#WRP~7VbG0Xl}A=h{9iz-aBb1VSv z8Tv#rB^*|%{C#{)yvg_!E(S5pe`G&CDYZQp%zEJ!O8}Gp7>jF{VMaFfX?u}-FeYzm z@bJLp^-0+)bxe-0*{zstO9${gb&Kf#3rak-!wpILUaJrvE`nmBe|mM@#RwpGu*J+S zbQq!C!}ez3aI-O2o=g3?at7g6$RJg&BmdQwqfcb!zE7eB0=Zs=dJ8?>b7AhW=h00Zf zMNJv3ob~1D_)~cKQ*gd5JBgaKS02&QLd1`mF+Zv}9|5!kP)8K>9>AWafPH!plT>IC z27Nj;?3s4n+Oc7WsY~e39eJ_y&+3vR0C;~+>KXmq)uXG@M2V}nZGu!GuC3g-xHJ_` zOH!Hf->&_hl0f(VmtTI-CVw0O^lkfjnbt|4cAId*iQx1z&V)U7-xXeX@kN+>t~tSe z>xjjWrigLB@H73n#$899?eBKnDcQl}g7MNip-G=U>@sN36sC@^zWUO9hDjjS!JKR~ zrRdsnb2Y}W*=J#a1r~ryFTEVL-14U|WXLzs zJfU?uouxA9&-M3!Ys285S=-L_-OnHUyfp5n{uVi>*wwu6bVK+1vdgc4tyF*Sz3+Zl zVfp2X{iY{sQz`PYO{TuCX2I^uqsuwR_QjW9nRW+FK3Q7^*ADK3{$1~> z(`APb_bE5sZvO%Op}!(AS{_{Ym#Xd&O13EmP2TQ<{(JnEocdiYpN_0y@=IrI?ccQo zu#-K2T2}3V&pqz~*kSwa;H8&eGEqQB0A1S}qyGH|n1zIO?&G!7vrY%}zq;Q86mI%w z*sx)ytR728cI=prGIiN;&?M0=QgjMXf8Vig>%|veHvi5s$87DZZ!BK@6!vO7)cYe< zx_V@bfM^}G#M9QJ<8`kC&F z?ze6Ow{P*YdgfBQ4wvD>hnxQEad`gu=V8A2=7X!Qx*9g!bQ6Qe1QSeX=Wwfi-8cP? zuFuUI-3Q$t{h6*yKi5AtwW^_b3)_ZO4Hi@>#?;& zvp>Pzwy9;bDQ*3u$7aNcVP>qbZhijw7fSbDfd%HD*Vq#~-)x`U7~${2_6x++Rv<40XUWIn)i1qE&-+EsEmHo)Xll|tl>MT6Ka?k|(EE3;KAsO)nd~#J?p%AW zb=+rKKExyMhpjD$`9^DjqrVA6SI}d6iZFFVh%J9U>wh@={pX2`XeX+`dpM|HW==1oi+o-1E6Gd)Pg;9W5K8zWzk4CoQ zzwrsOP&s{s$krJ5-zz01{2>-tZ^Ga4M8Iu@;~u9z{g}{|WUQaDp>ur+4FuIACr`Ht zpmo&asdUX_aPYCG!y*gJ1s{I&DeU{3?O~zs&kvVfc@13q_j_Q5>83W0ZofTugxO}D z1wQ%oGdSVYKfzmXzYm{%@ilC_<%Y1~`fI`0Uw;F;?0p#Qzt@hiz+$Di_N zIQ96$;I=#Nf%iZ72!8&vO--jyKkIy0><0_OvP&-s+wHPH{ATB0z@m#RsM`M+jy>Uz zaMYo{g-Irv7%sW|D!AsxyUg5LdATKEx1G0zj}`Ge^ypLIxWo5_$tIiBILQMC9|to| z|2^1amtVmfZ@vu&9eFZLHpxWh+1u}b0{ic=ogzcCD!Km*CmeII>GxkQy9%zo>2Bq$ z$A?9}KaYBMJD7OjKsfb`b77_#r-RKmS>HI;BaS@KVBHhQGtBuf7hm&ps=xyUtp$=%NdQPFtUU!Czqd>8FE%11Ex8Z@m)^I&fdO z;l`WPI7|k!&o&GE-_?JENhY>+F0=HHV2En_>Z`AXiPS=2v&}Y!yY9Xh{`t>G&GUQj zyzajxmh-X4pMaZgx&_{Q?*rIstDnG7^|g8T-v1En`s*EF>ZzwP zx~TiB$%RgLUw8eD@Wd1UQ_rS^)mB@j-4{RK051RQRffzh_QOTtDkY;P`KzqFBCNW~ zO6`TolmGo6+;GE9@WvZ&DP3F$)?a@en03}!;qH6xg*)%MS7Ev>%sR^~@Z59H!vz;! z0vm3y4lKR&kKxl#KZWzozX)cVZC2Q5!}Sc=(hH;KpMSv+z$>r33O3(-Q#B4l;J*7G zgxhbw%V4Q7U2omBVWyd8f>%_k_}ud^hIJG!AAIu+`5tS8Xj~BCvPd zdAI7%{fcmpFe!OGwu98-M@M^~fBq$d<;yR>3L9;-9!xX!)Ns``*Tat6Z=>p;Q_1`V z+;N9~|2{KLtFF4T!A~#V-1ZdR?(m%M`9C$UW`GSh zTo;yDe6jYT6GuCp-eaHbd=T|Np0|{2EnSr3AV%pPz|bc--^2NK>g(tp_Si2|Umf~2 z-&PoOalR@bMXGR&BgY+lUD$WU9LWbFoXts*Mfy3d%eO-bXGlV0ziVY>z6;nnPWvw& z3`Z*BM*TaO@Nz_gBY&!DML%tzgbjcO)_><4TslPwm5TXIf!5py9ZptaW53?-t zQ+VouvtizO=7Q-K+W_XBVM@5~?-#+xY9HDrzt{^NyyX)3+jW13H{X62cK`LSjLIE+ z`0rt*<$nyTuet&(y~dXC;`^V$YyY?!hAG0Z`er-BLpT2g9)IG$u*uGY;mO-Bf(a&^ z0DiLVUa;?Ozl6mXTNIXFcUySix^rNPDF(qSil}V7?Y=O}bW_5`XB`KVD~C4Zn;~$Q z>dU!Uwqs zzDZ}!qR7uAlgy+3ep~%F5O!9CY~OwMgr9A-1N`gZJE7lH3&QrBuMFq>`3xiYQ%^kw z^C--8)N7?x)`q+9yb1nr+L^HDZ+11$x87z4c=4sz;2#g%250^0Y}k3H9pJIY9#ro_Xe3SZ0}};kMiFfYn!96)w2oV%ToGZQ!^29tbD? z{@8Y;@4}1z0^9uJ=kU!pUn_z^U(J2n6KW7MFm?mqf zfF3rj3Q+`%Mugmo!oBAitY@U$U^?*e%7eCt**ON59|RgUrfER~Td?mYJuqPe%9ksJ zj>9yiW#N88_Ujk#K}t_HJT76>G^GGu5yE$Eza6=czr7@!;64N%juC$+6%N~nE6q5R z&MCbc%lH}Jf2@~OckrPQk9~L%bZm9Z+?`RUa{4z_z$}27hyXzk-qDUQh@br@}!t1X;0yED%lZj|fG|_~LJicNgb~=hR@4WNCyYIeh z2%#n@zdPoLc8Xi$vi|{x!KtVG-W*O?a*4&^-~U!bSN(hHAI^Z?cl)&>vD?B^&%6xx z-+jG0xG*I={me74;P=08`mnl+Do!!Q6!6D0|D?#yj*3A27S255Jov#9i@^i;-UyHU z>rq&F<(1&+r=K=^{`6iyO@zV}@Wyc2WmmvND#EbWLp%cyAM8Gk&>yra{p#~ptX9Igo2t+(B-7DYca z<8{JGr@~%}U~2;Si0bQ7ODzfas0ijV%lz12uOo$;#Oj|z4m|>nIr?x#CO?8Z@4QQm z`R4GqYp*lp?chTVU&FI;xX`G)-K6!%|C+>i5t3(>Vr@*VGuzI?K$a54zvC z+~6{Suhb$ggba@xbQmEY*Sc29(S4ZN+4f+uP_B znA@|_N!w|1i}jMzSsyBQj$OaeTM@wf9{2}rvfDAR^Cm07oew?^#~$=+L(I-P=OVcI z&VRr(Qw@T9{{1XGddo#Bk~T4{ve9;M^@S(H^y*}z{?X)c$k1W1%~o5$Pq*Cz&N=NE zIQGOp!W^^B4F7xj1vu*u$H3pNzX?A4@MA;p^v^NBKMj7g#1CM#RaSsaw%P^${D-3y z;k-blou-1Po_!HcKk*3oAvZx5bXI^%mOzdO{laqoQ(!95Q=41*8a+x)HfB^`X^De%_|PcsB`>7{-MYpk}CdG@^8 zr*^>L6X2Rl&w@jaJOMV_XdRORef07F!58Wv!>&7QZK8prD+TNqso|nDwt;qj*Al>s z|8l8`QvGWCT}B^Fx{{(RP{s?G@%Zm+1w&zztmUz+4Cx%BF= zklJ2w@kQsTl;nl2{fRHP_9qU39e3VCk%+h9>i@gQkd7B#RFSzmRN8nVy?<;1L(=xz zb9a@ReM6;7XAJfuzO2Ud0hP*r;e{7XYWwulPF9gQO#labN2KuCb+^6Y(Z~J=58QL3 ziegTx(#!9uRQB|6{0S$+cE8*j=3IDXm}i!0)Ru(BVW^6d>iwc;o%sh7Av^Vy<6)a^ zcY+BN2|DV?Lt)1GSB6W@Ivjq!)z8$z;aPa#frm_=G#S=g67-%uOaQOA^8a9q%{No> zeWq}IL`BpdgD<}LLcRL}T=%yt6ajoqk=kL3P|stcXB(_<7d$#uz4>OFC{q4BJgw5c z8*jWJ=rr}h3w>Wb?Faw-*CX)bA1xISz~g^^GVHzg?kYmxzeNC-YDX?VRH@~EDzd7{ zuRfgf&wo7*_uhS*N~6C4f4Ssx6ZL%i?YGs5OjXf z+wQ1R^%I-=pMCBn6>+^*rL`YWDd}a~kd3fLDKh61x@Ld{R z(@%3GleSC)V(xj`k9w?}EuwZR=Ract7^dud=@5v4C8>BRf#c6P5?MR&sdDk>-0C45 zm|V1=U6PEodxvB5DTVY7Cl%r3uUVPntF_DY>(FsA@;M+7)1BsZ& z9;9}9@C>l~ zK7-*03(p6?+Gb1mTsg8IuKo+S^321{9=?^<|0UdZ_1Whx=eQ&Rfki>0sHlJ|C<1~gAc_j>KKE7C z+`b*AdS-q_SKhh*IUN4`&vbWnb*Qf^_4nuxcv;TUP_6DgumClHtN-y93>iHc=1(2P z0UE_ni#TRrC%6-RvPxBL0P`jdhqF-VUi7!BaPJ*gp$T~+young&(K$3(TtbaLA^)c zp-`e&5%l9i-@z(Rz~|{+JlwQ1bZTCoh3N2CW+6Bo%)Um{=9)J*Lia9Y&O;3# zYK+=-=@0X#je(`hSHalVX2A>ugH$(Z1kXV;bGuegL;Eg$phgw+VZ(ku-KsN;8P*5Q z%zM$tE!Xb`0E122e-P9Y$qxYc?AgO6IOT9prdS04Nh5RVrI#?zNXtv>tPpCnmMvS3 zes>Q+lcvp4Yg7b<`j2e3Q~>ZV7v_VOPgjG1{d=?D7zOB*Kmd3r0>F_k4nossHuOE* z!Yw+4?r0d3l~hJJmzbFhVSaDV36)_55C z7+zmG2QEN=Me-da-@5^W(&6z2_0fEqAL`UC4G-0;#qI;y&}D%9BQLt}LiABAgaBzO zwCvCi#*gj|bsKer&p%oXO_Ag!zNC5(g)l8w-5v}XYM@qajf?+9-L-PW^?te zxBLxFq}!oS?;flHq&{f?See1=tXcD*Zr$1|cqpI%03ZNKL_t){D*}K7#>l@eANu~$ zXTye#?1M-ez=8$xvk7KHTB83a1ujN`OP%uASbnQLx^U)8XZ~sAX z{dL#EDqQyj?hhV32$QEwM{|B_*2rFgKAvY`dC~^ftWiAxfC!lHD^`rbIQaqpfa8_} z=M8Bx3CxjZmfQ*Q5XES{OXAFVjAK#w^w{>j0%>$`)B3 zxZ1q1b}uX&lFB|=N#x1^Sz5;9faG#9t}Z{Fk~|7)0Cf+10MPEEOHY)dDaqLSfqhIO zXdh5fzeh1Hj;V2VyG%>|e)NPf=}Jmt9GLVo*cK*9Lc5dFlnOuM=#Q!^m9kO1{Vn>% zq8$GvJ>drZ{Cxr7S~UIcf|kvm{J{!_B#GV3X>E$urS}x)*wOZ4Y0dDYtc} z-mDq?Y~PnqwZeVSv~hhl%{FP-8MSxaAP1V!)~sCz14m4N`BO%5G;z0{gW+=w93c%$ zK?IPU(Bw>!rj47W!JuAgoGWd^rmfJS`!HBGdn}vz2BwdKE${7s>?n}WJ@*_8;CK#A zY^T@+Ja_U4m^^hBzxN0VZu<1c_ixU99n?SveF_{{zhNtMLVrH`?D_OF=rv#@yfSJ4 z_mKiw-a%idi!L~iBOLp7Zx0uvsqcl}=}@k8G1LYX=DwD!*%X#fANIQfKvx48z4-?7 zMVWwK!6@LysFC_)_a~@jyN*E~JtM!gH!%pIIGWy+KO5D%2{lQ(5iF8vu*uU1#y;DR zrp+a+=~;z7a%D=Ff<=oKL%DKg;Kp0;g*w&CLjQg}S@_eK-(R^7YNc+0;Y0f~03hH= z=E9k%`Knp7I+Q3~1+}Nw!T52bF<4?EG=8FCMv9sM0FsvNgB_p1>JiNLBdh=ne)-+60^p{Ru~)KVft1=We(WgB0lhn-F-Wp|4wy7dmHZ0I82H zP_wvW*C*&tH;n^U4jw#&E(}*f@4f?|ecM*>V7&$yq;wRPFPpc@VI!$(bko!dWz#fzt-)+_Kkq>mW|yaas`^XAJ7 z*Ia!ygIUsM(x)E+u}*328Q7A00|CH=e_sSut5o9Wvu4jj&0#IpZXQQ^C~#uP(BWuy zZNl2K9=-ZP|GvE#v{OJwjvP6lVWTGS;;=ysUWu12nm@z-jWn-sx#bp^IST_)YS-fE z>*g)m!kAIR;mDD%IXI<8^#>4i&f#F4ufF;keI;AK!uiwL1Wcw}GEq;PJ`?KIt;6(v z@WF?$1+|HlDpugbgaUxd1iWk4P6qHx7B9oVk18Bcvv2=?4y0+)v>A+eG2KW#W6yB? z*Du}Mef6o|lLElFdQSKA)MZ6Lfdt5WGUu1JVfHn(I+6q3Fh4y$fIh~%07l!SbqUj^ z9=^vi9F1a>%=Amsh*!Vwj{???pGg3S{Z6=ksqYd!YGQ=n*Aa52KZO)oZSzV+HpzYw z;izII$V|UGa~$+(L;Y%+XHB~8ak4d{s_$W1P2L3{%;mq#8|ECoYHI@R@wMO4G??Jc z46)Zdx7!Slh3!Z2TWJ6T`p;s3Kt4sJy~*4j@pp>qJsX2P$RCLS(+M;iQNRR&CDP*U z+kb#T!e7y3L?1GbQW+J^Nxu<5P=8ZDs0^iqxCVnu%rX>JO7(IXY=@$8Rern!sI4KO zNPb2%CPd4RsHLHLslC6T=1!&gAR$C4W{6JuPJ)tXqz`>3@JP|cYFrLrV9HOJf+QDe zFjT+*ff7o0L7GAOP#g5!Om8Etz$CvVjRKbZl+}DwYtUL9$Xf*fmC3Zoy=9OO=W;~o z^3~hX6rTnSQQJi(*GXuOeZFgV9>*XspbZR7@6Q?@0$}aYkB$~qxu+LoOY7fG!8Ly$%E*pZjPZ-QhoH!Zt-_>PamMvcu&4mjw zN8xA&B@{_ZetX30T6OBf(#3Q5J87dR;*>t+?ym_eH|~P6g>U4tE&x)6Cu@UD{Z z*dw)|d;hU;?BI4bqmr-S5%iPGU$_G7-?J4XZ)c)rt`3@>*R$!9KGf$MGjcA{-^3>} z58sA9fusqoie}y1dG3QRKHZAGeFM?Q@M9hW`jE+-)}Wa(hW4t-lcz)d`VTYsydBNH zEn9a)Eo(a5S)>enee48We@#wU^Tr~Kuw94|$yMRWCe1OpWdwrR$9Rp+m^KA#{|Q#C ze1kQFmta&cz_l=7U`q^w+Js;jeRuJ5;0s*GcsO{V#v`zH%@QbyfhU``?}ZYDa^twn z#rEID0F^s3gGk!8OM?qAB~!PqouPcinlPKj9oH|dFFF8FP|5@7=SU{ti!aW>K$|`< zj~kB>!FzE|b%z-k8U0|LnpTP;y+702uA7dlVG7I0=)KmKbHUmP%f4WZnQaAov0i)p zEwijEn}d3l$<>rgnNO^C!H18__01tgg^^2ic}N z{Fe{4%OEk@EFE=Hk_OD4$nIh=rkmlwsRz){)A%IHaz7+q_$HcrvXK^=**~eT?sIc; z#`i%U*|;%?G675A`M1pj=q@yKGw^+9M&&~3}!xT5=@%Eqm3>3LEBsOgnX@!>;^qKQD;YD~34ni&G_B$P>e^F0Fbe5i%0 zil#^cGfU7<>y1@!F`%ygKqc1x5um2X?KyK7u=%}6;eu#ly&D!SUW)#IWwCrdcIGEd zZ4ER>QeQ}OMdm{?tJcDlCFD~`{$gXtz5?aTmtpfM`TY?PCDZa6O#MOu9*rJvfB_qS zWo_^r^mU_y!lRGWW03tZMqh77?Gn{ps$_AbbvZP9wkdqR?{hpjP!Pz!GVF) zTAfVA1@q@&?c2>a=VlW+nN$}oT8g0NBL=l(T0eaFFb8%})H#_mDFup3rcC2-0R8F4 zjeC{TvQRWG1w~AsIS2pWgIcs2nAh?GPRr8l*(MCcM~!-k&AfNsS%7KZg#LOmz z`Y7f?vnw5hwr<^q+PSY#8+iw&$N3i&!*nnT0PaWa8U7jh>GR>KD1J+zpYH-bMFx(H+HG|1--NX`D6DxgHARYXVbrgEaNJ4f(h$}n zhEFrTiJL@>xQsC;io_2YncFQ%CnA{_5{0rx&n@qxJ4v6#Rx=ieIoYL?p-G2dqbO-o zf>xu((|^!VW$lIRqtEQ0J0E{v4WM+2HFHY&@^qQ&%J)v@c7b4l-Z$GyUM3imAYFu< zi_sJ!ygH2c+-K(V0H^A@`7Z;!nqbe@b}F+uDF6(E++_P7(W{aphw1tcYg`CqQIsg% z6-*z}(9w65T$?npLBed(fCh7ulK;|ks+&HfT~&Nkzo{h1?j5)U3RM{jJUQzus$btz ztdmQh&Awp|)q4;@=Mqi_^BJ1$$IyW#TDYjh)jUV> z$)7W5aA_nzL6vA(C22O3g`4#R8sQ+Jv6)zzc%(vzD_(>WA|^? zpa%)IgRA%m&{F%s7@p0yc9bkpoP8ZjVSdD8co1mxWDD55VO2(8NN|-M)f*&@r=;$b z;N86MH&{F7UBL9NN+M4@pmqZbg1#3zET7|6RCvF%$um+@{ZQ8F!TsR~NlWs=C< zP^%d~B#{%Utl2lIpFFA=FS|*srS|Q%WviTtUs4&LfG0lwWpFWrUI_qZXaFTuVtBxG zW5L7@I;P$;)vcPKFuFI}3hL1v4x{OybE-YFEmbb8hLukxW<4gFm*|mDy<(=>Py2Kf zER1kF!Qi^>sJ;iG=r$-(98qRccS^YCQ(c#uoFsJh#88`n7QXhRF@IMR%B)k5k*z|v zc@ea2&KrBY^n7vaHcw7wUnSGNeah04Cw#({`EF|FOwe??qk!X(A>Y= zwJEt(xS&8Ye_qe-&vDur0%UI662MpHeC9Xx(zxbKje(*&>bkci{ZwNm9hzJ| z_zokAw~8<7Z&jY?APpo%0_)H9sQnxb<&dan)3aa(3-9N@}cX_qkN zk&@+-Tz2J?^tVz(sdoLc$UYp)vRTV=MYqg@;He*H@KfWRu*T7kTQoS8+c4WjdVhZt zaMI9kx6_iAFG`3+se2{uSzKN2pr}c&%DKQ((ro%pPPPU@gD8_GpL#b5-I{j&wmngT z-=#Lp_sr+gci(f9SALbh3CyE<<#$uaTy_}?NFD=okt;!!1puQtekMFk3IL@b5WN|@ zb2wN#KEdGfMbc!thYnXb@al-ss=Dt;WqcY{Rd;ap+*zFDnaskZb<25KPRNF)#ebm& zNdg;Dv_@%v-EuBplC~AcE9rUUj%X<^v}*`y-zZlj<>;diMd6a^*3>@Az&~T>bjHs- zbO+kXKVjORBWwaDEgc1RWY3;GGwlw~GDoVr;2~;m`S_%@b&_=@6&dN1XA-x=vf2bY zwsq*&n1F+|nfw#gUsa1F$K7_KWUmH?lH!`8q=$p?GC)mr*L#{TE-1A+NI2$oWJc$?ZZ zr7a4mx2+vE&@!KE&5<@c2SHQH)XlRH2T`(yX}}<9gnrrnr$JLxd3T?e8ApyWRIVRDeXmWwF+i$b13tlChWAiu~0GjW*^!VtrHF}z}WGz8BDGpCqM|lcaI{rBT4XZ7a#9 zWsiLp08Bx?oI$Vt8UPq)0`|E_L|Z^4SCe1r0%Pt)0Z>ta5cGtiX@dY2(q8?{+9g+G zC26T#e`tnuPB4%Qf};1o02C5^6!<|OGbqIoUBc|j+W%5pa;fisx_-B8l#EP8{=@-5 z``{o07)iq_$+lFu71iG;InFcMXef#oQR89z-Uk&XRZ=OQg-!XV#RP1#Q35Lx6MP-u zT_mGQ$t0Ufr=!aI22{15v>o3ha{1u%50EBLTv=7d9oQ(ICYkImFjMuV0`5%Ol1_Y= z=hE23%@?0WCh5XW0!PVShbpS&=tS0C@jacEp&BTtCr39#u);E?#Jhk=+aN7P}1()&A<#G5(g$tITyDlhk;5^ z+8v)%g)*nfsfsZ_*m_%YH!vC@oOkA-BWw z3D_NIyUuu(W#)Fo6EpeyNj3}_z5Cj5eK3MeP(>|8opj<(K@zP&8Iu;5t|Yuj@{YL} zlfQ3AE`@s_M*-`$f(4sOd+{ThOlWA+ls<*2s5xpQD+nZ>(|`0gk^(^9ofwJu_BD4? zwoQ37ZwMgKeZBvSphn$cOm(X7rZ1V&)~R;YJ1QF3EJN=q?VU26DpM-eNzciDjM9$K zjS_U{?h{Wo!z9HoX5N0WckfFEs6#;_qiV!y-Zp|MF(jT7c5*1tJk~* z&!x42%P>&HO!1=3%_f}+7%CcxcDj3b^vI!jH}D}0dbpJ7jy82>?SHASvDEiJsg3wO z*_CIq95v;N3HGAukCwf0GADJ8rCK62+M_l6@qCuBQxva%9e;kKyMWDOp6eLuBlvU# zfrK}138c7cSO1`dPYL07eGAZ6)_p&GV)dJqWDQyLr1DK3|7p(;aD75E>f~sGc^d$R zPfuZiECXQQ>C-}HPfusOXiUO8f57w&bCq``$K>Fc_A2?|; z<<2_?@6{!ML;#BO!QrGmapDATGugAB#~>^KP< zDd!xO{T^?Vp*(d&rwV4EGW3tyCqQ{V-Uve1sdamP7)Bj$M=fQJ3;>w5|EWFgzqSAQ zSDL(!>)@SWPqqJ+Y75sB?yD;2=F-zzGJg<=0!e{9@qOauqAKs=6&FX?a?5-w0id~mDUGzdCVlgZKpEX*J9PLmVHe)u(Xo9SD1U!-XxFA0-yKZ1Wn6yw<e1im~IH9ZI=;n&&dklen zyYbH1s^}x^rT~56JC7@F1;!r-W}bJ zuN)&_NMM-mvK=yf9DMlRI+!+XCf=Iy5nfI90(^P+OSlxx)IpMC{V_8QWbJ>y_x@*F zvRwX~k>1gJttm_N-s{S0Q~qihp!=-aGXa$(GZn^gUCeA*q!0S~eOs<8>>%NoWa)M! z8LTmp-cPh*%f%pmoDpCNmqv{fqUC>vM6}9>(ly@ckKui{*F%%18sp!8LhayD)V}S;du9vp`|a94 zhu6jBfmR**!qI~tz>Xa|`MNjCRoA{_XBg107v4jg4jntRWnf6!xJxc6h$Z*Jl&RBM zBT02PYWxhm^72Tg?}=q>&<~a`T?f7Uwu4%D zI|lg_UU9`0aPNH;FmZGmg3C`hvGL2}Ughh~X3d%d4?b8M>OI^L@6N4+V00!dSu`8+ z+))(XSUv}GW|)AZ&E0RcVsD6F^S{b4cPV*$E=180dP|pc{ zcyK|v=DU4LmC7nVlQ7M;30U(!?9WB*W%&R`uckBMX=(s4YE9c0!PDF!6D-})TE0?k zzWHM5qM4{k%K`fj?1zqN-Jo%!`fxtpKT9_|Or17^uUwTzEAV9FMrg7<1_ke~0J*Qf5*Eyzf~MW`pg)4RGz4)64}Jkh@XD~;^W=fFPS2x> z_jxwEu3P^$6f1f!-?dA32AcqI*su}Ms#SBYcO%|)dw+#;uz1Nbs8q26(?WEuTepGD z#a|-GJO0gaxFdf)$aYRPScpD<4?Iu>R;^xxcgdDOKsW+gV_kIT?v)7q2t?9dzZ*Ah zLJ)f=ocR6+)NXcz#mm;h=C_xz7IOT!iFl{*F1%CtY6Q23;J(t;@jl|8V9WZYocK7< z0A}rf=H4va~Z+}SZ*bYvfJjwom!M(l!GiT0$x^-*AJMV0R{Q2|p zA!`TTGfNi^RbV(KDsZrS&I&EQ|{|v*If7H16fF3AJujDp!K_Z*PEm z?k>Wt*t}&66u#>&Sg~RyTy@n|Y;K*u;O}TAtpeX1{{~8+maKTOJ7Lg(J`9>(n=ldm z^cuh+1b{~}03d1K9)74U*Z2A7`_P{-7YrIal>PZA1&lHQYXEo@mc71$%Mdurljk<1 z^?%{up~I{ly!xsuq3JWNVfxh9kd}pT^G!FwmaW?mcs>lPSN{V_mMosBiR6glT)9vq zh~TnS3t0Q+TNrqfGYIJ5`;LQa)9Tc1$p6on`YQG#2tIkXSsQq1%rw+CewgV4Xlp;* zeK>3Xlh@Db-T$MNvNCQwRoi+zQ3H4i_czIb-W_yb$D#=F0SkGW`%tirnxhc5 z4=}kMx9N&MP3n!w)JXb)l+>OSSmRq{KAy?|Df;vvO@7}b4EPtWPnvk~S0Tk|0Hf%Z zPAg0WvOt^Uf7!;E1pw`VNaq#+00SsVL_t*bXXb{pww{cA!F7|6SMPuS*IxqwZH=-m zh|KxYF|8{GRSbZ)5#$vrR1h_0YtYnM9_Gzk00j%?=U|T(E!$xPZ5q$hUVR3@kiq?7 z_nti*Ih^fm#GdVPy;w{AOb+t08W@N3H=5iV*vQo;jbZY-rJ#I z;ZiW^)sYAwuSB22$3O%@c#STnFcZq zmnmHe=FXeXre})wB{MWd5w~sAf;EOObn603(BxdAL@{{lt+&xfvK-_sPz+Wsn{A|l ziBb;4DHXEzztge**#OW4Jg$-@kP~r1Ai>I)4*yynhu4=2iroDpN|u}Q%P%YAwT6;1 z#t#5Z_a?vTR^uc+R=(eofJI4G`!G^J?a1p&HPEab6 zvorsxXJJc+o}d0X8SskIw2+4GgAYGK5J!O=7eU>JD!`0s6QE+{TJYNVQJgPtkD8Anr10EGX;uJ5J++W_!W;s?FS!)m2bTdH(Y%wyt8Q)l*35i z8Pmq2FXDeh4d9_e2O($9oY1TH0O;2BIjB^n7JPT&2Y7SMQZx-Of~r+2!wWrnLw5vh zHETZt$G<%RM~{6A+cvL;6)RUk*)pa0y$7mQg==pr1h2h3n89Y7wrMcp#dPd9X(+$K zz?LO2W5z5F{-6lw0tNCjuL|8=1`Zwm2CmO_Is9|a0eElo@=PDVu&F9*{|jc=@3;RY z+rQmC-<26j6fwGtZ0eO14(>kfqc-ZWkgDuVh4*&d$v~#N&!pO(57-5?#N#PH2KYZE W1-~U?9F*q(0000smHUNME0RVuGSQyAFGKC_K002Ee`HhUO z_lLbK^c<$&6aBYeLV5&$ic=pPa9`7lpk1P25n>VjGa=42!zTSl^SQOP6;6Yhd2(K5 z>(FTHnQwz=YdT!WxbDF9YHcu?nPGmcOy1`AJ=;R4o@`r6**(-p4ChbS2bC?CfII7a zgf838HR=N5F?B`52$K3g9<}6e$E&lyUn*Z-4z$qh!HYA&BAeqv%Ub3M*Qn{eW=j;@^0F@?{XpDR_@WrMf1#LK||iy zC;>XE!xbdnSF%we*z>j0IL>x^(dtopK?7f-AWLsRXCYZzNKbh8A926y{&J^&K;%k+&RsL#tbSw{6Zu%AY$|0E}8aBBie zb97HmepI=YM)zqK7_&O4;j3>%%gjiMbf|7-A$xcymneouF)X-mZ|49V!TGzTCa0s& zBrl|2$W`Ig9$chPrZ=fKpX~YX1xPLdp=)d+(5N*PZBMxcZ>n0rPBI<2-fx<)G-}#? z(9I8)^la?QcCd(MEG+n5c@zCGLW}Y%jJR{msZw4H-=^G0$i@ezn`|G&6`R->-C~tV zL_=liqc5S(g=dzs)wmPr@cCmIs3%ADV`a7xsv+ga2;;Yv%Eo2jVj=2K3=5&P2`^<; zjEe?$tTz)i>G^-9D}s$sCG=1soh}{Meg0|~JEv57t3zlb>-)1F8G&26R@Jr7=cVBQ=pPkezsax#U$>ZlzOAIGT%(aCT;xdKL>!KY5{&Pr1aC7y$ma9Et=@^UX8J(^*@q1T}#wR z|4n8JGM7syEse@c1MtM4OOGv3?RVhWh=8ivAJUuGH;jjy5P^=3a~8ODOP_K32Ga|A zx#*KkMAZ~ih<(e_i{LwD@oE9$KN`8XOoA7F+SG&Xw;iA{hQ>)^I=v9>)%noXe8Tp& z(bDOPA6%`kVSSB(VH7v6LtLAm&z62kDHzC{e~SGgCD^ubKNCRx{^ja}u=~&We{a?# zP3GR{7+03`B?%})DG8ymIoHfQHPyW6K5I1uW1xdVtL3HerN9G5~r(Ba$@py0=eAsCAy;S0ZFHg}ivz%wCrw885{&r^3- z(sTaq9}LCEXWtgb`uxx)Z|2iLa(gs*rrvNcY7c32(ftS-F#wP~fDWnL*9C~=Ged(- z*qmPe9$jl1UG5fDhIuzS#Th{*<}gby&aqiDUjYG%^UYAM!lW3z7i-WB9J6V=HjmPv zIEjnYG`k-W!^3sM7S65b`gH>=86peA{9_ET60nGnc9ukPOPfxV9&|-tKKRtK9bEf3oFm`VK4Z7TOvza?G-}t#2>&B(E^1(LC zV|ZFe1H9;es>VP2-Yu=7X%Y6`dpUGsyIJ5YZAg(KQ2`Y_)o#>La@s+nTxjK8?R=t@~)q zuxv#-+OLe1S`V0t=OQY6r?ES6lT~h8aOTfvOP0lDBEj}GOubT*^kSSLZVofYYOdORbUfjHO&CCCSCcDk^v&?s)G?`XVl-XF zbhuBa8ORb8#J{S+lk2mQw#RH{&lP~}t)v3Vi;yi=GZ4S%BhBKglzO~#8?Nfb9KUp| zYPYdTHOJt8xLU=eA3yC3QwV7)ltv(6L$Abz=J58BaX(iX&^M@dk@?zct8suf(Om`< z;q=lilW&g~PxX&XP&GkQ+kqN)$cqazi^zSqci|mOk2Is~p8?zTlM#}H7m18UPS|s_ zDBHxeDA;#G`_5ffZ*Y^!uQXt<*Xu9g%Co`?W1{-_F! zn=#YJ8w0lIyJ|B4rh|)SvzHgdjA8Rbv~w{lf4_~Y&+^c*hvf}HF|}y zRvQ+BNF<*l?CeW-OnqVSZX!Ci6i+6BUJ2o|nYHn7dno*PGuz3x`nfba8S%p4{qof@ z570WX{Y-Ifx;|-!RTQ0?3ka8hNY!F$O1r;n#bswOzhQEj3pz1gS;V9ZG{bll5wZA{ zOfD333*c-KWhg~Ym@y&6p#{p1(6v_G3JB3+tSvv{Xc8S=_FN(|#yHKOHtF`my~G;S z`oUk+q-kv7KW7-OVx8z3DV^hqP0%cUq&rfTJbZi@Ydh|v3fngX z5UN8JZa#XFf}$tl8RUjpv;8etvi)6c`Cqr6Y3JX_glyDFJ9rB$qMZL$XY9nirMMfP zYP$WGt4NW51ZPsSlBxOhU5z}t|8?h`!|iFu%S^XX(F}d`EnMQNOGFSt4Fv3(oA*0x z-;}O!(s4^>9K-_8XWJZ=M=j#N+c3*RR93DpbC z%;hn?Y_#*gm@l%KQWK6sLslv>>bcYGvnl(LTBTO6f1kothz8obCO0^$+MH~%1D?6{ zQP`%2k{R}vw+ynU6|t_S+aHm9s2!|Eo@53x;%3X6H_~l<{JLvD(S-jMs`a>qyFga2 z7~<(Ljd@u0w06)EUfsR1k$Sn28x`TLXT4D2%f4zmU zCtfE^b_JuplvXc5$x%O9$;Gb~>@qr&{*C(KjzZG^ONHy1@Jq!Qcja%M5eo^!o2i!1 z_@`9)o5i<_(XnB-|Wh50r9 zStQOlz0{EHc$eSScy6W1S`W)r>mLn4UN*Y>FxH`;GKL&Vi$HR`-P3utA6N zsYI$g`ZioTY>pRqkEJ|QLFoG!zetyPS~xwr{mtdB%d0=-)!jH7mz|I8sGr}9qS_JP z^B=D;-69?zyxgX>6w}B)_)lWBG%<88;@jTmJ0b2S>MC`=Trx zQd1{hH~4;2#%i3@C~c%s_c$5*mm@-P$m^RF98zCfJak1g_WKbv@@pCbzONPh$#)sN zzv%49;Mfn6-Gj4;7&gzCJF|p<%Y|9ITaQ%Ht)-BEo551=sA?ar^-w5R(7brHJu*CD z_6rWZ1X6cqAH0|4h1EN_ROpV-A4ch5ZZEc!9&^D*?HQzKjmv$1@8wx&gO$C!Nolx!at1cx!v`W8Dih^iEX52x9Wsa#F}CaL}QYPfj_*N*pTJm-FuTgXt%8t*m2 zoi~tx$UXh_iD~EHueSj3k)}+($!F1H$Q#)tOtXPC-rX}RC_Z)-5-5!Zqw6zR5!C7i zr>}vvn!1Oi&{fgLxd=l;Bk8?V_y~vuy4IP+j~AR<_ut>;?a&j5r8yon55JbeGziwL z0Suq;JUi^Tbxv&HA9(0vxyS}Ujp@X*RM!z}kH`tB7nXq>+umz2UXQch z;C}U_A7|b%1BK*|5CZ~T#Chv-gNT+R4>gtmnuA$Ksh3FztSkse_K+ z)FA?IMFD?4+*Nhll$ON7T{_!QA>&m|i@s`zQ{W9y6Lf#3v#}EO+Ed7XOyW|6@VMUO zGr}|+NZ+5t zi(wNJ1-Bd`Ru{{ z@Oh!sd6(+tu#K4%Q(hf)!2*T}f`$Qq6^@Xg;L5^~BMW_%c+9q^&~+b(E>(xoN~>iU z3JmCUMY-WzVd4UMR(|ZZ;_jZ9;-Yi$WsV;ZEoFILNJkziB?=jHmAL;Wi^tU2I@GsuW!&gV)e&!DBcWlXeZl4c3yd z$~ zxo6#h4|khV#?nW*6tDm3ceyef1B&OyB@HU8Ej-qf3|iijoz#J`Ap`F?8>SPSWn~NS zI<}Td%PL)$?7yHB$>dgO&0^z z;RBXF_0!ru6FCBGdO=>5dR(F3c;D_fjTkvrSvSHx#ofAqn5nkVfWII|4W7f=U2gUM zIiiQ2cPNCm*#SbW1&;b|+XX3N8NhcF8Z2IAl`W-?1ZLr*1QKVO!nAkG=}aqsMuZVg zpSrUDb=I8sJQJUG>b!pz#)V}G-=XC*aT^hIb{dnsb*igus0$`_UzsBLR=mNhuS%;S zzOM`K+#Fd?F+HfpFvcu4BepF5_`Ix(?(wQ$>OF5{DW$YGt0OM4246&?$C$(gPl`!k z8V%gXg!%dP7OrO$S5M*(QscirV?!mETHhbVaPj8ecEfN2BeM7gf>WmN@((r^FlOGp zjAS2_$swc+)agJWf5UE|Y;9`!&V0J}=MQE76_SrIn}?iC<@x8VRvY1Rd9UzXhPWEt znf0I{1d?;2B+nEyV-X3oB6_Df4=r15#6gl|Tqenk_sUsMG(-}pPNgKP2=25xm1JTx zQPH<_YFD~OacJ$CEgn_$cQhw4gtGSE5S$AjVCsJzio3;GQ_Y0xt^DC*25Tn)07&jw z(U6Q=D7TO2Q6_~Uow)Xv8c_bveM*hn2OxV2Fw@Sc#gilIT;P`bX0{mgC~BCej+*k9{9c+h0}PzY@pxTF{m?v1HGk8yN@aebXu-fn=%&=3wLU**p-T);OS>d zV@HX&^1&@eHa^yrJ*C<$)b=4#s=$6%QWwT+WOI5ylN>&XlM@k+);1L@p0;h9y2#8N zcw1)D2k&Rm>SB7qNXs6T2y+-=5@MTtoxl-(=FNSb(mv!22WL|2zD-?2CHj{17WU?6gQA| zuK15)Ev6Fvl(q_&HEEqn=GhGM@JCRH(|VRs)2gHl)=37??BA$12c$8eDS8VY&mpvN zikJMo$B1cZ`hh0?G(X9N9ir`F`_H?Y<7{Yd<>i`<`ya{o7YC<*uC#nIz>S6rz?Aj9 zD_-TCKRs^u=d-Pyr~nF`3D%@}BxWAm@!=3=pbs+(nY%<%7fV}fLWJ35a{yz}m9H-| zqgAn3YgR{uh*Aj*J?E?UL2{&%R0X;zFJLQy7}K@ZpJ7+qXfsDzPR zBS;!aomO82FreG&Gd?1I*tW`2&WU|${6Ou@`s;SDP9q=HP^`#EWSZMl*pu!z_~omK zuve_LxqWkDg{mZpetr1x$Waqy&q0e zI#cn%F9^GG&>;gI0|^-P5fv;3ceglo+bkI^U84!-x;knF2?maG_9|VF9C{bOhEARo zm2p}1QgjFfgtY7Px`wonGS0`^3iPloJ7fuJ{N(mi&AapGmZb7cK}dSTCO`O;5(BW zfIcDrhFFsmMP zMyJ{JQ)|LP^km_3(F=fiZ5p)iQFmy1>5;^Evu@z^`Pk~wAn)%>GGPs~Uz!)RU16aG zKIF?iUd52M;ie4Z0sJhNIU6hOzKcyjR^BB&?KVy?%Ndm-F9F+sd6PWWcV;kqm6M=$x|^cVl! zG@3G_BzT`iFZg*4D}NQvcfqP|=Llr|J7H8W+_cnV#$ z%?2bV4C|`f`7~Kyl>4nVpr4hA8Q_$(`W+=58;?oJW(o3q9->B%`K~4+)4J)0H7YML z9e{|(z!)qz%fkP7%h{DWhaqOO50RE8^!kGGDv}*yZ}X~6se?&$9Ttlsi zS$&Ispd797yDJnB<#avpsLS&`045HDt`-l-{&nxUq)Y+)AWk>vfASnq<5%AZs|*3; zA*8dnI9B%kTMyIeP>NT4P7$c)?$X>`5I$rAZ^6|#cY6}2)P1?ciS^q{8%gx}}5ovEDTj{`Irg?I{U zHDZ;qh|yT^AWBX+_s@k>zZ_9P$Y#XP2<(2GZ~`>DNW0K!RdE2moZGVfKh5(1q$Nj0 zMemYwYX7{!;_+;%0BC^s(*sXMi4CO@Erq>M7jFiMJ^P;^O689-2Nx5 zkJmuLImn&-$7Epq1512nA%*m~Bu-L0YCJLZyPlLOgM$xLY8SfJtKXdpcLFiKCEF@` zGX)v{?`V~JidF|GKE9ntVS&n){zYswUce=d@%h})XFe4E8DeR)TiYXZ6b{za&*_dG z2<%sRM)F4(R!Zyf6cPl=erH=tx?I?PbJeCaUE{js_s#-9X2d^ZnbgYdt6AW^+M{brA>T#sTzcfB3i&i5~%9nG6g)6A?ATO059O z$J|o%F3`6frH z=_N}zc^o;l21Q{m4desUYUG=w#++Z89j@P#4y)ROqa2=f;dhK{mH_hsDDO5BnQc2T zIn9P1dOCrkkb(>_^KJwy)E%Dm$5JFL&*@Jdb>$MtLiDqG}H*-dgQ^Uk5hggbl0P}g%>~M%J%qMh=QYQ!S{mczEubV zz&QVUVD40O6+>wymohAduVjf3Yl%3cd$fe}*0(THK@i_;01e%^NS1&HUD|?p3x_Zc z%ohP*tS0(}78d!E7=s6mKB2~9AUTpx$Md z^qxsFX!esx6EUOPLnkqdShSkYe5kdyY+g@pxcC39*HuDF8+3PUj((Ja2S4iPCznHn zea3#%6P6A%TT!Fu9RlCUSPIwSpDynjpOfIP+mD~uo8Ss7P`=jiM6Qv70d2K)5L-RPet0* zyws2Dn<>Tsv(dBu|Dy${i|R##p-U4LTOS%u?gO~qFQAYwPg_$0hEK(pnf)5EE;wyT zQ3p;W<8N39aRCdY*+*|of4<$ai20-D`f{S}X2;Q)5089hvrHN!n8 z2>ZsBiw=_?;-}^OCZAt6Yi%z}cI)gH`gVz^^uA~KMM?`}3VzAD^c=uGG{#v``yFq| ztW$VK^5P2FCx!2qy#9<`0(c?7B%+H;E%RjvHXvjGqbL#R40z6h3wUvbdI6w-pv)5} zWiWXIn8nN}sIH5}fc~OZuJsc20P^)N)Ml*lQ|JQOp!oK(#!OmfFKTtpSU;^-c{_$R zgFza4yo<{(z&@XT-H1?Y>)S$J=&xc7(Z=pr+m%C#b;!?dI#yNmT!U8v6la5;ZMP#<*rfMF2ju5AiisJTs=4=EXIv5mI5l`L>6KT=tc zf~q(6u<8wv!2ziY`+5KmoKaycEA(Vvix$!;!vQRXfXS}L2U^nFc z7GJ0<@p}o(E(II_efE7Gn+4k`JK&=6*7w2yrJ<46}>T`8MV5E&R`0!Tuls>XBu+GK}f%<8p^&S0RW~Mn`QqnC=3j>xF1xrYn1E zuaLd_m~lGwz^=$E&T6#2p1&w(=hvI2b71_KG7XWfUwq4T5snJ^?93UA@Rd-fYl-7g^+BbFWl&ZGg{pr?4ntrwCgNV;K z?@hpCfFH2Awf2=a;6~RxG&$t0u7MB0fb-XBHGwvc$ear-NpxI||6Jfg`*`f1OM>MA ztUgh^wgyv|K2g zMJiVIzWsjKNro(E6h}n78#zRAc3`7_QHV#$FMLp+&i!vVqb*cQh5UZgKK|AItdSVL z?bBKvsR(-6nOyibt0AOFKaeY{kl<-<0*=)$J#T%}92!71$>Qg+_E2d>V3^LZ-7-$D z2g-cI-SORzXllV#ihGSMap5XMdXIsSOm#Ko%C(A20_#CBnP5Lqy47Ex3x&j|xblx< z!<_6(-bA76*vMztSD~AxAB!5VGXpf4UJ|ji6zrf}Sx`jpS{4fpmd(VcdD^8okb{92 z>mx69J=cC9OntJ*?yEt7U`B%5mig8`*WIp9m@QFW+oWb%UD?sucd_5dZGssPm{oXG z{e!#$2|Zb7^^cyRK)4Wc{eEP<>XuvwpsoFkHcrLo{dHz_?m(QKvYt8RV(>oHHFAN* z6~{DOf$Gi%kU|)KlE=Tc>NbBF1|?72I$f^cz{%l41}JR`ZQM?Uq}AmSvtwm;mA@5yaRm{Y~TI!^=024o?0bDB5aLZ+z1+`yu~nm7J< zk0sDIo8aG;>XspDgZrGvzh7fS_!XzlC^rxoHhVxXO$z&t+?(BGJw`tpmvb#NJZs6! zS)VsbkF**eG&Qmnb&b&iHLT_rOhp$x@kwOIy5t>nprd_Ntil?_xI#Odx6C|$Dl2w} zHyQ572dXyNW-#00@%#_?gOgAyGBUAFCA1@(`g-#@Y6v%~}P3xHkZV<7mEH--%<#e4gO#^I?b=H^wl z)wO|bnyi6FMMO5^IoTP1?cv8vB2ZqFt9zKU-o@4}WOMh!zgHbtMpR|>?(@w>)hJ3o zEid{WXl?SH@~tBvG2h8WZn3pf%#G6KY?)s_4RZ1cx@0WAxEe8|^#bkkw(aHF@^zDp z5c1rVT6CF;1-4Zc7~9g48ogPQnP%Qprnx*%@!p?I1ja`7AjJ%OPiY(^BPWU>>t21a zRtCM>v@y5zmzS>FT9PsMW@toJS`ntyly}%|LjD8OixH=5YdRg&H5MNQa5HzPa7~yG zD1Hj_x8(THq#*_LJ8yTWb|=r?u~SUVXrHf$^Zrs)ND0<-SfDPRtA;3>z$ zP93PpE&SAda+kEqew!w!jt!+b4gTV+*QoXPu=FU{6*P1u%?lXDwu5E<$mc+V{5o+l zZSq1NS7b}ON6RF!u;e$OAaUtEu=`ROWa^mnq)DrskY)$qT^fh}Zu)qr|C4we7+Z?vAMvt@rJcry z)2~@c6OPYFjy+UbB=r_wuXG9HVqCgI#jf2_U~S*VxAn(#>Wa$VLVX7)4n_!HaVilX=igBAdY@=(3+} zacoaGxEE;efX)L#r`}9E-uSBTo?%YqY%E)zy%1_Ed>ULEXqyC!BoJuFW@^D|*>%&f zLFai(_2B`Fn~{3|;5@Al%99w=D?e0V4=w;2s?G4FtC13>tQcAw^U1&MX(2icxgzaX zjtELg=-i-4OB5aer@mA4Fy`5PyPkHXwtc+k0Bs=n^6`s`fAe6esk<$$SL#4+NF?i$ zhns{dDz(GX2-|=GOCKw7OjOQ#1@%As{@gD&C4yb->|PG8ykaS^P1A^^s;Xz}w16t> zMLa#egy3O^H~C92G8eWVFD=Vtf^c$l-hN^C(VtIlBo-X|Sy+EFzGZ+EA65zi` zA4QMvLP*up-_fym%u3rt_F2OY{8e~wTEk@)Ak^#Oi(K;gY!qBwiw(vdTDxkD5`8=# zO@nA@r)~scX0Me;Btts3K^Zdz#%f-#^p+f0?hdfV&T`pTD5L~aqN1z`Vic!&p}!AG zCMp(%>XRqVFW!NrJf32DVG8q2sRd6)VO{LCv|YQaQtlkHL*$2IpaGV0OlK|o-=9)V zWTiz1wX&$!Lf_-k&O{qUFO~e=0ps^QQK^QZVTC#AMAm`=CDmo9p$X7l{)%^cnJXwN zZ)0`zmsRrO^nLUls3@LImR!s&c;9qM^k5oMjzt5V(|z5EJ2|Z59?02m4Pl4fo>7&J zTD@24R(R8p_x9g+GaB$?f?t}Nq*w?|8(x*sBO2<_G8b(=U|n`jh55$(C|fH@a#Y=z z9~7}a(=QmEEF`dR)D|48Y*fVWWHhPggHm?r?dT(ArlcTqly{#1`G%MY2-Fh^M6X15$gW5 zG%;Y0@I>S6O)Fr=5Ohice+Jci=ALwN>uQfXK(nvX3eG#QJ)MY)jV}31+u%-Vh+Kd7 z5TvvF{FNk}y-Cf7i(T4Dl*$N;;VytSTtewiVPU8qpTgEf^*FR8$r~KdDG|!Ed4WAKIn`c1YQw zT`=lE_fWQ1Jmrs|KpuJ%zc=Z;g3Ize+&{51dBKyw4{>2NgHXKGz+P= zd$PYaBn9A_==YpU6xka^aL=Be?=3SO_(d1MszGD@rWbPx`(81F%EM+`WOTnJDY$mE(6T=EE=csP2a;tK(Smt_Jg1 zb;fW|oK$Rjj4&$9GD%Q%v2dY!g>!3cQ5$FBypX`fR=dx5KLMMIZ^YRuuS1OO zjAYKX?F?vY!_El))i}L%Zd&~+;d0hscbC#{__&pK81uwmBE8kKlwj+QI~lVj3!%4# zy8p*(f#vdywlhkRA&Vd<>#bXy$43LxUBJWJ0AeM58eRg-{=htXcP1nQY_9WE?jW`^ zCmg*F$m0!*PHz-okHG;(V!U87O7@Tnn-WzF(Z*}dl|2#!QQi8)=?d+PCJN+Kq+0u;}S2pI`J#@Yhq3mhHWC@I}nM+ z5ZisP$fmEX)LcD>rRTww8)-ykF!QJ2xRth+j4#gi;vsNvAjp@EC$ZDsq}@L&xfA3u zA}`II8n-)bNUq!{X}~{sVq`2gYNEt;fUft~Ib_+xkT(O~sR*+il?TuZ9qQ0CEF=Lf zKZEUVa&jkb5|b;R+K+oIfhM+-7}^glPc@zY=IDQucHB}h9sp^XEYV21kGc{zYT;D7 zNyPb|VTa#uu#9F*;e|<6-5&GJ**?mAD7%Elf|B*I%kQvS(Hq>zd7VWEpJckC*qz1~ z*YIC;t=AA64q1+tkx_w`T9qVF;`5HOd+ygQdhjvW;T@4~k};bRRgu`Gz{S1?=cTUO zb9dlF%p1* zA_koDfudX~Fvdym)|V|we|qf0Z=EuJE)%x(b4fZSOo)DSiC=)=pla@fh{GObCF%7Q zK!G_Z>3+JgpkQiC`YB#4pr!X>5?M&Mh|1LZQ%^7wpPICHF9WNn2xAF1M z`wd)tvO>Ouy1!+ca+_t7iE|=-lOY{Rsc&8PL!tW+N$0*Mo~hm+1$k)7OsO#MXpSOg z#On47Xvkd>-c96u?iDO6m?CsQdOsRMi@HJeCrv$v0%AJuHH|R>%xoARWG3%D%6JGp zq_}c7LNRcX9i}SpE14pzPNnOvUr>3wq4V6SJsj``4Sw%`)4@T=6mGkkf=u|Wa-*z* ziKGKtf~B;u;q==9RuDyTjg{2tM9!Qh*{OQ~RZjr@p6Nd7ax@dC%$9%q>3)svl?fq6 zy^!wKZu_spw|$CP5~RbWetzEq`R(S61MC+rhjeQ0gUZQ~MF@Ry zZ(q&#Q)BhZ5&vaMe!uU)^-(C@VE`r8aVAOJ95sdpUXVj6B>&YCDEV=1m0Lsk^z}|S zk6NJ{s1>~_jcdW4S0-707CJs^{^f2OC;JK};hiM2T_n2PlRr`lNuVk^r_p7KWdt!R zPXxKI*cg;M$c3V)C7V*EVpYM1tD&$CMmywaggoRd1(c`oe1bgsxF_&zDC-c%Bfo``YU@?ZB<&DtS1gYHW5@p(P5zs0$QD^axz#Hi z%%tIFEu*~;XQ#Z3b98}>{dGEAE@@6IND^*c+iooL*-_wkj-v@O4*g3j=z=$KE-kFy zfcOord%Lg$V+S46;1pA7&}h);ZC*=%Al)qw+}I5EyfyKp(78+|2m7;8fjtasBB_n_ zYh(M?7Pq`;&VwBm(X=(4qdWeNv)S=1BS_p2ES@8~slrn(Y-}@XvB5QmlivI3?KVPO z3{Jn8iu>o#fMz7$-L)uM#wjhD&E5rZ%T3Ujr!1D%_bmaT{ zJFA-407kyQ|CF4?E}b%5E)$pWw8A*+6$OGB@P_>O_07N`*wV)AQGW)12fd(8ecA9M zmEYxNN&Q<7sR})kj`ciB`1mL{s(3}1ZL_k%Z;&3aB;`mKp2yOmyN~)*V6!|g#@TqA zcdjN)0@{slP4-c@9@*;GEiT*!T47 zsE)6?lwTrZrnw(8%7;7`2ng^SOBHb3m{b#Z3LUn(qEa6R7Q0wm4l$MOB84igtg?+X zlVZnkXK{zPifCI!pPSBEN>kD?{k20DP=m#E2lPu?L?{Gyh!e#Rqt@GmeqrZ`d~KOu z<#-|;CZnvX^8qza%ak_8f+PbCj5)@6IfXT_4GuSaw z_IrHkk!zu(p$iV)_WP$7|*8`vfxlkKIXaGI4TiiFQ2rE9CPGrss^tn1uy0R z5ZIk2vq=(Ik5|arW04zb?Pg2c?uqA%s!_pRnqO91;W?jINI*$hac9(0>T`iXH-4s7 z7Q|&Tvzm{@UwKKUPi<;?PI2ab4^$X{uVaU_1!MN!m4 z)JHKPopG_GaNoSqdU@ZZiFLx6mKctry1U9eBu3gCP3Uaw|KWBHdycc^(78(yXb`6} z8?ECN`5(}jYoJnu{p#t3|Hq7G)UuevuSVD4C~3VV;QvIy?BatOT8a}Y2O9+}b^Au^ zYwfR|D)kJAigJ8MRb_UjWoEFTU>AuM?tD8C9{U;6IPOM+BsgD@MQV!?30I#!ZSQVu zZH)8y5jpCq>BY0NTbWeA)sKNOBkUICec^dF^%unjQ)jt@jSihr0^>81gtnOygavzA zmQoD_c6tbXxLvq}=XYCbK;*i<{V#c78S4?}PRPb>?R_~O^ITZ{s^O{AR;iM07B5sD zWbI$?o_<{ZgDd9#R=KNMv3_K(d`@7wtedZdaV9P zmLbb|YTUU+VxxZcD)@!K?hLCQERSHa?7&tZO=oayFPFHlSLPDcp>lHoSlpwfUGHOcYVRMH;Vg?`LQ1e(RVV_=9ejtH^XYel9QqkzYskwvq< zK#dubC7KnAaEyRGz+>_WtTq2Hqxjc=i8nLeWGdy^CjB}eHR|r{@134mSDe*xjxmXx z`rz0MG$>ZNrLB@gt-rXEegQ&H_7v{q*hOt_896zJVNyB_UAAI133CB^Ju>#avc6*? z=@{-YiN)#K{lHlny5jrMk)L_OR%eKH*z{JFB|wxuu%CY`StBh5t6 zQO3-xpGBLfgHbT$<4Nqd7kobq8`OQEBv+%=(O)B3dM5$b(#S4NHl2co6-NKZ>o<5b zji*1tFU;boo2ooDA9Lj6CN_q3iax1R1X2O7`< z97uGg{=YfzDQVq}@tFWQmE{LI>-XK+SXNVd1N@8n{XREUMWaUb4pL)#`0+*y$%nSI zV|$5p_)=S(@IP=oF_zRxa=KjM_v zbR{i*V+a%KlkQZ(gf!;GaG(h+796Krxac2GS5I2?6TZ|kKw7~56K4wI8%C{qC(}Es@&>#} z#AQc9ImTA{X%c2c`-MsZ21Q9$gy&p*-u%I5g4L~yF$`9;+Oy=&^aBmklT^+~I}`s=0bGsC55QOR*ER*3~d8J9t!%+d z`&Zp1T`#?WUrlOiEmCr5B26DAFz@Oy(Jf+qp~DeGu$(sS6L*Bvkixa4k^+kw6qB4e zHYmFgAxjBEQnH=(3X#RY--d#LIEbUcs)$7s(E#p-+lnB)qwLP^f$gsjnK zNbZ2k#8WWm2VgA`Va0cVc(T~z(KM;-ts1Q z+vFN*uNOvEhJ|j=@JBTI6AiW*s@n9&f*L;LamApa>t((prkqEnkGI2(Cem*1?6}}t z(o66t8aXkSj!ZcMJLG)!ec2GMusIi|P-WexEPg=Q@zjq@Ms$$)l>52f6ap> zk%=6M>E=UuPd@5G7gN*MY@&Z00nOvg8i)>n0&e+!=lbC!2QXai(6~~&3Hyb^etC~O zE#g_zOgF$YwWu#{=hNWtIxak88}2GskoZ5ORl602DK6uvQK#Cc&u*aL6QY`5PKBi~yjmH17qJ10L`*Yp>ZH1fRdx) zXM)e(asM>Yd#{Ca8>D@X=cPh457JWAX^50Uk034FI}j^ch%Ub-Ar8QQHAZ;&pWB$p zRTTf2$kblrt#e_}2#+)PRfm{!G_Fwlv>QeoA{lcj?tQ z(!GU`Q!zHJ;3j_I1@}Zlq~dUdx1ZYb;o-7VT)Ao9hRO};hr$T316Q-uT^Qjtf8m_XX#mp7_=p6LJ*9d6hFNBd0(A-7@PaMWO_hpRkPMawve z#zg!7#nxHIRq;jtdg$gL-5?@JBPAV5N-3R!bhmUIL`u55MY^nJFtvKv3g#ZG+@2n;C=&Tspa?pf>{z0^OP7&nhmaygqZ!-Q zhe0GFofTIqFx&$21(3nXkaL9Q;djfPQHMv3XRKAXq(v#smvaNDV7AhvpCOOy6|=_E zN(ThY7|VTn=s|;tK+8EvT zUY{8{#M?NPbZwSBl>W)R5T_c|u4AR)f>rdtt3B^rP#yxecE#+sS|9Q<#m1h~=W`?L zyNpmmz^3wqu6E7I5SCD>KD^BNZc0Tt={cCa0OsUO(%rV+g7K{|O|w=1!Ltz|TWsNL zeMitGfHDws7;hA4?szczq!k|%(;f4=703hAB?E(e+o>jV=6T#;0Hx&S;-6j$%=Wa8 z{#`G2Z#G9An8Ik-H1HwezV>L7ccl|EaF_*C7MJf^ZnjcPN*lH~LRcH~!K-097$rq% zj?K3bDF+0RL#N4X>f6;+-*FAF)TO#zgDV7hS8S%WELqOL2um_}l}9gRgeREc1ZJH+ zk6rTe7Dr#!cf7gjAbybRsEUPbNJQIJ^Y0-DW0c&3TttA>z9K0p_xHYpqjjJRqVWU$QS;RoOyJflfWETAXfT=^YP(-j$MX#K zyMcIi_Q%&gQf%DKgk)np)S|*m_({eHf6@mXJs}{PSM@9rVYE-P-XqSc{W))m8smlk?QSCI+ALX zwW-N!5Bg37yhQz8&uzGX`+al0GH6~^&SXfYHIIexM6%PL;weW8-8dD7e;h^bEASCR zSeK0CDAWof2ToO2!X8at-^yAa8@2ht)yyqNxpwr^MT+_FB+P-LWzVxP&2LkxiyZq; zk5?l9kYzK$|F1>U)1E)UmJJ5E+g6%Oq#L-1ESMV>qzi#50Gr+Ty+v)? zW^+Z@BXO5qd=Ff5B_i_y&A*%oVUyCvy^rdeNGp8^#A!B-yO=AtEq8~GqDq&X=vaUU z_)d)|4f;BJ2ZjYX>lPeB-1Z9c2Cwl#ZMVp{GC*uJY^ZU+bl;opU*C0GT<#v2nH^`@ z2KVx}`(>~AHrQY%MjWGC`G))$?{1g%lV)a_gpL@;M|R*29zkq7CW- za!Zci!51osEW)=nlL3*IGWq27xOWXZWnno0OR}r=Q<_FZW;DL3vSFcKSQfNGYDn@AQ%-(bW z*<-uv%(Kk}#i`}#Q9!%EW5jn7)RQd0(JOE|mUp2*Q*3LK8dkgYZE2zBpxA^Ryp0ui zS75-=qIS`FK0m@!0V(POw+eO)fb+i43-~M=CpZeni!#5tN5uk7b)(b%{IKGMA$`O> zz|#6hbLkN-6P`Tk0=&46jcfMmM>Bpj%spqA#2!!*;o>Y8?5nnrJ(Fr$tDfy?ZQGg^ z&t_@lZkS8!UD~>sYV_VtUWRwF$M**9JJCr_%<)GVF^t1?HP0?vfqRbuYxCH|zY!6I z8wCV8#_5{;13TIi$DnSZISMR4p5SD1Un^XGDME~g-LT{cEhT<9c#V!T za3nUe2#u%#)NR{6R4DTwCjib4OwM`>T!_bt#(Tv36X2(Y!p2v=_#(snmauAqItUE6 zQc$J%nniXbb#4>UdY$@X4qG2OHHuiig;?u47##YXBb6LQ7^>^OYm6<|uXGWwZDU?q zzlMHxy&jPQUcfnKQ1G&~o0p-01WnNdTyp?XkE2xzLh*4u(HTiH>kaG-fVlPP(ZdDk z@<9YB?K@v!pTm`EBtQ0uJgycNKy{&MPrwg21L(fTQPV%>)`ip3k7%RonqU11baEk? zGT);7*aTH9`0oEI{n?=u%I=WonVr;e=xZhK-2!pV%;@G6KoMXf`0REaYM=dZ&SceX zMP(K$1@<@x5u1I?)&t^MLn59Up3iR8X$c(twGt^TxtWAcDY+@7qnckto|pHUri>a0 zmq{P#{Gp9-W<|!Y!4q#DKtJxG?7iY#OI)t(uBj|A${LJaF(q=DR)G?hD^>WNNY^PU zCa9mv<-#7v5X_M}$(8}3V48o#7dJkl;J5u++=HX`lfC8HrGRY;5}`(08Wbt@a{+?c z4GP7$0vx!zdsllp;~9n}I|^_>C&7H$4s`NWgrJq;0xMP8w0sd@V*v@ZqoRVGmKzCd zK@y ziAJZDg{3OQ<1OA}Qx7JVLyoug;}Fz|ynUe%@b9JruijOErA-QkjkKCM>Fbu0d*<_Fu*lh?YpY)9HfOQ>_yW z?`M`AdmTc%-S58`iCti);m=5< zZ?ru7Rt=`vx(U`0T(% z22vT=z?b zu&*+;^CwVe&yfswSTFA))SmHs!#VHWY71td5%RXdzcJ2YEL(%`1~+pa_7J#3VTXy6 z$59`#h~f_Jgc%Q=VM&)?WOe^Wu4td*pS7vs+rY{XfE9;*HEfQFFNBIGLSs^P;0WC2E zq74y|=)f03$5-9VOL4m0nbDcti*drx8Z2)|DB1|o=x}38qaEMb?vq!<-2wrlJ+L4|Xf-?7jPPGee6|{{Z=j9d{^rr=?jLqcG6Nr{(t}0m< z1~40se7$KlzOlzma6uY4>wOhbpL=qRYj=+$jSKXr`TlXX0oSz9QV%gx6@`XTZN_R9 zDL7}?72dIX?@O4XpkU)UDRq4>4Mx+xli3FpfUMB@wq%r&;GHQ?Mu7ZD35RgzD#@V6 zj@7@muENb{0_Ai5OQlb?6=6%`Bc+#cSXNBd5d@p7j9$6@wKQH%UyJt&1lNI2_-b6F z63dn)({&4s^UP}*JElwoZBBsM(P0%4-GC|sJnu{n3PcpG?dNO#c+$KyXHv(*hHXB5 z_+x#Ngj_AC{3*0${JUS?dQU;A(xHJ&5XlAZCzJhHH12jf zA{M@gQSx>Eg$n~umdm~ptcJ*Kl~>_HKIAO`GY#k6PJTC>6(7ugCo51R^4l+gKkdz) zusVdGF-z$aQhn`s-?$J*=4haK>AidZi0lL3Ab=d^H zps#U)F=us-x9G6S{jed- z^zFW&`J;cc8&u{{MrYv5&xhWQ2;RsZUt%Ef$*zw}aFLsxAyBk39?DH1I=7Kb8D9>X z2h>q&qkKnVB2sbG;6xSc%#AA;y)s{#ZiBVtdr<9lHL@^nfiLy#ZON;~FsqWUZI?O4 z(YBf%=cWP-4TTe~TN@HdCqh&(pUwQO60o_9l0xczBt2kwH0)Mf;eBu^a*Gw;~Pi?9zk%vla` znEE)>wcVta$r!A>t#AMyf6S&uL2qzzUb=gscDy`7n9QOQQq%QXh;CPSpvMJoA{=q9 z7DHLhy0;Kxn!~7Hu2QM+$q>G61DYx5ffzq!Z&rmE&As0 z<-9GGHas%onU-KdOSZDp(2}szd0p$nP_URkUh~WJtd@M%k@0SEW zG-=@h@bzluV*FDOHXpO8DV*bu{3bh@ek9}ZoZj(r)>L2x>64LW3?tQ)u$#thYzHxO zoKhGrb+pQG<_&UEUWWUeZ_FQbYJF5Y#*wdq6gEXRfd!?kQCHNC)IXZ;T)C5<$}=MC z%*!(rzvR(9AxWP&zbN#DRu-dBOR6fhy^^gU59d3aSs#RmJVxFKEb&*K_A|X}M#rY^ z^(DPT?{@^NMv0(ZjFaw_!`;KpC~Msa&SA+fh|B!Hqcji&J={y%$SD9A2a8jg-jJ$9 z=DRi4KL2z4Fc+CD4~!89zc|H`>7@9AY%!$Zc9!>h(@bfvdy=Bk=+DLN;q0Tu zo3C>~v}Hy6BJuCvSckGG_44N$gvpB3p9)4JG)~ohX;7$XD@Xs42LDz+F_irZAGsAl zhpb7&zP@Ns-uMn4)uc7MX}HU~FOCy7f)I-kexq=ya@)B5gX17aWJAL)3u)*F9%9)+ z3`WiDeju#3ZTY6-EACvL2x$8<_`q^2T2WU04<-4&HrJa@iveU~`Z#ly)0RfiUAtq` zTKl9bm12f2ov5UT!oi~(#vA^5vpLdHJkLxgxq*|Waq9+HTIDRYc`O50+J?(!neUi> zLuN)p9@5mC8aZu>4TiY4dORqsfb42~k6bd4B%#kRD+1^C*kpd@6p8eBk3eBAm_2gp z^un7yZp26+?6qzD`Ms?lmB|CEGUcSfHpvdFyicyxOEG5m3o(6gi;&Pw1vHlnA>B7# z;+IbkS38j+Ju7U#aVwVS{O5J$!B!orD(aExP%H}Ja3XD~v02v|-}&%C*(CMZE7~Y9 z^2H!x6E0Kotxzl-S|ho>OnZg7)41`@Y#x!H{F02$jo>#oBFsLjoij>E+l`S|gK|02 z;`Rl7S%X|8>Ejy;<}>5k*wYl|q@PAZw_oPG+74S&|F*a!7TIlZSTOpMySm*SxWG(7 zHlON_E>c-#V3#Go=~3qY@&sm0$hg2K<@8XZw`bm~etA|PHPk(CfieOcH{HIdS{Hm! zH!x*U;juNBM{#J})ia%y+zZyh2<5vNDENwUo5&F8^)8RG1gB!vKY zSv#>&Nw;{33#9K>NdE&dptZS)TX!b!ggDMM$~f-6y^pPD^j#dA`^kwqccPY;GeHEm z_WeJv(srL|6mqJwcp-s-BmQKMpKRY*d$$iQv9N9@#tBx|oR6Jo%)w^o<~gUud$5-Y zGTi5kzhHOk+@1q$t)7#PZV!vSpD({TJ=_Y|^_rVD+-qT%i%*G%*>H2I&VQN`{xzWmW#H*5g{AHUow8w*7ej@7@2pD~j8*6PrgY z>nc~uh6Ukt5AxI!BLBV|>!@%j45PuPX;9~{W z<>P}{SsGY97IxuC5rFVrEVTNFc$~V>cNFc^e+du(_zH&7{1+;EoBhZ3ug6tNYO%Up z8KwJYbHLR~=4u;cEIUwO%PM5h8ica35*}ej@VAYvLX7-b)Vq%llQWV6u!_JlD?jUB zAWdescTeDH5jblLZ=NVMn)7!N_}XKc{*vYpad9ib(pWHeF3$1HXVo>n9P8i6@FoL& ze8W|Q3yx#pDjfMIOpeHu3%Du|e+Lw20z8!m|z z(+o?Oxi6GALFIDr=CDF90zVb17yA(wd*KPbXndfRdlY2m1ZH@q8>!3bP`p4J?V&06 zts$>7MKt-d&uz(BU&>gskB4(47n-%0L>H%_!5rgAe&p=;d(!lVw${9}!6*@v&#IT4 zS)cge?lXLzdaN3z;$LVNAortyYR2zEKxJ9epuib+_m6!GSVhi*oO^nJ>0pM|sCA&5 zJ61Ie;k1Kr!!{|ecX7h4cJ`<++?-`L=ctG!)Kpe*e*w>r$K0*iV!rqM0wj3(b25Hf z>N^B7(GR{u=w88-_aG&;*4A|3YH;CU9O++~`^~w#=iRNEGZiR#a#D+k_}tLg+AAt^ z_HmtBCck{>ESeGW{Ui26eemR(NPpkDHdM&sw%{4^9*9uBWUIc-cjMv8oJxu>E&5gz zSM(ff7~d(fpel8%jaRN-FC8oUA2$3OS-&fuG`5^>OW zP9bR4x+T&$qa#=XIP6wLIV-&8L;k$(Y}L@RG}UUv_75kteiLUJV*M>YL-nlKD>D`H zYa@v8y;H=7<{i}FW99|;W$z{jw`ZSK0B&<8e@Q%DEi3*rQ=v3d#RNTpbZeODG?`d7 z0+njNnz6Q!Xr0yzrmP~RI#2_BpfjXgRB-B4V`G_SY@S&gmT1Bc0pj1a-xAdzH>x1O z5yy^8CsdXu{XZ?cT8qr@?|hAxg+IC8{`=M}s7e|1ul9EX=gUXJAK_P3TIr3`PAZRB z$8HakHNSKE-9PvrK^n&<516dG#w)$5Eau-7g)u&Jd;@cm-Xh;hcJmvHAUh>ZRwCb~ z(-JbAHu2Ml67u#6gg@QscKklKS211WXBitE&1G14zyv*DER6@hz190s@V)Z6 zTrLUciSh2h0L^wYn)th26-@QFnITdtx-tGLU`fb{loZL1C6@0??1Wq;db`6Arv$=< zYj<4sSYW{KOJAi!HU2~M9?@6+&mGvIsw}vYVJ;`q|IH3g_&3Topw9IxyXFXvzP+Q_ zk?b0Ils~(~Rt*#gF{N~TYBFhbcu?u5V&ZguG4frOSRgmUB3;)sBFx*FV#J|O&HTfj zEO&0kVh74Nr|JQM1QWz}sSrHU?IXA~G?Fgz+__&JHwEBZ_qyx}X13!_g)0BYMe0tL z=TW6F{#{6#_IzP8uF)K4rgtPi#^_}$rEGbylH@+`Z29mjfqI+PdDwg?g!e|})H-<> zn7I+ujwvP|*&sGO*f#%6#xf)Mfx(bx#Efzp>%Np*7VjM~-b3l^yA;{=+v^$FKA$&{ zGFa1f3n8}da}i>`qFt?MQm+{n%FtBKiXKIJd(!| zkv4Qow-z}ner-`pG)VJMQWNJE&doBfTV^Qp?c4iFv(6>fqhujdF_LVm!=UB0G2}Z@ z$nLiOYZVNm)SZ&awa*f?oxx9tOpCnvErH-3OAEAM}_8x&99ept-BIt|+5D z)w%KKymYhRgw6U1yie8%P=ZF+2CrC5DD+ukJ~%s@b%+LKn}DOCr)n8q)Ad zQDt%UZuLT|qH%kr%c`75{4g)G2-Uq;RV;U1wmE(XN?x~@HQwqt1UUhn@E^M~@lRQI zO~2b(e4IjGtJ_?*%xhjRm5c7nocdXq6=L?Wb1a}l3l1;OMD_&so;fQ@mh4@%6JxsZ znJ$VGAqtdnH+D?Xa#AaO?vl&tFP=nGY*(BlZX3F7d${B1GvC_Frq70UpL}RDxK84| zjUaW?Jb@P6*4o+hSygXXXzxFRcWD2Wst-Y^vU!SyuPKQxt@YGHEmC@tVeT_R z@|OIW5Vz^)e6D#gtpGnbz}0m$8ZkX~;4N8eaiVFW{xkUT+>J>DeY68JvK6}Q`{e0Z zHxo`pTjrZh7t`89K*OGvy5IiDRqT_1o2e99=1;QpA`^8n^ zB({G}vX>*s`Nl)Jr!~-Uh!N}m@I!9zZniUqK*^#Z&!Q72r`-x~1yA)u=>2PWAvd0l zS!ATe7O%nW3?Caxx9b;GCv;>U_Y>BrNm5~?n?_%3n=eu+L2SYL>{8n{rRJZez^2kU z4zt<{!rv6ayNi9IljsrK#$CFqPF&eU(Ca!K>f9HG?4UQ4P+5E1jV74+Vt8Z*kY zGbl<;Qk$tRE(^7IZsfW1;|SUbQ$VGl;H55OHsqUH@5C6A&|kv4tD|N1U}+?RD^64J z9ky=U8s^-14a#M=Vdfy_qSiy?B+uNq8LvGE;yxQ|$~Y;vA4inOWqQ^z41W%Sz3yVL zK&>}eIl!9o^$zQ@_ZF;GCxH_UKyg{h!P`Zf7=-!K1x|i)&RY@BYrCpRC0XwC(&KM> zKF|D)ENg=i*H(IW_Cmp#Z~bs54@fi^d;N_VX}r$gWbkqWTjPV^uH4G|>2CR*ReMSh z%}Dvzj=^U!qS_ZXV@?oy;{M5y>)G7P(^yu9K{&q0;f{{D>NlV-KRJ1!qbbM)L z+DhNNflr3uuI?&=j-O;%!^|?u)IwWEb#}GVi9XFK8m!bB4|2$|rJ+{V9^%o>nSHDI zb?+T*H3*wvS8*13;OS(D;M*du+AA#L*FU}?${>3LXE{ivfTElkzKmrpCFC20xmyqe z`Myl$RsHPLPfh&beG7^{VO2xv9*5@L6fQa#f>x(!MTX-M#m;D`ekc&0CRk-i12~ew zAd~CpQ^*JIRfiZA>J+Eni4rocOI}yHj)#2P$uSDT4Cp%Y>o12*jFFA*H`#pNN>O}^ zO)`p>83ZvPlgF#$jx8uyp|OucuOK(>w_qaah9^T$m}IB5wG*EPdz^EgAp2tChs9$j z8cQ2WDf1qM!YT5(nocnjLH8!zD{nTjcXS2Dz?!vwo^7x|DKQK-V@8<`y^O&cX{`gi zG;A7;iHXMvL|#&SK;`J+a__DYDh2(>zZg|hpP(C|b%$s9^RqN}wr(f0muF2FhYI0_ z^_~8^W0k_G8}E%P)u026cyf&vkarjaJ41(bX1z=QzVjBmdDqQKUhzYS(tRh(q===C z>ugZKR=Jh4M<|N^fiYIEz??R?S1>J%)BB&EPjgDAHF!#L=9>vO#s~bCZmi!w&6;K; zwLU!@ZGFdJV}H0sj!B#(#(%@Og)kIVHs<|diL0=l*<4$nt3m1>Pn+2K333C++2KvG zMHjIaLBoHp*+}#NHlD4w67+oDl0AIQS-DzDloF1L%JF>Y{`tbGdk%l#^cjL{So_H| z2+jma+cjJj<+c&XEzjz$uz@jCbc8<$UoALpfpRz=DRO()LF8N(qx-%sjJ3&St70cG zwiHQ&u$an}4EgbU*6_2XVwDHnN?r3_D zY-zsqpB?~Nv`N!fi%{lA_NsP;ja`{3l}2pSrQs7?F*fr_-`v;CkWGYm2cHa^#y+BSUZs>d!%h{I&e2{P=bK2)?@!nKQS`2JtabiP*#24Yj}wJpyQ zB4U&CvS$-WDfDmB8(%|6I6BFlj>WdF*TW-J31X06^4kDp_EDldyB|29T%sR5yFT9z z`z-rBc@fb1ClgVMK;p@gwVJ zRyYWO+N&+_TgwhgfIo<*lBZA?%vE5SPD!k%AQGAL+c`AtrPox68~>}5BFQt15SRuV z8T=-`NQ6PN5VT#;2kjDr3ga|)^c6v5-e}!*$AnE#N$osV{?i*=<$;46eEs9L32z); zK9UW=r}uKR^VCC95Z#+f4%I7VsFDGN?ym)|s`17b@cGH^Of>zVq$?jHf6h4)PbSkl z7hG&&)LmgxB6HM-V%@L9#gl}hus zFDtgW22ibVpy}0E!DS$4l2>H$`GVA#$@<||aujUt3dIHKDAXB|PP^NJ-_Yls8frRCi@ zxTuiap8acm?p%2@P=E9LDViJ=I`Lt+Uy&bURk2o^oxGT>}?*BN&UYd}4pyLW$ew-)9 z7eMT1uaI+8?rj(Ti}I`yT8sE8X_Y}|P>xF;XnKP^8zFcqtv>bj=BF@#m}?6N#(SB8 zNq!Y<2_F>z!n*>f>s}jtwKlOXyg z`y-Ua;jK+5w{tMI@ZGsGC-c{;mgOLdmpveCX(&0DyBSQMG$Y5q`zwo5M%wGZ^>Gb$ z67(wEZVKB9KE==Wu!T7~8ReFQsT*kKK<;I(?bqPI7R#OA;}QS-NGS)?y@z^p@>Kf@ zd4ouSv$^MwiB>uC`@Ux(+2(BxIA)@!4G<&|=uW8Z3b-fUn6J9#^IACyePun$6Zg47 zBw@7UWP>xNrBkzpW*ETiGplZC{+b>JS{(Zj~d)S(xsj0w!BJK#b zz{TJ8qR4hq7mD{nA6HjBN94s3Xd|o9jHs7_<#|QrUk~NH7WM(R6~hU;WG$q-?QXKi zwDg=U;T5_@hA`T#PwjqBPY=saT?UBOZ|Uxlo5Xm6`;;!a-_5H1us-vkwDLTTY&Ti( zU2l9m<1z|TWZuC$N$_6F=p@?3yW|`1zc}fkYU<;wz-k`zf&Hx$@Lu1ixQpKVv!m55 zwuW|cA~4_~xQ}7LG}3zfr(yfh1J>#KBu=0O7_nC%9AgvXbTWuIW0UbL>=i}%m4Dk+ zTnOa;SNdyIyo%7aEoD#ti#Su5UL%^~?tAl_6tA|403@hUEQjLT=z(pG0CkHzN7B*$ zfRZ0o4PgDPS9N^Gvf~UyK4;PAcej*NI>D(2mv5jTFPa=6B7X-HOy`}HWozDu_d<>3 z9O8<>ARZBU`ZH^NwK$}8c~#IhvY)5&2+kAW-d;gWA~8)JQwv&hy2ID}Ep8HhY!Jd? z;$056j;ZaHbTK_A=W+ftjzT*-%UWY(@s_poI@3Y5Q&%q&ghwd&p^;+ z7dbee801tGF%-UDK~Uc%xt;h_wV@=N48GQeJkM99w#EloxsQB~Taw(mljQXFVX%Z} zo%gd97w>ff4e+M173^UQfqc0+_zvTLmgqP9;JlceApSmFtR`%dhB)&%XU1cCdH2Mh z=nMP2b)9a%l0MZxJ(ERHrS?49!DZ0r=}zw-^6m53iNQZ-*p+PuvK=ji@x`NA5JZrl zJyMH6ssHiwQ8PJLFUP8Kk7#%h&hmM#5XQ#6+j8yHGJLhj!>*!@xeD%N2gu!&-jBqw z?hLbcoD+I_A6*i_hmyQYf5s|&t)h`){M`J1`j>E`m*dcZuh#^Ew(jUEanM5W#rpWdRZyjwmdsYPI~ z&9)Rpo0=uk^BkMy>Dx!TyXu0u!fYPI3x~mkV8gODo| zXUf#9I$^aw2D1c$`r$U-w!MqTP41|pHzq? zs`K_wGX$N1FXKdJYelsDaH*wZG_?=?42BnONSclDUYSIehwE{V0*40sWuPSkyh&|}SH>iK2b`o{}Ok`cr zzDG#4NdyG64;luwbp30aRMMzUv2)JND|dWPf5cx=`ee!eEyv2(!JjhHQ@de z&VTx*s_i=lFF$Ng(PwV)wvTT3%E9p~X0E6XKwjMd28-Gmo|7lmE1F=&>jw;u3m1mE z#++A~5#IKmgIW|{RjN63(5!7F*67veAaN+u3%|T{{M`zgS zCxI))gL*ri*SPA;U$q?wiTR0H}aO z+MctbIQzsj(WqEBFC{pqslm`pbcm7rW5f2)-w(^W^j^#Zo(hlfDo;@6$wds(ldNQarmC< zm^ysXt^=!-LKHbehC8Tsl)}ppLY`>>uFfI1_T^I@r~;C5__=#sEvmpUCg-4;PFVRbmn!Ns=XxaBT6PT1($nmezT&4< z5)pU-w6C$fu9}5{9PTJ=1cSEwTE;}2{K%oqPKu$L9o_8}uudZP%Lnj~xUFHwA5oJe zq4USZ;~Ms*z5|xrp?u!m7b6XU>rV6gc<)m{Ey}mWPJeJ&Z?`A)_DDC+7ZI3@{kl$ub>{to zsW~t87^_k9^@yvsTOc-~Rhmtam+X8JDTovxB)*I~qrI|~#_3yMLzxU(LUuE01w>7r zlu8w`Ia^;x;juqH9Qib%8&wwjtYf`P#^PCMQ_YvIRymdyr=^&C-DcDJaA{Nfnm{bx zPD40qrPI7b-Ks074HMW{L3nVM6~26Vt^DGv?G6Pd*J%ua*mnm&=D^@Kg6TZN|njjs4>2Elx*t9_HH? zhX!??g=39s&ojmdzE@m!0kbx!z+vn1qshr@LKjZ&3bt*D*mtlGr&$(VRM8ZM!PYq_ z*mj6WPu(1+HiVegwh)cT&@(!oYOl(gz$uoGllj}tMb$75HvXkGegX&R#SP+~#df+s{j}vwzL(a68a{tKcQ3Mc(V!u8q{}r5p zV;BuF#QH>|h9=@^IU&!({chR8kxT5v2W7N95KaN!`P9e=7ugI&MW5*!0gnRC$M~*? zmg?#2X@aLwE)u}BjDUZl-OY25g$vQo)=f7}ck8~viy@~w?h8CRk-F78$E13@KtcCa zRR)&PM{d~uV-TE?$!;P?W3;>QMA@22s+by|s{!Rb!Ss<9K5iEou3$oK3b1FF{Q{*t zi9ut~kFjX9N;~%H_<_HOH%}sxgx^R!Di%7Lq(M`(EW;eBS_pGzo+PK5DCJ~oL2b!{8| zxC*OSxms{;7M#f^D3(tE?J}of%C}lg>#h}6`d7ie7K`8vhn+UkTpwJnDJ&DW$8;*0 zKeY6WBr1{sbnsl77#^4{bAalizizvhT@nV!g*_AJtrnNRW6l}hz#pUNu>gM-SPffF z`vJ`dE?j8Pb&i zulF(lWor;ueC;22G)fj{pjT$_Dtn%m{YS#6?CZ#+w`~fAF2_+MjcoLlZ+U3{fN7O( zUuRsZ;1AcmiMhE#$x}0%LAH2j;o%er4C*Z#-z=?mGzz z&t`;A5vVo8^G5zAJpHD?i9Cw(WAaMmWk;Sto__9(a@xBWuR#DF4=>Vg?D zn*}gdCrgHb+~iefpvp{9<>a-BM5N_r`i`l%{Le(lOj#KbEb75*=1oOxA5C>90wd_h z)L%LxyF)jADzWXZ9&v5G8*bX#P*!kW5!w21C>m?;4DjYEML;T&#g^gTK^?DUpEiHJ z_M+GCqkTRZiGT!1`h%7WQIk(fMCt?%lx{qimJs^tyRlK~& z$}1|7SB^9C*FRo)sdfYdCCefX8*ePH@alPmO43BjCRr|91DedSx z`ts6YYab18yXDeD?iE^eU9omvjZ}X%BZJ^2o-Ub^Low4CP+?ix7hKB{W%)uS``kPKP6rQl9+~GDU?w{lFqp0d!%kbS$yG{0;#ADLuo*1L&h z@?ko&=$BP*W;>+pXjWI`20KwT5R2Yu2HfIMj+TPs;>K|8aDiwp8R};YAuTtIYG~Zf zDLxP=K(MYPW1j|yBBf)Yc<>y3FDS~HbyeVu`XctwWq9Ie(u6g!kG4zW^`9_hKQQ;b z^%zEkUg95ZIh&I|M6)+61tsD6w-YT#930OFM86Zu zd@2o!(m&{C{c1VRGhhwK6&fI_gPOX~eQ?Ziy-6|1-C!$BwdX`Z?aXX}ZbIH=~A~ zmv&;3{#r60Uwv0@hjZ5L!LTNJ|7*16{d|~#VQmR=L+Ud!S^;Cnkvt;C=Q3G7zVe-c@xo#_A{jy;AVwNF?By_Spa%?)X;5ru)kAe&&ZUI z1WwhvF|jG-n+PdTP7f}HwfSj*>2O5AS^f1Ig6N;pMOq7P<$tBQpC$Lq4LAPTQzkP63$$_w~&!Cia;02(53fD8_bUytB=w$gDKm@FU)Pid$N>_`Afcu^cB z^dZe26PWS1DD~x%0?j|Au#UL_X)Nk7KooxkqA!Lo=9USivL2q~1h?+l9FJ~$o9{og zajviGM>@YWFrbIuhZ79}a32gu#xX3a^oP3XDI_L;IK6g6!LJx@1j?x!O#~t3ui!P1 zfnWtVju3!aP$Y@mS;OlB6&Qy=6Y}A?sP|66azMislBkYryT1~A#h=Mn))WYBtzdX6 zQXDww|0zu;SVE=;3~Rt%Ix!0P4ySbdO8=>x6c3M_`GIQBHrOocHt^rgLPTOzX`T}e ze`;(=7N=GeYpMjcq}?3(hd{UtxA=VL>&tl?A{1kV5?P7gkuS~Qu_9lKGBu)Jx}Wyt zaTQ7h!#jk>Ac@>Sj=~wZd%zi_KPUGUGItF^3N1F2frkiO|0)DgUJmiEuuH$WmhQ>s zuQq0%bLjsM3s4+$YrOTNN>c^?yA{n*F&=%w4NigSa1GH!Ue4IlH4Tw6>dNL3ufe2l z71ij%&fmGEgbq`YUScDj>)}1Ym*aMBS3Fs}mSwHK%?H7vl^9J`>!dheT=)3DdE4d^ z5Ya6PGpwrgqQ=5JcvJE6qoibjAM4G<-O(5k|BH07M>sz)1e_qbbbm$c*Z2n*fq|C+9y|J&%@#`)sZe9+~)UtgezA8Ii9G$PK2tSe);-Jbk(rk{47*#g%(ls)BWpd%j< z?dqcO*}3_}E1BV?(P6NvU|>!$SmJ&MfgAh#s6v_Vi%juq1}eDD%xF?NEUN@-CM;Z` zXh!_&KowL5Rhn!G2;l$b_mqPKaLfWXJv%WZgRVgXoshu~2%>58Q>iA%Gd;o$F+-Nl z`Vx(|js+(Q$RAR2Y}sNffYpjhc{7ai5)|OAoH*-SB|inK4c7YO@9*a#*Xa8(fDjs} z8?Zx#Qar^r8hU=4Y+0JsZJbZMM$=*4-7At7y80Jw6l1z;XO(#Owz)`(cW7CbJS{)e zPpf|}h@p*;5(s_qAWq-b3Pr>I_#)1PszmQDW`}aufu>eaipndN^78N3PMjP)7&MfB zrBbaZt8rsZw)zo*B9~S$T={NHm#2T83ca4vshgT%JVQ&_5xLxRPD2mS7o7z6RU5(y zZGXYTK>r{GDBg%WZ^N#85al6-hS(!!nY`d*s3kTd* zz1H=ZxoMj2Fz9vSEtM~VDA%`;>AYscr*5%3nepnBel(x9j9f#nFIBa?+&iM!LC0+= zyd^v8j`f*D?npR%BZ7|mHO$7IwoWM3F^5uhaYJ}>%Icvy*N$hK@DHept7h=u?Hy$N z@YtnY1>MEAJO30oB7tX%SJrIbjG~MZD6X(Nagq2NoLgz`$5Y?VfA^nj8m3M5 zjrI!~iYzW9s_R!G+vfbZ9w27jm1yjBV@L2|ltFoU?L}ZQ+!vxbtz+r2bYqNwMmL7|=OFtP&g?K^r%;9!=$chFu|%~P+DXWZ zNk&a9>irJj?m-)Ch2W|A@59L*dqbmPQ6o1LD$6SNMTN#gl^Z(7P1KASl#zY6dgd#G zvjXwAps%LNLLQZcoA=(d1cJo@_-FdXtw=sbz*e@59!FQBmSSkSl2n<6x=0i+`Cl}hWmpy8_qXTJ(%s!54T7{Z(xC`QNrQxRbCB-tE&=J32I+3;lx~DW z*E8SWbN%1(=A7$XGtAz5*81G{Vu_GYJvW7H4AkBP-~uIHRnZ#GPCyqdSZ z&y4j0OyId)LuJxY6t#$2rlEzr>75}?)GsDO*57-APML`(i!;auo)N~5ob=lBfO(qz zPqKo*#BH`B@Ye~l3WRtjWzk|Ij@VsXDN zU?-dLKR?USInDJaRzYw9(u2VLhhuxM>Ev^~OWqkZ9*+;-BV7sXHr)D?#{ zoY)MotYgOO8!7kKCFD5%&xPSUCQ}Se>+x;Bc7j)-jLn=bNTuL$Y?+9G@>tw6R=E5Q zB5F=5gg!q|b!bDKzLP7Jw%A9)IABVa`LgVYWwT_CxGC@)A~_Lztx>bV-#iyi5x1No z$MmtOm5gg-l z9SDGpl28B6a_gR=B#enRQ^Z|F&}E-1Id>)U#2+D+wPm`YfCgJA&znBmU`9Vw;+}W- zBqmli;rMF!$sY3eq|WzNj(r@`T%M-cMcyrM4alg3GD9R@>)V_Wy!D)foJ;m%NI-ej5Q1Y} zB*H1M^Cl_pYMz3Nwc`TF!0JXYWh0M=IS1GajgT$85E*RSz{!+uMfil}j{=yA6%vL` z(xr%aP`oqU&Zz4AHlSD^7E%k}#Tdt@VQq??kK+AvA|F(mm35^0-X9K;(5jK+`aHdae$d+iUQyH@n$y2K;syz?q04dQ-oQ zHM|gwUa!Jn_-ZqxQD~1oE@ZosdHOfr;Jaunu}2Ai>#cC8;T>ltE>(KNXt~|m!z!GW!^twbft+JiK~lAv;S*6 zF_7(tmzLtCH8YnEyGYo`Tje@jUz*8jR zpP79gmbjPMJmQ__f@#o917M5EV;oA7u+NGV=5p7GVEhOXe^3|SReiD&Ulea8i)kzr z=jPkXbgDewI`Bk{ka@F!7s=n&mxprL%~L#M!n+?6Hd@&<9e(Qh)ox(~7U zqLEu=q|6vDi|}>0XkJzn8Wzs0@5m?gZ@q(+;2q^XbSRjfx-%x>bOSIQmh$fhhVTVv zIE#mgaI5PJpgs}4v;orS6T)ZSQ@qP1c-=h)lE^Sbuv^&gz9jT?h1=)PR61o!wLqmZ zIl=XWKC~1@t*IJLNtd34tk5{|*{l0O5RuVs1zxam7W2!j^67>qaL|i)sYw6g6f$Is z@Hrm?Bh1x~qhWO3fXs~b7~;Owi_2glDy?uADP(m2UFF&vh9kl~n8j|js!5L#F&3u0>SWRDnA5{H4 zl%C7txodP6HZsH%x>RrG%9L{Ih}t+qK$H(! zKEWHM;u`i%2<|H#Ft)%rr@9z!5^Obm#i_!KBSKD0J31O*^YM59BNdNNwm6?`ka{5s zOHk;Xn14j#igD2_b3frk8M)+Cq*QwCd!L<_o ze8N`XD@VUq4NoU_dr`}$9g^S1QON5Ovuhz&rwbfjzwR&1;SMKB__%(sz;_>^5O#m( za@Zq?<9RqJtlGAS5!8tB|6%lNw9Yh~x#K@tpMrsi*{M}zs#jI~K?_0_=kF!Mt(KB# z@o4IiZQM`SpU@Yp%8tY88w8ISqxLNbF&xeTX#s8!JAdAj(RW_m6~8FhLbe^nsWJa+ zzhw1%oZd50{EwrpN~ZvTl1+DwB7I7GQ(VVIow*?)} zw+vCoGYd}9d;@!UJnRh;UTjD=-A~sapHJ@}(I(iqw!`DJi;Oazg9s|>>|qhLeW7Yq z*I*#W5=V^1@+Cz=?Nl1>yqf#C@G%#S#S2|O(ScMd>h;O_(jt*{*!e{sOSbs%TqKv5 z%oBcG^1+V`gBw(MWQneG;P%lF4)Rr^6?{jK&X;o9Hz=r9z~lB4&XwQ`w&Xba{_^<1 zWQ)b6B`EqlVeltZ@3U7p&bz6ec>ouk$BKs*N;K$A-1DOFmMlP?Q#-G`Nz$2!a>}6# zLtA;2zLPm1;J3vfvDZ8LkdZGKp*1PTbeL$45Vi9H$7k=SC2mX1L8G-}q6dT=4Z4=T zT|IgI9cR=9LH?La>?c&YM2&_T?o{G>X2ff8m-n6{BI`+SY2409oqyQH)pI>WkS{*W zEB2;FSM*ms{_qTnV}BiBQ7fXLmTy8764R5Q6@n3sWW4qUgwaTlQzFB*42F$Xb@xbJnfs*DA;DcsR11TRPR35;qD%hA%~ zPkux4ek^b}$j;ZK02bCV$gZ>_O(sI$ZQl!njT>-1esT<;7*kRwav6JInk~#q`GH zE^c^@F6E4A=6Re^%g+9d`G?<$R1p?8b;RK4!R~bCHKwlF%j6+>%!K*PmD{7P`l zo7y_jdc=)5*Q|H>d9D@|PLgkps6(@Jp#%~`XU%ZFFe0MD3GqVJT`lM8fw_=(zk7Po zEGXS)ppgFBS(kX+sHp6Um}ZCwG1it{=a=|NnXW#rv;>cqb(Hgm_e)MpX$=!+5OFVQ z=ON1p-IHmHWyh_wm>qm@`0A8BWckCpxty`M1|!Sc%=Wqwokj886C#Hh@i<@(ty3p` z@o@VwK;hc0OC0FG|AlXrZGN70DwA1xF%K7W(eb1q8yDNXet*<E|b5Z^)pL zO8F4S=VHz+ofpS%1>dr%Y@@}ZY_al+o*qe`dbH1@Nmo~dj{XJy<0C;%5H`hcnWWmv zz`SrF_LB>#nYagY=`a8O8sgM`m7-A{q;Q6&1TxVFiT+5eyv4dS5}U0UH#bO_ty;qE;ytiQQyyp>Hvx&Io-?+~r@oT7{VnBtJOcYkUK<|iQnW@mlu1Z@l zY%_I&IfCT|xo75yGA@y)C$kxyLWLV~D-b6zp48Z{W`B{D;Hy zV_loKAE95SuN;L@W(sM_ z9Jy0|YOmd`01kG$m;#D_y>yGU~}>!}jIPIk+h*vZ|_w zcQ-rj!xt>|rAK(|=hlWUgE}c+wsU>5uZh&Tyk9ihHUn-%QX`)!{!o0Fg5KS_xE}~P zn+-LR@@zJHFEBvyWdF>>C|2K zxMSgSTzd=~y=Q8=d|Gmsc_^+Av<%0v+0(kSQ&HWqnh&L{lYH@}8p_`5|2eH7<3)It z@LX>;CB~M6x<3`#97`*tPC>yjG&4KTj+y#-C_$GhN zby}8fJ2;Y<(_FHNrxN4Uq48mT@rvk(DB)Fwl_|z-iUo*smaE=~WQFgi75l(cD*DDp z;!ZSiV$7C4o+R8j5(DU<7n-bKG4;ytRiTn%Zw}kg(WK~|P@%pAnOP;&^<>EQAy^_w zIlzSRtl-!wenH-l|LOKXA#58)VWqYLI(O8-Ji3{xO{=E66vUqY7USWc#L#ZHp?pqb@b!A-_gC|B2ZGo-MRvg5dbCFX9Z ziHbMEGAcu)U(Tq%c%G}gz{H01!!F#j0j5=-R)yND$-g<-9Q0bKzG@QuJQ|-yg0m#A zmELp;q|0k(*8N7N)#kp6SvS?Ay^oAWIKdY0echxh4KKNOf z&iS|SgiNYzSSlrp5t^_6oaSmTPW?97wNaAo7rJD99~GB^G*oA$9!RU4Gz&}qXyRVa zPFmNvPHWwJkfwzEES^uAXDPO*E;%qtdhpu55M8@QCB|rsm{&Q)k;vZ2L(Dg>Qq@`L6Li_v@Ky{Kqn-oQ%m`qY?>)x$%` za3%{G;G0EX<>@G%qDtCGHo<83-=ikQ2`0jPTN~T9R4dufe(hx8@S9iMXlB}>7U{^h z`gNz$JWM6~*o_F&I1Qm`4T^nezf>iyV}JZqlq+euoXlP3zIDc9PO>VwE8cRxwO>0v z^#Mupd}QAWd78BAx>8&#c*$l!@^AIwR+Z z-i7SXeas+4)Wx?{&z152|9@=c$oi*8-F-wnXTB7cYZOsL(*1DKA-i! zJ1|CGXXYhY$l=#+`rz!i5Nd4F2x7R0LxCl~>q8Fb@_d3CBl@2nqDh94#y(rf8;-3_ z%%w)1IQvwN-`w0J`A5fI^}80lt+ySL!1*IbX)AU2x?X?KH~5-hsWQ!^(KOfOuEyg{ zBX~>l$u`KAuO}7yPXc4~Oy0X2uq~}jY7ryYG_58b`ajoW;vhrYHgmiP@f8Q|5 zT?cSky1Mk3)9_4F3mxZjlj$kA9H}h@N0KaQTei-n`eFGVhd!ZiMoqq<;C`7)&1;>B z_vd-84KCsov6#ym|ODjh&^?xia(&y0s8lO-5_UJN|dXOMbzbSQAMHA2HNoCAiofmH2&DTofU{>*Uy_9fYx;1)D zR&Ba8#!>l{+^JI5sRgs$)?}CeGR>V^AMv;7HNgM3+AJr0 zE0eQdPI$@6R-d>=_zbVfW!>t`S1Dv$_aa*n zE&n;P-4j<;AyXa~Y6&m*qO?n_tbujYQCHPE42t^ABpfDqItOvZd6M@~aCNo$-|EUc zfPTPMugtqA4ma@ihHrWD9hm{iH%B6&v`JSTJk1M5Y68gMsGzZS6PM}J0l(kq{nxkO z`+LzIkNl?2R^}dWJ)H*7XR^RMP|x`Y`LZ}#Op(JTG<5 zkVpI@?{t6p7VYBMC?TrizR(e`&zO0AMq|NDYW7#63*~*WpvKG0Sl2U61Ej-q6Ej*? z=jW^a54q%r6}<5YD*T=OpL>JDls;TomZ+fpa=Vhr&ocSAlv+Er{MP(QMuweq1LH+t z`N%NnPvD(fEc&hSRNVIx3jd2~3Q6_7yZ+repX_rO%6;^Da4zRu zsl!Kajzp<9KDdIrF7VZ62H}`BO;$0Q)Q~2sv3I*}v{Swi>%<+O=;)qtE>~I3VYr4D z(Jof(QQ6lH9Wp$&g%-T0kYP{eC#mJ2N$&rieF`q~Er823zQBVF;S%gfyKP1CMrW9( zThU^dP%|S2jctdiN3E1!f`FV07?(`Q@H{Li|8TT48tYbQKhxk_&T#tQ`Y-&BF6 zrN*SF6DcGl9LCbKXyinP8{Qq|op1(ehdMn_JHHABc@J8g5B?f>|6>q1ZQ5!A0YFg& zkKH@wucPNi#wa<#Q6#dwdM{vNcq3ZyFNz!J17#L<@3=o?LwpP38P56Dj3u<|1)%ul-9ya$_>w~tn9Q(1q?CJi>N%3_}pq^dx z&ikDv4@V-#BbrNXrrBlx>kHfVG?I2q@ka*`?l@|;TW$F;S>}m2HxH(%H&le5_}sp{ z;3>X~Y48Ejnh*2O=TBI6`C&}c>~|m!vkH2l&yvB+)jn`H*aEeIX2 zg4e0wvLPN`ZygMN9)gZzg_qOz|H}dx{F;8x*1YM5;g&V{nn28W1*dV`+i)zQ_4@Fq z=c8qz)v}NjGnu8=`vxO$lN!aGePM_dx>oDNw8FE>dGCS7-L8&aF=V0(`)s3VinlEu zI4XJe6%FqtV)nelQA^w7{pv%6^%>QKPN+jT}~qhvVYj%PBELtCqApM zn!U}rbEXlJNSs6d{7gxTmCEymz=&VIe>4o8df^*;fq2NVSdlZ&S+@Ag?G~2XY@A%P z81j{RRR?RWX+87mmb(L;lsdwaA>PS?(@Wi>u#C^n9rqWiQL^~%b#D0v_2g|)c7o7h z8rA~?Ym+a(cb?px>N`IX(%sXJblW_R#dHzP{rr;6q^u%*-l&RJ_XM zZ#!4+cg;GG(`f~jE}Z!(hHzgbciK&adQ-$7BKOxfeg~}jBU6@mN@gkc-|T*MlKau| zaIGgmpo4Np1su$%in{>Q;IsoaJOcC@QCL}hd_OE{RP{r&^+ceZ>I#rO45-FvhhNX$Mv+l@LI!dZi{1%2UsT z_2}JWugK2xS>|kNyr1)Ey@L~uIGCnxt51USnJ1$^+I#WQ>zUkp>tZv6>gR$mXvf zHz0Cc-LsMxLjJd(6O39sO5S|RBE+%J`E^;SPOMR-tTAByo%AZ->x`s>HaG23kv5%x zxK~5SV}nEZCiMCPtmw%Bf|Rv|;ykwGLRm_u*?cpNm5I!bj6qsB^*VpxV3T2rj*;lkP~XxUwC}(Pt02}rs6&y_8^;{LjAX}!UPq^vdWg9Abx#! zB&#&C8(j{x08paO4*pUf!zq_zB3}qH2T;}$$BB@~#p+V4W< zQW<)!;B1#a!hb6GGvZqHinqQ}t~WKChmPL?q`;a%(VB+u{SO=%EDPc7$`lqaiXAUT|fP!{0|~HJ4)8p!Fd@4rQNNkEsDRVfBjuu18Ik7 ztpTxzAvVG>R zKH0E;=w;?uy2u0pXFJeQKi_QNd$&VMV@6T9H22wQtb_y8kin&XYe-JL@V~hgqEE1y zO1T)yzJnRT_uoJ&#~L+#kltofHL-+cfXL8u3ZvO7RF+G4$Y4zD=&Rl0PO{5?$lxg( zO9=>f$+z3VJFrB^)|=#%bA-5H-+AxnA)7@T9twirl)Y>ea1|8nB!?rV!)sH428c@W z9mg1-R<@ow#)v<=2Zx5p$;UgVi*K*n`?BvZ9^;fVMdUFWZWL zrkVdmL$-H>PjUuV!H1cwD#DVevU*a&{Th5u9jk_YFgn^#gNK;zYaNjSAaw zioAR$bG*bBaJK9Xa2gd0Ip1)!V~iWn*g6it$4Lk=rARbJrx4OQK=a8Bk=-^K2msRu z`e~QoIq4@)L;?R)Z$i@_86un=Ezv>&Qt2tm8TfU-o2=FkForgatXS3U@T)FPLK#y| zDG0UG&?Tfc?9nBwv}`=7T{`8M{r*&FQ+sA!dTgkC6r2_l_F6OGaZ(DabS;3XvhCvi zpLgd>o^T`Hu`Md`)=&y{@_rQTSf8t4C zFtFaT?MvYMj+45saAk`3$NaHst@;9%q5bPwTbg;3G0M`lE@Rej^>owDf%=?FSt}NF zaCEa|*Y;xO5Fk?2Mp1E=PJ)4#Z%*3tJ z{4YVz$R813$v9QPDw7FrbrJ2dz+FBl{~WL*W>3`35%a-+9Y?s}c~tRXqd47@Rp9!Q z$x)lzf-y3`7TpT_G0c&z0DZ37RPBit%bz|XJo zpQ>Ee5hxWA1PY76=hsr8K-wOH#yKLqhnj^IH%OifHyMg!)EV9{s5IAlN2q5RCp4j{ zD!QXW;vT;It(f8uiW^B?gx5`$+p5^Z>6XgA+xPF}yCGkY03H<`jNA(N4J-^I19#&O zF#HA0Jp}5uhwN6fj=jT<%eLpGBfBl-H?Gp3*b$LC4IPIVtmRAmw%5s?Eu`F()=g*& zI3Mm#z0O)jI9inoKI_>wBwfo0{nV~97!HXX6WRRrt~lp(7e54={+==t4JnLIkFt7! z6!Xw2R?jzR#|86$X^Jx-$`PpFB)Ud@X4H+ui-pAV1Ycc(u+WhAoKpmQN9wZm2)q8x z>8i{6Cr**Tf5nY3=QKL6F}FlAC0ZU|*pyGgzDOLQhV3zTZ2%_p$K=M1xUZW}QHB4G zH$rSP@a%xu;(GEkdLuuABOQ?K;&EEA{k2*|Z|Wfc3K&?~ zBSz)0XQK|zSC%4YZB7l+xfy~n9=fUFvY5cD$;dayWGc)#+{NI5-SFKT&jH{!NXWDE zxV8x2<^~W{Z{5P7#KG@(+^l)c&t|uuccU%2RXtrhDWdsRXLE|ZbnAPqHgqf6hhd87 zU+HQMPc?G@_3gb@X7;h-*BmZ{pf@B!vUJYJS;D!&O|9hXv5wd=U%A}D@Yq;bZn-(PYuhoqD3|HgISt&yX08ldni zKOZ8X6-HycS_30x;i*p)Xf!b zSY%$HoyH$+7l9c;Engu2EkTOCbQ__iNfdVgHymeTpY)4@$;W=5BqZZM&;tYd!tuu< zu`$wH5CvVy*=C;cDf2gH_{9G5tw&<%D3{%YF}oa~NE90;wr72z4g^pUUSW6VVYXFE zJD8jY)V>AZRPl{IAz(vpG`pAw!x%H=@w-{mjJfiO%RzO-M*?#Vaa=h-eTn&PKawDL zwl^U4Z`Q!?!v8z93?I4xa@VWi=3Eub`QkurG8jwaIVoWy6aaj3&P!$RPhP(e{-7-Xmg}IZI57Ez|^>e^8#ZRTM&yTPzRl73VMn@t8 zhdfr>7szMaA-du7a^{r*N`y{rR@(1B@g)R8| zKE%WbRt8Yp+&bOnz&STMX4p2Sk#;^xA;b?tpdr`CTi|4lL}@3DmKW75>}%`|nL^Tl z96tv^u5*z>&9F~!*_T)nxDF`bT+Q<}T8e?tpXEutVnq zo*%N-06RHXb%0ViK|yOEFkD7|uT^LWFijG_z57>81u6vWio1+KR(`x35qlv08?}#G z*0%_=&KRLX<|vL6u=~O9B@ILG5d-h^z8h4ztNU)xFgIl80;?smV}T9c2`U9#fHPk5 zj09e=73gIYI~fP~ak@TZP`CLT^rRKZE@ToNku4f|)9RAb)3x}vnrZ>w&zIxNXH711 zdfF0;1;g{uudqXKu}?XFokl8lsrmB*i)utajlJLx>4ys}&p1(EtuCfCJW4>I4be}d zcu!m~{l5u3!RxzG4dfYbf{cM} zycxo1O`|w3H8UH426tLKW_@UHiXZt(762^Qr9?bmBooK1{_V88MAOb>BjK6S&IeQ{LyU$A_ zam&is@O?S$^t1n`^~=dg(KH0lJWJSRE`XicFp@$x1wWZ27(5$m=F7ri%WR(K-f|&9 z1e~$lV-);n`dut-&#@HLu9TsP3UOwWtZT&7gUrYvewfd|$~bwfcTS-zN9lJdE|t*In93 z+XwCCgwZH0(HJJ@nH)HEL9OhW(&?eBV=zD7mSXxtNz>UB1=?vKg`GhtEC8vBjQEWO zR`ux67YQ^LZ=g-)ixLybglzr9AukpBmNfR}E;mJiH?ACuEmat86{i^r$SW5JiR_m! zcas!}ki^uyu(z$81^T{f0>uUT1oB;+2g0S%c`*=pm1OzT7pwQl#e#^Ll@QM^WN8IR zuk<|evXUkdra&*&IJ}4pSRM#BF)Q8O&&6^&Wm7+<6rG#3M{?oF~;-rXjESM?4*j!s_osP{&BjPr$KRp$H7)TF5ZaZAGwm&kom7G^Y^)CvdQ*Jqkf2FJ8b1d0e9uYwf%C9aU!g8}!h1bVYTM;)*thsYe60wwR4-o!>U z_OhZc%;++Lu~+vYJ- z^kwGw?pjq?&n&Z&BiO? z8s(QlQ?*KB&m82`kct3ipp>+qyC`SRZy&x9XVH~ z@KrV6*99t`fv>%(F6w*ITF?f^AcX!ka-2B?{ZwHukS5)d_k8|&6$!oo`hA(!~Vd?fnn$1Wt(1c`gOD-h-cuvWP0#=`hAJmg=hEES3d*-8cRxU%;-PoGrnWGki^?G6lI1dJNTSAy1a-#V-tM${#Vnw3~C z+Rq}d&70uKFM@Z7UQnvmIunu*J$iIUca@N zf8A4MQYgv~;`NT<7mDqq63YoRQg+GH;qZJ73Ob6lt{U+dSoit%mhjaV2Sz?%7~5!S zO25IEA07xIEc_GN#s-L-E^O0tZs9Ld>fz<4Si0&A&+Rss3C1E*I^-^)kW)LeW0vNy zaGhgyf^Q_JX+lR@2QS&e+sR1}FF=_FYHd&@?)i=rU%9*Kl_G_|yKt z=lnnsLES=0h!fPY|BKk&P1Ja!!G0j#ft=T+m$7YFu1gX#MTlZ}WP5{`zQ$3CLT~cE zFl?I(uVLB@_&wbWJvE7bD_amDy)me(l?}&8!SF)o@}32QBqph7F7^KN3o8piE%2KB zbwjNT5UT_kr`l-40Y3HCl_OFkelo!@o988|C^1BE$E9f3yFHakv&jIAMABM-^T*44 zcu7Y&BT7?J070a?PEcs@5bDt-KlvzLfP`ob7@^Q&W_kYC z)RyeWI6>R|%jnYPnfRwLAs#7gx>V-9rl?=(q67_&&Yd#tH|Ygzd;o43X~MbF;K6D; zQj4iu7Gx2z69@iiIEX$YY}uq{F_W9%Y(89!RB0W=wOpxwrkzEhckzn+?X`=;W1+bE zNjFRjvgU_R5k9TF$n-v@CixXpYV{8!aQ2?N)ImaWUgeRuLXs-|S$VsPRtPe?AQ$w@ z9zD;-SMbF60jea5GaML7+92OKWU&>RS3r2=sW4<5+x#os8yt1PvcK!7oi8Iz?DukV z6WBPKgijWyd$^d-uS5E}RcM$0RB-G46pVnBd)2Zas=;siQ96~Yb~Hu|$SlkVP0g>j z72l6bJmgBtDdPIIY^SHcoCMX_%g=z^LxEIv?gCNs>)c+8fRp<)A{15+9A$5qK zUP-J!IimQrzS;3~s>d#V`;OKXz84BFpWl6=YhbDxO;FI%Sa{Cu*oX7^R60R3?YKs| zp`hLpK|YmE1j`6gZbY6NAOmm9P9VCt3mW__Q3K=z~4E?AYHa44%HZ#H%lZ&nMMA*Ftg;guCxz zs35bg8-HCS%RGTtPX%;3K3alEZ-PH^?~pOw4hQ|rD}yi&P$O5|=MX2&as2{Iv&Y{&CkzNC^F$XhVFc zPHS`;-8UcM1wR2BFA6#C7T0Qu-_^&7IA3miVop;{V$_3lU`9q<)Y9-=ZOrtN57JnV z$XJR0)Fj5-1rad>a~=MJzMR^>8#Wa^5_N6Tquk z8-mr%zLnAsbu)F(kEH=`)$tv~71)AApi^t@H$)OVpY}SzMhDw|oHX=>euNj0^D@z@+69R;(}ChiKWh{p36c=lVzAuVY?uDmGz+jEHzJ?)StCt`WjUn#2vw8N;Ach4nh!M`>< zc&PScNde+@qgZ6bC_AQA!gO`^ z*FYcf!)TJ=pze<(sLE3PjSRV*e~2I_KUIFka{T?iu*~2i4dKj1 zpt;bLaa~eB`;BWKCyyJ4f~kJn@cyHhY!>zugfibB`d&m5q>)tmm1!yerNcQN`=Fzj zs^X7IaG!#m=w|KLD*8G^72=Qu2>CyGNClLG7P=zdFLV$hT=Qvwf8LTM+biIA`5blTQRSk18`hmm?dI=(jff?R?n{7>7&O#%J~DJ*S=}fvq+C|n$78y_OW{_0Q=eYD%^WK z9Uzd_;-Rs}yu0cEsfi*@{m6ky<1RHAQO#={80@~(!;hzgXHgW-K(39;4T>8`RE%~b_jjg&PX@ytQbOOGH?D7@_ZbvKIacV z+MqKU&`7A?*nq9v_ljrl*BXn_?)I6j@5wpjQ6{kgAL!5Rd;_ z5r9pd>2p8=#yyV0gI>)!L#Dt-=~+M1Px_Xu8>NCf>FZd(Qg&y&V>5a@A~Z}`n;PTo zrln=F%$a#p!4!eE3-P&rn@Zrkim7o^bMA~EHZDT&Ed7LM@28>8|LtjYLDSCZGMd5n@lj&S66|5bk3`57V(hbD@4Hjt-KB#2Jrt8UjwkKQUv zENSzIcicpr9VFC*;ck@15C2SgHnL;J#$RlSKh$Mv4n_=GRe;b8gVqJ@X4Rf_XPTlZ^pq#|rW#Xd#9xa&Z%i`<#f5s7*oEWYsDCW|8gMjIS* z(+{pgHinQZAB4oDIntp(U<_IsgHTV-aB`_#i#_(;LZQ6?22QoqdCSn0clzsPGT7t# zQ(4Gohi9m)$0d%LM&|6$=GP5(wQ&g;^5n6&bk~NDd-TibWgyj}SEb(K$4UVR_SS1l z1uGE?84Dsdfi}`^o|yabf2sA(To8-eA}G7-Md|Yn6rR_C!pD zEM<^PT?LahmrOYr5@hpgg8W-=+z`XsHKr}#CCGd3f6$no^ZoK7rcoR4S^K3J{d9%b zmtiyBT;GNW$kQ)%9zYxCuq2{HyGo^U;(d`M(l~lc-!V>2NIUt6YDvLv;cru?(QXOE zMvgvoQI6ACtt%8JhK5`aky|>;P-b$^2kcP((RU5wQI&a6pi2HOYlx>-y$n&ZFmT^Q z)CeI>s>X*%4D&Y~O`GNbeZr3U?N#Lre*6T;1Cug(Bi;i9EweFj$?7Aa{XeQhZzqJt z0y-+^wF_>GtS4n3ehU1GMRe^-ZNTX=rTM@HCuBX^;Se&zQ9TIxH5v)yP7^nx5&9$l z`*lh==96s+>#s1T^aURV7JYmS#CGCWc(fAaE)LSdO@AoVoUZt_N5<~TY@Ctc<#GU_ zL-x>TbfT&p`85Gtem(8{koKMMq;=mHWt-gc^9*Kc%2UvoO3RWt<|3jI#r#=?W-00t z=sGFl2$x60=@J39*HMI~P&D2VFB=xFotvp&fBsVoN|NRabCZahpOmKG$M@?iLf64W zQhq1(W`IcRQ8-G*(;+uDzdF`B{@Gq6L&_Qo$O5!N}Kd z)e3B2|Iz@Bd?xAd4WR~yb9PPtkfQGMU}3wuX+ZAzt?z&$>Yc-Z1?m7N^JhBenutX1 zTjE#ORAMG7W(~599MANQ$f*PJb+XpPkj&3N+dwC(6<-oFJ73SaW|_J646yXyfY_!5 zv7c4}hL%0Qk>=!|Xssk^bqSv!C9hi+Xf@{DfBeYaFwCbT)_o6f1p+_>3JDgsSXcPB z+^7kx$q0UvR0!$hlfc2vM;$V6RhY0J6wbxC?YBr+2eq3=tXx>Pa;=}7$2{g@ru&&| z9s!FvC3)~4Z9`?c?9ViC#CaI?a7uWHbnh`r4w)W?^y6J^qyLGh8|SY`^MamgbW!ec5@zO&o=y@ zK+6GK^Rj)$$+n~mg!mW_hmZCgpatT`qVRJl3%HFqkl62O!BJ)jw7c z_4#WC+1+&Dlr|s|f8N6xxFw-bQxEk6#65a42R2()nM$|Nh>iI`EYlOIAUgpxDkat} z;C3?X9F0iZ>2PV@=UCLl(dwZbcM3sTu86vQRffo*P@NOL(3H)AmE|p@ z)A_Mj^{za|!|+H5$~UelZSr#C3RmOKDZEzyXQ^H9Trd9>C(nfQnU8w*MK-(hQU-B@ z3~qSw3}L4&uN$AD7Ox~C)r`EnJ1Qya7MltiJ9P!8kGXB8jN~Fq+h|9%@ecSI$5eP# z5jcA?YdRNQ2|rKtbfvFJ4_dcJS94!BpUU>bG|iZ$BFVo;6-N#zdj>MSiW(77|A-Z# z{-93lCyn%$_&XO44Ilh_XT%^g@mJ=-ArlY+=|HaVLXcj44EyZ?%6&f|aW6pe4n0FP zjIh`1vHGIaLJ)_1|v!QZUeL*SLZZaHNW+lKO*}46Z65j`o~$iD-7U< zzj8>=8XS2@^cJbva_vn!7mp-uiM<)X3V>Pj4C3V73|DEY8MI?OF z_Fi!){w0NN9*H{PoGd)&Y~ntWk5J#E06Cwcq%`@O zkK~IFy_ycbyF`2CG|JMq;}}03gI`B@9To73SewH#Td$Ip2DjgR5^f`7z0=7UD!mJ^&G++2s|Q%G6ejXyrK7eNYZuCK%`W z3okj#UfYR7?4x4GbbC=2iaaId8dg6&S4U`-)bhn$MJy-jQzUP}l z#25zU|KsT_!{TV7Z9OnpaCe8G!8N!;aMxhL-Q9)|+=E+i3&GtCl`_FnH=5@+PY*JvUV+?%t{221?DF%{n|Kur^0*wXe#penWW81)zyq`;2*nDipH*UTO%^HF%+ z3SI~wKBr<4|DmGwFN?F@6Qj7)xNbXQIj^X2MPgeO%Sf!hUw=rDU+1t8)iOim8u0^9 z!md9Pfa=_?c0oAdc(Zk1m{(&;(oZgJ*0jxU7-<^2cSKA@9A*kpQ zz|!f8br`+)%@9w%20Pq8DF@OE`{%D)pk~a8s-}ME(v7Wd2Xe}e5@9Nnt?9@mQsr`t z+)vxY*z!M?L{hcSsW(;10IMKkFR%=u!59S-a?gwvYyMs*Ix0(EnmntH5WQr_8l(${ zj%pr)d_Li%RNeyj_IUPU!5F0F)!r$vHk&X#K4e|?`}52NG*)pT7H@QLFVV;{Xv*y7 zo1sLM_u?@GFqxHVtc@Ju@-jk%uw5fLG6$ZZnZCxHk-5L57LKvHnQb=R>>>rL$PEGi4T_-|@Th zh;e+p&j#`l#9D|UQRMgDzAJn@!m@`ZO)Y`#wgsivw`fCX?_|V)nr!a0oxq{9Z>TuX zLEtJts}N)U_k$5jCC@>nXS7v&5gNIy*95Zl3VHt6R=~`5Gy<|D$&5`#HpiuCv;{%= zhlnC)>Y6S7LZMW7Q;m06PzS0)T^BVsea_#{7(4f04e-g*oIWJ<3yi8IhkK4vI&&e4 z3CZ-A>DO9euQQw9NVG&s)))w^&ls3yeYJG=TD8q7nS8muqhF}N!ze+?<}#gMo(Py^ z%wJADl$;>2p2-_s!d%pLwvn}v8`LeRY3m~qHqZU48k~@&r_p{@Vsy z>y!u2rZYCF{@SGTK8`RKI=z=!??Lw`_50;)0-N=N_lUp2lw61m;AAxu6VvN`bIwZ? z5%bd@DsugUmHhcd^57#1{{6+^EMSQ`Zn?Sr*+fx_)YOZay7$eijdK)e=o? zzs!R1^gNbQ!f%Sq_tPLO`L4y$lC#lh&Ed`C+;;^eR@SMfNZQ;O6%8p&s__X24E}V; zs~)yawlgU8LrA$1Ae+Na^IRXg{#3G75?jjdSpS`Dx&zwPW4DWh%^YZ*Rn*#IXb_f9 zdWby@O^$4z)WKCT`30MVZzY$rxs(*BpK-2LEY_7*q72DOTdyN$Eg!I&(=nwl0v=bA z3(6;j1Z|DffQPnXm>RbTVZ^#;A$P^V`ApuRiZ-0s0q#^^z79gky0O_|n zt8YAFk4RP=KVx;YK&m9_jaGDmNAB0-__fh@pb+Ka*`j~^io=7A#iAW$Z2)UWBs$rz+gJ34g&lG*c)%(<4haK=ket+t2ZX<^Dva`l#$tnety$GvmwHT`JWW#E5(FW3FinRb>l(-zZ zTyG}aEk*pmuAJm-xyJ{*fESI+Asc`Bt(%22U9PDcLbq|FAxKEj#93w3s{(4Q!JS?x#8 z3b1TN*A4v#+JO6PxgEY;<4w^B_29eq(8t-{JX!Av1@lq=gCzc`VZWhFX#iYR;M3Z7 zsMzN8L88EGhoAoM{vBgd;xwHJOz{$2XT{(!v)R7|ATRwO(Xx{HPtSh;TgDEtGdHBz z4i3DS_>qoti$qo#|G<;b@b3bVbe#VEhptHxw&mo9Z$veAVph0I%%*Vv{%8~Z@rx<> zw~FY4Q-IC66Zl`Q&MQB>jtS`U9a)pCCzWI=JchrNk40@)M)r+dYg`;ty~Bxg2pp-_ z;d|?RO3i(m8F7mlGQl+{Vrb3&Oi(5Oqjiz^EUN%3Y+k^%Gw(R1cR194mFVhoOCO&^ zP7o)m=e(a}r+!@5=1-7hMjjPZTpc+deS1lWVZIz9wwFBzar`YyFXmgcBfXrK1kZDNVDI zMwZT>yX{R_zU}}VO||U6b7T*lX*T;=bb(t#ESXI&xoK8FCmT{GUqY$*sai-TmDR|| zv(4|(19GsLDO%DEArr|TqK>C&I8wp~6YfAVA_EJoKHG^~b-odl@lG=zcHzW0mj`J{ zeso6^c?@+r(dV18OvFIbK%MfKnq&Cdnrjkr8VgUJ!SfdJTYNuzxjT-D$?htau=ZWsB&*$9kx2|I z0YdAa_qO){V|5T6!OcW4VBdd02_~r?W9=K)UXTCc!+vEwsQ>yi=8>B_(Hv-txa$5p z2L|Tjc>Wey#9Ue47NOoeJOE2UQ2g)YUR{WPPY9yf&2L3_!aGDUKN0+i&9#%lORt|J z7{XxEamZACqf3V^fGmsW&b2Zj*8Mjb{Qn>F31OG+<;bnhTNv1O_`jUAzbpj^yN=wh ztFGPiNsp!G9yV3E8`q&6Gjd)p1IQQ$qsN={OzP}2{vUDR*BJrJ{-wq8Y|$+yA(P0~ z-(E0fu5L@I`jGX^+|5U424_2mCIyxng2^(P$AGB-sW_?oN7V~5S?#rX==U8T4zGN~ z72xwW_6r{Lb^#pH6bAt6w@x4S{oz+>hszQf10GIuj;Alq6fe8WiL>S3u4f53Hu2xj zmxwGAqw(~_LfL=W6nShDZn|&*5GFtih6&5u?~g4kMm)LGyu` zqo~p~@|41<3LPc2d4igOM=Z2MSVED=u(F|t?lZ3Y-g5Y4uM!OdiFFF?!(p#!ugfh>MVBTU)UUTD?l8hJD{NrtvNAO2kCb+|jr-AEII&a5 z5-DGvf6l2kilRHf++r$GSGhs-(N+r4#bC-gdaCNS=p7{{^D>QVcT){?hwFvalVcwr_s-7*Q+uto>_6 z3WZ=muNrt~^;7HqU&VJ)b_8^DM3Q`VrWG9j#)3QtcLmvS^wauhIP1R_X_|;S7FV9# zbHaCyGGZHU4Cq8D%cT+xpg=f(*LhHIVG)SDgU7;k&@ zFIJRLk=yuQ_xAd9roTUywfYT9QCoanSBR+F4|vfj&f}k?wBkorlF4<*wEMEd z{@hV@GN8>zVL$mfpFAdG1)CM=&!WHA4%=6tmZV7*<*>3sj1MNQ#nUOkddM_TR`!15}yKGQvw}F{9{zH%9@rr zEZg|A(ltigx|mmib!vd3^J9PcNiN5>IbMf#;--;E6zX+45D#kKiIc3A=ZwNcnRat90HW zgK0ZcQvp@qhxv#@9*rvoLkmQZ%h`N5IeHbOHinZ!=np66eVS*Hb z$%gTt1|XNGB|nBw7Nxe5bwuV~O7P8(W=fM4Ei00T#gNzLQTAT2rUTb*xHg7tw~h$J&WI9#FkQ{Dh>(M%P?o976A@hZz#`Ew@( zY!ncv3{_tV=uZWrvCdVDI630)5Cu(D?%31*#F00u?21B=@h?Go19AbqlYc3{Jk+VW zGjP4ej}Ugn*ag_7@R=vxBF1ZMuOlB^?~UhOjYYl?IpThFn^c37kXJ(>3^KR6Z4f~X_pUZSR-?XY{6rKA=> z%EgyEK`?szS!=(?Ov|f77NTyzjCjwYG+*=5n3hytKQM;Bj(@hljD6ThxkTA2#QST@ zud|@Ulc!y2In40rR&O>3K+~%$l}FSYq5yHtvg8n|7Xj1*5T*p^CZqRhet3RCvAR0@ zhxND^23*zqJQSv^0$FrFCk3Ofc~#}iqF#ZqZzXHLK@VOX1LV&M^6cSr&i{h126YeK z0DQ@*vh6bBpJrp{rF!*O?bwm|4=;1OZKP4aRBERv-5OvI7ED^vgr6tcZP*a;iazY zes5W=r%T5xQ5<6j$)BA+-Ia}aXzGAD2Ys9hGpIjXPWJo@lCo=`)jXZ-Cw1A5;kSp| zFlKETTbcEHnVtX6oh@*IkKsyb^y>k5e9ak~ry9d4Fd8+W{59H{P?i81a8 zO-f+l6z>$G-D0PUL;_Ze)9qJdtw$(;4P2Wnyw95FHp(3^w==S)YVARn`@J6)s-pFm zP5$WrQhz=+%+gBc|2(Ncahz%Kqj?oz&i4FY4{7geCp^-viY6(-h#l%CrCM120bL#N zqp9$1MzXgV4joR<9zX^dL%^@PDcMun!^iF4zYMq^>%KC@)!h&AKc_;XzvLC`I}_|7JDZ*(WoK@i+Y~1 z592`kZg^X|2?%9@%JZ&y|HpLw-d%-ish7zVs*bNXrS>3%an`T9elma8aiO=&4EcMrYl$Xn;vdU%$Gv@6Wo{sZJ+bN}jTHof7yYNc|q23*a zjDM6;hUwI&#Jh#acYWDi3Y<>O^4(a!=2IpGUanAkY{bscBx!SfCSV8dwJ8l>+t|4& zl8-4flr!VQ%)6R8-(Fj%zPEb;LW?B#0m7#!;^l6Sv$m_4rM!>(nQDgyJ@e~fe%@-2 z_ovHe>fDjGztR54i3boJ6{UF-Ch@ppa{h_g%z1J)dcJztU+7G8mA{5{4-fTP`21lu za_U*TBU^q4Ka1b>pmOT1v84~V+Y(egzkGDVQNIW)q&$(wIprd;-{l_+4+d-PV-REk zFt|ql%j0mR{gG7>YNKS5*!*LS6io@#wJ`F#mEiBy0_UkG#uCvwTuN%Lw3&`y=iZ?F zmBoMz+q!>5_X=>*+jE8iemLI&wQ`T(^+eFt397q(tNW~d! zA)7!Ro-;7H+q3rroa9=(Cd`hJx_O!#?%h?aaI3z@GMCCuhqSIkc2to?rc(&C;hbq7 zL>LI84Uk)17fQEoNQ^K1j>`X+6}C@;;&6Xbn#?WR_c5IRHq}JqLK{1%8R*vqpAJyP zez>M4@W~Cvbp}$+)D;wpN6}z?rasY@PW{U*SP3Drr>mD2ZUqwHfV!`5xSpEoFGwvK zOjtLVE)S5)cmQu+G&MdavEu*X*Dp3rCgl z{s+>UuM6Au zCvNj9Mo}2l(f%b9a6iuFNG@w^UcS)9WoZ=Le)sw_4-k&2yp9P6`}jnpBGbWm`X$a0 z$gCc7BL+aSFmp>R4aXc0TxH_`7ARbXTk0N2#hVD5*~FC0l8>4)#LPXSeiH(wbT_hv z)_+o8%N2#)5~XY*zCGZJ^fN}ByTi6Df-+!6PSoc<%?ksi&$DJ6_{b8L&xMIvP8wD< z?^bTZT2z2q*3XmHq(~6ur@Lu5i$qI)@_@&~A`gIeZPGLD#aS6*tR!yNW97*QgR(~8 zyq$h{?W=^I09nx!9UBUnX7^CV&}*NadT}&ZD3IDr_@Xa1tAY7Sjl^WnqijIhBbTX= z1B5XZmR0Eg81ZJXNfR&FvuRZE_sn^iskjE#4kUFDBT%`V$xdM!_BA*CSaV5aLAen*ede{S^s(RdBP_#6E<_auJ_Zbzc z&<^DHJRfjUS`~N})t}g2fRT%KNXpc3|An%QU*>6c_I4xeU;FYDNKDrvF*%7Z^nZDz zN4p|%k!FT!JD|D^@(VI(=>I!d(R%umprCQxU+;vb1uvt1kS2qUwGBvh!=A}z765l$ zLEXkth!@11lTVrnu8!zi%r#eYdxH9dJW7q3m#39KY&9NRepWS;K3-gqnj@+i;|8R- z#RNcwO9!Z?)N}l%#(8%S_S|5*(XI{6usLnUCeJze+YA6;8myBGZodcn!>zDN4Kvr; zUapQq>%O-C?p%F^R#a9tr>^*i1^xn(x4q3#@Hvt3t`>m=Dl7_`=pc{_e&3G)-jGRl zs?T{a1n{t9P(;Y|Xd*Bhu;mBK2TF;?fUv{qZp|Y$!(r`#{g|evCc^jbz$BJIdt1~i zKMGagTm%gyRj-0Cdqkj8^AJSP0oBDH39~DB zE2}L`A3(3}(Ucb(0y*E<@C6`G+me9>R5|Gf$$}u6`zV>df7Eo{zUbx|z+jyM`Hrfw zE2L4dB7H(UW=Le{@8Cc)%e0Z8?NPwQ!ywNTP4Pb2gKZ2zAPc9arh*J3XkXj$vGVJq z16BTze+En%j_Sy1^=zwyi{8Ru9w#~bf?0TQsN8`(pq~2bZXD$<69|hi$-B|URd;@; zL{!Dw53<{HbLLy>M#xWy18I6)DS`vU80vY$68xTVw3NNPxF8gt18{yzGNinIPFD_v z$>^O|4=?6>3g}~DAj&kQb>r(*Z;Ae|<}Zl^%x=F-!{Ng( zz=`?N&t90-#wY`v^uE)K5OicVm+PknnIRx^7#pUh2$;skQFyH&dXBlUIK)^Qn{56J z5jo%)KoZOE1aq5mhdXq>2uxIkB1^=9cWZu1)*u!Q!eSp$zYToE=MBT_=t^lFw2h5i z0BPRO^ox zdj*{Fum52I(zY^E>uk7P9;2i-5kW4Jd5!oP>3RpzZ5cm`UsgTV^KCl!f3zmpN{2Wl z&Z#i*w1p{lRrkbbdts)G~XuAwUI&4UybD3_@clOIL5oTJmVurNiFhGzHcoqH+*3GEbw zia!NLe5wR{S2`oRn|61F#C6_3LbO0{=BQ#BG!|g3Z-9=KF(%w5w zBJ`}Ju{D7Tk(MPf8Fld$zR2k1b~`7GAAI(Gs* zPalP330Rw}A^yt_0i+UHXnY47Fa@9`5Ck&z(+`>tLtizY67I(7Q$Lmtn?E-Qt_$}3 z%gSZFmRI#h?Y&8pa#99H0bmyYfqxkO4;d$mPL6}F6(k>eN45pJ*oa!8jZq6=BNymP zfV8o-MwP=Ly(&X1uqXwPCZLu zca6~!Exv8qDzx7wS?>QVqn_Ll4T7Tw)e-7NP7r~5a`MErX%!jApy6T#jX<9ehL=RB5zhwO zTPq+k`do|X9yctDo>y-u5MTx2S#tScjnak!J z<|_gOVe>8CJNZEQNE~akpmDzo#eG3JN!GX5xqEgQXXG6{CPIbZ3Nyk3^+>e6i<5w- z`zV18Wj>w4JI4z)?fYJm8>Qp#%lJO*RFp&{-j`&lBJ5zz0wtPYN-K-oceR3TclQHG zzMv3;0e+@~1eFuuzfiswIo4>I(M}Sx->Ca?EAZ26@k&X}g*JG_`O)lf%s^ks* zeQ1E9bRg9#f{E`YY+qq!1Xbf)$S8^vC*F9f5cDvj%c|~#Aq4l9q-CISmI_}O1Fbma z1u5|)ftag$;k#xKZG2CZr2|nHijxs@Uy$W9x>D=H=CH06l5}BAK->vDGM(y)AvZvQ zb01ohXR?CVxb4`!6#>7KvLYIYScb6Yu}K85rAEPSz_RL`n8eFx`rR(JSfu+iHpL7g z^Rm|`gC-TISIuGr(Ol-@q)j==2Cw>qlLwGWb#GA?nfX6-`^=!0~TWqKL_;Dtewn_D)q(ikoWm&-)VD!Qfj{bCM!YN7G^yLT>s>r05en4h5D%a}MqnL*# zlsz%{mIRV%g?G%|2OEb`D36F+i*3WQ$lFp)F;-iMov-Oh^XQ-x1|h-0Dnl-7y)o7L=yZ?dWpq?+ z5|p0MC8?s;wGs(8jD*8wDyUCnwlONkV->!^k_S1n26^Oyx)vEhMkoH7xxWwi8JlRt zYT5v|4T*^>NCYQ;4(bw~*J*e7w}D3}vPwCMw=w=ZY|#A=P}kcYCBzD`2?4Z6^{F5a zkVry9dG*hLx*B&|BZEmHwF11pTBwnq{d>*6(|lC_NC=Yg+y8^)p;m}s7Y=7S|9$L) z{*&4o%Opi!p8!PusE9R@-Yzc@0}d@86vqG!!F9WmWYn>+6=3C~)0bP+)`LCx+6grh|CEB?Uq6>Sn^M_7#=Iplio}EE}+KPEx!6fiqxo9Y%=xJ5aa;?ItjF6eAtLcQ!JJ zY3pK1lx|bn&0??YFkeXL5im(4g+X&pii@G>fWr1xOJ`h)=u;y1$F#r4fVJ)N^CHLG zUE2A0GW1?}GREv)HJu+R=)3thhwxN3t+^kh)QqI?uc09lzZU~2zYd5qIY@(2u1(QC zEwj+ae7#t1{T?E;71mA7;2VE531h3r`>rC)Du(nureXm`u`RM9k&pYxkWAQsDF0N( zx}517u%*Y<5oX59Qp|4>r>0|7r~FNX1Ma#v<*OO+7sm_u@mH`5ubE2l?-g_at+R|S z5FMq<`ap(Z{s>(V-}_sq+ufM|M{@ceN1;6Aj5L9cvk(IYPc_nX9C#N-mifn)@MOckfCCcqyWcEsfAzbyOY%D7qk^$Pd&O$M;;eOh-!XHVGDttPb|pNGJM+&? zn&3);Fep=rjJ|vOltQ7wLJCS)zv34QAVhwMD3C0;PeXVo1t07f=cy`KNIJ?w*MJR= zLElz~0K#O5ttd0jX8lI@b6X-Uh7pcPd^ol4O)U?ZQ0tDA!(1Y(Bv33qU%(=JH4>C( z`Nfy4MJdf^g$ofMXBbPr;5M?(OGpC&LJpf5`?v!|WQCqc5K_eoovOxuHQou4Ncii# zSBE=r`>Y=h`cCs3w3~z-JTgKMobiUb5w^880S!=KZ8~{O!jY6~61N--9a*<9si-+EXujtqzCwIA>a;v*XgkBMee!e$KA6Oo2bY*(gwnH*iq(rg5a^j-S z|L{3EEXp!pDp(`aYDWj&0q|9tN zwM(jpT7#6;)|}Lt4r$@2c-aAynhFW`0#x3VnEHmI(2uFL%cre}f!P3u#Jm;_!sJ28 zbX84xAOHiJ>BAp5leTkP%q^Kn{6{?~i(2*-6Kswnen1cv#A%F$$ba zKh?U)l__zC22EMpI0_NUD-l{$^rukY>Arcug1`vN2OI}mH4lcgIb6dNe?bC4gjPR1 ztO80l8_ubgN_>?T=OxF^A=?B=?N45DjvkyMVeu@jq8Zec6Gbj=&7Ud?cTl;lq{$0d8QJ zP_DR8fI+oqpWhQH6+Pra{o#AdIT}vl=(p&ZcU)L%pkD%ZAwQiaXBWJ5xFbqwlGj0 zn(tyQ0y)&XE((`5-J`}&#wN6v>_e^a5e6%MjjLQHFrF=+h7>nKpM@55Kbj5CvJm%t z4e*vth9wv?WHCFw*H)eCM?A}Bt}i*D?^|{XtwPxNhzUhK4FlZA==tEHmx!CfIVgA4 z7B#ulXrnnDC)`QF-edzN*3u%I3)xQR0`h{rfP_=&;SQhRV&swu{Z}*|Mr;+%lO~MlbBm=6Jz~6mM(~SX^K?fo!_eKy&&=k3`X6J%# zbmigtBm1kiMV4EgRH6(lL=kE7<2AZN*aaksj#YSSS%NzkK4kn&1GiOusgJF=6b|Hl zld(&`q5h6dsMI#^aUdjyUW!GR%}q^3kZ_V<>L^(i9)uZ9a*sxQ<8bXT$Bu5{A89X_?q>~pk9!%sF&$bqv)O>+5uO^4f{7`A00VW?IA0) zeuI}#_<=8Bh6`Q+bT{LHd*)Dm623Jm^ozcm%&zBsaARw%(Fe}2eYVepsp#qSN6P%_ zFW>6k{qyl>hDL}Z50*H32L*~lKfPUR1ku&``7U4xBB@)i9()G z-hr1ICFi!1pV$(xLkW^hOUOsDb2BbVhCOr`!=3dYADz5mzEf zr=amok)PgbJ#azJ*g9kZi=$GXAo%DqjtHlxr;bgq{5!m#PsPRJx?{UnU(PpBLt9(r zuqk^4bsp9#Th`?jlI`JCBf_}EE7Fm7K!g4X-b@ZCr+e;*USUbxzu zOVDXbRhvpal;B*R5!BV6^COeeqm!!oE?Zttt?d}k=R1~<0!|yJ%oV%P2FN(`^Ns@{ z*Wb%=3Ka>3%43j0VR?-~4Chd8pMH@A{a7hpf&UwLM-!Lf(5wSk@ck(gwQNw$Efr(}Za-KC-ze^d{oK-Z`;O@7-4&jp=VT#U0vbE4 zA07I51n3W=gwZFvLP^ZCrWe$-P8ZsT$Rg;{ll&4AWdvLSt@#6IKhDhetjl`ozIAw$1inHyKCRs|5p z<@DvPsynZ&_!++V6lgrpCtlo~n%tU!1<{*pUPH=;{ti)Plg;Z}h(BDGDe1on_}%Dt zg+AZJHNl;0X;Bf)YDynFz7eGe-d7Uux^&$DE~mvl9qo*QhYQs~;O23mr%e9mn#~X* z-j9-ZDbYq+gmTy_jJrW^fow!*AaMi^ygIg`Hjy;9S_K}Lc|CGle2YX#d+#3$qYBEj z5}t$vu`0`TuA}(I3aj_A}+x7k>jny7@K>I#HDXTdlfgHP!(3k%>=z^JkjVbAeoPG1;U3yt%{H~_9VuN~IJRGRlCgLcw zcHF7=DB$fWzBwU}4%GEA_zZ-+XM{1V#ECOFi##*UrgQ*0Q8^X1WVro<#4@CRwIMxV zt5{HRKm2)_|B%ko}dhw$@2_vNe489!`<%C=A5S31+K zoUCVaec#h;gSwBNZS!KE6cYV%de!2qxa9>rIZyaWBKUH8p%36VkJXFY? zU+U+ZBdwf-iWIZ*=J8*46sykarpKCF>8EGlw~aT#@L#fra5%vTf953y7ku`tx`Hk7 zeZ-?NW3UwAFfb2fqp>d~t|=q(q^JlXKoJ`THk|?uJFi;}_y)+ImZMxpRx`E5ebi+% zaS3Ok^_T{c$0P=9K&E@NK07r>hOjD4Elqq^=kB6wN#*5J7+%Yzwd^;>n~TIk;HBM# zSEj8&_IqHuhN?>9$hjqK2Lvzj%=68exYD(gBnNzXaRW%j8z*Dj2ZK-v9Y;pjs^^NF zs9vUqpwM&fmhdpHY=!A&-wN^!FRB0u;ZFpOGg#T5P32)G^sl}<;UryfiOj5R#vtpe zmt`)p=|gM-E)Qu>r(CQHnfzkb;327MvH>%oAC6n^oTsCCaEc(?bbOpr9yh1$0dUbw zgm10Mh*|W2yOvtTOz=%tKxRef`Jby<<7RFHG3<8ABF?Q?48+&5S-I^>*UqOMwOPNi z%0p)1v%)UCIoNZRd?fAnSw4$qS}nt!R#(A8s|BC1R_SlW(F9j6kob-OSKkSK;$b0;b$53a#+Lv_> z__T6iE1wFF#2oKxdQLlw~hR)g3 zxU3OVtJ?jdY1(>yf12`E_NUV$!JN@XDJc0LO1rCO3`v!fP|Ju$S;sQTua#N|PhKuQ zCWTAOj$)Y@d4_#<^dv8qNDR#bBWs|ZLq%DQKPubylX(2{DJOdBD(sMyVqtE9!^gO& znO>O$4WS)5fd$w)aCdL+0@t0$VRf&%7$wepC+x3{U;akx6DmIKC(Zj$GdlhCMwyFr z^0*OLX~dzz;E4gMljuc!P4nZmB|s%DF!mM;o?pJ=45K6n!&-DrJtk16H58Crd4U z)L(`Nt;%%Vq$a0vU<2m4oMhnB9%WI8uA!ennIMzN!kLwL0?8ZJHBi2XYZfuxvo)V-1s4G;L|5qcrZYRh#RwHgoe^w|K!u_bjX7WWrq{Hr>OQyvy@7*!WuO7yFq3w#SxsylY1StyqB9 z#J%jbFl3Bt(~x7ADm%5=H3)6$R$R7*vjDugC;M*@s}yd!H1WKyq8l}`0q*{^JY`zA z0^?q5WwV>jr0>Yj?|4uYo~*>ZFo-WecW?5iZlyb6g~yP=FQY4GKk+FG=d;zj;rn-3 ztIN5#r<3~YiLR+1+D9-6HDYWaZX{@e=V7P6;T~Va9*chF@)aG;w%^f3fEs?4s=nOS z@LfOZHfd-&`c*0Y!l>`>oTNGkzK_Zmxap~7cNYj9$ZO1?c7UTxEVf)9E+#?J3*JiE zs=jPXCgbpVc6LtbYt%8JY38>Xr7+Rlqdc%Z>e<3qViO3`F6zHD+z%Nd=5U}pWV-CT zl%>VI_9c4rd1`$lP~no>mx^FQ+`Q^)1L0stqamyumMknhbWsfIzIw>B)zAiC-OX=+ z856NYzSU*E6$RFDu}Wj-7M|nJTSNP?vu(VHV2 z&@Qe$-rli{GldIE!_p36BU;)WQ5!fqGX+1XHsR`N*|WG(_*fo-O3mbmbeYVdDtk?e zF2zT(Ay^!`4QIiaDkICUcYWeI$G-YIny6UO6dh^# zqR|v$UI>2*oJ5P}4W?{8>?16=GGE5%>E5^v|* zvZYk$e{imDUe!*=wJg>Jb$F$Xg84hM^V+|vd@+|#DBSV>)rUSIg+f@!SbFy7)?d5o zZ`Xm8-#ka`kTN5O&ebkfA$T@>!g2qF&&3Lgw zaMk3~1Wwq)davL6j&7w)3;%WpwWkM@oH6~k)n;jat74YCbY3Z_ybf)%NA-4V`G7mK zHxILcFfy|zH?+iL?^o+*G8Fcs#_*{IlW5nIMcpEWIW11b2z#uOIpO^N*f{C+7G>0h zt#x*Xlw@yqL(?9}rEZZ@7Fjv(AH!x9c^c6~5Lyi)Kkk1@r8~!&0GhayI^Fhl#51 z&5e~=%@YwfzkhTaQN86O0r3^$e=S6s)tT%3il8Wc3OekvlimzOHXr{=}N zWSwPFDxcO-oqbZ8d}OPf=SlZX;i{mQxqG6f*bcyZnR{9h35kxk$=E>L8B$z(_+cB* zhE!J>1;i;F zQ_VrpCg*q_gs&?+@fzRkQf&TH2CHiFuXy~=lE;?(b0H{61;ci zKz|8L+&@12?Q9dGUz8?(&!Ge5dTAPy!mcB22&TDkjX3yw82zgxXqo?vuW%%36Q-Aw z`4e7-O}HP!1U>1(JLIUHBJK3PgXU*zU;nywFIs!&N$n@e#h2UttgW3XG`CRRpAu8U zg$1Hpt3^yp8Q`AGr_v;-Tqj zl?nWeuT7t$Lxw$4BP0fG*UGFA)qNYPW>a|bsTIoQv9#j% zqA+ZN?&(Ji$}4(>Dt3yeDY&opEqn!{wqH1{Hk}%uewiY zi~hS&n3MfUzB@NCkt!+hvXHLq7x$f^xH$cl+Q_=PGT=myHfr-cM ze~FKM0kfccOuw?dHYLtT?8>>UjOc4@*`B*CbLJAxdl zon|itlUhsoY-GDU(6w%cri%%i$`I-I9dcq?5*j zawA=|5jtp_`S@kVyb;|!ERmXnMko|;`Zss3r@jxJ#%T`F^!jQ0;xpgx*`>f{B?JLk z+~%(-F6XJqeFMK-qSBb%-!s&Vy``}&8vj5ZwBO;I{??ir%D`WAQY?v8@}5M%Gmf+& z?SK+z=6-SbB;QgDam_v%N{I=6$eYS*dz{jvRvb>2NMm{2*%_}i&~%j+!xiFIG>v7 zMAz>MnvTEzef{b+`RuPt-;b~Nf0Z7-+rDwj4f_01Df(!b6p7`?04=o<31gjiRY!$L zFNTatl7w%MnBK$emVR4-d>1Sh!!#P_^^{RR`>F2p4D%>m5ojTY?WIF@)XqHmaFpLP z%gUPkZV`Dz*kuIM52qwehu1uv85yV>>H^7b(8=k6ZZtaV!sgx#<4bzpgOz5;`WCl9 z)T2=Upgxrux#UduwOj~t=!Cmsd~34;oVi3N_A`z0seHrtU3NIQ?{0)HnaB&@F6$|+ zY=6A{`g($BGf}R|);rk1rtcn(M!FRvHEk;gF>qkI_^EEz+MyB-2QxM@%Tg zSSGT@p?e4QKGid3VPBW&`7Hl9QY+zGUOMPFeZEpY?Wy`FlPh33pB}Sz1MrGEMBTbb z^;|OQ8^KuAbb-{ZPaJ=8EL*QW+B&8MjdTER*Pm>69}IV zBiM#p1klh@vP!VZUHdcDvJMm)F<#- zvwDeoX4*4lS|3|nozhX3?!}M4KSpJ+TW0XEj6Ikk$s3>Zr(9cX45cJapHvK5JdrT?Aex zDsz0=b*}Q&h>P+9Y@PcGp&^U?}C;MCl_=oRmPbPab!xL1XxTsN4wwrE;S7^ z!~aKu*Yv+}@wd~;>vRgEBw{yd>(u%QthQaj@m;p7Sc4g{ERx0;D-N3Oq{bnG`?FGr zMVDnO!xMKkmJqJ|spU(ed(#LFnfQM0Y~d0LrG7W(sAvP)Z$YeIc5We6$R$vTRJ964 zknI~WLn(*dTQ&x^*MXVlw`NGzlfj*j#-tp2E76@NW?|`Flp?l7Ce_ygmNJbadhhRM zmni?P~=#{sTTMyIde+&?brMs^XkPqccBP5HNYrs(Wd5pn<{I##2Kr{vy_ z|FQg}92x@2?in0%ByGqP4YJo zQY^MGLAv9(wkki#w8$%B!pPU9eqs2u(t~1>^yhQzD;sA&FaMIdgzmHOZ@z#x<2d#R zi1e-98d(}mWr@Q6k3;`KZxOmkMwh=F$a?V27rl(Cq7y0F@tNfewl_i;pSQwe34aL` zoA>Z|HrS2@cbaFx<0Z^lOn0EVJmpF)%-+%|o?6`m?0T2Kfv2&UwTgig-CukJwo+Mm zw?sjVsaK-3B-_eu0CjW73|c9@3n&hmMM& zItN|$ipoMa$^Y4H>VGFH3>m{N@pS=MCcCN-8Kxo>q)05}+gJri55UD_pRa1Gt5b{v zUNrHH?b*tEu@#v<(rsuruH>JLTuJk?RN@~Jx zTe^n?qeH6m zQU}BCA2g>XnWm!fVW-`x1Jkby^9yo!#i{XH4$C7>BCqrt{x`*qs-nCW|32uN^dedW zki>C)02dL{?4H=nmdLexo|tbBCDa2N$9LeKMh~??9ZgLpuMM}Bneuk~rkzx^T30w) zrW=G=#xU=(ix5oV_~KMOd47*W4ULs6C-23Vt!)jEIzDr&4Sf%>T z0odg70jE2$3Hig<2@%ol%R_s->e=1xFjSq0q>xAcha-x>6jYWr6}(f@pby5U@NL6M z1*$Qfxd(y(V=1Hyz$_sS3T^fk9OZtGz|k3n#}uaB%l51J0>lAk)U%bhiG?>O0RoB% z00vvDfE2%@!Lfcg2FVD2XK^a>xHI#AHq6$G0ph+V)SZ|q&o=|+M*FP*dZ_|9#7^G! zG+wL_w5?G*|0(N&`&wIWh6g8_Wms%QXv${UmtMm9RLOI7rofT{&{{PnC9SgGCdNa@ zJNbLx&rF>eWGAPEDZqr-FGFt#Chp|kOw+8Cya;5POV(Az^K7*7ViAg72fp{9*O4$a z(p@pv-x^R;`L~$*=lR>hzmvV_=%w_HdmGH$8oA{^UBJ%g@BNlV5F%d0!Y>1L>(3uS zr(SaZypOhkDdbwyWF~XAW^YT{^0ZkoDa-^Vx&BrRx9&WW3hFY45wc58nb7gmpUIEU zqXMo@&!+z`x`TklCGJa?m~Dl=E%b*4^W)yaq!ZVnb}8hC-b!V>oko3AGzpKAmdDl9+RMB^x%_O}W%$20SRv7`7 z==15G3z3lYNhwDvs0i&V%cDhmQZY)kyIvi?7w@)Gy;A{feTxAZ{+Px6m+07S> zTPBlw>(fkGAnsCCo{$2g3GhErHQZvQfHdhSxV1>!)(Yfy<(aHj;`gwtC&YcREF`|0 zM)e&4GaV5K_)(bBW|Sn6%lh$lSk9~Wr;q>H(GbuTKQNEFrLyfqSI<;DlLqtJ{eHt& z828@woTC1EMq$s=X1Y5F9=SrPO;l`I5%F-qT~A9+thF=zG>Jwz6>uV{Pw?%%M>hAT zp}O;{Bvi`R<;SGCDc~EX?Y(|9%cUNRLK{qwA*JJ4bq;|qxjA$fu=178!ChB6p$7EW z@5TRXYGJi>L11n9Y|;4EhjCD<|K!pz9gmqK>8;tWpA01fSIJ@}`$P{Ieh0ul5(A&N z$XX*)-wt$$>c7$APRc0FK)Riwgjjmd(x%#x>E~9(d&P>F)_t~P+lgQHs_Ln)N{G>{ zz^Qg?SveZTY_j5ZH>ZrJ}jTcBZ#9rqh2{B}fL_vp6| z-%hgn_ABh{^*tzB=}_j2y8LNjeT@A|-@;rP!Qvh~ECA-SH_A3hsy?P5tc*X+Eg}Qu zn0PnYO7tKA=!Vsvh}g~RR{hR^r4&Pd!v(YSo-{k$+s2C%0(KXG25-L*sEC#Gb8RMH zFN{!9wdFq=KJZ+bf#Zv-lhk`Lo9H^Y^MCx#jQ>4QEVg^bzUm4?;ZM8ivziT~MnSi3 zboV8`m|uJ1=~@Zhzm7Bq-#l45y(0P_N5kvC2CjYY%w44izAg>gNNxixA%Mh%4FQbV zq4+jV(*z{WRzcARorM3>y8j)?!)g1Od8V|63R0GRePmQvx=PO!ng4ad)&4*kMS#H* zm4oEk+=Rf{vG}DRS>W@J=l==~HZG0<_Jk-#mja1A)FimA637CGA(i24mx_mc-Y|_~ za`n$3$Nm<$cj9IKpRQAt+{}|>edEhj%u}?>F;55*x+|S1CDD`#aLe~XhELTojT9u1 zx5qdsOZY%kp8$tqYXe*fe1sg9(NU29yuI~+U#gXBFSLWAl%QP72iTVH;J=V;Vio_` z(b69tVRQHd^`H8WsUHDg-QyXjFG}O<%_|OBwRWxv<7Mjy4U@udsQ zve3DOAt1lv>EL!H4<~9&=U;AK*X;tyEbevNv zg6~`g5O-#}JoIhKZ0P0*u#)p`Wtj4m#)?DG>v@Z#?#>FdjFK~qKoPWlFI`5M(7Xmc z&tvjJnV8gNRjT5K%hg)jef>{4^g>NYvJ5YhNsVgN*C#(V#b=a)Rsa^6+KeVPt*y6v zG#(6}tj(QN+T=Kd5oA7Wh-*=nh|JXwoCqXhdvd3)i;|A3^>%i}!h|n_9_;UZFDyRS zo%V{pNRU+5e#y?C?v+($u0AlDSp;Ct8U@2n*yB&qiCRN?k(oij z?72Gw6c0&u`2ke^>KAa5rOGGL_=^Pxz0pgTB5W+Uz~0ew&J%vy?VgL0iSRv<*M~U$ zGm5~M%A>P>d}DXI67x3ximhnt+x|V{q3h*?`T-)lpZh3VJ*ClCNeiLu7}yYZG_DN6 zSgkI2+>El-zU3*!+%K1rvphJs_l3l%hL(g&fdA2)^kj125}fBB_MBN$IGZEnJMu_e z#R7N;?S(V2i4C^jFGBLI~yL=+1H*<+>;R-0P9oASw zCS4X6*q8r}-)ZkU_QvZ`Dljh&PeZuyJ94Wa;1qmMUO$5gPjx-+D-%a}V*Z6K#m^r6 z{O&>}S^UDm4dbq@N;YN1_?rGG*1EZFq{nx}ZnTy5uClhH;_*trN7n(wk4y5W*+Ktd zw5DC2IA)?RuuvvW)klvCtV9yJqq*Z_j?m=?pq#jy4KlADZCR6f;{XD>cOO?K#2K!< z8560;TwipEe7Ky%Zu1GbdOCv_1Nhc!Uhc|wJmD2;Kdz4|j6A~ym#}m{yQX0T05v`4 zn>}JR3qJv=Y)$9%#Iz1!A6WZEV5|FOVde5xz^Q%XlCXYk)nE?8x54z~nZrY8dhNUn zlQx6lU>!i1`=%2as&iZ$$!J+R?t@pHmQ9kD2LEx%aE@!5q$ad8X8Qcojdwx$CH`@6 ztRM9Ydi)fMPwUl7Qlbv6#TYOLzGqqSHM(QDPUT5jh5*I?xJ0EuS zU3c;NVKfols2T-vO6~+nCqn1w#-N%QJ z=ujZS>qw@nbQPrmF{x5!Oj8f--V3jX_6}VnVB86X{-S{MrOqjdwDbp6jBS0+xV48)RZ8nvJ z&CQWRt5G2KU#rf4CUQ>`E5Nt)7T2*mAg+w!RSlq=@nmR3h%Sa{$VP#iAPbP8PUZOS zFbAS4`w!EDZwl1x%Z#QpthJN+OX4x7TEmUjkD$T}*e7o$5p8Lk-TuDNBWh0VE+5sT zWP2^^3e8;2aR`l9qqC&Q;!EFkJ;4f9s~lTh60t@1ea5*KdCB4Y!Tq!vxcdOMlz-i7 zm}(sG;N8u3ExaLvoofKmxl1DwQaV_uoQ|3~cZq}&wb&--FHr4hs61!4hYi7lYZjDV zKP?KG@`6kTW3PsPjou|j+VWESzr+OSeI(J=(SqHdQxQJA#Hn@e|C(_-u&^*v6pJH; zg@0PuV9c8yg0XZ`iqJc60lwLo9YVz69VPHe*PXf<+|PSm%!y}Uh%_P+&MS)cCoH!` ztxmE!fzEm+Zjxbqa^YG6cd`k62hiQK@L;&MOs+reQ{)RP1=xT8Pe5$p>(BQuqWfLQ z&ewnoIrqve?WbhS)0Ny9&lq^H@ z+RnRgRB24xyID@2t`g>NgkZZK+z$fxTaWISTg|?;(eZbkT&g#R z#T7j9)xaZbTON3iSyOxC1!CaHOom=$Uhg}Z{Kgg z@>4zM)M#lWpTvFvFyWXFvVmiSF8G~wE>;tsPww%S={_IYxjgyxyT~n*M^0J}rvCuX zT$2CWErxuTXC}WE^#So;VLyx!G=N_64YM;{hDgkAd*CsDUPFZlD0^^5_#fUo_kb^f zmzgywKJSRc?}5D!mkAKkU-p>mK>uO}>D~x_#$7(GaK@Ro_ZBs9ut9RljjPuqu;*nl*N2<%5_(Q?(Bvh-_Nu)%tQ=8-KC;LfOuv z-oBrn6(z}q%VI`#PvO3rplMPs8TliJQ!JpG?r2z~rQUGHtf4C8^!We zDC)dif)3y2PKr1WcxxLM)%*Ga9(7A-v%56SeojjhGtl0GP1?{_x+Fy2!{6hF9*KD0 z$iPlyTfzx^Nuy~5W7s~yL!r{5zg>w4e;|jO0(AjOa$x+4@m)z=bXNENciNH(rM!Tx zYrlG8LK?D8fShqowQ)QRrP z3O@n>#My9?vfu&G>(QzU=!rS$?~CCHhW9jf`W4-~2xdQYJ~!{yz2%Y@POkk@8As#bH@qYro&4J z-faZtO6PARG1RtIlyT!{freyi9}+}gS8Fb|iuFXg7WC}sW!D-_s;j_L9Nnc!>10YJ z)2sL2hIsSduhWABm^-LuTAYmc;_rPqm+(WfPWykf0fhwFH4TIQGFg-u-#~YbHtHT5 zTy_bvlMT5;Gzl`^r2M2FbJNU8pl*1)m%SsWu2kTCPfl0^naHo7!*Eo~_fEJ+iZ0=G zTVl?~4DsPVIeXOR73jL%nr@UEvWrUjNgvOtF;~ShdyJxH70bJ__+e4UoDbg z2EPH#M*D$n*2~bU@auR5vf^hPp4X}_$Vzy#0-43YBZP3)&I}IiDxm_J528c~d6CN^ zC4B)(#kUGf1ZkBz2yx@zjf7NG&JzphicKu6IBq3do(ce!^U)WybJUdJpS`o-h{Wc) z=7B$rR$bl`tU^f1*Cn?NF}0U0 zW9sJya-I_H{AaFOTEs|?4^A)JB=aQ+{B=R3x-?mA?af+1YfYK&UFHdex`53jH7-#2 z6p^L|?(^z?mc}+W<6rkXokQeEPJmAcM+cA=h@4c&#)Ps&cpwQ_F3x;wrN z*V(gLHBAf+Ojr_ce^u(rFG{ZcBVG!&?W*w4CnKB6j^V!vy^tZc*hyhxQn33pxd(5+ zlz%wPQQ7@P(&T~1eMyGoJ93H>o2{fG7z#S(1Srsnn)Z`J?{&c!)JC1`2rb}1W zx|@W^Vz@$}e<{8-w@5!|8T-d{tRC$h=L$*AWC$Dxdb2Cug1UhrZWbw}?^sOI4kP8@ z6pGaZ$*r^MS%h&qF$N+3Y=OirNxA=flzqpxVe71-H+cxiP#15~z-N~Q0ebL5uB|uN+7jx8%Z|w@5CYo&b^3A-Q@bbROuRB9FIh2 zKB=Sjc@6Jlrd3DUi#P)B|H_aYO-VLJ%{Qr(-f<#s$nabBo3k#Z9WcRAnIg)v zJr;BkxtY}K2tG1{W$oaH5S?+dX>{sF=ou;t&sn@~qHEn^))AyO9oQ8F{{XLzC$&#* z^@Tt!$O(^A*F(wdQFOnAC3;;fjutLh!|HxcUCATuOa@ffTio`PGp#)_U-lulI0uT^ zi&7l19f<$m$p3#+a{EPZ5CQveYf;P_){#qKV5Ma;RVq4Nh+8H>P_~JTgivHsgjJ{S z)T+s9K#;S-CH1o&fGK=VKXNz@<+4xN^Kz~+--TrwyOXY z3IaJ}qs@;*VsxLt`0%352;dbByB*;jK;Fq zBgWl&NxsAmk{ThV7=<$R^TFCMkE71F48G5>`t>v~uP!t=M-C!g3YT0SqNV~Yi%#+d zxm4|#Xlygfk4&Q~^3_zzzwnuCnv|dXFh?q`HkdUF!lxWrox(+DEU*+udwdFTbS2GVLbEc7I305$?%kaoVE_4 zu5Dx2-htFOwCEwJh546s*m9H{yoysP8V_QJo8(S&U^pyLB;IF=%b33wXgwqo_<5Cc z5{+1;;2h4nUoadJIO}-F`ZD(1q+cOC)y5zk>^C6ga%7>NE|5;t0vUrV#{_}rz~^qe zIX+$4Y=Q;JISey}ZKgLM7oEu8oi__vkYHIH>CpR$Hwb0>q-xT?Y@BRMRsl9$&vuA% z@tBKl7O3%&ws1#%@lOtz92S2MHV+sg#+HMRq>chUHHwq?pe|};mn0vFr^dWPxFz?d zMR<`Nu45G!A{xNe!_d4ZP|SH*adlF;&wG1-r8DIXfVQg^%Gmt=>9xC%hrhp}Hm(az zYvVhH^Z3f!j`SRDWzYQFQaiIvF#ekrIkz-E<7^&-q~zcq9H}$7M;v4=xOO+zwYkDEMwLCyTo-t-oQ|WU+gwxEw}p(UeiZ!X~`y5 z*5@>zWO!(aN@TKOaUN>1ayD96I6o>!ja=pfc?RFV6H7Yr%3N_;w!|Wi2yw}ilix@iAmpr2)z{gO9I_)A_+HW%Y} z>^`D_<@3^-Mf5&VGNUMSdb&Oeh|nm;)}J$_dPlcmqt-%zvo`~`E{fAN6ggbk-EqDG z+KOMN817l$^Gm2P4v$^(-HUsH%B*d%Wsc{J9u-HDW@O;gQYpU?Zm7wb+?q=5k`5@s zU{jGMr4Dm|wM4Qd0_n^7U*yv|Sy_ZB@5Ig}^`qTXBkFITWN26lX`;v?*};twa2KG< zzsfzds>I%rv^dxXwtew9J*bzENvspNYYyZNf;~__<`ag~TUCkX_*Wor=X3ZyFo#Ot zzDw#<;Qp&Ms;ZRjx_3IVs#j&NViNd1(!->YmQF58FWu$qV6NXS-;&p>zhO387=h@0 z1I$PDXr;_Wg5?1;WsN4=yA+H}+xkc2VNK0p>|HB$y9xQ~27F+xoMu6Y>-4$79BnQV zGDx`KBaT(JCK{-Fn*Hk_r(SrzQgENsjn^bC%aQ}ydv*ye7tZEoUj}@1@x7O_gnFm0 zmw^jz4C?EAMkL|-K0d@|8YFy4y+|0mUPLUm%l5gB+Nt5Qp+&4LegY%=TP;#`bM=3H z){-qXowr0l?(%(jgtJn0V~?Q-Zmu_Syy~}*n!CagRfO|!gGM%)R|3%6A4r?CrAxHk zEM7z6uag-1oJgR|*wU|iQ{ANWGGuOzZoZo~@+N=I1kQe{pZ>hUNZZLQdOZ1!qwHF) z1@)dGts_HF{v!Z~JKv`4pL{AO@NU@a!#i$d@Ap_Sed0D4&E+njy4uQaCPWZJqyj{} zVCi#mM1d3+1`aRQ_rPcBY|ClG6w*QgX^{%Np*1t0udUn2dyCyA8Y?Q#zS z`pqCk*oI;v3iDN$u{`uIN)N1V{B7s~$pgsbPC~HY9gcIU5hA=RB;!$q%#G8az1>8#ITn=+W!_f|s z-IUm)D&{MtZ05c|n3Q^FNKr}kLZQuetx<1Lr*WEwCUIv$v6Lc142n{U4S&EpuSc6f z4}MzJU!HobopmL|K83P@T)y+mp6j7_@wX(6M(XHu&O+#dhU$Iu%pWAV`=Cy%*Lz`HN3!?77g0-L~!7D+9da(~>qckQpeHE1(aywqY<-^gMNysw#2Rj~Y17T!K)#mB zI@RG}+S3D;3OCV78@56Kk-0#5-(2!0i?wm1gD%^F#yV>4C`JDdJc!$1cOx83?b6ft z^ZvY`sSp&FHY}k;Bw1PYddwn}c9zw(l;usy9+sg_fxl;+1%m}Pyh=mSZyI*{&M z=VFZx9!YWJk<(4Hop2@-t3J(rrO`&tCeZ@KZ99p`D4B~Xp@ zZ~FNRK{S`t@&*y|zJW>>_)A6{pW`4CZK_f_1&|mlz^qOlE|!sPtkldUfA}#iGUSTK zPz^@I^CBW7`w`ICm@z)ea0kPi8sw^1s+znfE<_ZJB?Zx93n@#3(7))RGj~(9N#TAM zl7K}SKIqQ03y=8P@7ZG>M?1lPR6|94^ts@@iX3lnv0Bd#h&;iw2Ts+GoqZp( zoAi%6>lL!(FF#(|=WKW+5G?pIf!9<)i0Ec0PIy_lP#(1{vmHob$a^dU9qJ!ttV)Gn zzWF$I~euEWkf2C#c|bLJ$%{q0%Eu!SN@j%5Q??ct$pEnmbDGsBKtSr| zYs>0tVuqB{&B2+%9_0GA@gZ}9&2TVsQwY-=luh@CFD51g#G&xe=-%8Rvb+SMwZ==* zg$SyUq_DM*H>mrPxdr-lY_WT6$jf+yB{}Db3b1Se1US}@C!fld`qg@ZbP8mhLw?d1 zPBXse0FtXa)W#p)=!($7XJp^F`<6W82wFbW*nc7e=|R$sx7KhH`ur}U@;^J`QbFM+ zlag`dubNk!W(6|q)q0AlpkLd->?rSkg(81_%R<1TB&D<yB2F&mPnuwTQsVDzKo^-#>|KJVg^;w z@C+xqqO1rqE$MtE|BZx(j)Da|!TbWNCw(U9Za9hJV@0vy9OZJc*WiZ|GAVCTxml7i zv6Z@%N#VrG|FeiQQ}(PG7BN2$6=GsR&>HDp@3Er6qPW6GWeX9&F0%H++Je4J$)TZ^ z*?NHXfc18f{Nj8bGWX$NY?_jM7Dk(shu#XO+G5b+n2_~sl3%x z)|G2w!RG&Z?!Wamfo~ z=93cIKD zK1F=)Ww>Z`Y{IGx29s;tu}M)rN#KUtq|mBRCJE-pmP0kngz__ArnPy9T z@LXj+Z_(5rlsvE~2w_@DEqFj?>X$8^?uH!A_ig6$@UGgf+lqF9n}VnUw9t#@3%VPh zqOOw|W)RAKrai=K@!hBph!?XyYDB@*Z~F)$3PDL=`^!}@AxRDXQ6iJaLuUewIYF)$ z%cfe?bg2v85J)08^0$Xajs@9_ad9CY-G$L;JKvE53<9IvAT zF@$QmLpDsz&o6(&bGN4h;%w7ja9c`~s1;MITUL!~+W*pfEe{6*CG7aRwg>aqSOfXC z&amRpKbde{FG^l(Z_>QsDn4NyJT>b(c^MtFK@jdI4D}8X+T|U8!l-pE=2O-}^979q zE>i5f=N&Hx{8$d@`uZUQ*{lHtkY5`XrP*E@192VhJ-=djRvG&mJ&%tYsPcb=cWD_} zeC$j*L0qz2spew8`f*j!Dlu7ryl@-zL^fwVEZdn6D_ebzIZYTGpT~INa&1WKl4&S4 z2<+p^l&1THW8m_jc{;b)x|fYZ1}UErXdf8f&2pg9Ht>j~PmO`>4vMS?9Ffp8>N|8= zI10Ty3Q@-iK9>=F^v_lv^nnEQy#(1+bwqYtFPl|B3ywa9?b|G``_?yfHOrrN9BJu( zi4<>Jb9pjkruSI8S!}zdofIy;o4@{jLB#aUmTbfOMe$%|@4e6QaQHh}nMJ%m9ExH~ z@V0---{}>FcS&&G`BKDjbfS{P9m45bn@`Ow-Y(ZHwA~_cy}ijCaVT4`E}40IwFXCC4DrpE@{{KQRT{y) z+?3|-^PsaEsdpFt>`3#RAoxR1WPonMjyTqWUB(nZ*GU)#H2n_;5u*{>sFQu4CWB5W zwPpU;0G7XNPREdUS%~F2Xeh{>AbKQ_oQT?8ABj&Z;ok0!rS5NmD$G9FWQ*u^bY$;g z5>nUF2x5aEUeS18#_tTs(l=gHM4QTwm?|k9++TZTlVTS`;7>0N&OCxzHGbTFR?QI$ zLAG&uuDR&^y58Trj6{UZ#J6|swiE!Ovjl2Y69< z^83XeESD!GDus4y4I#pl-{d$<2+8O10iEhc9cB8v!pg7UeW$|dd;#3A&U^Yb@f&_P z5r%^y@Z&}}y$W!mJrp0|q2b$J&ln*}FSLzKcApcU;CZ*@6M*#OR1jtRDRLfY$gK7y zJX7q{%1~ux!}$fBxo!JaXAy?kxpn%+pNlfK;*}K!Y!1tiv$(%8zl+1v{R4YS;J!w6 z-82SE8^4z>2*4Wr4gTVxCo6W=@*2=8K4RuOhj`?tr9k6{+K%U$(N?=T zP|Z}NXqe&6R%5vOS79VJMr`o&7)o-`Gww^eu@jYZWKxQ*pe2TBsmv151$BJU;Ws5H zwN2JnU&Pm2nCjfbBRy%!X3~E!4f{Y*uJu;s_MUNflHXao#Dp;X83Kns)5e#(*7wf$ z6|R@lEp~_2e0%TwpNEkzAJXWL1x~1HJ1-IqzVz}B zb3thx88LY)lqSF3AkXuADGb*3^fo zF9Ti;WRcTuBMhN^$t4%RsNL4I@ZsyW;hEAix!B&jWwXF{>)e;arDQf2r<3#qCpXoo zo!cw|XG{{|n5o2$ZSrAp_lC_YzWDDX6{+a&z4z95GGZ%@4EH4{|}T4C2$ zcl76zqj>s`jQ$h+dKicP-x+`0ClYsDRW@sFt0pGdH%+bGyC?zn5uxaf>;aD=p-l(N&k8-%PZIIr9} zKkWL~C++A!tjD~uc}q!HW8%;)$Vd=1B4+=7K%Zsw-Qu&l@7a}COy=95YRwRS(Hwu6 zs;*5x*G@!VTq1XMfiPr7R7DsJVoPPV{VgZY^#Qffi6N@Ctqm?^TCcLSc=@r^s5`gf zTk-~fPL1YXo&#|U&6SP6aZ5jb%AqG@8F%&d@hVP@M-H=$*12k-_ojfLd~2@G_g{4~ zclC`|$DUVu>}XPy7B6WW25(*jnCi&(@f2OCNDM3}J-C)^401NWXKwpSqx|)2BYpSI z978c&(E(VC_OILIOKEW18Y*P@A+`~H+6F_#q>h#(FE$Z{0;$Jvx`4B!Do8#2i?jww zk9a0ZVeTh3>B`7fg#!=)*H*-jI-X{o40vn=QCc(R8js`}ks4-K)lT|7tn9KLPrjHh zpto#a=H|PKZ*(^7gz%73%VZOUkJCC~QAsyrDe$P!l4pj2%Y0K5lp{W}ntucBk_FOYR_HJr~0b zKSsg+^I>RE5(~jkv{)#O%IDvD|$zko6NDp|bWz+lt8U<=m`t>ufDZ zOKrxJhK`eR{Lg$g#)g!KA_M-%-Q8dyq9%?BHavr(lK)N#rwyb+mi!K@`J#wUe~J7G zXX0{L{&yQI*)93)Ee4<2M)_5MgxKV%-XLT=kLs!jBk>Frzk6J_$4fnxE(H3t@)G?X zE(r4{`ez_3;!3mfWHZucHA&hQnA`3H_Z1CPF9YRPYoTTc(2AOY55$!JIIV+vLZ&w5 z{ms%P-o-n4j9`aIGP>RKi2mucq1G*jw;bKXj7bvSWu1W7_ibdSHitFr&F9J$3*o7- zApz0vvW%kBwyh^jOvfVbML8ZXH#}4Ok1qs=XIK9(3lQ6UeBuAvs;s5&&m|+`j^t`} zT}<+9NkXcQWWZ@gHl6XRODd8x|?^KU)Rc`pP|sJ5TdpQGBjp z+S^%PND70@4(6TJX-Q1YhLfF2hYfMv37U&KMk&!H1;Q_?vp$chVNz}MDq{@aGPRht zqwd?K5;x`><0nNPjN06flAlNpay=a?IThK&jJ`aQ_}o1>6+8NNR@FITE;%lun-3S` ztC=JPF7XYNSSY4+Ra7V$`Q9@59OO@aPtrGQ!oGc0+BR8lcbBx%V~{@s5?2@Q?!0$G`ZMg=!~5 zW+T3KowO_*pa)`+s~EEEe>4*pY6V4;6p8NVZ6yzTTyE@bq~Md@%MQ-j9i|?AIC9Eg z+^uRzY_v13-WYTm$=j8cahNR$?c#PU6MWj&=SM=Ot+2?hPEDxx`Xk!Lly|qG7;E%l zqasC`y6GO4x>B1EHQB8ZhE7s?bG_jiI=a{9HOk!b zwJ}#ld7d8Kd%1Zhdn$0qtZl=%lTUWp%a)0uYE6QB+0?^fMWXlHdKbH*P5#~aMCIKO z5sEu2&l?bzxEOpg>D{f%&%&s#{ygd0a0-9+*XQhi8pgOW-=eLP-{w|9eT6%p-G!^K z?4~rF9Zon2EAxsfOInX)F^}|dq^-ZTqy!I5%(Wksz)BLPjhh_jJB1_%V`d_JmU=Gi z$z(um+>+V6T=H{Imeqx$GANLpNWP1lV{Qnm>H-060rgzYL}i*fuxYcz(Af!4o?}DO z-fG0Vcy}`eHYUJ~MxgWlHZI_E#?;(YIL3x>Jvh%0t*sNQ!gw?mmrP3MB~SOvNfJm? zFD=Bf@$UWl#jftz_dG8{U1U&IL(XmKey&0RxHQy_c1|i<3<0AD>OyaO6j$gT7xfJ@3q@0rh3k7R-@3bOT%xCIZfHomv+@is*R`x9tc+hEr2KgljeX1^1F<`f8^!bw(5e z6jg?GMO_Wa1{3q*bQqfH3KhY>R0)Yf`y6=R?dJom#|+q=aK+Pjjk#?MmC>nH#>=r*SO(3S~YQQHCY0@}u7>7LO4t#gmWPpT;Kg!=7+LA{` zpwn9@VDog@eotFUt zE}EtMe%*g?x~u~YP)*!9<>PntKQ!=hSCX{SsF(UhNgeZ4AJGuCF<$GDJ@!o>Zw=W? zg;J2gQ;p_~-iC)^t;56jv6-*fkNSv=SNl%XXp3jpv2nMCTqH%c<=^?03g51iG()p* z*Z!RiNN-4$=%N?HVLmy2yEA;z=nO7UPiZ{*w4pS(4+fq11;+|$h(*K6Ae(Fj5Of#A zm0)1wIlD?cUGx>aY8~XtQQb%+ca*%%@QOh?ICNK}&?{P%s;O^+ar6WrwUF-7A=Mb#BECYkFDjFVIaY1a?p3}o768uUtDv7-k z7ue|H8(a*Dt-D22jJy(aX}U9b)yzj|9X9wYJZ#F7$k;5P9UT9VmTFc)XYkr=ka&1l z3^(pKJfh1Vi4iOCs>6_yZh|}bi@B~^*j5e#TBgVFpU@o$+?I>dPa(UdheT;p$1~i6 zz%q@_pc4F>08@oORL4&JTv-8 zk@10m2r=g)KA6%aq3et*b5^eNA}5MzH-JYikVm#Kg-JTjgE%uvoDgG<p4C=VW$!ky*{nCDMiDiKjLYN0xb1b*WqR3oumf2m+AAqAA!)0l$6Vp0kKTim+fU} z-iFn(_s*`(MrlybHh~Y80j)U2H7!@{g?4%Cgtp0N!0$^$)-79|M>K$_Lj~8_#Nxi4gt=n#fICT z5tHiHz%Lr$NYJAj+b>#HI_u+f&Xu-15*Q^s5BfgKc%k*=rf{j#2+y28+|K3KCl+qUJmuRk!V}X)aIzf#yD9bD%f$`ew zfugXsBi%!=ZGx*F*+OKkn`z?Do8M0k#_cXiet550)}M$@PGBk~Vllzv6n)6D-Dx$6 zg}2l2jQrBzHG2oxKlgKfFNY8w&u9NwZth9%m}AVX1tsi*0;elI3x>d~LV-T!8NGVp zOu&f>E72C?U2c7i1h?0OH$q5R&ZLT)`=OcY>tlxapCDw;gHEM~M@a!wQA2|^PrqoC z8$ULlHnw-=?}U48r2T!Q#zHyl;%X$ekyqp&@OFzt^BXS2a(yR2sy`4hL^FaIKUt^duAfrK`NFStpzDDK*ShhE!!F}EAx zyk9R$?5U6V{qcLW%E~Ok5-sA`C_gc&kego)R<}6mxxHR0h*vC@pN>m-9Bm8_T=$_< z0mZqlqu)QZSkBZ?>Y8b@*WFO_8>b?SSu%sm2XH(DnN0|SbPf@DfmS7mC&)Z& zH9qO5i+E$z((M!dywiUAXVLt`8VT|bEY5rqfl2)u`Q0p?N<9drv3vx7H+a&8Z7l|( zADP$E)^23R6_2#4-OBguu~9ShWwXRn@zsc=&+gY3=fN)36{$6R z78fV0Cb?nRPp1D;QrrJs4fH2N$T%dwS(%6!nzOAXpqwz-TRynd-)N;vGte+d@31b1 z#Skvgm;Y^`C0Nk^`@E;L!XaR8;u*cf2=B9|HM9m)Z_EruX zTrExl$fu%c6#z^r`%)HI+@8}dxcy3|ZYNnS8_;mu*1*>&sVVZe?@Si6EP9Z0e{?FH z2Ehcb6v@T#x)L|(|EmO`z+-EyjrXK*fFs~BUvA|F3M&#Bl1V8f9VLxHqRf6fMMQUz zDe$gZoQ~N1ujuHi4vGeg!;u*fAywR#1+d6z^r#f6#NvN`tS-Qh)re{{%jiYXuC`i| z(cEC%{q$3LHLoZ z0Y(@@B(nmPGysx&=1f}6M1%%B}N z4ACk0xTh?yd`HLL(>u1wbDUc1`Im*5gd+<3PydIfvxCIL%Hta&< zx6WM0rbhM&9VOS2+HP2A%6QqFg-^wY$6435iaFTDETV;GT_L~VPi_8}*Pv~~p(C-B zdt)6{^wD(AHl(T2wDQ~JR1#Lmm~DT5l%gdzi`7BeSM`te6@=L`em@-S&r6NsBb@tXWp`YZ2n#{-5keK?@ec) zEZI=v>_OIrBv5b8_fa$!ZzD+N)WYo1Ng*LfbeYpG+a>kXiq`>nkM>+4hnF^zB%#04 z%xQiZ$cpb4#ZEHLTT|TMW)Vvj{BtaqzmjVW9Z$oOyW)ofcD4<~_z*{*`b@L)-JG;teP7DgGqEjOlTj7XZ@{Az)z9V|L zk>*aeqv0)NahsN$6CfQxW(V~4|1akt^rU) z0Y|ON{D%OsMD+aUl)0LOXYHYG(O~XmVz!W+F%!-aVfb7%(n$^Qu-T_@VH#x@=ps`EWi#g+Woc_$fL`^mUOF6@|XI51@q9xk*0Ja6O9OS z`=bWOH=aHRVm4s}2p3NX$&4kRhrSpLTT0J%v2r7Pox^`05sky_r)OZnX%L5-*2>@L8;7vW za41vj%UpiNxJS5Hm{dAnU*PBBA8l!GZ?{rKDfYpz(q$fkuvqjUk4C*BuPu}~+1?z> zj0?F60xXv#jWLt3GX-3gYoAI|J6V92GOKXxVdcOWL6v^5bK`JynCiDpQlw9lkt<;` zfSeg{o%Tz^de(p3cNyYIc@Ln)qO>nkl0Uuf;c1n||Lcj~8(>vY5`{x#7yp)f(&P+y zy%YZtL@DE4-C-#uzeNq{vcFdQKNDjSL)DEWufP0 zV1-xLGLj@SKE{rh=CgY?F%WxMd>6y?^S*qsMpKx|q6?M=Lw59qCfZ)FH2 ztID=ON(`*nG_bFYG<7(15Jn%MFL1v%jg738+j3WcU29cxqpBMfrqjGP8+JH>09wsvrn|x{zJJph)?10i+nldJb zOtBAQHTnxKIn0-h99Ebo7SmDDwn(_IGZ^{xIj%o_mooxbeNK9-5<7NzRowzkEP04B zl?M9mY7m;KXiAhzdRKg4w0U{_$kJvg?pkj>6Y0%-GAKRJ-JJQjWKHu9P2Oq;g`YBo zSuuTSPS&(CH=hs>nDf4}y9)maq|DbJ>t-P`8UbbI{QiNdVmg@RSsbJq`GLn+(XvcM zCA)qpzfpb%qtcMA5R)eN(>2RK_3p1bi_X}w+6Z_6p#DD`2@+Fh9Z)BCZoB`q&?as4 z7aU`;x>4YPq?kER3gEXYxA!~X(wXCz)DGV{2LJxJWwmk+rf-as9!ZI}*)&2w+0BCG zzzr;Z;P}@GvqT)gl&y6oX!08DWVP1bKzuUdLu-3O;0 z(@_cSEzwKEtr9=GH6sw0CU$oJyDWG9@|i*s8E885$yRDqf6G*cj#pnqEjlv+Z9!+S z$4Ec}U^7FBuN^`DdbR*vnprAMUUtXk-g=#B6Sez{2utpUp(>m@SC-Y-wG!&Jz4x!4@Cd>mQyy$ldz-pOQk3wmv<`;9S3s- zk&GFLYO47nP()WpYz8Xner)>!wFy|eiZ|_bFxBUTyd2?PY$nfL z(bXADgX|f0k86*LeC}xedL|_X)knNR7#$#sf)3e^#ptUj$uHh zdOV-vS62efI%z4uYhqFo)VmRmnta~#tiTC0#^fwmG0aATSe2HiQx+^?(aTINw4X79 zg*uB1q>6UZ6=}OJoPtMFHFKH-9qNZKYCX|#)>jtAa zERhh7#NC?9h2D_C#D-7#HFAIu9Zd9~!}}Sj+c= z!r0-!Aei017z(b3wU#r8xm9f+PITN8)6C6{-Y;VV{s&F6kjnR6PrwZf+7Zq{AiwVbF%WXu;zA^#f8h|A~46mR8n`CBw&_C(v~bBDuWhHfE!?(Q~@N(SY-Iv;-3ZZ zCT}jO2HP;NwP;v-JKSJVG|N3E4Y!|BY)pMGK9)qZq#PIJ=f54T?4-tb-qbYIpH4!lt&1(+_QU zC|ofha=!E+X44N5uhw!Rvjjsld~}sqrK|R}bw)XYib2|fVpRE}tI@lajp2F03FV-)AG{op~ z;$Ac2Z&M0NqtlB5=JgVIsSrS^+U9t$KC1e&_Aeje+n06JA>`hi;@xlU2J^Zt$+iIN z0dKL#KtsPP`sL}EJ@vtE!(gUc6@QjmZRFunnbmXmz{>evAhGyaG;1+hII9Ou@S|(I zpr`D+ky@0(%Yyama-&tX@;)nw8KUTIlmC+0>>AIF!p3tud9+ZLU!>~U3(zoA&|G@Yq;FpQ281+3H9jug+(t?SJF_p4 zfIyCL30fURwvWYMzUD{06Vd)@vz$jh+A4r=;PO}5PgoploV~L5u z4jN@G>L-v4c(bv|Q-oOhi1eJm8d%}KzUVW_1w_bYv#Lu1)pCfb4}{J?*PywlrrNt_ zPN7_qY9}ip+RB`Lw?XLb;m=f3*Ef^wq>8iA z9ZI2k0kjoO?)*soNMjsA;t>ayI>o83=13WfTgG;I3UQ>`$c>KM#~V!hHP`6Trt$5hA-ac%LiO+|u+8UqR;o#3G!KfJK>G#4Jc=8e90 z%y4&&jLgw#l9w#7gBQO^y>; zPj{2sBhPdT)668O`}iAu78w3`G)4t-i?Ob(HFR%L}vBB=PAX3qaLG~r1k z{Xb(kqrBU11gb%R5q1to#ATlaqd)5f>SW%A-!cv-f=s7$Z<9@jO)9H8?O|!kJbNwk z{gb`qTVJ&AIE6e#6*wxR|H|I}3qm30U!41suSY#9@N`g^rM&&P8H~1@VN)A_$(uW0 zz0&G#(qym$#SL^4<+-B>Fs#Z(><2yg*C44IaTIY%KjA&?kQp@V-%t7i=wI&R)@TcW1KM7j zZsS$ju7>G|w2H>j*GU<`u`GAbB%Mq?=S?1r1vhCmJ-Kf|3rgdoJ}%k!8ke0el8M41 zzTQj$@TS^$9L_(hn(UKnii@EUV7=UQh%bDqtA4ph`(EYqQe10(O|6-`ngTD|pUxv1 z;G5no>S)W%^t=W@eXeiOVPgNPIxuszhX5ORJvt-mRV)HIT@=-^e)8NUxvk&)&R}}L zEQ5%tc1JpmGerZ2@NAtT8+_ngsfd3D5Ka`JGMdc__MNK6knULis|e^x^q6;M(~CPm zd_YfERVQk{(fx3RB(IC6(ygs?zs;X5hQ@K?cD2^B(H_xXl4+ljC{IESbcFV59LP;B z-mNREA$Mm0xg|MAz^8R189Hzf@_N5epg6fRoE z=Q_?JrBa*IKE{rdgqc70t1huKe+1MOsN{2YA)Ook&qKfton*u+Y5L`6Msbg?+GW*a z!!Hs78cTm}Ua>!hJOJBTZts`d+5orbr>L_(K=Swajw=9{d|J1RFz`#eLvLV^cgCxG zbXImEOu#tL4}vEu8x%*?05Iua`@D@fFnPoQ*4<|7PHZA$cE@fOypSkTY@NR_399M) z+pAe|vPJ@scT#J2J=}&2=!^^8>y@%m%4d`{MT{K!qdB`2m7qz12%O5683}#vo}&R# zhM%!T9Ra^MC*HH+`%@}R_)vy(i?}}BYd#p*#d>H&PqnHRKjn1}o&_k~Qi#+LbH9 zOH!vzXYraJbS9i$9I6XPlGzN#z}jjcEaL=V@tRAQ2KntJPx)D2NR4nA1~8!TEtdSh zECAS=nk3jrnKgycW34A)h-b`#Z*}P` zE8R*1JKWTbxEl>95VG#7-N8cK%g?7RGjqMr#1b`a{@zIAQfukhaR0zYSN8?1EW3Kq z+XAn%Gi{cnw>}4G$oB=23`YgpgQEax?5LNL6r|5J=g%h)PI&$Tby_r>8}R1U2Egam_W2LK3Z9q!EBX^Il}CU6 z!Xv#)yrX%5@)1BxthnUr62SZmY>8y*UK~POAUthfsd4^&NkzN3!k9V+(%NZ+ahz(w zCNe+c9;M3h{6-5B53e)mY0weObjTPoCWMAsv26hQDTGgT;PtIv((bcp zG5$@RFIOX1z9P}FTDy&(Ek!O|5_B3cy+noaQiv86*+K_JSsZ1~!a$#d>UG9ASx$+|GIEe^N7|9ILNF@JZN~C*WvT%`_ zeP6`Nq2f1?(DL9l*@_+8xOBXngN~gzUY#oQ|2h zngx+7R=c3RCV+&6IhBLPoB)!%iy9CPx%{b%)2A1mhO*GL4A5hCVfDHCu_>Zh`hrW~ zsM}h^&6Sr=sNgW-9OIxvfPVJel#tyzWBK+E17Z-W^18nGV_ho!LZ!hyZ^6p%$l0=d z>&de6lBe5VDL;mLAx`P)5`R9oniRw5g|8OX><7(x-)*ChQ1J9>OMmOqwpPwHI@~nJ zC>PokXMUFsG-`ou9hWe@==Iiiy|f0CdW9YL#kZ_aeu5nnPl&diY!q%3DvG`h93nkJ zS}EI#BoEXM7bc${f`Q95$0Z2-6mLgdV2f+e3yukAvN^%%jVi;hXYSIt|2EOJi^-94 z{4d^5s2%zpdKF4b+(Q;hn2^Era@nRPxiFT8cl((;;k}7Beh>rwOAln;6uz$c7cX>d z#W)MG!u<8)HS~dT1cMIv;)82d`%y)V&`DkNW%Ii(xyWSiS$N|)Xz+j^Sr9Fd0KC%& zCIP6MLl*!@qLBS@kf(!Rd>*7Y!GGO2URfgDvsUhnY!oUM(vXS$8r$3&8ri%>$8@1aBf+@43i z7;+yNQjQ$*$RJ|a4<)C7F3*=y>g|=<>+%t2b}Ms$BcH_64j6%rzlQbX5lqbM^mJR? zj1|ZJkjyRPg#Ku0W%(WBpb?m(D%7+e$>6Yr!gbGu$8b|b1-;Sdxs>TM;at(B`K1Sp z0-Wjbp6?HId-9~{4XNXS7<}wvYS!~p9%c=PPB;y&a^~1lk{X>3yLCCKIOCS zI46Byqqv=5E|r;^BauV; zJ*a8guMgj2yCpm4>U8p#PWNkthK62wG4gAdLg6|J{+`_zLqBD@YmXR^iA6O`ReAYz zV_nWgs2cCx1-g3u!zXpbM(KNvua(Ui_&Kwp*oXOUp@jt*3!L8Vp0k5+k2lv=hzSHq z?*$!HJbtVBV!^zq40Gw_Q`B7dAX-qTf(0oM?jDDZD@ z+z`zR*pq7Sr_=o-Cqn|%pq6nc)}A2jj!i8F)(Ot^N;#_q=GGL4hN0N{`vnZ_kUnDI zA`2osU?YZ4O&CicBUc65lI1RrDyRvIi$&kQ4k(NET3l>7i1{a~DhPbBK&g&l2lH=x z>6i-s>~;CZSJ40q`u!{(;|a10q>`bq9p@~a%D~J2`vFh#&53y^#L-PH!@r?EzP9IS zS%TURgnQ@_8K#av101P6RiAQ}S_0RrFr+e^5et3=diDxlH}Ucn#tspU&j3fUeD7P0 z)Gwsa@LI)$lqjH_>iFu{_uQ@qP+eu~)5DMq=Td8UTu4YrULV4lfecOKns($bX zCY`M9vuQLBj|E(^xDaY5MfZk;^B2f^n*%_*?BeQp=7jdKYVSB7BjRz{723~ApHd^j zK0D}ry<1Zhe0rd0kRH!^KDmqWuLF@`guUH2;2Tt${}v zh+Fu+*-FQ^ElaVx3k@($fEJcgu(_u~?abulKm4<%ACseA zAmpDYL=Qx@wk6*bvn|mk*Pj94E{otQh_w^_?iVRcpkrA~SI;daZ^yYM+u$=DCwt!} zizGikwFAgp32m6KDXq65G!+_cj3So*+i!YYIp;ub&fkol4ClsW@F>tAFS#D9*6qH( z6v?ya5ix_J^kB#Hu7#-`!Xz$Pgi~6}Ov-7ou0RlPhQo}GSWNp!ODkqA>3Xl)`#?;& zx?)}q6;CXMZpB`vLuTbP@D&WYYCc%Sv7!}j^1b*PP3WeT?ypg0Y>4uH=*02`5dsf8 zp(gyWEvw${g4byk7zG>J7Lzoy;= zYLZ-zWCQl(2*u_?+wzyRh#-Ry)CZ8X@7Zu1-CGc{dKxUnYXdP3e~Myxsl|7Eb&NX= zf2b_bC_F)ZM4kdU+yUBhs0FnN7iQ~=WtSfP+0zYz^JSGmB#iJ?X1qX$>fCoaf9L~H z0=?}6!7E($v_K6F7|(2+d&d=aT|`3VSh-vt#oMKce3x13ffU-t)WH zJG-LsFe>#%h*bJV=Yh(f#1_g5>y8>A&midD9xx~_`fF!o3k!{k@jlbgUF&9-B$`SN zzgd0Mq-*Gcq0icZhARn@H6JH`z@KomnbmP-_R|BxM6?=b=(G^dBJ5v|z+I7to3gKl zxNItk-SYuTXP9S%m%+RmG0>ca=-3aMK==D7RU~dEs91Rchkg%#NjoEeEjj z)RU-5H4NaHMLz{FYk=sl7@3)I=`7}7m>EacTp|G ze-nRxMt*c81Cc%o<4!6IMNR9)l(Mrs+V8r_77)G)y}yt-7eQAVSce=U$#CI;7+FC$ z%&BOAlO5!k{SmZnM_ROV=KEP4D=>&F5V$W`e$)9U!Hw4|O`UNEr3L~C6K!dWHUx99 zbgP!Cm8}ys*j)psXbwN9w0Nqgc6?K0wND4VXvPcB?@~ zE9d#Ut%(Zzy=<^{Y4j=OE0Ur)8Pyeyt2-~vi|I2IThp_*WI0HxG`MQn6UT{UXAe?` zsyzaz!e7PEzIQVaftH=*(pmq7JjPD%$hxl@OEnDkiUlEWUQ$>@J(AACfj;mjHpj8! z1X6aEUr-q#)mp1~E;ReCoVMUGxmx2mLi)cv>NjKG2z#`1B1*xw`st59`t>9hEV$L>F; z9Aci-ub^mZsJ5hCgL-(lxZP_I^mhD$L4AkGgURs#s(Gh8(& z?c@{0*tpjMWPxpQAQPy0X0fz*YkRGh*1bnin4gh8@e-@ZlgoPRz&0XJ$`khSSaJUB z@unlk4XZ+)&hbAI9pV9RJakAFJll_HYEt)nsGDtQ1)gIB@y9Cx#7{W>I?#w+! zH2pMfsJxiiIDLE&@}cqJd05~j2)G9dP{S*Q5!Ow)u6_`J4*bQ|aB{?CXIA49;Y4{N zsEYz=;#J^x2|5J+;uw*=}bCMN%2xt(=w2Cn}Gcf`M zdg?svLko8v_}=B(yqVbRBB)q>Lq{i~5C*>)#|N+15g^zaRP)*2jKk8}q|$*J2G&}= z;oJV1h{s^JnYeF##WMtX_CWVGHGqVXUxB%lrMvb{w3r8!!HNAz9#fyd@C&Mzg#{B| zVIp>)Q#b4?YcAR$s%-}zv{9e$7S^sYp)WQ#sf6)W$UTD%jZ$80M(l3YL=g>b6PA)c z0|x}DQ^uxm-@j`Eeewp0PvLNee*z8CU}&uCgM;?Ort#A>dwo_D4;g<}zizQ%OKTeX zHR%<`mwl4|GjtC18O%J0gUlaTY6Ji9eXxNbmkJW@B+8c4s>wVyrEJ-81|L#;>fqRB zsGX^8*N!hpQkH>*X)1-pGNyTtfAkiHcHn9q4ay4(9CE0mGqMS} z3B17yJ%oV1C22Kb)C)UVfUr@%=4*Ao`xjBdZdmf?a8e;SmO*b__f@lvy!nq^xNx6O8t7FtX&|~EV;d!O;v`j^hcRQda8PHg9 zQY;jw^yfn+F4CSsy|1${(gi|rNM8Ms#QS!ck+(j#{HRl~NST!hT?~DUhC5Jdc^(q* zpz4!rRMrrWADtbx04WIpjT|Y#sU7`55Ty^=`NYe&S;+jp;|jjxq4ss62{MR7%(Xv( zZ@@2cK#NVbo3dI$CUVg;VJ`VFn}lc;unGr6mbmwv8NPx|IP~B1$PA2Qu6W)aFkA~4 z#VCnr##7zNesFmn%^J!bWK*GnPFG>>e8qZe*1kE3S!0l9hJqfq2aYy8xf{GFub1Q; zq_o$69x3I;;O3)pSTMCiw;ZBFGr}Wi49chw_l^?cR)(;&GIzsrYqVwff;Fzy@tfxm zn!UKGQ(}c4wbs=q&^mUv5kLJyi|gf>5Q7h|`@EHFw2(zq@#I0u3stbs#Nfu@!HncFZ!j4X-tiXrWGC zAR5~zWO*IPWZ9@cuZLjTY4aKQua^?HTd|cKOJrVF9j^ru^zI@ZmeyKhbAt*m?zmYC3eEdA%09NxK42cs{OD~ z<$4Y1b>><(AbE~3+=7huimg;rk03wDtya3zM{^4;Jk<{cN)T7AT~QYEgDD#nabT?o zuk=3eQ2JIAh$_qkH}Y&l?5x(@!+dWg(!HO4nsvFkDHm?7kx0Qv{$zL6t0V|Ysqko| zy|HyBb&Ye8e23MRV8dl5|) zImz0ObKaIL%eUa}Q8K}}=?TAhh4O+ZTz~?h%|v!$M>24AMcfj;Lb$xT^8b|AuG%-x zRzY&osq0lr|2`=&i7M>UaAoKX=8cLuMaSlD63*#9-yz_4g&j~y0SKWuQ z>q$Wn<~g=6vd}&vlTsDo;AQo=^CJ;8ZE&zAT8XtWVSB`CF9 zuaLw4&-2AI0x^z4?g+XR>F;A4JdA5-iU!W&Mb8*U^SKs5h-#4Q53UVwwyTVG(ByRd zogXM~&C?>>)(!c_*aY~JW9OYJ!ya&38?9k6wqamH-O7jis4VtH2N8ekM`5sUKkQ+(JzySN=}>a9|L%*HGn80THkn(z^^a&)ngstAaOixOC)IUm zFq7`slqn!zBdT-UBJVPK@zsAdpxwKXdOpgzFt!3NC%DQMtTkQEHlq&Nu&N9wQVpH7 z^Ynh}A@-{jyaJYtF{s(6_qvJoDZMtnZ|M!1hF;{~5{13fiN2flrT}>XDVycJF5nB`- zr5EaedM7daE_e)g@;vO=VY{Fq z$i_#zmMdoYP~T=4CC1p^0ei2Az1~x3HF;o=1cIK z$B)KYU9s*5_YlGW`hf#iC5K_3c65lw;e1nS7<{1(+5pZi((ogCbUKf-}c6*GDD-~5)a@a;Q>S6}*8b-N+Y z@9WN)zOQp!&O>H6l_Kt@mRC&9kVA_RcRt%fRDmnq0e&JrS75i1G7skL{Vp9oZd`ZoLrcNI5@Tx>@AL9A0W^3ywX800USd)FtO0eO zy^sI9p{F8#&OPZoMm0C)usv{Ga%CIu=a;GJI@7r|IxUQhg9^h*Kn;qGAbFaC%XO)N zE^q?^5ZwutHQnUP>ehQlfSW6k2o9h}1Uw|!mh6k^cx%$v%$nE|rw)+#$Pfo?8yA94 z^G|W~r4@3idx@($NhYo5N0*$Jic?3L77VL90tU+04dl^KNs7U*LS-hMvy-gXKeP#5 zehRaV{qZ$KU4EBtyMxHyYSm`Dk|nhRl5SwUzT&+6HF$5#!*G7JZ8Hx7+_g{a>L}*& zsvZV}4X=kOyNLA=P#!xlD?PNW_qr8&h2X>pKs*b3(D+W21V;Hl5B!sU6Z-G;vHV`C zjQlMcq~i=SU)llXT-zQ*cW=DIo?{PU9V5lp#Zx4D%zK}8?P@Xxd-RbsTU;c6oz@v( zR?rMCH0Cg7C;1;f`nsbYEEL8%A&ObtR@9b*W8WF&!P5$~q&xd}&Zlnn9cPK^n)jR- zlzcCPXkQ;7&yRB&_bMp=L?0cXhZM-JqYs6N+ocSjldh@7I#BFqS})M=$i0pZ!RpF2 zUkIvN(%+)@f45&h>U*e+XHPI!ABI8O0D?(%#b?d*$xPjEO7jOTHTYL-HyK14VidC@j!;^zIh-9Io~jNCr3A7!&>d7E%-i12i$-!u8x%{$Cb= zYB2X+KzhVUPW)qy|4uc|?$*G0Toasa+1B(peo8i_&QX=lh4Lhcjl=QhTS7$yBhn<2&In{wV$%N(tCu~diXaT7k z=a2h!j>5StJKd=S4sD_$1_avG9zrNXnuC+*hQp9d`%*9p3Gp;*-o#?A)X>U#Cu8{A z^@G;4$orYkg~pQgh#iMqyTOA%uGoTgI`g4LSFT65_dKs`3u9&41cJOm7QZCw+q1Ds zL!;=r&pXj$?p=pTIO9?Bi5+NSaw~U;ia=FBR=E&^{e3PE{@lAG%W+4R9C0& zk?|;j^_d|W3PE=5qdJi~94*ItO)A2G3xnQA1B#xw)#goy<8&FXcT7iGCE6JR3g@*C z-^A`cCl=uYHPh;F2$DVDZ)Oy@GU?%O(V_cw2N;b+gZoEtA;CJ#UQJ=o??rsQmk-)Z z@T774qMX5-w_n5u?7wz~?iy@q@5Ws;)@hU_LhsDWLB?|#TUNcZvs@_4$wuv7R$*9t zpC$`i%8~8zSZ5{7EZc`CJ+3B#V-inWmKdVnX;Vj2-}M68hMz5$jPe*olfwp2;Eque zHqLLQyiR_A_ihq-8r#&u0^XbWZwB>cj%l;QIYz(P{~dI=aXh)*8~hVHv#QW5(z`HY zE|-L%D4_M{&S!A&yeB?bP1COFF^1KDJN9atZenOEJlFauzUuw^FUE2MYE46*a%914 z(dzh0detYVzJjF+FjYpKnTNnso|_jaklW*?kxd~^U9*oZ<#XZI#aOJceK)~fag3j; z*ZChV)0Jv&ia9?fYOx-N)<+pw?y)(H*08N>W7^WmlRB}O6v!97$dn_JE7w2rnw2lU zjJkID;O~{GSJ$=ciG{J;`Yy^sbD>itMT+N8GWR5E5MtFj&d;2w_CksN4keidB{s`{ zOs@WEk{pfS&qa0rjfy2^6BYPXy_bYBF^{4oaAWqNPMqs&m$iz2^Qv{6p5rB6`=Eh( z`*F_?jDaD=9m&B*3&Y~}-~*9%KjBh=i^;XCKB?MDu)k`xu7hhjw+7BD+g^ytg!7I3 zu>0$Nn5-MjkQ(f(otu~zA44hlz(xT0+Q(v)4Nga{)UZ=rmB(fx;El)AYqXH?iA^aGG_VcAc#*_D3nXf zu#zJ49^F2I52MM^@}&%e>cYDms(tIsWtYi^gzokEHpxk7JlSELfaC74i)9Nve8EN`kxj)&qg zjtvKe(9YXMrNh~dCfj=b02-Te59JD|93jo~3_HUd)-aub^qi@?*OtV+N=^S1`G5tf zr<(FjF{?T)0g0*<-Ih5DokleG>#uDF&m4Bca(AL|>LG?z6Q z=LuV50}@y^M&qvBi|gN-E3K9k@L83KS+0w%_1_uF%ck2VeYl$ftU95Q_)KVKex)Th z_?H~RVzAoPTno!k2WTGovNGKZcm&;?w@2Ex%r#rvy1|5bFG40N-qcT{S*vGe%k=B}hqpmXSx<7-NgN$1kgHNMWKGVA94e1Pw^1Jiw z)`5eU8xnW7bNI-OV3MOLUL-3o_#h#yqk zoisKQGD~krK^tvkrwoW3ZI5Pz@3Ib?cPI51xvC@$3FfhRx>qEMVW|M(Dece)fIP$7oZJ%oQcA$eP%KA>s{tpw2p=ZUIgr;T#iTU*q zFFKW2#U}3%y4#-;r#*LGLBj+&N48IB+22N{!QQeE*{_}lTz*{PpARftu;r6&&IBdl zNZ#s(Ee~!d;&w@Yf12bTl*-`?XwGs!G;qFMVk!$SFPxvSzYoND2x@8U#PY*=Je&D- zHIq71R3-ldd9|b^KXKdmHO55ky9aK-k70gR=95SS)~muHmG$m6+jd!@!!{k=N3(=0 zWv}!`r7rDqf;4QV=}eWlLvHV(1D_+98%3lp>-br@o4qmz${{A9F_w1o-jd3}3>crZ zwz4uK`U1X_+q>e}+dy+zyMU#8;dHhR$?jLns26@UvFR?Ip*(%CB_m^7`#4_G7J2M} zl#9ODJHK~|@AVnCHh+tZhHg)yZQb5c7~>-9O(9-KLX$X`pSp(H$jUoG#kJb!%=6|F z?*m<2Z3(Itt5O2Q=$3R}iaCsm;9oF{BB^ka0~vy|*6(gELwt${#+QkE7r_eim> zoQ0z4YxegML33qJ@-VdKL$y3APhRK?*0;0ARccUwPSg>f z)E2%rA=>;R_9lohVDsv7jT7ww516#e;3Usg^ko*MV5hNIGs>qv z>VI7!x2lf(_f6Cdk(=(ev-w{}i+ZI2!E)VTrN*;C#a0)mPP1fy;e+g=hq^yEP9?|+ zQZbeH-js~U>~r{}U;9##Rq3XH)XkKyaH`vs(o*B|A@#C(lBj4;zwx|c)zah_BwYPK zr1zhJPSB1MTA<|OVi>~U9~-wFwl6bMcQZu-sGz39m43;JsttK6wda*l*W za?c*yQJ%nCjfS^`iy0l~m`y-Ze^kEOL?7J(54Ae8G#^%j+c;%;!E9TRgReAQlTNc% zvL)TWeXsz7J?dLCJ&0XF!QDxXs-TyO z!91`;vp|GcA`Hw=oQUU)HiVFm7oWO>I4*wYciPN-1eIa3A1Oy%3lq4W zPbK2@Z88AP8F)&RZng3t6)0R2jLgn`C6x#FADZ_39ny!+G@>g%ck~U=A68|s6) zDX*T++KnOi!x+mqpFBxzxk703e<7QdHC*LN238|8sNhvJvhEHdc5cY+Rn1k574bYt zl*(s6nvYwR$z8K;aXoy}4g-(ec1jX5#~BSl!#W{udePUi-r?`{rFgp_IqMZaS;QY9 zI16qCJfI0c1t(K$=~rxy9SFgFLhVmB?jQbUzJAhn^+z*z5F30>UF|xhQSB?nvumCo zhJ)s_$;@Nj3swJ^;WM($Lu=zbZz_yQH!<9TsG{qx&b(qUQ2uIN81u)Y+gG_Cg@ESy z)YeZal_uuou?;Fi%Zm^llHg2}T z=Yqm9Ymd%{w6Dn0rO;0WeZ(~96jv=iN!XGbaGV7|1Udswb6_Bp>#1YXj*>b#s#$ZL z6Hg{3I4>AW=V?bK#B1)u3M-3IjI%;03gh0iz$e`mVQ2a^EPH;Zo$#$S1iGI$2Idn{ z%9}zv&Il`;9BD$VpdivLmn|pf)p&~`>!UAQ*dgre?0dmnzfoj7<|Zxp>antaKl=ifu(eFtkX2iX z$+{_7_1*WHe(88M-8toqCw^TSiTaAPm%L(-$e~C`IY3<2W?#Ihb%qz6=PH)aOp>CavU%xL4yxyxL&=TA5SmAmtwO~KS&Tl|}T&0c; z>Euk5A~7slFaB|4N5kgPUM~VQK|=78yZ?JM-U*y34#zvluh9YHWb7fDYRUcu-W)S< zxd1k&Riz=4_X5-pWt7GByR9LqC1n_^%<)@dkw90ooPKgQ2nogBHt29(9l2NtN#I?rsSw=?COcSmF{jS>F$>9?(SZ?;qL!_?tRG%b{S^Q%sF$O z-}j;5q@mNEkgSck;#A?06#0oGL9c_cGo#!A-wMq?9o#uQCssuGNHx>t%TQRMcm|nI z?}+%YPi^Lm=zjY(?7*gp@UHr+;WLE6^SSRswaT3@R7=xLN-RqqzROaKrZs9-Vrf4o ztzLcfVryvf_?HlsZC@$}35vqM347-Ai7jpNvwyfp6F%@e2zGigQoZ9EK%G~l2%yr7PnW7-0e-fhyj7yw^dpBlrZ>)Rq zohFQ4i%Bf)mM7hqc+hV=xK7~pVhWNz?XBjg#QdvNPP`jI{w}cSXTHC1BqQ|uy!F1$ z<#1BTRmZvMbwa=Y$N!WyH}ZSk{5?=$B}iFL=o#s-VlFT25y)6z6~#puDoP+y?!zH*!kwtR7{|LVEDITd4>G47lBoW;AXWk2@h_TR!|hB19&nt;z82 ze#S^D8lLwNHa+Y`%$WWt0nv=N-3J+Z-nZ+(+qJ&VHS3(;ZQc|t?$$?AWYi@=7egf1 z_hog5o~Q~u2m3j{&?bF{n>c6gLFOFRlFO)W?=Jtjx0>&_h1BbiE}0)k*c-I(3Q?6$ zdQfUD-yHh;?$aYrntKnhkEW8PY%;&MW;a$6_Ov1q6Xr`)L?fCwUZXRCNkj`>TBa%r zU77kEmNqzJbZuy)Xm2@J`epobdx>|HR^yyR@ICvP3taYKxxTj^9B(>AYE88D!(-Nk z$VWdOlKtx{IJeLvbmzz#<9X0ga@OP2oNC?0{`0iKM_f2Otk7-CUOt z(g*dcu>2zFM4X~5^A9c^cHiiT;i>VoJC&fM(E2ExK7Qg^BCUVfq>UoC4E_9)X{J{+ zTxp%Q_23gdxZ~=_-U6cC3`!&2nf&yq6K;oe5k=E@degMv(h~IAn`>Y$Oh}QHTP6D! z>@XOX&I}!EKl)_PtKGDc4ub=0lF`*yzamHD-druf3!x3wRriNDPvWR3f~*rInpRtH zMcrQ;(X=7n|9)K&%Q9E&g+3Yv@C_(ZjyqJU{1ZQ%orqmG`gkomukF)!IB#ArH9w-G zLjrom@#wJ#cU&9ewh_6CFHx*WXtFO%QfVqRq=GXlv$JemgXDm6cE>`4812#+%av|( zj;rGZ8$|uC4rP`fXJ$>kpBwW;YHv#Ty^En=;N=DQs#~w-7@X;*Eh$*A8hPD=Pnu_U z8Bv2%l(XhknO`)Q6t;q!?TR2dwk8RKXxhFHlMO5O;)tr8H_Pz>e1$9+YnIlWaz;#o ze)=RFl|oBQ>1~W7ie#RpK^5BfiC64j+Fc(K_2xj2wA@au**hW0PTad z2Zsv#G!f{hR)JWC>roa9>^uBzK#ybo7kb+=Muyf~(Ah>&MZ(SQ zqQpp)y@L5}|ebnod>=_g1sd$Fc!`SpTw&~S8EkzfQ&&u>ZPfJ?x!$~smKvMv~Cd6`oVF%qIFa{2F7{G z-T}`+X$E_$zS51%DD6?WFt5^z?wCI?xE7B7BiCZUvzxK!!0K-@xF#*y;CgrHAGCO3 zpO_|gBDZ!HmLe@G_tu9%f6BZcDbIW-lV>K_NDv&z>_Bm5TthO?yLo7(v7l ztvq)utjt)xvI|delU&HBZXMeazh_@9EOOaYy-XsiWAtIi?sKiMs{j&P6e+9V$jGhY z+*(7A_pe(ywCy@S+$I~k>7RE-wlwL z^KY4bpZ=zkrE5ESjmoZVCeyT=iNPC7k(UIo+C%Z0l~wC>9xWliQluOqL!FC09SoWo zajt2>_n%r%`O_g)W*RIOZOi%3T+BXci$ti!YA?q=`kul?D-f*{;`)bki!pN|=$H*k zsU>~546$$e>GJNS!X}N~d|T@)H_p7uql!#+v*kV``F;OP1 z{d$1<__jshZXLI!;^aA*Y(Ij)y+-YT{QwW&l9D9t)3|7s8O+IZl%H$tzfo{O6s z`w8^w=w3Wbz4F7dIyNuVDgNCMk~`I2OIMNK4-7u9L)ErI*IALN+|MY}9R-E|cjx$o zkV-cp6+rWzD;|~|IQUfX1;hMd%`Up<-Qfpp z$-{72Vw6g-Qd;ON6v}7MB{8+t88e!(}3dq%!buT{1kbk!<)kx;3W6*F7eAfN&(`5K1R7-}VTrd&H{wt*3pfBTE)foQ9tdVs+CoVHhs~g?sRRMBg-Pd-G6(J`bEB zX_KDFbF!iyPr=H=S7t#j>(~G+&?PB+Mn6Gnh3`;MGQ;tipGoYc41S*V(PBZ{%409C zVcZASGTM^zHG{u@|K{sVsvfp8&?%W-j&nb{Z!GG8B2=%OCw*di!xF#jpM8E052yUC z*sw*{U{!%8sw^RPY6g9P0KvL=Gem}EgC5o37osVaqv&7fO$|Phr?aViZdF}X8p%+9 zhENPE+80fuVHofjylyJ>M9)+AZDn)OZ?7pH7N=jWA4gvf2V z%DrRCpjfsZ+5=ifMo3a9u{H^aC!W{mez{N~7WIeROi4Vx*7c?WMt-z%@>DykX&V1g zH2?|TH;Ty_uOQFxs!c#Z!I3L0&(B5YO%ZI777nDKrlx+ZkbOk8Bu~KpJoPuh>uKhb zwr)t0EOZs#F_hoO$!Dcd7S90ubJf;UqjcUMOE^kBa_|thfLwChudVoWNEsm-;}B|@ zG^-oKCozDT=5Ci8j_D*r{TO77s=sgm*LW87{IZ^(j=AJrr4C(71@$f@E~R0oVFqwn z^y!@UMq82y4FGSaI90sYP431)w}Q4{k^d= zMtfax8RfFfsErJ)_Bb&fhPbj7dG8j&`5&H3Mo6%-M+FL_xw1!nsPyfw@FNFz+5PTv zBQS)0hIT45T(^AX{~^}vR5V@Maz>09R<#qgUD!@9$L(-Jj6BnBhGDKXbVWEf6*r9Y z6W<06a!>%7_QnF)#g8fMzKOMmUn!g|G{4M#M6e-vWS(3R6EltyVa^A&I9V;Wmeg9S z<&r6Nbqk$-xlpy5E=XZYZc*PGN56!{Wi@2NPDpr9w?7tKPx~cd9}yP6;+{N zjRlOQ@~fGTB~#aVBtvinBqfdiGL-z0sj%a)tSLhUgr2wTbcDfj*OeyeBEHS7&;ltA zC~NU)$#%Xx1C@YFcFxG(_sadxb?ZK-=#6iIP*Jb@mhVz2slB!U8nJ*nB8G?_G?qz* zjh)~$`59L(iN%29Qgph?3tO<6I?|B*?^{23&Kh?tIwK`33NKuI#aox#@v&HT4hPf-gIr zokG$H=4+z7*X`TqdYBk^GK1S0{=%S;_5pxaMdCkn6R6HqFM+H6_NF?|zpvC}oYmk~ zRWmT@hLdNQiPJKmAOtmM1~#g~En$wOT6ednK81Eo;qj>xvO6V@AfU~CRAS=TyAC4Ia4B`B!kNwson$*K`lnDTF`-73^ z&>VTRC=_Uae!BD@?jr=*cH6|!Dknk-_0Ae@bYu&qRYn zY7+Ku{+-8%rqZ86Ym8^Y6%$?D=4X;ff4IRl>!N)-u10+L&oN1N?88UoiXh}wYIZwi z*xlXr#H!4bIfM_jimy~qi@LirOVjOODvCCK5@XYpP05V z)9Y_(+wBthedQri4pq>#+=aT|nru=a89@bNhnWBVcQPZWcC!+U-I?b?$6xv~e9ju*@rhL`sK z3JWl-`-c0_e$L1hx|c#Y;>j{Xlt9>tQT{Muk$WmfSf!lS{(LZ}!MikP zgb3|GkIoxFqgSu(RlU2kPPDv8qdi9oZ&TL2rkU{pCk$?G9TQ|TOSNJ7V zW9W~QUyM47>JPQjjd9z7uXtL`>R#n*x_gTAc=jO96cLlZ&q98&*GKE(JWICN_@Z_N zt#@0>)jceFHuoL@rQAj8>x{APS($WYOG(Mt#NFcBA3j$f{S^+ce%K71lfz^ckz0aCLpV!}nnW4VPSaPGX=!^PU z<2HKJW(Z+;j;ofrX7qN>-|iq~QKg9N7V`ga063X2rVRX;$z zis6MSlU;lNr?kng-d^!ncLCOJxMG$3frQ2J4Zc+}+_af`Z8SK%i-CrepshTXtiFf;77o%V}7i(VOQdk@P3terCjfqZKERY!{sXd zRJ%!2IC0+kcoq|(-JEi2QsO`wYef9ztwy!d+l>YpmXBf@wT<0`#+r|9c)a^pHto2j zQ@y_}(q1=5X7CqivLMmj;!^5UEio8iGc^z^71`F~q8>ya>*lxDa zz;F1VRS#v5Rxh`9A0xgO1*E<)2T_ZTpC(iQdEE76fn700dsidBDSSrU_iAsHvndMC zu2to%$Njmd#QeCrZyN6dl7fc1dNQTg1Ou_43s?WTc7D2ZOtkUO!NW9B|MqtgZf7g} zcyNee*mlT#$Wd@XtSu+iKb6eP%&cA-{MnQq-zyI8|8o`_NN8?$JvJ9>Cq|Jrd%VWq zvj^k5RIiKkLWj`Rgl2xhrwOHc$7zg9xp58qGpMp+>k;OD;9t3csgu2(Rq_VGl7M^s zCQk5DsO*6Xhmb+G|Z z*}0Re%UYgM0Y)IUZF-5$2}S}NxJQiYT<)) z>{|Pw$v$pMFWlcZh``Hde9dOZaV)rTDP0>?j)_(4q-U}n|O1keg`#!m) zqVGW3`De)|o}`?=%qsme7h3Oy%0Pk6Bv*CvG3S zbY7*-)ipJx9y-s2da@3*uPX_6*__S>zJKwH-$$MJs)y}$z|34`kfU@zJ`3ZfRArAW z$A;LG@&OWzJ9%@EgnlY0#bLWEl!hvUx_u*`Qx&9~$Ecj9V+Sk8fw0+WVlphCPD(IS zQyx-_4(ksIpmh_eSvnnmwl{lyS%-X*4m=&3f^lk6@H_qyXQmuYtDDw95fzJ5GN27;9MLSxFD234A!fNWnlKFeEUw!0>9Fx4H2c24qO zD+n!8G4(O1cMZs7G)2Cx-0azjTs~*>)i+DfFrE4%Cos0>bTZjL(0q*GNp$3etZ+!^Selh-p!$?_r=eoqa?MvL^EA}3?#F0TS``8{)Nrdud6uCMa8g?4 zp+ILekO3VV>f05oP=(2PPtwrbCpX{GzTm6gRPcT8Ep3IZq7Ye>Ss#24&D(Q=A(uMLay91O_ zT*eCo#D0eEtFBJ}K7^LgTF0m0g4Z`{kV<%cG;UPive+ka+kNxuH|u0bJpTcPILIS+Zp$Frx954${QR>W4nqt=9=F7i#CqtlSH8Qe z*+kOqItH77r=XK8>V6{UTJ}ghOYjo3aFTW>{Iq6V=RUi$$D6+hcRw~p7-!@?RIjr?FmVYg#RobE|dNKv0)@qA2R5% zB*Bn^S*CEIw{MUo8i=iY0-Yq8&oTEXPSNc7{z9PL#I!KOjl&go$!?w>zr1y>P?_`! z-LST8=Bc^uDC*KdQYCgVk91{!jIr8j>v!Iq8du2$oPPLd|qzm ztKVLqhEE&TS&qln4Tag>*gIF8TVoAw(fxFWd=u~()x7@a@zCoSjgA)+$jc;EU&rP~5eU0&%h{F_0# z&2hO9=%M0+&7PW|IBQCid6mU_Kt*}WnJ&MsEA7U>Sk|uO9s#D;MgUT3yFT<#6hf^hw zq!OWev0Rvosg!)>qe1V%m-5eH-#wqoqFn2yr19$_gj@z?oHh{B1_)lX<~iYU@jC0Q z*KaSo81u}I8WB{NB((fDe^+Th_1Vb~!W2b{Pc#Z#gi@GHpQyk7XpluC9hMdfYMkR; zHRZ$?v;ZH;!4=6`bTI9|;-eBMa$}WBqVm_7U56ZK){rPf0!R^#AEO1{jet;niK{P?8A*M-;K!$sR)-pMYF$A`5PjBA)|4!99-v6SKxv3+qV{>zjZpJz;w1^S&Xr%ZnU;@(lD;#`CGM=yT-oZV z&=tOmRsKV@_vwwd8msi27cWcOwdzgl2uH2q=K$EEsJXf%=nZd~Nx~CZQc}<3{TiU4w&vxX z%nN)Vtn|7?&83=%ZrW&jI%{Fgm5+VpHKaf7|HR$+Ll^++fcx}Vnpcn!dV^gMm< zR`0Mp6jh8{e_g({hp>3etZNaRL18c&DO8XF20@r~pZi{lMe2iz(DfDcHp!lScf)HK zwL_xYbKWYcPK6F^V&Di5uz2BQz@v%0-c$aUCL38{SC$j#p6Z0{R8tc9Y}dYPzAX%I zJIQ)I3WbJqQS$r;YXsh;-X+tneT#%SxD$2gux%NwFA(r(Rd9V3`HQjzU>Zj$Ni^hT z>8NKvZFVTSc8$XluZsFCI7p&^DSUkPGu#gX+dE*MG)Vy=y`pfEl1MPraQ^&(3g_cU ze>6ER{OhzW{ZBd6ji(eOX-L^n%gXx|D4#24f5fyLIEUO?M81(_bjp0%QqNAFO+laN zXyTvvQFt!jdB41GwXNuT02iZ5p7ylP*1)ltOF0PBK24pvw0R z-*8LPJ&}}Q4B=2Q29Jf1nKBtPLxi|fD~(D+ZS#b*BerIn9*;^!-GflVX70tcB)mNW zZT%>QNTWjnt6!Y^11-=nR-qkLVr;{^SIDt$Nm8HgyPim;a;V)==}f`sV0c#QaTg6! zErx9In9oshNv5JTSD{sXCc*QV74a(ZG&030i>-hdq9uF1*e}Ef6|h-63ke@dIBYg% zDgoRl0=B)tX7(W9*yr2#BLT^X`;_;6D-OE)f0>AZ?jJ~5dD1uE42ZaRjj@`yvEfXc zI^VS;a7A}UsBCu08vg+TSU^mC{}xF8O7FYwQXXsk!>eq0gxYu!rd?B4P}-3<1dBE4 z1{1S92nqURp8rW&^aiy85}>m(!L5e-z>wx5xQ%pVT?rAGuNzimnKxs)k7i^whGUZHQAV2{JhHm!xbYBN|z^HkoxUKu%fkSda6ZnJoAlYR%LE;4Nec( zNwi~iHw$@4fG7aX-~^(u$ijoc+-u+1Ev>{mfD2nJr+u=x%Pv|TB5z0+63W{|O!%Uq z2Utnp_hxo<%-JR4iTF9nom5#Qj1LFP%xrX&f@%=%rxuoXcWx$o?szo!qaE(JBfc1o z7IZ3TNe(_CS9TLu*5_N`#bOfD3F^I?s)=Yjyb4jvHslRxgxS*Hn6tmDAQf^uww6tc zX*dqnGP_1e^;a!0R_s9-mFLoLsU2$E5_CJDG9xHReH>OVo`TC(EDt$DKbuhGRX7;0 z5Pg%jho|TLwnVLwQ0=kyanU7A5w$ZQ4R=IqLwjW;D4`@#J>~A=-)IJ>GS8ZeiHT)@ zBr)z@j7FMJ%*U}z&X3I1U)N>Gkd7GKrgpM+z|NY(0GQtj^Zlp3WH#o_jI*N`HL5g}ATt;BOe~Gk&>2}u$xafG4yOTI zhVRMVD%}-6^rNzygw$Ic&_r{(d_pGo-iz-i4qM%|Jp4_LaIFJGYN3q-YXo<`;r-AB zpnWUrh-eO1x5fzeHv+v1Vn%;8^o`$>g-js_6-ckM0A6c~o8gIeF(L4?zjqH0<}Vv8 z9;e$j?s1F)o?2^CQ1i(LVV)72haiqWB+$!4Bl3fs+;31^FVaS+<931xdCKl^ zlJWpII|kSn%GKary63Q!oF8|Q$HZl!y;oL+Sv0r?9x)fdl>Pn1Vc{F=WxQI$uBcXf z$~@F4n*RHI8@B63(MlDZZB<;xlkUvhhALmdG7>F;CxMT89`!7oM z7dDV}1adV&_PA7-4&C1?5*pGG+ii}e1n#$NI4+BMsy&Kn-o`R2TEKckE5-7EzVx(} z2`1u`8y4|@vjI(Nbm^BpbC?H=WKpQ*NL*blTvQv6Nfa0VO-R(WyBQT2l-5I!W;Mhw zg#8l=v0k(3{iwJB!uNQ)uaK&EpTcg^d_h$^A(WrRW&exuQ2WhzN8e1I^h0FbypC3Z z5-BTEdW)APhA|?3I)-gV&>T%s*ON5bB6Km5PtsbaaL`W^uB-;;mP+U!w#zotZf)z$&2mGLkL-M`74d#JE0m6_3VJr!>4aE7*4$jT6o*L1h+P?&Jn2k_QpF^ z59)1g=Oxf`hmrI?rMm{MN1dJ?JR*sHpAhz*Pv4#Y>Wd6w0Iux0*|9<$%h*gtIh!`& zW<==|q~Y^sNd|v&hF>Dmd)q#`|%eYaK0GbzpHg(Zm9qpr9;~sY>dHq<9&330|D6KQ5I;RQ>3F zT*aiDO+gd*O~8UUX-%WETgWuV!O-`>i;pT~A29>)Y>)uiP3csq#g0$hzcud_J1}g* zac@dx+_+`oFC55J?$j2`RIIU&B5CYgYN(3-gJN1g*) zKFU}FFOiO!g;!nQqwln-#Ey}HkV}xOC;<7MpA|tv-ojg)uAkS8xexnnxgVZ2LTffr zvw$q*FBPrr(F+PE4ZlP%ivY`CZe&Y$NkpvDOwwZ)jL3TDSoD~Xy(7eoTfaQjOXMlb z{s{Z}dNDUuB_lX`G2Pl0z?>g(2AlcnoImocBOG{?&&Xg!^W$~GAXv@)*XUn$%tl$S zQWY9eKVd!HTE;{>VeA24L9OO%)y{>2e4o1^)WbF_#>1r&eZNP$0);2Xm^}c|P<+`= z?$=z2gq}v*KjcP6WH-_R?(Q;Zzl4iVe)0YWP3?Osr~|0}J2}B+f@tc8E~3u^Jv5|< z%4mH^+h5i&OSY*X`+;KMt(c>#9-AKy+r6C*3nnrrd@x{Sk+nuFfNDjbDeCWJ59K>R zYViBSR{^|EstULl((*L5vsSgM-df@L%H`VuRyh4{rqk|91)Q)qCSW;r8v1lhI>RPZ z057i$1sKeM<60t=JaL~(lO-)J;HMODFM0zUZB}^z%m&B_>=r=~7;$``+#r_OdbSgf zuNNYPHTV1 zV*OU2lu@uYy037CL&$~~r5GbShtxGH?IEU9O12FlXt`ZnKs*OJ2Wb7i^!z?9Ysq|A z9%`1C+`%9?&u;D{`c3L>Nt)`Ld)*-}PUhL>SPANvGdzOo+J#|Ye?s7QAx1`^KI|5$ zO0>K`(8MGlbJ!h9)MSf-@Hj#Q7oDla7KU^zb_2V&<2%Z17BE5)Q=2%gq&D$qLzo^Z zx{}KW4XDkug9Fz6m0h=f@%OBjD~$o*3HEECnyfa=;?DLf+{r9Xy7L*o)8D`)miNGw z7tm9sO(sX|kpy!Kok?cc)?P@5xFg@_5$`V{@BHNYZ3&ao)01x5?hERGR;D2*{c-JW zcx&Hv3g`R;cr_h^BYEUFYjBGh!k=hFQeG6B%Ncz%g5OE8U<-^?kA=DuZIjL zyGB^ghnUzcpyqjozb;8b-A(eQdw+VT?DNp8jc-5d2pKh$yEDeI8;!DOMvK5L4_CSu z3`@7T$HkD2aXdJL?K!~9Ti=Q$Pz8;!aX~R59)7XX(nWX^UUI3^P?K)DZ5`PoQj=c1swJ9I0_9XU{`hJz zaX5byJGAH$-cR8QFf8W(aYP*U7+9$4*@+7*J&?moYC~|)XqP9@zH#(*MJ_2wZVwqm z^Zp2Q7Y0wD*}pRmi`JNe+gO#q%AA|2%tFwLdVGdb?u$q~#CPPUFagBU)(y&$g z1`}M5gURJyziu?h;sXN6xQVpuk`{6wiWo3b_4i!ove#MiH(VCxsl4NF-^|`&OS_V=!76PG703 z#VU#(vI?MO#9aeI6PzBoqLZzPt&1^tbDOk+B0N@=#saqsCZi!FPlEfkTNe!&ZI%1O zvAF%Pn8Hx1-~d((%;~uS-Jhav!;mFy(lK->0a(Cn~MvA7K0!X~C+4=nk9yZam!x?#h7ZWDZp|V^A zQl6dQ0w`wnDPb(Z_=S@M9>BIDb@K}+&CoBc!o$q)rH`C=1T~|^grA?SAHcJv+3ok; z!yLQ2N>iXZD4nEF(Z*w2C|0RifSSch?X{XVxs%$@>oBk6MUwr#(5t+ts#M?oezYW! zUu}l4QBx4^JtL0#uyu2o#}1P7pQKkRT8BOOwvS4ZL%`sH%9j>&tsj%!+g%F#r4)tK z*kd@%LpR!q6+6n3b90!LUVuph1zxlTFH;b_t1vQnVgsVAR|gwnJ!Z< zP?Q(R)ASinI$p&=*%7j^!lHkVSG8={HVTlqMLUjs*?=+ak%Ve9B%ORf?XN*Vteb5o zeUll8-b8S`LjT0gS3|%|H^u+6Ud3r=jcQj~2lA^wK!gAEn?gY{kr*0`(Wf1tnLL*3 z+_o{GGYC8jH!!BmiecPXB1i&TPiUU~$(NG!oqeYwK?qag-HY&ASoa_SyG{ny7S+Ur*K zlX0G^kN&Oj4vw+CDu%4}kU!b~*8-SK#^YSajCvx;DFN-Kg&EYS9 zT?u!!nrDV0L*IDt9_GTWxjbYFcw#{029n&`C(>dU>LRoRGqr485uC=*wK`F}eiLs; z2@wRH)QoZ)*78I3_f0P>3_%N+blXQq@wl=#;hPXNHDlDy+E5iF66k3P4U3S?66E1w zCN+E@uRvnM0RBV`&^XC>GfAVqjQAk>NEkBpyH`b5?YDBEw%m-fkn<|g6JU|ks625PytL$WC0AbU zOMwM91vJ7bI)xP#_cgGrJ9*YhNT=x>MZk5Y*t^7NXddHuV*O?0-baMsazMwro;x#p zwtYRU0D6Soq%_Qi0)i}as+@cqp~tP%i@yCc9W$$HXJO{MUPWSWt|XnfMA;jO%Rk*? zq2TITv#%Y8VIhenjF!}#t_eXdP6!<&1zOD+Z3Wlog?BiiznLgxPClE&&p_J$$k0ZE zqpIB39kreS0QG|*8;P@9#$LJ5C4^FiB>9xK!~hG{!UKk7LAD$2XSX->>PF;MUf{We z=_Gm2QIFxSzT`s_PLGk@7s3Wx`PGDH=wH-bWlsYLHX8!ldcPI+ZE*u#{Zj~<)=Bzc z9kg{uY6PPYzzGMqZi|%@H&~H$I?OwK1j6?}HJ^V=M}|vf58;=`OQekCQ@tw6j5#jv z7~5IV`D&M7!oyx=9L(Q!|Lv#e0+!Rlw@_(-d_jihtm1+YV5!f~ncB)!1KyMH4zQP0lV93@Nc?R7n!$D)^YHY^Bs&1(1pXK~;a)dG~ z+MkDZ8W%AuTP8Lev4z~-ki1)2c+jfE0_#26Jfj6Aq6W}?1-1q#cd|Q3O>v~=)JVgB zrC^jt%>|dO_TO@f(j7${P7e_bCJ6o1-~OfI z0&|(TS(*oSkN4_FVbZ8V(9~&}(9W*o4w`3TqEQ(O1yvLi?B1#(84tzQSi;B0+U-us z#ccL;>ORFu;?I_I!*|{ohJ1h03HMfDg=3S}x;1;F|KA&dt{KmMV)xYGK@}O&gua$U z8uO99xG~ol*Upax^&z6cw$pHH$>^-(Ji<`{gVurJu>)_7=kvdq-f7J5zsv|~(r>|} zzqo1X|reP-JgzDJBUv7N0cjrUkz0e`BdFz z-GBd}y!!{pA^fC~6KP#&Z?-Oucc+gTy))|dKv)zPGI^GGxcqgf%hSqDPDKqY0b;9P zFGt<8hDpbC^d4_?deUvPQtmSd(lmmoD&YLFYhpSSIgkBm)HR-Iil&=tiHOl==*{@D8r&-{)vm_BKh;z==0 zrP+-7^tzDE>R;CvPpihIMexZzI}qi-f3z)4~HdN>wfW4627U3=zePa9^Rvp%GV@&37?t`*jNUC{4i=ZtTV(Q(XV|aqJ^;<(_Vc%u=n~1!-oB@9o2nMR4H!%%}l1 zDYlpuufe1d&zJ)bd05PbK=VcrJdUL;dd-8!2)1*gA}@kK_7YQNG+L+qMgr$Y8=g{B z5}*2X-?_y-pRadC6uvQvn@n|D+k{N-MmN|C(ERBh}S#Lp#hsbXpoB;!dHn%E%zWFVFIlI3;R8rCQ zU4lq%4NXwrMu@GC4p*~v1${!(;OqqTvr3MvPE)^R=8X6h=inX@N&pPiVV2tSh2O$5 z+{qA@Z2*`4{5fR1S1zq%L>-8cbQx*QyXB^w__U8ZGV_tJJvHpWw z=)JbWh;sM^;=A@i!!qR>@ zi~Uz)YwDIO?Hc?L05C-QkpHuu`ZQwG6{+T}iMyE(cjFO71&O7C>tbl1+nGtvwkXH% z>}!gAZ=2Z!)^cEkXX!$;i5m^j}onK?flVYLuAFIsBSfW(ow-*L52laZmJD+ z&I3|B@EfPlboU?Ru)7&dMX+nL_y zF-b;Vix4z`cy)%tk1}i*bc3T_ER-pDFU0>cGL1FhKItIzg?8kFCNR=91T>Cia8v*D zllh)Fv<2PKwN8GdI$WV{JaaBE3~^ZF#~s=_!mr+)OFLY5Ha*Y+I-wl##lGt|&(c8-`V zC`6iQ@n-btq5=k3HtcK~;?YYItYjM`3NYqZi<;q*-<20@GZ4Pzr|n%c$5TU5o+86J zm8Busq-&A|%{|46=*2jOKQVl>iw5D{xntub$=`wOE#YZHW6~dCz0gtZ|I~Ei{3>?1l2fwBY!#W~MNkbRMySc& ziq8aNc3ZlLD7#1q3|Li@qp2ywf^(U^fCAQnrlhspgW&nexR_CMZt~IrGyI%I0Y8iV zpw}gvk^|9}xf83W5C)Z3Bbv1QGL)W5WF!XX4y%$&P3c7f<)U}*LTyNDywL679ozma zCNG5OeZ9Tt`EvZ20WB5{zHKUhhfykwGCGzOB?gmu`qE(@Y+u`fH;#{pMFw{t=@GuM?u)Y>w%nCzG^xP8~O;Xj+mh zsxTxZ&G)NyV6Q%DJ#d3zGv+2iiM|gM!_-9BI{q7qv>l~|1o`6ku|-?!9QTh@qY2vw z*xfh}OMWGcqip3F{KC)-nLR>`C(+jjj5yKZz(F9G?caN_1Y$B__s_YKuvgbn9PGJ@g zm>wmvN>@1j*0$~YFhmQO!Rpy34^fGCqq$#><+gm2%)=wxW9O zTS@&b(9J+6IGo~geApazY<9>bH=`~y9aY5Ia0Ri%$=DDY=vrU@O-ZDr7N_K*+#meo z_(>g!Ni$GdXJ)lvCKuJ;SbAaH!fm29=n`qK#bG1Cy#v z3R#vSk7!Trk2Mm9G?BFR4)S2qhGvprZ-kJSDwfdHT;e>Z)w_;X+plO?6U)7L9TN7= zMzfl=mt5w9Owi6Lu+;pu$$SxAqkEg>8)Z}c2DfyJ^}m{R4~Ys1>Isyh0s4vvJOH?c zh9#br7^v_Tg{iSB(k&Iociuf|Y zuMFbM^%jTg2;62*W3cl+pnX!;38i)~RFSFw0bW6&zLm4dGYJik1>W%l^Ejv1Wn6Au z?tAe$AsmHQ6t9do$YllZ09iY3I}f>N5GDINh9Y@xGASN89zySBoIY+2kNqxf?1oDM zZZP~3(LXfqA;O8%$nrBk^UZI3VIJ=@o@Ts?c&AqB(`qzP1qI79MV{5O!HX4eVXtbIz$@XR-c%fjS*h9= zJ#{SacV+>oAP@&di`Lk`0EFq0w#MF-0S?1@0CGHK8Z86N8L?F-hF+d!>LA4lI?*rs zfsG8;r6$FS56jxs^XFmK@ay_u3BQ`Nms(NV zZ16$Qxe1e9V3XduNrPc468my^MUF zHYy;+GX19oGWPY^(teF{8Duck2dE0HF@Ujf!TDA=Y@FzU1qw zU!PL7Sl%PF#m-E;HF!HtIpt&xeLZIWP7MD>4f*ycy-oYNp=DYXAqX?-I5t;ttCwZ4 zaT@#f&_{3By0h^>J|2y?Vd)RhW@oAmJG=E85N7ES31k+}Q^FuJ=n;CENwCNBV~;&z z!-JdB-~t$Tx`W>2*JC!rs7gJwYacUglN3nj{N#IkC$0c&HQVJz1&iP=6)GEgu6&c%=E0MLtb z>i~&;SZEoyX}th1zxb-ue%x8Q_v&hn7%{?x@pUdnF{>;EcmR-M-R%nyT&k|@BFC*w z{zc2qrRwVD7#KatU;nGo^8|}^XYW#Vlh^7h&A7q&pMu8LUCW}jsx+r?@pKIl>vwS< zLjV9Z1U&o;+4dwo2F3+|%a~>bTn71YM5@fMY@DfuF~0@jH#g)Tzgn$c((X%PU)uWC z=TokbZTi;bluM*P^Wf9>`nUqZ29rFP#xr8wDh)>QE4NN=(l5RYn5Ud&3nex;U>ABXbx(iqn8?r2??8mMfJ(aH)^pYcF0DFMM07!;z zcPof?g-0`WF|WuPHERNpp}0%d9XB@KyWf!xbL?lM&EGPFHG+bgf!HB<(YF6M$X_bX+|eFO~MU^G8NGTUVNd z*0asTx&l(!FdRD!ztb~^%JslmYlJN@3p8{{uVj3dT3LmwBD;|xt^4kZ$th>cL>mth z$^|weIDvhaU3N7)&C(KlLmQIhD$h#WH2P;USjw2Ec*Sp?GTAT*E9Nvz_27;82z=Uf zr#2_w7Lp%b(aU7%OubqN8OYM6-+UHc?p)QA?D$G((~hCeyy3@>xs_+*$Up`F2_Qj6 z4yNBc`Hi#Cau+uw$#R!oYPr~fly+_I9pwcN9q_-;L3Nw23K71ZOE#%t5JGrr|~ z_`z2OmPeaD{r4?X$o@BCn+@(}Ju0ZjD~%@u%Y(KnvJ5nMavXyCj?;Gze9G0M|Mhs~ z*Ts)Mbfru^2$l5}-@1IurL$c#-Hx7lX>KkDWNayy%Tei)D}VQLI6dpxX13{K#cERh za-1vYJJrjgoIM`G-9;9(n?ThF+A}`eyF${o0Cm-QJ`3HZkBAna%@}j6NHUP>TH(i; zUnUy4%|t>Mvdx6LRyw&`Mlukai{&8$%cITZE(2Ls@>%V5J#=zLNO5_{UCP9*B=&B_ zlDoPe1f5@+vSO3`LXo9JQ=1K5NM)scA!%F4x_p_Xsm+yxH-0Pg*~E`c{OHT;Sv?f) z;yp)YzP#qsAK$us%Ps3Ref#BGZdv!=r@bsbpDbA4Yj<1S0ibV3o60p&pos!a6lkJA z69t+m&_sbI3apS6sMk#(=?8me4+6VjJ9_}e@09Nqx6OF}vn??SInEWK&4w*s{pPdo zG|S~+|84MNd~a(*Z{Trm9Lc&fZAIY6156G$GHsrlNcjEDQu*E`$jZDz|`Ddafgbv3n_ z(`6lz$7c>!1lq=Aw@&@{SSvQV3^cU=KJyeGXOj#x$$;`ion*zA&wR_}k-bKjyJaB* zO>$=_P$xd~#V;$9?a{twy$QtYbW~r&=3&shH_rI9=~KpILVda&m1$}-om{^3@FB8q zUB2a-+DuWvmu5cYe9AP*oe%eAmT97GlYVKKz>A ztgK9~9Ot!b*OxOry0k)%)2IJh#^;&??{WIH8O&4Wj%AN`ms62?9SP)3v)>9ouAt-e z?Uwg^dN8SPo8GJ5+-=(CRu-8fgr#>Ldg}Ao*uCe;dlK?bXj7Z`^%&WJpxUoWRN?I^ONsk)6b_fpKQ3)*Bua4T+` z^#W8L^4(ZPf-@Ff-fJw{=0f8>ZMw3ya?9PXT?YJItPPiS%LOZ=%q1M*+hltp#%UZ` zZ<0F*+;F)|wnc@|$v$?#ZM|V_*5M|Q1lEbPPYS1GbSF#y;vai21U%ZzR#&~-wDfi= z@U6?IT+YSPO4cTZXwl-u^2Y10Hx^ziNWJEkmC8!#-MhC88Z;=wW9iF7krOA!JZ0;! z4{s#C>mdW#oJ)<_rZ3Hs%Ke&TAW|1PsCdw#(Bq^5t`VF%b*jAk?z>W69=q8nkF=OW zV9m9}^vv@KZ!Su^z{t7RI^D&PvJFMr&qa$C$;O*(BK`aIGdD05X}kGviCKAUPm|om zZh%<^GT@`r3N3dlLYob?JvxZ`g@AKfrF=>x=Tw9*`;zEJ9hLP+;S~<<&{^;nP;A9j8UD8;7TV0K4flO-l+Sk*>|N|*K)sx zaRy_ycS;W%HcSQ%94I||_LOPUrpl5fRX!6g`}I9U`fSi!?iz8C%=^LXm8j6ktwd%m z7I`4N-rV=?S6+QpcHeC`si~+;pzD|?&EqyN5KQ|P|=w7c@OnYsxi z*5|B4sAoAJd$}UFnRVKI=Gup5pz-h$Vw=lTkE&DMq`qKrpZG+pcb~q+YRKL%^+q%+ zk~wqc$ew%dDGL`al+w~tHBz-fKb%HQ-)u!@>_LI0_Cxc5Qp712I4Ob=rOH{Vh2I!& zMp#!^9AJl`sjUh6!S}6NwUQ4$_&{#Ci*kcm`;EK$TK7EVG8+v!595LTHuWvbh zFC$&IzI8=2?xT2fGpY~GmYK=+rH3=5r2bm~`2F|)-`;fqMpbO>FFhd%q4!>-NmG2H zSh06e>>?_5vFj5>v7(5m&)&P(v0y<#up=tHN)-r%PDt;`|9x|JcJFR>lN*d!ey)!P z$(=j(%sJnjHosxN{q{E?FfJ~Z0I(RbF>%N#-G=Ts2+exd$Ir{BAs$J{*th{G1r{$| zg!dkrgweF&B;L$HIv$dpMU;2zW(}a z9CFAZfj#GSE_Slq&dMHpAawgydZnSAZPR>Lo8xqMq$-)U0%yo zvj_gjoc&Q5>lUzoh&H^+Sg&*DWndyTYCgP#3G4*-{r7z0)(q9AqjhM#g@uJ=mb=}`tBo)aLlbXR!sE@03Lks!N%MZA0KZR{a^J6`;?ZJp^)a@`t|Fh$T!ED-vtX6 z;PJ;F$ME69Ye@t6SB)}qyIK!vT1rYvkeHZQYjjoJNdK%oQ(e1%_4{2tZnp;Tv(G*= z8bIwkfiTg1aajQpa_S?sqyg5YE<{Og1qurCP+U%cn3s&RPB|A-XMBOpx$6)YlYlJl z-6DcV0l>^{nP}3i30k&ni3RiLp@^;>dvxoLjCE_VaAN^3->V#ZwAq2%KW&D%;tj~o z&POrnZ0_8-7%*S}Qj!w+yBuuTwhi$y(FP1^&rO{=6$1wjL|HjCfIKk%9UrZu_*PMI z5fa&NkMi_yHRL4Rq(7cjAT{ZZN0raub+PgEq_6<6x^a4;!y!qyvxb@as|1{=o`!Am|t;LotTQK65TQHU;c0=vN=h;sz_JQ~$3nzMC-UHs zfZT#26cH3QtykA*_H&EDI#;7})9)~G!4Zf_O+NjnsZC24 z-+%u-e*E!Aj2JPZ+WvcO*WIRV=c})#ASWj`tbFuZZ&l^~PIFruY(6a7baT5;PWrdZg>~!JMXz4H{2HxrOrfe1m;ap)RL-6~+XN!)x8HsS z01EuwamO8oiM#s~u5bRi^-YV3WObSP^s~$`0zlFXD9}MB9sR7|iy>S%>_Y6(c@MuY zjv0>tm_eQq<~vM#Zen(80CRJ5kw6V#nNI_#cNXLYn^go4|7M58# z4&yQtJH3mJibZ@}G%|MNASWvuo!Yc8z**W0Jp#H#g+-`WKMgOv^fKOk_g&n7|NVIS z>8H`PYgZh4=%H1bfU9OmwlBdj+`R_+cW~Brhtk8ZXYeivT~FH=Q-9c{aef&}H(KkJ zD_5EW%$PA_Tac%{?e@d%dbX8?OJA#~5hGu9Ka2{p}8NaIa;=cFlSNUwrX}p|5uB+Ep5B z*l$CJYg{)1bY z{TC!8#v*;zc3gGSa1>Bm_|X5xp+$$rtUeZd@70F~sY1j?B_MWvL!{@fL~;E*^vT?S z(iUwnH$M*b;>)ljzZC6Dmtnwx-{Q-!2O%@L5t3t~5X=3Z#&&ayqR^b>8m*dx^k!X= zo|BKMUrs{%_8o9E4`0RvOp~$>*Ipkl>s{r(3Db~!-R*13JJ+vYj|ay-h=(6}xLT`B zRqeWYKoH*xIuQl-ufyjm?}0!Y!SBM(i%-TZUAh$OIF7>zxI@c%nNQ7$v)v=`Im(M@ zYIk**&Y`LQ^wUrG0efk7t5Z=pZclDn_eu-l%X#A)yW0%RUiCMDRI?&x%Bz`oZ_DD7 zYaZ${sABK*QFf&D&|@wkPu-L|$D?l$kf`)-_n{`n>f*3I~WOv9mbEQS>VG(-F527q}4 zfbld5$kd}vS6Wtqm6`cyn?~QExEO*pr-yMgS1nqcfg6Vn#PnH9u`DASjTC<|$o%XZgca7IbLRf0y7knz z{^&{H`lxzo*djU93jn_S^2@mQ-g_$n#H#4tGRknY@1_|yA`Sh<-(R1zzW}-focjqK zzkTN?zYsc%G>_$66F*q;ZT?7Q1O3ukIxU8R_s~AtwW+kn{1q5-_SfUzqY`mdtdCR9 ziH40-E-**I{*`uoixw@y*ayd==bk;0&BIVE{QyOy9SFDzON!93aS!zF)e~P#oPzwa zZ1nGY0D2zM3Cm}%#?o~QkY7@O`pJoiiBCg9R3oGn*Q2R88_V-&;?pm_MAzgboYu1t zi?;rbm)?j$x4|dkgtqI^``C&2_KkM9ZekO3YF&!C^S7g4Vmz)sza`qouAGGToTu@9Y)^smR77b-hN|g-0qWbeYR_2`L26kxc7rC zXX#Ie9s$79PCG5UX4k8{_F688gH-;ZM!4kvYnvQ*FaWd@Q6t1w%}P}F`mb!$*Eem1 zjT<*Yr)X)dWIEYnk3Ed(%08PnZ#I54if)w_P0T^yDI+5TV!j0g7wy}(H%{30Q5i8j zy_55_w1<`qyDT*Uxxz@JiusQ*3#^vG0D6m6U+`ebwB&;vpDX!Dd-kIAo&G>^)k%1r(`2ZRXAOWEIDbsFhVl?(>)c|WZWwQndY`rr%q-*^=Qspv}{2~dWqbhDmvz*igkPA2=_y?Yz;o&y3oe?|~EU{rK4Z{B>W=`*`~~wF zX}TE)9B_acLpV)>_K3#Ns#Qzwn>e}!WO6M^(WFUZNGtI>wY}=M#@?-4H(z@^I2p-f zH>RYW^KbvM_=KS5&jNeVYnLuvjQ^YMxBc6pfnu{KGBVbiASKO-+#&29GTJ@eahdt5zBxJIz-|rZjQSmozSEoJ*~f=Ee$1?RD`O@df>^ zb?esVup%w3n?}SJOKD0<1z5CfkqIk-&*TZY5=$9ZouJP z2Vvy68<3w{h{CL5)NhrFxWpJ_EZv5wlc%6=t2DIFEI^a8HHd568NaUDjAuP?)j_8wjj){uuudF@)?TLZ!wx&ln2NO?!3*qOb4NR*wb9%yTeb}A)~)mN%szek z7@lS6KXl*B<-W-Yvu~tzRB)L&jQIHI{Q2_@y(T3lp<}0xhAu_(0)G!ZObwt9h+5w6 z{#*Uinu^D2ugJ0^H<+ePnxgMseGL!Pqu*&=^|xe8zkYj@H#z)K{m>qldA)h_=3)1g z+K~Lwp0nSmF7;i1i$91~^u2vlr|3a6?WRS&U$ttL`6HiE$(%j++|%#?H!bVmnup~p zmeW5p%lHv%Kd3%!P6Y;uej@@vuUI17#D@OPYh7N;{oUI93$RdS4Pc~WchF=BIvP8L zi!}!d1gh|pQw-|Po~nzCPh`Nf!Obz0Wu6q8V{uRLzp2WZX{NVAM(?AWom z_S$QWnJ=DNvi|+|Gv+rj3)P`O2MNf@lP8-x3Jx*m_8r>etvBDobEg7ZTeii*%){~K z>o0~60;z%??HsIJxr&;@%dpp8d*Ofq2T;41Z%m#71M=yVAJ{$j++!H3W!7?jm*(}v z6HhcuR9Z;^)4qNC;+ku&F~Urb0E@oYxUtrqYPNknmza2vs|Nz=AhwdnjOu8 z1f$kiKt<*?36l5Ue;ZE)4_XH<9+L`xA5YNFXH5rPd4Kf7!}>> z(4o1vCTGoy!1L|5-)?|&zkdD9VMl&Z`bL0QW?JhOAwf6p!3PacnKo@2&N=5Cvli0I z%QZuDGH%>BQ>S=^f+g;zf7mVD(<*D%S-jztQ%^B#R7Q{(6B`3X>1uy#-35R&NAk_m z+^TNz52PuN)mIxK?*`m%4dBC%Jwy}k-q^vzne~U&{?E?e zf%fq|ao*LZBYOw6^3>3!)K5S$=b|9D6szX1N8OY}wCL0v(OkE=pS*>-sVfl6z>am> zmSW+$5@f7zhtj6Kuz7V3MqIrL4Z6=paTb043hJVwWhxT#ih!azh)P?Hij61ZV|XxJV`PN(v*uE~NNz~-UsZeBD;n2NKmBCpLOe*mz2YUZnw)y-ss1`E z13(>4Jz#_&Q+H+LRx>QIGq|LxHVwuNi*bU`j+b$|RjOg|P-T%*6^h-NafSzB5fVX% zb9fEykjs+p?oWvCg5woa*~(w3wy-BGZ*7L!^u4rcH|}ztD#gHGdg&$q=|@u~0VaVf z&?bTM&O7g*d5h*a=)i-_2~@yPoAfzq((3TN9@TlzJ@=YTtdp1+hrYFsHl;wNgohph z25HG8$ie|YY4LQ9Z^Mn}e%_-m+l(1M^JMyv`L#}Y5+d8TZ^NaRT!#Gz>>pHKroRg> zybvu~wDAA_P70|DE;!$>HMGD${WEUTbeNE|nG$x=Ad0~_rU05+eQWGC z0b32Az@oHXS6(?B{rCM3W{^oeNygfzXJ2e6S%{NL{)@iU7925oFD(3c4aPtDI=ahhIJx zo%cBab#k+f$yWkUC*-jd?8lO^CC5_m&Yq8phYcZ+FN+ujtZ{^Dwk*vED70?f2Gghi zXuy^GnK*Hx0rpz=QMZqx*(=4o*6#$;1zvQ>a6i({Nf1fTWBBA;mDD<(Py+D zL5M@A>YKFFs_(k%B#8U^%e&{uZT=Pb*LVbEr3thB*7yaa+>Zd7#&{KlW56sJva5aW z5HGy&0_Mz_P0h?$bLg^<1otbiykdmEgs&cfgtN~&8A*Bna)J{UtD~WXsZA2{714+Hm<-Jw>1{fT>4XqvMZ1-W;&>NRz1c zMTc$+f!+!5sa^?F(Utb8z^z-0qp{7LIn&e^teFp(Fc&Regokc@0zLQc$qX;W*pZ!y z@)Byec!Wwq3eLacT)IyrVdAw5(CCml*z@S-$XK3(tWAX|C3ZXT^mb_2I2Esq`v|kQ z&O^&44NzzMDzu7SM8L5g%{vhQ#dpH$8IgG=1u@h08If- zPSkTLuH?R1zivJE%}a(q*+;xw+PJM-0{ce%NdQQ6s-Q6Uqdoc2M<4MZ-QOGl+*(@W z%Id>5mM5qm0!3@rtU+s+Tg`j#y@w~Bc+$|-BlIPdWx_t=c>tR=XAU0bAxV#DQtKRW zNeTGTX&yvZ0(%00Teoh((4ps>@e7#QM{}ThtOe`WUw9-+N0Q}6A!-EIzodLn56{kSJclzWxy!Cr*n zcyc%|!kuX|)Y4$*B~qIqJqzgMtH45$JRWNk3xzs}SBHfH0I({+>6;A?MI5;2p5 z1(9jxA8J&WuWvH9#YD##jhGm;a>3c)0WG>VydDdT3;?8R{h)&!04R_oZHP9S{Z33s zOkCx3;*(%;zgtTa!yP=`ONgodDN_Uhb4=t^C;$xg5eyx*v~LowYD3IX!tm2iKQ(4u zWB&1(H#8QViZ8n8A_D*wkP*YvxU>w?^hhw-gsk?P=XqLg(4e6aO7WA!LJmTp7=cj|E++My4%0P}N!M~-Yvjp7f8?sPte zv}u4|Nd?%@G#X=mSb%j)(vg@PPfe2(2&1*qBU9g%S6*pA?h{WuVg4P-A1P?weIP{h zE@AJUYn8J;hdLo&bL}-0mX2vy07?Syn{U1`S`bSU`bIRP=Y|_@B(Of)XcYBchXl>B zG#>id`s;{p#PmgDC!KVX`Bs9VefxF>u-UcO?=20Vbkd1N^D%n#eWtw3Py%$K7nKR^ zj{t}0TUtN0Bd{r9sd>)JCUTjm zF1X+V19q+1)IIP1!x}XvS6y|r>9^+1_Ctqs(X{)KN$l{$568zJeTrJs zxWf6W*|omW?3;58xYL?w{d5@CAt`j7f?HbTX;M<3p2ee0}S#!S={fYM*+Y8c>g$c-&d~7t9Q ze@7ZJXTq*&)>UnB6Ffr#|X$ciJSvIY|>&1OxkE@WtUxMG%e<;F*D}K ztR@@)lo?Z6KnXYFH$+;t5#0)a&{#DdX&c;HKw~}d30Vp74jnrft&Ox3vBr1K&(8cl zP7;DLWovGv&5+Oy6^yn{X?LW77r0Z}54nQ4gJs-%LID8}Qj=^S`%b=Na`%vsw}M(4 zKxzA=@zT7D&O$ZHs>l9Lds};4=24{`(ckt7KG4}95NG~vALIjg^-Wh$tIjnoi9v@( zol!rfA@(_>A3F7H%|mOcNf4dQNZ^mIU4;FwZpRxy8X_mNh=20Yph*fX83|ZDcOw=p zT!b}Q%Z-mwS$@2P{Tx0sTMc>_AL*U1T3whN8F$T+{Xhb0v%* z=HYoq8lsB&l1iu(6nqz4b z#g9eXnzvIfSfco zqL&#z&A<~+K4E~Cd#&7i#?HS$oc5Gl4J@#=K8893X&(i6rlaN5nrp3f&=#%8T&qJ# zRRHjG9t=Cu?IDlpbq1Y0$e4OXYoWAa<(2~gzc-qDDK6ydBg>TLF4WBI=JU2bE4MWF z%G3}S7jF)O>bo@I;w3t?DGFHYP&o*svbHZgW~dQ#@pUgq-R4@B+HTXm;(snK3D1xJ zyfyoO|PFlifllq<8hw0{%MMND`<5R?;Ae=~M*(H5{1$wOJ*|bh;E%GQkDSTVNrb z+ON3ca$}N`wnKnZe-!W#WR|M|0CaEqk?j8oWGpg)NPtS?BHzHf@44IfItF}Vg4m%k z2dh5}`)>OI8eSd+bUwxnbD8X(PU#F$ZXkF%VzP*+#)E zKh5eBL0ekU{7aZS!ag`6(~uy4DMl!uFR&oysK49LWZZ9`e#V6E2sC}{I7bL%3v>%$ zN!uWr6a5IB_%&iK04Obi7`s53f*VAe*1s>DaFXM_0HXS#y0095B~Cx>bmJ2$dbJuB zjZuH3wN(A;lg1&_&^Vf@x5gYqkn6x63jC5h115WjOIkz zG?~C6X>9E}X?>)jwLV{=S|nR;@|4NOEGWRPamw^3p&Zylj$f-l{i8IekET0?H4E7~ zq)~a~kw=U+M)M<0jRk;m^AOF*v>VjtkU4YHmwW|f-WM>C23QA4JvK|A$0~}5N=8Zcr{k>Iaw^x1iIe=ze<^+t3C(u*G zJ@-=#!CT=Dx?0Rzg++50VcxXqSUCB6Y7Ar1ym3AT99@BS{Td=+<331T*cfH?Nbl{} zp*UqTO5*47ELay&u|lAP@niB!a&+oKww_X!Q8wPoVbuGy?#&cA_OWU$*r~i>tjO&7LeYN(ZHSLxH(1 zuiz=Y*M1Lg3Jhofr3pKnKC!(RX&ri?w%R`n4lOO(!@{x09&3Q37XT>BfHj4S?xbbc zeiiT%t=KC#t=!T+mUdcTO&V^=9{J^l%85|fY5S;yqufZe=j10WStP&prcBqhjKPVr zMu|3_`^WFA1TGxYZ_XE(b9;cPO8sq`zEP9HUy6|||W zi7r$FC^Lh6rBdnRsSCNfhu7g2>^4YVLBXgUWl%g%QVfBc~ zX(Nl_$fTfCr-BJ2e5APu@>THx61NGsDh;6OxAQTFzA10K@j98s!@fwbXu}8<2`cke zBmo>`0_G_@mM6yS!cuHpy&OZSsp`(L)gzOBr(-9qPGCxx!YFj;mV;w9j79dwLj0Do z7~eL16R8bof@1_@QgST1HA=)W3x3De&6$Yq(+-bECnF)7z=io>K0@Y zW&(iH1d2&ZV;D)0x$^)D%nu)a6*Y_X44nncWG3Fy$N|6w)KLHcAOJ~3K~(imbSABs zG*QxwX$%sE;emhfK92|h2~wox3#A|&0MtBHWwKX&+6!l$byh^M zXy;OUUD`AC%O?I+J9aK@Ijy@ic{-4V1Ay*yA#MOD)0pxo|E_Mkmt6&P*+C?KtVihqUUU7<83A4mm>Jx;#gk{Jyw-;&$X zLTZUsmkz8u4FLcC@ZewH!w>-IEk$B5aF48>bfcO-xtvYl@-HI4&iCTufxu@XF#7psh z+4D%<(G>HWenoLX6(40?67ME$TR#zZOtEP>sy0 zoEK@TL>Jb_)0!8>lr{e{BfhdGaXHav`Y^? zG>(AOG4JXLHA$;KufP7f5oCI9A$>{++Te%k`Xpc^W^XlIp+Ga#xp`*+U?dHo1vvs% z5~T9)^81hZ$IP|SozoPES`UG5&AEv-m4B2k<&Yh#zE?Sc03F7(kE8*VY2OV1C16Fn z0)US__Neir3=04sVZJ!-!B7pLf)Atx)WOf`vt#-;>m(DWw66Rwn*XW)dfdKP(k4sD z3ZyD<$L*3~`GU&Juk#n0IQuaHbRzv@^9pmZdFc*xZM!ELwyuxOD>KouZ#^WYB;beV zm!a!1&C!UdV07z8G&O(B7L6r8tj3lK1)i0nLO1BpcP}w10gdTLo4{Nw(=r9beiK`FpNmkc8&5 zG5`$TcXrKnxX}Sdrp|DDQ2v*CKa_zD0RR|$Fn1rEv=?Ls6)4vp7O0Ojr*g{>&5IY? zwnMptty>4>Bab}7ADwU4*7^q?d(5%u)!Vs5z^wrc0)R9Di(YiF3wKBo{ks96>T%PG z%-XLqs$Pd0(Tp^Mau?AYNdqYJx&9U(aBE22``?a7mI@svq<{#$n81!rb%{@D|Af;3 zdQtGX%XpF3)$uAX@BdwGR^f`n$p~cB3ZHPhb`n8HoOLfG5cs%er6V=!r52}*TNC5= z`QsZa(8W{)@+3&!Vs5#XEnC$90FDZ)0leu(nt<<)Yy!3bP^UC$+H|6{K1|x2VhjQq zQp>Af5{Omr8L8JC+G3Er64P;Rcf;Kn&5H9wyuh_yOQS%mYY= zd8KSH^|Npy8Bz&P={Yp5)M4aWR8$eWyEMd&O@F8b@)z!C2d-_!hGhyi=v?4mbo3p)KDm=S8Jxy z5EFcyk$A(Il1GpH(WF(?V*#Li$`lmjWTUh>r+> z%U{^t4?8ZW{{em!ju&YUO3Nj!tb2ZJ9ilNsoQhv$iNqV{F4bfOTRG&71k*Mw>R_M=aUS+lg{Zcw0yUl1RH-w{8O!@mRBN z6W0B_4(A`X8V6lcgow*rcielHkum@br2W6Qtk*x$P{)0I!Gm5?s z)#6HPK6maMYI`p>V^(CWO!Lydx%*-da&pP|{Ik#LD_p$~;KR(waKzz9qNm#gEMQN- zFAboymu~H#87Bdp0f0Pw^ya#WW|c)iGQb^}r*isp>1CJV)?04%XKt``ZE4=hEy*nT z$sWiDI#W!C8)@~Gs>VHLLx1|u=Wi)`SHHD~+fsck*AJrh6B+sSQ<9T*3(8mFUv7 zi{H`MJ;ci|yOPnIS2Njb7v_+A+a$j{=->lU$a^vGy6bM-I`S4{0#=FxJrWcG9=G0l z8*aOOBsT`lF0OY4OzQmK|Bj%58Abn<26SNl%FzIxax(n`i>R3yNkM)ynlx=paPbZ{ zZ`#cEuc|cbOUOjKGjQdbZ@y*PkAqB7<_8~qh^FN`4TBW(w2%69&)uV`wYtD0CUz2c zMl%}uE~WuEi}}Z#$XGq*zE=LNuk~FPZxk4M-UWE+<>#4$>MmSPpTln5x|%v{`UYc- zaxHL>29PIG3ji&sF!zXZ%#9j1LNqminNcgSciE|EQNi3;(Qlw>W;bkZxD;`WG-Qfb zEMRB;%RH)=ro}NQ+IGa`7T`bz!R*7nQkQ4|m>8M-b-EA$MH3VjP_T=kB`^ZHZdzTF z$La+Ffnj9!dS)nB7kwM`SO93}zz7X9D9(jVW955kr&V+F%rnp7vri{cBXl#et&xgI)nNZ4Jph>5UOPfAKMX{f~bnBH>h2!aMB zeRkGG>#DVr_HWMYIk@9c`n#WHOP7IfbM)wY zD)pg={6g9&nb@?iWzI}UaNIrI&!|y%8dLDT{r?kmg_;F`s$XEH-#&YzXh%8rX?h4U z)7D{I$vPCQj>3O$yV<0LdFAofF?9G@Xt!r86c?6Y%i2sNB*mjq>v~u*cMaYo*s0rw zQOJLcm&@$?^2+903)f;^p-G8K>F0Vm#;HSuP zYekW}iw;9p!)5o4_{1y%zJ-2`l^{~wqI382_~TFF&YQ>L_l*n9 z{+{&t7fuk!>4Pizy4D(&r~yXsf;qgD5fk#-e=qfUDN~a+D=kczUsTm*_?tkgtJTve zs;k8J-fLZ6%Xw{<8@h}+=EgpFFE(%8h;z=m5FOferofA5gjgqQPxbDU)F#7IsNJ*CScHo`v*c^V% zFg$SIW4tM#A-`E;tbw|SkfV7s$9CL3`Zhdx|6}~E0D$}K6NNkOxd~TXdMz{4D|@@R zH8ZzQnMh{*6K=k76nJ`ohC!3bltt5=M4zIDu}!flc?knY$WS>}358Uy(M&q0e^M`w z`TIaE))r7{fpgLtpfBspw>W3tO{ebEW>g@3&1#H( z;w9v5$?!)3D@}>+Q4KY3+tIq*u6%O<%$z+P6F>dX+`yr6HgDF7{#U1?Vg1GoEV+t# z8pqNE=H#j?F3l(4x|T^=nXYB<5Uzhc6Un-D+a`Sa*@wKEZY~~q=vk!HsYjq!jGJ${ zhRMe1hL9*Q6TBv~=l+bDvwp@U!(7m5BhJJ?9sUf9FM< zaO`QkX=N^M8!?(?wH7p;Z`**&hM$eWgNEYpfya=J>lm%&`VHxL?G5_%aE@=eneGpS z;hVRt$LKLMmp!C(7+&u9qz_?n9VpqFZpJWu#?FOnwKXE2cG>2c`My$|<=qZv_qnv=&KABTJHR9?2=IoG=f9~zCZ z_dV{~1HL|OO2-4^?!hAuK4bbgddx_iGUyC+V;U4&&m)iBkBytwbNp8^iodxT-G)sW zc=&(!VBjIg7@BzIx&PspSwCRd`BxHr_b`dEi;4`zaYc+A@Ne^prsVy#>5QM$xxcJEg$8N&yLW zMY!n%8ZWuzVjg&VP|G)jfTxZLrqiKLcYBMEDEFm&wl!BuqAas*INwrz^mv3 zYklaHEL~<`Y02BQqgIoL4}nB!%jF`YZ{!XX-rv`(fLZf#kKBu6j$-ad(v-8u{6}fr z_rUEuxD29u%3dL~PhZvhM>3lCH1y~Je-?o0rtd)h{uOSz{Y1R*#B{W8*U@OUXU+Zv zpM3g0=_MUw?|%xdTC~GUuRMiszW)*zU2rwJb={M`kx4u_78&q3bM{YW-^KCPB>nr_ z@2BC0Yes5E@J|eWm_7}oAGi^BjC_=I)}2>z#uL0{W8!BM$S3CDp$DGi?M!v>)6d`G z${P;G%TLYZ+;C5k=r)pOUw`ujGrn!xHXB)1H}dL(watL#rMTH{i2g`=K05(dupjj!la4Q(V$Tp_8ZWHK4!&u_1O<`?ywV) zoWeX=ilEb$;EAq;*Im8%)O&n)5>LN%{O@$yD`Y;r7oKRlq(UAS4_KrZTh^PNCcRY>d89!kA z^m@4Sjp5k;K<4c#a2);UO}K7{>}E zw+1jjzrfr|BFA+{dqq{h`l5I3g zEuQDU3%Ca(C?BD@L*^0XO4Nzp(xb?jX$z6PO>68ME2lUyiH8WzL2eGOo1?HzVzNV( zUAK<6OguOOWA1*2jG2z}9FMNMD=IF-JFiW`yU%=r4hK@Wy=(1eVs-6OG#zg71EaxHJrmlwlQz^3anVR7N?#$&{+=>i!KqFH1S6~a?yBn zI=zh7eZ?WQqCG}DaDmY@eDKy+xcKVRd?sim<)u&NwmiJ>*aZCe-8X2{n|@>4s7=ji zhI6k!0*4+!4JpSWI^41;(|kW{_+STIyEM#xIcM>jPwSDNS7_+&yh~1`CW*dCKP@5f z-h`7+JA||s@PpF0)V~*>oPeWAqix#qT10B9d`j5B;m0^5G6hs*Cj1&1BI zuUS9McRXo*)5h)iWWv|DkO0$a?ltpqaZEfp+U2jlQ#oW$+& zXqY);5yn3?8Jlx|L!)-l_3R2KAwJla}UyA4kQA!xYyIvE+$~gJICPn zv=-<>kk%;bXLM-wF0B)nW76h^NM?E%9jN6-B6F>xdF8sHD*+Aga@~Ak_njS^a!ShG z;#*og5~=YLA5p}!0Gdpd3YZfJ)B#Ybm!we(Tu~TEmaUXLiW+wNABvu38kR4pfTc9v zt$BNh?nxK8)Gbjmy$6Co9R4EuTt>*L+vVcL}U(+LyoLo*^%z$C(Uf%Oe2KX@gP!yBI%w zGYfm|+k;otwcvaKb7uZVTKN(g+n1nmhbXL`UqIKELvhKqgDHEGDGSIy=Pt+M`73ee zc}E-Gu1zhzwP5ZlJb1%+R5V$KdQD@ndPW%zJK<0ay@GO!bf)NVjqAH&28a{gGJL@%grV;*ZF6KLhab z9k00LuV^!za-=eTaWTrU;>+Q$UdLH&n}$n8ZZpD7Ai+G|>1P8v?*FDEs4T}5d?uNfcl*sAecu%E~n@OGMPHbG054(O-_cZ@(HN|jRXQY zGzsxGi3BQUigGwl63%vhHA^gja%le;eNH#CBOVH@LoyVWQUrDk2MZxHW%1>Jm_?Pq4wH z$ua?HEE-2_0^1{a%gxC{5(5=r`J)yMLxFg6^7vpaLdOkj^Hh&Dc32F0W9o?%++<06U_l5hxZ>#`>8e69Ewf~ zNeiL$r8t53I)u%%5*Bg24It(3GzDobc>tkM%Hx{Gl3AzJV;~IIy(pWsl*U_JG97v} z!izZ+6G&fm8n8Sgs^z*6OY?CZ1_>x$B737l2Pzv)L1pMm-+Ot~3=bZL*0bbaMj@HP zJ`(1vjW<@j$#}fUf)MdhNg7o~Y z6h0aNpYl@r%TkD?@@ivZB9_lLbDK;7C$N>BL2BmQY44eQa~vmwTnU~-#wi-mJ05fj zx%YxJ?4j=j(wQ2il(gZjC+V8=C|A4G7W_Q{XkLz^yG|y!R~~Tj88g@XoyurU^O)zT zgnK5Q8tmlMID&K5M_MW-NFV%41sYMA@2tBMIV=;f5>H>ie3$ZZ)iq;!zI^RRd_8R{ z#=J7h0HY@Ln&G;kH)H1fnb=sq3MuhS+d^7b07_nA4id{!QMNq>Yl?oOc8J&0u~P*E zVDa3yQ55he?h`()x9`t;gI`p^4#p-TEp;PP(+ zE3Sm-0&EImlCQHn$iRKRa1QFu0Y{Gjp7@B&{5Cs-p9Q#lD9s9)pRF9Tpv_^_!S4bV z0|8BeOM7>(^~fpX{-71FgAXXZGP5>78y{Dam*CtN#&icF~IJ z5x=S1oaOmlUUr`8Pb!n(8~)AT5z~{-ojsy*(WD>IiuP|DX(ffUlE2-NQ{pAD1beaM zFWS2XlWAXYKc+S(*X4f9%cjhuMMl6nNwS4>R-Eg6EBZ=p#x>wK`Eb)|3J7Wo_1F907)fgjGMke9g4BEA3EdHi;QJa4Z3%TgV z_fIe5tgcNDX<$MjUFD8Azwufw()aG)d#%fBx!^YK>21aYF?)60Vfb>`wUcU3q(&3L z$F1QqY**PBf-fHk?CUDtX%pLo>w!9*Po;IRNl!JOQvVwP#ScRJWgBzMoeB4{K8gLQi%L90j@g1_4of``AO=ghKPZi{#Q)DrjazjQT$CB}{&e*^^e`Aoy-@E-B zBT}S~p$dnebyy$FTbhog>ob`)hFTArLgp|cP*HR8mr;c0#FkaVUK_T3+MBE3?zetKj}7QlBl~Fl99X!OglV4eWJi9z*s;Py}sY{S1iLoU?9wx2mBX z&3VWeE6;l{e+j=PP8l~pF#ApIxyGU%3Cx>-AO6t+Nc}P(gZ;2YjkZ^77KRt8za@ng z*q8al>o#(Dk~;`Q=1kowtixiRv_wR$tBVfIySb&#N~G2yVkW;Tqee1$Ycu3E+sJ*+ z`+x}?)E~LN82_|raRO2;4-)FD4d5!L$}uT@AzDSRMtYk;^sgnbAl(#{#h_8{JS3El z$HtgZ$fS>82|>B|N-@VLi$lkhSY#A%$MFEWh<>sPWKpUl<>IrqZMXySf+@*2zh;jF z7_N0IF`7Ak;NDN+>k6!8sMN4P&wdwFw*{6VAE|5sLDo<2xIm8KaiRMlaJ60KcW%BJ z_|Eb9b$GGXSm4~xyOnp}SJY^!%>lJ)xn&Qrq5D}sTRKx!_TU@DhkP{apBvxaakQA0 zr#KO&bQ7gU8TijB4)1caQK#*llh;*<2oJCR>1}%Lzt?iXEH%PSAXO+JgWB<0&dbt! zt*dI~s0WJh7qQ@}`fqk(a;vZOZ&kv{0vF9-idA^)?Kjc4&tCMG`I+Y0Eczvm@i`lZ z*8sUUx?cmxs6A;8dp*UV5x|HlCeDXn}8CZIk_fviJ>i7o=L~*R3y_>Tg=>N z^%dS>G5%#0tzJ&vH-YKX0UU{#} zYsp>HrjZhUQQ=jt?;?y43gq2g4Lglq`|q{f-)o#6G=L$q;+2NHmh(cpUhDE&&P$vB z56g(*D=0-NMz(F+W-b}utM6XMH0Y$Bs4f5?5Co#M4WU6GJ3FODgJo1G;Q^?ZdgJK} zSW3H!xyFp+)P1fqnNLsYbd>F!U`TA=T{Qlb-deDsb6#&Z`!me^9(A`#yL$_ zKVM#YzPrrs8HhXsRs*Pn;PP*i3quL*gqwdTLTbB2q_&SC7<5v12r$n0ZYHx6(8rj; zqhBy`Gh;)BQCp?b-%SaG3waQFi}%GUwTA*J^lT+BXwj@0atQjA&ZP-|pUcBtrf!AE zD?rP%1YCPaG^TFpflURaynTmT+d)OiKmo2}pt?Vn>>cYtv9b^TeR+gWl3gvaoeg0a_oxTRG^rX9E~Ysm&{-5AAQf8c z2>2<`Exc+zkB!VXM6xnBrf-yH+|p#mlfST&fPPx>t8n!M zyMb@ya^6(_?owXcjI3<^r?=^?{~Es+bBe!|Z^7I?Z~;K*u`X&8q!DY$TvED)L*|}R zUn1zxH58dUre_B#8DAbZY?2?9adQcjF4CbNE`ha+NW&O8cg(!1Qn3$dSt2Z3?K6NmhT$9J`r;R{FQT z)8FmdwKKQb=%6IPr^N0_2}vd}MP&vI7{J8c?U|)uHKM6-I=6t;^HNc0rrgZ%FrOnz>?| zzP|#iDzN5TNV}dEz6E}Ekf6$ima)TilSyzJfqQNJWh&L>+zz2s56zo55Aj2CzN*n0 z)HV%ODMEdH+l6h`XfFOn^yr>OGlpHT2X=Lv+H-QZSj#bJ`4B%Q5a?GtuAL))}< zdEF~jw7OgN1W!(lc*4JM--VLO--f?<-2>XM+`wUAVNG^mwfodtfoe9WzY?$IytL}I zE-&T0l<^=Ky>z?AbK$jbUK;mMSLBF3FAePaGDav?!=NJe%ENqk9+B6&yq5FQu-Cf0 zl=D*N|H&ROQ}1;?YGIxJ6??8GbG8fTw#NLn7S^*yZF-#xujO`i|Gl)gn>H%XQZ20K z&iMf9q*#SRexP5q&_g@y-ED@*lwCKsUiYWdL5DWHrh2JS-G5Tyof4ka&|{#hyKbF! z@4G)hAfEY)mo_}Exn~-xx=q{KKV{FE{pN9sDvjLpI_+!&Vdi>wn}3jKu^IQ?kW%yCs9 z;jd}a$*J|n*VD^5y{?nja(_*m;n&GcpI-a#wcPGK5V~)?@T%~8y)qwh>e^L%!1k&- zPhIb{QT;f**5$QaBzpX(?14WzPPf4JUe|8f6Kr_gwfoNNI(aSk&y_tjxCtZ-)(wNh zD*Y+~Rtx=gjX|xefMttcyNM@8MbX_b7oB32jj;t!Xr0tx$H z)n=QuSyz~q2sHl-0nRPQPcH@_vfyjTd!;GwcPGK@b94wFKZd*e6_QCz`67x3;zdJXCk$; Sru(7*0000Y_*P6+fQq?x2?TZuYR=-)ec_U+ev%% z7Oi8&peSSau=X*8$-uIk6tl?S1UT2?k z=FB-TnvKI zXMT7t2J9c7YL5R$pP&iB?lzTAU^KK|lDzT%1sS zLlhWSLg=Ge-zl4<+lSE{mCu+b#)gbT+&M=4%I4swwFl}X;+3pDkg|rJW)Q@7IL9_s z?xa%s-8*M4#^C|Trr=>v5O5RpRXJF5$4>ASSOSkevbP7Oe43HpkeGDNeqfKfnoc5G zLXJKU_0D1Egp3`dY?#wd=mjxtp39mVfVw;GVGG_4m=8YmF9Xrn6M}aiTPy?y z>kuIu*$~B3umExGHCgv*eM}$Z0UC$I8F=;ig8wwf#gL0xzqSq;%Gyvp3CkBSj1@{N+_grH-P_oxJ zmNSXDq$4+6=*MN^{Ks6J7dUoW;9u~;oH7^8Ik7SN9<*b7&Z(A8ABO3Dfn?!cbLltQ zJ(%c7(%_L}gy^ohh;5?0sz4(P9n*R0@0sUZj@{<^d5;qPBlj8<*$;5rX+p~iq|zB@ zhVfz^pPKd|zX-W^InvV)kOMA++dxs98*p$RCYr|if6=cwdn>1)iDb>dy6j7~HS4$o zrg~ISSj({?O!{QV59b2RDN-Q~976VJW#5e0t_K{gKIg&twqBt}I*Nj|oOogybu8~2 zWP08~C1MEZAZZY@DOB3MuoJ90Ey53JB4)rP_;wo?KH)X|fb^|=qGKw^;W!=-yszQ~ zFa}x?K}Wg8*@%hoV2OzEDP2?WuV4~B$Z@XxWKbe>7Grt~Z;z3oGej?hE%$k(ea<=8 zf=@v*fL?+mB~po!qH=n+K_KixRN^=QZi1Ld7Hbl~^GLGzgA>V^<7YbJK44E4CcApsff=0l??^66veeaqGtsy( zZeLwy9uPg*5iUbQY!2-r@~HIYPzNsz2Wimj&lshwS3pb4!&gXx=2k1j4@(P>MqrW}C+ z{5LUBV8nREZ5rc4BIgOkZusT zfhZLPeyCQ^O{`3lzyZs_9~y@aNOvX;L-nmRDDA3kc6FCTY?1^^H1pCuYF;`^!$rtC z#f=3EZX9l8fK1=d|ZOeO;XF~3@|U;Gr%CY0oW z9&FIJ&QbL@>JlWu|1qeMpE^U8v*hX3%nqT}R?;RGHxu`hD zA)VQmzCzXJZe!iX{aXzWdti7|@TFLA7L_l@y?e`y@sTL?>|?ZD3?Upz6`%=NPR#M- zaMfx;K?Z{v$A<%HOXC8h<5)Doh9T6B8*&>l5!E=ItFu&jD?tagz!4%!PX_7S;wW@S z&gJhy{Jr`YBk^2XJQF+jC{aL?uA?0V=wp*+TshJeSy10|6{ig}^mwQ5L``9QPCNH% zq#x2E{{onFDGpd0p#$^deErT!M1SV#=Jd?Xjl+ZQ!CZ>UdwFsH0H+PHoOo1g02&npS^@3h@Q z1^lKyn9H{V^*q4sm)b0U6d!x6fRA=R;verLIrZUniFmwXAYRggd!FEwkpD1|h^0MF zGWe!dtAd+yp|q6z#^QC3C4f~a`9l)tUtRJWih5L%Dp=ZMq`Y-T1u$hw2~()<^aQ-5 zo?28=C%|G3?*hEm^xsRXM@LPDX?eRr*sSV z#3VDa2N;qnJvGroe?O;4!FD1k4s-9I0*syOD?Rk3uL(iNkeO{y>Jsh+r~CZ0_l$5$ zc|$hZeJf`V_aO%)jCx|M6biI-d#n`5vVwa^-3LZ6k%@amukB{Bj*y0F>jGYp= z;mA78nkzL&BE?$#%f2I?l z(Dl1W4$-x0h3Lfmv+1DftLgxwpibNo-diU%6p;F2D?*l9a?aXQaYp`dI`0hqWalX@ zMJCjOd|B#9NqJ&rCO_h}3TULMD6Gg)h^q4O?^+PgA}#91K~jN$#7>LS8U2z?B&un3 znHA?BdCbaW_qusvv@9LRfN zv)C7GaS&IWJ?E;Z>C{zjDs7^X>d-0n0#Z2Tu5bytn#O~FAF3;CHgg13EudsfHq*6W z^C>743$Xif6($wW$jTF5qCnmVfmM!uHg2G#(OsuvJFYr)KAr-PuU?8_jN^CbGgMAg zruVVoak~yue~=d-pU6gd>^~EL(T?)!?!IdrL-_SXR7H{D6mt{GbO;ld1{gmpFfIe9 zPhuWKh=FT0v+jkcGK%UbS407iiAStKE~W^vl%$$)(j|iANit&F9`M1JWL49c(77iN z6kE3`L^o9x!5kBsAvlG0;4QtV}`$G~ztXu7We1be|&<7V0zhuMuN=?DD+4XdTDD z_aG4j10S?&^ui$3)Ifsf9sOU$$Y3fAh%rtLj@Bq{hLAl_ezE^(Ft$!ZjN6qnoS4lU zEA~!fja({d0+S=A`Vykwr~!qb`qgLayjI7AknTrt!wCFa#zsvT^VU#3D0%8KcoOqW z+|k%EwZy|E;flVwn1!E&?(z#n5=rCu5kKiOdzTq<6u$yd9}RQnM=__+Ead5Cu~1VS zq>Kklb^XOz*{=H>evkMN6Ux)z@06eLxuM%G-;U48eyM^PjRil=6T)>Kg9H>gvCj^4 z%`0(Mt;Q`_y=B=wu1I7V(Sgnv_cle6L&q~)k|vD@ zuW4uq;`O7xVOWxjl9j|F=FX~J2|BtnEX+r$3CEd`gXJnoFHjmjNRL_r4>P zLXy%@d>=zE_?a8q1DJ>_6I8z#u-mng%1o4H4$+KBImwgUDz&0-PwYL!87(539jm^; zD?d^B4In}{5$7rA@+YSlaNE0N-;U|d)`M-Ii0O(zRYmp5Jo$6_y76`yrNAe4JrW75 z%=lD*Nc5$hav#Y80^}&AFAm|qnede?H?UPmF3Wq8FWfjl&8o3N0sHDop`0pAbGj}XbTk?JI)xkoc?5lM2_pwfBu zG zYl7lQe*jwh{7O=*jb>3QY3}%(Gv}NugKr3qAcsZ=AZp_LOGC;_NO7X?MS<@Uq%eW( zqB}nVl>(`AND1kODenN15zFXAnf=P9q34szjMMb1#ER8q`51fCWIIlTLQxE$`eGpA~drFcUdSMM0Ms z6W%KCG;xZs3=;;Qc2MN%4zHH(Bb{)Ai{!yop)rv(4g7>o`+1xT^M?v!N;4=yfl{j)$Cq;R2;|> zg3jImnsOn6TKNmetG0v;p(bFk>Qc941oq_wDvj2`lh43AXX*($WCkmj)O;1)=jatW z07>lnaon*^S*9GR^&qB?8GSiZET^m=_IN=bh2+j-v0K6qKC3paHkG!+sd=tnB^et8 zn-pn1qwjU;Fr1(0pq|5C=b5ABA<9W+*)4cB3Lfm36y!RGPt=VEng?Pkgp_%6R37WK zpX?m~2n`l|i{_Evbd$tV0Z*Bz`sF&m3Kp6#m0yxsBCkvf8yWrm>_E`GE{|B$(16SE zgF$%`imE8on90#FyUSeGG^%@a0S+z)H}o{l*{vffryX>?!7?8R9Sh98A4sY`1+teL z2tVg2AjTQ>=%v#;7Y4fivHufe=i}C9u@(7sh*l9GGZGjWBSYn1{tjm`uVYw#2z2u} zxl|yL{}8Ww0)d>9kCA)sgC^>`u7^#h?kFzFH%A18_P^ek$Km4r%SqpTMKS zl}F+d3INX;F>n4y@eb7ptt~5S0(9R{9d3vL(pOM*>w6F08YAcBl28E4%1+D+Is@b` zGap?B?c=BZoOtLAJh}ylHv~#lK_EpLUIrD~KXgwaq@qQs9C#1{VNu5@XHPm5$x6>< zVT+lFx0sQ*RBG&PwIajN;0aX(*ud0KQNHIn@kzsq4&DdhqF)B4oQbsVrl1g}28Cf0 zupUtXbV0t_=nb)S8`X+Gj*DigMj~V%nJmV|IJuWJ<(Vjf#lki3+_uoAd`{i=wmlgMW!i(xl7qSeDsM zY%(Al$^Hv&G{R30+5wshS1C`)5sS{65ck=~ zeop@$c)<*@ewC&YC10CY=8FF6jR;9oI00yLIxmWTvSV)t0boup%jid?q0TL69~UVy zK+dTc$e}Soua?Tc)i{hre_c8-{*gFEGWp!Ze#A(|^za2(@B&pn2IDFMZsJv27=kjz zVCO4nu5>`3x>~1wu-!4pnWm}7VvMdtL()`y*cv(`0ql=g4f+YF5NOgSQ|t3~eu^1FGc*fI zE9RsOX&@;lVX&|kdKHklxf++>yZKfi129_E`am4a4&tt6f12#(WA%qi)6{&pGabz;O#Bx|CHH0v@25-=FPNY%|C zv_^6WM~&o9Njm*+^o6{;JRtG#Ej~x|oyaO0=usyOILQNKfJ?tUsi`9r1MUu7@Di?U zJkX^oSGoh>goBLep;c?K#<4U;oflkT6g`dw$#PFxhlGZ+qDM~@`X}D%99I)+);J2$x$toW6i352sN-1pJ)WiX4~t? zQ?w4wP+}BU@*#8hen>i!KRXt8ywcY|z&`K9Bfte0#7w;+90aXQL|_r!p*MV25~i7S zGvz47lvvK6xJr1TNP=fOcF%*G<2=C?&lpSd^~>GWMtuk-Z^=dX;qppx<*3AEh^%_O z8tdWV{E=%RfB6I-g9Jg<6^~8_(BbF2ALjHM%rFlY$4VF>fB)ceK8CZqfLQ^Iu|$;p z7;Upl#*X{tui28tVMD#pO=D7mLYd_sY-pc6m#0`pO(?^UIEX@+L{s9ho-CTt*RuZx zNQ6LQ6{G|(=j~t}pX5)s<^s<|0a?A`C-&48BIwX$TuwCkiJ>q^R2j0= z0)uxsWC9q&m1L^U844!|s9T7Tw2EY|kg^gu@FSUPPRRokb^UNZ8hKacDpZlXmK46-sIuC>3wb4sM!Na#*?!g`_sqt8!)z7GGQ0FsaH(O$EVbD27l!$|@jlO;%I zQ37O{EgUK{0)JH<5?Zo0tGkhMBN+L9;IK3$tO^{Ss6lQ$uu zKRrKgH>vvV@|#YTG0Zu3b0Az}Lx|&W(qXo35w(eYhK|vbfET*e+Fo{D=@3rf()*pl zxU5e^hCqrS?RR}-ia750wP39IZQxv(2ZNKF3nsFd%50D7%?#Mdocu{lUKC#w1^R@% zWIstFa;^vkQ|aTZ4-r+>I3I?YV9{f3I?X&!V0rRd-~0i6jr-2i=q1ENV;@yjDlMBJ zXP>Lv<0v;JHk}^XNLX9dZ45=-4kGA?k7}D@BPWu#8W+fj?fyUAiQW0rg39Fw4&+I6 zLxpQJ5RvKUk!7-Ld8EX;JjJ6!!LGH|&f;e%N9)B?a2PlCt`b(B@i zHrFbEl36%Q%@sm+;TMU@!B6(+q}#99>Vv{DaNy1g!6`xVL@`kWl;Tw4956F82}t)} z7$}IsG}ZMhtx^!CLenubq_CgzF(ohBc+XKF_U7}HPQ4$*r z+s6=zVJH*zLCn$(&20*ziQI-oLkyWAnmQBqK!=jDn7rUH)lwX5-Twk;U@;V38O<`m zV(Ot}%-dr{2bTaDu|mlt0x}2}mztBPRCUxINg1><#k49wzw&B_X3VVu6N6J{FuZ zF3qQ;BLN)Xk+?xe{OcYBwx<6kBxPRSa-v7jTjVGqxy?uip{vyBNYE^OfkFJI2Q)CE zaFx@Hs7e)0*d}Vnz}%B-%E`wPRAVIk@Ugr=kO62CC?(4h9tzTdS6ne7>zpKhveQVf zd`=Gu5sV9#^~MuPDH$gQNWH`ucH~J;B>PbnqyL#mwekRYcjwj5Apxk#Y>fxPdUbn& zNjSbv>M!~>RiH#CYz+Q#922~C{xoa%3FA4C(JPu2se(bgt-#HNQ&qdyTsWo0nSNET z#~4JubDkI%{UAs9-+skUyA_3B@oStaf3em*snyLFm4*F4BQz^ z39=B7R?18w6z#j)ooY=2!XQ%I6!cO-#^LZO1A6J^Gy;u2kf!9-JK4V^rdr1=t}cWv zq#~Juv5x&x$u4N0Lf6Pj@&~1{k|2YPJDJN30`g?(J-Y$QXlAX3Nu<#nP7h3?0+o^_ z*}3|a6^5;pxtz`z2eLv)q#=d~3Bovsj~?2IVK|Zf0Z8GrvEt|5sx($wR?JX+T9Vd> z3SEqQ++->1uta{0*;hnTM`Fy43pN**_P7889~2eH@>P;FOFY`oNSuNk zCUAtEvxu?4t5DR{?#C&6goYp~YgMT~w27J7*~b;lsc-fU{e&9~qv41&1E;mx1Qn{p zD(G}Q8WnZ3H$@nHWD@N(Igf##ejF0wM|?{!IziGZ?fTxE0EbC#oPaF*9QCz%1^X#U zjuAa)$^vN|)2yTk{OA%4^oWbTKCdroz+qvAT1$Tw^CNUdD-)F7#~C6IHuetB04ySl zudeZ$kk{G7zi3k5tTxI}E9kmb)I9$BoS44V?GXR8u7lloJASZ|n2)6u-*_ z6;}nPPMRN^$36q5C{xWlrCHCQtxQS`-JdvN@FkL~76HkRoxnc7!eJzV;QqmUbMAF7 zkpnc2iTH?~!5t>Lbm1rh22W+{ zgM1i}DZ7FkWB7u(*g9hW;zp+G=mG3#+}F}QUh5{eO1^wgA6{}qd=6hH+l{|`Chc6j zuCOo8u!j-E7CKbLbep7II+0cPJ@*i;6X3o&AS>V{HU9*1ZIN9S6kIY zQu3~ET|rKu=p_Uxr|uzw#56BmQ4vf(??J4C zx=VYc84)5R1b#>;a0Oobt82!-5m;zAGKr`PrNPMYkY?GB84+{8X62dw9-bUR#fjQ%@L6bFBUD79?<2Q>P1R|O7 z`RTgX4`Lo|LRC3k0+tJ&?nBBzW_0vw9`s$|3$> zi3yJx57Ksuo7(IbougJmx6FCy!x-zCXpCM(8tR&iZ$)wA^Acw#+N(|yr}yW5kDx`7 zBISs~V*)Dc@|1FJH`0g9nC{loC46CX%{ zr#y>bqi<>+-$|9kCr8kqOC(9o?5jknJb9()Z|ctQ8x=r3B4^6DcLz-g$m-=?fdtj) zsCzXcH9sH;*viX@F$?8VMc~OVNkH--wdEI#>gwcpRrm?gLR{Yi$FTxL7y!-aOe6}a zM|c^MRzfD|#6zbe81px1(YRFr)H27CW(IjAK9Rur>$yTSgsA^TJ(;e623s8@5<#r! zQj@c(n8SwcFu{~OGr60PkIRuVL{#kLx#4i4C$uU<^`pTDXeySV_?Sf8h4omCIOE#*Uvr8p@! zk%-H(rMC=##|F7mo*~hS3z6j*vF}Kzbq5|~f&H+>)1u1CpqEaV^3{cQQuCnVsT35N``ifV)B$Zeb>ipf zUm=6;zx5Dl;XcpNS7XF-L(4BxRHZT!cX5sHLP_Y7h|#=0-FUM}_e#={Ki98*Vss9q z(W5Q-#hhs1clfHeo&g%?!(Sl&23p-t-A1Byf529cdo|_6{2fDmFQ{CtF1==yAQ8%U zhC+tZkmu!n#=VruM2T7S2#_y*K2ldL5R@2p9k}1Y4z+?IYD_T!^6@b(0gPt)PcYrZ zOF0r)qmn{6p-X}wSL=f=v+rn-Xanr_pU1i}&Rm8E|6&tsx5aNhHAUx0(+aPbZqfhdih_n!BtS4uIgzfXo#ePSI&5 zn;;+(o=BP;&@wzWqKuTEL6 zrNPTM^z1#XzN{+bczuurP_j(JA}f$q$5HjyNS^TVHgFigl@g*{nJ1KxY^kr*0y9re zFeYUT)KF_=I8an32R7~KaQVXJRxOlHKc`Ue z=;(+&SV>X3Mt{6Qz}C+1lN4z(0jDR+vFHn$5qxHT$HFCy7X^8M}G!k znI)k&Vi0UXGh;GdeJg05&Pg}at5eayjj%AN2uXR4e22l7L*8$;zB6ea{C(}?7_{c~ zZq;GVfTLnmWg0pI)+i5lglw|*lSjkv6gx{^ye-+1_EM`=_l2#r%W4=DXWq4%zdI(Y z{zQLW&~!9){$?Wq`#_7&a5=gh2GLLLz#j|aH+g{HYHb6*ZbvR#`xkm)jIGEPx={Gx z<5&i4V8rfE9V(g^V+Q~BKUD#-i0mFfcXHza>*%W_P!9~>J;Sh=ViDGeS#0F$&tQb_ zikE@pAgLcq6R&M3VDi0<;wMwfoCm-}FU^ImCOlFCO16O5!tN{q z^qWAslGEaem<}dQ)s?9kwE|F}oY*Gy9FiMsJqQk9;G7(i0?V-4_a?JCQ3WCbH|FR9 zD^f`#E}X=?sZbgG6cA-zRkxIlhwlp&=tDj;gml2du=@FAnn5DQQuYJ=XmOFF2ek=u zc&`kzK?JGcpG*M5umvg*Jceg7QRP99bk_ViMRJtHOeSAYAizwaP`?lkj=_!`c-^3e zX~IH#e~C+XC2Mv#l`y#gdyTTd6J*mJPFG^gJWZBd)FD?wlvsto*Fgw1=a!9lV!*l5 ze-+HcGbn{$&QYVUF7*zVd|V7cC%jM$7juB;_!L=Z5F_1U5rtR(54vESZcD@EDJ^bN z;b1s=`VWpc10Ax!l-BPo7?HT z*eF-H>rP?pd6c8E&T`tq1mIJc3)a zt>>MzNRa9{)@F|ZMB95ia$qOZRaWY!lae%5-OZ*I>__kX)*uso-7U;AF3o4;C&5@W z5k3IhlcxA8u4{%SooAQ9=upsX(wSWagyjytCkABEr zeU7vM8Ul~O`O;?myY8^8TI({^Ou{GFNMq*O7r+BLh0v_OvijP|NSxRg-4z)W*)Vz# zgLD};HgU#;OUN4DeVh@VU}h54YbnZ4tN4AaedrJL-rA%#5=MNKZ1e!=&H%cq{syAQ zks2?c(efUkN#ChT$G*kaboESd;Dq=LV_W$tQ6=q(=J0yj|CBUU?Dg;6#&xVnlF2oy zYw$a|mVg@>Adp_mL9(WgwrfSlI=zOHR26$do~CccEa?cip!{h?J+bexyuMbj>sBbk z-$V}aQTO;kjvzGIAZ_s~S@j9|CYNz}JMN@+{0D?MN?^Lr*>7g7aRy+k&xe#wvdHF_ zfHO|`1U|47LfHSD1N0TN#em(Y3RW?i%QC@8pPPz?Ytmy@(rKji z(bAG|AB=NLzT&C=C1=x3$lj!{Ac|(#Hxob+UMx(PfzvQaM$#S$ATAfmd~&mF;a4Wp zlOb}g1TR>eJ<%C;Or2Z%Sk1bj5J3DHa_>o7)qSdrhEf9pk})^H;KWs1)$Q63b@LGs zk$iCe;Iktj62Rb#$7qxafcch4h74;+@x{Ge4ssLR#%zAthWmJa4eUZ z9B9ltGXVn)XeZoc;uM(1pfgOW!jlk_qpel3f_ zDK0FXe+(UbYS9UaN8508o__Sl!eC_hh+M!f7a* z;3{6K&qU~F&mP=$GZV)R{JTNJPfz`~gc1AA;=C4;z`oulfp!>23x3dyxa#%q5bI+#xd zcKywQ3-`6wb{-ckx?4VaQy#^ulKGB}8N};A#&s=XD|)=53vTcSGJ$Msf`vZ4&;b4P zMS^k!TMUN!;e8Z~X39}A0e&r=gm=@0(9<2ChC3}%Yu*e*eTJ}2%1 zCXj}OXBa1xmqtVoiF9SE&@UJs7L&z8%*=iTj1HS5)CDgaDq5|MpjxO4$%FrH?=(Zw zq8@^R7CC6OAgG}`k+2s23j?CN3ey)@EjG-Iy%Jj1Nd^qG z0Ai;NNR&ILLnVztC}{vqML?2Ql}QXGIg0rH8wub6ImdWCq#@7}8&-10;hm8EJKnA)ml<4FN85FaP&d6-ew=lfLh9v;$n01+7?N zbu+_dd~UBMpK*f;lT(*Xh);lB>q9_qUMB`CE zfK8&_If#lCjVN7?)GwR`R>AXZSP+~F^fLxjTnN^(Yh7lZ>ZqSDGL*Q2CYe1S$D)a; zZ@J?Nzl1zg6&jC3mt)~>Y@9<|yb*QQ3+4!8KMC?qViB_f+%O97})aUFCOw-0uCSnF0)db2HKTVRFXb+Jl1UpcZhu+49*j=T81$f+QBeqH)i?IC$?kZ3)FiPX|3Dk-G*s(?PDphx;znbi2R7_@8lDC* zFw}K2CRP)j%w!4k0Rk#>t3jFFrL_UB;s>T79XCWwB@c4u- z9S_XpImXx=8;j9YpI5?&dRXF2if6+F?3Z-RvD*GztJTxTD!igVg5K~EEM3rH#92?m zN>U!4CWe)zb`PLCcKxjOSObsbATx0anD*quX+I=%h8tXBK@@T+G9{%7B-rYOxRF&t z>PCeSLL}@o6HYw`P(enGu(Iv!1q>L3LM~(;a#Mwac1ukpEP_udfq_kWOT=NN z6^YdZK_C`NV`2d3Q&tr-&`^cf=ZJ5NN~`zr)t#;8aypm6-gcK+h*uYvI(FD~9&6`o z?{Dq?ShW!VqF?-Z4<9cQr*04s2S;P3;*TK-IjQd~2_We8{~&ScZOixQU(p-rD}r^J zLb*kbI_-4I3cU@-C71$)%`arD-jdx}-34@}LAz{8gOvURAjhM&elDLRfU%@}iNmjJ?f+x9n>`(j@?}9g^Fg2vwE(DH$3ZfT{*eHY7X` zpb}Y(iwZzoinQOlJGO6$0F8dW-}nUj>YhB!FU^7mNG5HVI8YF;>`BJ(k8+M2P5h@O zh?z`eL%G10vZ!?02!z52kctDkYc`U=3cWb3PBj2w-i~h3*%MhM^u+??I-mjaCOLt) zK9?WITTyxfSj`*q>&y;J5HKq! zL^Ihk-MHi!a_Z-Tl;9U&2{}#@S&&gv`5978e}yvyUW|+RU`_@5F&%yoxeZ z2>FS`tu94Ho#w!A;c&nsRg*(`yDE<=@A_IdaFl}%7U1z~*S$RH8y@-+1UA%VmD3v! zy;VmQ&g;JwANU^DWX*MBPs-N%=t0w+g`R*#&jDth08>x?=Yc(K@4S86-hJoO#>j9c zV9-$XMd8ikjtDdcweIOA$ z9fL&@+NShTG3Vq2HFM9oocQdLgW*XyX{%HYo%BFdDJjZBCDl-N2G#;j<#v+ZkO0z< zhJFQ{GC(;Ajn&<7hX}sOC?U)N+;(K44Y2KY^NPFeE~oTP7~(w|KiTM^y;j#AY}FgpH&2^iIC5kkq}^x3;;?h ziIqY0p<~iiprFgGf<)B;#KZtVS!rc8n_9iEp4%5@Hvtxs!}JC6!mOT^^;{%?J;737 zLN$tSj7w57KIIAfgWa-+I!4<*_ta4hTSzKx)Ljrfe4OZ!Mlt1A z0!ltI^wN8Mb+F6Z7ACkw8rV_;$vvh6mQ%wJ99j;tppU4^jPq=ia`JwYr$kg}OutWQ z;*hR~{`Qlke4q)IK%>oZivDOXxqpgnI#QVMFoD-B5tNpMRo5|y3x@_d~zkermyWfGL=fm%z2UxVif8?zqvcNx4rx9Z;9YOA>}b%*Rh#qxt*lLgQzl| z7CzK7icm3c*EaZfnV}NgKl;&aNec*J3X8N-Tp}OHXZ*ifASwCP8%HpU=&HWc`@}*! zcscj7mBE$N5AIRd?k28|f4pgIfh`Skw~95qd11&+^!SQ0$q(ih*QIbKNN26HrM0E%W z))*f7n*kg06puwt0jeUp^9q`VqfjC1EaM zh4E3jKUs%4QLl1gO44e=hjAis+Mv40PGazRv>gL;VbllsKe!w6PkDunWW7zq zKs)rNsskQkEFtzgXOW1O*BO#QkP?(fukNHrRmc={UNgwG15Zd+VUu+v>M?Zb&3JBT z0$rrd(FgVCib6+nvo2?s9cIORF{dYN$w{9;^4F#IQX)u7(E46KG@4cMAK9^8l#G^>PVO3t2z1k_(!_xTN*mvp+8*0?Kl-0A}RMK zlzT-@*B=%rGiWO~)qGRD$=!9Fqb0W1fTohRrVr}4(a6}lmAR;^hkau|G4TrgfS-J% z$}ENuOA*Q=ZJ;DJxYNBN!^iYXjGQ`Ld zR51dzoA-^7_qGB72@jX99q|=)NtABxHd*TS$__)0S zDA`vnrVpp%5BsOie2k8}aepYt4vONFdkEuKPYkO)E4J8UU@n`)b0j3H5R9FaWZ}H< z2Km;OT@??S0J6yxggIz1)s<1h%XB8KjOC=X@1r^htpF-WoXwS%{H@>kKzq}(7PP?W!V&6?9Km>Z)8LB4L2Tn+G-Ea_SIP`@S)ZS7o?n{Oj9MY zqrggU19-AuL_dv6Tm_wY7c!BboP}uRyQw$vpFgR~kP4MuF{v9HDh@DDmyzb}PJ(tV znNDmkabA1?MiV;RU#F`svq3I1k=Zd7{@?pbZb3?^mrVUYB)A|n^733**K<7lj)8$ux_*N+1=*u z-fg@bK)ETQ*Uvt1*C&^%dCG6}@TA_KiO4u5r%82Wv4k>kg5!w`{MWU{gq*y}F6H6s zeFGVji(IvMhK+D6=W_~xIFFBROo={o&b>VHaXJ1e(DJu~Jb=$i1$uWq6yc~3d@M5I z#NOb|MOA^i5F>9=6kR=X`fr{`HzZoI@wI@&&&??9gS2++ey!bj#qM_gI}dHof5!5* zd$(8kFsMI5VISM<_phJX&~Dvue|yJkkFdpqJEsB?Yy0jGu4!-l*gfs=Bj&X=w!ld5 z+K+ixD1wURmp-A?t2oPPu+DpD73G{V>lW za#`4Vkre|(K@4n!^33TXk|-deb&SWLL{~}!045<`_z2xKTM!lJMM_p1E3dV2mq0%n z6Nqx$+{QXpSuerX`kOl_ONtcH$>j{Wjth%qF=a4`TbR%OSzX1pprE~9McAG) zL8`ml2(}9p?LOh1{(6}m-)6_|4Lm@OQ~l_2nq(X}4_0iCsq94Jak}yGrR{%>}#}F1xEMRa!y2$W#s9h?%-v-)X$9!L?Vwn3cyJ*%HGd657qg!Ca9bo@9 zS`j7Q^XH*)BML|2dZ>3FHhZdrLz+ugoF22t*E%{VIU z`(tD9AgjTK=^yI8SNH*|00!Qtng?n!m?QXl!@l}X^kJkJMB);|NW>KEH6A4-X=X6u zbdVeVBdbjMYTtrr4z26+m3=3#zXijGrFg8*F@~U*Sdx?9Vo&VbZ-O_&TkJh*29=1=r;XZ;xWNOtDyo^p-3XB8r=yWR5X&i}u*P*r4b0V`E83BfOx>MK6sbLS& zgF6MZQ*|g4^@+1r0_gnVE^Sb${dIDZf*aJQCc30cek9nZe0;2V&TBYaXATLW0*3_U zV_~lr^_q~QYy!kz$pLmVD4h@!4?=#yR46o z7kw%7NH!@$u_gZ!HWKGl35jl@aJ>)JwZ6a6w9^}UcH-wvhO3OHwRjP;z1NwT3Oh8p znruD6^n~Lsmw~liXjhK5ah^_HpSOsd)B>a0hnRb9MIxyVOgMe_`+jt%XHHvUGWSIA zZj+1SXSflf_)OV+;LEz|HHt1@*R}gF>?6je=b(0Gkvxs4RmfA#{UA8-n2b0sh1D$@^%-*)YbzWdYY`NFCvc9Wr|I}^wS$pI6 z5ZiL)iyiA`eV8aYmV?&*Af_dDWQ)tl{(tEHbK4f{9@8+FBlI6*wJ6~a$^ zabtV&JMU;mpER%C>Fa*lzj!*{KMG0I0Wb_oo>K%v>PBcuXs^?b> zFLs9iD0(UhQx$Ch5tL}Zmy#UlOeV!nRRd94lUX^1}KRMW3Rf{&GJ|=)a>qsC797 zV>sTEO(e#^3$b9|)1X7gN)(llS0T9|Sy|;gwK9;&fE=ACfc|C-bPH_g5_GR(kv`W) zK(jbeLb~%uenJa!Xwaeddxc)9RRrmdDzrpjL7HE4Jk1~!%0ElOeVwXt`yv&%@#FNi zE-Oc5EN&oM?e)Pz1K9Ee*F&A`Z;vUd?uRYrm+sr!;xbn^{Z4ZT63oU|OYUs0`^<-& zW&!@}We2o{`_66OShu}hwDrDrq$PajO4@q!M}Kj`A??ezZ*AY-x!bBHmi(EK-ew8e zTaRDdezIvt`@%i)q`;cih{avfOV5XzlCU?rW=U?%V9j$l=y@lO0IQh()z5izlYghuhe-T z=hZ7e!iuZSZ%`5a!UkSP*16i(<>NB9dCp$8z+^tJeQ)FT_N^^D+X_oWy!z*~yZk(< z@JifH`+JZLahoL^e|Fr#?drSkZU1rCuC~Gg1ueGSVQrS%@4MO7`+5S4nTaC$4Yxf{ zDrKi=fi`}x;Vzs1d57%RPB?hKw%sz~f4F6P7|>EnJpKHg*58vXmx;@BtNmTzf32U> zd5;b3)mpD?Zi~q0c5I7>Sal>(;WYN4-v=I4%|kq(RU%2+wbLqqxCETlKGtYqHds!$ zo!@8s?J!`z=bG*9`A5ueCoJB# zz3YbU5tBDtn}cmkUkEu*sZaa9!v@-B{a(Iu|F-;qdF|ad?Py0^66kn3$aJt)nJ}e_ z{KTbflCV91UIBa{55OPqZ%uxvh}c$&=v9Kf9HAy(3!24&q?4hFhxxO zahDg8mH0$(sm_f8XWxL6mpzl(KCZlyPGLO!2SVTGGm5cOXxh{~gBji#qX7$l z$J#ZA8?W5mKKYJA+iyK{x$TcPUU>;vcNl-rD}Z(h`0cMb0+o*#2dLV*eNTJ(8*gsk zTfe(4vaz-X39MR$rqC{{DFdUDAA#VyV>E-3C{qWC^jZZ{9Glb3oN`8zo_iz%@I-o* zMbS$Z83UA5{~$M7lhmEKDU1a$*ly5~hx+Ay+0~tlH+$H2f*O@qJJks4Q z1*V2e6~u@1A9I1ueEWrT>&8T*!X?8{W}q>*G~{Xs{NhroD~?IdXsx;TEoSvOQ|?Yf zc!D(Ym@jcg2gTu2huvdvf#K~~0i38quhR3!-uS;E0i>{$HhEXQm7{L*PSZ?D&^E)d z5LXmaxS&`8qZ(B&=j}$FiL=s4k~fG?jCIFf%?7Jk>Y}?HX@}bFRYa%(3k-y8%BZ{H z)URlD5>V^FIJ*r5x~U{Rw{R4!_oOmWZiBeP4c>*z7!N+=2s?3`C2#M4+!5`Wr><(( zt-q%owRA!I>#twmK5+9r$iA&Qb>8WRwg0$obGyKj!*+nB03OLL;rhVij%?q*^{)1B zw^&Uch<{f?~89=(BU#MaDc+-Bni zt=?w7@nU?0fGxRcckXQOdF<-;m}8f=v;O^Z@ap4OrD)}XecF1jczQdpKHA)#ylsQU zl|?rWq-oGc3SLK8f^dt;{9hiusy*jXN49Hjzq1{+Y*G8q%ht3%xpci>@-dkkeJ(%$ z>#`OvyLPwtopnUJ%=Gku8}0^udL4-ADKZ;x>w>nv^Sxs07~t~;D^0?4#1j@t9MVgz z`$ik*nwLDps(^b;JlJyd;tOtS*Y5P^k=Yzhm$f*q!ja?SwcG`hkt<)IS=+@2?%QtI zcyIgYm3Or#A9Y}R%@4Ll@L+0AO&uSb0HskwGk6+M^IB1{t#}}I}yuJT3 z{ukK!?Oe3>IKV2UCxE+cNwU8!PfYev9EiBs$L}&=;UHxqGI+CC-2T$d~o^b-% zfCCZ<8tw#Eiibsj|8oEA_YcsC6%)lV#g_0$5hkFk9s+nIZU)iPRV{EXD#9_G%K{dk zkAcy^GwT1C2W&7<=F92hM6V9W$fnLj87>CmfKCgE0T(5JPyiFUnj5+|6(o}x9BDp2*Gj}G@KCHV%TmEu!V8QPwpr5J|XMQT-ti! zU%Y!$Rko`O6;yN+l+TWKNPhfs5b##%gWd`kK!8_2DI~#NdL?t+b+9vQa8wW#ZRcu2 zr@2w}!&FX_tKZ9lkib35dKecO93Ti0HA^y2oEQ&zSemWaId z!W-I)Pg&l+d&^zz87D1k3#@9k>fi&~zkKh;_CGi5Xg_%7$?aYXoUY1`U%IA!;I@0( zA(nXERVzRwbY}Q-S=pshJHOo$j_Y3X$o8R&Zfbw^?c3X5{pwNekOTLNtuJRgXXuVoV21n`qNjmZ(7^M3+K0M*WT4$ z^wsOzdoAI8+zHFurmZ_;-gCcsLt9}yd4;p6u>?h0aU|a!tXn(M=)UEy``SmIcvM@p z#p{UZ{FD6cKjjji6<^=`&%OQ zuJ7E`o_EsH_RX8`Y=>Fm^5Qd&Z0n5o`z(?A%r%?ZOHW&6`KbeCZ#(<{+!&Mlen!t@ zy2Ah+;aBWGv3Ig8{1#hFzqEPP3r}uu|HdutQ&DhxZEzA2mKYp;STCeAZ0I+`$Fbjk*HgC*}nd~qua%| zY;AA);=1;Ummbru-mtU1^V+*jX8W{tmhhip^k4A81M8EOl9a@+Vu` zx1D*6wXtOJy7l+A7ulAqm6ilSwgr`Er@5gxz5_JJH^uXslulJmKvTeo#jEC`QYY%}T@XAT5 zD-%FsBlsh5V?+XUx?Q1OnvJH!-CI&>cgboUxKxUVl#LW=btB=vD>%e>I3HmXDjTw(X$$22RT=8p_7|u?1fdoS2J=sPY&5PVzF~tSlZ;U8ekr z6(!3t7$F3)cQ=b)_@6$B&cG9^gPcpW#Gb}DrmYpy7DhS3?D)33?`t1C+Y_6m?Mqjz zYv(@li1yxZ-_V}-h*fQ!U21&x*KTOnz3h?g{olX2z51+U+B?5?T|4WDgW69wZEY_* z{mAyYpRR4Mc=R#tBR{ygootshmoAzg3DR-P7Phm$d|kWcWv93Q`JLnqo`Z@=J??bV;V+%6FxWPWmQd&OgqZRdUOhW48eKfGOh>z1JBDGxcUec{SAmNXsR zPW;4A+I25_Wc$v~H@4#rT@cl&o3?Ckk3W8S`=TX^k2rjByXDRu?Uz<9ZfAbs>h|*& zp4L8L$>EF6II8{SH-6ThYKie9k2UQ2mH@6p^zPf$?`c3U2D-W`wn|s3pVCIrZ@NPv5<%{qd8IYe#(avUc@vo??8g zZ*RDCQ(Lug-?omn-UB=Ij|8y8*s1hO{9Ej@@0BlnNc*=Ru4(VN>dy9_GnTc}jy$++ zw5gp(TdjecnSXDPPlG{^-No+rN5KJNw8*?XnHq+kbid>UO>Tz1X%4T(o{i z`|8%+u}{-ef~{6jTx8Y5b5||2;_#eygI)H%@a~;f$efG4mr*2{iT$t(y9B&*4z=Lsds^37 zqWJDp7q@dxTV{)yJ?#&^a$9@u(F@xd#>4fSceYawJFuO3!J4-5^w+>D$_UM%5jG32qnVusEUZ;Y)Y+b3f+gfW{YDe@^rPqe1ktE4A5(DEl$tJC z(JV15n=u}zs|4L#f$=C_$Sj90$10afeqCNekSOO<2pKnGel-tvlMpgSqIFmumRs3; zy=^pj`#B5Rub+KLJm*jR`TX-OtNQFW?rQ7r+|yq3+(X+gvlPEd;D5hy@wWEPFKlm% zt@`I1S33p%HMHFhHe{tVZ5!@ufAF3y?V)Gv+pgMV{nlE$CG*;{74zCAPdx20Hf^C1jAQh}gI!nibqo2t%j` zOyOB_i+%(*Y06VR0qh6#(xJi(LC-Xis+X8WF&>8ltdGH5D=Wwa=D|7R@_=9G;U!+$ z0qt2r2{F}8_1Z6{#{l_0!m!`O3Heo`C3TQDz5N6G0%`kp4&#vLpb`AkBnbk6yo=w6 z!?>KSr2*tw^;pv!k?VbQm#1c?|DrQWF>olS5t@m8fW#AII7^UbcW<9nGO!iZIPa&| zkA+@bCle=xn>wgJD%?U<1ip&cn1fi1p*Z*SO(;0ib%x3~K^Xj~Co6y{f_^-Bp{-S{ zLUwc7;Y z?B7mazR(t{bKAL}x~g6N2ajnVwgm0hjfa~pk$c?nE86ESyRALmX!*EZTHUbYzV=6F z9oufUr1coPg#3gzUD&?lUfwzHkK`jEDH+s<~w=50auE=y95vo>*s<(_-nE8cr) z`|jJ$Zkw#l@hc8$r~dQz+w1I-_{)Cz==O+@U(!}D+%NXRX z(8&ET@ROeK`PF7$%sktYux(boeCZ>WwWX$))6V~S`{dcH+D~ok!e9REp0?bQwT%|9 zo?waKGNb9U*WA>YMA^CpX>S4zk#8 zn%fR9mXV3_=&_ceGz)-1Ds2bc#N5!$JR332NC$=%6v|H&LyOoTuJwS zyLSdG4o|P&FZ&?yC^)ORf)U~rgFz6Cl^U3?31HeQ=2QYuR_{YuE+U?fC*jhh7-5HJ z40WH~n-ktno$mp>;qpE0v+rKkp8K@r1qA);N9{R)H?Ob6&BKCnIW z%!TdBn|8G~e12;?!AgR!d-9@oo%K2G`1$RF7jA9ewj^g)8pU2xBBTsdprE6@cBf z(gwi3FF5Q^Y(pq=e^@TPSmNe#SuC`YA7`#;Bul#3A;Dj#`N< zqKTv~5_{)O(9jIp7fd?!wu?$~j6d|Pt{LOvJnZ5~Q~oU$#6S7e#jpKZ1c^A>cEy@I z+v!IyjcT7)pH4pP;CB7St;Y5P?Ji3e&pv)x`=}*huRHt1_QM-D*`?-X?HQlFw4L|l z6C-x)XO}D&?6*%l^%Ix0BQ2@*8%2KjeV+v7fGM&$7y_UrK+}QA>=L%~28j`p-7ChaI-4 zt+piV9=r5ZZpZQt)<~b*{+qc*jq{Roc|FEj#X;$6aY?q6lV3(~gv`XcxzrU^>Wl88Q#>0~j znIC)qzGs!cvk#r$?zUr>+2#6u<8duvU2qNZ0bvAwz;>1Gw3|Sz0_a77*fSWwM|(Go z2z{PK+V>BgxxD?gRqTFdTcrN;oTID?ytVy>RRC96vbNR|z%%Tw;PZdu_;%H;_q2tU zl=@Y+AKtvRJh>f1{iKr)Y482k?d>WIn}Le;+SS=sml~X#0Mm3jOBwTtB;4M^3C8* zFy*tzL@b?-&ogd<7nnR~QLx@7z$dE2zMMW!6dA~AhaeE+Af8Yb9q>fcx(oOdZ(Z76 z`0SPAa{&D=Uvp5iJqOT9n->o(YVEaueM@`ackgY>me^fO@yr4!MK_py;XNzcGtXXP z$>5&$tsmZHW6o($JmcVY!>#wWhn=*rz3Crrv%NBN+MoU25$(rUY;7kWcVPSerFXY0 zZrs)W^d*P2`^->3@VO0bt*vU__Is<_wKr~WM;|`FefN^P+p|8hx$XX6C$^ndx%Ba0 z{SUXdFWzLU9~s$oJIf?QOtY64jGl*vwx zN(b&@17P*>7ExfgW8=L&1bfAoE)!*`h6A3xeh@1zqh&0-U^TfmNW`w-Q56R6W zRHNbjc-G)#!=N9jw#*W?O-jJsf7w4h_psv+Sa!X6-P>zWA_(?NN65_C}-WBCDSLk|iaV7!7w@ zV)s-_nEuN4EB@_6SG4uE@9Z}paYVb$+Pw5D*R}UP@tC&6E~S3#s`asOI@OY|zqxi( zd($a)>C-L)f5sBwPZ@u2Jb8IrYzf2R2OZEJX7ik86~Ln{!Me>8K%*rVcn^vxDA1p` zc(?6CJ9qK?cFu8!+SQ!7?GhXN?{BgDU^hqQ;TSlB*d zm-H{#w6mRc$o}oMr!I?y#G9_XqrLp_1??H8o2xc#Yj6A6oo$IFMqAw8Z0y~B!;O6w z8qM37lF1v+OSCmppVy?Dc!uk2kkx*o{OdnJ&+_{eo|P=;C($ox9ra zp1HF9$4@r4^@hKn*zftKt4CXf^RI8&5d^$=>HfBWutJB$-2E(BJ8%6iyGwgv`@-6L z+vWCH8NcJ$pWO)8!Noi80*(hkhb=%O{Tq@v;3=G9ubM?`o(vzLf&h|0#XEQvBw%w+ftm>vkJSuoF?)i-^0J2gu=Ipj}cEfEawPlCw+y4IF*SF_BadA84 z_=WAMZ@i&>@mxspn=Bb3P3Q9 zOPNfV29xJRk_)pHhQs1`RW3Z&O3jcTZIH>B zC%YWu}redf{jxHC&IcirEf@vWanaukmOp)Nu`Qapv* zxY^Aoe&_4ac4NoQ{@p&yjOI;zPGQ`Ms=JT<&Q#x?;&<)3(v8;B z4xZos_K7DzFZS>4-?^cE%PNe1E}W@VLE~eO={VBnxz+C&_VKLp|E+Zec#4Z!s zco$r?w!O>t>@By1@Q%2ANtpv$p{1^`Ztb4b9%OR3$LDjN+*cV7D{Vf16x|l5*^)QE zn|Gll%-j68(_wtXC3NS}7vzsQGWICCll=Y-o7+iNAc8@ zsrwbs*D`E_d2=|^|BZGUjN|2V>E z`mx`+Z1eeZ9piGWDgF=>h+pQmJB+~JBGYeRcTaoK5eK%{KH3T~2D}|6>!)96a`iF% z&SrO*)^CA*ck=yFFsWG^cd_w&mtXd>^KoNJO4xlMyb&$|_gBFQ>Cu!vOQYfl3t{#* zt_V?<{k5IA3B>aaCl4125Cif}SE>YJ63&y}G2=?yU&;kI_69;9@S>75zGK%RFtOYJ z8~G0G3Ri`gfEN1kFs?ohT4Vy~TJ_oR7x|U{C#eSOk(@E1^V2*JIN=kHgbA9yEBP7| zKzIIJvuUj0`xhjD;xZVKnHMqxgsu>tBfr%_RPcHNc;i)j+WGHT+MfT+m3fm#@L>({ zAn2J1pr3bt?B(lkU9_eB${(!bgP;+hU5rQjGX}5O)Bf{sR<&x@BcgPJnHPgo#ODUg|9{;;IfceV|MT z2zmr*l1auAb3E+)=`w8EL14N#;+TTiia)9VVtiemM$*ek`3IEB0=i+8v@R=2N?s!Y z3^vPyo|&Ng;n>3#w&((vYa+O#A1+YijR&$voUb_7cR2_-@l2pgW9+9Y)fBfW*E7_S z0ifG_Pi#{H!VhVV;VEb6$>;FMEjLyr*Vn_<@p-r4Hsy_kKHXNTAN+Uvq~DHGX-WLl zeSvW=yZJ{? zz~XHO_ItSvYVR^=>&*Gs{b%uJjz!kq&-=bTe>=!+o}5|0{S`~7zG;^SJ$dvBNxVsf zcteN~b<)R}jECLP0-PRy`-juy&+}VCy!m59{5gF-{}SuqHwAc->5s$mdpoz8p!|Wu z{yaf{j-LC!U$aY*U$x7So+SBu*!_(ho+oaIN0RtkQS8}+HpWUj=5OrqJD2^LcDszP z$6H12yOA92wyLQmJl0N6rh6dn@Q43*!f}bNY6Ldy&k*z^(4SZ6w&QOzxzpzGDwrQX zBxKc0#z@BenS0KYZ@pfIf=b(9N$=^lk8XqUbDJe#{tQ8%-M3>evxTgdY!-6%3Fze zq`+Q$AR2_x;cKqK99U!$$)EkAaq70}0Zzd?gMJLixdV}+gS17ID~Kiy*aMi2Ng6|m z(^L34%96BOe!i#u>z^Lle)oBYjc@v3h3`QVK%W1`_wHy<`9r)3#4CUpf3Lk}Zf?A0 z?#q9FSbNH2m$ZF<`)BPTcDM1>??0h^_s4g(ul#UZd)I4Mw=Z0{rTz4Vd)rHXeQEpW zPi<^}`21yU*`fQj1D<|uTl2}|+CjDgeA=Jg*#7LfOWIQ&v!uP{Uv6zrIek&v$5yVd z{MU``y7!&XKKr%J?Kl5=Q#{Z|Eef?VJboa6Af7(XWFkU`SjL0RanDFyzR5d|fsb{gEsX!yYI+ z&}%?s^Xebt(S+{W0 zt71WMj@A35iBph$IG_z^j0sI0h8F9<-4{qy;}p(Ue;{7suYSa2(tLF(UHZ7(?)8@P7&vuNX_nI|>J$P} zzJd-}QuPFK0tS*TBgPX*e@5cEDA~-h1RZY?i7O1r2u6?p@)+n;iV&RTjQ*V{M=Qsi z%OGNIs-pCv3e%~IE41y&8^@?a4BtB)LU_tulJx|oQ~=Xbf-Wkm$Vy+8n0sPfZ9ojh zJd};|>(xkq@U}0Cwwr7Z_s7>*BTsI%n94UpNv=pHQjSqwjzpGxrT*-g-@R%3|NLzr zb7Bu5(zAYdFZxzo#7!QFA?O>fxa!aGib`NrmBRzeMi$Jdf4DNQO0w!3wmVY~)MP;o zF%`+AWa@__saP)9aLaHek(3Y>ZBC`hF< zi#aLG;vc&Rt0aZU(Gt=aCb=G44OWu?iPgJ$+WZIlO52jQGnUS4pLyF+QGJ_!KJ+=S z0N&T$_WMW9YDV9-hgUw)F25dss=o@Z2a>~Wb-Tvy_m$b(|Vo`haU#@N2?%31L zd&ME`8BbVZmA!lIIahPr#aHcUum8`x+t*%ySUcRFZhn_NDf3@Hzq$SQFKlb?_^pH5 ztDd{OeaH6uJ^$}Ew{N}Uu=YzQE@<2BL6{%@!lw3*7uz$x-mj3AwzAV#z`GhPpxA+Zal>Cbgz9!o4uZ4t!JO}{;y46`+tA$ zd(Ix#de*bnUVEQ?&dE@xv?h~}^gt83xDw>H|M{(oH0oI<8Co54Hs026|H7cr5^I$t zAY?M2kfM>PFD0uvFUfm=ck051Ckg6U61a@ILv zq)bMvOlskK)KAS4JCqNkUnJ5>JDk-Sd z9=y`dDNiOj4(67r8N^|(RyoTb>eXzvo`-wyN3~ea%}*Y0y0L!hj*2SXa@by0h%3x%8mW~?ldZ~Yv%{}wOI3N?W>4?z-^bI(#G%N8M>-2_+mRqIM4@6?SR8L@o zlxTn1tlk9jK)nfsp1?OP?~~@@_0CfZrvznlR$EChM8%3Pc(*TPRdC*@cbcrPbG6!* zoo5(9EJZt$0M-g162S5|_3f*c?v{SQRX?zze!8sAwGEZT!KyMGZV&-RvUMAZD}wdu zNeb81*|{zgok8Y&{)*_4m~0wYS4lo0lzt%Ql}{zagkrH8iXs@dRIvf$3J#ed#l zL3s#ICB*y<)1X{&zvS$Qpw-t&oZ&m1YH|Wq6-#!l5Y04WYy>uM?o>F9?|J2js|wW~ zS6ZrRtfIBw2$Ar4-h@$QT&MbC8y*UFnTVzzjZ>wFnP$);MWwfPP2SLAOsv=Zp2TZ+ zaM%)d4^B%~=#N#y4tcbPGhM2naUX@nFZOH3mfp2GSC?VANj$g=KB`*Op|_picx=AW z71||Q&9i042wbTpmrCYNN)xgwakE|84?6k$9Fo*$EUZ@AASQ1iGsz(g1S5ZHU=x~% z?NhYT+GUmvEU(J5?nzm-fF~R*#~P24&&Y_qY8sv6QZeKkz0>MDFKh?PRv;QSwj*?* zvmevJl^5f{alu$M7VvL_qWHB#Ft*dToREwe9d}ZmYIh!M<<6b-?N^B_xfle!hZYR3 zn?UYcdo=I652HwghK)tMndH_dWJ=eGqICVKf4$O}ZAZCP%ZZky_YHY>aEEvqpd4oD z@yt`qFZ3$7>ah|{-l$e*7#L{#`VWk^;qSzkD|nN9jYDr*tTGzhFcDJH1^{*G*c~Du z^sr1hCn(ErxN`VB_VYU>w2YK@p6)Q1GhQSwv}DmMfSX0{Vxha3)`xi)Ow1_SCFqR3 zCoJ0O3>WsKA~eL^KE4hwDwpHmC_3u!n}54)xXQ$BKCiF5q1K!|4#P{cl~NmCM1bW1tQHbaCpwu z@ooR#sUBG=yQuD-IF-Ys<3{vC;zrx{UAz%w8Zad`>{|SDlS){eeAQvj_SN>Lw-Z1k zurq-xdFBlD;-KPkPNH@O_9Hx0juVu%+5Z^tj9)zgUR*n36Yze`cLy+%)S+I9o>EqN!rm8iBZumYW~ zypUCeu_rrXr5c!INVo@1wr4_19juQz#KuPJiD2{-lJZu9=$TDML&!}RVNW=@`+Ojf zhTm+l#geYyPo+ege*6~t0T{=bcjnymBnn0&7^&_ev<|JVcn@&yhP>vI2}CpbGd(>L8- zwc%0LtebxNQh3|W*d$`Z8z+FaH7+Ta?hbBYoYr4$)5O{nI0<0VOC*>`7QUg#P~i0W z08htqmPwQh4sEn@9lDl~%ETh;sh|ysXt8EHia&}{^ zCb>Z)4dE~uDaidV#=`cKG@5lz@{oX)`b=D8CFx$5Iy7^U+*|>qf_Tw?D|>#GMP%7P?LymGQ)vFk8rtlZ<(ekGY*4_1e4G5FaYs27j4 z(dyxFh)Jep-k7?M7iN7UNgLU`n_-m`Im7F~Xm1$yXV`+;mKhvU0w_KaQDU~Q01iRY zuTWlBtF8QtqT)|7_3PRz9b%vA~Xm z2l0#jWW(84sI>3u&W+}_IK1J;718`Or@*UglI`=3$#^S73W>&yml{W8F#5(~@Bve$<~n^%GBS$Um2dobCfdJ+SPgoKWmgE88JZ}(Gml>j5hGR$oS&9i@aR?-oZu)x0P3^KzB{8UL|4YYI z=#wpHHF%P?riFCC>!`FsnJe@`F~SQ>ypl#+vMuTWv!asuql8mMx%!YW!yqG>Q}LWc_xnXvR--f@Z=v?1E9$q7*XoANXBq6LPTy_G4fM-^U>}Dw zob0o&yQLgkNje^opsVjaC+BW`H`Dz$`|0Jp1bPGWsvR!tcN|cRh+=ryFQP|$7O1)v zM=rs$BQG3n38kaZ1_&fP!`MsC1%Cf;(bd5i$sQ>^V z07*naR1xys4&~e*WKCOe+YK9##>A~wJ+Yvn=ROvdDgnf53NxM^07*c$zwflqO-qRR zI=2nb$#DR|M5C8d(O<7+HEkzJDxq$53QanCW8iU8aTllC{0nUwoKqJCc!AeG7J;oC zLZh5l+HOyVZwuX*UqzH_-BqvlD4f-9Pc;d}3=i6NvcRN=uP~=)b-fM}wnbI6S04>U z3KR+SxIdMcB*Zf$6QOK7Nk`kfVk{?2s7cBGJvVw zQYgY!vrEA%I-)-L({@*)y4ixZ%LJ@`#O_0M+q9GZoH_E})ZJJ98YkJ;m%i+A^|$sF zt*3BtkkJR<(C&35r+pPVg`KKtx>`~KNV)3a z*o8U!(Lr(s{WiN>pZelGl}_%wY2LUNR@Lq#e$C*m37H+dllL^?>KdcrDA6MD$tWQgE0-d&Yi`m`z`^F8@LpLMI0oy*(9X`m8_SKr{ zdry++NcK%8qha^bQ6Xq7qpLGgfE)NHOnI=~A3sCQ+_oPrGXBLj*p!?*+YKP>*L%vs z%KN#&f{o9ZhBJt5!8gPtjxW3fJiig^;G2Vuac(Ym)FT!wsqz<2jXi9ui9N%$y;S~k zT%KO8NjlLs^81Qp!Nt`E`wSjvFL@Cmpl>zcL^3!h=ka}xw1uPoifvej@dVwtQ5q!B z;R|3KIHnalwY@G>Lt*?^lO(hX9~W<75BBXQ{f4!A43BNb@|2@&TV;ALU>#=ysKC38 zYDVydEGUBsN!|p~)Q}ME~95uwIpff7E7eqn4Q=v`Mc=@l&NO}s5S!8M=J=*SGONP`2G6*|X?BQ25`mR|kgtk^ zZB-_Q0%66KzuqsXq;mKvc?glit`b}JoH|(_8?dA^2H^%c-I7-l1hY*7#`A2ud3WM{ z?{y5aFe$9<1t%QU-#qRn3C6oeFRoU$2G&e6Qf6?YgCCPP%UTH_d|LzEPUdqEWYRb{ z8u5JU-~B?jNw^eV_U3oBzT;o8#c3p~e*KuB4q9!sqV3#xl>D&@PCA^(IFI#6sU|VFo1rNox2@cMEtxIi7OYeBljPs%E8S`}@w~Xx*wCWh{(<2U zela(6o@GBvbk*&&ARz0cWTXFx$};3P5jz_qqK>wekx=3VejZN)<0><3u#5pQ$V(f1cY4lh`11V&48`ab{z7#k?1z{3IKcCx35{fCGfwhL*Gf7xu@Y|RS6rSuwI(UFdp9nQ@v`^ePe~Lj zVo+}Pqm<&36CH|*2tT@2ON>8r-2H-T)Kf4irU`@1ukk~^#gK@0A;*|-Xzh5Qe$l6I z7z&>>H8cRDbkl>J>f0>Df1YN#T6|%kX0p%A-K8^?Bt&e7&%)ce*Q*^U$fVwOU=sps z{mDn^*qz*8+w|1_1i`_dfXQDramIFpHTlRM&S8?VSN4z)aKl1D_G(_`Z-0+Qo!~K+ zxUtd9-%OvNk&?sVK?*y2cHOSxZZw@C?cAedXDow_>!%Q=E%YZ?SPdiE+sEd6XO-IfmR#* zjN6=7F#e-ee*gp z0!bS5Q4n(`K{5=zz}<5g4)!Uz^WKi;mm=}RR6VA{kuaLTyKdd9k~2QuWRmfXhEDn* zJCxvGl5)mwwb27()mtlozNDFnGxyg}h)KGbT%M_G(b-NUR8V%>A?)-I23iN94w(o_ zb{jt8h%u}O4B;{pwJ--WhW>E!F}5Q1u}Z3e(t91fSF~*wW*!bxpSnEH)ryP{*>)Hd z++#_aW=P5wzKIA@dh^B!D!H$;uwS3%!^Oo_^H%!dku}CzfaJu0`gy$|1H$-GZnYtf z;bYQzCK*i?>6k1hXQ-06W+N$9W@>YWG+k|rKwI5vU6Yv1dPC;TV=r~Z%O&&{--#%PjTi0<9wvEm-&hA8oyuPBgqpU<+ zbxF4%i;Zin%**!0StF;(wSuVfoCHWyi0Flz*=I;Brcab%MLmK_qgcpA^_YWg!CJ@1 zzfzYf|6@!5oe*&xDGA0If_nIRCSC)ryJ~Lnd|LrbE*Ei1 zGWc6HG7T}2;IMVR6Ur+&nP6=*m@-8AmIp}r6aB_sG)AT*{x1i7OVxw3HrIHwyqyGz z^*KmNAK%TGcNt$mYe0;Xw+EbXuMyw`$IPd(qA+;@XV!pUd#?fc!llDn+{ich4-?$GQ@8bcLxiuPe9 zvfctAT%9a;5-f7_eT^FEgg-Y5lglGNlP#8|&A2Kjib;ZTaFI|H1jpM3iir~0ZSd#C ztGC74d~P1}m+wikFg)?$K1=rJ_ujIQJs_$?Hi87KVC0{RWS7{|zNmJKBdap@`mKMM zLRJ|it%cJ(nUC$)OT1=JoiI|*PP6Kg{_|Vv=(I`gGm>_1Ee1cHIDzEGA+YBffTgt?gI3#K` zmmWv&9E)gL#!^Jg3l9A5P^8AkHI3&-ga&S~j*~KX`tX&oaOOZSV@E`_xEJOSFCJ ztgej87pI0MF72Sq0$7#j+^?TG2u$j3=IZy90HR$~Ry&Q6l3;P0F~K^nOTb>G3BGl3 zITOJ6g-;u4b`Eg(=kh_I-OfW~MoV9HeLD?t${Jey3yR*&2-2`pnM-KOmzb1iOn%_<=w&&KN zIR<7=UZRIFQ@K@@aUT(6`{oYV4``A~NMenfC>04+C$T84f1Lp8HEZYk9A^5#$XHDT zS9hnO`uY(fTT9KOp9linKWT67D&tpkD<;)~mMo{$#$g%N*o+;tOs^(m8!HEIPFt z?}W8RHqn}9VX|&CxSy8&u+J;H7XGF_V{Y2sGIu+yl{i&*|^H>beGKAISDeo zosswN(v3K#?EXH(l_M>6?@RQOTviC(BJ^|+mj4Z$Xe*PO={MdQfnY5o)7lbVr47l# ziZ`_o&BQtbVQHH0gk_vyjU33yWjW~yzT7UewcW`>Sj$e)@kB5MjV`=t`;iyZhlxt1 z&o_Dz&-ql%yc?adjhfdYGrBvlK8kCI3rKh@L;}3;A;c>p zV?D^KFLU+jaZ2Od$8`j=KpR?!;d zC6{`T(tvG#`X-in8_aN*@YiqiVtju>oEW7QwRwyN^)b%8qEI*qcleWRZ<~n1ergpt zjQJ>SfsgfZdm3!e6zzcoO#R%iioD}(tpH*Wk%!nm*wP~%(F66CD;NdoBb#9&mg{6Z z?md3y7{eKp!g>oqy+?Wy1?!XgnV*VN-MhFZea3|-!`v)0aiAd^=-l{zYE`MbqLJ2C z_4W}VzK-z`DD#1I>p!@Z9`+-0wv@3l7j;g_d5<$HFE<|h2`OoKZ5O_$*bQEcjQz^3 zJZSN69P3aNIu6EeSaz&|Ty1bz&a|EqIrZ9uSXYv7?uqkWR!Jq23vwEFiOW95*?!*h zeBs|QPM(iDdQsP2E$@tDwpzm@BiA4I+pl9w0mRYW_Nx{WK~BWY5f-K1v&wF+6G>jZ zpqyy~?%53vR?^NOF}AO6V{m1L0OBT)#>xDw z1C-bkVV-dUh=vF3e4fqbX)c11I3q_`YML2a*evH{sfaGOb~S(}EG*M@t2hP{u_gOD zCo!8G3ix6eP14k#1g;zermL4y$DFC;9Q#c75CxTPMRobO&Id8kdtm{KS27`fHhC{NWSjs>U&tu~ zES;SI_Tyff+{D!@Y<5WcYxtB2B|V%_<%W4CPLu<)UL+psXr1z1xcz!O%TV$uMCA%+ ztH2av^PcmM9tgohhNr=pr5%jTK0cmDEdzt1rv`GLki&b$E}7d!(7NP9Ag5ncfAze+ zDu=r&SKIR_7-^t>UB6vGjkgZ1&sgXjlYkO9EjQDsSAB8-U9EkS_UT95VDOlM&i!+E z_PNAfgDUXkXG{J9i^le1x$(JbnXbl3$n?Lj{+ydgiEM9M+1A)yaDq#RH0v#&_6OE05@7S*SDhlQU9&v-QN?7yYo@cR_nq;cJL;- zKfTCr6k|zaglxX1?j*1Ai@#YW!g;IA(TtvWJwJZVbNiU$wtKr%@fx9cFE{Pxh&sHj zcIpKOjb|rf!@nHM+;463!ACyh`h7W6wn`4W?p0T>6w1bxJgu)t0P(sw`&a0;3|D+Z zej*ar+qmFEO==pqc_AJ%CR86h&$o_@5ASzngK>JWv!iAS#^aL=Qpjo-6JM+x185pvxGvMvED2xor5WkG_U!M20Ymi*CyZ++O$v;o{85Cv~i1Z7=( z=ou|afTf2|@)s8=Z+tCPC_}M=T><&!&S%g>7lOv#CdxJz;BC8S}Lr8{O_c`a$`Vt2UnD z8D>OIaX~|t!7MWEvVAWQA**n8Rq?*Mz&%(*^XNyz1lMvGicIulYWFvy`#6e z-L2RrZZ&DIo^#eqf$*6`kTSGA)qi5)#MbpP6!iY$mPu{jMIZDl`&gD8nH>O%-=3F6 z`Mm})0T;Bo;Amd3slm-YP^+mN2x;(iJI91}=a9nsG}*f%h8>G2HibKd6*2;C*lya+ zmYO~+mp*f5;_n$QpW!O>`D3q1{j+Vp2Uk8N;E+z#_yb>`7_rly{lY`Ui%YmH?w8No zAV7>BmE-fY>m=F<#jefNqF*wp9@|>4=uR^3?IowYtL_XP`ckZAa+?SS=F-HnQJnJo z%pk6IQK`)fjMdnO5yd$79{cJu1n$+bPLPC&#sjBAvy9;UCX@I*0doSEE3)$l8QZXo z3z8^G>XN*|=cr1=n8NjAUrG2z!TA#=<#`c?zz53pN$3Gh^u7=LG@Y(AtS%Q`(c%o zl-}DD;-Rbd?g<;Ogzc9+mTr6sv5?pz6%*BUehb1OvlH$*za`BOm8)g0>@t11x^S!J zZG~=EU!?afuJSUo2MWzQ(HD>N45dyBLq_1sqrT%C5W#K?Wi$7Tq%TKonZil-Ht%q( zu?%B+5q}(DXWzWPn2(QBz~4NVKemA$IPJbYUNqjsV#SlP3pu@AepAbIQ8y|s^5FQU zo7G?L52POi?JsScSN zp>cf5JH4h~Hf2uv#u3-D8QMOMXUVzgA@oUWwZpixJ~>Gz^~pf8?QI0V{8*BUQ?-hw zAvi~e7jDUA*`TwnI45&>i0?%O1-MK!Wm4FWt705iAYI_ocT6`QDc451mQ`}2Y{{iK zrUWfrjH|e8l<%&uZEO-iNiBK-{7xWMXC3q9X3IjXln`sMC4K5xtqRJHrr|2S-z-8| z#6oCz=Z-D`56vi`vrTi;LUKkQP9=>w$U167Hp~%w5kIt%U96R@3s# zuc$kh?1tc-t>+r7`k=Bwh-jMtshuq04(Dq}0ybBGam!zEYdKWQxoY{*BfcE%mPHdMF#sqpo{i{2pm8IAmE_i`CWWR0torNx;nnxRP&c> zR!{Xd8_|ZtAM?6iXGJ;qnmh6>lbBWma`Jvm$5M54*FPCX`XSuV(RJbFcP`y9`4S2UTUTm}CIY4ei84w03u=*hw=nKIhF9=19Tn_YyE1 zRs(g}Fjx23crdds54YS~zj7X#a`(;f-IjTuKz1B%9;FSaJG+CxLo37rMm7cZof{B# zrWvKXOOkeTD;Q%%wLkZd&mFI+!&M*i%R`DqWGu7oC>niJix<#GJ^)cM@=+fpd7Z5F zKoJ1+z#&}9l5i{YsyHy0UI`%@%YV!piYw7RWLDVlv6Zxe`wb zv?XRLPd`5mc4c@C)Z0s+rI&Ah=w;yGb-xuvI*x0_ei`8_>rpWAqT6natYHjd&}9#+ zw1GlbGkBf@NLiP2C`oZ*$kn4zKse3iWXrJ)As$;6K_L%td0VM4{eJsEJ@&_lu2!$uwQ>ZcPwZ&}X% zPvMAoFhr7H5yYM3%99W*`LWbvKd&(Et9~p;FL52cDMn7-8@lcDs=;0~gb3nU9@t+rUKGY)U6e$ zbH9lhMeu*Aabl4PAdg!<$^?Irl`enQIj5kiCA$}eLALnpRyWNVo*mF=(~;H*3Xini z6(2caWHL9OGb1g82~n|TzdSw9_j7-=%UrFYDf=U{*=<;hCGzG8m%sW5&$w1&QO6c9 z_$*ZJJM_&z`v^5$KCc3@X4#F8JsK~OPg>IY={OhqK=1W?_N|Q>dF6zORPKp1!mSUy zlh)!}X|C2GcD{+k`cNd^)WLo)w#~$@`fx%AdpUHvwy$_X{VjX z%CN0Y`ao~W*@?SlkRq-$4n!Vs6BTIopG1UZ^U8%k6=s78SCWr`b}bs#=p z0^XBq1uWS3oB*!=V>OMq=3`(gnAas>twsoE25$h~UerMaCp)4GzDNKsfD*-Aot&_9 zMW0LDbNu!tV0TNosh2{AD_0QxDTvY#uSRe{jd%8d6Y5-Zl{ zHVoU6?QuUMPBaBPxM9_zqdqm5J8w;vN$9F96NgF*Ea6z+Vg7D|b=Dwd-Z(%6QMPT+veAUR`)-_c9zEf@Ip9u|fV_w^Q$JiN`lZZ#K>DO}B65cU%4kXF znJV7F^+GYuSglr&G(i)A*)7h=KZ~fz~0u@+({2zq?1j^30efn<%&c4PK*< z9|p9uLr6Df^P856%}&rS6TrcUG0~HCg@=i$f(v8F1g$f~n=S1L+XMY2rO#~>_lhmB z%-n68^6`7J#lLxMP>D&IkITsz=F3ouN&0yi?p&eM1Vb6gdvDzOCR# z=TRn>+n*~rb=L~u`$(s@i8{n@8_AG{p|?w9F`!qc9^66NJ#f+QIot8u1bXb3(bM}m zfC_rm9c68j`OC69Ng+-Us7t#TWKln%YA0qBtD3th6Ph;zoHTMHopk^JAOJ~3K~##G z?W_)cd-z*161 zRNSZjDoJld?d$3`A6gL7l0t%g&=0PtFTEaHy|U4f!}IBCi+k@jOk~dK*LqI^Xp6VI zgiP(H=vBXf`}Eh0iP(d(g@YmTZ*in`*Kgm^3!jn=j5JoPU>-K+q}4cN5}P;{$8z9t z5?K${PTF|XtGf4Th%u_1>{vsAuzvHcABuF~$SLlw-}5f-sozXAnA0Q*;d~n+`t>>C z=pi-rZ978dI^%ze2cbtLuN}v_;z<}wB;V+mhsY5Mv`wgipG}AL*1Z@Mv_J5jt_D#; zgzk;Kc(f(Gqd28hY)Df9D%ob=z7TzGw$*Xtv5}P6c$G27<{oo*bK#fgjAkwmmcYcR z-i143u)JF1_^zUX%%f*;XVHkIcz(0B^@UCO?`+9YBNm}hXpK1tAL5ndoYmyuT=+fh z7&mliEX4!n5n{>aZ4V>PrOwkf+w*yrSu21m0gM@+tMVp?Y>4VzRse--?*Wvhnjh6E zh_5IoK=h}990w(dD!v{m$$jn!rxI$%fx$^l$uX-@!izPbyYEcp9zeFm)x-+$yrkww3sGX0tM9b} zhX5oUYo#U!Im8p3msIPASEUgalz3UHnFM%FsPwtFl7j1D9 zeXG2+Ls~Imci6C));A}R`?-#UBlD`nwbk7QY&$iW5S8I7zvuJ%reAW|IGpR+O`ME6 zDe`6DdUhf&TS+4M*t3X#1Sxf_0hxE!(_oFG{i<1DuFc;KE7h+=vwhullV{?^uuENU z_Tw?20P|BmazdXf?{>{0D*-!DnY`r9q~LBJPcU@;1v8v#$OAdcbHYODc-3HV_9~Je zZ)B$IX}>kji4NmkAAw3#n)=O(Sz?9n%iegkon=CecF;!3afrMiZjCY3)R;C${S7+8 z4vdY|K$pyI&l5@f7BAnYu(cJ;q&}Gt*>2Lmv0$H*wy|6tyI$^hZ$<7i8e(m5%Gl-p z!`?Qs+UK3)l(T0>ZFgetxWoQ3fph>+{qbnHd2V{35T!{?Gq#D_Uy3tNwvH#Lo|=t-+kS?+%l zrnXyn;k9k?j_eZ>TLlg5yEDsdtRX?!?MYvVQ~!xTUPfEt8n zBzD`xfNhFzWo-zk&KAi%FtG%|?DQdU&%}knZE)eM%C?JQBCGKvmSqpVkz#^*n{~Fdyy#KRMOFfXB>)u!TL=Q}4 zSqiq?Vz?Q|zupJi`imFtE29EEN%#qOg(K<&EJioHiVwPUG;7^Cpp7Q=J>T%*By&&^ zZs4ZZo&?e`l-nyUp?l^+d#SMgW`8lx^(MQMX=B3-gCOd>*dyI2i8 ze(YBk*J&99(*h5%O#-wsr067eCq@E%4J;Tm1RUg7riyMfQ1{fUZ*znUz0y?5Y@TaF z$W`F&5pgy~CwWlSaIwP-EvlDQ$-7l#l1ADVebCqXLeT9M>iJeG@zFPiyYU zACH(({vPOrosG0aY4ipi<0$;)O4bd$$3M!O`cxaZETvBR29fofD{$8j_p-6~_8()> z7M-o`Wm_cM>3C|^uhKN9H*%{?pSvZDxXjpOX&ghwS4vX&S&uieOYxH~bJ1sl4xAy_ zRzEk;0K^RN;zh($FFUx_{I$%orp6HThIkq_K+%bhaBB`kjm&K>^Ym~qnZxRti1PvF zihc+kj)F?=D=xHmx$7G9wPz4mINpT~Ry(y1xj7@LV4KPfpjxyYoMIiv6+Xb9g~m(Rsxe$IMm*)bLd9^>)dv^)z<2|E_C+bunRR4(S=!83$q(3+9k%MY{hkRH z)_|bD6F~P%Yxlk@413)^*8nPv#wM;C{i4s^K5de9?tBRtcYdl4q%6$N{kA>=UfA?q+noT8t^Eu(IHvta zuuLxCj)01cDm%fpK_(ASAa4#FEK_~ds-Jnz;2f9f#{?{o0_@W_AvlA?!CBk(=x9dHwjCO5cQm#2F_5>C}*M`gCU zgV9_X9JxB=Z~aPoHJ3N~bd*8hbvsU6iOV=Mk?_Q(p^)xOdaC$IKWI~J(;6OpJUaD& z*j$$_8>8TkzVh;%enh`s#ZH;c1*-z=gOA=LH|I01(p00X`06GcPgKZ*0why|+{Qv2 zI{^a6G{~=S&nZ5&Si<7IMSM;~U1r#NO9?W(~MpTdw4 zxHkDsdpm>ln`B0AA*>wJbJA8->SjWBn=UZ@VCFu7uXUg=a!3m-Hh!j~NYK{NS4%P$ z?d6-lXPgwIw*)ZkXFDgS2FD;zaR%{odx=jrv{V>v_91Xm}tsS1j>L&|w1w3D2TLn4+Sq2FfiL$S9hod= zyLFumLa(#aLQ5)f*(ZlnV_X_s$$&^BROM{KZ58W8AaLyd^Oz0RhU3Xed?Lt7tyZCc zcd{bT+%%J}L{!Fi0*D@*Se%3`BPrQM`$~Yeenq8i1rP?Ewg&6{j$HDK1(|434@M;z zREY=;Hpx7I>5+p8vYjH%35!lV17q~6E^NE=a{y~ql&fX7=h&Pmx`Apf4d+!I>X&yU zw(A*Js>b@BjNmujf%vFxdP=i`<8H|z6qRTh4%$H6sB$OX@RH?ll@?QI&;-DjfN_I? zWkn38UJ^BkQw=gmx61%O%E8wX%`kV_D8A17a;R?tA%--0uV%}B)fd&8m8iax776Sm zNQ32Y#5(z2;Z901mfczb)Bx1|=H*zDlJbblWu%G&_1lR{&teFh?`DQQg7ef@S2W~M zGT|PWZHsMm+WCl^VpjjP4>O#H$SHPYjPr54H@9?>%+%1Fl&h*=pQFE!mDI8CYEWQn zTe3Gj%(qb@^ohE#qxKVLefzEAgWuZ1v5GemWW3$FZv1C}_1(rLM5fc)aa5DARcxN5ULACqh)|dp`qb&%te<7)89F|CbulM4q|R=9_iS)3=ZnPB z!*3(NPaWe5U=7wCV@bXkAMm1PcZ9)yoTEWCWwi=}Yxue=;3_k5_tWl^gPn96hE7_; z0U@(&(O^=pzC64cgvxx|$H1u1TaSU^{w$f^2`U6vGJ=TX{haW0NbvvrF)*lQj6L9$ zeLUb*+Z42CN~jZiNn1`^XQD$PmwUW$xw{8k`v4=(ydj70k>r3*_pd!sVE>XU_W*iO z1TbDcK_GT=s=ayZT&+fWQh>JUlm?aiaKN|H-OmW5fA1a_$!|EQR~&(r>P#{{1aY^6 zg9aBBVcqn!IiK8Se-ozYGwIK~{K^^cKIC$*qUr~~3E?`ojOH5~D9QAkk`XIMiuBHL z=-O*{+NrD>nP3e*rB_`_McXBtWMT=*3@*r0?rHAY^_kParh3%Iq;AHo56bz#cq&o_xs5`pG9-cgHpR9bC6Z8x3UrZMSk1fPYDEai+@#k9x4lwh>+! z>v&nZ_MX`SH*17_2a8Ss&2urQe!g(5ydq-@&mO@uif3@BEm~T#?*gto(0Sku4>atdqGY3&p zv%x#etR&2(q0-K6Snh24hCk_6!)?;nwV9aJ6II*)E= zXkwI{kZt{^uOvv=B&%>E4OM5;DSwo)lWO{5M@5n&Sx=ny3gl+K>Qf2%#RuF{ap2Te z1{Qz6ya_~Z)k%ti4(+9W(eA81iP75R3wHCYafH0Ii-XhHpK`YIX!XUHW4)3)GcmeB zu1=UDt*?~hYGyTF!LCeNc9I7ICr7p5<0^wq;Z;Xv=RwEvF#7IPm%co-9J=b^n38`o zzspYoDED(<$Apf$xqk-(cgMeRkDKh`HYqakW)j1A?pbDQ4EgfIUy}gtXV1yxB%IYn zC9G$5`KBQ9CM;}5iSgb~D6#?rL1oz?spON$Y;oGPv||>&GS7Emk|Pz1RBL@ViaWMu zcDC)l&3W2(!U2;umLgMqe#6~7Uj=X71 zp6!hmSzT4oHcOLBo(!4JuHAJ7X0qXiSbYeqf0i_T>Qsq?FMYUV^WB+U9>avVqucxX``_4 zmak)ca(T$Y`sS*$2fw2A&b{jr@D_$_e}JNl9e66K!g2ivHOFXFLe%W{+p@uQWZqTj zV7MEYXVhx-Tgpf#CzsBaX}EE%gqq|ZYK%b}js3i3Bwp?76P{->cXxom}t0FkAbsGV%PHL?-_&MIH&uMWMm-oHcfswukYwJ0Jc2U50k)IvmmC_Jp+t=WsVJ2XIsiz<}l=uzT!i=BFUx18v~{+ z+s|fkkT}VMwzPr+A7P?pe!5TJxWQ-4QIFmO28@R7Gwj=%^f%tIYJaiMc$Ji%3y%q% z`Bekr2}_!~dSkNX%k*?P;#ptKWgl|_*~eG8Og=h*hD8wq#+7-7jtHr}+LgM)pVQ}8 zxmtazYL~4JD!bacjD>x}ZUdwg}p$IL$K#qq?fqhuV6 z_Bic?6)Q=`xci;5t#8MUj3YdoSl}6$5QY+3SNqi*X^F>uWStCmY{bba>(u{DUF$J6 z;Cc9nxT+?`1yp#F_8CRmlM6@rLC3vKAN>ehHM6=NV=w$EjF>jd@5U=_J1Ffk=A?%8 z9D77|AQkq3AJh>aHKt6oorvvxx`AV~(9B)!mhXAnjk~bzhX)=%QZDshHVfQ#EM^Kg zk(RpDRh+rInL2UBj!el9e~qV+LxY2IF_fA&n<&R(SfnA%$M|lJxYtVTAXg`n(+?6+ z$>vn6R|*kZ*$4P}|DULvK=^4GD#Mndb56pQQskV}3nCjm1nX+u!-kaH;6jJki0elH zpnBC+06!ZHJ;HG$fV1A_a`VBP>0YL%c;K4#XC3J+T!@Sy-f0XR~2m&3mc-OkJ6V0grI4MK+fnh}r zHP=HP+N&a#NO;p1tAdkVAhJ4+Z3XSXuB^7s3Ut4B>qK&#f6*mMSeIoR-L@;ATI45HsQpa zzGuaW@_)Xm!&`;4M>Fi0(B6Z`WewNhht;>ZVfMQZ*9~ilo7B4#%HoD%>r5EV8U&eM z@GAn1LQ}207k8OBq~rZ|GWs!0_!*gB zea#8onc|J9xQ7W?aSjQ?aC9bQnHUEjg}otjOlP##(T?ZDk&{JZHSMOIZ_9g)H0;64 zR{Tr9&>M`vEyb|%b(JBKYNNT7ul2v5z*pR_tkeWtzo#udLkX=Jy&6S@Uc zS?+K4xTNu}Tjf-QBnT-6D%|0cZX&sh>-W8Ke6@zLO=$YI$9^5 zE5U4G>1b8$&P>Lt@;)Op&NB};Ov+4SP@LB)iSLqyS?oTGcf057l=t^=CiFT35@2iVyTx^dE}RlqvN@_Nv*`3o7Ge3pK)4>(kf8f?Sq|3KIA?33@r7rfJ3jyX^D7DT z9!BF%ZbO#f3~ja$a4%ZO|8JTsYc6 zfx7OHM527Q4_xkInbw*vNz8B8l_3j%B_&oFl+?IUeVxSO6v%i_TjTs`%po6qw|U}L4V`6D%w`w#gV0Be*4e9+Rf}Ai zcB>91I+EiCy{J;ylxh@?UtScgKRtAua$%*A)hd zi_a;L6VRRum>0rg;7?!8nXx0^b_sY@Ly(pc86Ly~Ma5!6C2)P?hz2KRgG`##{Um^H zh=IYg>Mb7QR2rLupA|E`%X#ro-wm6xiKZNpH8GLdA5=??w64LCdFpylHLrtz#DNJQ zjb_oLuLe~6BkbIMQ2h{BB!C8A37N}rGdCM&RXG>@gze4aXDZRw#7VMQE@Opf2tsU4 z2&Io#otTE~d@cPt7G%4yDU-*UFbN151N$x4p-TSV^x!?ms~)`X_|h{R4xJnsI>-h5 zX9bYSDI?C5>&U@lRA>vvvcwDix%H|zC&afZzI@64`DdOve(UMyCJ96w(_|aCDX^&l zZY2;g{YUPE1Q6!|B+*=U^#h3eoVX!sY7#=+`5x>_K)8ZudMOmJVOKPUqEID({kEA^ z0jslB9JTCBUYjxc)tm&j;7XEwGYH*54dJ_Nr$delymObf#XE%|>R>e%7e3uCeY72J zL~R^BBh$J_=))rIs#{%YURXe?iCf7y*EL7j9vf;FLRalImVS|+Qv!|0jsx@|*{g|t z1~xEFz7RB)*z#P!AaYMfAOq8>D$yY7)`wJgNu*Y0K^-)nQ0OP z2Ck>N7-Q)0?6En>?@Xwb<{_4vQ|9AXzd2wZslO-g_N86Sa9S47kFxVs3TV8SR&Z9s6OWiK+*WdW;N01O2;gd z-rL7x1yEgB^vfmS4vZF829bEJ_gTlS-@@E3RLTm|ZAHY%jwKNgGg=7Tz^)T5-=%WH z29`_q?MH(c3t{i%qMGDPmKA*5j_c$JuR1H|gt$sV?F=oK?O`Vx2mW>mU^UCj;u2hH zYpn<}=9n;MBG!yy1vLMiX+skz z5WE{x1BwO$7Uk;UA9(bE82<@c1s)fNx~UEe|EjwzvXx5 zlW2!n_DAM=a2e_CFMigrn+&kW!v;++qPW?YQ+;K<{~ZdF;?_1CVat(VZ55o}a1Fyeq#B3cP5m6%h>9l_h=H$H5O#PTtc zFS#%Vnpoj(7+bV*vkeAJaM=K9K$gGkU8Lw_j6!57YC!_+D}W;>3`^FJh~cLhB#51g zt1|==_XDySdyA~bl9+~f;|2-sySJdoMh45wcA1z^9tJb(KLf)gfK!L&b%IJ(AKEeFL=57L6LoO3VqsT4PfvqU(66x&zD#>!%{ytT;LFRr z#F1kn2e`fjELgd}Ppgjstr_H%65gGsqiyRFs2XH6xGn0;*} zjZYL0A=!l9`u_4&_si?cV=K%&vHpH_{d)jq*VdTz{Z;GuQ|s^7P_Zx)ZtiH+ud>f9 zS>CY{z)wH*?D2&qqZ74^E{p{UpCgaLdino4)Ni1P$ONXBPs)By*6o|#IM4pH7GVEh zhvso#W4p$}P99kI#7Mr+`u@CP#gM=~rPxOd2m zYUBHt*xeX!V2Av9T$A)IG1wednwdB5cly_q76mLbtw4n9ukYOKWUu3%uW$?msVifR z!a*mb+E;iBg3f+*a#xj|Y=#f$Pf4~1*lB{OTc1h-x67d5<|Kb|nI1PmM~!jGrbN3{ zg6%t!NMude#S3D5W~E6_KJr7q!x&~eZ}l{mWFX#JrrdOa1f9R&lk#0#z587ym{(CQ zKiR<>SNtlu!i_P*o+MsYeZ>Te>@u`Pj)JT|H+L0rM&3Iwd%O}rkrKyc+DhumtWeOG zbW~D`b8s+o)+Waq&{5npC)~av#6T(WMNg;Pi(FI;*j&{_hoOBfUBop&NHS>Hv@<}8 zOutudRB-!^y3Gs;7zXx0zuP>hGfwtG3EmPC!}lE@_}VkLe9AcTt>e*E|B2`7Mh_YF+2@Z} zzv#Z>!S%Zmy6<`5p5rs?*fXpAS5}hu%2odBtLRHt8ggzIB+Lg5L-2Rn!*vH)4iY=l_}CgI%$zdVZ`dOD9m)U0!Wq`K zSX6v+Y?Ta|09K25PjZ^xAT+A z3xiHhZrF6I)=up}tJY;zh9?7S-RJj+?%*&T=7X_2aaQNNQ6g}yev(NIi9)0^h|?^W zRa$A%Cg99|V*zOb5ByAY6L;8!9i;58n?TB55Sa;}e3drJ&t_5$Wa#mf0HPNMK?Ya^ z*^r}ARRW1P46OLK{fzADfmcg=XwT`g+wB`s*jRiNu`;T_P9;z^H3=L0qF0nGOy0;> zI513-?+jpoz3U0^*{ON zA3NUrJ6}D1WtBOet<}-h`ARmwYk~Kb_5D5n#`hl&tOV~HYwzA)djBVmzyA3rcq^}N zq5Y4(?^VY?{Nj_x-}>FJulQEcaQ%Dm-s6$g{*zLRtA$(vtOW3Pu}TT$RD$}7bv=a!7i~-q<2DnK@{PGgg8C4rXt#POH^kpeDrFBjLyiGXeolc| z0)VJmd}uIRt?s#<>;@lUYy2lx>u9f91;itoWIw_#e$+V`-dI^i`!8%+u!~oA2j(%f zFyE!@aWq&WH}DbW9BdC!U*qkaS3UlVOaRRo^vpzF0p}g*d7#DCwK*hXz%Zmv+ab48YNh_$IlSi*Z^gv)9$v$LS ztX2p|wtQ-vP_uo(xZ$KMxGn*|F%rPKwEL#D;`Yfee&hJ*AN}W$T>Yt^|0l<9{^Y-W z{FT4|iQ^BwAA*N(sW zN5A*@-LHP*_;=p-$>VSQ>u)>0u)hD~uYT(I)KC8K@$ujJ((&it^O55({Lq`B$6x-n zPagl*SD!i_U2=b89Vojzy8_ia);`8e0DICj6bcJ8jd)fwj9x)f0(kMg#&Nj9Mr|?s z+$4b5veV8B1BR2w_c79(_pz{Izm)~9I-CkMH|08>L;)vxxS}ADnpvAZj{iGjlb`mO zjlzG0V&)dK9lATq{hqt?TuIA22A(v{OK%Cw~-k>dBB+C6= zzC|~Z#E3_g0FIqq-upnkWhE(bOQt$M8%5MvaCPvm$Co&9tTE(z?Wp2_Z$@$~^o^*9 zU3EUXAfB~-sDhpBfQdqqm(hs+qnlZsm~UhZEPxg3onzo&d`@V)3)DsJPNFE@tRP>V z$WJoin8LETB3{S%m>!-pzdX?}zkzDtJoY07;|GR?cc6Q+a_5yl@eAh31`h|qAbUYy z^_IB4{U7`LIrHe7vSIcB;B7MpjgoNRP+NflBTg0Qzf^?W8C;31K_99w0OJUCk! z?PaOB%-N2>0k;1o0(GjBmMe2|5KH>GThpVjy?4U4JN;caiBYn(g}iYWuqttXV6j(8 ziv-~SA;oYE$_O$kuf%BZ9Z8%tQ5T22Ip3xce6WU^ufO>Sg)$C#q*)3&tPSbwI4%Km zrf(;nmE_Wka?=hm>a4H*7#NEs-F+8uKaN4k5LeTz4`moGRX2R2BJXk}raVt2y>eDZ zJyUMI<)}?LQ5Sc^NL?<40J&!u;Xzan8+d~(9KiG!@-l!tuoI0VC490=N_3TNcEZtU`_lA zvp21kyib1V>Eo~bv9}y=d)-Tq4}az>$D3aD$noLNe)ag_?|tle{D1%8@l!wYw&RyR z_SxfKdGjld_k8%X$G`Tr*B<}F`~J!CqwD++eebJ}pZV2K9DjKI{aYXU%<+ylzWjLQ zqYq+rWeZhsSGQ{_yeh?|$d;J750#@w%73==e|n_J@vt|A*dseC6v;AK(3o z7aza4+Wy|hUUGcwb6+|Bw~zns@n^pOHOD*O^vdHCpa077_|N_3@z$3;e0;L@`>i(5 z37`jIa*A=wp=iEo;v%}kpK4+wAD>6PWL@J1qjWqBj}-&RxAJIQ0-n)=MIFed;&S#T~&nMA8WGLM@`EmS5?$kKCwfbB2Ssq8LoSVV9 z`k{#oIOS7A@i!)St|@j<8wu%>T(4TNuX?p zeT7bLB=wi# zX|TQtLJS?gGOM@2uO!^(9n%NC**ZuTO5e@WN>uoVxwv(((LyxWHF<1sGe@vz$~Si( zvmNJ>TQmki^-tt&;)_ef*|Kxc$eTc_f#MJEBoltJ1(TY(RHs(U%w(YRv}XU70QPnO z+qrC7iBkzY$sK7h3E)tM<)(3Rrjs+B;@TW_b36z7NX&LlApz8}?auDfNh^RI8-Q7< z?Lb6%3ZqI|Se|_tvrYiTn+c+t&}roprblv^>@#moglZkryk_)JhRQRpCrI0{Ao^ro7HO0sNo;_*;*+zv<=2FMj0n$G`U*pFRG&x4-&$&38R~ zy!&T9biD7+{lVkU{@e$TzxYSK=Xm2QUwr(fU--!JhgR8&S?~PrR~&!$L%)6e3vYbI z@!zkc@IU;+zwdZzT}J-I7rwTx5P$Rd4}SI2$J<`~(DA?i+iySK@z*|Z{N;b?^~ZOw zHeUUbhmMbZ_RA>qfB)9+9q)Sk>yMxP;Af7vy!7GYt&hFa)ux2I^qw@*UT`%61#aVZ9^I z4ePa4U|TqG4YcEHNudS9Y*G;yEns zo;Y3)&%xrZ?uar+;+wusHS)!#^2?eQ0LrMU^n+wJxixkI#*PLwzHOBP^Z$<&L-&a_XJ zdd*4zoxmGI=%;bZ37wZn`MVS%JX{WDXS^I$*zil0;e!}iE;sJVmj0tsB8iaRXj_SB zrmE;df_8>03;EnRz-`>tz=tkn{!WmrlP{A}uciVLz`K2R@5>cHio5>fB2kngDA`t) zg+q2;Bra2dS-hDviNZ)FEPHwb%TNpB)2nJWoKLGCB3w>LSdw1M)Qq*_DvuIqv|riGsg}bg|mjeaU7UUQDoJ@WX;K_vSx%o1j`!< z;5zokbqV;>UwY>FskH+5)Y`lE=YIBM>z3UIj{o+D-*~)cC24>1|NO}D3xDbl96z#F z;{J>8fA#UB?|k#|*8k@3txLK;aNM(&5nsPn^nUKwKXtt6m5&~;T#4S_{71iY{P@54 z#^b5A`uEUiX#`;Y(QH$Htlbl<(lAAIX8k7w4+ zA%F3g|MBr>e*bHa*S_?TK;v!dKStT^o8w7ImLhFnzw2pI@{uK=dA<@YUKI(+EhYQQUh za<2@KDolNiwenE-CC(+!Agm%0u#ab8~&E6D0tg74<8gPQ=zx)Xdf zR@i=fS;xn^QN?$GB7B71`jQ>GV>=iZ5iiadhcQ~_;YAN`!K04xH*KoAoeT&IflnE< z(9+lht|2pVgmQ?*eugS9ZSr%+&)35b1PToX^L5_rGUxUQQUqVXLm;}BmPx$Kej1lj zOcP)W=P?$x(n_!}_Iq+GwoQIB@qX@dE>Tpe`DjDRmT+idisx>wpSY2!1FmopMi_sR z3@SVN8pm7^>-Td(yURnW8F2(Z@6y&9#Bt}fkH7aaWvl*~>5S}jCdL-@|;8<09jB{3kIPykTAYs|%&-UKPIn}ILzg@7t^k0fEL6lj$I zvNOj6+R3woIl9G~ZY1{r(g|i3*i39LNUd4&h5qGatUK@jW!;`d!4I8asa;#VnIqDP zpTHRBY~-oevo@Gozf=qXO=PkLmfOdj{IGRem=0)^v;ruZ{TLXOFP$UuH*s4J3c>`u z_S22UC{|k*zh*^v62Msj^jN?kV|?f4r&3ljtDn-Rc(SvL$5&+MP(67wpmX$N{#_8?clBbz;h(Xv~b?Tmse#;HrAx!maM)ecQS#_u*CP zvnwI{+^YDNb;HI(tKx^&YTi2@y65=VO6ZtAww{HsqNA6@(W zKC>G6ldpLA`039*aXkLmqsL3un?`=>vtPshy>+|C@kdt@_V z`-YbsUtj(G)w=Oxf%fi~zv%d@UwHEP)31H;@q14{dwk%@r;pF9WyX5^j4$E%CXnqh zFm@K$xo|uYSn&5`OH{&YFWRPs5Q;Zrjoq&2XhTFa_!oZSJ;otUTE36(=Q+^3U;5z0 zM)yk}9A9rSZ^)eIstRf%0aP31f`W*#Q(OwBw!R>e)X)ewSXibKf<8qYM;|T;NJ#Z- zo*Tb`ysi$74Q}CB$8I0z8E<>p7Dm#x7kvzbg%iwi*mA- z+o-@FQsk^p?)@x4Zar>jZL50s>Za+v1}^Idiz)|PLV$}VrpEX=Uw+S1@i$X%^3S|L^UUPi>t!1#*M;y za~{^||88-GxdHQG*5zgK)!XZS;=O1lvp@(^0CuoZ0@x}!ZBwvEuhpOi`&!9SQpJ@* zt@enoNq7&s9%2xxBxt>RlD~n>4q%geToV`PlsrZxATS<~ZAUaIgxgYto)a7D%$o{W zj%q4t95WFmwQ*0Ai3jrK>JBi|nu3t4mrV8!C#9W$kQh7JOPq?DoZamHL7L{LUXev! zY^^}Y+aKDL{NSe(hQ=?1R~h33tX7BUGrA~z`54z2XN(gNc?Kw=ep7Ncv_L~fz^5G{#>P8>-_!e_p^1=R9}kt*73;t{@gnG zH0}akmDle_meNnIWbV}~@%!8}Rrg!ROV?vz>e+wyReN>4xE=+wvbk5S)xVPS^Q!-{ zCCs{a`1txtEMKx774y})=>#(ZKAhW^dCHEJ0M;eo-(E>)J*$w3``DgwgT@(@CK9&G zXfWZ81H(lV)+y0gps9Rqw?vhtJb5IFUkv7#2~7)AUE26U3lmY9I=F|D_rp!#Y@ z4Y3t-D6!gkP-k2=$I2O<&vk8mvTSaGp!`?fusqxLb-VF4#L&AE()YG2X%=tTr}b;# zfFt$sI5TX)6;Q2&+bHG*@iz)#8*_cbyhuf(x;M{|>~&tX+-0=iD6f&&cV7Rl_d=D~ z%O?X16gRd3D}fvxK>CvFPF)mO9q7?7Fi0hX7*sge+wr`%P?u(^PTl3l?72u}7SUZ1 zs49^VfXrkG0@@Tu=B^uox&C-L_0FA|?-pvl)aL-8%4kzrzmh5^v8+}}NA=|a(gKhO z_h`_;9m;L6{m!1I0~)%r4(^#8MTK!;WbX=$Ju?*;+szYj)LFgk^uPAep*cGhWyqU8 zaG>!W=acVi&sYU5L^j%G74znD+QinS#+?8vv*IA)FiaKYPokv^>+VC0zU<%xFyLuj z+=}kj@T?5YXuvgh`!b{lHt0oLCl0?~(hCUt6noZ7X29l0b2)lEV6ZkKX-T+fD9Y zg`X9M4=p`w{jT`-$g2D7`u;59(Vew|$mavr--72!@G0T&NDY*z!z8`R zJh{HVc>S$s1M(Sz#>}zdTgMN+_`&1D>jsjq;j-`yh~zsb#vLzEjlNTnw7SM>VkeFp zCC5#xsR&2uF0%a4-DavfKyQYBdgcD{vD$;{w|opUX1hckb8^)!v~TY5W{YVkd~)KG z3|(R=$>&RIxOA9UhQTP}F{JH4VCGH4+-Bm)@4e{muB|6tVeA>l?s|g~CGlF3v2Gm8 z7ZGx!M6KM&4}ktEGncz*dzP=eXy=BLYMYmenXsUY{1^HxIs36}b=KIx$rYn({3P+9 zGGhmm72KT3l^4N5JQ0x;3}<}3&5^{hVPj7^b!JyJuRb8N(o+k+)wSH&2KO+}0K>jA z&Fv`+c;h4}9g0{izKMg$t|OtRgbTNK;~R;L1kzHJ!-CkYqAvYvb^&03yacmiGQ6AvEu$Yo%GEC# zV^)dW#}IVrMW^uxZX##xDTAtYa;R+7d%37vfhXs(%x&h8-Ew))R-b7`@JO$ow9zJU zhA*@#(hcR*$Rz<3EfNM4RpXFbypgT_Dmbk0AQ(9TbkK2v4A}9R%gy|a*?I>-l>tsh zI~ghYWjmL++hbsyxe@AVvtc;tRJNRr+G-sp6K}x9!60Syoxu#G?d$v=n1V-D#P%_E zP%V<>gg~OOZw}H93>ehbKO_lgm_T;|i0|-9;tew@ps(+~nFxvd`p@%D%w(5u7EjpV z_AwPrUql21tq!y76?WVw0fb#LxsJ$6Kb6lfSt?O_ey!wv|0DNfRqf;7sK+-e=(Vn< z%j~I4GeK|pY+}(mZ1$j<{ftCu?XtE(ULiA8+uh_JEyMc#J?m0(1^wUr`ZHLa^kcQU z-NHn?nFvITI>lZ;d0C(2x!PdNM443c((Zl^gF{&)Y@a6Yei{oVfR?w;*J@nG>5>HR z%~q04c|0IbUH3zqYFts`U$J4||3^uB48lMzd*O`x;9f32cg^fzf>p7JF~#o^miB6i zrM-H~9w~ip@0h4G7!yaY|FgOFyz(!&(%ODeWh8jTPCgxA5>>)n6t&Tes0hRqAZR^IH*k}#_03ZNKL_t&#sb~A06EDlum@}c+?MK|4aVBpz z9}yp~b?t~uMANn|>)6V3lf>0;WEEO9Ni68I#LKVPOglMFd04sBEw~V;Y87y7V{TLe zm~~q+;YqH=@Co--)&o8oOY37lpq-FAppN@Vzm^m(*SVRn?CW&X2geEZTi*rrN&x?! z!!QC2SvZ~6Z*drs!JVCT3Si_tb;d-|3R?Z<%3hu0kj>;zNgOOBN7L+$cOFv|Ul4<= zp(JKHwy@j=+>p^3El4PI0o^A7L_l@n@#-cQ4%yk78KjSLyf!YIVRGo}^5bL-kS6sA z*wU(_pf)hHb);x}h4!g+f~~+-b(HMTm_cV{A_z8peOj)m=24{U=({tR7G4ChjW^F> zkSA%C7=mO97UGo50Ysc6IN3ZWi9jfLbiSFQ6F}R%#U|byNV0#eq*!O6%%7zj6}9b~ zO8SCwi3Kb>t7qs+?j!nj&~@-_t78Bl1APgV7HiA5EX1t*N3{Vf?d=56s{;Ea^=gp< zV|YR|BJPz`IXIzpC85-(%B*RNVuW3-T@G^2K;)~fdA_>C00(_$M(#w`6Oy@m)B~-R zG#1}FzHeOyeq>#Sg$k!h0}(Obb_UaI0out6+ZNlG-BWprU~xau3x77O){iHjd;a)G zPd&pGSHw5U)V-`S`|6L=5?yLt1-%03L8wE4Y>*me|3v0C1yRl%NKDTSxDiFMy!;FQ zDt`wmBZc>b?MNkKrnK=TM=bA|Nm*AhIP_{?$FUpsQ>=Fai4Ff^W%Wxv%#}gcyzLt_ zHh-W@{%`LVD|@Yj#+?Cz6Onu4h6qo%72u&xhx29|;&R{$rSr*~cXm`8RFI+ihq(D2}x3D4LGc;+wZI9}~bv3UKQWwFe` z%0a}J*XGC|bUilQzT(Jy#Qti(rUA^0e8wuHu{fjTqE-^EkE6?QivH!4>?|jG0(SFA z8BQq5v30oulas*=3GJ#gE61zo8-C*NqL~4kO4%GuXb}}%-betc`4Yg{8(uHQc1`s9 zjs#Fd#ry1PUb)(1ZtU_}1%yy6%)yu6%Yiz98@uVeq%Ry~4uU(EfB}mCv$2@Y;AEgr z6+&yI12Py4x`-UWmzC-L&W$LVlfWc*b~=>VRr|q| zCEyUDlZ)=Nlqg-?fljEY&GRKbueKVWEn0SRS_Jj#pK`-a@_Gnx<}Hrk50cK3o%q(L zp97e%LTp=Ii4w%3KAsTJKFv(v*3U_*@4|UjQ&k)gvtD7~g;ElYf+ghF@JNTP{&)wb zA1ULgrN4rk`#MXWYXVr!`2DbypZfM{hkdciL9i;23806;Nn+u;z)EGM&uGU3lg!X0 zFpF1MjBF$p)QXtF!$so01F)xmSz&^KG#mOC)s=5@vk!47teA1>w1IKcQ#?{WfoHc!LB6^BrihAAW_nd8s8%W#D(;9o+K zSf2ZW*JUsng6jix4L>i?=eR+6`W0lT|J*qNYzB;6TkwFqlEj0%+xB=QlH_&xSrL^! zRY%UWGs&CbX^>pmpbq?Z9thIiIN&P<9omi=+AFE9;YH0G;cVH*nQU3MShiu*5#QSKU4v$J zl-kd;JKyPTefG`}!NS(=iPM(h7kUxj{9tEp`Iz>6Nf!G%*I`VO3(s)}QdYlvKvOfF zA48r=^gQ93y0l;JA#FLVi^YO^D*+UL>K7hlTc1;m@MPp(Ywlv2976E+V{^&|j&o>R zU3|N`D0ibSaPmGrQUH^V_IcTj=2vHyiN3?s`mi4c%&2m zBfYQ+ED`E&zut?Houa8PR&&3uN7-EZ%qgzwGa+c<==gQJYjvuIK)5(zaK2rpTrYm0+3Oy z?;C*GH(`jg5_CtFp`XTnVC{u6DwY1reTx=E{A&AAGWb{V)nkGsRcHCA7tWD~kKaP_ zYPl&d_ajaMY#+GumUmAAn8Ypl_)i1T4pm#Z+HLX_Ar!dK)*5kf7iiV3&S5JjL`-6s z)fUk1hrhiKa5&3^vVPZHeYpZ?EbRvFkNS|bOiY0kfS?WJGOc(bu=xrTTF6fw@QI+o z{XqrBH34MNOrrOGnhG6k0_^C6iI41pCgvp0z#&sM>DzkNZz#Yn9aJ`DjG1tfa1KI^ z={C}^*^vm|*-F?RBy;WA3jM-H)MjKJTt;N-eD?$}?`WO`P*SU3{^In*vn0aCWW+0l z?w?)K8^D2xqD}zee-ghF+^`+%4gI_VXd9ZAG7NBXoMGal24pw%Rdfp|eQB7({>V$) zz{!TxRd2HyTVevJTf!`V)h_+y+l)2%5BG&Z7C1oLuWgCC^fZ*z_bTj1n^Y}NXecU` zb$Rm@tG;b8B2{ho+cDI=|L~?7w#39lmWQZPo~^X;s(FpgJ`=!8E4O7g0&;H8KE`&# zBh{Xx4rM>Cg%VW`@$I28t>h zTA|vbx3}$hkSzSiPkIl_;*7A773Od<9cMTN4T2 zm>}FKfo~lk2Y35P5AbvBQ%S@&@OUJ&vy?vd9kD~+LNBMqkc3Nr1lws3HrBCuywNrA zF-Vt8PV5vkOd0j-ww=&nWdQOi>4L&cBAg_+2@Y~>pUES=srn@Ey_)P*Pp-wY?coAe zv?Gym{IK~3b~zdRj{Q2{WZ-knI;Y^&lSS)8T*(`HixVjNBNIT&M7~fbTAR{X67oS< z!+s9=!+UvBCNgJ~vC`61eV1swOAQP;*geA@D+4%K(9 zNK~X_oMb1}r(c;x4h#=lf7l>VnI6aqbKEElE)$+u&=15Q&|U!yr^~8!$8g}7t&K_L_ldv{@P}p)o#bZ6{7H=6;@B>#Iq>rzVv2pQCv1s;GvTcsW-v8*>arOmC zdm3Q4(#U%pI=QhOD;_%+XesqH6#cHc@KYtX(i&$w6H)9<-Z1VuJ}Rdu5sU@e%?$^X z6aPcGieob--T9t({k*!_otgSF{BAjof{$ThIo+|+Bu*#xc@oC~00~&Nz8blkmgJH(&9sF(zFG5z%*Y5@9@y8$^3EG+N!BKJ+_VK+imm~~Lt zk_}@r^`W*R=j}Zkpa+v_4EP$TQXfMC^Fsg|lmVL13L>}-k^%g0wTS_?&xcKV-zH^1 zuHfXWifwho3*o`h03L%+Yh2D)2liYJhyUEl~l?(2b7SIND>(*uyJTN$rwzqF`gc~-S%`(&#YOq=Ew9}vu4fM zJ$5(7HU=Bx1lR_HF$NnD1|cjV31t*YDrKouK`K?1D&E=8exB!?{eJhBz^iA?2c_@3 z@B5x}c0SM9C%k>Se3HLRE9_yc`h;aS0ASH^DpgY@y$04b6l^eA?6zxl49RNf$CCiE z*pUp|#St%#E6G1PCPo(#Q-7IyP4nlo(x*T#r;RnWEaSER)Ee`R5^BNr4!*dy(Ap3H z>{p6>%C%ANto(+Zk301j<;QIA?8cA9O0cD|A%u>$h>PZPczU|xsy_MuXITr2pnxJK zFSC}Zo+a+!sj-Y{F=_Nz?dlYZ>SjR;$5xvFF#DacMsTX};fs7Tg)BaPj!lw_P$O6M zog6p_giLLD^t{wM*0ixd&Ld;^|B~D_<&GbPrcMTjbd;S3WA>}+o0PpnasFihhM&L) zJuXlEkHE|}RR@-|$ojFB9h_KSvAyoJ#4Xvsi!Kfd&A$h&w$-G*Z?GFFM+0z$@f&YaumI#a9RQ}1G`*Z4lMUmP zbA!wjibf3tBpxTR4cZW#Po0YdV185dxzont781|W%AQ~_lyEB;A-(CY~MfQ#iBFZ7`$nXhu_3T;FqoCk+vuYHQHVitGM7C=o zpz}7EJ?tx}6!5y|7nKiTvMqKP%%?D$QXE(1s8`vVZs!zY&qk3?8*;d4qazrjns}v}=Hv%T8pUzHbmo zo1GC;@p(^EVj;P>lg8w0vTKU4*q*H!wq;e!@~U=7lVwvH@3OUUU>}?U&NXq~(Yny( zsEcfuQ~U;vws+fwNYmq^BK#W1wxnXZul%={r8S^N)_S;hA-tiR%BIwjHH=>9FaS^m zy)M~yZb>s-u zdiOC?8Eca47WfzVnbzxG*E13>&d_MDx1MTaBj%X)Jb?pE!|rG zDat#73Eu3kWFu=$MGps7*T#-INW=)vV$%wwe59o z+$c2cO%Z%jvUC=_o&zW^Dd0d+-kjbt^_$^Coy$79>UK)XdF)mN#6pF?qU^d@J6?rC=B;^rB z-*^%=GNZ^3c_Pn#OG#GePTTc%<+HIa=uWjb&F8h=Fgry%W|ZjGEnqjPvzi=hZzK4&(+Q_GLCFf+dR)&e`6ADPYU5+Y4#wSu=q*;#@tHypd-EPSe2a zAjF#pO(QfSqEub+4jJJy*Lyl>CIUwj2%~LMf z5`lSWIR_}JQ2?;N6V!HH_~CTnkVUe*2+cW_-v@h+X_U)|ImKt}8oJ+U&WGXuqihG% zDo$&&*P;Rt?z;86hZNf;?T>Jg*M<%TUGzWFJn<3JJ7r-~M=k4R4MmirLDew{OW&*A zLX&Ang_!;v;FXqTXp!r|Dx>2!%x+hpN1U6p=+-#S=nR1Ok zGLu+*qx#|0&ROs5dBKO%!K{y*eEJ;44(K|~ex+L4qzl4zVUl0J$GO>v; zAjee=^u{ivZbIEz6Ua$t0{~VjLy$a8+r2pHD;cp)&{)>bcgT+RSfl>V9g+^Rqb)o? zwzH!-5{5v@R|xUbr?gXv2&4q0xoderh^b-24lIUk1!({p1u|ljS{P6bl;UBmVH~vg z8nXk?_0sfY&0lGr4-2rUgGt5a?*SUqRJ{h!9WY4k{#MoirV*Q0fjs#tRfqcqfFe>I zqC4#x&C}dbqz5&EtrXO3(DYF_mTmf!pHEh^Sf2tGSWDj%i0e|7{Sd@b7dbi;h_GX2 zr6xxJkg9S3vcOqS2Y{1aYZ_WQ05mZZGvefR&*(W0)}B{@uTSMpGJtF=yVtCj@=bOb zH+A23f#>z#`r2n%{TbtM=_7mZ6`Nja#e_lDoz4b@7S@%5GeBS<%?Zt6*t7 zZv8ku)Q+6zxz)Iia?CAt09e_V47^)ja3QZ|c3FK|E(x$bMuT{d^ca+mFv*NGZL%Kd zn?7g&0!f*F*`qUzRVv^m&(u}yTtK#bgjPXt$zS}~9&Iz;+?h9vYgiZkNR_-V0w*K; zVOwcwJ-aZgPtijnQj+;|u{eZy7WF`8xlywEt4y400DEO5-kcU1IJ)5;bb$Pl~%hmY96sW9draiD8WPbtv3;?sGyaxa%1!SDCjZ+56zv%}Z7rhlz zzz)ZXBuOboyHc?npXF4cbj6U4mI<^bMv>1Dh>T-h)JERoZ)1S5^OqDkrR_0?#Ue7; z0rnP2SFRNN0oak!u7&8)em!LbR4isdJQ}3KzfUWlJD1-Erbjmi{g#f1B zM9?!vU_DZlkdf9R`DZP%5ekQTnp{hL4q^HpwXJ`WSGW5@vt^l-g7j>=o4k}FMRl7V zUQ#o8OegJo65BhAZU>JP8%lrD-x;*56WLgN z)lDFd3G`XrOTF3;r3dlav9%&#r;R4p12nFWBYMbow^x}>W+5j^t_D|rTh0_<{&&Pj z^FB2}W^!#~Xnz=!*9F?k7PFfEbOHj^ZF{g;bu**BhHQ%M>e=p7?l}i(Ra#xceN*Z{2KouQ`J>w-6rqT24~CqZ`|>DZ&J*{dJ7Gfbq@Yq zNw1vbu%98#>GItc9j90!-5C$$U-|ryqsgEg2{=_Pd?21*R@$X37@1wI`6*FMYYh7k z!tC%hke#35Yka`jB-;DXfdrm|zVaI~m120c2*YL}@l+MEsbc5uXT)39)9q0?xs`{4>q22uMx)-d8Zz?d&Z zmMlA>#Vq}tKGwQNyP0|HD&;fAR|bIoJH>nPTSo@4cdjV~oo6DeAu9;`W?l=+31m;Id#m_)TS#+Ub1x;$U1mb5y79&D0AoGaFrcFKF2F;Q+1VIK63@&KV5Tp zBOb470PUX+Mcp(|zhq83BYn&svdOXAx|fnpDG%BnZIoe9l}gQ&n;Srr* z+%q68wmO2W{mQZ(e%bxN@ubUt1mJ~$PvtEOS2A%{#fr%_>SXA0deg7w8eR2N3pUhh zn=>L&+@5wHwUso5+6&~(8Gfp=Z9^F!M|_%6&i;aSQOs8{UlCpswlkmx%_KZ~2Xw$eJIsF{28Df(dSD(t`vrI2-*%>X)MMu0Zk zVN6$QP4pwO7bk75EzcWOhAvJ2v&A5bn5~AtdDnUVsU8Pxcnx6siQ}EBLp^+Riv4wz zojo|(WrwwzK9ygTUN*G2O(`-YP2^#u@62y%r1Y2WXH>6vO^M8kUsW*or#d>x?2`=O z5ub92nfs(Hfy}_9|Wwvz^mGE)Irpsv%KJ_eLx8KQFWkn016za#AQY2mnWAlm60UOFJ6VN~03AQ>hI zf!b9Et-de65yeFS03ZNKL_t)UPfUl`sGJJ^Qr@%HF^K}j5&K(1WDdPktu0gL3 zOm-UTsO^ir^Pz8YS6(ttcJklY0F@$1nWpnm0AE0$zv!ZgR-q29sJDYwDTvbSUeuqQ z`ax_ENPZ0HNXOLDhHYi0I%}#=SO*L5ILy{_0I5MuJ*O;OmpLP;q{2f~w>Y?R-7ZCO zvW&T@_lD(2epPl-!DzR4wMCkYd5!=s?pQEY!?7VcDsE1owkLzIJYW2F;cF;lopVoLU}BV7d%aKg6^gikw)@rHX=pwSt zjce)e^84)#Q4Fx6}XPd+|Jx(Z~42xXX-$PHT6;Y2d1+P z4YC}JhJr1)8tO9aW@m*XR8+o>M8%7D^LjV1`yhw$zJ5#w)!WLB#s4T28&y6d&v0Nw zHZZ51;k;4y0E-ZGcCadMm<^jH4mlG;Ga3#w2@plLqdU^GSh{h(0YQbkanA({%g@MHL z0Kg<$N=mROMfRYo5n>(|Eg>aOGjc>5T@DjvSi$3Bf|v9lWdJ+#y+<^Uw#{C6hGp2Q zH%d@d$i5L^S|>fLmG%pM9HFQmgH5l`qr%7$`pt@!2CTmfcTHQT4#3+&o( z57Ak+U485BkG5zoK-e`J3S=oj+(HIKaq){!`ca4@@o8?uz@Y-(G59>34or2dj^7bglXrtuq^4cUI<<}rQd`1gpT5i6Z`Z-_5PqXH#(H~ zJj2@e{U_4|>|+*daas|xNa+(3esoCZKMGqlmEgX2%LBd|;ETX{d zG5m>M)aNPS!T)Th&N|WRQgjlML4G9w)KIkt8q3)-W@P8{_z$OmoqeR*YP6{Wr=OaK zoHT6;V#sr=I8mganP^tfZ?~sByO4-jvHi&WZxG9`e;YH#ghw@yGDQX*~0d z>3xAS5j*5K0H8%bD~`qaAyGq))T0Gyv&0jW@!@DTT~jr%-tScw_pxpqWod6L11MlO_J}6gy7BB0ZXIfx9!kAb;mb?1kZf*3IjM5zd+7eL- z*NktDdb|H6KeC@rGp35UEplp2_7Q%=-u#pmJon?{458p7b8J=y=MSTqnh)J+q0FV*YZ$d*%>d3 zA%9tx2}D>HZ%-(PS+MzRvqwAmg|c9IU$QCs&#n%EwCYPF`7xV>Gk`g6N=CeUnkJJ{ z^8mo&%# zMUFL!YN7xTDbxIzhLneoC9)#yp$>P`(eLazfT(#K12cl3bvme(p0iCyB*l}cqaGoX zAU4UF?U)^b%wc!EZb!7FDb2$k48mRW;I+#PwAklmlC;t1uUD3mU$!#>dFXjcXKib$ z89z5G#}fLwzwlc93}5PzT5=hi-l}i7ETv*uFoK|R_720^QrB_C9hmQ-{6v2fsyL`; zO|ulwFz|ik%auJcm-~(;SQIJ92TY zAJ84NQbt2Uv&WN6W-gPrg&oj@AB82yzybUQ;2klf0Hs-e6f>Q0V3v!|6VMFXv{#LN z)sAPJrFhHr-W;Oih?TM1+x|ze2Pv@@(7t+~EpuanDeCDmRt6W~4wxy0gPSf-&3by+dUn4s_tLi`12_oJ&LCNI2QlDB zx+&$(e`?6MAsnVhY0h{Dm-DLL)=`5=q^`@O=7HNDa3yzA%Z`i(^K1IWU z0iR>p3ILt)Ma2Wl@ej5)Z0PU+aPgkHk5iLq8j~~FX1`?`lUj8 znm5~}sZl;jcaCzaoW!_*q8Tk7CeT-aM6E!LWc8_cN0AXEZXDIe)&b+_wmBEcl4^CW8%B}LG9>@f9O9`>}w z+jWO3Jx+9Z_*j&6^*A@=DXSBmv$CK~jIwpGYwxdR7RErzkqR(B+3_w6bX~gqQQ}^@ zg;)0tn(!2luU=e-Q>lNyf7x!IXDy-GtN_qPmXxRCEog9YInLNdlwGz+k1}hI;2Hps zN5g1fVU-M1OfrxF0Zp@+KlF(nwoF7WMddy9j|OH0rMB*21Af)&@Z1^0oRP*D@(gWL za*D;Gc~*#%qh@R)@erUFj&$m01eeHAtrG2$Z&Nz-WW7-;oH$3l`D(mm)xph!OZ6AR zNn?Z87%?uX(a1p=rkuW8lRz6AfOi6KVEkZ~J`mIs%{qZ+0g3 z%CV4;ozHYfOfnJ0#x58rNg)(fq@8dIk|0~_LgM-ozHO5obv8}sAkb9%DO&-Bv}ZEo zLyvX4Xa16Mfu{jzMTeT;1`zH}-j~@B(sw|z<@9iR&Hw=2Lv4g34$(m*=(H$F6jk)S z{5`~V^-^{fJQX<@m`$1~UhG=3JrRyCTXdA~Z!G8rszTj2W$ZaEkFvUv_35__TqC9A zGoN!L@N=c^qyx&T#wBCO%j$R&Bo#MK1JQ~EWvRw}+J!Bkpsl1O?Z^nD(9GV2cDpb$ zDaV!XGI(h!Ye;~dV+lTe6Ntn#?ic;Yh9`$K*9>5a$g&)C&>v|NUUbf-4CEtyLtu2g zYK!-IkA#yZ`msSMRV>}XXAAln?l%r|;OG#Q*)CXbf4x=u_6%LA&H>#zN|k*jEuDr@ zuf~KO4A3gb2zMir4oZehdaWBbh_Hmu+Us$$%YszVG$o|$r1^kdcJ>$;)89wRr~@>K zhSUv2V5%fjzb?*hq{qlZk9VZGyHZv(XzKUyh|oU2?0YH?y?Zd+<;=Lom`l5GF~(VS z0(McGuJx&^Ek|ZZC}a<;CT@lsDOLdowddX0{Vf{KcE~>_vPe3$JJ;=7uw8&^r^qb< zplwQY^!KFNFgkxznJ3A`ZF~Ie{Fo55>*W!J#@TvBmjT0M4PeT|_RD@Un^~X(U63Cw zOM4r3Lj76y(qmPy^zDs}*@j|AE!zjWaX)=bgn;%0LIsHTUdpyk6Otb+6joJRo?6iz zvMSP%g8XC|*#)LLyS;XqDZX_VnEC3Z^A0D?L3%0Z7sHS#Bbsg)h}!?TAS`jcM@Xw7hTEmo-sjoBRN%0GlV5OS^_7& zd?sL)b&NAZxb*V3|E?2 zEy**j1pp=dYA1A%LRboz<$G#c#txqS+P7>!{`LZV0>+dmvr2h?NdUme076+&FO*;3 z7{XVn4Z+bD%sU;q#|>M>Fee!f1?qEv>TUmK2G9x=zoounqWPR`SkaudbOpQ84tQMi zv}GEX8cn@XFFg{G=<1OoP>-c$b?!%9zLaVz^`&)6YYBRKbyEN+GJRT)_2|eja4sxf zlIdVVa&NEYQiT|@#C=`h1RswCkXJP_J49InH@oxw9hfcT~IJO!-a z8qX2r613v4XF|*fgf?fKTx?_*r0XB3!(6G*oQgl@!@iALhqpdsU=AdGNqw=&j$B?|MK(p)K;p zhVH8~GFBsb0Iuvh`Hy<|W(GdsP&V2f^-S(n@)cett|{>DBV-O+maTT7l;My_(16?R z*=AC=j7#+c0NDL)flUp&=ty7n@Qpx)5&hk-ly+U#K#!R)f0WItowMr7GwBxC@}M5g z%bH7V9>`TEv`)wm>*ckDKE&(2UD4uMLj$KQo^DVlhZXasqb_U2l4!6lJ?pbm25_Aw z%uo$I;Vme=TyzYW*(Bab>e=r&%uB!hg%r{!T}*mTdAbfqSb;#*i?4nXgqo4Z^>(@B zMS&>gD7mqRYI9fr%;%(mVkfFB1G<0&Dt5O)g$__B87sHJjtlKL-J0>ZKc69i9Z8~E zbOo{GS3L4rD=mHx>k)4#&(W6;j&>m86z(wDz8NHg;FzAa9(?Tp1dXy$=Ye!u0m2Mi zdd*A^iUdnG=&{I`&Q2Uf0r)BQI|~*_n1zQ#I&IKXqsB5P6AOsAt(sefc06$kA+|?;*?LO>y6^DC3~Q zjas(O_INFX79Nk)HGx}q>R2tx9=H1cok%p&nt{3 ztLBDd+0-8B>i32WS(YERTR;6yUK}fOU7n^abDm~o7{ao39#6%k70FA0RRTb6Lc%9O zko>jNKsRwBn82E<6utcB8;C}PU^kV5WW3UST*qSkw7fn@_0y~r^(4@ZvWQi~T&M%k zPtct|^-wYeo4==ai(wB zlWTM*k3mQQLd62oR^X4)0j7OviS&iZ0EX74(nGR6<67>~hsNNCCA;S20p*-gr9hK|@ z(9u})Nc_NzKKLVUaP7li=uvqNU{qv?(!nR(oPuTN41tyImGluQmEqDbKy)XFf}S$o~xSD!BC&q(PJ<=U|`8l`;4?2y|eafWK~d zG(a*9G1^fXbVvvV@3n&62lEz3PhI%EvtcmxsGJ=NDnz(PmXSQBk_BwN?ys)_Oqmlb zVmg=`6r!FnEMPFps9gjm)%Bgb3j&Umn+7o)IoZu=X7fI(O{4C>v#5MFfbXuF->zW*FE?yOvDv3T0yz z04~D5;)OC+en6XN95nhAaE*)^ROsk=9-4wo-^rFD6c|eTNTwNeEHg(x-S1gQm(4O| zz=Yzc$-MPYDZ=~cgmRt$Kz9TkY^qa9-<$Oj(x^osLpNwoGGEN(In@oC1)6M90K8b~ zWu1#Zzm83om>$QEI|2Sp3dcRit_iSK0A{cyKltKWEKD15Fgt2d3<`aaPnGEbpE@(( z8FY}sS(Dt>zq7P4;b>@lZyO)~u#-&-imYNIA69DKztTa$F zT0@ScWuXpQZv2?U^8OUT^%x@$pBw9^M~$QBnOYr6F{ACJT#6|UFS1MnEzf9GubS9- zr-{AY0HbV|SIzIBnX-Trvu_$a>v_cRuqV&vO#u&u=RvEv&ejx9N5|>@0vjZTEYQuv zpA9~%bx=M%kaP1YVyNPrvCbU&bKJu?)Cv_4G}uhBW~?Of6M)!&(T1_&= zq)b7yv}?T(*ix^MVLtilcYL<5n`DN7pJXhbmm%P9Foj~-xhlvh@K~*UT!xe#GlgKn z#!I1X0QlBEE^%fgtR7UOAko%Qxl^ucBX1+(F!RXiYiBYrqCt3|2o3u91eKcaMN|;? zaWJ`!K83~ghCQR{L(ek$P2F;K#7$dPgjHQ0^3!gj{XF*G9m0^;A|Zylv2v}iVUtrU zGLTY531VNov9%+XXZCHR5J<-;Y$H%>Nq_v_75UL^``Y}I``TRmOAk1LXZDX22YH>x zmfM#f)!OQ~U+3!aY@|-+p4!)z+_0m~ufThv(Sd@7VcMPo<{B2>;`F4c#1CW`CEL>J zaWKON9q@+Cz_;6>F!PxaE%Lrpt9B(|6w`To1YiVdr8YYa+g5N$7q<>zaga}%4ljBN zxN|SNpgHrZZ8S@ylMT-z6A}_`PiV6DF$mVOd8f$2ZwvTd$G}YAVaz&HLI7i~&w$pp zNwxJ4GjJJDdRN9NWCr*V14f8srf-@xW9Pz3ysk74wvGR%s#11pL|YoWRbvBiXGMsJ_Tq?7ninBpS9gfYRQLUss))G zq#d%I{yNU&opc%irs=3oij0fK)7-K`LA`ti<=EbEjV@5>n-!Mcp!h1qlo`;pcgEPo zWTBo!Wznu?4u-(U?!?iGG0`b_pN2S$%8v~uMYH3m%8~trZTMQhX9zH4A<->DAN!8J z2C&m&JDN7RPzQ<;AwLW@48JG(?7AC_fL7T)+KN$BikpfY>@mX;X7tMO>#)b6liJAxiMN0S#W(2SqgTxO0D3g>% zT;w~syODJ2eHAe&lRtRGd@kTe)*glGyO=XHs0?QGk`w?y%Q2;)hs4h~HqRh%2%(E< z%qw?(>64xXu?@L|zU2qh0sT7Tnnrr|!@1YK<8QLJvoI|{?u2EKswkBmGP@=I6G#HT zLaJF`B3Cxb=VBT$#&n+y${|N>ILIZh0Dz*}qXe{P0GM$? z!3e*TzT~w6Kw9bn)Rk=t07iug)3UR*6X@?AfaLU!R$1P`iTA28r^sM1dWK+xL3?V- z#dGSdYVAfDrES`QT=76i=9eyP?brZ-&H_sI-D{|d@u`8+$a!x-rkU6&0FZ2FObY($ zYt=@(8XR`eYOAv@OqJ}dSY^!sfHs20GW-V z;nueJdrYsSjrBNYO8&q29<3feGxzn9Cry>bC>gVbYI+XGqrrj zzhq27*fV!t=8&@@w-?Ne};h24pK!l4Li*pbeI zx03_CuA9E7%JCq{d+52=_5{$*RSKZnzzU$tLLh(~01zxH(?Sv)UrG>VT^-wHqv=rm z7RbailT8c&YsCb}FKIKxv2~`5(S{7Fo1W_M-wcE!GlVLUH8jAnHeFBttvWcBJG_O@ z>PpfzN{@T8{Vva8yY#Q|Wc8zpBZgSb_d+@>7i!7(DIK(v83c6-p7wFQoWmfU=D{U< zKf;Pt8=u6p0B??UleIB+IaclMJ z74695j^K=5Hwn=Yl|1+C-nMN^#B#*;A`(AsDf-oGW{ELwBsDCSVcmwO!|q4fuHE7} z!+MejgTQVZjBi}(AP-9!bdE{BuGyc)CJ-~nvVB_Ab*UXM=@{NWqS?r*4aKGyM zn#fV5Cg$cknea$&NZ*xj!kgt66B$GA66c7*9(Hwimub?!;G_nC_4RpkKm49pKWpNV9!cQ*yH>{f&?4y!6=Bj@}TIH2e*YMT~WzchZfJ( z1zM7corCJ6f;*iVfvFrGh^xQzIV(*SB~5;QC^VJgUN@~qt&CxZGDB*6e?0U482~uM zHmq6AO)h{|=e%78-&hN{D01&aKkGgCU84U?82>!%>(kLVAqV&MTUL%<(K&1_JrfhHoW845C#^}j9 zUkhJcN%;7Y6_w=kxBqftRjSszbWFO14xO>W8PJBZK7DxJ* zz*3J9;-_>X*-`-n18RvG=;@FTexW`HpxAgW?Tnvs-h6(LiSyAljw!rTVIt*4+oMjr zEtqRk{ucC;>_2{p)gv*MxKtUF`bSfhq4G)XRfIK`EpB@wsw?cCo^zx3pG!JDq& zN*xq%%~2QX*tY5M_RoLv&u!WImF-}S*Fkg#eY1Wo+9nV$?U)T1d?|2DWIXjR(PLG} zXUPL&dLNj`M;wc6R>KjiEf3pX;^fqXX4n`UYs43}=mElzWAY=pK^|N##tW7|fBW2q zsjwiE%u;G=Fxx1Svr_Cw(mmCvhN=FL1*U%`LE$TAIT=4jA7?E?ex`MR^{n|v-uY=^ zvC#+!JE+}tRzOw--%dfeqb)mY^PW1<;*5-ATJkNSCF!n945uP>&DNRi2_z*Qa%i3_ z<)BmIqyn7j@Oqd&*Dj~PeQ)$&8v?fqNaPWALH=@`PyC%5MG630?U4JTtxw$F+NRxYes%o492r0WK(99}6?Oo)sQ^GG7JIND2Lcv}wz~r^ zN**MiHc>u`4*l4W91K*Z2`(~F$HGo!Sm;GT=s5sj3jmnFb^-uFR~lG; z`F*>6ZH{cennymX=>!IN9z8={u{wDqgGtgbGJwOT1^{$f13=e+w&pqjl$i-!6id$H zG$+v`zpOj8yM*n}J*7eV?F)2gF(R8KPo$i_AY_#~;yrqaz^WLa?g5B+eE|SeJM2hE zyMhP<4{OZ-+1LE6X&PAu3t!e&4A0@J1Hc4g$uwi0_;*$tH@p)#2O11)J&M@q$&&$} zct`+S>yV@WJ^JftcBSoGIAI_lCm5B9F-)X1d!+fH94U3|23mjL~E!07;}cI(j}SdjmC!N?_E;1a8^e=03bB zYKgTbIR$*~;s6i;adS*JCJr?cC1lNj24W;YTT&_3J&;R&u=v)=m{ znq9d7{kU((kt3x5N8R??te2=FKfU%0aw03+X5bs6^C3+KPWmF6VSU4dX3M#C2Xy&o z)Q>m33>~M%GQK41v_VNOzIi4g+oin5LXKXIV(|cmQoYJbc8+>k8(Uzz1Xh*z8a}f# zP+Ti5vV73W>0i=5j-s(_D?gQM>M1)|89w_v>N2B%WMPF(*Lcx>yD|r16QI$7ZaioJ zH~}IL=u_|X?0vR zU2{MBuD?z!$mG19N6J9%)mEnF&k@V4=5o~_TAW=3dp>oL`eFIFB zRjbdSQ}#{0*ZujBXgq`T zZ_=Do-V|lljj~8ssG@|=0xoGR@&Iol>3BH{kg?Y-P-r(de#G}RPqg;=$6GsLMQguM zGJsSw{~-e?00^L@aRwL9N=$ex?F4dBKoZuYz+GP#TMY#z=Awf}_RgZT&q`}Kk_x5O z11{_^%p3*)4Bk-(rhpIq>X~H5@Q+f4^1 zaJHTIo1ibs5lAx2-ai2GqSxyH$4&ndy#f>j?;OZfmHXVpbSDhbl2v=RmVAhO+DU*; z3C?jsu1G83;$#gdlgK`mYctE|;$KeT$h|1vSpZK;InYOE4Betag8R|#h(;cu0&EAfQ@}k702|MZWHl=A_rXI0w55G4UF0Yi2{+enYtUkTEqc`Dr8lV$wdeZ) zAO6h~6Cid=n+@>(i1ABdEJeAbA3%co@Y-^hox}Uw9YaKO&hlhplC=*gAz4KIQ{CHI zqyCUh_7K$=RPW)w41z3g%gHpRjkuGO=13DiiU7&>60H~LeqQuvUD$(RJ1}8t&%A0Q z5@JJC!Zm;eOvT^JV{^wIWB@Ndsh$600|2^Bl*&6_$3EE7w@ogEwbry65yhK2)<@Nqa8-VsXnH%GL2OSsZaOkora+?w`t%F z85k2x{Y{j}oM!EUcF&}e>zvw!X&v!oFH zU4N-#V3=XCaMA}e8$bc2VdH)Rnppb>gM*Xm8o*Es0BB%G#EDLj4R)Y}fM{^oLz`41 z5U4P~a;2;TW!9*G?PtYKb_fowx&AK^g=hc|jImj_Cti6p4eh|47XHRNf*n2y2nTrW z@6Z*ER=De@TaXrw=M`)u=hO>5g?qDXIZ_b5h#*OD_MYNJj^33or8x`6sYgF;u!#o0st{pntmNA)+Nuz17&jx0dibh6F;!KHWgGnOihzl>si7uQhF}H zUF^&74&`x3G781Nz^U_VgKtb(^F2V_lX90Q0N}H6{0-{c5<`OjJwWaGA&XoCNVVn1 z0Pw#C@7Km!$fJT@q>Td7k^@`6qn}!rm$(`Id;D2Sopz1aSgx|JFFvX ziZV-VU}@877!zHtEbJnDuF;-6H)j($%VzjbB#+J3^;moA5n2=wgta}H>;Ml zr7L2$WOlj=;gUg8Bp_rnT^40BPGSe=dvzpFCDSSJsvm&K5!C1%17;0 zlpgX~vNG%>3PAR>PmMlAVp0zo`#7pj5_pd?%LBMY9n{H^b|8369VRg)_JrP+tcv)A zcrJ1nDhd2hu01!?j(EipRZF9tzUFOl$*4_&Eg1Yk=+ZVhTLz@9SQh+8ZZ4k328;!t z)JI%T8?!x>r*JQ1I2ZNcxuwDXe4OBLXm`jxq5Dz)6ihuhd=j=nt{{hf>FdBGf ze>>&MQ`<#9{nDNR>{O-NBLjHPW9|Ci|3<_uZ4iVVuU_7Fm%E?MrXhwjCPNtdqW|)m zU{9;sU3>SQWy!|j2K8idj9BS1mGSy})MdUT1;!hMIA4NiF@j=Y4#wluwz8?n;xxIzuw$&_x4(nOqoh@+6;| zNGg8(U7w16wE#5P7RXG3JNr)alab7b!B?{uaDsr1UQG#UMyw8i5|l}j1Ze(4!Z24B zUvjKE(%{Spu1}N9Noxr(q?ZDos2U=B3G4m%LGH$2*o_VhA+O)mxylZJ4Iv0Ly@&;(W$LJZCyM1 zl=W@N#*h&@q$siy{&(t+x7U)w)Np>+5sF(6#88rdOBb^XZ`bSc>t^9&O4Ta z1aY5UkG6yMrytqgwmtD|fUhX~%)Ykb=r!%+^N($7Puvh71mGgt3(&Lc$*0?6_dMD5 zM4NN#V&o8VOCT&igk(E@&ubyeopD}fbmqsLvY~A_<*2s$sE|wS$g~R|3b`J5dRN=| zU=EpubPU3G?rkfNS=&yHc8-X0&?U_OV9@!@qubi%yB}`{pV`xv9ucv@Sufc~ zCztM#bshx&@xAe+BiqrZZft9hS>Kih{pRPubNkwJLHE{&x3#Ap-jPg$f9S6BDDVeR zdwS5dH25=UV}BXChR>I4OJ*_Je0*pt5)C&i2H;Pqr;# zJ9BHo$8#VQO^0oqcyid>2^-q}-TT|xD0jl;XAOWz*UJxdyYq=1?cp0XwPgVA>0k5h zk-N9F{Q)8Yn>&2_oZJ?c!oIBF6<;4=%}Snps2fBRj+^mhS34J0Tx`Z!}L z>0q|g4c5FT=>RBA%pjts0MITN-Gn=NF9$~8D*ZbUS%oASwwaX z8Mh4>qdU~&or|3}Ce} zI#ppmJ;^eAqvHGGyur^$XSOAPL4d^$0!=@h2sGl^NJ6%&H?;XH9z~L z$~J)Ncf`TgcSOMca?rdrvVBKIP{wruu0#JrOq&CI+7RHW$jtS32o)hn*PZ^`wzVa{ zwYkk7ADI|**yx{k><_RRozV{*)7r&Bk;w zblPoAa;CT1`ZjPRfD3xuldd|YZMfv5w(970p}xpw#Qo@glb(R2J&2>+ z{y4&7=jNx{qt`vqp1yy3Te=}Yg~T@>AY}c?>)XZeenl5COw6Yk;rF9A+}G~-^sS-e z743popVN-L?2NWNJ6U%)_W3Z0ef!(CJ05Dced*2w^h*L%rTq0Y`3NwDELre(-b+qz z$6k7RTN7Ymv1wXs8Rhov4n7{*(jL5iQ+x8>r*cPTN(g?K@rD^&0E9!)sUt&k;p<+| zjywOHcdC*2w5J-@8@{AA{#MvYP`?y_7AVlY zbF}`NU;Kf#YTfEd5-jBx|8_j`RQu*fzLH@0!dG6}ZeOe1F??&ZfO8>@Sg+n_+B0DUG?)n5TKkH z*J=mg|EaqlZrA_WbvX#S;H77`6JC5yTN$!~%pD@#KIq$a&!g?8f4rmZ4Lz+6Ah>7S z?)K7uePuiG!qXb^rtqJfew45EH%tkT8Z?6r)QiE#4IlYh+rBjbGG+!uBojWp6HL2= zPRCTSwtS+0O}q8SeZB+s@TuWvewv)2?xi!Jk);LxL~CaI)j#Ii$Slj{7pzgSF-tCN z7j4Xb0J0)V>vF*!aRoZ4$HbH_$gLH;RBIk`>M~O|l4mFjnG@xbZ^3NP(gUrxY-EKcX&! ztaL1cza)GRn25Y9d6ypaewOjuCYh7a#?I13xkX@}OsnAUPdPke0wv z&*z9QgD&4xk!2;|w?cUQvG^dn< z&Ru_dPdjwews!olT$byAa&47@g(*q(1ubBE_x;=2lOMZ1*Nm<@Z+$!FEf;4epVp#` z4t^W3!4#2cKqvUv-`w7w`F3QQ)(8LU6hXs$WV4Pqc}+X@CogKNj$3cZOxC4AWdMNv z16L7HMaR1(z|*~7ygR@VGL*q?Ox3MF>4f0CKY(r$8E`HPH?T8aY?(uov zI`IHZ5FKg!MCbeD&70bHzIc01Z94;#9XQ-Frg4vq?Bs?2>LqRUhP8~=C4*H-K8R`9 zxUlK-H?$``2w8~(16Z;d-t_lKY4B2g3Mz8taZv*t3mUCvaDE@K-W`mb_?&K_{R>znaP%Yx&%Mc2ua_;Ip3*NP**jIM~|t zP}t^?ici4k>uD%Dg9jZC+6MJHf2cbyWGkA+CX=N)VutS(l~^cY2F7FojkVjAt++uQtGBb(@Tf14?#=#V}XG~ye;&DpqT1FoMP z(}X{JdaPrKZYkE(DWsuK<4!nU{13N-I%AF9+@Idt=5CLv z@pzL;W-1{&h(orO`i6}lgHr)u=+PO#VP11>*Jtl;8!tY#tvd6l?4UI7m4V!!+-QQo z)k*L8`U7ppmmX@T{Esh-DMn=Uf)37?WjU0Dh*o7hLEwyk0W=N;Xno)hZ)kfTi$Oq4 z*=DvqrjJ*gvbLT3GncnjIsI8cfz-wT9QBpI2XU+$_qX2pNW0?`-)T$MMTZ+1#RP!w zx>^8`846^s5+4V>4}I;f%p9F`#aSUrb;jnkm=0e3=EeB{j+jRLW^|I6rn8$Kh)mH@ z$F6Ocz3t^~<=RyOJm`E$sij%Xu*)|eARmz1RxHf_i*L0Rkv&Qv1N{adTYJ=+cKJJB z)mE-qne+l!JEK|ag}(Mfj!_@7ME8CE+wJThx-6$Hm!TasoN|q44FCZ&04mVd(#V8f z@wThm`eQdx_wj!pjF0jLfV2E0pBXa(SO%E5D}c$C0H8}_O(H>H0KoSJ06cPC%CyTs zI@x;fBW=g#E$y7wU)FU}0Sx6WI}>Qy6 zxf%nx9nZF}fBfq)HN3mMfnfwUd-}p!0C;$+#o&nQ+ zUh;`*vl4OcEjM>P!x4s7ekeelPY$ht036s%)l0H=6001BWNkl$foH6o~|JjJjYuG6&?SP{s?IK_d;~v)Y zVWY|if-ZnROanV>mal%3!HNfqkst@ps(uI&G+p&yRNdFTGebAhjexXt=ioz0s;GcS zBOzTw!vGS}-3=0gbm!3B(lyfEoiFbX-@o8~?!9N9v-Ub`t=+~Of1j){zqo=H6)yPW ztd07D0b-5_yaj;bd#lU@ij3}#N2aUOj8-^9sn!kHtR_R<0h4V>8_Mj;D>kn=eYAQmk^yIpZ7cno49(5k^0d?EkTpYPdC85=``dfP zN^aubKf**2HZy|@zi`Zz*4Y2UMdBtFfrOn7}v+@LKN2p98Bb{ z_N|2<#s#fsCOsUg2#2nxjy!aaYiey(pr4{dfdl?X8*7f~Ki@fKdLQ`SiBTsFg5={o z&TpHH8?X0)J7??krkYjT0GqhZ+iqL0^+D^I(v}mY>MVSEo_w=1@0sHH6riX`8Q&)6 z-JHqB%*kuqSf5$7OIg^(p3n8CUCx0^93;Ex0*#XSreQ3;#P~GIwjQBBhD0VLftHN* z4#%sK=@@A154-$>U%e*{)Ai_Y(qC4qX9eh|kGQ};bak(?t>C;6WSuEMM3pE0ISue( z+%S#}VAftuxO;N9trjK!;=1B}#6)-}H27B|uZv}unS~^jIqL_P0EdFJ=)M|Lro2oG zCg(TR6S}QGZuK7QUMb-uZeA@0wuvI_mfu|2qejH0>>a*aR{Gab%J0~oQv77ANHM+p z9ym*_qo&70$FOGaDkh;j9WXAuneCdrXCxwMx#{3}>D@ITYDp zQ9*45<~&tx5jLR(M9sOO+Q25U9UVomUL6D?5N;nD6^*uc8_P_8Z>2VeU?O)W1Y#7} zC2fl|PCwRtgYu|QazN#$u2Z*gdCNZxttF-S^OpIa&N{0A!SB)Os+w<)OxlG*PpX9D z!}M7moWf#vG-h}9wVVFXwvn5!CcBWS6n~oP7uNdwSUsh0(Y*I|z?6cKKgu+_5mCR7i|PJIcnMR!HAlG; zeW9gZ`443_J6-kV4OMR;=+2_;%H*ce)_(TWE1@cb@8UZ|;lNL?=(i^yAcAKeIwdZ5 zZ9+A$@f6s0;@a0PfGG&or|R2#1(1yPs|;QY&-1z3bK#@D3-|+*>ue-~Zs2)Z!Vyll zzBf|=eEddM@H%m-vuAC7-hi$??Xc7?wLLLN^~Byn&Du_)1jx3p5k*T*21KLz?5rEOTi)DnNRKW6-2 zr)t~NMJ+ebdpj%pfger-q;OXU2!YrIz20h;UF!2;vIoI{l-8TOnXaBuK(s>ZsbeN{ zMa`odJE^^kmyZ8-(Bf0lI}_##Zvq-v58g>CBImDI7Zj`aBv46e$yztM)gki|LQ7WJ`*!>EPo9yX&btW8=|_1TzoO~FwdeY^1`tVL`4%C(IXV}| zN%}uTi%P8|Pa+3$9yMNgP00yo1}$c|)^$7T>$Ybzwvn7jUF(ha#S6hwH8I1u8M)fK{Of0L9*xBlxo zh{v;&&hw9Ts0^)3J~k@C`&Y@mLzsbW`~zKYPtuzWlE?0lNt#&)DWB^$E&3Jrmw6h4 zTqQG@FZ$V(G*fhiJbE%vjrWtLE$5S1-&nu8c;nUEwm(Xf*(I*T3=l^O?ti0+3c69( z)_P$jht+?1E0K3z+P7#Sv--Pi4MmT9cgTHe4>jEUqbuU{@NFIP=-}w_%r!K5dQkhV zP*`JMKSi^*I-Dz+d7`!+=RPK%vlr(xD(k*EDb@mv&2cbDYnlOp|Aucyd704afqLP* zRJW{dZGkLbAlZgpBe|&>yINe&xpzxN)}5(1k3~GXHSjp(=pCT-p!c3BN z|5nwSLd2_2@IgFJLU85`FAI384~gY2f&Hm&0!(uIt@VCH*xc)iT5i1JjNS@%vhIjk z4P!xyf%;|Q)a?$Zvp*I5mshmkgO*_uzEphSWU`_qJ}BcPY59^0$>NOS6un$_8N81~ z;;xCF4$9)^bfZ=WFa+~uGbdYA?c$;|sW(Em3-LzlirdZ!mT&9i zdP}|FXCYwnzFG9!l-+k7ncJDQ%(h(Xr=DEvo%b9I*ijFm=@AXIztPcPB^+xj(>k;f z78MFc3fqsfZjIG6J~wXX_<%)B=4?kYY!5Jtu^;OyT$r)M?`9AJnXF+gN0u5_e~m%SKc1#>(0=& ztc{Cgn96y40|zOY6Z+YePoM`9W_yfQJt`C5`p4jnwRux(ZNTjiqS6-j5H* zA%MRdm_^k)yzNkJDBAu}UiQFir$q|&=%naXy&=?3dt6z9Ek2oW#R8qPhTcatsq=>- zvSMX#wYDSk(POG&_D{yH)@@&j6Z@q(Pd%hnP3H){YfnCCq{AsEt zj&5dB{TAe&RS65?5D)GklIYLvkghdc$p5D*-SD4&RamaNsff^9|Eqnw^T-Q=`P`NqaLeJEFyz=*1uc>sZAf@_yrW&ija&FvIF)cog_@Oc)EkF$5)bR z?1%6XigwRs@oc#=4hSx(=?fvK4nDgavdY1vmgE_ zRhD8gDE8OQi*pwvYswq77r}YTE@HOvZuCFifSa0aiRfVnxj1kB4}G6EmIdgt_JJd$ z!`}!|lIx5quVqRX?tby>h*wEuf<6g=3DD}lo+{Y4{`=Fk%1UVJ?l9SoZuEM&yJ8M- z0I4odrFLfrM=c(839Pz+35>T+)8Y`zAQVaUSl+`wOmz%XaYjqZh^?tpVEe9R?uJ0FIrSdb|U0vXD5V7{x z!ct?0x1mSXxm;rTy2N`O^_V6DK0RC~RgBAl$H*{zS>&BZ{tM(pBRxy(}-j9`;RP}L&h<1NKuO^{l z7RvBaXKU9v{*+UOH%1hxkveQJx|V55~fN}HX;b8xcYZsqex3^+F zDz~&}#NUIh=kj*nRLTup{u>Y1uWseaylIWj)_PQa(@EPTY}DsO`yel|6`thTlQ2#S zoR=14*yulP3;LE`)+M&C?Jk~2E1Y1MFLWTJVfZVz4M$N|BTucsSC*Pk@7-^rUi-dp zFFn8T9d{k1F5qU?OXVNW)Fn3W3DN+c&rqX}g~!gF_U)F>!;fkYbXLtvw*?}^E&eOP z_LQNvt@5>eabb1K_t<}#iDBU0nW;Alx`=2wSWirw=86dC9jS#a{5^BSLmr`AcZ()w+l_d3__z`O}QGDN?COWtDDa5*K2Ilk`W)r(Iswiy?7@hL-B{WX7;(JK|wr z^4E%3^E3k5nF&INGexd3s=pUEaB0dvN%L;flEja3_`T35eG6{?@RxcD*B3+$^*%J}8EyL+v0~Dd9EU*^i>=EO211V8GkN4SJxr);w$KrQ_t=+5bw> z!<3HG_pDE~fenyiEUR;e?&wk>Yf~#N6c&Xp^W-_td?E*Mn0ZR z`Zi%gJdXB#)+0wy`sV3mcH^Frg?nhd2xnx}k~dzwPB0=@lmTi4?q$7m zRYA7!O>eYFn!E>ne93=tKhEl*2`JKtShuO1A>uYi`n>g8vuRFh&nA~w`-gxp2Tlil z+n$?E2S_sGD;WG3M_U~=xXtN5@slO)urgdCYq;P{`ooSq4eP;biR55z@|+w!ty3Ib$*w_YDDZR9dAV^qZx6zXXJBmXnEGoeLSSNLUgr;fXRAi6vo4w+BMuAcGQ+z?q*{Yy! zlsfH<;e(Re!jW6v(z*Cdb?AzNocPAKEuy%-f=QY+x&cs<)$Qu=!DAmOmvlrb2ZC{A zTzs{jaXxhUAw>dvbnv@uI&D1rsr^`uMaCt)IUH7W{sJ3{;#a| zRd(@4ikQM;r_Fea`oZ^tmi-dgWn@(5txVvqK?!OzSAMlikd*!-b{RHMpU|Wess{Y1 z!2Gt*5?PzN#u`)0yN`vWL8s~k)=1i}-Jj=*0H^0J6X^6;clrY|w0LhvK>BHhZgUIz z(`xnWC0x>SuJRYGL2SpC-dA+Rw}RJj&m+kmz$XXsv6N;(p`72qA~@rh+s-6ZU{8O_ z<)*Cq@FC3Fbs^vNakO>mbGHGJrFNAq_~FFoTyCm;b`ehICX5?R^DFm<^A~Fb+e;^! zIdr2~lgpw-rfkoUeHnQ*`t0w_=GkBQXW7Y>>`O zYTpIN1Nous^6gawqDtYFPqJUd5COk94l} z_HDn>VLAv9uiS?QZ-5LhL*MLpVkIym__UPg(I(N9-nt3X?oKhXHe}Hz zn?872sm}ifKHKaQ7}AWrGIwer_W3PP6|nsuJHcPCctdEd{ayq0h7u$}>DMG}Bu%gnYfwr(bJUSrmpyOXuf4c8;%3bw(Xm>@@L|}PaXb-%o>Em$nvv4uVtzwCZ=#c+RQma%zJ72C z#p4T)wr<#n74Du39CzC^?3Z!eMT?+zK*0yN-@BM5M;l_=1+RUI2)-~)Y~HC9dEDH_ z1XPrX>BPYpOV{mXwPa7JGxC84U6_DuSUWwTSQm5Tp7#|8NXYo@TQpfERCMSOwgK!U zm9f}mCt0%in-t#*Fn}u3aM|Wrl9%^_=o~>WtQ<0m=)xjkk1tE`~41bR%mvL>9RB-BHgg z)*4{r_=HN*fLdF+H6xMgr`XyreWK7`Kb6up1H1V=fC^4;KZcmmRql~BW-AF z!4E#P!p5Dond*YI!i3^g>aJH{IG()?x<;Fe*X1p2OHwC8zY`-TI?@T=kU8eT1Qr~_;yxhU2S7XV7OJrtpwrc1=S__9h?>( z4LPihb;UuerMGAGVin3c3=b~sB=&hb%i1ZkpVYqjrYLEL#^ z>BB=fng>VXd4HXN30*lJJxo4}v&*+s$Tg~Decx=Lx}NXr`my-R5Tro;!Zq6NsoKb_ zc#2xwYXibEs{ghpprkvqKP2z+rGG3z9mQF%pT2qf8RyH-OULZI>*vt5fBFJCIteU& z{O|UVvz4*hBI0jj8W#R=C{sw-DjItI*FMx0VNB{kDU$K;(4d5n32>5+?)c@$=H%`6 zAMjMG=6BT12d|B%c8^!`)EyZLdB`jj(ai9N5(KGU}`&lD>GvofDIjakf(0&Q&DTyUB3gt4>tP%F!1Jm z)Q!*IyF@e4*AV{wV_TuR%U`dprC>Z;4W6Hw)~SHgvAa?8g8+~dF1fC{d>yOLokj(t zNM$J~kKbe4T^x8e0z#n0MsgC(Lc6nf$Vuxf^fexnmW@}Ra5HkxL>|ewEs94%b{3QI zgwaKKt?##kY|MkoZFp9A2su%gf*3qti&Udlz0JENQZ;k0aW?%+r~o9((Ras+WkPp7 z%8g?*|C>Gsg!kvJi<*$>G9p&2#d}4LF4aa z{xzPGI@etOf;O(nBuakn4-X)Xr+S=Yovj}b%j*i3lXiW!CTV)N zmePyUJukbej`{@K)R#}8O$XezAs2eCnH*47(P7QX?ztZ<3Z&c3nXWr1fHo<>@@&`h zUX%98PJaqilS}zEo;Nv;N{wfTKK-f*HeJ!;NKKjd+`b zX49_b%CpT(EX~tElQ;h1K)RI~kHK4L@2wqKQFE8h%E=2LUd|9@wbUs23HMx3y>ABoR-a%`*&c3wwI|yWH`03C#R5M7c;XJvC?DJ zA<&*Z$j>F(kWL4;;nh)G31M_DG9L?6sXXz7TmRen09+J zrppiC<(bp*-!yVJCL-CP(3te>d-^6^Xf|YbI;eD3&++f4o|>22aw6yV>F8P$@AqUc zzt_g^Q&k=JHyg|4vj@|hj)is!UW0P9$~J_Cg?gv1nz?~2x+tF6B!Xg;_-0Hd))FUV zeEj5TQFGpyj2pp_GT8Rf8eAn2=J&4yI*5@B?SCT-4CPhCyvu8!8|oL6#tge+BR}nM z7pcKEko%>)sr|c+W6J6kfnbt=G@pUGs((lvYJvNUU@TVmgUtG&1YWNgp?yd6s&CBr zW1ma0!;Vhy53v3yMtpRr=4cIj$!_kU2PEA)4>Hve6-?2!qS^hBkaFi#`Ty(w7nV;v z-6;?;lhbl<>k2`5AM)QrBi%C{JbUk3B#Fh|{vQ}|1_4_6^UXx9*34wkcu0GUl}M?? z`25XMHo^h8{=!7Uy_?FvRr*aFt4f-`0WM1!B-$ZY=wm3-vF7m0)h}s#LRSkQz_{S# zzO+0}UwqBO6c7hwh49Lv?yh1w8EAA<))c^f%d}a%e7cG^E`cvY|Jc)dQCmqq&1;p_ z_kA=2BV0-57kwgxHM+8=^q4wuvRs4NkguMH4B^m^;DmnF^`aIk~E^4X!h2-b|D8)lh31 z0T4F@#uc~r#YXp^D!`&dbyT;-ZR?Ob6@9>i5OAC^M{WVlUH91PJlIvL9M9iRZsYyfgsS$>Cm|6D?9Gee5v6aug^7pXea@n<;YSeIOShD>oun$A; zrgWw|1;JaBYVtb`ge0-`vKPPXm?Sg#BA%r-#=Ae8BF`OfWNqal)*M zdX8U@F^cc3%8!72AIz`y;UTBrfGgdnN6NseB=gPc1UNw*8hoiSN==cR(0cQq0AD>{ zz1uCZAfc5asJ#$G@4ESs=VnyD(lCgXlt#k&l@hI+qH_uycff#z#Qiqqc{LiN+yi9q zKCj4FmH55B^2Gh@-Rosl-S5J)5Z-hUn<)@u^T$YIS^xyEGGO@Q_FYY=19hd4uJa4P zN!%bU6yCMKmVlNeMm(wR7R3V}MK=}l)!GN(&lH^$u{H-Fb3i_v<%`DxGAJ>0Hv_7+ zAn+6B=*y!u3M=yDbg;aR%*vv)#CU?ISf%BODZbS})E-fu(JgzW%~{(E%YBE*&}Noz zAPwvwOpm(ZQD!!&e*~7wb z00PQzf$JO*C^;4Mck4kT#ohM=_YcZ9orRKI$t-|#2}Re-USXfx9@tbH6=3&a7zdEe zC+jdkv%`AsuXM+57tbT3LCu#LuJOz4wEw^^WcR9eepfA#-;kmbFK9$vFZxmcE&m?tI+bLyRwl}JH|t}2hBg+ zmtcM=fLO616$PA>1iWloXHHGE+Es-Kr^;iz{)nzfe^HkTo&ONt4!1u_c&(GbIk?-R zeC3s~1l{?vwZMf(u(xRrL4n(VSHG4w(P$vTfX(VJ(v$}G%aN|B91mEa%lY|fK7ukh;Xno6TnIb9*Kc_t&4v&N=>Ro6XyKV9PUdwI*0JWO_ z27W%Ai`{kJVW;nF2`TX@*%O;OEX^CkJ`qM>4a_w5##dwZ7S1CP4Px6UDpOch5&3kO zi+*rQQR9`JmMWqb*}2wXyRZ6w6H3Blzu^ERG{gZD+ELFmq)s0oArlU8SV6q~-w*TzduYzVHR`myqj8Qu*^F{p zMG95kL*diwh9uulV?WM0a1z(jScBePrb2&5z3bbQnoe^~^_h0S4Ty{?UB8@VBBXj% zPUT|MTyxI)2tiWd133~o*64mo__8S6r~8IkH8~t$a!K0fp+#sVf?bqQ0HKcqZ0G&e zD^7A(gQoxl3QekgL<&iGg0tJwGF@Ic8Auc@q0-ThAaBuY{QXH*C zfrkNZ@T6ONPZVXyU67FAdlYmyF$E&JDp z&mHCoxD7{M+qn-HpH6du|!fL4Hc^A|J5XE++4$SwZ z##)z|snBHzaNXh1=mHeL1!!1bNdyE*e0%aJ$0xh!`h%Y!ZtE=qAd8du%+A{*#-9`9 zW}`iyKQ*dky)Ada*{FmMIjBTJF}+CR`40yJ@|BlTU=jDHh-fwgT}^c_wHEnSp+{{O zfm5t=^L~xVz0Yr)8}!sQzUNuZeEmFiKGp}K*C-YL3EWk334SRnnGg(# znAXtvCY`eMr*6!eNMb!KC){rK?sj;wQmrOoUD?CuFKflo*ph^Th`;bydVc1vvMrtD zHKWhUZG!s55{AS-|A6cx!HFNrXdX;B>2ZgZ&CNfS539uydq&mb>lUUVZFPn9zHWE3 z1qnfs{n2woY?STvyXfKfmIT?b=F1WJh}=(qz1h(YM{DLIwr?6II}lz~&Ep0_h5506 zE_R^RO!C8gKU=Flm7OS0#JbF$Bs_c*C)_CZ1dkD6puivi69yBYlK<@^9Mm9 zb*&G?U<8!|Q6GI|=G4d#b?(^<0f~1dH|!OL1|4gJ3XLqMyZ`RL?&qNDw~v0k72*P_ zL&yQ|XNOmWU1wla9+`SQ0B3oYz=WxRnwmjKTO+LN5^`t8_(4|<1h1gvKaOaQWBzD< zJHwK)(D#af>n-J3K&hY296AiOKQLE2XZ z{eVtxJ}EfZNSNC-EX}{o?l+qO1ztX!rHh#7!!VD}*W(n1&bZx6Ey#6ew9Cm{K3o_T zxL;Gmps{vxR7hnK@n>9PUDuDOKLH2l1J$rj9Z`Q8jM7j0!5}w9>*)KZ6v9n&tORO?8 zK#y}o1#xb*d|>8-8GM4Sf=~N$8&E$AS%Ksvkr43nrGlBU8@vfl_E#6-tZA0gR|Lvp zPzwf1!!eMjiTZC+b}i`7v1b)&2@!X~2}g_P2bHS>zc&2n+*}l zyqg@4f6_9Wr;x+Zx2RXBwy5==9OqH^8XL?dfNeo|FC!QOsE3(g%@PX%NgDtDRb^q% z;_ziY_bdQ2V1@q(Mx=osJAK$SAGfEz{X^wI*FaFZGbQJOMnndA$?JQLL?^Pdg?!3v4C0<{!vM43l4If-T&W z-+hUcp#ow_`8`e(3VY#4p8_H_Ee^*XCX#0BS*0|?;{A|;k*+$4&dRYLmR_fwRu5Nk z4dE@icB(2tVoS0|>G_Gu8~BOgl*L!3(lKZ+w)*rS^dG+Zao(IYm;Ee#r4~nEubz5I zg5mrT4;rz=i1CreT^K2h;-9anGb~uH_^sLZhm+f#?mMEO_o62^9g9`T0y_AhJiZm5o!>2k`PX>5tc->Eb=dq6}~ro3L8>8Ne?s z4a|iCPXSMd`rRypkYx(z+dZ=g`;9(kg3%^J>s7A`DLk_iE{re6e@)IK2@&;y&R#PL zFLq`WXof_!$P!RD2w(kG!EyUB6-pbdO8?y1Csts)@(knZF+6WPV@>coB8fix zbAAxA{rMCI0iybTE4lpu92)|Rr~tE)M|RL>0+9T9IibM|%j5w~KCn5UxPtO296v3e z0cfr(dEBrZI9HUAAOS!UD#u&qM8L#yP+i=E`k~2uoIi*wQnI$7#B*b}^7Ip#oWW=O zcLa1$`tCbjAWN_ngwRRq@vq%GbkRU?sDS`N$t6tSdfYZ)t8MR=k2@mnjE!FFZZlxR zd`nBV2By$jBdLDKdS~R=*(!p%VX!ZuXRn&)d*fT&1H2rQ$qIXZ!PZ}2A2RhmZ*nD% zVic(x^B@Co>ZA!$-%B~_Fil6)*ox4lEX!!jv0T!yo9TI*if*kG(;WWeBPs-^fFDok z9+a)zMVm^RA7dK(JJ7ckKQYHSKf%o0&TGf!`gqZGv*%ErBr*Q+=Zj6|+$2^O%&}3r z2n_5nMWF!)I=!gy_YeldTwsi=^BXE~G=Pyca&b@qFMHlMo8fDc7_PX;Uu7-LoE{@{ z&O~8B8kaA3eSoIe8A&3xP=d!sE$N(Q@(QFnMD&E=mdQF z%%*c$k?;H7)_m^*qK2_EnRGF;#ucGYdG=+F`t=DAT+sx9Ug+g8C0ZXC<^FoWV03uv z^6O`Kp;azZZ+~7Fe9}AgFZyfG!cGPLmjN@k#oPLW-Qsy=yw9rgPiPJwrSEc?#q>-L z;>jv)3Q~5?u(3G(lTR?GD!l9RMsa>12NsrZF>~-6LaEQzY!@gvSvHl}wFW%y=&jo{ z3YTn=jO|K!H=;G25m+;lnXds9cbuLVQTdC|AO^pjhEl^H@IK0iO#$A#h4}oyw-IAs zuY{8`hJ+22MT5OP{2zOXi9kB&n|^9NhzZoqQ^nu^2!le+COjN+l zNRfqG@=AoS@NVLOFI75TkX=-i7O2k89x`K~BoWxnbhusde82_f{Kta05^UmiJX zr3VM6mjLiy4>t?b@!9~W#{yz2#%7NM!NCGN(!`>ddW3|0WguBW+MfUtCTr88 z2=RwqoX3VlR=Gvb-UKQNp53GViyvO5jcZ}x{SsK58;wERY(4m9wEiDwC?gtaG?qdePrTU6X?i}~AwRRXkhAz_ z?SM-(8nX*%5TT(dqhSS3KBtxgS}yayD=dbB*6dWC;jkJ8(5FgY2+=?=5<&--Qb;OO zo&h@{6zukw%!zJ|_?Q5gH(>{wt^b?5x7{0bJ8Bi0cv4}XTm^rVWnnQ3riMj&-d;Mm zdNDor{P(t+mk^(<;s>&1Z-kRW4<<7gxifN3Cc*+r#T_fKetyEyKsDxn&jQq|4d$rL z#AD3+UgBeOlraVceZeW}pD9mUEgQc;W1f|eVO-cKI%CO>*w@3SV%zwG$gZ1-S$dKO zfIyV=UVKlKV<1Jdw{%)+A|c$4N58IN@v*fmZqT;5G|gU*Nk$D3s$)k@H4kr-dcoqe zc$&@qJ!IN?jh0%Y&RW0WzQD+OL3D7J*FkLNBexvl89uc=)4OVc*l?t~wUyh+uT|x2g=sLd8a7fny#=fEMoo z*=QbNKe0y?{hz&D9|j>JtnhDsNo*K^2Bgsf$M48M`v;lpzf>B~o-re=$nojjL}_w8 z8mtT3k*QZXbVXjv_me)U&>vN!_{?}mN|tVj*9&r`u!MnM`nVHA&Zwbrw_P=sq|uYr zFA3mGpx+hHit!21m=)Pt2@^+SHIh@1f=+f-(dVOIRWP;xt9z!hVW)4yEjC4b{qv;! zoT-mLA1f}jMG)ivX{22-M_Sq-mT$5%kLv#sIf?uC(ZtQB_l>Z`5sxusQ6v;?PrXqz z(e1V-AV#&U=iB4a@PKZz()-e`VCEyz*!NMK?T5u(brnL%H#H=;l^A2B2ac{~$F$t^ z?>1}jRl7*haaw)`hXgdPvG|EDPop5W^B7{S%U@uPvg)&^g0dpEi296)qkI-x5aN17 z{RQcqw#W>8wmit>Z-Ld^lR9*G(a?eV;<<3eKSSL-tO#7pPYW6W-|#F@-gQvs!u}Fl zcV`7dkZlDR2IxR|$-jLJfN}10o0;IJYJradF7imu)FaUzK?tJl%FA-lgW`Ewih^u#)1 zdqo+X_NaJnOH8e0Zf7UljfcE5R-)Y_cO;Bpod0SZu8W`n;;6fs#YVz_!%+-_(jp9i zI65EYxktNf;wrMI0VLuGp<>*5j&Ff&T?AT$KsdD%%=7GL6rgp*mqD2p3IIR|LNPxkwo5?)ArqQ1Sk=APDjY6G zo3+OCoqEK4KGEBs)y>4;Jw0add7W7K2JZL%>)U}H4vw&Kl(yNG@Aw(}-Vg)F5m!Dn zX=n4HgTMEg4CcWAcJ|7L-Be?{hRMh{DBb;UX--t2IAxDvb6R`zqni8 z?Wv#8aF0w4lggKzzx`6+;4~P@ zH)kTnRPbSM2NocGZ2QeyC0?JR=~ue9d}qLV$layQG9hMF8#TaFjqBdaYCx?`9x9J7 z7w7W%_~3qT%@Et02gD%b;VFN9wiA@e3ntc2oI<@f213iLgXc(qzFsAP>UA|b~ zQ?tu$Q9it?vsw}Dw!!yr%jVh@i9uAH-L4)tH`92jrjBo5@?VXosk&-MCgsb)zI2LW ziIva4nayoRcw%qbI|z{NE`Ibb0+KD)42^ej+~ALBg=nc!aPq10n7Ap`&-2%gmNO4K z>2gFmFVxVAkL-p7Q&NT-TCq?x;)!=+2{5nCokDqoz4yphV2p`7cs(( zg?!Je!GP2=<*UxfhfaSv0(|2z)-R5X$jzz(BK< z8+zi%i#s&=sS!+_TzL>4eZ(1&E>4lEYUfD}qf>7-hl!pfXw?O+rM(+LRG%`ObG;x@ zzh1lR(okk_j^;$rQ)?h%9f>e@qhSU9GBwY^iqHM|EJ}{-7_0bKh=?97Q~|&Rk|EfL zA_zQpM-0k5Q`;RFu!L{TQS80ju&<8~jO#9*os-dVsXq)FtKj?pWwx^der=rZYz$Ck zkcsOQIO1ld>*7C`v*&TFOS~umm$r8vE|^|$NCii%_16=>G)ZfgzY76MpAW~x(<==S zqF}YYajSJl&iPn|N)lLf+GE^k4}PJh^Fkv7cxC^f$P}JIV6c}`_f?b8FsfqIwbf(JUC%FLPM=? zDp?*t1uRig;j8V3}CPLO0;f7v{ce z=NPOUoH-Zqb&@GY{8L!1j&ZJ&(kt~L6RH`yUj_`~V3bMYs`RjTCDPjzV8j@O>~Inq zS`!=<@DO)u_^;_QzO0Mwl?c`$s;%eyh40 zCDcV#P+5c^d@CXmjoB^mYm)HF`Gtc7E$J+sY|##q3Wy`10mD0fo}s+?yHFo!Mup9! z%l;CQYv(m#y!30S@^`RlFLR~By-izz((?_hG7HT=JQEl=PVY zbdD0Hq1181Qn^59kmk$;GC&QsD)4<1`OQhPS<}z#FLx&Kb)J$zK&y}= zgYHuO7wN0EhP8gjOzS?b_cAZO&OEXxK8G^X{@FP@LTla(X9z^`y+H|x6UqhNQE66x zmc9DjeAkJ~5dAKS5D~!p_q6LL({dw74g`3Lz$a8d9@2&{Jo1>|MVxpU$@2(al(ASh zqO0`3q!|k5b>0z#(`5EQ;8Re3u*e~o!C)tF{2b|A5xsVM^Q&3tblpCcIw{_Z-vG?h zIc|$Do3k5SPdo;bQR(Lz&fR<$7=d;wudv2HjW1PRpmM)VDP3#%_NrFXLcRau>Q&3A$#) zuZ$#5dU`z~^5`kcYW!dz84oyA>32#tV48fc!><1=)R+zsq(UW7RbaAppjy%`<|tmX zLo^!We0Vl`@P{y20G*M(3k4u&Q-*n(IclHPZfS^@hiXcxzy=f*nL51A`CWRxGz8nN z8o>ueEw|!H%38CAw0XpHhFJz*&f1FY25a+D!lihhxhdBZKL?AnI`Iu+Lg)tQUaUar zram5@Kn-FH1h1e|4d>F})Q&E;WS4|0ZeXum8u{sqZ+T-~o3A^2AZ=|p7U-~V_`V2L z4C#y3rJW5Z5AJu{muT;HBR|HL(4|5TuT|1sQa`k@!{-*ONKvP;vM8NJe)3H^uJ zH3hHI$M@w~L`zV?gQR32MpWbn-Huoyuy$`oV5}d=ALP>dFcNBEu(-!&kXkNFY)OG8j|z>$V*FtjvOo+eC@if?4J`KS4X&8#w z{)fGCy-Eq%zk>qx`WlEJ9#ovCcz-h;NIg?Nyi7^=6So6B9e~&w$2Cdo~%XgV=_$wgLJ@&Hrfu3WFk3s9ykJ zB1ro|KK=LKWJKwvuQFl?{GjCGyT$hd`4XYpHDtBQ%>JX{M1QQ-h+e)r8n^A@MQeHs zpHGl}l|&#+n$UMqPO?Jgzq8N1wD(gm#FRyb9Pz4%^)13^~l_{0bGuOelirE z|Fm_UgSCxiQ+HT5I(b#S6s%<1{|}--UB7PQcSd>;JXt>*2y`F)w;#0G3=}iz-f|%F z|3&lX?v4l`)4(vC6g=gL9!JOB1vl%{;}N|% zw0SpkxlNumtxSz`ZJF;X_%N-DPSvOm*b~2RjbpSP{G_IUFN_Evrhp9;?X#v~;0pk# zDPUwBki#cGa}D5{hyXrY8knt-ZszVt1M|XnzpPA+h$IL5C?7CBBNQ?qOhfK}dRMIT zJQi!erp0k~a~RcPWHohG53)%>{NZk9>;eV=44Ybb=KONek6&ADkx{<{eihuIIq)Ug z*Tc0tWV>i!(Q4)hAg4B?&SUWq@|-w7dH&iZio6D$JhQiJ4`t|kFtrO+OFMRsLGIqp zGMElUUzr5@AMc4s^Yn6UMA>i_@MvDcaRDH}cjf{7t`R`y0Yn-Y06;uQgi6O+#kp}r z+jBDwjHmMrNelqL_|Y##Kr>F;h-?Sfz2UktcPW-WsQ=)jPRJ5Joet+%$d&xzgJc42 z+bZa$&8q*8#W8yKe(9kyXUUv$P3*|_n$h0u1pp6~n*#tI!1542;K-`E25_7_fa#5R zAL#HD@U%ER2Vi^t8MDfju?BP^qI;=>N?(RyfUv24!#u!*h_an{ zTL3_u^V+wC+u)xrn25^uSJ_AsFZgZLN53w^hb`OJzh=!evwRGjVbIQp#t`;Ax z6Umy&Bhney5pnwGCrkOqXS8|drE%WtYgefg5SW1~WstO(4^=KUu)N3MFJw9K!?E`7 z@rX9gP_$MdSUnBG@nPUOPP&hB7x1hfJD&rx+_^}g%_ab>n?SHmk^nHu5&*VD(3G!V z@ulqoj_J$uO0yM?9>?a zr^fX0Rd2kmOp9ad0D>k1liiqh~KXnV!CC!X=f`|Z~ z3IHAn0H{qM0GINQbe(v9JVhet6ipWa{3bVbfX-uaddLgkd`&rR@jUHr_JdPr%bqsH zuHyqc_LZAI7PJQ4_7jQ%LeL&p?NB``H;~9rzMQVI0V3<3EZYAI-1%lX8vW8a9omwI zA(tJfGE3F6aev(f%!XQB_9rThcH1~aTC%?elWnj^N%>sjii|q?foQm<71vcg%Aj8Q z-roKa*EC+>PSx*3?yb++*N#>;z;2o6O)fpnHFlr5rV8l z!Hx!+e*|*1#|?xTK(XEge*#4bAresbQLVPNPs~F(DLDqQw1@;pHAi9cI+GKy_C764 zin=NZRfqtoVGwuQJ9@2NRz%$^MIE|P_g6KvI$Qk$y%M#{o&W%(QV8_&I;L}@8b!=2 zvCa;o(w^wt`H?&D$5+K6?ePO5fl?b8M<10lE&gktz~k-W$FD?k>(9noKJ5G@7)psp z2Pa0f@x*@&pvh#=7`)T?T!)nhMR4t|*!B6o^<~1csjXAUZz`8XW+9);xfpysyl>Y(ZK1lQBI7{szzhD62z6f|&tc zi7yzK_CzWU92Yk|-hC7aY@Hr;?F#^S|EB@~UMK+Qqu_e>_5e^3z{VV$O^iH%Itosk zKzfx?S0mDR-^OzHr*13r&pEwZ5>vF(;;dPKz{9o+RM`Q1t0LDFMn85wzO_t=B+auH z&aI%%rq%<%NpoY#LXP6b03etTz<4~)oSna7Zn^07&o9$v#sgNg<7XwSx&LAl%Fq|;2LN4w@dGivc*kdN zDSLJth&6bTAt0{3=%BOc@F6pMXYz_K4jk`}qI>@O$fLzFrPSWD#}Dh_#>B zo&o@JT`B?K&D8u;!9vO(hFyJ;#K>ZETu{PM;s3hvW1Qb~Ig>7+CI(tt#H$1z z@jHP^FVv)|2RAjMM_AGTlE7Sxim_fQmVr%z9(EX!F`raoW~yPyW(crEqln>kyz8Li zYbneQ0Q&xvr=~wUb~(+B>LlB08_gV=LYX&KRP(~qy5^k#See!Jq0ugn@%igiCJb_SoIyR8}w*b|%!t_Au);Ln``yy}Qt0MOxHg}MTy%CL} zP(aeJXJXUG-##8P+NT8E0sf$eHHZmwO`Szx^*B<=LFc|>^cq}6Ta4>@qvYHwL+QtukC#HZM0gO7i3pf%;M+9&|L;xA(O8b*J>qxA6 z5=a2A`ByC|i~f%bDTb-myKz_nUVy9vn|DQY?~ZcOTc1~^&5MXu52mC1)Tnwc}*p57wEKmxyu6&YXr2c6uK#4!DBIx+JG!>7d#Zfv^LIw#@8e}^d^$qQ2k;LCZJ*5O+BO=tR)HKC>3v7Sq5e0!SVpD!=zgx#Sh+m1S42CCyqp zHlEJNJ|FtWJImvDg+H8)>BfPM5%oHAq@egaQ5H7as4N;bk< zwUJ|eBG}gMux#J02Bs8$8||`avJ?%FgbkTzPr#(JG2E;5_KF}|3tCMAdJTuP&w7Xw zNTio(YYa(+=%~APlQLl~GM$9={LaTRUm5^y^Q`JV3x!KQ&P53~k)0(AmPS|#FXUX+8lamaT<3G%oDe=Ms`3ykI)tgm#bPTZ%nbp@O_ zRgAKv4=B@+g08^*5ezr_M;|v`ziG52}YWMxDp; zFo8PJkNDYZ_8bY+IzA27d8U`DWw*H5DQIwBKXTkG)9v!1q=ZAjsTlnQ>J2kdHxYQb3gE) z)&epDn92>u8B@R~vC-lU0D#$+%Y$Cvrq~5M;XN@0%<0ecOh}xJ>0>Y}Hin#hP5>={ zG)(Dw^}hRCg&ZFOAeDzB&)gRxRm`SX%N7Zh34-h?%=oB=QKUn0=J9FK?hi)(!3!gi zG*afA>J>n!{BZ!lI47BB>%xofh(0flHeSBCoD6VM=ISZ^lrPY+Jx*V_eQTtpiD_v> z{NmIQ&hL|N={Tg`;s<~<9wI;*rhuO_zs&y8NKKKA;5K6M6wQezcb7eX8b`qe07TRi z5kOA?FMiu)WyY#`RdlGrY@8BGwekJ8RRBn=4FDJkv=_g6RatPoc7yh8=PmKx8B@Sd zedd8OF*YTg*m=0jxZw1%?4@gC_vPF=H8;u=M27a>|8#lmpOl>Y;&)wJrpCI!(S8A% z@4fG-a{o{A^ocEIR%hYA_2?WsBo<4lWy0Klcw(tIbzP}uch~72t zd`X#!^>AI~=F<+Ofr*nq0056?S`&cw%s!NuYd8-!@2v3a72%sIiUa_`u z$3vUTllN|>ps_yj>Nj5>XDv4XXu2u@j44nM;b}~Qu82ax9@aj0Wm$6BssO5Ul~N~P z?9T|@*mQB=nO$XTY!Z3=j#vf}YtJS}&52D+L~$%l<83!jGi2*^}p?_2cUWmR5xwR`og0l`LB!vapn zBCwXNWS>!%TZ`g5b_(O=qib8;0)VYQz9PLct{AK%#5f9oRwITgZU3nU1=MNk8-@|K z(cMEnt6fI^l5dp~@aC5R0JB)HL|QX9_Su#9wzg`tN{S%*7_p+z(Ie4y9Gg7=zVfDe zG+P={19&3T04>3H60d8RALlrSH<^jQ392YqgFN*J|8oku`gd>C0DV1xt@28y%W%y1 z1^_cSglhzeX1jA8$xN!4lNW6>jIP(I;HX1u029kV$?=^+%bn1s!-CB3;x+2?CJ+HX z07|X{1OSZhN*)~!=&X3+=0*hdRnbTpF9+`@;}nqCG0UfB8WNeCvh7t%<(rx(ufY#=BZ?!a=ffePZK&;T@W#9Txy zd3r~bKXGQz2q1{4AmkHkc2LKJ*iAcOeQe5kBfwYS5Knd3H4YggFCC+tQ3n?8Lx%;fz3^Ks%wki&o4lr>{J{OrJkHrmm;4Z=7j}1jSgphF#S=pV(e@ zZHkAgcukIW$#v>M^S8^+oTnYieFPB1K!1V{ncGH%S z(X#0Of)&yK0PFzMOyv@FA$1G-zklnVvNcY7*}ge;t_MBS0_x^|vL0?uHER@)dsK-vNs(bd^`= zIL8#zFW zraP&0Qg1PW=Qp#y;OEKx;HlM1PK$LTec#OZ7JtV)NPpeZ z{*~XOV-pzxWyARvp8(wOFd=p!7}~{)k@4gK07XQ|r(m6IE;C@1txl^ZkIYhlIINokr~@7G8PnOIZTie9 z5k;EB4J>;Dh#uvRRPob`(!o`%={jTC+(?HLc?1FQ@KD$F2lwvVx+``=e}y};{mjFf z(pi`fpZeqoA}PrJS6itHZ2AmHQx8E6`xJlwO8~&Zv_lf6 zlPE@C4bZ7w4KR+3k+%s^SxqWOO?aI5w%xvpUa><2F8Z;dJBTJGN zEYuZF>1zPg8dFhDJWDO(J^gh7Pwm=GA;KBt zJ?10&O25cHwKvCybWYsy%l5iWB`ha{;*oKzTlC`Zv8aG+^zu4W8t_^;^#t91x^q)} zLLN978N7|FUb2BCt0_%7#s-*sW0T^jG zs0zR!@1Z~>9m+BJ>4DeAC{5wJnPO{0<o(NV{gy~cXA)$+=v;NU1pt2_(oKv2(v zNZy9){0AosA1&h`J$2mc=;Rg3vr`iH0(FSddc}RcNLe$zKm!Ge0ICmlqf2GJKjhJE zq%Y+cWtdJP9WVzwiBX+!o%k&ukg8lrm(q4L0yFhS{!qb0S{ASeE;Z4y;_45yi(TI> zZtr@=pMv2MF6n!7-EXi-D)~I4lnGh7D{*oN(s2#iSR@-$Tns+^X4>U#(WlBJ{!nBt=G=UVv9!zfvN4vXTx{ zt+V}FQ>uY=7ERZUIqHJ7H#sKRcpBMR989MF_Wr)|8oCG{Vtcm?lE00|0*UUcdX*2# z$pgpz<{yFRB>Y00rv&?V=~7JI!HAN!gFjmG%dO117Kg;hw2IdZ%j zEo;vvTqvN^#+6>u_?!>Tluv(61c+RX^;-Yf_eSHge-fohZ>_I!pM1+Z)S2{=$tC)A z139%`uSj-DQQ{qHNzxl+&AT>!`d&x>IJW%SjUUm&o;#SzUe5x~hMNlKz=<*h zC?c)`t91O;{=4hCS7}Q$wb|vlZ6z z#**bV#^#7^z3K*L=Pz=w#3q$?B}MNXfd+P|HJuVKrx~QzWt|BuIJ{>IEKV@RZ#-01iH~*X*ez z?m;nuqn=o8n<P_Q+e`kMP|>$43>->{}`*1Q?zxo>?j)3MlhG)h$SGqL9Ek(<|*Bbcs4 zq%6#BQmg|z_nI|j@m1$YkAuI+^~dQeFg=V1U~K&t?=BC2?a?wh))jKySe17_0Ex~j zPw=r0MAA7{nS84o2c#0LX#9Hf`6RE`@uZ`n$!KW013MVVt6J_D$$|zZXs-I?+FNY{ zAC@|+Jb(jDtNpQT%^`I+B{UFJ!k(>) zm+v0NC9t0H}I&wz2t$`b1;{hPYP>T0vkhzjO*U znwWerFs5?H+f%>THOzH`QJ-cR<=74W>U6mE3B0NLk^08I8sNy$H#2rY@lE=fh8Tb3 z1SJe|J^yo*NZ?Pr9+AAJx)Pud%|w8&HpTi~x&yHOjW^Qbb(3#T1>v(z_Spc?y3$59 z(=ToE*_5raH1^ac(uct~X)w=Zg93p4%L9OxT}Z1WE$|%#qG0Q%qN8~q*_-!Of>nd) z%ZMJnjROGPV$Xj?*7N{FI#5S9NQyt|RRhE3bCRDGinRc|Nq?;~?W#r(vOEB7Y8mUc zA>%R?K@|6P-#-NKD(R)di$aAC>hRD5QQeRK8XPtM+qI@*ec1uel4@JXu&kvq><@Di z#u06o$8P2Y=PhG$UQd~)^d#H(ax^v&9FBEd*h!1Tztdu^8h4xWM%gryIx}rWg1^K2 z4whSD1IRHwi~907D&!?L2Hu8odwj%2rm`;AJK9nlNxV_efdxZt_RINqNR@u_?4 z75qUCN*=>43vI9%!cw;@e=hmT!{84qtJ1P&)raJ`LJqMKG2Nx{SE-dGL6)t&6&?Bs zwwVRl~7_K)y|hpOb2i4OxH6LmsQW z>KaSXz;@I(M_}0l`-e(t1|8~mP^S3lz-4#-!n1K~oJN@K8^3`x0(ajfk(-}Yx!>;xXE1(kpaQBbr=M88#K^B58`^d#ebETvS=#TN^fJTyo1q41q5%Pp&R&R zz>=3De+HEK8P`!i9fy;0s|=!m0*3ABzD*}<${L8phC*|#-cvH?lfU#^^rs=R57iKL zjR^oUBE!Mg)uns{XcGERh0=s6%lJk)IF93)&K&k-xmB$8b)u=sx_OD-HB?tB(<13o zszC(Mde-Tsy?}rTg~M{}F+rGqquwPbGmy$AXvz%$+GyqEO$^`vL-5jN_3K?}|KU0gV0`z_0=L!I=RqE|vkf@+gROx#A+~{!G?%GHn$Ce$| zrGYG^*Odh(!w%?qk(~I_H(VQQ{?PyrLCoIbbrS3(IW16{5_SWFx;Z$ zlm5D6cyI3b8Icer>25M;TAMP=LbfIOjJ&IpkL}GoC#SMMV5JiwxPF5_@T1o$ldD8I zJ=jYq=1Qv_B<)dgTZQ1VYOR5|)=~3vf6xQ^zRSU~62(@LR7v)&$Eye6c{p-3}Pn4y6C!_o{7TNVL&M|5)8`|LmW2 zLsJg!1HYUNCr{l@MYA2RhCKtos=FW~`z7#|0`X&34t@e6 z;-OrV)`Duhf~Ds53P4620S$x}-RvgCsHaMSDb_;!)%}UjtHSv@wV=DNw{A_FN^>dz z?3%55=m?<5PaK@>*ZWO(ItPlO=^tcP!6rZ3QDrMA#=fBu04Ei9^wDgtweo(u!n~id zO{+;V>>4R|+XTz@z?=+@AHt7TAFvM z&q|!4SKqD%0jYyD+=EQo_@G@|u)~?mKi?N?{~}7rsoyrZ+Zd>)9NZeEYO@3WX=`ml zP_4ly4*6Iq6rWNDJ1;Wmf@L;(eOPwLe@ZLm)3`fq7vOJlbc{AKBC*l3c)T30i`Nj0 zvd&*;9UIk0Fiq2cvUf-F5HRW6wRYhwYxB&U)6URQJ~obUEEt!Ma%g%$l;TZu)XZ5X|=hbzPV0c_u9Y4wBXn8yj=iLezE20oD_s)d88HUNr^TVdkWFf5evt_Ii1@&Pp( zKx-|ahdOo92GZ6psx7a_s!_>=XSV70qu-U_mS z4*)#rbcl>nuC^$4sRM|-Bk!w#RS}mO6$Jk&`ff1jXx6Uw#*484F6p)onl5$@tjC~Z z<&|7CMT^hbM*>;2BS0rWC;%<8hmSOsMXXMB3;a(>6d|tmSd<9_l`cDCEDF}b3>|`OX!YHUkCg#w;Ii@|J4Ax4w<(u z=Xzx?Oqr3+$kHCI1#18eR%`1lD?7JD`*MepfkI4c7996Gc6Q~(js8YSF5d%o|Ljmp5P*C;J zLekI&&OY1HHQn3ywGYS zI^!{q&H750IH0ma09JX;vdO!YPg0(;lPnvkuSO}2c7IJ{%DS#8tS$Fi-q?uRyn)FN z2bD$HF1eMUSAR^CWuA?boRps(Qu2aYJSb}^n3t*fl$Y)$$KpF=fgQfbBbVFM*c5W^ z_2-s(XD?+wIt}v8e$CgOzvww~)$M!i>GH%k9xb~fzu=UJ{4vL)4c`w4t}pxO!L7$X zRjX@%WTU2n{uioP%`k1xs@GUpi8mQk;Yw2$fL?r$WyLZ~^NuhkzxOjHXa|7MGbfDN z^&rfRS|PgrlIK)K>0>tpr1xpt;?l%&+=35Gqs+e64Fu_{dz|AOaqYn^S!R3e^vh1% zz@g`3WhwM3jlS2%Isi1%Ql9!jON*+M>RQWk9^gsL<@WY=j!)xUIt z9teHl`l_1qmXtYU;Ta=iH{O`K-NdMNJp{N#kKI+5Q-3v9=GwavwKDrPytD^AaZ3Er z%L+O2tv9UXIDMuWm?c|%#y@lrU4Mro=h)Udo%?U^_)z-OUW+pFL!C}W@`IXDNweX5sg8*!h2j+tYSl1`lfFd2kSa{*I&5HmZk+r`M_+1pb2<)Mn!>!g8QphsX`wif{% zsdsiw&J_SN`_hK;gpZxmb)-R?M^p*_5iQ7O`|*psqb!j>4@{TC=%4lJp4gXkC@By{ z1L26;;44y+Kdp<^w{@f@Z8-&!_4Kk%_K?qb^L!xMiujRVd2NtOj8>UkLVx5L^-GlF zNhtW1`celu=Eo2Z+zxNC6SaOx(5dabWZ7ZsWvI3|H`s}Xas<1jCJ^d59sIxXW;MfoAaGYf5`;iS~UJ1t$(Lr5wi>7)V-?7)_9>1b`TD3)k!Ap*DhJ+Di{s$?a<{#qx4EQ`pR za{A&W+CuA^Gr}eh1Ip1XU;@}DO6V8qzvmtK~gj7}-)m&%?`72-hWk!3%XF`DY?`pRqiP39EC3O`e0QZQY4DssJ9 zW!NVfx7Y8nFYadwMTY8j^fV#Cn?@TQOh%d>XxHrzN$hB26 zz$&+FoA+CWQH($>`vK|y&*YkIkI$<(rR-qgrlJE3gdd%SFq6Fk24%<=NTmOzDZMBAK5atshi z?isPT50pnTm-;H#Mw7~)trJ#16-`IZDg}lp@l+q}mQ#JbC5{?dR>gwNk+!?W06^E7 z8mIDUXm(HhDlpg^x(HF!q4h-rDzBuSiBCy?+{ir1l(n>6v}zDwJ*k)Yg72C>5%^K+ z87U7pLnKSwTbqhD=(Hu~X+>4*w78!eH}8PWa%&Dvza#utzlXT_9l zdE$fn)#@F#AbxrXSJ1!r5n>zuZwnn2 z_;lGJ4U(T~)!)9X^N!MUKzz|jobtg_Vql0!tc@IjF;&c?2XPJS1mkEj0u(%eMWW}a zu{+qg2(3_kJEQH2ucAqjoa*7oRbj}qlC)KPXHLNEckBPK=fieYOVbhaSbxQ<;q~5* zM$6((owz-;Hq?X%*v5O@XP@mM(GN)WGNMfzI*>v}HdlcfZLPDvNpi+o^O)wO5~!JRa(6;~wsIs<7&YKpp9} z)P}m=aFVo#dXZ(Cyqd(*dn@3<`#_?`KbDUFd;pYFp|yHprB~7W`gFnJN);oN_`DI#D*7p>j<&&F^ny>2ZP;X5$>mh!yzksiA zeeB0g%TmuA=@hAtLFMni;{yV#9Rcb|7a_|*O!tYoH76bssOZ%6Xetx|kEF%>Q^mCY zul?RLiolVLD3avRr{z++C%el*5r6ZCDC+F@YC-}P-A)OReK0dpY;B{3-ME02Ut`j; zbmHy@8MSNScM;FD-v$C9bn%Mk3Z^s2o(!UL>?@s1@(oH0zDIFJID9RIJK!&9$@|)a zzNe7ogbX%q1C@RhjAMl~VFo83pc8;Ee&)Kxcw<`ka9o=e1J2?2d}QZ|@~hu>dU@S- zi_7X|v&!r^hRaj4s2|aWy$6n!U2zQCd;Wf7dCzzDmxXbz?p6{9rA+ll+XjT}H!i0^ zJ2SH76W1K^GXG>ZlD~jX)0qk$$*&Y-0wL+KZx#t{x+8B+RApULnMR{3l~5{O^j>MK zBu4{yZ69PLPpjKX{Z-!;S#Z6iIw~LlOIv7b;sknY{p5wd*Yz_5plMNLgZqYi+e8h2 z&2}rRQXi6pY^M`OvUK#1Hqp2xfWH8Ekb9i1+Tf^1i?wP~c7i*6pLGM*F^nheUArDSYhNqkmaK;DnnvlP9J1smeZ_B$ zKQ7z&nBa>@RD*^@3q9cQlD;+T;0-|`POZuMNmWLwywIHkLHg;ju%eQdWEv_Y9}^f? zs(W#WtIfo^uBJIxb?(_PdW~HiEt^a+>jr;q6LF6sd#<5p^~rdMPPy0n;49TXZ>UJA zbgfH2B-_?Ex8Q`qJru$@?2Pom&f<-GFdA{@gnXAWc#(bufK92|nzr$D%DP0#8kDo` z4rOaQ(0$T%OTCw^x@mRp^#T}x4*+Qg1|H46sK`~PYH%jUJ3ef3&~*D_b&5VM#%!VEqj#R}jiPfp){Gu%jr8iXeyW zfss$dNvCgjpXvDOV9|lR?7Ylb!qI2*%SNj2?V9Lr^`|q4sTTpLtcUjqgwe6!bCy#H zC^Gt+X=%XIbjB5!RURb|(eHelPSHNXPs&T};-#HsmSci=%Ov%KG^T#)&*Un1ZUlkj zA^=r=aH5DpVSqj!vr1oj``Ys2=PY7Ly);ny<%k%*|KbN9DgWcvy=C#-No7mj(qsb} z&uDXCCU{ZZ`XlEmfWt1fYcRX)HwdZI5uGt~q}nH$bU8UbjoXqMa|CR2(5PgmMd!ds zedIOhYd5&#dV)@3-LzQfhx_9G*_f-I*WTs5`P~mfcGk9e@u~xW*5m}#RpX(v)C1X; z+3RWW%GJEac36kCO2bd>PZK-)#55v_dKQMdZ;hj@-mzv*`T6f(tCJ_X7j$h#oN{s7 z`t9X)|MXZ{8V?ei({TEMSA8?ha*hUg_`OCbvt3)bt-@+xkLg6e6%=;*#ND1LtByTw zpzQgQRP=mw_i$UEX1lK|w?|bO^t*vg3T-}hNnk-!Rhkk~E8z9%@p*nQKx=IqfAI+$ zHTDKSp9zB*IZk^p@Yn9Uh5;XOwLL7fJb5%pHaX;@Y-ltFLiweAu~;pu)~$~o_-sYG zEd^qgO`EdLqXs0suDF~vN@KJ#MKm!+*F7;+4-+@now6*~X&C125iOzVwgZxGPemn9Qrj^$$;s|*xGO9Ozm&0Zf{Z`F0u zlztS`kZl*S1UD=z&*dp`>T*7bSYMm``m)j~Y_u@HN9_&r>QAQ>AC=Tyd^6>$L4gw4 zN3E-)m$M)BAro|Jy&eE1{TApKVAIZt&>gq75%?fT{}Gx|;wJ%oi60;!q3#u)8sd z(37?M;zyEnTJpXFnpKBPUYj*+xs4wJm--F>&oiPxI{w+QWLZtuWxKeCWmRu4A@fWo zl1{hQC3@_VJm4z=C>>Z4IGe0#b4!*`amVi~~`Oi|K! zqMkRpT(bQJ9^36nr?19*lHVAgi@yuRvYS{xn+pvf^b=XXQoe!x)~X zoO(r6f7$@)cCAaSzZ=Y;2XmvI-ML0kE_tZCBr49moge4s?hINmpjQ6a*3fPpfK-L$ z*JP`D;Sbt1wby7i4?GC@(N_|)40ONl9V_SlzSfp_JCtLqPuDcH+lD@KvPJ;oCM0MU zK(ln4UZ_6nLgOUvgibpROg9ijebzIzjpZ`K7j9?(5clIH8A#9Z;_AUVz_gS|3Xn7& zx3cEo@VdEbz}a}F`_V+r-D(Mp%03HuTvK#T{UR?&d+WE`z{OqzP=*me-YZyD`%QqO z-g~{B`Brs~eiuQLQR`^{d_W6)G}vABR~mr+dZQ0}LYXC9PF0q)7yz1&+z{2-r24P% z-R`CKpLe2{N&(aQ)9&{=zM(E#ZDg2vc0LNPP;@hT_k{wfAp^RMIEh# zKbjGB{RRL+_Kjcx9Ztczv`&+d0r4F-2#D!MgArcqB3{0pH><3HVAGzYy>}B*+~K;N zGyqj0!Kdv}(L0@K)6p^{z4L{7?F-Uz6e(jO6BGBU|4D172 z29HxmJ10YhwFc*PYci>%%+kthoB7;EqDE3ySf;wPu%#ZC_oeIpxwAOKj_+i_;~r5mGjE0FIZZR9M?9j zdS8^C7Ha^%wPAbte;)mgEldCaAOJ~3K~&sQ7EYT~w$pAUxJ)geZ0T&u}P%|*}2%O%HFmk%@RN!ec47we@{0_ zKQ?M38aJ~KxSTbcDuV6`w4qD_jrz}eAzJJa)Sj+$Z1u$){0BD26@U?#-{k5rDYlX$Mlb#H#0$PvboLHQP|Yh#)^oPcb|PccuVh+Y;m*s(18x>A(s z1o-TgpV@rYLjflcQa?~Pc#sljnFgw=B300w{Ia4XpB3^|X_e@&+XkT?Ul~?6q&YmGt{4I2&b~iIYOtFnipq9l=_Eh#>_jU1o$RAK!hv ztoxly%i0yEjRk-eNkIh~@BiuRTgt2d=*hBX#gy_G!ic_@9TNSXXUs0LVfN=>3#<>`%(c=1M%{u zajiSx()1c^iW0rhU)~>$;l8S+l|J=)835qkW97H5IHUZRAHKMInpZt&7pGi&d)?M@ z^~djt2;h|R1U56!7PB$(!p1us03|$Wwe&#p6ZTbK)lfB;^!1JEzF+-k`v#tzl7mfR zYV|kkR+GtrY^UzTtiwp7!Tt(@(gT2XKI_x~-f&e@1!C8*Ql5l{HybKS;Kzpq4>+1SJtqr&4LoIy$=bj_|EPF>A$XO`&qN5GhDp*OeRq6HLZBtcmRGCkApbyqBzCebuiV<~aOH6Q4GH^+g zZy=hEL%y4D@kwfHp7kKd^(mP!-t}au?Eh%plzP=SciMV0Dg)?EFF#O(b=_Sr2J*As zIqKBPR(&HM%?3J{VCp&OUuuAB99)DTK~6l^RKFM(YdL@v}W3Wv+UAjp?x#%d%coRL#r! zMV;}rv^938dzj$mj$!^j(0j{8w@!G^&%c*2tMj88YWl&01d+XUTGY{}9-(qkChJ$Y zQwEUA&%gPFLGE1hmc}3lnoJ_WO^K7_WM`u099W0UQX8Iz<+ZFvXx=JD zT7vURYew~~R8@hz15F@yn6f98EP17C4e;wE5KTo)iYfoc51uGLwq|;{=@%}GorQf^ zUNn!3&0<=Gs70zG+=>U&u&hqkNvJ^)sQc_+;M4baM_AQl-4w9OFmv3$gVPQ{IwmR1CCXvkUv*z>sYQ8qDR_|=I?Gy|O?0L(y3 zm2EQ!UZIZaFUzZYJ*VneDiyFVQs0}7m@e0+I%Hot&d^Wm0TLUV@=>U^=~+b8WW!47 zbm}DHY+sEZb^pJ8Gy9c(q~jCiM|Y~;k`MlkGLnGl(>s5khSAx4@{Ic$vP_aQ;x?og zyyiAto4VRI^R%8zf3iqwR&{7y@$o-KpWgc)0|44-lA;{!t7C0N>l!}hj#Im4sOg|_ z@Joz}9pcwqby5n&uALNUVYjWgR0bQcKnMsbb*>?p(dGCz#9C` zJeCQ`svZj@qm~w6O0ccP!IpA^w`|w6X0sLCC4bRo-O8TEZd&VlLXDiHZ7^LA{wJGQ z2k&Y9(DZHs=9G({O0vh6!6R#Xdc{gy!_W!oKgPsPnL27dIeCLM`q0@I;!vJ0HbP zQBi4%uUw-o>1myR%3l3N<+j>(Du#4l55IiqkqOkm1?fw5AIN}XP_N6aPTZ#?Ip|}g z8Y39hOFP@suf})Sg!Rbh?RJ{OGFsDTD@>h29Z45c_*6SZR}BEGR#j{x|BX&6s53MP z(aZP4D7TG=MElU?*d?jspEDDUygGRW}{IzwhBNvTKXm0OmTb@KB=StTudkw|{R z`xpUCd3Q*v-#Mmsr5FM%VwM&?CK!V%C1VG3=?Priegm88kbqnxsuG`_Z6;)GZ>H4) zz)HHotoxKaZl{kVC1{)NCLPl5rqJ0(iZ}10BBVq1piMw#@}Z>3542Kw#3mit%Rb|3 zf<>JltOAXn4I~TL$qDtUE#uP@vg$DSOqs+D{nWDRNLtcqtGwkP9yl7wRtW&*TzUFO zzNg2?K4u)e~{qwjPSxUk!LV|*cDcP2>sx-*wq-L!i>0nEbiM8k*s}oIAUjwHfrEJSyn_L zY%48~a&W$>9{yCl$cmt6T9g}{8W7E3 zAOYQ*qCQVSE(x!Rdw0cedoTz`ZD&LqGvd87?%f%*OmL)4=ElKgQCy!MpZ7$6cVMkn z{DwvT^Wx&cDEBnya3CWvA+0qB>g=){SQLb=%#6S2>y)TB0=Q*olt+?qywJ}4s5itD zC$>ZmzNintth?Za>Hnw1ZyD2z`ZIA-9=v?WtG;_&rSlf5K}34N|Nv z`a3TOniutguHDfdc&j@l!`XVu?ADq>ff-JsQqBn`&7=CEeZfN zGw$CSQ>WMgKRfyzX)Vd)c>pa{qwTk(-za}1f0`Zlf+x6lTL7@wL{D8IpP~-z(%q(t zx>w3KY2-Jw8-H=@(x_lb0Khx;94;TbZcX{=7hiNr0QheK0AKz;?iZ1cId}5Q9r;1WCr^JQOGw5 z8BC4$!ssgi=+?OJ03Jxqg|s1*TMS;nZiDeiY7Yv)pV`qq^l&=@?X*KZMAFwLGn7{n z?Sh60v140)1gl|S=LcZtGV8FXiDgdIi_I+PJNSZ>Tb4_G$gA8nFK~}JWQ}ez5Z^Qf zY#DgG)p!p#2mdTs%=S3GiPQaSurqaVMPIyxrdb#2&4&qAl>jh9LuhSM^jn*0Bx})> z5%-Sf>e(g6N}cDIp8h$FNSH+KU798SjlNtrfT*z2@YU8xHa;2vy0%)% zgk(FtJd^2^qg;ElCao#Vhx%%7NpIJP&8SkyYtp?5A9&ZFC^AVpbJ|vFp@mrN`7KBB&G{3>M+3Q< zd(b%yQ#qxfSuc2KnYf))7Ti{+8@JQAKEs^v8QYyluSUrRPp8YXS{!2|Ac3j{S$u%IE+x4(viw>iDgn z19M$Mlx2B%`c1eeqM2n*z?NC@2Jt{gfrzGr7s8G~r`aG&qCMuZ+YLSd<@Ir=WMqsI zv*tu2LC^e%9BkYjv;b|QPXV6UAGC2W+C6PjSrvW3R9vbL!3)~hv?s2|Zs~Gbd;w4J z0=)sCP|xycV_*EVn;<=ivkd7WS)Ss746&)_1ZaaY&5Hi}EH32xi_Hn(??thA^uFCkzbgQ|E!F^D z6#($8*aY$fBJy2Z^MY(_cvycp+5*jZ&A>4SpUN4eN+A(_T!f(j68qfK7L{Q%xeM_}@JL-rXx@Sdu04p#DrE77-A^m0i;@#B%o;xD7PVA@&RC2id$*ayS z?|k{Crv!liaQkEBHJ|);JPpi{4nt0HI!LOwf*;X`Iq_jZ(7PVHia{It70INfi^)M= zvkaz`)xl?gf9Ry9an=9+Vb8z~4bn;xssFN0K?sj$=1sqjnKn$_^f=$fPL`(dRntU{ zKdP56f_@9e?WR7W%2Xh0sHe>Zqxm$(s_F?JS(O4A!GpAM;}MSIEaNt`_BMy6IfjO&C4Jd@Rzxx8ef_Llb>41}H0Rinn_^Q?m7QW~@?1jf zS)DVZUJ79mw7`jEV(Ki9tfKO*b_&#_jt~I8C+C&)qg(Eej2cYW(uyTyZeGYC$8^&j zP%?V=2%6|R-{_;2MH7@9C_e!UeZL?S^X9HIGq>}mu^xatC`-Q3vh?2GG zH>wuaerR}AIQWDYq~{Y+ThEtK!lah>CLdH@Ppf|Fl5)36xPID~Wh;q(|!u?{MYBW{}h5iO*d;rToUL7nMuao>r#C zz=nG_Z97z6_t6dI(Qv*&CZD?Hxnf)hV)g})`s*KB5<8ivh2L+35V$)n9Qngf9V|cf z`DYYP3!eSj3+9$rJ!gJdzHmm2Z5lB41^?~~-hAkmZRPXp50(|DYfa?RXm2w>UNriv zSI;Z2xO86hV`iCwFadrJfcE4w2Vxp;NBQk4NXR3B(b==$q|(Rg`@K04((3H7jSAA3ASAxp2kY$SFA^cDO3_FJ1?Z94%XR9V~Z0 zxvPBY!ENQ{r}hVZlgpVQlP9CEkOCs2`+_&upEj-h`b*ZtsWnLP)btp(ja{>MZ`e`Z z`i%`7h<|47{PM=DSCv%@Ph*rDJC?t6-==csrd{Q=m#ruV1He_E47H3l4o4fm_T@*) z9RVB;1i-i;&hq``E0&ilR-I86oHm2?kWUAXlt-T4RsQClP35EOc9hA%Peg!r0Hftl z+*=uZ$db6eIr#hGYgU&_SDwx~&RlR>IcMqoQ`_Z^z2%|JJEOmo7>(a?;Ba}vmmVtH z1IQwZb`%d~(XS@~?gFU3eEHn+Bj+tHmn=U$_&lpj50KaRe5`ESy}#V^)Q<934{s^| z@>J+e0IHS2w+%VHEQM*%0c9yi0Ka%Jc>S64%D+E*ak(I920vy_(-|IkVVC%hIL>av zwms$64cp3Z$AbZY))}+o*t_UIB6YC&z0uYSXHP4?b=`SkgYYdiKE%({LpQ$k&{O3< z-}{v8B*6FkuQ;<@8|NvXF(+h@=|y(zJ6LXed~138?HkIzkk_i{%M(%esz8`e0Qdzs zfA1yB%L~>lCNCg=Si}CqN6RCdca^^k+1<2$XPFbS!z>J<;JhPkW?{6A8G^mxgC@+G zUVeS;g7W-T3(E31)^Fad>0vYNAqHzW(f22}?<==H5%&J*Hp*jh^c|_V0JH&4`(QD; zCKYz{ve~MB#S5TRBT`d$-QR%Z*m2l?G`(`(uc`VrHLEsUufSSDQ3reQy&@@<_dh*+ zVi8QLdiOsv2qI})$3TFP60@q@;GO7??4 z9{|v;@eZNerWERgl*^H|EIj=gbz^c8e zn`4kHR*`dKc8ge==Eev%&5BzaiVmvJgYc{S!Zuo6jDY&L3IJ7yr*kFaoW{jHNhkBL zp>OPOv>1+8JWvURsP!~Ja9XeFch{>mA(oZ-E&$idO3_-s#Ulal><>Y_+F{eF+^i$z z1Q2H+IU@$nZ*DqT9{Bys%K5A3rQ}hrnN9uC##u+gdZqlzN7j|!{mSlg_JYY}9nK4m zHW)U`f98Sn-Y4L==G$|wKp1!cve zh;WSaIv9h_%y-{gZa8;F`R{L9UFL_g?q7!jV7%maA1Jp5K%5=@-j{<3#_2O+?q^HP z`)vBn3(B$u)5op<@uv@z)xY{cIeY2k@|mApRjxd@@oTgI+Pdj~KUr@4r!D3D)2EaN zBZ7AA!fECGKf0=1vU={bvg5ADc9s9|myeeF0(>owXdaVl(@{!!1bua+sUw&KK_0+0*yXzCNO{@PSp;m) zJ$qpc?0q`p@mt2=e9MDRmv?>XvGQQ7ky{8L0^4B-K;FNSf@Z|P# z;qTvEKK6s>mp5F0{+OWh9qYFSpxRY_>;>nXvW}nl#4Y91k8Cf0c->j$O)omH%$*t0 zqf@-F9_owtK3QJ=`TKasf&c~E<2R%pRVYzta8P95$9)J2>`6#gW z(9yE?LtiXg1Mp3aIB;P;#Bo+`icl?Th$ckC~# z1CXtEWIGBQUYv!sim@K#2Lf3B@^u%K%gCK*kRHna%sex@ zd+s?WgzrCabI*O>eRpSOXJ?*wc6atmLjjaq)MaVO%C+*lr{0n)k&b9EUJ%A%YW5ZqDi6JbDpKjAw2t^x>`3V}yb_T`f?cJYc zFHibY96M-1UvYdnz=}r9bq8^AztN0{`)Kk*hZ$QUHb8~#YXl%;a0vlIlQ zlkA%S#E!F!Q9c(-`BD@((d7{Ah96x`)i6Ndg2(p&2m~XJ1zeyJ$s%EXKR|^67j|z% z0*#-dqk}l_4}u?8Ci)ZyDo$8*L_(@|3=5fz1j<%F$+7wZKqX}?$C>ZY1Xtm#@9 zeMw1z%Zh5xdZlq&jm}SR?R?yx67qdW!f+L zNpF;~vsble8}X#qGywd;MKb`pPnTc+pLb-+qE&L$H+SDG05}UEq9^ok zCi?sLdv%iU9@I~oBN9`=PaR&gOz4Y7Q!f7Jc)5DgGU>TPQ_F$35)suS5n;XOlo19d z)6U4EKVO}^K<*elSN`(NJ*`d4UFc(1c^WyjL8dgUkdqL7%KAVVscx)??DoFl1^Lc^ z_HyQdOwW??AJ&u;?Z5;8&q4Q$vROu5FSg#CiuaNK);^dCP&@jh5i+cI2ez-{Qte)? zap}Dm322r6#Vgmyz*}FGr2tWV(Z}zgzF!ROB(Aj0clvOzot^ae~gkCnf?O$DI$5@ryM)jz$ z`IgenILY_I=jPQk)I+mra1ahZSa7wK(Pab-m0&PB zA^>4R?luTqP;oR|GFmihL01MhVW?aYU9$p2Wu~;^jB8n!yCUruYqnTZ=YmUm;A&b< zQxoK7qw02Hiy?vl03ZNKL_t)>2Xh9vHVC5)lU4vc4tjkqP4^l!*YZJMvDqS(WBC+) z^S+5y9kD?pfE+a~gJa5_{T84y?aFo;lU@aIMf(YmQEpLB0*n5P6*HbG11_II1h8R) zymiT78Pd0PT3=MDJyi92A65Db004jY{0iBrZ4()Fejk7|0;Hsho30|=)n~SXQU3tH zFTP`j{QBAD(z7k10WgM3R(&MXeg*K=nRSOx(N@%uF2L0ETQgS4A$zvP@-3Y83f@95 zmBy8rUOecs$pC;GWd{X-uGhL#SdZCSf^~E=e%?=dB4SxlKg!wWmv>gk%tdSEnEmLG z1LQSkO=YL7>oXc1+y0Wb?5FS@RhH?bm;RqO7Qzg38^UHSAxx$w}z;04png-+J%i_mZ8?8AvD z0Ps4cs`3pxr7{ix_{Pb5%I=t!RB#d?>66B0jEAM~ua&+x|5tVZLvvPbkjsa6lk*PQ z?f*;8TK8`sA1xP+ohv;60(G}>cj)SDfWO}l?=I(mY4^JICp%12TJfRW*_RE727d1D zmt`{KtIBscB9;%F_*pEg#4(nI1B`xp2mo;B_B&##yxpe9m)bnMbf|rq3ZU8df!Af_ z8K1+lm8P3DjzZV&dU=YR`0P~agT9-FvC~zV@&ErYbe{ftrY+w(80?NwNQ-f!xa=2>uFP!?sXhQ5KlNr zOa9h5@_V7M9G4OM;<841r~qc_Z+!H+9btf|=zdpzZ{GR!0)-$eH=`0n#dviwSfvHl zVj~vxaK8N+Yb%UO0)HO3agp=c;7^}0;S+=vG^aj@zVhE`H@LOwlF~=3jG6j#MgSv) zjkRTp5~H0mW3qGhd!F6YYZ{_MzyI}I2Y`iqDQ`cT%%zsWMohrc__6Clu#Hi4C|g-J zD<6q1|IYQXax#^iva3q$yI~Z~`;7g@`Y3m&%|VhQK&ozBqw0CTB?*MCIZi4fpaetu z$*BP1Zw@ruTw!f-tspmB1W=0GvE20|C1Hd&pVaFomeKafEzZ1kgZR zC@5**T2AjPYloU;G)4W1UMh)28jS=3NCkkeDFFNp03afOp9m;IACq*I)h*=08{d&j zAAVQHUW2KhzB?KKiwKPs_2c z{dr5U#u1w+cEnU;oONs3R~V@z7Vj&4Zp^e5GPuVM(gXlbgA6hL^|>12EUMT-&be)p zTs?k;^uorF833rqb=g*KKVu-K?zS=-bb37WTkFz3B~7l!4oXrx{w09O+q0I-&>JU8 z2W+j?D8W)p-yhv!Te;`--E7^X8oQWMDY`s?mAIxfXrH~edIKEl*5+huIcrM%?+BAPXliN4m#y|)GZ_BnH6xGc<`t; zhyd0AfT1r9@2vp<+@=B`+8B2rLIAiD0I>Q*9Bo(ITZZUkk2X6LC!dh|nmSPm5Cwj8 z-)r*6Y0IQNHij%gn`s>s$|V4J5&&TD_IX@xN@2YI7-LHS0Qb7}1uPd>FW>LoMy~$q z-TPWqBOFfB~pVy`?kiGwg4K0|W`0`HM%l#+rR|Np0AEz%~A>FY)QuQzNgS&NW ze=L>N#t&oyB5uPlO`X<%J8-GjcOj$YtJle}TVBHcnU7@Q`y1q$qle1p2X-a+ECytZ z$67CFwO$s2_kX`VTfX$jc#QdGGE-l!Vt}V{K@gJGtrhn*0;roj405P_F?HlrvZeR2 z{!m}ydTREOo+JehR2TIx^Lru1&=h|bkB5XgRZYJWX`13_IQBq{X!o~Pe_3xXWe}m@ zC!P*pm-!)BirG4=!TAh}7#tcVNcXIuwVtDC1e`R|Avm zn_2*ndHzgz{s|fTg#edEp9AYqNOj@zBMN4qB6%5pCmPR5k`utQvQb||;et7Kk|R4ZVDiY}X?I_~?u|;!HwLHM zQ@0q7HAS`pMvL)lLJDQ(1z)S21`O+T<+1MaDxxiRVF9GbYg#L)onta05F|*<^)cGY zN;5zu?*=CQddl;sf9o578_NKVDJP(pcd@cv1#{kx(I0IUWn(QMyN-RJ>$eF2$%F3P zeFam%<9|Cu2KM2UE#=r~6s9{FTojk&j6Y12fnA!(55Lx{I$GlL4N$UCQ&eF3Y+KzO zr?OPX@5VbwO>gRRS4rRhor2tETWt~m8izhm0$5f6P~6WEzz<{xfH6(=pmIM(I73-}`H!0y#YT^6JXjtQQS_ZJ(CY172Agd1TsW%qM!MDzk!R?y@Fnu7C ze>gz;b!p+wI6yz!j;N#7qq!QDe{N1;eZ!ZP zUi}b7EuvyUo0=q}InNsj{|uL8ELGj2-@5IB1JV%g)4v9^2os8#^7H2`2`f6@`yXl~^BU!S%}CL;oP zk^#URflIPTAX{H{sv|2_Z)2sfej<>1Y4Uv8@18e`#LZccbTh>aOxcb-WiQ#aXS*b0 z_9Nw#`-FPenEvJ11Tyrm&tr%4MwxTk{CkLTo}7iqW;ARqJG3R%1APj6`iFn0O!Zczq~P?smEvgE5i=De)=J>}8bj6g?i z+h!#+@|66X=Q2%wO1dkDK*X)+BZG&~=AbKlmX@-E4;`>rT>-A#=a$%mZG}gtk4``- z@#vawKF(Wou$6sfIldy#q2q$`xx_)pDsvLBka)?Q2Em&9odgieS8O9Ea&X9e;=#ituU@{_XDZ)f#Lh(^g5|AP2@Ve}}3)Yc;EV7KY zS=6Ij)`0;kGHn3_ZMxQYi8eAQOOd(MkpVEhPBue&e0NO-fk7`jI(Q;Eeht42*iq61 zmCm;f1{k|M?d$9D9C)fcxkk{RaXM^}X&V;p36M&@Qy*Bn?!fhX5t@%Tu^d%Y*|8pi zL(*OXO`iKpMsoi#%2y^PPN`@>P5}R9n8r9_Ky&Ge-L*>)l{s)&TRCvgj>$2)3MJz= zcFJv?M(Ym4*j{npOgaBw?^+6%Y5!9_1swFbDkO)an?e-y>8Cj&3A)Mju*;{& ztJt7on?O8VrZ4TA0)SS5_9p}z&SLVM_pwfIopfr|O!{}!fT)0|hEn1CD z8(YgDYzEQYsI{VO!TYrN@5|2DOtP@(W&5_4pB&YvCcqBxr)vjqd48^pp1;b{lN>p? zl^nNER|A6e9L_RCh=yJ_R_0^v(Gl1Ie&6Z4R!y5Wmchbz*U0k|7sH`%kha*pc)-AR z(g8b!>rI1J0KhxmwlRCpmwL+aSTxTFUZs6eIj@Ezyz|BBa>Mw=@+NkO_Qngtsdz~_ zb^qQ4XmlIJE;5}y8|&+?o4ibp?Y5)b>1zP%fq|e)`O`IS>U?ceP>bzk^z=nO1zh_~ zY->+-0uSiAvYBx5OW$87Z4tTY)nO-_Qm)yzcux6Sf;D>WZhX-cOLHwU7aT3q_Ne@Q z46f6$p`s6f>|#V#5AN4N4jS5{?zkK?bCKLLdWN*p6f~%0J#^;R;}*z``}UU8Kc@+# zD?zNbqjc!h{e7=Zk?T=*|i||Q{SCi@i@rFYl3w=U-ZaGxdiJ0N3`Bf zp2j8(ol5n$Bl~Su3gy;dv(7coye$__T*%ZY;O!?nx08zw*Klg?< zicDw2uZKoD=yFq-#1av?0F^q6Kt2iWj6!vNULUVyP}W$!nG^cth=Lh@iu%0nJOv!} zMTsnz3^$1{Tq!MjNWJs4A~h7mYIE8n8cKj%@DMMJaY^e@Q0$n8n8Kea0H86$f4q?_ z8Ez;ghEQ4RPWJFWX{;Ds`s4Q$87LUM<=iXOB&Es&%&?u@Uj;qf`DNe~&p zie@Sp$cCE~`)(F5!RVdWR|+l~iMCuIY=g{e8{7fw*9`oyvpJUNm1CDI!4GkFo-Pdr zIL({nQ2^v#YR5*6B^QUb& zfFoND^pt-sW6H&A2G+IX)w%dJtuUg7;X)EH)p8~;2jlik$X02^6Ci2K>JKeCD6>A0 zzntAozH`jZb@Ko|`AUNvdJZ-a3{ZoQXJ&4YYtHH@XMeRicVI|g>Am`aS#r)z*nQdq zVMq0{njf%jQ(5rKzS0ppZ_6n_>vPp)l$(sr7XyAZ)zYs_`$gZXHGsK?DHokedGw`4 z^5_39#alFY=k0;1+d*xb$aC}8%d8Eo*Ow?-POsK@ja`f^%(bR~OCA)&Uio(%d-v2b z>l3ZyibLASkB;h*rl3lC%4hF=e!iUWxB1j+Jooj1&E?vY`yoX}(`u)#BMJ2{TE0$p z{^JCBAM5hQ|7d^=?7m}l9yl+%7*n4^uN^N9%aBTk*^-eBcRfya=^#HlvVWD6DrJ1* zf2PZsf13$M+gnaNpl3}W7yU7Q_Hr3~8+Nj4&O6P~r)foyie>yMgJod1mYaMwB7jKT zCJW9Oj1)4a4qWm;eBt)UneY+COb7XfUapaR$#aA2!PZlzrBaF!fw0A z$bAdnmsS9`noyiBj5bZvM82=|Xq|`#UH8SE<$IgR1NivZ8FKhNqwzL_9jLaBf>ND% z+GnLl+iJa0IV*7e`6Hv`@;9NE;91kpSPD%5&K3Z&Q%>GjIsg=vKsF+nx-)pMTVIlM zckLp-`pO=r|C;V3Z)~77{>!uDc@7Z0>ft+=^yc(R+c8s05Sa$!*OLF6({pIuncB#w5<6~#Z;dhUfeetrV$*{GF zF`9M;QP$;W?k77T5*SmF+RdsHx^w!G(KF?^f4w6;Fiz&^bM8ZxcAMahzXS6)Q+D!^ zO#!RF*FqVH7Xjl zNpQ?ZR6EZgk}2{YHRS2mbZn&2L?A?9U=GuMQo9cRNHb}&7xnjjAk6)_TxW*J}1lz z=d9iSuz?K<-0>6vgb68=6AMNo#YuE9w?Bsx<+?)X2_U)>QP^=D68nZUx{`*91h@+@ z#6BeWao}T4+iA=l>CvocuK-3a_SE6Tpbmmaf=33u4HrQGOg-ul_>vv#katQ$F^0Q+2CjcA&jQR-da+{n!3OU>67+1akiFz;AMFc<$r6q9myoU}} zEkcMobko6haOTf8d?2?U-&syNyxQpn0C;BPBKg74Sd35qxnf|-} zwoA8ml##Og-MusA!UvICtMgVonoi}Zj9N0}t+?YatGS;Nf?dE!;#>~^1|R<(wOGD% z{<7cds7k<`9_8Zcsh9htgI~O4KHxs2tyC!ffA6stfx8|;wD-Z7= z=Nti9Hv&Pb2g>_0tTAeH`P*{vj$6yaKNxIl|7u0EwCoj+OqKJWUo1n~HMJzany#=j z{u#Guos9XxAlVJM$*PYLBYkhrd{>5EHdaQRw=2@HRF?~S-ba-1fWN#UV*tc0 z6PK)!U+vjdesRQZb^43A?(F-p8+E#`1GG0;O2ejG@mrHBcf!~lhw0#35N-O_=jxvX z@)S-2IT$B_4BoMs>E=`b*i$?0DA%9x8QY{%xh9iQwtpgd^q22@LppY7j#GU+@ip3Q z3DCU!-L-P@p4cV(<>55|G;|Z7tIy5Ppt~#jd_SPt^xn^&Nu*3OaRYD<4a|s{6G4}bU6~|Cl3Yxy3tHe@fqK+TAurcPHA_k zj+(k2PejCU;I%Kx^~(we54l~(t!slEg+127Vbg`Dj460bZ0L!_oy_TlnN5kvRyw)RqMQVif_ zqTO-|pTk}Y@~>zXQN(ACz@C z`$3D#*xI&hjoLDK#dTe9tMyr-)JFMi(8t`4d=ueu>k5GQx8^yF4I{ef|D}Z+<+g8j zk(0kt9nA|6^z_IEIq1?EGN?Pi9A0MMh5Q!(W}vjy>E9|tOUHlB12g4Ek1Uh!Nb52O zhE2&6uyndYHFMPYU2MX*5Je1U{O0M31f76acj1sN<)%PLtn{Ss@(}VQav6?5ZhK zmT#0l9MoFQJ-R+U?RWKCvK%~XdJ#RXKxL^XdCUb^yL{gca^6?^)_q>5 zf!ka;T4sJ{sPt$Lhw0IZFbC21|DCW%4#38g0f^jA(zYN(jQ|V){gVKgoX93p&fE;560RR4$odv9*VHR@S-LPM8Iim(>41K=lKX1!pGnOFVWD~p}Wvi<= zML|gytns`2s6DEpZ?W#~`}e*q*CUxRvQPU|1?`cYprHw&^`$FLa{(W1@p7=w4$b5X z-CD~x_Uda%lIum;UI75y=Mw;+(y?Ogdf5+~UB;n3eIZlu+gB5}zqd}FJ$g6!+`w*i z*Kq#qq1WXyHT7WslDMeLYKo|yH|~F@NSj?ILQOy@+YGxNi)#r=-E8~e%L(f_U~vLn6{3Bw zUzNgWSBdF8--TNUG(y8nuj1%E0i@iSp=-2nnMVRZmw~gaMPhB7mevR$SyYD_;M8fv z^J%KpXo#{(t8b7o9%34n1=19<^FkU(m%TCgTY&YEwe8cr-svhwM(!x1&;qU-CNuf{v`$Fs(-P%qd(9CLBpI0#X*Mky{- z;}rnH8MXe!Sh@Qvo#ccAy4D3&<7d4mgRh+^-LPADZj2l7rN@cAheW<#L+YH{PakSK zd#k5I8Ob{1&T(?(vHh|Btv-;y?#XxLEc8X!op3A`0D`_i>B#F0Im`iA{nLJ(H$atfLDx`SAMvg?A>3}o2ZjaU18r^9V4$G z3itf?K2w+H6@9Uh4Khd84VKfz}NnniKG*{d>u& zpRXSQ{5RI6eaQi!)-eqL=-)>VkuT~rsLMIk?c&lY;KGDgNPBbSd^sX-KY3%W^ubi6 zex~X4CiLP^yhQBRX(#D}9n$Rp_;jjs$L*TR_Bdv(Io1kBqHj*8xs&wPBRcm<08r_+ z^iRuINoV9c)FbZJ;+n4d?TP-J0sjAW#1J`n*Pd0`4FbTP4FG-}PWWh#-EewNc6+T4 z>xM7drJY=SRCVMtfd6;^z`?hVl%4?FqrSBd)8#B6nBPziePJWn@)u(BA~{Oz4W zTHV0-OPfy%7COd`F$T1u3`7C|s_+9i1VFTM+9}>JjWZukWlYGGW+iXom$d#9b?bh4eRErqpYfW+PA;{`y@H{ zkUrR;Qa=)V!M)?;cjK2M0@@@WQ>Ts-AY~!e1pW-kzc2mTkh*d(0C?3K^458K$dDe@ zz{piUjfGN|s=rsRui;qZ3&WL241EjoD31BTK2;lFR0Rw;;8csw*S`jx#9BBX6Xu+t zAnJrS2LL|!>Qp)I$tkvzca}MA=r!co88plWAf5;SIG}6wlsaX;g`9hT27pT{B7iY_ z!jv$ZjsS8xGXP*8(4ss}2WWitgyFJR-)g-HSvKA|TuVu;xy@w^_a79 z%E(27I>|A+cDEzzG%0hvkL3sr|JTT1|DOQhEic;9aqCd0PD$$NGSd|RA34+jaO3n= zwE&=|;_2W3@WKJ@Uyj1+%NFED-2a}H6Jba%=>t& z&zNSz_e;ZZZ?lzoGTF-WC?fy(G|UN04gd2S6)~HEql>dC8P_J)5^${r?I4bSkF}Lq zW*W0gy5wsQQk0a=$JkE|U*x)KOXmvL?EGm!Rr0+^Gh!I^0T=nHfIzyusDfcP6I++< z_Yprnxit*X7iWVPi~Vqh8o!}T7{*b7@rKE^zjbBn4ry=vxt20C*;)_gc@tS`Ma{Y5 zzu>X-he|*G`^}mZG_+cz3;mcOw6e8X`Fz3z^h^tL5n+Z2xciS_M<_a%v1r7v%Ja)r z&}k6Iq-!;TTKqJ23Oa9pe6#sB!GFGXu0 zaPs=2E%*bam5ViZ<3J-tBC}Qg?^5NGXeI4U+WiGkuAj!!s>7LzB)|;|^tB4zXb1W3 z)TPzI1KTAMMEif?8xprNyM7)?WZtqI;w981BLhkvCj?Q6UT8p1+6~umpM^&fl~bgq zAo%9ba^dv~G7f-RHacgK8RWn5dbJ@81t{o7KrS9Ip#)pRi8gxmNJ}md3mpmpCU?jL z5lsgr7JlaD`$K~Rpn%LkgzYBpNW5sdp!^wx?SYr(#E33^VJK-pQyhR4ddMktLjf$E zN{B(P`}kgW4UohX@UzW_93PuF-}hvz*>ZW6G^2L7(iy(;0-CIfAX-9nH=8X?{wj)p zv*R#8$Kyr9ekSu>GOl#AE`v4-an0<${B-;N@>v97CTYhD+; zveBnSJetww93S`$a83Q)G)0}kzsaL3;t%8+IML`D*bTEn>i0IVKnJo7;Ip6)4M~4P z$b}L)OrchI=KwC@hX)=l_I@`Ykf+Wj2y#F@egzx_fbDI5{S=Vq11}=85VIk#*d?hK zEDD0UZ(VkR!+U-cgUGM!wYRZ=$P}Am<`nz28)7GZBAURic^55>Vpmpq0>7Xq zG#B+8}!L=Bi_h;$(5)7&&z3t$BPTxZg2zsqYTArJMB zn!Tp|wF}*T0L1#DqZhhQNMSW3Pf7OlZt-`#drmrufe@etVRDg)zN%HuFRcqQNj)&A z&yG8ei+gd*Oq-c(gq7$!ZS1KSVm7WN!BIks6n@=zet04TjSCW+$o}{iKY=;{H+ATm z_w6H#(l7PmBz~ouI`!<6mCp@?Q+OxRv|y1H^{>5p0AJo?2j~;Ot;#BTc94`L!iwfM zzDn)2uT)Hwwq+w9)iVxSyI!eoj>)HS7@oNwjbK>N(vPhSyGCyIFc^#NY`EN0ej;bt z@LrRLAsF3$l~a_eK6I0W`i1X33TE&rX&jY{>NwGeruFvhe6}^D&#zjo8>Y#QJUV&o zMCn<+$zX+j{Xhvec-;5^;lt}h<`>S$4Qs`uS9E#{)Y1DS}}b%Ma$ zYAzAw(NFT;aWA6%pDsSb6g(bHq<}97a14M3^Fo!7Goksyg9$;I4R9DDax-FB9JAdxlLSIEB~F9Fyg;oo@xzgKO6M+o@CLpMMPw$v{MpGW{!s=i40 zz-4QK_Xy|Xl$Xy!Mv6^%x|q5Ve|+`$9)wh2rQk+I#$@{=8DO=zv$i`Uu2;E zob=V=LWdj561ao|M1sL?dL>XI3z#Gqkw8@+wqv(^704F>qsK%Lszl|*Xr=Zag32Ev zZWLffK@Q~6gMImDb__T5aZVC&L&;U=#Iga-Xj`)vRL&N2PUjUFR>Q9!y7;sdL}veR zch%>dM!REour`}jar>(84r{aqwKov`qX9hG0diYe2#7@IsAr>{21Vog4xbA3&Rzsw z8^C6X92Ju@Ap-hWhrHtyBLFDiUMw9K){5xz+68YGi-fhJcpoNG(F9#ralK)8eW2Ks)uSxsJR2bs9d(}m*bgTH6ciEHa%mSK6_($U(T3A6rVP5@P9 zWOPIsjcbw*Y6S~hlFg@iW^G!_qDfvBnV3D=Y*_hGJSZag-cJEo#PO4tt;#reC72e6 zNtNql#qx;~oxOI+`nROLX2X(J5d?ev`8SdlVrj6A7_Zjj3Wh<~1L4<5(?rCykM8;v zBuVU?6odBJ@0`8ExDVOIR))0H{+dqFh{5z%U3B{Nm6dyw%onVfIKzBPvOT-@z`SE$ zV1Qg)X1o%*MXoKo)cth^U=@M-z!TKT){+aQsqNQcE?@F3)i{^QK_E{a{@3D8%?PH1Jvdm))JLIWmWpdI7wjR!jy4a0+9$N;zY!wm};v8^nHa9DWOBI7Hm|m46-}7Q3@ihbR zu2iV-#(KLU_k^1x#2AVfiiZHBhcgVYH?#4cMR!b^?@cLQ!y$I&`=SV?RUp+%F=bfE z8RCWHnYYeoSJ?n(Jx-;2rAv+^4+plP9q3akn3IU96?0!)VVEu)@c0F+RklQeQ5 zXh6tSPJ{QEJ?jK&Pgx~-B&=I5Ia~TbKz2!}j0^nlz|r!;#N%%uW5#Iy)*8y3bCL~; z-N*9m-8AI$9CAF;E_Q`)r3&AO_L=-V<8^tgf4UA@F|;94b13bzpn?B-P_2$A#w-_B z?e0;>&Rh@1gzg4M9EX|T?ygA#9i%FIZdYG_z~{4H?l@!!oqL)kNBVno3cTsrLWyce zgv?Lv05jd>+czY=YcLXm z$E}(@QPcNupi%r)vEZ8bVOy`9Tl+Bx^r}upmYbbdi;Wn!)lb+)E&byfZ;!CCU?|0(Hl|K8L_jM z9ONB&@|;J!n-?jWq_8O_s}BE0ke@WE_bvM|K7|1`2~;Z`KssjB!Jf;;(7!RDE@!7Z zh``gc+)L>so`}-dGlShi*;gH#@u{2ZA2C&LkiPc{nSx5yWO0(KFqX3H1@1*<345$& zEH38X3m)>{MN^%l+x&f^R9%M^9p!ur?pt0d8PbI8VYHm% zx}~dMaU=uC7~ouzE&jP3Z|AI4GD3{gA6+uY6@VAY0zM*x1P-JoW)GVsZ{BZv)e-f6>)GyP>|DB0yt_d2Nj$X;}o52URcw+ zin@#`LIZXvfXU{SXhsTj_+H^ndxf16lW ztG*70PlMt9o~L(S&iz|OU&)B~xlrCplr)G)6Rp?5 z3y+YEV{v*M0c^gMuJE_))Hcj^D$d1iYQEEi7^4$)DmFRK*QkiYlze{9l=kjMsXMJ6 zrg{Lprd>v!1vTkji+8YLZdiN}WN>6a1Eq-wm>}^;KldZ#j-vGEM9>Y}{NZV#2M(FP z<~rP)Lq5|nco_mV;MMrMqO5PBtw}@^{u=3HpfZ%C+4FkdU>=d*C5-hVR4$jS=T3C^ z1zRYFy<`#a7dQ$@5InXU_qNz^ej?%;6KFU5ArP@~(8Q0=%fKw!fBL)6z51%|64H81 zP!!+Amfll=w!JGrd(^4NoM6)jc+H?Ei&JC!2t2B+?@M&sA&MZtLsa}t&}U~=OdF~} zVLmgp4Fj&pH79uuK<7&FxATZSw@a7hF37ivP;qc&kF=_cW_^&*x>;sUAAbgCNR4WC z2s8uCUu$$#`(>0 ze1kV=9H@OR;NM7q*mk>4vjJEI*KoKtv`-4xM!O=xfbyDihY5dcB}V>`0#buJfu5Y- zFO#kJ=zQj7hecQlpUQcwMRylhHl#nRet-XEZ+0FcjDC-rQN<+*smA!4$GRZ-=&QYU z5Rf73L^aO1rk^u4AYtEY$?WA-JRolPo9YswVd_v7-+PhBXKoy&wWoC~i6cZ#p5{9V zd|~1D6bF8ztz|A{j{<+?Y{Vjg)kCun#D({~g8i>ypDvLJzxZztnC_C~r{Lt4Rz!tS zwpqOG2oDnV<~LcDYA2E|No6>rdBG?xI4eYSO5o$W7B*Zc6hp5QBOXY`Cep*X*+QTB zE&_&2699P5)RTLUD98;z#;%jyKc-acl%taS$IBi=#NPCn#g1lq5zih8W6-?2r2|v+ zE>G>hd*?APXxmP06G+nDhlaPu=Mm?-dIr;H&LHap5X8~q8x&+87whl99Ssd9%VSI=bY`wY>{eur0XsH&GMh~Y;`-J zKZ0`Po61ur8xt7^DQb2oya&Qeg;JSGbiSvxnldqedno33Dk~FwXmiyg*|MGyQrpcQH&bHI=Xv zrpq+rQrLNN`=jDV(av-t<6vH=T5E4~pmCpcv~{;&^!IW!pcRhA0cu8C>hn1lV2RNK zfRh0FB07d*@Xf6p-r<047F1O;V*lN0r&RM#U`QPXYy*iY)S_D*VIUSj*=!qm5W=Gs}$>6v*uF zf?~)DD+h$t_n`o&_j=P&#o(uF2Mm#qTxdW^`!lx>5#wz6l3wiC*6yu1Mkpl|g-u9*Z2bA#}{U6iN!jFCuyj=PC%=OV$p9c(n+tFJfg*OZ49r;Rys)Ixd zk3c|A7*pJlVM0>>JQ08VL!|jq{6}mvHo!!zH@aUBy(kjoiUg`hb@%>pVW&!+Hl~?# z7%Lz#A1Q9v*NOmG8d6tjnM5+B&+M`P49?x?(ZBp^Hr?%VE{s~?+L6A5;}v78y#Ox} zu042e1#e3s3%6n7XFC12E}Tyn^u zz#0o-5pYiU9!;K<00m10_wO%ka~W$69FXmQ2Gfdy(bEKIJs)hL##KMHA@&!6#{~R@ zo~MiW{_-;vfxYHapn6tSdR*U;T9S=OmU7F7R^ZY@$k2MJqo3)tB|C$xw#%ty%J1c2 zv>Z=A2GNBnph``4S=2(esDC%diOb>@a1SK*z4P=seQ6&~u>l6A?Fx_diIv@cLqjsq zktg>XpFRz{kHC2WR*umxau4Zoxqy4V6YeGHQa2sV?bcU&K{L&bJFj|>w2v6Zrv=i=PPd@!iv;OKvRvibgv>@_C z3(7stS0G96`cqtdP$Uj>`K$W2JPm>Gk**l*h84CDMYaapQ7TW)XFu~z0*2+ZE1Im? z$$E~<1L<+)%4J`qg5+e~oj>j3YZltNm5$e~&dX}_y7t_5gnC6XYQS4H31%0v^G<1I zQUGkg?xqeyv2pslM(8;`S)LFw_J6kO*q3o8f17c!0RxGD*Py)ZUr)Tf@8$-BSagL}do)eDLy|J^>ZY$jgh6v9t-AXMxTW zN@NS>`m0KhM@(Ft!J7Q4A#|jBhZ(M;@GABgI!EK|j&xlormu(PEQ~Cx<2w1?B3PcP zeRnS(PhqXR%)pY_>TiJOKl~>wE=Z1RAXJazK7{n-C~p#Q9+<%^6N7augApKrf>Sl! zQxuh`NKw(_A}fWF2%G*O3W!Y6Bj0{I=b={3`}d11Jbl8`+-Zi22-pxN-Omw)Q|_@_@Z0pxeGhXh5MS$}vGFGwC{j#U0ekC{RFG0u7Lge_TgZfmkT(#gy^Pgp$2_|BS@hCaNX zlMCGe5tY2dpB)(%eNWYXypca4I;@h^C+iZa`XC~5u9-^m*95T= zke!vYN@uD6-~7WK4!;v))_qAYO6RK5;h}O^O;b$k^Srw6reg{_j%jVwo`t@FG2MpT;2lrNl0c%?n?Ez*X}OMTuL4(%#)-#uTb$67+1YZEl# z=eQibrz~ME_v|ww0U>0-lN{KFw4#lkj>Nx3EKpY!s`wq0CRAB=KL6#Yh$GwJktZEw z(t9zaIiuP-rj#;#aHuTZ1!xqz!t?)DWx-Yle;oZcM+VgJDLdUUZ9@TsQ+&Ud1MUr2 z?S(e5S@LY>YRB*aM_zoJP>Px!$U=hy3S9NqvWXBdM$#0$GM57}!vgF7Vs=f9`@En2 zeihuW!N@|WvyqTh{=1uxJG>J!ImnTyU~Ny4bJAA1?&@ohDL=-pH%4JS3no^bwAhH= z=yd32_){=a745qPsc#e<)U*({%D|B@r$NPbo zAfstxQ~z0RWjaR~e_fwR*j#+!S&s4gUpt~Wm4YB6REd=#K4|?jfDq^k*4xVD1Scar z560D9c1-P*bevg_4h@c^YF+Qc5A`h?t$Hx{{pf`^xd|5HADQ5>E4XLD@7l;tg)A{E10oh~6PClF#BM^cV(D$@Kdrk|Tv|197|r^DQbX*Hkp+a-p@O z?~~*wM&ClTC*}pclcCd?3KGB8F#2_2r=Av8_xAC+etM(&pJrKImv)oF$aRE13J>)7 z%xfwd z_ylva#?gyC^=M5h&F}Z-)}b|f9(Ih8dwlE4iPSvPf@A4 z57|LpYAF#~b?M|7FbcgSqyP1W^K9xttfV!Bv#?A>U+`ywt%q*4-b8t}7)Yi*g%U5~ zBSGLLsMY!eYNy0AZhiV*9NXVO-#BE+MeqV#**GzCg)VOm+Snpc=sisgABhum5b;a1 zp5){?KetqlIc^XBl64$I_@zk0&&Y~WQHi;3oFFw_F=}oSrLr}cG7@jb3H3PsinfO; z4k!wITS8HT3US1ridF@9B*Y}D?#k=6 z;Con1Hmz53dqBm^uD1CK9fTaT0mlVPe|U;b0)$1g0U$m~)8c+i5dhczSGKR!eyf(w zGe?WbpxGT#qYJhg#T5mvK(;wCvG9)H&!DJ*ehx1ErxxT#6`;o$Wt+whN*QQ*S#Y2# zy$rn`a9cwhi2+Hx^J5kJ;(-YSSG`?Kb6t<+ zJ7K31cISQe33=-_{S;l>*VemoQPq1sT3LV=4fzQRq6p$L6>gDZ0V_cyas4ksjhzmJ z34rb%M=&MzthSa*8jjw|ekt2aawVRkebj42{rgCH zbv-d9AItv!7X51KY0-MRjKOJ8Cx+X`yBkFiVR}%f#&c)Fu$N#<(SC1fq0)Z0C*XcS z$$Ry)*=*bcwL<3Qi`t%6pGOCWRux${dTE$YayAd*UJHn1Z&}b=XJegpeVFF3u>sNa zrWmY~dr=#=b((kn=lvs)$^}`2)kv=Jtuh%#0msy_$5=vnTQrk;)X>%bUrBlW!-!cs zXq3{*|Eq*pr`O8lJdDILSZi(u;nM7E-W1$3pjwfOHWex(6LuF0AY_PrOCyZTemco#l za z#sw>_=JiWj2-PkZ0f+-A`I(zmG~nF}ia=5CG{jx%rC=JI(OZXI55Q^%6M;nLw@CFS z=nN}B;surZs|b)`H#R%<9RjqJJfU;rfH*3lHjn^#-Mc2+h^B+C&@SG*h|I^QW2?n& zMq*VH0*%`r-~CU>1T6?GRyH4#1wwAVzmQY%qtN;Iw`=IMZV!*TxaW6ypA{rfzeaJ7 ztddm#;O58#3eB|#E=t>cMH2cxmWdK(6xZAzyh9p=wTs0tsH>etI*)lXGwkQYpPJ=- z&}ilxV%volsAFp~VF9@e5yEOvB*L~U@4XY0$T?Jz+bJeS&m0#B5Ov^%g4#HRLYC~JK@*dg)V~-G-!N@yWG$;QvRFTdD(e%oGrkS>bZpb(l1q&nA zS+`&m-_*;R^iyBr!0ctvlR z3#fOw1t-^M)lJw6FQBqQBMlR6BZs()VZF5yXYf7Eq=$ed|;l>CqUTU&cyzSj%* z_Z{!jc(0sq=M0+6;?lQHN$(OW4i)v(Q7@|LHFM$WCs(nY;I6sF248UTt)JIb$+?7; z7x21>beEDaxtaxQ?dk+yHvRo#q zxesi-Y9RARi(Jz|XObN$Wi_}HU>3g}tcqq^nSn;SrW)sI{^m7QeRI@-uc%(Ec(>~I zy}2Py%nZvn?K+q|{3iBGh`S0^I%v}P(Yk$HW5`W-Z=omq2HO~gcWHh3mqKSQ>$5=) zEBMfX3-o;Jy$X{@PC9i$9UDM}woS4OQ)dOV^iYC*JZ!81rTuonp54O%vSG8(#-yCg z^`(M}$(Ce@H;dsWMHQ(#+CN%+e9kL9f~)pYo^cXo1YLVi15j=iXuTiX5fI5-D8~?? zhk?^%4WU$S={8%g(6G^5lvth-*u{e=909zgs9kIp_u?*OKK|_;7=U3BXnW3o7Nc1Op$E;T<6-62dL?6N+S6pB1(4tJ^1POdc}(=zO!x^8WcX{PR#nD9$|( zPFSg1r{hY#%AN%?b22GUyuwnA+r}|fT15XwwNc*)#O_fY6q46W-xV_Fk447`XM9}q zHJ|D)q^Pv1O0EkixWfUN;fF>J9iKZ~SM9l?B+*k*TnH6dEjuMn#_+9$6wV0WTak;u zWj;DoD2ngx4Xdw>b{0pMv?I4zV@YGK<9_QzEO6q;#da(R z&&0cg_(-G{a`LGEpAK8BqQb2i}ts!i(2Rou!1mi|-gH7f8SAekH zvLb6Xtmlwg^4_7r{d67(9jQg4gX8S-rurmNFlVdlK2*eP-tP3pz}p}r9O2$?w~*bO z0QK(s7mh@cZ45hxVfg z)-NoU0NdCgt=jhE@>5FkeU2*8G~#U)VVNP7M<}Q9g39!j+~mbyk&z$bxiYaPb4hSD z&NM%^jTHnD7h%7sy8vrFS$8)6ecSBVroPQI6{u#J$WMsWGC*n$ohXBsT#QZ@lXDJI zRJY*lK^Do=O+`h}CXypA2R67_mFwOHa3<4b9bPVs6ypQtkr9Dszg;Ex?)UrN*rnTA zR6kh+e`nQ&lV%G9dJ}M{z^IjJ78DoYY0RAgWpB%|@M!y^G|56=huomWwagbzrH27y zV)k9b+r8&2Wi_{LqD{0F^VW+s*%r5Ut+6X5S2aI(0fbsI9CW)cvg}svG`NJ+@Hg$C41M{N$5E(5>aq^}s_Z zoX%|J4w=A0g)doL_{DCHXNH|Z99b@%sR9nL3L&XfDI`-?dOp-6fs=OgsuiFPuMSsu z!&L-=&pisW(AsuX9{wgZu2!9$cd`Q@rVPW9J*fym0p}v(H?)s^o3*8KQk_!9?EQjU zq=BV_qjWcbH1g&EL7g;rzLnuEEVOZ<(+?(^|5|_tsFpxE8FVa@9Z@+DWXYk*kL;Pe z??pKU0%!o>{CocP=-)2}cifOCW%K`M?5WXc?cr~wpt-)il_=V@UfcL+6Gd6kOB9mZ z4W!>)uVfg+L;Qn&6)%4Xi59$G5G>GmA<=WdU$8wTv^k36{h0IT6>pMQ2&P!gRrEO3 zt7uzixFbP0=%$&K=?J16ZQJzbs({IpI3)6ZXV*$NS$y1K@0UCGMyd zLJ^<`nFaP$M-H?!X95jwj!C9Cd}wBE^qCU%+k5PMNj>CRIlKC!jA~ z^fHfud1+f}zi=+0Y2?dOD8K_dZUcjgkud?p!ZAO<-n^NS*(jD7%otZSXL8=uMi}5y zxNZ^Guz@wA>y=Huam*dxxc@fLsk~K!k&$c^9wv4${X5k9?nXHKim))l zXm8#xsK$|i&1b;SHBy7vIm%hVj>lI>3SA53ari5(%(K1tOU&$X(D0+D7o8Ep~p5z##t!*HD^uLKJX|CG{yU5#JJuydyxbwWb=iVNci2S<$I}S1ViNX@VXy}f1A%D`QDzhMD zd6v+qZXA4*0KoMDoJwsJWJZ-SLLP)%rt54t5M%-+yf83u{J;q5G5$?w?1#ZxE0dmw zFuz9EQ;)A4h&wJVb_Lb)!EXb$Lj}tVx8280&!BS3`4s=uV;}0fib3NozBl#!+iVW^?DLFX0iZw? zv!*3^DwkWDkG8O_aNb47pjvvd#Hr#Tj4qI2T+8ExBO=&K?ilErrR9WUIAM-*nq z!t0=Bv+iFmDlW-0$LnYPT6KGW|8(8QXR)Km{#H#!dRdC<{8c-ehn%Kj`LxC7&;AZk z4gYQ!c#t)VQPbdAOwqjnGNHU~V%|IrJ%3Vvl(-rQII~&lh)w)F=Zc(kh<#}*SFFhE zqIk5{s7)kb#Y0po`DaA!<&HW zh+2gQ^oqZoSBFNkg=(Z1r3xO|W_rmD&ohu$+f!)tw@SfmDFvI@PJ1G{p*#Ce9$CQ< zPUUtt567mUFAAdP7TB=Nd#m;WijD9d<{;odbf{}J14Pi}c_z095~sABAhNcAATIB| zDG(}%Ds;hbauL|PZoBOt3ptLW7X3F6i@J=l0nd)RUqpbWP{Z(4N`W@f_q0spvX?P6 zQCB-n_?*v<&&S_8f#$23p9}|Fp)I-3y~FV!=l<#nZhb}4NvX_!@%6};OtwH5@40l)SI`7ug2ER*6WU|qVWme#}f)w%{SMuDL*4NhN;jm^I zH9yt1Pn4$1*@7iUUZsQ-lSWz%$7A{sY8S&3#^LBpd~7gA$ia+`D1JPMM9FZ`qJKR>5jAU%6Ugq# zLM1j|qEsm7$+La>I9g4P`K%{?Zs!ye`W{ZXLRtkz7? z1MCnzTZhPDdH~v5$38dJ>Zo!bpA1C7X1C+-dpongoO$^H6EWbd)k~y7nn$o9>GgH^ zoen8}Ow8l*bl4+#`0shv=Z)K7XhVqB!VvkQ@kZT`y!h6RVhev$8O~$vtM=J+1(T-^ zN+>UUsj+@PVFSAqb1)0HG+L$t8{S6-7%#NzXEu=$`JoGIl^%={Wp7o|wx6b??qm1e zevuqs$c}5nn;cf{bUkWHM^Y|cjU8lRI&rt@BmlLXp4TSn%IhA6xxGXSa~ZU~%?ulr z9^a{pF#A;a%lB2pFJ_JpTy_3IF`w#%wIrB)T`OK;AwIQ~b99Twy1^& zrtfMM4gxk8n`{U(10>Bh>W%ZpB(uAp4LbGTZ%@TrU1yDTWV7QWhF}mOw{u=unolwv3TA3xFbVV!DT5($CdDs=Hggl&wQPX8Q5jmXqI8=R zVW4*YDm66Bc%v?36RFIpb*AJ2tuH;SF^cyyGxCo5ru^o9^x$0xm7 zNe9v@x6lu_r)IPnuU1Q_v7-D(GxqRS(Hq_Fr>0R;+QYUx*PPdU`r%ci?MjkNS`1k% zOs-U8K1fi;a^JzjWW~D@!gQ;H!pN9M{Npbz!nPGEWxwe2Z%Zke0p!4+Bdf37{&c>i zgi05d4_K8u9?ma27slFY$2mk3Q_1%$t!yOu%u%%jUPu$2xF|zk=|D`FA2|R$L_w?x z>wg<5b2%!h%GL4!(d<|dR}ZTme~=snh+l>G$rp<_OYR3I?+4KhBY&J%qdSx?fZuzTg~tYw-sv!P0ldQP`q(eU}+d*q|SW$EsW|)0L z&tLyVUsI5!xP*83?E%yM1RZ>|DB#on1U)_RF+~xh>utj+kAK16q(~(o_C_RucGE=~ zt)k*jV`mwE=q3gef^L8y?~VQbm#5D=z>gX2^yg;Lo@N=&^|p`*Fb}wP3=87;N+JIb zlTYs$<`eiXn9xZwZYkyWya>6$@rGQ8@tpLFx_lwYVt`$c<07Ulg?{A6(F=}>1RvlT z21CfIG3ge1wilyM&K7CLDt0DXOw7RTM}o406nA+}17?2}=XR?bA3E`N5oiLVF9t2u z^!sc|OaalWseb4IGaoV3y(VUW#o3nkGnK|15lCmX+ zA$}n1YS*k>#T=qpNHTY>*c*XqhL*jti|wRn$1A0{?aujSW%I<`Yk!{70QWqMUR?S8 zJ=8TL7ud(Z1iPpd_^c*%e_SY_v&*xw0}Qj29^@EtpyN_pK@-W<6T{a$kP_XJZF1P^ zl8C!+9euWrQf?@oCU0o0_gzJ>QDUe;F|$CX0X1sYQb_u`PsjD6KtLn(!FdfCU9(}E zczOd0>;gF2&(bL%7f|-g1=}d!}PhA;Mzw32?tSMkISRn|o&| zW^ya)5!ua)9x`FVGr`Ao2ZJI=^lSoF5G5)0um&l0FdnZB-d^fuRhor&-HnQ_9pwsi{gszie8pppb z*|;cm->aN<%&WVOAC;0mf41`y&&qRfOM@9ybZQGY38cL>eY zr`+D~i86rL?_HBN2WKG+Q@)u#Z*c$+LwZVs;%{KV8d!==b&eXk<+gLYFOx{36ETLN zmWvyfZ#(@XpEa5n6~wTY)7-#}ooKd}86ra%Kp2Z)w)2g($b;VO7%A8Q25j_ClgUy6 zT!jJbJ$}$8Va$zA{cUEVj3(;EVwI8*Wk|9b4JE?gPTKDf^}@$c@_-4r%HsBP8H;-s z>Il3i$W|QpchB^8@0udANk1DyhivY;T-hQFh)N}LPwJKEFCMdobjH$I<<5oSKD($h zdBoDiCEfKB1$%8Aq<-rZt;d~g{RcIk%9bH^6MCe=qyJgP%*rfLl3wsvkYWz*E3B|w zSt$^UyFN@SnyQb?2W^)piM*!0)&3!p<^pcOkR~7ax^ZPNrxM>gmp>$-=q*#y_5H zgR1Ph-nBo!c<3_qo56atV)|DaOOMpDRz?M9 zkxxClGF;~6s`Rc)+R5_gSkTtRQhs_1+;r`YsVna36A5TII2N_VgJQh8 z66!jySx}(goxZNxPYUY@B{rd2Kz7-JIZNuS5Wv!AdeTZbLh1Isu9_ol7n#@Z1A6f` zF~1&8DjnD|69OU0W+sld z*aeR7UWMEID=ypqjOF?sUQIA~<5X?;J)*mjXl4oA8#Sh>i%1i{j!t*S-n>KC3s7wX{=gDd~!cQdd_H1 zM4lVs^&g0D&>L9j@pJQr^-sTrPclv;k5eBui}%JIPYAPJ+G^n*e5BA@==$>K+$74g zeOacVbR0H9XKfmxgvnvXw!kN(PMwJyADS1B@}EVY?(D3&lcsh9IYKmD3^c&JyC1ja z9Flo-0(@S)WVo<-vLS#FB9OuejV0}HWS#dw)hq*3Ka4Cv_GZ7$VS4)3G>{D8g>iBLJMZ`}s#_J03b%3;mA196#Z>}-s7 z#sGU7YcX%S>;6tdMHA@iNykIG{jlTO6irfy%D^DFnZeT)cDKD#c=tO+)F^!M!pgtG z_1CVkCS#V563(rqP`}`yJxg60Us~C@KZt@GW9{Ht2ugHFsvf|~>Ny5*puCft>e;mqw61r#0m!4E(3#4{C zda;!IMLSz-ZE%Q$PQ3q>EVzaZItk!mVW(mJVJ=5B@w%7NhF_y;VWG@>q68m8>^8Hg z?J$+CRD7yeJ!Sb}P%U21-cOXz)h_Oz>!2;ym1ON>gdI`9PfD=#rNX z7rgPx?^}gB<)I*{&2Z-0G*jztvgT*lY_c4N)@VQ6Rt-*OhZW>FIF-8Bod za9QLmd0~T`*=n6Jcr(+#*L9~est;4Q4LXXI6_OH08J6dtvC+$YUFBBpN(7W;N($&= zIiAa$!#!XbG2aT5Pt@K$=t2&8-IlK=3#RB0RMLJht$P0WUUq(R4J&U+Y{lHrr~0sq zJ}pD=rHS5PsdSt9nZAKXWD_naze#Pl_jyXBVC}Fj=Cyq_qT@YNw=^=TXxaqJV0dOs zMM#ShPGi0)y+kV}T4F=BkZqH&NhUy5?N6cl(8oW&sEOu~HK^Qi?$m5#WtC+J|773n zT#isGed6Sgt-IHmX;LqB?=dAp9T;-DRW4Ea{8pM+qny>FJG%6ji|N$< zb3)!`GQd)Di^_-{*V0p$)0&+WQf%)Ui+cA!56*Q zfKU;SANM+YKAu{wnYZw6cT9@3s3J;$tw|N1UU$x4fygy4r{T8SUlNdR`?K}AVtZq> z#VjlegId7j`1M@j_o}|%1!mzolirm#Pa%+x(PzPY+2aOcC~Syop1%OrsH{Lmf&w62uLn}f$I@$n3EqrO za!*I*JMH=>|H-_Pi|5NPwF8B@A+9JHXrgU_$l#HYvT3&3%{Vg@@ltj)FCKtHt0glr zcDy@i`n!G6#tg(ohr|m{1*;(Kiwp{N)>l9_TCuz6A(G}E?MOw-rh9t%TIgiv&^zE&%oYs|2fq9 zn6G+JZKm8bOP~F2EoY*-+?%obj1?Foi0Akp3s5Rw5(IfbmVviY_jR=m*n)q1cnLM9^d8R zlvU_h3$u1B{vSP`WDV`Mn{&acD)$xh_w3k7@t^DU+2w*W>%VO->8{ZP0^{l zwDJ6bN7REr$ZgrD2sAH9igQ~ZKu!^~-T%o_(X7TmUWJr5iDQ7LtboqigKV24g_&cf z>St{%t54p1l?-C-1&KHgiFUF~gqr}Cgr46Ai}Jf=%^1_i*8iTrXXkYu=a8Pk-Qn4C)IkU95Eax&eofxviW`9MD;UBSMm)***o9j_ht z2mT}@z~B<1hdLO{=Q}~?rgVkctY`X-#BykQsTFTpw1yH)ps7K4&qkn7@u}fY1)&Lc zyk92mdlpX8-B9D_@Iw~6xgsr;idsx4I(O?ovN&sADA48)mmhi+KmRsum{^Z?)4Yv% zKU3*h75mk4)K1qlHk5;G5oac^UvWNv^6@hz#42#jlF9V!`r9f(!O%CSdsN*Ct0fsPc{6W3&qWcQ_oTWeUKSmFH@^Rf|9cQj{dMV zXfTUABDk%d^)l$1@JXfZPvwgL$rhZerpW+J6cN0J)&yn?9g4YSI*9zt-~?Aqm7C|P z*~U^1?CBG{^Z}}i9!D& zwi)4F?v%kxLmci`oj$!w^O8jpb0o-tac@Mrc=?F2tBl!o{M1T_{}0CSCW=~yXN47e`4ldV&)sk=Ul zpK`J)K%LSPFUQeuB~6LOqL*VcVPO7fqcJ}eN_ZJz@$-b+}U`_IN;Hd97-06db8Y5o)+WKl+09RS+% zR(~elOrHxNKwc;&&%vcq&3;qCeWC0QIW2BKi4)5aH< zMeP2yNFvHumUkn-0i%QV6rl?q6VUf(Oa-V1#xK4auq*VU94H|N<~VfSQTn|eTa1jF zA__>_@=kREL-vtQx9C9BItwmGKa6^wnrmkg&M8Au&{w>ia?DYV@_tz_YsnuQ>n7Yy(Uj}u z>_GYXBz|f?oBGr1YpfN#pP#iw^CbZML^+nS;CF)*Hm>ZS7-r6lk9RGHfywrHtyZ5= z>-eGF%aV(1nAH;V8@?3K~TPaySN1(*xJ^4&^A8@T{EDdU`9jt@$Ors>588SgL zMXnQI3eIzXD?esyjBg%~7CG&TQvQ{KNqw7SL0Xs&#UqsYVW%QwktJvPP~e`_2THrC z2YcDsNiSOgcpFQX5kTkN)hiyR?uAZJZ_0bL+gV2v0CZhQdKUG7wpb#P=!^a|N6QY; zC0)AKGd@bQ0YokP)P+m~6V1jqf;+8*4~7G<$9#&<>2)Rah?BAC;Lr>-ACCF^+;ed) zYmEuhs9_yM9=QW-@YsFbRmdKSb$p~%iwE#w2gX|i7v0mKS|53F{cXU|)&Y8y%M_M8 z>nHDgjqkol*=1Y~00XDRad!#mY1`3$(%xXvWftNxF}MuUckjNSTc>-ib6p1hR;JOn zkYCBCUNb(tFCs+`H+?7_tcTyZrjQ`ZMQ#Se)7dCUQ@I#G^XF`>0%e=0fQr6UTG0mI zaGW=L*7VO)<*Cf25dK%KU>HGv8M@uO=2xuE%DJs#K< zgS08Z6`0Wa0RNfZk~ZqT8(X{19#1K6?4GX$^ue0CI1Gt{HdA3QPXnp{P}jqlSnbI< zQHNt4U8aep^}6FCkDO9w#+Oy?5zj*B0+_|{2)9O^SK}K~!&&FdkR$@xXzY}W%Oo_A*-w&5PCv+}(k*U@E1h z3D$VI)^wrCplCNDX#_yoz^8T{0J2@Bxpd)_2h$I6kxLpHdL`*?CC!y`Y{ZY!?gf%5 zEm+J6dbCB?=fqFZK`zNkIhOrb`D}Vwa785lo7V>=KTcJ}xY!iG8J>|gcM&Bc-ka{9 zeBjs8snCm(OXI@8f^`O6Td0j+X{=LGCICa!7f_&##+A=j>l<5&qs?mRa*Vx1Q#77r zL2y*buXlI_KlGE_;Y=lpm)GDphDyw* z{xHeV9dxN*aqch2SEg3W#JWYc?mAL@51RBQck@QMth@2D%z##<9ZS!_%HadozD8Kkw)IQ<}ql}Yd#doEIzRb#Mtpp zb)b{LXQ($jGuE($wWjX5_q0xRAQbZS4iB)T_X)_<@u)W>*vr71G*(Xix=akj5zHl7 z6uhSOh32eEkWWRWyYhQhSM-N>v0340gZ&&($G$6nrUC(IDaN#3(dDn;GuA#vBrwt+ zuq>zLD>j4RdH_Hz`vGcD0O(`87+|4~-Y;qZ+;b{@Bu|ZE27%$8>6mp~sT0(4`VSup zzKrAW#HwL2dfkFFc3d_T5&(1qUj;>gu~xT>HPV}?tjB|r z0p%J&F$<0GlfQ{4L?#IubVH>_c2-yhLhXFWe~tn`%%rwnkpc97mweO#AnT7Bkc>kF zYkFlefG^o&d7gUN##4!J0?>?39|8)dsJ&(34rbtRe6OFeG(>#&)d_ z>IyDe7bhT8y3jzAPCy?0Z)Nbj?e>Nb%1`CI4qo&Pz^hDX3upw(o$eDPO3vh=mt%0H zY3J0JfL7FF;Hc?kzpp3Zom?N0;4iKxZOlaSfh7C(K9e_sK}{V;<}jvwVt1|9Q8stz zf?tZgx4*Vj8|=VV3p8_$wIWytQPfwIOAF$lVpqDT|J79BQke)C12(7w#(#v<~$k0DO*~p>BC| zQ!MC=zJvD8Iz!#6TVSOP?bT-5MHvMwt$gq4IPEuqpe~xwAm8dWKuB5iKy1)F+8G6a z1N-iD0(+wUlm4OA?wa;pUB!#;dzv+PcRo{E=*v-Vb*cZY2D^9=u_wjQ>_Yt_OOLXk z2b;2LJdm1HECoC8(zKH5&AR|Kv~9+VtlsH>%_P9twYRB!#|Ko+2M2}~>Y%Q7v7t$f zd8v>C4KRUaKJ>uIY0jvUVjA|_w*^rUNO$5E7SLLIG%DRdwyjluFM0JA0*B5AGgW6l ze0Ju2s1DCqi1BUOy7_O>#WqIeo%M^dKH|_22>ko;KdmJInm1m{S;${Ku#T81U##01 zGVBrfM6wc*ND9e(bUWq#%K(6?*vUE0=Upv18#H<&c$PFq0&a=FQ7_{UIV;-L%qllR(6tr2mJx0HUJvs5!jK* zjCug70%JMV8*8xAK`-g6wxSR0 z>J3UY&6`=qXv51QyNB=jI~@k?B{=01cuf&!omc~ir&X*E)M2dx-q5ewfr+=!f{2ER z4vh2tfHfRwwfQ37p(!2}7-{Fxa<0>pVTSLdDKkJ&cFH(H6HVTlnqVbrwTMfLOP!`M z!oKnuSWcFW(J8=Ht@X z^Yp89n0)lhY(?rEa+chi);g!}C}@Fs*l$V%4Rw;y6foOT03E|eFUtYDoiLhE^~j_h z;}Buv*B6VyP=W#W4q4}#evh?>5S5UZ@ zW6v?QI*575rZn4uZsoION!hmas$TjSB7O&^%jzMkc=xUD!5UGcvU#+B#8%wZ4tPB% z$bNJm{PdD#%pj7;A!tN?(WZ_y*K0);hX=Cqikhw@q#^^Lx%bhw$X_wG?^m%Mpi^Kl z`)Y26P~f!TWq^pCpdAe4f0G~h!Kj?YCS(-<#kbr{Aa|n=rG8l=dEpo?zfO5{PiJ^0 z(s%_ag-zq=Fx)HijzgV`HQ>_OB}MgzgMp4)C=v?ELcDg}upCg3kArTR!A_Z(Y1(ggcip6$?h696im z-V3GzEYE(!po~DNXB6P5&e_7zsjn0^1GUya)PT<*khYOV%K#`tk_FMo3dp4JgAWL| zeaE%@SBnxrh`?0SI_aW3+7u>vbAfWWXPbO2T9#K`fTPBH>83q}6)%vxf(b5@Rw;>q zqaB3;dk~ncsdvg6_J*~7*a3_%S7-Tk0I9*V6wnL zIP^iCG=NIurxU{_q>J_>rfe;ERUZO;=r2A3eahz5@3>bshtztmGYq*a+mtqc3C?u|6@uQ$ETo@RM`Ktdu>-YH>2@AAUkR@oz^h-bkzEfx}6wYD{2z_r0+p5xvar?&#dMMA9yt$?x&tm ziGhdwl&sp&0O`u|hmAH~N3O>Wq!UKuiFV?uu(SLlj%aB%(s-ALc0R#&8(k=qLs-TVjYWNM zlmF{6a%`N;nqI7*O$#Q5u}DS-?&`mcVZE#%3dyuY_B4Lql}jZ`ddi{U)_<%Ns)4$>c{Kc}N zGS=}fI?kug0!;Bkb^?Y1$O=)=m0$n^5tUtlou+{{07S8w1EE}N0rMD`OEv3n~d8@^=Fa*wIVqMbnJB*=~|bM`Azt zNk0ioPuX=mWL?n(MWs#)O_paf0#KRKaYidRuChDj#MzJT!5?sTVBbdju8gL#A(92e zUeK**WZdlHWTO=qhajSVumx#~Tw|1;EMya@r_pwYGJuctOwn5?R}ChLZ?Jqx8uc=+ zg#MDI3|*Dw(C<-x#tM@BlK0>jkC4sOnzq1$?&$~aw}DEW_uQ!std)-P{>aste!EYe zYT%<5!%vgH)@mF6dalrt{;Po(as;m}4z(N+HqGHapYt-_H8~FZP)iC2NlUqBgPV{H zd1fq#zO+-emt5~PNPtk@oqHx<{GD=SrA{n0>n69+n@t#*XeT{gT-)aD0h~fZ13gRc zyjTE{`s~p@X5!%6X|Xx}^p7=&MF2ChDDbKe+84lT*K=u0wi*A?7Z4XmqhO65718-u zc9WM!xGH|oN8YEM>7fRGjd+;Tv9b%2rJd8Izf=-+E*n>{rDIq0=yV&+wGAmemZu6v z-%TfF`}FyeCFRo|^1&5eRw21lcC`bTdLlph0PyQS`LtvPVMC{-uarF%sGzH0+3Q6@ zZNN{1RWzuE`)dl@;6#jRjgs1dllQ}12(LYvKpAKs=kti(768g1%5h|c{XO^GLJB`2}y^N;F;DC_} za;M`b;3o*dxU=<1gR-k-$wl>GVkY@h)U$0ln@{t`mdYDIYo{vV(Xcjub!6 z2IKBxvR@7_rYKZQ;{jw=YL7uFZ_&}P!>x>u7K;KE;0Ov4mC+8|V##+|-u&Vy6P=$6pO2#;b0)PUa*wsx94C;zi@s7XT zhcZSCh%5ad%SRmnYm%;h86C#RGwDzHP>wXN8UshfKhOm^D)rERI%60XADTep$*-qO zMh3=Vad4{)VCLNQ1mD$#pTQ=RcQxXF`y*sZrT@2ngD#m{$1Cc>&ty}z8IU%qG=9&6 z{8n`JGFF13r@4S%$R$Bg2U)8iT5W(TiKC^BQTG@-Qf-cusF$GvP942snMTu3UQhc{ z-0%!w7b6=0q}@{pqq4{t+_|l6J?*~2l^!JJLx}KItt%(HLu_IE9`S>G;O$yyo2CGe zbl5X&2-1N#MxY;kxA_;e&~)4CH~rA>Y3FF1edH~SS^6YkgBr5k&XntSlnu`>>4>1< zC2PP|wJTh0^mfL{5teR!iT9`jJrMvVF>w|DL|YLaS1S^3?!Y6x8u9QKtbY9nS&)h=2Juk8}VUPnK_odKWOuz8Pp!rc_dyA(*TO1L?4M zhqT(7KLI@Q)!CaifPin($$oS;C8mI(<2p3jJx7OS=ev7ZKgubqh`&1a06ay}o$-Qq zj3KlMSWQ0Q5#^;06cGG6rhf@^Lw|Zi?;VVOiQtT;^G^Xl1PcUq?)L2>bM}|IN5#CA zG=-YGjv^q&{Vpn1AP5t$cGSPD6g0J0KZWn(o|XJ095eAnzAmlR_%&D^e0)4&2(vKf$TH$Ngeh(nw4>bUf_Y*vL14>-(D^$ zP}&#d7i{S~MexJicIdQP><5j}Qw`Z~(ns4(`(k)1ee{D`f3K4x1s)U*j~Rh+NZv!u zl;tOpdJUU&QJ&H1HjGU=9UnWIqh-n^{3?FSANzp`p^bxUH>k_zs8w=Y;h7)@x@Zf!4YOWhx_k5B_S$Fz-hU(iCv6spcSrlPRIR0nkm`#0NId?_mRBi{Uej zSpu2L`pSM}t!Y6iJK1@A*wP9awWYdoY>BdzrPT~>1Y4zPL`g);h&N51L)l61>Btpt zbP0C9Ls?Hcl;kZFtn==PJ$l9UZcD9@hjf)|=fPih_G!$OPFo3RV zJsN{WI#w7Hl>`Hb@^F|mIQVbVKIPNc5D0*gXxPg>X@%gK?2>(eIh3hs&5p**IweSh z?G=bkkk-JUI%+mg_xIRk9CXdK2mIRU?d>HA#GTUWO34(hoYs93EQjRD)Fo&+? zPU^&|?3Z=5X=E%v)EI596GOG$vKX)ctX+a1)cJ_C4$-Ie%i@2?UGt0K;MIEXhs9{K zGq-_GB$b5U9YE0Q4tK?`B45)pWEE?L`+n87rU&6`a6V{En?jnEq9r^EluD(8l%BvO zv?*`{rqGW3K+?dvN&N?44ho=M@TSg}L>m84aMUXl?*1by22~ zYy%i%vwWKe3gxE==e6n&on~Kp+lI<#-xQv}UzEkJQ~@$7sOUzAyPP)WNSs}gfc6yA zln%}#y9vigV@P45&*DeIO<;rT#d0UNHiZs=DWR17(#ZwVAdcFlOY!u36lh#;>IxwIBtvM~JiQpudkBX)6Qc zfKBPaU#3v>fP`kYRkvl4C_vgH`iXelGm2_(PDMb?I_W{7bd^n{VGm`⪼1P35Y=W zPfs<KBSTXu_{BlI`m8Cx~bF{0pGh`JwbeTPzzY(KDvh*wgEzi9h2`860?OJ8D^{ z>lRT?A22*ncd^D&qCXYV%Ly}Eb* zLl%DoA`m713C)(edZnsO3S->3ShLn-g{&W6>6NVsB$2KxD@}7aqhTm>*G~b%Q-+3D zn2!N|B4YoFm za8Q&zK-3I6IS3Mnk+xdj7}q7cE5c8QHC zc&Bi_S2*etK*dvHb2`WYnJ=tFMD`9-c5zQ<9gg}A+E5VZ;EgJ{BO{4R1e7{ZI@*uh z0@N6gNfu?FCPn|NwPY!m2(%H@7!}K2*$?~eL77@c%!lkd^2jM-VJq9LA=^qDK=91E z1ftNqbiklRe(N}%YL$A=Mi`hWZ$7SfaTbgDX`Zs{>^ zboYAujdoxYL*>zkQcrzd*en1#ZI${Ir5ZyJdPeK^{5%~^=p)+EdtQelE__4rxidM+ z0$0*AB_fG5O=5(mY|G<<9^#XqP6uV^kQLeu9~x$Fq>sU%o&?ah32@{%{rhOePydz> zl^e>jV}zCsCS~W;52%E{B{w}kp=KD(wwA2mw(@yXuZ1W=KaA>}^s0jR8Dg@tNHs=8wDVzV*4pGDS*uTA7t)GwiKGg3uvKN4O3*AJS#|$o{$whv3M8IiyLWf>Y7yw2$GEI zhcaxkr5sWZ-~-t%035ABflfqkfEZ1~YMq}lVJIjNDB0vOFyy^uBx&rFVbVyQ^^1V9 z<`4Fub%9AgjWnieCF`0VCf|b{!<1v{HP(v-k2%o79`#;gWF-ZJWq17Tg-bT72Lt?21|7(NXD5TO_VOUQni``C=|5^&(N1dIT)Ife(X|(PO+<- zW>lh=RS>8ZedrT+DP_vBsjVyuHq)uJ>UIE7vXUH2d%LI`bhfpY=ux&;)04b9+Ad8h zsczr(4Z1>b21#uLAF~dN>ruXWVI4L5cc}og5nl8znK=jUJe!<)-g8 zrZ-Q+Sl9TG2UeST7fFkDEp*+rTm1^abY;^=R5r%yK`Z1}@VD7U)hKW}5|fh!$SQc& z;n=4pu40W&!}6F?*IV*l+9HzkKdPX#%{6!{{g4Ngs;-k|zSj#t_35EuxRv zG;q)an@ruZZk_GPz7_AsUGa%evgmNYLDq?8lYZB&=_Ajn*z!gJzz_}%u8^~wjKQDr z5hkL3p`Ze9NfnSR;w{7<>^ zSXKel!4pt7sH^V|<|j`i1;7bySEi9{a_B3g0Pv!-2L1jW|0t*Y3j+i=g283GIc>{6 zydCZK71-5oUOfHKz|%-M*z=k|O~0_VU+3wCHba};%ObS(nss^q7HW9Quevq8M}S)N;&TQrEat)5w__6%{C$TJXG4h z$C|)cYZ7)SFj*T@*jF*{zct+#B*1mwwDD6fG08P zpV+tME$n62Xw8UUnmv0xj>cs+er{@s8R?5hXhvPuqO;V}ph$xj@n+_J!V zxe1HF5xuA#lnD(XqBWaM8)eWB^6)6#-S2o0YVusZXlEn?s9LS=u4FOnw*(tBq-=j5Ron1{tI17;3jV z8>Yjm^$}I&Pw5onie%SHinD%?neH}w;1!LHs1Tn1&=TrbtOsKUwj6=||EDgJT^HyG`EYgfs zp?_k;6P`e^0#r>+vA%e2{G*PVO+5s?8cf)EW^ULU z`c;5XEWn4JFa_{hBbbVVr@6H;-9p{-!$r0H#W+Ie)teV*@Zor2KkI@AT5!iUh{bpi?V|&FC}_$e0K8sWj z^<~qT_#`5JF&!*Wr>SP>8G1l`D&X1aAF@DQ09%AR9Ab*N10cqBIq)Xf%XSf1K`%CI zM7^+8$t`U%!6)ccmJYwLZc%_vyMaq*NgL=-y3*zvh|GH4Zd{93%xO9}vVuB8uz)n{ z;eEXz8xJBK{IBSM0#Qz<^~?LTqcRB!%OI$2>vQPxd7p9!@Q{8i>xEKMCR}5dSw!}a zLr(!tz&Qu>Y(#(uw=#1jA0sWGtpDH)zCQb>yP4@MK#Rwa=0E7WhQS0&0N^>CBzY>0 za-m;Q4HE>Tx+XaS1gZ_z&EC2XV_pMKu!21NJ^@+mYNf6E@5}&J;huIr{17NWSD+hX z5C;6zPpT&9qOXx)P4!F93hcdIWTYSn9tC{aSGGJ>7VRE*FNufWF(!}J746wSWso%~ zz|2@u=uIDdxE0Z09sa;;P4}cF+a3YNDj)Hk^hW8@E%i76PeX$o$O3ic8%1rkJa#J* zbtfmyw$WRksjb1cGb#bDX6F(Trh4NOvluvty}>Jx-?$Y8?OIt>SF&e%w65+o*@{dg z9T59^JL)BqzQwUmNs1ON6xGtWlf=Gm|8ONLvagCC9Zfa9vSbq3t!oQ8RSZBGgsG4x zY#E@kDIxmO!}q}6ykfmx6CxPc-h>!8t1jhDV4B6#cY8YV5HBD`>WC|bbSHH|GwB>- z%i#x%SDpKmj;ONiOVU?7LBCK!#R~|boY^RE*c0tsyrh`wn4t~Z!=ItAsR_CjIx8Y zN7BOqTL6-R#1sbV)e}_$8G(@?pM!huXp9(bonW*9c_2ebU9&Bm`3JcTHXzX?1uZl^3qxvPF65d=zoZH% zOV(Ak3L8Kg514|-Ac<*UfItC2@PZ?2ltBxzj80zW)NTB)^SO{tUZsg<2&4YxWxB7> z);x%AL%FuOEr>Ng1aqlO1qPXYT&jWu1pJ+U6mZK;&_)K?t{y!tyNmU4kh%Ut*^iWO z!&r+aeG%djbQ5x8u#n5f?=+pHZ4^+7`R=cmt26k5eCZ%-4?kSdOaKo975Gu6HEGJ4 z@*@P21OpIW{%a7>?@??~sz96Q3;05xq@4E}A0r%fb$20||DTr{ zzja(tN9>Q+K%{8$C{*an{LPQ69tB#xbX&l^8b?Q7<*J*)I$H#pA?ir zAIL0ePMc}<)JIyi%#O0^!Hi^po`;%fwxF@BNlai-G8lp>dJ=uU^+EY)j4N5xqfI3y z#Q%W4PC2~+$u!Czq)c{}(^kD}%z_;RHSmC_`4-A^kJQVH#43wGElNrK8cEEs$MitESJ3C6n zCvc&F2z+uXGryx^%UrQfIziqJrn3tgVO|S`fQI%V9ptl8-D;y8ib5bLf^=CoDB@-Y z4dMW7paVP-i1G1P8Pi5i@D*9A06Z$ssZ6gc(1X|UHPC_~XhO;Y-~;yr`qEAaUxw8=q1u+Owc@th(qbVIpBy8#^8Zt>t&Wp?OjDScT8elXHX~ig5!s|-fb>-K<3?(YEQk#)o2Vci z_cYEq2qL7+82Hf07l}-&p@;(LCQD#lYWEm_6Vq5 zqPdBHAJn2=l3j3tWdZ724-E?D$q_Q>K`#Mbx^4I`lN2ltQ*v{$@RE6v;lR73;lD*I8)rhD|dmn|Y>p)ZEn)=1Jw0O)Pi z)EnC!JGC49%Ho1=wF_`7w-AkxJ7Tv)5yzQnjA%|sdG~gnjZo92E0K=Y^ia`&3B!7_ zMcH-_Nz`^pIcW~Npk<-Di??F|W` zPQp;5U&y#0_d;LE8-=C9=_)V;EFXatHY@AQG3o3d(>ek>bI14ufQb~ECdm;di%^f*l)jhFXfz2Z5G0^;3YuWGrp|+Y>LN-A zC?pFBs$}Y*OVi#3>Y|S1NHTQ@ca*__$=V1~N`gysAOo;N`{)l&rZWQTUS$HKjLNpZ zk)ME$ox2PO;p~1z0fM#(J~Zvy*-|(_1_&4$YytAA?SiX?9#2}Y6$tPfxba%xV+Eq46#iK+G&JZ*2t9B1o8;NbODnqZj<(f$wceYZ8 z=%QQCNJ^sLwq{XnCNU|CoIF1KvG_i2(5)Ybf8SYsnQ{6Ao~G$!9UdO9h-JQ z`2coBHLNRXAWSr~U6IYUvy~D*E;5HLNmOj;kNS{Zp)LSunM@ZmlJ|}u0l>`EP%<(I z_%+%B0K~({0Mx)Bq6bKXI)IGZ2eJbog8myQ&FET#Q>%l%z|UyEWxUc!I)mFPwoJk< z(ods5#_Eh;jgI^wrB;I-(f^mPXo)f-qmpa$kzQ7`(bVS%4apx2OQ08oq7U?wl_0fI z9rVH;HEGHPruuYsMH3iq4?;~oJ$TFwX%aE%gxYCyv|(9Ay{RJ}GSZqk=1IPxHv$>V z+VDo_D!nXJ4RJ}D$S@$a6ZAd30tFj2eu4IO=CDYR2AWBg^A8$NtK)xEw{HXOv+ihs zVoPmmd;~&=?pn}+Juvjd^nWc)p-m2BFXPFOn5P%a=$&5A=}(k#{JHMWJ|_1}ho&t6 zh!Bj>q}sGym4hn#KGTX_HX)J75ZFQb_=vz~w)f*FA`K{NV}52uK8 z8W`*I)W^;|3=#H#0Z1SZnd8PU9ZtM;p|h7!tr?`9C~~z!sF9^BAV+_ZU1<#6`MDi7K-f(Uh3GnB}toNTP`;szZ(9J+g zTdi~cf~=8v(*r=@r4l>=RLi+Q{X{x`;*&^I{Dc)Ex%X){}s?XlSAdT-LhHw;t)67~2&LMp>Z1|_YcIim^ev6n$E@kp9*CxHZ|kU)i! z==IZ6CNQNVSqAsWS3AC>S(xm&f#D%#rG6^sj|N@9(|;@Ol)VMq*0kc7Hxq$p9s+%Sjr;G z1;8P|yFi`HAb0^i0FRo6?4~`Fq^5^x2glqO{%pUh-^BMp(43rG23|iH3Ku{^@h$48mF@6B# z3FyUd$(7l@G;Z)DGf2S5KoHji67zeuhyI`B?rj`3gA8Bx75t6IG=2cTm=50V-!(0) z>^k&In@xWQwC>NcOHUyW@wLtX#O1*UJ_~;EX#f!8dh=y@p}+(Q0dMh?U+qLi+J68w z+-@N&vtzi{1~u4z><-O<%3ueO5+I`aglI)j65%})`i`JZb=BEfmEj+e1;y6M0g_e= zSkH`Ky&Ow)V27a?4>ZG}l1(RgZ4VKWd&-`mt5b;I*5i+$xoAr55`?2az>LV;(MCER z8z(`1>{5mj`e7<#K^k{YOS8HrO-TSUs<_n2ChnxiQ%BmNU)u36-JVaGQ|SwGZaUES zxUQY#%H;JsMzu~2^PN>>4@bFPj-yeaX;N~cPCF~tvYx1$I@5zE$>`u*w+BEy$q(opUKdlF z99PC@hq_4_3_U?b8_gL+s)hX3sau>#3W)JTZF$sb0I;j8WJxt%ffD|OrdmAcZ4LeQ zxP|dfI42uLsrHWLuDn7h6I$Y{;kWSJ=)PbfXcgUzJyE)d`VE9Fi0Xqke-Y%AW`ObGFO8%NtG{aqeAV{6=E;`sU*^p znW@^uAmw!eC*c*~L_`G;0vdrnA(k|_=FA+gn$5^aI=>XJ0-HLwE-Nv|+k=bbH9;5# zQ#cNv0R+zCTHV8-9JmpcxvDE!8)0VP=jF7g+KkYKsz@{>JKNsYo9&Clf zP1g=a{Fa?eJEh*WYqr{?ysNddeH`C>C%;+oG$cfP;hdaNmsMBm^kj=Ktc&AqfNnoMvC~ zN_Vu8;U(H)ZZ)gtJqk5}9ryt-i{OyPShiVuWVyP>vKd;ky}m9OR4ck2MG62?E~$|& z3N-+w$HHizktK`bH+X?7!hd2+VqA%^hrlzw$J~lC{iP*pzuzALoCbdp~yePNI@KZjax}BTJH#-Z3uZl)K zFf#stPJkcL)TWtx9rQFoW<5=an2e8&JH`*1JRi8q1?Vg4H)z2uQZxA6HA{fe!U?># z*8#JulUo1)AOJ~3K~#rD#DMG|c#=LaJ4I6|6Orokf(Ah;oH3z+5w#22;G$i8rWv7+ zPBt=U$vNU`m2I8nSTt}d>NLyJSp6$k<`sx%^lH4(@Mz^j!zjCvb(VF*He<E2A={M2jRR|ORrz)hYaX0+WKP}vg#rs6+i2)!OJcTK& zwZOn|#vUSQAuFVvk~yH0NeuWBNHZ=dh65qLiHa`xpn`t!kbVXe~ z{Ek?2Sr2rWN*WLlocEiEk`BqZD2vJ&kVfiK!&SZ?+nUT%Zjxg|P?S4()s*-^#{4m~ zsiu;|3T&^B0lmtanxNrk?a;gAn5hEUF4@e7wN3{;^O#;matHuWF_7&J)!cr0g?_iY zB#L+g{QyXV3*a6$F6DHD_I4h;9QAFU01pIdqL=Q2dsf{zLN&D$-p$b18 z!y_+?3$_w-FhM|@Z~g}ziLwb~9r9r8XWhPQd`EQ2y55JsKo{e6lC66UOv}zQF5mE% zf07a(`a1{etPEo>z!AS$SWmc>!AccN0j#4o1XxnZ?2rR%G9ZSN7#LG@qjTO$u>vb9 zL%{+pK^WM<%itb5k2=~hKx4u_1%O>xb214zBydEAp&VFxjxy3(Is*V>K%Bop4DZ)b zIRP}%&)8dV+l$GipKp<<%o0 zWKbJW3IH};LqV{I44l$KS`n|KNLvrc?`l_20ro^NOPysK0*nNJ&8~(MXC34y`8T<- zEcH^rw&V&L+pcT|uo6S?3@05<)&<|72=|o9L*UVRK=AJwzg(OW=PV-gx7Eu72>M?y z6S~*|3xlWTM;yn151XV}W_G2XvQy;LEqxK-4($l&r9B5<0S>AU4v4a6+Iv2{hzz#W zf)jkDoFQ!`9m`8L&{|K}WNEMvo&6<09mn8WAD*F=g|v<|`e_5K0$s_5{Q6dQxNZE3OUN$H?i(H8%K}ng_@op%y{HwP z6`AeRc15*JA<8PF0XiW0_zv2KpVEtLN&^pd#9^q(j16e{#&CRWgBHciFwK@lAhWyWPsOY!|T&9;U&yNdN&`Cqlw^CTT> z9W+WcyYA1xlZ>N8P>if8v@(zdRnzRN#Yc@(eIHp|w#*xNXaHwJpKJU!8ywQCB}l`% zbnMP-(w1VpOqq*w6sQeHlwA;54?C%E(ALL<<|Tc*Y)?AyxY}zh`$p5 z48x}<$6uxMMIeqn0UXP4OJeg6*Ri2#NGa#h`-mt5^Z7Ukl>sLIhJtB2Ip9EYQa}Mo zIu>{>&43=tZXh2TcApV~MKot@00XkpG!}p`da2iorDrSPA#lXT0_Y;}KC^(LhhPrt zBLx(g`HGMu%OHr8Tp?4+F*kWcmNf~gj{s=OLZDIo=3fkOkS64t?WUYMpvZuSKtrIS z`nu=0bQ-z_=CA_+Kt#OukdQ!(MviPB`z3ue*W^WO{PKJJQ`rKa(gQpu=*N*h4FCpz zG4Hj&5VPm`GI5S{ z*fgRYzy!`R^BBx);f)NaMHuwk{myPZu;+sS=}_=Wn~HxlLx>0mAoHP3@j}#tSMUrb z$v+uJAH#bMXtu3E8ki@z94C8&A=VIg`i09QXb7<14@koyee_EG5ETAyzzGWz-BIgn4+qiQZHZPQqjPx_OWiM7{pf1>l7>uYH~qDfi5iBZzulKSB$x1OJrZ8tB}n`wAL@ES7j-VimE zBcu)0_nN~+?bZ%)r`vUIgRjsZrns9;w_=JJLz{z7=g8OTneEXJYqkx&;J?YMKI|{Y zOV|SfEJiB;@)ot=dZHRr#Br^FJDX)|*rgtZkj3l_Sbg+eNr5AxF40$CtTZH(v7fT0 zPbB@pl9W%~(-4|gm;99gU~>Re=3q{fN#&-1;aD)n;8w;=tMv;4fNg3~0EY(LY&Xek zpo4vO(Oe+Le9A0Aher6IFF8b=bee1ow4vb^`s3z!&TpkDW?8xq8?NXx*%`V?CaKL?qzfi58LoN~;76VH!a?-xN+04P~ku#kKJ z97}H_S-zT1?_`)+I?`HCsAL-bYP}~1e*wG%2KZDal6>HrYzsOA_(h$;J*WwTU~hK} zQB<*1&HA+64#*W44epz1Kt?GmPT!`UaIJqciL59AebR|tzY}~UTfcFKJ-BhF&Dm{& zJ+NVi9lF;Po8TiC-unwa0|0JyMz(po+x(6I;I^<8{evmjCxBauCHmav9QepNX~u*E zn&W(fNxp(C#o{{J4*86Cgz#i8JbcRL?K8#JKDNzv#DkC1sW=4S#EvLmvQ1ra{U6*1 zdL$iBMce*w(p2X!Gn_$RY(Svg;D8{SlGG5AuGem*B?=!Ve$9>$*tPZrKnwSuK6e02mk$**y|f4{L;X1FWMNfV{_-1{9a0!V@`NpZRb}xz}S-#t=RzmT`4^czf%B+Pn=-O8%19^LnA3yoJhLw9rn)vcXTX@4wN8Cl9W zDNKFg9oaE3uX}ul9k+0Id*%xdv!{GuTeohr{p>%M*%O;~+ISzO;~meNws@;vcD#dx z%?=ix^yiqzd@$VP!kF%Z`DQ0t2b;I)0`JHH-^2iX8+O`ZC+u#!A2`#l|G`R|GG~%) zb-)=0J$c#$+qQY9?KN*&X5}7Ty(RVW-1CmI2~N*d-(6-KoR+6zp!9wxIt@8BEqe&m z;-E2sR+Mqmm^{_n+~h;P(?7wHPYlR8=)1wqbb5B5J<0C7Z<9^*z5^g^-QpA6UT;d& z^U*&CR0fyHKFDv0l$rAy_qTgnL1$#sb_S^RKBjsfTbzeLS>pqkxDK3jr_*J%#Sbg; z!9BoBWL7h?3B$K(-ri;hM6Z6`0$Y0B19t1}>rgS2m@84n*(A?^MxVBIr%mwkL6>7U zPK&}4_1`JZ%$A_Zi%;=Bw>n6Pj9J?GhHbXsu-Ud?;Xd}mpWSV5dc#7y=F;W1a@`g? zaL>th=c*?hgg7vyJuxI?fSKa7Z1w)*GsWc};>d^5XxsY>y9j_8HWhqs+3NE2-@o(1 z`F6wg_uKMEH`zFsQ_%8X&OX9^d&NEW@Y*dldB&vjmq}heWDyNbpE$ubx$LGnKLA~3 zGp0^vy^V46@vU~wGY`%(l)E z=8fC!jHCCqqmJI!{^7ezY~dlZ?cv9_+3HQ(od+))%5y@dx~#Xj51e(vJe#@OWIO*i zD{Sh_Nw%esGRKG<fl$SI z3NHZ_>S4@BW3^!?`_#1U5b{P*Tp>-3MO>#YL~+j85r`>9L*`*dplcLXcO(Ivcf6*I zO6al+6c8%vwTnd9*fvxHLJxkyS^M-wRghZ*t(7F7-UxvVKRG ziKv!*HZp*nL9mz1CY6ni0KgJ6j44^AVacH6c5T3qvUIvm1(H)+tJXk(l!Iy703|qc z4(IccrUHNveBLhw$o~VicjlV}vs@B|dr3?3jB7H?@<{kJZL)#p(mBlrzu^qEhB50k z&=PU+$#`o>K9TAlvH>t1m~jp&D$_l^#pZ%6lQi+r=ggi2=?HANPk@}B$?r7{9F*dk zGJyJBS=j_z&@&{1C&M;1BN`gW(sNJnfs8TamORVZn?baz8-`(07zZa2a<=-XJowGb2e|;X$KxS!(RK2lkA$y z@3m!jthH00cZki}bGm)uv)9@l4h%MIdeY|YH_ZXzlXm|@TWq)46YTzV+id?sW+XCL zw(N16HhXfe1x%0}Q(oRj0D*n>pKkXr-)OdWyDfa>fi~x;Irgi+xY2CZMBC?x8MecL z(3<-;=fHdRI~HVC>Nnq9W(!W6WAk5pxLy8_x7eCBTbxrf=J@-3~frT4u){bWk|KX$xQwpUB#5dwi$uxBoPo;)C}+_dMZ9WP;6b zz`4=;J9M9Ew$3w@>z&5KkDO_bd0T6q*nxrG2Yqu8w&0){cGvxzY=_Hw=FEw*UY@JxGf_2vYzyE_Po?l*e&EP%xm4%{3G*@As%*c~f2q~k`G6oWo2 zBK|umX!ZUN^l|~x?pnFQCVGF-?|7%@;610>?CBG2(R1h9*S~U&oqY5hyZ-KVcFq|G z*nWr4wSWBA8-0qC4`s+J`Z-er>=0LIkmTyHBfeCr7o zXFCv^>hg$o4xBsP_Vl)vtb8mpj{yn;C`Q?7j>cy=ACLP(M4WlKr{CLa#$>zA0c!yK zkjECM;qZC8**XWG&pq`Zn>KB-ee3*N?HTju+BGZJXO{Djy{6lA@AI}tHYFh3(}DWF zdrY^h?^~Z|(;z@|jDro7wOnp5#fY)YF^?ey;7e!b>DZo((A6%+ z?*`3UBk6_dkBIYNY8TX}KZz#&mE7C7!o)ppRJ)W*2i#I8ao?NDthGRK$2Q1m7nCU$ z-~`Pbx$=3xh)pS!IOV|MyA&=O)P?M%nrsGJbw>H4L2?!$`0;+Z=rk>?=ckdA0*_nc zmV6GIKp?NkP{l|W0}%%F9Dwsr7O$|00hVd-Ve(D8|(duH^LbN~3$ig*Jt?3h}JHbb{+gEP3|Nfy9Y>N+WAN-RW z?97vA+GWeP*q1*4EW7*{%WbNIhWRJ$XKSC>YBTnoW!GMKmwo^IRrad49d2`u-pd~M zsI&H=4R+DLF0&c4e87&(h7WLy-*k*U=~EJ$%zc_M3md+n)2LqipglpO*H4 z{=p>=*$v-YY0vr4LZ{Dx>4O_=^_}bO&}SWB+c#{rnX{+by89lt8Gdi7*SY>b@3ecD zZ}2RfZ!~g%`I5IDZMz?|yREqLKD+Gu_t*>GI^Sl_n~~FHtM7i)F8%Qeo8%xc++&+( zF3)<=fwu2ab2IDr#F|a^)34lSXPZ-ciwY?-SDe> zZQp}t*&)a8V_QADHRs?x?6U9O>;QACo%IR_$C1hM&#!;9)Iri#mj##JyG|!Z=Fb7= z^PhXL9k5_;2gXm@V{4wU|NQsc?a0Gt+Ziu8+O|8bIc4jNedFub+ne8df?fIRd+eFd zb6xH?+ityLxn201l|D5dQ}l3_h>W4Xb6;_^?dE*N<<%?J+E0G8%--~Sr)2hY%9Kf& z_59(#FR_OmtiJWN3vK$$sSbcQ+pIae*~LG)$?k9)8SlU-GHvg00J!P#Ep9JUBOPb| z@Vy%{Gy0BKEwss=<%_J|ZP%}`i+_8sz2Zej***u&u}OaY{^hG}>9W=KigOp+=1p7e zH@~>euD{QLr4x19VSC!iix0IgedoFy4d3(nQ|wol++hdoGt-Va=@92(hu7I=U;oy% z_EP6}_8v3r+y8olJ!8>+cHD^v+1Gxs#NOjzb%NXDBdgZhcP?6HyE|xH@BF-I@qyXK zhIJcl#_Z{K-`x+}4Yxe#vR+_c{l+!+vgaOZ^A{dy8`f{MDbuIey-Odm2OoUQjyvH1 zyY9OC?3L#(vQ1BHwhMlIv(1?^!%jT?FwcI+N?Nn8Ip}`*vktc1=S;V6edlJ|ZO$}{ z#CT`KCjt9&>Bc%Hne3_ZbaiSY6qHe?* zKB%{OPTo-e`B#GqVqcV1Jc?G>D*h&k9WZ3K;J5W(s}=lG02KsQ#yO4?LqTbp80D&P z^yZCeT-6B+lCgj#QU-V^M_u))@qe^k@Pe|T4-v?5thDwcM%s{3#U))sdA;f; zTPASmT1u@n@DX%3JF4s$l~frg7O8svI{}?Cefmp|@=QAFpw^M;S^~Ks8?q~a$M5Z0 zERcpJfku^uBMm@*$tQSru<67pnvrlh>#(xu>o3VWoc(i-vq4Re!lIg*54Cmwwt9CcFsqhX}A7-ncaBRYG2>y*()EcpZDR@?d~7mZg+k6emm>4r`h8x z9c>=GrkY zKFluoRQ{&GlehzgH!CX@7&@UyzMq?mS>YLTW!Dd z;gfCM{g2xt_daHeU%9~k{?D$kqmS9$PJ7vW`^IOkvNyi}WV`j!du_=b4rtbIx3gby zsLeZc5Bs;jxz1kyADk10{^99%*^h6vg$`ggKDOD;|H2Y`x$AYm!}hYTeC~34*B?E@e){h> z*+Kiyv_p@XXaDk*>ufjYcVnz=i?Bg^4RCqNk#p>dTOYCGeLC}ummX_h`s?4=yWV@c z-M92%`c{?|+GvR|#R_x_LP*tNgC)8=|c?0}%_Z+>lyPd~uUc)_vuH(&d$edyiKwkt2b z%`Ut3VLRivd3M>=_uJdvdaA8j`KVoV*}XR1L4Ho_dN%I^=bdhs{QOp*G9PbeoV~!l z@ZD?eL+3ryF8uM0cJr-k?EQcEY`g77Uw+^~be{wEw14>8Rd(hX2iggz9%^6s=WFc0 zzvnFb_0Mm%EAM#3ru&1#Cg)|Q1NYy5^J(@=Z}++zSKA+c@JxH?{^5eYW_d zeQlFx3~#w}t$pBqXV{Hb-ec3IPx1`=Z2PBw_32~>fWF$Hjd6^p2x|ml6^6U4ALHK$ zRLCf!(WAe|h|>akf*ZxLf_XKHpf1KX)EyaXYnTz3Q_nph%P5Cf$CeBFDe1v>N2hqz zCzc6C6CCG=CXl^jt0fD?{zgMT8`!ucpz5TdF|jsElpfkFqofgkxgw$oM{>#-9!wF@ zaM&1?<8aKzxK&xQZU|4Bhr@Vh4Z#NiVs;s2F`h_&?Yv8ksbd@Kbz2)qg*l?#nDOgm zRlIZnVT4WC)zu|TEM8XcS#Z)v4BRl-IP?naXAkF z03ZNKL_t)fd#52MoOKtVDthOePZHd4+E4(94xVMb5oAsS;Bmd5Uub|1j-qoL>j{AL z<>r#CPuZq^3F>J--VaFe_oBisR$L-HQeyZJl$7&fyOv60qgD2SS7p<@(p0%IdfBnO@?4pP5_*WlfbC1~FF7Yhp;&&fmyZJh?OFngz zo$-PBzOHJrUHtbB0QYkM==7ZQti9}j6C413{2F`i`;KuMtlA5F0|XP zxX+ecvDyLZ-geRpkF@Xq{SEfG_jTU;PqocHExI$-^En`S;?a$EzOT`o>RHMyel2&^ z`qb~DllQh0&pF!rSf3ksCQqAWclcVnqZb|I{M==CI`}-+WwhwIN7y&NbgjMpy^HOF z@84pFIjB3>vxfijjq80Xe~Pc~>vn=V?J+HXjsx6%4)rXk_cwjkH2ca|ue9^tc%t2S z`Es|12kkX)KiSr=_N4%RZ|9Dk_S2ucEIgC=P6umOT)fn7x&JZWI1y_leG2%sC)>}@ zzu8v$L&2Ngw#Zg^#_Yhu_p;TVHM{t#6&a}B<6!RBp5dE4bBdjE=6u`k)5AAjb+=vV z>m<+n-Np9MeQWK4%kT9J^OT&X-T3HcJNK2x*|x}XIzSFtEnmLIp6NjFE8n;>b^Bk= zKHR3xm|~AVvcdK_a8I9dz0OWQWnVkl0pJ(^;|6=5Pc47@2RGVU?`w*;vDLHUiw@b{ zPJhqu27tB@M3J^&80pBt?)cXk&K1d!k~x5*g?gEhCCDkmXh6=`useK!u1k3iCPu z!WfC#YNG+dtm`+DP6f{Fzo(=Lqsao}peR*Fvk9piuSp}OLK|&0_ng;S%aH|RUWYNe z$$pFuBHWV>NP>0MfMhn%A2RJ&JB?cHU#F++jKLj(9{Dhfo8ye6+iOn(A~4RM9F+Q& zy0(#R45pxW49BAuiOS=760mdi#F}5#MwX z`U((u)*qd2H+e?m{%@|bGroMfPo-|Pbt@jXeHQL*_h0w0EqM8ncEKNAZu_6UhaG$F z0=w{!ue4{pcY$s9jTG1Z2Wpct12}zu z&+4q%VkbO%A3MM^F+X|tWp>K@kF@=dpJzY%qz~|WOtN!7yvT0)`Q3KM?VgEqc^!Gg zEIZk=bpQ6(*P3~@^wpnQY=$XM?@vohRDmKFxdgjlLno*E+uOeJ9&82i@0Rc)uO7XinP3-LZDi_lk^*BXZpA zcKW)z1&7VDQ(wHmzUAP~ce2K69C! z=NZ7Cc?NL)VSCttN6)iwf9?vKap+86+lb9SnOXGpZ>Ju&x1IXJ1@^_y{l*U5Z-%|} z+!O7~U%tZ5d-F+l+tv5l)t9ca*Zuw?Tk8NWZ0mp{_OfsO#ih32iF53AZ#&(7@||mK znXd;N=fEj8%e>`vr`W|my~XbK^>J@~$6{N4+XFUdubI9MZifAn_i@OgdG^ZJoMPYq z-gQ0=JK1i!{SiBJ@d0-F^N+R9{MCi_j<+qg`|fc-b;;dn7n?mGL=w+9dXQl_Qg+JVlRKoLOb-ReeClN z@ILU?#rA_AF0uQ3`aO5=I!N2!`+tK2!|#3fI$Lq`8hg)&pKWU$KwiIOmA&vq$Jm#@ zcccAR2dh8(@e;e)W&OeTpK15s`-rW$=TSTL%p>iKpLGEEp)+i$XAFON;R^fU$DU)i zxXdp4&%5m1|IeAW%&$-KjO4ui9RU7|PXW)3Dd3PI#~=D`n-V41!g!2Nf)0VMb`1}^ z87w^n;h=7&qqr`<2Y^`nrYN7NNf{m9B8nC1KNNW*Vi z=F?_NI4mVeSOZT0Ge%147whzdDWad931S*e9C`Da z3sEG!Ll7CD53f4QY+ivZJQYEPvD+>{V3dJl>xcq@K!hgf1XH#hxTzE`^+|nccQ9V- z*BrFA#4Cuaq{1u?4`13rtNwL0F=dI z`2b{vkF?9fn=`=sW$s{<9#WsO{d6upJrP_Ih-chzu|DEcj_-cQakl?~yW6AdHrZ}I z7+>MjYoGqwGW*p3I6imce)P|L&DiS?v7=9Sp!l&X>;r#vVy?ei>w~5FTCNMfag#mf z8Izcfo9u(;X+90Q*)vtK=5G34Gwc^%xXzCD4Aq?ZbL{eeyUWgg=W(`a^~P*tl9#{m zQ&-!OXY6f9zT^m7`r~C@cdH%$sw3=zzg=Qecb{lyzwOvu7dOSH<~FQ)+%EgOJM2ZD zJjGUertP*19<&oY1Gu-ZFZ{(vueH+&0Dtk(>m2|dZBrb;Ui|lW*wlTe+juVFZK0z<70QOr_#1MQ2p6IFSSX&c_O5}%{Psl^Tzo$-PgYba0pra z@H5xj^WQc<^>NX6?lRw1U@v*qVK!@@SOd7pX8XFcD}S)m*RJhm`z_eZ9&_-s&ry5X z%4_elM;_Q{^L>i*`~Uj}JJ12(8J+?B&X;bmbKiM_UHj9!?AX)yxBYx=;X}(F@od^u zTk^|$e51p7JKoo=t$*M#UpF}0Zu`wWcJ1wJ?X|Bv#x6ep4qNLWZHj}dt-c2EWv^M_ z>&SM?HD*!&+uyw2PCDGPelJ*HYwll{naBW0-}=%ucHa9I+oeCb-FNKnw3ofvWqIo= zyWr9l_6A?Wci~U&ut%Bc+|RRuFMP$ZwsF0$Z`^IF&2U+K>F*pszQw1lue#T+`Ryuu z?eCrJ>-sj^PcFRM-t`C1$o?Y}xW~NN_Ve#wZ_8q{hs$?bWB|`S*)9nH=o?Vp;@P|h z9h6;k{R8&i^G>rTe4X7)U!S+i*Zck8r+3)9-uVpMksCWaj<_v-GuH5V7H)yB$@}%s zZnA5aulL=wlk$j`$9-4vAN>C5Ioy8nt5@WvlXK6RZ+q>xhi%;8n@T)e_~q|hZ~J-1 z`t=U#g5L4I+xSVR^NSAT-v6dW_I(F{t2X-XVh4b+iR1~F>FZuJ-}XItuC4KnC$S!J z`Rxzb?LPJWf^&|w&wuH1d&${{*ipwHXpe{Q>^|LAE_=xCzkj`*a>n8I<v8@(XXX-8{>=cV+-@aR4~gp3nl!ZqRN?g6?9) z@^It`1bmofsHk;iF}(9(w?8K^>ge#}1bb``uib0$2H1vEi`fkaM1d*}BB;{cL&(Gj zVHICEjy6=naY`{R$G4tO@>b0=p7S>VC&xeU1V9!6u*Roq5%E<$kXrUEz{}a49-)y9 z$)ce~&^gr4kROnSai9qU!YP?2xFVj&1_97YoYF_)4Yd>ZrTbn->?;5x<3G;RRPT@v zOs0)V5KH3+O-DJt+%vlF*+>GjgCeNkT|T(g*@4ttm1q*;x7ms2z@W}yIs^L7I`Qx3 zFMJYb6$-{d|J~q+@|7i|a@9=NmDlMrfX$%un|>0(D3P6jv%o`iE@wnq7QeankG}&I zCGp*Xn?OQjiU<{clf;KB=K-T7blEmDR#dNQuER*ba0I;$}h3?T7x&n~tMXo7u zf#}+7qdNR62aH{nwc|HbNrQ-~*Kz*NUS-7u%;5lD4$G1JTL4AKv=$u)$Jr2f%SPF9 z6ahklYM$Q&Fx;M~64Z&uG_mHqHGSFyMvw}-5+D>amARuP3XTh8!VJIz161n(|^FiO`I?X}Rbe~Rr_>nEP(X)L=oixYBJ9xYO#z$>~XJBHAFEWBN zJ&SRygOl5SbcgNXn;w?mvevddw!^{4)I9p)k(B|GrrG`rcDF}-bH)xI*q`uSrrUkP z#Q_Uu`he{8_x(JD)xK*v&b$j%Jn7l8y*-1shYz+(Bh%-f6P%X- z7`NQGHrwuBA@`)O**fm{J#C@`iW{BR5d6G3Q&R8`uk%eOzL{mNx3$@)VIT5-Uia=3 z?bb`~wOg)v#1@`5H#0o<`HtKOxLaIKvmG$r=klE5sAV4qqbt^IwgX%?YkW8H-o9pV zmdiXqU)aWK2TrT*-)ILrm^|Q+S@yun$L${9b-nPExpw?>4!3{#@-;SbIyP;j^?C;N zgk$E|R0la%-?qljs&nw2f^WH~2i_n;af@V11ac{hR9i zMJtP6aFl)Ht5@d{Iq?YqHrHu7_Q<*RfP?SN+v3c~?RJO*!*~FQ-LVJlG1b@iJ!z}f zZuU(i6YW{Pf#)I5em>@4YO@2Zb>4*pTlWB%?_ZMkP@V?#;; zCYYTcQMAK%{LXQGO|)B9uJa>m#@jjv&C$l~&hH74g>?Rw`7Y(Rz4BPw;+swW?ZRbt zv~Tjc-D!%c;nNP^!yfgv?{a-U+q2-2vAo|OfMN}2#PrxfynMayZs!p~4CHd|bn*V- zv>*Hw!}>#k!>=P-h8dIq7krmU#>;q6N6<-NkO3A)j3K7PH9p+tz{_B*u?9`xlkK!z zAev`^zFb$O5KP8mw5{gid%p`Ack$p&A+QScBe@{=q}epm3(kd&2Q+JHvhSB&)i|T9 z-hjeN7=SKOfTT?0NBYC~*yw3`<+qZf#(Z4Q-O9l-2i-ArmM}m^QX+Yd0M~BB<6sJ% zfh>&tL?WdRv68dBX(#O?Zp3Z>cMN}{7siTcmsNmekdhf{QzV9slB!@O0btUqEL3k) z6rX?$jk`b(L5SEhE&RogjtIljvE_qv>5_0@G;%0Mhvi5oM!M z4~^>(%KVE13cuD{EJqG9+U;S^&kAFPvSQMid~VkHJ0ZLnq>geRSR=!v_$8 ztN_3|8fl_!GYZF%ti#~MMoS(**!izz<6tb&k1~LHPNhs7riS~W?*ymqK|*!oZ)Q{( zHl;sh04ozH_s%{E!1-MOwJJ!Q( z_d~st3FjruKIIc<1ID4u&TsPNeLcxO^QapKY33ko(c*n=)*jRBl3%W{Dc)}Ae4@)G z&)IX(7g;rIB@Us)0mpH!q02eWw)4xAyxlx!FUxwFJcT*VM#OTF>^#cm6tiDry^vv$ z=-bGVDRl4`CKAfo8Rt2AGgBPY#!)YMG)wT}ZBFq+5_h;U$L5l^`!3?~PRrLln-}tp z>QlUrO}-f?`V3tsu!}X5As>Gb@RVfgHGo%SECXOBP>ssrEB@D2kQ+CWfdr+lv)F_c zzn$nezhptK=i9i!cRhOs@OO zZ+*57V$+NR#~$ik91(edJB}%!22ciBEzkm*5J%B+`^1&vBVT~vC74WMbyBZiO=@}r z(dZrMTrnLzBtO*|vufF~h>U*YU;IZzfrn~~97sCD>>GGR&dLH;*nqs_+uVM|&6kSrEGLgHwS9(N~^(h^tzMEA= zp$WMyyQSrH7=3b_G6puv?@_$~VBSJEBS07fzd&Fz1#L-?IS{Z1j1?MuS+5KkQb2o< zOy5S;BLI}}0qhz8RHm=2CfkEC;V-`s+2ldc1uBV*Q$hF+CubdKJ3no4X%l_|m!Mn! zBnR=r!LqIY>$6rcsOTxd25i=WglFl}NaGILkIZ0Z|6%|apn>`b#6SRkHxQU@CwODy zDdgC-OJk8Pb3J4OQ93&iI>3Rta6-D5^hV)8TH=Lv1M<0H1wgYLFzRR9v>pD2v!fo& z0&VKa6~GWr-e?X$v~2=W-?S~5ADy0UNxd*fPK8T{kY^A6+ILJDBLfS&&=Xy~;xG*; zHj`igj{}SytN9Fl9MuC{vNLu~M?17Bt?7(`db>9o1F`2jY^&Fa?9m1v%%ctL@{Tn~ z@YY9&Z@=L9 z&atyRGx^B5l3)sYEMCbssHBeLeqyNrQOx}26952m|DMihGRldUlxpzm|ANKfFT{{< z)d=}#GY*b|ztDXuIu3TmySd|&YjM16;8VRJBOeO9ZLMvMwm~m2pOXcE8`tcCi&EFDuCnK7$AbeO@&cBe4LlCsRrYkq*%+i zvTnzd7f{AD&vvEkBzKjjD?n;#I?;ao<-=wb3?;zf5(X9xsw!nlXjEFYi*jOd|7UxRi$i}Uv%t9cANZkgLVEUVHsQ? z43)`m2~1QM3}`S1216Zk2c-zO<#n{Hj1s1ZK}>Bs=RlMtGm_z61Ar1OphbK7=sISz zz0@U(wmVe3qZH$5k>3muQYV>Yu>&1h7rRlBh2^wv2D_HfZQs-S*dV8H6RWEYYexC_?bo$|CkDy?x(A)0TlsJ5kV9Q5(kEX zNleZ;=bY0!iT|m3s=E8W!~PfEx#ynKp}MNN`Z?91n9sE}nWbn>SxvmOMY%i(n<*`S z!H>unmV>dSdUm6w$DNxR*o9>E7?3_2wzGw zu;37vRMUUOa{~QRdRe~g$)3^*2%X94L&K@(nx;|)smaEt0(>ML3I>r17e{(w3vovO z$>-X+5;*@U_27E$Ym`swfmva++EA}Bs-^OJ#gVt-QOM74l4iCe!jC$2i6ZZAl#HoL zrnZv*QB(QKP)Qi|K4eg>=N0^@kdo2HPwpdSxsE3;;DP7SOg4sPO{z$0s^NXx85@1m zc%gdXS<86YB&b9})!JI#8cTugLlY?&|$w>CqFc1uHN>YL0}#Z z$~;zP06^z6i}T^tI%764dD=ImtoeDJ0Uif~>~$o-xc~qn6@ef<6_l56+ELo^j2=Ap zBLjb+$ABH~okd#p{1Fi9phr(&71AjXR8Qh*ORIe0U>7KW#(;EL&q;$WD7R@b_5p69 z3E)LORQEz89mYe=PwiKzvnKND@f?&Nrc*VPo9ZiT4I$fA zEZDZ8)E?8LWO?zAon&8;%bV|#t$1dL)3G6MgfQ;ErmgK z+^gvfW(d2Y{`zqHDNu4Mi5CJy=a+w{tTiakeKE!U=y@ux2h;VsrOjIS;Sh1e^&aZ|Gxp-C?o=ff zy~asN;Lr3Wg&xQn;tk^QEcv#H(=?j>Aff225Kip>&$H0cLWe8b=jBFwIL3J2u+oDd zHnQTG>bWa@v@t(7f$`&rg3mmK4Zs=xCIIMpbWBjI5$m0u#hIKEwIq3wPgz$efLw3< z;MkPus(isp{mA$q4xucU+zqup@Ay_xajl7>{p_tp0pu$kK1`PYyy1!fNCo?YZ+M@qhd$B#EGHketuqYzOwRzZc-xkRfR8qXWmwl(_OpMds7iskvL!ayGcr0gAUd8k z(v>+WpaX|WzBr#^;AfhwB$1h2#k_lQ`lQoKrBlXo%F}+4FyG*TYc+tDpN)>q3o(&q z!*T)s?05B%u@Gsg3h~BngR3269G%kn;yP@3Ord;$a^=Z9%)nWjq-*_RColQoU=1T{ z9F0OS5pr?>svH215(uKu35I$rwsLh!u24gSlF&m zdKYu(N})T^k+rRrXE)LCyD073fU)t-JriVUrp?k&_Qvk8A4V(h5%7lYQsD_4gT^AC zmmeVzGYBMbOI|^jm+FAY&2_*4Aqr2sw=EC#S0LniE6GH+I|E3)&-ma{402;o+{1=bg8ze2w_t83}7cF$r7rw&B@32#t{&h*nO zBh<~kie@wSK-Qk+XtbHfmBKG+wo=UKrJ7ih-_vPR18|sztcmrMQMT!au0NzfGFjG3Bd##-%4&J2C(6It#78*GVy z>q5xb+2eeq4WPGMw~{%eumLCrUv7X<6~K-Zse$?n^<>|0xzMVl?rH>SiQK2Gs>Rui zJi_F(q>umFMn3;gGm?f@H8DfKgz=R_BItrkn0Z9PGzvO_O8%Vhd$ z{3+?rt&i%G!-O5$YWCtiFS!+M&-tSDJX)rL7rJ4^XrMiIV`0Bd)~0KGULgQcK(4=Y zXJcwlE|wJN|IQ1WmGJ(Ss<-E~CDzgaV%6B~MI}3)I;_`MX=~ivu*7PT&I*v*!7CeA z%Em?6ew!Og`6>0Wa;n(dV~PA_IJL!daWEn;s(sR|qRB$BO7#Y^a+|)^aSqpJ$FnN) zQuBoYRUoIe;epQN=u4-X1v}mc-|iAqtv3l16tYPB4ghHPn8#k4mKy-1!i3`R+Zk_) z%+~9_9B^D=UD@oGD?nxdaf6#{ZW7Di|c?($eL53i{9qYv*4M1Yu^kV0(FX0OT(1FY97S2u{6+8 zkE>J2P0HA|H^B&pMa!qU=0q)Z2 zH+1NeS`K>kKI}-

iwSL3y6GtVQQa1C1@$1>FboW;fy-9fAeQ=dW1-`0q5aT);Q z2;%tG0YEvUU_pz*wH=XW?KhjohJ#*R({&oh*-W|}VYU!@ZSHGZr7m^@>xK{mJ9e}N zH;L#5fS6LW4IbEB(Puz2>47LEZ~PvcH?ZmA6x={pT-QT3F4-d+w;l&5@$hIqx|j!0 z8-Q{(befWA#!3O1ZZ1F>*qmyyj?GBgAWkJUqvgO%H&`fu(w(ifu^~ZI=!S-h4H9rg zp4KpMxL+3=D|B;CTIUDQ+6g;&2jD>CDQ|8hSjF>Z*sL)5`hM831D>J1hjDh@8`znw zysEEZ;{fzN_OU^-Y2|L2huy+j@t7fPa5PO@`Q!5|Y{#?GeHI|>mYWCQsFnjVd%-Sg zgiSCS2s#*gVP&%eG( zdUa?lN5Q8(*nO+V?`V5YWB2Sx?6w_uL>CA6x84 z&$WSJk7Cjk>5u5~G0@Eh5X33)L_MA-Z6P3zCW0P7?F`H+_)~s#MaIjV6DY3;UaB z3`pUPD+s&LPmvqO)ZQYs7d9T|GMJZCm$U~(1!K~4?s$&WL9^bgUP>kV^m!~Lh~c$j z$x7HCtI5lc#s$gvj14g?<0+Q0F}e4 z3rIsdt0mCRm>RD5`M;Z*1b`z5a7GoR1(~$P0TRON!^Wp$I2@!!v+UddsQ`!}46Dx> zXJ9Tspb}p)R?ERNbK1FZ96`lFmo@cxl+;FD+?h%?s@XEFFu|#$`vKHKjY0t`!HwHZBCX>pxP&LkJzB;q2dWO%;+#ZlwhM}i?y@w( z2plq4%x@++59JweNnC^J?REKtuFxCEX=-CbKsHbVy`Vz4*3`J)Z6u2JvHO5iYKGGue$}R}QKd4M1%lfL@oLO=J&t0Uv~?sRlen zA7CJF*P}5aKAggFCEx_oeQ@NQwCUYQ4jecw=hWi{z%=2rgXPqI90l_HMkAsTj(ceg z;IVt-38?|k9%Vuhr%hH4D(KPmU)TTL7>m98m+#FrkC;u3g2rY5gPQ)(?o;p%*7i*p z8bcRA0LR)~`M^NwG_s4#cxP8J|3=nec2zR}9?a)BB z0BEW;tPj4N0(fo>nw5@yyG~-4X?DI2HOulP`EP7*=0l+?^IvePI=E;R-ZTod@A|L(q1lh4_hdle+#a7nj%e%?w zj|`Rb~*XTF}t|=MkQeTkjc)s2iu{FH_e`2k>(T zjqXq|rQY z)^I0;+q1B}W);+%VG6FMA?%osa=e+7vnOyAb6XSRnit?{!$L(~_k32|cB7y*1Yj@| z=60;4Rg3Ywv745w2AI~#vVNJp_CCgXg2D-(%8G{Bku~a(ms0I)*@ru;ioDr9MDmDj0N_x# zfjk{)k&l2bulu9d&)5B#U3X1TZ=nJ}+_33i<6BG{JCkAzSPlTF*^Tcls z9#)*oA#}I&ycq2|EoodU-rl`jZCEHs`9|fVzEws5$T!qTliq&pZ7%~v>pS>Mkv%Mr z3o!`PRSQW`eNaiySU@$sVn-=DgqaKf&1cyI=4?;T)9-|KsVMqqo+JZqe$PNb@GF@m z2N^l^n@yW096W3dZ7GK@MkVFD!-QP46x*JzM?hQ724$%R+(N< z--O~lA-x;~&@1jI&!-!dwChxPK{S&28@zEw(koebpN(!eX2ERl#%uhLlGEAiaI`5c+q>)6?_0t_9>YuF_2~NEy?Mh}l8_x|RSMm*U`H zJuc=ndim^E*UHLON92;b2S{xUwxXbZI^40%evW7E2nVg+Kk_=fd|oL?uJ!k)t&~3 z8+~gxX^4Z4Ys34sbLnnb@%nb@e|0D6f+!MaaAsUHoXfUdBWk?49Y?3&_z*NiJxQ$q zsK(zuKn`s`j4*cf<;|ZjMeMdZa@%J|$f{`@WcdP|{TEwNk*Cj~7Bcus^)#Ng*sVu) z9h29eUL{Rh;(+Pf`kN=TCjMqUze?HxXthN+vDf}%p?u_P!*M8eJ$dmPv*pS!gJ;OU z4593A%@>IP{HVAW@QS35H0$lhb}+8CgpR9I4*(3my92mQx@iESj3B~^Dk*^Zr~YY@tU>JAS+8uA+Ynx^ z>f~u@-ma<4etos9TYFG0n~a0L5xrvf+THS}=ayT)y786)(rG{kSv7OLOr5$(n&Z5} zLpXcyx|{l;U9IIb4pVN72p+5FZIX8ond8pSjFnXjHp{{}+vPTddE1S+xq94;#=2d( zY==yoJka9m-g5Ui1FEy%TqbkYg1^wG;XPW)6*rCm_&Osqr!0qloso;L8f?e2XpHD5 zo?RfLkY*G@vweUztz5WSrZ3qIH(o6ng2*o#1>^+4qaMYw6S0Ez@b1Pf8q31zYh=c( zZSqkZ=-jPe2ebc&cORDDzqAr(Nj8-0uODo?to5j!diCqdPk%i}2Es#m>10F|L0Xl| zqkmi^etS^+f5Mu?lju+%jXuEO{`^Sj+T~~eVG7&V-Jm1 z9-C74PXJK+yxRb`8~l|=VjsoKVG-6M3{X*vSC@T{*{;Wxm#O2AkC#DdkjfNJuiBFY zE@-FO+;A~OD`TKxJ=Hm)#hIhS9)x{HI(BdSNAD{5%j~3$O*smCpLv+`y8kV4KJwC8 z;N!3JFL;*9al031;l+$uDMi8(2Y}T9S8kTIF9ATq2C2!3FDy4Of!bYXKq4sGr97x~ z&?K5{Ty%kCRVhoz*B?^6W}(9%%6E-3KKtU98eAZfK(EUnpq6Su;214W0iYh#ZeBtI zfZXw~rCA&>v@<{;r+hUrN6G+=0RZD=$5BTDzcrTsBBp>t(cCrdR1xesMveX#9n1LT z3h07~E>%uHnkUNTX61$Ax-u1N=_tMgc-+g95Q@SV2YEzMRH6(3RY?*w^2*5A+?B!$ zNNEK8^QIU%CEyF26K?F%GZb23q!jAHYyUTRW6cOpoQp!igo-PGk=I@6{UhkUAg`mQ zJQd6;Q>QO@9aFnRHCmp7P?N74BhBuzsa!kAh6PtsTMg*Z+h+Be0!F&BO!wxwA*44i z-qM|E$>u4rE4i0}HfamsN)Q$X)JRAID8RaP2k(?thadV()k(S?)7G}Gk1V2k#cwOe zy?hA(x@XWzb%2L7>is*TIWGW!Lrd5Y*N;thGg3dZR#eASjuKMx_S@QBa zY1OF_qJp%Rcm8d@4F6P5={~WW{Q3XPkbx80O1~?5%Jbi!C$-@n)MC8X$J-#h)B0Z~c58 zLXsVmJN|L3EPH*Obm-FpXCl^@mk~B^{HJ+P%e%kb;^%hTVREzJ<`_qqp0$onrW zm-RSa=I*aekVUVpmTrUE*%aho{%e6;{vf=UgWAh)5z4I|Jfu|sfa(Ff^p?T$>=W~C zD*6}z@~w!^d>j!dUVmw=-2at{^2Eb4<;L3vSe)HgA6qIPePFOOY=Hxz5$$8fYb)hA zJeVKB*?PwhpTr^8r{pz6XlafEv=1RJ^G&x8l(vY9@#ud|mEj}X$@puBB09)4xewvg zR?OWXb8wE}U0<9iJ2vh!1K$y8XH8#=Y3bqe^Y2cPdp|c`_Ut$$ufxNtAX;T{bk7O7 z``(LW|DMCBYn43owX0;^lFjla4ix|77caIbA?w%emCLRhCJ+DOJp;B4a1P)}J^UKS zuuQ&rgna*}@5mL1wlVUO{_?$VzAD$@jK0>LTF7r-SSp|Y^h9~_nYpqF^?d1blVm!g zaP;lpUh2XF`Q%S#%MEB#-{D>5`~Ug2Jcx)QI}vaAMF8RZ9vX*p{7wTT?~zNc9wgs? zbOzAkIr$38P_X;ztLx-%{{B(`(ycNDz_%e@a&&q*TN+;38EuYV7^7FmoXSz!dS7XP z&8+a{Qu}h+fS7D_P8=X0ms$CYV1*wWWD7gvrq8KKaDufPiTUL^Rb9|tiFaf4hwc7ljw6@ji&vge5 zC~J@LI`Ue3B8%Ek8ymfy`lu8^qLMtL$B`U~c+MPKS#xzSD9L4kK9X5pNRI(NT-b&W{1N#1k{P{^Ht92yl#7F- zrP_H?5>nLr21AWJAHg-x@?Satv;jP;Tp;~&AWTn9ISC@j2>%416F?+0IM~~Tr+3wh z!kt}oeNx!*c4Oh%G7)61(I1{Z|F&u25F8uGGDsb#hy#e0T}w0NmPZ$~j_U=IY~_{% z0+g4I7|FWrY|UUdIGR8eQUn-D)0+w=AjPykkCZ15Ao=XmjzA`wk5joW+63m9E`*WS z@KK%fx=ROtT86jF#p1lz`yp4BNnl*u^G==k;xbF=yc1~6wC4rj3y+-B8j?sb+&iO@ z;2kQxG`QY{VU5U7p?;aqS!Kci8y$N7otNv)aZjppnIPQOm8m?Cj=atR1W9pYiT_Yyc)94KVcC`?8tY(w?asa^XCy0rA+e1U7aj({x z?mZ%NUR);!v7T?}-TkFer{+?HFj@0{xl+b`ZiqB!)7U(Fy5U1TgYW(Ke3^jhSiQI4 zx9gRzS~+u*%hJsZ&=aLkI&LU7#|0Abs<^<~mS7s+14jjaohSyOoXp8u!! zWE4Drtq|+>jUOyTY+875ZtO3Ad3=c}jmD)ti7DY55dT*<9_(AUU%HL%EUOU3Vctty z<@WzOUKS%HS}k}ed%=sSJ6E?a-YEw$-8tl{-ts(R`0AF?D-n}ey+n;LRk>x+E?K%1 z9xY6F-j0~Q&p*CMK8o;c`?ns3N2H}P?o4r}O4(%W-rf){f;)Bw?dlMORT|asD zmkY2~4jw>w%euh>cBaEN!|X!U>)~ z@y~C|wFn1TvzD&4!|rZ?Lj7ynx{;hhG>=-4%`1OiMF6-9Q@{YV>cM*nUNp?P$^)Mn zC-1+tQie_FC2JRLMR>R^^6|eOE4u-r^uYV}U0TZAS?lFW1%UtcmfZW<@tE2^EU&)3 z4k7F6*;>4#koi6LTx22FUSF_HK6~#tdF0o#!DB??7}!?&4(%$-7j8jBn6C1x$7UmB zVM9C1`78k7NJIu1iO_4m{K<3~i*R~_Ms$pMosdvC9n<;(ZUz4wij{kx9JE7LZaoKHcX8M1IZ2%8*(YM%L^ zO{T5aKZiAG(B{Y)%TzdcWE;t!l>mj-w>tRBM&2NVk9mdZFGkL&B!63btP#vn<|Fl$ zPuL_M3uC~JL~idttQ;+ChY_FVbZ}nOk$DkAS;iSrPtbpXI299UdlLP@_h7K|v>+%jL-l%7+f+YX zV7Xp8K9ZP%{%C8`hAeMR>Ep}?r_Xlnsy7e!)zcT7Hq2$e5Rl`z*VF;RH~|s2VE(0Mpc>HGtAe9wOs%064OoMTKB|fDEP<;DLHi zA(;OAKLJMA)m%Fg=%e!UP)j^Z;UFrtB!oflU$~N$RBxyQK9Zjuv#H~#K&ojH4UK!I zw0*_%C?PJYe{*NnJV0A8 zJAh-n`6REO6CLZ$!~4gUYwu(ajcZdC18p=U{P^^0W`K*<4X3-Am?s->qe(@Y43a-H zKC$GeqO6y+C&{@EhLMU)ET9Ce)N9tMADhN?nRzp?>^1p(Q7L&{a~K-LS19AzV8o@&Bum{ zGcs^sOId+XeYf5}O!i@8#=HNqL`HwUpY)y3L!SD;$7wGt1DNV) zYu+jV;Kv79T;V7G?QLm}FnM?0KT&@1*mSw~`6uIw=QzAJ)tsSp0$rLt!6Hmp-^jdhqOWuL14lmru^a5`nt%*-wm;+0)j@qQ!gUz6UVfz5S59 zidf1z^{f$8&bc>_0~q^atUU|+<4mu~M$KtYQeV=K*Y9B>?Dr1gC`E~oVTg=H*l zr*=ES;c7Nk+d!7NougN?9Q!PfkJWBE6E89psRXi7x0UPmnh?pXvgN;kQ$BuVz)$-h zbrRw@o#kCU!?P@q!nF3-w71*zRDIMOn8MQp-#DteY>NgPD0bfX=tAm{IIl}&Ee6c+ zr{jm|NfMgx-nHktRDg0-kZ0aJ1%UX@o;^K`fdG);)DGQonGuBqXjh%LJ`$B_*?4Y2 zguK3xwQ1cD}=_;bc)ZyyLkB`>uHO}eVj}!Y?bPy27qYRSVzRSE%?3J5G7hprl?*hf;Y)blJ%7$WSNKX` zr{ItZn9B2OOQ*9W1po{gq%{+9^ceojXfnzqZr!lODD+Pu*ri zQ>aQIi{J}iNRkMhU$z0mdM<@WHSiYz8#Mf0kyQbltpiE-xEDNhKsPLqMec3Y5+kjG zA6(mdK74D}G|!)T`B;t}`+_>`oIn3<05Rl_-n$RGZZDnOO?qMT#1_OzZHvKiH#}7@ z|8b>UhXH&0`h8NX1LD`N+AEt^9hAX$50L|__ei5|Eo8^M?XrHsUYYdSk#Yi_llt(U zo!E0s=KpZ147{h8be-5;7C*H_x{PWsjSy?~#NOl52-CE0|7d|sx_^)y+kH$H{Smu0 z+tkDQzH@TzS1*#4Sbw;2`d%zfJTJrU=_#!ce|5*=UD6oGNf&^r;WzY?mmXat z_26=607}6zDex}d`js&D5%m-Z516Z9HJRQ|n?~-yeUvKzem+ETgby?jXE)%{w=fZHu?dtd}-P&mk@4vd@f` zDTuGT7i%0p@eh+^?sH3J*}FSs)JHl?&oN!h^VhO_OIeI*;f6RSrR%VE^5P@#Fk(&L zM{eyWP2ed#e&B=w>=!^=PXO$Zm?l;b*jU#+f{x$+bPjjT0?5`w{4$+pJpd1!Zcb=` zb!sbTtd|8V_RA+994o*61;8sdmk4C|(Jzez_{FYkcyBwvYy14y0OTH-jJ1rl<%tJh zmmB|e3^q_y$rP;HY|*Kq9K;mx4YoG0qikEV3(Eiymv`4e`QsDwe6+9h8`V>0yt+i@t=lIp5Jlr4V&mTX$S+%EW01;=*14sb)^B+%_ z@nbv5;ETG;qd%M`SHJ_J z<&&QogXIAS<+XPE|vhgd|Yh|P{FxMM7Gz-V4m-AM4W71gZl- zz0b(x;q~*LpiVGDrZ3m^fj1CU$w;D2 z@0>22=mY@-6Y#T6?aJ;-WyC0Q$se0zri%+i2rZpX6G4_^fY-(a6f-taeNl zZzRq})4pJJc=T99kYIOdH~e0HtI>M|65ja(oEaT@2B79CJ%I&{J~htH?e1tJn|1TM zvRp>^2!jv+-qU(7jJG#aO{<$0iZb_35xvav6u{LjKuTu~&z?@B(>q|uAbC=$7DZhS zyiC>#6oZazfGFL3-(+P?Bq5Y1f4LtoukZ8TMS#kWe#frfINX_M`)RojTv4V)@vz?x z1d)**K(;~4!2VsI0#*=A;Ar5`-u`RK!J}to;IKB*7>nuGuQ@2^z?$`2k4jqrln(G> z?Z9S*g1O? zJCGY-XXq|~ody6$ZLn*0E2c2*yg^Lcc7>YZdDnyLN0KN8!oS%@>Dp zIt~8yMEUADowIZ&mIKt5Dy$nEGoY<4IoJh2sYlwVt~Az-IY+9b zOUs6`2KRA3kBsZzR*nEzt^j=+I;{%j^~HL?6L_`_-eH83kzttHZP&h;EXRw(c1&G& zK>XvT0Aj0AhQ=Va9sIBdEwM4EJ$C1=z>7g^$h!?ZbSrV)9$>l|b^x!&3xw|anK-yT z>Z&7eFWE(t2jJVIO(W?G;JaqSKC?M{u{q~B{sus{UAwf9&07!3D(Gxy(AEU)ScxS7 zItUHI^!Rp6=N|-*dPDz}?j6wC8kj~eM_uceK4^ybD{OzV;Wn7l4wN8)&)s&gnDoi7 zX(MDs zO4h)COaB`|D#uqmP2*NYW8DBdv)q=uDb2=NZD9zel5Hh}D*=R%^RpqR6be93ecwO(Ri{I?*Kp-kO*t7qe#)uU1rMKyyL4&JQu z02ykXYIxW$V>YHeYoRWao5jS$Jv}M~X*92%GiWjb2+)I%RR`3-*>N8LIC>y44}eB; zU09~)%jtP<_|`bVTAZHQr-wriz%Jl^INR>e|Bb0Y0FPQ|pG{Zb&yE$bHo`LqAi^^T zK@;jx8Vq>aHD#^QMo#N_i2%LQsCIGgq0@|dHKNBE08cw?5P(_funjCqJEoMykH)D9 z%WUTmqK%WU>>=xx!}|$)Ad%~=1~wP#D& zwG|){UfbgUHVOb6z`J<>X9%{%F5XS+_sebgs_8vx?^T@Q5WEoFC=(xlI{ zaWU_sa<&tsp*`5KtedJ&YdY|^F2J82&u5SIyh8=skh8Mrq{>?50We-4<(;xv#TXnc z2C^2fM~1+IZ3p$?JU-ml!>W0Wvm5Q)BIpM4svOSh;n;Xw3)9K^Th~XP*7E`pw^{%c zjcz@PM~?^6y0v}K!TQiGs~csdGygQ7>W=mcI|vf|M?NlV3HzlAZJpd~K!gqC=7Q|O zv0rY7vklTj+Oe6}o);$3e)w~~6VtZY$ID8;SwhC8@w`mx_AZYHMNvLzl=d-3QUV3H zxn{F6opDTzS;?YK4sEoH@d=L{?YcKD+T(4qi4Oy@Mcx3lT3WhY5aHxlO>TS5DNr^h zk{5g{!=PoFV*D?uCQ!bB?-eponkmOL02R;UNp|meajN6Wk8-Zq+8fFeEL7QNW+fJx zTw)|Gndy8~tm29l>+AFzJ%JlH@K-st8%MIRYnunqzX=laeWj4QcR6HpJs^HV`D1sl zP5+u6leWYnAH`#BV3-jb6&(O3e4y-D@q_|E*Ai{8c0liVC6F+^bES*)1S1*nkhR8j z)0e#QpkSbZm8g#jVAXlYruQ!jWhaiqpko~emD&H4Dq{`{p+XP^ld_;Zd_V;)t_${d z87adc*l(tdQnc`t&N^(=#&q=Xcwg~+Rti~Slw}ae=pR}}tUF6QqnHUijF(&sXduOY zDm-Sekq8&V4y#&woY;$9%%qyyP#<+X=VZ#*lwkAhg0wjtIv zX1y^Q6uhXogI~dYH{wYpjN;HVmu2W%$SdUHeVgQyF7CskJi>!$T(fy59!P8H4e-$m z6H~qhA}wDr6|8x1PeZzKs+Z+zln)z2Lof7OWsQ6Gr|I>#0uLQ`QN}3^#c1GE@9DX4 zdLP#q9MwZug+Ww-k=9Son)BF|Qp?k@Y+9+ko$8syT8HV1f;4A{K6mwvfyM@2wAThD z?+*sRkXL`3hcM0xLKO-CXxwuLj(aw?S{qeZd;?bA*He!ez}*1=J>5V-x+o9U;p-?1 zgKTRK{kH*z;+d_dQU0Lxpi}R~;raF^t>6Op)PoqkS$|tuzEv>>G}Wtf@L&mcIvaRW zz-wUG3yrXRDliRXtIyya&1oF~YlAEe@+sIsn%Y2VN@uL!(fXAl#YW+)v9p;~H(hU3 zM*2+KL*7vL6)f6@BbBMy1hz->Qbau9TQ}cmcsK=#H9@z|b8QMamQ99_Y>@yzp_v*;-PVy1T9`?cQD zd>j}^t&g=-7E9?3R!S^gHM?L+sLJeFG>7VIDwp?T2WYg3#Yfo%K=C$b>lT#c^5YII zY5rtKiW6G4!rOS^LCLuc?;^>z6Ph?d&JT`ynS&LNl^&OSCDr7ubETk|?a%HH=auul zykAbA25SScW*SvE}#V*l~imUJ8o4`n8}i*!t;lN$ zV}vCTOf0rEHq=_$Xj#5TPazv^0Fb~!jq!y-;v1RYPuHP1d>bg0F%JkXG_zDP z3NM*H=SwTo;5$yJFFS2&lGUMa;I?TzH`VU519RP4_LLb&v}VyoR<7YopePf^0ogtQ zh4+U426Y@10tsd``L_rDgk_HE#NgrG`Y`$|Uz+UjhL2L2=D`~#I(CVZdKOkD+ zZ`T)kMLmrJv!W^|n7T+7lsu)G4Bm%<%(C!!zDNU1^eB1l26 zbFgLnbX%u(No8Z;2j7~*xO|1Wi4q3fUYN0}*m06OZbI$5AZ5-*sa!DUW z=WUF{=^0y}0tKYjXg=z40(pft5iVZHs~Fd;8td0iLFlsEKo`ByXM=0dXY^(zOPfjp zg(TUS@Cxn+E!7mXNRjl`cuZNEGsJ~hmd3PM))tbkP{v9tn7Hi9Kmp~x=d^mgiH;;c zr`dQ_D1iS|TUmyvbLw5Zr9QI8kUI5A%Zt89`$|Vo=!e&5U%9NTIazPZnvC?M0IK9?5T_CUbP2tWQ)DXx}NBL1%g@*H+zr>^Tb&>K0S;C1`<=* z9EC#-10BWao7Vv-oFltw95TNAwP_pQFCNqXx>c$^)Eu*L5ZmS$nzav0#m5*TnA- zY}sMizEDzs*-W|;gC@OiIw%)lnBB5a#Il=_PZ@wv9YYK;^-IRn(?qbNgMX#BFHXl# zpv?iI)ouBm?_qR89tk*7ftghK??BS>QywNEyYy~jK$AB^_IgdHvs(*$$}*@E(Z^^= zqwVQ!(EGJ_fxzmXP7M|TV9=A&U7&x3P9^E(?r!xuu&DrmMyLN7IAgmb^qYZCm9cdx z8V1^bt_3k5r+>-^yO)o4q32IMJd~e;wX<+ZE6`VuBBv+Z`-i;d^+Q>DR-kPbK^nVf zIuPK`>qQ!ZO8`XB%^1N1j3yxi)~@l@5Rcxqn6Y}GvFRA)6zhSgBD`saOKHcQZT&q$~7J2W0F7({;du`tT zgT$yerlOcK+Cck8!$^Mfnr#VXrcouoFe7T-SZjK!m-OpBT}!DS^^RG-f?d_Esl9!> z2_j8d@91Uoa@f0EK4vD2UeD^hudJ&OQb;v~mKqZSlmgcZLM6uAnZ-g(_aO zPcKVta;Z4jva+)Auiz|ShWxo+;#zHn*?qnCqU_6L%)XVng$a|giT}uNPw%y{yJeYJ ze!~yiXB;3U#W7*#I#PQxk3y598{11Pe%K~VPjA+rMLCV!RI0X7L7;8Yu;0{{*wmpO zc#G7b^x1uaJM;G8FCu!xbFDIiz;Jej>&L;S^N~}`t^;a6v~0~!BJD4(jaycB0g=t- z6u2naAlzH=t8WEgi%y?xpD`ipLI{yUAs8rtPXc?cYJ~#n285tD)Q%{CfF!j=OZLqQ zCOYp~>FvNrF@nCJ0+eu!bK~GlsZd)E>*dEWQmQ6wo-st5<{czJP69QlB=RE^JFW@N zNFeW3f<=q*Yx+(Al_#f7v@Qn%L4&OU=Dah+nm|^-H~ARdQ(EVplVOAqOtMY_ea%kg zN;DSW&pKo>UP;xQg;ewO!odEU0AbP@>!6gl837N%g9M%Qenm%EW<)26jB z#mebRH%hKMnlu4Rs{wg*ou6)4!MvwVF;;rDqU~X?DA6z zuk5`iZ933tiRX3A9oDni6t`=UBS#w;bfbvYqj8TT9G}cJ`wy@wmLJ9PyCf2%H=I9u<|*_vH&_7`6F0c zy@H_E4$M}abG7$YI(y2FP=K-ERRw?Z^J?arEpU-i)})_$_hHZYutFs~pV=)3a`9dj zn8M0V|9Jm#aOH19xw6DpW(jN%nwQ6Uzf;gk)>DxyB}Z+bXOEsdU9J$DICK;-H<;ej z{;PdP%Lu!s_Qm^FEfB!vDylnVSa=g{L^2(vX7F2W1Jio9x9{Y3bKB(BiLLiWGkuH( zp#chx{Po7cpXF6O2>_TBQ?nbNa`z(0BdDRtjlC~n09?q*Ok+R@%ngTu>XONp&{Od;S{LtqUK4OGTk1G3>^4QixgI5VEnkolFh&j%!48&?wminL|P z>7F$|N@7gQ@(jT;?ysf_k5H`V<1kT(&hk3|bcHdX6}`xxTN`{GRdgI{PRw0K`+~Lt z+!=^W#)>_HYNMI5{Gwav({kgF=}YvdD91ZiylarhlzZY;?t>J9lWU;3(78lMAxUQS z=|j((*yD9^4J$1m0bqDhLWhyxo`nanGV({P@eA;1YZH;yrtwf{L~XGtT`MOxg#_5+ zZ}kFdd(NT2I1DR+BZcnvJ+S_$ z^u4^Jw8X}S*}q;PwGmfWcgJeTHH(+4?JjTRjI+FV!%sytI7^evwz@two(d`!qt! zu|sO}=JfwJu| zZ!n=Ac&z8=X@_i}8$SFnW%VeY(FJ;-)x5h%+Yn{x4&Mzp8b|d&d2&)Wkl?w+AVyx> z$YBb8-Zqffq2~B$ySZ^sH=3x^Q{|^+P?PwldQ}I<;Hc15uT=-aoR_j7-?PorX9ipf zvt5ip6~j@~RzBBkS={-hD0`!_M>Wz#9{uJEAL(Ja{xktK{>}jf_+nSq8jg%K%2+|c z8P;Epv#cwRNfqt&vJDIvADNqf*}__hPO94Hbj(ZG()29aN19VzF|Y>T?X4vK3SqeL z!pRaKQ*TG?VSAYflpXateH^-~x6p1@&|Gd}%rAp9=Fv{m6_<9Dn4USW3NL|sAKg)s zgdZ=TnHTidx!2CXm#*g{=u>^SYk#rgNWh)E2JSR32QAt?ede4_YXCXAQnH%Q>I(qq zpwIh&!+i&tnx23%048716l?K2kPQ13Utsgc=k8p1WC8QmSn=ey9jl~weJ7Ku8C%i= z{3Yd3dt>EzI&F4B1jQSKrcxlM0&@lhAFON#ZsFpjM+ynmW9V(*8<*!-Mz{h8(pO;z z^Yv_;2nUlHpt*e-tb#545v&T`HOH3S4-o~B$myda#r06_pL<0zY7+{<3QwENe1 z#}1M}764lEV7U>|XK^eJ>+$k~k1h}OhO$jrCb8Boz+LR}O{(Ka%II)F7hXb^#?H$0 z`8r+>(lbk%q@+?P!}mpzR7;yZgt)s@XSIN7uan;=@EzWq2ZrZ(dLDqvIwv}xZ!_U^=)cmR$zPTF9S`?*a&s|Qcd z`~z)$`ZkxIW4p*pKb*sj5%4fJ!{7cL$E7CfJ8!#)Yej7gs;0TwU`#>|grh*UKNCJ8~;OLs2IA$c>cezn@jX2vi-3sUNDcC!Va|P=nG~Hj=h~YG zT8!OSpFu2S?1*jI0(=HtM{q!M4f7`4kMb!F@VGRN~@YhcnQ0-5hBEdNgkbJ&Hwn0zNlJ#FS$=cBT#h zXlInO5oZk6fF2px#7jjNMDo~*oz9A$yR~g3n-PV?7EE&8haKy(4#)85;>o(8NA=CE zM|5qos$q9B=(-U8gze-Qcq4tf001BWNklf(2l=pHsFC)`?rDWV=NCTOx!9aN?Mp>>-r30Ox0jrx=~yhH&7_>61y zqm}#)+h)|3%=Q+=)NBb>E4W=YK*!dw|IW?oUnRDPW5P(ckJ)A6ejP z`|vxan#0B?x)Qyaa4T2KQ4!vgv`(kDCxp7UMRo>W`RbVAN z2%1bFGw5|J*9!WzCR_RBcU+ywJu6-n&6!9rK%o#LID1`NGti1^s$tGq23!qv{d#rt*AU9PTHOqJV%RQWdehX%Vsm0B!)`AIs#o@+x&|GYG-^ zB8?N9k4ni6$Wz*`DJENQg|*e|^)|6y6FzCN0hNt2zBp~BKibB^fCLy09!B>J-r0SX zg-?rX_@}B#nShRPSS23=ywyY)f*;QyH~LvQRMZHIO={_J19R~EgxNhaeE=Y}{mdHw6Ft3y7!5bT85&-1+<5kiO$C(_!d2cg*vr^jjY$79W9cZFFqu>Hwu4%trj^kwfh#K(8 zHctTjb?AY#i0n}VK!)8D@pJ!kt_(#S;qHj?p*IijI4skiStXrN?$E1yTX?y%8fW*> z1#;@ct7>XoO-4UZ#}(OjsU#b z@ieYSs;TDzaIVH7%uR3xozlH+$qsq{?JaU6$~+GM*aYY7ok85%KmC3YJgVpA1{}=X zs3p!igr}?tzTf-PA_Hm-(Z&-vBXPo{F4AXo4>@+=7`&MP;OqCul&6=;pCMit`B%$heOnA_>BzX=t{Oe-d$$5h+7GZzC@sV8HRn{$ujo<8$TKdvUNdW(BaE2nhhhV@S z93=fR4$Hpz&f&=4-1zv~D@$dso(~A+y8E`_I1jR&0AfI$zie2zN&fWWGP&ua1EhWT z)<*A!<=f>=#2Eg_Rehw#z)p4^;$hJC%+m|xCPYfth9g*+Ui7I*G z4-2Ie0OJ*t2jHM+0C{wjR{@xJKqvL+oxItDRyAw@cXV?`iI&UliTw)e;zm@T<1$CB zh}8aEhpl8(Vn)foy|i3D6UI}u72G)kpEm8rB!j!xH7OE;ZvrFPN_~cTQ+4 z;0qgDGAP!=YK`=`k#8mFjFL?EeGE(f#&{trcvf(kRCyz_vEwL%veMJm%KIynj41+7*VNj322<=VY? zhI?lSPk=`9GuTRxTy)fw#V$f7i4IpqqcJ@Un&Ug`PO2Zs$w~3{(NLs%?J4QVQ|CEP z3xmZK@gq+U`)?*vxkE_q%iLn|*i$7B{M#gi9or|*Jh@7~^ux)rc*+`i zf96iP_G=U6y`RmKdR>~>A;6p7+a*{2=cTe9v3MH-$h5ntvrPTYENR-lz6?d^vHeRC zbz*o&ne&^)IG3%KT=c0CGWYQX29&P;%6OUg#C&PjyScRN(?;I=+AJCIxqi~JM=N>j zspWG0KTeW`h>LspP?cQqxiRwMf6tQ3?;MCjme0t0|FKXe{lf@pjz}CYe`^M&i|eF~ zBRW-i=HO|$?yI9^A3~?S|L97&<{M+AE&%O|56_ib{%N8tK|I{`i}%Z|U!Nq)URfm_ z2jI|VfUQ@)F32n6`OQDSDIfdW z@p1?Na>~OC<>qf)jOpTo^6qo1r9Ql(r}dC&8(T1~iRo(%**13uLX-_@EyJ$rFTefH zG`aWdm&s+sIx{!zXqGfE_9?|9pn*g=b8~(;D8n z8}1(~vtL*uE7u&52max5*@Vz-YnJbpEAAL6zjMtVFX=CjJTYB*!&7+e?PKKG z-^`NUU0cZB{l{fB&N}?!=P#3&o|z+K$M=v%O&iK%-RdSN!u6)(YVC&RXDD)nB*C)W1b9XBvmP1rh1>!V)O6Sh&Cpw~YBBzK#)g-uMO zUD;H>rrjeonWk(jnT#d)iZ3m@+Mt=zD;@D8lbykrx1=1e$%;Hag##s%RE`a#H;)pf z04YB!E#w>HN@4v!?2@_IFi!JQ?s-%#*rnyW92gk=}Z?5+f=OuY+ zy|5V2Jx?JNdjCR5d_ypS8vx0QL!q)>Bi`zFY+v+@BurDbc*FBL0z`T@PK4(c_*JN$ zD^UOuXQox{ZzH_sUY<(8$4=y&$l41%OlT{ zS5NB+RI0q=7DsZ>$_be{U+n?c_pw>dZQM_5qZ|b0?#wI4)2UrbblMpgeJ;^w405_X zvv*W(QgH%JS7^kzvn+&M06;IBhTRQ8)ML#g&l8O?4R53=iJ*cMiie^$Gl)l%ZD)l>G>URujOd z5kjQB{oDc>Ft~#qf_xetvBsFzoi=r?-1*?8Oo#S2MEh6I*&xkZHO7XLGdQeSqlwg% zS5T)a^4$+klI644$$(*9Wy{)KG6V6KJG5^k*W5Hh*1$VB;<5plMps^o3*s@KmY09ENbdUENpfJ3as_kQJK*}h?qyuEm*JOFT8 z2O;4$uihoEy|>BMRK~EId$2yQJ3yWVQ2rlrvX$a3kyqZU)M^G;xwk~J^DVsIe5f^pwKo0jW3 z&*znk(vmhh0uNAVheV^Gq&+17B*5aI-e2__^#F1(3prOH@j?-jg1J7#!OYYVj;bMk zzF8EV$G7I$9YY$dE>LxP8%t$#;Ey*P##3Ykxm*^)x^icZ1(2aj(VkL`xmkc@mx{_X z?1tsWgkT#zXu-nDw+`OV21W;;I469m<%BnDBwMuy!}Fq+$2C{Lm>R4N1L;7z0^-Juff zT9Ml8GxD-UNOCY51Jq>`MK(FOv?5qRDTmngn|AvmiJnH30HFRx9!}?mSI;A}7*7Hi z68Py3UE9TL>KK48yob8Z&ku=q{wDyaV9uY81ynS-}*C)uFr~OI!6exRAXF2vVVeTL%=zI$Y1X%? zi~)e#ICX>c{%Aj$|4Vp-us*FXrevpnZ#E)J)RL~f5zPW#xS=2ICQae_nSR$a8T{=b z(hPBj=ROYrc>i#D>k-6oMdPmd{Aii`>{1zV^8h)FSh{n+xmZU1%TQ@QxTE~#zh(mQ zfr+qy8VSRAjx~MPes#R8etos9|LJ-e`@PZ9tW#5&`P5Rm`m`rY1LhTS+=p8fVTx%t77 zvU%YSS@_~6x$19*+h!F7fP&2{x^_{ci=D;Vzu{v$$bifH$kX4SE?v7emhra@m1q8E zhTQ(wV`a%(t7Y}$y9zV3l_abrI^$OfB* z@C0rHko*`tfUiD1N4D=fAw&AKmZg{~zUkTlSd({3ssI8z_h~P``_2>*)b*Laxm;fU z{rhs&wL|1E;{Cq(y_quVWBp{rCH-U;z~01bhRQDRN8R)zxrKK6~*ir6{Nz_Jk*$bpJQs1RweKB=%>U|v2^Q=4 z)xWHkngG1z0piu+fen^!PptRbi&ptz|D{G%LbKfK4FXgeb6OS4!(6lptUsu5M}yuo zTfrA`P9a9#vfc#G+^U2_BkBseOKJ-{R?wss#^9bQ4T@=Z${CN6BLp3IZXnkNL~9>6 zW8~J6YbE$)DOm==n_Mr)^cZ`}5wki4q&iw^*PfRt%e)Te&B?(rCS+~Y*zY_h@LA?1 zM+FMWK)xrAHRR!lh_*%jx|uYjZikj5UmVrKLzsCFag+$?^fxjG0OV9L+i0@#s`cB} z2zs8hCm}|EZI6OAO`~~T`+{HgyU?>#uFED*`zAkd<+?!QwM)rexPf^nIm|glp$?D& zxU!q%*RmR`eoFvI23LyBhR={=dPad6v*VuqR#$$d=Z+oQl{5hl*H>?BSwV7VM>$>x zl`HF1(hZ~8A(tzErSerOaCD8-q@o}z-pF-Ofy)d43xE-w!^m;qXcVM&~r1hVgNl z3p%owjsP%$M=Q(o`u*}nB04bDfaNCA$#(mss-jucv|y<{FH|z+F}`^+8gqKoSY`&| zJc(edkh{``T)mGiRUN^{*Gptluq`?w57Pkt%gD z9d|;SU(`jG{b8}x2H0o}koEre=1a3d&1K|0!({4z&I0)9B%LPplqvsjrcC(cV6NrD znzshf(O;#gr zA7Wmzx>&ELUaZ%?IYTCXX0RLp;92?pZm9I+tCBbV z?@YP;%OlMDczo|MX^zb&uRb;pAg!ZxfVXV#nmy9CUpsmCsf9A;x_+_;p1%dNcgT$o zjghlh2YDV|w+8U8J^zE5a?4+hl1&S?!6Uj+uKLPItlv8)Z@mc5A=WNVePIQ5xPn;R z>joe-`UXsgZ`vnKJ2aEVm}-9N|4o%UJ~sieiC4*LOs(Gxu)1%{0hvB$yWIWR@p5oG zJY(3=+M-hndGpCxvh%?n5E z<3E2-?!N0H*}ZkYOqseKysBqs6zUG%wxH?Od&XNCFTAl*?z?NOoWwdl^*Za?!Y6+> zPwu~av{XSi&R}h4k3pT~#V0W(e^GbDD?TGH0JPuzwaernJbCmTx%zS;hbVjV?7NF-D$gw_NJangWg+5v102#)X#b9x6E``@K86W$prgfjACD*8d>FQ>u)CTr zBN|UaI%1t$*m9E+-%g*P+zJU_-*-=@V^hH1W&_~*Oz-0!fqbSSz**1})5n%3 zl|hzdRFLZl&>Hy-<7oXZ83M?(o4~*(RfVIYK1%@5_{u-3m9E3{wRl?Y>ZiU#6{x1n z2?iOece!{PyHhH3D5Q1fP`JoswfdhD;n&Wv82MQy8xU3^4y?^{`TE$)D725$%T&Fh z+ZDe!80)8eyG*_&^B9Fk&ADu8T|BOznZ+#6+3jLv-2^tQE4*1c{bF?aQ71}nEX?OLzXZ?X@g?a#Ch zXLQs_uV~zKc?a1AD2-RB?CqrD5)cLdve-B+&Q2aj3$gwFh8Uhf=X-#_Buf_sr)*h% zDN{RoML|05=WuTh>XartQMzn1hXOkTfU#pYPXXJMvE5ey8B@DTqn`e>vkU9G05%$89oz}5 z18fIi)%((3^6I}~UE052Dyv>wh0O#908Hzco@i|1Uc*{pJz`_owql>1=eGmp>Un?z zN415gt-fqtx?A?>&R%e2z>qcoF^y#_HaBeFa7225rXy&-PIv20*XZEm?ieaB{$ieV z$JF&9JU;+Fbw*o{qb+UPHIzY<`^xhV&yw2My=?M5aaOuu&1AR!tz{=b>iIKgWfS<> zyJKV74S;q8`FeJ2BB$Wx+OhMPv~JT-1`ca4yEY$0Y}+$(@Mx7Bg?CGVk`0=mXUu49 zq``mNaZHV_dE9~>v$`X8;>b>xZtmh8Ql+8bz=*Ec*{mB=Hp0WEJEBj6p3#^NZw4T` zZq;ttg!Oj4J2y2i&IVlTuHW%khgfy;w9LfxDv+$)egAmbzHYb4;^>i+GJnM$sRKEj zIek_x9^MH@=hTrU%Xi8itTi0arI{Q>o3>%yqE7Fg_pocafunc(CKk7NI_T55!+&>OOMlgdBv|bKj9u(gH6U3i39fjs5Y0aT1$LbO-Q2Tr1Bv!>c*E ze;aAjvAJx-n$MN%4oV*!`BN9=FW-K|ro_uxCbw)h9+bz5(c25qj5OqE-^!UhL7oKFrAVvI9t+=driDhJ1Oow@CUobwGFQT0ksD?Gvc5%~)8+Q7DrJe!4*g?%v z+Pr>v$hCX!;X}Ic_^E_ccPgfSsa6iU)LR>X&ppKU+wqQrD+7cMVq+tUfxl|>1c0R$ ztK8!hlf1sK^bk_J_>3M!2ZTw{`J4LX^GPa4?jF2I)Qe8vuTE_hj$*Qfl>?vpKA5x?(}eD_7Xy7e-IY9lt1O(kT_)Y!Po`tt zU^*ud#oJLZ$55{x@d7YreO1@EX?-|?#17+Yie0UG@E(dkr-v@Dj(2R zJ?h0`BrCo8!4WXEv5rvhSsPR)dc=$Vaht3Gcq<$2(qmq9T3GARIL}o8wI*i($OiBX zpVV|HtEQb%nM{P)>I_z5JR!@BTX>#d=iNY94(h31#cp8Dqh=s%F9Bo;d)#i>J;EIy zIc$tGT5NzWJWJa5tz2IMV;Pu^w6l~bC+bxG7+o>$=?zb0hcs(3DKB57(=3{Cmnrx! z{XNlo3dmZ@7ZBr9VH=GxIlbiz18nUnepuc-=2fc%V2FJ&NGi-U@2Px>=e(zd2Cp-q z3E=B^G|?S=4;WWHy#N3p07*naRD15VrLO=l2K3^t)}eZ2<28+cIEOSguX^Je>5Go@ zE!+|o3C42J`xhHK7|KogMxLir#_l=?SjLKmAw-bfwd&T>^5_>1LE|NN6j2pIC;c(|lfR$Stiiv>V~HXGh`3 zcRG7H30HbS6erUL*mbFe@c7ils@E1s-i=tw?E^&~ETX((0CBQX8&p-P5=m{1g;th= zx(@+>cAtRI-k*@LJkEvd^ymSMO(N;r^Oy(Ex*iP{H~#1~qB`JS+E`+=k@p;!*{uTr z8jV`NCh>9CB48+hQ9hYodWbm%j<~P!BQ&gB73$QX90#s&3R+dp&SN33HQJu7#{yjn z%uKqDmbG5TDipH;bxxnqgUx6aYJAUPpl=6nV5_c8<6q7N{2SjbOwL6F-PfAsr!AUhu1hH z+v#G=Wa_d0=@E(%PSDSvHXS5L{og+93jxn8T?tM?nW$3!Nh3(UlkA?~N-w1sh%JdR z#ue(muOn1hBLx9#(3WY>*6@F85y!@mi#5mF6xYm|`w8u!=TJFP<@hO)lhZ>x&&SN= zo~XpP^nfPS0i>{vkD7kX({Tj%+<$TD)nL zvw$?s>jg$0tGDts$%K%tTfkN0o2w!#DpfN)M8TH?a=m@gL>eNhepY^#W%tea5sZ1O zd|;zkCRz@!WK{=-7OlBChwbiDenlRQTX=>d2)B&O1dZhmcu-S#m}j>$F>) zx#L=W#tSkoPt%5woRkoUbwjQLfJ7TKzOIrU8$sfw!n}z37j=4jc`w!n`eu`YUJE1V^qzwX#o^N2g-lQz zU^Y5#7>5h`Zm5LzSyv76IXXOfq5#1TZB~yDKv*68>F!@OXnq70F(=i{KH*;p@tPen z5mLVCcn8*I>FrfYJ&(Ad07@fZ$Z^yQ4_PhLNv9O`AZs%3sKHL&78Kx{=aboBo5GIh zCELhy3f&_4vR*yn-WMf%AiXklm%= zeL=P+jA)Z8OS9G9pAww0^we*5eiCd~-X>c|ssG#Wh@}x}efO|s*PXabVQ2X1!Q=R@ zcOEZCR!`JQUd1_nMkgw;G@wCkOf8II0RT<5xEIr`nwP*a`($mT_O2TIbAMz4Wu`5z zCjs0-+x0s|^HP^zTNH0}f zR6}Maz)D20!19BF2(nU(Tc7RF{7{<@bO2CkrS?&J<4!z=h z)C$2OGvV66LbTC^WNp$n0$X&!d;G?i_nQ0^H>vP|AD z>IpuY>~oymBtaveAU8`@jVAeKz%c63vQ%%}7;BNSoj1g0MopPAq9?_z$9UF;x|oy9v_0R+5fn5rwY z6QBuWAH%ro0d8|woXau|%29xpk&Q~oHw+=WW?^*vI<4t(^Ia4Hxlthud|I1XiucG| zT`D)8GYtV8>x^BV){pHT3yU}M(oW=B+!j<8OM~liHuIw(F6;^GNuXEd?7EopSo4&p z)&VQn6BMd9H@*C5y@?0ZU-n?nYIPK!3WOC?S;0Z(akGDv9urT7_dvH4*Pv?v(dr7;Vj8RAcS$eHUnxX`C3>VM$(Avav1>aosG#vzLdWP_WO-WBNY(TD901yY?!Yd3npF|g zqrA!Hgb1Cd0pjerKQn@Yu;>+eIy3lhf(<}fG@GE!jgHHT^%rzh7>fXqg~=$(wf1JC zs13;?i!PjdaKf$L=z=BAcJI{5xU%i>39ns@L|H2TA8qdz`ro#mcm390Yww+%b4+)t zV#FRy#cHh-6r_TOiz0YoJ)y;d7a}5F=$+nJYpoR&1O<^QibW;0wYE(U#4K+JWvJY#m?RcKg^Stkv-~T_MQvI&=`+vW4&N1Hcp2suCVb1EAGxy)q zl~%`^A_bh$=>xcQ6To{|4K~lY?!4`~JYGk))4Y<2_xJ)p0bXZ~RLZeVuplt&J>?gd zZ|r)(j0Pl>0fhm!xGF?9r&uRQLtbkY(vQ><9z5+f;HM*ib|~!b zHWPDd-SxtkXy=Gn$v>4ZbXn+6;`DP*EhB}TR2@TNWZN|+yV4wPG5ZbZh1Iwk_Cc<1DnF?016KWW32 zr|qSeGh+-Vgy^k{oF)WlUpd8f69-| zlNfb_2bR77T=0`h-n z5{pi7xh*e4z*l_S2lnfCV%Y%b{O;pi1OPue$DcbE)Dj5&K2Ls{k;p!th0!*2wi%vw z0BYb4UG)Q=Ro37syqJgV9?rRr;7RU|1}}YR!SBG?AOkEX+Ow-zZ7C<6whe9vd`j@} z7JjOO%okoDk162@8i&l z3^pXAP^n~4!nWtZ;$#y5Ag)B3PlNv6#A?+h01N&Q5#>FqB_{hExDa<)|0M$wHpc`8 z2PM(YCLGa#xSWxkCW0)b3g-kLps4__A(e(FiAsMepYJA2)oX-^H=BTHOgtcFB9w$l zqN0ER9+J%W&}o~<5AJJvKTt*)Ni9F-6Tm@WNkYVU*juoFkd!#92qdQ z^@1<9vgxF?fYaO-Uhxa*CfxNaqP@opsw6wtc)LW(*$(oVFl4Hi6#W^ZjVQORdb#d( zkgi8kZ|F^R$(-xu`_@%~>aDl;>5}%<>0gXBprVfn`-@mohyl_2=<3GGAn3{o27m=a zuLi!=Wou!x=Letb+4>Es1fJvjs82GD?nNhIN&PYIuBqT-b9lqDV;u~+@LXeLv0EG zdIxdq+QQ4rj1UR{p8m;G)y_f5Mb^D^m1$oCMMhS;lmxJvIi=nxgbsSOqm6=@P01$T zAN=iF1DOA>fOXjTUA$qS4q{pfOj&*$F-i^~!P;Vsw#!4h0i`E=EL-s>%mz(J5$YDp z)aCJbS)7n|%8Fy{J?V=zW=jK{6dJBipeFsB_HNuz69gw~%s6(P0ityD8;m3fT4c1% zzb^nstB1yk_!$jLx!Gis4iR7!ttDn+oCQsdTCdBqfB}Ek=vl$0D^q6a=s0rv`_a%G zb_AfKc9^UJwo{J2qo*D3XhMwsM@L~N?beMJlyf&abON$)?*%J>s|9p&Kt|hGKT`1L zkv%0S(bS(iXL#y+dw2ccuJ6;%UUu}Vj&2wjx!Y;t_=b56-CXbJaNFrLu+-O)zND0Z zI+-J*gQtu^o%pVNmZ9KQQ@#L9ExHFNwk#V9{D1Y4C{eNkXtJ2PE^&o*VmBSBT}D?a zJC75%{Kz*+ZjO^pz)l1{MN+W$H{Np&(xI)NsUmsonE_#NkUV5rhO2Su8yJM7`SH^Y z;<6(zi6fs_A%)sjMcmB8nRkF$)f1jsenMjB67BCTZPiKkSbrwj-=Ai~OZ3TI1ry=Q z`GRtAZ0e2c_t33f2GqH+g>0W505~L5AASN{ZL3&&7~KqRHf|+`Jxgi7l0QT*WxZAI zx*=4!jDseZ#f%w0zSCRPfG!*h2;phe*sRyKzrf4t$(=e>Y$c%Bw1lcIpRCuAe;QZ- z!cZIe@d-1OJf!trrg_bF#q~EW*S2Z*d4qDppY?RUnU}p!q8<)WxJc^yWfF6y~X=kt2{%HzW08p=S^L3ZO z2m7Gr$`C6g{s3iO_F=WZP8~NB^X>M{w=j)vPR|)SWlPx6Mof}(v2Pz5?WUZFScj-% zO+WJpI{`c%4#wy_8tpW(+X!9w3GbPQWc?prYr-Po_8Le`58LY z+M7xfA%k9^%oDZ~G&O445$(nX>$_rXTV9^_h{JO--Ql$p7}=%hy4BX1uD=(ALz#W>5CELUDT2;BLQwv!>$;NV z-Gmy^l1mrhj@`Zc|pO&_e!W3@$-M%u8HY~3|Vu9x=JJZW*D=Fw*0Eir&y6r0jJ9-DWJAm!T1Za~S z;t8Dq_^vY11EYjuOm}_fF&>}c!3d0sqd|ia>n5ME7ss9ENQ$ThlF(Wy-}OmT$5!4Q z+?W_oi5(@&SP}On@xg?yng2;@4Sr78YutH;UYWE^iTk0+XsM}(CFiMh;xq|;{oA|j zK3{Gm4ailF>I27z*-1UhVZ@xHCHbr}H6|j2%c{NZJVxGyIkZh4X%ptuauldU`IkvZ zFAj_<8cGv~ld_}Zh1P2!V&t&_FZ|dBm?wnXV6WEf7f1UumUP^yEoD~wVCcnVwoe($ zT)@mkZg}&q*4C%qZzG>>(`670z#uk~4e1(-7+Q2kfn@a#9$NtNRo$8!Ft@&dl@Lbc5_Cw##{8QQU zoAS9KNoMPaAIm@zlhLIg@05D&-S`gpvzOv`d*jP>036x|OXJZV0Sw>W#Nm7>z$tyW zJ@LU~T?+2p6BzK}*E0g>jz)*Qk4PF57Py9Em0knhEOMFzP zie-~j_wg?e9?E#fna9XYjYg+cPyqdNOfO`*AM{8$QN8OfHdufJazQW%E zke*H;yT}5G)rC~b2+zo90F=LgHadGk&gw|uMiN*M4>u^2K<<3?tpfUPL!6u8e2YbL zDKP?>Do!-DK~KhZH!oAiZT9b>DaaQAxJ*`6rE%miJ6AGUz4!XCTK!9JPMr8u+$I+5 zF=y9P^tUPI132Ol$;H^`zUi)Wx@dr-> zryYaJf=yq?F7uG**ogQ3D)`(;zIPY#w0l*n&Wi7r-+S3g z7)B*Ya){CF(~Lb^s2t#we@t&T?ko4D3Pv|+>$V>}b^9C@l5w_d=+;+8t;Xb608wbc7aya(=~CJ4{ellz6IvGZjKEZT5OYELqO`B^C+U| z=Xc-VYv6Xm4FGt7zoZt`SuhpQm2>xqobgcr;Z6mY-tw(F1#8eIr0q?i`vk3Ikt{T>M{*d(8+F|GgW=wFn7@q@vb^6f?tt^c##{^ak-V_+_4j~I47 z67p#&y}RE*SclcMc!q~XHI$j;YQCzNmWz+v08nkQen|gdt+wE%6L3u=eCOfBmyf#% zeCzrYoF$GVM#|k(2q;|AEk+j$0CUafSN@Iw7R*ua{O3EQBs$SGw#@=+2k-@DttS{m z2j~CP&&lD5_2mR(rxBZyEc5`$cJ5MXG#K?Z4BX~5TI>3aVe?peQK##p{e7&>Q`88#E`f0BLcKxNr6thn6~b;xn#Oc+s)UiTDr20a7vO;6K#01zgf^hhMjPjKY z^B`Yqotta@R^T)Bk|qFhspqerh&)T_){F{Pf2D;!D4%$@eqMMHsGcf}q}=NglXb%Q zrC^h(Ubwukm%;~VcLbu4fJq$X-D}Bpjr*&)rwX}wk>l~s+xW@_hI$iNjn9ombQ@;I zAn$_nEx~K#I0p1+xd_b7y~erjo++Dr=3&W|;kId!Q~MOv4I$czMP2~BV>tb*rUOkf zytSGimlU1YV?}#thW7AerpMnToB?3_^Tav;@D8r+8iav!v;x~%8Z8#-u3W!WG>?jg4T_-5+2Wujqkz>xn(UOX0_ z2cTY_+_ifEw@gXfpHp6KM%TkbWUiwb9i&abY{2k2zv~mjhs~prKk=x?+VHL8`W~ap zoGU=I3~JYU0Q}hw-Q|0&8^HzLGvK?*#s1UNDbC@a{GA#Bqyx2skAuW<;)FQkia9%o zY#c_4whN_h0U%idqg${dtQeF#{{=-mRWc2_gEAF&CS5UAlZN!|_~B^sp_52PLM&$z zOUf10x-(7BWVM>@5RUP4PZDrd(a2H`2gx#E_MGeBW}dKKbs!MIg_8#yg1+XiYs!g} z3@Qk0qEx37Q%ymeI3^~$$8r6W^cS+~1{F8~;Mcce4* z?Ta?6`4)&p$LO-7=Y94eeP3)K;CYU^lh~S9JLxcNV_a-Mle8M2S3HcJQ}3!u663^8 zPJ~&j)5=#{v3)~yuHZ&X?EGemCIU=_z~A?f7KyI4@p|CqppvLwL+e!q?nbkYxnA36 zrCG+P=N++1=;DbK!HJj$cCG`ey=pFJhW&zJZeHH^xo^Uz!Be)Kcq4Rf&=REN?J!;W z+CV`Dg7|MiT*mqf@a)GDg`7yIg#!=EmmiJ(E`T_ETzYfei^UE^c-(0SQ^31br^9Qz zYLo=b<5$KS*KhGD5^ZSn;f{B$f!73gyA1+mrtQt8LIIQB{2LhDJY2GkU2h*rz9H|^ zGJUj+^&W99=OAxig(~Cu_Nbi92-XTxHOncflmNg zfu&9x{K*#j7OkTg))8J)wXg;#>u-N|RBZ>G$`2!ep%oo~wT=J$z)ESiJPl)47Ctd9bd0+-YLy_%C+=tN{drEi+>5`pYPwZ&(#mM|lGP&Hj30 zfI~*H8aWEc3Gg_Lh3{Fq-{i%#4bh2-82;gKw-Z{>)QR&JzLd__&nvSgl3g@OLT4`- zd_Knm{(4HIHU7O|V_d|E#*$o#r$MqH%H^Asd>O0lTLa>9y2h3+TrWI7M$C#N)TZNu zAc+c6XLW7>*o#wqU3{j0Ri)LOR|qMA_S}e(tD?9xi!AXScwT-edg}w{uj=oOG1O}D zO{9`KYTH(z>0Ij?&`-`L4wZeZ+bi%=-8_E4 z@AVB2pB{uZ;7fktSHq#}CgXxR`^}-RwR(WQf~+lz&jlbJGCYokN6ZvdjvVm?qb>!zuS5(Q)a-AC|OfDM_0TwI3Rc z@<+KzboO<^DXo&bt`H7q$V)R6__=W52$`}Z*7(>3VEbr~hf*$HAJebZ+ujYoG^3zd zoph>>nCmUqeLW)}8Kt=8y;MoK4eOCP0S9f#cHbUtKhUXt;vK)W1~G56c-hCaHWtxz zJE7?T#sZtMR}~?hGBIQ=7x1)pq}~HRrhRmPzrXTS50D(Jr&_Nd#!|-=Hb32Vjt8a0 z@}K+Av>toee)az9VT?`wO1su{`b%;Tz@|B}?p4j)n&Vtc=0@K^%FUkRr*4LjTYY|2 zbE@{dVV@8%4IIFp6T9~Y;3m4@4?d7|Jjnp&BQG(K9e9IKae>NpG>jOOy#Rpzop|Pb zy!U2{8L|K@3Mhs-AFFKi!0(Kb`5K=BOh!4e$xgMxBfFcC$s?3HCmmact4{24gY}WL z{Qv+U07*naRKUSk3Hm<51wBOW@X_h)m@xb@x@SOYfEQqz@LZ5b6!6Fz^oA}0ewMAj z9jkVjTvNdv{p0aysq-iQ+kYDfGl`%bb{r^KIj%=Q^zJ7{gq4PA0%Y2bV~xYcvFm(I z#HQ6GgYoD*?~u{iFrT#bbW(soKmCa+(!uzmqsGDX`sWajd~>Jea@0Xj`cAOBk%Btf zkLu&rfTt$_Z2d@w|G}jzhX^gDJzZPM-iXq}NCbaL9VVf6b&ht}!JM!x0Ib5=uGwfg zcqvd+ksUP%ueSlpf6^Bs6#!6hrp?1Mb^)ky{b`>$cP`f+fTxV!MNZlQ2w8msUj|?S zUS}BAYw-pE3QXnQyw*z}039$DI|Jx6CB!3Ox-8ivb+`YVV}VAOKfD5sXGgp0;P%@d0?n|MgkFj!j|YmLs5i zQ;LL`Hu?iFs)hgfy z;_JlZ>44RGP}Hppm@ahL+w~E5nZM+_)Nx&}g`RcSZkMTUWetS|p=h$xe@me;Lx%P! zpt|h%HMmzi zt-D@QP~0BJ4?}j~ZM$x@dPtj%&0Ff*_v%yByV#5xnXzg(Zr-Ul9i?;KGXsaD#D;g| zp6cDa!D!aT20*C5C6-FR<7waQs2#v0n-`#nPU5%VP%L;P-E?=81w8G>i`K&~i!BBy zicVC4-gvu6H=tFQ9gzgUN%sp(JK~6gc2p5BSb(}Cd<)zP4hsP3sXWSwt67$b+5w3H z--&i|0i?3>d+^}7xLoZOd$W#wMZ91v)~iIZHt0U_Xwnr=Dt z>TI)%D8}q`bB$uvw}Xh1bxkkp?x)EV-;Eb5aGe-7A9VC-k~nsCVjPf>0Ks7ZOcg>9+mq_XE;C0vuY?eSmU9Z9!gl3=g;xcpQKSSd3~1 z2;S=f{a)bs=B(q3{<;%6yf;DXr4an=1v*T+!8BpkdcSw9UAA%o8i0BQ!m^*<8QFUJGxDDYE?4Cb=mh7%kJ&sZR&xFp+LwAg zG5c~IT52HtUop@gZTgAJuUt$!)|^X`m4_b(sGKu?1=~5tBUv)ld5G~Cm--E04ow6= zr7Y)aIsCUHh2}fMdjL6h2Wy%bU+?JNb0n}JvSrwtkalb~cHhp!q0dFHxl0W7+O>=> zqneRPbrbK%v*&Bap1(JwAe+Ei{h0?^7kxmpU{GbU86^F$>a|SuW*5!+zYosTvGcJv zgb)R^WrpqRpL$*CnQzLmtttSBd6O@iG-8@bx^Y10;VA|=sm&d1Ca$hbvfz)PgWeXv zw*VlGrj3EzP3MXm-5z0%8iN*F+}DjHk%YWBorqWAEzZHk7~`o zH|SZ!TL4EuGy12$xQ2r|Tt*fCY9|__({j#7bO2%!Lv2(VNfzePe5K>hwtayj?qH~o zG)GpOO@U1vhY8AHc-%kf^!au1zgk&Wk%z<%)rDvlAk|Jy5jxhc)*ibJ>-0+KYTvB~ z;Hl1l4%FEZEQ3iWt^g&05A&~M_H`02`%FE4Gsr%phHj&@^8jdpGj|^N$X?fP_+@=w z*9Yd6Y~?*3-1Ud`dXE|!95KCI;A&NyCYwNJqe^sBmmHugIaKHTE$~El?Hdg43<^`w zs;-aQ+yKD%wZ1(1Wj)3h;uQvfzO?>qU@g!T8>k+S+c{+{1Br8P??RhV+iT5}`GlXJ z{}X3T;f?ysqe6$TT?aQHnn0^m0%PK{&0SAw;U4ivUwtm%{T#u` zByIl^oawIx(C*ZIhEA;pCfUox!(pUm7r4r~QBTw- zBcr4OiPb5-lk(?u`^EBzW>~sGE?v*ORBPSU?wb?indxh4qvphIm$+qZV3@zvG^b`9 z>|vujPrp+=pa`es=1spom%#!*g5{j)D4^fX8%)63JnER&%g-!J_^MocF1~!qeCm5k zaD%dTAE~0U?@a%`L$f1wl-+jViK$_{c6S2Ocw*K_* z`YjVy8(=$Pa7Sa>Mqt;v0H9bh$f4oJ);)r>4%Tw*W5f&!aJ`Ag4VVRubg~uE&CY-N zO;`8G6>=tbcw%i-SM`SHS#HXCYe$`Y$}h{PHc5s%w6s^iRr3s^IEKBcAT3S>EehTn zahkh#69+UX6II7aw`}FZDcvTw{BZ|PG39~1oP3NH;4e21!;|j#^ywP9J3-mpvBV_P zgc>~I1pvnd#_eFHNZ4kIT5JK{YR8$1bZDipz=8mYMrOiC?WT8@T6C3nIe6$gK5uqV zfxa^C{QTq;09>6^BR(vb>Yp`mp8#3BF3{kN(C#Rpc$#bFB{W3m69r%R=`?%+n@85n z<9UCt%Upj61k%*?0O;z=&J#V!glhYIvr(ke%hA(|on|-g#N1^ck+tdYeajbX`b3-U z?@34KO!YMC(Gh&?6EH76&2nra8zz3y1#dFxXqMYD*(3#AYCZ$F>VWC2XfeE|O7N$X zqE#1Py~w3EpD?ATsyB?kKY5U{oZ{UJd<66X;$J#`4GDteb@-N1K=z`_uj&ssr)i&pbzp|vt z`j_k(h6?sAqt2tOaJzc$D0$1Fl(WXp{SvX-!I$!V_1a^C0-5nt`+Pv0an=C-(0}*uBz2;= zItC6XMdXhB60kWDAehwPj5N`K4FgstIvQRDJZTWsC8;$kV)zi6z+BLQkWMgpZz4nb z8QBfN1CM`WXof0Mo8rMg#zC1||k^ z;xi*^=X&4w%iBF-Q_(xL{R+8LhlfeCQG@$NY|6+YBY?CoU*@;Ud?GNW-{Jor#d8{w zsm?#VzAdAD`AxFtud>bijHQe5OYCyLC1j?+$M&&TWUs$EM!A`UtP0&QseuzI^$&uBB2RVZn_TBcgk5X~PS#xXFBV06jOJ zG63fyiaU#4nIrt)+%~6;X-C4f_Qoe~KX|zkKsr3dTc=&c!Kt#-qfhPJEhAz2o8$|0 zygDtw#*_jN&Bb)&>*4(Bd%H(_rE9xv-H~dp-*RFbWQ@)YF2o!aW;ENuv~=~mAm$nt zF>kX`&xGq)SG$oNpH*M0KMjlB{*}6MRkxAL1%H4#1kiQmBb;HuGiC5)uaP@6W+R7w z%U92Jy=zzR;O#iQfsyQc$i2Jc6;=w8*oeWodR}isT&{fHDmdp1*1{`w!>4r;0JmbB zHjjs4g9kt@^3E}J=bFnvcX)|;J2frU8YEhVOy`Dgc7@+-0K4vwI{5JgKCQEs$)jLQ zUpayNgzoe?#{zk_?G5&FtD~L6E{_t(8Bxe={)mU_dL9JrHvaVQ)(Bvfaf6UPhp6U? zyF4{^@Y& z@ND25L!K+?lqyfw15%F?jQmj_a7Y~hAm{bj5j1s*-2n_xG5}PEL>%*B9Xabzk zk$4nM(~U00<7G1aF8zD$VV_ku?&dbv|J1qDvD8krGT#NNV-Z|_{FhNtK7~XvfB28J z%U|r;hfvo~K0ajjwS9_B?9QVZ=>9WU?F)W9PeQ2YDMPZoH&?8WI4B^j2D~%^d6;J9 z;}J~ft>_vD+>gjuUVTI>J{1y+U-6>>d)6_310vo-n?xJVUQzE02w2YeMZ{+m=gDX>}=`pI6+Y8s}UzxZ@|GM1R? z)kgCL^5*Qwp8V5V^0#+5SWdm9N1BRH&g{sgM`?_F`YO-z91n~EQdvF~$9dHP&mMf? z)t(n{7-Kf>WQQ&dC?1d$Jo2hKh%D#4->7kD350mcHS+nHeDPI{0P1(MgUa(DK9yMiuD1N7)Dm%8_UEdq(aY)|?$c+Oh^tc!BH0_6Cr_ zCQFxc@XhGnA_Hgk*{H#@2BBenTW0}s=Tvo5tCeoSU#ELJtkCt6wyJbxRRr|)Q7=vj zC-ZsQH~tb}=+Z^}PU+NT4+XPA0SR3D)4%7p#1}yL)A9Go()B`r*U{99%8#9rs9;wA zciXjp$Hkqx)A>>}<&*qK;Bzl^6x*d~T{M|g+1yMx6ANE?d z=pJ0|D3gsMqe8S4RI$%oT((1+WTd8Oe8k$FzI4tb4=imtX+EOgb{hcZP-7g;Avj;HHtbothIN2&UdRz0qze!{dX z@q-oW88fWXS17O#y8IAIP1)7lwJ^=BZ+J}z-+wkX2Bf5}w{5623 z_SScHZ!5m7Z~b%CEuVI2I%I1hNx!**?nF(bf`!q;QVFs->q7#4e$JV6N-wzyKwLnI zmYx963(-i0F9*(qK6b_4mD)%wzKDpHnC z9=E}ZDv#_q>*LDaIrpAS?~<8X46Lf5{)E)07MM<-OIWwOn1E zx)#!MCH4!rTN}3c&we?{S2}#9ZO>czB+bp-SnA5Bk$3uFD*??DD|qPG@izS}@X4P7 zL*8I<3U^1Z0aQSp!QY|fGWG|utpU%(%{2lT8+U3|O!NWDYI?!-MqkerXvKNl79)8t zU@tymkmT$1b&|IuiHu-o1aYj0Zx$pH?&!d6pKo{xm=ldG*Dwz%C!Wk#==0TSkgRex@2+gw8DPAF@C|CE)>z3cbbunDqt?(!C{GLfJ@$l@P1?xfv5bh|8$F4qu4 zHd(vR$Q#gBhLLK3Tzv&qE{LmMFRNPMghxPaM$0@sE9-VjRzLz^I#aFIPo{u%K6Yd` zFzY-4lN`66ed3hmTCayz!K2j}AnCFJ#h1_BZw3L}F>OqQEU)Y`4*0`sOdG%CxI2hv zM{Zn<>sQ+;A2(i~N&C9Bq)y_iK&}4T_Hng2+W5o27sMr&RNDHGohftkfM-9?-FhfM zT>yx8^=@C}yM~Emmz~>5VqZJdHD#Yl1DKOW?I)&}JL2sk_!SuFq}i;YcDhFGPCxZ~ zYbSU9(~T!S@AZ0Jw__bd_XZGfTb4)LL-!OYxZ2w+_zipyaOEnUGqNmgpCA=k(B!(S z?K05EV2DRo$z2+w@C)=FjNf!ziI(^6A<5`h-kK#OBfI=Uxp#H3{HxvOYox5LEROum zO5$1+aM6l&O;GK0qfGRaD%7JLZlt4p%f9i#E@JfPDvukac!|rCmjJ4B8!(n5+%DNt zRunwX6Fc5f2#fSR1v}1n(?4Ug;>=m|8haLus}0_^0eI60pg^BDbLg6W%Z37a=bU%? zqHJ=4>0Kjqi7r2o*{X?mUf@^tcDx-rlpO;Qq3VNtj^0{N7~GLV^gSTXJjNrA3@(3; zJ#~z^Et69d*5^C=(2skR56mTChFutiyy}P^2s15RBwPj&X)o^>3mrcfasy7Luiw!mwo()vf4wRe}4G z-Dm&}rquLN0vdB)zzQ~(r`#u)2^28=q)>UzEnr2Q?{)&_QM99%rU}kP7dIen`LY}U zNIfYgf0DFx3kIi7%y7$8Gub3u@K}oNRQZ$mLI<7hXvhE&pH8SnKOGSR;Elr3+x*4O zc&f`SXl$ny&?Inlb}tub?C2VILOfiVIt7nfXV>@d&Lel0 zOonO=;Ts>8=Szcua zPwk$ho#d%v-Q|o2G1geF1fUO*|c6T%?R_sGsgF6k5pvafJ5gqnn_9VGfy6W0Z zZ(3=C;w-}eEdP9UBY=yfA98+#xZ)Ndkql-YbqTtDVE_B{lx}}uH(HkG&mH!IEl5z);Fh#94NdyHy9_2gdyb&b2 zAGx9@z+-@rK^|CQH4vaRK2snE80%&WdsN%e_t+ueE7v*-InUNJ>pOafe<z z=NKg<6&G9O7TsmcwATPyZUeyYV+t7mZo;};(t^d_QM%E2>(oIUTaacX{R~(~C{k&gBUdMl<0qeN)=*xhQDVhMc=Wgy}2(&s0fhL3GGlRzUhiQ)@PL z7~L{TvvN_MI`xNUXilTw66m>BtN$2$Mc>uA==fYRGX0-`TERx`imq!5ce`!T|`N*=a&=v?w@>4RzgX@qGSTmzU%^ql2P<^vB3u(!If@R2>lLQO1k{ zo>l=oj5J6DPxI=W+bWoY77wWoNHW-nDdNwq&$rEcJqxh(EmUM?)Dm^Tr(ISuKH{Vu z@&=rBb|VIvJ@H2TL2KM)e6n#>e&Wb?S;?6g$2PiqOy>WEVSo(bAn7*%oMN?{vsXWVp_bN1`V)2719`c-5| z48R?2@z|UI0XMyxDJ%B8sY`<%zlmYux}hW|5<|lb8%t`pv@kAT=F_Lm=%H#PX{r?Mwg#RWxng7^{ff!=BZ{QW-O z7+CAVi@l@$S!m2OtcV{{<~{bUj5m)3dYnrJN=zaXqnwK(@GwRp)rNo;pl`un+r`?0 zwN9Om6c(uYZ6;}#%`*ak3=IGT<4e(*d-(x)3;x;-1OCz@b!6`-Wj4gxNdyYv8`rvM z{_yWR08nkZSLxmSCWc3T3Q|IGC?oducRg;0>XS4R`EXn?82XqZotoCg$>@HVsOaR*uVqDd09M>1a#%WF59c=k z8(~~vWEZ)a!5KR?R zcZ~6@N<#?KslF10ZSgD`#CJ10*+-oMQ+_JLZuv{#G*wCUtqx5)YqyKUs*Tq!2a@*s z2r$Hp5?|PV)#57vta+M;h)PQvnw1Oi0W;{WIS!McA1(lpRg+g0E{LiIHalZWOj-C% z+qYgUR>_Am{8B!Z3!{SkIOly!pT6j+n)suLzH1VnYu(oCjg2k}$aTP>k68Vzz@Kb* zbn)54z3P9~JYc;7rmlx$RIMXf*GQb|21FVV#n!b5BVTn(^xYA-dIEKD?oJgyHiyJk zL({;tS|=v<+Ws!Cuso61ppmeI51Kva$dU!bui$NXtqv})GoT(hcjR>V3gDg*NO^+J zxqW;U@FzaCp@ZwqsGWW`kABPxqkA2FrCU>ZuDf$j<9g=bB(>kURa2%8N4#AlzI=e7a}7=3HIoHsve=luDR739l|@;z^2 z3`Sj+xaer4oy0DE$AM@;Y{4^iJDTCrcF475Zxd@DU9m)UK&vI)FkyJI)LsApAOJ~3 zK~yyEwxc8fFh=@t;H}Zvg2)XsW-E!>U2XV8pS{UQ<>V~hmCWd$-$ZiGcRJX+ zyaU?EDPcZ#h9h|L4N@K5WgCbYfgg#fWBp9ItN2wF0GOMFk_)==V(^xY3}tUdB;zNm zoG@&5@tX&*bf;UOOCCcEeMgzT5#)^ye%G_@+-s3z^g`WgVC)fNQfp@=%#P1Bho{}j zs%w{yiE+`tb8@XBS{)6G@?2NKSFYO=YXjQk4KylR$7A}rJ6D~{BX-SDzbyx;xz2j) zag37M(+(hh`d4YY{YLbyzS=KVtKJ(NkSJbfpcsk^<_vh~*4Uhhv zqtBkA`eW@M*E^cU+BxNg?VY)XJ-y)~GOVREN+?ixjeu2ZgUA4{bVR)wu?1xpq7M8r z{?Qx2j!>=#wCp^C&vlpILV6zDoax?a2R=>1qe6hNzO`d`z48$HDF972J9P>e_W{-A zf$!%CWH)6R^lmV8Ee2UC`M&b{6TfOISq9 z!ee6tz;i;na2pC(mtlcv17gzk4e;u7i4qU5Cyp1Nu7+ta1ri$r1TVVK;9BoK|7ypx{vKmY*6p_V*p#Wp_Xq@-J{i zBLgH{pmr$W&?y=!a6yjJTGp0@z1~qPG>XjV*qI!_l-F}H%7{!%k7DzgZk1Q3BLD#E zIHOXUKGd~6 zvEvo7NgIrP;4$G6R^Vgv2aB-FD>ClmZQ_w}<^uPEX}!N#z~*bRr@tr4(2YM2LH9oO z;s+0Iy1s)d6s}Io>N8n8TJl=rz&=%-cPxExhi;opY(461-OF@k!YwmJ*3m$^LfE+S zm}MqlNMFR(E6Be+q^28@Msw+IEv^~@1hSE=;O|{Mm;d?`CB#feVP7Roo_&}r=dAR- z{U8_Zh-Z(0V!e3)?B4#iV~NYn9U~)!m3H`iy3RW$5ph34IN&6fnRe4U0Pxiht%o#V z_i2yDInkU=BIyHd|3l})V*>%e&z=V7F(Ri^!BTtTRFa=;o z<+2$={u0y-Zb+H9JdZcQuk;ZZduY`$6L2VNUG-YWz9zbAtN)1y<%HCYC9)jAP8@y( zco$e2^rd5)5zfTH9wSqa0jJ^N`c9?~Z}D2^sQ}>Q1L@cNnT|Hw@X%-0hjP2bPGv^_ ztj=`c27fK9Odln8y&uc57!K&8Ufes#ZQL;O>iNgGmZpJGvctV2ia-2)zZors+4}Ts zv480%;5}9?Qm|=$T-7ErtTRSBP#|~qdBp6-CA?XCL87dV3A_Q*h0m9bC4{++{3P7T# z)=xr1%mtKgI=lby8SG&W>ThAQAqfDagP{y<&U!nU(8o-0bmWc^H)QHGE^G66$h9^g zR)O?UFw_@+<`|z85A`MM4i!HEpw3D(tq#eWKMvw5M1GFpdO@?)8yPq|H=T9K;Yo{%}WknAG$JfvkpKWW7daCwwr=pHr zy3QRrqLHKg)!UToHVHSIPr;b0U3u~50Pj;y%4nf<^}^#)cS>F|7EFX`aS1pm z|NUL)^lWA9odz!pT}nvY$|eMIh@zo~7}Z~!F~P>!tAt!DgykyAT~qZ&@v56P47Cj! zE*Z<3*&;xE-8N^6^L-x=lvD?{eL&?c?^L|$##h^CoHC9F*L$}uPuAMsHufIftvwOY zQ3?WC0)86N{p{ht0I+?50mmtG-iE%<{8J38i2$FD^x2XDGW$T~%nTkSSo_gY!9Jr_ z@WeDHHg{Qzk7Eo@IOqD@JTl=9zWwMbwc(LJ03f+qjZ5i!{(~R-z5mwncQM|O!YQ9mFQ;CCfew<|n-k64( z~FlFyLT?$Y@qJ}H(0_(a( z5&z*%7rUDO$inN!q?2u9I{5mD*8jPk00Y$(KL(iq#Ci0~aUvcFt>#ikWh_HO81Uw` zWLk3=-x0B<5k~v==EMN-T<2WC-jQ`)*`~U7EI_FFN{p?pRWCFTjV`jc4x^9#rYuv% zO*O0cCgym`_+H~8ae>Vi0i$@RX+MDAJN@8J z`!q1b+q~;IKI!$E5uS}e*y7`}qgTN1tLLId|Fi*UraBw%=A-c!26Q+-$wdNy`m%c8Q}$d9CEt%AX~PCWxdFmw%6}vN3E!wkp;dR{EV51tajA`c{IR;E9b_kX;#q(` zA5(VJ?WQ+Asf%8A-{-BtZ38=zi>B{7zj&VJ8W9eO=@k-CR8Wyr4N!9J6tdZioPJSYtq7%u-#!7UQ-6$b3hRPBAkonki_H{+-_%IKJq2bdWWGof{H( z+sz^XKmKMNAdZda<~%!q$yfFzuN@4Q+69*6uK>ie3-|!QI8zNG9kIrs!9=Ht>(?10 z?Ra+`Efy3D&C0H*0HfjOX8|7K^g12PLdyb>bi5^!<_ZAeFl$jHLTF60?)d549rLG5 zUnMr3Qs&@%7k0DlKn;Hoj!3oyn($?S+7uX(QekK`rG{((LTYZ3YFm>8)Q;Lu%4xmu zS5P&1BgS*ms021+WjVidSNAxFd&T0BsrqPAbwFV^lgxG7A!uQzsnK4W1x+ldAqiKe zmaRwhJn2kyvr`&1fMai6_a7Y&BXHbA%o@MbOh@&g8ybB}i2-E* zd3>xRifVs%x=JKKUmttH!=~AkvLUbE9nC{4Ga~Jb^8|pc=dg-S7jUI)!0Cc-I-tAb z;(i&s)$d*-l$hPKr1B(|z7a*BFMi0iql2IrELcARtoV}~faxw=UpXR|DI+K13 zLK1-Yh)2Wv3U61@;&h#x`^(rMDep=}S0hzzEQYR$s}=41Hfg5QhQH{ro%2=Yk^z|q zTuln8ewKmeKpx>zoA&1@08P7L z^Rs9D%IA-uADwF+3A9c#y(=)RPXCnS!OqeRGU;4L`E~@5CT6pO+B$M~!O4K5iK2`S znk%N`8(nH13&$N}dJmHFtEHSN7<7 zKLJFTakdMfd-Ee=q_^hg$m|C*!gFB5)cN3texF7F6J9TlJ$Ez;mh{?I#sqUZhI(`q zLkt!Y*z);M@lGrRdtITmTCO;p>S--@w2LtM>D9YrV-&9V*dtFdC%WA<;4;yNfo0ot%T4@| zA$E-?MEwB~_L+dJOQi-`v1xY!dlI0dRHr>&w|0ZSF|COX7}W1Wd!}~9ulvl$$Z48vkuax5Wl7`zSg(XrzHu; zA8LH-c|kZyc{Rfa`&+doZ-Vd z>$RVA#^`UVyKG~oQ+fm3pyZ?*_({bHX`o5riN#8lR((gXuzuYRmSfl6-K3W+)8yvr zX(s-7%f9R-U%6TmOMR-$j#3mSm)19JL3-N3F#w`%HM1+e(thEE)+9VC7SP>%TPDXn z%=Jwl_0dso+dXA@%47gc7;?*s4aH+ROu*FYuS-Z)O!-G?X_cP*QzONU%&{R(YstD>W2>GRqv2a;0{ zH)q69?aE)JW7i??7iaXL%hE64Wk=qmwq3`%7J~jcW=50t#Q*uv532UBj+$*5^G;|d zEAu@%iIxl6rk&V7X~E?I&WT&uJ#;HGgJ$>)9swK2yu+@qko=wqMl z7c`R{z&!Ol2V+i4cANu_o0c1FI9~Dq^-E@~kPD~7qmvqQQ z|Fu(i9|*K&0VPeK=@6RN92g1KCbxDIcLMHRoXZ64wLC#pKE!{4BEb*lzcRjUm-5Y1 zpPo=jK)bB~DX;4*vvKaIW-^k~a+oFl1Jpo8Rf3&%Rv?I0lcdWhnY(yFY?VghUs|Xh zfED__9M|tD2M*fIDfo=<#P7MDb}QRsdYdS}cnpX*=Xu6iWel)u_>K4lF!h(*TZT96 zr39K?tI$pHsz=$GonsdJ|LdHX9%8zDd>btGbN!Ao`bGX2Xi9I}6!& z@v}{fZl}8J9Ufjfeq#3OG*^6a3gFPVw#+$3h8N&@#omaaa@l!iT};OrpSSHVz}iqa z%5@5j@38}!^?y32wW1pR`=v)!- z)3F}!;wjowmYuI1&0_iyFcR=`>VBx@3>qYe5haPsS=MXWMKrk2ysP!)7xAl%o{7c+ zz$cIlrop=LDMm3V*AWNmZAQ{SOufiflhP@qC1qlTjY!+!t(h~b+B(%lvC_`3Mn6fs7MQYU!QVGq1`W)%YR z>R>h%ba0tuULfSrv9Pt9Pcp^pMhimr9G%C46B6cTxB-dLVH4tWv`lpb03$Z`*pHKY zI)GkqSu%vz`{ldhvi6To;Z`S|W0b58!)|r> zI{?sOlTkU1M5&#V8V^B6^tfMR6fdJ?<3mgv`+C3U8g#$@fu8lJ>l#fe=(&JhHs>$` znUo{2D3z2)pWn7Ci*=e25UyiKXa(@MUSFA2UuulFy!ga#8R?4OD9XvQiLcsb`KLYzlUZ=hBiS<{?t$%JxN!;|&1NFIhGq9m`$r0!jei*rBinrGm z1ae-}!5VSZTEI_^9eop^b)1PG0CN2n{pmx?EY2!kp!&5M@OmHy~{KFJ~|gQ+IQxrSd-@wL4cFjn8iv=gYJkG zYtaHE{asDaj{))ute(;4XGKQz0!i^%U|CQnzFGeU@b~f1M6EMI*!U<2j8EBL2{C_M zNBmhYjl=7j=*PyCja;f@yE4s-N0LEU&7E^D2jZ9!%U-h~0A78&2{ijEIAlfFm!HWF ziaqOrjUOKAGp*{FdYD7rU$40#p+${p1Z{9?EahiJW@GN5wP0KSy9n7c>=!dfkSvlf*sLo*)I71)SLCabWNK)A{hPV!0;43sRjnuEb<= zaYTQ&dY#jmB$^BVb0*KWt6KF~k|ve`qs}sBV6<fb=tZPoMeDcd}H_8LF8mr*u@ zD}Y!>qB6+6pf9``AgJs)E)75*ZFDW*%@?3*Q<&a2n=o`8z+U~UfH3-SJAly#2-NXq zg33rI#5H&g2yS`l;PT&?IW`~`O1EyJM}x@%^(7R?$rAi zas67g*iB}*0>m*<8GU~JvkD=*^aF3m#ktZT!)*8=>Zuw31yqQEs~z)`Q)FjH8p*wZ zI*rF)%S~H@k^0z-P!7{6H*(UEa``%WxdNVL#v?;2RF5wEw7KQ550k2ISq%VV@0Dho zH?6d_u;9tzN)0b%jT}-3j(uKi<4!;P-R(E0_gqKUsSd4Djwus|>jy2{KFFKN+(*Eq z|Fata?7E&$qkI6ryrJU|GT6aozybpR3+Qyd5yE3%cCBB52=y1JbwsUFavLhZDd`xY z3zQCcqkY;juqq$6E%Ho{5PLU6F*QnC!$*^sWvpz`i+x49dg1#%P9F^~0lRUC1*q^U zTJv1M@}I~w2#aj26}+a7-A0eEsbSF&U^LLP1Z%&!}_aD1|lOvKVFj7Vv|Lh+K0Lr|wrs&2-htYj z9*a3$mQgb7i1q@q0xAm@2LzrHvnj)N?%F-R2k5yu+9F)(TwK@eE--umz=N_)$0|Q{ zoXE=`(~mK)xrKJhx?V^4F7Oq}dGt<3zD*yH0;|g-CdSUmiMbx$9kSvL-O@qn-5u?Y-aoTI*C*lxv{e9LSf98wGvU2AQS5FO8`Zzc z)TWHOqGv#7k3Ai%^QY#=N4FpQ?Jxm{~_XD+x3h3d*33*Bl# zJnBP%v&%R1Gmu`DJe0gVP`INZ@rbe8fXv7;_R^0P%0K;hq{Q|ZGC!VREk?QuU8H=L zESVfNzD5P^bvfCNz7+e==Vz4{|4!k#7f9!hFOPfBSYl)vbKM(@?OT65;LednAubbMCV&pDm% z+basZYT{X!cG?{raA@_Z9)9m{^!6C>v%jj(575HR-GLaKh+cHXOkpsBEx*5w8`Q?6 z69$WRl&qlDLT7Cpim?~9-SF6yv`g5Upy=D&mTTts3;*m)zJT)ZH;7^CE-iS=Z4L6v z9*OVW7=uqdMidVpA8H`D0MJvwJa3W3L(&aX_F$^K0xm#p!CyQ)iyrS?z%We4@(7^H zc&fNJgUQ=7J**H!Cb}s1YOeFapZ$XcfG9CG=Z<92LlP6--&EM7T)*DOBLEy57q5Yu zD@punr)~q-!kyBA`u9eb&Nrai=`{ns?mE3=^@C46@8zN!#0_5Y%kS#dcVoWO2}mRZ zOiyc$lGr-6JG2!X%ojM}&z+;}9cL8K0$@Y3cf;-?+Syl!R>oKdx{qt^u;357Y+CJ9 z@_^2ELzXw?s`smHQ}L813Ce8fTROD-wIm%Ye5n&n`WwE<2BM?U$+?4<>^Gg#j`3~l zh|-Z;^o7r8I=7EjF>R}f_rm(m`X=2Kd@=1CkQZ|@s)?WJkKMWT!5xjT9|ml&+Z6sO z8`%SH4FC-avGD*@^AFG{;HaP0rb92cpu2lGAlS+jFO9_TVR^&1^$mEnc$Z6j9p@XT z8L;iT*mpk=D6sRvbv@~LK6Idl^;LBWJAl zegE@}?4CMo{NTBSYEHX@{rI1A;AaCyD1GxB$oG7ruDUcpZ*@f{xyq@JO3WQ8Zj8YD zL(5~1wI7jk8PAMK z^0_|Hx4g#Eb0hXHC(-d#csS}y@r_CO;}g`Tr8_8wukGKq-)ZWnpBNj zoDG8pU*gd+!7G+5PyG}>SKI)Qsm{=g|8|scJ6wEyd5<{_oOT@`5mu}c zu$eQntGR7drs&?*5k2u&*(@_3_CYjm*7|Jz2oN@pJ8B3pT-l(LKh-&}dE*$+<+Yk> zC%QHOG+@lUR36;|uj#o49E!Qqvw6Cg`~$-RbIOGr_f>F={N3e}$6H5q|J;9{O&}IL zs_^foZc(Via<1LbOT^8!gv*uWT4Npmew2d6$))MQ96NT2Bv1;VM)-^xxNCQ3LdPmv z0|tG-b=SE?QKu5%XKFKyMY#qn-$~h3i+$-8;3Yx0O**SbqXAih_&aGP3o60{evQyw)S|*s(#xn^C`d)NKdr zC~7dPYh#~wXAcJjDQ#P46*7IWbHST|*-=kN`PAIJ!9%`tD(<^|1H`O0bSU340Lkm*IbITc317 z`))hX-2sI99e#i>=*Q(&09ttU{iY3DcF-QG9K%5Z6|)j2wT8b9JjUe=h#_**Uc43M)P zWM=D41psW;gF%^cQ0j7NQ44?KB$*w6} z{v0hfRsgy0DjD5-OaVKODG_jukwE@FHHgf4$*%K~=b9QuL8si0eE)Bzdx~?{QD#)@ z5id!K`0%?QXDLl#VgW1GjZeHxolZYAiI(I}S+#Q}e7EDz`50~@I-M+8CGMf5&=%*x z&DTi-K-nM()(tI?sxB;+ohV7%y2C*LFlnWNwuzo^XOZ9)Qw!GUIAOG4?FMZ)L**i7 z0@g&&^%nU0I+=Xihz^>FXIg)hPFY0Sj*YN@x93!1*-fV({t-8PzC`pnZ#k z{aW8T#$NbGc#2=niTc0F6UI)^<{|9ptD#(wGGIKq9q=C=B7dfUr9=AxF_!!8b8Ua;YK6Xs}^EeG` zSa8VBQ#pK<`SM*o-q+P`a$a!Q+BrJ34c{Tj4pgSs>jmQ`&(gk}y!8&9w!i+h)X>>7 zR2n%Kz6yw~4V2~P(y!T{HU00}&BLv0ha&z>HDQsj-+>Pl*#nAj(Z_ZrO9xKkpuJw3DzXuqkb9Hv#e`b9qsKX^=`n}>wV=JytV&a@MPO12X$ZvX<}LMGrl8E{ac1uVPIi)A=iN};9U$@C*(c%EMDFa; zyw#~>I!#``>zW1@VkaS-4u69AlGTaaYyBeE)Llnf=^~iE;w%UYH&%<2bk&jbQHUj< z>rXwkz8%%odL6;tK_?|y`1r+Ir96=3Fhd#9x#}e6ql0A?yWG5QeeBnfD(r%PJiVk~ ztoNSi2AbjFYQs4uc9L%bya-~ZFE0*!uBxV!{^U3?>$q+J$keZzyC1pI>Clc4J=O;% z6?8P%v;!DNKJgYEumk~KZm{9926nuyqM?iK^YrM*It9NeHNa_A}Vhbm#e>4Ujc_41M@sU&j zc|eB0Wf#2tgE-U_MRjCe9CQ;tn>SoPF;8S-(0H8J^1-s{F$zqbt`+5YcYN=r5sm&S zMN+A>^xgPE<`A7ufcU!tWI>?J>716%rd17OCvi;_JI~qA@dNSV_Y|LVUpYDw2!w~d zNvZtJ2Gxl=M&BrOuK(7l{ZxN+QfsFjHA$$vclx+$n2PcHjya+AdPL;h!e}%OR6kli zs?VCXJp~k^^ZtkXQ-!y;$~DK| zuEX;qTl@!5@Vc;bxvqo^Duv5Sb77M)0KWv^4n;RTD(n)MuS$s)6#E*2` z^@sIamvM&?KIH4C&aPQZOqx&W=(OqUod!m)`gF9Ckf9$kZht*a63f86A(t{ z=Q<;RqQkqUc2toa+mL6CAmEP89Bx+vy#T)M2)-YN$S9zE?bOXE;3rz!H$V}P=;%5P z%?)FB7yrojYYm{Lq5Jy0~a5=9Ph=eK=LpOm{_5n1H-b=I<@zG6DRK6eU zoUU`Jg%X@FE}kAdUm)6QJq0t$R~v~$s(T|x`yJD*RSiU9mwZo$Kj)(w8?Q_ep$h=l zFX|-~*>;v712VSLXUe=F6J5dg`A^T}I{$gI0}+sE%$ll@f=npi1+eUX2KP z>gv$&a{$vOQ?woZ0W|o&O&#c_Jj$Fu?XnXi5P z@!MCv^0fmJf9CB+e(WdS{?GsG&%OPTKl*3h{=|>|^xGG|?elNn^o5V!zIudttRGBV z;Uf10SmO)*uFW`ZXH#Dv7w3dEvY&YGbu;EzpU_Gc=$k@htD(R;&6`@O!xOsO>$Fu+ z$f(^p)+n#+KepN%%G*v|643T%jcDwyc4}`w_%}gA&S}R)2hO!8=Q?tBIdzj|$OW7v z)iu{#8r0A7hTk3l=)Y=%H=0x*6Y|l_j$r9&1#2O!seA%pxIe?IdD<&aeZMey(W5(j zdP=#a*xg|DL9E+~q>`c0X?4!k2iud}d{na|9eODx(Km5CrM%R$bN`g070Odv zYuvu5?y0OHMLx1tN;*C)PUJHJcLIAF=?AcBq=@x?{+(~F{o^6cqQ@@aK3mYhC)%B9 zUeiG?9u$p^eXO#wfAo&_3P|~uQD)PK>gA7i+GDOycXV$b2?Ikq&j=^r%Ydo2)O7)2 zoo`voWd`gFW7!9ZNUO)@s|)nLRZ6M4n8? zTSvNcxouFR{>B%Q`+5lpEzi1ZNnK}JYX4n47cb}tx273ek zQs)AIxKYm^azFY%{HEqPE3zNDu}wMa{YlJ?=v;uV6hlzbA#I0X@JEr!5&b#ICyC)s z-he5QLE;xCArq#FjEP=acl zn6C4yKXhX=wLh za^v#SOc#h3a4g73Tn7AYxt}X{M%%KJ_>hlF*8F|-T-NgnrDq;vgS_JPV?BCk5?6HN zT+m6krxjI43(O~MZ*|J{@ewirjXE>M73Tc-$NEUG^_y&hFSS&2;lqlzn}so!QxL{<;nndXxLb2`CA_=gXX>Lcy2m9$Jj- zY12j?)~sXwKIIJvj{@%Z*6v1#d+i(26L5#Cj2A2-u!bCqWVkKOvjgTF8T$CmI5@Qq&1xqEnOK%aDPy%jL#LC_xU+)+nB zALSScRpb2*{+RjgtPczjykGV9_4E2SrhyUQ>wfK9=&FD8$YA?K3_R}wR{H{g7-*GA zKxn8mNvuJegt4o69)15iccDN)8fRo@6Mpa-rb@6b@N*iVbB>BACTC8E*4rHwZRgzI z?)~C+(G#hm0E-`au+xZyCn(-sQNue7KNcj3l@5oreR9>&)1T)%<P7vNH z7S2PF5RJN*9k1Gjn#MKQ27a3){0HA@~dAx^x4R*Zo`?THH zwplNyem8m8zswgv5nD5Y39vxVTAO8g&v~Z}of8|WTOZ&#hX63|I5p3d|LCKS-hS$* zzI@j7efaikf9>D%_ILf=f7{zPeExF}yI3>LKEARa^q}MukaCW``qhu${@4HQkG=iY z@BN?OzVy>ydHdpbeB;}fzt$COH}Go;4o_|)ehXQA_-^m@D4BPCfC95SHx$b!DX2Uo zV+7cvYC7h&8}%nf@FUy}p6jNw>BhES@LD&sy{27g^!Og=Fa5$aZX%>#kBy|&J9^O1 zrosk@3d11@J)c)ajXon!bm5y3k&xdxKLGml0jRc%!2cJ#ZVbY?_~u-7QHIyH&3a+k zxu<$AgGY`FG~U-UZWOy*sRQXlAl>R&-tg&%ADut+N#CXTtroGaKe5>|L!JGU3w^&{ zqg1RnRoa=W!S+3EtA*G|aWOIM5c{vX0n7z(siTj~1Arn+xwJo|Jm8O4wB3(!DVXX5 zi~)2~R)CkmBS5ZrpgiAwHfqJwU*C<3+~kcJ9gO;Cl*;r2=4gKOx`3*qjRj`~I~(oQ zJ8Ko&hn#Qj6YT?CAmlD19SzqqQW(wqJ-P`qGT3@qZP}RH2Sqcg*=cU;s<|`#bkww? zcw{Pc3?CGvO){0}V5>w^z}h`B=yCbyo-jDvk0f2D^hHqbv z@?x}!r(i`v*N*5`eNE7N@11h1i3;|xGn{#io(XQEbdsOE!?k%sNChzpQu~L;q5?UF z`Hv8zuXYqV-)jV6JHql5pPKW-YWOQ@n2&Dt9d_of_)`1;#b_JQii}fic&7sq1Jk9p zlS(JUwH3wYGGN7S$ihEi%@=&V$=&T=JPa7cQE2kiF<9#Ha$EK5jDT0}g~C@l5Cb$e zfEWbWUUWPiy)(b(&m(@30TThpOkb(!$UfICSpXgpm=Q+tk+cWSH ze0WCZe&Q$o^4s_PvcKW&pZ;~f=Iy(_>#wmcKGhDsp9Ap4q(A4EZ21`t@0`z%|An7; z`;Y(A-|_alf8c+A`&)j|7vH{ofMHE_`vLL7nZ{bL-wkb@cbk8`#&K*L>U%D2O?y}P z4JWiwe_GJ^ZrSy@_w&Cr-lcb^sb_odSMgIXueIOR)})VI`uX(wXfbhh^Irb=e(JV$ zJDvT?N$Jdo+b5s}lgtBe9k%uueB2@tD`UXaw>O>};cO8AFUe66k3H^Er zqkhzeZh=Ndxk78&6j0DP$$Pa?u^0S>Kg-tXY1*l^dOKE}VI55S;m4iRwMI}n3jl$q zT|;MINd$ELq4}z_(kVx88P*Z#GLH-Bd}~zOSk}}rK+`8cQz>6{%`^1ylZ=dpHjNe- zc0?3e{d`8zclY7m#65@qLR>D4jzT|W`*3Cva<`C2!`$b)F3`Zv29uBKJKzt6SO~(1 za*X=9QMb$Sk^4t~;NQ%MAd(lj?2xH7l#hb10OCHM-?`@SegyO;GM!JzGP-h@^sAKI zaW*j!QZ=L1WZIl-IRc!K9}`QPeLWey9FEJH;NE# z`uO}~AXk8LejAirBR);O)7P38wb>D*uI~fn@Rz=)0IcnsHlu-VKeXUp=R`|%0#K4) z4I-_}1zcOVJt*`FLJU|$-+g84Jpoj-OWWF@;%~qNUBLx>Y}v_*zP|el%70{VIq5gk zqY08`0FPQmer!XO)2Av4WXx!^1 zoppu|;0^!?nC^4`+za`f{-PHHyy}NhKX+L%w0B_#{Ox+b$mS70Q4O%m$e(r#(Q_5;5Wl@D^@u;rRqeA24F%VG>D*@IwA38&?pc&_AgXR1@? z6JfUm5}kK~J)p+m&UWU!wB!Z+R=6&7WF~@zNk;qlGngx<1|$F_>p1*}{ZWNWStRt~ zU3)Fw-;vR<)#v!;n8G&=rQc?MyEBL^{Z=e~6oBG`BX9h=>j>Ae*($)Wx(Y zHv!|z7f*G?+86(Vks)){jmKX)c-643ADL>Xk5Q{v<*JUR@AdO&5PPVz8zTv%rG*# z;IcYc8ViKGY83DXcww5kk^y826gzDTt-evc89iB2v=STTJ!!$y-pEuy9oZ}wnZCfb zb!(BeHlVn4q!U1Sbs|6K#&>L8e(XCc7ob_aUTt@py&!w0)T8$S>^_EH&UNkMdF+dH zXaJaTcYhZEV#wBgZ2YkMSP-M-eU6{<9Or#b05H?O&NTsf_cH<)2%?~!GFE*XVg5e& zu|M=1GX+dHFx^57gS!99K7HU|!Bc#a)=YfEGFHr5sXL(CiO_j79U!(Y02n@JgF?Yx zn`kmXdVro-Xs$40I88^L2&x=cc7}XbD+ZIBX{_{Fr`Gd)C-z;Q-)TG=-VGq5^2k}R zEILhu=|rxcaLJ+Dp*}KlSMeAHw4Nx?5io!o$qTT$02yy6@wU^JbW8_R@HU`38XM5w z#A;HhC%p`~t&a8G5#BEF?=^HWyLt~L9xDPpMhpW0&+mEUhymbp1hEfRPRQlWAKc@1 z(t+K(;m6<*8~QrP+1Z#jV<(D}g3id_PyVH!dHWT=>U-Y)nSb^lapz_5=T-UZ3mE;c z?o-+Yf&bBe^1W~W#qa!I-hRnvp@e`>abY;5xBmn>*q5H?syVQQ!6N5G+7UdF01t_-h%(?{7L#xO|?WhPuLX z-JY#PtGdR!Wbj@0)@_Duyg5$0kVs75jE;%=27P*PGDCfEX;K;r4 z3vD{_O(4xbYtLI9{059wo~p>2JJe%RO&B_JiuT!Zr4vTs*`x{@%Q9ukfJ>(`0Y3$zH-JkU;T^7{$C$I=6B+P5XVQe@o{L4y zTYrz0mOt0$PXKUizLEaes4{w}9+g{UC+qnFsE$DZ+t^LKs9ql@Q`>q(5ITKmH=qq? z;te3;T~oCIa{|)-oit=e0OUDZGW6+Jz13kf(pLc3@?+G~^WaPYjZ!cGlGnvuigKMJ z>yQ1Rf1_cRjtMnB|C-%U{(d%@=$wvxSC{0F&>mN~1G;&W5kL~VTUMNfBdZ|*(47I$ z)(OpyFh?s1q9f1fL^VA2+VF@`$sHeu~Xh<&b9E> zB?Y=Zuaom@-gunM%9gfca`6l}lq#S-wAx`GpZ?0(jPWhs`ps|u;=l6i-@fUazR}=M z0PS^JK9v6IzuXDZ#?OBFD{ueWZ}<=1{`jBzvA1verZ1eG$4n0Zq-Y9{z3eHI&9(Z@ zi>>QoQ}^=qTw4%E=snxoWBuw#Y}|8np6+17^T97P`XKH;Mr1&w>@-1`@b|g3Y1|F_ z)gP5UHf+|-eXbW`rn{VzON4K`8;T_2#7uSW;yC>Rz>AMwn}ito8QG?8XG*HyxMR{+ z>|C0vmppryuMKMW#v$?~A1Avs@1ooKMFhU|y$NuAr@6==rr_q2j}Hj^1#ds~?Z5EQ z%blQXV4Kj9t`WjZayc?IW78qGoMh=( zJa(ZhWUPzoAa!NKds9oFaYt4bAm7p7hAG!Vv$|9{gSXYIvqkto->Y}?eE^m5l)$0O z<#~SbnSJETxppcumA$}kMgeus*F_AV2b7_GzxHj;o56EkPkR8^aV#2{`|7!dY2Os0 zesvXDg}#08=l}2lfRnYQa>8r7;GTQ^zN0=t6Nkes+QB$mC1*6KNe(*lI+ZJ_)Me;s zr3o^Z9}4W`L4t6LuBc-YR_|I0bc{oKtx4F7iKl4D!L_n^#4g8%ll`4~BLV2ev{+zT zogtYqR4PxhpWbG#jUvLINt#4-l=iEamS>a8>TX16n`_G0a}0v$^AEr8M=uPUmWyPG z!ut;$=d9Ul8QZ_~;zh2DeUM9Ku<6|nT0@?F14uw&uSG8fat4Z`Yn^p%9^e2lsWv+0 z%XGBYoW^G2i)RPYaCe>0F4Bu`?J}Unx=%WZ&A4`2KAS%N(og)%+duy=|GKwd`aQqs z?b8FmKG1H+cj9dQ?*Efthaa`2HGx0)Cw}Pd*Z)iZ?%Ut=*M0kWbI7$UBj&70bGtOn zub(}PJ}%Hl5WUtPOmN%E`iHdbS{F)d4a3J{I2&M&>nlu4SH3zjB+n2kw3Rj|9^wbK zUs9I+toh)s8~(QLo^X1pFPHyzRF4XmC9lxgvt)|itPanS4_)=94xlI~7>_lOmJ z%#MzkxA+x1S~CThdOSFo{-M0>Zqoosg9H4FQAzB_uLU_o1N!j!>o5I&fJR0dtv8}> z-gA2h4+vDdI)>_kzwqJqmCw$PyRDfgu^sTB0;J07g$*(K&=Ebw(Oo{r3%28tiMQ%N zqB9E0r?+!VVaFc65`gFPY0sdY5zE%?=oVxE03ZNKL_t*TV3-umGYs($^ER;_U})Wl zR&D@d&pzncV9>J3v8fNB#O__=$G(b;0EUL+HGen&z)tmN&7R7JVMg-wI4B1KH+H2t zBZbLz0}`RRn?csOKKS$h<8Lqk4DTeTOTjr<&0EHnsTl~Nj=Z$+B&dRt$pUe5nM=9M z4HgtM!DZc+?+BAL6B6AV0XS(VZ0(Z#+FOfo?rhqbfHIOKcM%#vh5e@2LOQiE7d9{( zTp+3bkAYL3rU;-;8h?K=}^rVmV!nL4j6P#O!diS=26SHyP6v0%nwKdK|pP`kt zhAMN)vOBoGwVO7S0{ZZ1+GNUX-_?r`bp#OoGwoXdJK)rLRiH8c8C__K_e=lx&%FJr zU;QiJ{?UKxANH%Cl6M|j{QvVnJZmKIxBb_@`|Usc&%gieZ~hy<^X;qWjU(p6dWpRo zj|RWv#=~#C-+EHT+R?sI*K3I2vURikc+#z}7)*r-fIoF*^U#IQ<>{_F>A#`*!h5HT z@k4Tr`JZy|a}$olu?!O`}LM0=_ys4XRUZKcs7H4 z>5Jd}_OoC37K1=j^s*YLcIvGljgc?@bgsK~KXXP!1p2(o_SEzPmh~qZ?ia{C^*ctS z!b8RK^&KijvX1(tZV-&k6?&LXMpPNvyGQ#vH8|&vg1uHQ)%3H|(cKhc=>v4TMz8kl zCJ#pY0(9K=f;sEWd@(E4%@pu>m&5ftT}`wEkjA=dw|WH-Zoe>V0|i z0Hh;Uz50AX64g>~eFolp4V4u{T5q9WKt~*9dRlt6z#KmSVC)63#Xk!COxL^sV&_`h zG7r4n!{9gouG7>7fZk4+{$DG93I@?nr-I=RSJdxL)pFkPpP=DQA6)mljFdvmDAUg{ z-8$qHM|R3|wD7Sb_{ab7zkc$if+NtWy*K&kulR#m=_Z_aoJFntzx@mU>Oc4P|M2#m z0h?9Txtl(np$-fnT@WjHRqSBYps0w7L^Mc1V+?{NAeJDuXabgKj6ubQqGCgdQ7?$1 zqJW8l6a^G4D9iu@Qz%2zyVq0J+UJ`wm;AW*)8T#JbM{_)_5GaP&Q^;T{f~G2j=Gkp z_xZzh4FH$ka8o<{sCTxxvoNp7fWCBaDQtZxu_Z#(#ph8 zW=1J$rp_!|)(PLrvIV0YvkEaOy>e%!FQh@|k5IK@CHdeN0=xmHK@7*Uxm0Z0CkBht zVidZ3b^JZa!V{G+ErOqG7S~6Fp|4_h?p?1Q zg^9i{4kI3qP9eBbrs(%sZ~Pl_t76?l3DiUZ$l#HBG$>KOBf2ObJeXJ1XLj)@A3-ha zv7f0CERV*ygh8tL7r20Zk*BK@2;v^~
F7}pJq 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
5gLOak-gS6w$EMvO z;h|CO^#s*qAGEE_Ui?x5N^#KrsJc5^4G|cSL3WD>#L+(&Y2PuRIIO*xHy*YQUL-x& z7*}li`;|X)qs+NVJ(A+LM^KZeQo)Ox?*THl38SUAOiy1@1LlH$x;N?_zuJ1x$Kp*DAYUXL%rbCA3ux)Iu z3ir7Z`L^+`Li^uW`1GClQS&b-=a`5U-Mno!@_ zF=WF^>Nbw8$Gq)NeK`WFw^~8__9`F)UeoF3M-sI`coGD2Fp8qd72{+ogM30qxgP{| zlNBpSBI*cV!kUZqgB6_3P6G;&e;H?>@5e|+drD$58XF1N!|RxD7fO7AN<~$)zB%*B1RC^MVS7ZO zF3fC<-ZV4Wg+w|M2-{-6O^+8(0Qh1wbm=RysQ0N)2>8m8(|3CfROylulS)Nz0da-Y z_v(lD@={egeGH(f6FZ;wNA{>n^ueH_Prq;~uC+w9j%K%57J!HLLy}Ne-TNc>W_jui zTU`8IsCFE4QwrIwjtq0XSXDiEFMnk#R*wwRH1|O1Q6L6m^Vp^>76mU}n%l@{SP9r7McZX}3vzs7MjQ z_j_4nAC%+vl(%)K0NtY{3{J}+K#;lGl+>6=9Y zR?I)N?j$JYBQq(fRUC|h0 z&Xhbk#;n>R%l-R}kyiJ&FsQgY|Fr=#Sg5vj#5Xb=)V=f;K09PZiuzAZ+kI4Yhnr-k ze6vQ=l~ETp-6zyvKpf3b&BJ_Ve}JHUtFVIi`n9dEzbI2~60TDKAWokQ=?q0dK3Ku* z=!->Azs0dI-%%({vmNQ z2&3D|J{RPP2|FJc9%GC9j`^@iQ2w4wInXY#!~lTTBoy<9-kDTYPXBu??ZG*Wl_+5; z!H!Eg(P)ALeOGdo_To%fRtE!rniD=V$942gpNu0UoSeOno5i8|x3X`rV%x&Mi)Y#qh0^qFcVH}EL_DGkKY@7j z@O%Xp=#6F_sQJYp@p`?$}s8IzvyU0IYjh>QX$rfr{h6883h^|9M6hT_=**D`!c+A3Uc0fiJmsmmloHU+Ucpp_Cp#v2ep14q< zJaO2&JN!b*s9&>Ss9tJKL2mO`yWOT?UbyeIfhj^Zpj>TWaA4$P5oic&n%qbpLB-)V zUusU=QN)j#Z7Q2j9yZgbTV;j^RbxL5-vG(leDQ_|6Roa@!hAe-tDo9FhZ+^Oi}}QU ze_x^0DmTKqBx|f@%6D9c+OiY3%_Zds-ue=4rj~+YxD9vhMY|UxUbR!c+uNn`yMNUK zVy^WqT@dm}CEn)4MYYFyy6JDzX+UcI+#dc_w9|gJm>@3KXt(uejfiH+x2$o#oAa?^ zDKadP47bDV6om(>`ffala>dR1&}u`?iOCeMDr zfXF~MrC8!aHmW_99rXsZw>R_)Jy3-Hrgweg&^D(RKTbC#vSSLv`%PLD&U*?$h#}Fv zPl6y4+uq3Y<&F@!vGdqr@FfCy$O}FFPA~klkfvOOjWOBMC`)lPNUY&P0XQ)%0JM`PO>S=F^2)SXPLt~yOT9`26RVi}!g;8c%E0sY%e3L6ba1EN zhE7w*UkpU^jye-GO{^Ad#1M|e?pX*33Y(P|E*3#n967c=_bHbT@xKsy(k+k*F-aCH zpMb&#r+;!LN>DlxoD#|jtf+t@yh1=*YsME5pdIKbHeYdvUPHqMMbh|w|!7Q+r)z+s(ivX#b}u?gD$;)5{u%{IBi45! zQp#ruOG^HG4yYN4hBBvc0T7{jVbD)ALv3#HlS5{L9L8!i`tswk(YW(sNF{RTl*1ss z^2e8#SE9tq-%yvnP_h4PO5*dm79=crvKzYUNcsw^X-r}cj6*`e^Dxr%R^EqbP!ZqX z%Z-)Vy+4VG&48$3k{1jmtxQ1#(D?LlLKTfrzA@UFmAkaw{F7Mt1&_qp?dZ{VA4H{@ zo0__efG_Ynl((@!N>Ov|#ag9|?8xka`-4s)K$uRm zQEY$R*dB|S#ws(zUftr1Sz=f|&c9xh`A1nT{XcGT;q&w#q#No30igL=)Y?@g2KZZ) zBUc9!R4SR$upE5vuF8381qq%wF)`(I;q#pDURts|Cw-E$a`=JnGtYglxpvwtx$V+G zQ25)IvZ`{nThHb4(fo+Br|CH3@9^+Btu_n-6$iujQ@*ih0djdZn@8bLgz0Z=Db~1Y zRV}tH@|BAEW_JQ*W$Q;CO8u^r($-+q8}Hsx#p#fif?4@YC1y^O5u_dBQXw zM?piQsUhRfA8N(8D2_3$DDlaYqS*q=|PPiXKWY8jdA;N&+q8)l;UG4DQn3l_o((|)=|unvbyDOIG+O3GE|e; zow!nC8-DBZ@P`tkdhM)pU=B3A_<4wM66CEc}k<9PQ{YpGC;YGy27|eg7m6Qu8y2QgZnc0FqZasL{8p+# za7YNTfPh+JC}p+}&W{kdK?y?mACVaJ7K6aKWz*q#F0f4^mh!f}^fg9E^6%s5Xk=}? zU}bv6+S5PiiQ!E6QR5#wn-B`iuaBN65aE<ZuI1EGm*3E7;kK{e90^AkXlXJPi{bw)A%wMI~?}P(B8RuA+HH6Yfts-$% z+E@55y0F6`5={f~{q0{5XHyq>1e+b*arkY@--y(DkNz}eq=eM({^o?ue>5A2q!i^# zw#VJVC!T$Qge53k2hkss@R`SR$7dA%-PynBT`$bvIfEv2>C;cq>emCkuFI4}O%7AGBNW=@-AgxPM?W%}#H z6Q|qa_-3dtFytl_Hwym0JdH+~^G!3!4X6NP{d5P;u zHu{nO&_@c*nnrPA-4=4BDMvfOIcxFMIxEUD6%w(q8W*l4m;jny;sj1qHcl%jV|X5Ee=9E>JS+^6+PYwUU7i2PltGnZUv@P1(2aI&N4 zAi|?%WRFf;l^Aj*d*f-$b|di3TGU&94JZ&icG2n(8%A?rkHUth!@2FCs!pPZ?gO>N62ASHc4_O@O4nt4v$& zDhb`pnubfQR91_IOK<*9iWn>lR#Cz2=y$C1fPSqJ#Dq#;=AxUa6?QCUYetukvq0S; z0Nu#Y!wAa~lT$3F6RSCCts0jx%c@e4PM?wxg#W$$^4Uu&DFxYNb>{YOvF-i(rF_f+ z`qkdPiJM1oxho;PZ#p^ozk-*7@@Y}A4u(9r7sR86`OZ1CITy`LJ55m$!PNaKI<}Og z1GV*-$Hr1Gd4&1!`~cctY=KWGTm$Gs#b;|pMHjsCWdk_^T*c?C{DcW;YB2%oQH=Tx z2>z40K?oPxdov7(qpTsuV0O#(@F0+1{O%}@Nvir1aM=-V!fuerpbCdiU_)$tA}+#+WfrAb-x{5JLmClojC+u56 z;ToicF$)Egi^7oz-%NUwx`mDCM~<=a&QsN^B*erbaYlu$xm)-`*`;M=>mhUwHNwC8 zbsmd+;|_c}+H+6~2BhoPSjdbq#>xFsXW{>JJDnCden*6dC;e;ifdg$s#0q>s0;Nl6 zYD+BygUR4gZka8L+<}`NF4Ya(D?ghxkWRmt59f|Kw9v%O0$1f)ZPFRj_QMl7!}=`x znaLY0CIgJ(!E;c?!~PSt^UcxL=SobS_tjURP$UgTt6rg_H#)M^cd)17tRpU!V+st1 zPE1o^5gL?AMIB3uWRiJIcD;iuqm>JTQD1bgx18QNJ{VWB_g)+|NH$Yq4G}BVC!>&U ziR<7HA||*^xF>KvC%Hpfbe{>ri`@2{Z|xTw_iZbBf;``bBU8wU92apztL*U>)-d(` zV;^vvRyvQyiGYS_{MoiM>!dQi{c^k9qv7qKZH56R$-pcA6YgZ}nB((gMjH_`Lc^I{ zg6*@%D#wXNgBdBH0QV1&Yo{wFf9Zc_$%q)MLec08;xV9LM z^i0K~jFdNnSOl1z6cCvT|cZ{uY#3VJX=QsO!V5D&}*xREduVOU+w$nXNDW8Gj8huA2fi$vvW;g$j z;ljV`f`_|p@Ftuu6SE(FwO+dJNs7~wwlt)+;ISdXtyLcf{f%2zz1$9?SPH-lJCv`;Ac zJPpv3oKKt#4lKK-h<8)Mqy!a03FSC|feWc`Yy}4E$*XR$?N|z9V3mL`A&eLzV1;B! zrT8Z&gz^|$^bVeTmo&Ca>1fnFry_y?<32rz%>I4<*WJGTdQFrAnDQ}Po z(wBKhfvb7Tp0MP2o&=jaoQ`vkgRH;CAS3&nhD*#Gg3OF!Oc#bD+&7P7?S~Y4azE9K zW@Z;Wo+dy}>$CZ_9l+fw9?|W~AuZ!_9k=zC6W@&{QR2H!R;s{S+**1 z-GuOMVAQjdfVi1_Z+1cGDL&aly`PHYq$@72N5T4{yj*vMM4gCx?0Lv&IV_zty}Ote zM$BUAmS;YiR(Is^K94<~%1;OgfmCE`)*7$kqR`5VV}M$g54#r_fsHdEfyJE2?U+*s zi?A{3#hikh7&l3ccH;#~tq-7pi~rge;R_Wb8M8)>+8K{#V(FsuW^f{#+V$*#lxEPh z6KUT$Br_#Qzx63zN^NeF#(76sn%%{eEPJY`f{5qidC-fk(QHCa9jb1+mgamIsnzPz zLzpUHodrG!vfpG(1#olmoT)RnofPr87lx(!6n-`cX2Ho--uQBGTFSb5dA6ETCJ*;d z)W*z*ZzJ(;e^?6~5cVl8dV4i_(IO}S(S*r19lDt@&#Zq2c+uw6p%CCdsp;9+h6$8M z6x5$;n`G8!#XQ`AvvUv1h}FjWHSoroR+ zOKl??pNa>8I%A-W-&Kx^Cy#t23|;_6&G5;fCGXD)sR!K76B{+RnX27$`_rMa&_krl z-{uzLH00l>VF=E&9KLrT0T-P*v(3zwuW4aeWtQz%VX=@X!ti}Zd4AnL^34j!ilnXT zkFrh~vORl-V?_;$J_K;Zc^2OQTQGH}Mw-d&@&104LTHD~5Q4~)Ih4Wcc~@|?8AJ*x zH+gUtZ>N*2d^m+^!6(-NR)Ub)dHME}?7!4vW>2Td#ZRp^#MJT5H;{R5vg1qnl0Qg< zY!C_iOsrIktHi@*v7SKrbaU(*^-PJ#BzCz;Ym25IDLX4MF*GpAA&oRQn|7_yCw$W< zAg|*{@1M9gVwu>!w~!aj((^V?&8K&EcNW_K0E0;?oRDujJZ)Uc-fbf!%+>@)&Cedh z;p-S6kU*~VU;@vPoax>g3maM3@L%yifj_{+DvX`E?DtL%7}gwG${+eHUzSr6vf;}a z>Ilu&-n1o8S>;R2x~#ThzY{jO8VLQ$r#<`JWkoRnUHPZPD|up+C6BAU3`P?D_q3-| z7$6d25rN4}Pd^P&I+XHB&d$!)%*X@C!mg0mkbg~GDO5t3Mhx6O@8_-!yx@AN!ZhIw z-3m?{n`7Id54W^y+gIn2UY%MrA_S69h@d}^Wn4J9v^z_UQkc>bN`%9rceReScCBY&~l z>hWjWn-uqI6lI%W{N4*!==n0V;NJ4hoCuQF!#T|sZkR_t>dte}JT-7Xf77*>kuUpG zkd!_4;~s&4FXAtIDKP5=vI78&>A~Oky60LkwaI|_@lud1f(#XwL#CEG3B3u%#OY8B zynMOi_VFiHc)#OlR}q0f*V?V)s)(B45m3Vg*;9raR9EQ(hp}tSw6K?E$hHCL4E-dz zy{!)}IgD-%-|KP%k-Me#V2x%Ehy?{}V*PW(m0r8A;BT5v*xdH#!LBL$z8`@9VlGjT z%$_kl)qC0W-9VWKRfFQ_+;}-}tuK}7#GP5yxl%`OyC=I$y-c!dbh**E$yQ(9d9l{h z*i-Phk8yaNAON6R)_+XGT>gm_-(7!!wU9J5Xo#M9*g<%N1RJ zr+O&4bK=uyY0B$~H$BkO;)}Zfg5dNpK{29jmOn>ydY+RRdPY5A)4v@kXyknF=K^ib zFiM}^AP)5R89U|?dEL%?3uICp?vEW43#GcxSNwN-gJGRO{N9fdq`aX+J9UNP8G)?S z-8^k7vLl5mI97d#O6|7P|$8f9q0YWa(mX znDicGgXQh^Z(ue|bShnsm!b~InntTy8bl?XM3aaG(C zfCmlyt71lBO>W_>cQEeyuSj69)M8Hj;aKrd!jwvmLfgN^jpDacbkJvVxyXgq!oH7y zNv>&9Y!W|$H>!fPUQy`kuz;+Hrs6(mY?Qc3DrpqGe|)Ualz}v%9xy?n`w#wIpiSU$ z6CYi@n2Fil8j7TmH3{**y^%Qas)y!aoZXfceZQq(nX>IQQ>%nh+dN&WAV1i-Ps9(a zW*MF4I7b|L@ZaerpRd$Z9p>1=NTNxW07pJB6OFh2iLFrpOAJvB*MO*i5fBJw0j8+- zUGGe7;%BE0bt$iZ38EgE(qBouC5R>klB7U&q&n>Y!ptr>AUN3LZyF$!ApIy)A@?u= z&YGsOZ5Qi`){u-Y5}XU6YqJj`p~bxJZnIrNZlC_N1-8>loogM|xTWfqsfge|5$|U5 zrd3NV!oOK0Lbd4m2j2Z0>o1~&_Pn2Ovl9KY_f~*QPVg^l)N-|rurRajUtVZ2XlGKx z-;?lA!mc}o{Z-n)V6Y`j=Kk0B5w2p4Q>@3lS{u(-w(t*v0`zu)Lnq^$(Aod9!(VBFHD@Q{Q6OIsS_B954n(S7pWSyM;Sy5zAFC>bmHS@f zJ)nLKjT-&tIHe$){nAuyC6_+mSFzi4;ykeaf>C17E;$fNVFO%9Qb{hKJ`?n27E1*4 z0%!^bi+yryaQMIG@eGmW`V-pDB8{dfIicRI3A8`UIDWR$&5n@C1~Bw)1kBJ>SDIik zYl`&bBWbb;XTOznd>B$Fm6{e$Z}_43poY26^&Gn})`mtcN6(bhJU^TpS&>F3I_vEZ zf);k{uTkz4r?U8~y&kmav>SC+9X>&Uxm+$Mv(Sv4%h|FzIaCrbvGAi{ItImh4e{+T zD1a~v>sh?Z#(yv9(H(cQ=6P}hq5bLc)1kmkYsuV3Q=$!0+-WH_~%cgS0HUb=0J{s$Mwta!hG_ zDQ%T}H+v-UWYuN~YRC{C+}5dDo(#Oe=-+>7c6WXtybGfn@^afq%7rDlpmtSIa04Se znc-lJ%9JiOAQ6>0;Hj*qI{5qNMh8n3S%bI#+?mx2mMEE$6!X01d~rJZ*9H{_3fP$z z5ZB_?guK_j3qb-oJa$z+D^Ap~!uJ{Cx^{+4nUZ=Ew4c5e(rcS5k* zhGM!~5x{Mqedmi+;nc^gX}_L!tqHc(Lh0|ft1d=TT)2*?WR*akF=-jQ05;>+0*041 zzWm|3d*RfbX#t2dyZ`EW!aIk6zl-A!mU@V`a<@|;JBFSe^L2)DMi5&yBF2?*Zdb-h zpGI!;;a<0e{LEuMdg(fP#0=Yb()Oq=)WZ^ zJYT0x&;Q~I*ZtLCRS~SS70eq6%L56e#uAv?MEV+xIofh;>9`(}qwDBF7yegC6X^jW z>fYe8V18WO>b-y9D%Nosc+5%spr4QP3_b2=Bx+2@)I`O^a(+O`Bcp|tsaL^ZZ{G{G z|LYD;B2}Bwu$#mn92m=?C#W7Z$~l;Bt1L9i4oi)^2j`* zBC^bQHMfBY5HR5@{F)qtr_g1I{{tpSs35Z#WAj+_8S{6tFIqCItE{PhL2(WOYyJM( z`5~w-JgURXRh#yI?FB3vYKt6EvpGhnmrOUexa4%@qF`i0Wu~%#^QVXNI)yyrp%{&J zj}r2%bj^Ttfomb$@ibP2_|OzOO_Dhguwb8{$=6u3O$`5^AleHk8JqrdeI6NH?Weda z`a@mMl^Fj}gT{}%|Kj=%nEyS3FXbRH3Vrk~K|iqqy*{tk80TI{aPaLuM8W>5E>Otf zM7k9Ci+Q%M{B3eFgRVG6IGf%2ab?(x`n*9l1bJZh#`2M(MIOVR+~A{|{}mG1eXJD3 zZ$+RE2^8)cb9rIvGLQWAATP&%*pzkiSYT_=&biC;ARL$Xt+)6~6Itq&oL*kWyj|H- z6Pt4V=>GjJlnhSpXc8X{7*d%I_mZk*p?^~WzODHz=lgahI3wh;`xhcrd38EI1v1%Q zN$uXS=3^%daUQ&*(fZI(332%i@n{@_onHS+-m2Vy|Gn@qPaKKR&oLrJ5crKIHVz() z6gCv}+m{t)!_%hF(3`PAUlc~k)ZI=`pwJ!fX1uCk2bm^~j2C24Y`nK1Lnvy9D zV;nqfIyH^94Q%AMzOBsg$V&{}Yb(m*9goCYHdn5V-^~27H#kZx<4wuvi7^;J0*$o} z(0>LYhK}FQrS=puyj8Os4p#+BRrEO^a z4&HmV!86M*=DT8)^N>b7{&du~aV0awfIV$Z#evVGjf;D)`yh~N2PNnyrl9SXHS@1@ z+KzRD=;!o|zd?!l9?!3kU){i!FpxA_s7|^M@p*Idz_{l+TYs&tzI+FGrE3kOOi091 zbKcWWmIw>5*&)h#X_>OsqEM5yU&(aS@&j141JKM@22JFu#7(8?W}e8yf!l)aJU9=Tr88HROA!XHg$Y?=4Qn{lDg)zd@?OtU7$DV zE!Sq1>N%X;MqTVKf8ec#t_`Kef7t+ilVm*lny1X81TRj%fotD4RM(hPU~`Lm;Z9Br zL%o#y^Iev0IzLWL?d&uj7PFzu&AsVj?4tie-hG#BoLpww-foz0Z@4(NJOTTEMV~fQ zpeqT5Gpth!*UtSLstqk6nRijseArYQ-v||D`(XF0If;XpJf{S>FXABakllK&^gq~nb*XEwNKG;q>fxm*p@YCPni6Mq~e=N($0mW+? z>6+3$Gh^)YIt|cC8|_!UYx$)<%`4FZ$66;vVtB7WV5JI`k0+VzVd(R8a{XgH3^JF? z1O_6RTwgPbD1o^#PESKV>YgoER5Uw&#zXVc?5-m{I{`6)Uo&}i>p*_m#I>+6)6ByO z*FoBWjt{78&_jp(&K;u4h}*2$;qZ00t3;mZWSmo0+gue(&WE7W4f9*nd@{rRO899i z=8@!TmoxIbo=WBIf$dvi+T6)%_&v6Z))tfHL;gZsLSo;D8{Ut?MyJA06W&*bnUx?k zOjNk~ihKSJSM(aaQ=zliw6%$}F+9|7zG+HKl;k~lj>6V;U;Ige2pT~~4o*t25&ufc zbN6Y`aE^;V@6OyN4FEAh{B)LVtX&f6n_ggDk0y(arw7_5I1KPeAU56|nH?o%r8={y zOuM*qqoEzhclRsZCtR(o*f8@ci?)5V@;Qj+wy8;v24pyH6HKH7vq$g&vV6#I73!EL z3~Yr_StFA8jN_=vN{6DY_Bow6@q?&&{l&1%P)ceEOC||%D>Fk8nz--w3Aoe|_3-fP z+gwhSl}kxy5nYVBb=VAMubGhU8e!>ik`n)B0=X!Cvom6bo5vi$%}8RX@3);z6C4qO zh>}KW_DA3*z~z>Lnmv%p7DlD6bF5{F(OKhFIbdZ^O0L;>Nm&kH>{h6m1@y|=TzF!N z)Wx~!3?SwukJ=O;|E3Lpx(+#|vVPTchg{hwkTeqlJAWzqDKa zlVmRF=^J8%7HQ_St!BET)j#A?=T*> zAIg}z-5-N1;vQj_^jDFcO%WFtI0pUjc*l0fz}DiQooq0;z&;RCz@_f>6i+>+cblts zyk}dOn4Mjf^w&V2eY5W~yg%&ZyO;%&9mW#=7y@~md-do*e^1h|nf%lY8ATWa!*u9c zfdDM5@S#&Mk-wq)`*nME=t;yo1_{UIZY@*O*vtexA*$=gB;R<}+ zf3%9{;@(!mBbIBq#b0W7Q&NSj6pY&Y7geZym}X44*#{)|`8B`)OKBpcUY+#h5eJi- zO{vg<64ck{Tf0;Ah?A~#uqVwb_X0$sJ)MD}Hvkta`1GYn?JFjeheMcxq_|V*;aO5@ zVuUyRqO~lkD!l-4xTKPF<5~;X(Z!CJ`)}Eq8t83ps^2O?c4OMQalV|ttH{|G!h(X( zS~*DW@}nroo%JVPaDWn)h%WLySX6AA_^5t4iT~4={3}XI;zOE}gA-5IjmeC@nO7x< z!54a8zmC^(^@@t>kzV^$JpH{LxJVW`)awwINWO7_9SIh}AS3T5Ca3-i^Mo-w7abPe z0VBctajS|uU3uY4rQV2!7C~U8QWkZKK5DRch)+fLlVTeTlJ~^BS`eKL#UdNwT<_~q z(ZjU^I{xs)f~IqMCxRJ$lPz(F8-x3=>=fJIcO8o%KK%c;2{?O;Ru+uE5^%NC|D5XW zgi<7w(2iESNJiN^@iAznr=tTFgU27!_{13~G9wmUn#6Q8-DR>O6B7Ei(ZwZ-+)amM zR5-O|HM1fTrJ>fgyBRnc$3)ZG>wEDS*?G0Fqpwyt zqOZ7qexq8)iz+G6ns)V_Bv5v|x%qzGHBhYr^8_A&2|IAR0KD6DQ5s!_-~KDk;t99j zOqTc$$!GN33u3MaaF(loLu|11>+^ji9`4P=*dk%zkb%0heOVP7Vd1XxKD2X8!pF;2 zHRW`hETK*pDj^va5ZB?EG>v#p?Y3F$rMsLzh=_@ivtwTgEK4jM99_kZ5Nu}vpk?S& zc9#QogSl8DqdLwAHTARCxI$QTcwlT5XRE;aSJg5VA>rRY0xPzv(W7w}+9rd%_Lrf< zv&Uvw0ata%=fhcW8!`dGrKGH^h#`>9_yw;0cyrT|L#VKr(X#T9T+`i`al(7X(bD0* zpTWr^?`Ar7$tf`vj#s$=YQtTK{CHeRVmz~7Nn&oRJ#?v9xp2<2p71I^ucU87vxsT5 zls~8ul-FAmY;!uePtUt>$pfW7c)vOCy9k_lW2UU{8g0ThI}d&qA6s)dgTO*Mc!dPK z;}3S9N9wN0cKg4sd)|Q2)@H~Z&mNSS{4MzhvHGAn2MJ>HWmbcKgH0O|hDcIjNY_2c>ZZsytiQ6+=R6NgeE z`-d*cT#xW?pbf_lo^uoCJLpz%n5k!2?P zV}8LRkyaZ=A_lL>NhMUUBp+yw=7F$+c^XQk%E!ZoWy0D$pn*CDl+U?O=UO#t#O#;wX67-3k}uC@A()yqrgu)GzK3J>6flIf+Qpvko{Jv zQqvqZ5)Pa?IaT5!(V+s9bZ~VRlaw5`b={wg_SlDt80Ee~i%|MF6qj|TMYZpvT}Qvg z1XOdzgZiH%Z|2@Egx&70EuA!lChgzf8W{UmfR@~6xZ)q3p zgm0=1=(HQ4@z*v&Iy!fc?B&9C6g__G!vlgl-EzCQvOC#cVt>!HgeSBcGuyWY&r3r@G1vdX@C@(B1` z!S@eQB89g{pqq$qH2Na$qM{w#|@m+fs(gZ=ls&6fjZr8RTn0*r4Rg- z-!=7Wqup=77;kussGp<3JY-ysAy&-9MB6Z33=iDlHuM*GoL$K*wPcnVp^0z zv+f6;V6?bb6S_ap6S~%D69ps=6Z5~en>9$+PUK~38F%0DS392BG54_~SFA>b5?V!@ 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 00:00:01.920 - [Scott Tolinski] I wanted to share it immediately. - -00:00:01.920 --> 00:00:04.240 - I wanted to build more things in it. - -00:00:04.240 --> 00:00:05.640 - [James Q Quick] I love it. - -00:00:05.640 --> 00:00:07.080 - [Fireship] It's the only JavaScript framework - -00:00:07.080 --> 00:00:08.640 - that's actually enjoyable to use. - -00:00:08.640 --> 00:00:10.540 - [Ben McCann] Svelte introduced a new ergonomics - -00:00:10.540 --> 00:00:13.160 - to building a website that's made it more fun - -00:00:13.160 --> 00:00:15.440 - and easier than it's been in a long time. - -00:00:15.440 --> 00:00:18.720 - And the way that it's done that is by introducing - -00:00:18.720 --> 00:00:22.360 - this concept of generating reactive code at compile time. - -00:00:22.360 --> 00:00:25.560 - [Scott Tolinski] What Svelte allows us to do is to write code - -00:00:25.560 --> 00:00:29.400 - that's not only small and simple, but plain and readable. - -00:00:29.400 --> 00:00:32.760 - [Amelia Wattenberger] You're mostly just looking at basic HTML, - -00:00:32.760 --> 00:00:34.760 - JavaScript, and CSS. - -00:00:34.760 --> 00:00:37.120 - [Aliza Aufrichtig] The thing I like most about using Svelte - -00:00:37.120 --> 00:00:39.200 - is how fast you can move. - -00:00:39.200 --> 00:00:42.400 - [Moritz Stefaner] And when I discovered Svelte, it came back to this, - -00:00:42.400 --> 00:00:44.800 - oh, here's a really simple way to do things. - -00:00:44.800 --> 00:00:47.480 - [Shawn Wang] You don't actually need all this machinery - -00:00:47.480 --> 00:00:49.120 - in order to do components right. - -00:00:49.120 --> 00:00:51.640 - I looked at my React experience so far — - -00:00:51.640 --> 00:00:55.120 - I could not be anywhere as productive as I could be in Svelte. - -00:00:55.120 --> 00:00:57.520 - And that's when it started really taking it seriously. - -00:00:57.520 --> 00:00:59.800 - [Amelia Wattenberger] There's quite a bit of usage these days - -00:00:59.800 --> 00:01:02.680 - and satisfaction is still, I think, the highest - -00:01:02.680 --> 00:01:05.920 - or one of the highest for any of the larger - -00:01:05.920 --> 00:01:08.120 - or more used JavaScript frameworks. - -00:01:08.120 --> 00:01:10.040 - [Guillermo Rauch] When you write your application, - -00:01:10.040 --> 00:01:13.160 - you're making it fast by construction. - -00:01:13.160 --> 00:01:14.880 - It's almost impossible to create a slow app - -00:01:14.880 --> 00:01:17.200 - and I think Svelte has an incredible advantage here. - -00:01:17.200 --> 00:01:18.360 - People love Svelte. - diff --git a/sites/kit.svelte.dev/src/routes/home/svelte-kit-logotype.svg.svelte b/sites/kit.svelte.dev/src/routes/home/svelte-kit-logotype.svg.svelte deleted file mode 100644 index 759357aaa3bf..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/svelte-kit-logotype.svg.svelte +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - diff --git a/sites/kit.svelte.dev/src/routes/home/svelte-kit-machine.webp b/sites/kit.svelte.dev/src/routes/home/svelte-kit-machine.webp deleted file mode 100644 index e8467a50df3002788202acea4dd47e1c405b6be7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211500 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

o*H+jWf! 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 diff --git a/sites/kit.svelte.dev/src/routes/home/sveltekit-logo.svg b/sites/kit.svelte.dev/src/routes/home/sveltekit-logo.svg deleted file mode 100644 index 0f798fc18f27..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/sveltekit-logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sites/kit.svelte.dev/src/routes/home/volume-high.svg b/sites/kit.svelte.dev/src/routes/home/volume-high.svg deleted file mode 100644 index f0e1db86c1bd..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/volume-high.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/sites/kit.svelte.dev/src/routes/home/volume-off.svg b/sites/kit.svelte.dev/src/routes/home/volume-off.svg deleted file mode 100644 index 424d9124451b..000000000000 --- a/sites/kit.svelte.dev/src/routes/home/volume-off.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/sites/kit.svelte.dev/src/routes/nav.json/+server.js b/sites/kit.svelte.dev/src/routes/nav.json/+server.js deleted file mode 100644 index c6f78ca01153..000000000000 --- a/sites/kit.svelte.dev/src/routes/nav.json/+server.js +++ /dev/null @@ -1,28 +0,0 @@ -import { get_docs_list } from '$lib/server/docs/index.js'; -import { json } from '@sveltejs/kit'; - -export const prerender = true; - -export const GET = async () => { - const docs_list = get_docs_list(); - - /** @type {import('@sveltejs/site-kit').NavigationLink[]} */ - const nav_list = [ - { - title: 'Docs', - prefix: 'docs', - pathname: '/docs/introduction', - sections: [ - { - title: 'DOCS', - sections: docs_list.map(({ title, pages }) => ({ - title, - sections: pages.map(({ title, path }) => ({ title, path })) - })) - } - ] - } - ]; - - return json(nav_list); -}; diff --git a/sites/kit.svelte.dev/src/routes/schema.json b/sites/kit.svelte.dev/src/routes/schema.json deleted file mode 100644 index c5e2b0e8987a..000000000000 --- a/sites/kit.svelte.dev/src/routes/schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "@context": "http://schema.org", - "@type": "SoftwareSourceCode", - "name": "SvelteKit", - "description": "SvelteKit is the official Svelte application framework.", - "url": "https://kit.svelte.dev/", - "codeRepository": "https://github.com/sveltejs/kit", - "dateCreated": "2020-10-15T16:00:00", - "programmingLanguage": ["JavaScript", "TypeScript"], - "image": "https://raw.githubusercontent.com/sveltejs/branding/master/svelte-logo.svg", - "sameAs": ["https://github.com/sveltejs/kit", "https://www.npmjs.com/package/@sveltejs/kit"], - "license": "https://github.com/sveltejs/kit/blob/main/LICENSE", - "releasedEvent": { - "@type": "PublicationEvent", - "startDate": "2022-12-14T17:00:00", - "url": [ - "https://svelte.dev/blog/announcing-sveltekit-1.0", - "https://www.youtube.com/watch?v=N4BRVkQVoMc" - ] - }, - "contributor": [ - { - "@type": "Person", - "name": "Rich Harris", - "url": "https://www.rich-harris.co.uk", - "image": "https://avatars.githubusercontent.com/u/1162160", - "sameAs": ["https://github.com/Rich-Harris", "https://twitter.com/Rich_Harris"] - }, - { - "@type": "Person", - "name": "Ben McCann", - "url": "https://www.benmccann.com", - "image": "https://avatars.githubusercontent.com/u/322311", - "sameAs": [ - "https://github.com/benmccann", - "https://twitter.com/benjaminmccann", - "https://about.me/benmccann", - "https://angel.co/ben-mccann", - "https://www.crunchbase.com/person/benjamin-mccann", - "https://www.linkedin.com/in/benmccann" - ] - }, - { - "@type": "Person", - "name": "Simon Holthausen", - "image": "https://avatars.githubusercontent.com/u/5968653", - "sameAs": ["https://github.com/dummdidumm", "https://twitter.com/dummdidumm_"] - }, - { - "@type": "Person", - "name": "Ignatius Bagus", - "url": "https://mauss.dev/", - "image": "https://avatars.githubusercontent.com/u/8156777", - "sameAs": [ - "https://twitter.com/alchemauss", - "https://github.com/ignatiusmb", - "https://gitlab.com/ignatiusmb", - "https://www.linkedin.com/in/ignatiusmb" - ] - }, - { - "@type": "Person", - "name": "Conduitry", - "url": "https://conduitry.dev/", - "image": "https://avatars.githubusercontent.com/u/16696352", - "sameAs": ["https://github.com/Conduitry"] - }, - { - "@type": "Person", - "name": "Dominik Göpel", - "url": "https://goepel.it/", - "image": "https://avatars.githubusercontent.com/u/611613", - "sameAs": ["https://github.com/dominikg", "https://m.webtoo.ls/@dominikg"] - }, - { - "@type": "Person", - "name": "Bjorn Lu", - "url": "https://bjornlu.com/", - "image": "https://avatars.githubusercontent.com/u/34116392", - "sameAs": [ - "https://github.com/bluwy", - "https://twitter.com/bluwyoo", - "https://m.webtoo.ls/@bluwy", - "https://www.linkedin.com/in/bjorn-lu-3302a31b5", - "https://www.reddit.com/user/IamLUG" - ] - } - ] -} diff --git a/sites/kit.svelte.dev/src/routes/search/+page.js b/sites/kit.svelte.dev/src/routes/search/+page.js deleted file mode 100644 index d43d0cd2a55d..000000000000 --- a/sites/kit.svelte.dev/src/routes/search/+page.js +++ /dev/null @@ -1 +0,0 @@ -export const prerender = false; diff --git a/sites/kit.svelte.dev/src/routes/search/+page.server.js b/sites/kit.svelte.dev/src/routes/search/+page.server.js deleted file mode 100644 index 10451707bfed..000000000000 --- a/sites/kit.svelte.dev/src/routes/search/+page.server.js +++ /dev/null @@ -1,20 +0,0 @@ -import { init, inited, search } from '@sveltejs/site-kit/search'; - -export async function load({ url, fetch }) { - if (!inited) { - const res = await fetch('/content.json'); - if (!res.ok) throw new Error("Couldn't fetch content"); - - const blocks = (await res.json()).blocks; - init(blocks); - } - - const query = url.searchParams.get('q'); - - const results = query ? search(query) : []; - - return { - query, - results - }; -} diff --git a/sites/kit.svelte.dev/src/routes/search/+page.svelte b/sites/kit.svelte.dev/src/routes/search/+page.svelte deleted file mode 100644 index 5056715cd8a8..000000000000 --- a/sites/kit.svelte.dev/src/routes/search/+page.svelte +++ /dev/null @@ -1,55 +0,0 @@ - - - - Search • SvelteKit - - -

-

Search

-
- -
- - -
- - diff --git a/sites/kit.svelte.dev/static/favicon.png b/sites/kit.svelte.dev/static/favicon.png deleted file mode 100644 index 21bc302b6882fcb18ab7c6fa1839e3f523199ae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1373 zcmb7^|3A|S9LGN!$I{&9OTM!)jG`l*O1ALuZI?FRBA17zg~Bag3Yjk>(}=?;N@^#> zV~`C*RRmA> z;55j`YT0?tQ6%I2b;l|g#>IIJWQkJS=96kw`p-7^Wp`M@F`4JRp=&RzLCvi7 zfelewei(nDrDxl*l2*7W<>lFw#Ym$%!G+|U=R5hORvT6?b{Ffib@dB*iyoynF({g4 zKZs17T&vs&hLIJKFrCPPp372ySoB+1Yp}zP_iSY=%R)4T3#y6RF+L@dBQS5M4^bmJ z`4ju^jt!X(Q&;6rd6aadAQG!^*(q&e85brX6#0XAic~!(W&EB!*|~O4uZS1hdb4{uH2NjE!G-S< zO2}bbXT~(9dF_XG1K;jGrtTa12P>}L!5SXoc>0-1z9uUgKFD+#*6GxWI-1-IZ&;?@ zD^g99O5#uClt}jetf?{uL5q!xFIv}_;_0t=wBk%}ry=`Ke*sC)AmXnNH^!-OG|Sj~ zNrH>Mv<2|t2EWlt9H+d)_^QacFL4TB1Z8d)5BLPYiK{tRKM4+cHjPEi&zUt&8wCh4 zLU)A;%VD{;D21Gqh!Dn+eqGT$!=|}nLj-zVFXr1u&{s-i13N~z+~$sK!>)5-`5%p~ z5;WkXf7QP(E@zxRR-0;j$nqUCq=yu1iVf9Lv!VCb6CqAkVk02nQFtU2!0P~wLGf`y zIKT$>XYSZPIX){fSU#&-j#S88pbfSJ_nbKOHyC;Y(`Hys%%JRh(HO6g=xk!3BP$*UYS>xJh)IF2$Up)6SzJX@Rg6F@4u8!Ywt()m0 zZJAePZ89S6C)|0Ll_}7xw=>N$8ZI-0K!q5)l|Yldh$SuS0en$X&18g$GR(KKzP2hJ zo7;~QFzkJEyH|S#34ELfwvaVr-P^SS%Q1`8J2lum@Ytp3(fE2p#1e~}5sn~I5aQ&X zUe7B)EaA9oY1012*3$I*)b{0zBvbk(x*}kq ztku8OvAWZNiZai&wYVIbVd4?64N5~ZuSsb?n7g_%&2iC^1AD$tWR0v@q88qtUEO_I bedL5nFQ=R0R@YaqEHHrJMf7a;Am{!EfXa*$ diff --git a/sites/kit.svelte.dev/static/images/svelte-android-chrome-192.png b/sites/kit.svelte.dev/static/images/svelte-android-chrome-192.png deleted file mode 100644 index e3ccf280875b9e5106cbe4542213c896c3f88f88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1986 zcmb7F`#;l*AO37^)5w^}BBh)mmsLk%8_TsR3sEjzh;yuxDVH7JBqXJ#jfGTm%|X|F zCAsC+#Wiyxxon!5`$xVF|Y7+ne>cqp&-W%TZ zzk?}k=pWF>)*BY$dDO=R+<-ms|Ir-*p4b7N!+;S4@Tw-jKmn0kY>!X4j8}AU&-lXFIVh4uc85EhwC}21B@FhO{vNixvUMD&q^7(5> z)OS-|0fSH=+_Ift?>*snDEG9fO>^1DgWQlsmH!T4V%>@+*6Wl5D%-I% z?Dv)u%UMNK6H?Iak%^QEbDA#s-;6Bv6$TRx2>s`{(@rIu`R-?udA3NF4xvA8yjY{U zm;OlwAq7&`Ze!Qf7PEf`zAJ1!T8*`p#~srl7_2Vt7l$$oL!HY29FZ|VuVWU1Auwg% zimvwbd(mj!WY-rTY#QZ8+;*$kP1=cJis~6+A#x9Kv-<$-%Vn{UuB29D;u%-zT;0nF z#i8rj>1r|{mgu!Ke7l0&=>UwdOd`rm+417;Bmxk7-`EyGrlw{lY1RBA_rKZ#c>sMI zva5}DpP~FlZ)9GqX5^-XSf0&!{l($+)5}fiJ2c#O+bM^x$wPW(cbhO!Tbicy96n&q zbLw-n9jS+u3Z5gIS6AwmD~^4L^3ZQW#YA_^4cD4q2Fw+$MECMMNJ?{>1BsZT=c9L*#xm^bym*uz9_?J!f+yd$h zgMIt~R_`~_?w9wT^dgHwDazzm9+$~Z#fTrIZ9&*}eGhmDUKBNVuoQngxvC3KkC;jC zm+G<&!t~e#^Gn`3LYI5VRy4tMMo5{lO0O!tz{&EDa>FD*x|(%ANQYd~S7CVSGfKF% z2)vuG>yNuTXbm5kiva7?CxpKHgebfp3bzA_1&j36pL zRIXFQm-Y>uRyRq03p?YjR?SmIB*`B7$rE0r*4MvBzq0FpW)uktHQ;BbiXop5Xb9~h zrv{q4(6R9G4+Ta?q*nz%1jGQf*LutzSDcU>1|XqPSGpglWvf|hr#!F;8~QCRn4M-l zP_jmY3JTr9cYC&Nleb% z+5cYF7W51Q{4Jh$HK5z868{=3ce7B4h=JX4&TYJ+S9ypSJ*;vkc%VUKNgg|L=FfU; zjW5m4$H?Z_;?*7xFPTC^@q}b%AQ-}J*9pJq^X=s*Hn3Pq*~ac_eL@c?;&k?Q#P})4aR^U~&lErww#V?5- zP4vw>F;Kcak8cCPn0Ac@O0`DjJ4DmgNC-b0FDk)(%@~W`59O*Rgl z@}9Zw^;L}^>(%BT=f#TJ^`+?)YD*n*=&iBtm_BY-2^Ia6LSB``Fs|h)ZiK4kaK=oS zD-j2y=6#o^P|*!hO0%RU?Ac&GFO3f5OY;pOBdpSR%OCfs=n)qfRZy-e?y^LCS8BJy z=SZv0iM7aMUm@H$v%$4^s=(n?ItRs*!`-3ehZ`#i N5M4;lFCBxD{{<6>)yMz< diff --git a/sites/kit.svelte.dev/static/images/svelte-android-chrome-512.png b/sites/kit.svelte.dev/static/images/svelte-android-chrome-512.png deleted file mode 100644 index e673c91c7bcb0e3a1be737745af56990613a641e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5185 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 diff --git a/sites/kit.svelte.dev/static/images/svelte-kit-horizontal.svg b/sites/kit.svelte.dev/static/images/svelte-kit-horizontal.svg deleted file mode 100644 index 9fe9b630d4fc..000000000000 --- a/sites/kit.svelte.dev/static/images/svelte-kit-horizontal.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/sites/kit.svelte.dev/static/images/twitter-thumbnail.jpg b/sites/kit.svelte.dev/static/images/twitter-thumbnail.jpg deleted file mode 100644 index 0ef1eded0df6aa7e31c0c36d6b38cf41e158a7c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65292 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®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
`Ros_i(UhM7f1%eZ!h+H4#kbKdB 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 - SvelteKit - Search SvelteKit - UTF-8 - https://kit.svelte.dev/favicon.png - - https://kit.svelte.dev/search - \ No newline at end of file diff --git a/sites/kit.svelte.dev/static/robots.txt b/sites/kit.svelte.dev/static/robots.txt deleted file mode 100644 index e9e57dc4d41b..000000000000 --- a/sites/kit.svelte.dev/static/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/sites/kit.svelte.dev/svelte.config.js b/sites/kit.svelte.dev/svelte.config.js deleted file mode 100644 index 46575d85e0fd..000000000000 --- a/sites/kit.svelte.dev/svelte.config.js +++ /dev/null @@ -1,16 +0,0 @@ -import adapter from '@sveltejs/adapter-vercel'; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - kit: { - adapter: adapter({ - runtime: 'edge' - }), - - paths: { - relative: true - } - } -}; - -export default config; diff --git a/sites/kit.svelte.dev/tsconfig.json b/sites/kit.svelte.dev/tsconfig.json deleted file mode 100644 index b7507e5607cf..000000000000 --- a/sites/kit.svelte.dev/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "allowSyntheticDefaultImports": true, - "module": "es2022", - "moduleResolution": "bundler", - "outDir": "build" - } -} diff --git a/sites/kit.svelte.dev/vercel.json b/sites/kit.svelte.dev/vercel.json deleted file mode 100644 index c3c586fb80d1..000000000000 --- a/sites/kit.svelte.dev/vercel.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "http://openapi.vercel.sh/vercel.json", - "github": { - "silent": true - }, - "trailingSlash": false, - "installCommand": "pnpm install --frozen-lockfile --verbose && pnpm rebuild", - "buildCommand": "cd ../../packages/kit && pnpm prepublishOnly && cd ../../sites/kit.svelte.dev && pnpm build" -} diff --git a/sites/kit.svelte.dev/vite.config.js b/sites/kit.svelte.dev/vite.config.js deleted file mode 100644 index 957d499557bb..000000000000 --- a/sites/kit.svelte.dev/vite.config.js +++ /dev/null @@ -1,38 +0,0 @@ -import { sveltekit } from '@sveltejs/kit/vite'; -import { enhancedImages } from '@sveltejs/enhanced-img'; -import browserslist from 'browserslist'; -import { browserslistToTargets } from 'lightningcss'; - -/** @type {import('vite').UserConfig} */ -const config = { - assetsInclude: ['**/*.vtt'], - - logLevel: 'info', - - css: { - transformer: 'lightningcss', - lightningcss: { - targets: browserslistToTargets(browserslist(['>0.2%', 'not dead'])) - } - }, - build: { - cssMinify: 'lightningcss' - }, - - plugins: [enhancedImages(), sveltekit()], - - ssr: { - noExternal: ['@sveltejs/site-kit'] - }, - optimizeDeps: { - exclude: ['@sveltejs/site-kit'] - }, - - server: { - fs: { - strict: false - } - } -}; - -export default config; From d9f9a44608753948d7f580225df6128b9a865d2f Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:10:15 -0700 Subject: [PATCH 340/454] docs: update site location in contributors guide --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2784d08a49dc..ca6709e3b704 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -101,7 +101,7 @@ If you would like to test local changes to Vite or another dependency, you can b ## Documentation changes -All documentation for SvelteKit is in the [`documentation` directory](https://github.com/sveltejs/kit/tree/main/documentation), and any improvements should be made as a Pull Request to this repository. The site itself is located in the [`sites/kit.svelte.dev` directory](https://github.com/sveltejs/kit/tree/main/sites/kit.svelte.dev) and can be run locally to preview changes. +All documentation for SvelteKit is in the [`documentation` directory](https://github.com/sveltejs/kit/tree/main/documentation), and any improvements should be made as a Pull Request to this repository. The site itself is located in the [`sveltejs/svelte.dev` repo](https://github.com/sveltejs/svelte.dev) and can be run locally to preview changes. ## Sending PRs From 1f0a5f5023fe18776fa9d35290559abd2de4638a Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:12:29 -0700 Subject: [PATCH 341/454] docs: update URL in root readme --- README.md | 2 +- package.json | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 77de1f97d21a..bdc90a935771 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # SvelteKit -Web development, streamlined. Read the [documentation](https://kit.svelte.dev/docs) to get started. +Web development, streamlined. Read the [documentation](https://svelte.dev/docs/kit) to get started. ### Packages diff --git a/package.json b/package.json index 7c2bb37ed198..9fe848d2e078 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "precommit": "pnpm format && pnpm lint", "changeset:version": "changeset version && pnpm -r generate:version && git add --all", "changeset:release": "changeset publish", - "start": "cd sites/kit.svelte.dev && npm run dev", "build": "pnpm --filter @sveltejs/* -r build", "sync-all": "node scripts/sync-all.js" }, From 6f2a9c8b5c06c8999b33740502c70efaedd568ea Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:15:23 -0700 Subject: [PATCH 342/454] fix: remove pointer to deleted file --- packages/kit/tsconfig.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/kit/tsconfig.json b/packages/kit/tsconfig.json index 0b7f9d49aa6d..96f45f67488e 100644 --- a/packages/kit/tsconfig.json +++ b/packages/kit/tsconfig.json @@ -21,8 +21,7 @@ "*.js", "scripts/**/*", "src/**/*", - "src/types/**/*", - "../../sites/kit.svelte.dev/scripts/extract-types.js" + "src/types/**/*" ], "exclude": ["./**/write_types/test/**"] } From 12c034d1692d32b7e27efb379330f2e37b1053ac Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:23:23 -0700 Subject: [PATCH 343/454] docs: update URLs --- documentation/docs/20-core-concepts/20-load.md | 2 +- documentation/docs/25-build-and-deploy/30-adapter-auto.md | 2 +- .../docs/25-build-and-deploy/60-adapter-cloudflare.md | 6 +++--- .../25-build-and-deploy/70-adapter-cloudflare-workers.md | 2 +- .../docs/25-build-and-deploy/80-adapter-netlify.md | 4 ++-- documentation/docs/25-build-and-deploy/90-adapter-vercel.md | 2 +- documentation/docs/40-best-practices/05-performance.md | 2 +- documentation/docs/40-best-practices/07-images.md | 2 +- documentation/docs/40-best-practices/10-accessibility.md | 2 +- documentation/docs/60-appendix/50-additional-resources.md | 3 +-- documentation/docs/60-appendix/60-glossary.md | 2 +- 11 files changed, 14 insertions(+), 15 deletions(-) diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index 786312625217..6396b9a4b5e0 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -34,7 +34,7 @@ export function load({ params }) { Thanks to the generated `$types` module, we get full type safety. -A `load` function in a `+page.js` file runs both on the server and in the browser (unless combined with `export const ssr = false`, in which case it will [only run in the browser](https://kit.svelte.dev/docs/page-options#ssr)). If your `load` function should _always_ run on the server (because it uses private environment variables, for example, or accesses a database) then it would go in a `+page.server.js` instead. +A `load` function in a `+page.js` file runs both on the server and in the browser (unless combined with `export const ssr = false`, in which case it will [only run in the browser](page-options#ssr)). If your `load` function should _always_ run on the server (because it uses private environment variables, for example, or accesses a database) then it would go in a `+page.server.js` instead. A more realistic version of your blog post's `load` function, that only runs on the server and pulls data from a database, might look like this: diff --git a/documentation/docs/25-build-and-deploy/30-adapter-auto.md b/documentation/docs/25-build-and-deploy/30-adapter-auto.md index a1c682168c88..be55193b0fdc 100644 --- a/documentation/docs/25-build-and-deploy/30-adapter-auto.md +++ b/documentation/docs/25-build-and-deploy/30-adapter-auto.md @@ -9,7 +9,7 @@ When you create a new SvelteKit project with `npx sv create`, it installs [`adap - [`@sveltejs/adapter-vercel`](adapter-vercel) for [Vercel](https://vercel.com/) - [`svelte-adapter-azure-swa`](https://github.com/geoffrich/svelte-adapter-azure-swa) for [Azure Static Web Apps](https://docs.microsoft.com/en-us/azure/static-web-apps/) - [`svelte-kit-sst`](https://github.com/sst/sst/tree/master/packages/svelte-kit-sst) for [AWS via SST](https://sst.dev/docs/start/aws/svelte) -- [`@sveltejs/adapter-node`](https://kit.svelte.dev/docs/adapter-node) for [Google Cloud Run](https://cloud.google.com/run) +- [`@sveltejs/adapter-node`](adapter-node) for [Google Cloud Run](https://cloud.google.com/run) It's recommended to install the appropriate adapter to your `devDependencies` once you've settled on a target environment, since this will add the adapter to your lockfile and slightly improve install times on CI. diff --git a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md index 9626b6689a0e..b1dea91bdd6b 100644 --- a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md +++ b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md @@ -108,11 +108,11 @@ For testing the build, you should use [wrangler](https://developers.cloudflare.c ## Notes -Functions contained in the `/functions` directory at the project's root will _not_ be included in the deployment, which is compiled to a [single `_worker.js` file](https://developers.cloudflare.com/pages/platform/functions/#advanced-mode). Functions should be implemented as [server endpoints](https://kit.svelte.dev/docs/routing#server) in your SvelteKit app. +Functions contained in the `/functions` directory at the project's root will _not_ be included in the deployment, which is compiled to a [single `_worker.js` file](https://developers.cloudflare.com/pages/platform/functions/#advanced-mode). Functions should be implemented as [server endpoints](routing#server) in your SvelteKit app. The `_headers` and `_redirects` files specific to Cloudflare Pages can be used for static asset responses (like images) by putting them into the `/static` folder. -However, they will have no effect on responses dynamically rendered by SvelteKit, which should return custom headers or redirect responses from [server endpoints](https://kit.svelte.dev/docs/routing#server) or with the [`handle`](https://kit.svelte.dev/docs/hooks#Server-hooks-handle) hook. +However, they will have no effect on responses dynamically rendered by SvelteKit, which should return custom headers or redirect responses from [server endpoints](routing#server) or with the [`handle`](hooks#Server-hooks-handle) hook. ## Troubleshooting @@ -122,4 +122,4 @@ You may wish to refer to [Cloudflare's documentation for deploying a SvelteKit s ### Accessing the file system -You can't use `fs` in Cloudflare Workers — you must [prerender](https://kit.svelte.dev/docs/page-options#prerender) the routes in question. +You can't use `fs` in Cloudflare Workers — you must [prerender](page-options#prerender) the routes in question. diff --git a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md index 8caaad4200ea..6635f566d38a 100644 --- a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md +++ b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md @@ -135,4 +135,4 @@ When deploying to workers, the server generated by SvelteKit is bundled into a s ### Accessing the file system -You can't use `fs` in Cloudflare Workers — you must [prerender](https://kit.svelte.dev/docs/page-options#prerender) the routes in question. +You can't use `fs` in Cloudflare Workers — you must [prerender](page-options#prerender) the routes in question. diff --git a/documentation/docs/25-build-and-deploy/80-adapter-netlify.md b/documentation/docs/25-build-and-deploy/80-adapter-netlify.md index a9d5702b3b14..575a706ff1eb 100644 --- a/documentation/docs/25-build-and-deploy/80-adapter-netlify.md +++ b/documentation/docs/25-build-and-deploy/80-adapter-netlify.md @@ -80,7 +80,7 @@ During compilation, redirect rules are automatically appended to your `_redirect ### Netlify Forms 1. Create your Netlify HTML form as described [here](https://docs.netlify.com/forms/setup/#html-forms), e.g. as `/routes/contact/+page.svelte`. (Don't forget to add the hidden `form-name` input element!) -2. Netlify's build bot parses your HTML files at deploy time, which means your form must be [prerendered](https://kit.svelte.dev/docs/page-options#prerender) as HTML. You can either add `export const prerender = true` to your `contact.svelte` to prerender just that page or set the `kit.prerender.force: true` option to prerender all pages. +2. Netlify's build bot parses your HTML files at deploy time, which means your form must be [prerendered](page-options#prerender) as HTML. You can either add `export const prerender = true` to your `contact.svelte` to prerender just that page or set the `kit.prerender.force: true` option to prerender all pages. 3. If your Netlify form has a [custom success message](https://docs.netlify.com/forms/setup/#success-messages) like `
` then ensure the corresponding `/routes/success/+page.svelte` exists and is prerendered. ### Netlify Functions @@ -115,4 +115,4 @@ You can't use `fs` in edge deployments. You _can_ use it in serverless deployments, but it won't work as expected, since files are not copied from your project into your deployment. Instead, use the `read` function from `$app/server` to access your files. `read` does not work inside edge deployments (this may change in future). -Alternatively, you can [prerender](https://kit.svelte.dev/docs/page-options#prerender) the routes in question. +Alternatively, you can [prerender](page-options#prerender) the routes in question. diff --git a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md index 1d203fb3acaa..226d8cb6cae1 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -161,7 +161,7 @@ Cookie-based skew protection comes with one caveat: if a user has multiple versi ### Vercel functions -If you have Vercel functions contained in the `api` directory at the project's root, any requests for `/api/*` will _not_ be handled by SvelteKit. You should implement these as [API routes](https://kit.svelte.dev/docs/routing#server) in your SvelteKit app instead, unless you need to use a non-JavaScript language in which case you will need to ensure that you don't have any `/api/*` routes in your SvelteKit app. +If you have Vercel functions contained in the `api` directory at the project's root, any requests for `/api/*` will _not_ be handled by SvelteKit. You should implement these as [API routes](routing#server) in your SvelteKit app instead, unless you need to use a non-JavaScript language in which case you will need to ensure that you don't have any `/api/*` routes in your SvelteKit app. ### Node version diff --git a/documentation/docs/40-best-practices/05-performance.md b/documentation/docs/40-best-practices/05-performance.md index 25f332e3ddf0..390236d9a2f7 100644 --- a/documentation/docs/40-best-practices/05-performance.md +++ b/documentation/docs/40-best-practices/05-performance.md @@ -93,7 +93,7 @@ One of the biggest performance killers is what is referred to as a _waterfall_, ## Hosting -Your frontend should be located in the same data center as your backend to minimize latency. For sites with no central backend, many SvelteKit adapters support deploying to the _edge_, which means handling each user's requests from a nearby server. This can reduce load times significantly. Some adapters even support [configuring deployment on a per-route basis](https://kit.svelte.dev/docs/page-options#config). You should also consider serving images from a CDN (which are typically edge networks) — the hosts for many SvelteKit adapters will do this automatically. +Your frontend should be located in the same data center as your backend to minimize latency. For sites with no central backend, many SvelteKit adapters support deploying to the _edge_, which means handling each user's requests from a nearby server. This can reduce load times significantly. Some adapters even support [configuring deployment on a per-route basis](page-options#config). You should also consider serving images from a CDN (which are typically edge networks) — the hosts for many SvelteKit adapters will do this automatically. Ensure your host uses HTTP/2 or newer. Vite's code splitting creates numerous small files for improved cacheability, which results in excellent performance, but this does assume that your files can be loaded in parallel with HTTP/2. diff --git a/documentation/docs/40-best-practices/07-images.md b/documentation/docs/40-best-practices/07-images.md index 4dd9219e0bcd..5c7040b32be9 100644 --- a/documentation/docs/40-best-practices/07-images.md +++ b/documentation/docs/40-best-practices/07-images.md @@ -71,7 +71,7 @@ If you wish to add styles to your ``, you should add a `class` and ### Dynamically choosing an image -You can also manually import an image asset and pass it to an ``. This is useful when you have a collection of static images and would like to dynamically choose one or [iterate over them](https://github.com/sveltejs/kit/blob/main/sites/kit.svelte.dev/src/routes/home/Showcase.svelte). In this case you will need to update both the `import` statement and `` element as shown below to indicate you'd like process them. +You can also manually import an image asset and pass it to an ``. This is useful when you have a collection of static images and would like to dynamically choose one or [iterate over them](https://github.com/sveltejs/kit/blob/0ab1733e394b6310895a1d3bf0f126ce34531170/sites/kit.svelte.dev/src/routes/home/Showcase.svelte). In this case you will need to update both the `import` statement and `` element as shown below to indicate you'd like process them. ```svelte ``` diff --git a/documentation/docs/30-advanced/10-advanced-routing.md b/documentation/docs/30-advanced/10-advanced-routing.md index 5abfcbe83390..07044fa7bcc7 100644 --- a/documentation/docs/30-advanced/10-advanced-routing.md +++ b/documentation/docs/30-advanced/10-advanced-routing.md @@ -287,4 +287,4 @@ export function load(event) { ## Further reading -- [Tutorial: Advanced Routing](https://learn.svelte.dev/tutorial/optional-params) +- [Tutorial: Advanced Routing](../tutorial/kit/optional-params) diff --git a/documentation/docs/30-advanced/20-hooks.md b/documentation/docs/30-advanced/20-hooks.md index 7ae631064456..c2f3408498c5 100644 --- a/documentation/docs/30-advanced/20-hooks.md +++ b/documentation/docs/30-advanced/20-hooks.md @@ -270,4 +270,4 @@ Using `reroute` will _not_ change the contents of the browser's address bar, or ## Further reading -- [Tutorial: Hooks](https://learn.svelte.dev/tutorial/handle) +- [Tutorial: Hooks](../tutorial/kit/handle) diff --git a/documentation/docs/30-advanced/25-errors.md b/documentation/docs/30-advanced/25-errors.md index 76351d633cc9..63fbd83cc2c4 100644 --- a/documentation/docs/30-advanced/25-errors.md +++ b/documentation/docs/30-advanced/25-errors.md @@ -144,5 +144,5 @@ This interface always includes a `message: string` property. ## Further reading -- [Tutorial: Errors and redirects](https://learn.svelte.dev/tutorial/error-basics) -- [Tutorial: Hooks](https://learn.svelte.dev/tutorial/handle) +- [Tutorial: Errors and redirects](../tutorial/kit/error-basics) +- [Tutorial: Hooks](../tutorial/kit/handle) diff --git a/documentation/docs/30-advanced/50-server-only-modules.md b/documentation/docs/30-advanced/50-server-only-modules.md index 698d00484024..e20f9caa0925 100644 --- a/documentation/docs/30-advanced/50-server-only-modules.md +++ b/documentation/docs/30-advanced/50-server-only-modules.md @@ -61,4 +61,4 @@ This feature also works with dynamic imports, even interpolated ones like ``awai ## Further reading -- [Tutorial: Environment variables](https://learn.svelte.dev/tutorial/env-static-private) +- [Tutorial: Environment variables](../tutorial/kit/env-static-private) From e753c0bfe44cf70bed8ba75674f9695268d7b515 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 13:09:15 -0700 Subject: [PATCH 345/454] docs: update links --- documentation/docs/10-getting-started/10-introduction.md | 4 ++-- .../docs/10-getting-started/20-creating-a-project.md | 2 +- documentation/docs/20-core-concepts/10-routing.md | 2 +- documentation/docs/20-core-concepts/20-load.md | 2 +- documentation/docs/40-best-practices/10-accessibility.md | 2 +- documentation/docs/40-best-practices/20-seo.md | 2 +- documentation/docs/60-appendix/10-faq.md | 6 +++--- documentation/docs/60-appendix/25-debugging.md | 2 +- .../docs/60-appendix/30-migrating-to-sveltekit-2.md | 4 ++-- documentation/docs/60-appendix/50-additional-resources.md | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/documentation/docs/10-getting-started/10-introduction.md b/documentation/docs/10-getting-started/10-introduction.md index 1e33f2a5617f..2e7cae50029f 100644 --- a/documentation/docs/10-getting-started/10-introduction.md +++ b/documentation/docs/10-getting-started/10-introduction.md @@ -10,13 +10,13 @@ title: Introduction ## What is SvelteKit? -SvelteKit is a framework for rapidly developing robust, performant web applications using [Svelte](https://svelte.dev/). If you're coming from React, SvelteKit is similar to Next. If you're coming from Vue, SvelteKit is similar to Nuxt. +SvelteKit is a framework for rapidly developing robust, performant web applications using [Svelte](../svelte). If you're coming from React, SvelteKit is similar to Next. If you're coming from Vue, SvelteKit is similar to Nuxt. To learn more about the kinds of applications you can build with SvelteKit, see the [FAQ](faq#What-can-I-make-with-SvelteKit). ## What is Svelte? -In short, Svelte is a way of writing user interface components — like a navigation bar, comment section, or contact form — that users see and interact with in their browsers. The Svelte compiler converts your components to JavaScript that can be run to render the HTML for the page and to CSS that styles the page. You don't need to know Svelte to understand the rest of this guide, but it will help. If you'd like to learn more, check out [the Svelte tutorial](https://svelte.dev/tutorial). +In short, Svelte is a way of writing user interface components — like a navigation bar, comment section, or contact form — that users see and interact with in their browsers. The Svelte compiler converts your components to JavaScript that can be run to render the HTML for the page and to CSS that styles the page. You don't need to know Svelte to understand the rest of this guide, but it will help. If you'd like to learn more, check out [the Svelte tutorial](/tutorial). ## SvelteKit vs Svelte diff --git a/documentation/docs/10-getting-started/20-creating-a-project.md b/documentation/docs/10-getting-started/20-creating-a-project.md index d86d1e3d1aac..4219449d1f1a 100644 --- a/documentation/docs/10-getting-started/20-creating-a-project.md +++ b/documentation/docs/10-getting-started/20-creating-a-project.md @@ -15,7 +15,7 @@ The first command will scaffold a new project in the `my-app` directory asking y There are two basic concepts: -- Each page of your app is a [Svelte](https://svelte.dev) component +- Each page of your app is a [Svelte](../svelte) component - You create pages by adding files to the `src/routes` directory of your project. These will be server-rendered so that a user's first visit to your app is as fast as possible, then a client-side app takes over Try editing the files to get a feel for how everything works. diff --git a/documentation/docs/20-core-concepts/10-routing.md b/documentation/docs/20-core-concepts/10-routing.md index 3024990032ca..2d8845e77c45 100644 --- a/documentation/docs/20-core-concepts/10-routing.md +++ b/documentation/docs/20-core-concepts/10-routing.md @@ -384,7 +384,7 @@ In turn, annotating the `load` function with `PageLoad`, `PageServerLoad`, `Layo If you're using VS Code or any IDE that supports the language server protocol and TypeScript plugins then you can omit these types _entirely_! Svelte's IDE tooling will insert the correct types for you, so you'll get type checking without writing them yourself. It also works with our command line tool `svelte-check`. -You can read more about omitting `$types` in our [blog post](https://svelte.dev/blog/zero-config-type-safety) about it. +You can read more about omitting `$types` in our [blog post](/blog/zero-config-type-safety) about it. ## Other files diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index 2643741e983f..2a75cc5ca2f1 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -675,7 +675,7 @@ To summarize, a `load` function will rerun in the following situations: `params` and `url` can change in response to a `` link click, a [`` interaction](form-actions#GET-vs-POST), a [`goto`]($app-navigation#goto) invocation, or a [`redirect`](@sveltejs-kit#redirect). -Note that rerunning a `load` function will update the `data` prop inside the corresponding `+layout.svelte` or `+page.svelte`; it does _not_ cause the component to be recreated. As a result, internal state is preserved. If this isn't what you want, you can reset whatever you need to reset inside an [`afterNavigate`]($app-navigation#afterNavigate) callback, and/or wrap your component in a [`{#key ...}`](https://svelte.dev/docs#template-syntax-key) block. +Note that rerunning a `load` function will update the `data` prop inside the corresponding `+layout.svelte` or `+page.svelte`; it does _not_ cause the component to be recreated. As a result, internal state is preserved. If this isn't what you want, you can reset whatever you need to reset inside an [`afterNavigate`]($app-navigation#afterNavigate) callback, and/or wrap your component in a [`{#key ...}`](../svelte/key) block. ## Implications for authentication diff --git a/documentation/docs/40-best-practices/10-accessibility.md b/documentation/docs/40-best-practices/10-accessibility.md index 9651a8833265..ffa4a0852e68 100644 --- a/documentation/docs/40-best-practices/10-accessibility.md +++ b/documentation/docs/40-best-practices/10-accessibility.md @@ -2,7 +2,7 @@ title: Accessibility --- -SvelteKit strives to provide an accessible platform for your app by default. Svelte's [compile-time accessibility checks](https://svelte.dev/docs#accessibility-warnings) will also apply to any SvelteKit application you build. +SvelteKit strives to provide an accessible platform for your app by default. Svelte's [compile-time accessibility checks](../svelte/compiler-warnings) will also apply to any SvelteKit application you build. Here's how SvelteKit's built-in accessibility features work and what you need to do to help these features to work as well as possible. Keep in mind that while SvelteKit provides an accessible foundation, you are still responsible for making sure your application code is accessible. If you're new to accessibility, see the ["further reading"](accessibility#Further-reading) section of this guide for additional resources. diff --git a/documentation/docs/40-best-practices/20-seo.md b/documentation/docs/40-best-practices/20-seo.md index 46bb92a8114f..232d2393fe82 100644 --- a/documentation/docs/40-best-practices/20-seo.md +++ b/documentation/docs/40-best-practices/20-seo.md @@ -24,7 +24,7 @@ SvelteKit redirects pathnames with trailing slashes to ones without (or vice ver ### <title> and <meta> -Every page should have well-written and unique `` and `<meta name="description">` elements inside a [`<svelte:head>`](https://svelte.dev/docs#template-syntax-svelte-head). Guidance on how to write descriptive titles and descriptions, along with other suggestions on making content understandable by search engines, can be found on Google's [Lighthouse SEO audits](https://web.dev/lighthouse-seo/) documentation. +Every page should have well-written and unique `<title>` and `<meta name="description">` elements inside a [`<svelte:head>`](../svelte/svelte-head). Guidance on how to write descriptive titles and descriptions, along with other suggestions on making content understandable by search engines, can be found on Google's [Lighthouse SEO audits](https://web.dev/lighthouse-seo/) documentation. > [!NOTE] A common pattern is to return SEO-related `data` from page [`load`](load) functions, then use it (as [`$page.data`]($app-stores)) in a `<svelte:head>` in your root [layout](routing#layout). diff --git a/documentation/docs/60-appendix/10-faq.md b/documentation/docs/60-appendix/10-faq.md index aa789e0723ee..4e0b2d536c13 100644 --- a/documentation/docs/60-appendix/10-faq.md +++ b/documentation/docs/60-appendix/10-faq.md @@ -4,7 +4,7 @@ title: Frequently asked questions ## Other resources -Please see [the Svelte FAQ](https://svelte.dev/faq) and [`vite-plugin-svelte` FAQ](https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/faq.md) as well for the answers to questions deriving from those libraries. +Please see [the Svelte FAQ](../svelte/faq) and [`vite-plugin-svelte` FAQ](https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/faq.md) as well for the answers to questions deriving from those libraries. ## What can I make with SvelteKit? @@ -29,7 +29,7 @@ It is also possible to write custom adapters or leverage community adapters to d ## How do I use HMR with SvelteKit? -SvelteKit has HMR enabled by default powered by [svelte-hmr](https://github.com/sveltejs/svelte-hmr). If you saw [Rich's presentation at the 2020 Svelte Summit](https://svelte.dev/blog/whats-the-deal-with-sveltekit), you may have seen a more powerful-looking version of HMR presented. This demo had `svelte-hmr`'s `preserveLocalState` flag on. This flag is now off by default because it may lead to unexpected behaviour and edge cases. But don't worry, you are still getting HMR with SvelteKit! If you'd like to preserve local state you can use the `@hmr:keep` or `@hmr:keep-all` directives as documented on the [svelte-hmr](https://github.com/sveltejs/svelte-hmr) page. +SvelteKit has HMR enabled by default powered by [svelte-hmr](https://github.com/sveltejs/svelte-hmr). If you saw [Rich's presentation at the 2020 Svelte Summit](/blog/whats-the-deal-with-sveltekit), you may have seen a more powerful-looking version of HMR presented. This demo had `svelte-hmr`'s `preserveLocalState` flag on. This flag is now off by default because it may lead to unexpected behaviour and edge cases. But don't worry, you are still getting HMR with SvelteKit! If you'd like to preserve local state you can use the `@hmr:keep` or `@hmr:keep-all` directives as documented on the [svelte-hmr](https://github.com/sveltejs/svelte-hmr) page. ## How do I include details from package.json in my application? @@ -83,7 +83,7 @@ onNavigate((navigation) => { }); ``` -For more, see ["Unlocking view transitions"](https://svelte.dev/blog/view-transitions) on the Svelte blog. +For more, see ["Unlocking view transitions"](/blog/view-transitions) on the Svelte blog. ## How do I use X with SvelteKit? diff --git a/documentation/docs/60-appendix/25-debugging.md b/documentation/docs/60-appendix/25-debugging.md index b07b31abe9d2..f033622f9ab9 100644 --- a/documentation/docs/60-appendix/25-debugging.md +++ b/documentation/docs/60-appendix/25-debugging.md @@ -2,7 +2,7 @@ title: Breakpoint Debugging --- -In addition to the [`@debug`](https://svelte.dev/docs/special-tags#debug) tag, you can also debug Svelte and SvelteKit projects using breakpoints within various tools and development environments. This includes both frontend and backend code. +In addition to the [`@debug`](../svelte/debug) tag, you can also debug Svelte and SvelteKit projects using breakpoints within various tools and development environments. This includes both frontend and backend code. The following guides assume your JavaScript runtime environment is Node.js. diff --git a/documentation/docs/60-appendix/30-migrating-to-sveltekit-2.md b/documentation/docs/60-appendix/30-migrating-to-sveltekit-2.md index 148d8b08b63a..ab2f6808ab17 100644 --- a/documentation/docs/60-appendix/30-migrating-to-sveltekit-2.md +++ b/documentation/docs/60-appendix/30-migrating-to-sveltekit-2.md @@ -4,7 +4,7 @@ title: Migrating to SvelteKit v2 Upgrading from SvelteKit version 1 to version 2 should be mostly seamless. There are a few breaking changes to note, which are listed here. You can use `npx sv migrate sveltekit-2` to migrate some of these changes automatically. -We highly recommend upgrading to the most recent 1.x version before upgrading to 2.0, so that you can take advantage of targeted deprecation warnings. We also recommend [updating to Svelte 4](https://svelte.dev/docs/v4-migration-guide) first: Later versions of SvelteKit 1.x support it, and SvelteKit 2.0 requires it. +We highly recommend upgrading to the most recent 1.x version before upgrading to 2.0, so that you can take advantage of targeted deprecation warnings. We also recommend [updating to Svelte 4](../svelte/v4-migration-guide) first: Later versions of SvelteKit 1.x support it, and SvelteKit 2.0 requires it. ## `redirect` and `error` are no longer thrown by you @@ -40,7 +40,7 @@ export function load({ cookies }) { ## Top-level promises are no longer awaited -In SvelteKit version 1, if the top-level properties of the object returned from a `load` function were promises, they were automatically awaited. With the introduction of [streaming](https://svelte.dev/blog/streaming-snapshots-sveltekit) this behavior became a bit awkward as it forces you to nest your streamed data one level deep. +In SvelteKit version 1, if the top-level properties of the object returned from a `load` function were promises, they were automatically awaited. With the introduction of [streaming](/blog/streaming-snapshots-sveltekit) this behavior became a bit awkward as it forces you to nest your streamed data one level deep. As of version 2, SvelteKit no longer differentiates between top-level and non-top-level promises. To get back the blocking behavior, use `await` (with `Promise.all` to prevent waterfalls, where appropriate): diff --git a/documentation/docs/60-appendix/50-additional-resources.md b/documentation/docs/60-appendix/50-additional-resources.md index 01c43d53a341..f59f0faadf59 100644 --- a/documentation/docs/60-appendix/50-additional-resources.md +++ b/documentation/docs/60-appendix/50-additional-resources.md @@ -4,9 +4,9 @@ title: Additional resources ## FAQs -Please see the [SvelteKit FAQ](../faq) for solutions to common issues and helpful tips and tricks. +Please see the [SvelteKit FAQ](faq) for solutions to common issues and helpful tips and tricks. -The [Svelte FAQ](https://svelte.dev/faq) and [`vite-plugin-svelte` FAQ](https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/faq.md) may also be helpful for questions deriving from those libraries. +The [Svelte FAQ](../svelte/faq) and [`vite-plugin-svelte` FAQ](https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/faq.md) may also be helpful for questions deriving from those libraries. ## Examples From ea7d024a818d05903bc4fb1330b74a86e8d0245e Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 13:16:11 -0700 Subject: [PATCH 346/454] docs: update playground links --- playgrounds/basic/jsconfig.json | 2 +- playgrounds/basic/src/app.d.ts | 2 +- playgrounds/basic/src/routes/+page.svelte | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/playgrounds/basic/jsconfig.json b/playgrounds/basic/jsconfig.json index fe45e13fdd06..1801420ff9f0 100644 --- a/playgrounds/basic/jsconfig.json +++ b/playgrounds/basic/jsconfig.json @@ -10,7 +10,7 @@ "sourceMap": true, "strict": true } - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias and https://kit.svelte.dev/docs/configuration#files + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias and https://svelte.dev/docs/kit/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 diff --git a/playgrounds/basic/src/app.d.ts b/playgrounds/basic/src/app.d.ts index f59b884c51ed..9746bdf0ef82 100644 --- a/playgrounds/basic/src/app.d.ts +++ b/playgrounds/basic/src/app.d.ts @@ -1,4 +1,4 @@ -// See https://kit.svelte.dev/docs/types#app +// See https://svelte.dev/docs/kit/types#app.d.ts // for information about these interfaces declare global { namespace App { diff --git a/playgrounds/basic/src/routes/+page.svelte b/playgrounds/basic/src/routes/+page.svelte index 5982b0ae37dd..cc88df0ea352 100644 --- a/playgrounds/basic/src/routes/+page.svelte +++ b/playgrounds/basic/src/routes/+page.svelte @@ -1,2 +1,2 @@ <h1>Welcome to SvelteKit</h1> -<p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p> +<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p> From 8ec471c875345b751344e67580ff1b772ef2735b Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 14:24:58 -0700 Subject: [PATCH 347/454] docs: update URLs for new svelte.dev site (#12857) --- .changeset/strange-plums-drop.md | 16 +++ packages/adapter-auto/README.md | 2 +- packages/adapter-auto/index.js | 2 +- packages/adapter-auto/package.json | 2 +- packages/adapter-cloudflare-workers/README.md | 2 +- .../adapter-cloudflare-workers/package.json | 2 +- packages/adapter-cloudflare/README.md | 4 +- packages/adapter-cloudflare/package.json | 2 +- packages/adapter-netlify/README.md | 2 +- packages/adapter-netlify/index.js | 2 +- packages/adapter-netlify/package.json | 2 +- packages/adapter-node/README.md | 4 +- packages/adapter-node/package.json | 2 +- packages/adapter-static/README.md | 4 +- packages/adapter-static/index.js | 6 +- packages/adapter-static/package.json | 2 +- .../adapter-static/test/apps/spa/README.md | 2 +- packages/adapter-vercel/README.md | 2 +- packages/adapter-vercel/package.json | 2 +- packages/amp/package.json | 2 +- packages/enhanced-img/README.md | 2 +- packages/enhanced-img/package.json | 2 +- packages/enhanced-img/types/index.d.ts | 2 +- packages/kit/CHANGELOG.md | 6 +- packages/kit/README.md | 6 +- packages/kit/package.json | 2 +- packages/kit/src/core/config/index.js | 2 +- packages/kit/src/core/config/index.spec.js | 16 +-- packages/kit/src/core/config/options.js | 16 +-- packages/kit/src/core/postbuild/prerender.js | 12 +- packages/kit/src/core/sync/write_ambient.js | 2 +- packages/kit/src/core/sync/write_tsconfig.js | 2 +- packages/kit/src/exports/public.d.ts | 94 +++++++------- packages/kit/src/exports/vite/dev/index.js | 2 +- packages/kit/src/exports/vite/index.js | 4 +- packages/kit/src/runtime/app/paths/types.d.ts | 4 +- packages/kit/src/runtime/app/stores.js | 4 +- packages/kit/src/runtime/client/client.js | 10 +- packages/kit/src/runtime/client/fetcher.js | 2 +- .../kit/src/runtime/server/page/actions.js | 2 +- packages/kit/src/runtime/server/page/index.js | 4 +- .../kit/src/runtime/server/page/load_data.js | 2 +- .../kit/src/runtime/server/page/render.js | 2 +- packages/kit/src/types/ambient.d.ts | 14 +- .../types/synthetic/$env+dynamic+private.md | 2 +- .../types/synthetic/$env+dynamic+public.md | 2 +- .../types/synthetic/$env+static+private.md | 4 +- .../src/types/synthetic/$env+static+public.md | 2 +- packages/kit/src/types/synthetic/$lib.md | 4 +- packages/kit/src/utils/url.spec.js | 8 +- .../kit/test/apps/basics/test/client.test.js | 4 +- .../basics/test/cross-platform/client.test.js | 2 +- .../kit/test/build-errors/prerender.spec.js | 2 +- packages/kit/tsconfig.json | 7 +- packages/kit/types/index.d.ts | 120 +++++++++--------- packages/migrate/README.md | 4 +- packages/migrate/migrations/package/index.js | 2 +- packages/migrate/migrations/svelte-4/index.js | 6 +- .../migrate/migrations/svelte-4/migrate.js | 16 +-- .../migrate/migrations/svelte-5/migrate.js | 2 +- .../migrate/migrations/sveltekit-2/index.js | 4 +- .../migrate/migrations/sveltekit-2/migrate.js | 16 +-- .../sveltekit-2/svelte-config-samples.md | 4 +- packages/migrate/package.json | 2 +- packages/package/README.md | 6 +- packages/package/package.json | 2 +- packages/package/src/validate.js | 4 +- 67 files changed, 257 insertions(+), 246 deletions(-) create mode 100644 .changeset/strange-plums-drop.md diff --git a/.changeset/strange-plums-drop.md b/.changeset/strange-plums-drop.md new file mode 100644 index 000000000000..dc8d4d160a14 --- /dev/null +++ b/.changeset/strange-plums-drop.md @@ -0,0 +1,16 @@ +--- +'@sveltejs/adapter-cloudflare-workers': patch +'@sveltejs/adapter-cloudflare': patch +'@sveltejs/adapter-netlify': patch +'@sveltejs/adapter-static': patch +'@sveltejs/adapter-vercel': patch +'@sveltejs/adapter-auto': patch +'@sveltejs/adapter-node': patch +'@sveltejs/enhanced-img': patch +'svelte-migrate': patch +'@sveltejs/package': patch +'@sveltejs/amp': patch +'@sveltejs/kit': patch +--- + +docs: update URLs for new svelte.dev site diff --git a/packages/adapter-auto/README.md b/packages/adapter-auto/README.md index 26f861ded979..ed96335346a5 100644 --- a/packages/adapter-auto/README.md +++ b/packages/adapter-auto/README.md @@ -4,7 +4,7 @@ Automatically chooses the SvelteKit adapter for your current environment, if pos ## Docs -[Docs](https://kit.svelte.dev/docs/adapter-auto) +[Docs](https://svelte.dev/docs/kit/adapter-auto) ## Changelog diff --git a/packages/adapter-auto/index.js b/packages/adapter-auto/index.js index cc1c676ffb80..c83ba6246c59 100644 --- a/packages/adapter-auto/index.js +++ b/packages/adapter-auto/index.js @@ -117,7 +117,7 @@ export default () => ({ if (adapter) return adapter.adapt(builder); builder.log.warn( - 'Could not detect a supported production environment. See https://kit.svelte.dev/docs/adapters to learn how to configure your app to run on the platform of your choosing' + 'Could not detect a supported production environment. See https://svelte.dev/docs/kit/adapters to learn how to configure your app to run on the platform of your choosing' ); }, supports: { diff --git a/packages/adapter-auto/package.json b/packages/adapter-auto/package.json index d9bf9d9a91c1..b80c17e10e22 100644 --- a/packages/adapter-auto/package.json +++ b/packages/adapter-auto/package.json @@ -17,7 +17,7 @@ "directory": "packages/adapter-auto" }, "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "exports": { ".": { diff --git a/packages/adapter-cloudflare-workers/README.md b/packages/adapter-cloudflare-workers/README.md index 1dbb3a50f2cb..a3805020a4aa 100644 --- a/packages/adapter-cloudflare-workers/README.md +++ b/packages/adapter-cloudflare-workers/README.md @@ -6,7 +6,7 @@ SvelteKit adapter that creates a Cloudflare Workers site using a function for dy ## Docs -[Docs](https://kit.svelte.dev/docs/adapter-cloudflare-workers) +[Docs](https://svelte.dev/docs/kit/adapter-cloudflare-workers) ## Changelog diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index ff8b55ec7acf..d6801a02569b 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -16,7 +16,7 @@ "directory": "packages/adapter-cloudflare-workers" }, "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "exports": { ".": { diff --git a/packages/adapter-cloudflare/README.md b/packages/adapter-cloudflare/README.md index 51a7eb0302fe..fa00adbf1c94 100644 --- a/packages/adapter-cloudflare/README.md +++ b/packages/adapter-cloudflare/README.md @@ -1,10 +1,10 @@ # adapter-cloudflare -[Adapter](https://kit.svelte.dev/docs/building-your-app) for building SvelteKit applications on [Cloudflare Pages](https://developers.cloudflare.com/pages/) with [Workers integration](https://developers.cloudflare.com/pages/platform/functions). +[Adapter](https://svelte.dev/docs/kit/building-your-app) for building SvelteKit applications on [Cloudflare Pages](https://developers.cloudflare.com/pages/) with [Workers integration](https://developers.cloudflare.com/pages/platform/functions). ## Docs -[Docs](https://kit.svelte.dev/docs/adapter-cloudflare) +[Docs](https://svelte.dev/docs/kit/adapter-cloudflare) ## Changelog diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index a7eaf5448a9b..9d294a4ed177 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -16,7 +16,7 @@ "directory": "packages/adapter-cloudflare" }, "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "exports": { ".": { diff --git a/packages/adapter-netlify/README.md b/packages/adapter-netlify/README.md index 93ea58a9f964..339311ffb2df 100644 --- a/packages/adapter-netlify/README.md +++ b/packages/adapter-netlify/README.md @@ -4,7 +4,7 @@ A SvelteKit adapter that creates a Netlify app. ## Docs -[Docs](https://kit.svelte.dev/docs/adapter-netlify) +[Docs](https://svelte.dev/docs/kit/adapter-netlify) ## Changelog diff --git a/packages/adapter-netlify/index.js b/packages/adapter-netlify/index.js index 2b7fafd47711..8fc380cc270f 100644 --- a/packages/adapter-netlify/index.js +++ b/packages/adapter-netlify/index.js @@ -323,7 +323,7 @@ function get_publish_directory(netlify_config, builder) { } builder.log.warn( - 'No netlify.toml found. Using default publish directory. Consult https://kit.svelte.dev/docs/adapter-netlify#usage for more details' + 'No netlify.toml found. Using default publish directory. Consult https://svelte.dev/docs/kit/adapter-netlify#usage for more details' ); } diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index bae99da20417..9c7631d878a8 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -16,7 +16,7 @@ "directory": "packages/adapter-netlify" }, "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "exports": { ".": { diff --git a/packages/adapter-node/README.md b/packages/adapter-node/README.md index 978aa477319e..22e355fee5ed 100644 --- a/packages/adapter-node/README.md +++ b/packages/adapter-node/README.md @@ -1,10 +1,10 @@ # @sveltejs/adapter-node -[Adapter](https://kit.svelte.dev/docs/adapters) for SvelteKit apps that generates a standalone Node server. +[Adapter](https://svelte.dev/docs/kit/adapters) for SvelteKit apps that generates a standalone Node server. ## Docs -[Docs](https://kit.svelte.dev/docs/adapter-node) +[Docs](https://svelte.dev/docs/kit/adapter-node) ## Changelog diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index 9ba8d2a63e07..3da7dc6ff361 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -16,7 +16,7 @@ "directory": "packages/adapter-node" }, "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "exports": { ".": { diff --git a/packages/adapter-static/README.md b/packages/adapter-static/README.md index 0d3aebd93adf..b612f2aa6122 100644 --- a/packages/adapter-static/README.md +++ b/packages/adapter-static/README.md @@ -1,10 +1,10 @@ # @sveltejs/adapter-static -[Adapter](https://kit.svelte.dev/docs/adapters) for SvelteKit apps that prerenders your entire site as a collection of static files. It's also possible to create an SPA with it by specifying a fallback page which renders an empty shell. If you'd like to prerender only some pages and not create an SPA for those left out, you will need to use a different adapter together with [the `prerender` option](https://kit.svelte.dev/docs/page-options#prerender). +[Adapter](https://svelte.dev/docs/kit/adapters) for SvelteKit apps that prerenders your entire site as a collection of static files. It's also possible to create an SPA with it by specifying a fallback page which renders an empty shell. If you'd like to prerender only some pages and not create an SPA for those left out, you will need to use a different adapter together with [the `prerender` option](https://svelte.dev/docs/kit/page-options#prerender). ## Docs -[Docs](https://kit.svelte.dev/docs/adapter-static) +[Docs](https://svelte.dev/docs/kit/adapter-static) ## Changelog diff --git a/packages/adapter-static/index.js b/packages/adapter-static/index.js index 3ddb1b84ea4a..c5e0d68efa42 100644 --- a/packages/adapter-static/index.js +++ b/packages/adapter-static/index.js @@ -18,7 +18,7 @@ export default function (options) { has_param_routes ? '(routes with parameters are not part of entry points by default)' : '' - } — see https://kit.svelte.dev/docs/configuration#prerender for more info.` + } — see https://svelte.dev/docs/kit/configuration#prerender for more info.` : ''; builder.log.error( @@ -26,14 +26,14 @@ export default function (options) { ${dynamic_routes.map((route) => ` - ${path.posix.join(prefix, route.id)}`).join('\n')} You have the following options: - - set the \`fallback\` option — see https://kit.svelte.dev/docs/single-page-apps#usage for more info. + - set the \`fallback\` option — see https://svelte.dev/docs/kit/single-page-apps#usage for more info. - add \`export const prerender = true\` to your root \`+layout.js/.ts\` or \`+layout.server.js/.ts\` file. This will try to prerender all pages. - add \`export const prerender = true\` to any \`+server.js/ts\` files that are not fetched by page \`load\` functions. ${config_option} - pass \`strict: false\` to \`adapter-static\` to ignore this error. Only do this if you are sure you don't need the routes in question in your final app, as they will be unavailable. See https://github.com/sveltejs/kit/tree/main/packages/adapter-static#strict for more info. If this doesn't help, you may need to use a different adapter. @sveltejs/adapter-static can only be used for sites that don't need a server for dynamic rendering, and can run on just a static file server. -See https://kit.svelte.dev/docs/page-options#prerender for more details` +See https://svelte.dev/docs/kit/page-options#prerender for more details` ); throw new Error('Encountered dynamic routes'); } diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index 6aa221827c71..f28a87ccad5c 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -17,7 +17,7 @@ "directory": "packages/adapter-static" }, "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "exports": { ".": { diff --git a/packages/adapter-static/test/apps/spa/README.md b/packages/adapter-static/test/apps/spa/README.md index 1facfc2a692c..16c7d1981629 100644 --- a/packages/adapter-static/test/apps/spa/README.md +++ b/packages/adapter-static/test/apps/spa/README.md @@ -27,7 +27,7 @@ npm run dev -- --open ## Building -Before creating a production version of your app, install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. Then: +Before creating a production version of your app, install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. Then: ```bash npm run build diff --git a/packages/adapter-vercel/README.md b/packages/adapter-vercel/README.md index a5c47db245b5..ce1a3c89595e 100644 --- a/packages/adapter-vercel/README.md +++ b/packages/adapter-vercel/README.md @@ -4,7 +4,7 @@ A SvelteKit adapter that creates a Vercel app. ## Docs -[Docs](https://kit.svelte.dev/docs/adapter-vercel) +[Docs](https://svelte.dev/docs/kit/adapter-vercel) ## Changelog diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 383cebe5e34a..85b9e203a01e 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -16,7 +16,7 @@ "directory": "packages/adapter-vercel" }, "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "exports": { ".": { diff --git a/packages/amp/package.json b/packages/amp/package.json index 45e8b389a32c..155251a05d1f 100644 --- a/packages/amp/package.json +++ b/packages/amp/package.json @@ -14,7 +14,7 @@ "directory": "packages/amp" }, "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "exports": { ".": { diff --git a/packages/enhanced-img/README.md b/packages/enhanced-img/README.md index 93f194944ff7..ac87975c1f95 100644 --- a/packages/enhanced-img/README.md +++ b/packages/enhanced-img/README.md @@ -6,7 +6,7 @@ A Vite plugin which runs a Svelte preprocessor to locate images and then transfo ## Docs -[Docs](https://kit.svelte.dev/docs/images) +[Docs](https://svelte.dev/docs/kit/images) ## Changelog diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 8cd893d36d2c..2225e4cd0741 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -18,7 +18,7 @@ "vite" ], "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "scripts": { "lint": "prettier --check .", diff --git a/packages/enhanced-img/types/index.d.ts b/packages/enhanced-img/types/index.d.ts index 458caafbb6d8..5d287fc672d6 100644 --- a/packages/enhanced-img/types/index.d.ts +++ b/packages/enhanced-img/types/index.d.ts @@ -5,7 +5,7 @@ import './ambient.js'; type EnhancedImgAttributes = Omit<HTMLImgAttributes, 'src'> & { src: string | Picture }; -// https://svelte.dev/docs/typescript#enhancing-built-in-dom-types +// https://svelte.dev/docs/svelte/typescript#enhancing-built-in-dom-types declare module 'svelte/elements' { export interface SvelteHTMLElements { 'enhanced:img': EnhancedImgAttributes; diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index e85f799bb106..3e8cc810c68a 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -4206,8 +4206,8 @@ Starting from now all releases follow semver and changes will be listed as Major ### Patch Changes -- Allow endpoints to return a [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response), or an object with [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers) ([docs](https://kit.svelte.dev/docs/routing#endpoints), [#3384](https://github.com/sveltejs/kit/pull/3384)) -- breaking: Expose standard [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) object to endpoints and hooks. `method`, `headers`, and `body` now accessed through `request` field ([docs](https://kit.svelte.dev/docs/routing#endpoints), [#3384](https://github.com/sveltejs/kit/pull/3384)) +- Allow endpoints to return a [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response), or an object with [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers) ([docs](https://svelte.dev/docs/kit/routing#endpoints), [#3384](https://github.com/sveltejs/kit/pull/3384)) +- breaking: Expose standard [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) object to endpoints and hooks. `method`, `headers`, and `body` now accessed through `request` field ([docs](https://svelte.dev/docs/kit/routing#endpoints), [#3384](https://github.com/sveltejs/kit/pull/3384)) - breaking: change `app.render` signature to (request: Request) => Promise<Response> ([#3384](https://github.com/sveltejs/kit/pull/3384)) - breaking: move protocol/host configuration options from Kit to adapter-node ([#3384](https://github.com/sveltejs/kit/pull/3384)) @@ -4342,7 +4342,7 @@ Starting from now all releases follow semver and changes will be listed as Major ### Patch Changes -- breaking: Add `disableScrollHandling` function (see https://kit.svelte.dev/docs/modules#$app-navigation) ([#3182](https://github.com/sveltejs/kit/pull/3182)) +- breaking: Add `disableScrollHandling` function (see https://svelte.dev/docs/kit/modules#$app-navigation) ([#3182](https://github.com/sveltejs/kit/pull/3182)) ## 1.0.0-next.213 diff --git a/packages/kit/README.md b/packages/kit/README.md index f5b81142dcff..f5592f982a6d 100644 --- a/packages/kit/README.md +++ b/packages/kit/README.md @@ -1,8 +1,8 @@ # The fastest way to build Svelte apps -This is the [SvelteKit](https://kit.svelte.dev) framework and CLI. +This is the [SvelteKit](https://svelte.dev/docs/kit) framework and CLI. -The quickest way to get started is via the [create-svelte](https://github.com/sveltejs/kit/tree/main/packages/create-svelte) package: +The quickest way to get started is via the [sv](https://npmjs.com/package/sv) package: ```bash npx sv create my-app @@ -11,7 +11,7 @@ npm install npm run dev ``` -See the [documentation](https://kit.svelte.dev/docs) to learn more. +See the [documentation](https://svelte.dev/docs/kit) to learn more. ## Changelog diff --git a/packages/kit/package.json b/packages/kit/package.json index 61f5729d79ea..c77a8c1e4e17 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -15,7 +15,7 @@ "directory": "packages/kit" }, "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "dependencies": { "@types/cookie": "^0.6.0", diff --git a/packages/kit/src/core/config/index.js b/packages/kit/src/core/config/index.js index 36b82a86db04..b387cb2f0a44 100644 --- a/packages/kit/src/core/config/index.js +++ b/packages/kit/src/core/config/index.js @@ -111,7 +111,7 @@ function process_config(config, { cwd = process.cwd() } = {}) { export function validate_config(config) { if (typeof config !== 'object') { throw new Error( - 'svelte.config.js must have a configuration object as its default export. See https://kit.svelte.dev/docs/configuration' + 'svelte.config.js must have a configuration object as its default export. See https://svelte.dev/docs/kit/configuration' ); } diff --git a/packages/kit/src/core/config/index.spec.js b/packages/kit/src/core/config/index.spec.js index 0f946a61292d..35ca362837d5 100644 --- a/packages/kit/src/core/config/index.spec.js +++ b/packages/kit/src/core/config/index.spec.js @@ -209,7 +209,7 @@ test('fails if kit.appDir is only slash', () => { appDir: '/' } }); - }, /^config\.kit\.appDir cannot start or end with '\/'. See https:\/\/kit\.svelte\.dev\/docs\/configuration$/); + }, /^config\.kit\.appDir cannot start or end with '\/'. See https:\/\/svelte\.dev\/docs\/kit\/configuration$/); }); test('fails if kit.appDir starts with slash', () => { @@ -219,7 +219,7 @@ test('fails if kit.appDir starts with slash', () => { appDir: '/_app' } }); - }, /^config\.kit\.appDir cannot start or end with '\/'. See https:\/\/kit\.svelte\.dev\/docs\/configuration$/); + }, /^config\.kit\.appDir cannot start or end with '\/'. See https:\/\/svelte\.dev\/docs\/kit\/configuration$/); }); test('fails if kit.appDir ends with slash', () => { @@ -229,7 +229,7 @@ test('fails if kit.appDir ends with slash', () => { appDir: '_app/' } }); - }, /^config\.kit\.appDir cannot start or end with '\/'. See https:\/\/kit\.svelte\.dev\/docs\/configuration$/); + }, /^config\.kit\.appDir cannot start or end with '\/'. See https:\/\/svelte\.dev\/docs\/kit\/configuration$/); }); test('fails if paths.base is not root-relative', () => { @@ -242,7 +242,7 @@ test('fails if paths.base is not root-relative', () => { } } }); - }, /^config\.kit\.paths\.base option must either be the empty string or a root-relative path that starts but doesn't end with '\/'. See https:\/\/kit\.svelte\.dev\/docs\/configuration#paths$/); + }, /^config\.kit\.paths\.base option must either be the empty string or a root-relative path that starts but doesn't end with '\/'. See https:\/\/svelte\.dev\/docs\/kit\/configuration#paths$/); }); test("fails if paths.base ends with '/'", () => { @@ -254,7 +254,7 @@ test("fails if paths.base ends with '/'", () => { } } }); - }, /^config\.kit\.paths\.base option must either be the empty string or a root-relative path that starts but doesn't end with '\/'. See https:\/\/kit\.svelte\.dev\/docs\/configuration#paths$/); + }, /^config\.kit\.paths\.base option must either be the empty string or a root-relative path that starts but doesn't end with '\/'. See https:\/\/svelte\.dev\/docs\/kit\/configuration#paths$/); }); test('fails if paths.assets is relative', () => { @@ -267,7 +267,7 @@ test('fails if paths.assets is relative', () => { } } }); - }, /^config\.kit\.paths\.assets option must be an absolute path, if specified. See https:\/\/kit\.svelte\.dev\/docs\/configuration#paths$/); + }, /^config\.kit\.paths\.assets option must be an absolute path, if specified. See https:\/\/svelte\.dev\/docs\/kit\/configuration#paths$/); }); test('fails if paths.assets has trailing slash', () => { @@ -279,7 +279,7 @@ test('fails if paths.assets has trailing slash', () => { } } }); - }, /^config\.kit\.paths\.assets option must not end with '\/'. See https:\/\/kit\.svelte\.dev\/docs\/configuration#paths$/); + }, /^config\.kit\.paths\.assets option must not end with '\/'. See https:\/\/svelte\.dev\/docs\/kit\/configuration#paths$/); }); test('fails if prerender.entries are invalid', () => { @@ -373,6 +373,6 @@ test('errors on loading config with incorrect default export', async () => { assert.equal( message, - 'svelte.config.js must have a configuration object as its default export. See https://kit.svelte.dev/docs/configuration' + 'svelte.config.js must have a configuration object as its default export. See https://svelte.dev/docs/kit/configuration' ); }); diff --git a/packages/kit/src/core/config/options.js b/packages/kit/src/core/config/options.js index a4b41f2a16c6..70d631d3ada6 100644 --- a/packages/kit/src/core/config/options.js +++ b/packages/kit/src/core/config/options.js @@ -68,7 +68,7 @@ const options = object( message += ', rather than the name of an adapter'; } - throw new Error(`${message}. See https://kit.svelte.dev/docs/adapters`); + throw new Error(`${message}. See https://svelte.dev/docs/kit/adapters`); } return input; @@ -92,7 +92,7 @@ const options = object( if (input) { if (input.startsWith('/') || input.endsWith('/')) { throw new Error( - "config.kit.appDir cannot start or end with '/'. See https://kit.svelte.dev/docs/configuration" + "config.kit.appDir cannot start or end with '/'. See https://svelte.dev/docs/kit/configuration" ); } } else { @@ -151,7 +151,7 @@ const options = object( if (input !== '' && (input.endsWith('/') || !input.startsWith('/'))) { throw new Error( - `${keypath} option must either be the empty string or a root-relative path that starts but doesn't end with '/'. See https://kit.svelte.dev/docs/configuration#paths` + `${keypath} option must either be the empty string or a root-relative path that starts but doesn't end with '/'. See https://svelte.dev/docs/kit/configuration#paths` ); } @@ -163,13 +163,13 @@ const options = object( if (input) { if (!/^[a-z]+:\/\//.test(input)) { throw new Error( - `${keypath} option must be an absolute path, if specified. See https://kit.svelte.dev/docs/configuration#paths` + `${keypath} option must be an absolute path, if specified. See https://svelte.dev/docs/kit/configuration#paths` ); } if (input.endsWith('/')) { throw new Error( - `${keypath} option must not end with '/'. See https://kit.svelte.dev/docs/configuration#paths` + `${keypath} option must not end with '/'. See https://svelte.dev/docs/kit/configuration#paths` ); } } @@ -202,7 +202,7 @@ const options = object( (/** @type {any} */ { message }) => { throw new Error( message + - '\nTo suppress or handle this error, implement `handleHttpError` in https://kit.svelte.dev/docs/configuration#prerender' + '\nTo suppress or handle this error, implement `handleHttpError` in https://svelte.dev/docs/kit/configuration#prerender' ); }, (input, keypath) => { @@ -216,7 +216,7 @@ const options = object( (/** @type {any} */ { message }) => { throw new Error( message + - '\nTo suppress or handle this error, implement `handleMissingId` in https://kit.svelte.dev/docs/configuration#prerender' + '\nTo suppress or handle this error, implement `handleMissingId` in https://svelte.dev/docs/kit/configuration#prerender' ); }, (input, keypath) => { @@ -230,7 +230,7 @@ const options = object( (/** @type {any} */ { message }) => { throw new Error( message + - '\nTo suppress or handle this error, implement `handleEntryGeneratorMismatch` in https://kit.svelte.dev/docs/configuration#prerender' + '\nTo suppress or handle this error, implement `handleEntryGeneratorMismatch` in https://svelte.dev/docs/kit/configuration#prerender' ); }, (input, keypath) => { diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index 9a83652db866..f2f511d4a98a 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -114,7 +114,7 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { ({ status, path, referrer, referenceType }) => { const message = status === 404 && !path.startsWith(config.paths.base) - ? `${path} does not begin with \`base\`, which is configured in \`paths.base\` and can be imported from \`$app/paths\` - see https://kit.svelte.dev/docs/configuration#paths for more info` + ? `${path} does not begin with \`base\`, which is configured in \`paths.base\` and can be imported from \`$app/paths\` - see https://svelte.dev/docs/kit/configuration#paths for more info` : path; return `${status} ${message}${referrer ? ` (${referenceType} from ${referrer})` : ''}`; @@ -126,7 +126,7 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { config.prerender.handleMissingId, ({ path, id, referrers }) => { return ( - `The following pages contain links to ${path}#${id}, but no element with id="${id}" exists on ${path} - see the \`handleMissingId\` option in https://kit.svelte.dev/docs/configuration#prerender for more info:` + + `The following pages contain links to ${path}#${id}, but no element with id="${id}" exists on ${path} - see the \`handleMissingId\` option in https://svelte.dev/docs/kit/configuration#prerender for more info:` + referrers.map((l) => `\n - ${l}`).join('') ); } @@ -136,7 +136,7 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { log, config.prerender.handleEntryGeneratorMismatch, ({ generatedFromId, entry, matchedId }) => { - return `The entries export from ${generatedFromId} generated entry ${entry}, which was matched by ${matchedId} - see the \`handleEntryGeneratorMismatch\` option in https://kit.svelte.dev/docs/configuration#prerender for more info.`; + return `The entries export from ${generatedFromId} generated entry ${entry}, which was matched by ${matchedId} - see the \`handleEntryGeneratorMismatch\` option in https://svelte.dev/docs/kit/configuration#prerender for more info.`; } ); @@ -385,7 +385,7 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { if (response.status === 200) { if (existsSync(dest) && statSync(dest).isDirectory()) { throw new Error( - `Cannot save ${decoded} as it is already a directory. See https://kit.svelte.dev/docs/page-options#prerender-route-conflicts for more information` + `Cannot save ${decoded} as it is already a directory. See https://svelte.dev/docs/kit/page-options#prerender-route-conflicts for more information` ); } @@ -394,7 +394,7 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { if (existsSync(dir) && !statSync(dir).isDirectory()) { const parent = decoded.split('/').slice(0, -1).join('/'); throw new Error( - `Cannot save ${decoded} as ${parent} is already a file. See https://kit.svelte.dev/docs/page-options#prerender-route-conflicts for more information` + `Cannot save ${decoded} as ${parent} is already a file. See https://svelte.dev/docs/kit/page-options#prerender-route-conflicts for more information` ); } @@ -509,7 +509,7 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { const list = not_prerendered.map((id) => ` - ${id}`).join('\n'); throw new Error( - `The following routes were marked as prerenderable, but were not prerendered because they were not found while crawling your app:\n${list}\n\nSee https://kit.svelte.dev/docs/page-options#prerender-troubleshooting for info on how to solve this` + `The following routes were marked as prerenderable, but were not prerendered because they were not found while crawling your app:\n${list}\n\nSee https://svelte.dev/docs/kit/page-options#prerender-troubleshooting for info on how to solve this` ); } diff --git a/packages/kit/src/core/sync/write_ambient.js b/packages/kit/src/core/sync/write_ambient.js index 40a871cb52de..1f2188097ade 100644 --- a/packages/kit/src/core/sync/write_ambient.js +++ b/packages/kit/src/core/sync/write_ambient.js @@ -7,7 +7,7 @@ import { create_dynamic_types, create_static_types } from '../env.js'; import { write_if_changed } from './utils.js'; // TODO these types should be described in a neutral place, rather than -// inside either `packages/kit` or `kit.svelte.dev` +// inside either `packages/kit` or `svelte.dev/docs/kit` const descriptions_dir = fileURLToPath(new URL('../../../src/types/synthetic', import.meta.url)); /** @param {string} filename */ diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index 48114dd562fa..e9df340902e1 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -166,7 +166,7 @@ function validate_user_config(cwd, out, config) { .bold() .yellow( `You have specified a baseUrl and/or paths in your ${config.kind} which interferes with SvelteKit's auto-generated tsconfig.json. ` + - 'Remove it to avoid problems with intellisense. For path aliases, use `kit.alias` instead: https://kit.svelte.dev/docs/configuration#alias' + 'Remove it to avoid problems with intellisense. For path aliases, use `kit.alias` instead: https://svelte.dev/docs/kit/configuration#alias' ) ); } diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index c61c053171cf..7b706387cbe0 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -23,7 +23,7 @@ import type { PluginOptions } from '@sveltejs/vite-plugin-svelte'; export { PrerenderOption } from '../types/private.js'; /** - * [Adapters](https://kit.svelte.dev/docs/adapters) are responsible for taking the production build and turning it into something that can be deployed to a platform of your choosing. + * [Adapters](https://svelte.dev/docs/kit/adapters) are responsible for taking the production build and turning it into something that can be deployed to a platform of your choosing. */ export interface Adapter { /** @@ -128,7 +128,7 @@ export interface Builder { generateEnvModule(): void; /** - * Generate a server-side manifest to initialise the SvelteKit [server](https://kit.svelte.dev/docs/types#public-types-server) with. + * Generate a server-side manifest to initialise the SvelteKit [server](https://svelte.dev/docs/kit/types#public-types-server) with. * @param opts a relative path to the base directory of the app and optionally in which format (esm or cjs) the manifest should be generated */ generateManifest(opts: { relativePath: string; routes?: RouteDefinition[] }): string; @@ -189,7 +189,7 @@ export interface Builder { export interface Config { /** - * Options passed to [`svelte.compile`](https://svelte.dev/docs#compile-time-svelte-compile). + * Options passed to [`svelte.compile`](https://svelte.dev/docs/svelte/svelte-compiler#CompileOptions). * @default {} */ compilerOptions?: CompileOptions; @@ -278,7 +278,7 @@ export interface Emulator { export interface KitConfig { /** - * Your [adapter](https://kit.svelte.dev/docs/adapters) is run when executing `vite build`. It determines how the output is converted for different platforms. + * Your [adapter](https://svelte.dev/docs/kit/adapters) is run when executing `vite build`. It determines how the output is converted for different platforms. * @default undefined */ adapter?: Adapter; @@ -351,9 +351,9 @@ export interface KitConfig { * * > [!NOTE] When `mode` is `'auto'`, SvelteKit will use nonces for dynamically rendered pages and hashes for prerendered pages. Using nonces with prerendered pages is insecure and therefore forbidden. * - * > [!NOTE] Note that most [Svelte transitions](https://svelte.dev/tutorial/transition) work by creating an inline `<style>` element. If you use these in your app, you must either leave the `style-src` directive unspecified or add `unsafe-inline`. + * > [!NOTE] Note that most [Svelte transitions](https://svelte.dev/tutorial/svelte/transition) work by creating an inline `<style>` element. If you use these in your app, you must either leave the `style-src` directive unspecified or add `unsafe-inline`. * - * If this level of configuration is insufficient and you have more dynamic requirements, you can use the [`handle` hook](https://kit.svelte.dev/docs/hooks#Server-hooks-handle) to roll your own CSP. + * If this level of configuration is insufficient and you have more dynamic requirements, you can use the [`handle` hook](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) to roll your own CSP. */ csp?: { /** @@ -397,12 +397,12 @@ export interface KitConfig { */ dir?: string; /** - * A prefix that signals that an environment variable is safe to expose to client-side code. See [`$env/static/public`](https://kit.svelte.dev/docs/modules#$env-static-public) and [`$env/dynamic/public`](https://kit.svelte.dev/docs/modules#$env-dynamic-public). Note that Vite's [`envPrefix`](https://vitejs.dev/config/shared-options.html#envprefix) must be set separately if you are using Vite's environment variable handling - though use of that feature should generally be unnecessary. + * A prefix that signals that an environment variable is safe to expose to client-side code. See [`$env/static/public`](https://svelte.dev/docs/kit/modules#$env-static-public) and [`$env/dynamic/public`](https://svelte.dev/docs/kit/modules#$env-dynamic-public). Note that Vite's [`envPrefix`](https://vitejs.dev/config/shared-options.html#envprefix) must be set separately if you are using Vite's environment variable handling - though use of that feature should generally be unnecessary. * @default "PUBLIC_" */ publicPrefix?: string; /** - * A prefix that signals that an environment variable is unsafe to expose to client-side code. Environment variables matching neither the public nor the private prefix will be discarded completely. See [`$env/static/private`](https://kit.svelte.dev/docs/modules#$env-static-private) and [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private). + * A prefix that signals that an environment variable is unsafe to expose to client-side code. Environment variables matching neither the public nor the private prefix will be discarded completely. See [`$env/static/private`](https://svelte.dev/docs/kit/modules#$env-static-private) and [`$env/dynamic/private`](https://svelte.dev/docs/kit/modules#$env-dynamic-private). * @default "" * @since 1.21.0 */ @@ -419,17 +419,17 @@ export interface KitConfig { assets?: string; hooks?: { /** - * The location of your client [hooks](https://kit.svelte.dev/docs/hooks). + * The location of your client [hooks](https://svelte.dev/docs/kit/hooks). * @default "src/hooks.client" */ client?: string; /** - * The location of your server [hooks](https://kit.svelte.dev/docs/hooks). + * The location of your server [hooks](https://svelte.dev/docs/kit/hooks). * @default "src/hooks.server" */ server?: string; /** - * The location of your universal [hooks](https://kit.svelte.dev/docs/hooks). + * The location of your universal [hooks](https://svelte.dev/docs/kit/hooks). * @default "src/hooks" * @since 2.3.0 */ @@ -441,17 +441,17 @@ export interface KitConfig { */ lib?: string; /** - * a directory containing [parameter matchers](https://kit.svelte.dev/docs/advanced-routing#matching) + * a directory containing [parameter matchers](https://svelte.dev/docs/kit/advanced-routing#matching) * @default "src/params" */ params?: string; /** - * the files that define the structure of your app (see [Routing](https://kit.svelte.dev/docs/routing)) + * the files that define the structure of your app (see [Routing](https://svelte.dev/docs/kit/routing)) * @default "src/routes" */ routes?: string; /** - * the location of your service worker's entry point (see [Service workers](https://kit.svelte.dev/docs/service-workers)) + * the location of your service worker's entry point (see [Service workers](https://svelte.dev/docs/kit/service-workers)) * @default "src/service-worker" */ serviceWorker?: string; @@ -505,7 +505,7 @@ export interface KitConfig { */ assets?: '' | `http://${string}` | `https://${string}`; /** - * A root-relative path that must start, but not end with `/` (e.g. `/base-path`), unless it is the empty string. This specifies where your app is served from and allows the app to live on a non-root path. Note that you need to prepend all your root-relative links with the base value or they will point to the root of your domain, not your `base` (this is how the browser works). You can use [`base` from `$app/paths`](https://kit.svelte.dev/docs/modules#$app-paths-base) for that: `<a href="{base}/your-page">Link</a>`. If you find yourself writing this often, it may make sense to extract this into a reusable component. + * A root-relative path that must start, but not end with `/` (e.g. `/base-path`), unless it is the empty string. This specifies where your app is served from and allows the app to live on a non-root path. Note that you need to prepend all your root-relative links with the base value or they will point to the root of your domain, not your `base` (this is how the browser works). You can use [`base` from `$app/paths`](https://svelte.dev/docs/kit/modules#$app-paths-base) for that: `<a href="{base}/your-page">Link</a>`. If you find yourself writing this often, it may make sense to extract this into a reusable component. * @default "" */ base?: '' | `/${string}`; @@ -515,7 +515,7 @@ export interface KitConfig { * If `true`, `base` and `assets` imported from `$app/paths` will be replaced with relative asset paths during server-side rendering, resulting in more portable HTML. * If `false`, `%sveltekit.assets%` and references to build artifacts will always be root-relative paths, unless `paths.assets` is an external URL * - * [Single-page app](https://kit.svelte.dev/docs/single-page-apps) fallback pages will always use absolute paths, regardless of this setting. + * [Single-page app](https://svelte.dev/docs/kit/single-page-apps) fallback pages will always use absolute paths, regardless of this setting. * * If your app uses a `<base>` element, you should set this to `false`, otherwise asset URLs will incorrectly be resolved against the `<base>` URL rather than the current page. * @@ -527,7 +527,7 @@ export interface KitConfig { relative?: boolean; }; /** - * See [Prerendering](https://kit.svelte.dev/docs/page-options#prerender). + * See [Prerendering](https://svelte.dev/docs/kit/page-options#prerender). */ prerender?: { /** @@ -647,7 +647,7 @@ export interface KitConfig { * </script> * ``` * - * If you set `pollInterval` to a non-zero value, SvelteKit will poll for new versions in the background and set the value of the [`updated`](https://kit.svelte.dev/docs/modules#$app-stores-updated) store to `true` when it detects one. + * If you set `pollInterval` to a non-zero value, SvelteKit will poll for new versions in the background and set the value of the [`updated`](https://svelte.dev/docs/kit/modules#$app-stores-updated) store to `true` when it detects one. */ version?: { /** @@ -678,8 +678,8 @@ export interface KitConfig { } /** - * The [`handle`](https://kit.svelte.dev/docs/hooks#Server-hooks-handle) hook runs every time the SvelteKit server receives a [request](https://kit.svelte.dev/docs/web-standards#Fetch-APIs-Request) and - * determines the [response](https://kit.svelte.dev/docs/web-standards#Fetch-APIs-Response). + * The [`handle`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) hook runs every time the SvelteKit server receives a [request](https://svelte.dev/docs/kit/web-standards#Fetch-APIs-Request) and + * determines the [response](https://svelte.dev/docs/kit/web-standards#Fetch-APIs-Response). * It receives an `event` object representing the request and a function called `resolve`, which renders the route and generates a `Response`. * This allows you to modify response headers or bodies, or bypass SvelteKit entirely (for implementing routes programmatically, for example). */ @@ -689,7 +689,7 @@ export type Handle = (input: { }) => MaybePromise<Response>; /** - * The server-side [`handleError`](https://kit.svelte.dev/docs/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while responding to a request. + * The server-side [`handleError`](https://svelte.dev/docs/kit/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while responding to a request. * * If an unexpected error is thrown during loading or rendering, this function will be called with the error and the event. * Make sure that this function _never_ throws an error. @@ -702,7 +702,7 @@ export type HandleServerError = (input: { }) => MaybePromise<void | App.Error>; /** - * The client-side [`handleError`](https://kit.svelte.dev/docs/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while navigating. + * The client-side [`handleError`](https://svelte.dev/docs/kit/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while navigating. * * If an unexpected error is thrown during loading or the following render, this function will be called with the error and the event. * Make sure that this function _never_ throws an error. @@ -715,7 +715,7 @@ export type HandleClientError = (input: { }) => MaybePromise<void | App.Error>; /** - * The [`handleFetch`](https://kit.svelte.dev/docs/hooks#server-hooks-handleFetch) hook allows you to modify (or replace) a `fetch` request that happens inside a `load` function that runs on the server (or during pre-rendering) + * The [`handleFetch`](https://svelte.dev/docs/kit/hooks#server-hooks-handleFetch) hook allows you to modify (or replace) a `fetch` request that happens inside a `load` function that runs on the server (or during pre-rendering) */ export type HandleFetch = (input: { event: RequestEvent; @@ -724,13 +724,13 @@ export type HandleFetch = (input: { }) => MaybePromise<Response>; /** - * The [`reroute`](https://kit.svelte.dev/docs/hooks#universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. + * The [`reroute`](https://svelte.dev/docs/kit/hooks#universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. * @since 2.3.0 */ export type Reroute = (event: { url: URL }) => void | string; /** - * The generic form of `PageLoad` and `LayoutLoad`. You should import those from `./$types` (see [generated types](https://kit.svelte.dev/docs/types#generated-types)) + * The generic form of `PageLoad` and `LayoutLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) * rather than using `Load` directly. */ export type Load< @@ -742,7 +742,7 @@ export type Load< > = (event: LoadEvent<Params, InputData, ParentData, RouteId>) => MaybePromise<OutputData>; /** - * The generic form of `PageLoadEvent` and `LayoutLoadEvent`. You should import those from `./$types` (see [generated types](https://kit.svelte.dev/docs/types#generated-types)) + * The generic form of `PageLoadEvent` and `LayoutLoadEvent`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) * rather than using `LoadEvent` directly. */ export interface LoadEvent< @@ -757,10 +757,10 @@ export interface LoadEvent< * - It can be used to make credentialed requests on the server, as it inherits the `cookie` and `authorization` headers for the page request. * - It can make relative requests on the server (ordinarily, `fetch` requires a URL with an origin when used in a server context). * - Internal requests (e.g. for `+server.js` routes) go directly to the handler function when running on the server, without the overhead of an HTTP call. - * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://kit.svelte.dev/docs/hooks#Server-hooks-handle) + * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) * - During hydration, the response will be read from the HTML, guaranteeing consistency and preventing an additional network request. * - * You can learn more about making credentialed requests with cookies [here](https://kit.svelte.dev/docs/load#cookies) + * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#cookies) */ fetch: typeof fetch; /** @@ -787,7 +787,7 @@ export interface LoadEvent< * * Setting the same header multiple times (even in separate `load` functions) is an error — you can only set a given header once. * - * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://kit.svelte.dev/docs/types#public-types-cookies) API in a server-only `load` function instead. + * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/types#public-types-cookies) API in a server-only `load` function instead. * * `setHeaders` has no effect when a `load` function runs in the browser. */ @@ -800,7 +800,7 @@ export interface LoadEvent< */ parent(): Promise<ParentData>; /** - * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://kit.svelte.dev/docs/modules#$app-navigation-invalidate) to cause `load` to rerun. + * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/modules#$app-navigation-invalidate) to cause `load` to rerun. * * Most of the time you won't need this, as `fetch` calls `depends` on your behalf — it's only necessary if you're using a custom API client that bypasses `fetch`. * @@ -939,7 +939,7 @@ export interface Navigation { } /** - * The argument passed to [`beforeNavigate`](https://kit.svelte.dev/docs/modules#$app-navigation-beforenavigate) callbacks. + * The argument passed to [`beforeNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-beforenavigate) callbacks. */ export interface BeforeNavigate extends Navigation { /** @@ -949,7 +949,7 @@ export interface BeforeNavigate extends Navigation { } /** - * The argument passed to [`onNavigate`](https://kit.svelte.dev/docs/modules#$app-navigation-onnavigate) callbacks. + * The argument passed to [`onNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-onnavigate) callbacks. */ export interface OnNavigate extends Navigation { /** @@ -967,7 +967,7 @@ export interface OnNavigate extends Navigation { } /** - * The argument passed to [`afterNavigate`](https://kit.svelte.dev/docs/modules#$app-navigation-afternavigate) callbacks. + * The argument passed to [`afterNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-afternavigate) callbacks. */ export interface AfterNavigate extends Omit<Navigation, 'type'> { /** @@ -1022,17 +1022,17 @@ export interface Page< */ data: App.PageData & Record<string, any>; /** - * The page state, which can be manipulated using the [`pushState`](https://kit.svelte.dev/docs/modules#$app-navigation-pushstate) and [`replaceState`](https://kit.svelte.dev/docs/modules#$app-navigation-replacestate) functions from `$app/navigation`. + * The page state, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/modules#$app-navigation-pushstate) and [`replaceState`](https://svelte.dev/docs/kit/modules#$app-navigation-replacestate) functions from `$app/navigation`. */ state: App.PageState; /** - * Filled only after a form submission. See [form actions](https://kit.svelte.dev/docs/form-actions) for more info. + * Filled only after a form submission. See [form actions](https://svelte.dev/docs/kit/form-actions) for more info. */ form: any; } /** - * The shape of a param matcher. See [matching](https://kit.svelte.dev/docs/advanced-routing#matching) for more info. + * The shape of a param matcher. See [matching](https://svelte.dev/docs/kit/advanced-routing#matching) for more info. */ export type ParamMatcher = (param: string) => boolean; @@ -1050,10 +1050,10 @@ export interface RequestEvent< * - It can be used to make credentialed requests on the server, as it inherits the `cookie` and `authorization` headers for the page request. * - It can make relative requests on the server (ordinarily, `fetch` requires a URL with an origin when used in a server context). * - Internal requests (e.g. for `+server.js` routes) go directly to the handler function when running on the server, without the overhead of an HTTP call. - * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://kit.svelte.dev/docs/hooks#Server-hooks-handle) + * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) * - During hydration, the response will be read from the HTML, guaranteeing consistency and preventing an additional network request. * - * You can learn more about making credentialed requests with cookies [here](https://kit.svelte.dev/docs/load#cookies) + * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#cookies) */ fetch: typeof fetch; /** @@ -1061,7 +1061,7 @@ export interface RequestEvent< */ getClientAddress(): string; /** - * Contains custom data that was added to the request within the [`handle hook`](https://kit.svelte.dev/docs/hooks#Server-hooks-handle). + * Contains custom data that was added to the request within the [`handle hook`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle). */ locals: App.Locals; /** @@ -1105,7 +1105,7 @@ export interface RequestEvent< * * Setting the same header multiple times (even in separate `load` functions) is an error — you can only set a given header once. * - * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://kit.svelte.dev/docs/types#public-types-cookies) API instead. + * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/types#public-types-cookies) API instead. */ setHeaders(headers: Record<string, string>): void; /** @@ -1126,7 +1126,7 @@ export interface RequestEvent< /** * A `(event: RequestEvent) => Response` function exported from a `+server.js` file that corresponds to an HTTP verb (`GET`, `PUT`, `PATCH`, etc) and handles requests with that method. * - * It receives `Params` as the first generic argument, which you can skip by using [generated types](https://kit.svelte.dev/docs/types#generated-types) instead. + * It receives `Params` as the first generic argument, which you can skip by using [generated types](https://svelte.dev/docs/kit/types#generated-types) instead. */ export type RequestHandler< Params extends Partial<Record<string, string>> = Partial<Record<string, string>>, @@ -1202,7 +1202,7 @@ export interface SSRManifest { } /** - * The generic form of `PageServerLoad` and `LayoutServerLoad`. You should import those from `./$types` (see [generated types](https://kit.svelte.dev/docs/types#generated-types)) + * The generic form of `PageServerLoad` and `LayoutServerLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) * rather than using `ServerLoad` directly. */ export type ServerLoad< @@ -1224,7 +1224,7 @@ export interface ServerLoadEvent< */ parent(): Promise<ParentData>; /** - * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://kit.svelte.dev/docs/modules#$app-navigation-invalidate) to cause `load` to rerun. + * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/modules#$app-navigation-invalidate) to cause `load` to rerun. * * Most of the time you won't need this, as `fetch` calls `depends` on your behalf — it's only necessary if you're using a custom API client that bypasses `fetch`. * @@ -1279,7 +1279,7 @@ export interface ServerLoadEvent< /** * Shape of a form action method that is part of `export const actions = {..}` in `+page.server.js`. - * See [form actions](https://kit.svelte.dev/docs/form-actions) for more information. + * See [form actions](https://svelte.dev/docs/kit/form-actions) for more information. */ export type Action< Params extends Partial<Record<string, string>> = Partial<Record<string, string>>, @@ -1289,7 +1289,7 @@ export type Action< /** * Shape of the `export const actions = {..}` object in `+page.server.js`. - * See [form actions](https://kit.svelte.dev/docs/form-actions) for more information. + * See [form actions](https://svelte.dev/docs/kit/form-actions) for more information. */ export type Actions< Params extends Partial<Record<string, string>> = Partial<Record<string, string>>, @@ -1317,7 +1317,7 @@ export type ActionResult< | { type: 'error'; status?: number; error: any }; /** - * The object returned by the [`error`](https://kit.svelte.dev/docs/modules#sveltejs-kit-error) function. + * The object returned by the [`error`](https://svelte.dev/docs/kit/modules#sveltejs-kit-error) function. */ export interface HttpError { /** The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses), in the range 400-599. */ @@ -1327,7 +1327,7 @@ export interface HttpError { } /** - * The object returned by the [`redirect`](https://kit.svelte.dev/docs/modules#sveltejs-kit-redirect) function + * The object returned by the [`redirect`](https://svelte.dev/docs/kit/modules#sveltejs-kit-redirect) function */ export interface Redirect { /** The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages), in the range 300-308. */ diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 5d6f5cda4071..0dbc912940a2 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -43,7 +43,7 @@ export async function dev(vite, vite_config, svelte_config) { globalThis.fetch = (info, init) => { if (typeof info === 'string' && !SCHEME.test(info)) { throw new Error( - `Cannot use relative URL (${info}) with global fetch — use \`event.fetch\` instead: https://kit.svelte.dev/docs/web-standards#fetch-apis` + `Cannot use relative URL (${info}) with global fetch — use \`event.fetch\` instead: https://svelte.dev/docs/kit/web-standards#fetch-apis` ); } diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 06b1977c2b82..1d92fcc38ccf 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -93,7 +93,7 @@ const warning_preprocessor = { const message = `\n${colors.bold().red(path.relative('.', filename))}\n` + - `\`${match[1]}\` will be ignored — move it to ${fixed} instead. See https://kit.svelte.dev/docs/page-options for more information.`; + `\`${match[1]}\` will be ignored — move it to ${fixed} instead. See https://svelte.dev/docs/kit/page-options for more information.`; if (!warned.has(message)) { console.log(message); @@ -900,7 +900,7 @@ async function kit({ svelte_config }) { } else { console.log(colors.bold().yellow('\nNo adapter specified')); - const link = colors.bold().cyan('https://kit.svelte.dev/docs/adapters'); + const link = colors.bold().cyan('https://svelte.dev/docs/kit/adapters'); console.log( `See ${link} to learn how to configure your app to run on the platform of your choosing` ); diff --git a/packages/kit/src/runtime/app/paths/types.d.ts b/packages/kit/src/runtime/app/paths/types.d.ts index de2c409f6809..d17c45dd4efd 100644 --- a/packages/kit/src/runtime/app/paths/types.d.ts +++ b/packages/kit/src/runtime/app/paths/types.d.ts @@ -1,12 +1,12 @@ /** - * A string that matches [`config.kit.paths.base`](https://kit.svelte.dev/docs/configuration#paths). + * A string that matches [`config.kit.paths.base`](https://svelte.dev/docs/kit/configuration#paths). * * Example usage: `<a href="{base}/your-page">Link</a>` */ export let base: '' | `/${string}`; /** - * An absolute path that matches [`config.kit.paths.assets`](https://kit.svelte.dev/docs/configuration#paths). + * An absolute path that matches [`config.kit.paths.assets`](https://svelte.dev/docs/kit/configuration#paths). * * > [!NOTE] If a value for `config.kit.paths.assets` is specified, it will be replaced with `'/_svelte_kit_assets'` during `vite dev` or `vite preview`, since the assets don't yet live at their eventual URL. */ diff --git a/packages/kit/src/runtime/app/stores.js b/packages/kit/src/runtime/app/stores.js index 554d653cbfaa..da4b02db836e 100644 --- a/packages/kit/src/runtime/app/stores.js +++ b/packages/kit/src/runtime/app/stores.js @@ -53,7 +53,7 @@ export const navigating = { }; /** - * A readable store whose initial value is `false`. If [`version.pollInterval`](https://kit.svelte.dev/docs/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling. + * A readable store whose initial value is `false`. If [`version.pollInterval`](https://svelte.dev/docs/kit/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling. * * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time. * @type {import('svelte/store').Readable<boolean> & { check(): Promise<boolean> }} @@ -88,7 +88,7 @@ function get_store(name) { } catch { throw new Error( `Cannot subscribe to '${name}' store on the server outside of a Svelte component, as it is bound to the current request via component context. This prevents state from leaking between users.` + - 'For more information, see https://kit.svelte.dev/docs/state-management#avoid-shared-state-on-the-server' + 'For more information, see https://svelte.dev/docs/kit/state-management#avoid-shared-state-on-the-server' ); } } diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 5f251a07362f..432c7165fb02 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -1574,7 +1574,7 @@ function setup_preload() { `Preloading data for ${intent.url.pathname} failed with the following error: ${result.state.error.message}\n` + 'If this error is transient, you can ignore it. Otherwise, consider disabling preloading for this route. ' + 'This route was preloaded due to a data-sveltekit-preload-data attribute. ' + - 'See https://kit.svelte.dev/docs/link-options for more info' + 'See https://svelte.dev/docs/kit/link-options for more info' ); } }); @@ -1717,12 +1717,12 @@ export function disableScrollHandling() { * Returns a Promise that resolves when SvelteKit navigates (or fails to navigate, in which case the promise rejects) to the specified `url`. * For external URLs, use `window.location = url` instead of calling `goto(url)`. * - * @param {string | URL} url Where to navigate to. Note that if you've set [`config.kit.paths.base`](https://kit.svelte.dev/docs/configuration#paths) and the URL is root-relative, you need to prepend the base path if you want to navigate within the app. + * @param {string | URL} url Where to navigate to. Note that if you've set [`config.kit.paths.base`](https://svelte.dev/docs/kit/configuration#paths) and the URL is root-relative, you need to prepend the base path if you want to navigate within the app. * @param {Object} [opts] Options related to the navigation * @param {boolean} [opts.replaceState] If `true`, will replace the current `history` entry rather than creating a new one with `pushState` * @param {boolean} [opts.noScroll] If `true`, the browser will maintain its scroll position rather than scrolling to the top of the page after navigation * @param {boolean} [opts.keepFocus] If `true`, the currently focused element will retain focus after navigation. Otherwise, focus will be reset to the body - * @param {boolean} [opts.invalidateAll] If `true`, all `load` functions of the page will be rerun. See https://kit.svelte.dev/docs/load#rerunning-load-functions for more info on invalidation. + * @param {boolean} [opts.invalidateAll] If `true`, all `load` functions of the page will be rerun. See https://svelte.dev/docs/kit/load#rerunning-load-functions for more info on invalidation. * @param {App.PageState} [opts.state] An optional object that will be available on the `$page.state` store * @returns {Promise<void>} */ @@ -1861,7 +1861,7 @@ export function preloadCode(pathname) { } /** - * Programmatically create a new history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://kit.svelte.dev/docs/shallow-routing). + * Programmatically create a new history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://svelte.dev/docs/kit/shallow-routing). * * @param {string | URL} url * @param {App.PageState} state @@ -1905,7 +1905,7 @@ export function pushState(url, state) { } /** - * Programmatically replace the current history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://kit.svelte.dev/docs/shallow-routing). + * Programmatically replace the current history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://svelte.dev/docs/kit/shallow-routing). * * @param {string | URL} url * @param {App.PageState} state diff --git a/packages/kit/src/runtime/client/fetcher.js b/packages/kit/src/runtime/client/fetcher.js index 1d43a5bc905a..6cb8ef1b7724 100644 --- a/packages/kit/src/runtime/client/fetcher.js +++ b/packages/kit/src/runtime/client/fetcher.js @@ -53,7 +53,7 @@ if (DEV && BROWSER) { if (in_load_heuristic && !used_kit_fetch) { console.warn( - `Loading ${url} using \`window.fetch\`. For best results, use the \`fetch\` that is passed to your \`load\` function: https://kit.svelte.dev/docs/load#making-fetch-requests` + `Loading ${url} using \`window.fetch\`. For best results, use the \`fetch\` that is passed to your \`load\` function: https://svelte.dev/docs/kit/load#making-fetch-requests` ); } diff --git a/packages/kit/src/runtime/server/page/actions.js b/packages/kit/src/runtime/server/page/actions.js index 64db810507a8..a36a8d1ecd7e 100644 --- a/packages/kit/src/runtime/server/page/actions.js +++ b/packages/kit/src/runtime/server/page/actions.js @@ -197,7 +197,7 @@ export async function handle_action_request(event, server) { function check_named_default_separate(actions) { if (actions.default && Object.keys(actions).length > 1) { throw new Error( - 'When using named actions, the default action cannot be used. See the docs for more info: https://kit.svelte.dev/docs/form-actions#named-actions' + 'When using named actions, the default action cannot be used. See the docs for more info: https://svelte.dev/docs/kit/form-actions#named-actions' ); } } diff --git a/packages/kit/src/runtime/server/page/index.js b/packages/kit/src/runtime/server/page/index.js index 00dfdf7adc3e..82c43a7ce78a 100644 --- a/packages/kit/src/runtime/server/page/index.js +++ b/packages/kit/src/runtime/server/page/index.js @@ -105,12 +105,12 @@ export async function render_page(event, page, options, manifest, state, resolve if (DEV && action_result && !event.request.headers.has('x-sveltekit-action')) { if (action_result.type === 'error') { console.warn( - "The form action returned an error, but +error.svelte wasn't rendered because SSR is off. To get the error page with CSR, enhance your form with `use:enhance`. See https://kit.svelte.dev/docs/form-actions#progressive-enhancement-use-enhance" + "The form action returned an error, but +error.svelte wasn't rendered because SSR is off. To get the error page with CSR, enhance your form with `use:enhance`. See https://svelte.dev/docs/kit/form-actions#progressive-enhancement-use-enhance" ); } else if (action_result.data) { /// case: lost data console.warn( - "The form action returned a value, but it isn't available in `$page.form`, because SSR is off. To handle the returned value in CSR, enhance your form with `use:enhance`. See https://kit.svelte.dev/docs/form-actions#progressive-enhancement-use-enhance" + "The form action returned a value, but it isn't available in `$page.form`, because SSR is off. To handle the returned value in CSR, enhance your form with `use:enhance`. See https://svelte.dev/docs/kit/form-actions#progressive-enhancement-use-enhance" ); } } diff --git a/packages/kit/src/runtime/server/page/load_data.js b/packages/kit/src/runtime/server/page/load_data.js index dc60327e3370..e2af144654e6 100644 --- a/packages/kit/src/runtime/server/page/load_data.js +++ b/packages/kit/src/runtime/server/page/load_data.js @@ -348,7 +348,7 @@ export function create_universal_fetch(event, state, fetched, csr, resolve_opts) const included = resolve_opts.filterSerializedResponseHeaders(lower, value); if (!included) { throw new Error( - `Failed to get response header "${lower}" — it must be included by the \`filterSerializedResponseHeaders\` option: https://kit.svelte.dev/docs/hooks#Server-hooks-handle (at ${event.route.id})` + `Failed to get response header "${lower}" — it must be included by the \`filterSerializedResponseHeaders\` option: https://svelte.dev/docs/kit/hooks#Server-hooks-handle (at ${event.route.id})` ); } } diff --git a/packages/kit/src/runtime/server/page/render.js b/packages/kit/src/runtime/server/page/render.js index 6d8b8eb44633..be44c3c7a860 100644 --- a/packages/kit/src/runtime/server/page/render.js +++ b/packages/kit/src/runtime/server/page/render.js @@ -480,7 +480,7 @@ export async function render_response({ if (page_config.csr) { if (transformed.split('<!--').length < html.split('<!--').length) { // the \u001B stuff is ANSI codes, so that we don't need to add a library to the runtime - // https://svelte.dev/repl/1b3f49696f0c44c881c34587f2537aa2 + // https://svelte.dev/playground/1b3f49696f0c44c881c34587f2537aa2?version=4.2.19 console.warn( "\u001B[1m\u001B[31mRemoving comments in transformPageChunk can break Svelte's hydration\u001B[39m\u001B[22m" ); diff --git a/packages/kit/src/types/ambient.d.ts b/packages/kit/src/types/ambient.d.ts index 00730946b980..e63e8f98117e 100644 --- a/packages/kit/src/types/ambient.d.ts +++ b/packages/kit/src/types/ambient.d.ts @@ -29,30 +29,30 @@ declare namespace App { } /** - * The interface that defines `event.locals`, which can be accessed in [hooks](https://kit.svelte.dev/docs/hooks) (`handle`, and `handleError`), server-only `load` functions, and `+server.js` files. + * The interface that defines `event.locals`, which can be accessed in [hooks](https://svelte.dev/docs/kit/hooks) (`handle`, and `handleError`), server-only `load` functions, and `+server.js` files. */ export interface Locals {} /** - * Defines the common shape of the [$page.data store](https://kit.svelte.dev/docs/modules#$app-stores-page) - that is, the data that is shared between all pages. + * Defines the common shape of the [$page.data store](https://svelte.dev/docs/kit/modules#$app-stores-page) - that is, the data that is shared between all pages. * The `Load` and `ServerLoad` functions in `./$types` will be narrowed accordingly. * Use optional properties for data that is only present on specific pages. Do not add an index signature (`[key: string]: any`). */ export interface PageData {} /** - * The shape of the `$page.state` object, which can be manipulated using the [`pushState`](https://kit.svelte.dev/docs/modules#$app-navigation-pushstate) and [`replaceState`](https://kit.svelte.dev/docs/modules#$app-navigation-replacestate) functions from `$app/navigation`. + * The shape of the `$page.state` object, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/modules#$app-navigation-pushstate) and [`replaceState`](https://svelte.dev/docs/kit/modules#$app-navigation-replacestate) functions from `$app/navigation`. */ export interface PageState {} /** - * If your adapter provides [platform-specific context](https://kit.svelte.dev/docs/adapters#platform-specific-context) via `event.platform`, you can specify it here. + * If your adapter provides [platform-specific context](https://svelte.dev/docs/kit/adapters#platform-specific-context) via `event.platform`, you can specify it here. */ export interface Platform {} } /** - * This module is only available to [service workers](https://kit.svelte.dev/docs/service-workers). + * This module is only available to [service workers](https://svelte.dev/docs/kit/service-workers). */ declare module '$service-worker' { /** @@ -66,7 +66,7 @@ declare module '$service-worker' { */ export const build: string[]; /** - * An array of URL strings representing the files in your static directory, or whatever directory is specified by `config.kit.files.assets`. You can customize which files are included from `static` directory using [`config.kit.serviceWorker.files`](https://kit.svelte.dev/docs/configuration) + * An array of URL strings representing the files in your static directory, or whatever directory is specified by `config.kit.files.assets`. You can customize which files are included from `static` directory using [`config.kit.serviceWorker.files`](https://svelte.dev/docs/kit/configuration) */ export const files: string[]; /** @@ -75,7 +75,7 @@ declare module '$service-worker' { */ export const prerendered: string[]; /** - * See [`config.kit.version`](https://kit.svelte.dev/docs/configuration#version). It's useful for generating unique cache names inside your service worker, so that a later deployment of your app can invalidate old caches. + * See [`config.kit.version`](https://svelte.dev/docs/kit/configuration#version). It's useful for generating unique cache names inside your service worker, so that a later deployment of your app can invalidate old caches. */ export const version: string; } diff --git a/packages/kit/src/types/synthetic/$env+dynamic+private.md b/packages/kit/src/types/synthetic/$env+dynamic+private.md index d5cd7239dacf..93c8c8cd7905 100644 --- a/packages/kit/src/types/synthetic/$env+dynamic+private.md +++ b/packages/kit/src/types/synthetic/$env+dynamic+private.md @@ -1,4 +1,4 @@ -This module provides access to runtime environment variables, as defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/main/packages/adapter-node) (or running [`vite preview`](https://kit.svelte.dev/docs/cli)), this is equivalent to `process.env`. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://kit.svelte.dev/docs/configuration#env) (if configured). +This module provides access to runtime environment variables, as defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/main/packages/adapter-node) (or running [`vite preview`](https://svelte.dev/docs/kit/cli)), this is equivalent to `process.env`. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://svelte.dev/docs/kit/configuration#env) (if configured). This module cannot be imported into client-side code. diff --git a/packages/kit/src/types/synthetic/$env+dynamic+public.md b/packages/kit/src/types/synthetic/$env+dynamic+public.md index ad1cf54d2fb6..95fdaf9c0d34 100644 --- a/packages/kit/src/types/synthetic/$env+dynamic+public.md +++ b/packages/kit/src/types/synthetic/$env+dynamic+public.md @@ -1,4 +1,4 @@ -Similar to [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), but only includes variables that begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. +Similar to [`$env/dynamic/private`](https://svelte.dev/docs/kit/modules#$env-dynamic-private), but only includes variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. Note that public dynamic environment variables must all be sent from the server to the client, causing larger network requests — when possible, use `$env/static/public` instead. diff --git a/packages/kit/src/types/synthetic/$env+static+private.md b/packages/kit/src/types/synthetic/$env+static+private.md index 40704d239772..20bdb6e90a4a 100644 --- a/packages/kit/src/types/synthetic/$env+static+private.md +++ b/packages/kit/src/types/synthetic/$env+static+private.md @@ -1,6 +1,6 @@ -Environment variables [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env`. Like [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), this module cannot be imported into client-side code. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://kit.svelte.dev/docs/configuration#env) (if configured). +Environment variables [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env`. Like [`$env/dynamic/private`](https://svelte.dev/docs/kit/modules#$env-dynamic-private), this module cannot be imported into client-side code. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://svelte.dev/docs/kit/configuration#env) (if configured). -_Unlike_ [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), the values exported from this module are statically injected into your bundle at build time, enabling optimisations like dead code elimination. +_Unlike_ [`$env/dynamic/private`](https://svelte.dev/docs/kit/modules#$env-dynamic-private), the values exported from this module are statically injected into your bundle at build time, enabling optimisations like dead code elimination. ```ts import { API_KEY } from '$env/static/private'; diff --git a/packages/kit/src/types/synthetic/$env+static+public.md b/packages/kit/src/types/synthetic/$env+static+public.md index 2b55250f0a47..16e5d0208a91 100644 --- a/packages/kit/src/types/synthetic/$env+static+public.md +++ b/packages/kit/src/types/synthetic/$env+static+public.md @@ -1,4 +1,4 @@ -Similar to [`$env/static/private`](https://kit.svelte.dev/docs/modules#$env-static-private), except that it only includes environment variables that begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. +Similar to [`$env/static/private`](https://svelte.dev/docs/kit/modules#$env-static-private), except that it only includes environment variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. Values are replaced statically at build time. diff --git a/packages/kit/src/types/synthetic/$lib.md b/packages/kit/src/types/synthetic/$lib.md index 65eb2c861b27..1108e1b85cb0 100644 --- a/packages/kit/src/types/synthetic/$lib.md +++ b/packages/kit/src/types/synthetic/$lib.md @@ -1,5 +1,5 @@ -This is a simple alias to `src/lib`, or whatever directory is specified as [`config.kit.files.lib`](https://kit.svelte.dev/docs/configuration#files). It allows you to access common components and utility modules without `../../../../` nonsense. +This is a simple alias to `src/lib`, or whatever directory is specified as [`config.kit.files.lib`](https://svelte.dev/docs/kit/configuration#files). It allows you to access common components and utility modules without `../../../../` nonsense. ### `$lib/server` -A subdirectory of `$lib`. SvelteKit will prevent you from importing any modules in `$lib/server` into client-side code. See [server-only modules](https://kit.svelte.dev/docs/server-only-modules). +A subdirectory of `$lib`. SvelteKit will prevent you from importing any modules in `$lib/server` into client-side code. See [server-only modules](https://svelte.dev/docs/kit/server-only-modules). diff --git a/packages/kit/src/utils/url.spec.js b/packages/kit/src/utils/url.spec.js index 7de41b1e04d1..181ffed4fd9e 100644 --- a/packages/kit/src/utils/url.spec.js +++ b/packages/kit/src/utils/url.spec.js @@ -102,7 +102,7 @@ describe('make_trackable', (test) => { test('makes URL properties trackable', () => { let tracked = false; const url = make_trackable( - new URL('https://kit.svelte.dev/docs'), + new URL('https://svelte.dev/docs/kit'), () => { tracked = true; }, @@ -118,7 +118,7 @@ describe('make_trackable', (test) => { test('throws an error when its hash property is accessed', () => { const url = make_trackable( - new URL('https://kit.svelte.dev/docs'), + new URL('https://svelte.dev/docs/kit'), () => {}, () => {} ); @@ -133,7 +133,7 @@ describe('make_trackable', (test) => { let tracked = false; const tracked_search_params = new Set(); const url = make_trackable( - new URL('https://kit.svelte.dev/docs'), + new URL('https://svelte.dev/docs/kit'), () => { tracked = true; }, @@ -161,7 +161,7 @@ describe('make_trackable', (test) => { describe('disable_search', (test) => { test('throws an error when its search property is accessed', () => { - const url = new URL('https://kit.svelte.dev/docs'); + const url = new URL('https://svelte.dev/docs/kit'); disable_search(url); /** @type {Array<keyof URL>} */ diff --git a/packages/kit/test/apps/basics/test/client.test.js b/packages/kit/test/apps/basics/test/client.test.js index 2ecc4ba1c0da..351cbdbeb7ad 100644 --- a/packages/kit/test/apps/basics/test/client.test.js +++ b/packages/kit/test/apps/basics/test/client.test.js @@ -260,7 +260,7 @@ test.describe('Load', () => { predicate: (message) => { return ( message.text() === - `Loading ${baseURL}/load/window-fetch/data.json using \`window.fetch\`. For best results, use the \`fetch\` that is passed to your \`load\` function: https://kit.svelte.dev/docs/load#making-fetch-requests` + `Loading ${baseURL}/load/window-fetch/data.json using \`window.fetch\`. For best results, use the \`fetch\` that is passed to your \`load\` function: https://svelte.dev/docs/kit/load#making-fetch-requests` ); }, timeout: 3_000 @@ -280,7 +280,7 @@ test.describe('Load', () => { expect(await page.textContent('h1')).toBe('42'); expect(warnings).not.toContain( - `Loading ${baseURL}/load/window-fetch/data.json using \`window.fetch\`. For best results, use the \`fetch\` that is passed to your \`load\` function: https://kit.svelte.dev/docs/load#making-fetch-requests` + `Loading ${baseURL}/load/window-fetch/data.json using \`window.fetch\`. For best results, use the \`fetch\` that is passed to your \`load\` function: https://svelte.dev/docs/kit/load#making-fetch-requests` ); }); } diff --git a/packages/kit/test/apps/basics/test/cross-platform/client.test.js b/packages/kit/test/apps/basics/test/cross-platform/client.test.js index 5e1a8b258f00..c2e9bf6cc474 100644 --- a/packages/kit/test/apps/basics/test/cross-platform/client.test.js +++ b/packages/kit/test/apps/basics/test/cross-platform/client.test.js @@ -933,7 +933,7 @@ test.describe('Load', () => { expect(await page.textContent('h1')).toBe('42'); expect(warnings).not.toContain( - `Loading ${baseURL}/load/window-fetch/data.json using \`window.fetch\`. For best results, use the \`fetch\` that is passed to your \`load\` function: https://kit.svelte.dev/docs/load#making-fetch-requests` + `Loading ${baseURL}/load/window-fetch/data.json using \`window.fetch\`. For best results, use the \`fetch\` that is passed to your \`load\` function: https://svelte.dev/docs/kit/load#making-fetch-requests` ); }); } diff --git a/packages/kit/test/build-errors/prerender.spec.js b/packages/kit/test/build-errors/prerender.spec.js index 65fa222c3986..fc4d683a7901 100644 --- a/packages/kit/test/build-errors/prerender.spec.js +++ b/packages/kit/test/build-errors/prerender.spec.js @@ -24,6 +24,6 @@ test('entry generators should match their own route', () => { stdio: 'pipe', timeout: 60000 }), - `Error: The entries export from /[slug]/[notSpecific] generated entry /whatever/specific, which was matched by /[slug]/specific - see the \`handleEntryGeneratorMismatch\` option in https://kit.svelte.dev/docs/configuration#prerender for more info.${EOL}To suppress or handle this error, implement \`handleEntryGeneratorMismatch\` in https://kit.svelte.dev/docs/configuration#prerender` + `Error: The entries export from /[slug]/[notSpecific] generated entry /whatever/specific, which was matched by /[slug]/specific - see the \`handleEntryGeneratorMismatch\` option in https://svelte.dev/docs/kit/configuration#prerender for more info.${EOL}To suppress or handle this error, implement \`handleEntryGeneratorMismatch\` in https://svelte.dev/docs/kit/configuration#prerender` ); }); diff --git a/packages/kit/tsconfig.json b/packages/kit/tsconfig.json index 96f45f67488e..2fe96624a921 100644 --- a/packages/kit/tsconfig.json +++ b/packages/kit/tsconfig.json @@ -17,11 +17,6 @@ "noUnusedLocals": true, "noUnusedParameters": true }, - "include": [ - "*.js", - "scripts/**/*", - "src/**/*", - "src/types/**/*" - ], + "include": ["*.js", "scripts/**/*", "src/**/*", "src/types/**/*"], "exclude": ["./**/write_types/test/**"] } diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index cacc70c9c613..0595d25e2e60 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -5,7 +5,7 @@ declare module '@sveltejs/kit' { import type { CompileOptions } from 'svelte/compiler'; import type { PluginOptions } from '@sveltejs/vite-plugin-svelte'; /** - * [Adapters](https://kit.svelte.dev/docs/adapters) are responsible for taking the production build and turning it into something that can be deployed to a platform of your choosing. + * [Adapters](https://svelte.dev/docs/kit/adapters) are responsible for taking the production build and turning it into something that can be deployed to a platform of your choosing. */ export interface Adapter { /** @@ -110,7 +110,7 @@ declare module '@sveltejs/kit' { generateEnvModule(): void; /** - * Generate a server-side manifest to initialise the SvelteKit [server](https://kit.svelte.dev/docs/types#public-types-server) with. + * Generate a server-side manifest to initialise the SvelteKit [server](https://svelte.dev/docs/kit/types#public-types-server) with. * @param opts a relative path to the base directory of the app and optionally in which format (esm or cjs) the manifest should be generated */ generateManifest(opts: { relativePath: string; routes?: RouteDefinition[] }): string; @@ -171,7 +171,7 @@ declare module '@sveltejs/kit' { export interface Config { /** - * Options passed to [`svelte.compile`](https://svelte.dev/docs#compile-time-svelte-compile). + * Options passed to [`svelte.compile`](https://svelte.dev/docs/svelte/svelte-compiler#CompileOptions). * @default {} */ compilerOptions?: CompileOptions; @@ -260,7 +260,7 @@ declare module '@sveltejs/kit' { export interface KitConfig { /** - * Your [adapter](https://kit.svelte.dev/docs/adapters) is run when executing `vite build`. It determines how the output is converted for different platforms. + * Your [adapter](https://svelte.dev/docs/kit/adapters) is run when executing `vite build`. It determines how the output is converted for different platforms. * @default undefined */ adapter?: Adapter; @@ -333,9 +333,9 @@ declare module '@sveltejs/kit' { * * > [!NOTE] When `mode` is `'auto'`, SvelteKit will use nonces for dynamically rendered pages and hashes for prerendered pages. Using nonces with prerendered pages is insecure and therefore forbidden. * - * > [!NOTE] Note that most [Svelte transitions](https://svelte.dev/tutorial/transition) work by creating an inline `<style>` element. If you use these in your app, you must either leave the `style-src` directive unspecified or add `unsafe-inline`. + * > [!NOTE] Note that most [Svelte transitions](https://svelte.dev/tutorial/svelte/transition) work by creating an inline `<style>` element. If you use these in your app, you must either leave the `style-src` directive unspecified or add `unsafe-inline`. * - * If this level of configuration is insufficient and you have more dynamic requirements, you can use the [`handle` hook](https://kit.svelte.dev/docs/hooks#Server-hooks-handle) to roll your own CSP. + * If this level of configuration is insufficient and you have more dynamic requirements, you can use the [`handle` hook](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) to roll your own CSP. */ csp?: { /** @@ -379,12 +379,12 @@ declare module '@sveltejs/kit' { */ dir?: string; /** - * A prefix that signals that an environment variable is safe to expose to client-side code. See [`$env/static/public`](https://kit.svelte.dev/docs/modules#$env-static-public) and [`$env/dynamic/public`](https://kit.svelte.dev/docs/modules#$env-dynamic-public). Note that Vite's [`envPrefix`](https://vitejs.dev/config/shared-options.html#envprefix) must be set separately if you are using Vite's environment variable handling - though use of that feature should generally be unnecessary. + * A prefix that signals that an environment variable is safe to expose to client-side code. See [`$env/static/public`](https://svelte.dev/docs/kit/modules#$env-static-public) and [`$env/dynamic/public`](https://svelte.dev/docs/kit/modules#$env-dynamic-public). Note that Vite's [`envPrefix`](https://vitejs.dev/config/shared-options.html#envprefix) must be set separately if you are using Vite's environment variable handling - though use of that feature should generally be unnecessary. * @default "PUBLIC_" */ publicPrefix?: string; /** - * A prefix that signals that an environment variable is unsafe to expose to client-side code. Environment variables matching neither the public nor the private prefix will be discarded completely. See [`$env/static/private`](https://kit.svelte.dev/docs/modules#$env-static-private) and [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private). + * A prefix that signals that an environment variable is unsafe to expose to client-side code. Environment variables matching neither the public nor the private prefix will be discarded completely. See [`$env/static/private`](https://svelte.dev/docs/kit/modules#$env-static-private) and [`$env/dynamic/private`](https://svelte.dev/docs/kit/modules#$env-dynamic-private). * @default "" * @since 1.21.0 */ @@ -401,17 +401,17 @@ declare module '@sveltejs/kit' { assets?: string; hooks?: { /** - * The location of your client [hooks](https://kit.svelte.dev/docs/hooks). + * The location of your client [hooks](https://svelte.dev/docs/kit/hooks). * @default "src/hooks.client" */ client?: string; /** - * The location of your server [hooks](https://kit.svelte.dev/docs/hooks). + * The location of your server [hooks](https://svelte.dev/docs/kit/hooks). * @default "src/hooks.server" */ server?: string; /** - * The location of your universal [hooks](https://kit.svelte.dev/docs/hooks). + * The location of your universal [hooks](https://svelte.dev/docs/kit/hooks). * @default "src/hooks" * @since 2.3.0 */ @@ -423,17 +423,17 @@ declare module '@sveltejs/kit' { */ lib?: string; /** - * a directory containing [parameter matchers](https://kit.svelte.dev/docs/advanced-routing#matching) + * a directory containing [parameter matchers](https://svelte.dev/docs/kit/advanced-routing#matching) * @default "src/params" */ params?: string; /** - * the files that define the structure of your app (see [Routing](https://kit.svelte.dev/docs/routing)) + * the files that define the structure of your app (see [Routing](https://svelte.dev/docs/kit/routing)) * @default "src/routes" */ routes?: string; /** - * the location of your service worker's entry point (see [Service workers](https://kit.svelte.dev/docs/service-workers)) + * the location of your service worker's entry point (see [Service workers](https://svelte.dev/docs/kit/service-workers)) * @default "src/service-worker" */ serviceWorker?: string; @@ -487,7 +487,7 @@ declare module '@sveltejs/kit' { */ assets?: '' | `http://${string}` | `https://${string}`; /** - * A root-relative path that must start, but not end with `/` (e.g. `/base-path`), unless it is the empty string. This specifies where your app is served from and allows the app to live on a non-root path. Note that you need to prepend all your root-relative links with the base value or they will point to the root of your domain, not your `base` (this is how the browser works). You can use [`base` from `$app/paths`](https://kit.svelte.dev/docs/modules#$app-paths-base) for that: `<a href="{base}/your-page">Link</a>`. If you find yourself writing this often, it may make sense to extract this into a reusable component. + * A root-relative path that must start, but not end with `/` (e.g. `/base-path`), unless it is the empty string. This specifies where your app is served from and allows the app to live on a non-root path. Note that you need to prepend all your root-relative links with the base value or they will point to the root of your domain, not your `base` (this is how the browser works). You can use [`base` from `$app/paths`](https://svelte.dev/docs/kit/modules#$app-paths-base) for that: `<a href="{base}/your-page">Link</a>`. If you find yourself writing this often, it may make sense to extract this into a reusable component. * @default "" */ base?: '' | `/${string}`; @@ -497,7 +497,7 @@ declare module '@sveltejs/kit' { * If `true`, `base` and `assets` imported from `$app/paths` will be replaced with relative asset paths during server-side rendering, resulting in more portable HTML. * If `false`, `%sveltekit.assets%` and references to build artifacts will always be root-relative paths, unless `paths.assets` is an external URL * - * [Single-page app](https://kit.svelte.dev/docs/single-page-apps) fallback pages will always use absolute paths, regardless of this setting. + * [Single-page app](https://svelte.dev/docs/kit/single-page-apps) fallback pages will always use absolute paths, regardless of this setting. * * If your app uses a `<base>` element, you should set this to `false`, otherwise asset URLs will incorrectly be resolved against the `<base>` URL rather than the current page. * @@ -509,7 +509,7 @@ declare module '@sveltejs/kit' { relative?: boolean; }; /** - * See [Prerendering](https://kit.svelte.dev/docs/page-options#prerender). + * See [Prerendering](https://svelte.dev/docs/kit/page-options#prerender). */ prerender?: { /** @@ -629,7 +629,7 @@ declare module '@sveltejs/kit' { * </script> * ``` * - * If you set `pollInterval` to a non-zero value, SvelteKit will poll for new versions in the background and set the value of the [`updated`](https://kit.svelte.dev/docs/modules#$app-stores-updated) store to `true` when it detects one. + * If you set `pollInterval` to a non-zero value, SvelteKit will poll for new versions in the background and set the value of the [`updated`](https://svelte.dev/docs/kit/modules#$app-stores-updated) store to `true` when it detects one. */ version?: { /** @@ -660,8 +660,8 @@ declare module '@sveltejs/kit' { } /** - * The [`handle`](https://kit.svelte.dev/docs/hooks#Server-hooks-handle) hook runs every time the SvelteKit server receives a [request](https://kit.svelte.dev/docs/web-standards#Fetch-APIs-Request) and - * determines the [response](https://kit.svelte.dev/docs/web-standards#Fetch-APIs-Response). + * The [`handle`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) hook runs every time the SvelteKit server receives a [request](https://svelte.dev/docs/kit/web-standards#Fetch-APIs-Request) and + * determines the [response](https://svelte.dev/docs/kit/web-standards#Fetch-APIs-Response). * It receives an `event` object representing the request and a function called `resolve`, which renders the route and generates a `Response`. * This allows you to modify response headers or bodies, or bypass SvelteKit entirely (for implementing routes programmatically, for example). */ @@ -671,7 +671,7 @@ declare module '@sveltejs/kit' { }) => MaybePromise<Response>; /** - * The server-side [`handleError`](https://kit.svelte.dev/docs/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while responding to a request. + * The server-side [`handleError`](https://svelte.dev/docs/kit/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while responding to a request. * * If an unexpected error is thrown during loading or rendering, this function will be called with the error and the event. * Make sure that this function _never_ throws an error. @@ -684,7 +684,7 @@ declare module '@sveltejs/kit' { }) => MaybePromise<void | App.Error>; /** - * The client-side [`handleError`](https://kit.svelte.dev/docs/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while navigating. + * The client-side [`handleError`](https://svelte.dev/docs/kit/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while navigating. * * If an unexpected error is thrown during loading or the following render, this function will be called with the error and the event. * Make sure that this function _never_ throws an error. @@ -697,7 +697,7 @@ declare module '@sveltejs/kit' { }) => MaybePromise<void | App.Error>; /** - * The [`handleFetch`](https://kit.svelte.dev/docs/hooks#server-hooks-handleFetch) hook allows you to modify (or replace) a `fetch` request that happens inside a `load` function that runs on the server (or during pre-rendering) + * The [`handleFetch`](https://svelte.dev/docs/kit/hooks#server-hooks-handleFetch) hook allows you to modify (or replace) a `fetch` request that happens inside a `load` function that runs on the server (or during pre-rendering) */ export type HandleFetch = (input: { event: RequestEvent; @@ -706,13 +706,13 @@ declare module '@sveltejs/kit' { }) => MaybePromise<Response>; /** - * The [`reroute`](https://kit.svelte.dev/docs/hooks#universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. + * The [`reroute`](https://svelte.dev/docs/kit/hooks#universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. * @since 2.3.0 */ export type Reroute = (event: { url: URL }) => void | string; /** - * The generic form of `PageLoad` and `LayoutLoad`. You should import those from `./$types` (see [generated types](https://kit.svelte.dev/docs/types#generated-types)) + * The generic form of `PageLoad` and `LayoutLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) * rather than using `Load` directly. */ export type Load< @@ -724,7 +724,7 @@ declare module '@sveltejs/kit' { > = (event: LoadEvent<Params, InputData, ParentData, RouteId>) => MaybePromise<OutputData>; /** - * The generic form of `PageLoadEvent` and `LayoutLoadEvent`. You should import those from `./$types` (see [generated types](https://kit.svelte.dev/docs/types#generated-types)) + * The generic form of `PageLoadEvent` and `LayoutLoadEvent`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) * rather than using `LoadEvent` directly. */ export interface LoadEvent< @@ -739,10 +739,10 @@ declare module '@sveltejs/kit' { * - It can be used to make credentialed requests on the server, as it inherits the `cookie` and `authorization` headers for the page request. * - It can make relative requests on the server (ordinarily, `fetch` requires a URL with an origin when used in a server context). * - Internal requests (e.g. for `+server.js` routes) go directly to the handler function when running on the server, without the overhead of an HTTP call. - * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://kit.svelte.dev/docs/hooks#Server-hooks-handle) + * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) * - During hydration, the response will be read from the HTML, guaranteeing consistency and preventing an additional network request. * - * You can learn more about making credentialed requests with cookies [here](https://kit.svelte.dev/docs/load#cookies) + * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#cookies) */ fetch: typeof fetch; /** @@ -769,7 +769,7 @@ declare module '@sveltejs/kit' { * * Setting the same header multiple times (even in separate `load` functions) is an error — you can only set a given header once. * - * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://kit.svelte.dev/docs/types#public-types-cookies) API in a server-only `load` function instead. + * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/types#public-types-cookies) API in a server-only `load` function instead. * * `setHeaders` has no effect when a `load` function runs in the browser. */ @@ -782,7 +782,7 @@ declare module '@sveltejs/kit' { */ parent(): Promise<ParentData>; /** - * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://kit.svelte.dev/docs/modules#$app-navigation-invalidate) to cause `load` to rerun. + * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/modules#$app-navigation-invalidate) to cause `load` to rerun. * * Most of the time you won't need this, as `fetch` calls `depends` on your behalf — it's only necessary if you're using a custom API client that bypasses `fetch`. * @@ -921,7 +921,7 @@ declare module '@sveltejs/kit' { } /** - * The argument passed to [`beforeNavigate`](https://kit.svelte.dev/docs/modules#$app-navigation-beforenavigate) callbacks. + * The argument passed to [`beforeNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-beforenavigate) callbacks. */ export interface BeforeNavigate extends Navigation { /** @@ -931,7 +931,7 @@ declare module '@sveltejs/kit' { } /** - * The argument passed to [`onNavigate`](https://kit.svelte.dev/docs/modules#$app-navigation-onnavigate) callbacks. + * The argument passed to [`onNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-onnavigate) callbacks. */ export interface OnNavigate extends Navigation { /** @@ -949,7 +949,7 @@ declare module '@sveltejs/kit' { } /** - * The argument passed to [`afterNavigate`](https://kit.svelte.dev/docs/modules#$app-navigation-afternavigate) callbacks. + * The argument passed to [`afterNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-afternavigate) callbacks. */ export interface AfterNavigate extends Omit<Navigation, 'type'> { /** @@ -1004,17 +1004,17 @@ declare module '@sveltejs/kit' { */ data: App.PageData & Record<string, any>; /** - * The page state, which can be manipulated using the [`pushState`](https://kit.svelte.dev/docs/modules#$app-navigation-pushstate) and [`replaceState`](https://kit.svelte.dev/docs/modules#$app-navigation-replacestate) functions from `$app/navigation`. + * The page state, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/modules#$app-navigation-pushstate) and [`replaceState`](https://svelte.dev/docs/kit/modules#$app-navigation-replacestate) functions from `$app/navigation`. */ state: App.PageState; /** - * Filled only after a form submission. See [form actions](https://kit.svelte.dev/docs/form-actions) for more info. + * Filled only after a form submission. See [form actions](https://svelte.dev/docs/kit/form-actions) for more info. */ form: any; } /** - * The shape of a param matcher. See [matching](https://kit.svelte.dev/docs/advanced-routing#matching) for more info. + * The shape of a param matcher. See [matching](https://svelte.dev/docs/kit/advanced-routing#matching) for more info. */ export type ParamMatcher = (param: string) => boolean; @@ -1032,10 +1032,10 @@ declare module '@sveltejs/kit' { * - It can be used to make credentialed requests on the server, as it inherits the `cookie` and `authorization` headers for the page request. * - It can make relative requests on the server (ordinarily, `fetch` requires a URL with an origin when used in a server context). * - Internal requests (e.g. for `+server.js` routes) go directly to the handler function when running on the server, without the overhead of an HTTP call. - * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://kit.svelte.dev/docs/hooks#Server-hooks-handle) + * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) * - During hydration, the response will be read from the HTML, guaranteeing consistency and preventing an additional network request. * - * You can learn more about making credentialed requests with cookies [here](https://kit.svelte.dev/docs/load#cookies) + * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#cookies) */ fetch: typeof fetch; /** @@ -1043,7 +1043,7 @@ declare module '@sveltejs/kit' { */ getClientAddress(): string; /** - * Contains custom data that was added to the request within the [`handle hook`](https://kit.svelte.dev/docs/hooks#Server-hooks-handle). + * Contains custom data that was added to the request within the [`handle hook`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle). */ locals: App.Locals; /** @@ -1087,7 +1087,7 @@ declare module '@sveltejs/kit' { * * Setting the same header multiple times (even in separate `load` functions) is an error — you can only set a given header once. * - * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://kit.svelte.dev/docs/types#public-types-cookies) API instead. + * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/types#public-types-cookies) API instead. */ setHeaders(headers: Record<string, string>): void; /** @@ -1108,7 +1108,7 @@ declare module '@sveltejs/kit' { /** * A `(event: RequestEvent) => Response` function exported from a `+server.js` file that corresponds to an HTTP verb (`GET`, `PUT`, `PATCH`, etc) and handles requests with that method. * - * It receives `Params` as the first generic argument, which you can skip by using [generated types](https://kit.svelte.dev/docs/types#generated-types) instead. + * It receives `Params` as the first generic argument, which you can skip by using [generated types](https://svelte.dev/docs/kit/types#generated-types) instead. */ export type RequestHandler< Params extends Partial<Record<string, string>> = Partial<Record<string, string>>, @@ -1184,7 +1184,7 @@ declare module '@sveltejs/kit' { } /** - * The generic form of `PageServerLoad` and `LayoutServerLoad`. You should import those from `./$types` (see [generated types](https://kit.svelte.dev/docs/types#generated-types)) + * The generic form of `PageServerLoad` and `LayoutServerLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) * rather than using `ServerLoad` directly. */ export type ServerLoad< @@ -1206,7 +1206,7 @@ declare module '@sveltejs/kit' { */ parent(): Promise<ParentData>; /** - * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://kit.svelte.dev/docs/modules#$app-navigation-invalidate) to cause `load` to rerun. + * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/modules#$app-navigation-invalidate) to cause `load` to rerun. * * Most of the time you won't need this, as `fetch` calls `depends` on your behalf — it's only necessary if you're using a custom API client that bypasses `fetch`. * @@ -1261,7 +1261,7 @@ declare module '@sveltejs/kit' { /** * Shape of a form action method that is part of `export const actions = {..}` in `+page.server.js`. - * See [form actions](https://kit.svelte.dev/docs/form-actions) for more information. + * See [form actions](https://svelte.dev/docs/kit/form-actions) for more information. */ export type Action< Params extends Partial<Record<string, string>> = Partial<Record<string, string>>, @@ -1271,7 +1271,7 @@ declare module '@sveltejs/kit' { /** * Shape of the `export const actions = {..}` object in `+page.server.js`. - * See [form actions](https://kit.svelte.dev/docs/form-actions) for more information. + * See [form actions](https://svelte.dev/docs/kit/form-actions) for more information. */ export type Actions< Params extends Partial<Record<string, string>> = Partial<Record<string, string>>, @@ -1299,7 +1299,7 @@ declare module '@sveltejs/kit' { | { type: 'error'; status?: number; error: any }; /** - * The object returned by the [`error`](https://kit.svelte.dev/docs/modules#sveltejs-kit-error) function. + * The object returned by the [`error`](https://svelte.dev/docs/kit/modules#sveltejs-kit-error) function. */ export interface HttpError { /** The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses), in the range 400-599. */ @@ -1309,7 +1309,7 @@ declare module '@sveltejs/kit' { } /** - * The object returned by the [`redirect`](https://kit.svelte.dev/docs/modules#sveltejs-kit-redirect) function + * The object returned by the [`redirect`](https://svelte.dev/docs/kit/modules#sveltejs-kit-redirect) function */ export interface Redirect { /** The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages), in the range 300-308. */ @@ -2075,7 +2075,7 @@ declare module '$app/navigation' { * Returns a Promise that resolves when SvelteKit navigates (or fails to navigate, in which case the promise rejects) to the specified `url`. * For external URLs, use `window.location = url` instead of calling `goto(url)`. * - * @param url Where to navigate to. Note that if you've set [`config.kit.paths.base`](https://kit.svelte.dev/docs/configuration#paths) and the URL is root-relative, you need to prepend the base path if you want to navigate within the app. + * @param url Where to navigate to. Note that if you've set [`config.kit.paths.base`](https://svelte.dev/docs/kit/configuration#paths) and the URL is root-relative, you need to prepend the base path if you want to navigate within the app. * @param {Object} opts Options related to the navigation * */ export function goto(url: string | URL, opts?: { @@ -2138,12 +2138,12 @@ declare module '$app/navigation' { * */ export function preloadCode(pathname: string): Promise<void>; /** - * Programmatically create a new history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://kit.svelte.dev/docs/shallow-routing). + * Programmatically create a new history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://svelte.dev/docs/kit/shallow-routing). * * */ export function pushState(url: string | URL, state: App.PageState): void; /** - * Programmatically replace the current history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://kit.svelte.dev/docs/shallow-routing). + * Programmatically replace the current history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://svelte.dev/docs/kit/shallow-routing). * * */ export function replaceState(url: string | URL, state: App.PageState): void; @@ -2154,14 +2154,14 @@ declare module '$app/navigation' { declare module '$app/paths' { /** - * A string that matches [`config.kit.paths.base`](https://kit.svelte.dev/docs/configuration#paths). + * A string that matches [`config.kit.paths.base`](https://svelte.dev/docs/kit/configuration#paths). * * Example usage: `<a href="{base}/your-page">Link</a>` */ export let base: '' | `/${string}`; /** - * An absolute path that matches [`config.kit.paths.assets`](https://kit.svelte.dev/docs/configuration#paths). + * An absolute path that matches [`config.kit.paths.assets`](https://svelte.dev/docs/kit/configuration#paths). * * > [!NOTE] If a value for `config.kit.paths.assets` is specified, it will be replaced with `'/_svelte_kit_assets'` during `vite dev` or `vite preview`, since the assets don't yet live at their eventual URL. */ @@ -2230,7 +2230,7 @@ declare module '$app/stores' { * */ export const navigating: import('svelte/store').Readable<import('@sveltejs/kit').Navigation | null>; /** - * A readable store whose initial value is `false`. If [`version.pollInterval`](https://kit.svelte.dev/docs/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling. + * A readable store whose initial value is `false`. If [`version.pollInterval`](https://svelte.dev/docs/kit/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling. * * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time. * */ @@ -2270,30 +2270,30 @@ declare namespace App { } /** - * The interface that defines `event.locals`, which can be accessed in [hooks](https://kit.svelte.dev/docs/hooks) (`handle`, and `handleError`), server-only `load` functions, and `+server.js` files. + * The interface that defines `event.locals`, which can be accessed in [hooks](https://svelte.dev/docs/kit/hooks) (`handle`, and `handleError`), server-only `load` functions, and `+server.js` files. */ export interface Locals {} /** - * Defines the common shape of the [$page.data store](https://kit.svelte.dev/docs/modules#$app-stores-page) - that is, the data that is shared between all pages. + * Defines the common shape of the [$page.data store](https://svelte.dev/docs/kit/modules#$app-stores-page) - that is, the data that is shared between all pages. * The `Load` and `ServerLoad` functions in `./$types` will be narrowed accordingly. * Use optional properties for data that is only present on specific pages. Do not add an index signature (`[key: string]: any`). */ export interface PageData {} /** - * The shape of the `$page.state` object, which can be manipulated using the [`pushState`](https://kit.svelte.dev/docs/modules#$app-navigation-pushstate) and [`replaceState`](https://kit.svelte.dev/docs/modules#$app-navigation-replacestate) functions from `$app/navigation`. + * The shape of the `$page.state` object, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/modules#$app-navigation-pushstate) and [`replaceState`](https://svelte.dev/docs/kit/modules#$app-navigation-replacestate) functions from `$app/navigation`. */ export interface PageState {} /** - * If your adapter provides [platform-specific context](https://kit.svelte.dev/docs/adapters#platform-specific-context) via `event.platform`, you can specify it here. + * If your adapter provides [platform-specific context](https://svelte.dev/docs/kit/adapters#platform-specific-context) via `event.platform`, you can specify it here. */ export interface Platform {} } /** - * This module is only available to [service workers](https://kit.svelte.dev/docs/service-workers). + * This module is only available to [service workers](https://svelte.dev/docs/kit/service-workers). */ declare module '$service-worker' { /** @@ -2307,7 +2307,7 @@ declare module '$service-worker' { */ export const build: string[]; /** - * An array of URL strings representing the files in your static directory, or whatever directory is specified by `config.kit.files.assets`. You can customize which files are included from `static` directory using [`config.kit.serviceWorker.files`](https://kit.svelte.dev/docs/configuration) + * An array of URL strings representing the files in your static directory, or whatever directory is specified by `config.kit.files.assets`. You can customize which files are included from `static` directory using [`config.kit.serviceWorker.files`](https://svelte.dev/docs/kit/configuration) */ export const files: string[]; /** @@ -2316,7 +2316,7 @@ declare module '$service-worker' { */ export const prerendered: string[]; /** - * See [`config.kit.version`](https://kit.svelte.dev/docs/configuration#version). It's useful for generating unique cache names inside your service worker, so that a later deployment of your app can invalidate old caches. + * See [`config.kit.version`](https://svelte.dev/docs/kit/configuration#version). It's useful for generating unique cache names inside your service worker, so that a later deployment of your app can invalidate old caches. */ export const version: string; } diff --git a/packages/migrate/README.md b/packages/migrate/README.md index 7c308494bb64..1dceb6d6f89e 100644 --- a/packages/migrate/README.md +++ b/packages/migrate/README.md @@ -18,8 +18,8 @@ npx sv migrate [migration] | Migration | From | To | Guide | | ------------- | --------------------- | --------------------- | --------------------------------------------------------------- | -| `sveltekit-2` | SvelteKit 1.0 | SvelteKit 2.0 | [Website](https://kit.svelte.dev/docs/migrating-to-sveltekit-2) | -| `svelte-4` | Svelte 3 | Svelte 4 | [Website](https://svelte.dev/docs/v4-migration-guide) | +| `sveltekit-2` | SvelteKit 1.0 | SvelteKit 2.0 | [Website](https://svelte.dev/docs/kit/migrating-to-sveltekit-2) | +| `svelte-4` | Svelte 3 | Svelte 4 | [Website](https://svelte.dev/docs/svelte/v4-migration-guide) | | `svelte-5` | Svelte 4 | Svelte 5 | | | `package` | `@sveltejs/package@1` | `@sveltejs/package@2` | [#8922](https://github.com/sveltejs/kit/pull/8922) | | `routes` | SvelteKit pre-1.0 | SvelteKit 1.0 | [#5774](https://github.com/sveltejs/kit/discussions/5774) | diff --git a/packages/migrate/migrations/package/index.js b/packages/migrate/migrations/package/index.js index f2d0683b667f..0e36547686f8 100644 --- a/packages/migrate/migrations/package/index.js +++ b/packages/migrate/migrations/package/index.js @@ -66,7 +66,7 @@ export async function migrate() { const tasks = [ use_git && cyan('git commit -m "migration to @sveltejs/package v2"'), 'Review the migration guide at https://github.com/sveltejs/kit/pull/8922', - 'Read the updated docs at https://kit.svelte.dev/docs/packaging' + 'Read the updated docs at https://svelte.dev/docs/kit/packaging' ].filter(Boolean); tasks.forEach((task, i) => { diff --git a/packages/migrate/migrations/svelte-4/index.js b/packages/migrate/migrations/svelte-4/index.js index 98ca69cb33d5..4fea5173da0e 100644 --- a/packages/migrate/migrations/svelte-4/index.js +++ b/packages/migrate/migrations/svelte-4/index.js @@ -53,7 +53,7 @@ export async function migrate() { type: 'confirm', name: 'value', message: - 'Add the `|global` modifier to currently global transitions for backwards compatibility? More info at https://svelte.dev/docs/v4-migration-guide#transitions-are-local-by-default', + 'Add the `|global` modifier to currently global transitions for backwards compatibility? More info at https://svelte.dev/docs/svelte/v4-migration-guide#transitions-are-local-by-default', initial: true }); @@ -96,8 +96,8 @@ export async function migrate() { const tasks = [ use_git && cyan('git commit -m "migration to Svelte 4"'), - 'Review the migration guide at https://svelte.dev/docs/v4-migration-guide', - 'Read the updated docs at https://svelte.dev/docs' + 'Review the migration guide at https://svelte.dev/docs/svelte/v4-migration-guide', + 'Read the updated docs at https://svelte.dev/docs/svelte' ].filter(Boolean); tasks.forEach((task, i) => { diff --git a/packages/migrate/migrations/svelte-4/migrate.js b/packages/migrate/migrations/svelte-4/migrate.js index b3067d451393..c459380ef441 100644 --- a/packages/migrate/migrations/svelte-4/migrate.js +++ b/packages/migrate/migrations/svelte-4/migrate.js @@ -30,7 +30,7 @@ export function update_pkg_json_content(content) { [ 'eslint-plugin-svelte3', '^4.0.0', - ' (this package is deprecated, use eslint-plugin-svelte instead. More info: https://svelte.dev/docs/v4-migration-guide#new-eslint-package)' + ' (this package is deprecated, use eslint-plugin-svelte instead. More info: https://svelte.dev/docs/svelte/v4-migration-guide#new-eslint-package)' ], [ 'typescript', @@ -70,7 +70,7 @@ export function transform_svelte_code(code, migrate_transition) { function update_svelte_options(code) { return code.replace(/<svelte:options([^]*?)\stag=([^]*?)\/?>/, (match) => { log_migration( - 'Replaced `svelte:options` `tag` attribute with `customElement` attribute: https://svelte.dev/docs/v4-migration-guide#custom-elements-with-svelte' + 'Replaced `svelte:options` `tag` attribute with `customElement` attribute: https://svelte.dev/docs/svelte/v4-migration-guide#custom-elements-with-svelte' ); return match.replace('tag=', 'customElement='); }); @@ -87,7 +87,7 @@ function update_transitions(code, migrate_transition) { const replaced = code.replace(/(\s)(transition:|in:|out:)(\w+)(?=[\s>=])/g, '$1$2$3|global'); if (replaced !== code) { log_migration( - 'Added `|global` to `transition`, `in`, and `out` directives (transitions are local by default now): https://svelte.dev/docs/v4-migration-guide#transitions-are-local-by-default' + 'Added `|global` to `transition`, `in`, and `out` directives (transitions are local by default now): https://svelte.dev/docs/svelte/v4-migration-guide#transitions-are-local-by-default' ); } code = replaced; @@ -95,7 +95,7 @@ function update_transitions(code, migrate_transition) { const replaced = code.replace(/(\s)(transition:|in:|out:)(\w+)(\|local)(?=[\s>=])/g, '$1$2$3'); if (replaced !== code) { log_migration( - 'Removed `|local` from `transition`, `in`, and `out` directives (transitions are local by default now): https://svelte.dev/docs/v4-migration-guide#transitions-are-local-by-default' + 'Removed `|local` from `transition`, `in`, and `out` directives (transitions are local by default now): https://svelte.dev/docs/svelte/v4-migration-guide#transitions-are-local-by-default' ); } return replaced; @@ -109,7 +109,7 @@ function update_transitions(code, migrate_transition) { function update_action_types(source, is_ts) { const logger = log_on_ts_modification( source, - 'Updated `Action` interface usages: https://svelte.dev/docs/v4-migration-guide#stricter-types-for-svelte-functions' + 'Updated `Action` interface usages: https://svelte.dev/docs/svelte/v4-migration-guide#stricter-types-for-svelte-functions' ); const imports = get_imports(source, 'svelte/action', 'Action'); @@ -152,7 +152,7 @@ function update_action_types(source, is_ts) { function update_action_return_types(source, is_ts) { const logger = log_on_ts_modification( source, - 'Updated `ActionReturn` interface usages: https://svelte.dev/docs/v4-migration-guide#stricter-types-for-svelte-functions' + 'Updated `ActionReturn` interface usages: https://svelte.dev/docs/svelte/v4-migration-guide#stricter-types-for-svelte-functions' ); const imports = get_imports(source, 'svelte/action', 'ActionReturn'); @@ -192,7 +192,7 @@ function update_action_return_types(source, is_ts) { function update_imports(source, is_ts) { const logger = log_on_ts_modification( source, - 'Replaced `SvelteComponentTyped` imports with `SvelteComponent` imports: https://svelte.dev/docs/v4-migration-guide#stricter-types-for-svelte-functions' + 'Replaced `SvelteComponentTyped` imports with `SvelteComponent` imports: https://svelte.dev/docs/svelte/v4-migration-guide#stricter-types-for-svelte-functions' ); const identifiers = find_identifiers(source, 'SvelteComponent'); @@ -252,7 +252,7 @@ function update_imports(source, is_ts) { function update_typeof_svelte_component(source, is_ts) { const logger = log_on_ts_modification( source, - 'Adjusted `typeof SvelteComponent` to `typeof SvelteComponent<any>`: https://svelte.dev/docs/v4-migration-guide#stricter-types-for-svelte-functions' + 'Adjusted `typeof SvelteComponent` to `typeof SvelteComponent<any>`: https://svelte.dev/docs/svelte/v4-migration-guide#stricter-types-for-svelte-functions' ); const imports = get_imports(source, 'svelte', 'SvelteComponent'); diff --git a/packages/migrate/migrations/svelte-5/migrate.js b/packages/migrate/migrations/svelte-5/migrate.js index 21cf4beec097..24ace9dc7148 100644 --- a/packages/migrate/migrations/svelte-5/migrate.js +++ b/packages/migrate/migrations/svelte-5/migrate.js @@ -33,7 +33,7 @@ export function update_pkg_json_content(content) { [ 'eslint-plugin-svelte3', '^4.0.0', - ' (this package is deprecated, use eslint-plugin-svelte instead. More info: https://svelte.dev/docs/v4-migration-guide#new-eslint-package)' + ' (this package is deprecated, use eslint-plugin-svelte instead. More info: https://svelte.dev/docs/svelte/v4-migration-guide#new-eslint-package)' ], [ 'typescript', diff --git a/packages/migrate/migrations/sveltekit-2/index.js b/packages/migrate/migrations/sveltekit-2/index.js index 6737c3090a9c..c62442aba5b2 100644 --- a/packages/migrate/migrations/sveltekit-2/index.js +++ b/packages/migrate/migrations/sveltekit-2/index.js @@ -151,8 +151,8 @@ export async function migrate() { const tasks = [ 'Run npm install (or the corresponding installation command of your package manager)', use_git && cyan('git commit -m "migration to SvelteKit 2"'), - 'Review the migration guide at https://kit.svelte.dev/docs/migrating-to-sveltekit-2', - 'Read the updated docs at https://kit.svelte.dev/docs' + 'Review the migration guide at https://svelte.dev/docs/kit/migrating-to-sveltekit-2', + 'Read the updated docs at https://svelte.dev/docs/kit' ].filter(Boolean); tasks.forEach((task, i) => { diff --git a/packages/migrate/migrations/sveltekit-2/migrate.js b/packages/migrate/migrations/sveltekit-2/migrate.js index 7d83fcea302b..ddd46d946f64 100644 --- a/packages/migrate/migrations/sveltekit-2/migrate.js +++ b/packages/migrate/migrations/sveltekit-2/migrate.js @@ -52,7 +52,7 @@ export function update_tsconfig_content(content) { if (updated !== content) { log_migration( 'Removed deprecated `importsNotUsedAsValues` and `preserveValueImports`' + - ' from tsconfig.json: https://kit.svelte.dev/docs/migrating-to-sveltekit-2#updated-dependency-requirements' + ' from tsconfig.json: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#updated-dependency-requirements' ); } @@ -61,13 +61,13 @@ export function update_tsconfig_content(content) { if (updated !== content) { log_migration( 'Updated `moduleResolution` to `bundler`' + - ' in tsconfig.json: https://kit.svelte.dev/docs/migrating-to-sveltekit-2#updated-dependency-requirements' + ' in tsconfig.json: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#updated-dependency-requirements' ); } if (content.includes('"paths":') || content.includes('"baseUrl":')) { log_migration( - '`paths` and/or `baseUrl` detected in your tsconfig.json - remove it and use `kit.alias` instead: https://kit.svelte.dev/docs/migrating-to-sveltekit-2#generated-tsconfig-json-is-more-strict' + '`paths` and/or `baseUrl` detected in your tsconfig.json - remove it and use `kit.alias` instead: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#generated-tsconfig-json-is-more-strict' ); } @@ -89,7 +89,7 @@ export function update_svelte_config_content(code) { const result = code.replace(regex, ''); if (result !== code) { log_migration( - 'Removed `dangerZone` from svelte.config.js: https://kit.svelte.dev/docs/migrating-to-sveltekit-2#server-fetches-are-not-trackable-anymore' + 'Removed `dangerZone` from svelte.config.js: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#server-fetches-are-not-trackable-anymore' ); } @@ -101,7 +101,7 @@ export function update_svelte_config_content(code) { const logger = log_on_ts_modification( source, - 'Changed `vitePreprocess` import: https://kit.svelte.dev/docs/migrating-to-sveltekit-2#vitepreprocess-is-no-longer-exported-from-sveltejs-kit-vite' + 'Changed `vitePreprocess` import: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#vitepreprocess-is-no-longer-exported-from-sveltejs-kit-vite' ); if (namedImport.getParent().getParent().getNamedImports().length === 1) { @@ -150,7 +150,7 @@ export function transform_code(code, _is_ts, file_path) { function remove_throws(source) { const logger = log_on_ts_modification( source, - 'Removed `throw` from redirect/error functions: https://kit.svelte.dev/docs/migrating-to-sveltekit-2#redirect-and-error-are-no-longer-thrown-by-you' + 'Removed `throw` from redirect/error functions: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#redirect-and-error-are-no-longer-thrown-by-you' ); /** @param {string} id */ @@ -200,7 +200,7 @@ function add_cookie_note(file_path, source) { const logger = log_on_ts_modification( source, - 'Search codebase for `@migration` and manually add the `path` option to `cookies.set/delete/serialize` calls: https://kit.svelte.dev/docs/migrating-to-sveltekit-2#path-is-now-a-required-option-for-cookies' + 'Search codebase for `@migration` and manually add the `path` option to `cookies.set/delete/serialize` calls: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#path-is-now-a-required-option-for-cookies' ); const calls = []; @@ -279,7 +279,7 @@ function replace_resolve_path(source) { const logger = log_on_ts_modification( source, - 'Replaced `resolvePath` with `resolveRoute`: https://kit.svelte.dev/docs/migrating-to-sveltekit-2#resolvePath-has-been-removed' + 'Replaced `resolvePath` with `resolveRoute`: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#resolvePath-has-been-removed' ); const name_node = named_import.getNameNode(); diff --git a/packages/migrate/migrations/sveltekit-2/svelte-config-samples.md b/packages/migrate/migrations/sveltekit-2/svelte-config-samples.md index daa482375f39..9a06096a3986 100644 --- a/packages/migrate/migrations/sveltekit-2/svelte-config-samples.md +++ b/packages/migrate/migrations/sveltekit-2/svelte-config-samples.md @@ -51,7 +51,7 @@ import { vitePreprocess } from '@sveltejs/kit/vite'; /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // Consult https://svelte.dev/docs/kit/integrations#preprocessors // for more information about preprocessors preprocess: vitePreprocess(), @@ -69,7 +69,7 @@ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // Consult https://svelte.dev/docs/kit/integrations#preprocessors // for more information about preprocessors preprocess: vitePreprocess(), diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 99eb9d77921d..4e7580e85b6e 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -15,7 +15,7 @@ "directory": "packages/migrate" }, "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "bin": { "svelte-migrate": "./bin.js" diff --git a/packages/package/README.md b/packages/package/README.md index 740f32338967..edcbdb96a560 100644 --- a/packages/package/README.md +++ b/packages/package/README.md @@ -1,8 +1,8 @@ # The fastest way to build Svelte packages -Create Svelte packages, build and push them to npm. This is part of the [SvelteKit](https://kit.svelte.dev) framework and CLI. +[Build Svelte packages](https://svelte.dev/docs/kit/packaging) in correctly packaged format. -The quickest way to get started is via the [create-svelte](https://github.com/sveltejs/kit/tree/main/packages/create-svelte) package: +The quickest way to get started is via the [sv](https://npmjs.com/package/sv) package: ```bash npm sv create my-app @@ -11,7 +11,7 @@ npm install npm run dev ``` -See the [documentation](https://kit.svelte.dev/docs/packaging) to learn more. +See the [documentation](https://svelte.dev/docs/kit/packaging) to learn more. ## Changelog diff --git a/packages/package/package.json b/packages/package/package.json index 6809eabef077..a4e35f3e206e 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -17,7 +17,7 @@ "tool" ], "license": "MIT", - "homepage": "https://kit.svelte.dev", + "homepage": "https://svelte.dev", "type": "module", "dependencies": { "chokidar": "^4.0.0", diff --git a/packages/package/src/validate.js b/packages/package/src/validate.js index 31d2d285bba3..af97dc09b5ed 100644 --- a/packages/package/src/validate.js +++ b/packages/package/src/validate.js @@ -119,7 +119,7 @@ export function _create_validator(options) { warnings.push( 'You are using Svelte files, but did not declare a `svelte` condition in one of your `exports` in your `package.json`. ' + 'Add a `svelte` condition to your `exports` to ensure that your package is recognized as Svelte package by tooling. ' + - 'See https://kit.svelte.dev/docs/packaging#anatomy-of-a-package-json-exports for more info' + 'See https://svelte.dev/docs/kit/packaging#anatomy-of-a-package-json-exports for more info' ); } @@ -142,7 +142,7 @@ export function _create_validator(options) { } else { warnings.push( 'No `exports` field found in `package.json`, please provide one. ' + - 'See https://kit.svelte.dev/docs/packaging#anatomy-of-a-package-json-exports for more info' + 'See https://svelte.dev/docs/kit/packaging#anatomy-of-a-package-json-exports for more info' ); } From 820f3e738d01479aec435d0995bbcd8c5bb817f5 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 14:32:27 -0700 Subject: [PATCH 348/454] docs: update for svelte 5 --- documentation/docs/20-core-concepts/20-load.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index 2a75cc5ca2f1..e60dcd3ca269 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -120,8 +120,8 @@ Data returned from layout `load` functions is available to child `+layout.svelte +++ // we can access `data.posts` because it's returned from // the parent layout `load` function - $: index = data.posts.findIndex(post => post.slug === $page.params.slug); - $: next = data.posts[index - 1];+++ + let index = $derived(data.posts.findIndex(post => post.slug === $page.params.slug)); + let next = $derived(data.posts[index - 1];)+++ </script> <h1>{data.post.title}</h1> From 855af3e31c1c3b1ebe9ae4543d2ec4285ab4909a Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Tue, 22 Oct 2024 18:31:12 -0400 Subject: [PATCH 349/454] docs: fix tutorial links (#12860) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- documentation/docs/10-getting-started/10-introduction.md | 2 +- documentation/docs/20-core-concepts/10-routing.md | 4 ++-- documentation/docs/20-core-concepts/20-load.md | 6 +++--- documentation/docs/20-core-concepts/30-form-actions.md | 2 +- documentation/docs/20-core-concepts/40-page-options.md | 2 +- documentation/docs/20-core-concepts/50-state-management.md | 4 ++-- documentation/docs/30-advanced/10-advanced-routing.md | 2 +- documentation/docs/30-advanced/20-hooks.md | 2 +- documentation/docs/30-advanced/25-errors.md | 4 ++-- documentation/docs/30-advanced/50-server-only-modules.md | 2 +- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/documentation/docs/10-getting-started/10-introduction.md b/documentation/docs/10-getting-started/10-introduction.md index 2e7cae50029f..d1a5ca169533 100644 --- a/documentation/docs/10-getting-started/10-introduction.md +++ b/documentation/docs/10-getting-started/10-introduction.md @@ -4,7 +4,7 @@ title: Introduction ## Before we begin -> [!NOTE] If you're new to Svelte or SvelteKit we recommend checking out the [interactive tutorial](../tutorial/kit). +> [!NOTE] If you're new to Svelte or SvelteKit we recommend checking out the [interactive tutorial](/tutorial/kit). > > If you get stuck, reach out for help in the [Discord chatroom](https://svelte.dev/chat). diff --git a/documentation/docs/20-core-concepts/10-routing.md b/documentation/docs/20-core-concepts/10-routing.md index 2d8845e77c45..0c48a2b2c2b7 100644 --- a/documentation/docs/20-core-concepts/10-routing.md +++ b/documentation/docs/20-core-concepts/10-routing.md @@ -394,6 +394,6 @@ If components and modules are needed by multiple routes, it's a good idea to put ## Further reading -- [Tutorial: Routing](../tutorial/kit/pages) -- [Tutorial: API routes](../tutorial/kit/get-handlers) +- [Tutorial: Routing](/tutorial/kit/pages) +- [Tutorial: API routes](/tutorial/kit/get-handlers) - [Docs: Advanced routing](advanced-routing) diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index e60dcd3ca269..3e50259a3308 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -693,6 +693,6 @@ Putting an auth guard in `+layout.server.js` requires all child pages to call `a ## Further reading -- [Tutorial: Loading data](../tutorial/kit/page-data) -- [Tutorial: Errors and redirects](../tutorial/kit/error-basics) -- [Tutorial: Advanced loading](../tutorial/kit/await-parent) +- [Tutorial: Loading data](/tutorial/kit/page-data) +- [Tutorial: Errors and redirects](/tutorial/kit/error-basics) +- [Tutorial: Advanced loading](/tutorial/kit/await-parent) diff --git a/documentation/docs/20-core-concepts/30-form-actions.md b/documentation/docs/20-core-concepts/30-form-actions.md index 1aa45620c8ac..deb4ef73abc0 100644 --- a/documentation/docs/20-core-concepts/30-form-actions.md +++ b/documentation/docs/20-core-concepts/30-form-actions.md @@ -518,4 +518,4 @@ Submitting this form will navigate to `/search?q=...` and invoke your load funct ## Further reading -- [Tutorial: Forms](../tutorial/kit/the-form-element) +- [Tutorial: Forms](/tutorial/kit/the-form-element) diff --git a/documentation/docs/20-core-concepts/40-page-options.md b/documentation/docs/20-core-concepts/40-page-options.md index 84ae9fc3e23e..030ccc593412 100644 --- a/documentation/docs/20-core-concepts/40-page-options.md +++ b/documentation/docs/20-core-concepts/40-page-options.md @@ -219,4 +219,4 @@ export const config = { ## Further reading -- [Tutorial: Page options](../tutorial/kit/page-options) +- [Tutorial: Page options](/tutorial/kit/page-options) diff --git a/documentation/docs/20-core-concepts/50-state-management.md b/documentation/docs/20-core-concepts/50-state-management.md index acfd9d5ca3f6..f993f59ca6f8 100644 --- a/documentation/docs/20-core-concepts/50-state-management.md +++ b/documentation/docs/20-core-concepts/50-state-management.md @@ -82,7 +82,7 @@ If you're not using SSR, then there's no risk of accidentally exposing one user' ## Using stores with context -You might wonder how we're able to use `$page.data` and other [app stores]($app-stores) if we can't use our own stores. The answer is that app stores on the server use Svelte's [context API](../tutorial/svelte/context-api) — the store is attached to the component tree with `setContext`, and when you subscribe you retrieve it with `getContext`. We can do the same thing with our own stores: +You might wonder how we're able to use `$page.data` and other [app stores]($app-stores) if we can't use our own stores. The answer is that app stores on the server use Svelte's [context API](/tutorial/svelte/context-api) — the store is attached to the component tree with `setContext`, and when you subscribe you retrieve it with `getContext`. We can do the same thing with our own stores: ```svelte <!--- file: src/routes/+layout.svelte ---> @@ -143,7 +143,7 @@ When you navigate around your application, SvelteKit reuses existing layout and ...then navigating from `/blog/my-short-post` to `/blog/my-long-post` won't cause the layout, page and any other components within to be destroyed and recreated. Instead the `data` prop (and by extension `data.title` and `data.content`) will update (as it would with any other Svelte component) and, because the code isn't rerunning, lifecycle methods like `onMount` and `onDestroy` won't rerun and `estimatedReadingTime` won't be recalculated. -Instead, we need to make the value [_reactive_](../tutorial/svelte/state): +Instead, we need to make the value [_reactive_](/tutorial/svelte/state): ```svelte /// file: src/routes/blog/[slug]/+page.svelte diff --git a/documentation/docs/30-advanced/10-advanced-routing.md b/documentation/docs/30-advanced/10-advanced-routing.md index 07044fa7bcc7..26b1be2143e8 100644 --- a/documentation/docs/30-advanced/10-advanced-routing.md +++ b/documentation/docs/30-advanced/10-advanced-routing.md @@ -287,4 +287,4 @@ export function load(event) { ## Further reading -- [Tutorial: Advanced Routing](../tutorial/kit/optional-params) +- [Tutorial: Advanced Routing](/tutorial/kit/optional-params) diff --git a/documentation/docs/30-advanced/20-hooks.md b/documentation/docs/30-advanced/20-hooks.md index c2f3408498c5..74d4c815d835 100644 --- a/documentation/docs/30-advanced/20-hooks.md +++ b/documentation/docs/30-advanced/20-hooks.md @@ -270,4 +270,4 @@ Using `reroute` will _not_ change the contents of the browser's address bar, or ## Further reading -- [Tutorial: Hooks](../tutorial/kit/handle) +- [Tutorial: Hooks](/tutorial/kit/handle) diff --git a/documentation/docs/30-advanced/25-errors.md b/documentation/docs/30-advanced/25-errors.md index 63fbd83cc2c4..7449b5137723 100644 --- a/documentation/docs/30-advanced/25-errors.md +++ b/documentation/docs/30-advanced/25-errors.md @@ -144,5 +144,5 @@ This interface always includes a `message: string` property. ## Further reading -- [Tutorial: Errors and redirects](../tutorial/kit/error-basics) -- [Tutorial: Hooks](../tutorial/kit/handle) +- [Tutorial: Errors and redirects](/tutorial/kit/error-basics) +- [Tutorial: Hooks](/tutorial/kit/handle) diff --git a/documentation/docs/30-advanced/50-server-only-modules.md b/documentation/docs/30-advanced/50-server-only-modules.md index e20f9caa0925..54a49a2a308b 100644 --- a/documentation/docs/30-advanced/50-server-only-modules.md +++ b/documentation/docs/30-advanced/50-server-only-modules.md @@ -61,4 +61,4 @@ This feature also works with dynamic imports, even interpolated ones like ``awai ## Further reading -- [Tutorial: Environment variables](../tutorial/kit/env-static-private) +- [Tutorial: Environment variables](/tutorial/kit/env-static-private) From b2acab8374c92a20d201293cadea0360f7f37f66 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 22 Oct 2024 16:06:20 -0700 Subject: [PATCH 350/454] docs: fix link --- documentation/docs/60-appendix/25-debugging.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/60-appendix/25-debugging.md b/documentation/docs/60-appendix/25-debugging.md index f033622f9ab9..68c3f055eee4 100644 --- a/documentation/docs/60-appendix/25-debugging.md +++ b/documentation/docs/60-appendix/25-debugging.md @@ -2,7 +2,7 @@ title: Breakpoint Debugging --- -In addition to the [`@debug`](../svelte/debug) tag, you can also debug Svelte and SvelteKit projects using breakpoints within various tools and development environments. This includes both frontend and backend code. +In addition to the [`@debug`](../svelte/@debug) tag, you can also debug Svelte and SvelteKit projects using breakpoints within various tools and development environments. This includes both frontend and backend code. The following guides assume your JavaScript runtime environment is Node.js. From 8f516d135f7fe9b89ce7d0d04e4e87bc5ef49d95 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 23 Oct 2024 07:53:03 -0700 Subject: [PATCH 351/454] docs: fix links for new site (#12862) --- packages/kit/src/exports/public.d.ts | 38 ++++++++--------- packages/kit/src/types/ambient.d.ts | 4 +- .../types/synthetic/$env+dynamic+public.md | 2 +- .../types/synthetic/$env+static+private.md | 4 +- .../src/types/synthetic/$env+static+public.md | 2 +- packages/kit/types/index.d.ts | 42 +++++++++---------- 6 files changed, 46 insertions(+), 46 deletions(-) diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 7b706387cbe0..fe0c0b01a504 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -128,7 +128,7 @@ export interface Builder { generateEnvModule(): void; /** - * Generate a server-side manifest to initialise the SvelteKit [server](https://svelte.dev/docs/kit/types#public-types-server) with. + * Generate a server-side manifest to initialise the SvelteKit [server](https://svelte.dev/docs/kit/@sveltejs-kit#Server) with. * @param opts a relative path to the base directory of the app and optionally in which format (esm or cjs) the manifest should be generated */ generateManifest(opts: { relativePath: string; routes?: RouteDefinition[] }): string; @@ -397,12 +397,12 @@ export interface KitConfig { */ dir?: string; /** - * A prefix that signals that an environment variable is safe to expose to client-side code. See [`$env/static/public`](https://svelte.dev/docs/kit/modules#$env-static-public) and [`$env/dynamic/public`](https://svelte.dev/docs/kit/modules#$env-dynamic-public). Note that Vite's [`envPrefix`](https://vitejs.dev/config/shared-options.html#envprefix) must be set separately if you are using Vite's environment variable handling - though use of that feature should generally be unnecessary. + * A prefix that signals that an environment variable is safe to expose to client-side code. See [`$env/static/public`](https://svelte.dev/docs/kit/$env-static-public) and [`$env/dynamic/public`](https://svelte.dev/docs/kit/$env-dynamic-public). Note that Vite's [`envPrefix`](https://vitejs.dev/config/shared-options.html#envprefix) must be set separately if you are using Vite's environment variable handling - though use of that feature should generally be unnecessary. * @default "PUBLIC_" */ publicPrefix?: string; /** - * A prefix that signals that an environment variable is unsafe to expose to client-side code. Environment variables matching neither the public nor the private prefix will be discarded completely. See [`$env/static/private`](https://svelte.dev/docs/kit/modules#$env-static-private) and [`$env/dynamic/private`](https://svelte.dev/docs/kit/modules#$env-dynamic-private). + * A prefix that signals that an environment variable is unsafe to expose to client-side code. Environment variables matching neither the public nor the private prefix will be discarded completely. See [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private) and [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private). * @default "" * @since 1.21.0 */ @@ -505,7 +505,7 @@ export interface KitConfig { */ assets?: '' | `http://${string}` | `https://${string}`; /** - * A root-relative path that must start, but not end with `/` (e.g. `/base-path`), unless it is the empty string. This specifies where your app is served from and allows the app to live on a non-root path. Note that you need to prepend all your root-relative links with the base value or they will point to the root of your domain, not your `base` (this is how the browser works). You can use [`base` from `$app/paths`](https://svelte.dev/docs/kit/modules#$app-paths-base) for that: `<a href="{base}/your-page">Link</a>`. If you find yourself writing this often, it may make sense to extract this into a reusable component. + * A root-relative path that must start, but not end with `/` (e.g. `/base-path`), unless it is the empty string. This specifies where your app is served from and allows the app to live on a non-root path. Note that you need to prepend all your root-relative links with the base value or they will point to the root of your domain, not your `base` (this is how the browser works). You can use [`base` from `$app/paths`](https://svelte.dev/docs/kit/$app-paths#base) for that: `<a href="{base}/your-page">Link</a>`. If you find yourself writing this often, it may make sense to extract this into a reusable component. * @default "" */ base?: '' | `/${string}`; @@ -647,7 +647,7 @@ export interface KitConfig { * </script> * ``` * - * If you set `pollInterval` to a non-zero value, SvelteKit will poll for new versions in the background and set the value of the [`updated`](https://svelte.dev/docs/kit/modules#$app-stores-updated) store to `true` when it detects one. + * If you set `pollInterval` to a non-zero value, SvelteKit will poll for new versions in the background and set the value of the [`updated`](https://svelte.dev/docs/kit/$app-stores#updated) store to `true` when it detects one. */ version?: { /** @@ -730,7 +730,7 @@ export type HandleFetch = (input: { export type Reroute = (event: { url: URL }) => void | string; /** - * The generic form of `PageLoad` and `LayoutLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) + * The generic form of `PageLoad` and `LayoutLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#Generated-types)) * rather than using `Load` directly. */ export type Load< @@ -742,7 +742,7 @@ export type Load< > = (event: LoadEvent<Params, InputData, ParentData, RouteId>) => MaybePromise<OutputData>; /** - * The generic form of `PageLoadEvent` and `LayoutLoadEvent`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) + * The generic form of `PageLoadEvent` and `LayoutLoadEvent`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#Generated-types)) * rather than using `LoadEvent` directly. */ export interface LoadEvent< @@ -787,7 +787,7 @@ export interface LoadEvent< * * Setting the same header multiple times (even in separate `load` functions) is an error — you can only set a given header once. * - * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/types#public-types-cookies) API in a server-only `load` function instead. + * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/@sveltejs-kit#Cookies) API in a server-only `load` function instead. * * `setHeaders` has no effect when a `load` function runs in the browser. */ @@ -800,7 +800,7 @@ export interface LoadEvent< */ parent(): Promise<ParentData>; /** - * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/modules#$app-navigation-invalidate) to cause `load` to rerun. + * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/$app-navigation#invalidate) to cause `load` to rerun. * * Most of the time you won't need this, as `fetch` calls `depends` on your behalf — it's only necessary if you're using a custom API client that bypasses `fetch`. * @@ -939,7 +939,7 @@ export interface Navigation { } /** - * The argument passed to [`beforeNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-beforenavigate) callbacks. + * The argument passed to [`beforeNavigate`](https://svelte.dev/docs/kit/$app-navigation#beforeNavigate) callbacks. */ export interface BeforeNavigate extends Navigation { /** @@ -949,7 +949,7 @@ export interface BeforeNavigate extends Navigation { } /** - * The argument passed to [`onNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-onnavigate) callbacks. + * The argument passed to [`onNavigate`](https://svelte.dev/docs/kit/$app-navigation#onNavigate) callbacks. */ export interface OnNavigate extends Navigation { /** @@ -967,7 +967,7 @@ export interface OnNavigate extends Navigation { } /** - * The argument passed to [`afterNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-afternavigate) callbacks. + * The argument passed to [`afterNavigate`](https://svelte.dev/docs/kit/$app-navigation#afterNavigate) callbacks. */ export interface AfterNavigate extends Omit<Navigation, 'type'> { /** @@ -1022,7 +1022,7 @@ export interface Page< */ data: App.PageData & Record<string, any>; /** - * The page state, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/modules#$app-navigation-pushstate) and [`replaceState`](https://svelte.dev/docs/kit/modules#$app-navigation-replacestate) functions from `$app/navigation`. + * The page state, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/$app-navigation#pushState) and [`replaceState`](https://svelte.dev/docs/kit/$app-navigation#replaceState) functions from `$app/navigation`. */ state: App.PageState; /** @@ -1105,7 +1105,7 @@ export interface RequestEvent< * * Setting the same header multiple times (even in separate `load` functions) is an error — you can only set a given header once. * - * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/types#public-types-cookies) API instead. + * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/@sveltejs-kit#Cookies) API instead. */ setHeaders(headers: Record<string, string>): void; /** @@ -1126,7 +1126,7 @@ export interface RequestEvent< /** * A `(event: RequestEvent) => Response` function exported from a `+server.js` file that corresponds to an HTTP verb (`GET`, `PUT`, `PATCH`, etc) and handles requests with that method. * - * It receives `Params` as the first generic argument, which you can skip by using [generated types](https://svelte.dev/docs/kit/types#generated-types) instead. + * It receives `Params` as the first generic argument, which you can skip by using [generated types](https://svelte.dev/docs/kit/types#Generated-types) instead. */ export type RequestHandler< Params extends Partial<Record<string, string>> = Partial<Record<string, string>>, @@ -1202,7 +1202,7 @@ export interface SSRManifest { } /** - * The generic form of `PageServerLoad` and `LayoutServerLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) + * The generic form of `PageServerLoad` and `LayoutServerLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#Generated-types)) * rather than using `ServerLoad` directly. */ export type ServerLoad< @@ -1224,7 +1224,7 @@ export interface ServerLoadEvent< */ parent(): Promise<ParentData>; /** - * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/modules#$app-navigation-invalidate) to cause `load` to rerun. + * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/$app-navigation#invalidate) to cause `load` to rerun. * * Most of the time you won't need this, as `fetch` calls `depends` on your behalf — it's only necessary if you're using a custom API client that bypasses `fetch`. * @@ -1317,7 +1317,7 @@ export type ActionResult< | { type: 'error'; status?: number; error: any }; /** - * The object returned by the [`error`](https://svelte.dev/docs/kit/modules#sveltejs-kit-error) function. + * The object returned by the [`error`](https://svelte.dev/docs/kit/@sveltejs-kit#error) function. */ export interface HttpError { /** The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses), in the range 400-599. */ @@ -1327,7 +1327,7 @@ export interface HttpError { } /** - * The object returned by the [`redirect`](https://svelte.dev/docs/kit/modules#sveltejs-kit-redirect) function + * The object returned by the [`redirect`](https://svelte.dev/docs/kit/@sveltejs-kit#redirect) function */ export interface Redirect { /** The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages), in the range 300-308. */ diff --git a/packages/kit/src/types/ambient.d.ts b/packages/kit/src/types/ambient.d.ts index e63e8f98117e..bc936d57b31c 100644 --- a/packages/kit/src/types/ambient.d.ts +++ b/packages/kit/src/types/ambient.d.ts @@ -34,14 +34,14 @@ declare namespace App { export interface Locals {} /** - * Defines the common shape of the [$page.data store](https://svelte.dev/docs/kit/modules#$app-stores-page) - that is, the data that is shared between all pages. + * Defines the common shape of the [$page.data store](https://svelte.dev/docs/kit/$app-stores#page) - that is, the data that is shared between all pages. * The `Load` and `ServerLoad` functions in `./$types` will be narrowed accordingly. * Use optional properties for data that is only present on specific pages. Do not add an index signature (`[key: string]: any`). */ export interface PageData {} /** - * The shape of the `$page.state` object, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/modules#$app-navigation-pushstate) and [`replaceState`](https://svelte.dev/docs/kit/modules#$app-navigation-replacestate) functions from `$app/navigation`. + * The shape of the `$page.state` object, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/$app-navigation#pushState) and [`replaceState`](https://svelte.dev/docs/kit/$app-navigation#replaceState) functions from `$app/navigation`. */ export interface PageState {} diff --git a/packages/kit/src/types/synthetic/$env+dynamic+public.md b/packages/kit/src/types/synthetic/$env+dynamic+public.md index 95fdaf9c0d34..6e826d2fe2c0 100644 --- a/packages/kit/src/types/synthetic/$env+dynamic+public.md +++ b/packages/kit/src/types/synthetic/$env+dynamic+public.md @@ -1,4 +1,4 @@ -Similar to [`$env/dynamic/private`](https://svelte.dev/docs/kit/modules#$env-dynamic-private), but only includes variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. +Similar to [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private), but only includes variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. Note that public dynamic environment variables must all be sent from the server to the client, causing larger network requests — when possible, use `$env/static/public` instead. diff --git a/packages/kit/src/types/synthetic/$env+static+private.md b/packages/kit/src/types/synthetic/$env+static+private.md index 20bdb6e90a4a..e36ef4efdd7f 100644 --- a/packages/kit/src/types/synthetic/$env+static+private.md +++ b/packages/kit/src/types/synthetic/$env+static+private.md @@ -1,6 +1,6 @@ -Environment variables [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env`. Like [`$env/dynamic/private`](https://svelte.dev/docs/kit/modules#$env-dynamic-private), this module cannot be imported into client-side code. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://svelte.dev/docs/kit/configuration#env) (if configured). +Environment variables [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env`. Like [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private), this module cannot be imported into client-side code. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://svelte.dev/docs/kit/configuration#env) (if configured). -_Unlike_ [`$env/dynamic/private`](https://svelte.dev/docs/kit/modules#$env-dynamic-private), the values exported from this module are statically injected into your bundle at build time, enabling optimisations like dead code elimination. +_Unlike_ [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private), the values exported from this module are statically injected into your bundle at build time, enabling optimisations like dead code elimination. ```ts import { API_KEY } from '$env/static/private'; diff --git a/packages/kit/src/types/synthetic/$env+static+public.md b/packages/kit/src/types/synthetic/$env+static+public.md index 16e5d0208a91..70a98b458f78 100644 --- a/packages/kit/src/types/synthetic/$env+static+public.md +++ b/packages/kit/src/types/synthetic/$env+static+public.md @@ -1,4 +1,4 @@ -Similar to [`$env/static/private`](https://svelte.dev/docs/kit/modules#$env-static-private), except that it only includes environment variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. +Similar to [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private), except that it only includes environment variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code. Values are replaced statically at build time. diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 0595d25e2e60..f5b8aa40d34d 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -110,7 +110,7 @@ declare module '@sveltejs/kit' { generateEnvModule(): void; /** - * Generate a server-side manifest to initialise the SvelteKit [server](https://svelte.dev/docs/kit/types#public-types-server) with. + * Generate a server-side manifest to initialise the SvelteKit [server](https://svelte.dev/docs/kit/@sveltejs-kit#Server) with. * @param opts a relative path to the base directory of the app and optionally in which format (esm or cjs) the manifest should be generated */ generateManifest(opts: { relativePath: string; routes?: RouteDefinition[] }): string; @@ -379,12 +379,12 @@ declare module '@sveltejs/kit' { */ dir?: string; /** - * A prefix that signals that an environment variable is safe to expose to client-side code. See [`$env/static/public`](https://svelte.dev/docs/kit/modules#$env-static-public) and [`$env/dynamic/public`](https://svelte.dev/docs/kit/modules#$env-dynamic-public). Note that Vite's [`envPrefix`](https://vitejs.dev/config/shared-options.html#envprefix) must be set separately if you are using Vite's environment variable handling - though use of that feature should generally be unnecessary. + * A prefix that signals that an environment variable is safe to expose to client-side code. See [`$env/static/public`](https://svelte.dev/docs/kit/$env-static-public) and [`$env/dynamic/public`](https://svelte.dev/docs/kit/$env-dynamic-public). Note that Vite's [`envPrefix`](https://vitejs.dev/config/shared-options.html#envprefix) must be set separately if you are using Vite's environment variable handling - though use of that feature should generally be unnecessary. * @default "PUBLIC_" */ publicPrefix?: string; /** - * A prefix that signals that an environment variable is unsafe to expose to client-side code. Environment variables matching neither the public nor the private prefix will be discarded completely. See [`$env/static/private`](https://svelte.dev/docs/kit/modules#$env-static-private) and [`$env/dynamic/private`](https://svelte.dev/docs/kit/modules#$env-dynamic-private). + * A prefix that signals that an environment variable is unsafe to expose to client-side code. Environment variables matching neither the public nor the private prefix will be discarded completely. See [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private) and [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private). * @default "" * @since 1.21.0 */ @@ -487,7 +487,7 @@ declare module '@sveltejs/kit' { */ assets?: '' | `http://${string}` | `https://${string}`; /** - * A root-relative path that must start, but not end with `/` (e.g. `/base-path`), unless it is the empty string. This specifies where your app is served from and allows the app to live on a non-root path. Note that you need to prepend all your root-relative links with the base value or they will point to the root of your domain, not your `base` (this is how the browser works). You can use [`base` from `$app/paths`](https://svelte.dev/docs/kit/modules#$app-paths-base) for that: `<a href="{base}/your-page">Link</a>`. If you find yourself writing this often, it may make sense to extract this into a reusable component. + * A root-relative path that must start, but not end with `/` (e.g. `/base-path`), unless it is the empty string. This specifies where your app is served from and allows the app to live on a non-root path. Note that you need to prepend all your root-relative links with the base value or they will point to the root of your domain, not your `base` (this is how the browser works). You can use [`base` from `$app/paths`](https://svelte.dev/docs/kit/$app-paths#base) for that: `<a href="{base}/your-page">Link</a>`. If you find yourself writing this often, it may make sense to extract this into a reusable component. * @default "" */ base?: '' | `/${string}`; @@ -629,7 +629,7 @@ declare module '@sveltejs/kit' { * </script> * ``` * - * If you set `pollInterval` to a non-zero value, SvelteKit will poll for new versions in the background and set the value of the [`updated`](https://svelte.dev/docs/kit/modules#$app-stores-updated) store to `true` when it detects one. + * If you set `pollInterval` to a non-zero value, SvelteKit will poll for new versions in the background and set the value of the [`updated`](https://svelte.dev/docs/kit/$app-stores#updated) store to `true` when it detects one. */ version?: { /** @@ -712,7 +712,7 @@ declare module '@sveltejs/kit' { export type Reroute = (event: { url: URL }) => void | string; /** - * The generic form of `PageLoad` and `LayoutLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) + * The generic form of `PageLoad` and `LayoutLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#Generated-types)) * rather than using `Load` directly. */ export type Load< @@ -724,7 +724,7 @@ declare module '@sveltejs/kit' { > = (event: LoadEvent<Params, InputData, ParentData, RouteId>) => MaybePromise<OutputData>; /** - * The generic form of `PageLoadEvent` and `LayoutLoadEvent`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) + * The generic form of `PageLoadEvent` and `LayoutLoadEvent`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#Generated-types)) * rather than using `LoadEvent` directly. */ export interface LoadEvent< @@ -769,7 +769,7 @@ declare module '@sveltejs/kit' { * * Setting the same header multiple times (even in separate `load` functions) is an error — you can only set a given header once. * - * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/types#public-types-cookies) API in a server-only `load` function instead. + * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/@sveltejs-kit#Cookies) API in a server-only `load` function instead. * * `setHeaders` has no effect when a `load` function runs in the browser. */ @@ -782,7 +782,7 @@ declare module '@sveltejs/kit' { */ parent(): Promise<ParentData>; /** - * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/modules#$app-navigation-invalidate) to cause `load` to rerun. + * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/$app-navigation#invalidate) to cause `load` to rerun. * * Most of the time you won't need this, as `fetch` calls `depends` on your behalf — it's only necessary if you're using a custom API client that bypasses `fetch`. * @@ -921,7 +921,7 @@ declare module '@sveltejs/kit' { } /** - * The argument passed to [`beforeNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-beforenavigate) callbacks. + * The argument passed to [`beforeNavigate`](https://svelte.dev/docs/kit/$app-navigation#beforeNavigate) callbacks. */ export interface BeforeNavigate extends Navigation { /** @@ -931,7 +931,7 @@ declare module '@sveltejs/kit' { } /** - * The argument passed to [`onNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-onnavigate) callbacks. + * The argument passed to [`onNavigate`](https://svelte.dev/docs/kit/$app-navigation#onNavigate) callbacks. */ export interface OnNavigate extends Navigation { /** @@ -949,7 +949,7 @@ declare module '@sveltejs/kit' { } /** - * The argument passed to [`afterNavigate`](https://svelte.dev/docs/kit/modules#$app-navigation-afternavigate) callbacks. + * The argument passed to [`afterNavigate`](https://svelte.dev/docs/kit/$app-navigation#afterNavigate) callbacks. */ export interface AfterNavigate extends Omit<Navigation, 'type'> { /** @@ -1004,7 +1004,7 @@ declare module '@sveltejs/kit' { */ data: App.PageData & Record<string, any>; /** - * The page state, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/modules#$app-navigation-pushstate) and [`replaceState`](https://svelte.dev/docs/kit/modules#$app-navigation-replacestate) functions from `$app/navigation`. + * The page state, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/$app-navigation#pushState) and [`replaceState`](https://svelte.dev/docs/kit/$app-navigation#replaceState) functions from `$app/navigation`. */ state: App.PageState; /** @@ -1087,7 +1087,7 @@ declare module '@sveltejs/kit' { * * Setting the same header multiple times (even in separate `load` functions) is an error — you can only set a given header once. * - * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/types#public-types-cookies) API instead. + * You cannot add a `set-cookie` header with `setHeaders` — use the [`cookies`](https://svelte.dev/docs/kit/@sveltejs-kit#Cookies) API instead. */ setHeaders(headers: Record<string, string>): void; /** @@ -1108,7 +1108,7 @@ declare module '@sveltejs/kit' { /** * A `(event: RequestEvent) => Response` function exported from a `+server.js` file that corresponds to an HTTP verb (`GET`, `PUT`, `PATCH`, etc) and handles requests with that method. * - * It receives `Params` as the first generic argument, which you can skip by using [generated types](https://svelte.dev/docs/kit/types#generated-types) instead. + * It receives `Params` as the first generic argument, which you can skip by using [generated types](https://svelte.dev/docs/kit/types#Generated-types) instead. */ export type RequestHandler< Params extends Partial<Record<string, string>> = Partial<Record<string, string>>, @@ -1184,7 +1184,7 @@ declare module '@sveltejs/kit' { } /** - * The generic form of `PageServerLoad` and `LayoutServerLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#generated-types)) + * The generic form of `PageServerLoad` and `LayoutServerLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#Generated-types)) * rather than using `ServerLoad` directly. */ export type ServerLoad< @@ -1206,7 +1206,7 @@ declare module '@sveltejs/kit' { */ parent(): Promise<ParentData>; /** - * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/modules#$app-navigation-invalidate) to cause `load` to rerun. + * This function declares that the `load` function has a _dependency_ on one or more URLs or custom identifiers, which can subsequently be used with [`invalidate()`](https://svelte.dev/docs/kit/$app-navigation#invalidate) to cause `load` to rerun. * * Most of the time you won't need this, as `fetch` calls `depends` on your behalf — it's only necessary if you're using a custom API client that bypasses `fetch`. * @@ -1299,7 +1299,7 @@ declare module '@sveltejs/kit' { | { type: 'error'; status?: number; error: any }; /** - * The object returned by the [`error`](https://svelte.dev/docs/kit/modules#sveltejs-kit-error) function. + * The object returned by the [`error`](https://svelte.dev/docs/kit/@sveltejs-kit#error) function. */ export interface HttpError { /** The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses), in the range 400-599. */ @@ -1309,7 +1309,7 @@ declare module '@sveltejs/kit' { } /** - * The object returned by the [`redirect`](https://svelte.dev/docs/kit/modules#sveltejs-kit-redirect) function + * The object returned by the [`redirect`](https://svelte.dev/docs/kit/@sveltejs-kit#redirect) function */ export interface Redirect { /** The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages), in the range 300-308. */ @@ -2275,14 +2275,14 @@ declare namespace App { export interface Locals {} /** - * Defines the common shape of the [$page.data store](https://svelte.dev/docs/kit/modules#$app-stores-page) - that is, the data that is shared between all pages. + * Defines the common shape of the [$page.data store](https://svelte.dev/docs/kit/$app-stores#page) - that is, the data that is shared between all pages. * The `Load` and `ServerLoad` functions in `./$types` will be narrowed accordingly. * Use optional properties for data that is only present on specific pages. Do not add an index signature (`[key: string]: any`). */ export interface PageData {} /** - * The shape of the `$page.state` object, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/modules#$app-navigation-pushstate) and [`replaceState`](https://svelte.dev/docs/kit/modules#$app-navigation-replacestate) functions from `$app/navigation`. + * The shape of the `$page.state` object, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/$app-navigation#pushState) and [`replaceState`](https://svelte.dev/docs/kit/$app-navigation#replaceState) functions from `$app/navigation`. */ export interface PageState {} From d76d8c5072be1a20c70198ae0bd36773ac1510ee Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 23 Oct 2024 10:52:29 -0700 Subject: [PATCH 352/454] docs: update link hash casing --- documentation/docs/40-best-practices/10-accessibility.md | 2 +- packages/kit/src/exports/public.d.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/documentation/docs/40-best-practices/10-accessibility.md b/documentation/docs/40-best-practices/10-accessibility.md index ffa4a0852e68..a432acbe6687 100644 --- a/documentation/docs/40-best-practices/10-accessibility.md +++ b/documentation/docs/40-best-practices/10-accessibility.md @@ -29,7 +29,7 @@ This will allow screen readers and other assistive technology to identify the ne In traditional server-rendered applications, every navigation will reset focus to the top of the page. This ensures that people browsing the web with a keyboard or screen reader will start interacting with the page from the beginning. -To simulate this behavior during client-side routing, SvelteKit focuses the `<body>` element after each navigation and [enhanced form submission](form-actions#progressive-enhancement). There is one exception - if an element with the [`autofocus`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) attribute is present, SvelteKit will focus that element instead. Make sure to [consider the implications for assistive technology](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus#accessibility_considerations) when using that attribute. +To simulate this behavior during client-side routing, SvelteKit focuses the `<body>` element after each navigation and [enhanced form submission](form-actions#Progressive-enhancement). There is one exception - if an element with the [`autofocus`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) attribute is present, SvelteKit will focus that element instead. Make sure to [consider the implications for assistive technology](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus#accessibility_considerations) when using that attribute. If you want to customize SvelteKit's focus management, you can use the `afterNavigate` hook: diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index fe0c0b01a504..7a3f4c9164e4 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -724,7 +724,7 @@ export type HandleFetch = (input: { }) => MaybePromise<Response>; /** - * The [`reroute`](https://svelte.dev/docs/kit/hooks#universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. + * The [`reroute`](https://svelte.dev/docs/kit/hooks#Universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. * @since 2.3.0 */ export type Reroute = (event: { url: URL }) => void | string; @@ -760,7 +760,7 @@ export interface LoadEvent< * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) * - During hydration, the response will be read from the HTML, guaranteeing consistency and preventing an additional network request. * - * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#cookies) + * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#Cookies) */ fetch: typeof fetch; /** @@ -1032,7 +1032,7 @@ export interface Page< } /** - * The shape of a param matcher. See [matching](https://svelte.dev/docs/kit/advanced-routing#matching) for more info. + * The shape of a param matcher. See [matching](https://svelte.dev/docs/kit/advanced-routing#Matching) for more info. */ export type ParamMatcher = (param: string) => boolean; @@ -1053,7 +1053,7 @@ export interface RequestEvent< * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) * - During hydration, the response will be read from the HTML, guaranteeing consistency and preventing an additional network request. * - * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#cookies) + * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#Cookies) */ fetch: typeof fetch; /** From 4958421a91f1b4866adab81b0de7fa04e36cef7e Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 23 Oct 2024 11:04:01 -0700 Subject: [PATCH 353/454] fix: format --- packages/kit/src/exports/public.d.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 7a3f4c9164e4..dfe8a125ad63 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -79,11 +79,12 @@ export interface ActionFailure<T extends Record<string, unknown> | undefined = u [uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure } -type UnpackValidationError<T> = T extends ActionFailure<infer X> - ? X - : T extends void - ? undefined // needs to be undefined, because void will corrupt union type - : T; +type UnpackValidationError<T> = + T extends ActionFailure<infer X> + ? X + : T extends void + ? undefined // needs to be undefined, because void will corrupt union type + : T; /** * This object is passed to the `adapt` function of adapters. From f9a98168d2023fe54a8cfcacc060f1f6bbbcb1e9 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 23 Oct 2024 11:04:34 -0700 Subject: [PATCH 354/454] fix: generate types --- packages/kit/types/index.d.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index f5b8aa40d34d..a9634841c4cd 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -61,11 +61,12 @@ declare module '@sveltejs/kit' { [uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure } - type UnpackValidationError<T> = T extends ActionFailure<infer X> - ? X - : T extends void - ? undefined // needs to be undefined, because void will corrupt union type - : T; + type UnpackValidationError<T> = + T extends ActionFailure<infer X> + ? X + : T extends void + ? undefined // needs to be undefined, because void will corrupt union type + : T; /** * This object is passed to the `adapt` function of adapters. @@ -706,7 +707,7 @@ declare module '@sveltejs/kit' { }) => MaybePromise<Response>; /** - * The [`reroute`](https://svelte.dev/docs/kit/hooks#universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. + * The [`reroute`](https://svelte.dev/docs/kit/hooks#Universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. * @since 2.3.0 */ export type Reroute = (event: { url: URL }) => void | string; @@ -742,7 +743,7 @@ declare module '@sveltejs/kit' { * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) * - During hydration, the response will be read from the HTML, guaranteeing consistency and preventing an additional network request. * - * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#cookies) + * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#Cookies) */ fetch: typeof fetch; /** @@ -1014,7 +1015,7 @@ declare module '@sveltejs/kit' { } /** - * The shape of a param matcher. See [matching](https://svelte.dev/docs/kit/advanced-routing#matching) for more info. + * The shape of a param matcher. See [matching](https://svelte.dev/docs/kit/advanced-routing#Matching) for more info. */ export type ParamMatcher = (param: string) => boolean; @@ -1035,7 +1036,7 @@ declare module '@sveltejs/kit' { * - During server-side rendering, the response will be captured and inlined into the rendered HTML by hooking into the `text` and `json` methods of the `Response` object. Note that headers will _not_ be serialized, unless explicitly included via [`filterSerializedResponseHeaders`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) * - During hydration, the response will be read from the HTML, guaranteeing consistency and preventing an additional network request. * - * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#cookies) + * You can learn more about making credentialed requests with cookies [here](https://svelte.dev/docs/kit/load#Cookies) */ fetch: typeof fetch; /** From 312f130da720d76fe8b9066ab8720ecaafd65d52 Mon Sep 17 00:00:00 2001 From: songkeys <songv587@gmail.com> Date: Thu, 24 Oct 2024 05:21:56 +0800 Subject: [PATCH 355/454] docs: remove svelte 5's preview status in performance (#12864) --- documentation/docs/40-best-practices/05-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/40-best-practices/05-performance.md b/documentation/docs/40-best-practices/05-performance.md index 390236d9a2f7..2e358921dc7f 100644 --- a/documentation/docs/40-best-practices/05-performance.md +++ b/documentation/docs/40-best-practices/05-performance.md @@ -57,7 +57,7 @@ You can reduce the size of font files by [subsetting](https://web.dev/learn/perf ### Svelte version -We recommend running the latest version of Svelte. Svelte 4 is smaller and faster than Svelte 3. (The [Svelte 5 preview](https://svelte-5-preview.vercel.app/) is much smaller and faster still, but we don't recommend that you upgrade to this version until it's production ready.) +We recommend running the latest version of Svelte. Svelte 5 is smaller and faster than Svelte 4, which is smaller and faster than Svelte 3. ### Packages From 723eb8b31e6a22c82f730c30e485386c8676b746 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Thu, 24 Oct 2024 05:23:18 +0800 Subject: [PATCH 356/454] fix: explain why `json()` cannot be used in form actions (#12829) closes #12787 Adds a check to see if the data being returned is a Response object (such as with the helper method json()), then replies with a more helpful error message. --------- Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/healthy-planets-dance.md | 5 +++++ packages/kit/src/runtime/server/page/actions.js | 8 ++++++++ 2 files changed, 13 insertions(+) create mode 100644 .changeset/healthy-planets-dance.md diff --git a/.changeset/healthy-planets-dance.md b/.changeset/healthy-planets-dance.md new file mode 100644 index 000000000000..aaeda9d953b3 --- /dev/null +++ b/.changeset/healthy-planets-dance.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: better error message when a `Result` is returned from a form action diff --git a/packages/kit/src/runtime/server/page/actions.js b/packages/kit/src/runtime/server/page/actions.js index a36a8d1ecd7e..97e01e34d770 100644 --- a/packages/kit/src/runtime/server/page/actions.js +++ b/packages/kit/src/runtime/server/page/actions.js @@ -280,6 +280,14 @@ function try_deserialize(data, fn, route_id) { // If we're here, the data could not be serialized with devalue const error = /** @type {any} */ (e); + // if someone tries to use `json()` in their action + if (data instanceof Response) { + throw new Error( + `Data returned from action inside ${route_id} is not serializable. Form actions need to return plain objects or fail(). E.g. return { success: true } or return fail(400, { message: "invalid" });` + ); + } + + // if devalue could not serialize a property on the object, etc. if ('path' in error) { let message = `Data returned from action inside ${route_id} is not serializable: ${error.message}`; if (error.path !== '') message += ` (data.${error.path})`; From dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Thu, 24 Oct 2024 05:25:31 +0800 Subject: [PATCH 357/454] fix: include importer in illegal import error message (#12820) closes #12550 Uses the resolveId hook to get the importer name before including it in the error message when loading the illegal import in the load hook. --- .changeset/dry-cows-smash.md | 5 +++++ packages/kit/src/exports/vite/index.js | 18 +++++++++++++++++- packages/kit/test/apps/dev-only/test/test.js | 8 ++++---- 3 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 .changeset/dry-cows-smash.md diff --git a/.changeset/dry-cows-smash.md b/.changeset/dry-cows-smash.md new file mode 100644 index 000000000000..df3a91c5f977 --- /dev/null +++ b/.changeset/dry-cows-smash.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: include importer in illegal import error message diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 1d92fcc38ccf..01f2c98f3f91 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -352,6 +352,9 @@ async function kit({ svelte_config }) { } }; + /** @type {Map<string, string>} */ + const import_map = new Map(); + /** @type {import('vite').Plugin} */ const plugin_virtual_modules = { name: 'vite-plugin-sveltekit-virtual-modules', @@ -372,6 +375,8 @@ async function kit({ svelte_config }) { `Cannot import ${id} into service-worker code. Only the modules $service-worker and $env/static/public are available in service workers.` ); } + + import_map.set(id, importer); } // treat $env/static/[public|private] as virtual @@ -398,7 +403,18 @@ async function kit({ svelte_config }) { }) ) { const relative = normalize_id(id, normalized_lib, normalized_cwd); - throw new Error(`Cannot import ${strip_virtual_prefix(relative)} into client-side code`); + + const illegal_module = strip_virtual_prefix(relative); + + if (import_map.has(illegal_module)) { + const importer = path.relative( + cwd, + /** @type {string} */ (import_map.get(illegal_module)) + ); + throw new Error(`Cannot import ${illegal_module} into client-side code: ${importer}`); + } + + throw new Error(`Cannot import ${illegal_module} into client-side code`); } } diff --git a/packages/kit/test/apps/dev-only/test/test.js b/packages/kit/test/apps/dev-only/test/test.js index dfb8a4a99e13..00a2288b1daf 100644 --- a/packages/kit/test/apps/dev-only/test/test.js +++ b/packages/kit/test/apps/dev-only/test/test.js @@ -17,7 +17,7 @@ test.describe.serial('Illegal imports', () => { wait_for_started: false }); expect(await page.textContent('.message-body')).toBe( - 'Cannot import $env/dynamic/private into client-side code' + 'Cannot import $env/dynamic/private into client-side code: src/routes/illegal-imports/env/dynamic-private/+page.svelte' ); }); @@ -26,7 +26,7 @@ test.describe.serial('Illegal imports', () => { wait_for_started: false }); expect(await page.textContent('.message-body')).toBe( - 'Cannot import $env/dynamic/private into client-side code' + 'Cannot import $env/dynamic/private into client-side code: src/routes/illegal-imports/env/dynamic-private-dynamic-import/+page.svelte' ); }); @@ -35,7 +35,7 @@ test.describe.serial('Illegal imports', () => { wait_for_started: false }); expect(await page.textContent('.message-body')).toBe( - 'Cannot import $env/static/private into client-side code' + 'Cannot import $env/static/private into client-side code: src/routes/illegal-imports/env/static-private/+page.svelte' ); }); @@ -44,7 +44,7 @@ test.describe.serial('Illegal imports', () => { wait_for_started: false }); expect(await page.textContent('.message-body')).toBe( - 'Cannot import $env/static/private into client-side code' + 'Cannot import $env/static/private into client-side code: src/routes/illegal-imports/env/static-private-dynamic-import/+page.svelte' ); }); From 3a9b78f04786898ca93f6d4b75ab18d26bc45192 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Fri, 25 Oct 2024 16:56:38 +0800 Subject: [PATCH 358/454] fix: decode URI when previewing prerendered pages (#12874) fixes #12865 The issue only affected the preview server as we weren't decoding the URI before checking if the prerendered file existed or not --- .changeset/eleven-turkeys-jump.md | 5 +++++ packages/kit/src/exports/vite/preview/index.js | 7 +++++++ .../prerendering/\344\270\255\346\226\207/+page.svelte" | 0 .../routes/prerendering/\344\270\255\346\226\207/+page.ts" | 1 + packages/kit/test/apps/basics/test/server.test.js | 5 +++++ 5 files changed, 18 insertions(+) create mode 100644 .changeset/eleven-turkeys-jump.md create mode 100644 "packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.svelte" create mode 100644 "packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" diff --git a/.changeset/eleven-turkeys-jump.md b/.changeset/eleven-turkeys-jump.md new file mode 100644 index 000000000000..b50200cf69f0 --- /dev/null +++ b/.changeset/eleven-turkeys-jump.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: decode non-latin characters when previewing prerendered pages diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 2b4214e843f2..37e04f72f602 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -131,6 +131,13 @@ export async function preview(vite, vite_config, svelte_config) { let filename = normalizePath( join(svelte_config.kit.outDir, 'output/prerendered/pages' + pathname) ); + + try { + filename = decodeURI(filename); + } catch { + // malformed URI + } + let prerendered = is_file(filename); if (!prerendered) { diff --git "a/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.svelte" "b/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.svelte" new file mode 100644 index 000000000000..e69de29bb2d1 diff --git "a/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" "b/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" new file mode 100644 index 000000000000..189f71e2e1b3 --- /dev/null +++ "b/packages/kit/test/apps/basics/src/routes/prerendering/\344\270\255\346\226\207/+page.ts" @@ -0,0 +1 @@ +export const prerender = true; diff --git a/packages/kit/test/apps/basics/test/server.test.js b/packages/kit/test/apps/basics/test/server.test.js index 6590346e21b1..ff77c55f0204 100644 --- a/packages/kit/test/apps/basics/test/server.test.js +++ b/packages/kit/test/apps/basics/test/server.test.js @@ -630,6 +630,11 @@ test.describe('Miscellaneous', () => { expect(response.status()).toBe(200); expect(await response.text()).toBe('foo'); }); + + test('serves prerendered non-latin pages', async ({ request }) => { + const response = await request.get('/prerendering/中文'); + expect(response.status()).toBe(200); + }); }); test.describe('reroute', () => { From 4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Fri, 25 Oct 2024 18:00:14 +0800 Subject: [PATCH 359/454] fix: revert using server read for load function fetch (#12876) * revert server read for fetch * changeset * check file existance instead --------- Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> --- .changeset/eight-insects-live.md | 5 +++++ packages/kit/src/runtime/server/fetch.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/eight-insects-live.md diff --git a/.changeset/eight-insects-live.md b/.changeset/eight-insects-live.md new file mode 100644 index 000000000000..ad50fb22cd4f --- /dev/null +++ b/.changeset/eight-insects-live.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: don't try reading assets directly that aren't present diff --git a/packages/kit/src/runtime/server/fetch.js b/packages/kit/src/runtime/server/fetch.js index 7e2177d6661c..417b59c93063 100644 --- a/packages/kit/src/runtime/server/fetch.js +++ b/packages/kit/src/runtime/server/fetch.js @@ -97,7 +97,7 @@ export function create_fetch({ event, options, manifest, state, get_cookie_heade return new Response(state.read(file), { headers: type ? { 'content-type': type } : {} }); - } else if (read_implementation) { + } else if (read_implementation && file in manifest._.server_assets) { const length = manifest._.server_assets[file]; const type = manifest.mimeTypes[file.slice(file.lastIndexOf('.'))]; From bd82819e668a13bf78cf97ba1103ce9582cf01ba Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Fri, 25 Oct 2024 13:45:16 +0200 Subject: [PATCH 360/454] docs: more Svelte 5 conversion (#12871) --------- Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> Co-authored-by: Willow (GHOST) <ghostdevbusiness@gmail.com> Co-authored-by: Sri Senthil Balaji J <50240805+SymphonySimper@users.noreply.github.com> Co-authored-by: Tee Ming <chewteeming01@gmail.com> --- .../docs/20-core-concepts/10-routing.md | 45 ++++++++++++------- .../docs/20-core-concepts/20-load.md | 33 +++++++------- .../docs/20-core-concepts/30-form-actions.md | 25 +++++------ .../20-core-concepts/50-state-management.md | 18 ++++---- .../25-build-and-deploy/90-adapter-vercel.md | 4 +- .../docs/30-advanced/10-advanced-routing.md | 6 +-- .../docs/30-advanced/65-snapshots.md | 2 +- .../docs/30-advanced/67-shallow-routing.md | 2 +- documentation/docs/98-reference/26-$lib.md | 16 ++++++- packages/kit/src/exports/public.d.ts | 15 +++---- packages/kit/types/index.d.ts | 15 +++---- 11 files changed, 104 insertions(+), 77 deletions(-) diff --git a/documentation/docs/20-core-concepts/10-routing.md b/documentation/docs/20-core-concepts/10-routing.md index 0c48a2b2c2b7..66d2af54bb61 100644 --- a/documentation/docs/20-core-concepts/10-routing.md +++ b/documentation/docs/20-core-concepts/10-routing.md @@ -37,17 +37,22 @@ A `+page.svelte` component defines a page of your app. By default, pages are ren <a href="/">Home</a> ``` +Pages can receive data from `load` functions via the `data` prop. + ```svelte <!--- file: src/routes/blog/[slug]/+page.svelte ---> <script> - /** @type {import('./$types').PageData} */ - export let data; + /** @type {{ data: import('./$types').PageData }} */ + let { data } = $props(); </script> <h1>{data.title}</h1> <div>{@html data.content}</div> ``` +> [!LEGACY] In Svelte 4 +> In Svelte 4, you'd use `export let data` instead + > [!NOTE] Note that SvelteKit uses `<a>` elements to navigate between routes, rather than a framework-specific `<Link>` component. ### +page.js @@ -153,21 +158,29 @@ But in many apps, there are elements that should be visible on _every_ page, suc To create a layout that applies to every page, make a file called `src/routes/+layout.svelte`. The default layout (the one that SvelteKit uses if you don't bring your own) looks like this... -```html -<slot></slot> +```svelte +<script> + let { children } = $props(); +</script> + +{@render children()} ``` -...but we can add whatever markup, styles and behaviour we want. The only requirement is that the component includes a `<slot>` for the page content. For example, let's add a nav bar: +...but we can add whatever markup, styles and behaviour we want. The only requirement is that the component includes a `@render` tag for the page content. For example, let's add a nav bar: + +```svelte +<!---- file: src/routes/+layout.svelte ---> +<script> + let { children } = $props(); +</script> -```html -/// file: src/routes/+layout.svelte <nav> <a href="/">Home</a> <a href="/about">About</a> <a href="/settings">Settings</a> </nav> -<slot></slot> +{@render children()} ``` If we create pages for `/`, `/about` and `/settings`... @@ -196,8 +209,8 @@ We can create a layout that only applies to pages below `/settings` (while inher ```svelte <!--- file: src/routes/settings/+layout.svelte ---> <script> - /** @type {import('./$types').LayoutData} */ - export let data; + /** @type {{ data: import('./$types').LayoutData, children: import('svelte').Snippet }} */ + let { data, children } = $props(); </script> <h1>Settings</h1> @@ -208,7 +221,7 @@ We can create a layout that only applies to pages below `/settings` (while inher {/each} </div> -<slot></slot> +{@render children()} ``` You can see how `data` is populated by looking at the `+layout.js` example in the next section just below. @@ -239,8 +252,8 @@ Data returned from a layout's `load` function is also available to all its child ```svelte <!--- file: src/routes/settings/profile/+page.svelte ---> <script> - /** @type {import('./$types').PageData} */ - export let data; + /** @type {{ data: import('./$types').PageData }} */ + let { data } = $props(); console.log(data.sections); // [{ slug: 'profile', title: 'Profile' }, ...] </script> @@ -370,13 +383,13 @@ export async function fallback({ request }) { Throughout the examples above, we've been importing types from a `$types.d.ts` file. This is a file SvelteKit creates for you in a hidden directory if you're using TypeScript (or JavaScript with JSDoc type annotations) to give you type safety when working with your root files. -For example, annotating `export let data` with `PageData` (or `LayoutData`, for a `+layout.svelte` file) tells TypeScript that the type of `data` is whatever was returned from `load`: +For example, annotating `let { data } = $props()` with `PageData` (or `LayoutData`, for a `+layout.svelte` file) tells TypeScript that the type of `data` is whatever was returned from `load`: ```svelte <!--- file: src/routes/blog/[slug]/+page.svelte ---> <script> - /** @type {import('./$types').PageData} */ - export let data; + /** @type {{ data: import('./$types').PageData }} */ + let { data } = $props(); </script> ``` diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index 3e50259a3308..d6739fca0c86 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -24,14 +24,17 @@ export function load({ params }) { ```svelte <!--- file: src/routes/blog/[slug]/+page.svelte ---> <script> - /** @type {import('./$types').PageData} */ - export let data; + /** @type {{ data: import('./$types').PageData }} */ + let { data } = $props(); </script> <h1>{data.post.title}</h1> <div>{@html data.post.content}</div> ``` +> [!LEGACY] In Svelte 4 +> In Svelte 4, you'd use `export let data` instead + Thanks to the generated `$types` module, we get full type safety. A `load` function in a `+page.js` file runs both on the server and in the browser (unless combined with `export const ssr = false`, in which case it will [only run in the browser](page-options#ssr)). If your `load` function should _always_ run on the server (because it uses private environment variables, for example, or accesses a database) then it would go in a `+page.server.js` instead. @@ -85,13 +88,13 @@ export async function load() { ```svelte <!--- file: src/routes/blog/[slug]/+layout.svelte ---> <script> - /** @type {import('./$types').LayoutData} */ - export let data; + /** @type {{ data: import('./$types').LayoutData, children: Snippet }} */ + let { data, children } = $props(); </script> <main> - <!-- +page.svelte is rendered in this <slot> --> - <slot /> + <!-- +page.svelte is `@render`ed here --> + {@render children()} </main> <aside> @@ -115,13 +118,13 @@ Data returned from layout `load` functions is available to child `+layout.svelte <script> +++import { page } from '$app/stores';+++ - /** @type {import('./$types').PageData} */ - export let data; + /** @type {{ data: import('./$types').PageData }} */ + let { data } = $props(); +++ // we can access `data.posts` because it's returned from // the parent layout `load` function let index = $derived(data.posts.findIndex(post => post.slug === $page.params.slug)); - let next = $derived(data.posts[index - 1];)+++ + let next = $derived(data.posts[index + 1]);+++ </script> <h1>{data.post.title}</h1> @@ -365,8 +368,8 @@ export async function load({ parent }) { ```svelte <!--- file: src/routes/abc/+page.svelte ---> <script> - /** @type {import('./$types').PageData} */ - export let data; + /** @type {{ data: import('./$types').PageData }} */ + let { data } = $props(); </script> <!-- renders `1 + 2 = 3` --> @@ -504,8 +507,8 @@ This is useful for creating skeleton loading states, for example: ```svelte <!--- file: src/routes/blog/[slug]/+page.svelte ---> <script> - /** @type {import('./$types').PageData} */ - export let data; + /** @type {{ data: import('./$types').PageData }} */ + let { data } = $props(); </script> <h1>{data.post.title}</h1> @@ -645,8 +648,8 @@ export async function load({ fetch, depends }) { <script> import { invalidate, invalidateAll } from '$app/navigation'; - /** @type {import('./$types').PageData} */ - export let data; + /** @type {{ data: import('./$types').PageData }} */ + let { data } = $props(); function rerunLoadFunction() { // any of these will cause the `load` function to rerun diff --git a/documentation/docs/20-core-concepts/30-form-actions.md b/documentation/docs/20-core-concepts/30-form-actions.md index deb4ef73abc0..5d8c439f86b6 100644 --- a/documentation/docs/20-core-concepts/30-form-actions.md +++ b/documentation/docs/20-core-concepts/30-form-actions.md @@ -140,11 +140,8 @@ export const actions = { ```svelte <!--- file: src/routes/login/+page.svelte ---> <script> - /** @type {import('./$types').PageData} */ - export let data; - - /** @type {import('./$types').ActionData} */ - export let form; + /** @type {{ data: import('./$types').PageData, form: import('./$types').ActionData }} */ + let { data, form } = $props(); </script> {#if form?.success} @@ -154,6 +151,9 @@ export const actions = { {/if} ``` +> [!LEGACY] In Svelte 4 +> In Svelte 4, you'd use `export let data` and `export let form` instead to declare properties + ### Validation errors If the request couldn't be processed because of invalid data, you can return validation errors — along with the previously submitted form values — back to the user so that they can try again. The `fail` function lets you return an HTTP status code (typically 400 or 422, in the case of validation errors) along with the data. The status code is available through `$page.status` and the data through `form`: @@ -339,8 +339,8 @@ The easiest way to progressively enhance a form is to add the `use:enhance` acti <script> +++import { enhance } from '$app/forms';+++ - /** @type {import('./$types').ActionData} */ - export let form; + /** @type {{ form: import('./$types').ActionData }} */ + let { form } = $props(); </script> <form method="POST" +++use:enhance+++> @@ -390,8 +390,8 @@ If you return a callback, you may need to reproduce part of the default `use:enh <script> import { enhance, +++applyAction+++ } from '$app/forms'; - /** @type {import('./$types').ActionData} */ - export let form; + /** @type {{ form: import('./$types').ActionData }} */ + let { form } = $props(); </script> <form @@ -427,11 +427,8 @@ We can also implement progressive enhancement ourselves, without `use:enhance`, import { invalidateAll, goto } from '$app/navigation'; import { applyAction, deserialize } from '$app/forms'; - /** @type {import('./$types').ActionData} */ - export let form; - - /** @type {any} */ - let error; + /** @type {{ form: import('./$types').ActionData }} */ + let { form } = $props(); /** @param {{ currentTarget: EventTarget & HTMLFormElement}} event */ async function handleSubmit(event) { diff --git a/documentation/docs/20-core-concepts/50-state-management.md b/documentation/docs/20-core-concepts/50-state-management.md index f993f59ca6f8..be74d59535ef 100644 --- a/documentation/docs/20-core-concepts/50-state-management.md +++ b/documentation/docs/20-core-concepts/50-state-management.md @@ -90,12 +90,14 @@ You might wonder how we're able to use `$page.data` and other [app stores]($app- import { setContext } from 'svelte'; import { writable } from 'svelte/store'; - /** @type {import('./$types').LayoutData} */ - export let data; + /** @type {{ data: import('./$types').LayoutData }} */ + let { data } = $props(); // Create a store and update it when necessary... - const user = writable(); - $: user.set(data.user); + const user = writable(data.user); + $effect.pre(() => { + user.set(data.user); + }); // ...and add it to the context for child components to access setContext('user', user); @@ -125,8 +127,8 @@ When you navigate around your application, SvelteKit reuses existing layout and ```svelte <!--- file: src/routes/blog/[slug]/+page.svelte ---> <script> - /** @type {import('./$types').PageData} */ - export let data; + /** @type {{ data: import('./$types').PageData }} */ + let { data } = $props(); // THIS CODE IS BUGGY! const wordCount = data.content.split(' ').length; @@ -148,8 +150,8 @@ Instead, we need to make the value [_reactive_](/tutorial/svelte/state): ```svelte /// file: src/routes/blog/[slug]/+page.svelte <script> - /** @type {import('./$types').PageData} */ - export let data; + /** @type {{ data: import('./$types').PageData }} */ + let { data } = $props(); +++ let wordCount = $state(data.content.split(' ').length); let estimatedReadingTime = $derived(wordCount / 250);+++ diff --git a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md index 226d8cb6cae1..57867ce7c986 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -140,8 +140,8 @@ export function load() { ```svelte <!--- file: +layout.svelte ---> <script> - /** @type {import('./$types').LayoutServerData} */ - export let data; + /** @type {{ data: import('./$types').LayoutServerData }} */ + let { data } = $props(); </script> <p>This staging environment was deployed from {data.deploymentGitBranch}.</p> diff --git a/documentation/docs/30-advanced/10-advanced-routing.md b/documentation/docs/30-advanced/10-advanced-routing.md index 26b1be2143e8..06122648f170 100644 --- a/documentation/docs/30-advanced/10-advanced-routing.md +++ b/documentation/docs/30-advanced/10-advanced-routing.md @@ -193,7 +193,7 @@ You can also put a `+page` directly inside a `(group)`, for example if `/` shoul ### Breaking out of layouts -The root layout applies to every page of your app — if omitted, it defaults to `<slot />`. If you want some pages to have a different layout hierarchy than the rest, then you can put your entire app inside one or more groups _except_ the routes that should not inherit the common layouts. +The root layout applies to every page of your app — if omitted, it defaults to `{@render children()}`. If you want some pages to have a different layout hierarchy than the rest, then you can put your entire app inside one or more groups _except_ the routes that should not inherit the common layouts. In the example above, the `/admin` route does not inherit either the `(app)` or `(marketing)` layouts. @@ -260,11 +260,11 @@ Not all use cases are suited for layout grouping, nor should you feel compelled <!--- file: src/routes/nested/route/+layout@.svelte ---> <script> import ReusableLayout from '$lib/ReusableLayout.svelte'; - export let data; + let { data, children } = $props(); </script> <ReusableLayout {data}> - <slot /> + {@render children()} </ReusableLayout> ``` diff --git a/documentation/docs/30-advanced/65-snapshots.md b/documentation/docs/30-advanced/65-snapshots.md index 5a55330f0d38..cc7477f0fe66 100644 --- a/documentation/docs/30-advanced/65-snapshots.md +++ b/documentation/docs/30-advanced/65-snapshots.md @@ -11,7 +11,7 @@ To do this, export a `snapshot` object with `capture` and `restore` methods from ```svelte <!--- file: +page.svelte ---> <script> - let comment = ''; + let comment = $state(''); /** @type {import('./$types').Snapshot<string>} */ export const snapshot = { diff --git a/documentation/docs/30-advanced/67-shallow-routing.md b/documentation/docs/30-advanced/67-shallow-routing.md index f4f871cf8e8d..f10edd0ad5ef 100644 --- a/documentation/docs/30-advanced/67-shallow-routing.md +++ b/documentation/docs/30-advanced/67-shallow-routing.md @@ -51,7 +51,7 @@ For this to work, you need to load the data that the `+page.svelte` expects. A c import Modal from './Modal.svelte'; import PhotoPage from './[id]/+page.svelte'; - export let data; + let { data } = $props(); </script> {#each data.thumbnails as thumbnail} diff --git a/documentation/docs/98-reference/26-$lib.md b/documentation/docs/98-reference/26-$lib.md index 2feb1a4402fc..d9262a29542c 100644 --- a/documentation/docs/98-reference/26-$lib.md +++ b/documentation/docs/98-reference/26-$lib.md @@ -2,4 +2,18 @@ title: $lib --- -TODO +SvelteKit automatically makes files under `src/lib` available using the `$lib` import alias. You can change which directory this alias points to in your [config file](configuration#files). + +```svelte +<!--- file: src/lib/Component.svelte ---> +A reusable component +``` + +```svelte +<!--- file: src/routes/+page.svelte ---> +<script> + import Component from '$lib/Component.svelte'; +</script> + +<Component /> +``` diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index dfe8a125ad63..4957dc67f439 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -79,12 +79,11 @@ export interface ActionFailure<T extends Record<string, unknown> | undefined = u [uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure } -type UnpackValidationError<T> = - T extends ActionFailure<infer X> - ? X - : T extends void - ? undefined // needs to be undefined, because void will corrupt union type - : T; +type UnpackValidationError<T> = T extends ActionFailure<infer X> + ? X + : T extends void + ? undefined // needs to be undefined, because void will corrupt union type + : T; /** * This object is passed to the `adapt` function of adapters. @@ -826,7 +825,7 @@ export interface LoadEvent< * <script> * import { invalidate } from '$app/navigation'; * - * export let data; + * let { data } = $props(); * * const increase = async () => { * await invalidate('increase:count'); @@ -1250,7 +1249,7 @@ export interface ServerLoadEvent< * <script> * import { invalidate } from '$app/navigation'; * - * export let data; + * let { data } = $props(); * * const increase = async () => { * await invalidate('increase:count'); diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index a9634841c4cd..feb9eca1714a 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -61,12 +61,11 @@ declare module '@sveltejs/kit' { [uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure } - type UnpackValidationError<T> = - T extends ActionFailure<infer X> - ? X - : T extends void - ? undefined // needs to be undefined, because void will corrupt union type - : T; + type UnpackValidationError<T> = T extends ActionFailure<infer X> + ? X + : T extends void + ? undefined // needs to be undefined, because void will corrupt union type + : T; /** * This object is passed to the `adapt` function of adapters. @@ -808,7 +807,7 @@ declare module '@sveltejs/kit' { * <script> * import { invalidate } from '$app/navigation'; * - * export let data; + * let { data } = $props(); * * const increase = async () => { * await invalidate('increase:count'); @@ -1232,7 +1231,7 @@ declare module '@sveltejs/kit' { * <script> * import { invalidate } from '$app/navigation'; * - * export let data; + * let { data } = $props(); * * const increase = async () => { * await invalidate('increase:count'); From 1d7128a7ba6d43a7c3bf19b73babb5733af3201a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 14:11:59 +0200 Subject: [PATCH 361/454] Version Packages (#12858) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/dry-cows-smash.md | 5 ----- .changeset/eight-insects-live.md | 5 ----- .changeset/eleven-turkeys-jump.md | 5 ----- .changeset/healthy-planets-dance.md | 5 ----- .changeset/strange-plums-drop.md | 16 ---------------- packages/adapter-auto/CHANGELOG.md | 9 +++++++++ packages/adapter-auto/package.json | 2 +- .../adapter-cloudflare-workers/CHANGELOG.md | 9 +++++++++ .../adapter-cloudflare-workers/package.json | 2 +- packages/adapter-cloudflare/CHANGELOG.md | 9 +++++++++ packages/adapter-cloudflare/package.json | 2 +- packages/adapter-netlify/CHANGELOG.md | 9 +++++++++ packages/adapter-netlify/package.json | 2 +- packages/adapter-node/CHANGELOG.md | 9 +++++++++ packages/adapter-node/package.json | 2 +- packages/adapter-static/CHANGELOG.md | 9 +++++++++ packages/adapter-static/package.json | 2 +- packages/adapter-vercel/CHANGELOG.md | 9 +++++++++ packages/adapter-vercel/package.json | 2 +- packages/amp/CHANGELOG.md | 9 +++++++++ packages/amp/package.json | 2 +- packages/enhanced-img/CHANGELOG.md | 6 ++++++ packages/enhanced-img/package.json | 2 +- packages/kit/CHANGELOG.md | 18 ++++++++++++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- packages/migrate/CHANGELOG.md | 6 ++++++ packages/migrate/package.json | 2 +- packages/package/CHANGELOG.md | 6 ++++++ packages/package/package.json | 2 +- 30 files changed, 121 insertions(+), 49 deletions(-) delete mode 100644 .changeset/dry-cows-smash.md delete mode 100644 .changeset/eight-insects-live.md delete mode 100644 .changeset/eleven-turkeys-jump.md delete mode 100644 .changeset/healthy-planets-dance.md delete mode 100644 .changeset/strange-plums-drop.md diff --git a/.changeset/dry-cows-smash.md b/.changeset/dry-cows-smash.md deleted file mode 100644 index df3a91c5f977..000000000000 --- a/.changeset/dry-cows-smash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: include importer in illegal import error message diff --git a/.changeset/eight-insects-live.md b/.changeset/eight-insects-live.md deleted file mode 100644 index ad50fb22cd4f..000000000000 --- a/.changeset/eight-insects-live.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: don't try reading assets directly that aren't present diff --git a/.changeset/eleven-turkeys-jump.md b/.changeset/eleven-turkeys-jump.md deleted file mode 100644 index b50200cf69f0..000000000000 --- a/.changeset/eleven-turkeys-jump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: decode non-latin characters when previewing prerendered pages diff --git a/.changeset/healthy-planets-dance.md b/.changeset/healthy-planets-dance.md deleted file mode 100644 index aaeda9d953b3..000000000000 --- a/.changeset/healthy-planets-dance.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: better error message when a `Result` is returned from a form action diff --git a/.changeset/strange-plums-drop.md b/.changeset/strange-plums-drop.md deleted file mode 100644 index dc8d4d160a14..000000000000 --- a/.changeset/strange-plums-drop.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@sveltejs/adapter-cloudflare-workers': patch -'@sveltejs/adapter-cloudflare': patch -'@sveltejs/adapter-netlify': patch -'@sveltejs/adapter-static': patch -'@sveltejs/adapter-vercel': patch -'@sveltejs/adapter-auto': patch -'@sveltejs/adapter-node': patch -'@sveltejs/enhanced-img': patch -'svelte-migrate': patch -'@sveltejs/package': patch -'@sveltejs/amp': patch -'@sveltejs/kit': patch ---- - -docs: update URLs for new svelte.dev site diff --git a/packages/adapter-auto/CHANGELOG.md b/packages/adapter-auto/CHANGELOG.md index 862cfeb6fa54..409a5e47e8f3 100644 --- a/packages/adapter-auto/CHANGELOG.md +++ b/packages/adapter-auto/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-auto +## 3.3.1 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + +- Updated dependencies [[`dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46`](https://github.com/sveltejs/kit/commit/dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46), [`4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d`](https://github.com/sveltejs/kit/commit/4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d), [`3a9b78f04786898ca93f6d4b75ab18d26bc45192`](https://github.com/sveltejs/kit/commit/3a9b78f04786898ca93f6d4b75ab18d26bc45192), [`723eb8b31e6a22c82f730c30e485386c8676b746`](https://github.com/sveltejs/kit/commit/723eb8b31e6a22c82f730c30e485386c8676b746), [`8ec471c875345b751344e67580ff1b772ef2735b`](https://github.com/sveltejs/kit/commit/8ec471c875345b751344e67580ff1b772ef2735b)]: + - @sveltejs/kit@2.7.3 + ## 3.3.0 ### Minor Changes diff --git a/packages/adapter-auto/package.json b/packages/adapter-auto/package.json index b80c17e10e22..2d4016ac220d 100644 --- a/packages/adapter-auto/package.json +++ b/packages/adapter-auto/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-auto", - "version": "3.3.0", + "version": "3.3.1", "description": "Automatically chooses the SvelteKit adapter for your current environment, if possible.", "keywords": [ "adapter", diff --git a/packages/adapter-cloudflare-workers/CHANGELOG.md b/packages/adapter-cloudflare-workers/CHANGELOG.md index dcd3011db091..02072ab969d8 100644 --- a/packages/adapter-cloudflare-workers/CHANGELOG.md +++ b/packages/adapter-cloudflare-workers/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-cloudflare-workers +## 2.5.6 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + +- Updated dependencies [[`dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46`](https://github.com/sveltejs/kit/commit/dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46), [`4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d`](https://github.com/sveltejs/kit/commit/4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d), [`3a9b78f04786898ca93f6d4b75ab18d26bc45192`](https://github.com/sveltejs/kit/commit/3a9b78f04786898ca93f6d4b75ab18d26bc45192), [`723eb8b31e6a22c82f730c30e485386c8676b746`](https://github.com/sveltejs/kit/commit/723eb8b31e6a22c82f730c30e485386c8676b746), [`8ec471c875345b751344e67580ff1b772ef2735b`](https://github.com/sveltejs/kit/commit/8ec471c875345b751344e67580ff1b772ef2735b)]: + - @sveltejs/kit@2.7.3 + ## 2.5.5 ### Patch Changes diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index d6801a02569b..3e82abd677d4 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare-workers", - "version": "2.5.5", + "version": "2.5.6", "description": "SvelteKit adapter that creates a Cloudflare Workers site using a function for dynamic server rendering", "keywords": [ "adapter", diff --git a/packages/adapter-cloudflare/CHANGELOG.md b/packages/adapter-cloudflare/CHANGELOG.md index 315e5277e135..16a1b821899f 100644 --- a/packages/adapter-cloudflare/CHANGELOG.md +++ b/packages/adapter-cloudflare/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-cloudflare +## 4.7.4 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + +- Updated dependencies [[`dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46`](https://github.com/sveltejs/kit/commit/dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46), [`4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d`](https://github.com/sveltejs/kit/commit/4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d), [`3a9b78f04786898ca93f6d4b75ab18d26bc45192`](https://github.com/sveltejs/kit/commit/3a9b78f04786898ca93f6d4b75ab18d26bc45192), [`723eb8b31e6a22c82f730c30e485386c8676b746`](https://github.com/sveltejs/kit/commit/723eb8b31e6a22c82f730c30e485386c8676b746), [`8ec471c875345b751344e67580ff1b772ef2735b`](https://github.com/sveltejs/kit/commit/8ec471c875345b751344e67580ff1b772ef2735b)]: + - @sveltejs/kit@2.7.3 + ## 4.7.3 ### Patch Changes diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 9d294a4ed177..fb99d2887e70 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare", - "version": "4.7.3", + "version": "4.7.4", "description": "Adapter for building SvelteKit applications on Cloudflare Pages with Workers integration", "keywords": [ "adapter", diff --git a/packages/adapter-netlify/CHANGELOG.md b/packages/adapter-netlify/CHANGELOG.md index ec22eac3c998..27ad75b65eaa 100644 --- a/packages/adapter-netlify/CHANGELOG.md +++ b/packages/adapter-netlify/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-netlify +## 4.3.6 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + +- Updated dependencies [[`dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46`](https://github.com/sveltejs/kit/commit/dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46), [`4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d`](https://github.com/sveltejs/kit/commit/4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d), [`3a9b78f04786898ca93f6d4b75ab18d26bc45192`](https://github.com/sveltejs/kit/commit/3a9b78f04786898ca93f6d4b75ab18d26bc45192), [`723eb8b31e6a22c82f730c30e485386c8676b746`](https://github.com/sveltejs/kit/commit/723eb8b31e6a22c82f730c30e485386c8676b746), [`8ec471c875345b751344e67580ff1b772ef2735b`](https://github.com/sveltejs/kit/commit/8ec471c875345b751344e67580ff1b772ef2735b)]: + - @sveltejs/kit@2.7.3 + ## 4.3.5 ### Patch Changes diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 9c7631d878a8..1b92f575e208 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-netlify", - "version": "4.3.5", + "version": "4.3.6", "description": "A SvelteKit adapter that creates a Netlify app", "keywords": [ "adapter", diff --git a/packages/adapter-node/CHANGELOG.md b/packages/adapter-node/CHANGELOG.md index 25e016dfb3fd..443a618cc757 100644 --- a/packages/adapter-node/CHANGELOG.md +++ b/packages/adapter-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-node +## 5.2.9 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + +- Updated dependencies [[`dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46`](https://github.com/sveltejs/kit/commit/dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46), [`4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d`](https://github.com/sveltejs/kit/commit/4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d), [`3a9b78f04786898ca93f6d4b75ab18d26bc45192`](https://github.com/sveltejs/kit/commit/3a9b78f04786898ca93f6d4b75ab18d26bc45192), [`723eb8b31e6a22c82f730c30e485386c8676b746`](https://github.com/sveltejs/kit/commit/723eb8b31e6a22c82f730c30e485386c8676b746), [`8ec471c875345b751344e67580ff1b772ef2735b`](https://github.com/sveltejs/kit/commit/8ec471c875345b751344e67580ff1b772ef2735b)]: + - @sveltejs/kit@2.7.3 + ## 5.2.8 ### Patch Changes diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index 3da7dc6ff361..a7a0357b352b 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-node", - "version": "5.2.8", + "version": "5.2.9", "description": "Adapter for SvelteKit apps that generates a standalone Node server", "keywords": [ "adapter", diff --git a/packages/adapter-static/CHANGELOG.md b/packages/adapter-static/CHANGELOG.md index 4b1d33c93400..2b100095d0a7 100644 --- a/packages/adapter-static/CHANGELOG.md +++ b/packages/adapter-static/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-static +## 3.0.6 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + +- Updated dependencies [[`dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46`](https://github.com/sveltejs/kit/commit/dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46), [`4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d`](https://github.com/sveltejs/kit/commit/4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d), [`3a9b78f04786898ca93f6d4b75ab18d26bc45192`](https://github.com/sveltejs/kit/commit/3a9b78f04786898ca93f6d4b75ab18d26bc45192), [`723eb8b31e6a22c82f730c30e485386c8676b746`](https://github.com/sveltejs/kit/commit/723eb8b31e6a22c82f730c30e485386c8676b746), [`8ec471c875345b751344e67580ff1b772ef2735b`](https://github.com/sveltejs/kit/commit/8ec471c875345b751344e67580ff1b772ef2735b)]: + - @sveltejs/kit@2.7.3 + ## 3.0.5 ### Patch Changes diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index f28a87ccad5c..82d2cad95370 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-static", - "version": "3.0.5", + "version": "3.0.6", "description": "Adapter for SvelteKit apps that prerenders your entire site as a collection of static files", "keywords": [ "adapter", diff --git a/packages/adapter-vercel/CHANGELOG.md b/packages/adapter-vercel/CHANGELOG.md index 7db35dc50842..ba6d4a937ab8 100644 --- a/packages/adapter-vercel/CHANGELOG.md +++ b/packages/adapter-vercel/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-vercel +## 5.4.6 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + +- Updated dependencies [[`dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46`](https://github.com/sveltejs/kit/commit/dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46), [`4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d`](https://github.com/sveltejs/kit/commit/4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d), [`3a9b78f04786898ca93f6d4b75ab18d26bc45192`](https://github.com/sveltejs/kit/commit/3a9b78f04786898ca93f6d4b75ab18d26bc45192), [`723eb8b31e6a22c82f730c30e485386c8676b746`](https://github.com/sveltejs/kit/commit/723eb8b31e6a22c82f730c30e485386c8676b746), [`8ec471c875345b751344e67580ff1b772ef2735b`](https://github.com/sveltejs/kit/commit/8ec471c875345b751344e67580ff1b772ef2735b)]: + - @sveltejs/kit@2.7.3 + ## 5.4.5 ### Patch Changes diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 85b9e203a01e..096e23b80779 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-vercel", - "version": "5.4.5", + "version": "5.4.6", "description": "A SvelteKit adapter that creates a Vercel app", "keywords": [ "adapter", diff --git a/packages/amp/CHANGELOG.md b/packages/amp/CHANGELOG.md index 11f4e0563723..b7e808115ec2 100644 --- a/packages/amp/CHANGELOG.md +++ b/packages/amp/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/amp +## 1.1.4 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + +- Updated dependencies [[`dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46`](https://github.com/sveltejs/kit/commit/dcbe4222a194c5f90cfc0fc020cf065f7a4e4c46), [`4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d`](https://github.com/sveltejs/kit/commit/4cdbf76fbbf0c0ce7f574ef69c8daddcf954d39d), [`3a9b78f04786898ca93f6d4b75ab18d26bc45192`](https://github.com/sveltejs/kit/commit/3a9b78f04786898ca93f6d4b75ab18d26bc45192), [`723eb8b31e6a22c82f730c30e485386c8676b746`](https://github.com/sveltejs/kit/commit/723eb8b31e6a22c82f730c30e485386c8676b746), [`8ec471c875345b751344e67580ff1b772ef2735b`](https://github.com/sveltejs/kit/commit/8ec471c875345b751344e67580ff1b772ef2735b)]: + - @sveltejs/kit@2.7.3 + ## 1.1.3 ### Patch Changes diff --git a/packages/amp/package.json b/packages/amp/package.json index 155251a05d1f..972f6a56e4b8 100644 --- a/packages/amp/package.json +++ b/packages/amp/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/amp", - "version": "1.1.3", + "version": "1.1.4", "description": "AMP integration for SvelteKit", "keywords": [ "accelerated mobile pages", diff --git a/packages/enhanced-img/CHANGELOG.md b/packages/enhanced-img/CHANGELOG.md index 3ec5d40d6465..435640914ee0 100644 --- a/packages/enhanced-img/CHANGELOG.md +++ b/packages/enhanced-img/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/enhanced-img +## 0.3.10 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + ## 0.3.9 ### Patch Changes diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 2225e4cd0741..8f922e5d8be5 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/enhanced-img", - "version": "0.3.9", + "version": "0.3.10", "description": "Image optimization for your Svelte apps", "repository": { "type": "git", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 3e8cc810c68a..8c9e9cc15bbe 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,23 @@ # @sveltejs/kit +## 2.7.3 +### Patch Changes + + +- fix: include importer in illegal import error message ([#12820](https://github.com/sveltejs/kit/pull/12820)) + + +- fix: don't try reading assets directly that aren't present ([#12876](https://github.com/sveltejs/kit/pull/12876)) + + +- fix: decode non-latin characters when previewing prerendered pages ([#12874](https://github.com/sveltejs/kit/pull/12874)) + + +- fix: better error message when a `Result` is returned from a form action ([#12829](https://github.com/sveltejs/kit/pull/12829)) + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + ## 2.7.2 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index c77a8c1e4e17..dbcd64fa916b 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.7.2", + "version": "2.7.3", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 089f46027d20..678b39e92642 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.7.2'; +export const VERSION = '2.7.3'; diff --git a/packages/migrate/CHANGELOG.md b/packages/migrate/CHANGELOG.md index 6e0af16e45d5..0b9c6daa6480 100644 --- a/packages/migrate/CHANGELOG.md +++ b/packages/migrate/CHANGELOG.md @@ -1,5 +1,11 @@ # svelte-migrate +## 1.6.6 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + ## 1.6.5 ### Patch Changes diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 4e7580e85b6e..50e528e8f6e8 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -1,6 +1,6 @@ { "name": "svelte-migrate", - "version": "1.6.5", + "version": "1.6.6", "description": "A CLI for migrating Svelte(Kit) codebases", "keywords": [ "migration", diff --git a/packages/package/CHANGELOG.md b/packages/package/CHANGELOG.md index 150413827f13..bc660c081a19 100644 --- a/packages/package/CHANGELOG.md +++ b/packages/package/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/package +## 2.3.7 +### Patch Changes + + +- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) + ## 2.3.6 ### Patch Changes diff --git a/packages/package/package.json b/packages/package/package.json index a4e35f3e206e..d5369848ccf5 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/package", - "version": "2.3.6", + "version": "2.3.7", "description": "The fastest way to build Svelte packages", "repository": { "type": "git", From 7b56e375f34f901f258a6f2388045982f62addf8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 10:07:44 -0700 Subject: [PATCH 362/454] chore(deps): update pnpm to v9.12.2 (#12824) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9fe848d2e078..c5528ad6b325 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier-plugin-svelte": "^3.1.2", "typescript-eslint": "^8.0.0" }, - "packageManager": "pnpm@9.12.1", + "packageManager": "pnpm@9.12.2", "engines": { "pnpm": "^9.0.0" } From f13aef7fe740200677cb1f19b6a84bcdb69a46a5 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:37:02 -0700 Subject: [PATCH 363/454] docs: auth guide (#12810) Co-authored-by: Tee Ming <chewteeming01@gmail.com> --- documentation/docs/30-advanced/20-hooks.md | 6 ++++- .../docs/40-best-practices/03-auth.md | 23 +++++++++++++++++++ packages/kit/src/exports/public.d.ts | 2 +- packages/kit/src/types/ambient.d.ts | 2 +- packages/kit/types/index.d.ts | 4 ++-- 5 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 documentation/docs/40-best-practices/03-auth.md diff --git a/documentation/docs/30-advanced/20-hooks.md b/documentation/docs/30-advanced/20-hooks.md index 74d4c815d835..6decc1cbf463 100644 --- a/documentation/docs/30-advanced/20-hooks.md +++ b/documentation/docs/30-advanced/20-hooks.md @@ -37,7 +37,11 @@ export async function handle({ event, resolve }) { > [!NOTE] Requests for static assets — which includes pages that were already prerendered — are _not_ handled by SvelteKit. -If unimplemented, defaults to `({ event, resolve }) => resolve(event)`. To add custom data to the request, which is passed to handlers in `+server.js` and server `load` functions, populate the `event.locals` object, as shown below. +If unimplemented, defaults to `({ event, resolve }) => resolve(event)`. + +### locals + +To add custom data to the request, which is passed to handlers in `+server.js` and server `load` functions, populate the `event.locals` object, as shown below. ```js /// file: src/hooks.server.js diff --git a/documentation/docs/40-best-practices/03-auth.md b/documentation/docs/40-best-practices/03-auth.md new file mode 100644 index 000000000000..e9ca3384780c --- /dev/null +++ b/documentation/docs/40-best-practices/03-auth.md @@ -0,0 +1,23 @@ +--- +title: Auth +--- + +Auth refers to authentication and authorization, which are common needs when building a web application. Authentication means verifying that the user is who they say they are based on their provided credentials. Authorization means determining which actions they are allowed to take. + +## Sessions vs tokens + +After the user has provided their credentials such as a username and password, we want to allow them to use the application without needing to provide their credentials again for future requests. Users are commonly authenticated on subsequent requests with either a session identifier or signed token such as a JSON Web Token (JWT). + +Session IDs are most commonly stored in a database. They can be immediately revoked, but require a database query to be made on each request. + +In contrast, JWT generally are not checked against a datastore, which means they cannot be immediately revoked. The advantage of this method is improved latency and reduced load on your datastore. + +## Integration points + +Auth [cookies](types#public-types-cookies) can be checked inside [server hooks](hooks#server-hooks). If a user is found matching the provided credentials, the user information can be stored in [`locals`](hooks#server-hooks-locals). + +## Guides + +[Lucia](https://lucia-next.pages.dev/) is a reference for session-based web app auth. It contains example code snippets and projects for implementing session-based auth within SvelteKit and other JS projects. You can add code which follows the Lucia guide to your project with `npx sv create` when creating a new project or `npx sv add lucia` for an existing project. + +An auth system is tightly coupled to a web framework because most of the code lies in validating user input, handling errors, and directing users to the appropriate next page. As a result, many of the generic JS auth libraries include one or more web frameworks within them. For this reason, many users will find it preferrable to follow a SvelteKit-specific guide such as the examples found in [Lucia](https://lucia-next.pages.dev/) rather than having multiple web frameworks inside their project. diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 4957dc67f439..77be062a3163 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -1061,7 +1061,7 @@ export interface RequestEvent< */ getClientAddress(): string; /** - * Contains custom data that was added to the request within the [`handle hook`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle). + * Contains custom data that was added to the request within the [`server handle hook`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle). */ locals: App.Locals; /** diff --git a/packages/kit/src/types/ambient.d.ts b/packages/kit/src/types/ambient.d.ts index bc936d57b31c..16ef13016deb 100644 --- a/packages/kit/src/types/ambient.d.ts +++ b/packages/kit/src/types/ambient.d.ts @@ -29,7 +29,7 @@ declare namespace App { } /** - * The interface that defines `event.locals`, which can be accessed in [hooks](https://svelte.dev/docs/kit/hooks) (`handle`, and `handleError`), server-only `load` functions, and `+server.js` files. + * The interface that defines `event.locals`, which can be accessed in server [hooks](https://svelte.dev/docs/kit/hooks) (`handle`, and `handleError`), server-only `load` functions, and `+server.js` files. */ export interface Locals {} diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index feb9eca1714a..491de54d9698 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -1043,7 +1043,7 @@ declare module '@sveltejs/kit' { */ getClientAddress(): string; /** - * Contains custom data that was added to the request within the [`handle hook`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle). + * Contains custom data that was added to the request within the [`server handle hook`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle). */ locals: App.Locals; /** @@ -2270,7 +2270,7 @@ declare namespace App { } /** - * The interface that defines `event.locals`, which can be accessed in [hooks](https://svelte.dev/docs/kit/hooks) (`handle`, and `handleError`), server-only `load` functions, and `+server.js` files. + * The interface that defines `event.locals`, which can be accessed in server [hooks](https://svelte.dev/docs/kit/hooks) (`handle`, and `handleError`), server-only `load` functions, and `+server.js` files. */ export interface Locals {} From bcb30cd2692f402c603fb7d367ee3eef05aec8d3 Mon Sep 17 00:00:00 2001 From: Hyunbin Seo <47051820+hyunbinseo@users.noreply.github.com> Date: Mon, 28 Oct 2024 11:26:53 +0900 Subject: [PATCH 364/454] docs: elaborate on duplicate setHeaders calls (#12886) --- documentation/docs/20-core-concepts/20-load.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index d6739fca0c86..9de2b83eade8 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -333,7 +333,7 @@ export async function load({ fetch, setHeaders }) { } ``` -Setting the same header multiple times (even in separate `load` functions) is an error — you can only set a given header once. You cannot add a `set-cookie` header with `setHeaders` — use `cookies.set(name, value, options)` instead. +Setting the same header multiple times (even in separate `load` functions) is an error. You can only set a given header once using the `setHeaders` function. You cannot add a `set-cookie` header with `setHeaders` — use `cookies.set(name, value, options)` instead. ## Using parent data From 5006435ef30b4057a43e4e143e3422879035629d Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Mon, 28 Oct 2024 17:33:10 +0800 Subject: [PATCH 365/454] fix: defer when clicking hash links with data-sveltekit-reload (#12866) fixes #12582 fixes #12188 This PR ensures that clicking on a hash link with the reload option avoids the usual behaviour of thinking the page will reload and instead allows it to be handled as if the option wasn't enabled (hash links on the same page never reload the page). It also fixes a behaviour where an element doesn't get focused when clicking on the hash link more than once. --------- Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> --- .changeset/chilled-cats-hang.md | 5 ++++ .changeset/strange-buckets-sell.md | 5 ++++ packages/kit/src/runtime/client/client.js | 14 +++++++---- .../data-sveltekit/reload/hash/+page.svelte | 3 +++ .../reload/hash/new/+page.svelte | 1 + .../routes/routing/hashes/focus/+page.svelte | 2 ++ .../basics/test/cross-platform/client.test.js | 24 +++++++++++++++++++ 7 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 .changeset/chilled-cats-hang.md create mode 100644 .changeset/strange-buckets-sell.md create mode 100644 packages/kit/test/apps/basics/src/routes/data-sveltekit/reload/hash/+page.svelte create mode 100644 packages/kit/test/apps/basics/src/routes/data-sveltekit/reload/hash/new/+page.svelte create mode 100644 packages/kit/test/apps/basics/src/routes/routing/hashes/focus/+page.svelte diff --git a/.changeset/chilled-cats-hang.md b/.changeset/chilled-cats-hang.md new file mode 100644 index 000000000000..47dae6ac5f68 --- /dev/null +++ b/.changeset/chilled-cats-hang.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: ensure element is focused after subsequent clicks of the same hash link diff --git a/.changeset/strange-buckets-sell.md b/.changeset/strange-buckets-sell.md new file mode 100644 index 000000000000..3cbaa6a7184c --- /dev/null +++ b/.changeset/strange-buckets-sell.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: avoid reloading behaviour for hash links with data-sveltekit-reload if the hash is on the same page diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 432c7165fb02..1a6695c385e9 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -2089,8 +2089,11 @@ function _start_router() { if (download) return; + const [nonhash, hash] = url.href.split('#'); + const same_pathname = nonhash === strip_hash(location); + // Ignore the following but fire beforeNavigate - if (external || options.reload) { + if (external || (options.reload && (!same_pathname || !hash))) { if (_before_navigate({ url, type: 'link' })) { // set `navigating` to `true` to prevent `beforeNavigate` callbacks // being called when the page unloads @@ -2105,8 +2108,7 @@ function _start_router() { // 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 [nonhash, hash] = url.href.split('#'); - if (hash !== undefined && nonhash === strip_hash(location)) { + if (hash !== undefined && same_pathname) { // If we are trying to navigate to the same hash, we should only // attempt to scroll to that element and avoid any history changes. // Otherwise, this can cause Firefox to incorrectly assign a null @@ -2121,7 +2123,11 @@ function _start_router() { if (hash === '' || (hash === 'top' && a.ownerDocument.getElementById('top') === null)) { window.scrollTo({ top: 0 }); } else { - a.ownerDocument.getElementById(decodeURIComponent(hash))?.scrollIntoView(); + const element = a.ownerDocument.getElementById(decodeURIComponent(hash)); + if (element) { + element.scrollIntoView(); + element.focus(); + } } return; diff --git a/packages/kit/test/apps/basics/src/routes/data-sveltekit/reload/hash/+page.svelte b/packages/kit/test/apps/basics/src/routes/data-sveltekit/reload/hash/+page.svelte new file mode 100644 index 000000000000..ca54461e368f --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/data-sveltekit/reload/hash/+page.svelte @@ -0,0 +1,3 @@ +<a href="#example" data-sveltekit-reload>focus</a> +<input id="example" /> +<a href="/data-sveltekit/reload/hash/new">new page</a> diff --git a/packages/kit/test/apps/basics/src/routes/data-sveltekit/reload/hash/new/+page.svelte b/packages/kit/test/apps/basics/src/routes/data-sveltekit/reload/hash/new/+page.svelte new file mode 100644 index 000000000000..48aa4cb69f99 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/data-sveltekit/reload/hash/new/+page.svelte @@ -0,0 +1 @@ +<p>hello world</p> diff --git a/packages/kit/test/apps/basics/src/routes/routing/hashes/focus/+page.svelte b/packages/kit/test/apps/basics/src/routes/routing/hashes/focus/+page.svelte new file mode 100644 index 000000000000..17954338b764 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/routing/hashes/focus/+page.svelte @@ -0,0 +1,2 @@ +<a href="#example">focus</a> +<input id="example" /> diff --git a/packages/kit/test/apps/basics/test/cross-platform/client.test.js b/packages/kit/test/apps/basics/test/cross-platform/client.test.js index c2e9bf6cc474..71338a8422ce 100644 --- a/packages/kit/test/apps/basics/test/cross-platform/client.test.js +++ b/packages/kit/test/apps/basics/test/cross-platform/client.test.js @@ -715,6 +715,30 @@ test.describe('Routing', () => { expect(await page.textContent('#page-url-hash')).toBe('#target'); }); + test('clicking on a hash link focuses the associated element', async ({ page }) => { + await page.goto('/routing/hashes/focus'); + await page.locator('a[href="#example"]').click(); + await expect(page.getByRole('textbox')).toBeFocused(); + // check it still works when the hash is already present in the URL + await page.locator('a[href="#example"]').click(); + await expect(page.getByRole('textbox')).toBeFocused(); + }); + + test('backwards navigation works after clicking a hash link with data-sveltekit-reload', async ({ + page, + clicknav, + baseURL + }) => { + await page.goto('/data-sveltekit/reload/hash'); + await page.locator('a[href="#example"]').click(); + expect(page.url()).toBe(`${baseURL}/data-sveltekit/reload/hash#example`); + await clicknav('a[href="/data-sveltekit/reload/hash/new"]'); + expect(page.url()).toBe(`${baseURL}/data-sveltekit/reload/hash/new`); + await page.goBack(); + expect(page.url()).toBe(`${baseURL}/data-sveltekit/reload/hash#example`); + await expect(page.getByRole('textbox')).toBeVisible(); + }); + test('back button returns to previous route when previous route has been navigated to via hash anchor', async ({ page, clicknav From 304755eff690e35e216a9f6578046991e31e76b3 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Mon, 28 Oct 2024 17:46:45 +0800 Subject: [PATCH 366/454] fix: avoid preload if event default was prevented (#12887) closes #12510 --- .changeset/fast-crews-smash.md | 5 +++++ packages/kit/src/runtime/client/client.js | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/fast-crews-smash.md diff --git a/.changeset/fast-crews-smash.md b/.changeset/fast-crews-smash.md new file mode 100644 index 000000000000..9281f3cf2d9f --- /dev/null +++ b/.changeset/fast-crews-smash.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: avoid preload if event default was prevented for `touchstart` and `mousedown` events diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 1a6695c385e9..df35010c65c1 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -1529,6 +1529,7 @@ function setup_preload() { /** @param {Event} event */ function tap(event) { + if (event.defaultPrevented) return; preload(/** @type {Element} */ (event.composedPath()[0]), 1); } From 0abcacd2fc4f4eff578faf9f2c704252ab9b801f Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Mon, 28 Oct 2024 13:37:30 +0100 Subject: [PATCH 367/454] docs: fix links (#12898) --- documentation/docs/40-best-practices/03-auth.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/40-best-practices/03-auth.md b/documentation/docs/40-best-practices/03-auth.md index e9ca3384780c..b2b8e07aa82c 100644 --- a/documentation/docs/40-best-practices/03-auth.md +++ b/documentation/docs/40-best-practices/03-auth.md @@ -14,7 +14,7 @@ In contrast, JWT generally are not checked against a datastore, which means they ## Integration points -Auth [cookies](types#public-types-cookies) can be checked inside [server hooks](hooks#server-hooks). If a user is found matching the provided credentials, the user information can be stored in [`locals`](hooks#server-hooks-locals). +Auth [cookies](@sveltejs-kit#Cookies) can be checked inside [server hooks](hooks#Server-hooks). If a user is found matching the provided credentials, the user information can be stored in [`locals`](hooks#Server-hooks-handle). ## Guides From 2c035ec5b7d8e8b1050b3270d6913c7f8c1190dd Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 28 Oct 2024 13:16:20 -0700 Subject: [PATCH 368/454] chore: no longer need template ssh key (#12905) --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b45ff3283784..50160969b273 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,7 +42,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_CONFIG_PROVENANCE: true NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - UPDATE_TEMPLATE_SSH_KEY: ${{ secrets.UPDATE_TEMPLATE_SSH_KEY }} # TODO alert discord # - name: Send a Slack notification if a publish happens From 162d8ac1d7bec7a7fc572481dd08ad6b7769e44f Mon Sep 17 00:00:00 2001 From: Basang Basangov <basan1991@ya.ru> Date: Tue, 29 Oct 2024 01:10:57 +0300 Subject: [PATCH 369/454] docs: remove duplicate (#12904) --- documentation/docs/20-core-concepts/10-routing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/20-core-concepts/10-routing.md b/documentation/docs/20-core-concepts/10-routing.md index 66d2af54bb61..78c2b0ac719d 100644 --- a/documentation/docs/20-core-concepts/10-routing.md +++ b/documentation/docs/20-core-concepts/10-routing.md @@ -50,7 +50,7 @@ Pages can receive data from `load` functions via the `data` prop. <div>{@html data.content}</div> ``` -> [!LEGACY] In Svelte 4 +> [!LEGACY] > In Svelte 4, you'd use `export let data` instead > [!NOTE] Note that SvelteKit uses `<a>` elements to navigate between routes, rather than a framework-specific `<Link>` component. From 9776e7cfa83f18d91e44685f421248d45370ed48 Mon Sep 17 00:00:00 2001 From: Hyunbin Seo <47051820+hyunbinseo@users.noreply.github.com> Date: Tue, 29 Oct 2024 11:14:50 +0900 Subject: [PATCH 370/454] docs: elaborate on setHeaders in SSR (#12888) * docs: elaborate on setHeaders in SSR * Update documentation/docs/20-core-concepts/20-load.md * docs: update expression * Update documentation/docs/20-core-concepts/20-load.md --------- Co-authored-by: Tee Ming <chewteeming01@gmail.com> --- documentation/docs/20-core-concepts/20-load.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index 9de2b83eade8..5f5f801cfe0a 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -322,8 +322,8 @@ export async function load({ fetch, setHeaders }) { const url = `https://cms.example.com/products.json`; const response = await fetch(url); - // cache the page for the same length of time - // as the underlying data + // Headers are only set during SSR, caching the page's HTML + // for the same length of time as the underlying data. setHeaders({ age: response.headers.get('age'), 'cache-control': response.headers.get('cache-control') From 2668a7d5a84bea6ee0a67a18c1eb20cd64ab7874 Mon Sep 17 00:00:00 2001 From: Pierre Svgnt <46089601+rrr63@users.noreply.github.com> Date: Tue, 29 Oct 2024 06:34:37 -0400 Subject: [PATCH 371/454] docs: delete the 'In Svelte 4' redundancy in the doc. (#12908) * Update 20-load.md * Update 30-form-actions.md --- documentation/docs/20-core-concepts/20-load.md | 2 +- documentation/docs/20-core-concepts/30-form-actions.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index 5f5f801cfe0a..ee64825aea87 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -32,7 +32,7 @@ export function load({ params }) { <div>{@html data.post.content}</div> ``` -> [!LEGACY] In Svelte 4 +> [!LEGACY] > In Svelte 4, you'd use `export let data` instead Thanks to the generated `$types` module, we get full type safety. diff --git a/documentation/docs/20-core-concepts/30-form-actions.md b/documentation/docs/20-core-concepts/30-form-actions.md index 5d8c439f86b6..a86e56b784d1 100644 --- a/documentation/docs/20-core-concepts/30-form-actions.md +++ b/documentation/docs/20-core-concepts/30-form-actions.md @@ -151,7 +151,7 @@ export const actions = { {/if} ``` -> [!LEGACY] In Svelte 4 +> [!LEGACY] > In Svelte 4, you'd use `export let data` and `export let form` instead to declare properties ### Validation errors From 345d7702981ec7835ffd1c0f893a2fed1a90e8cf Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Wed, 30 Oct 2024 12:44:59 -0400 Subject: [PATCH 372/454] docs: fix links (#12912) --- documentation/docs/25-build-and-deploy/40-adapter-node.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/documentation/docs/25-build-and-deploy/40-adapter-node.md b/documentation/docs/25-build-and-deploy/40-adapter-node.md index 71dc8efd66ca..0a7c553c4acc 100644 --- a/documentation/docs/25-build-and-deploy/40-adapter-node.md +++ b/documentation/docs/25-build-and-deploy/40-adapter-node.md @@ -187,7 +187,7 @@ By default `adapter-node` gracefully shuts down the HTTP server when a `SIGTERM` 1. reject new requests ([`server.close`](https://nodejs.org/api/http.html#serverclosecallback)) 2. wait for requests that have already been made but not received a response yet to finish and close connections once they become idle ([`server.closeIdleConnections`](https://nodejs.org/api/http.html#servercloseidleconnections)) -3. and finally, close any remaining connections that are still active after [`SHUTDOWN_TIMEOUT`](#Environment-variables-SHUTDOWN-TIMEOUT) seconds. ([`server.closeAllConnections`](https://nodejs.org/api/http.html#servercloseallconnections)) +3. and finally, close any remaining connections that are still active after [`SHUTDOWN_TIMEOUT`](#Environment-variables-SHUTDOWN_TIMEOUT) seconds. ([`server.closeAllConnections`](https://nodejs.org/api/http.html#servercloseallconnections)) > [!NOTE] If you want to customize this behaviour you can use a [custom server](#Custom-server). @@ -205,7 +205,7 @@ The parameter `reason` has one of the following values: - `SIGINT` - shutdown was triggered by a `SIGINT` signal - `SIGTERM` - shutdown was triggered by a `SIGTERM` signal -- `IDLE` - shutdown was triggered by [`IDLE_TIMEOUT`](#Environment-variables-IDLE-TIMEOUT) +- `IDLE` - shutdown was triggered by [`IDLE_TIMEOUT`](#Environment-variables-IDLE_TIMEOUT) ## Socket activation @@ -215,7 +215,7 @@ Most Linux operating systems today use a modern process manager called systemd t To take advantage of socket activation follow these steps. -1. Run your app as a [systemd service](https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html). It can either run directly on the host system or inside a container (using Docker or a systemd portable service for example). If you additionally pass an [`IDLE_TIMEOUT`](#Environment-variables-IDLE-TIMEOUT) environment variable to your app it will gracefully shutdown if there are no requests for `IDLE_TIMEOUT` seconds. systemd will automatically start your app again when new requests are coming in. +1. Run your app as a [systemd service](https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html). It can either run directly on the host system or inside a container (using Docker or a systemd portable service for example). If you additionally pass an [`IDLE_TIMEOUT`](#Environment-variables-IDLE_TIMEOUT) environment variable to your app it will gracefully shutdown if there are no requests for `IDLE_TIMEOUT` seconds. systemd will automatically start your app again when new requests are coming in. ```ini /// file: /etc/systemd/system/myapp.service From e41a8e24b71cb9e9ee249ddfe732a3d0721d40bf Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Wed, 30 Oct 2024 18:46:29 -0400 Subject: [PATCH 373/454] chore: add sync request workflow (#12918) --- .github/workflows/sync-request.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/sync-request.yml diff --git a/.github/workflows/sync-request.yml b/.github/workflows/sync-request.yml new file mode 100644 index 000000000000..d563e7038f5a --- /dev/null +++ b/.github/workflows/sync-request.yml @@ -0,0 +1,21 @@ +name: Sync request + +on: + push: + branches: + - main + +jobs: + dispatch: + runs-on: ubuntu-latest + steps: + - name: Repository Dispatch + uses: peter-evans/repository-dispatch@v3 + with: + token: ${{ secrets.SYNC_REQUEST_TOKEN }} + repository: sveltejs/svelte.dev + event-type: sync-request + client-payload: |- + { + "package": "kit" + } From 00154744d306a764906e124fa07f841a86c05f3b Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Thu, 31 Oct 2024 14:37:40 -0400 Subject: [PATCH 374/454] add link to sync-docs README (#12919) --- .github/workflows/sync-request.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/sync-request.yml b/.github/workflows/sync-request.yml index d563e7038f5a..0e09c5b9a4bc 100644 --- a/.github/workflows/sync-request.yml +++ b/.github/workflows/sync-request.yml @@ -1,3 +1,4 @@ +# https://github.com/sveltejs/svelte.dev/blob/main/apps/svelte.dev/scripts/sync-docs/README.md name: Sync request on: From 48f02015fc63c694b058fad4a0bf9fe93e070f28 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Thu, 31 Oct 2024 22:31:43 +0100 Subject: [PATCH 375/454] fix: prefer ts in unclear migration situations if `tsconfig.json` found (#12881) Fixes #12880, relies on https://github.com/sveltejs/svelte/pull/13929 --- .changeset/rare-glasses-smell.md | 5 +++++ packages/migrate/migrations/svelte-5/index.js | 4 +++- packages/migrate/migrations/svelte-5/migrate.js | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 .changeset/rare-glasses-smell.md diff --git a/.changeset/rare-glasses-smell.md b/.changeset/rare-glasses-smell.md new file mode 100644 index 000000000000..53d3d8e51d88 --- /dev/null +++ b/.changeset/rare-glasses-smell.md @@ -0,0 +1,5 @@ +--- +'svelte-migrate': patch +--- + +fix: prefer TS in unclear migration situations if `tsconfig.json` found diff --git a/packages/migrate/migrations/svelte-5/index.js b/packages/migrate/migrations/svelte-5/index.js index 01be6c0221a2..a6b17d421232 100644 --- a/packages/migrate/migrations/svelte-5/index.js +++ b/packages/migrate/migrations/svelte-5/index.js @@ -149,6 +149,8 @@ export async function migrate() { update_pkg_json(); + const use_ts = fs.existsSync('tsconfig.json'); + // const { default: config } = fs.existsSync('svelte.config.js') // ? await import(pathToFileURL(path.resolve('svelte.config.js')).href) // : { default: {} }; @@ -170,7 +172,7 @@ export async function migrate() { if (extensions.some((ext) => file.endsWith(ext))) { if (svelte_extensions.some((ext) => file.endsWith(ext))) { update_svelte_file(file, transform_module_code, (code) => - transform_svelte_code(code, migrate, { filename: file }) + transform_svelte_code(code, migrate, { filename: file, use_ts }) ); } else { update_js_file(file, transform_module_code); diff --git a/packages/migrate/migrations/svelte-5/migrate.js b/packages/migrate/migrations/svelte-5/migrate.js index 24ace9dc7148..1b6c73af81a2 100644 --- a/packages/migrate/migrations/svelte-5/migrate.js +++ b/packages/migrate/migrations/svelte-5/migrate.js @@ -56,8 +56,8 @@ export function transform_module_code(code) { /** * @param {string} code - * @param {(source: string, options: { filename?: string }) => { code: string }} transform_code - * @param {{ filename?: string }} options + * @param {(source: string, options: { filename?: string, use_ts?: boolean }) => { code: string }} transform_code + * @param {{ filename?: string, use_ts?: boolean }} options */ export function transform_svelte_code(code, transform_code, options) { return transform_code(code, options).code; From 7c2f8b51df817feba9b090e78f1b5e9975869397 Mon Sep 17 00:00:00 2001 From: Conduitry <git@chor.date> Date: Fri, 1 Nov 2024 11:11:34 -0400 Subject: [PATCH 376/454] docs: replace non-breaking spaces (#12932) --- documentation/docs/20-core-concepts/20-load.md | 2 +- documentation/docs/20-core-concepts/30-form-actions.md | 4 ++-- documentation/docs/60-appendix/30-migrating-to-sveltekit-2.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index ee64825aea87..7231b588d06a 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -333,7 +333,7 @@ export async function load({ fetch, setHeaders }) { } ``` -Setting the same header multiple times (even in separate `load` functions) is an error. You can only set a given header once using the `setHeaders` function. You cannot add a `set-cookie` header with `setHeaders` — use `cookies.set(name, value, options)` instead. +Setting the same header multiple times (even in separate `load` functions) is an error. You can only set a given header once using the `setHeaders` function. You cannot add a `set-cookie` header with `setHeaders` — use `cookies.set(name, value, options)` instead. ## Using parent data diff --git a/documentation/docs/20-core-concepts/30-form-actions.md b/documentation/docs/20-core-concepts/30-form-actions.md index a86e56b784d1..dddae80da99f 100644 --- a/documentation/docs/20-core-concepts/30-form-actions.md +++ b/documentation/docs/20-core-concepts/30-form-actions.md @@ -156,7 +156,7 @@ export const actions = { ### Validation errors -If the request couldn't be processed because of invalid data, you can return validation errors — along with the previously submitted form values — back to the user so that they can try again. The `fail` function lets you return an HTTP status code (typically 400 or 422, in the case of validation errors) along with the data. The status code is available through `$page.status` and the data through `form`: +If the request couldn't be processed because of invalid data, you can return validation errors — along with the previously submitted form values — back to the user so that they can try again. The `fail` function lets you return an HTTP status code (typically 400 or 422, in the case of validation errors) along with the data. The status code is available through `$page.status` and the data through `form`: ```js /// file: src/routes/login/+page.server.js @@ -195,7 +195,7 @@ export const actions = { }; ``` -> [!NOTE] Note that as a precaution, we only return the email back to the page — not the password. +> [!NOTE] Note that as a precaution, we only return the email back to the page — not the password. ```svelte /// file: src/routes/login/+page.svelte diff --git a/documentation/docs/60-appendix/30-migrating-to-sveltekit-2.md b/documentation/docs/60-appendix/30-migrating-to-sveltekit-2.md index ab2f6808ab17..09252136e4f1 100644 --- a/documentation/docs/60-appendix/30-migrating-to-sveltekit-2.md +++ b/documentation/docs/60-appendix/30-migrating-to-sveltekit-2.md @@ -129,7 +129,7 @@ The `$env/dynamic/public` and `$env/dynamic/private` modules provide access to _ During prerendering in SvelteKit 1, they are one and the same. As such, prerendered pages that make use of 'dynamic' environment variables are really 'baking in' build time values, which is incorrect. Worse, `$env/dynamic/public` is populated in the browser with these stale values if the user happens to land on a prerendered page before navigating to dynamically-rendered pages. -Because of this, dynamic environment variables can no longer be read during prerendering in SvelteKit 2 — you should use the `static` modules instead. If the user lands on a prerendered page, SvelteKit will request up-to-date values for `$env/dynamic/public` from the server (by default from a module called `_env.js` — this can be configured with `config.kit.env.publicModule`) instead of reading them from the server-rendered HTML. +Because of this, dynamic environment variables can no longer be read during prerendering in SvelteKit 2 — you should use the `static` modules instead. If the user lands on a prerendered page, SvelteKit will request up-to-date values for `$env/dynamic/public` from the server (by default from a module called `_env.js` — this can be configured with `config.kit.env.publicModule`) instead of reading them from the server-rendered HTML. ## `form` and `data` have been removed from `use:enhance` callbacks From 967bad7c45c3646eb6e469452df7011fa938c97a Mon Sep 17 00:00:00 2001 From: pngwn <hello@pngwn.io> Date: Fri, 1 Nov 2024 17:10:09 +0100 Subject: [PATCH 377/454] breaking: require svelte 5 for enhanced-img (#12822) --- .changeset/witty-years-relate.md | 5 + packages/enhanced-img/package.json | 10 +- packages/enhanced-img/src/preprocessor.js | 120 +++++++----- packages/enhanced-img/test/Input.svelte | 11 +- packages/enhanced-img/test/Output.svelte | 18 +- packages/enhanced-img/types/internal.d.ts | 34 ++++ packages/kit/src/exports/vite/index.js | 1 + pnpm-lock.yaml | 213 ++++++++++++++-------- 8 files changed, 286 insertions(+), 126 deletions(-) create mode 100644 .changeset/witty-years-relate.md create mode 100644 packages/enhanced-img/types/internal.d.ts diff --git a/.changeset/witty-years-relate.md b/.changeset/witty-years-relate.md new file mode 100644 index 000000000000..c0d93ddb3ea7 --- /dev/null +++ b/.changeset/witty-years-relate.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/enhanced-img": minor +--- + +breaking: require Svelte 5 diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 8f922e5d8be5..89c3445e7362 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -38,20 +38,20 @@ "dependencies": { "magic-string": "^0.30.5", "svelte-parse-markup": "^0.1.5", - "vite-imagetools": "^7.0.1" + "vite-imagetools": "^7.0.1", + "zimmerframe": "^1.1.2" }, "devDependencies": { "@types/estree": "^1.0.5", "@types/node": "^18.19.48", - "estree-walker": "^3.0.3", "rollup": "^4.14.2", - "svelte": "^4.2.10", - "typescript": "^5.3.3", + "svelte": "^5.0.0", + "typescript": "^5.6.3", "vite": "^5.3.2", "vitest": "^2.0.1" }, "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.0", + "svelte": "^5.0.0", "vite": ">= 5.0.0" } } diff --git a/packages/enhanced-img/src/preprocessor.js b/packages/enhanced-img/src/preprocessor.js index 0222037e593b..2de5d9f6b9cc 100644 --- a/packages/enhanced-img/src/preprocessor.js +++ b/packages/enhanced-img/src/preprocessor.js @@ -1,8 +1,10 @@ +/** @import { AST } from 'svelte/compiler' */ + import { existsSync } from 'node:fs'; import * as path from 'node:path'; import MagicString from 'magic-string'; -import { asyncWalk } from 'estree-walker'; +import { walk } from 'zimmerframe'; import { VERSION } from 'svelte/compiler'; import { parse } from 'svelte-parse-markup'; @@ -32,7 +34,7 @@ export function image(opts) { } const s = new MagicString(content); - const ast = parse(content, { filename }); + const ast = parse(content, { filename, modern: true }); /** * Import path to import name @@ -49,20 +51,26 @@ export function image(opts) { const consts = new Map(); /** - * @param {import('svelte/types/compiler/interfaces').TemplateNode} node - * @param {{ type: string, start: number, end: number, raw: string }} src_attribute + * @param {import('svelte/compiler').AST.RegularElement} node + * @param {AST.Text | AST.ExpressionTag} src_attribute * @returns {Promise<void>} */ async function update_element(node, src_attribute) { - // TODO: this will become ExpressionTag in Svelte 5 - if (src_attribute.type === 'MustacheTag') { - const src_var_name = content - .substring(src_attribute.start + 1, src_attribute.end - 1) - .trim(); - s.update(node.start, node.end, dynamic_img_to_picture(content, node, src_var_name)); - return; - } else if (src_attribute.type === 'AttributeShorthand') { - const src_var_name = content.substring(src_attribute.start, src_attribute.end).trim(); + if (src_attribute.type === 'ExpressionTag') { + const start = + 'end' in src_attribute.expression + ? src_attribute.expression.end + : src_attribute.expression.range?.[0]; + const end = + 'start' in src_attribute.expression + ? src_attribute.expression.start + : src_attribute.expression.range?.[1]; + + if (typeof start !== 'number' || typeof end !== 'number') { + throw new Error('ExpressionTag has no range'); + } + const src_var_name = content.substring(start, end).trim(); + s.update(node.start, node.end, dynamic_img_to_picture(content, node, src_var_name)); return; } @@ -73,10 +81,10 @@ export function image(opts) { const sizes = get_attr_value(node, 'sizes'); const width = get_attr_value(node, 'width'); url += url.includes('?') ? '&' : '?'; - if (sizes) { + if (sizes && 'raw' in sizes) { url += 'imgSizes=' + encodeURIComponent(sizes.raw) + '&'; } - if (width) { + if (width && 'raw' in width) { url += 'imgWidth=' + encodeURIComponent(width.raw) + '&'; } url += 'enhanced'; @@ -119,23 +127,35 @@ export function image(opts) { } } + /** + * @type {Array<ReturnType<typeof update_element>>} + */ + const pending_ast_updates = []; // TODO: switch to zimmerframe with Svelte 5 - // @ts-ignore - await asyncWalk(ast.html, { - /** - * @param {import('svelte/types/compiler/interfaces').TemplateNode} node - */ - async enter(node) { - if (node.type === 'Element') { - // Compare node tag match - if (node.name === 'enhanced:img') { + + walk( + /** @type {import('svelte/compiler').AST.Root} */ (ast), + {}, + { + _(_, { next }) { + next(); + }, + /** @param {import('svelte/compiler').AST.RegularElement} node */ + // @ts-ignore + RegularElement(node) { + if ('name' in node && node.name === 'enhanced:img') { + // Compare node tag match const src = get_attr_value(node, 'src'); - if (!src) return; - await update_element(node, src); + + if (!src || typeof src === 'boolean') return; + + pending_ast_updates.push(update_element(node, src)); } } } - }); + ); + + await Promise.all(pending_ast_updates); // add imports and consts to <script module> block let text = ''; @@ -215,22 +235,31 @@ export function parseObject(str) { } /** - * @param {import('svelte/types/compiler/interfaces').TemplateNode} node + * @param {import('../types/internal.ts').TemplateNode} node * @param {string} attr + * @returns {AST.Text | AST.ExpressionTag | undefined} */ function get_attr_value(node, attr) { + if (!('type' in node) || !('attributes' in node)) return; const attribute = node.attributes.find( /** @param {any} v */ (v) => v.type === 'Attribute' && v.name === attr ); - if (!attribute) return; + if (!attribute || !('value' in attribute) || typeof attribute.value === 'boolean') return; - return attribute.value[0]; + // Check if value is an array and has at least one element + if (Array.isArray(attribute.value)) { + if (attribute.value.length > 0) return attribute.value[0]; + return; + } + + // If it's not an array or is empty, return the value as is + return attribute.value; } /** * @param {string} content - * @param {Array<import('svelte/types/compiler/interfaces').BaseDirective | import('svelte/types/compiler/interfaces').Attribute | import('svelte/types/compiler/interfaces').SpreadAttribute>} attributes + * @param {import('../types/internal.ts').Attribute[]} attributes * @param {{ * src: string, * width: string | number, @@ -239,7 +268,7 @@ function get_attr_value(node, attr) { */ function serialize_img_attributes(content, attributes, details) { const attribute_strings = attributes.map((attribute) => { - if (attribute.name === 'src') { + if ('name' in attribute && attribute.name === 'src') { return `src=${details.src}`; } return content.substring(attribute.start, attribute.end); @@ -250,8 +279,13 @@ function serialize_img_attributes(content, attributes, details) { /** @type {number | undefined} */ let user_height; for (const attribute of attributes) { - if (attribute.name === 'width') user_width = parseInt(attribute.value[0].raw); - if (attribute.name === 'height') user_height = parseInt(attribute.value[0].raw); + if ('name' in attribute && 'value' in attribute) { + const value = Array.isArray(attribute.value) ? attribute.value[0] : attribute.value; + if (typeof value === 'object' && 'raw' in value) { + if (attribute.name === 'width') user_width = parseInt(value.raw); + if (attribute.name === 'height') user_height = parseInt(value.raw); + } + } } if (!user_width && !user_height) { attribute_strings.push(`width=${details.width}`); @@ -283,13 +317,15 @@ function stringToNumber(param) { /** * @param {Map<string,string>} consts * @param {string} content - * @param {import('svelte/types/compiler/interfaces').TemplateNode} node + * @param {import('svelte/compiler').AST.RegularElement} node * @param {import('vite-imagetools').Picture} image */ function img_to_picture(consts, content, node, image) { - /** @type {Array<import('svelte/types/compiler/interfaces').BaseDirective | import('svelte/types/compiler/interfaces').Attribute | import('svelte/types/compiler/interfaces').SpreadAttribute>} attributes */ + /** @type {import('../types/internal.ts').Attribute[]} attributes */ const attributes = node.attributes; - const index = attributes.findIndex((attribute) => attribute.name === 'sizes'); + const index = attributes.findIndex( + (attribute) => 'name' in attribute && attribute.name === 'sizes' + ); let sizes_string = ''; if (index >= 0) { sizes_string = ' ' + content.substring(attributes[index].start, attributes[index].end); @@ -324,19 +360,21 @@ function to_value(consts, src) { } return `{${var_name}}`; } + return `"${src}"`; } /** * For images like `<img src={manually_imported} />` * @param {string} content - * @param {import('svelte/types/compiler/interfaces').TemplateNode} node + * @param {import('svelte/compiler').AST.RegularElement} node * @param {string} src_var_name */ function dynamic_img_to_picture(content, node, src_var_name) { - /** @type {Array<import('svelte/types/compiler/interfaces').BaseDirective | import('svelte/types/compiler/interfaces').Attribute | import('svelte/types/compiler/interfaces').SpreadAttribute>} attributes */ const attributes = node.attributes; - const index = attributes.findIndex((attribute) => attribute.name === 'sizes'); + const index = attributes.findIndex( + (attribute) => 'name' in attribute && attribute.name === 'sizes' + ); let sizes_string = ''; if (index >= 0) { sizes_string = ' ' + content.substring(attributes[index].start, attributes[index].end); @@ -350,7 +388,7 @@ function dynamic_img_to_picture(content, node, src_var_name) { }; return `{#if typeof ${src_var_name} === 'string'} - <img ${serialize_img_attributes(content, node.attributes, details)} /> + <img ${serialize_img_attributes(content, attributes, details)} /> {:else} <picture> {#each Object.entries(${src_var_name}.sources) as [format, srcset]} diff --git a/packages/enhanced-img/test/Input.svelte b/packages/enhanced-img/test/Input.svelte index c5113be736d4..4b6d54d22125 100644 --- a/packages/enhanced-img/test/Input.svelte +++ b/packages/enhanced-img/test/Input.svelte @@ -4,6 +4,7 @@ const src = manual_image1; const images = [manual_image1, manual_image2]; + const get_image = (image_key: number) => images[image_key]; let foo: string = 'bar'; </script> @@ -28,7 +29,11 @@ alt="sizes test" /> -<enhanced:img src="./dev.png" on:click={(foo = 'clicked an image!')} alt="event handler test" /> +<enhanced:img + src="./dev.png" + onclick={() => (foo = 'clicked an image!')} + alt="event handler test" +/> <enhanced:img src="$lib/dev.png" alt="alias test" /> @@ -42,6 +47,10 @@ <enhanced:img src={image} alt="opt-in test" /> {/each} +{#each images as _, i} + <enhanced:img src={get_image(i)} alt="opt-in test" /> +{/each} + <picture> <source src="./dev.avif" /> <source srcset="./dev.avif 500v ./bar.avif 100v" /> diff --git a/packages/enhanced-img/test/Output.svelte b/packages/enhanced-img/test/Output.svelte index aa7ba366238e..2cc0fe0609ae 100644 --- a/packages/enhanced-img/test/Output.svelte +++ b/packages/enhanced-img/test/Output.svelte @@ -1,4 +1,4 @@ -<script context="module"> +<script module> import __IMPORTED_ASSET_0__ from "./foo.svg"; const __DECLARED_ASSET_0__ = "__VITE_ASSET__2AM7_y_a__ 1440w, __VITE_ASSET__2AM7_y_b__ 960w"; const __DECLARED_ASSET_1__ = "__VITE_ASSET__2AM7_y_c__ 1440w, __VITE_ASSET__2AM7_y_d__ 960w"; @@ -13,6 +13,7 @@ const src = manual_image1; const images = [manual_image1, manual_image2]; + const get_image = (image_key: number) => images[image_key]; let foo: string = 'bar'; </script> @@ -33,7 +34,7 @@ <picture><source srcset="/1 1440w, /2 960w" sizes="(min-width: 60rem) 80vw, (min-width: 40rem) 90vw, 100vw" type="image/avif" /><source srcset="/3 1440w, /4 960w" sizes="(min-width: 60rem) 80vw, (min-width: 40rem) 90vw, 100vw" type="image/webp" /><source srcset="5 1440w, /6 960w" sizes="(min-width: 60rem) 80vw, (min-width: 40rem) 90vw, 100vw" type="image/png" /><img src="/7" alt="sizes test" width=1440 height=1440 /></picture> -<picture><source srcset="/1 1440w, /2 960w" type="image/avif" /><source srcset="/3 1440w, /4 960w" type="image/webp" /><source srcset="5 1440w, /6 960w" type="image/png" /><img src="/7" on:click={(foo = 'clicked an image!')} alt="event handler test" width=1440 height=1440 /></picture> +<picture><source srcset="/1 1440w, /2 960w" type="image/avif" /><source srcset="/3 1440w, /4 960w" type="image/webp" /><source srcset="5 1440w, /6 960w" type="image/png" /><img src="/7" onclick={() => (foo = 'clicked an image!')} alt="event handler test" width=1440 height=1440 /></picture> <picture><source srcset="/1 1440w, /2 960w" type="image/avif" /><source srcset="/3 1440w, /4 960w" type="image/webp" /><source srcset="5 1440w, /6 960w" type="image/png" /><img src="/7" alt="alias test" width=1440 height=1440 /></picture> @@ -65,6 +66,19 @@ {/if} {/each} +{#each images as _, i} + {#if typeof get_image(i) === 'string'} + <img src={get_image(i).img.src} alt="opt-in test" width={get_image(i).img.w} height={get_image(i).img.h} /> +{:else} + <picture> + {#each Object.entries(get_image(i).sources) as [format, srcset]} + <source {srcset} type={'image/' + format} /> + {/each} + <img src={get_image(i).img.src} alt="opt-in test" width={get_image(i).img.w} height={get_image(i).img.h} /> + </picture> +{/if} +{/each} + <picture> <source src="./dev.avif" /> <source srcset="./dev.avif 500v ./bar.avif 100v" /> diff --git a/packages/enhanced-img/types/internal.d.ts b/packages/enhanced-img/types/internal.d.ts new file mode 100644 index 000000000000..814511d0ed6d --- /dev/null +++ b/packages/enhanced-img/types/internal.d.ts @@ -0,0 +1,34 @@ +import type { AST } from 'svelte/compiler'; + +type ElementLike = + | AST.Component + | AST.TitleElement + | AST.SlotElement + | AST.RegularElement + | AST.SvelteBody + | AST.SvelteComponent + | AST.SvelteDocument + | AST.SvelteElement + | AST.SvelteFragment + | AST.SvelteHead + | AST.SvelteOptionsRaw + | AST.SvelteSelf + | AST.SvelteWindow; + +type Tag = AST.ExpressionTag | AST.HtmlTag | AST.ConstTag | AST.DebugTag | AST.RenderTag; + +type Directive = + | AST.AnimateDirective + | AST.BindDirective + | AST.ClassDirective + | AST.LetDirective + | AST.OnDirective + | AST.StyleDirective + | AST.TransitionDirective + | AST.UseDirective; + +type Block = AST.EachBlock | AST.IfBlock | AST.AwaitBlock | AST.KeyBlock | AST.SnippetBlock; + +export type TemplateNode = AST.Text | Tag | ElementLike | AST.Comment | Block; + +export type Attribute = AST.Attribute | AST.SpreadAttribute | Directive; diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 01f2c98f3f91..e6521e979560 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -147,6 +147,7 @@ export async function sveltekit() { preprocess, onwarn: svelte_config.onwarn, compilerOptions: { + // @ts-ignore - ignore this property when running `pnpm check` against Svelte 5 in the ecosystem CI hydratable: isSvelte5Plus() ? undefined : true, ...svelte_config.compilerOptions }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 682ac22e7c49..0a360411ab50 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 2.27.8 '@sveltejs/eslint-config': specifier: ^8.1.0 - version: 8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@4.2.19))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.4.5))(typescript@5.4.5) + version: 8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.9))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 @@ -28,10 +28,10 @@ importers: version: 3.1.1 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.1.2(prettier@3.1.1)(svelte@4.2.19) + version: 3.1.2(prettier@3.1.1)(svelte@5.1.9) typescript-eslint: specifier: ^8.0.0 - version: 8.4.0(eslint@9.6.0)(typescript@5.4.5) + version: 8.4.0(eslint@9.6.0)(typescript@5.6.3) packages/adapter-auto: dependencies: @@ -44,7 +44,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -137,7 +137,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -177,7 +177,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -274,7 +274,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -289,7 +289,7 @@ importers: dependencies: '@sveltejs/kit': specifier: ^1.0.0 || ^2.0.0 - version: 2.6.2(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 2.7.3(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) devDependencies: typescript: specifier: ^5.3.3 @@ -304,10 +304,13 @@ importers: version: 0.30.11 svelte-parse-markup: specifier: ^0.1.5 - version: 0.1.5(svelte@4.2.19) + version: 0.1.5(svelte@5.1.9) vite-imagetools: specifier: ^7.0.1 version: 7.0.1(rollup@4.24.0) + zimmerframe: + specifier: ^1.1.2 + version: 1.1.2 devDependencies: '@types/estree': specifier: ^1.0.5 @@ -315,18 +318,15 @@ importers: '@types/node': specifier: ^18.19.48 version: 18.19.50 - estree-walker: - specifier: ^3.0.3 - version: 3.0.3 rollup: specifier: ^4.14.2 version: 4.24.0 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.0.0 + version: 5.1.9 typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.6.3 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -1928,8 +1928,8 @@ packages: typescript: '>= 5' typescript-eslint: '>= 7.5' - '@sveltejs/kit@2.6.2': - resolution: {integrity: sha512-ruogrSPXjckn5poUiZU8VYNCSPHq66SFR1AATvOikQxtP6LNI4niAZVX/AWZRe/EPDG3oY2DNJ9c5z7u0t2NAQ==} + '@sveltejs/kit@2.7.3': + resolution: {integrity: sha512-Vx7nq5MJ86I8qXYsVidC5PX6xm+uxt8DydvOdmJoyOK7LvGP18OFEG359yY+aa51t6pENvqZAMqAREQQx1OI2Q==} engines: {node: '>=18.13'} hasBin: true peerDependencies: @@ -2088,6 +2088,11 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-typescript@1.4.13: + resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} + peerDependencies: + acorn: '>=8.9.0' + acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} @@ -2257,7 +2262,7 @@ packages: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} concat-map@0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} @@ -2278,10 +2283,6 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} - cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -2489,6 +2490,9 @@ packages: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} + esrap@1.2.2: + resolution: {integrity: sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==} + esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -3421,10 +3425,6 @@ packages: engines: {node: '>=18'} hasBin: true - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - sirv@3.0.0: resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} engines: {node: '>=18'} @@ -3577,6 +3577,10 @@ packages: resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} engines: {node: '>=16'} + svelte@5.1.9: + resolution: {integrity: sha512-nzq+PPKGS2PoEWDjAcXSrKSbXmmmOAxd6dAz1IhRusUpVkFS6DMELWPyBPGwu6TpO/gsgtFXwX0M4+pAR5gzKw==} + engines: {node: '>=18'} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -3663,6 +3667,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} @@ -4492,22 +4501,22 @@ snapshots: eslint-visitor-keys: 4.1.0 espree: 10.2.0 - '@sveltejs/eslint-config@8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@4.2.19))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.4.5))(typescript@5.4.5)': + '@sveltejs/eslint-config@8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.9))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3)': dependencies: '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.6.0) eslint: 9.6.0 eslint-config-prettier: 9.1.0(eslint@9.6.0) eslint-plugin-n: 17.9.0(eslint@9.6.0) - eslint-plugin-svelte: 2.41.0(eslint@9.6.0)(svelte@4.2.19) + eslint-plugin-svelte: 2.41.0(eslint@9.6.0)(svelte@5.1.9) globals: 15.10.0 - typescript: 5.4.5 - typescript-eslint: 8.4.0(eslint@9.6.0)(typescript@5.4.5) + typescript: 5.6.3 + typescript-eslint: 8.4.0(eslint@9.6.0)(typescript@5.6.3) - '@sveltejs/kit@2.6.2(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': + '@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/cookie': 0.6.0 - cookie: 0.7.2 + cookie: 0.6.0 devalue: 5.1.0 esm-env: 1.0.0 import-meta-resolve: 4.1.0 @@ -4516,8 +4525,8 @@ snapshots: mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 - sirv: 2.0.4 - svelte: 4.2.19 + sirv: 3.0.0 + svelte: 5.1.9 tiny-glob: 0.2.9 vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -4530,6 +4539,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + debug: 4.3.5 + svelte: 5.1.9 + vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + transitivePeerDependencies: + - supports-color + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) @@ -4544,6 +4562,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + debug: 4.3.5 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.11 + svelte: 5.1.9 + svelte-hmr: 0.16.0(svelte@5.1.9) + vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + vitefu: 0.2.5(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + transitivePeerDependencies: + - supports-color + '@svitejs/changesets-changelog-github-compact@1.1.0': dependencies: '@changesets/get-github-info': 0.5.2 @@ -4599,34 +4631,34 @@ snapshots: dependencies: '@types/node': 18.19.50 - '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.6.0)(typescript@5.6.3))(eslint@9.6.0)(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 8.4.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/parser': 8.4.0(eslint@9.6.0)(typescript@5.6.3) '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/type-utils': 8.4.0(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.4.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/type-utils': 8.4.0(eslint@9.6.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.4.0(eslint@9.6.0)(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.4.0 eslint: 9.6.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.4.0(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/parser@8.4.0(eslint@9.6.0)(typescript@5.6.3)': dependencies: '@typescript-eslint/scope-manager': 8.4.0 '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.4.0 debug: 4.3.5 eslint: 9.6.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -4635,21 +4667,21 @@ snapshots: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/visitor-keys': 8.4.0 - '@typescript-eslint/type-utils@8.4.0(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@8.4.0(eslint@9.6.0)(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.4.5) - '@typescript-eslint/utils': 8.4.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.4.0(eslint@9.6.0)(typescript@5.6.3) debug: 4.3.5 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - eslint - supports-color '@typescript-eslint/types@8.4.0': {} - '@typescript-eslint/typescript-estree@8.4.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@8.4.0(typescript@5.6.3)': dependencies: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/visitor-keys': 8.4.0 @@ -4658,18 +4690,18 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.4.0(eslint@9.6.0)(typescript@5.4.5)': + '@typescript-eslint/utils@8.4.0(eslint@9.6.0)(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@typescript-eslint/scope-manager': 8.4.0 '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.3) eslint: 9.6.0 transitivePeerDependencies: - supports-color @@ -4736,6 +4768,10 @@ snapshots: dependencies: acorn: 8.12.1 + acorn-typescript@1.4.13(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + acorn-walk@8.3.2: {} acorn@8.12.1: {} @@ -4912,8 +4948,6 @@ snapshots: cookie@0.6.0: {} - cookie@0.7.2: {} - cross-env@7.0.3: dependencies: cross-spawn: 7.0.3 @@ -5090,7 +5124,7 @@ snapshots: minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@4.2.19): + eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.9): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@jridgewell/sourcemap-codec': 1.5.0 @@ -5103,9 +5137,9 @@ snapshots: postcss-safe-parser: 6.0.0(postcss@8.4.47) postcss-selector-parser: 6.1.2 semver: 7.6.3 - svelte-eslint-parser: 0.39.2(svelte@4.2.19) + svelte-eslint-parser: 0.39.2(svelte@5.1.9) optionalDependencies: - svelte: 4.2.19 + svelte: 5.1.9 transitivePeerDependencies: - ts-node @@ -5182,6 +5216,11 @@ snapshots: dependencies: estraverse: 5.3.0 + esrap@1.2.2: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + '@types/estree': 1.0.6 + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -5839,10 +5878,10 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.19): + prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@5.1.9): dependencies: prettier: 3.1.1 - svelte: 4.2.19 + svelte: 5.1.9 prettier@2.8.8: {} @@ -6040,12 +6079,6 @@ snapshots: sirv: 3.0.0 tinydate: 1.3.0 - sirv@2.0.4: - dependencies: - '@polka/url': 1.0.0-next.28 - mrmime: 2.0.0 - totalist: 3.0.1 - sirv@3.0.0: dependencies: '@polka/url': 1.0.0-next.28 @@ -6122,7 +6155,7 @@ snapshots: transitivePeerDependencies: - picomatch - svelte-eslint-parser@0.39.2(svelte@4.2.19): + svelte-eslint-parser@0.39.2(svelte@5.1.9): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -6130,15 +6163,19 @@ snapshots: postcss: 8.4.47 postcss-scss: 4.0.9(postcss@8.4.47) optionalDependencies: - svelte: 4.2.19 + svelte: 5.1.9 svelte-hmr@0.16.0(svelte@4.2.19): dependencies: svelte: 4.2.19 - svelte-parse-markup@0.1.5(svelte@4.2.19): + svelte-hmr@0.16.0(svelte@5.1.9): dependencies: - svelte: 4.2.19 + svelte: 5.1.9 + + svelte-parse-markup@0.1.5(svelte@5.1.9): + dependencies: + svelte: 5.1.9 svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19)(typescript@5.4.5): dependencies: @@ -6174,6 +6211,22 @@ snapshots: magic-string: 0.30.11 periscopic: 3.1.0 + svelte@5.1.9: + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.5.0 + '@types/estree': 1.0.6 + acorn: 8.12.1 + acorn-typescript: 1.4.13(acorn@8.12.1) + aria-query: 5.3.2 + axobject-query: 4.1.0 + esm-env: 1.0.0 + esrap: 1.2.2 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.11 + zimmerframe: 1.1.2 + tapable@2.2.1: {} tar@6.2.1: @@ -6227,6 +6280,10 @@ snapshots: dependencies: typescript: 5.4.5 + ts-api-utils@1.3.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + ts-morph@24.0.0: dependencies: '@ts-morph/common': 0.25.0 @@ -6238,19 +6295,21 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.4.5): + typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.6.0)(typescript@5.4.5))(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/parser': 8.4.0(eslint@9.6.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.4.0(eslint@9.6.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.6.0)(typescript@5.6.3))(eslint@9.6.0)(typescript@5.6.3) + '@typescript-eslint/parser': 8.4.0(eslint@9.6.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.4.0(eslint@9.6.0)(typescript@5.6.3) optionalDependencies: - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - eslint - supports-color typescript@5.4.5: {} + typescript@5.6.3: {} + ufo@1.5.3: {} undici-types@5.26.5: {} From 73cf77f0c3cf7b760072914f56bb4890d590d022 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 09:12:56 -0700 Subject: [PATCH 378/454] chore(deps): update pnpm to v9.12.3 (#12895) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c5528ad6b325..42303946f718 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier-plugin-svelte": "^3.1.2", "typescript-eslint": "^8.0.0" }, - "packageManager": "pnpm@9.12.2", + "packageManager": "pnpm@9.12.3", "engines": { "pnpm": "^9.0.0" } From d55b822ac37aaa1cc6d0dd202db593267ddad66b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 09:14:31 -0700 Subject: [PATCH 379/454] Version Packages (#12897) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/chilled-cats-hang.md | 5 ----- .changeset/fast-crews-smash.md | 5 ----- .changeset/rare-glasses-smell.md | 5 ----- .changeset/strange-buckets-sell.md | 5 ----- .changeset/witty-years-relate.md | 5 ----- packages/enhanced-img/CHANGELOG.md | 6 ++++++ packages/enhanced-img/package.json | 2 +- packages/kit/CHANGELOG.md | 12 ++++++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- packages/migrate/CHANGELOG.md | 6 ++++++ packages/migrate/package.json | 2 +- 12 files changed, 28 insertions(+), 29 deletions(-) delete mode 100644 .changeset/chilled-cats-hang.md delete mode 100644 .changeset/fast-crews-smash.md delete mode 100644 .changeset/rare-glasses-smell.md delete mode 100644 .changeset/strange-buckets-sell.md delete mode 100644 .changeset/witty-years-relate.md diff --git a/.changeset/chilled-cats-hang.md b/.changeset/chilled-cats-hang.md deleted file mode 100644 index 47dae6ac5f68..000000000000 --- a/.changeset/chilled-cats-hang.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: ensure element is focused after subsequent clicks of the same hash link diff --git a/.changeset/fast-crews-smash.md b/.changeset/fast-crews-smash.md deleted file mode 100644 index 9281f3cf2d9f..000000000000 --- a/.changeset/fast-crews-smash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: avoid preload if event default was prevented for `touchstart` and `mousedown` events diff --git a/.changeset/rare-glasses-smell.md b/.changeset/rare-glasses-smell.md deleted file mode 100644 index 53d3d8e51d88..000000000000 --- a/.changeset/rare-glasses-smell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'svelte-migrate': patch ---- - -fix: prefer TS in unclear migration situations if `tsconfig.json` found diff --git a/.changeset/strange-buckets-sell.md b/.changeset/strange-buckets-sell.md deleted file mode 100644 index 3cbaa6a7184c..000000000000 --- a/.changeset/strange-buckets-sell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: avoid reloading behaviour for hash links with data-sveltekit-reload if the hash is on the same page diff --git a/.changeset/witty-years-relate.md b/.changeset/witty-years-relate.md deleted file mode 100644 index c0d93ddb3ea7..000000000000 --- a/.changeset/witty-years-relate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/enhanced-img": minor ---- - -breaking: require Svelte 5 diff --git a/packages/enhanced-img/CHANGELOG.md b/packages/enhanced-img/CHANGELOG.md index 435640914ee0..743a63056d66 100644 --- a/packages/enhanced-img/CHANGELOG.md +++ b/packages/enhanced-img/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/enhanced-img +## 0.4.0 +### Minor Changes + + +- breaking: require Svelte 5 ([#12822](https://github.com/sveltejs/kit/pull/12822)) + ## 0.3.10 ### Patch Changes diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 89c3445e7362..d3cf29e757a6 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/enhanced-img", - "version": "0.3.10", + "version": "0.4.0", "description": "Image optimization for your Svelte apps", "repository": { "type": "git", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 8c9e9cc15bbe..2b7a95de623b 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,17 @@ # @sveltejs/kit +## 2.7.4 +### Patch Changes + + +- fix: ensure element is focused after subsequent clicks of the same hash link ([#12866](https://github.com/sveltejs/kit/pull/12866)) + + +- fix: avoid preload if event default was prevented for `touchstart` and `mousedown` events ([#12887](https://github.com/sveltejs/kit/pull/12887)) + + +- fix: avoid reloading behaviour for hash links with data-sveltekit-reload if the hash is on the same page ([#12866](https://github.com/sveltejs/kit/pull/12866)) + ## 2.7.3 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index dbcd64fa916b..5793ae5eace0 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.7.3", + "version": "2.7.4", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 678b39e92642..985bacc7e0a3 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.7.3'; +export const VERSION = '2.7.4'; diff --git a/packages/migrate/CHANGELOG.md b/packages/migrate/CHANGELOG.md index 0b9c6daa6480..efde63584649 100644 --- a/packages/migrate/CHANGELOG.md +++ b/packages/migrate/CHANGELOG.md @@ -1,5 +1,11 @@ # svelte-migrate +## 1.6.7 +### Patch Changes + + +- fix: prefer TS in unclear migration situations if `tsconfig.json` found ([#12881](https://github.com/sveltejs/kit/pull/12881)) + ## 1.6.6 ### Patch Changes diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 50e528e8f6e8..3670fda4e962 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -1,6 +1,6 @@ { "name": "svelte-migrate", - "version": "1.6.6", + "version": "1.6.7", "description": "A CLI for migrating Svelte(Kit) codebases", "keywords": [ "migration", From 204506b97a5c8ab42e230bf5b926973ed94140b7 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Sat, 2 Nov 2024 23:52:25 +0100 Subject: [PATCH 380/454] fix: prevent duplicate imports (#12931) Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/spicy-cars-cheer.md | 5 ++++ .../migrate/migrations/svelte-5/migrate.js | 13 ++------- .../migrations/svelte-5/migrate.spec.js | 29 +++++++++++++++++++ .../migrate/migrations/sveltekit-2/migrate.js | 19 +++++------- packages/migrate/utils.js | 18 ++++++++++++ 5 files changed, 62 insertions(+), 22 deletions(-) create mode 100644 .changeset/spicy-cars-cheer.md diff --git a/.changeset/spicy-cars-cheer.md b/.changeset/spicy-cars-cheer.md new file mode 100644 index 000000000000..4a46f1a65365 --- /dev/null +++ b/.changeset/spicy-cars-cheer.md @@ -0,0 +1,5 @@ +--- +'svelte-migrate': patch +--- + +fix: prevent duplicate imports diff --git a/packages/migrate/migrations/svelte-5/migrate.js b/packages/migrate/migrations/svelte-5/migrate.js index 1b6c73af81a2..eb9e750f46a0 100644 --- a/packages/migrate/migrations/svelte-5/migrate.js +++ b/packages/migrate/migrations/svelte-5/migrate.js @@ -1,6 +1,6 @@ import fs from 'node:fs'; import { Project, ts, Node } from 'ts-morph'; -import { update_pkg } from '../../utils.js'; +import { add_named_import, update_pkg } from '../../utils.js'; export function update_pkg_json() { fs.writeFileSync( @@ -94,14 +94,7 @@ function update_component_instantiation(source) { ?.remove(); } - if (source.getImportDeclaration('svelte')) { - source.getImportDeclaration('svelte')?.addNamedImport(method); - } else { - source.addImportDeclaration({ - moduleSpecifier: 'svelte', - namedImports: [method] - }); - } + add_named_import(source, 'svelte', method); const declaration = parent .getParentIfKind(ts.SyntaxKind.VariableDeclaration) @@ -114,7 +107,7 @@ function update_component_instantiation(source) { const call_expr = parent.getParentIfKind(ts.SyntaxKind.CallExpression); if (call_expr) { call_expr.replaceWithText(`unmount(${usage.getText()})`); - source.getImportDeclaration('svelte')?.addNamedImport('unmount'); + add_named_import(source, 'svelte', 'unmount'); } } } diff --git a/packages/migrate/migrations/svelte-5/migrate.spec.js b/packages/migrate/migrations/svelte-5/migrate.spec.js index a623230d7eae..0f9e3e6d4db6 100644 --- a/packages/migrate/migrations/svelte-5/migrate.spec.js +++ b/packages/migrate/migrations/svelte-5/migrate.spec.js @@ -73,6 +73,35 @@ function destroy() { ); }); +test('Updates component creation with multiple components', () => { + const result = transform_module_code( + `import App from './App.svelte'; +import Child from './Child.svelte'; + +const x = new App({ + target: document.getElementById('app')! +}); +const y = new Child({ + target: document.getElementById('child')! +}); +` + ); + assert.equal( + result, + `import App from './App.svelte'; +import Child from './Child.svelte'; +import { mount } from "svelte"; + +const x = mount(App, { + target: document.getElementById('app')! +}); +const y = mount(Child, { + target: document.getElementById('child')! +}); +` + ); +}); + test('Update package.json', () => { const result = update_pkg_json_content(`{ "name": "svelte-app", diff --git a/packages/migrate/migrations/sveltekit-2/migrate.js b/packages/migrate/migrations/sveltekit-2/migrate.js index ddd46d946f64..9657be37d480 100644 --- a/packages/migrate/migrations/sveltekit-2/migrate.js +++ b/packages/migrate/migrations/sveltekit-2/migrate.js @@ -1,6 +1,11 @@ import fs from 'node:fs'; import { Project, Node, SyntaxKind } from 'ts-morph'; -import { log_migration, log_on_ts_modification, update_pkg } from '../../utils.js'; +import { + add_named_import, + log_migration, + log_on_ts_modification, + update_pkg +} from '../../utils.js'; import path from 'node:path'; export function update_pkg_json() { @@ -112,17 +117,7 @@ export function update_svelte_config_content(code) { ?.setModuleSpecifier('@sveltejs/vite-plugin-svelte'); } else { namedImport.remove(); - const vps = source.getImportDeclaration( - (i) => i.getModuleSpecifierValue() === '@sveltejs/vite-plugin-svelte' - ); - if (vps) { - vps.addNamedImport('vitePreprocess'); - } else { - source.addImportDeclaration({ - moduleSpecifier: '@sveltejs/vite-plugin-svelte', - namedImports: ['vitePreprocess'] - }); - } + add_named_import(source, '@sveltejs/vite-plugin-svelte', 'vitePreprocess'); } logger(); diff --git a/packages/migrate/utils.js b/packages/migrate/utils.js index 9cd9d10c6f39..944461f02a78 100644 --- a/packages/migrate/utils.js +++ b/packages/migrate/utils.js @@ -401,3 +401,21 @@ export function read_samples(test_file) { return samples; } + +/** + * @param {import('ts-morph').SourceFile} source + * @param {string} _import + * @param {string} method + */ +export function add_named_import(source, _import, method) { + const existing = source.getImportDeclaration(_import); + if (existing) { + if (existing.getNamedImports().some((i) => i.getName() === method)) return; + existing?.addNamedImport(method); + } else { + source.addImportDeclaration({ + moduleSpecifier: _import, + namedImports: [method] + }); + } +} From b3666b2f40946457554c2a1bcede83513b7827c4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 2 Nov 2024 15:57:11 -0700 Subject: [PATCH 381/454] Version Packages (#12937) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/spicy-cars-cheer.md | 5 ----- packages/migrate/CHANGELOG.md | 6 ++++++ packages/migrate/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/spicy-cars-cheer.md diff --git a/.changeset/spicy-cars-cheer.md b/.changeset/spicy-cars-cheer.md deleted file mode 100644 index 4a46f1a65365..000000000000 --- a/.changeset/spicy-cars-cheer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'svelte-migrate': patch ---- - -fix: prevent duplicate imports diff --git a/packages/migrate/CHANGELOG.md b/packages/migrate/CHANGELOG.md index efde63584649..96020c5b63b7 100644 --- a/packages/migrate/CHANGELOG.md +++ b/packages/migrate/CHANGELOG.md @@ -1,5 +1,11 @@ # svelte-migrate +## 1.6.8 +### Patch Changes + + +- fix: prevent duplicate imports ([#12931](https://github.com/sveltejs/kit/pull/12931)) + ## 1.6.7 ### Patch Changes diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 3670fda4e962..be1a716729fb 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -1,6 +1,6 @@ { "name": "svelte-migrate", - "version": "1.6.7", + "version": "1.6.8", "description": "A CLI for migrating Svelte(Kit) codebases", "keywords": [ "migration", From c4b76d09c9f5982f024d5422aafea4135cc8ad15 Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Sat, 2 Nov 2024 22:21:37 -0400 Subject: [PATCH 382/454] chore: setup docs previews (#12938) * chore: setup docs previews * test * delete --- .../workflows/docs-preview-create-request.yml | 26 ++++++++++++++++++ .../workflows/docs-preview-delete-request.yml | 27 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 .github/workflows/docs-preview-create-request.yml create mode 100644 .github/workflows/docs-preview-delete-request.yml diff --git a/.github/workflows/docs-preview-create-request.yml b/.github/workflows/docs-preview-create-request.yml new file mode 100644 index 000000000000..af4bcfce2046 --- /dev/null +++ b/.github/workflows/docs-preview-create-request.yml @@ -0,0 +1,26 @@ +# https://github.com/sveltejs/svelte.dev/blob/main/apps/svelte.dev/scripts/sync-docs/README.md +name: Docs preview create request + +on: + pull_request: + branches: + - main + +jobs: + dispatch: + runs-on: ubuntu-latest + steps: + - name: Repository Dispatch + uses: peter-evans/repository-dispatch@v3 + with: + token: ${{ secrets.SYNC_REQUEST_TOKEN }} + repository: sveltejs/svelte.dev + event-type: docs-preview-create + client-payload: |- + { + "package": "kit", + "repo": "${{ github.repository }}", + "owner": "${{ github.event.pull_request.head.repo.owner.login }}", + "branch": "${{ github.event.pull_request.head.ref }}", + "pr": ${{ github.event.pull_request.number }} + } diff --git a/.github/workflows/docs-preview-delete-request.yml b/.github/workflows/docs-preview-delete-request.yml new file mode 100644 index 000000000000..40a9bacbfded --- /dev/null +++ b/.github/workflows/docs-preview-delete-request.yml @@ -0,0 +1,27 @@ +# https://github.com/sveltejs/svelte.dev/blob/main/apps/svelte.dev/scripts/sync-docs/README.md +name: Docs preview delete request + +on: + pull_request: + branches: + - main + types: [closed] + +jobs: + dispatch: + runs-on: ubuntu-latest + steps: + - name: Repository Dispatch + uses: peter-evans/repository-dispatch@v3 + with: + token: ${{ secrets.SYNC_REQUEST_TOKEN }} + repository: sveltejs/svelte.dev + event-type: docs-preview-delete + client-payload: |- + { + "package": "kit", + "repo": "${{ github.repository }}", + "owner": "${{ github.event.pull_request.head.repo.owner.login }}", + "branch": "${{ github.event.pull_request.head.ref }}", + "pr": ${{ github.event.pull_request.number }} + } From c484ced0f6305c98433ccb9034545fd5dc3acb82 Mon Sep 17 00:00:00 2001 From: ottomated <31470743+ottomated@users.noreply.github.com> Date: Sun, 3 Nov 2024 20:01:47 -0800 Subject: [PATCH 383/454] fix: fix nested images in enhanced-img (#12945) --- .changeset/stale-moons-walk.md | 5 +++++ packages/enhanced-img/src/preprocessor.js | 7 +++++-- packages/enhanced-img/test/Input.svelte | 4 ++++ packages/enhanced-img/test/Output.svelte | 4 ++++ 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 .changeset/stale-moons-walk.md diff --git a/.changeset/stale-moons-walk.md b/.changeset/stale-moons-walk.md new file mode 100644 index 000000000000..4fa3cd36c61f --- /dev/null +++ b/.changeset/stale-moons-walk.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/enhanced-img': patch +--- + +fix: correctly handle `<enhanced:img />` elements nested in other DOM elements diff --git a/packages/enhanced-img/src/preprocessor.js b/packages/enhanced-img/src/preprocessor.js index 2de5d9f6b9cc..dbba1aa5514f 100644 --- a/packages/enhanced-img/src/preprocessor.js +++ b/packages/enhanced-img/src/preprocessor.js @@ -131,7 +131,6 @@ export function image(opts) { * @type {Array<ReturnType<typeof update_element>>} */ const pending_ast_updates = []; - // TODO: switch to zimmerframe with Svelte 5 walk( /** @type {import('svelte/compiler').AST.Root} */ (ast), @@ -142,7 +141,7 @@ export function image(opts) { }, /** @param {import('svelte/compiler').AST.RegularElement} node */ // @ts-ignore - RegularElement(node) { + RegularElement(node, { next }) { if ('name' in node && node.name === 'enhanced:img') { // Compare node tag match const src = get_attr_value(node, 'src'); @@ -150,7 +149,11 @@ export function image(opts) { if (!src || typeof src === 'boolean') return; pending_ast_updates.push(update_element(node, src)); + + return; } + + next(); } } ); diff --git a/packages/enhanced-img/test/Input.svelte b/packages/enhanced-img/test/Input.svelte index 4b6d54d22125..3a29902d0930 100644 --- a/packages/enhanced-img/test/Input.svelte +++ b/packages/enhanced-img/test/Input.svelte @@ -15,6 +15,10 @@ <enhanced:img src="./dev.png" alt="dev test" /> +<div> + <enhanced:img src="./dev.png" alt="nested test" /> +</div> + <enhanced:img src="./prod.png" alt="production test" /> <enhanced:img src="./dev.png" width="5" height="10" alt="dimensions test" /> diff --git a/packages/enhanced-img/test/Output.svelte b/packages/enhanced-img/test/Output.svelte index 2cc0fe0609ae..80a8485485ad 100644 --- a/packages/enhanced-img/test/Output.svelte +++ b/packages/enhanced-img/test/Output.svelte @@ -24,6 +24,10 @@ <picture><source srcset="/1 1440w, /2 960w" type="image/avif" /><source srcset="/3 1440w, /4 960w" type="image/webp" /><source srcset="5 1440w, /6 960w" type="image/png" /><img src="/7" alt="dev test" width=1440 height=1440 /></picture> +<div> + <picture><source srcset="/1 1440w, /2 960w" type="image/avif" /><source srcset="/3 1440w, /4 960w" type="image/webp" /><source srcset="5 1440w, /6 960w" type="image/png" /><img src="/7" alt="nested test" width=1440 height=1440 /></picture> +</div> + <picture><source srcset={__DECLARED_ASSET_0__} type="image/avif" /><source srcset={__DECLARED_ASSET_1__} type="image/webp" /><source srcset={__DECLARED_ASSET_2__} type="image/png" /><img src={__DECLARED_ASSET_3__} alt="production test" width=1440 height=1440 /></picture> <picture><source srcset="/1 1440w, /2 960w" type="image/avif" /><source srcset="/3 1440w, /4 960w" type="image/webp" /><source srcset="5 1440w, /6 960w" type="image/png" /><img src="/7" width="5" height="10" alt="dimensions test" /></picture> From 32c9788a4d660b79a129fbad84261916145c40d6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 3 Nov 2024 20:02:53 -0800 Subject: [PATCH 384/454] Version Packages (#12946) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/stale-moons-walk.md | 5 ----- packages/enhanced-img/CHANGELOG.md | 6 ++++++ packages/enhanced-img/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/stale-moons-walk.md diff --git a/.changeset/stale-moons-walk.md b/.changeset/stale-moons-walk.md deleted file mode 100644 index 4fa3cd36c61f..000000000000 --- a/.changeset/stale-moons-walk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/enhanced-img': patch ---- - -fix: correctly handle `<enhanced:img />` elements nested in other DOM elements diff --git a/packages/enhanced-img/CHANGELOG.md b/packages/enhanced-img/CHANGELOG.md index 743a63056d66..31218412f370 100644 --- a/packages/enhanced-img/CHANGELOG.md +++ b/packages/enhanced-img/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/enhanced-img +## 0.4.1 +### Patch Changes + + +- fix: correctly handle `<enhanced:img />` elements nested in other DOM elements ([#12945](https://github.com/sveltejs/kit/pull/12945)) + ## 0.4.0 ### Minor Changes diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index d3cf29e757a6..862b6a0c4e3b 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/enhanced-img", - "version": "0.4.0", + "version": "0.4.1", "description": "Image optimization for your Svelte apps", "repository": { "type": "git", From 557897a8aa9322a427fbcb1c17877eb3ff24ceca Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Mon, 4 Nov 2024 16:40:35 -0500 Subject: [PATCH 385/454] use pull_request_target (#12949) --- .github/workflows/docs-preview-create-request.yml | 2 +- .github/workflows/docs-preview-delete-request.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs-preview-create-request.yml b/.github/workflows/docs-preview-create-request.yml index af4bcfce2046..bc5b40f95148 100644 --- a/.github/workflows/docs-preview-create-request.yml +++ b/.github/workflows/docs-preview-create-request.yml @@ -2,7 +2,7 @@ name: Docs preview create request on: - pull_request: + pull_request_target: branches: - main diff --git a/.github/workflows/docs-preview-delete-request.yml b/.github/workflows/docs-preview-delete-request.yml index 40a9bacbfded..fc96fcfa3fc1 100644 --- a/.github/workflows/docs-preview-delete-request.yml +++ b/.github/workflows/docs-preview-delete-request.yml @@ -2,7 +2,7 @@ name: Docs preview delete request on: - pull_request: + pull_request_target: branches: - main types: [closed] From 951224d496984f3919b17547b54af04226aec389 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Tue, 5 Nov 2024 08:44:19 +0800 Subject: [PATCH 386/454] fix: warn on invalid cookie name characters (#12806) --- .changeset/old-points-tell.md | 5 +++++ packages/kit/src/runtime/server/cookie.js | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 .changeset/old-points-tell.md diff --git a/.changeset/old-points-tell.md b/.changeset/old-points-tell.md new file mode 100644 index 000000000000..b1bb7681fb01 --- /dev/null +++ b/.changeset/old-points-tell.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: warn on invalid cookie name characters diff --git a/packages/kit/src/runtime/server/cookie.js b/packages/kit/src/runtime/server/cookie.js index 7acd24417848..33163fe77b55 100644 --- a/packages/kit/src/runtime/server/cookie.js +++ b/packages/kit/src/runtime/server/cookie.js @@ -1,6 +1,9 @@ import { parse, serialize } from 'cookie'; import { add_data_suffix, normalize_path, resolve } from '../../utils/url.js'; +// eslint-disable-next-line no-control-regex -- control characters are invalid in cookie names +const INVALID_COOKIE_CHARACTER_REGEX = /[\x00-\x1F\x7F()<>@,;:"/[\]?={} \t]/; + /** * Tracks all cookies set during dev mode so we can emit warnings * when we detect that there's likely cookie misusage due to wrong paths @@ -113,6 +116,14 @@ export function get_cookies(request, url, trailing_slash) { * @param {import('./page/types.js').Cookie['options']} options */ set(name, value, options) { + // TODO: remove this check in 3.0 + const illegal_characters = name.match(INVALID_COOKIE_CHARACTER_REGEX); + if (illegal_characters) { + console.warn( + `The cookie name "${name}" will be invalid in SvelteKit 3.0 as it contains ${illegal_characters.join(' and ')}. See RFC 2616 for more details https://datatracker.ietf.org/doc/html/rfc2616#section-2.2` + ); + } + validate_options(options); set_internal(name, value, { ...defaults, ...options }); }, From c80b1d8eefb6d5201fba41157bba5da49c4f82de Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Tue, 5 Nov 2024 08:45:38 +0800 Subject: [PATCH 387/454] fix: set no-op proxy config to get Vite HTTPS working (#12907) --- .changeset/unlucky-walls-drum.md | 5 +++++ packages/kit/src/exports/vite/index.js | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 .changeset/unlucky-walls-drum.md diff --git a/.changeset/unlucky-walls-drum.md b/.changeset/unlucky-walls-drum.md new file mode 100644 index 000000000000..f0cb9a403960 --- /dev/null +++ b/.changeset/unlucky-walls-drum.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: when using `@vitejs/plugin-basic-ssl`, set a no-op proxy config to downgrade from HTTP/2 to TLS since `undici` does not yet enable HTTP/2 by default diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index e6521e979560..40fa4c6edb56 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -349,6 +349,22 @@ async function kit({ svelte_config }) { * Stores the final config. */ configResolved(config) { + // we search for this plugin by name because we can't detect it + // since it doesn't directly modify the https config unlike the mkcert plugin + const vite_basic_ssl = config.plugins.find(({ name }) => name === 'vite:basic-ssl'); + + // by default, when enabling HTTPS in Vite, it also enables HTTP/2 + // however, undici has not yet enabled HTTP/2 by default: https://github.com/nodejs/undici/issues/2750 + // we set a no-op proxy config to force Vite to downgrade to TLS-only + // see https://vitejs.dev/config/#server-https + if ((config.server.https || vite_basic_ssl) && !config.server.proxy) { + config.server.proxy = {}; + } + + if ((config.preview.https || vite_basic_ssl) && !config.preview.proxy) { + config.preview.proxy = {}; + } + vite_config = config; } }; From 425a0051803f7f76b0eb0850fe4c669c5225a7bc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 16:58:03 -0800 Subject: [PATCH 388/454] Version Packages (#12952) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/old-points-tell.md | 5 ----- .changeset/unlucky-walls-drum.md | 5 ----- packages/kit/CHANGELOG.md | 9 +++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 5 files changed, 11 insertions(+), 12 deletions(-) delete mode 100644 .changeset/old-points-tell.md delete mode 100644 .changeset/unlucky-walls-drum.md diff --git a/.changeset/old-points-tell.md b/.changeset/old-points-tell.md deleted file mode 100644 index b1bb7681fb01..000000000000 --- a/.changeset/old-points-tell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: warn on invalid cookie name characters diff --git a/.changeset/unlucky-walls-drum.md b/.changeset/unlucky-walls-drum.md deleted file mode 100644 index f0cb9a403960..000000000000 --- a/.changeset/unlucky-walls-drum.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: when using `@vitejs/plugin-basic-ssl`, set a no-op proxy config to downgrade from HTTP/2 to TLS since `undici` does not yet enable HTTP/2 by default diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 2b7a95de623b..3aa4a28d781c 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/kit +## 2.7.5 +### Patch Changes + + +- fix: warn on invalid cookie name characters ([#12806](https://github.com/sveltejs/kit/pull/12806)) + + +- fix: when using `@vitejs/plugin-basic-ssl`, set a no-op proxy config to downgrade from HTTP/2 to TLS since `undici` does not yet enable HTTP/2 by default ([#12907](https://github.com/sveltejs/kit/pull/12907)) + ## 2.7.4 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 5793ae5eace0..6dbc94a6fb04 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.7.4", + "version": "2.7.5", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 985bacc7e0a3..3561a25c8c30 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.7.4'; +export const VERSION = '2.7.5'; From 9d0230e8a2a0142e9ff94556de1659be52040235 Mon Sep 17 00:00:00 2001 From: tkhs <34599544+tkhs0813@users.noreply.github.com> Date: Tue, 5 Nov 2024 13:01:41 +0900 Subject: [PATCH 389/454] chore: run CI tests on Node 22 (#12954) --- .github/workflows/ci.yml | 3 +++ packages/kit/src/runtime/server/cookie.js | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a8e35a53dc16..486af3633207 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,6 +45,9 @@ jobs: - node-version: 20 os: ubuntu-latest e2e-browser: 'chromium' + - node-version: 22 + os: ubuntu-latest + e2e-browser: 'chromium' env: KIT_E2E_BROWSER: ${{matrix.e2e-browser}} steps: diff --git a/packages/kit/src/runtime/server/cookie.js b/packages/kit/src/runtime/server/cookie.js index 33163fe77b55..ddefa847a432 100644 --- a/packages/kit/src/runtime/server/cookie.js +++ b/packages/kit/src/runtime/server/cookie.js @@ -120,7 +120,9 @@ export function get_cookies(request, url, trailing_slash) { const illegal_characters = name.match(INVALID_COOKIE_CHARACTER_REGEX); if (illegal_characters) { console.warn( - `The cookie name "${name}" will be invalid in SvelteKit 3.0 as it contains ${illegal_characters.join(' and ')}. See RFC 2616 for more details https://datatracker.ietf.org/doc/html/rfc2616#section-2.2` + `The cookie name "${name}" will be invalid in SvelteKit 3.0 as it contains ${illegal_characters.join( + ' and ' + )}. See RFC 2616 for more details https://datatracker.ietf.org/doc/html/rfc2616#section-2.2` ); } From 70246e62912880f210c947fbcd1a912fefe821fd Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Tue, 5 Nov 2024 13:50:28 -0500 Subject: [PATCH 390/454] fix: update broken links in JSDoc (#12960) * fix: update broken links in JSDoc * bump * I WILL STAB YOU --- .changeset/thick-mails-wonder.md | 5 +++++ packages/kit/src/exports/public.d.ts | 6 +++--- packages/kit/src/types/ambient.d.ts | 2 +- packages/kit/types/index.d.ts | 8 ++++---- 4 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .changeset/thick-mails-wonder.md diff --git a/.changeset/thick-mails-wonder.md b/.changeset/thick-mails-wonder.md new file mode 100644 index 000000000000..36b3d813c0db --- /dev/null +++ b/.changeset/thick-mails-wonder.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: update broken links in JSDoc diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 77be062a3163..92136d609c10 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -689,7 +689,7 @@ export type Handle = (input: { }) => MaybePromise<Response>; /** - * The server-side [`handleError`](https://svelte.dev/docs/kit/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while responding to a request. + * The server-side [`handleError`](https://svelte.dev/docs/kit/hooks#Shared-hooks-handleError) hook runs when an unexpected error is thrown while responding to a request. * * If an unexpected error is thrown during loading or rendering, this function will be called with the error and the event. * Make sure that this function _never_ throws an error. @@ -702,7 +702,7 @@ export type HandleServerError = (input: { }) => MaybePromise<void | App.Error>; /** - * The client-side [`handleError`](https://svelte.dev/docs/kit/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while navigating. + * The client-side [`handleError`](https://svelte.dev/docs/kit/hooks#Shared-hooks-handleError) hook runs when an unexpected error is thrown while navigating. * * If an unexpected error is thrown during loading or the following render, this function will be called with the error and the event. * Make sure that this function _never_ throws an error. @@ -715,7 +715,7 @@ export type HandleClientError = (input: { }) => MaybePromise<void | App.Error>; /** - * The [`handleFetch`](https://svelte.dev/docs/kit/hooks#server-hooks-handleFetch) hook allows you to modify (or replace) a `fetch` request that happens inside a `load` function that runs on the server (or during pre-rendering) + * The [`handleFetch`](https://svelte.dev/docs/kit/hooks#Server-hooks-handleFetch) hook allows you to modify (or replace) a `fetch` request that happens inside a `load` function that runs on the server (or during pre-rendering) */ export type HandleFetch = (input: { event: RequestEvent; diff --git a/packages/kit/src/types/ambient.d.ts b/packages/kit/src/types/ambient.d.ts index 16ef13016deb..496fc537cf4d 100644 --- a/packages/kit/src/types/ambient.d.ts +++ b/packages/kit/src/types/ambient.d.ts @@ -46,7 +46,7 @@ declare namespace App { export interface PageState {} /** - * If your adapter provides [platform-specific context](https://svelte.dev/docs/kit/adapters#platform-specific-context) via `event.platform`, you can specify it here. + * If your adapter provides [platform-specific context](https://svelte.dev/docs/kit/adapters#Platform-specific-context) via `event.platform`, you can specify it here. */ export interface Platform {} } diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 491de54d9698..3f04154119cf 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -671,7 +671,7 @@ declare module '@sveltejs/kit' { }) => MaybePromise<Response>; /** - * The server-side [`handleError`](https://svelte.dev/docs/kit/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while responding to a request. + * The server-side [`handleError`](https://svelte.dev/docs/kit/hooks#Shared-hooks-handleError) hook runs when an unexpected error is thrown while responding to a request. * * If an unexpected error is thrown during loading or rendering, this function will be called with the error and the event. * Make sure that this function _never_ throws an error. @@ -684,7 +684,7 @@ declare module '@sveltejs/kit' { }) => MaybePromise<void | App.Error>; /** - * The client-side [`handleError`](https://svelte.dev/docs/kit/hooks#shared-hooks-handleError) hook runs when an unexpected error is thrown while navigating. + * The client-side [`handleError`](https://svelte.dev/docs/kit/hooks#Shared-hooks-handleError) hook runs when an unexpected error is thrown while navigating. * * If an unexpected error is thrown during loading or the following render, this function will be called with the error and the event. * Make sure that this function _never_ throws an error. @@ -697,7 +697,7 @@ declare module '@sveltejs/kit' { }) => MaybePromise<void | App.Error>; /** - * The [`handleFetch`](https://svelte.dev/docs/kit/hooks#server-hooks-handleFetch) hook allows you to modify (or replace) a `fetch` request that happens inside a `load` function that runs on the server (or during pre-rendering) + * The [`handleFetch`](https://svelte.dev/docs/kit/hooks#Server-hooks-handleFetch) hook allows you to modify (or replace) a `fetch` request that happens inside a `load` function that runs on the server (or during pre-rendering) */ export type HandleFetch = (input: { event: RequestEvent; @@ -2287,7 +2287,7 @@ declare namespace App { export interface PageState {} /** - * If your adapter provides [platform-specific context](https://svelte.dev/docs/kit/adapters#platform-specific-context) via `event.platform`, you can specify it here. + * If your adapter provides [platform-specific context](https://svelte.dev/docs/kit/adapters#Platform-specific-context) via `event.platform`, you can specify it here. */ export interface Platform {} } From 92e129e7e74f99eeee14b726778b555bc0ceb7ff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 13:52:03 -0500 Subject: [PATCH 391/454] Version Packages (#12962) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/thick-mails-wonder.md | 5 ----- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .changeset/thick-mails-wonder.md diff --git a/.changeset/thick-mails-wonder.md b/.changeset/thick-mails-wonder.md deleted file mode 100644 index 36b3d813c0db..000000000000 --- a/.changeset/thick-mails-wonder.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: update broken links in JSDoc diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 3aa4a28d781c..804ad8debffe 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.7.6 +### Patch Changes + + +- fix: update broken links in JSDoc ([#12960](https://github.com/sveltejs/kit/pull/12960)) + ## 2.7.5 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 6dbc94a6fb04..d4ed25cc958d 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.7.5", + "version": "2.7.6", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 3561a25c8c30..b2782665011c 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.7.5'; +export const VERSION = '2.7.6'; From 567035779eb8d7755e7483292c8e0e1fab291f97 Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Tue, 5 Nov 2024 14:17:25 -0500 Subject: [PATCH 392/454] fix: update links in JSDoc (#12963) --- .changeset/serious-rats-jump.md | 5 +++++ packages/kit/src/exports/public.d.ts | 2 +- packages/kit/types/index.d.ts | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/serious-rats-jump.md diff --git a/.changeset/serious-rats-jump.md b/.changeset/serious-rats-jump.md new file mode 100644 index 000000000000..f6f39156ca16 --- /dev/null +++ b/.changeset/serious-rats-jump.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: update link in JSDoc diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 92136d609c10..7db17269967f 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -441,7 +441,7 @@ export interface KitConfig { */ lib?: string; /** - * a directory containing [parameter matchers](https://svelte.dev/docs/kit/advanced-routing#matching) + * a directory containing [parameter matchers](https://svelte.dev/docs/kit/advanced-routing#Matching) * @default "src/params" */ params?: string; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 3f04154119cf..c943a2bc7179 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -423,7 +423,7 @@ declare module '@sveltejs/kit' { */ lib?: string; /** - * a directory containing [parameter matchers](https://svelte.dev/docs/kit/advanced-routing#matching) + * a directory containing [parameter matchers](https://svelte.dev/docs/kit/advanced-routing#Matching) * @default "src/params" */ params?: string; From fc2736183514a902034464c79961568470f8a405 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:19:08 -0500 Subject: [PATCH 393/454] Version Packages (#12964) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/serious-rats-jump.md | 5 ----- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .changeset/serious-rats-jump.md diff --git a/.changeset/serious-rats-jump.md b/.changeset/serious-rats-jump.md deleted file mode 100644 index f6f39156ca16..000000000000 --- a/.changeset/serious-rats-jump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: update link in JSDoc diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 804ad8debffe..505bf17e4fa0 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.7.7 +### Patch Changes + + +- fix: update link in JSDoc ([#12963](https://github.com/sveltejs/kit/pull/12963)) + ## 2.7.6 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index d4ed25cc958d..fb7a3b8d6bfd 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.7.6", + "version": "2.7.7", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index b2782665011c..2c2d0ed224ae 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.7.6'; +export const VERSION = '2.7.7'; From 92b2686314a7dbebee1761c3da7719d599f003c7 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Wed, 6 Nov 2024 03:30:45 +0800 Subject: [PATCH 394/454] feat: add action failure helper (#12878) closes #12611 Exposes a helper method to check if a variable is an instanceof ActionFailure --- .changeset/fresh-guests-knock.md | 5 +++++ packages/kit/src/exports/index.js | 9 +++++++++ packages/kit/types/index.d.ts | 5 +++++ 3 files changed, 19 insertions(+) create mode 100644 .changeset/fresh-guests-knock.md diff --git a/.changeset/fresh-guests-knock.md b/.changeset/fresh-guests-knock.md new file mode 100644 index 000000000000..19db1582ae4e --- /dev/null +++ b/.changeset/fresh-guests-knock.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': minor +--- + +feat: add helper to identify `ActionFailure` objects diff --git a/packages/kit/src/exports/index.js b/packages/kit/src/exports/index.js index 32fb827dc629..5454a2e15e31 100644 --- a/packages/kit/src/exports/index.js +++ b/packages/kit/src/exports/index.js @@ -190,3 +190,12 @@ export function fail(status, data) { // @ts-expect-error unique symbol missing return new ActionFailure(status, data); } + +/** + * Checks whether this is an action failure thrown by {@link fail}. + * @param {unknown} e The object to check. + * @return {e is import('./public.js').ActionFailure} + */ +export function isActionFailure(e) { + return e instanceof ActionFailure; +} diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index c943a2bc7179..237b3e3ff57e 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -1826,6 +1826,11 @@ declare module '@sveltejs/kit' { * @param data Data associated with the failure (e.g. validation errors) * */ export function fail<T extends Record<string, unknown> | undefined = undefined>(status: number, data: T): ActionFailure<T>; + /** + * Checks whether this is an action failure thrown by {@link fail}. + * @param e The object to check. + * */ + export function isActionFailure(e: unknown): e is ActionFailure<undefined>; export type LessThan<TNumber extends number, TArray extends any[] = []> = TNumber extends TArray['length'] ? TArray[number] : LessThan<TNumber, [...TArray, TArray['length']]>; export type NumericRange<TStart extends number, TEnd extends number> = Exclude<TEnd | LessThan<TEnd>, LessThan<TStart>>; export const VERSION: string; From 030a099ae7aa15a66833f82f6d9e3012aea17276 Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Wed, 6 Nov 2024 20:26:59 -0500 Subject: [PATCH 395/454] fix: disregard presence/absence of trailing slash in prerendered redirect (#12966) * fix: disregard presence/absence of trailing slash in prerendered redirect * handle edge case * tweak comment placement --- .changeset/seven-kangaroos-talk.md | 5 +++++ packages/adapter-vercel/index.js | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .changeset/seven-kangaroos-talk.md diff --git a/.changeset/seven-kangaroos-talk.md b/.changeset/seven-kangaroos-talk.md new file mode 100644 index 000000000000..a9eed6c82b20 --- /dev/null +++ b/.changeset/seven-kangaroos-talk.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-vercel': patch +--- + +fix: disregard presence/absence of trailing slash in prerendered redirect diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index bef15fc1ccfe..bb9114a0c10e 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -444,7 +444,17 @@ function static_vercel_config(builder, config, dir) { /** @type {import('./index.js').ImagesConfig | undefined} */ const images = config.images; - for (const [src, redirect] of builder.prerendered.redirects) { + for (let [src, redirect] of builder.prerendered.redirects) { + if (src.replace(/\/$/, '') === redirect.location.replace(/\/$/, '')) { + // ignore the extreme edge case of a `/foo` -> `/foo/` redirect, + // which would only arise if the response was generated by a + // `handle` hook or outside the app altogether (since you + // can't declaratively create both routes) + } else { + // redirect both `/foo` and `/foo/` to `redirect.location` + src = src.replace(/\/?$/, '/?'); + } + prerendered_redirects.push({ src, headers: { From be39f069875a7de1dcf4b1419c3200c838f11198 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 20:28:43 -0500 Subject: [PATCH 396/454] Version Packages (#12965) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/fresh-guests-knock.md | 5 ----- .changeset/seven-kangaroos-talk.md | 5 ----- packages/adapter-vercel/CHANGELOG.md | 9 +++++++++ packages/adapter-vercel/package.json | 2 +- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 7 files changed, 18 insertions(+), 13 deletions(-) delete mode 100644 .changeset/fresh-guests-knock.md delete mode 100644 .changeset/seven-kangaroos-talk.md diff --git a/.changeset/fresh-guests-knock.md b/.changeset/fresh-guests-knock.md deleted file mode 100644 index 19db1582ae4e..000000000000 --- a/.changeset/fresh-guests-knock.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': minor ---- - -feat: add helper to identify `ActionFailure` objects diff --git a/.changeset/seven-kangaroos-talk.md b/.changeset/seven-kangaroos-talk.md deleted file mode 100644 index a9eed6c82b20..000000000000 --- a/.changeset/seven-kangaroos-talk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/adapter-vercel': patch ---- - -fix: disregard presence/absence of trailing slash in prerendered redirect diff --git a/packages/adapter-vercel/CHANGELOG.md b/packages/adapter-vercel/CHANGELOG.md index ba6d4a937ab8..6ef0f2787c62 100644 --- a/packages/adapter-vercel/CHANGELOG.md +++ b/packages/adapter-vercel/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-vercel +## 5.4.7 +### Patch Changes + + +- fix: disregard presence/absence of trailing slash in prerendered redirect ([#12966](https://github.com/sveltejs/kit/pull/12966)) + +- Updated dependencies [[`92b2686314a7dbebee1761c3da7719d599f003c7`](https://github.com/sveltejs/kit/commit/92b2686314a7dbebee1761c3da7719d599f003c7)]: + - @sveltejs/kit@2.8.0 + ## 5.4.6 ### Patch Changes diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 096e23b80779..f8e1f6cf0feb 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-vercel", - "version": "5.4.6", + "version": "5.4.7", "description": "A SvelteKit adapter that creates a Vercel app", "keywords": [ "adapter", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 505bf17e4fa0..02f046987b9e 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.8.0 +### Minor Changes + + +- feat: add helper to identify `ActionFailure` objects ([#12878](https://github.com/sveltejs/kit/pull/12878)) + ## 2.7.7 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index fb7a3b8d6bfd..2d6c4df160ee 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.7.7", + "version": "2.8.0", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 2c2d0ed224ae..3b8f5a9e08c1 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.7.7'; +export const VERSION = '2.8.0'; From 598129a4f9436ba34d551c73dfa8f8932af92da2 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 7 Nov 2024 14:29:54 -0800 Subject: [PATCH 397/454] chore: move migrate package to CLI repo (#12971) --- .changeset/config.json | 2 +- .prettierrc | 3 +- README.md | 1 - packages/migrate/CHANGELOG.md | 345 -------------- packages/migrate/README.md | 31 -- packages/migrate/bin.js | 27 -- packages/migrate/migrations/package/index.js | 81 ---- .../migrations/package/migrate_config.js | 81 ---- .../migrations/package/migrate_config.spec.js | 78 ---- .../migrate/migrations/package/migrate_pkg.js | 211 --------- .../migrations/package/migrate_pkg.spec.js | 157 ------- packages/migrate/migrations/routes/index.js | 211 --------- .../routes/migrate_page_js/index.js | 195 -------- .../routes/migrate_page_js/index.spec.js | 10 - .../routes/migrate_page_js/samples.md | 380 ---------------- .../routes/migrate_page_server/index.js | 122 ----- .../routes/migrate_page_server/index.spec.js | 10 - .../routes/migrate_page_server/samples.md | 181 -------- .../routes/migrate_scripts/index.js | 150 ------- .../routes/migrate_scripts/index.spec.js | 14 - .../routes/migrate_scripts/samples.md | 247 ---------- .../migrations/routes/migrate_server/index.js | 190 -------- .../routes/migrate_server/index.spec.js | 10 - .../routes/migrate_server/samples.md | 212 --------- packages/migrate/migrations/routes/tasks.js | 5 - packages/migrate/migrations/routes/utils.js | 374 ---------------- .../migrations/self-closing-tags/index.js | 57 --- .../migrations/self-closing-tags/migrate.js | 192 -------- .../self-closing-tags/migrate.spec.js | 32 -- packages/migrate/migrations/svelte-4/index.js | 112 ----- .../migrate/migrations/svelte-4/migrate.js | 348 --------------- .../migrations/svelte-4/migrate.spec.js | 382 ---------------- packages/migrate/migrations/svelte-5/index.js | 216 --------- .../migrate/migrations/svelte-5/migrate.js | 129 ------ .../migrations/svelte-5/migrate.spec.js | 135 ------ .../migrate/migrations/sveltekit-2/index.js | 167 ------- .../migrate/migrations/sveltekit-2/migrate.js | 318 ------------- .../migrations/sveltekit-2/migrate.spec.js | 32 -- .../sveltekit-2/svelte-config-samples.md | 126 ------ .../sveltekit-2/tsconfig-samples.md | 40 -- .../migrations/sveltekit-2/tsjs-samples.md | 170 ------- packages/migrate/package.json | 54 --- packages/migrate/tsconfig.json | 12 - packages/migrate/utils.js | 421 ------------------ packages/migrate/utils.spec.js | 93 ---- pnpm-lock.yaml | 110 ----- 46 files changed, 2 insertions(+), 6472 deletions(-) delete mode 100644 packages/migrate/CHANGELOG.md delete mode 100644 packages/migrate/README.md delete mode 100755 packages/migrate/bin.js delete mode 100644 packages/migrate/migrations/package/index.js delete mode 100644 packages/migrate/migrations/package/migrate_config.js delete mode 100644 packages/migrate/migrations/package/migrate_config.spec.js delete mode 100644 packages/migrate/migrations/package/migrate_pkg.js delete mode 100644 packages/migrate/migrations/package/migrate_pkg.spec.js delete mode 100644 packages/migrate/migrations/routes/index.js delete mode 100644 packages/migrate/migrations/routes/migrate_page_js/index.js delete mode 100644 packages/migrate/migrations/routes/migrate_page_js/index.spec.js delete mode 100644 packages/migrate/migrations/routes/migrate_page_js/samples.md delete mode 100644 packages/migrate/migrations/routes/migrate_page_server/index.js delete mode 100644 packages/migrate/migrations/routes/migrate_page_server/index.spec.js delete mode 100644 packages/migrate/migrations/routes/migrate_page_server/samples.md delete mode 100644 packages/migrate/migrations/routes/migrate_scripts/index.js delete mode 100644 packages/migrate/migrations/routes/migrate_scripts/index.spec.js delete mode 100644 packages/migrate/migrations/routes/migrate_scripts/samples.md delete mode 100644 packages/migrate/migrations/routes/migrate_server/index.js delete mode 100644 packages/migrate/migrations/routes/migrate_server/index.spec.js delete mode 100644 packages/migrate/migrations/routes/migrate_server/samples.md delete mode 100644 packages/migrate/migrations/routes/tasks.js delete mode 100644 packages/migrate/migrations/routes/utils.js delete mode 100644 packages/migrate/migrations/self-closing-tags/index.js delete mode 100644 packages/migrate/migrations/self-closing-tags/migrate.js delete mode 100644 packages/migrate/migrations/self-closing-tags/migrate.spec.js delete mode 100644 packages/migrate/migrations/svelte-4/index.js delete mode 100644 packages/migrate/migrations/svelte-4/migrate.js delete mode 100644 packages/migrate/migrations/svelte-4/migrate.spec.js delete mode 100644 packages/migrate/migrations/svelte-5/index.js delete mode 100644 packages/migrate/migrations/svelte-5/migrate.js delete mode 100644 packages/migrate/migrations/svelte-5/migrate.spec.js delete mode 100644 packages/migrate/migrations/sveltekit-2/index.js delete mode 100644 packages/migrate/migrations/sveltekit-2/migrate.js delete mode 100644 packages/migrate/migrations/sveltekit-2/migrate.spec.js delete mode 100644 packages/migrate/migrations/sveltekit-2/svelte-config-samples.md delete mode 100644 packages/migrate/migrations/sveltekit-2/tsconfig-samples.md delete mode 100644 packages/migrate/migrations/sveltekit-2/tsjs-samples.md delete mode 100644 packages/migrate/package.json delete mode 100644 packages/migrate/tsconfig.json delete mode 100644 packages/migrate/utils.js delete mode 100644 packages/migrate/utils.spec.js diff --git a/.changeset/config.json b/.changeset/config.json index 246e927640ff..fc418611aeac 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -6,5 +6,5 @@ "access": "public", "baseBranch": "main", "bumpVersionsWithWorkspaceProtocolOnly": true, - "ignore": ["!(@sveltejs/*|create-svelte|svelte-migrate)"] + "ignore": ["!(@sveltejs/*|create-svelte)"] } diff --git a/.prettierrc b/.prettierrc index 2d14308ebeb3..6f5a1610c17f 100644 --- a/.prettierrc +++ b/.prettierrc @@ -27,8 +27,7 @@ "packages/package/test/fixtures/**/expected/**/*", "packages/package/test/watch/expected/**/*", "packages/package/test/watch/package/**/*", - "packages/kit/src/core/postbuild/fixtures/**/*", - "packages/migrate/migrations/routes/*/samples.md" + "packages/kit/src/core/postbuild/fixtures/**/*" ], "options": { "requirePragma": true diff --git a/README.md b/README.md index bdc90a935771..ada896b1fa99 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,6 @@ Web development, streamlined. Read the [documentation](https://svelte.dev/docs/k | [@sveltejs/enhanced-img](packages/enhanced-img) | [Changelog](packages/enhanced-img/CHANGELOG.md) | | [@sveltejs/package](packages/package) | [Changelog](packages/package/CHANGELOG.md) | | [create-svelte](packages/create-svelte) | [Changelog](packages/create-svelte/CHANGELOG.md) | -| [svelte-migrate](packages/migrate) | [Changelog](packages/migrate/CHANGELOG.md) | [Additional adapters](https://sveltesociety.dev/packages?category=sveltekit-adapters) are maintained by the community. diff --git a/packages/migrate/CHANGELOG.md b/packages/migrate/CHANGELOG.md deleted file mode 100644 index 96020c5b63b7..000000000000 --- a/packages/migrate/CHANGELOG.md +++ /dev/null @@ -1,345 +0,0 @@ -# svelte-migrate - -## 1.6.8 -### Patch Changes - - -- fix: prevent duplicate imports ([#12931](https://github.com/sveltejs/kit/pull/12931)) - -## 1.6.7 -### Patch Changes - - -- fix: prefer TS in unclear migration situations if `tsconfig.json` found ([#12881](https://github.com/sveltejs/kit/pull/12881)) - -## 1.6.6 -### Patch Changes - - -- docs: update URLs for new svelte.dev site ([#12857](https://github.com/sveltejs/kit/pull/12857)) - -## 1.6.5 -### Patch Changes - - -- docs: demonstrate sv migrate over prior commands ([#12840](https://github.com/sveltejs/kit/pull/12840)) - - -- fix: bump enhanced-img version to avoid peer dep warning ([#12852](https://github.com/sveltejs/kit/pull/12852)) - -## 1.6.4 -### Patch Changes - - -- fix: migrate `svelte` and `vite-plugin-svelte` to latest ([#12838](https://github.com/sveltejs/kit/pull/12838)) - -## 1.6.3 -### Patch Changes - - -- chore: add `svelte-eslint-parser` to list of migratable dependencies ([#12828](https://github.com/sveltejs/kit/pull/12828)) - -## 1.6.2 -### Patch Changes - - -- chore: upgrade to ts-morph 24 ([#12781](https://github.com/sveltejs/kit/pull/12781)) - -## 1.6.1 -### Patch Changes - - -- chore: upgrade to ts-morph 23 ([#12607](https://github.com/sveltejs/kit/pull/12607)) - -## 1.6.0 -### Minor Changes - - -- feat: pass filename to `migrate` to allow for `svelte:self` migration ([#12749](https://github.com/sveltejs/kit/pull/12749)) - - -### Patch Changes - - -- fix: prompt SvelteKit 2 migration during Svelte 5 migration if necessary ([#12748](https://github.com/sveltejs/kit/pull/12748)) - -## 1.5.1 -### Patch Changes - - -- fix: use `next` versions for `svelte` and `vite-plugin-svelte` ([#12729](https://github.com/sveltejs/kit/pull/12729)) - -## 1.5.0 -### Minor Changes - - -- feat: add Svelte 5 migration ([#12519](https://github.com/sveltejs/kit/pull/12519)) - -## 1.4.5 -### Patch Changes - - -- chore: configure provenance in a simpler manner ([#12570](https://github.com/sveltejs/kit/pull/12570)) - -## 1.4.4 -### Patch Changes - - -- chore: package provenance ([#12567](https://github.com/sveltejs/kit/pull/12567)) - -## 1.4.3 - -### Patch Changes - -- chore: add keywords for discovery in npm search ([#12330](https://github.com/sveltejs/kit/pull/12330)) - -## 1.4.2 - -### Patch Changes - -- fix: bump import-meta-resolve to remove deprecation warnings ([#12240](https://github.com/sveltejs/kit/pull/12240)) - -## 1.4.1 - -### Patch Changes - -- fix: continue traversing the children of non-self-closing elements ([#12175](https://github.com/sveltejs/kit/pull/12175)) - -## 1.4.0 - -### Minor Changes - -- feat: add self-closing-tags migration ([#12128](https://github.com/sveltejs/kit/pull/12128)) - -## 1.3.8 - -### Patch Changes - -- chore(deps): update dependency ts-morph to v22 ([`4447269e979f2b5be18e0fded0b5843a6258542d`](https://github.com/sveltejs/kit/commit/4447269e979f2b5be18e0fded0b5843a6258542d)) - -## 1.3.7 - -### Patch Changes - -- fix: don't downgrade versions when bumping dependencies ([#11716](https://github.com/sveltejs/kit/pull/11716)) - -## 1.3.6 - -### Patch Changes - -- fix: correct link to docs ([#11407](https://github.com/sveltejs/kit/pull/11407)) - -## 1.3.5 - -### Patch Changes - -- chore: update primary branch from master to main ([`47779436c5f6c4d50011d0ef8b2709a07c0fec5d`](https://github.com/sveltejs/kit/commit/47779436c5f6c4d50011d0ef8b2709a07c0fec5d)) - -## 1.3.4 - -### Patch Changes - -- suggest running migrate command with latest if migration does not exist ([#11362](https://github.com/sveltejs/kit/pull/11362)) - -## 1.3.3 - -### Patch Changes - -- chore: insert package at sorted position ([#11332](https://github.com/sveltejs/kit/pull/11332)) - -- fix: adjust cookie migration logic, note installation ([#11331](https://github.com/sveltejs/kit/pull/11331)) - -## 1.3.2 - -### Patch Changes - -- fix: handle jsconfig.json ([#11325](https://github.com/sveltejs/kit/pull/11325)) - -## 1.3.1 - -### Patch Changes - -- chore: fix broken migration links ([#11320](https://github.com/sveltejs/kit/pull/11320)) - -## 1.3.0 - -### Minor Changes - -- feat: add sveltekit v2 migration ([#11294](https://github.com/sveltejs/kit/pull/11294)) - -## 1.2.8 - -### Patch Changes - -- chore(deps): update dependency ts-morph to v21 ([#11181](https://github.com/sveltejs/kit/pull/11181)) - -## 1.2.7 - -### Patch Changes - -- chore(deps): update dependency ts-morph to v20 ([#10766](https://github.com/sveltejs/kit/pull/10766)) - -## 1.2.6 - -### Patch Changes - -- fix: do not downgrade versions ([#10352](https://github.com/sveltejs/kit/pull/10352)) - -## 1.2.5 - -### Patch Changes - -- fix: note old eslint plugin deprecation ([#10319](https://github.com/sveltejs/kit/pull/10319)) - -## 1.2.4 - -### Patch Changes - -- fix: ensure glob finds all files in folders ([#10230](https://github.com/sveltejs/kit/pull/10230)) - -## 1.2.3 - -### Patch Changes - -- fix: handle missing fields in migrate script ([#10221](https://github.com/sveltejs/kit/pull/10221)) - -## 1.2.2 - -### Patch Changes - -- fix: finalize svelte-4 migration ([#10195](https://github.com/sveltejs/kit/pull/10195)) - -- fix: changed `index` to `index.d.ts` in `typesVersions` ([#10180](https://github.com/sveltejs/kit/pull/10180)) - -## 1.2.1 - -### Patch Changes - -- docs: update readme ([#10066](https://github.com/sveltejs/kit/pull/10066)) - -## 1.2.0 - -### Minor Changes - -- feat: add Svelte 4 migration ([#9729](https://github.com/sveltejs/kit/pull/9729)) - -## 1.1.3 - -### Patch Changes - -- fix: include index in typesVersions because it's always matched ([#9147](https://github.com/sveltejs/kit/pull/9147)) - -## 1.1.2 - -### Patch Changes - -- fix: update existing exports with prepended outdir ([#9133](https://github.com/sveltejs/kit/pull/9133)) - -- fix: use typesVersions to wire up deep imports ([#9133](https://github.com/sveltejs/kit/pull/9133)) - -## 1.1.1 - -### Patch Changes - -- fix: include utils in migrate's published files ([#9085](https://github.com/sveltejs/kit/pull/9085)) - -## 1.1.0 - -### Minor Changes - -- feat: add `@sveltejs/package` migration (v1->v2) ([#8922](https://github.com/sveltejs/kit/pull/8922)) - -## 1.0.1 - -### Patch Changes - -- fix: correctly check for old load props ([#8537](https://github.com/sveltejs/kit/pull/8537)) - -## 1.0.0 - -### Major Changes - -First major release, see below for the history of changes that lead up to this. -Starting from now all releases follow semver and changes will be listed as Major/Minor/Patch - -## 1.0.0-next.13 - -### Patch Changes - -- fix: more robust uppercase migration ([#7033](https://github.com/sveltejs/kit/pull/7033)) - -## 1.0.0-next.12 - -### Patch Changes - -- feat: do uppercase http verbs migration on the fly ([#6371](https://github.com/sveltejs/kit/pull/6371)) - -## 1.0.0-next.11 - -### Patch Changes - -- fix: git mv files correctly when they contain \$ characters ([#6129](https://github.com/sveltejs/kit/pull/6129)) - -## 1.0.0-next.10 - -### Patch Changes - -- Revert change to suggest props destructuring ([#6099](https://github.com/sveltejs/kit/pull/6099)) - -## 1.0.0-next.9 - -### Patch Changes - -- Handle Error without message, handle status 200, handle missing body ([#6096](https://github.com/sveltejs/kit/pull/6096)) - -## 1.0.0-next.8 - -### Patch Changes - -- Suggest props destructuring if possible ([#6069](https://github.com/sveltejs/kit/pull/6069)) -- Fix typo in migration task ([#6070](https://github.com/sveltejs/kit/pull/6070)) - -## 1.0.0-next.7 - -### Patch Changes - -- Migrate type comments on arrow functions ([#5933](https://github.com/sveltejs/kit/pull/5933)) -- Use LayoutLoad inside +layout.js files ([#5931](https://github.com/sveltejs/kit/pull/5931)) - -## 1.0.0-next.6 - -### Patch Changes - -- Create `.ts` files from `<script context="module" lang="ts">` ([#5905](https://github.com/sveltejs/kit/pull/5905)) - -## 1.0.0-next.5 - -### Patch Changes - -- Rewrite type names ([#5778](https://github.com/sveltejs/kit/pull/5778)) - -## 1.0.0-next.4 - -### Patch Changes - -- handle lone return statements ([#5831](https://github.com/sveltejs/kit/pull/5831)) -- Fix error placement on (arrow) function when checking load input ([#5840](https://github.com/sveltejs/kit/pull/5840)) - -## 1.0.0-next.3 - -### Patch Changes - -- handle more import cases ([#5828](https://github.com/sveltejs/kit/pull/5828)) -- check load function input ([#5838](https://github.com/sveltejs/kit/pull/5838)) - -## 1.0.0-next.2 - -### Patch Changes - -- Correctly rename files with spaces when migrating ([#5820](https://github.com/sveltejs/kit/pull/5820)) - -## 1.0.0-next.1 - -### Patch Changes - -- Add a README ([#5817](https://github.com/sveltejs/kit/pull/5817)) diff --git a/packages/migrate/README.md b/packages/migrate/README.md deleted file mode 100644 index 1dceb6d6f89e..000000000000 --- a/packages/migrate/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# svelte-migrate - -A CLI for migrating Svelte(Kit) codebases. - -Run it directly using: - -``` -npx svelte-migrate [migration] -``` - -Or via the unified Svlete CLI with: - -``` -npx sv migrate [migration] -``` - -## Migrations - -| Migration | From | To | Guide | -| ------------- | --------------------- | --------------------- | --------------------------------------------------------------- | -| `sveltekit-2` | SvelteKit 1.0 | SvelteKit 2.0 | [Website](https://svelte.dev/docs/kit/migrating-to-sveltekit-2) | -| `svelte-4` | Svelte 3 | Svelte 4 | [Website](https://svelte.dev/docs/svelte/v4-migration-guide) | -| `svelte-5` | Svelte 4 | Svelte 5 | | -| `package` | `@sveltejs/package@1` | `@sveltejs/package@2` | [#8922](https://github.com/sveltejs/kit/pull/8922) | -| `routes` | SvelteKit pre-1.0 | SvelteKit 1.0 | [#5774](https://github.com/sveltejs/kit/discussions/5774) | - -Some migrations may annotate your codebase with tasks for completion that you can find by searching for `@migration`. - -## Changelog - -[The Changelog for this package is available on GitHub](https://github.com/sveltejs/kit/blob/main/packages/migrate/CHANGELOG.md). diff --git a/packages/migrate/bin.js b/packages/migrate/bin.js deleted file mode 100755 index df8d7de7479d..000000000000 --- a/packages/migrate/bin.js +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env node -import fs from 'node:fs'; -import process from 'node:process'; -import { fileURLToPath } from 'node:url'; -import colors from 'kleur'; - -const migration = process.argv[2]; -const dir = fileURLToPath(new URL('.', import.meta.url)); - -const migrations = fs - .readdirSync(`${dir}/migrations`) - .filter((migration) => fs.existsSync(`${dir}/migrations/${migration}/index.js`)); - -if (migrations.includes(migration)) { - const { migrate } = await import(`./migrations/${migration}/index.js`); - migrate(); -} else { - console.error( - colors - .bold() - .red( - `You must specify one of the following migrations: ${migrations.join(', ')}\n` + - 'If you expected this to work, try re-running the command with the latest svelte-migrate version:\n' + - ` npx svelte-migrate@latest ${migration}` - ) - ); -} diff --git a/packages/migrate/migrations/package/index.js b/packages/migrate/migrations/package/index.js deleted file mode 100644 index 0e36547686f8..000000000000 --- a/packages/migrate/migrations/package/index.js +++ /dev/null @@ -1,81 +0,0 @@ -import fs from 'node:fs'; -import colors from 'kleur'; -import path from 'node:path'; -import process from 'node:process'; -import prompts from 'prompts'; -import { pathToFileURL } from 'node:url'; -import { bail, check_git } from '../../utils.js'; -import { migrate_config } from './migrate_config.js'; -import { migrate_pkg } from './migrate_pkg.js'; - -export async function migrate() { - if (!fs.existsSync('svelte.config.js')) { - bail('Please re-run this script in a directory with a svelte.config.js'); - } - if (!fs.existsSync('package.json')) { - bail('Please re-run this script in a directory with a package.json'); - } - - console.log( - colors - .bold() - .yellow( - '\nThis will update your svelte.config.js and package.json in the current directory\n' - ) - ); - - const use_git = check_git(); - - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Continue?', - initial: false - }); - - if (!response.value) { - process.exit(1); - } - - const { default: config } = await import(pathToFileURL(path.resolve('svelte.config.js')).href); - const has_package_config = !!config.package; - - config.package = { - source: path.resolve(config.kit?.files?.lib ?? config.package?.source ?? 'src/lib'), - dir: config.package?.dir ?? 'package', - exports: - config.package?.exports ?? - ((/** @type {string} */ filepath) => !/^_|\/_|\.d\.ts$/.test(filepath)), - files: config.package?.files ?? (() => true), - emitTypes: config.package?.emitTypes ?? true - }; - config.extensions = config.extensions ?? ['.svelte']; - - migrate_pkg(config); - - if (has_package_config) { - migrate_config(); - } - - console.log(colors.bold().green('✔ Your project has been migrated')); - - console.log('\nRecommended next steps:\n'); - - const cyan = colors.bold().cyan; - - const tasks = [ - use_git && cyan('git commit -m "migration to @sveltejs/package v2"'), - 'Review the migration guide at https://github.com/sveltejs/kit/pull/8922', - 'Read the updated docs at https://svelte.dev/docs/kit/packaging' - ].filter(Boolean); - - tasks.forEach((task, i) => { - console.log(` ${i + 1}: ${task}`); - }); - - console.log(''); - - if (use_git) { - console.log(`Run ${cyan('git diff')} to review changes.\n`); - } -} diff --git a/packages/migrate/migrations/package/migrate_config.js b/packages/migrate/migrations/package/migrate_config.js deleted file mode 100644 index b401626d4393..000000000000 --- a/packages/migrate/migrations/package/migrate_config.js +++ /dev/null @@ -1,81 +0,0 @@ -import fs from 'node:fs'; -import colors from 'kleur'; -import MagicString from 'magic-string'; -import ts from 'typescript'; - -export function migrate_config() { - try { - const content = fs.readFileSync('svelte.config.js', 'utf8'); - fs.writeFileSync('svelte.config.js', remove_package_from_config(content)); - } catch { - console.log( - colors - .bold() - .yellow('Could not remove package config from svelte.config.js, please remove it manually') - ); - } -} - -/** - * @param {string} content - */ -export function remove_package_from_config(content) { - const ast = ts.createSourceFile( - 'filename.ts', - content, - ts.ScriptTarget.Latest, - true, - ts.ScriptKind.TS - ); - - const code = new MagicString(content); - - for (const statement of ast.statements) { - if (ts.isExportAssignment(statement)) { - if (ts.isObjectLiteralExpression(statement.expression)) { - remove(statement.expression); - } else if (ts.isIdentifier(statement.expression)) { - for (const statement2 of ast.statements) { - if (ts.isVariableStatement(statement2)) { - for (const declaration of statement2.declarationList.declarations) { - if ( - ts.isIdentifier(declaration.name) && - declaration.name.text === statement.expression.text && - declaration.initializer && - ts.isObjectLiteralExpression(declaration.initializer) - ) { - remove(declaration.initializer); - } - } - } - } - } - } - } - - return code.toString(); - - /** @param {ts.ObjectLiteralExpression} expression */ - function remove(expression) { - for (let i = 0; i < expression.properties.length; i++) { - const property = expression.properties[i]; - if ( - ts.isPropertyAssignment(property) && - ts.isIdentifier(property.name) && - property.name.text === 'package' && - ts.isObjectLiteralExpression(property.initializer) - ) { - if (expression.properties.length === 1) { - code.overwrite(expression.getStart(), expression.getEnd(), '{}'); - } else { - const next_property = expression.properties[i + 1]; - if (next_property) { - code.remove(property.getStart(), next_property.getStart()); - } else { - code.remove(property.getStart(), content.lastIndexOf('}', expression.getEnd())); - } - } - } - } - } -} diff --git a/packages/migrate/migrations/package/migrate_config.spec.js b/packages/migrate/migrations/package/migrate_config.spec.js deleted file mode 100644 index e0e9480b8c11..000000000000 --- a/packages/migrate/migrations/package/migrate_config.spec.js +++ /dev/null @@ -1,78 +0,0 @@ -import { assert, test } from 'vitest'; -import { remove_package_from_config } from './migrate_config.js'; - -test('Removes package config #1', () => { - const result = remove_package_from_config(` - export default { - kit: { - files: { - lib: 'src/lib' - } - }, - package: { - dir: 'package', - exports: (filepath) => !/^_|\\/_|\\.d\\.ts$/.test(filepath), - files: () => true - }, - preprocess: [] - }`); - assert.equal( - result, - ` - export default { - kit: { - files: { - lib: 'src/lib' - } - }, - preprocess: [] - }` - ); -}); - -test('Removes package config #2', () => { - const result = remove_package_from_config(` - export default { - package: { - dir: 'package', - exports: (filepath) => !/^_|\\/_|\\.d\\.ts$/.test(filepath), - files: () => true - }, - }`); - assert.equal( - result, - ` - export default {}` - ); -}); - -test('Removes package config #3', () => { - const result = remove_package_from_config(` - const config = { - package: { - dir: 'package', - exports: (filepath) => !/^_|\\/_|\\.d\\.ts$/.test(filepath), - files: () => true - }, - }; - export default config;`); - assert.equal( - result, - ` - const config = {}; - export default config;` - ); -}); - -test('Leaves config untouched', () => { - const content = ` - export default { - kit: { - files: { - lib: 'src/lib' - } - }, - }`; - const result = remove_package_from_config(content); - assert.equal(result, content); -}); diff --git a/packages/migrate/migrations/package/migrate_pkg.js b/packages/migrate/migrations/package/migrate_pkg.js deleted file mode 100644 index 3e5f5b6ab273..000000000000 --- a/packages/migrate/migrations/package/migrate_pkg.js +++ /dev/null @@ -1,211 +0,0 @@ -import fs from 'node:fs'; -import path from 'node:path'; -import colors from 'kleur'; -import { guess_indent, posixify, walk } from '../../utils.js'; - -/** - * @param {any} config - */ -export function migrate_pkg(config) { - const files = scan(config); - const pkg_str = fs.readFileSync('package.json', 'utf8'); - const pkg = update_pkg_json(config, JSON.parse(pkg_str), files); - fs.writeFileSync('package.json', JSON.stringify(pkg, null, guess_indent(pkg_str) ?? '\t')); -} - -/** - * @param {any} config - */ -function scan(config) { - return walk(config.package.source).map((file) => analyze(config, file)); -} - -/** - * @param {any} config - * @param {string} file - */ -function analyze(config, file) { - const name = posixify(file); - - const svelte_extension = config.extensions.find((/** @type {string} */ ext) => - name.endsWith(ext) - ); - - const dest = svelte_extension - ? name.slice(0, -svelte_extension.length) + '.svelte' - : name.endsWith('.d.ts') - ? name - : name.endsWith('.ts') - ? name.slice(0, -3) + '.js' - : name; - - return { - name, - dest, - is_included: config.package.files(name), - is_exported: config.package.exports(name), - is_svelte: !!svelte_extension - }; -} - -/** - * @param {any} config - * @param {any} pkg - * @param {ReturnType<typeof analyze>[]} files - */ -export function update_pkg_json(config, pkg, files) { - const out_dir = path.relative('.', config.package.dir); - - // See: https://pnpm.io/package_json#publishconfigdirectory - if (pkg.publishConfig?.directory || pkg.linkDirectory?.directory) { - console.log( - colors.yellow( - 'Detected "publishConfig.directory" or "linkDirectory.directory" fields in your package.json. ' + - 'This migration removes them, which may or may not be what you want. Please review closely.' - ) - ); - delete pkg.publishConfig?.directory; - delete pkg.linkDirectory?.directory; - } - - for (const key in pkg.scripts || []) { - const script = pkg.scripts[key]; - if (script.includes('svelte-package')) { - pkg.scripts[key] = script.replace('svelte-package', `svelte-package -o ${out_dir}`); - } - } - - pkg.type = 'module'; - pkg.exports = { - './package.json': './package.json', - ...pkg.exports - }; - - pkg.files = pkg.files || []; - if (!pkg.files.includes(out_dir)) { - pkg.files.push(out_dir); - } - - if (pkg.devDependencies?.['@sveltejs/package']) { - pkg.devDependencies['@sveltejs/package'] = '^2.0.0'; - } - - /** @type {Record<string, string>} */ - const clashes = {}; - /** @type {Record<string, [string]>} */ - const types_versions = {}; - - for (const file of files) { - if (file.is_included && file.is_exported) { - const original = `$lib/${file.name}`; - const key = `./${file.dest}`.replace(/\/index\.js$|(\/[^/]+)\.js$/, '$1'); - - if (clashes[key]) { - console.log( - colors.yellow( - `Duplicate "${key}" export. Closely review your "exports" field in package.json after the migration.` - ) - ); - } - - const has_type = config.package.emitTypes && (file.is_svelte || file.dest.endsWith('.js')); - const out_dir_type_path = `./${out_dir}/${ - file.is_svelte ? `${file.dest}.d.ts` : file.dest.slice(0, -'.js'.length) + '.d.ts' - }`; - - if (has_type) { - const type_key = key.slice(2) || 'index.d.ts'; - if (!pkg.exports[key]) { - types_versions[type_key] = [out_dir_type_path]; - } else { - const path_without_ext = pkg.exports[key].slice( - 0, - -path.extname(pkg.exports[key]).length - ); - types_versions[type_key] = [ - `./${out_dir}/${(pkg.exports[key].types ?? path_without_ext + '.d.ts').slice(2)}` - ]; - } - } - - if (!pkg.exports[key]) { - const needs_svelte_condition = file.is_svelte || path.basename(file.dest) === 'index.js'; - // JSON.stringify will remove the undefined entries - pkg.exports[key] = { - types: has_type ? out_dir_type_path : undefined, - svelte: needs_svelte_condition ? `./${out_dir}/${file.dest}` : undefined, - default: `./${out_dir}/${file.dest}` - }; - - if (Object.values(pkg.exports[key]).filter(Boolean).length === 1) { - pkg.exports[key] = pkg.exports[key].default; - } - } else { - // Rewrite existing export to point to the new output directory - if (typeof pkg.exports[key] === 'string') { - pkg.exports[key] = prepend_out_dir(pkg.exports[key], out_dir); - } else { - for (const condition in pkg.exports[key]) { - if (typeof pkg.exports[key][condition] === 'string') { - pkg.exports[key][condition] = prepend_out_dir(pkg.exports[key][condition], out_dir); - } - } - } - } - - clashes[key] = original; - } - } - - if (!pkg.svelte && files.some((file) => file.is_svelte)) { - // Several heuristics in Kit/vite-plugin-svelte to tell Vite to mark Svelte packages - // rely on the "svelte" property. Vite/Rollup/Webpack plugin can all deal with it. - // See https://github.com/sveltejs/kit/issues/1959 for more info and related threads. - if (pkg.exports['.']) { - const svelte_export = - typeof pkg.exports['.'] === 'string' - ? pkg.exports['.'] - : pkg.exports['.'].svelte || pkg.exports['.'].import || pkg.exports['.'].default; - if (svelte_export) { - pkg.svelte = svelte_export; - } else { - console.log( - colors.yellow( - 'Cannot generate a "svelte" entry point because the "." entry in "exports" is not a string. Please specify a "svelte" entry point yourself\n' - ) - ); - } - } else { - console.log( - colors.yellow( - 'Cannot generate a "svelte" entry point because the "." entry in "exports" is missing. Please specify a "svelte" entry point yourself\n' - ) - ); - } - } else if (pkg.svelte) { - // Rewrite existing "svelte" field to point to the new output directory - pkg.svelte = prepend_out_dir(pkg.svelte, out_dir); - } - - // https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html#version-selection-with-typesversions - // A hack to get around the limitation that TS doesn't support "exports" field with moduleResolution: 'node' - if ( - Object.keys(types_versions).length > 1 || - (Object.keys(types_versions).length > 0 && !types_versions['index.d.ts']) - ) { - pkg.typesVersions = { '>4.0': types_versions }; - } - - return pkg; -} - -/** - * Rewrite existing path to point to the new output directory - * @param {string} path - * @param {string} out_dir - */ -function prepend_out_dir(path, out_dir) { - if (!path.startsWith(`./${out_dir}`) && path.startsWith('./')) { - return `./${out_dir}/${path.slice(2)}`; - } -} diff --git a/packages/migrate/migrations/package/migrate_pkg.spec.js b/packages/migrate/migrations/package/migrate_pkg.spec.js deleted file mode 100644 index 0ef10decc463..000000000000 --- a/packages/migrate/migrations/package/migrate_pkg.spec.js +++ /dev/null @@ -1,157 +0,0 @@ -import { expect, test } from 'vitest'; -import { update_pkg_json } from './migrate_pkg.js'; - -test('Updates package.json', () => { - const result = update_pkg_json( - { package: { dir: 'package', emitTypes: true } }, - { - name: 'foo', - version: '1.0.0', - scripts: { - packages: 'svelte-package' - }, - exports: { - './ignored': './something.js' - }, - svelte: './index.js' - }, - [ - { - name: 'foo/Bar.svelte', - dest: 'foo/Bar.svelte', - is_exported: true, - is_included: true, - is_svelte: true - }, - { - name: 'foo/Bar2.svelte', - dest: 'foo/Bar2.svelte', - is_exported: false, - is_included: false, - is_svelte: true - }, - { - name: 'baz.js', - dest: 'baz.js', - is_exported: true, - is_included: true, - is_svelte: false - }, - { - name: 'bar/index.js', - dest: 'bar/index.js', - is_exported: true, - is_included: true, - is_svelte: false - }, - { - name: 'index.js', - dest: 'index.js', - is_exported: true, - is_included: true, - is_svelte: false - }, - { - name: 'ignored.js', - dest: 'ignored.js', - is_exported: true, - is_included: true, - is_svelte: false - } - ] - ); - expect(JSON.parse(JSON.stringify(result))).toEqual({ - name: 'foo', - version: '1.0.0', - type: 'module', - files: ['package'], - scripts: { - packages: 'svelte-package -o package' - }, - exports: { - './package.json': './package.json', - '.': { - types: './package/index.d.ts', - svelte: './package/index.js', - default: './package/index.js' - }, - './foo/Bar.svelte': { - types: './package/foo/Bar.svelte.d.ts', - svelte: './package/foo/Bar.svelte', - default: './package/foo/Bar.svelte' - }, - './baz': { - types: './package/baz.d.ts', - default: './package/baz.js' - }, - './bar': { - types: './package/bar/index.d.ts', - svelte: './package/bar/index.js', - default: './package/bar/index.js' - }, - './ignored': './package/something.js' - }, - svelte: './package/index.js', - typesVersions: { - '>4.0': { - 'index.d.ts': ['./package/index.d.ts'], - 'foo/Bar.svelte': ['./package/foo/Bar.svelte.d.ts'], - baz: ['./package/baz.d.ts'], - bar: ['./package/bar/index.d.ts'], - ignored: ['./package/something.d.ts'] - } - } - }); -}); - -test('Updates package.json #2', () => { - const result = update_pkg_json( - { package: { dir: 'dist', emitTypes: false } }, - { - name: 'foo', - version: '1.0.0' - }, - [ - { - name: 'foo/Bar.svelte', - dest: 'foo/Bar.svelte', - is_exported: true, - is_included: true, - is_svelte: true - }, - { - name: 'baz.js', - dest: 'baz.js', - is_exported: true, - is_included: true, - is_svelte: false - }, - { - name: 'index.js', - dest: 'index.js', - is_exported: true, - is_included: true, - is_svelte: false - } - ] - ); - expect(JSON.parse(JSON.stringify(result))).toEqual({ - name: 'foo', - version: '1.0.0', - type: 'module', - files: ['dist'], - exports: { - './package.json': './package.json', - '.': { - svelte: './dist/index.js', - default: './dist/index.js' - }, - './foo/Bar.svelte': { - svelte: './dist/foo/Bar.svelte', - default: './dist/foo/Bar.svelte' - }, - './baz': './dist/baz.js' - }, - svelte: './dist/index.js' - }); -}); diff --git a/packages/migrate/migrations/routes/index.js b/packages/migrate/migrations/routes/index.js deleted file mode 100644 index 9f043327de6a..000000000000 --- a/packages/migrate/migrations/routes/index.js +++ /dev/null @@ -1,211 +0,0 @@ -import fs from 'node:fs'; -import colors from 'kleur'; -import path from 'node:path'; -import process from 'node:process'; -import prompts from 'prompts'; -import glob from 'tiny-glob/sync.js'; -import { pathToFileURL } from 'node:url'; -import { migrate_scripts } from './migrate_scripts/index.js'; -import { migrate_page } from './migrate_page_js/index.js'; -import { migrate_page_server } from './migrate_page_server/index.js'; -import { migrate_server } from './migrate_server/index.js'; -import { adjust_imports, task } from './utils.js'; -import { bail, relative, move_file, check_git } from '../../utils.js'; - -export async function migrate() { - if (!fs.existsSync('svelte.config.js')) { - bail('Please re-run this script in a directory with a svelte.config.js'); - } - - const { default: config } = await import(pathToFileURL(path.resolve('svelte.config.js')).href); - - const routes = path.resolve(config.kit?.files?.routes ?? 'src/routes'); - - /** @type {string[]} */ - const extensions = config.extensions ?? ['.svelte']; - - /** @type {string[]} */ - const module_extensions = config.kit?.moduleExtensions ?? ['.js', '.ts']; - - /** @type {((filepath: string) => boolean)} */ - const filter = - config.kit?.routes ?? - ((filepath) => !/(?:(?:^_|\/_)|(?:^\.|\/\.)(?!well-known))/.test(filepath)); - - const files = glob(`${routes}/**`, { filesOnly: true, dot: true }).map((file) => - file.replace(/\\/g, '/') - ); - - // validate before proceeding - for (const file of files) { - const basename = path.basename(file); - if ( - basename.startsWith('+page.') || - basename.startsWith('+layout.') || - basename.startsWith('+server.') || - basename.startsWith('+error.') - ) { - bail(`It looks like this migration has already been run (found ${relative(file)}). Aborting`); - } - - if (basename.startsWith('+')) { - // prettier-ignore - bail( - `Please rename any files in ${relative(routes)} with a leading + character before running this migration (found ${relative(file)}). Aborting` - ); - } - } - - console.log(colors.bold().yellow('\nThis will overwrite files in the current directory!\n')); - - const use_git = check_git(); - - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Continue?', - initial: false - }); - - if (!response.value) { - process.exit(1); - } - - for (const file of files) { - const basename = path.basename(file); - if (!filter(file) && !basename.startsWith('__')) continue; - - // replace `./__types` or `./__types/foo` with `./$types` - const content = fs.readFileSync(file, 'utf8').replace(/\.\/__types(?:\/[^'"]+)?/g, './$types'); - - const svelte_ext = extensions.find((ext) => file.endsWith(ext)); - const module_ext = module_extensions.find((ext) => file.endsWith(ext)); - - if (svelte_ext) { - // file is a component - const bare = basename.slice(0, -svelte_ext.length); - const [name, layout] = bare.split('@'); - const is_error_page = bare === '__error'; - - /** - * Whether file should be moved to a subdirectory — e.g. `src/routes/about.svelte` - * should become `src/routes/about/+page.svelte` - */ - let move_to_directory = false; - - /** - * The new name of the file - */ - let renamed = file.slice(0, -basename.length); - - /** - * If a component has `<script context="module">`, the contents are moved - * into a sibling module with the same name - */ - let sibling; - - if (bare.startsWith('__layout')) { - sibling = renamed + '+layout'; - renamed += '+' + bare.slice(2); // account for __layout-foo etc - } else if (is_error_page) { - renamed += '+error'; - // no sibling, because error files can no longer have load - } else if (name === 'index') { - sibling = renamed + '+page'; - renamed += '+page' + (layout ? '@' + layout : ''); - } else { - sibling = `${renamed}${name}/+page`; - renamed += `${name}/+page${layout ? '@' + layout : ''}`; - - move_to_directory = true; - } - - renamed += svelte_ext; - - const { module, main, ext } = migrate_scripts(content, is_error_page, move_to_directory); - - if (move_to_directory) { - const dir = path.dirname(renamed); - if (!fs.existsSync(dir)) fs.mkdirSync(dir); - } - - move_file(file, renamed, main, use_git); - - // if component has a <script context="module">, move it to a sibling .js file - if (module) { - fs.writeFileSync(sibling + ext, migrate_page(module, bare)); - } - } else if (module_ext) { - // file is a module - const bare = basename.slice(0, -module_ext.length); - const [name] = bare.split('@'); - - /** - * Whether the file is paired with a page component, and should - * therefore become `+page.server.js`, or not in which case - * it should become `+server.js` - */ - const is_page_endpoint = extensions.some((ext) => - files.includes(`${file.slice(0, -module_ext.length)}${ext}`) - ); - - const type = is_page_endpoint ? '+page.server' : '+server'; - - const move_to_directory = name !== 'index'; - const is_standalone_index = !is_page_endpoint && name.startsWith('index.'); - - let renamed = ''; - if (is_standalone_index) { - // handle <folder>/index.json.js -> <folder>.json/+server.js - const dir = path.dirname(file); - renamed = - // prettier-ignore - `${file.slice(0, -(basename.length + dir.length + 1))}${dir + name.slice('index'.length)}/+server${module_ext}`; - } else if (move_to_directory) { - renamed = `${file.slice(0, -basename.length)}${name}/${type}${module_ext}`; - } else { - renamed = `${file.slice(0, -basename.length)}${type}${module_ext}`; - } - - // Standalone index endpoints are edge case enough that we don't spend time on trying to update all the imports correctly - const edited = - (is_standalone_index && /import/.test(content) ? `\n// ${task('Check imports')}\n` : '') + - (!is_standalone_index && move_to_directory ? adjust_imports(content) : content); - if (move_to_directory) { - const dir = path.dirname(renamed); - if (!fs.existsSync(dir)) fs.mkdirSync(dir); - } - - move_file( - file, - renamed, - is_page_endpoint ? migrate_page_server(edited, bare) : migrate_server(edited), - use_git - ); - } - } - - console.log(colors.bold().green('✔ Your project has been migrated')); - - console.log('\nRecommended next steps:\n'); - - const cyan = colors.bold().cyan; - - const tasks = [ - use_git && cyan('git commit -m "svelte-migrate: renamed files"'), - 'Review the migration guide at https://github.com/sveltejs/kit/discussions/5774', - `Search codebase for ${cyan('"@migration"')} and manually complete migration tasks`, - use_git && cyan('git add -A'), - use_git && cyan('git commit -m "svelte-migrate: updated files"') - ].filter(Boolean); - - tasks.forEach((task, i) => { - console.log(` ${i + 1}: ${task}`); - }); - - console.log(''); - - if (use_git) { - console.log(`Run ${cyan('git diff')} to review changes.\n`); - } -} diff --git a/packages/migrate/migrations/routes/migrate_page_js/index.js b/packages/migrate/migrations/routes/migrate_page_js/index.js deleted file mode 100644 index 2fdb5e66d942..000000000000 --- a/packages/migrate/migrations/routes/migrate_page_js/index.js +++ /dev/null @@ -1,195 +0,0 @@ -import ts from 'typescript'; -import { - automigration, - error, - get_function_node, - get_object_nodes, - is_new, - is_string_like, - manual_migration, - manual_return_migration, - parse, - rewrite_returns, - rewrite_type, - unwrap -} from '../utils.js'; -import * as TASKS from '../tasks.js'; -import { dedent } from '../../../utils.js'; - -const give_up = `${error('Update load function', TASKS.PAGE_LOAD)}\n\n`; - -/** - * @param {string} content - * @param {string} filename - */ -export function migrate_page(content, filename) { - // early out if we can tell there's no load function - // without parsing the file - if (!/load/.test(content)) return content; - - const file = parse(content); - if (!file) return give_up + content; - - const name = file.exports.map.get('load'); - - if (!name && !file.exports.complex) { - // there's no load function here, so there's nothing to do - return content; - } - - const match = /__layout(?:-([^.@]+))?/.exec(filename); - const load_name = match?.[1] ? `LayoutLoad.${match[1]}` : match ? 'LayoutLoad' : 'PageLoad'; - - for (const statement of file.ast.statements) { - const fn = name ? get_function_node(statement, name) : undefined; - if (fn?.body) { - check_fn_param(fn, file.code); - - /** @type {Set<string>} */ - const imports = new Set(); - - rewrite_type(fn, file.code, 'Load', load_name); - - rewrite_returns(fn.body, (expr, node) => { - const value = unwrap(expr); - const nodes = ts.isObjectLiteralExpression(value) && get_object_nodes(value); - - if (nodes) { - const keys = Object.keys(nodes).sort().join(' '); - - if (keys === '') { - return; // nothing to do - } - - if ( - keys === 'props' || - ((keys === 'status' || keys === 'props status') && - Number(nodes.status.getText()) === 200) - ) { - automigration(value, file.code, dedent(nodes.props?.getText() || '')); - return; - } - - // check for existence of `node`, otherwise it's an arrow function - // with an implicit body, which we bail out on - if (node) { - const status = nodes.status && Number(nodes.status.getText()); - - // logic based on https://github.com/sveltejs/kit/blob/67e2342149847d267eb0c50809a1f93f41fa529b/packages/kit/src/runtime/load.js - if (keys === 'redirect status' && status > 300 && status < 400) { - automigration( - node, - file.code, - `throw redirect(${status}, ${nodes.redirect.getText()});` - ); - imports.add('redirect'); - return; - } - - if (nodes.error) { - const message = is_string_like(nodes.error) - ? nodes.error.getText() - : is_new(nodes.error, 'Error') - ? /** @type {string | undefined} */ (nodes.error.arguments[0]?.getText()) - : false; - - if (message !== false) { - automigration( - node, - file.code, - `throw error(${status || 500}${message ? `, ${message}` : ''});` - ); - imports.add('error'); - return; - } - } else if (status >= 400) { - automigration(node, file.code, `throw error(${status});`); - imports.add('error'); - return; - } - } - } - - manual_return_migration(node || fn, file.code, TASKS.PAGE_LOAD); - }); - - if (imports.size) { - const has_imports = file.ast.statements.some((statement) => - ts.isImportDeclaration(statement) - ); - const declaration = `import { ${[...imports.keys()].join(', ')} } from '@sveltejs/kit';`; - - return declaration + (has_imports ? '\n' : '\n\n') + file.code.toString(); - } - - return file.code.toString(); - } - - if (ts.isImportDeclaration(statement) && statement.importClause) { - const bindings = statement.importClause.namedBindings; - - if (bindings && !ts.isNamespaceImport(bindings)) { - for (const binding of bindings.elements) { - if (binding.name.escapedText === 'Load') { - file.code.overwrite(binding.getStart(), binding.getEnd(), load_name); - } - } - } - } - } - - // we failed to rewrite the load function, so we inject - // an error at the top of the file - return give_up + content; -} - -/** - * Check the load function parameter, and either adjust - * the property names, or add an error - * @param {ts.FunctionDeclaration | ts.FunctionExpression | ts.ArrowFunction} fn - * @param {import('magic-string').default} str - */ -function check_fn_param(fn, str) { - const param = fn.parameters[0]; - if (!param) { - return; - } - if (ts.isObjectBindingPattern(param.name)) { - for (const binding of param.name.elements) { - if ( - !ts.isIdentifier(binding.name) || - (binding.propertyName && !ts.isIdentifier(binding.propertyName)) - ) { - bail(true); - return; - } - const name = binding.propertyName - ? /** @type {ts.Identifier} */ (binding.propertyName).text - : binding.name.text; - if (['stuff', 'status', 'error'].includes(name)) { - bail(); - return; - } - if (name === 'props') { - if (binding.propertyName) { - bail(); - return; - } else { - str.overwrite(binding.name.getStart(), binding.name.getEnd(), 'data: props'); - } - } - } - } else { - // load(param) { .. } -> bail, we won't check what is used in the function body - bail(true); - } - - function bail(check = false) { - manual_migration( - fn, - str, - (check ? 'Check if you need to migrate' : 'Migrate') + ' the load function input', - TASKS.PAGE_LOAD - ); - } -} diff --git a/packages/migrate/migrations/routes/migrate_page_js/index.spec.js b/packages/migrate/migrations/routes/migrate_page_js/index.spec.js deleted file mode 100644 index 3ea58066d1aa..000000000000 --- a/packages/migrate/migrations/routes/migrate_page_js/index.spec.js +++ /dev/null @@ -1,10 +0,0 @@ -import { assert, test } from 'vitest'; -import { migrate_page } from './index.js'; -import { read_samples } from '../../../utils.js'; - -for (const sample of read_samples(new URL('./samples.md', import.meta.url))) { - test(sample.description, () => { - const actual = migrate_page(sample.before, sample.filename ?? '+page.js'); - assert.equal(actual, sample.after); - }); -} diff --git a/packages/migrate/migrations/routes/migrate_page_js/samples.md b/packages/migrate/migrations/routes/migrate_page_js/samples.md deleted file mode 100644 index c38874cb297f..000000000000 --- a/packages/migrate/migrations/routes/migrate_page_js/samples.md +++ /dev/null @@ -1,380 +0,0 @@ -## A load function that only returns props - -```js before -/** @type {import('./$types').Load} */ -export function load() { - return { - props: { - a: 1 - } - }; -} -``` - -```js after -/** @type {import('./$types').PageLoad} */ -export function load() { - return { - a: 1 - }; -} -``` - -## A TypeScript load function that only returns props - -```ts before -import type { Load } from './$types'; - -export const load: Load = () => { - return { - props: { - a: 1 - } - }; -} -``` - -```ts after -import type { PageLoad } from './$types'; - -export const load: PageLoad = () => { - return { - a: 1 - }; -} -``` - -## A file without a load function - -```js before -export const prerender = true; -``` - -```js after -export const prerender = true; -``` - -## A renamed load function - -```js before -function myload() { - return { - props: { - a: 1 - } - }; -} - -export { myload as load }; -``` - -```js after -function myload() { - return { - a: 1 - }; -} - -export { myload as load }; -``` - -## A load function with a redirect - -```js before -export function load({ session }) { - if (!session.user) { - return { - status: 307, - redirect: '/login' - }; - } - - return { - props: { - a: 1 - }; - } -} -``` - -```js after -import { redirect } from '@sveltejs/kit'; - -export function load({ session }) { - if (!session.user) { - throw redirect(307, '/login'); - } - - return { - a: 1 - } -} -``` - -## String error - -```js before -export function load({ session }) { - if (!session.user?.admin) { - return { - status: 403, - error: 'unauthorized' - }; - } -} -``` - -```js after -import { error } from '@sveltejs/kit'; - -export function load({ session }) { - if (!session.user?.admin) { - throw error(403, 'unauthorized'); - } -} -``` - -## Error constructor - -```js before -export function load({ session }) { - if (!session.user?.admin) { - return { - status: 403, - error: new Error('unauthorized') - }; - } -} -``` - -```js after -import { error } from '@sveltejs/kit'; - -export function load({ session }) { - if (!session.user?.admin) { - throw error(403, 'unauthorized'); - } -} -``` - -## Error constructor with no arguments - -```js before -export function load({ session }) { - if (!session.user?.admin) { - return { - status: 403, - error: new Error() - }; - } -} -``` - -```js after -import { error } from '@sveltejs/kit'; - -export function load({ session }) { - if (!session.user?.admin) { - throw error(403); - } -} -``` - -## Error status with no error - -```js before -export function load() { - return { status: 518 }; -} -``` - -```js after -import { error } from '@sveltejs/kit'; - -export function load() { - throw error(518); -} -``` - -## Unknown error type - -```js before -export function load() { - return { error: blah }; -} -``` - -```js after -export function load() { - throw new Error("@migration task: Migrate this return statement (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292693)"); - return { error: blah }; -} -``` - -## Arrow function load - -```js before -/** @type {import('./$types').Load} */ -export const load = () => ({ - props: { - a: 1 - } -}); -``` - -```js after -/** @type {import('./$types').PageLoad} */ -export const load = () => ({ - a: 1 -}); -``` - -## Arrow function that can't be migrated - -```js before -export const load = () => ({ - cache: { - maxage: 300 - } -}); -``` - -```js after -throw new Error("@migration task: Migrate this return statement (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292693)"); -export const load = () => ({ - cache: { - maxage: 300 - } -}); -``` - -## Returns cache - -```js before -export function load() { - return { - cache: { - maxage: 300 - } - }; -} -``` - -```js after -export function load() { - throw new Error("@migration task: Migrate this return statement (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292693)"); - return { - cache: { - maxage: 300 - } - }; -} -``` - -## Returns non-object-literal - -```js before -export async function load({ fetch }) { - const res = await fetch('/x.json'); - return await res.json(); -} -``` - -```js after -export async function load({ fetch }) { - const res = await fetch('/x.json'); - throw new Error("@migration task: Migrate this return statement (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292693)"); - return await res.json(); -} -``` - -## Renames props -> data, leaves unchanged alone - -```js before -export async function load({ props, params }) { - return {}; -} -``` - -```js after -export async function load({ data: props, params }) { - return {}; -} -``` - -## Errors on stuff - -```js before -export async function load({ stuff }) { - return {}; -} -``` - -```js after -throw new Error("@migration task: Migrate the load function input (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292693)"); -export async function load({ stuff }) { - return {}; -} -``` - -## Bails on non-destructured param - -```js before -export const load = (input) => { - return {}; -} -``` - -```js after -throw new Error("@migration task: Check if you need to migrate the load function input (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292693)"); -export const load = (input) => { - return {}; -} -``` - -## A load function that returns nothing - -```js before -export function load() { - return; -} -``` - -```js after -export function load() { - return; -} -``` - -## A load function that returns props and status 200 - -```js before -export function load() { - return { - status: 200, - props: {} - }; -} -``` - -```js after -export function load() { - return {}; -} -``` - -## A load function that returns status 200 - -```js before -export function load() { - return { - status: 200 - }; -} -``` - -```js after -export function load() { - return ; -} -``` diff --git a/packages/migrate/migrations/routes/migrate_page_server/index.js b/packages/migrate/migrations/routes/migrate_page_server/index.js deleted file mode 100644 index d6556e7ac744..000000000000 --- a/packages/migrate/migrations/routes/migrate_page_server/index.js +++ /dev/null @@ -1,122 +0,0 @@ -import ts from 'typescript'; -import { - automigration, - error, - get_function_node, - get_object_nodes, - manual_migration, - manual_return_migration, - parse, - rewrite_returns, - rewrite_type, - unwrap, - uppercase_migration -} from '../utils.js'; -import * as TASKS from '../tasks.js'; -import { dedent } from '../../../utils.js'; - -const give_up = `${error('Update +page.server.js', TASKS.PAGE_ENDPOINT)}\n\n`; - -/** - * @param {string} content - * @param {string} filename - * @returns {string} - */ -export function migrate_page_server(content, filename) { - const file = parse(content); - if (!file) return give_up + content; - - const methods = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'].filter((name) => - file.exports.map.has(name) - ); - - // If user didn't do the uppercase verbs migration yet, do it here on the fly. - const uppercased = uppercase_migration(methods, file); - if (!uppercased) { - return give_up + content; - } else if (uppercased !== content) { - return migrate_page_server(uppercased, filename); - } - - const non_get_methods = methods.filter((name) => name !== 'GET'); - - const unmigrated = new Set(methods); - - const match = /\+(?:(page)|(layout(?:-([^.@]+))?))/.exec(filename); - const load_name = match?.[3] - ? `LayoutServerLoad.${match[3]}` - : match?.[2] - ? 'LayoutServerLoad' - : 'PageServerLoad'; - - const has_load = file.exports.map.has('GET'); - const has_action = non_get_methods.some((method) => file.exports.map.has(method)); - - for (const statement of file.ast.statements) { - const GET_id = file.exports.map.get('GET'); - if (GET_id) { - const GET = get_function_node(statement, GET_id); - if (GET) { - if (GET.body) { - // possible TODOs — handle errors and redirects - rewrite_returns(GET.body, (expr, node) => { - const value = unwrap(expr); - const nodes = ts.isObjectLiteralExpression(value) && get_object_nodes(value); - - if (!nodes || nodes.headers || (nodes.status && nodes.status.getText() !== '200')) { - manual_return_migration(node || GET, file.code, TASKS.PAGE_ENDPOINT); - return; - } - - automigration(value, file.code, dedent(nodes.body?.getText() || '')); - }); - } - - rewrite_type(GET, file.code, 'RequestHandler', load_name); - - if (ts.isFunctionDeclaration(GET) && GET.name) { - automigration(GET.name, file.code, 'load'); - } else if (ts.isVariableDeclaration(GET.parent) && ts.isIdentifier(GET.parent.name)) { - automigration(GET.parent.name, file.code, 'load'); - } else { - manual_migration(GET, file.code, 'Rename GET to load', TASKS.PAGE_ENDPOINT); - } - - unmigrated.delete('GET'); - } - } - - for (const method of non_get_methods) { - const fn = get_function_node(statement, /** @type{string} */ (file.exports.map.get(method))); - if (fn?.body) { - rewrite_returns(fn.body, (expr, node) => { - manual_return_migration(node || fn, file.code, TASKS.PAGE_ENDPOINT); - }); - - rewrite_type(fn, file.code, 'RequestHandler', 'Action'); - - unmigrated.delete(method); - } - } - - if (ts.isImportDeclaration(statement) && statement.importClause) { - const bindings = statement.importClause.namedBindings; - - if (bindings && !ts.isNamespaceImport(bindings)) { - for (const binding of bindings.elements) { - if (binding.name.escapedText === 'RequestHandler') { - const types = [has_load && load_name, has_action && 'Action'].filter(Boolean); - - file.code.overwrite(binding.getStart(), binding.getEnd(), types.join(', ')); - } - } - } - } - } - - if (unmigrated.size) { - return give_up + file.code.toString(); - } - - return file.code.toString(); -} diff --git a/packages/migrate/migrations/routes/migrate_page_server/index.spec.js b/packages/migrate/migrations/routes/migrate_page_server/index.spec.js deleted file mode 100644 index 82a0e354b654..000000000000 --- a/packages/migrate/migrations/routes/migrate_page_server/index.spec.js +++ /dev/null @@ -1,10 +0,0 @@ -import { assert, test } from 'vitest'; -import { migrate_page_server } from './index.js'; -import { read_samples } from '../../../utils.js'; - -for (const sample of read_samples(new URL('./samples.md', import.meta.url))) { - test(sample.description, () => { - const actual = migrate_page_server(sample.before, sample.filename ?? '+page.server.js'); - assert.equal(actual, sample.after); - }); -} diff --git a/packages/migrate/migrations/routes/migrate_page_server/samples.md b/packages/migrate/migrations/routes/migrate_page_server/samples.md deleted file mode 100644 index c6cf6266ffc2..000000000000 --- a/packages/migrate/migrations/routes/migrate_page_server/samples.md +++ /dev/null @@ -1,181 +0,0 @@ -## A GET function that only returns body - -```js before -/** @type {import('./$types').RequestHandler} */ -export function GET() { - return { - body: { - a: 1 - } - }; -} -``` - -```js after -/** @type {import('./$types').PageServerLoad} */ -export function load() { - return { - a: 1 - }; -} -``` - -## A TypeScript GET function that only returns body - -```ts before -import type { RequestHandler } from './$types'; - -export const GET: RequestHandler = () => { - return { - body: { - a: 1 - } - }; -} -``` - -```ts after -import type { PageServerLoad } from './$types'; - -export const load: PageServerLoad = () => { - return { - a: 1 - }; -} -``` - -## A GET function in a +layout-foo.server.js - -> file: +layout-foo.server.js - -```js before -/** @type {import('./$types').RequestHandler} */ -export function GET() { - return { - body: { - a: 1 - } - }; -} -``` - -```js after -/** @type {import('./$types').LayoutServerLoad.foo} */ -export function load() { - return { - a: 1 - }; -} -``` - -## 200 status - -```js before -export function GET() { - return { - status: 200, - body: { - a: 1 - } - }; -} -``` - -```js after -export function load() { - return { - a: 1 - }; -} -``` - -## Arrow function GET - -```js before -/** @type {import('./$types').RequestHandler} */ -export const GET = () => ({ - body: { - a: 1 - } -}); -``` - -```js after -/** @type {import('./$types').PageServerLoad} */ -export const load = () => ({ - a: 1 -}); -``` - -## POST - -```js before -/** @type {import('./$types').RequestHandler} */ -export function POST() { - return {}; -} -``` - -```js after -/** @type {import('./$types').Action} */ -export function POST() { - throw new Error("@migration task: Migrate this return statement (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292699)"); - return {}; -} -``` - -## A function that returns nothing - -```js before -export function GET() { - return; -} -``` - -```js after -export function load() { - return; -} -``` - -## A function that wrongfully has no body - -```js before -export function GET() { - return { - status: 200 - }; -} -``` - -```js after -export function load() { - return ; -} -``` - -## A get function that only returns body - -```js before -import something from 'somewhere'; - -/** @type {import('./$types').RequestHandler} */ -export function get() { - return { - body: { - a: something - } - }; -} -``` - -```js after -import something from 'somewhere'; - -/** @type {import('./$types').PageServerLoad} */ -export function load() { - return { - a: something - }; -} -``` diff --git a/packages/migrate/migrations/routes/migrate_scripts/index.js b/packages/migrate/migrations/routes/migrate_scripts/index.js deleted file mode 100644 index 080cf2e46cb1..000000000000 --- a/packages/migrate/migrations/routes/migrate_scripts/index.js +++ /dev/null @@ -1,150 +0,0 @@ -import ts from 'typescript'; -import { adjust_imports, error, parse } from '../utils.js'; -import * as TASKS from '../tasks.js'; -import { comment, dedent, except_str, guess_indent } from '../../../utils.js'; - -/** - * @param {string} content - * @param {boolean} is_error - * @param {boolean} moved - */ -export function migrate_scripts(content, is_error, moved) { - /** @type {string | null} */ - let module = null; - - let ext = '.js'; - - // instance script - const main = content.replace( - /<script([^]*?)>([^]+?)<\/script>(\n*)/g, - (match, attrs, contents, whitespace) => { - const indent = guess_indent(contents) ?? ''; - - if (moved) { - contents = adjust_imports(contents); - } - - if (/context=(['"])module\1/.test(attrs)) { - // special case — load is no longer supported in error - if (is_error) { - const body = `\n${indent}${error('Replace error load function', '3293209')}\n${comment( - contents, - indent - )}`; - - return `<script${attrs}>${body}</script>${whitespace}`; - } - - if (/lang(?:uage)?=(['"])(ts|typescript)\1/.test(attrs)) { - ext = '.ts'; - } - - module = dedent(contents.replace(/^\n/, '')); - - const declared = find_declarations(contents); - const delete_var = (/** @type {string } */ key) => { - const declaration = declared?.get(key); - if (declaration && !declaration.import) { - declared?.delete(key); - } - }; - delete_var('load'); - delete_var('router'); - delete_var('hydrate'); - delete_var('prerender'); - const delete_kit_type = (/** @type {string } */ key) => { - const declaration = declared?.get(key); - if ( - declaration && - declaration.import?.type_only && - declaration.import.from === '@sveltejs/kit' && - !new RegExp(`\\W${key}\\W`).test(except_str(content, match)) - ) { - declared?.delete(key); - } - }; - delete_kit_type('Load'); - delete_kit_type('LoadEvent'); - delete_kit_type('LoadOutput'); - - if (!declared || declared.size > 0) { - const body = `\n${indent}${error( - 'Check code was safely removed', - TASKS.PAGE_MODULE_CTX - )}\n${comment(contents, indent)}`; - - return `<script${attrs}>${body}</script>${whitespace}`; - } - - // nothing was declared here, we can safely remove the script - return ''; - } - - if (!is_error && /export let [\w]+[^"`'\w\s]/.test(contents)) { - contents = `\n${indent}${error('Add data prop', TASKS.PAGE_DATA_PROP)}\n${contents}`; - // Possible TODO: migrate props to data.prop, or suggest $: ({propX, propY, ...} = data); - } - - return `<script${attrs}>${contents}</script>${whitespace}`; - } - ); - - return { module, main, ext }; -} - -/** @param {string} content */ -function find_declarations(content) { - const file = parse(content); - if (!file) return; - - /** @type {Map<string, {name: string, import?: {from: string, type_only: boolean}}>} */ - const declared = new Map(); - /** - * @param {string} name - * @param {{from: string, type_only: boolean}} [import_def] - */ - function add(name, import_def) { - declared.set(name, { name, import: import_def }); - } - - for (const statement of file.ast.statements) { - if (ts.isImportDeclaration(statement) && statement.importClause) { - const type_only = statement.importClause.isTypeOnly; - const from = ts.isStringLiteral(statement.moduleSpecifier) - ? statement.moduleSpecifier.text - : ''; - - if (statement.importClause.name) { - add(statement.importClause.name.text, { from, type_only }); - } - - const bindings = statement.importClause.namedBindings; - - if (bindings) { - if (ts.isNamespaceImport(bindings)) { - add(bindings.name.text, { from, type_only }); - } else { - for (const binding of bindings.elements) { - add(binding.name.text, { from, type_only: type_only || binding.isTypeOnly }); - } - } - } - } else if (ts.isVariableStatement(statement)) { - for (const declaration of statement.declarationList.declarations) { - if (ts.isIdentifier(declaration.name)) { - add(declaration.name.text); - } else { - return; // bail out if it's not a simple variable - } - } - } else if (ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement)) { - if (statement.name && ts.isIdentifier(statement.name)) { - add(statement.name.text); - } - } else if (ts.isExportDeclaration(statement) && !statement.exportClause) { - return; // export * from '..' -> bail - } - } - - return declared; -} diff --git a/packages/migrate/migrations/routes/migrate_scripts/index.spec.js b/packages/migrate/migrations/routes/migrate_scripts/index.spec.js deleted file mode 100644 index a52fc7128ff1..000000000000 --- a/packages/migrate/migrations/routes/migrate_scripts/index.spec.js +++ /dev/null @@ -1,14 +0,0 @@ -import { assert, test } from 'vitest'; -import { migrate_scripts } from './index.js'; -import { read_samples } from '../../../utils.js'; - -for (const sample of read_samples(new URL('./samples.md', import.meta.url))) { - test(sample.description, () => { - const actual = migrate_scripts( - sample.before, - sample.description.includes('error'), - sample.description.includes('moved') - ); - assert.equal(actual.main, sample.after); - }); -} diff --git a/packages/migrate/migrations/routes/migrate_scripts/samples.md b/packages/migrate/migrations/routes/migrate_scripts/samples.md deleted file mode 100644 index 6f57fb1f4c6d..000000000000 --- a/packages/migrate/migrations/routes/migrate_scripts/samples.md +++ /dev/null @@ -1,247 +0,0 @@ -## No module context, no page exports - -```svelte before -<script> - let hello = 'world'; -<script> - -<p>{hello}</p> -``` - -```svelte after -<script> - let hello = 'world'; -<script> - -<p>{hello}</p> -``` - -## Module context on error page - -```svelte before -<script context="module"> - export function load() { - return { - props: { - sry: 'not anymore' - } - } - } -</script> - -<script> - export let sry; -</script> - -<p>{sry}</p> -``` - -```svelte after -<script context="module"> - throw new Error("@migration task: Replace error load function (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3293209)"); - - // export function load() { - // return { - // props: { - // sry: 'not anymore' - // } - // } - // } -</script> - -<script> - export let sry; -</script> - -<p>{sry}</p> -``` - -## Module context that can be removed - -```svelte before -<script context="module"> - export function load() { - return { - props: { - a: 1 - } - } - } -</script> - -<script> - export let a; -</script> -``` - -```svelte after -<script> - throw new Error("@migration task: Add data prop (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292707)"); - - export let a; -</script> -``` - -## Module context with moved imports - -```svelte before -<script context="module"> - import Foo from './Foo.svelte'; - export function load() { - return { - props: { - sry: 'not anymore' - } - } - } -</script> - -<script> - export let sry; -</script> - -<Foo>{sry}</Foo> -``` - -```svelte after -<script context="module"> - throw new Error("@migration task: Check code was safely removed (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292722)"); - - // import Foo from '../Foo.svelte'; - // export function load() { - // return { - // props: { - // sry: 'not anymore' - // } - // } - // } -</script> - -<script> - throw new Error("@migration task: Add data prop (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292707)"); - - export let sry; -</script> - -<Foo>{sry}</Foo> -``` - -## Module context with type imports only - -```svelte before -<script context="module"> - import type { Load, LoadEvent, LoadOutput } from '@sveltejs/kit'; - export function load() { - return { - props: { - sry: 'not anymore' - } - } - } -</script> -``` - -```svelte after -``` - -## Module context with type imports only but used in instance script - -```svelte before -<script context="module"> - import type { Load, LoadEvent, LoadOutput } from '@sveltejs/kit'; - export function load() { - return { - props: { - sry: 'not anymore' - } - } - } -</script> - -<script> - const whywouldyoudothis: Load = 'I dont know lol'; -</script> -``` - -```svelte after -<script context="module"> - throw new Error("@migration task: Check code was safely removed (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292722)"); - - // import type { Load, LoadEvent, LoadOutput } from '@sveltejs/kit'; - // export function load() { - // return { - // props: { - // sry: 'not anymore' - // } - // } - // } -</script> - -<script> - const whywouldyoudothis: Load = 'I dont know lol'; -</script> -``` - -## Module context with export * from '..' - -```svelte before -<script context="module"> - export * from './somewhere'; -</script> -``` - -```svelte after -<script context="module"> - throw new Error("@migration task: Check code was safely removed (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292722)"); - - // export * from './somewhere'; -</script> -``` - -## Module context with named imports - -```svelte before -<script context="module"> - import { bar } from './somewhere'; -</script> - -<script> - let foo = bar; -</script> -``` - -```svelte after -<script context="module"> - throw new Error("@migration task: Check code was safely removed (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292722)"); - - // import { bar } from './somewhere'; -</script> - -<script> - let foo = bar; -</script> -``` - -## Module context with named imports that have same name as a load option - -```svelte before -<script context="module"> - import { router } from './somewhere'; -</script> - -<script> - let foo = router; -</script> -``` - -```svelte after -<script context="module"> - throw new Error("@migration task: Check code was safely removed (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292722)"); - - // import { router } from './somewhere'; -</script> - -<script> - let foo = router; -</script> -``` diff --git a/packages/migrate/migrations/routes/migrate_server/index.js b/packages/migrate/migrations/routes/migrate_server/index.js deleted file mode 100644 index d9092d554651..000000000000 --- a/packages/migrate/migrations/routes/migrate_server/index.js +++ /dev/null @@ -1,190 +0,0 @@ -import ts from 'typescript'; -import { - automigration, - uppercase_migration, - error, - get_function_node, - get_object_nodes, - is_new, - is_string_like, - manual_return_migration, - parse, - rewrite_returns, - unwrap -} from '../utils.js'; -import * as TASKS from '../tasks.js'; -import { dedent, guess_indent, indent_at_line } from '../../../utils.js'; - -const give_up = `${error('Update +server.js', TASKS.STANDALONE_ENDPOINT)}\n\n`; - -/** - * @param {string} content - * @returns {string} - */ -export function migrate_server(content) { - const file = parse(content); - if (!file) return give_up + content; - - const indent = guess_indent(content); - - const methods = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'].filter((name) => - file.exports.map.has(name) - ); - - // If user didn't do the uppercase verbs migration yet, do it here on the fly. - const uppercased = uppercase_migration(methods, file); - if (!uppercased) { - return give_up + content; - } else if (uppercased !== content) { - return migrate_server(uppercased); - } - - const unmigrated = new Set(methods); - - /** @type {Map<string, string>} */ - const imports = new Map(); - - for (const statement of file.ast.statements) { - for (const method of methods) { - const fn = get_function_node(statement, /** @type{string} */ (file.exports.map.get(method))); - if (fn?.body) { - rewrite_returns(fn.body, (expr, node) => { - // leave `() => new Response(...)` alone - if (is_new(expr, 'Response')) return; - - const value = unwrap(expr); - const nodes = ts.isObjectLiteralExpression(value) && get_object_nodes(value); - - if (nodes) { - const body_is_object_literal = nodes.body && ts.isObjectLiteralExpression(nodes.body); - - if (body_is_object_literal || (nodes.body && ts.isIdentifier(nodes.body))) { - let result; - - let name = 'json'; - let i = 1; - while (content.includes(name)) name = `json$${i++}`; - - imports.set('json', name); - - const body = dedent(nodes.body.getText()); - - if (nodes.headers || (nodes.status && nodes.status.getText() !== '200')) { - const start = indent_at_line(content, expr.pos); - const properties = []; - - if (nodes.status && nodes.status.getText() !== '200') { - properties.push(`status: ${nodes.status.getText()}`); - } - - if (nodes.headers) { - properties.push(`headers: ${nodes.headers.getText()}`); - } - - const ws = `\n${start}`; - const init = `{${ws}${indent}${properties.join(`,${ws}${indent}`)}${ws}}`; - - result = `${name}(${body}, ${init})`; - } else { - result = `${name}(${body})`; - } - - if (body_is_object_literal) { - automigration(expr, file.code, result); - } else { - manual_return_migration( - node || fn, - file.code, - TASKS.STANDALONE_ENDPOINT, - `return ${result};` - ); - } - - return; - } - - let safe_headers = !nodes.headers || !ts.isObjectLiteralExpression(nodes.headers); - if (nodes.headers && ts.isObjectLiteralExpression(nodes.headers)) { - // if `headers` is an object literal, and it either doesn't contain - // `set-cookie` or `set-cookie` is a string, then the headers - // are safe to use in a `Response` - const set_cookie_value = nodes.headers.properties.find((prop) => { - return ( - ts.isPropertyAssignment(prop) && - ts.isStringLiteral(prop.name) && - /set-cookie/i.test(prop.name.text) - ); - }); - - if (!set_cookie_value || is_string_like(set_cookie_value)) { - safe_headers = true; - } - } - - const safe_body = - !nodes.body || - is_string_like(nodes.body) || - (ts.isCallExpression(nodes.body) && - nodes.body.expression.getText() === 'JSON.stringify'); - - if (safe_headers) { - const status = nodes.status ? nodes.status.getText() : '200'; - const headers = nodes.headers?.getText(); - const body = dedent(nodes.body?.getText() || 'undefined'); - - const multiline = /\n/.test(headers); - - const init = [ - status !== '200' && `status: ${status}`, - headers && `headers: ${headers}` - ].filter(Boolean); - - const indent = indent_at_line(content, expr.getStart()); - const end_whitespace = multiline ? `\n${indent}` : ' '; - const join_whitespace = multiline ? end_whitespace + guess_indent(content) : ' '; - - const response = - init.length > 0 - ? `new Response(${body}, {${join_whitespace}${init.join( - `,${join_whitespace}` - )}${end_whitespace}})` - : `new Response(${body})`; - - if (safe_body) { - automigration(expr, file.code, response); - } else { - manual_return_migration( - node || fn, - file.code, - TASKS.STANDALONE_ENDPOINT, - `return ${response};` - ); - } - - return; - } - } - - manual_return_migration(node || fn, file.code, TASKS.STANDALONE_ENDPOINT); - }); - - unmigrated.delete(method); - } - } - } - - if (imports.size) { - const has_imports = file.ast.statements.some((statement) => ts.isImportDeclaration(statement)); - const specifiers = Array.from(imports).map(([name, local]) => - name === local ? name : `${name} as ${local}` - ); - const declaration = `import { ${specifiers.join(', ')} } from '@sveltejs/kit';`; - file.code.prependLeft(0, declaration + (has_imports ? '\n' : '\n\n')); - } - - if (unmigrated.size) { - return give_up + file.code.toString(); - } - - return file.code.toString(); -} diff --git a/packages/migrate/migrations/routes/migrate_server/index.spec.js b/packages/migrate/migrations/routes/migrate_server/index.spec.js deleted file mode 100644 index 8ad424534ef0..000000000000 --- a/packages/migrate/migrations/routes/migrate_server/index.spec.js +++ /dev/null @@ -1,10 +0,0 @@ -import { assert, test } from 'vitest'; -import { migrate_server } from './index.js'; -import { read_samples } from '../../../utils.js'; - -for (const sample of read_samples(new URL('./samples.md', import.meta.url))) { - test(sample.description, () => { - const actual = migrate_server(sample.before); - assert.equal(actual, sample.after); - }); -} diff --git a/packages/migrate/migrations/routes/migrate_server/samples.md b/packages/migrate/migrations/routes/migrate_server/samples.md deleted file mode 100644 index 3bc08662552f..000000000000 --- a/packages/migrate/migrations/routes/migrate_server/samples.md +++ /dev/null @@ -1,212 +0,0 @@ -## A GET function that returns a JSON object - -```js before -export function GET() { - return { - body: { - a: 1 - } - }; -} -``` - -```js after -import { json } from '@sveltejs/kit'; - -export function GET() { - return json({ - a: 1 - }); -} -``` - -## A GET function that returns a JSON object and already specifies a 'json' identifier - -```js before -export function GET() { - const json = 'shadow'; - - return { - body: { - a: 1 - } - }; -} -``` - -```js after -import { json as json$1 } from '@sveltejs/kit'; - -export function GET() { - const json = 'shadow'; - - return json$1({ - a: 1 - }); -} -``` - -## A GET function that returns a JSON object with custom headers - -```js before -export function GET() { - return { - headers: { - 'x-foo': '123' - }, - body: { - a: 1 - } - }; -} -``` - -```js after -import { json } from '@sveltejs/kit'; - -export function GET() { - return json({ - a: 1 - }, { - headers: { - 'x-foo': '123' - } - }); -} -``` - -## A GET arrow function that returns a JSON object - -```js before -export const GET = () => ({ - body: { - a: 1 - } -}); -``` - -```js after -import { json } from '@sveltejs/kit'; - -export const GET = () => json({ - a: 1 -}); -``` - -## GET returns we can't migrate - -```js before -export function GET() { - if (a) { - return { - body - }; - } else if (b) { - return { - body: new ReadableStream(), - headers: { - 'content-type': 'octasomething' - } - } - } else if (c) { - return { - body: 'string', - headers: { - 'x-foo': 'bar' - } - } - } -} -``` - -```js after -import { json } from '@sveltejs/kit'; - -export function GET() { - if (a) { - throw new Error("@migration task: Migrate this return statement (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292701)"); - // Suggestion (check for correctness before using): - // return json(body); - return { - body - }; - } else if (b) { - throw new Error("@migration task: Migrate this return statement (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292701)"); - // Suggestion (check for correctness before using): - // return new Response(new ReadableStream(), { - // headers: { - // 'content-type': 'octasomething' - // } - // }); - return { - body: new ReadableStream(), - headers: { - 'content-type': 'octasomething' - } - } - } else if (c) { - return new Response('string', { - headers: { - 'x-foo': 'bar' - } - }) - } -} -``` - -## A function that returns a Response - -```js before -export const GET = () => new Response('text'); -``` - -```js after -export const GET = () => new Response('text'); -``` - -## A function that returns an unknown value - -```js before -export const GET = () => createResponse('text'); -``` - -```js after -throw new Error("@migration task: Migrate this return statement (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-3292701)"); -export const GET = () => createResponse('text'); -``` - -## A function that returns nothing - -```js before -export function GET() { - return; -} -``` - -```js after -export function GET() { - return; -} -``` - -## A GET function that returns a JSON object - -```js before -export function get() { - return { - body: { - a: 1 - } - }; -} -``` - -```js after -import { json } from '@sveltejs/kit'; - -export function GET() { - return json({ - a: 1 - }); -} -``` diff --git a/packages/migrate/migrations/routes/tasks.js b/packages/migrate/migrations/routes/tasks.js deleted file mode 100644 index 775623232882..000000000000 --- a/packages/migrate/migrations/routes/tasks.js +++ /dev/null @@ -1,5 +0,0 @@ -export const STANDALONE_ENDPOINT = '3292701'; -export const PAGE_ENDPOINT = '3292699'; -export const PAGE_LOAD = '3292693'; -export const PAGE_MODULE_CTX = '3292722'; -export const PAGE_DATA_PROP = '3292707'; diff --git a/packages/migrate/migrations/routes/utils.js b/packages/migrate/migrations/routes/utils.js deleted file mode 100644 index 0b8073e6c0fc..000000000000 --- a/packages/migrate/migrations/routes/utils.js +++ /dev/null @@ -1,374 +0,0 @@ -import ts from 'typescript'; -import MagicString from 'magic-string'; -import { comment, indent_at_line } from '../../utils.js'; - -/** - * @param {string} description - * @param {string} [comment_id] - */ -export function task(description, comment_id) { - return ( - `@migration task: ${description}` + - (comment_id - ? ` (https://github.com/sveltejs/kit/discussions/5774#discussioncomment-${comment_id})` - : '') - ); -} - -/** - * @param {string} description - * @param {string} comment_id - */ -export function error(description, comment_id) { - return `throw new Error(${JSON.stringify(task(description, comment_id))});`; -} - -/** @param {string} content */ -export function adjust_imports(content) { - try { - const ast = ts.createSourceFile( - 'filename.ts', - content, - ts.ScriptTarget.Latest, - true, - ts.ScriptKind.TS - ); - - const code = new MagicString(content); - - /** @param {number} pos */ - function adjust(pos) { - // TypeScript AST is a clusterfuck, we need to step forward to find - // where the node _actually_ starts - while (content[pos] !== '.') pos += 1; - - // replace ../ with ../../ and ./ with ../ - code.prependLeft(pos, content[pos + 1] === '.' ? '../' : '.'); - } - - /** @param {ts.Node} node */ - function walk(node) { - if (ts.isImportDeclaration(node)) { - const text = /** @type {ts.StringLiteral} */ (node.moduleSpecifier).text; - if (text[0] === '.') adjust(node.moduleSpecifier.pos); - } - - if (ts.isCallExpression(node) && node.expression.getText() === 'import') { - const arg = node.arguments[0]; - - if (ts.isStringLiteral(arg)) { - if (arg.text[0] === '.') adjust(arg.pos); - } else if (ts.isTemplateLiteral(arg) && !ts.isNoSubstitutionTemplateLiteral(arg)) { - if (arg.head.text[0] === '.') adjust(arg.head.pos); - } - } - - node.forEachChild(walk); - } - - ast.forEachChild(walk); - - return code.toString(); - } catch { - // this is enough of an edge case that it's probably fine to - // just leave the code as we found it - return content; - } -} - -/** - * - * @param {ts.Node} node - * @param {MagicString} str - * @param {string} comment_nr - * @param {string} [suggestion] - */ -export function manual_return_migration(node, str, comment_nr, suggestion) { - manual_migration(node, str, 'Migrate this return statement', comment_nr, suggestion); -} - -/** - * @param {ts.Node} node - * @param {MagicString} str - * @param {string} message - * @param {string} comment_nr - * @param {string} [suggestion] - */ -export function manual_migration(node, str, message, comment_nr, suggestion) { - // handle case where this is called on a (arrow) function - if (ts.isFunctionExpression(node) || ts.isArrowFunction(node)) { - node = node.parent.parent.parent; - } - - const indent = indent_at_line(str.original, node.getStart()); - - let appended = ''; - - if (suggestion) { - appended = `\n${indent}// Suggestion (check for correctness before using):\n${indent}// ${comment( - suggestion, - indent - )}`; - } - - str.prependLeft(node.getStart(), error(message, comment_nr) + appended + `\n${indent}`); -} - -/** - * - * @param {ts.Node} node - * @param {MagicString} str - * @param {string} migration - */ -export function automigration(node, str, migration) { - str.overwrite(node.getStart(), node.getEnd(), migration); -} - -/** - * @param {ts.ObjectLiteralExpression} node - */ -export function get_object_nodes(node) { - /** @type {Record<string, ts.Node>} */ - const obj = {}; - - for (const property of node.properties) { - if (ts.isPropertyAssignment(property) && ts.isIdentifier(property.name)) { - obj[property.name.text] = property.initializer; - } else if (ts.isShorthandPropertyAssignment(property)) { - obj[property.name.text] = property.name; - } else { - return null; // object contains funky stuff like computed properties/accessors — bail - } - } - - return obj; -} - -/** - * @param {ts.Node} node - */ -export function is_string_like(node) { - return ( - ts.isStringLiteral(node) || - ts.isTemplateExpression(node) || - ts.isNoSubstitutionTemplateLiteral(node) - ); -} - -/** @param {ts.SourceFile} node */ -export function get_exports(node) { - /** @type {Map<string, string>} */ - const map = new Map(); - - let complex = false; - - for (const statement of node.statements) { - if ( - ts.isExportDeclaration(statement) && - statement.exportClause && - ts.isNamedExports(statement.exportClause) - ) { - // export { x }, export { x as y } - for (const specifier of statement.exportClause.elements) { - map.set(specifier.name.text, specifier.propertyName?.text || specifier.name.text); - } - } else if ( - ts.isFunctionDeclaration(statement) && - statement.name && - ts.getModifiers(statement)?.[0]?.kind === ts.SyntaxKind.ExportKeyword - ) { - // export function x ... - map.set(statement.name.text, statement.name.text); - } else if ( - ts.isVariableStatement(statement) && - ts.getModifiers(statement)?.[0]?.kind === ts.SyntaxKind.ExportKeyword - ) { - // export const x = ..., y = ... - for (const declaration of statement.declarationList.declarations) { - if (ts.isIdentifier(declaration.name)) { - map.set(declaration.name.text, declaration.name.text); - } else { - // might need to bail out on encountering this edge case, - // because this stuff can get pretty intense - complex = true; - } - } - } - } - - return { map, complex }; -} - -/** - * @param {ts.Node} statement - * @param {string[]} names - * @returns {ts.FunctionDeclaration | ts.FunctionExpression | ts.ArrowFunction | undefined} - */ -export function get_function_node(statement, ...names) { - if ( - ts.isFunctionDeclaration(statement) && - statement.name && - names.includes(statement.name.text) - ) { - // export function x ... - return statement; - } - - if (ts.isVariableStatement(statement)) { - for (const declaration of statement.declarationList.declarations) { - if ( - ts.isIdentifier(declaration.name) && - names.includes(declaration.name.text) && - declaration.initializer && - (ts.isArrowFunction(declaration.initializer) || - ts.isFunctionExpression(declaration.initializer)) - ) { - // export const x = ... - return declaration.initializer; - } - } - } -} - -/** - * Utility for rewriting return statements. - * If `node` is `undefined`, it means it's a concise arrow function body (`() => ({}))`. - * Lone `return;` statements are left untouched. - * @param {ts.Block | ts.ConciseBody} block - * @param {(expression: ts.Expression, node: ts.ReturnStatement | undefined) => void} callback - */ -export function rewrite_returns(block, callback) { - if (ts.isBlock(block)) { - /** @param {ts.Node} node */ - function walk(node) { - if ( - ts.isArrowFunction(node) || - ts.isFunctionExpression(node) || - ts.isFunctionDeclaration(node) - ) { - // don't cross this boundary - return; - } - - if (ts.isReturnStatement(node) && node.expression) { - callback(node.expression, node); - return; - } - - node.forEachChild(walk); - } - - block.forEachChild(walk); - } else { - callback(block, undefined); - } -} - -/** @param {ts.Node} node */ -export function unwrap(node) { - if (ts.isParenthesizedExpression(node)) { - return node.expression; - } - - return node; -} - -/** - * @param {ts.Node} node - * @param {string} name - * @returns {node is ts.isNewExpression} - */ -export function is_new(node, name) { - return ( - ts.isNewExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === name - ); -} - -/** @param {string} content */ -export function parse(content) { - try { - const ast = ts.createSourceFile( - 'filename.ts', - content, - ts.ScriptTarget.Latest, - true, - ts.ScriptKind.TS - ); - - const code = new MagicString(content); - - return { - ast, - code, - exports: get_exports(ast) - }; - } catch { - return null; - } -} - -/** - * @param {ts.Node} node - * @param {MagicString} code - * @param {string} old_type - * @param {string} new_type - */ -export function rewrite_type(node, code, old_type, new_type) { - // @ts-ignore - const jsDoc = node.jsDoc || node.parent?.parent?.parent?.jsDoc; - if (jsDoc) { - // @ts-ignore - for (const comment of jsDoc) { - const str = comment.getText(); - const index = str.indexOf(old_type); - - if (index !== -1) { - code.overwrite(comment.pos + index, comment.pos + index + old_type.length, new_type); - } - } - } - - // @ts-ignore - const type = node.type || node.parent.type; // handle both fn and var declarations - - if (type?.typeName?.escapedText.startsWith(old_type)) { - const start = type.getStart(); - code.overwrite(start, start + old_type.length, new_type); - } -} - -/** - * Does the HTTP verbs uppercase migration if it didn't happen yet. If a string - * is returned, the migration was done or wasn't needed. If undefined is returned, - * the migration is needed but couldn't be done. - * - * @param {string[]} methods - * @param {NonNullable<ReturnType<typeof parse>>} file - */ -export function uppercase_migration(methods, file) { - const old_methods = new Set( - ['get', 'post', 'put', 'patch', 'del'].filter((name) => file.exports.map.has(name)) - ); - - if (old_methods.size && !methods.length) { - for (const statement of file.ast.statements) { - for (const method of old_methods) { - const fn = get_function_node( - statement, - /** @type{string} */ (file.exports.map.get(method)) - ); - if (!fn?.name) { - continue; - } - file.code.overwrite( - fn.name.getStart(), - fn.name.getEnd(), - method === 'del' ? 'DELETE' : method.toUpperCase() - ); - old_methods.delete(method); - } - } - } - - return old_methods.size ? undefined : file.code.toString(); -} diff --git a/packages/migrate/migrations/self-closing-tags/index.js b/packages/migrate/migrations/self-closing-tags/index.js deleted file mode 100644 index ced6ca3089e7..000000000000 --- a/packages/migrate/migrations/self-closing-tags/index.js +++ /dev/null @@ -1,57 +0,0 @@ -import colors from 'kleur'; -import fs from 'node:fs'; -import process from 'node:process'; -import prompts from 'prompts'; -import glob from 'tiny-glob/sync.js'; -import { remove_self_closing_tags } from './migrate.js'; -import { pathToFileURL } from 'node:url'; -import { resolve } from 'import-meta-resolve'; - -export async function migrate() { - let compiler; - try { - compiler = await import_from_cwd('svelte/compiler'); - } catch { - console.log(colors.bold().red('❌ Could not find a local Svelte installation.')); - return; - } - - console.log( - colors.bold().yellow('\nThis will update .svelte files inside the current directory\n') - ); - - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Continue?', - initial: false - }); - - if (!response.value) { - process.exit(1); - } - - const files = glob('**/*.svelte') - .map((file) => file.replace(/\\/g, '/')) - .filter((file) => !file.includes('/node_modules/')); - - for (const file of files) { - try { - const code = await remove_self_closing_tags(compiler, fs.readFileSync(file, 'utf-8')); - fs.writeFileSync(file, code); - } catch { - // continue - } - } - - console.log(colors.bold().green('✔ Your project has been updated')); - console.log(' If using Prettier, please upgrade to the latest prettier-plugin-svelte version'); -} - -/** @param {string} name */ -function import_from_cwd(name) { - const cwd = pathToFileURL(process.cwd()).href; - const url = resolve(name, cwd + '/x.js'); - - return import(url); -} diff --git a/packages/migrate/migrations/self-closing-tags/migrate.js b/packages/migrate/migrations/self-closing-tags/migrate.js deleted file mode 100644 index 73f4ec0a60f5..000000000000 --- a/packages/migrate/migrations/self-closing-tags/migrate.js +++ /dev/null @@ -1,192 +0,0 @@ -import MagicString from 'magic-string'; -import { walk } from 'zimmerframe'; - -const VoidElements = [ - 'area', - 'base', - 'br', - 'col', - 'embed', - 'hr', - 'img', - 'input', - 'keygen', - 'link', - 'menuitem', - 'meta', - 'param', - 'source', - 'track', - 'wbr' -]; - -const SVGElements = [ - 'altGlyph', - 'altGlyphDef', - 'altGlyphItem', - 'animate', - 'animateColor', - 'animateMotion', - 'animateTransform', - 'circle', - 'clipPath', - 'color-profile', - 'cursor', - 'defs', - 'desc', - 'discard', - 'ellipse', - 'feBlend', - 'feColorMatrix', - 'feComponentTransfer', - 'feComposite', - 'feConvolveMatrix', - 'feDiffuseLighting', - 'feDisplacementMap', - 'feDistantLight', - 'feDropShadow', - 'feFlood', - 'feFuncA', - 'feFuncB', - 'feFuncG', - 'feFuncR', - 'feGaussianBlur', - 'feImage', - 'feMerge', - 'feMergeNode', - 'feMorphology', - 'feOffset', - 'fePointLight', - 'feSpecularLighting', - 'feSpotLight', - 'feTile', - 'feTurbulence', - 'filter', - 'font', - 'font-face', - 'font-face-format', - 'font-face-name', - 'font-face-src', - 'font-face-uri', - 'foreignObject', - 'g', - 'glyph', - 'glyphRef', - 'hatch', - 'hatchpath', - 'hkern', - 'image', - 'line', - 'linearGradient', - 'marker', - 'mask', - 'mesh', - 'meshgradient', - 'meshpatch', - 'meshrow', - 'metadata', - 'missing-glyph', - 'mpath', - 'path', - 'pattern', - 'polygon', - 'polyline', - 'radialGradient', - 'rect', - 'set', - 'solidcolor', - 'stop', - 'svg', - 'switch', - 'symbol', - 'text', - 'textPath', - 'tref', - 'tspan', - 'unknown', - 'use', - 'view', - 'vkern' -]; - -/** - * @param {{ preprocess: any, parse: any }} svelte_compiler - * @param {string} source - */ -export async function remove_self_closing_tags({ preprocess, parse }, source) { - const preprocessed = await preprocess(source, { - /** @param {{ content: string }} input */ - script: ({ content }) => ({ - code: content - .split('\n') - .map((line) => ' '.repeat(line.length)) - .join('\n') - }), - /** @param {{ content: string }} input */ - style: ({ content }) => ({ - code: content - .split('\n') - .map((line) => ' '.repeat(line.length)) - .join('\n') - }) - }); - const ast = parse(preprocessed.code); - const ms = new MagicString(source); - /** @type {Array<() => void>} */ - const updates = []; - let is_foreign = false; - let is_custom_element = false; - - walk(ast.html, null, { - _(node, { next, stop }) { - if (node.type === 'Options') { - const namespace = node.attributes.find( - /** @param {any} a */ - (a) => a.type === 'Attribute' && a.name === 'namespace' - ); - if (namespace?.value[0].data === 'foreign') { - is_foreign = true; - stop(); - return; - } - - is_custom_element = node.attributes.some( - /** @param {any} a */ - (a) => a.type === 'Attribute' && (a.name === 'customElement' || a.name === 'tag') - ); - } - - if (node.type === 'Element' || node.type === 'Slot') { - const is_self_closing = source[node.end - 2] === '/'; - if ( - !is_self_closing || - VoidElements.includes(node.name) || - SVGElements.includes(node.name) || - !/^[a-z0-9_-]+$/.test(node.name) - ) { - next(); - return; - } - - let start = node.end - 2; - if (source[start - 1] === ' ') { - start--; - } - updates.push(() => { - if (node.type === 'Element' || is_custom_element) { - ms.update(start, node.end, `></${node.name}>`); - } - }); - } - - next(); - } - }); - - if (is_foreign) { - return source; - } - - updates.forEach((update) => update()); - return ms.toString(); -} diff --git a/packages/migrate/migrations/self-closing-tags/migrate.spec.js b/packages/migrate/migrations/self-closing-tags/migrate.spec.js deleted file mode 100644 index 421f00519732..000000000000 --- a/packages/migrate/migrations/self-closing-tags/migrate.spec.js +++ /dev/null @@ -1,32 +0,0 @@ -import { assert, test } from 'vitest'; -import * as compiler from 'svelte/compiler'; -import { remove_self_closing_tags } from './migrate.js'; - -/** @type {Record<string, string>} */ -const tests = { - '<div/>': '<div></div>', - '<div />': '<div></div>', - '<custom-element />': '<custom-element></custom-element>', - '<div class="foo"/>': '<div class="foo"></div>', - '<div class="foo" />': '<div class="foo"></div>', - '\t<div\n\t\tonclick={blah}\n\t/>': '\t<div\n\t\tonclick={blah}\n\t></div>', - '<foo-bar/>': '<foo-bar></foo-bar>', - '<link/>': '<link/>', - '<link />': '<link />', - '<svg><g /></svg>': '<svg><g /></svg>', - '<slot />': '<slot />', - '<svelte:options customElement="my-element" /><slot />': - '<svelte:options customElement="my-element" /><slot></slot>', - '<svelte:options namespace="foreign" /><foo />': '<svelte:options namespace="foreign" /><foo />', - '<script>console.log("<div />")</script>': '<script>console.log("<div />")</script>', - '<script lang="ts">let a: string = ""</script><div />': - '<script lang="ts">let a: string = ""</script><div></div>', - '<div><i/></div>': '<div><i></i></div>' -}; - -for (const input in tests) { - test(input, async () => { - const output = tests[input]; - assert.equal(await remove_self_closing_tags(compiler, input), output); - }); -} diff --git a/packages/migrate/migrations/svelte-4/index.js b/packages/migrate/migrations/svelte-4/index.js deleted file mode 100644 index 4fea5173da0e..000000000000 --- a/packages/migrate/migrations/svelte-4/index.js +++ /dev/null @@ -1,112 +0,0 @@ -import colors from 'kleur'; -import fs from 'node:fs'; -import process from 'node:process'; -import prompts from 'prompts'; -import glob from 'tiny-glob/sync.js'; -import { bail, check_git, update_js_file, update_svelte_file } from '../../utils.js'; -import { transform_code, transform_svelte_code, update_pkg_json } from './migrate.js'; - -export async function migrate() { - if (!fs.existsSync('package.json')) { - bail('Please re-run this script in a directory with a package.json'); - } - - console.log( - colors - .bold() - .yellow( - '\nThis will update files in the current directory\n' + - "If you're inside a monorepo, don't run this in the root directory, rather run it in all projects independently.\n" - ) - ); - - const use_git = check_git(); - - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Continue?', - initial: false - }); - - if (!response.value) { - process.exit(1); - } - - const folders = await prompts({ - type: 'multiselect', - name: 'value', - message: 'Which folders should be migrated?', - choices: fs - .readdirSync('.') - .filter( - (dir) => fs.statSync(dir).isDirectory() && dir !== 'node_modules' && !dir.startsWith('.') - ) - .map((dir) => ({ title: dir, value: dir, selected: true })) - }); - - if (!folders.value?.length) { - process.exit(1); - } - - const migrate_transition = await prompts({ - type: 'confirm', - name: 'value', - message: - 'Add the `|global` modifier to currently global transitions for backwards compatibility? More info at https://svelte.dev/docs/svelte/v4-migration-guide#transitions-are-local-by-default', - initial: true - }); - - update_pkg_json(); - - // const { default: config } = fs.existsSync('svelte.config.js') - // ? await import(pathToFileURL(path.resolve('svelte.config.js')).href) - // : { default: {} }; - - /** @type {string[]} */ - const svelte_extensions = /* config.extensions ?? - disabled because it would break .svx */ [ - '.svelte' - ]; - const extensions = [...svelte_extensions, '.ts', '.js']; - // For some reason {folders.value.join(',')} as part of the glob doesn't work and returns less files - const files = folders.value.flatMap( - /** @param {string} folder */ (folder) => - glob(`${folder}/**`, { filesOnly: true, dot: true }) - .map((file) => file.replace(/\\/g, '/')) - .filter((file) => !file.includes('/node_modules/')) - ); - - for (const file of files) { - if (extensions.some((ext) => file.endsWith(ext))) { - if (svelte_extensions.some((ext) => file.endsWith(ext))) { - update_svelte_file(file, transform_code, (code) => - transform_svelte_code(code, migrate_transition.value) - ); - } else { - update_js_file(file, transform_code); - } - } - } - - console.log(colors.bold().green('✔ Your project has been migrated')); - - console.log('\nRecommended next steps:\n'); - - const cyan = colors.bold().cyan; - - const tasks = [ - use_git && cyan('git commit -m "migration to Svelte 4"'), - 'Review the migration guide at https://svelte.dev/docs/svelte/v4-migration-guide', - 'Read the updated docs at https://svelte.dev/docs/svelte' - ].filter(Boolean); - - tasks.forEach((task, i) => { - console.log(` ${i + 1}: ${task}`); - }); - - console.log(''); - - if (use_git) { - console.log(`Run ${cyan('git diff')} to review changes.\n`); - } -} diff --git a/packages/migrate/migrations/svelte-4/migrate.js b/packages/migrate/migrations/svelte-4/migrate.js deleted file mode 100644 index c459380ef441..000000000000 --- a/packages/migrate/migrations/svelte-4/migrate.js +++ /dev/null @@ -1,348 +0,0 @@ -import fs from 'node:fs'; -import { Project, ts, Node, SyntaxKind } from 'ts-morph'; -import { log_migration, log_on_ts_modification, update_pkg } from '../../utils.js'; - -export function update_pkg_json() { - fs.writeFileSync( - 'package.json', - update_pkg_json_content(fs.readFileSync('package.json', 'utf8')) - ); -} - -/** - * @param {string} content - */ -export function update_pkg_json_content(content) { - return update_pkg(content, [ - ['svelte', '^4.0.0'], - ['svelte-check', '^3.4.3'], - ['svelte-preprocess', '^5.0.3'], - ['@sveltejs/kit', '^1.20.4'], - ['@sveltejs/vite-plugin-svelte', '^2.4.1'], - [ - 'svelte-loader', - '^3.1.8', - ' (if you are still on webpack 4, you need to update to webpack 5)' - ], - ['rollup-plugin-svelte', '^7.1.5'], - ['prettier-plugin-svelte', '^2.10.1'], - ['eslint-plugin-svelte', '^2.30.0'], - [ - 'eslint-plugin-svelte3', - '^4.0.0', - ' (this package is deprecated, use eslint-plugin-svelte instead. More info: https://svelte.dev/docs/svelte/v4-migration-guide#new-eslint-package)' - ], - [ - 'typescript', - '^5.0.0', - ' (this might introduce new type errors due to breaking changes within TypeScript)' - ] - ]); -} - -/** - * @param {string} code - * @param {boolean} is_ts - */ -export function transform_code(code, is_ts) { - const project = new Project({ useInMemoryFileSystem: true }); - const source = project.createSourceFile('svelte.ts', code); - update_imports(source, is_ts); - update_typeof_svelte_component(source, is_ts); - update_action_types(source, is_ts); - update_action_return_types(source, is_ts); - return source.getFullText(); -} - -/** - * @param {string} code - * @param {boolean} migrate_transition - */ -export function transform_svelte_code(code, migrate_transition) { - code = update_svelte_options(code); - return update_transitions(code, migrate_transition); -} - -/** - * <svelte:options tag=".." /> -> <svelte:options customElement=".." /> - * @param {string} code - */ -function update_svelte_options(code) { - return code.replace(/<svelte:options([^]*?)\stag=([^]*?)\/?>/, (match) => { - log_migration( - 'Replaced `svelte:options` `tag` attribute with `customElement` attribute: https://svelte.dev/docs/svelte/v4-migration-guide#custom-elements-with-svelte' - ); - return match.replace('tag=', 'customElement='); - }); -} - -/** - * transition/in/out:x -> transition/in/out:x|global - * transition/in/out|local:x -> transition/in/out:x - * @param {string} code - * @param {boolean} migrate_transition - */ -function update_transitions(code, migrate_transition) { - if (migrate_transition) { - const replaced = code.replace(/(\s)(transition:|in:|out:)(\w+)(?=[\s>=])/g, '$1$2$3|global'); - if (replaced !== code) { - log_migration( - 'Added `|global` to `transition`, `in`, and `out` directives (transitions are local by default now): https://svelte.dev/docs/svelte/v4-migration-guide#transitions-are-local-by-default' - ); - } - code = replaced; - } - const replaced = code.replace(/(\s)(transition:|in:|out:)(\w+)(\|local)(?=[\s>=])/g, '$1$2$3'); - if (replaced !== code) { - log_migration( - 'Removed `|local` from `transition`, `in`, and `out` directives (transitions are local by default now): https://svelte.dev/docs/svelte/v4-migration-guide#transitions-are-local-by-default' - ); - } - return replaced; -} - -/** - * Action<T> -> Action<T, any> - * @param {import('ts-morph').SourceFile} source - * @param {boolean} is_ts - */ -function update_action_types(source, is_ts) { - const logger = log_on_ts_modification( - source, - 'Updated `Action` interface usages: https://svelte.dev/docs/svelte/v4-migration-guide#stricter-types-for-svelte-functions' - ); - - const imports = get_imports(source, 'svelte/action', 'Action'); - for (const namedImport of imports) { - const identifiers = find_identifiers(source, namedImport.getAliasNode()?.getText() ?? 'Action'); - for (const id of identifiers) { - const parent = id.getParent(); - if (Node.isTypeReference(parent)) { - const type_args = parent.getTypeArguments(); - if (type_args.length === 1) { - parent.addTypeArgument('any'); - } else if (type_args.length === 0) { - parent.addTypeArgument('HTMLElement'); - parent.addTypeArgument('any'); - } - } - } - } - - if (!is_ts) { - replaceInJsDoc(source, (text) => { - return text.replace( - /import\((['"])svelte\/action['"]\).Action(<\w+>)?(?=[^<\w]|$)/g, - (_, quote, type) => - `import(${quote}svelte/action${quote}).Action<${ - type ? type.slice(1, -1) + '' : 'HTMLElement' - }, any>` - ); - }); - } - - logger(); -} - -/** - * ActionReturn -> ActionReturn<any> - * @param {import('ts-morph').SourceFile} source - * @param {boolean} is_ts - */ -function update_action_return_types(source, is_ts) { - const logger = log_on_ts_modification( - source, - 'Updated `ActionReturn` interface usages: https://svelte.dev/docs/svelte/v4-migration-guide#stricter-types-for-svelte-functions' - ); - - const imports = get_imports(source, 'svelte/action', 'ActionReturn'); - for (const namedImport of imports) { - const identifiers = find_identifiers( - source, - namedImport.getAliasNode()?.getText() ?? 'ActionReturn' - ); - for (const id of identifiers) { - const parent = id.getParent(); - if (Node.isTypeReference(parent)) { - const type_args = parent.getTypeArguments(); - if (type_args.length === 0) { - parent.addTypeArgument('any'); - } - } - } - } - - if (!is_ts) { - replaceInJsDoc(source, (text) => { - return text.replace( - /import\((['"])svelte\/action['"]\).ActionReturn(?=[^<\w]|$)/g, - 'import($1svelte/action$1).ActionReturn<any>' - ); - }); - } - - logger(); -} - -/** - * SvelteComponentTyped -> SvelteComponent - * @param {import('ts-morph').SourceFile} source - * @param {boolean} is_ts - */ -function update_imports(source, is_ts) { - const logger = log_on_ts_modification( - source, - 'Replaced `SvelteComponentTyped` imports with `SvelteComponent` imports: https://svelte.dev/docs/svelte/v4-migration-guide#stricter-types-for-svelte-functions' - ); - - const identifiers = find_identifiers(source, 'SvelteComponent'); - const can_rename = identifiers.every((id) => { - const parent = id.getParent(); - return ( - (Node.isImportSpecifier(parent) && - !parent.getAliasNode() && - parent - .getParent() - .getParent() - .getParentIfKind(SyntaxKind.ImportDeclaration) - ?.getModuleSpecifier() - .getText() === 'svelte') || - !is_declaration(parent) - ); - }); - - const imports = get_imports(source, 'svelte', 'SvelteComponentTyped'); - for (const namedImport of imports) { - if (can_rename) { - namedImport.renameAlias('SvelteComponent'); - if ( - namedImport - .getParent() - .getElements() - .some((e) => !e.getAliasNode() && e.getNameNode().getText() === 'SvelteComponent') - ) { - namedImport.remove(); - } else { - namedImport.setName('SvelteComponent'); - namedImport.removeAlias(); - } - } else { - namedImport.renameAlias('SvelteComponentTyped'); - namedImport.setName('SvelteComponent'); - } - } - - if (!is_ts) { - replaceInJsDoc(source, (text) => { - return text.replace( - /import\((['"])svelte['"]\)\.SvelteComponentTyped(?=\W|$)/g, - 'import($1svelte$1).SvelteComponent' - ); - }); - } - - logger(); -} - -/** - * typeof SvelteComponent -> typeof SvelteComponent<any> - * @param {import('ts-morph').SourceFile} source - * @param {boolean} is_ts - */ -function update_typeof_svelte_component(source, is_ts) { - const logger = log_on_ts_modification( - source, - 'Adjusted `typeof SvelteComponent` to `typeof SvelteComponent<any>`: https://svelte.dev/docs/svelte/v4-migration-guide#stricter-types-for-svelte-functions' - ); - - const imports = get_imports(source, 'svelte', 'SvelteComponent'); - - for (const type of imports) { - if (type) { - const name = type.getAliasNode() ?? type.getNameNode(); - if (Node.isIdentifier(name)) { - name.findReferencesAsNodes().forEach((ref) => { - const parent = ref.getParent(); - if (parent && Node.isTypeQuery(parent)) { - const id = parent.getFirstChildByKind(ts.SyntaxKind.Identifier); - if (id?.getText() === name.getText()) { - const typeArguments = parent.getTypeArguments(); - if (typeArguments.length === 0) { - parent.addTypeArgument('any'); - } - } - } - }); - } - } - } - - if (!is_ts) { - replaceInJsDoc(source, (text) => { - return text.replace( - /typeof import\((['"])svelte['"]\)\.SvelteComponent(?=[^<\w]|$)/g, - 'typeof import($1svelte$1).SvelteComponent<any>' - ); - }); - } - - logger(); -} - -/** - * @param {import('ts-morph').SourceFile} source - * @param {string} from - * @param {string} name - */ -function get_imports(source, from, name) { - return source - .getImportDeclarations() - .filter((i) => i.getModuleSpecifierValue() === from) - .flatMap((i) => i.getNamedImports()) - .filter((i) => i.getName() === name); -} - -/** - * @param {import('ts-morph').SourceFile} source - * @param {string} name - */ -function find_identifiers(source, name) { - return source.getDescendantsOfKind(ts.SyntaxKind.Identifier).filter((i) => i.getText() === name); -} - -/** - * Does not include imports - * @param {Node} node - */ -function is_declaration(node) { - return ( - Node.isVariableDeclaration(node) || - Node.isFunctionDeclaration(node) || - Node.isClassDeclaration(node) || - Node.isTypeAliasDeclaration(node) || - Node.isInterfaceDeclaration(node) - ); -} - -/** - * @param {import('ts-morph').SourceFile} source - * @param {(text: string) => string | undefined} replacer - */ -function replaceInJsDoc(source, replacer) { - source.forEachChild((node) => { - if (Node.isJSDocable(node)) { - const tags = node.getJsDocs().flatMap((jsdoc) => jsdoc.getTags()); - tags.forEach((t) => - t.forEachChild((c) => { - if (Node.isJSDocTypeExpression(c)) { - const text = c.getText().slice(1, -1); - const replacement = replacer(text); - if (replacement && replacement !== text) { - c.replaceWithText(`{${replacement}}`); - } - } - }) - ); - } - }); -} diff --git a/packages/migrate/migrations/svelte-4/migrate.spec.js b/packages/migrate/migrations/svelte-4/migrate.spec.js deleted file mode 100644 index f0c34cddd1da..000000000000 --- a/packages/migrate/migrations/svelte-4/migrate.spec.js +++ /dev/null @@ -1,382 +0,0 @@ -import { assert, test } from 'vitest'; -import { transform_code, transform_svelte_code, update_pkg_json_content } from './migrate.js'; - -test('Updates SvelteComponentTyped #1', () => { - const result = transform_code( - `import { SvelteComponentTyped } from 'svelte'; - -export class Foo extends SvelteComponentTyped<{}> {} - -const bar: SvelteComponentTyped = null;`, - true - ); - assert.equal( - result, - `import { SvelteComponent } from 'svelte'; - -export class Foo extends SvelteComponent<{}> {} - -const bar: SvelteComponent = null;` - ); -}); - -test('Updates SvelteComponentTyped #2', () => { - const result = transform_code( - `import { SvelteComponentTyped, SvelteComponent } from 'svelte'; - -export class Foo extends SvelteComponentTyped<{}> {} - -const bar: SvelteComponentTyped = null; -const baz: SvelteComponent = null;`, - true - ); - assert.equal( - result, - `import { SvelteComponent } from 'svelte'; - -export class Foo extends SvelteComponent<{}> {} - -const bar: SvelteComponent = null; -const baz: SvelteComponent = null;` - ); -}); - -test('Updates SvelteComponentTyped #3', () => { - const result = transform_code( - `import { SvelteComponentTyped } from 'svelte'; - -interface SvelteComponent {} - -export class Foo extends SvelteComponentTyped<{}> {} - -const bar: SvelteComponentTyped = null; -const baz: SvelteComponent = null;`, - true - ); - assert.equal( - result, - `import { SvelteComponent as SvelteComponentTyped } from 'svelte'; - -interface SvelteComponent {} - -export class Foo extends SvelteComponentTyped<{}> {} - -const bar: SvelteComponentTyped = null; -const baz: SvelteComponent = null;` - ); -}); - -test('Updates SvelteComponentTyped (jsdoc)', () => { - const result = transform_code( - ` - /** @type {import('svelte').SvelteComponentTyped} */ - const bar = null; - /** @type {import('svelte').SvelteComponentTyped<any>} */ - const baz = null; - `, - false - ); - assert.equal( - result, - ` - /** @type {import('svelte').SvelteComponent} */ - const bar = null; - /** @type {import('svelte').SvelteComponent<any>} */ - const baz = null; - ` - ); -}); - -test('Updates typeof SvelteComponent', () => { - const result = transform_code( - `import { SvelteComponent } from 'svelte'; - import { SvelteComponent as C } from 'svelte'; - - const a: typeof SvelteComponent = null; - function b(c: typeof SvelteComponent) {} - const c: typeof SvelteComponent<any> = null; - const d: typeof C = null; - `, - true - ); - assert.equal( - result, - `import { SvelteComponent } from 'svelte'; - import { SvelteComponent as C } from 'svelte'; - - const a: typeof SvelteComponent<any> = null; - function b(c: typeof SvelteComponent<any>) {} - const c: typeof SvelteComponent<any> = null; - const d: typeof C<any> = null; - ` - ); -}); - -test('Updates typeof SvelteComponent (jsdoc)', () => { - const result = transform_code( - ` - /** @type {typeof import('svelte').SvelteComponent} */ - const a = null; - /** @type {typeof import('svelte').SvelteComponent<any>} */ - const c = null; - /** @type {typeof C} */ - const d: typeof C = null; - `, - false - ); - assert.equal( - result, - ` - /** @type {typeof import('svelte').SvelteComponent<any>} */ - const a = null; - /** @type {typeof import('svelte').SvelteComponent<any>} */ - const c = null; - /** @type {typeof C} */ - const d: typeof C = null; - ` - ); -}); - -test('Updates Action and ActionReturn', () => { - const result = transform_code( - `import type { Action, ActionReturn } from 'svelte/action'; - - const a: Action = () => {}; - const b: Action<HTMLDivElement> = () => {}; - const c: Action<HTMLDivElement, true> = () => {}; - const d: Action<HTMLDivElement, true, {}> = () => {}; - const e: ActionReturn = () => {}; - const f: ActionReturn<true> = () => {}; - const g: ActionReturn<true, {}> = () => {}; - `, - true - ); - assert.equal( - result, - - `import type { Action, ActionReturn } from 'svelte/action'; - - const a: Action<HTMLElement, any> = () => {}; - const b: Action<HTMLDivElement, any> = () => {}; - const c: Action<HTMLDivElement, true> = () => {}; - const d: Action<HTMLDivElement, true, {}> = () => {}; - const e: ActionReturn<any> = () => {}; - const f: ActionReturn<true> = () => {}; - const g: ActionReturn<true, {}> = () => {}; - ` - ); -}); - -test('Updates Action and ActionReturn (jsdoc)', () => { - const result = transform_code( - ` - /** @type {import('svelte/action').Action} */ - const a = () => {}; - /** @type {import('svelte/action').Action<HTMLDivElement>} */ - const b = () => {}; - /** @type {import('svelte/action').Action<HTMLDivElement, true>} */ - const c = () => {}; - /** @type {import('svelte/action').Action<HTMLDivElement, true, {}>} */ - const d = () => {}; - /** @type {import('svelte/action').ActionReturn} */ - const e = () => {}; - /** @type {import('svelte/action').ActionReturn<true>} */ - const f = () => {}; - /** @type {import('svelte/action').ActionReturn<true, {}>} */ - const g = () => {}; - `, - false - ); - assert.equal( - result, - - ` - /** @type {import('svelte/action').Action<HTMLElement, any>} */ - const a = () => {}; - /** @type {import('svelte/action').Action<HTMLDivElement, any>} */ - const b = () => {}; - /** @type {import('svelte/action').Action<HTMLDivElement, true>} */ - const c = () => {}; - /** @type {import('svelte/action').Action<HTMLDivElement, true, {}>} */ - const d = () => {}; - /** @type {import('svelte/action').ActionReturn<any>} */ - const e = () => {}; - /** @type {import('svelte/action').ActionReturn<true>} */ - const f = () => {}; - /** @type {import('svelte/action').ActionReturn<true, {}>} */ - const g = () => {}; - ` - ); -}); - -test('Updates svelte:options #1', () => { - const result = transform_svelte_code( - `<svelte:options tag="asd-asd" /> - - <div>hi</div>`, - true - ); - assert.equal( - result, - `<svelte:options customElement="asd-asd" /> - - <div>hi</div>` - ); -}); - -test('Updates svelte:options #2', () => { - const result = transform_svelte_code( - `<script> - export let foo; - </script> - - <svelte:options - immutable={true} - tag="asd-asd"></svelte:options> - - <div>hi</div>`, - true - ); - assert.equal( - result, - `<script> - export let foo; - </script> - - <svelte:options - immutable={true} - customElement="asd-asd"></svelte:options> - - <div>hi</div>` - ); -}); - -test('Updates transitions', () => { - const result = transform_svelte_code( - `<div transition:fade /> - <div transition:fade={true} /> - <div transition:fade></div> - <div transition:fade|local /> - <div in:fade /> - <div in:fade={true} /> - <div in:fade></div> - <div in:fade|local /> - <div out:fade /> - <div out:fade={true} /> - <div out:fade></div> - <div out:fade|local /> - - <div transitionn:fade /> - <div allin:fade /> - `, - true - ); - assert.equal( - result, - `<div transition:fade|global /> - <div transition:fade|global={true} /> - <div transition:fade|global></div> - <div transition:fade /> - <div in:fade|global /> - <div in:fade|global={true} /> - <div in:fade|global></div> - <div in:fade /> - <div out:fade|global /> - <div out:fade|global={true} /> - <div out:fade|global></div> - <div out:fade /> - - <div transitionn:fade /> - <div allin:fade /> - ` - ); -}); - -test('Updates transitions #2', () => { - const result = transform_svelte_code( - `<div transition:fade /> - <div transition:fade={true} /> - <div transition:fade></div> - <div transition:fade|local /> - <div in:fade /> - <div in:fade={true} /> - <div in:fade></div> - <div in:fade|local /> - <div out:fade /> - <div out:fade={true} /> - <div out:fade></div> - <div out:fade|local /> - - <div transitionn:fade /> - <div allin:fade /> - `, - false - ); - assert.equal( - result, - `<div transition:fade /> - <div transition:fade={true} /> - <div transition:fade></div> - <div transition:fade /> - <div in:fade /> - <div in:fade={true} /> - <div in:fade></div> - <div in:fade /> - <div out:fade /> - <div out:fade={true} /> - <div out:fade></div> - <div out:fade /> - - <div transitionn:fade /> - <div allin:fade /> - ` - ); -}); - -test('Update package.json', () => { - const result = update_pkg_json_content(`{ - "name": "svelte-app", - "version": "1.0.0", - "devDependencies": { - "svelte": "^3.0.0", - "svelte-check": "^1.0.0", - "svelte-preprocess": "^5.0.0" - }, - "dependencies": { - "@sveltejs/kit": "^1.0.0" - } -}`); - assert.equal( - result, - `{ - "name": "svelte-app", - "version": "1.0.0", - "devDependencies": { - "svelte": "^4.0.0", - "svelte-check": "^3.4.3", - "svelte-preprocess": "^5.0.3" - }, - "dependencies": { - "@sveltejs/kit": "^1.20.4" - } -}` - ); -}); - -test('Does not downgrade versions', () => { - const result = update_pkg_json_content(`{ - "devDependencies": { - "svelte": "^4.0.5", - "typescript": "github:idk" - } -}`); - assert.equal( - result, - `{ - "devDependencies": { - "svelte": "^4.0.5", - "typescript": "github:idk" - } -}` - ); -}); diff --git a/packages/migrate/migrations/svelte-5/index.js b/packages/migrate/migrations/svelte-5/index.js deleted file mode 100644 index a6b17d421232..000000000000 --- a/packages/migrate/migrations/svelte-5/index.js +++ /dev/null @@ -1,216 +0,0 @@ -import { resolve } from 'import-meta-resolve'; -import colors from 'kleur'; -import { execSync } from 'node:child_process'; -import process from 'node:process'; -import fs from 'node:fs'; -import { dirname } from 'node:path'; -import { fileURLToPath, pathToFileURL } from 'node:url'; -import prompts from 'prompts'; -import semver from 'semver'; -import glob from 'tiny-glob/sync.js'; -import { bail, check_git, update_js_file, update_svelte_file } from '../../utils.js'; -import { migrate as migrate_svelte_4 } from '../svelte-4/index.js'; -import { migrate as migrate_sveltekit_2 } from '../sveltekit-2/index.js'; -import { transform_module_code, transform_svelte_code, update_pkg_json } from './migrate.js'; - -export async function migrate() { - if (!fs.existsSync('package.json')) { - bail('Please re-run this script in a directory with a package.json'); - } - - console.log( - 'This migration is experimental — please report any bugs to https://github.com/sveltejs/svelte/issues' - ); - - const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); - - const svelte_dep = pkg.devDependencies?.svelte ?? pkg.dependencies?.svelte; - if (svelte_dep && semver.validRange(svelte_dep) && semver.gtr('4.0.0', svelte_dep)) { - console.log( - colors - .bold() - .yellow( - '\nDetected Svelte 3. You need to upgrade to Svelte version 4 first (`npx sv migrate svelte-4`).\n' - ) - ); - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Run svelte-4 migration now?', - initial: false - }); - if (!response.value) { - process.exit(1); - } else { - await migrate_svelte_4(); - console.log( - colors - .bold() - .green( - 'svelte-4 migration complete. Check that everything is ok, then run `npx sv migrate svelte-5` again to continue the Svelte 5 migration.\n' - ) - ); - process.exit(0); - } - } - - const kit_dep = pkg.devDependencies?.['@sveltejs/kit'] ?? pkg.dependencies?.['@sveltejs/kit']; - if (kit_dep && semver.validRange(kit_dep) && semver.gtr('2.0.0', kit_dep)) { - console.log( - colors - .bold() - .yellow( - '\nDetected SvelteKit 1. You need to upgrade to SvelteKit version 2 first (`npx sv migrate sveltekit-2`).\n' - ) - ); - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Run sveltekit-2 migration now?', - initial: false - }); - if (!response.value) { - process.exit(1); - } else { - await migrate_sveltekit_2(); - console.log( - colors - .bold() - .green( - 'sveltekit-2 migration complete. Check that everything is ok, then run `npx sv migrate svelte-5` again to continue the Svelte 5 migration.\n' - ) - ); - process.exit(0); - } - } - - let migrate; - try { - try { - ({ migrate } = await import_from_cwd('svelte/compiler')); - if (!migrate) throw new Error('found Svelte 4'); - } catch { - execSync('npm install svelte@^5.0.0 --no-save', { - stdio: 'inherit', - cwd: dirname(fileURLToPath(import.meta.url)) - }); - const url = resolve('svelte/compiler', import.meta.url); - ({ migrate } = await import(url)); - } - } catch (e) { - console.log(e); - console.log( - colors - .bold() - .red( - '❌ Could not install Svelte. Manually bump the dependency to version 5 in your package.json, install it, then try again.' - ) - ); - return; - } - - console.log( - colors - .bold() - .yellow( - '\nThis will update files in the current directory\n' + - "If you're inside a monorepo, don't run this in the root directory, rather run it in all projects independently.\n" - ) - ); - - const use_git = check_git(); - - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Continue?', - initial: false - }); - - if (!response.value) { - process.exit(1); - } - - const folders = await prompts({ - type: 'multiselect', - name: 'value', - message: 'Which folders should be migrated?', - choices: fs - .readdirSync('.') - .filter( - (dir) => fs.statSync(dir).isDirectory() && dir !== 'node_modules' && !dir.startsWith('.') - ) - .map((dir) => ({ title: dir, value: dir, selected: true })) - }); - - if (!folders.value?.length) { - process.exit(1); - } - - update_pkg_json(); - - const use_ts = fs.existsSync('tsconfig.json'); - - // const { default: config } = fs.existsSync('svelte.config.js') - // ? await import(pathToFileURL(path.resolve('svelte.config.js')).href) - // : { default: {} }; - - /** @type {string[]} */ - const svelte_extensions = /* config.extensions ?? - disabled because it would break .svx */ [ - '.svelte' - ]; - const extensions = [...svelte_extensions, '.ts', '.js']; - // For some reason {folders.value.join(',')} as part of the glob doesn't work and returns less files - const files = folders.value.flatMap( - /** @param {string} folder */ (folder) => - glob(`${folder}/**`, { filesOnly: true, dot: true }) - .map((file) => file.replace(/\\/g, '/')) - .filter((file) => !file.includes('/node_modules/')) - ); - - for (const file of files) { - if (extensions.some((ext) => file.endsWith(ext))) { - if (svelte_extensions.some((ext) => file.endsWith(ext))) { - update_svelte_file(file, transform_module_code, (code) => - transform_svelte_code(code, migrate, { filename: file, use_ts }) - ); - } else { - update_js_file(file, transform_module_code); - } - } - } - - console.log(colors.bold().green('✔ Your project has been migrated')); - - console.log('\nRecommended next steps:\n'); - - const cyan = colors.bold().cyan; - - const tasks = [ - "install the updated dependencies ('npm i' / 'pnpm i' / etc) " + - '(note that there may be peer dependency issues when not all your libraries officially support Svelte 5 yet. In this case try installing with the --force option)', - use_git && cyan('git commit -m "migration to Svelte 5"'), - 'Review the breaking changes at https://svelte-5-preview.vercel.app/docs/breaking-changes' - // replace with this once it's live: - // 'Review the migration guide at https://svelte.dev/docs/svelte/v5-migration-guide', - // 'Read the updated docs at https://svelte.dev/docs/svelte' - ].filter(Boolean); - - tasks.forEach((task, i) => { - console.log(` ${i + 1}: ${task}`); - }); - - console.log(''); - - if (use_git) { - console.log(`Run ${cyan('git diff')} to review changes.\n`); - } -} - -/** @param {string} name */ -function import_from_cwd(name) { - const cwd = pathToFileURL(process.cwd()).href; - const url = resolve(name, cwd + '/x.js'); - - return import(url); -} diff --git a/packages/migrate/migrations/svelte-5/migrate.js b/packages/migrate/migrations/svelte-5/migrate.js deleted file mode 100644 index eb9e750f46a0..000000000000 --- a/packages/migrate/migrations/svelte-5/migrate.js +++ /dev/null @@ -1,129 +0,0 @@ -import fs from 'node:fs'; -import { Project, ts, Node } from 'ts-morph'; -import { add_named_import, update_pkg } from '../../utils.js'; - -export function update_pkg_json() { - fs.writeFileSync( - 'package.json', - update_pkg_json_content(fs.readFileSync('package.json', 'utf8')) - ); -} - -/** - * @param {string} content - */ -export function update_pkg_json_content(content) { - return update_pkg(content, [ - ['svelte', '^5.0.0'], - ['svelte-check', '^4.0.0'], - ['svelte-preprocess', '^6.0.0'], - ['@sveltejs/enhanced-img', '^0.3.9'], - ['@sveltejs/kit', '^2.5.27'], - ['@sveltejs/vite-plugin-svelte', '^4.0.0'], - [ - 'svelte-loader', - '^3.2.3', - ' (if you are still on webpack 4, you need to update to webpack 5)' - ], - ['rollup-plugin-svelte', '^7.2.2'], - ['prettier', '^3.1.0'], - ['prettier-plugin-svelte', '^3.2.6'], - ['eslint-plugin-svelte', '^2.45.1'], - ['svelte-eslint-parser', '^0.42.0'], - [ - 'eslint-plugin-svelte3', - '^4.0.0', - ' (this package is deprecated, use eslint-plugin-svelte instead. More info: https://svelte.dev/docs/svelte/v4-migration-guide#new-eslint-package)' - ], - [ - 'typescript', - '^5.5.0', - ' (this might introduce new type errors due to breaking changes within TypeScript)' - ], - ['vite', '^5.4.4'] - ]); -} - -/** - * @param {string} code - */ -export function transform_module_code(code) { - const project = new Project({ useInMemoryFileSystem: true }); - const source = project.createSourceFile('svelte.ts', code); - update_component_instantiation(source); - return source.getFullText(); -} - -/** - * @param {string} code - * @param {(source: string, options: { filename?: string, use_ts?: boolean }) => { code: string }} transform_code - * @param {{ filename?: string, use_ts?: boolean }} options - */ -export function transform_svelte_code(code, transform_code, options) { - return transform_code(code, options).code; -} - -/** - * new Component(...) -> mount(Component, ...) - * @param {import('ts-morph').SourceFile} source - */ -function update_component_instantiation(source) { - const imports = source - .getImportDeclarations() - .filter((i) => i.getModuleSpecifierValue().endsWith('.svelte')) - .flatMap((i) => i.getDefaultImport() || []); - - for (const defaultImport of imports) { - const identifiers = find_identifiers(source, defaultImport.getText()); - - for (const id of identifiers) { - const parent = id.getParent(); - - if (Node.isNewExpression(parent)) { - const args = parent.getArguments(); - - if (args.length === 1) { - const method = - Node.isObjectLiteralExpression(args[0]) && !!args[0].getProperty('hydrate') - ? 'hydrate' - : 'mount'; - - if (method === 'hydrate') { - /** @type {import('ts-morph').ObjectLiteralExpression} */ (args[0]) - .getProperty('hydrate') - ?.remove(); - } - - add_named_import(source, 'svelte', method); - - const declaration = parent - .getParentIfKind(ts.SyntaxKind.VariableDeclaration) - ?.getNameNode(); - if (Node.isIdentifier(declaration)) { - const usages = declaration.findReferencesAsNodes(); - for (const usage of usages) { - const parent = usage.getParent(); - if (Node.isPropertyAccessExpression(parent) && parent.getName() === '$destroy') { - const call_expr = parent.getParentIfKind(ts.SyntaxKind.CallExpression); - if (call_expr) { - call_expr.replaceWithText(`unmount(${usage.getText()})`); - add_named_import(source, 'svelte', 'unmount'); - } - } - } - } - - parent.replaceWithText(`${method}(${id.getText()}, ${args[0].getText()})`); - } - } - } - } -} - -/** - * @param {import('ts-morph').SourceFile} source - * @param {string} name - */ -function find_identifiers(source, name) { - return source.getDescendantsOfKind(ts.SyntaxKind.Identifier).filter((i) => i.getText() === name); -} diff --git a/packages/migrate/migrations/svelte-5/migrate.spec.js b/packages/migrate/migrations/svelte-5/migrate.spec.js deleted file mode 100644 index 0f9e3e6d4db6..000000000000 --- a/packages/migrate/migrations/svelte-5/migrate.spec.js +++ /dev/null @@ -1,135 +0,0 @@ -import { assert, test } from 'vitest'; -import { transform_module_code, update_pkg_json_content } from './migrate.js'; - -test('Updates component creation #1', () => { - const result = transform_module_code( - `import App from './App.svelte' - -const app = new App({ - target: document.getElementById('app')! -}) - -export default app` - ); - assert.equal( - result, - `import App from './App.svelte' -import { mount } from "svelte"; - -const app = mount(App, { - target: document.getElementById('app')! -}) - -export default app` - ); -}); - -test('Updates component creation #2', () => { - const result = transform_module_code( - `import App from './App.svelte' - -new App({ - target: document.getElementById('app')!, - hydrate: true -})` - ); - assert.equal( - result, - `import App from './App.svelte' -import { hydrate } from "svelte"; - -hydrate(App, { - target: document.getElementById('app')! -})` - ); -}); - -test('Updates component creation #3', () => { - const result = transform_module_code( - `import App from './App.svelte' - -const x = new App({ - target: document.getElementById('app')! -}); - -function destroy() { - x.$destroy(); -} -` - ); - assert.equal( - result, - `import App from './App.svelte' -import { mount, unmount } from "svelte"; - -const x = mount(App, { - target: document.getElementById('app')! -}); - -function destroy() { - unmount(x); -} -` - ); -}); - -test('Updates component creation with multiple components', () => { - const result = transform_module_code( - `import App from './App.svelte'; -import Child from './Child.svelte'; - -const x = new App({ - target: document.getElementById('app')! -}); -const y = new Child({ - target: document.getElementById('child')! -}); -` - ); - assert.equal( - result, - `import App from './App.svelte'; -import Child from './Child.svelte'; -import { mount } from "svelte"; - -const x = mount(App, { - target: document.getElementById('app')! -}); -const y = mount(Child, { - target: document.getElementById('child')! -}); -` - ); -}); - -test('Update package.json', () => { - const result = update_pkg_json_content(`{ - "name": "svelte-app", - "version": "1.0.0", - "devDependencies": { - "svelte": "^4.0.0", - "svelte-check": "^3.0.0", - "svelte-preprocess": "^5.0.0", - "svelte-eslint-parser": "^0.41.1" - }, - "dependencies": { - "@sveltejs/kit": "^2.0.0" - } -}`); - assert.equal( - result, - `{ - "name": "svelte-app", - "version": "1.0.0", - "devDependencies": { - "svelte": "^5.0.0", - "svelte-check": "^4.0.0", - "svelte-preprocess": "^6.0.0", - "svelte-eslint-parser": "^0.42.0" - }, - "dependencies": { - "@sveltejs/kit": "^2.5.27" - } -}` - ); -}); diff --git a/packages/migrate/migrations/sveltekit-2/index.js b/packages/migrate/migrations/sveltekit-2/index.js deleted file mode 100644 index c62442aba5b2..000000000000 --- a/packages/migrate/migrations/sveltekit-2/index.js +++ /dev/null @@ -1,167 +0,0 @@ -import colors from 'kleur'; -import fs from 'node:fs'; -import process from 'node:process'; -import prompts from 'prompts'; -import semver from 'semver'; -import glob from 'tiny-glob/sync.js'; -import { - bail, - check_git, - update_js_file, - update_svelte_file, - update_tsconfig -} from '../../utils.js'; -import { migrate as migrate_svelte_4 } from '../svelte-4/index.js'; -import { - transform_code, - update_pkg_json, - update_svelte_config, - update_tsconfig_content -} from './migrate.js'; - -export async function migrate() { - if (!fs.existsSync('package.json')) { - bail('Please re-run this script in a directory with a package.json'); - } - - if (!fs.existsSync('svelte.config.js')) { - bail('Please re-run this script in a directory with a svelte.config.js'); - } - - console.log( - colors - .bold() - .yellow( - '\nThis will update files in the current directory\n' + - "If you're inside a monorepo, run this in individual project directories rather than the workspace root.\n" - ) - ); - - const use_git = check_git(); - - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Continue?', - initial: false - }); - - if (!response.value) { - process.exit(1); - } - - const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); - const svelte_dep = pkg.devDependencies?.svelte ?? pkg.dependencies?.svelte; - if (svelte_dep === undefined) { - bail('Please install Svelte before continuing'); - } - - if (semver.validRange(svelte_dep) && semver.gtr('4.0.0', svelte_dep)) { - console.log( - colors - .bold() - .yellow( - '\nSvelteKit 2 requires Svelte 4 or newer. We recommend running the `svelte-4` migration first (`npx sv migrate svelte-4`).\n' - ) - ); - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Run `svelte-4` migration now?', - initial: false - }); - if (!response.value) { - process.exit(1); - } else { - await migrate_svelte_4(); - console.log( - colors - .bold() - .green('`svelte-4` migration complete. Continue with `sveltekit-2` migration?\n') - ); - const response = await prompts({ - type: 'confirm', - name: 'value', - message: 'Continue?', - initial: false - }); - if (!response.value) { - process.exit(1); - } - } - } - - const folders = await prompts({ - type: 'multiselect', - name: 'value', - message: 'Which folders should be migrated?', - choices: fs - .readdirSync('.') - .filter( - (dir) => - fs.statSync(dir).isDirectory() && - dir !== 'node_modules' && - dir !== 'dist' && - !dir.startsWith('.') - ) - .map((dir) => ({ title: dir, value: dir, selected: dir === 'src' })) - }); - - if (!folders.value?.length) { - process.exit(1); - } - - update_pkg_json(); - update_tsconfig(update_tsconfig_content); - update_svelte_config(); - - // const { default: config } = fs.existsSync('svelte.config.js') - // ? await import(pathToFileURL(path.resolve('svelte.config.js')).href) - // : { default: {} }; - - /** @type {string[]} */ - const svelte_extensions = /* config.extensions ?? - disabled because it would break .svx */ [ - '.svelte' - ]; - const extensions = [...svelte_extensions, '.ts', '.js']; - // For some reason {folders.value.join(',')} as part of the glob doesn't work and returns less files - const files = folders.value.flatMap( - /** @param {string} folder */ (folder) => - glob(`${folder}/**`, { filesOnly: true, dot: true }) - .map((file) => file.replace(/\\/g, '/')) - .filter((file) => !file.includes('/node_modules/')) - ); - - for (const file of files) { - if (extensions.some((ext) => file.endsWith(ext))) { - if (svelte_extensions.some((ext) => file.endsWith(ext))) { - update_svelte_file(file, transform_code, (code) => code); - } else { - update_js_file(file, transform_code); - } - } - } - - console.log(colors.bold().green('✔ Your project has been migrated')); - - console.log('\nRecommended next steps:\n'); - - const cyan = colors.bold().cyan; - - const tasks = [ - 'Run npm install (or the corresponding installation command of your package manager)', - use_git && cyan('git commit -m "migration to SvelteKit 2"'), - 'Review the migration guide at https://svelte.dev/docs/kit/migrating-to-sveltekit-2', - 'Read the updated docs at https://svelte.dev/docs/kit' - ].filter(Boolean); - - tasks.forEach((task, i) => { - console.log(` ${i + 1}: ${task}`); - }); - - console.log(''); - - if (use_git) { - console.log(`Run ${cyan('git diff')} to review changes.\n`); - } -} diff --git a/packages/migrate/migrations/sveltekit-2/migrate.js b/packages/migrate/migrations/sveltekit-2/migrate.js deleted file mode 100644 index 9657be37d480..000000000000 --- a/packages/migrate/migrations/sveltekit-2/migrate.js +++ /dev/null @@ -1,318 +0,0 @@ -import fs from 'node:fs'; -import { Project, Node, SyntaxKind } from 'ts-morph'; -import { - add_named_import, - log_migration, - log_on_ts_modification, - update_pkg -} from '../../utils.js'; -import path from 'node:path'; - -export function update_pkg_json() { - fs.writeFileSync( - 'package.json', - update_pkg_json_content(fs.readFileSync('package.json', 'utf8')) - ); -} - -/** - * @param {string} content - */ -export function update_pkg_json_content(content) { - return update_pkg(content, [ - // All other bumps are done as part of the Svelte 4 migration - ['@sveltejs/kit', '^2.0.0'], - ['@sveltejs/adapter-static', '^3.0.0'], - ['@sveltejs/adapter-node', '^2.0.0'], - ['@sveltejs/adapter-vercel', '^4.0.0'], - ['@sveltejs/adapter-netlify', '^3.0.0'], - ['@sveltejs/adapter-cloudflare', '^3.0.0'], - ['@sveltejs/adapter-cloudflare-workers', '^2.0.0'], - ['@sveltejs/adapter-auto', '^3.0.0'], - ['vite', '^5.0.0'], - ['vitest', '^1.0.0'], - ['typescript', '^5.0.0'], // should already be done by Svelte 4 migration, but who knows - [ - '@sveltejs/vite-plugin-svelte', - '^3.0.0', - ' (vite-plugin-svelte is a peer dependency of SvelteKit now)', - 'devDependencies' - ] - ]); -} - -/** @param {string} content */ -export function update_tsconfig_content(content) { - if (!content.includes('"extends"')) { - // Don't touch the tsconfig if people opted out of our default config - return content; - } - - let updated = content - .split('\n') - .filter( - (line) => !line.includes('importsNotUsedAsValues') && !line.includes('preserveValueImports') - ) - .join('\n'); - if (updated !== content) { - log_migration( - 'Removed deprecated `importsNotUsedAsValues` and `preserveValueImports`' + - ' from tsconfig.json: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#updated-dependency-requirements' - ); - } - - content = updated; - updated = content.replace('"moduleResolution": "node"', '"moduleResolution": "bundler"'); - if (updated !== content) { - log_migration( - 'Updated `moduleResolution` to `bundler`' + - ' in tsconfig.json: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#updated-dependency-requirements' - ); - } - - if (content.includes('"paths":') || content.includes('"baseUrl":')) { - log_migration( - '`paths` and/or `baseUrl` detected in your tsconfig.json - remove it and use `kit.alias` instead: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#generated-tsconfig-json-is-more-strict' - ); - } - - return updated; -} - -export function update_svelte_config() { - fs.writeFileSync( - 'svelte.config.js', - update_svelte_config_content(fs.readFileSync('svelte.config.js', 'utf8')) - ); -} - -/** - * @param {string} code - */ -export function update_svelte_config_content(code) { - const regex = /\s*dangerZone:\s*{[^}]*},?/g; - const result = code.replace(regex, ''); - if (result !== code) { - log_migration( - 'Removed `dangerZone` from svelte.config.js: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#server-fetches-are-not-trackable-anymore' - ); - } - - const project = new Project({ useInMemoryFileSystem: true }); - const source = project.createSourceFile('svelte.ts', result); - - const namedImport = get_import(source, '@sveltejs/kit/vite', 'vitePreprocess'); - if (!namedImport) return result; - - const logger = log_on_ts_modification( - source, - 'Changed `vitePreprocess` import: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#vitepreprocess-is-no-longer-exported-from-sveltejs-kit-vite' - ); - - if (namedImport.getParent().getParent().getNamedImports().length === 1) { - namedImport - .getParent() - .getParent() - .getParentIfKind(SyntaxKind.ImportDeclaration) - ?.setModuleSpecifier('@sveltejs/vite-plugin-svelte'); - } else { - namedImport.remove(); - add_named_import(source, '@sveltejs/vite-plugin-svelte', 'vitePreprocess'); - } - - logger(); - return source.getFullText(); -} - -/** - * @param {string} code - * @param {boolean} _is_ts - * @param {string} file_path - */ -export function transform_code(code, _is_ts, file_path) { - const project = new Project({ useInMemoryFileSystem: true }); - const source = project.createSourceFile('svelte.ts', code); - remove_throws(source); - add_cookie_note(file_path, source); - replace_resolve_path(source); - return source.getFullText(); -} - -/** - * `throw redirect(..)` -> `redirect(..)` - * @param {import('ts-morph').SourceFile} source - */ -function remove_throws(source) { - const logger = log_on_ts_modification( - source, - 'Removed `throw` from redirect/error functions: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#redirect-and-error-are-no-longer-thrown-by-you' - ); - - /** @param {string} id */ - function remove_throw(id) { - const named_import = get_import(source, '@sveltejs/kit', id); - if (!named_import) return; - const name_node = named_import.getNameNode(); - if (Node.isIdentifier(name_node)) { - for (const id of name_node.findReferencesAsNodes()) { - const call_expression = id.getParent(); - const throw_stmt = call_expression?.getParent(); - if (Node.isCallExpression(call_expression) && Node.isThrowStatement(throw_stmt)) { - throw_stmt.replaceWithText((writer) => { - writer.setIndentationLevel(0); - writer.write(call_expression.getText() + ';'); - }); - } - } - } - } - - remove_throw('redirect'); - remove_throw('error'); - - logger(); -} - -/** - * Adds `path` option to `cookies.set/delete/serialize` calls - * @param {string} file_path - * @param {import('ts-morph').SourceFile} source - */ -function add_cookie_note(file_path, source) { - const basename = path.basename(file_path); - if ( - basename !== '+page.js' && - basename !== '+page.ts' && - basename !== '+page.server.js' && - basename !== '+page.server.ts' && - basename !== '+server.js' && - basename !== '+server.ts' && - basename !== 'hooks.server.js' && - basename !== 'hooks.server.ts' - ) { - return; - } - - const logger = log_on_ts_modification( - source, - 'Search codebase for `@migration` and manually add the `path` option to `cookies.set/delete/serialize` calls: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#path-is-now-a-required-option-for-cookies' - ); - - const calls = []; - - for (const call of source.getDescendantsOfKind(SyntaxKind.CallExpression)) { - const expression = call.getExpression(); - if (!Node.isPropertyAccessExpression(expression)) { - continue; - } - - const name = expression.getName(); - if (name !== 'set' && name !== 'delete' && name !== 'serialize') { - continue; - } - - if (call.getText().includes('path')) { - continue; - } - - const options_arg = call.getArguments()[name === 'delete' ? 1 : 2]; - if (options_arg && !Node.isObjectLiteralExpression(options_arg)) { - continue; - } - - const parent_function = call.getFirstAncestor( - /** @returns {ancestor is import('ts-morph').FunctionDeclaration | import('ts-morph').FunctionExpression | import('ts-morph').ArrowFunction} */ - (ancestor) => { - // Check if this is inside a function - const fn_declaration = ancestor.asKind(SyntaxKind.FunctionDeclaration); - const fn_expression = ancestor.asKind(SyntaxKind.FunctionExpression); - const arrow_fn_expression = ancestor.asKind(SyntaxKind.ArrowFunction); - return !!fn_declaration || !!fn_expression || !!arrow_fn_expression; - } - ); - if (!parent_function) { - continue; - } - - const expression_text = expression.getExpression().getText(); - if ( - expression_text !== 'cookies' && - (!expression_text.includes('.') || - expression_text.split('.').pop() !== 'cookies' || - !parent_function.getParameter(expression_text.split('.')[0])) - ) { - continue; - } - - const parent = call.getFirstAncestorByKind(SyntaxKind.Block); - if (!parent) { - continue; - } - - calls.push(() => - call.replaceWithText((writer) => { - writer.setIndentationLevel(0); // prevent ts-morph from being unhelpful and adding its own indentation - writer.write('/* @migration task: add path argument */ ' + call.getText()); - }) - ); - } - - for (const call of calls) { - call(); - } - - logger(); -} - -/** - * `resolvePath` from `@sveltejs/kit` -> `resolveRoute` from `$app/paths` - * @param {import('ts-morph').SourceFile} source - */ -function replace_resolve_path(source) { - const named_import = get_import(source, '@sveltejs/kit', 'resolvePath'); - if (!named_import) return; - - const logger = log_on_ts_modification( - source, - 'Replaced `resolvePath` with `resolveRoute`: https://svelte.dev/docs/kit/migrating-to-sveltekit-2#resolvePath-has-been-removed' - ); - - const name_node = named_import.getNameNode(); - if (Node.isIdentifier(name_node)) { - for (const id of name_node.findReferencesAsNodes()) { - id.replaceWithText('resolveRoute'); - } - } - if (named_import.getParent().getParent().getNamedImports().length === 1) { - named_import.getParent().getParent().getParent().remove(); - } else { - named_import.remove(); - } - - const paths_import = source.getImportDeclaration( - (i) => i.getModuleSpecifierValue() === '$app/paths' - ); - if (paths_import) { - paths_import.addNamedImport('resolveRoute'); - } else { - source.addImportDeclaration({ - moduleSpecifier: '$app/paths', - namedImports: ['resolveRoute'] - }); - } - - logger(); -} - -/** - * @param {import('ts-morph').SourceFile} source - * @param {string} from - * @param {string} name - */ -function get_import(source, from, name) { - return source - .getImportDeclarations() - .filter((i) => i.getModuleSpecifierValue() === from) - .flatMap((i) => i.getNamedImports()) - .find((i) => i.getName() === name); -} diff --git a/packages/migrate/migrations/sveltekit-2/migrate.spec.js b/packages/migrate/migrations/sveltekit-2/migrate.spec.js deleted file mode 100644 index a297d947657c..000000000000 --- a/packages/migrate/migrations/sveltekit-2/migrate.spec.js +++ /dev/null @@ -1,32 +0,0 @@ -import { assert, test } from 'vitest'; -import { - transform_code, - update_svelte_config_content, - update_tsconfig_content -} from './migrate.js'; -import { read_samples } from '../../utils.js'; - -for (const sample of read_samples(new URL('./svelte-config-samples.md', import.meta.url))) { - test('svelte.config.js: ' + sample.description, () => { - const actual = update_svelte_config_content(sample.before); - assert.equal(actual, sample.after); - }); -} - -for (const sample of read_samples(new URL('./tsconfig-samples.md', import.meta.url))) { - test('tsconfig.json: ' + sample.description, () => { - const actual = update_tsconfig_content(sample.before); - assert.equal(actual, sample.after); - }); -} - -for (const sample of read_samples(new URL('./tsjs-samples.md', import.meta.url))) { - test('JS/TS file: ' + sample.description, () => { - const actual = transform_code( - sample.before, - sample.filename?.endsWith('.ts') ?? false, - sample.filename ?? '+page.js' - ); - assert.equal(actual, sample.after); - }); -} diff --git a/packages/migrate/migrations/sveltekit-2/svelte-config-samples.md b/packages/migrate/migrations/sveltekit-2/svelte-config-samples.md deleted file mode 100644 index 9a06096a3986..000000000000 --- a/packages/migrate/migrations/sveltekit-2/svelte-config-samples.md +++ /dev/null @@ -1,126 +0,0 @@ -## Removes dangerZone (1) - -```js before -export default { - kit: { - foo: bar, - dangerZone: { - trackServerFetches: true - }, - baz: qux - } -}; -``` - -```js after -export default { - kit: { - foo: bar, - baz: qux - } -}; -``` - -## Removes dangerZone (2) - -```js before -export default { - kit: { - foo: bar, - dangerZone: { - trackServerFetches: true - } - } -}; -``` - -<!-- prettier-ignore --> -```js after -export default { - kit: { - foo: bar, - } -}; -``` - -## Replaces vitePreprocess import (1) - -```js before -import adapter from '@sveltejs/adapter-auto'; -import { vitePreprocess } from '@sveltejs/kit/vite'; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - // Consult https://svelte.dev/docs/kit/integrations#preprocessors - // for more information about preprocessors - preprocess: vitePreprocess(), - - kit: { - adapter: adapter() - } -}; - -export default config; -``` - -```js after -import adapter from '@sveltejs/adapter-auto'; -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - // Consult https://svelte.dev/docs/kit/integrations#preprocessors - // for more information about preprocessors - preprocess: vitePreprocess(), - - kit: { - adapter: adapter() - } -}; - -export default config; -``` - -## Replaces vitePreprocess import (2) - -```js before -import adapter from '@sveltejs/adapter-auto'; -import { vitePreprocess, foo } from '@sveltejs/kit/vite'; - -export default { - preprocess: vitePreprocess() -}; -``` - -<!-- prettier-ignore --> -```js after -import adapter from '@sveltejs/adapter-auto'; -import { foo } from '@sveltejs/kit/vite'; -import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; - -export default { - preprocess: vitePreprocess() -}; -``` - -## Replaces vitePreprocess import (3) - -```js before -import adapter from '@sveltejs/adapter-auto'; -import { vitePreprocess, foo } from '@sveltejs/kit/vite'; -import { a } from '@sveltejs/vite-plugin-svelte'; - -export default { - preprocess: vitePreprocess() -}; -``` - -```js after -import adapter from '@sveltejs/adapter-auto'; -import { foo } from '@sveltejs/kit/vite'; -import { a, vitePreprocess } from '@sveltejs/vite-plugin-svelte'; - -export default { - preprocess: vitePreprocess() -}; -``` diff --git a/packages/migrate/migrations/sveltekit-2/tsconfig-samples.md b/packages/migrate/migrations/sveltekit-2/tsconfig-samples.md deleted file mode 100644 index 93d357fac974..000000000000 --- a/packages/migrate/migrations/sveltekit-2/tsconfig-samples.md +++ /dev/null @@ -1,40 +0,0 @@ -## Removes importsNotUsedAsValues/preserveValueImports - -```json before -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "importsNotUsedAsValues": "error", - "preserveValueImports": true - } -} -``` - -<!-- prettier-ignore --> -```json after -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - } -} -``` - -## Leaves tsconfig alone - -```json before -{ - "compilerOptions": { - "importsNotUsedAsValues": "error", - "preserveValueImports": true - } -} -``` - -```json after -{ - "compilerOptions": { - "importsNotUsedAsValues": "error", - "preserveValueImports": true - } -} -``` diff --git a/packages/migrate/migrations/sveltekit-2/tsjs-samples.md b/packages/migrate/migrations/sveltekit-2/tsjs-samples.md deleted file mode 100644 index 3fed9bf6b95f..000000000000 --- a/packages/migrate/migrations/sveltekit-2/tsjs-samples.md +++ /dev/null @@ -1,170 +0,0 @@ -## Removes throws - -```js before -import { redirect, error } from '@sveltejs/kit'; - -throw redirect(); -redirect(); -throw error(); -error(); -function x() { - let redirect = true; - throw redirect(); -} -``` - -```js after -import { redirect, error } from '@sveltejs/kit'; - -redirect(); -redirect(); -error(); -error(); -function x() { - let redirect = true; - throw redirect(); -} -``` - -## Leaves redirect/error from other sources alone - -```js before -import { redirect, error } from 'somewhere-else'; - -throw redirect(); -redirect(); -throw error(); -error(); -``` - -```js after -import { redirect, error } from 'somewhere-else'; - -throw redirect(); -redirect(); -throw error(); -error(); -``` - -## Notes cookie migration - -```js before -export function load({ cookies }) { - cookies.set('foo', 'bar'); -} -``` - -```js after -export function load({ cookies }) { - /* @migration task: add path argument */ cookies.set('foo', 'bar'); -} -``` - -## Notes cookie migration with multiple occurences - -```js before -export function load({ cookies }) { - cookies.delete('foo'); - cookies.set('x', 'y', { z: '' }); -} -``` - -```js after -export function load({ cookies }) { - /* @migration task: add path argument */ cookies.delete('foo'); - /* @migration task: add path argument */ cookies.set('x', 'y', { z: '' }); -} -``` - -## Handles non-destructured argument - -```js before -export function load(event) { - event.cookies.set('x', 'y'); -} -``` - -```js after -export function load(event) { - /* @migration task: add path argument */ event.cookies.set('x', 'y'); -} -``` - -## Recognizes cookies false positives - -```js before -export function load({ cookies }) { - cookies.set('foo', 'bar', { path: '/' }); -} - -export function foo(event) { - x.cookies.set('foo', 'bar'); -} - -export function bar(event) { - event.x.set('foo', 'bar'); -} - -cookies.set('foo', 'bar'); -``` - -```js after -export function load({ cookies }) { - cookies.set('foo', 'bar', { path: '/' }); -} - -export function foo(event) { - x.cookies.set('foo', 'bar'); -} - -export function bar(event) { - event.x.set('foo', 'bar'); -} - -cookies.set('foo', 'bar'); -``` - -## Replaces resolvePath - -```js before -import { resolvePath } from '@sveltejs/kit'; - -resolvePath('x', y); -``` - -<!-- prettier-ignore --> -```js after -import { resolveRoute } from "$app/paths"; - -resolveRoute('x', y); -``` - -## Replaces resolvePath taking care of imports - -```js before -import { resolvePath, x } from '@sveltejs/kit'; -import { y } from '$app/paths'; - -resolvePath('x'); -``` - -```js after -import { x } from '@sveltejs/kit'; -import { y, resolveRoute } from '$app/paths'; - -resolveRoute('x'); -``` - -## Doesn't replace resolvePath from other sources - -```js before -import { resolvePath } from 'x'; - -resolvePath('x'); -``` - -```js after -import { resolvePath } from 'x'; - -resolvePath('x'); -``` diff --git a/packages/migrate/package.json b/packages/migrate/package.json deleted file mode 100644 index be1a716729fb..000000000000 --- a/packages/migrate/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "svelte-migrate", - "version": "1.6.8", - "description": "A CLI for migrating Svelte(Kit) codebases", - "keywords": [ - "migration", - "upgrade", - "svelte", - "sveltekit", - "tool" - ], - "repository": { - "type": "git", - "url": "https://github.com/sveltejs/kit", - "directory": "packages/migrate" - }, - "license": "MIT", - "homepage": "https://svelte.dev", - "type": "module", - "bin": { - "svelte-migrate": "./bin.js" - }, - "files": [ - "bin.js", - "migrations", - "utils.js", - "!migrations/**/*.spec.js", - "!migrations/**/samples.md" - ], - "dependencies": { - "import-meta-resolve": "^4.1.0", - "kleur": "^4.1.5", - "magic-string": "^0.30.5", - "prompts": "^2.4.2", - "semver": "^7.5.4", - "tiny-glob": "^0.2.9", - "ts-morph": "^24.0.0", - "typescript": "^5.3.3", - "zimmerframe": "^1.1.2" - }, - "devDependencies": { - "@types/node": "^18.19.48", - "@types/prompts": "^2.4.9", - "@types/semver": "^7.5.6", - "svelte": "^4.2.10", - "vitest": "^2.0.1" - }, - "scripts": { - "test": "vitest run --silent", - "check": "tsc", - "lint": "prettier --check .", - "format": "pnpm lint --write" - } -} diff --git a/packages/migrate/tsconfig.json b/packages/migrate/tsconfig.json deleted file mode 100644 index 26885cff272f..000000000000 --- a/packages/migrate/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true, - "strict": true, - "target": "es2022", - "module": "node16", - "moduleResolution": "node16", - "allowSyntheticDefaultImports": true - } -} diff --git a/packages/migrate/utils.js b/packages/migrate/utils.js deleted file mode 100644 index 944461f02a78..000000000000 --- a/packages/migrate/utils.js +++ /dev/null @@ -1,421 +0,0 @@ -import colors from 'kleur'; -import MagicString from 'magic-string'; -import { execFileSync, execSync } from 'node:child_process'; -import fs from 'node:fs'; -import path from 'node:path'; -import process from 'node:process'; -import semver from 'semver'; -import ts from 'typescript'; - -/** @param {string} message */ -export function bail(message) { - console.error(colors.bold().red(message)); - process.exit(1); -} - -/** @param {string} file */ -export function relative(file) { - return path.relative('.', file); -} -/** - * - * @param {string} file - * @param {string} renamed - * @param {string} content - * @param {boolean} use_git - */ -export function move_file(file, renamed, content, use_git) { - if (use_git) { - execFileSync('git', ['mv', file, renamed]); - } else { - fs.unlinkSync(file); - } - - fs.writeFileSync(renamed, content); -} - -/** - * @param {string} contents - * @param {string} indent - */ -export function comment(contents, indent) { - return contents.replace(new RegExp(`^${indent}`, 'gm'), `${indent}// `); -} - -/** @param {string} content */ -export function dedent(content) { - const indent = guess_indent(content); - if (!indent) return content; - - /** @type {string[]} */ - const substitutions = []; - - try { - const ast = ts.createSourceFile( - 'filename.ts', - content, - ts.ScriptTarget.Latest, - true, - ts.ScriptKind.TS - ); - - const code = new MagicString(content); - - /** @param {ts.Node} node */ - function walk(node) { - if (ts.isTemplateLiteral(node)) { - let pos = node.pos; - while (/\s/.test(content[pos])) pos += 1; - - code.overwrite(pos, node.end, `____SUBSTITUTION_${substitutions.length}____`); - substitutions.push(node.getText()); - } - - node.forEachChild(walk); - } - - ast.forEachChild(walk); - - return code - .toString() - .replace(new RegExp(`^${indent}`, 'gm'), '') - .replace(/____SUBSTITUTION_(\d+)____/g, (match, index) => substitutions[index]); - } catch { - // as above — ignore this edge case - return content; - } -} - -/** @param {string} content */ -export function guess_indent(content) { - const lines = content.split('\n'); - - const tabbed = lines.filter((line) => /^\t+/.test(line)); - const spaced = lines.filter((line) => /^ {2,}/.test(line)); - - if (tabbed.length === 0 && spaced.length === 0) { - return null; - } - - // More lines tabbed than spaced? Assume tabs, and - // default to tabs in the case of a tie (or nothing - // to go on) - if (tabbed.length >= spaced.length) { - return '\t'; - } - - // Otherwise, we need to guess the multiple - const min = spaced.reduce((previous, current) => { - const count = /^ +/.exec(current)?.[0].length ?? 0; - return Math.min(count, previous); - }, Infinity); - - return ' '.repeat(min); -} - -/** - * @param {string} content - * @param {number} offset - */ -export function indent_at_line(content, offset) { - const substr = content.substring(content.lastIndexOf('\n', offset) + 1, offset); - return /\s*/.exec(substr)?.[0] ?? ''; -} - -/** - * @param {string} content - * @param {string} except - */ -export function except_str(content, except) { - const start = content.indexOf(except); - const end = start + except.length; - return content.substring(0, start) + content.substring(end); -} - -/** - * @returns {boolean} True if git is installed - */ -export function check_git() { - let use_git = false; - - let dir = process.cwd(); - do { - if (fs.existsSync(path.join(dir, '.git'))) { - use_git = true; - break; - } - } while (dir !== (dir = path.dirname(dir))); - - if (use_git) { - try { - const status = execSync('git status --porcelain', { stdio: 'pipe' }).toString(); - - if (status) { - const message = - 'Your git working directory is dirty — we recommend committing your changes before running this migration.\n'; - console.log(colors.bold().red(message)); - } - } catch { - // would be weird to have a .git folder if git is not installed, - // but always expect the unexpected - const message = - 'Could not detect a git installation. If this is unexpected, please raise an issue: https://github.com/sveltejs/kit.\n'; - console.log(colors.bold().red(message)); - use_git = false; - } - } - - return use_git; -} - -/** - * Get a list of all files in a directory - * @param {string} cwd - the directory to walk - * @param {boolean} [dirs] - whether to include directories in the result - */ -export function walk(cwd, dirs = false) { - /** @type {string[]} */ - const all_files = []; - - /** @param {string} dir */ - function walk_dir(dir) { - const files = fs.readdirSync(path.join(cwd, dir)); - - for (const file of files) { - const joined = path.join(dir, file); - const stats = fs.statSync(path.join(cwd, joined)); - if (stats.isDirectory()) { - if (dirs) all_files.push(joined); - walk_dir(joined); - } else { - all_files.push(joined); - } - } - } - - return walk_dir(''), all_files; -} - -/** @param {string} str */ -export function posixify(str) { - return str.replace(/\\/g, '/'); -} - -/** - * @param {string} content - * @param {Array<[string, string, string?, ('dependencies' | 'devDependencies')?]>} updates - */ -export function update_pkg(content, updates) { - const indent = content.split('\n')[1].match(/^\s+/)?.[0] || ' '; - const pkg = JSON.parse(content); - - /** - * @param {string} name - * @param {string} version - * @param {string} [additional] - * @param {'dependencies' | 'devDependencies' | undefined} [insert] - */ - function update_pkg(name, version, additional = '', insert) { - /** - * @param {string} type - */ - const updateVersion = (type) => { - const existingRange = pkg[type]?.[name]; - - if ( - existingRange && - semver.validRange(existingRange) && - !semver.subset(existingRange, version) - ) { - // Check if the new version range is an upgrade - const minExistingVersion = semver.minVersion(existingRange); - const minNewVersion = semver.minVersion(version); - - if (minExistingVersion && minNewVersion && semver.gt(minNewVersion, minExistingVersion)) { - log_migration(`Updated ${name} to ${version}`); - pkg[type][name] = version; - } - } - }; - - updateVersion('dependencies'); - updateVersion('devDependencies'); - - if (insert && !pkg[insert]?.[name]) { - if (!pkg[insert]) pkg[insert] = {}; - - // Insert the property in sorted position without adjusting other positions so diffs are easier to read - const sorted_keys = Object.keys(pkg[insert]).sort(); - const index = sorted_keys.findIndex((key) => name.localeCompare(key) === -1); - const insert_index = index !== -1 ? index : sorted_keys.length; - const new_properties = Object.entries(pkg[insert]); - new_properties.splice(insert_index, 0, [name, version]); - pkg[insert] = Object.fromEntries(new_properties); - - log_migration(`Added ${name} version ${version} ${additional}`); - } - } - - for (const update of updates) { - update_pkg(...update); - } - - const result = JSON.stringify(pkg, null, indent); - if (content.endsWith('\n')) return result + '\n'; - return result; -} - -const logged_migrations = new Set(); - -/** - * @param {import('ts-morph').SourceFile} source - * @param {string} text - */ -export function log_on_ts_modification(source, text) { - let logged = false; - const log = () => { - if (!logged) { - logged = true; - log_migration(text); - } - }; - source.onModified(log); - return () => source.onModified(log, false); -} - -/** @param {string} text */ -export function log_migration(text) { - if (logged_migrations.has(text)) return; - console.log(text); - logged_migrations.add(text); -} - -/** - * Parses the scripts contents and invoked `transform_script_code` with it, then runs the result through `transform_svelte_code`. - * The result is written back to disk. - * @param {string} file_path - * @param {(code: string, is_ts: boolean, file_path: string) => string} transform_script_code - * @param {(code: string, file_path: string) => string} transform_svelte_code - */ -export function update_svelte_file(file_path, transform_script_code, transform_svelte_code) { - try { - const content = fs.readFileSync(file_path, 'utf-8'); - const updated = content.replace( - /<script([^]*?)>([^]+?)<\/script>(\n*)/g, - (_match, attrs, contents, whitespace) => { - return `<script${attrs}>${transform_script_code( - contents, - (attrs.includes('lang=') || attrs.includes('type=')) && - (attrs.includes('ts') || attrs.includes('typescript')), - file_path - )}</script>${whitespace}`; - } - ); - fs.writeFileSync(file_path, transform_svelte_code(updated, file_path), 'utf-8'); - } catch (err) { - // TODO: change to import('svelte/compiler').Warning after upgrading to Svelte 5 - const e = /** @type {any} */ (err); - console.warn(buildExtendedLogMessage(e), e.frame); - console.info(e.stack); - } -} - -/** - * Reads the file and invokes `transform_code` with its contents. The result is written back to disk. - * @param {string} file_path - * @param {(code: string, is_ts: boolean, file_path: string) => string} transform_code - */ -export function update_js_file(file_path, transform_code) { - try { - const content = fs.readFileSync(file_path, 'utf-8'); - const updated = transform_code(content, file_path.endsWith('.ts'), file_path); - fs.writeFileSync(file_path, updated, 'utf-8'); - } catch (err) { - // TODO: change to import('svelte/compiler').Warning after upgrading to Svelte 5 - const e = /** @type {any} */ (err); - console.warn(buildExtendedLogMessage(e), e.frame); - console.info(e.stack); - } -} - -/** - * @param {any} w - */ -export function buildExtendedLogMessage(w) { - const parts = []; - if (w.filename) { - parts.push(w.filename); - } - if (w.start) { - parts.push(':', w.start.line, ':', w.start.column); - } - if (w.message) { - if (parts.length > 0) { - parts.push(' '); - } - parts.push(w.message); - } - return parts.join(''); -} - -/** - * Updates the tsconfig/jsconfig.json file with the provided function. - * @param {(content: string) => string} update_tsconfig_content - */ -export function update_tsconfig(update_tsconfig_content) { - const file = fs.existsSync('tsconfig.json') - ? 'tsconfig.json' - : fs.existsSync('jsconfig.json') - ? 'jsconfig.json' - : null; - if (file) { - fs.writeFileSync(file, update_tsconfig_content(fs.readFileSync(file, 'utf8'))); - } -} - -/** @param {string | URL} test_file */ -export function read_samples(test_file) { - const markdown = fs.readFileSync(test_file, 'utf8').replaceAll('\r\n', '\n'); - const samples = markdown - .split(/^##/gm) - .slice(1) - .map((block) => { - const description = block.split('\n')[0]; - const before = /```(js|ts|svelte) before\n([^]*?)\n```/.exec(block); - const after = /```(js|ts|svelte) after\n([^]*?)\n```/.exec(block); - - const match = /> file: (.+)/.exec(block); - - return { - description, - before: before ? before[2] : '', - after: after ? after[2] : '', - filename: match?.[1], - solo: block.includes('> solo') - }; - }); - - if (samples.some((sample) => sample.solo)) { - return samples.filter((sample) => sample.solo); - } - - return samples; -} - -/** - * @param {import('ts-morph').SourceFile} source - * @param {string} _import - * @param {string} method - */ -export function add_named_import(source, _import, method) { - const existing = source.getImportDeclaration(_import); - if (existing) { - if (existing.getNamedImports().some((i) => i.getName() === method)) return; - existing?.addNamedImport(method); - } else { - source.addImportDeclaration({ - moduleSpecifier: _import, - namedImports: [method] - }); - } -} diff --git a/packages/migrate/utils.spec.js b/packages/migrate/utils.spec.js deleted file mode 100644 index a75641e6055f..000000000000 --- a/packages/migrate/utils.spec.js +++ /dev/null @@ -1,93 +0,0 @@ -import { assert, test } from 'vitest'; -import { update_pkg } from './utils.js'; - -test('Inserts package at correct position (1)', () => { - const result = update_pkg( - `{ - "dependencies": { - "a": "1", - "z": "3", - "c": "4" - } -}`, - [['b', '2', '', 'dependencies']] - ); - - assert.equal( - result, - `{ - "dependencies": { - "a": "1", - "b": "2", - "z": "3", - "c": "4" - } -}` - ); -}); - -test('Inserts package at correct position (2)', () => { - const result = update_pkg( - `{ - "dependencies": { - "a": "1", - "b": "2" - } -}`, - [['c', '3', '', 'dependencies']] - ); - - assert.equal( - result, - `{ - "dependencies": { - "a": "1", - "b": "2", - "c": "3" - } -}` - ); -}); - -test('Inserts package at correct position (3)', () => { - const result = update_pkg( - `{ - "dependencies": { - "b": "2", - "c": "3" - } -}`, - [['a', '1', '', 'dependencies']] - ); - - assert.equal( - result, - `{ - "dependencies": { - "a": "1", - "b": "2", - "c": "3" - } -}` - ); -}); - -test('Does not downgrade versions', () => { - const result = update_pkg( - `{ - "devDependencies": { - "@sveltejs/kit": "^2.4.3" - } -}`, - [['@sveltejs/kit', '^2.0.0']] - ); - - assert.equal( - result, - `{ - "devDependencies": { - "@sveltejs/kit": "^2.4.3" - } -}` - ); -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a360411ab50..a9eb3d780d8b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1028,52 +1028,6 @@ importers: specifier: ^2.0.1 version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) - packages/migrate: - dependencies: - import-meta-resolve: - specifier: ^4.1.0 - version: 4.1.0 - kleur: - specifier: ^4.1.5 - version: 4.1.5 - magic-string: - specifier: ^0.30.5 - version: 0.30.11 - prompts: - specifier: ^2.4.2 - version: 2.4.2 - semver: - specifier: ^7.5.4 - version: 7.6.3 - tiny-glob: - specifier: ^0.2.9 - version: 0.2.9 - ts-morph: - specifier: ^24.0.0 - version: 24.0.0 - typescript: - specifier: ^5.3.3 - version: 5.4.5 - zimmerframe: - specifier: ^1.1.2 - version: 1.1.2 - devDependencies: - '@types/node': - specifier: ^18.19.48 - version: 18.19.50 - '@types/prompts': - specifier: ^2.4.9 - version: 2.4.9 - '@types/semver': - specifier: ^7.5.6 - version: 7.5.8 - svelte: - specifier: ^4.2.10 - version: 4.2.19 - vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) - packages/package: dependencies: chokidar: @@ -1956,9 +1910,6 @@ packages: resolution: {integrity: sha512-qhUGGDHcpbY2zpjW3SwqchuW8J/5EzlPFud7xNntHKA7f3a/mx5+g+ruJKFHSAiVZYo30PALt+AyhmPUNKH/Og==} engines: {node: ^14.13.1 || ^16.0.0 || >=18} - '@ts-morph/common@0.25.0': - resolution: {integrity: sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg==} - '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -1983,9 +1934,6 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/prompts@2.4.9': - resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} - '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -2234,9 +2182,6 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - code-block-writer@13.0.3: - resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} - code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} @@ -2818,10 +2763,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -3136,9 +3077,6 @@ packages: pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -3263,10 +3201,6 @@ packages: printable-characters@1.0.42: resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} @@ -3429,9 +3363,6 @@ packages: resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} engines: {node: '>=18'} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -3606,10 +3537,6 @@ packages: resolution: {integrity: sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==} engines: {node: '>=4'} - tinyglobby@0.2.9: - resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} - engines: {node: '>=12.0.0'} - tinypool@1.0.0: resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3643,9 +3570,6 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-morph@24.0.0: - resolution: {integrity: sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw==} - tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -4583,12 +4507,6 @@ snapshots: transitivePeerDependencies: - encoding - '@ts-morph/common@0.25.0': - dependencies: - minimatch: 9.0.5 - path-browserify: 1.0.1 - tinyglobby: 0.2.9 - '@types/connect@3.4.38': dependencies: '@types/node': 18.19.50 @@ -4614,11 +4532,6 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/prompts@2.4.9': - dependencies: - '@types/node': 18.19.50 - kleur: 3.0.3 - '@types/resolve@1.20.2': {} '@types/semver@7.5.8': {} @@ -4906,8 +4819,6 @@ snapshots: ci-info@3.9.0: {} - code-block-writer@13.0.3: {} - code-red@1.0.4: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -5529,8 +5440,6 @@ snapshots: dependencies: json-buffer: 3.0.1 - kleur@3.0.3: {} - kleur@4.1.5: {} known-css-properties@0.34.0: {} @@ -5803,8 +5712,6 @@ snapshots: no-case: 3.0.4 tslib: 2.6.2 - path-browserify@1.0.1: {} - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -5895,11 +5802,6 @@ snapshots: printable-characters@1.0.42: {} - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - pseudomap@1.0.2: {} publint@0.2.7: @@ -6085,8 +5987,6 @@ snapshots: mrmime: 2.0.0 totalist: 3.0.1 - sisteransi@1.0.5: {} - slash@3.0.0: {} source-map-js@1.2.1: {} @@ -6251,11 +6151,6 @@ snapshots: tinydate@1.3.0: {} - tinyglobby@0.2.9: - dependencies: - fdir: 6.4.0(picomatch@4.0.2) - picomatch: 4.0.2 - tinypool@1.0.0: {} tinyspy@3.0.0: {} @@ -6284,11 +6179,6 @@ snapshots: dependencies: typescript: 5.6.3 - ts-morph@24.0.0: - dependencies: - '@ts-morph/common': 0.25.0 - code-block-writer: 13.0.3 - tslib@2.6.2: {} type-check@0.4.0: From b24d37e8ff2f04aef75798bba3906c1e36e5e1a5 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 11 Nov 2024 05:01:37 -0800 Subject: [PATCH 398/454] chore: remove marked test (#12982) --- packages/kit/test/apps/basics/package.json | 1 - .../test/apps/basics/src/routes/imports/+page.svelte | 1 - .../basics/src/routes/imports/markdown/+page.svelte | 5 ----- packages/kit/test/apps/basics/test/test.js | 6 ------ packages/kit/test/apps/basics/vite.config.js | 2 +- pnpm-lock.yaml | 10 ---------- 6 files changed, 1 insertion(+), 24 deletions(-) delete mode 100644 packages/kit/test/apps/basics/src/routes/imports/+page.svelte delete mode 100644 packages/kit/test/apps/basics/src/routes/imports/markdown/+page.svelte diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index eadca24b6a31..53776cdf43bd 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -17,7 +17,6 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^3.0.1", "cross-env": "^7.0.3", - "marked": "^14.0.0", "svelte": "^4.2.10", "svelte-check": "^4.0.1", "typescript": "^5.3.3", diff --git a/packages/kit/test/apps/basics/src/routes/imports/+page.svelte b/packages/kit/test/apps/basics/src/routes/imports/+page.svelte deleted file mode 100644 index f09d461a28b8..000000000000 --- a/packages/kit/test/apps/basics/src/routes/imports/+page.svelte +++ /dev/null @@ -1 +0,0 @@ -<a href="/imports/markdown">markdown</a> diff --git a/packages/kit/test/apps/basics/src/routes/imports/markdown/+page.svelte b/packages/kit/test/apps/basics/src/routes/imports/markdown/+page.svelte deleted file mode 100644 index 95cb762881fc..000000000000 --- a/packages/kit/test/apps/basics/src/routes/imports/markdown/+page.svelte +++ /dev/null @@ -1,5 +0,0 @@ -<script> - import { marked } from 'marked'; -</script> - -<main>{@html marked('this is some **markdown**')}</main> diff --git a/packages/kit/test/apps/basics/test/test.js b/packages/kit/test/apps/basics/test/test.js index 3922d127039e..fb21412290d6 100644 --- a/packages/kit/test/apps/basics/test/test.js +++ b/packages/kit/test/apps/basics/test/test.js @@ -35,12 +35,6 @@ test.describe('adapter', () => { }); test.describe('Imports', () => { - test('imports from node_modules', async ({ page, clicknav }) => { - await page.goto('/imports'); - await clicknav('[href="/imports/markdown"]'); - expect(await page.innerHTML('p')).toBe('this is some <strong>markdown</strong>'); - }); - // https://github.com/sveltejs/kit/issues/461 test('handles static asset imports', async ({ baseURL, page }) => { await page.goto('/asset-import'); diff --git a/packages/kit/test/apps/basics/vite.config.js b/packages/kit/test/apps/basics/vite.config.js index 0afea7f14a85..d6742f261346 100644 --- a/packages/kit/test/apps/basics/vite.config.js +++ b/packages/kit/test/apps/basics/vite.config.js @@ -10,7 +10,7 @@ const config = { optimizeDeps: { // for CI, we need to explicitly prebundle deps, since // the reload confuses Playwright - include: ['cookie', 'marked'] + include: ['cookie'] }, plugins: [sveltekit()], server: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a9eb3d780d8b..aa95a3a3d02f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -451,9 +451,6 @@ importers: cross-env: specifier: ^7.0.3 version: 7.0.3 - marked: - specifier: ^14.0.0 - version: 14.1.1 svelte: specifier: ^4.2.10 version: 4.2.19 @@ -2876,11 +2873,6 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} - marked@14.1.1: - resolution: {integrity: sha512-eS59oxof5eBVDCKTs+mJbvB/6Vq137GbimF9wkTIlto2/B2ppY5nigUUQgKVmA3bI2mPTIshUyDj5j612ZxlQQ==} - engines: {node: '>= 18'} - hasBin: true - mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -5534,8 +5526,6 @@ snapshots: dependencies: semver: 6.3.1 - marked@14.1.1: {} - mdn-data@2.0.30: {} merge-stream@2.0.0: {} From d94a854f9f5e8ed474c97cf7d51f2e0db3fe16ac Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:52:55 -0800 Subject: [PATCH 399/454] docs: remove outdated svelte-hmr FAQ (#12988) --- documentation/docs/60-appendix/10-faq.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/documentation/docs/60-appendix/10-faq.md b/documentation/docs/60-appendix/10-faq.md index 4e0b2d536c13..89e3db4b14fc 100644 --- a/documentation/docs/60-appendix/10-faq.md +++ b/documentation/docs/60-appendix/10-faq.md @@ -27,10 +27,6 @@ In order to support SSR, a JS backend — such as Node.js or Deno-based server, It is also possible to write custom adapters or leverage community adapters to deploy SvelteKit to more platforms such as specialized server environments, browser extensions, or native applications. See [integrations](./integrations) for more examples and integrations. -## How do I use HMR with SvelteKit? - -SvelteKit has HMR enabled by default powered by [svelte-hmr](https://github.com/sveltejs/svelte-hmr). If you saw [Rich's presentation at the 2020 Svelte Summit](/blog/whats-the-deal-with-sveltekit), you may have seen a more powerful-looking version of HMR presented. This demo had `svelte-hmr`'s `preserveLocalState` flag on. This flag is now off by default because it may lead to unexpected behaviour and edge cases. But don't worry, you are still getting HMR with SvelteKit! If you'd like to preserve local state you can use the `@hmr:keep` or `@hmr:keep-all` directives as documented on the [svelte-hmr](https://github.com/sveltejs/svelte-hmr) page. - ## How do I include details from package.json in my application? You cannot directly require JSON files, since SvelteKit expects [`svelte.config.js`](./configuration) to be an ES module. If you'd like to include your application's version number or other information from `package.json` in your application, you can load JSON like so: From c717db91236c7ab15045b296c73201c6c6ecd6fa Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 12 Nov 2024 08:30:41 -0800 Subject: [PATCH 400/454] chore: update playground and add an endpoint (#12983) --- packages/enhanced-img/package.json | 2 +- packages/kit/.gitignore | 10 +- playgrounds/basic/.gitignore | 4 + playgrounds/basic/package.json | 19 +- playgrounds/basic/src/app.html | 2 +- playgrounds/basic/src/routes/+page.svelte | 9 +- playgrounds/basic/src/routes/+page.ts | 6 + playgrounds/basic/src/routes/+server.ts | 7 + .../basic/src/routes/about/+page.svelte | 1 + .../basic/{jsconfig.json => tsconfig.json} | 0 playgrounds/basic/vite.config.js | 5 +- pnpm-lock.yaml | 282 ++++++++++++++---- 12 files changed, 275 insertions(+), 72 deletions(-) create mode 100644 playgrounds/basic/.gitignore create mode 100644 playgrounds/basic/src/routes/+page.ts create mode 100644 playgrounds/basic/src/routes/+server.ts create mode 100644 playgrounds/basic/src/routes/about/+page.svelte rename playgrounds/basic/{jsconfig.json => tsconfig.json} (100%) diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 862b6a0c4e3b..ed9ba2273a58 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -45,7 +45,7 @@ "@types/estree": "^1.0.5", "@types/node": "^18.19.48", "rollup": "^4.14.2", - "svelte": "^5.0.0", + "svelte": "^5.1.3", "typescript": "^5.6.3", "vite": "^5.3.2", "vitest": "^2.0.1" diff --git a/packages/kit/.gitignore b/packages/kit/.gitignore index 8f2b8468d607..c7b5684faca6 100644 --- a/packages/kit/.gitignore +++ b/packages/kit/.gitignore @@ -1,8 +1,5 @@ .DS_Store -/node_modules -/assets/* -/dist -/docs +/node_modules/ /test/**/build !/src/core/adapt/fixtures/*/.svelte-kit !/test/node_modules @@ -11,5 +8,6 @@ .custom-out-dir # these are already ignored by the top level .gitignore -# repeating them here as a faux prettier ignore -.svelte-kit +# repeating them here as a faux .prettierignore +/.svelte-kit/ +/dist/ diff --git a/playgrounds/basic/.gitignore b/playgrounds/basic/.gitignore new file mode 100644 index 000000000000..259afce74402 --- /dev/null +++ b/playgrounds/basic/.gitignore @@ -0,0 +1,4 @@ +# these are already ignored by the top level .gitignore +# repeating them here as a faux .prettierignore +/.svelte-kit/ +/dist/ diff --git a/playgrounds/basic/package.json b/playgrounds/basic/package.json index 700a42bb138a..05d510a132f4 100644 --- a/playgrounds/basic/package.json +++ b/playgrounds/basic/package.json @@ -8,8 +8,10 @@ "preview": "vite preview", "package": "svelte-kit sync && svelte-package && publint", "prepublishOnly": "npm run package", - "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch" + "check": "svelte-kit sync && svelte-check", + "check:watch": "svelte-kit sync && svelte-check --watch", + "format": "prettier --config ../../.prettierrc --write .", + "lint": "prettier --config ../../.prettierrc --check ." }, "devDependencies": { "@sveltejs/adapter-auto": "workspace:*", @@ -22,12 +24,14 @@ "@sveltejs/amp": "workspace:*", "@sveltejs/kit": "workspace:*", "@sveltejs/package": "workspace:*", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^4.0.0", + "prettier": "^3.3.2", + "prettier-plugin-svelte": "^3.2.6", "publint": "^0.2.0", - "svelte": "^4.2.10", + "svelte": "^5.1.13", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", - "vite": "^5.3.2" + "typescript": "^5.5.0", + "vite": "^5.4.4" }, "type": "module", "exports": { @@ -41,9 +45,6 @@ "!dist/**/*.test.*", "!dist/**/*.spec.*" ], - "peerDependencies": { - "svelte": "^4.0.0" - }, "svelte": "./dist/index.js", "types": "./dist/index.d.ts" } diff --git a/playgrounds/basic/src/app.html b/playgrounds/basic/src/app.html index 6769ed5e89c5..77a5ff52c923 100644 --- a/playgrounds/basic/src/app.html +++ b/playgrounds/basic/src/app.html @@ -1,4 +1,4 @@ -<!DOCTYPE html> +<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> diff --git a/playgrounds/basic/src/routes/+page.svelte b/playgrounds/basic/src/routes/+page.svelte index cc88df0ea352..a1c65230591f 100644 --- a/playgrounds/basic/src/routes/+page.svelte +++ b/playgrounds/basic/src/routes/+page.svelte @@ -1,2 +1,9 @@ +<script lang="ts"> + import type { PageData } from './$types'; + + let { data }: { data: PageData } = $props(); +</script> + <h1>Welcome to SvelteKit</h1> -<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p> + +2 + 2 = {data.sum} diff --git a/playgrounds/basic/src/routes/+page.ts b/playgrounds/basic/src/routes/+page.ts new file mode 100644 index 000000000000..758f66e89fa6 --- /dev/null +++ b/playgrounds/basic/src/routes/+page.ts @@ -0,0 +1,6 @@ +import type { PageLoad } from './$types'; + +export const load: PageLoad = async ({ fetch }) => { + const response = await fetch('/', { method: 'POST', body: JSON.stringify({ a: 2, b: 2 }) }); + return { sum: await response.json() }; +}; diff --git a/playgrounds/basic/src/routes/+server.ts b/playgrounds/basic/src/routes/+server.ts new file mode 100644 index 000000000000..4d4494db055b --- /dev/null +++ b/playgrounds/basic/src/routes/+server.ts @@ -0,0 +1,7 @@ +import { json } from '@sveltejs/kit'; +import type { RequestHandler } from './$types'; + +export const POST: RequestHandler = async ({ request }) => { + const { a, b } = await request.json(); + return json(a + b); +}; diff --git a/playgrounds/basic/src/routes/about/+page.svelte b/playgrounds/basic/src/routes/about/+page.svelte new file mode 100644 index 000000000000..d73780a99efd --- /dev/null +++ b/playgrounds/basic/src/routes/about/+page.svelte @@ -0,0 +1 @@ +<a href="/">home</a> diff --git a/playgrounds/basic/jsconfig.json b/playgrounds/basic/tsconfig.json similarity index 100% rename from playgrounds/basic/jsconfig.json rename to playgrounds/basic/tsconfig.json diff --git a/playgrounds/basic/vite.config.js b/playgrounds/basic/vite.config.js index 7617d19b8849..23ac5e8dcd7b 100644 --- a/playgrounds/basic/vite.config.js +++ b/playgrounds/basic/vite.config.js @@ -1,11 +1,10 @@ import { sveltekit } from '@sveltejs/kit/vite'; -import { defineConfig } from 'vite'; -export default defineConfig({ +export default { plugins: [sveltekit()], server: { fs: { allow: ['../../packages/kit'] } } -}); +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aa95a3a3d02f..a33bda6a51ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 2.27.8 '@sveltejs/eslint-config': specifier: ^8.1.0 - version: 8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.9))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3) + version: 8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.13))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 @@ -28,7 +28,7 @@ importers: version: 3.1.1 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.1.2(prettier@3.1.1)(svelte@5.1.9) + version: 3.1.2(prettier@3.1.1)(svelte@5.1.13) typescript-eslint: specifier: ^8.0.0 version: 8.4.0(eslint@9.6.0)(typescript@5.6.3) @@ -44,7 +44,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -137,7 +137,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -177,7 +177,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -274,7 +274,7 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -289,7 +289,7 @@ importers: dependencies: '@sveltejs/kit': specifier: ^1.0.0 || ^2.0.0 - version: 2.7.3(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 2.7.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) devDependencies: typescript: specifier: ^5.3.3 @@ -304,7 +304,7 @@ importers: version: 0.30.11 svelte-parse-markup: specifier: ^0.1.5 - version: 0.1.5(svelte@5.1.9) + version: 0.1.5(svelte@5.1.13) vite-imagetools: specifier: ^7.0.1 version: 7.0.1(rollup@4.24.0) @@ -322,8 +322,8 @@ importers: specifier: ^4.14.2 version: 4.24.0 svelte: - specifier: ^5.0.0 - version: 5.1.9 + specifier: ^5.1.3 + version: 5.1.13 typescript: specifier: ^5.6.3 version: 5.6.3 @@ -1045,7 +1045,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + version: 3.1.0(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -1101,23 +1101,29 @@ importers: specifier: workspace:* version: link:../../packages/package '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^4.0.0 + version: 4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + prettier: + specifier: ^3.3.2 + version: 3.3.3 + prettier-plugin-svelte: + specifier: ^3.2.6 + version: 3.2.7(prettier@3.3.3)(svelte@5.1.13) publint: specifier: ^0.2.0 version: 0.2.7 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.1.13 + version: 5.1.13 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@5.1.13)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.0 + version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^5.4.4 + version: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) packages: @@ -1896,6 +1902,14 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte-inspector@3.0.1': + resolution: {integrity: sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^4.0.0-next.0||^4.0.0 + svelte: ^5.0.0-next.96 || ^5.0.0 + vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte@3.1.0': resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} engines: {node: ^18.0.0 || >=20} @@ -1903,6 +1917,13 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte@4.0.0': + resolution: {integrity: sha512-kpVJwF+gNiMEsoHaw+FJL76IYiwBikkxYU83+BpqQLdVMff19KeRKLd2wisS8niNBMJ2omv5gG+iGDDwd8jzag==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22} + peerDependencies: + svelte: ^5.0.0-next.96 || ^5.0.0 + vite: ^5.0.0 + '@svitejs/changesets-changelog-github-compact@1.1.0': resolution: {integrity: sha512-qhUGGDHcpbY2zpjW3SwqchuW8J/5EzlPFud7xNntHKA7f3a/mx5+g+ruJKFHSAiVZYo30PALt+AyhmPUNKH/Og==} engines: {node: ^14.13.1 || ^16.0.0 || >=18} @@ -2264,6 +2285,15 @@ packages: supports-color: optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dedent-js@1.0.1: resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} @@ -2869,6 +2899,9 @@ packages: magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -2944,6 +2977,9 @@ packages: ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mustache@4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true @@ -3176,6 +3212,12 @@ packages: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier-plugin-svelte@3.2.7: + resolution: {integrity: sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -3186,6 +3228,11 @@ packages: engines: {node: '>=14'} hasBin: true + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3500,8 +3547,8 @@ packages: resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} engines: {node: '>=16'} - svelte@5.1.9: - resolution: {integrity: sha512-nzq+PPKGS2PoEWDjAcXSrKSbXmmmOAxd6dAz1IhRusUpVkFS6DMELWPyBPGwu6TpO/gsgtFXwX0M4+pAR5gzKw==} + svelte@5.1.13: + resolution: {integrity: sha512-xVNk8yLsZNfkyqWzVg8+nfU9ewiSjVW0S4qyTxfKa6Y7P5ZBhA+LDsh2cHWIXJQMltikQAk6W3sqGdQZSH58PA==} engines: {node: '>=18'} tapable@2.2.1: @@ -3656,6 +3703,37 @@ packages: terser: optional: true + vite@5.4.10: + resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + vitefu@0.2.5: resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: @@ -3664,6 +3742,14 @@ packages: vite: optional: true + vitefu@1.0.3: + resolution: {integrity: sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0 + peerDependenciesMeta: + vite: + optional: true + vitest@2.0.1: resolution: {integrity: sha512-PBPvNXRJiywtI9NmbnEqHIhcXlk8mB0aKf6REQIaYGY4JtWF1Pg8Am+N0vAuxdg/wUSlxPSVJr8QdjwcVxc2Hg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -4417,20 +4503,20 @@ snapshots: eslint-visitor-keys: 4.1.0 espree: 10.2.0 - '@sveltejs/eslint-config@8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.9))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3)': + '@sveltejs/eslint-config@8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.13))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3)': dependencies: '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.6.0) eslint: 9.6.0 eslint-config-prettier: 9.1.0(eslint@9.6.0) eslint-plugin-n: 17.9.0(eslint@9.6.0) - eslint-plugin-svelte: 2.41.0(eslint@9.6.0)(svelte@5.1.9) + eslint-plugin-svelte: 2.41.0(eslint@9.6.0)(svelte@5.1.13) globals: 15.10.0 typescript: 5.6.3 typescript-eslint: 8.4.0(eslint@9.6.0)(typescript@5.6.3) - '@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': + '@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + '@sveltejs/vite-plugin-svelte': 4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.0 @@ -4442,9 +4528,9 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 3.0.0 - svelte: 5.1.9 + svelte: 5.1.13 tiny-glob: 0.2.9 - vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: @@ -4455,12 +4541,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) debug: 4.3.5 - svelte: 5.1.9 - vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + svelte: 4.2.19 + vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + debug: 4.3.5 + svelte: 5.1.13 + vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': + dependencies: + '@sveltejs/vite-plugin-svelte': 4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + debug: 4.3.7 + svelte: 5.1.13 + vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) transitivePeerDependencies: - supports-color @@ -4478,17 +4582,44 @@ snapshots: transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.9)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) debug: 4.3.5 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.11 - svelte: 5.1.9 - svelte-hmr: 0.16.0(svelte@5.1.9) - vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) - vitefu: 0.2.5(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + svelte: 4.2.19 + svelte-hmr: 0.16.0(svelte@4.2.19) + vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) + vitefu: 0.2.5(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + debug: 4.3.5 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.11 + svelte: 5.1.13 + svelte-hmr: 0.16.0(svelte@5.1.13) + vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) + vitefu: 0.2.5(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + debug: 4.3.7 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.12 + svelte: 5.1.13 + vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) + vitefu: 1.0.3(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) transitivePeerDependencies: - supports-color @@ -4884,6 +5015,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.7: + dependencies: + ms: 2.1.3 + dedent-js@1.0.1: {} deep-eql@5.0.2: {} @@ -5027,7 +5162,7 @@ snapshots: minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.9): + eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.13): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) '@jridgewell/sourcemap-codec': 1.5.0 @@ -5040,9 +5175,9 @@ snapshots: postcss-safe-parser: 6.0.0(postcss@8.4.47) postcss-selector-parser: 6.1.2 semver: 7.6.3 - svelte-eslint-parser: 0.39.2(svelte@5.1.9) + svelte-eslint-parser: 0.39.2(svelte@5.1.13) optionalDependencies: - svelte: 5.1.9 + svelte: 5.1.13 transitivePeerDependencies: - ts-node @@ -5522,6 +5657,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + magic-string@0.30.12: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + make-dir@3.1.0: dependencies: semver: 6.3.1 @@ -5593,6 +5732,8 @@ snapshots: ms@2.1.2: {} + ms@2.1.3: {} + mustache@4.2.0: {} nanoid@3.3.7: {} @@ -5775,15 +5916,22 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@5.1.9): + prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@5.1.13): dependencies: prettier: 3.1.1 - svelte: 5.1.9 + svelte: 5.1.13 + + prettier-plugin-svelte@3.2.7(prettier@3.3.3)(svelte@5.1.13): + dependencies: + prettier: 3.3.3 + svelte: 5.1.13 prettier@2.8.8: {} prettier@3.1.1: {} + prettier@3.3.3: {} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 @@ -6045,7 +6193,19 @@ snapshots: transitivePeerDependencies: - picomatch - svelte-eslint-parser@0.39.2(svelte@5.1.9): + svelte-check@4.0.1(picomatch@4.0.2)(svelte@5.1.13)(typescript@5.6.3): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 3.6.0 + fdir: 6.3.0(picomatch@4.0.2) + picocolors: 1.1.0 + sade: 1.8.1 + svelte: 5.1.13 + typescript: 5.6.3 + transitivePeerDependencies: + - picomatch + + svelte-eslint-parser@0.39.2(svelte@5.1.13): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -6053,19 +6213,19 @@ snapshots: postcss: 8.4.47 postcss-scss: 4.0.9(postcss@8.4.47) optionalDependencies: - svelte: 5.1.9 + svelte: 5.1.13 svelte-hmr@0.16.0(svelte@4.2.19): dependencies: svelte: 4.2.19 - svelte-hmr@0.16.0(svelte@5.1.9): + svelte-hmr@0.16.0(svelte@5.1.13): dependencies: - svelte: 5.1.9 + svelte: 5.1.13 - svelte-parse-markup@0.1.5(svelte@5.1.9): + svelte-parse-markup@0.1.5(svelte@5.1.13): dependencies: - svelte: 5.1.9 + svelte: 5.1.13 svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19)(typescript@5.4.5): dependencies: @@ -6101,7 +6261,7 @@ snapshots: magic-string: 0.30.11 periscopic: 3.1.0 - svelte@5.1.9: + svelte@5.1.13: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -6237,12 +6397,13 @@ snapshots: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.1.0 - vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color @@ -6258,10 +6419,28 @@ snapshots: fsevents: 2.3.3 lightningcss: 1.24.1 + vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.0 + optionalDependencies: + '@types/node': 18.19.50 + fsevents: 2.3.3 + lightningcss: 1.24.1 + vitefu@0.2.5(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)): optionalDependencies: vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + vitefu@0.2.5(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)): + optionalDependencies: + vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) + + vitefu@1.0.3(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)): + optionalDependencies: + vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) + vitest@2.0.1(@types/node@18.19.50)(lightningcss@1.24.1): dependencies: '@ampproject/remapping': 2.3.0 @@ -6288,6 +6467,7 @@ snapshots: - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color From 6df00fc8448bf72c91e8f6faee0605995b0fdd65 Mon Sep 17 00:00:00 2001 From: Mathias Picker <48158184+MathiasWP@users.noreply.github.com> Date: Wed, 13 Nov 2024 03:36:23 +0100 Subject: [PATCH 401/454] fix: csp nonce in `script-src-elem`, `style-src-attr` and `style-src-elem` when using unsafe-inline (#11613) * add nonce to script-src-elem csp directive if defined * added changeset * also handle hashes and style-src-attr and style-src-elem * changed order of variable declaration * fixed typo * updated changeset * fix bug and update test * update test * write better tests and fix bugs * Update .changeset/giant-years-drum.md * fix csp nonce in script-src-elem, style-src-attr and style-src-elem when using unsafe-inline * fix test desc * Update giant-years-drum.md * refactor * rename variable * avoid duplicate empty comment hash * add back removed test * added back another test * add back skips nonce in style-src when using unsafe-inline test * put tests in same order --------- Co-authored-by: Rich Harris <hello@rich-harris.dev> Co-authored-by: Chew Tee Ming <chew.tee.ming@nindatech.com> --- .changeset/giant-years-drum.md | 5 + packages/kit/src/runtime/server/page/csp.js | 130 +++++++++--------- .../kit/src/runtime/server/page/csp.spec.js | 49 ++++++- 3 files changed, 117 insertions(+), 67 deletions(-) create mode 100644 .changeset/giant-years-drum.md diff --git a/.changeset/giant-years-drum.md b/.changeset/giant-years-drum.md new file mode 100644 index 000000000000..e1129e0d0486 --- /dev/null +++ b/.changeset/giant-years-drum.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: only add nonce to `script-src-elem`, `style-src-attr` and `style-src-elem` CSP directives when `unsafe-inline` is not present diff --git a/packages/kit/src/runtime/server/page/csp.js b/packages/kit/src/runtime/server/page/csp.js index 547c43cd8835..336d50261ad3 100644 --- a/packages/kit/src/runtime/server/page/csp.js +++ b/packages/kit/src/runtime/server/page/csp.js @@ -31,9 +31,24 @@ class BaseProvider { /** @type {boolean} */ #script_needs_csp; + /** @type {boolean} */ + #script_src_needs_csp; + + /** @type {boolean} */ + #script_src_elem_needs_csp; + /** @type {boolean} */ #style_needs_csp; + /** @type {boolean} */ + #style_src_needs_csp; + + /** @type {boolean} */ + #style_src_attr_needs_csp; + + /** @type {boolean} */ + #style_src_elem_needs_csp; + /** @type {import('types').CspDirectives} */ #directives; @@ -121,92 +136,81 @@ class BaseProvider { } } - this.#script_needs_csp = - (!!effective_script_src && - effective_script_src.filter((value) => value !== 'unsafe-inline').length > 0) || - (!!script_src_elem && - script_src_elem.filter((value) => value !== 'unsafe-inline').length > 0); + /** @param {(import('types').Csp.Source | import('types').Csp.ActionSource)[] | undefined} directive */ + const needs_csp = (directive) => + !!directive && !directive.some((value) => value === 'unsafe-inline'); + this.#script_src_needs_csp = needs_csp(effective_script_src); + this.#script_src_elem_needs_csp = needs_csp(script_src_elem); + this.#style_src_needs_csp = needs_csp(effective_style_src); + this.#style_src_attr_needs_csp = needs_csp(style_src_attr); + this.#style_src_elem_needs_csp = needs_csp(style_src_elem); + + this.#script_needs_csp = this.#script_src_needs_csp || this.#script_src_elem_needs_csp; this.#style_needs_csp = !__SVELTEKIT_DEV__ && - ((!!effective_style_src && - effective_style_src.filter((value) => value !== 'unsafe-inline').length > 0) || - (!!style_src_attr && - style_src_attr.filter((value) => value !== 'unsafe-inline').length > 0) || - (!!style_src_elem && - style_src_elem.filter((value) => value !== 'unsafe-inline').length > 0)); + (this.#style_src_needs_csp || + this.#style_src_attr_needs_csp || + this.#style_src_elem_needs_csp); this.script_needs_nonce = this.#script_needs_csp && !this.#use_hashes; this.style_needs_nonce = this.#style_needs_csp && !this.#use_hashes; + this.#nonce = nonce; } /** @param {string} content */ add_script(content) { - if (this.#script_needs_csp) { - const d = this.#directives; + if (!this.#script_needs_csp) return; - if (this.#use_hashes) { - const hash = sha256(content); - - this.#script_src.push(`sha256-${hash}`); - - if (d['script-src-elem']?.length) { - this.#script_src_elem.push(`sha256-${hash}`); - } - } else { - if (this.#script_src.length === 0) { - this.#script_src.push(`nonce-${this.#nonce}`); - } - if (d['script-src-elem']?.length) { - this.#script_src_elem.push(`nonce-${this.#nonce}`); - } - } + /** @type {`nonce-${string}` | `sha256-${string}`} */ + const source = this.#use_hashes ? `sha256-${sha256(content)}` : `nonce-${this.#nonce}`; + + if (this.#script_src_needs_csp) { + this.#script_src.push(source); + } + + if (this.#script_src_elem_needs_csp) { + this.#script_src_elem.push(source); } } /** @param {string} content */ add_style(content) { - if (this.#style_needs_csp) { - // this is the hash for "/* empty */" - // adding it so that svelte does not break csp - // see https://github.com/sveltejs/svelte/pull/7800 - const empty_comment_hash = '9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc='; + if (!this.#style_needs_csp) return; - const d = this.#directives; + /** @type {`nonce-${string}` | `sha256-${string}`} */ + const source = this.#use_hashes ? `sha256-${sha256(content)}` : `nonce-${this.#nonce}`; - if (this.#use_hashes) { - const hash = sha256(content); + if (this.#style_src_needs_csp) { + this.#style_src.push(source); + } - this.#style_src.push(`sha256-${hash}`); + if (this.#style_src_needs_csp) { + this.#style_src.push(source); + } - if (d['style-src-attr']?.length) { - this.#style_src_attr.push(`sha256-${hash}`); - } - if (d['style-src-elem']?.length) { - if ( - hash !== empty_comment_hash && - !d['style-src-elem'].includes(`sha256-${empty_comment_hash}`) - ) { - this.#style_src_elem.push(`sha256-${empty_comment_hash}`); - } + if (this.#style_src_attr_needs_csp) { + this.#style_src_attr.push(source); + } - this.#style_src_elem.push(`sha256-${hash}`); - } - } else { - if (this.#style_src.length === 0 && !d['style-src']?.includes('unsafe-inline')) { - this.#style_src.push(`nonce-${this.#nonce}`); - } - if (d['style-src-attr']?.length) { - this.#style_src_attr.push(`nonce-${this.#nonce}`); - } - if (d['style-src-elem']?.length) { - if (!d['style-src-elem'].includes(`sha256-${empty_comment_hash}`)) { - this.#style_src_elem.push(`sha256-${empty_comment_hash}`); - } + if (this.#style_src_elem_needs_csp) { + // this is the sha256 hash for the string "/* empty */" + // adding it so that svelte does not break csp + // see https://github.com/sveltejs/svelte/pull/7800 + const sha256_empty_comment_hash = 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc='; + const d = this.#directives; + + if ( + d['style-src-elem'] && + !d['style-src-elem'].includes(sha256_empty_comment_hash) && + !this.#style_src_elem.includes(sha256_empty_comment_hash) + ) { + this.#style_src_elem.push(sha256_empty_comment_hash); + } - this.#style_src_elem.push(`nonce-${this.#nonce}`); - } + if (source !== sha256_empty_comment_hash) { + this.#style_src_elem.push(source); } } } diff --git a/packages/kit/src/runtime/server/page/csp.spec.js b/packages/kit/src/runtime/server/page/csp.spec.js index 670d27305065..6dc1a9435856 100644 --- a/packages/kit/src/runtime/server/page/csp.spec.js +++ b/packages/kit/src/runtime/server/page/csp.spec.js @@ -84,10 +84,20 @@ test('skips nonce with unsafe-inline', () => { { mode: 'nonce', directives: { - 'default-src': ['unsafe-inline'] + 'default-src': ['unsafe-inline'], + 'script-src': ['unsafe-inline'], + 'script-src-elem': ['unsafe-inline'], + 'style-src': ['unsafe-inline'], + 'style-src-attr': ['unsafe-inline'], + 'style-src-elem': ['unsafe-inline'] }, reportOnly: { 'default-src': ['unsafe-inline'], + 'script-src': ['unsafe-inline'], + 'script-src-elem': ['unsafe-inline'], + 'style-src': ['unsafe-inline'], + 'style-src-attr': ['unsafe-inline'], + 'style-src-elem': ['unsafe-inline'], 'report-uri': ['/'] } }, @@ -97,9 +107,16 @@ test('skips nonce with unsafe-inline', () => { ); csp.add_script(''); + csp.add_style(''); - assert.equal(csp.csp_provider.get_header(), "default-src 'unsafe-inline'"); - assert.equal(csp.report_only_provider.get_header(), "default-src 'unsafe-inline'; report-uri /"); + assert.equal( + csp.csp_provider.get_header(), + "default-src 'unsafe-inline'; script-src 'unsafe-inline'; script-src-elem 'unsafe-inline'; style-src 'unsafe-inline'; style-src-attr 'unsafe-inline'; style-src-elem 'unsafe-inline'" + ); + assert.equal( + csp.report_only_provider.get_header(), + "default-src 'unsafe-inline'; script-src 'unsafe-inline'; script-src-elem 'unsafe-inline'; style-src 'unsafe-inline'; style-src-attr 'unsafe-inline'; style-src-elem 'unsafe-inline'; report-uri /" + ); }); test('skips nonce in style-src when using unsafe-inline', () => { @@ -151,6 +168,30 @@ test('skips hash with unsafe-inline', () => { assert.equal(csp.report_only_provider.get_header(), "default-src 'unsafe-inline'; report-uri /"); }); +test('does not add empty comment hash to style-src-elem if already defined', () => { + const csp = new Csp( + { + mode: 'hash', + directives: { + 'style-src-elem': ['self', 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc='] + }, + reportOnly: { + 'report-uri': ['/'] + } + }, + { + prerender: false + } + ); + + csp.add_style('/* empty */'); + + assert.equal( + csp.csp_provider.get_header(), + "style-src-elem 'self' 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc='" + ); +}); + test('skips frame-ancestors, report-uri, sandbox from meta tags', () => { const csp = new Csp( { @@ -179,7 +220,7 @@ test('skips frame-ancestors, report-uri, sandbox from meta tags', () => { ); }); -test('adds nonce to script-src-elem, style-src-attr and style-src-elem if necessary', () => { +test('adds nonce style-src-attr and style-src-elem and nonce + sha to script-src-elem if necessary', () => { const csp = new Csp( { mode: 'auto', From 7b5c98d65a6433cc4b3caeefa7d7677b9965103c Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:06:49 -0800 Subject: [PATCH 402/454] chore: setup pkg.pr.new (#12977) --- .github/workflows/ci.yml | 13 ++++++++++++- CONTRIBUTING.md | 10 +++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 486af3633207..c754c5f185f8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,6 +19,17 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: + pkg-pr-new: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4.0.0 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpx pkg-pr-new publish --comment=off ./packages/kit lint-all: runs-on: ubuntu-latest steps: @@ -26,7 +37,7 @@ jobs: - uses: pnpm/action-setup@v4.0.0 - uses: actions/setup-node@v4 with: - node-version: '18.x' + node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm run lint diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ca6709e3b704..df548cfa14bc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ pnpm install You can use the playground at [`playgrounds/basic`](./playgrounds/basic/) to experiment with your changes to SvelteKit locally. -### Linking +### Linking local changes If you want to test against an existing project, you can use [pnpm `overrides`](https://pnpm.io/package_json#pnpmoverrides) in that project: @@ -39,6 +39,14 @@ If you want to test against an existing project, you can use [pnpm `overrides`]( } ``` +### Testing PR changes + +Each pull request will be built and published via [pkg.pr.new/](https://pkg.pr.new/). You can test the change by installing the package with your PR number: + +``` +npm add https://pkg.pr.new/sveltejs/kit/@sveltejs/kit@YOUR_PR_NUMBER_GOES_HERE +``` + ## Code structure Entry points to be aware of are: From 7a17bd2712203ca8ec3a3343174a8e4185729bfa Mon Sep 17 00:00:00 2001 From: Scott <sw@scottwu.ca> Date: Wed, 13 Nov 2024 11:12:31 +0800 Subject: [PATCH 403/454] docs: fix title for the code block (#12991) * . * this is better? * similar changes to other files * Update documentation/docs/30-advanced/25-errors.md --------- Co-authored-by: Chew Tee Ming <chew.tee.ming@nindatech.com> Co-authored-by: Tee Ming <chewteeming01@gmail.com> --- documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md | 2 +- .../docs/25-build-and-deploy/70-adapter-cloudflare-workers.md | 2 +- documentation/docs/30-advanced/25-errors.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md index b1dea91bdd6b..3704dc0454b8 100644 --- a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md +++ b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md @@ -84,7 +84,7 @@ export async function POST({ request, platform }) { To include type declarations for your bindings, reference them in your `src/app.d.ts`: -```dts +```ts /// file: src/app.d.ts declare global { namespace App { diff --git a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md index 6635f566d38a..b4e270f62283 100644 --- a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md +++ b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md @@ -105,7 +105,7 @@ export async function POST({ request, platform }) { To include type declarations for your bindings, reference them in your `src/app.d.ts`: -```dts +```ts /// file: src/app.d.ts declare global { namespace App { diff --git a/documentation/docs/30-advanced/25-errors.md b/documentation/docs/30-advanced/25-errors.md index 7449b5137723..5fd17455add9 100644 --- a/documentation/docs/30-advanced/25-errors.md +++ b/documentation/docs/30-advanced/25-errors.md @@ -126,7 +126,7 @@ The exception is when the error occurs inside the root `+layout.js` or `+layout. If you're using TypeScript and need to customize the shape of errors, you can do so by declaring an `App.Error` interface in your app (by convention, in `src/app.d.ts`, though it can live anywhere that TypeScript can 'see'): -```dts +```ts /// file: src/app.d.ts declare global { namespace App { From 0bd4426944ce9995b86199900e39c8d3929fa2f2 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 12 Nov 2024 20:14:38 -0800 Subject: [PATCH 404/454] fix: support custom servers using HTTP/2 in production (#12989) Co-authored-by: Chew Tee Ming <chew.tee.ming@nindatech.com> --- .changeset/shy-needles-warn.md | 5 +++++ packages/kit/src/exports/node/index.js | 16 +++++++++++++++- packages/kit/src/exports/vite/index.js | 16 ---------------- packages/kit/src/exports/vite/preview/index.js | 2 +- 4 files changed, 21 insertions(+), 18 deletions(-) create mode 100644 .changeset/shy-needles-warn.md diff --git a/.changeset/shy-needles-warn.md b/.changeset/shy-needles-warn.md new file mode 100644 index 000000000000..543a36d18102 --- /dev/null +++ b/.changeset/shy-needles-warn.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: support HTTP/2 in dev and production. Revert the changes from [#12907](https://github.com/sveltejs/kit/pull/12907) to downgrade HTTP/2 to TLS as now being unnecessary diff --git a/packages/kit/src/exports/node/index.js b/packages/kit/src/exports/node/index.js index b3fe17c5a4f7..c4def8f89cd0 100644 --- a/packages/kit/src/exports/node/index.js +++ b/packages/kit/src/exports/node/index.js @@ -106,11 +106,25 @@ function get_raw_body(req, body_size_limit) { // TODO 3.0 make the signature synchronous? // eslint-disable-next-line @typescript-eslint/require-await export async function getRequest({ request, base, bodySizeLimit }) { + let headers = /** @type {Record<string, string>} */ (request.headers); + if (request.httpVersionMajor >= 2) { + // the Request constructor rejects headers with ':' in the name + headers = Object.assign({}, headers); + // https://www.rfc-editor.org/rfc/rfc9113.html#section-8.3.1-2.3.5 + if (headers[':authority']) { + headers.host = headers[':authority']; + } + delete headers[':authority']; + delete headers[':method']; + delete headers[':path']; + delete headers[':scheme']; + } + return new Request(base + request.url, { // @ts-expect-error duplex: 'half', method: request.method, - headers: /** @type {Record<string, string>} */ (request.headers), + headers: Object.entries(headers), body: request.method === 'GET' || request.method === 'HEAD' ? undefined diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 40fa4c6edb56..e6521e979560 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -349,22 +349,6 @@ async function kit({ svelte_config }) { * Stores the final config. */ configResolved(config) { - // we search for this plugin by name because we can't detect it - // since it doesn't directly modify the https config unlike the mkcert plugin - const vite_basic_ssl = config.plugins.find(({ name }) => name === 'vite:basic-ssl'); - - // by default, when enabling HTTPS in Vite, it also enables HTTP/2 - // however, undici has not yet enabled HTTP/2 by default: https://github.com/nodejs/undici/issues/2750 - // we set a no-op proxy config to force Vite to downgrade to TLS-only - // see https://vitejs.dev/config/#server-https - if ((config.server.https || vite_basic_ssl) && !config.server.proxy) { - config.server.proxy = {}; - } - - if ((config.preview.https || vite_basic_ssl) && !config.preview.proxy) { - config.preview.proxy = {}; - } - vite_config = config; } }; diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 37e04f72f602..481fa087eab7 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -185,7 +185,7 @@ export async function preview(vite, vite_config, svelte_config) { // SSR vite.middlewares.use(async (req, res) => { - const host = req.headers['host']; + const host = req.headers[':authority'] || req.headers.host; const request = await getRequest({ base: `${protocol}://${host}`, From ff86b70e6f584c60c5ba1f7d24a45dac1cb24d35 Mon Sep 17 00:00:00 2001 From: Bishwas Bhandari <42182303+Bishwas-py@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:22:39 +0545 Subject: [PATCH 405/454] docs: block controls visible #815 (#12969) * chore: block controls visible #815 * chore: reverted --- documentation/docs/98-reference/54-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/98-reference/54-types.md b/documentation/docs/98-reference/54-types.md index 691da2193d68..2b24ed69034c 100644 --- a/documentation/docs/98-reference/54-types.md +++ b/documentation/docs/98-reference/54-types.md @@ -25,7 +25,7 @@ To solve this problem, SvelteKit generates `.d.ts` files for each of your endpoi ```ts /// file: .svelte-kit/types/src/routes/[foo]/[bar]/[baz]/$types.d.ts -/// link: false +/// link: true import type * as Kit from '@sveltejs/kit'; type RouteParams = { From 98de316fafacc4051ae2385442bbf1c7986c7787 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 09:21:25 -0800 Subject: [PATCH 406/454] chore(deps): update pnpm to v9.13.0 (#12994) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 42303946f718..2626d1c03486 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier-plugin-svelte": "^3.1.2", "typescript-eslint": "^8.0.0" }, - "packageManager": "pnpm@9.12.3", + "packageManager": "pnpm@9.13.0", "engines": { "pnpm": "^9.0.0" } From 435984bf61b047d1e1a8efe88354ca7ac4e9109f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 09:22:53 -0800 Subject: [PATCH 407/454] Version Packages (#12992) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/giant-years-drum.md | 5 ----- .changeset/shy-needles-warn.md | 5 ----- packages/kit/CHANGELOG.md | 9 +++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 5 files changed, 11 insertions(+), 12 deletions(-) delete mode 100644 .changeset/giant-years-drum.md delete mode 100644 .changeset/shy-needles-warn.md diff --git a/.changeset/giant-years-drum.md b/.changeset/giant-years-drum.md deleted file mode 100644 index e1129e0d0486..000000000000 --- a/.changeset/giant-years-drum.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: only add nonce to `script-src-elem`, `style-src-attr` and `style-src-elem` CSP directives when `unsafe-inline` is not present diff --git a/.changeset/shy-needles-warn.md b/.changeset/shy-needles-warn.md deleted file mode 100644 index 543a36d18102..000000000000 --- a/.changeset/shy-needles-warn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: support HTTP/2 in dev and production. Revert the changes from [#12907](https://github.com/sveltejs/kit/pull/12907) to downgrade HTTP/2 to TLS as now being unnecessary diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 02f046987b9e..dfb013500e2b 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/kit +## 2.8.1 +### Patch Changes + + +- fix: only add nonce to `script-src-elem`, `style-src-attr` and `style-src-elem` CSP directives when `unsafe-inline` is not present ([#11613](https://github.com/sveltejs/kit/pull/11613)) + + +- fix: support HTTP/2 in dev and production. Revert the changes from [#12907](https://github.com/sveltejs/kit/pull/12907) to downgrade HTTP/2 to TLS as now being unnecessary ([#12989](https://github.com/sveltejs/kit/pull/12989)) + ## 2.8.0 ### Minor Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 2d6c4df160ee..f6677fca7a25 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.8.0", + "version": "2.8.1", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 3b8f5a9e08c1..81d457f85270 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.8.0'; +export const VERSION = '2.8.1'; From 143dbf9da9d65dedfc370160c229c317fe18361c Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sun, 17 Nov 2024 18:44:02 -0800 Subject: [PATCH 408/454] docs: update vitePreprocess section for Svelte 5 (#13011) --- documentation/docs/60-appendix/20-integrations.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/documentation/docs/60-appendix/20-integrations.md b/documentation/docs/60-appendix/20-integrations.md index d3d9a8fcf780..63e3fa5ad553 100644 --- a/documentation/docs/60-appendix/20-integrations.md +++ b/documentation/docs/60-appendix/20-integrations.md @@ -4,7 +4,7 @@ title: Integrations ## `vitePreprocess` -Including [`vitePreprocess`](https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/preprocess.md) in your project will allow you to use the various flavors of JS and CSS that Vite supports: TypeScript, PostCSS, SCSS, Less, Stylus, and SugarSS. If you set your project up with TypeScript it will be included by default: +Including [`vitePreprocess`](https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/preprocess.md) in your project will allow you to use the various flavors of CSS that Vite supports: PostCSS, SCSS, Less, Stylus, and SugarSS. If you set your project up with TypeScript it will be included by default: ```js // svelte.config.js @@ -15,6 +15,8 @@ export default { }; ``` +You will also need to use a preprocessor if you're using TypeScript with Svelte 4. TypeScript is supported natively in Svelte 5 if you're using only the type syntax. To use more complex TypeScript syntax in Svelte 5, you will need still need a preprocessor and can use `vitePreprocess({ script: true })`. + ## Adders Run `npx sv add` to setup many different complex integrations with a single command including: From 570562b74d9e9f295d9b617478088a650f51e96b Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Tue, 19 Nov 2024 11:45:57 +0800 Subject: [PATCH 409/454] fix: handle empty Headers when serialising Request passed to fetch (#13023) --- .changeset/honest-hornets-doubt.md | 5 +++++ packages/kit/src/runtime/client/client.js | 4 +++- .../load/fetch-request-empty-headers/+page.js | 6 ++++++ .../load/fetch-request-empty-headers/+page.svelte | 6 ++++++ packages/kit/test/apps/basics/test/client.test.js | 15 +++++++++++++++ 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .changeset/honest-hornets-doubt.md create mode 100644 packages/kit/test/apps/basics/src/routes/load/fetch-request-empty-headers/+page.js create mode 100644 packages/kit/test/apps/basics/src/routes/load/fetch-request-empty-headers/+page.svelte diff --git a/.changeset/honest-hornets-doubt.md b/.changeset/honest-hornets-doubt.md new file mode 100644 index 000000000000..b34bed919926 --- /dev/null +++ b/.changeset/honest-hornets-doubt.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: prevent duplicate fetch request when using Request with load function's fetch diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index df35010c65c1..656174365198 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -669,7 +669,9 @@ async function load_node({ loader, parent, url, params, route, server_data_node : await resource.blob(), cache: resource.cache, credentials: resource.credentials, - headers: resource.headers, + // the headers are undefined on the server if the Headers object is empty + // so we need to make sure they are also undefined here if there are no headers + headers: [...resource.headers].length ? resource.headers : undefined, integrity: resource.integrity, keepalive: resource.keepalive, method: resource.method, diff --git a/packages/kit/test/apps/basics/src/routes/load/fetch-request-empty-headers/+page.js b/packages/kit/test/apps/basics/src/routes/load/fetch-request-empty-headers/+page.js new file mode 100644 index 000000000000..895e97248da7 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/load/fetch-request-empty-headers/+page.js @@ -0,0 +1,6 @@ +/** @type {import('@sveltejs/kit').Load} */ +export async function load({ url, fetch }) { + const res = await fetch(new Request(url.origin + '/load/fetch-request.json')); + const { answer } = await res.json(); + return { answer }; +} diff --git a/packages/kit/test/apps/basics/src/routes/load/fetch-request-empty-headers/+page.svelte b/packages/kit/test/apps/basics/src/routes/load/fetch-request-empty-headers/+page.svelte new file mode 100644 index 000000000000..c890e7840e38 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/load/fetch-request-empty-headers/+page.svelte @@ -0,0 +1,6 @@ +<script> + /** @type {import('./$types').PageData} */ + export let data; +</script> + +<h1>the answer is {data.answer}</h1> diff --git a/packages/kit/test/apps/basics/test/client.test.js b/packages/kit/test/apps/basics/test/client.test.js index 351cbdbeb7ad..56b2c96bc744 100644 --- a/packages/kit/test/apps/basics/test/client.test.js +++ b/packages/kit/test/apps/basics/test/client.test.js @@ -252,6 +252,21 @@ test.describe('Load', () => { expect(logs).toContain('Called a patched window.fetch'); }); + test('does not repeat fetch on hydration when using Request object', async ({ page }) => { + const requests = []; + page.on('request', (request) => { + if (request.url().includes('/load/fetch-request.json')) { + requests.push(request); + } + }); + + await page.goto('/load/fetch-request-empty-headers'); + + console.log({ requests }); + + expect(requests).toEqual([]); + }); + if (process.env.DEV) { test('using window.fetch causes a warning', async ({ page, baseURL }) => { await Promise.all([ From 94c45b9372a9ed2b80e21cdca3f235c45edaa5b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:27:20 -0800 Subject: [PATCH 410/454] chore(deps): update pnpm to v9.13.2 (#13001) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2626d1c03486..7108060b84a7 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier-plugin-svelte": "^3.1.2", "typescript-eslint": "^8.0.0" }, - "packageManager": "pnpm@9.13.0", + "packageManager": "pnpm@9.13.2", "engines": { "pnpm": "^9.0.0" } From 239fe18849a0db5ee3114c943d24677b1c01c7be Mon Sep 17 00:00:00 2001 From: Bae Junehyeon <devunt@gmail.com> Date: Thu, 21 Nov 2024 11:36:21 +0900 Subject: [PATCH 411/454] docs: use svelte 5 syntax (#13030) * docs: use svelte 5 syntax * apply change to other pages too --------- Co-authored-by: Chew Tee Ming <chew.tee.ming@nindatech.com> --- documentation/docs/20-core-concepts/10-routing.md | 2 +- documentation/docs/20-core-concepts/20-load.md | 2 +- documentation/docs/20-core-concepts/30-form-actions.md | 4 ++-- documentation/docs/30-advanced/67-shallow-routing.md | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/documentation/docs/20-core-concepts/10-routing.md b/documentation/docs/20-core-concepts/10-routing.md index 78c2b0ac719d..3cb2ba3ef3aa 100644 --- a/documentation/docs/20-core-concepts/10-routing.md +++ b/documentation/docs/20-core-concepts/10-routing.md @@ -330,7 +330,7 @@ By exporting `POST`/`PUT`/`PATCH`/`DELETE`/`OPTIONS`/`HEAD` handlers, `+server.j <input type="number" bind:value={b}> = {total} -<button on:click={add}>Calculate</button> +<button onclick={add}>Calculate</button> ``` ```js diff --git a/documentation/docs/20-core-concepts/20-load.md b/documentation/docs/20-core-concepts/20-load.md index 7231b588d06a..bba63fd2be93 100644 --- a/documentation/docs/20-core-concepts/20-load.md +++ b/documentation/docs/20-core-concepts/20-load.md @@ -661,7 +661,7 @@ export async function load({ fetch, depends }) { </script> <p>random number: {data.number}</p> -<button on:click={rerunLoadFunction}>Update random number</button> +<button onclick={rerunLoadFunction}>Update random number</button> ``` ### When do load functions rerun? diff --git a/documentation/docs/20-core-concepts/30-form-actions.md b/documentation/docs/20-core-concepts/30-form-actions.md index dddae80da99f..74d08c9fdc15 100644 --- a/documentation/docs/20-core-concepts/30-form-actions.md +++ b/documentation/docs/20-core-concepts/30-form-actions.md @@ -451,7 +451,7 @@ We can also implement progressive enhancement ourselves, without `use:enhance`, } </script> -<form method="POST" on:submit|preventDefault={handleSubmit}> +<form method="POST" onsubmit|preventDefault={handleSubmit}> <!-- content --> </form> ``` @@ -484,7 +484,7 @@ Form actions are the preferred way to send data to the server, since they can be } </script> -<button on:click={rerun}>Rerun CI</button> +<button onclick={rerun}>Rerun CI</button> ``` ```js diff --git a/documentation/docs/30-advanced/67-shallow-routing.md b/documentation/docs/30-advanced/67-shallow-routing.md index f10edd0ad5ef..af7d38959946 100644 --- a/documentation/docs/30-advanced/67-shallow-routing.md +++ b/documentation/docs/30-advanced/67-shallow-routing.md @@ -57,7 +57,7 @@ For this to work, you need to load the data that the `+page.svelte` expects. A c {#each data.thumbnails as thumbnail} <a href="/photos/{thumbnail.id}" - on:click={async (e) => { + onclick={async (e) => { if (innerWidth < 640 // bail if the screen is too small || e.shiftKey // or the link is opened in a new window || e.metaKey || e.ctrlKey // or a new tab (mac: metaKey, win/linux: ctrlKey) @@ -86,7 +86,7 @@ For this to work, you need to load the data that the `+page.svelte` expects. A c {/each} {#if $page.state.selected} - <Modal on:close={() => history.back()}> + <Modal onclose={() => history.back()}> <!-- pass page data to the +page.svelte component, just like SvelteKit would on navigation --> <PhotoPage data={$page.state.selected} /> From 1358cccd52190df3c74bdd8970dbfb06ffc4ec72 Mon Sep 17 00:00:00 2001 From: kkarikos <kalle.karikoski@gmail.com> Date: Thu, 21 Nov 2024 22:28:02 +0200 Subject: [PATCH 412/454] fix: use default cookie decoder (#13037) Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/plenty-oranges-count.md | 5 +++++ packages/kit/src/runtime/server/cookie.js | 6 ++---- 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 .changeset/plenty-oranges-count.md diff --git a/.changeset/plenty-oranges-count.md b/.changeset/plenty-oranges-count.md new file mode 100644 index 000000000000..3031d3cc6f43 --- /dev/null +++ b/.changeset/plenty-oranges-count.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: do not override default cookie decoder to allow users to override the `cookie` library version diff --git a/packages/kit/src/runtime/server/cookie.js b/packages/kit/src/runtime/server/cookie.js index ddefa847a432..f4442872fbeb 100644 --- a/packages/kit/src/runtime/server/cookie.js +++ b/packages/kit/src/runtime/server/cookie.js @@ -67,8 +67,7 @@ export function get_cookies(request, url, trailing_slash) { return c.value; } - const decoder = opts?.decode || decodeURIComponent; - const req_cookies = parse(header, { decode: decoder }); + const req_cookies = parse(header, { decode: opts?.decode }); const cookie = req_cookies[name]; // the decoded string or undefined // in development, if the cookie was set during this session with `cookies.set`, @@ -95,8 +94,7 @@ export function get_cookies(request, url, trailing_slash) { * @param {import('cookie').CookieParseOptions} opts */ getAll(opts) { - const decoder = opts?.decode || decodeURIComponent; - const cookies = parse(header, { decode: decoder }); + const cookies = parse(header, { decode: opts?.decode }); for (const c of Object.values(new_cookies)) { if ( From a3ef25f0cf7d5c5896581fb8701fe0daf8109e6a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 15:40:45 -0800 Subject: [PATCH 413/454] chore(deps): update pnpm to v9.14.2 (#13029) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7108060b84a7..e1cd905dffd9 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier-plugin-svelte": "^3.1.2", "typescript-eslint": "^8.0.0" }, - "packageManager": "pnpm@9.13.2", + "packageManager": "pnpm@9.14.2", "engines": { "pnpm": "^9.0.0" } From 20df74854c674dc61eb34512b063ca94c8a6d856 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Fri, 22 Nov 2024 20:57:45 +0100 Subject: [PATCH 414/454] chore: support building with Node 22 (#13043) Also adjust the validation logic to not care at all when building on Vercel, to not have to update the adapter each time right away. Closes #13040 --- .changeset/long-rivers-stare.md | 5 ++++ .../25-build-and-deploy/90-adapter-vercel.md | 4 +-- packages/adapter-vercel/index.js | 26 ++++++++++++++----- 3 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 .changeset/long-rivers-stare.md diff --git a/.changeset/long-rivers-stare.md b/.changeset/long-rivers-stare.md new file mode 100644 index 000000000000..8247736f92a9 --- /dev/null +++ b/.changeset/long-rivers-stare.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-vercel': patch +--- + +chore: support building with Node 22 diff --git a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md index 57867ce7c986..f8150c0fd7cd 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -44,13 +44,13 @@ export const config = { /// file: admin/+layout.js /** @type {import('@sveltejs/adapter-vercel').Config} */ export const config = { - runtime: 'nodejs18.x' + runtime: 'nodejs22.x' }; ``` The following options apply to all functions: -- `runtime`: `'edge'`, `'nodejs18.x'` or `'nodejs20.x'`. By default, the adapter will select the `'nodejs<version>.x'` corresponding to the Node version your project is configured to use on the Vercel dashboard +- `runtime`: `'edge'`, `'nodejs18.x'`, `'nodejs20.x'` or `'nodejs22.x'`. By default, the adapter will select the `'nodejs<version>.x'` corresponding to the Node version your project is configured to use on the Vercel dashboard - `regions`: an array of [edge network regions](https://vercel.com/docs/concepts/edge-network/regions) (defaulting to `["iad1"]` for serverless functions) or `'all'` if `runtime` is `edge` (its default). Note that multiple regions for serverless functions are only supported on Enterprise plans - `split`: if `true`, causes a route to be deployed as an individual function. If `split` is set to `true` at the adapter level, all routes will be deployed as individual functions diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index bb9114a0c10e..3fdd2f027b66 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -11,13 +11,27 @@ const name = '@sveltejs/adapter-vercel'; const DEFAULT_FUNCTION_NAME = 'fn'; const get_default_runtime = () => { - const major = process.version.slice(1).split('.')[0]; - if (major === '18') return 'nodejs18.x'; - if (major === '20') return 'nodejs20.x'; + const major = Number(process.version.slice(1).split('.')[0]); + + // If we're building on Vercel, we know that the version will be fine because Vercel + // provides Node (and Vercel won't provide something it doesn't support). + // Also means we're not on the hook for updating the adapter every time a new Node + // version is added to Vercel. + if (!process.env.VERCEL) { + if (major < 18 || major > 22) { + throw new Error( + `Building locally with unsupported Node.js version: ${process.version}. Please use Node 18, 20 or 22 to build your project, or explicitly specify a runtime in your adapter configuration.` + ); + } - throw new Error( - `Unsupported Node.js version: ${process.version}. Please use Node 18 or Node 20 to build your project, or explicitly specify a runtime in your adapter configuration.` - ); + if (major % 2 !== 0) { + throw new Error( + `Unsupported Node.js version: ${process.version}. Please use an even-numbered Node version to build your project, or explicitly specify a runtime in your adapter configuration.` + ); + } + } + + return `nodejs${major}.x`; }; // https://vercel.com/docs/functions/edge-functions/edge-runtime#compatible-node.js-modules From 5f8399d88fd9461a6111e03e6168067fba42e2c1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 20:58:38 +0100 Subject: [PATCH 415/454] Version Packages (#13024) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/honest-hornets-doubt.md | 5 ----- .changeset/long-rivers-stare.md | 5 ----- .changeset/plenty-oranges-count.md | 5 ----- packages/adapter-vercel/CHANGELOG.md | 9 +++++++++ packages/adapter-vercel/package.json | 2 +- packages/kit/CHANGELOG.md | 9 +++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 8 files changed, 21 insertions(+), 18 deletions(-) delete mode 100644 .changeset/honest-hornets-doubt.md delete mode 100644 .changeset/long-rivers-stare.md delete mode 100644 .changeset/plenty-oranges-count.md diff --git a/.changeset/honest-hornets-doubt.md b/.changeset/honest-hornets-doubt.md deleted file mode 100644 index b34bed919926..000000000000 --- a/.changeset/honest-hornets-doubt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: prevent duplicate fetch request when using Request with load function's fetch diff --git a/.changeset/long-rivers-stare.md b/.changeset/long-rivers-stare.md deleted file mode 100644 index 8247736f92a9..000000000000 --- a/.changeset/long-rivers-stare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/adapter-vercel': patch ---- - -chore: support building with Node 22 diff --git a/.changeset/plenty-oranges-count.md b/.changeset/plenty-oranges-count.md deleted file mode 100644 index 3031d3cc6f43..000000000000 --- a/.changeset/plenty-oranges-count.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: do not override default cookie decoder to allow users to override the `cookie` library version diff --git a/packages/adapter-vercel/CHANGELOG.md b/packages/adapter-vercel/CHANGELOG.md index 6ef0f2787c62..9002d1d318e4 100644 --- a/packages/adapter-vercel/CHANGELOG.md +++ b/packages/adapter-vercel/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-vercel +## 5.4.8 +### Patch Changes + + +- chore: support building with Node 22 ([#13043](https://github.com/sveltejs/kit/pull/13043)) + +- Updated dependencies [[`570562b74d9e9f295d9b617478088a650f51e96b`](https://github.com/sveltejs/kit/commit/570562b74d9e9f295d9b617478088a650f51e96b), [`1358cccd52190df3c74bdd8970dbfb06ffc4ec72`](https://github.com/sveltejs/kit/commit/1358cccd52190df3c74bdd8970dbfb06ffc4ec72)]: + - @sveltejs/kit@2.8.2 + ## 5.4.7 ### Patch Changes diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index f8e1f6cf0feb..1a415a47c947 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-vercel", - "version": "5.4.7", + "version": "5.4.8", "description": "A SvelteKit adapter that creates a Vercel app", "keywords": [ "adapter", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index dfb013500e2b..d0433dd2574a 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/kit +## 2.8.2 +### Patch Changes + + +- fix: prevent duplicate fetch request when using Request with load function's fetch ([#13023](https://github.com/sveltejs/kit/pull/13023)) + + +- fix: do not override default cookie decoder to allow users to override the `cookie` library version ([#13037](https://github.com/sveltejs/kit/pull/13037)) + ## 2.8.1 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index f6677fca7a25..7d0b0e436fe7 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.8.1", + "version": "2.8.2", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 81d457f85270..75f77aa519aa 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.8.1'; +export const VERSION = '2.8.2'; From d338d4635a7fd947ba5112df6ee632c4a0979438 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sun, 24 Nov 2024 19:03:15 -0800 Subject: [PATCH 416/454] fix: escape values included in dev 404 page (#13039) --- .changeset/five-maps-yawn.md | 5 ++ packages/kit/src/core/postbuild/prerender.js | 9 +-- packages/kit/src/exports/vite/utils.js | 11 +++- packages/kit/src/runtime/server/page/csp.js | 4 +- .../src/runtime/server/page/serialize_data.js | 4 +- packages/kit/src/utils/escape.js | 56 ++++++++++++------- packages/kit/src/utils/escape.spec.js | 20 +++---- 7 files changed, 69 insertions(+), 40 deletions(-) create mode 100644 .changeset/five-maps-yawn.md diff --git a/.changeset/five-maps-yawn.md b/.changeset/five-maps-yawn.md new file mode 100644 index 000000000000..b4df5751e4f9 --- /dev/null +++ b/.changeset/five-maps-yawn.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: escape values included in dev 404 page diff --git a/packages/kit/src/core/postbuild/prerender.js b/packages/kit/src/core/postbuild/prerender.js index f2f511d4a98a..107448c338ff 100644 --- a/packages/kit/src/core/postbuild/prerender.js +++ b/packages/kit/src/core/postbuild/prerender.js @@ -4,7 +4,7 @@ import { pathToFileURL } from 'node:url'; import { installPolyfills } from '../../exports/node/polyfills.js'; import { mkdirp, posixify, walk } from '../../utils/filesystem.js'; import { decode_uri, is_root_relative, resolve } from '../../utils/url.js'; -import { escape_html_attr } from '../../utils/escape.js'; +import { escape_html } from '../../utils/escape.js'; import { logger } from '../utils.js'; import { load_config } from '../config/index.js'; import { get_route_segments } from '../../utils/routing.js'; @@ -359,9 +359,10 @@ async function prerender({ out, manifest_path, metadata, verbose, env }) { dest, `<script>location.href=${devalue.uneval( location - )};</script><meta http-equiv="refresh" content=${escape_html_attr( - `0;url=${location}` - )}>` + )};</script><meta http-equiv="refresh" content="${escape_html( + `0;url=${location}`, + true + )}">` ); written.add(file); diff --git a/packages/kit/src/exports/vite/utils.js b/packages/kit/src/exports/vite/utils.js index aaa33971bede..a4ff95178803 100644 --- a/packages/kit/src/exports/vite/utils.js +++ b/packages/kit/src/exports/vite/utils.js @@ -3,6 +3,7 @@ import { loadEnv } from 'vite'; import { posixify } from '../../utils/filesystem.js'; import { negotiate } from '../../utils/http.js'; import { filter_private_env, filter_public_env } from '../../utils/env.js'; +import { escape_html } from '../../utils/escape.js'; /** * Transforms kit.alias to a valid vite.resolve.alias array. @@ -89,11 +90,17 @@ export function not_found(req, res, base) { if (type === 'text/html') { res.setHeader('Content-Type', 'text/html'); res.end( - `The server is configured with a public base URL of ${base} - did you mean to visit <a href="${prefixed}">${prefixed}</a> instead?` + `The server is configured with a public base URL of ${escape_html( + base + )} - did you mean to visit <a href="${escape_html(prefixed, true)}">${escape_html( + prefixed + )}</a> instead?` ); } else { res.end( - `The server is configured with a public base URL of ${base} - did you mean to visit ${prefixed} instead?` + `The server is configured with a public base URL of ${escape_html( + base + )} - did you mean to visit ${escape_html(prefixed)} instead?` ); } } diff --git a/packages/kit/src/runtime/server/page/csp.js b/packages/kit/src/runtime/server/page/csp.js index 336d50261ad3..7596385ba8a5 100644 --- a/packages/kit/src/runtime/server/page/csp.js +++ b/packages/kit/src/runtime/server/page/csp.js @@ -1,4 +1,4 @@ -import { escape_html_attr } from '../../../utils/escape.js'; +import { escape_html } from '../../../utils/escape.js'; import { base64, sha256 } from './crypto.js'; const array = new Uint8Array(16); @@ -300,7 +300,7 @@ class CspProvider extends BaseProvider { return; } - return `<meta http-equiv="content-security-policy" content=${escape_html_attr(content)}>`; + return `<meta http-equiv="content-security-policy" content="${escape_html(content, true)}">`; } } diff --git a/packages/kit/src/runtime/server/page/serialize_data.js b/packages/kit/src/runtime/server/page/serialize_data.js index f879a50b3156..7c2e552d4fe0 100644 --- a/packages/kit/src/runtime/server/page/serialize_data.js +++ b/packages/kit/src/runtime/server/page/serialize_data.js @@ -1,4 +1,4 @@ -import { escape_html_attr } from '../../../utils/escape.js'; +import { escape_html } from '../../../utils/escape.js'; import { hash } from '../../hash.js'; /** @@ -70,7 +70,7 @@ export function serialize_data(fetched, filter, prerendering = false) { const attrs = [ 'type="application/json"', 'data-sveltekit-fetched', - `data-url=${escape_html_attr(fetched.url)}` + `data-url="${escape_html(fetched.url, true)}"` ]; if (fetched.is_b64) { diff --git a/packages/kit/src/utils/escape.js b/packages/kit/src/utils/escape.js index 543e1a13c0a5..a73fd951daf8 100644 --- a/packages/kit/src/utils/escape.js +++ b/packages/kit/src/utils/escape.js @@ -6,41 +6,57 @@ const escape_html_attr_dict = { '&': '&', '"': '"' + // Svelte also escapes < because the escape function could be called inside a `noscript` there + // https://github.com/sveltejs/svelte/security/advisories/GHSA-8266-84wp-wv5c + // However, that doesn't apply in SvelteKit }; +/** + * @type {Record<string, string>} + */ +const escape_html_dict = { + '&': '&', + '<': '<' +}; + +const surrogates = // 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: (?<![\ud800-udbff])[\udc00-\udfff] + '[\\ud800-\\udbff][\\udc00-\\udfff]|' + + // unpaired low surrogate (see previous match) + '[\\udc00-\\udfff]'; + 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: (?<![\ud800-udbff])[\udc00-\udfff] - '[\\ud800-\\udbff][\\udc00-\\udfff]|' + - // unpaired low surrogate (see previous match) - '[\\udc00-\\udfff]', + `[${Object.keys(escape_html_attr_dict).join('')}]|` + surrogates, + 'g' +); + +const escape_html_regex = new RegExp( + `[${Object.keys(escape_html_dict).join('')}]|` + surrogates, 'g' ); /** - * Formats a string to be used as an attribute's value in raw HTML. - * - * It escapes unpaired surrogates (which are allowed in js strings but invalid in HTML), escapes - * characters that are special in attributes, and surrounds the whole string in double-quotes. + * Escapes unpaired surrogates (which are allowed in js strings but invalid in HTML) and + * escapes characters that are special. * * @param {string} str - * @returns {string} Escaped string surrounded by double-quotes. - * @example const html = `<tag data-value=${escape_html_attr('value')}>...</tag>`; + * @param {boolean} [is_attr] + * @returns {string} escaped string + * @example const html = `<tag data-value="${escape_html('value', true)}">...</tag>`; */ -export function escape_html_attr(str) { - const escaped_str = str.replace(escape_html_attr_regex, (match) => { +export function escape_html(str, is_attr) { + const dict = is_attr ? escape_html_attr_dict : escape_html_dict; + const escaped_str = str.replace(is_attr ? escape_html_attr_regex : escape_html_regex, (match) => { if (match.length === 2) { // valid surrogate pair return match; } - return escape_html_attr_dict[match] ?? `&#${match.charCodeAt(0)};`; + return dict[match] ?? `&#${match.charCodeAt(0)};`; }); - return `"${escaped_str}"`; + return escaped_str; } diff --git a/packages/kit/src/utils/escape.spec.js b/packages/kit/src/utils/escape.spec.js index 15d3bfe62f0a..3c4e6a042a86 100644 --- a/packages/kit/src/utils/escape.spec.js +++ b/packages/kit/src/utils/escape.spec.js @@ -1,19 +1,19 @@ import { assert, test } from 'vitest'; -import { escape_html_attr } from './escape.js'; +import { escape_html } from './escape.js'; test('escape_html_attr escapes special attribute characters', () => { assert.equal( - escape_html_attr('some "values" are &special here, <others> aren\'t.'), - '"some "values" are &special here, <others> aren\'t."' + escape_html('some "values" are &special here, <others> aren\'t.', true), + "some "values" are &special here, <others> aren't." ); }); test('escape_html_attr escapes invalid surrogates', () => { - assert.equal(escape_html_attr('\ud800\udc00'), '"\ud800\udc00"'); - assert.equal(escape_html_attr('\ud800'), '"�"'); - assert.equal(escape_html_attr('\udc00'), '"�"'); - assert.equal(escape_html_attr('\udc00\ud800'), '"��"'); - assert.equal(escape_html_attr('\ud800\ud800\udc00'), '"�\ud800\udc00"'); - assert.equal(escape_html_attr('\ud800\udc00\udc00'), '"\ud800\udc00�"'); - assert.equal(escape_html_attr('\ud800\ud800\udc00\udc00'), '"�\ud800\udc00�"'); + assert.equal(escape_html('\ud800\udc00', true), '\ud800\udc00'); + assert.equal(escape_html('\ud800', true), '�'); + assert.equal(escape_html('\udc00', true), '�'); + assert.equal(escape_html('\udc00\ud800', true), '��'); + assert.equal(escape_html('\ud800\ud800\udc00', true), '�\ud800\udc00'); + assert.equal(escape_html('\ud800\udc00\udc00', true), '\ud800\udc00�'); + assert.equal(escape_html('\ud800\ud800\udc00\udc00', true), '�\ud800\udc00�'); }); From 134e36343ef57ed7e6e2b3bb9e7f05ad37865794 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sun, 24 Nov 2024 21:36:56 -0800 Subject: [PATCH 417/454] fix: ensure error messages are escaped (#13050) --- .changeset/fast-swans-perform.md | 5 +++++ packages/kit/src/exports/vite/dev/index.js | 3 ++- packages/kit/src/runtime/server/utils.js | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .changeset/fast-swans-perform.md diff --git a/.changeset/fast-swans-perform.md b/.changeset/fast-swans-perform.md new file mode 100644 index 000000000000..f20bd74d6924 --- /dev/null +++ b/.changeset/fast-swans-perform.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: ensure error messages are escaped diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 0dbc912940a2..23c0fae2eeb0 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -18,6 +18,7 @@ import { compact } from '../../../utils/array.js'; import { not_found } from '../utils.js'; import { SCHEME } from '../../../utils/url.js'; import { check_feature } from '../../../utils/features.js'; +import { escape_html } from '../../../utils/escape.js'; const cwd = process.cwd(); @@ -508,7 +509,7 @@ export async function dev(vite, vite_config, svelte_config) { const error_template = ({ status, message }) => { return error_page .replace(/%sveltekit\.status%/g, String(status)) - .replace(/%sveltekit\.error\.message%/g, message); + .replace(/%sveltekit\.error\.message%/g, escape_html(message)); }; res.writeHead(500, { diff --git a/packages/kit/src/runtime/server/utils.js b/packages/kit/src/runtime/server/utils.js index f211739140e1..473804cf9183 100644 --- a/packages/kit/src/runtime/server/utils.js +++ b/packages/kit/src/runtime/server/utils.js @@ -5,6 +5,7 @@ import { negotiate } from '../../utils/http.js'; import { HttpError } from '../control.js'; import { fix_stack_trace } from '../shared-server.js'; import { ENDPOINT_METHODS } from '../../constants.js'; +import { escape_html } from '../../utils/escape.js'; /** @param {any} body */ export function is_pojo(body) { @@ -50,7 +51,7 @@ export function allowed_methods(mod) { * @param {string} message */ export function static_error_page(options, status, message) { - let page = options.templates.error({ status, message }); + let page = options.templates.error({ status, message: escape_html(message) }); if (DEV) { // inject Vite HMR client, for easier debugging From c84de62e168ac2759abe7130f6ce237233281e0e Mon Sep 17 00:00:00 2001 From: Elliott Johnson <sejohnson@torchcloudconsulting.com> Date: Sun, 24 Nov 2024 22:38:58 -0700 Subject: [PATCH 418/454] fix: `repository` field in `package.json` (#13051) * fix: `repository` field in `package.json` * Update packages/enhanced-img/package.json --------- Co-authored-by: Tee Ming <chewteeming01@gmail.com> --- packages/enhanced-img/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index ed9ba2273a58..6b475bbf7e4c 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -5,7 +5,7 @@ "repository": { "type": "git", "url": "https://github.com/sveltejs/kit", - "directory": "packages/image" + "directory": "packages/enhanced-img" }, "keywords": [ "component", From 429bfb74fe823ea13a5fa0547dcf4cd6bb358a93 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 24 Nov 2024 21:58:14 -0800 Subject: [PATCH 419/454] Version Packages (#13049) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/fast-swans-perform.md | 5 ----- .changeset/five-maps-yawn.md | 5 ----- packages/kit/CHANGELOG.md | 9 +++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 5 files changed, 11 insertions(+), 12 deletions(-) delete mode 100644 .changeset/fast-swans-perform.md delete mode 100644 .changeset/five-maps-yawn.md diff --git a/.changeset/fast-swans-perform.md b/.changeset/fast-swans-perform.md deleted file mode 100644 index f20bd74d6924..000000000000 --- a/.changeset/fast-swans-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: ensure error messages are escaped diff --git a/.changeset/five-maps-yawn.md b/.changeset/five-maps-yawn.md deleted file mode 100644 index b4df5751e4f9..000000000000 --- a/.changeset/five-maps-yawn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: escape values included in dev 404 page diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index d0433dd2574a..a3961354fe3e 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/kit +## 2.8.3 +### Patch Changes + + +- fix: ensure error messages are escaped ([#13050](https://github.com/sveltejs/kit/pull/13050)) + + +- fix: escape values included in dev 404 page ([#13039](https://github.com/sveltejs/kit/pull/13039)) + ## 2.8.2 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 7d0b0e436fe7..a0c67b9ced3c 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.8.2", + "version": "2.8.3", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 75f77aa519aa..234b011d507e 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.8.2'; +export const VERSION = '2.8.3'; From efb9019f2171d603c44c150f650b637af4438a1f Mon Sep 17 00:00:00 2001 From: Bjorn Lu <bjornlu.dev@gmail.com> Date: Mon, 25 Nov 2024 22:27:59 +0800 Subject: [PATCH 420/454] fix: update inline css url in dev (#13007) --- .changeset/ninety-dragons-carry.md | 5 +++++ packages/kit/src/exports/vite/dev/index.js | 20 ++++++++------------ 2 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 .changeset/ninety-dragons-carry.md diff --git a/.changeset/ninety-dragons-carry.md b/.changeset/ninety-dragons-carry.md new file mode 100644 index 000000000000..bf6bf5189b9b --- /dev/null +++ b/.changeset/ninety-dragons-carry.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: update inline css url generation for FOUC prevention in dev diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 23c0fae2eeb0..3935daf28565 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -21,6 +21,8 @@ import { check_feature } from '../../../utils/features.js'; import { escape_html } from '../../../utils/escape.js'; const cwd = process.cwd(); +// vite-specifc queries that we should skip handling for css urls +const vite_css_query_regex = /(?:\?|&)(?:raw|url|inline)(?:&|$)/; /** * @param {import('vite').ViteDevServer} vite @@ -188,6 +190,7 @@ export async function dev(vite, vite_config, svelte_config) { // in dev we inline all styles to avoid FOUC. this gets populated lazily so that // components/stylesheets loaded via import() during `load` are included result.inline_styles = async () => { + /** @type {Set<import('vite').ModuleNode>} */ const deps = new Set(); for (const module_node of module_nodes) { @@ -198,19 +201,12 @@ export async function dev(vite, vite_config, svelte_config) { const styles = {}; for (const dep of deps) { - const url = new URL(dep.url, 'dummy:/'); - const query = url.searchParams; - - if ( - (isCSSRequest(dep.file) || - (query.has('svelte') && query.get('type') === 'style')) && - !(query.has('raw') || query.has('url') || query.has('inline')) - ) { + if (isCSSRequest(dep.url) && !vite_css_query_regex.test(dep.url)) { + const inlineCssUrl = dep.url.includes('?') + ? dep.url.replace('?', '?inline&') + : dep.url + '?inline'; try { - query.set('inline', ''); - const mod = await vite.ssrLoadModule( - `${decodeURI(url.pathname)}${url.search}${url.hash}` - ); + const mod = await vite.ssrLoadModule(inlineCssUrl); styles[dep.url] = mod.default; } catch { // this can happen with dynamically imported modules, I think From 7246a54968649d1bea0e608a72968f8bdc7c2e5c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 12:10:19 -0800 Subject: [PATCH 421/454] Version Packages (#13052) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/ninety-dragons-carry.md | 5 ----- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .changeset/ninety-dragons-carry.md diff --git a/.changeset/ninety-dragons-carry.md b/.changeset/ninety-dragons-carry.md deleted file mode 100644 index bf6bf5189b9b..000000000000 --- a/.changeset/ninety-dragons-carry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: update inline css url generation for FOUC prevention in dev diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index a3961354fe3e..42c91d271493 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.8.4 +### Patch Changes + + +- fix: update inline css url generation for FOUC prevention in dev ([#13007](https://github.com/sveltejs/kit/pull/13007)) + ## 2.8.3 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index a0c67b9ced3c..02f752fae5df 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.8.3", + "version": "2.8.4", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 234b011d507e..8f91fc16c967 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.8.3'; +export const VERSION = '2.8.4'; From d660ff43c899e775ca5c8de5f18db3fd712f1451 Mon Sep 17 00:00:00 2001 From: "Dominik G." <dominik.goepel@gmx.de> Date: Tue, 26 Nov 2024 16:44:30 +0100 Subject: [PATCH 422/454] fix: ensure prettier doesn't process build output or test results of test apps (#13058) --- .prettierrc | 3 ++- packages/kit/.prettierignore | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.prettierrc b/.prettierrc index 6f5a1610c17f..a7c0228bf8d4 100644 --- a/.prettierrc +++ b/.prettierrc @@ -23,6 +23,7 @@ "**/CHANGELOG.md", "**/vite.config.js.timestamp-*", "**/.svelte-kit/**", + "**/test-results/**", "documentation/**/*.md", "packages/package/test/fixtures/**/expected/**/*", "packages/package/test/watch/expected/**/*", @@ -30,7 +31,7 @@ "packages/kit/src/core/postbuild/fixtures/**/*" ], "options": { - "requirePragma": true + "rangeEnd": 0 } } ] diff --git a/packages/kit/.prettierignore b/packages/kit/.prettierignore index db7d272040ac..c7b4cb017736 100644 --- a/packages/kit/.prettierignore +++ b/packages/kit/.prettierignore @@ -1,3 +1,6 @@ test/build-errors/apps/syntax-error/src/routes/+page.svelte /types -src/runtime/components/svelte-5/layout.svelte \ No newline at end of file +src/runtime/components/svelte-5/layout.svelte +.svelte-kit +test-results +/test/apps/basics/test/errors.json From 84eca420bf3300be27af89091738e74597633d36 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Tue, 26 Nov 2024 17:25:55 +0100 Subject: [PATCH 423/454] fix: don't hydrate when falling back to error page (#13056) --- .changeset/funny-lies-beam.md | 5 +++++ packages/kit/src/runtime/client/client.js | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .changeset/funny-lies-beam.md diff --git a/.changeset/funny-lies-beam.md b/.changeset/funny-lies-beam.md new file mode 100644 index 000000000000..c60dc07a066a --- /dev/null +++ b/.changeset/funny-lies-beam.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: don't hydrate when falling back to error page diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 656174365198..37660a425e65 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -2358,6 +2358,7 @@ async function _hydrate( /** @type {import('./types.js').NavigationFinished | undefined} */ let result; + let hydrate = true; try { const branch_promises = node_ids.map(async (n, i) => { @@ -2422,13 +2423,16 @@ async function _hydrate( url, route }); + + target.textContent = ''; + hydrate = false; } if (result.props.page) { result.props.page.state = {}; } - initialize(result, target, true); + initialize(result, target, hydrate); } /** From c468f8220490f7770e360bb9ff17350875e8f05e Mon Sep 17 00:00:00 2001 From: "Dominik G." <dominik.goepel@gmx.de> Date: Tue, 26 Nov 2024 17:28:37 +0100 Subject: [PATCH 424/454] chore: add ignores to eslint and prettier (#13059) --- .prettierrc | 2 ++ eslint.config.js | 8 ++++---- packages/kit/.prettierignore | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.prettierrc b/.prettierrc index a7c0228bf8d4..0fd4cd0a2cc1 100644 --- a/.prettierrc +++ b/.prettierrc @@ -23,6 +23,8 @@ "**/CHANGELOG.md", "**/vite.config.js.timestamp-*", "**/.svelte-kit/**", + "**/.custom-out-dir/**", + "**/build/**", "**/test-results/**", "documentation/**/*.md", "packages/package/test/fixtures/**/expected/**/*", diff --git a/eslint.config.js b/eslint.config.js index 8efec2c35168..082e3ada57fa 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -11,10 +11,10 @@ export default [ { ignores: [ '**/.svelte-kit', - 'packages/adapter-static/test/apps/*/build', - 'packages/adapter-cloudflare/files', - 'packages/adapter-netlify/files', - 'packages/adapter-node/files' + '**/test-results', + '**/build', + '**/.custom-out-dir', + 'packages/adapter-*/files' ] }, { diff --git a/packages/kit/.prettierignore b/packages/kit/.prettierignore index c7b4cb017736..e0904af006f2 100644 --- a/packages/kit/.prettierignore +++ b/packages/kit/.prettierignore @@ -2,5 +2,7 @@ test/build-errors/apps/syntax-error/src/routes/+page.svelte /types src/runtime/components/svelte-5/layout.svelte .svelte-kit +.custom-out-dir +build test-results /test/apps/basics/test/errors.json From 361f9fe6469ba5b064570b1bcfde95c9d95b8888 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 14:30:33 -0800 Subject: [PATCH 425/454] Version Packages (#13060) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/funny-lies-beam.md | 5 ----- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .changeset/funny-lies-beam.md diff --git a/.changeset/funny-lies-beam.md b/.changeset/funny-lies-beam.md deleted file mode 100644 index c60dc07a066a..000000000000 --- a/.changeset/funny-lies-beam.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: don't hydrate when falling back to error page diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 42c91d271493..31784d40d540 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.8.5 +### Patch Changes + + +- fix: don't hydrate when falling back to error page ([#13056](https://github.com/sveltejs/kit/pull/13056)) + ## 2.8.4 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 02f752fae5df..fcf5d8bb928c 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.8.4", + "version": "2.8.5", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 8f91fc16c967..616f0dae624f 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.8.4'; +export const VERSION = '2.8.5'; From fb146e7a19c4a125ff8a006140598f65fb8b9f68 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Wed, 27 Nov 2024 11:02:19 +0800 Subject: [PATCH 426/454] chore: fix ecosystem CI (#13054) Co-authored-by: dominikg <dominik.goepel@gmx.de> Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- packages/kit/test/apps/amp/package.json | 2 +- packages/kit/test/apps/basics/package.json | 2 +- .../basics/src/routes/cookies/+page.svelte | 2 +- .../cookies/enhanced/basic/+page.svelte | 4 +- .../src/routes/cookies/nested/a/+page.svelte | 2 +- .../src/routes/cookies/nested/b/+page.svelte | 2 +- .../after-navigate/a/+page.svelte | 2 +- .../prevent-navigation/+page.svelte | 2 +- .../on-navigate/[x]/+page.svelte | 2 +- .../routes/store/client-access/+page.svelte | 2 +- .../basics/test/cross-platform/client.test.js | 4 +- packages/kit/test/apps/dev-only/package.json | 2 +- packages/kit/test/apps/embed/package.json | 2 +- packages/kit/test/apps/no-ssr/package.json | 2 +- packages/kit/test/apps/options-2/package.json | 2 +- packages/kit/test/apps/options/package.json | 2 +- .../apps/options/source/pages/+layout.svelte | 13 ++ packages/kit/test/apps/writes/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../apps/private-dynamic-env/package.json | 2 +- .../package.json | 2 +- .../apps/private-static-env/package.json | 2 +- .../package.json | 2 +- .../apps/server-only-folder/package.json | 2 +- .../package.json | 2 +- .../apps/server-only-module/package.json | 2 +- .../package.json | 2 +- .../service-worker-private-env/package.json | 2 +- .../apps/syntax-error/package.json | 2 +- .../kit/test/prerendering/basics/package.json | 2 +- .../test/prerendering/options/package.json | 2 +- .../test/prerendering/paths-base/package.json | 2 +- pnpm-lock.yaml | 154 +++++++++--------- 36 files changed, 125 insertions(+), 114 deletions(-) diff --git a/packages/kit/test/apps/amp/package.json b/packages/kit/test/apps/amp/package.json index fb9cf6de4b67..804403145aae 100644 --- a/packages/kit/test/apps/amp/package.json +++ b/packages/kit/test/apps/amp/package.json @@ -19,7 +19,7 @@ "dropcss": "^1.0.16", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index 53776cdf43bd..644e52e62a05 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -19,7 +19,7 @@ "cross-env": "^7.0.3", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/apps/basics/src/routes/cookies/+page.svelte b/packages/kit/test/apps/basics/src/routes/cookies/+page.svelte index cbf03a5f3d6d..32a7c43875c5 100644 --- a/packages/kit/test/apps/basics/src/routes/cookies/+page.svelte +++ b/packages/kit/test/apps/basics/src/routes/cookies/+page.svelte @@ -3,4 +3,4 @@ export let data; </script> -Cookie: <span id="cookie-value">{data.cookie}</span> +Cookie: <span id="cookie-value">{`${data.cookie}`}</span> diff --git a/packages/kit/test/apps/basics/src/routes/cookies/enhanced/basic/+page.svelte b/packages/kit/test/apps/basics/src/routes/cookies/enhanced/basic/+page.svelte index e8c04bc7b5bf..e0b0c59e7fd7 100644 --- a/packages/kit/test/apps/basics/src/routes/cookies/enhanced/basic/+page.svelte +++ b/packages/kit/test/apps/basics/src/routes/cookies/enhanced/basic/+page.svelte @@ -5,9 +5,7 @@ export let data; </script> -Cookie: <span id="cookie-value"> - {data.cookie} -</span> +Cookie: <span id="cookie-value">{`${data.cookie}`}</span> <form method="post" action="?/setTeapot" use:enhance> <button id="teapot">Set cookie to "teapot"</button> diff --git a/packages/kit/test/apps/basics/src/routes/cookies/nested/a/+page.svelte b/packages/kit/test/apps/basics/src/routes/cookies/nested/a/+page.svelte index cbf03a5f3d6d..32a7c43875c5 100644 --- a/packages/kit/test/apps/basics/src/routes/cookies/nested/a/+page.svelte +++ b/packages/kit/test/apps/basics/src/routes/cookies/nested/a/+page.svelte @@ -3,4 +3,4 @@ export let data; </script> -Cookie: <span id="cookie-value">{data.cookie}</span> +Cookie: <span id="cookie-value">{`${data.cookie}`}</span> diff --git a/packages/kit/test/apps/basics/src/routes/cookies/nested/b/+page.svelte b/packages/kit/test/apps/basics/src/routes/cookies/nested/b/+page.svelte index cbf03a5f3d6d..32a7c43875c5 100644 --- a/packages/kit/test/apps/basics/src/routes/cookies/nested/b/+page.svelte +++ b/packages/kit/test/apps/basics/src/routes/cookies/nested/b/+page.svelte @@ -3,4 +3,4 @@ export let data; </script> -Cookie: <span id="cookie-value">{data.cookie}</span> +Cookie: <span id="cookie-value">{`${data.cookie}`}</span> diff --git a/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/after-navigate/a/+page.svelte b/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/after-navigate/a/+page.svelte index 7e9eeeaa4b09..f7b17c56d18a 100644 --- a/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/after-navigate/a/+page.svelte +++ b/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/after-navigate/a/+page.svelte @@ -13,5 +13,5 @@ }); </script> -<h1>{from?.url.pathname} -> {to?.url.pathname}</h1> +<h1>{`${from?.url.pathname} -> ${to?.url.pathname}`}</h1> <a href="/navigation-lifecycle/after-navigate/b">/b</a> diff --git a/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/before-navigate/prevent-navigation/+page.svelte b/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/before-navigate/prevent-navigation/+page.svelte index 67607376e397..adc5b6404c20 100644 --- a/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/before-navigate/prevent-navigation/+page.svelte +++ b/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/before-navigate/prevent-navigation/+page.svelte @@ -22,4 +22,4 @@ <a href="https://google.de">external</a> <!-- svelte-ignore a11y-invalid-attribute --> <a download href="">external</a> -<pre>{times_triggered} {unload} {navigation_type}</pre> +<pre>{times_triggered} {unload} {`${navigation_type}`}</pre> diff --git a/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/on-navigate/[x]/+page.svelte b/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/on-navigate/[x]/+page.svelte index f05f035822f3..64128aa9fde5 100644 --- a/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/on-navigate/[x]/+page.svelte +++ b/packages/kit/test/apps/basics/src/routes/navigation-lifecycle/on-navigate/[x]/+page.svelte @@ -25,5 +25,5 @@ }); </script> -<h1>{from?.url.pathname} -> {to?.url.pathname} ({type ?? '...'}) {called_return}</h1> +<h1>{`${from?.url.pathname} -> ${to?.url.pathname}`} ({type ?? '...'}) {called_return}</h1> <a href="/navigation-lifecycle/on-navigate/b">/b</a> diff --git a/packages/kit/test/apps/basics/src/routes/store/client-access/+page.svelte b/packages/kit/test/apps/basics/src/routes/store/client-access/+page.svelte index 7f54b2f671d0..96eaa6f14a32 100644 --- a/packages/kit/test/apps/basics/src/routes/store/client-access/+page.svelte +++ b/packages/kit/test/apps/basics/src/routes/store/client-access/+page.svelte @@ -4,7 +4,7 @@ let pathname; </script> -<h1>{pathname}</h1> +<h1>{`${pathname}`}</h1> <button on:click={() => { diff --git a/packages/kit/test/apps/basics/test/cross-platform/client.test.js b/packages/kit/test/apps/basics/test/cross-platform/client.test.js index 71338a8422ce..1b13a6d46e31 100644 --- a/packages/kit/test/apps/basics/test/cross-platform/client.test.js +++ b/packages/kit/test/apps/basics/test/cross-platform/client.test.js @@ -50,10 +50,10 @@ test.describe('a11y', () => { expect(has_live_region).toBeTruthy(); // live region should exist, but be empty - expect(await page.innerHTML('[aria-live]')).toBe(''); + expect(await page.innerText('[aria-live]')).toBe(''); await clicknav('[href="/accessibility/b"]'); - expect(await page.innerHTML('[aria-live]')).toBe('b'); // TODO i18n + expect(await page.innerText('[aria-live]')).toBe('b'); // TODO i18n } else { expect(has_live_region).toBeFalsy(); } diff --git a/packages/kit/test/apps/dev-only/package.json b/packages/kit/test/apps/dev-only/package.json index 44f3eabcca98..48a7f63ef7e3 100644 --- a/packages/kit/test/apps/dev-only/package.json +++ b/packages/kit/test/apps/dev-only/package.json @@ -25,7 +25,7 @@ "e2e-test-dep-server": "file:./_test_dependencies/cjs-only", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/apps/embed/package.json b/packages/kit/test/apps/embed/package.json index bd0ca11cce7b..a552ae5b9af6 100644 --- a/packages/kit/test/apps/embed/package.json +++ b/packages/kit/test/apps/embed/package.json @@ -17,7 +17,7 @@ "cross-env": "^7.0.3", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/apps/no-ssr/package.json b/packages/kit/test/apps/no-ssr/package.json index 9e3db447c5a4..e91c96955eef 100644 --- a/packages/kit/test/apps/no-ssr/package.json +++ b/packages/kit/test/apps/no-ssr/package.json @@ -17,7 +17,7 @@ "cross-env": "^7.0.3", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/apps/options-2/package.json b/packages/kit/test/apps/options-2/package.json index 963d87a3c03e..b6853c3ff978 100644 --- a/packages/kit/test/apps/options-2/package.json +++ b/packages/kit/test/apps/options-2/package.json @@ -18,7 +18,7 @@ "cross-env": "^7.0.3", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/apps/options/package.json b/packages/kit/test/apps/options/package.json index 31cca4c82f20..2d13c0c82cce 100644 --- a/packages/kit/test/apps/options/package.json +++ b/packages/kit/test/apps/options/package.json @@ -17,7 +17,7 @@ "cross-env": "^7.0.3", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/apps/options/source/pages/+layout.svelte b/packages/kit/test/apps/options/source/pages/+layout.svelte index 5e1f1fed86c2..65d3d04b2070 100644 --- a/packages/kit/test/apps/options/source/pages/+layout.svelte +++ b/packages/kit/test/apps/options/source/pages/+layout.svelte @@ -1,7 +1,20 @@ <script> + import { onMount } from 'svelte'; import { setup } from '../../../../setup.js'; setup(); + + // TODO: remove this when Svelte 5 addresses this issue https://github.com/sveltejs/svelte/issues/14438 + onMount(() => { + // @ts-expect-error trustedTypes is a limited availability global + // see https://developer.mozilla.org/en-US/docs/Web/API/Window/trustedTypes + if (window.trustedTypes && trustedTypes.createPolicy) { + // @ts-expect-error + trustedTypes.createPolicy('default', { + createHTML: (/** @type {string} */ str) => str + }); + } + }); </script> <slot /> diff --git a/packages/kit/test/apps/writes/package.json b/packages/kit/test/apps/writes/package.json index 2fec107eb70b..1e699e60a736 100644 --- a/packages/kit/test/apps/writes/package.json +++ b/packages/kit/test/apps/writes/package.json @@ -17,7 +17,7 @@ "cross-env": "^7.0.3", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json index c8da1a1e510b..2388c4bee763 100644 --- a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json +++ b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json index c8da1a1e510b..2388c4bee763 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json index e6ad8f27dda6..3a68c0d05832 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json index cbb97b6d7a6f..eaeb97a03561 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json index 347837acefd3..caae5316af01 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json index 4b6718dc1b17..41167a62cfdb 100644 --- a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/private-static-env/package.json b/packages/kit/test/build-errors/apps/private-static-env/package.json index a44ed37aaee8..64b2995ad026 100644 --- a/packages/kit/test/build-errors/apps/private-static-env/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env/package.json @@ -15,7 +15,7 @@ "cross-env": "^7.0.3", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json index 5d2c7d311a5b..d846ef1fe053 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/server-only-folder/package.json b/packages/kit/test/build-errors/apps/server-only-folder/package.json index b71138bff3dc..5fc1c187f609 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json index 2c2e3a52fff4..ed531ea11636 100644 --- a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/server-only-module/package.json b/packages/kit/test/build-errors/apps/server-only-module/package.json index cd5e3a98a6b2..7605391aefdf 100644 --- a/packages/kit/test/build-errors/apps/server-only-module/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json index fe1784670ae3..ab5338950f09 100644 --- a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json index 453e06b094e5..e49775aa5e9a 100644 --- a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/build-errors/apps/syntax-error/package.json b/packages/kit/test/build-errors/apps/syntax-error/package.json index 04e9f9f75ba7..f199b59239f9 100644 --- a/packages/kit/test/build-errors/apps/syntax-error/package.json +++ b/packages/kit/test/build-errors/apps/syntax-error/package.json @@ -12,7 +12,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2" }, "type": "module" diff --git a/packages/kit/test/prerendering/basics/package.json b/packages/kit/test/prerendering/basics/package.json index 5fb1ec051699..fb0ce874382e 100644 --- a/packages/kit/test/prerendering/basics/package.json +++ b/packages/kit/test/prerendering/basics/package.json @@ -15,7 +15,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2", "vitest": "^2.0.1" }, diff --git a/packages/kit/test/prerendering/options/package.json b/packages/kit/test/prerendering/options/package.json index c579cc38d31d..182c7e58855d 100644 --- a/packages/kit/test/prerendering/options/package.json +++ b/packages/kit/test/prerendering/options/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2", "vitest": "^2.0.1" }, diff --git a/packages/kit/test/prerendering/paths-base/package.json b/packages/kit/test/prerendering/paths-base/package.json index 8dbf0e8f7218..d501d3372620 100644 --- a/packages/kit/test/prerendering/paths-base/package.json +++ b/packages/kit/test/prerendering/paths-base/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.1", "svelte": "^4.2.10", "svelte-check": "^4.0.1", - "typescript": "^5.3.3", + "typescript": "^5.5.4", "vite": "^5.3.2", "vitest": "^2.0.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a33bda6a51ed..0c80878cb9d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -432,10 +432,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -456,10 +456,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -510,10 +510,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -534,10 +534,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -558,10 +558,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -582,10 +582,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -609,10 +609,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -633,10 +633,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -663,10 +663,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -687,10 +687,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -711,10 +711,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -732,10 +732,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -753,10 +753,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -777,10 +777,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -798,10 +798,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -819,10 +819,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -840,10 +840,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -861,10 +861,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -882,10 +882,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -903,10 +903,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -924,10 +924,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -945,10 +945,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -966,10 +966,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -990,10 +990,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -1014,10 +1014,10 @@ importers: version: 4.2.19 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5) + version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) typescript: - specifier: ^5.3.3 - version: 5.4.5 + specifier: ^5.5.4 + version: 5.6.3 vite: specifier: ^5.3.2 version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) @@ -6181,7 +6181,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.4.5): + svelte-check@4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -6189,7 +6189,7 @@ snapshots: picocolors: 1.1.0 sade: 1.8.1 svelte: 4.2.19 - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - picomatch From 10d09425a04709d17d7940a2450298911db92ad0 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 27 Nov 2024 19:46:34 -0800 Subject: [PATCH 427/454] chore: remove unnecessary awaits (#13066) --- .../kit/test/apps/basics/test/cross-platform/client.test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kit/test/apps/basics/test/cross-platform/client.test.js b/packages/kit/test/apps/basics/test/cross-platform/client.test.js index 1b13a6d46e31..2b6da59b9cc2 100644 --- a/packages/kit/test/apps/basics/test/cross-platform/client.test.js +++ b/packages/kit/test/apps/basics/test/cross-platform/client.test.js @@ -633,13 +633,13 @@ test.describe('Prefetching', () => { await page.goto('/routing/hashes/a'); await clicknav('[href="#preload"]'); - await expect(page.url()).toBe(`${baseURL}/routing/hashes/a#preload`); + expect(page.url()).toBe(`${baseURL}/routing/hashes/a#preload`); await clicknav('[href="/routing/hashes/a"]'); - await expect(page.url()).toBe(`${baseURL}/routing/hashes/a`); + expect(page.url()).toBe(`${baseURL}/routing/hashes/a`); await clicknav('[href="#preload"]'); - await expect(page.url()).toBe(`${baseURL}/routing/hashes/a#preload`); + expect(page.url()).toBe(`${baseURL}/routing/hashes/a#preload`); }); test('does not rerun load on calls to duplicate preload hash route', async ({ app, page }) => { From 67dd214863cbc5852eb0e8512efbb7bad5358e8a Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Sat, 30 Nov 2024 01:34:40 +0800 Subject: [PATCH 428/454] fix: transform link[rel] `shortcut icon` and `apple-touch-icon` to be absolute (#13077) closes #10317 This PR builds upon https://github.com/sveltejs/kit/pull/5583/files to include the shortcut icon and apple-touch-icon rel attributes in addition just icon when transforming the asset URL to be absolute. --- .changeset/slow-toes-clap.md | 5 +++++ packages/kit/src/runtime/client/client.js | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .changeset/slow-toes-clap.md diff --git a/.changeset/slow-toes-clap.md b/.changeset/slow-toes-clap.md new file mode 100644 index 000000000000..77838348c450 --- /dev/null +++ b/.changeset/slow-toes-clap.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: transform link[rel='shortcut icon'] and link[rel='apple-touch-icon'] to be absolute to avoid console error when navigating diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 37660a425e65..09618a4b2b9e 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -46,6 +46,8 @@ import { INVALIDATED_PARAM, TRAILING_SLASH_PARAM, validate_depends } from '../sh import { get_message, get_status } from '../../utils/error.js'; import { writable } from 'svelte/store'; +const ICON_REL_ATTRIBUTES = new Set(['icon', 'shortcut icon', 'apple-touch-icon']); + let errored = false; // We track the scroll position associated with each history entry in sessionStorage, @@ -2307,7 +2309,9 @@ function _start_router() { // URLs after a pushState/replaceState, resulting in a 404 — see // https://github.com/sveltejs/kit/issues/3748#issuecomment-1125980897 for (const link of document.querySelectorAll('link')) { - if (link.rel === 'icon') link.href = link.href; // eslint-disable-line + if (ICON_REL_ATTRIBUTES.has(link.rel)) { + link.href = link.href; // eslint-disable-line + } } addEventListener('pageshow', (event) => { From da965d73c212772cfe560ee0fabf5ff124b4ea45 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 29 Nov 2024 10:08:10 -0800 Subject: [PATCH 429/454] chore(deps): update pnpm to v9.14.4 (#13075) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e1cd905dffd9..6801ee9b2c2d 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier-plugin-svelte": "^3.1.2", "typescript-eslint": "^8.0.0" }, - "packageManager": "pnpm@9.14.2", + "packageManager": "pnpm@9.14.4", "engines": { "pnpm": "^9.0.0" } From d030f4bb285e70844d09b3f0c87809bae43014b8 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 29 Nov 2024 10:08:59 -0800 Subject: [PATCH 430/454] feat: support Vite 6 (#12270) --- .changeset/curvy-garlics-walk.md | 8 + .changeset/purple-comics-know.md | 5 + packages/adapter-auto/package.json | 2 +- .../adapter-cloudflare-workers/package.json | 2 +- packages/adapter-cloudflare/package.json | 2 +- packages/adapter-netlify/package.json | 6 +- packages/adapter-node/package.json | 4 +- packages/adapter-static/package.json | 6 +- .../test/apps/prerendered/package.json | 6 +- .../adapter-static/test/apps/spa/package.json | 6 +- packages/adapter-vercel/package.json | 6 +- packages/enhanced-img/package.json | 8 +- packages/kit/package.json | 16 +- packages/kit/src/exports/public.d.ts | 11 +- packages/kit/src/runtime/client/client.js | 2 +- .../kit/src/runtime/server/page/load_data.js | 2 +- .../kit/src/runtime/server/page/render.js | 2 +- packages/kit/test/apps/amp/package.json | 6 +- packages/kit/test/apps/basics/package.json | 6 +- .../basics/test/cross-platform/client.test.js | 40 +- packages/kit/test/apps/dev-only/package.json | 6 +- packages/kit/test/apps/embed/package.json | 6 +- packages/kit/test/apps/no-ssr/package.json | 6 +- packages/kit/test/apps/options-2/package.json | 6 +- packages/kit/test/apps/options/package.json | 6 +- packages/kit/test/apps/writes/package.json | 6 +- .../package.json | 6 +- .../package.json | 6 +- .../package.json | 6 +- .../package.json | 6 +- .../apps/private-dynamic-env/package.json | 6 +- .../package.json | 6 +- .../apps/private-static-env/package.json | 6 +- .../package.json | 6 +- .../apps/server-only-folder/package.json | 6 +- .../package.json | 6 +- .../apps/server-only-module/package.json | 6 +- .../package.json | 6 +- .../service-worker-private-env/package.json | 6 +- .../apps/syntax-error/package.json | 6 +- packages/kit/test/build-errors/package.json | 2 +- .../kit/test/prerendering/basics/package.json | 8 +- .../test/prerendering/options/package.json | 8 +- .../test/prerendering/paths-base/package.json | 8 +- packages/kit/test/utils.d.ts | 3 +- packages/kit/test/utils.js | 30 + packages/kit/types/index.d.ts | 43 +- packages/package/package.json | 4 +- .../javascript/expected/Test.svelte.d.ts | 95 +- .../javascript/expected/Test2.svelte.d.ts | 52 +- .../expected/internal/Test.svelte.d.ts | 52 +- .../resolve-alias/expected/Test.svelte | 12 +- .../resolve-alias/expected/Test.svelte.d.ts | 35 +- .../svelte-3-types/expected/Test.svelte | 2 +- .../svelte-kit/expected/Test.svelte.d.ts | 95 +- .../typescript-esnext/expected/Plain.svelte | 11 +- .../expected/Plain.svelte.d.ts | 52 +- .../typescript-esnext/expected/Test.svelte | 2 +- .../expected/Test.svelte.d.ts | 54 +- .../typescript-esnext/expected/Test2.svelte | 2 +- .../expected/Test2.svelte.d.ts | 37 +- .../typescript-esnext/src/lib/Plain.svelte | 7 +- .../typescript-nodenext/expected/Test.svelte | 2 +- .../expected/Test.svelte.d.ts | 54 +- .../test/watch/expected/Test.svelte.d.ts | 34 +- playgrounds/basic/package.json | 6 +- pnpm-lock.yaml | 1982 +++++++---------- 67 files changed, 1365 insertions(+), 1593 deletions(-) create mode 100644 .changeset/curvy-garlics-walk.md create mode 100644 .changeset/purple-comics-know.md diff --git a/.changeset/curvy-garlics-walk.md b/.changeset/curvy-garlics-walk.md new file mode 100644 index 000000000000..aa68c7585d68 --- /dev/null +++ b/.changeset/curvy-garlics-walk.md @@ -0,0 +1,8 @@ +--- +'@sveltejs/adapter-cloudflare-workers': minor +'@sveltejs/adapter-cloudflare': minor +'@sveltejs/adapter-netlify': minor +'@sveltejs/adapter-vercel': minor +--- + +chore: upgrade esbuild to 0.24.0 diff --git a/.changeset/purple-comics-know.md b/.changeset/purple-comics-know.md new file mode 100644 index 000000000000..9334ee1fdab6 --- /dev/null +++ b/.changeset/purple-comics-know.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': minor +--- + +feat: Vite 6 support diff --git a/packages/adapter-auto/package.json b/packages/adapter-auto/package.json index 2d4016ac220d..ef4fbc3ba707 100644 --- a/packages/adapter-auto/package.json +++ b/packages/adapter-auto/package.json @@ -40,7 +40,7 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "@types/node": "^18.19.48", "typescript": "^5.3.3" }, diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index 3e82abd677d4..6715b2b8adeb 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -40,7 +40,7 @@ "dependencies": { "@cloudflare/workers-types": "^4.20231121.0", "@iarna/toml": "^2.2.5", - "esbuild": "^0.21.5" + "esbuild": "^0.24.0" }, "devDependencies": { "@cloudflare/kv-asset-handler": "^0.3.0", diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index fb99d2887e70..27cc3471295f 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -41,7 +41,7 @@ }, "dependencies": { "@cloudflare/workers-types": "^4.20231121.0", - "esbuild": "^0.21.5", + "esbuild": "^0.24.0", "worktop": "0.8.0-next.18" }, "devDependencies": { diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index 1b92f575e208..f2f87d9d5edf 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -42,7 +42,7 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "esbuild": "^0.21.5", + "esbuild": "^0.24.0", "set-cookie-parser": "^2.6.0" }, "devDependencies": { @@ -51,12 +51,12 @@ "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.3.0", "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "@types/node": "^18.19.48", "@types/set-cookie-parser": "^2.4.7", "rollup": "^4.14.2", "typescript": "^5.3.3", - "vitest": "^2.0.1" + "vitest": "^2.1.6" }, "peerDependencies": { "@sveltejs/kit": "^2.4.0" diff --git a/packages/adapter-node/package.json b/packages/adapter-node/package.json index a7a0357b352b..a5410682c9bd 100644 --- a/packages/adapter-node/package.json +++ b/packages/adapter-node/package.json @@ -43,12 +43,12 @@ "devDependencies": { "@polka/url": "^1.0.0-next.28", "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "@types/node": "^18.19.48", "polka": "^1.0.0-next.28", "sirv": "^3.0.0", "typescript": "^5.3.3", - "vitest": "^2.0.1" + "vitest": "^2.1.6" }, "dependencies": { "@rollup/plugin-commonjs": "^28.0.1", diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index 82d2cad95370..23f53f0746d1 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -41,12 +41,12 @@ "devDependencies": { "@playwright/test": "^1.44.1", "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "@types/node": "^18.19.48", "sirv": "^3.0.0", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "typescript": "^5.3.3", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "peerDependencies": { "@sveltejs/kit": "^2.0.0" diff --git a/packages/adapter-static/test/apps/prerendered/package.json b/packages/adapter-static/test/apps/prerendered/package.json index da2f395ac99d..c040f5a6b7e2 100644 --- a/packages/adapter-static/test/apps/prerendered/package.json +++ b/packages/adapter-static/test/apps/prerendered/package.json @@ -10,10 +10,10 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "sirv-cli": "^3.0.0", - "svelte": "^4.2.10", - "vite": "^5.3.2" + "svelte": "^5.2.9", + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/adapter-static/test/apps/spa/package.json b/packages/adapter-static/test/apps/spa/package.json index 318c10363757..a13507f14424 100644 --- a/packages/adapter-static/test/apps/spa/package.json +++ b/packages/adapter-static/test/apps/spa/package.json @@ -11,10 +11,10 @@ "devDependencies": { "@sveltejs/adapter-node": "workspace:^", "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "sirv-cli": "^3.0.0", - "svelte": "^4.2.10", - "vite": "^5.3.2" + "svelte": "^5.2.9", + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 1a415a47c947..884c460f24e1 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -40,14 +40,14 @@ }, "dependencies": { "@vercel/nft": "^0.27.1", - "esbuild": "^0.21.5" + "esbuild": "^0.24.0" }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "@types/node": "^18.19.48", "typescript": "^5.3.3", - "vitest": "^2.0.1" + "vitest": "^2.1.6" }, "peerDependencies": { "@sveltejs/kit": "^2.4.0" diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 6b475bbf7e4c..4fc2bbc76dcb 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -44,11 +44,11 @@ "devDependencies": { "@types/estree": "^1.0.5", "@types/node": "^18.19.48", - "rollup": "^4.14.2", - "svelte": "^5.1.3", + "rollup": "^4.27.4", + "svelte": "^5.2.9", "typescript": "^5.6.3", - "vite": "^5.3.2", - "vitest": "^2.0.1" + "vite": "^6.0.1", + "vitest": "^2.1.6" }, "peerDependencies": { "svelte": "^5.0.0", diff --git a/packages/kit/package.json b/packages/kit/package.json index fcf5d8bb928c..a0ed5b02bef5 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -21,7 +21,7 @@ "@types/cookie": "^0.6.0", "cookie": "^0.6.0", "devalue": "^5.1.0", - "esm-env": "^1.0.0", + "esm-env": "^1.2.1", "import-meta-resolve": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.5", @@ -33,22 +33,22 @@ }, "devDependencies": { "@playwright/test": "^1.44.1", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "@types/connect": "^3.4.38", "@types/node": "^18.19.48", "@types/set-cookie-parser": "^2.4.7", - "dts-buddy": "^0.5.3", + "dts-buddy": "^0.5.4", "rollup": "^4.14.2", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-preprocess": "^6.0.0", "typescript": "^5.3.3", - "vite": "^5.3.2", - "vitest": "^2.0.1" + "vite": "^6.0.1", + "vitest": "^2.1.6" }, "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1", + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0", "svelte": "^4.0.0 || ^5.0.0-next.0", - "vite": "^5.0.3" + "vite": "^5.0.3 || ^6.0.0" }, "bin": { "svelte-kit": "svelte-kit.js" diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 7db17269967f..84a3f041c322 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -79,11 +79,12 @@ export interface ActionFailure<T extends Record<string, unknown> | undefined = u [uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure } -type UnpackValidationError<T> = T extends ActionFailure<infer X> - ? X - : T extends void - ? undefined // needs to be undefined, because void will corrupt union type - : T; +type UnpackValidationError<T> = + T extends ActionFailure<infer X> + ? X + : T extends void + ? undefined // needs to be undefined, because void will corrupt union type + : T; /** * This object is passed to the `adapt` function of adapters. diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index 09618a4b2b9e..bec38c9122fa 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -972,7 +972,7 @@ async function load_route({ id, invalidating, url, params, route, preload }) { server_data_node: create_data_node( // server_data_node is undefined if it wasn't reloaded from the server; // and if current loader uses server data, we want to reuse previous data. - server_data_node === undefined && loader[0] ? { type: 'skip' } : server_data_node ?? null, + server_data_node === undefined && loader[0] ? { type: 'skip' } : (server_data_node ?? null), loader[0] ? previous?.server : undefined ) }); diff --git a/packages/kit/src/runtime/server/page/load_data.js b/packages/kit/src/runtime/server/page/load_data.js index e2af144654e6..42446393ad83 100644 --- a/packages/kit/src/runtime/server/page/load_data.js +++ b/packages/kit/src/runtime/server/page/load_data.js @@ -244,7 +244,7 @@ export function create_universal_fetch(event, state, fetched, csr, resolve_opts) } } else { // simulate CORS errors and "no access to body in no-cors mode" server-side for consistency with client-side behaviour - const mode = input instanceof Request ? input.mode : init?.mode ?? 'cors'; + const mode = input instanceof Request ? input.mode : (init?.mode ?? 'cors'); if (mode === 'no-cors') { response = new Response('', { status: response.status, diff --git a/packages/kit/src/runtime/server/page/render.js b/packages/kit/src/runtime/server/page/render.js index be44c3c7a860..6197d5ba63c6 100644 --- a/packages/kit/src/runtime/server/page/render.js +++ b/packages/kit/src/runtime/server/page/render.js @@ -79,7 +79,7 @@ export async function render_response({ const form_value = action_result?.type === 'success' || action_result?.type === 'failure' - ? action_result.data ?? null + ? (action_result.data ?? null) : null; /** @type {string} */ diff --git a/packages/kit/test/apps/amp/package.json b/packages/kit/test/apps/amp/package.json index 804403145aae..7a6f03eebcb9 100644 --- a/packages/kit/test/apps/amp/package.json +++ b/packages/kit/test/apps/amp/package.json @@ -14,13 +14,13 @@ "devDependencies": { "@sveltejs/amp": "workspace:^", "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", "dropcss": "^1.0.16", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index 644e52e62a05..fda8f31a4ee2 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -15,12 +15,12 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/apps/basics/test/cross-platform/client.test.js b/packages/kit/test/apps/basics/test/cross-platform/client.test.js index 2b6da59b9cc2..ce0758ea8dea 100644 --- a/packages/kit/test/apps/basics/test/cross-platform/client.test.js +++ b/packages/kit/test/apps/basics/test/cross-platform/client.test.js @@ -283,13 +283,12 @@ test.describe('Scrolling', () => { test('url-supplied non-ascii anchor works on navigation to page after manual scroll', async ({ page, in_view, - clicknav + clicknav, + scroll_to }) => { await page.goto('/anchor'); await clicknav('#non-ascii-anchor'); - await page.evaluate(() => { - window.scrollTo(0, 50); - }); + await scroll_to(0, 50); await page.locator('#non-ascii-anchor').click(); expect(await in_view('#go-to-encöded')).toBe(true); }); @@ -359,7 +358,8 @@ test.describe('Scrolling', () => { test('scroll is restored after hitting the back button for an in-app cross-document navigation', async ({ page, - clicknav + clicknav, + scroll_to }) => { await page.goto('/scroll/cross-document/a'); @@ -368,7 +368,7 @@ test.describe('Scrolling', () => { if (!rect) throw new Error('Could not determine bounding box'); const target_scroll_y = rect.y + rect.height - height; - await page.evaluate((y) => scrollTo(0, y), target_scroll_y); + await scroll_to(0, target_scroll_y); await page.locator('[href="/scroll/cross-document/b"]').click(); expect(await page.textContent('h1')).toBe('b'); @@ -441,7 +441,8 @@ test.describe('Scrolling', () => { test('scroll positions are recovered on reloading the page', async ({ page, app, - browserName + browserName, + scroll_to }) => { // No idea why the workaround below works only in dev mode // A better solution would probably be to set fission.webContentIsolationStrategy: 1 @@ -451,9 +452,9 @@ test.describe('Scrolling', () => { } await page.goto('/anchor'); - await page.evaluate(() => window.scrollTo(0, 1000)); + await scroll_to(0, 1000); await app.goto('/anchor/anchor'); - await page.evaluate(() => window.scrollTo(0, 1000)); + await scroll_to(0, 1000); await page.reload(); if (browserName === 'firefox') { @@ -461,10 +462,11 @@ test.describe('Scrolling', () => { // See https://github.com/microsoft/playwright/issues/22640 await page.goBack(); } - expect(await page.evaluate(() => window.scrollY)).toBe(1000); + await page.waitForFunction(() => window.scrollY === 1000); + const waiter = page.waitForFunction(() => window.scrollY === 1000); await page.goBack(); - expect(await page.evaluate(() => window.scrollY)).toBe(1000); + await waiter; }); test('scroll position is top of page on ssr:false reload', async ({ page }) => { @@ -474,26 +476,32 @@ test.describe('Scrolling', () => { expect(await page.evaluate(() => window.scrollY)).toBe(0); }); - test('clicking # or #top takes you to the top of the current page', async ({ page }) => { + test('clicking # or #top takes you to the top of the current page', async ({ + page, + scroll_to + }) => { await page.goto('/scroll/top'); for (const href of ['#', '#top']) { - await page.evaluate(() => window.scrollTo(0, 1000)); + await scroll_to(0, 1000); await page.click(`a[href="${href}"]`); expect(await page.evaluate(() => window.scrollY)).toBe(0); - await page.evaluate(() => window.scrollTo(0, 1000)); + await scroll_to(0, 1000); await page.click(`a[href="${href}"]`); expect(await page.evaluate(() => window.scrollY)).toBe(0); } }); - test('Scroll position is correct after going back from a shallow route', async ({ page }) => { + test('Scroll position is correct after going back from a shallow route', async ({ + page, + scroll_to + }) => { await page.goto('/scroll/push-state'); await page.locator('#subpage-link').click(); await page.locator('#back-button').click(); - await page.evaluate(() => window.scrollTo(0, 9999)); + await scroll_to(0, 9999); const scroll = await page.evaluate(() => window.scrollY); expect(scroll).toBeGreaterThan(0); diff --git a/packages/kit/test/apps/dev-only/package.json b/packages/kit/test/apps/dev-only/package.json index 48a7f63ef7e3..d2bef02977a2 100644 --- a/packages/kit/test/apps/dev-only/package.json +++ b/packages/kit/test/apps/dev-only/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", "e2e-test-dep-error": "file:./_test_dependencies/cjs-only", "e2e-test-dep-hooks": "file:./_test_dependencies/cjs-only", @@ -23,10 +23,10 @@ "e2e-test-dep-page-svelte": "file:./_test_dependencies/cjs-only", "e2e-test-dep-page-universal": "file:./_test_dependencies/cjs-only", "e2e-test-dep-server": "file:./_test_dependencies/cjs-only", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/apps/embed/package.json b/packages/kit/test/apps/embed/package.json index a552ae5b9af6..680dfe2235f6 100644 --- a/packages/kit/test/apps/embed/package.json +++ b/packages/kit/test/apps/embed/package.json @@ -13,12 +13,12 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/apps/no-ssr/package.json b/packages/kit/test/apps/no-ssr/package.json index e91c96955eef..4cc3a5c14f15 100644 --- a/packages/kit/test/apps/no-ssr/package.json +++ b/packages/kit/test/apps/no-ssr/package.json @@ -13,12 +13,12 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/apps/options-2/package.json b/packages/kit/test/apps/options-2/package.json index b6853c3ff978..623d6cd62285 100644 --- a/packages/kit/test/apps/options-2/package.json +++ b/packages/kit/test/apps/options-2/package.json @@ -14,12 +14,12 @@ "devDependencies": { "@sveltejs/adapter-node": "workspace:^", "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/apps/options/package.json b/packages/kit/test/apps/options/package.json index 2d13c0c82cce..96d2a80b24fa 100644 --- a/packages/kit/test/apps/options/package.json +++ b/packages/kit/test/apps/options/package.json @@ -13,12 +13,12 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/apps/writes/package.json b/packages/kit/test/apps/writes/package.json index 1e699e60a736..fb7f7f684c78 100644 --- a/packages/kit/test/apps/writes/package.json +++ b/packages/kit/test/apps/writes/package.json @@ -13,12 +13,12 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json index 2388c4bee763..0dbfaafe1eb4 100644 --- a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json +++ b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json @@ -11,11 +11,11 @@ "devDependencies": { "@sveltejs/adapter-auto": "workspace:^", "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json index 2388c4bee763..0dbfaafe1eb4 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json @@ -11,11 +11,11 @@ "devDependencies": { "@sveltejs/adapter-auto": "workspace:^", "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json index 3a68c0d05832..8797667db0c7 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json @@ -11,11 +11,11 @@ "devDependencies": { "@sveltejs/adapter-auto": "workspace:^", "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json index eaeb97a03561..1fa4ba71aa7c 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json @@ -11,11 +11,11 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json index caae5316af01..9195222826b2 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json @@ -11,11 +11,11 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json index 41167a62cfdb..eb04f276dffa 100644 --- a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json @@ -11,11 +11,11 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/private-static-env/package.json b/packages/kit/test/build-errors/apps/private-static-env/package.json index 64b2995ad026..fd63031f7d86 100644 --- a/packages/kit/test/build-errors/apps/private-static-env/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env/package.json @@ -11,12 +11,12 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json index d846ef1fe053..92bbc16f021b 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json @@ -11,11 +11,11 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-folder/package.json b/packages/kit/test/build-errors/apps/server-only-folder/package.json index 5fc1c187f609..e599b0fd8b7d 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder/package.json @@ -11,11 +11,11 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json index ed531ea11636..977fb6d29bca 100644 --- a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json @@ -11,11 +11,11 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/server-only-module/package.json b/packages/kit/test/build-errors/apps/server-only-module/package.json index 7605391aefdf..2229d146edaa 100644 --- a/packages/kit/test/build-errors/apps/server-only-module/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module/package.json @@ -11,11 +11,11 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json index ab5338950f09..d70025311be1 100644 --- a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json @@ -11,11 +11,11 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json index e49775aa5e9a..c58e53b08db5 100644 --- a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json @@ -11,11 +11,11 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/apps/syntax-error/package.json b/packages/kit/test/build-errors/apps/syntax-error/package.json index f199b59239f9..819dcb848a2b 100644 --- a/packages/kit/test/build-errors/apps/syntax-error/package.json +++ b/packages/kit/test/build-errors/apps/syntax-error/package.json @@ -9,11 +9,11 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2" + "vite": "^6.0.1" }, "type": "module" } diff --git a/packages/kit/test/build-errors/package.json b/packages/kit/test/build-errors/package.json index 50c386bfeabd..1a10dab30e56 100644 --- a/packages/kit/test/build-errors/package.json +++ b/packages/kit/test/build-errors/package.json @@ -8,6 +8,6 @@ }, "type": "module", "devDependencies": { - "vitest": "^2.0.1" + "vitest": "^2.1.6" } } diff --git a/packages/kit/test/prerendering/basics/package.json b/packages/kit/test/prerendering/basics/package.json index fb0ce874382e..6ef2d6bda23f 100644 --- a/packages/kit/test/prerendering/basics/package.json +++ b/packages/kit/test/prerendering/basics/package.json @@ -12,12 +12,12 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2", - "vitest": "^2.0.1" + "vite": "^6.0.1", + "vitest": "^2.1.6" }, "type": "module" } diff --git a/packages/kit/test/prerendering/options/package.json b/packages/kit/test/prerendering/options/package.json index 182c7e58855d..0adfad3a14c2 100644 --- a/packages/kit/test/prerendering/options/package.json +++ b/packages/kit/test/prerendering/options/package.json @@ -11,12 +11,12 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2", - "vitest": "^2.0.1" + "vite": "^6.0.1", + "vitest": "^2.1.6" }, "type": "module" } diff --git a/packages/kit/test/prerendering/paths-base/package.json b/packages/kit/test/prerendering/paths-base/package.json index d501d3372620..960a2b2dd33e 100644 --- a/packages/kit/test/prerendering/paths-base/package.json +++ b/packages/kit/test/prerendering/paths-base/package.json @@ -11,12 +11,12 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "@sveltejs/vite-plugin-svelte": "^3.0.1", - "svelte": "^4.2.10", + "@sveltejs/vite-plugin-svelte": "^5.0.1", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.4", - "vite": "^5.3.2", - "vitest": "^2.0.1" + "vite": "^6.0.1", + "vitest": "^2.1.6" }, "type": "module" } diff --git a/packages/kit/test/utils.d.ts b/packages/kit/test/utils.d.ts index 2477beb87ae0..7992ee76c493 100644 --- a/packages/kit/test/utils.d.ts +++ b/packages/kit/test/utils.d.ts @@ -7,7 +7,7 @@ import { TestType, Page } from '@playwright/test'; -import { IncomingMessage, ServerResponse } from 'http'; +import { IncomingMessage, ServerResponse } from 'node:http'; import { Plugin } from 'vite'; export const test: TestType< @@ -22,6 +22,7 @@ export const test: TestType< preloadData(url: string): Promise<void>; }; clicknav(selector: string, options?: Parameters<Page['waitForNavigation']>[0]): Promise<void>; + scroll_to(x: number, y: number): Promise<void>; in_view(selector: string): Promise<boolean>; get_computed_style(selector: string, prop: string): Promise<string>; /** diff --git a/packages/kit/test/utils.js b/packages/kit/test/utils.js index 7ddbf3709361..cf03a52ab718 100644 --- a/packages/kit/test/utils.js +++ b/packages/kit/test/utils.js @@ -70,6 +70,36 @@ export const test = base.extend({ await use(clicknav); }, + scroll_to: async ({ page }, use) => { + /** + * @param {number} x + * @param {number} y + */ + async function scroll_to(x, y) { + // The browser will do this for us, but we need to do it pre-emptively + // so that we can check the scroll location. + // Otherwise, we'd be checking a decimal number against an integer. + x = Math.trunc(x); + y = Math.trunc(y); + const watcher = page.waitForFunction( + /** @param {{ x: number, y: number }} opt */ (opt) => + // check if the scroll position reached the desired or maximum position + window.scrollX === + Math.min(opt.x, document.documentElement.offsetWidth - window.innerWidth) && + window.scrollY === + Math.min(opt.y, document.documentElement.offsetHeight - window.innerHeight), + { x, y } + ); + await page.evaluate( + /** @param {{ x: number, y: number }} opt */ (opt) => window.scrollTo(opt.x, opt.y), + { x, y } + ); + await watcher; + } + + await use(scroll_to); + }, + in_view: async ({ page }, use) => { /** @param {string} selector */ async function in_view(selector) { diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 237b3e3ff57e..63fdcb004bf3 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -61,11 +61,12 @@ declare module '@sveltejs/kit' { [uniqueSymbol]: true; // necessary or else UnpackValidationError could wrongly unpack objects with the same shape as ActionFailure } - type UnpackValidationError<T> = T extends ActionFailure<infer X> - ? X - : T extends void - ? undefined // needs to be undefined, because void will corrupt union type - : T; + type UnpackValidationError<T> = + T extends ActionFailure<infer X> + ? X + : T extends void + ? undefined // needs to be undefined, because void will corrupt union type + : T; /** * This object is passed to the `adapt` function of adapters. @@ -1786,9 +1787,9 @@ declare module '@sveltejs/kit' { * Checks whether this is an error thrown by {@link error}. * @param status The status to filter for. * */ - export function isHttpError<T extends number>(e: unknown, status?: T | undefined): e is HttpError_1 & { + export function isHttpError<T extends number>(e: unknown, status?: T | undefined): e is (HttpError_1 & { status: T extends undefined ? never : T; - }; + }); /** * Redirect a request. When called during request handling, SvelteKit will return a redirect response. * Make sure you're not catching the thrown redirect, which would prevent SvelteKit from handling it. @@ -1830,8 +1831,8 @@ declare module '@sveltejs/kit' { * Checks whether this is an action failure thrown by {@link fail}. * @param e The object to check. * */ - export function isActionFailure(e: unknown): e is ActionFailure<undefined>; - export type LessThan<TNumber extends number, TArray extends any[] = []> = TNumber extends TArray['length'] ? TArray[number] : LessThan<TNumber, [...TArray, TArray['length']]>; + export function isActionFailure(e: unknown): e is ActionFailure; + export type LessThan<TNumber extends number, TArray extends any[] = []> = TNumber extends TArray["length"] ? TArray[number] : LessThan<TNumber, [...TArray, TArray["length"]]>; export type NumericRange<TStart extends number, TEnd extends number> = Exclude<TEnd | LessThan<TEnd>, LessThan<TStart>>; export const VERSION: string; class HttpError_1 { @@ -1924,19 +1925,19 @@ declare module '@sveltejs/kit/hooks' { * * @param handlers The chain of `handle` functions * */ - export function sequence(...handlers: import('@sveltejs/kit').Handle[]): import('@sveltejs/kit').Handle; + export function sequence(...handlers: import("@sveltejs/kit").Handle[]): import("@sveltejs/kit").Handle; export {}; } declare module '@sveltejs/kit/node' { export function getRequest({ request, base, bodySizeLimit }: { - request: import('http').IncomingMessage; + request: import("http").IncomingMessage; base: string; bodySizeLimit?: number; }): Promise<Request>; - export function setResponse(res: import('http').ServerResponse, response: Response): Promise<void>; + export function setResponse(res: import("http").ServerResponse, response: Response): Promise<void>; /** * Converts a file on disk to a readable stream * @since 2.4.0 @@ -1961,7 +1962,7 @@ declare module '@sveltejs/kit/vite' { /** * Returns the SvelteKit Vite plugins. * */ - export function sveltekit(): Promise<import('vite').Plugin[]>; + export function sveltekit(): Promise<import("vite").Plugin[]>; export {}; } @@ -2048,7 +2049,7 @@ declare module '$app/navigation' { * * `afterNavigate` must be called during a component initialization. It remains active as long as the component is mounted. * */ - export function afterNavigate(callback: (navigation: import('@sveltejs/kit').AfterNavigate) => void): void; + export function afterNavigate(callback: (navigation: import("@sveltejs/kit").AfterNavigate) => void): void; /** * A navigation interceptor that triggers before we navigate to a new URL, whether by clicking a link, calling `goto(...)`, or using the browser back/forward controls. * @@ -2060,7 +2061,7 @@ declare module '$app/navigation' { * * `beforeNavigate` must be called during a component initialization. It remains active as long as the component is mounted. * */ - export function beforeNavigate(callback: (navigation: import('@sveltejs/kit').BeforeNavigate) => void): void; + export function beforeNavigate(callback: (navigation: import("@sveltejs/kit").BeforeNavigate) => void): void; /** * A lifecycle function that runs the supplied `callback` immediately before we navigate to a new URL except during full-page navigations. * @@ -2070,7 +2071,7 @@ declare module '$app/navigation' { * * `onNavigate` must be called during a component initialization. It remains active as long as the component is mounted. * */ - export function onNavigate(callback: (navigation: import('@sveltejs/kit').OnNavigate) => MaybePromise<(() => void) | void>): void; + export function onNavigate(callback: (navigation: import("@sveltejs/kit").OnNavigate) => MaybePromise<(() => void) | void>): void; /** * If called when the page is being updated following a navigation (in `onMount` or `afterNavigate` or an action, for example), this disables SvelteKit's built-in scroll handling. * This is generally discouraged, since it breaks user expectations. @@ -2124,11 +2125,11 @@ declare module '$app/navigation' { * @param href Page to preload * */ export function preloadData(href: string): Promise<{ - type: 'loaded'; + type: "loaded"; status: number; data: Record<string, any>; } | { - type: 'redirect'; + type: "redirect"; location: string; }>; /** @@ -2225,7 +2226,7 @@ declare module '$app/stores' { * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time. * * */ - export const page: import('svelte/store').Readable<import('@sveltejs/kit').Page>; + export const page: import("svelte/store").Readable<import("@sveltejs/kit").Page>; /** * A readable store. * When navigating starts, its value is a `Navigation` object with `from`, `to`, `type` and (if `type === 'popstate'`) `delta` properties. @@ -2233,13 +2234,13 @@ declare module '$app/stores' { * * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time. * */ - export const navigating: import('svelte/store').Readable<import('@sveltejs/kit').Navigation | null>; + export const navigating: import("svelte/store").Readable<import("@sveltejs/kit").Navigation | null>; /** * A readable store whose initial value is `false`. If [`version.pollInterval`](https://svelte.dev/docs/kit/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling. * * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time. * */ - export const updated: import('svelte/store').Readable<boolean> & { + export const updated: import("svelte/store").Readable<boolean> & { check(): Promise<boolean>; }; diff --git a/packages/package/package.json b/packages/package/package.json index d5369848ccf5..1ab629b29654 100644 --- a/packages/package/package.json +++ b/packages/package/package.json @@ -27,11 +27,11 @@ "svelte2tsx": "~0.7.16" }, "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "@types/node": "^18.19.48", "@types/semver": "^7.5.6", "prettier": "^3.1.1", - "svelte": "^4.2.10", + "svelte": "^5.2.9", "svelte-preprocess": "^6.0.0", "typescript": "^5.3.3", "uvu": "^0.5.6" diff --git a/packages/package/test/fixtures/javascript/expected/Test.svelte.d.ts b/packages/package/test/fixtures/javascript/expected/Test.svelte.d.ts index 674fa1a2ab93..4d8d06cf9ae1 100644 --- a/packages/package/test/fixtures/javascript/expected/Test.svelte.d.ts +++ b/packages/package/test/fixtures/javascript/expected/Test.svelte.d.ts @@ -1,42 +1,55 @@ -/** @typedef {typeof __propDef.props} TestProps */ -/** @typedef {typeof __propDef.events} TestEvents */ -/** @typedef {typeof __propDef.slots} TestSlots */ -export default class Test extends SvelteComponent< - { - astring?: string; - }, - { - event: CustomEvent<any>; - } & { - [evt: string]: CustomEvent<any>; - }, - { - default: { - astring: string; - }; - } -> { - get astring(): string; -} -export type TestProps = typeof __propDef.props; -export type TestEvents = typeof __propDef.events; -export type TestSlots = typeof __propDef.slots; -import { SvelteComponent } from 'svelte'; -declare const __propDef: { - props: { - astring?: string; - }; - events: { - event: CustomEvent<any>; - } & { - [evt: string]: CustomEvent<any>; - }; - slots: { - default: { - astring: string; - }; - }; - exports?: {}; - bindings?: string; +export default Test; +type Test = SvelteComponent<$$__sveltets_2_PropsWithChildren<{ + astring?: string; +}, { + default: { + astring: string; + }; +}>, { + event: CustomEvent<any>; +} & { + [evt: string]: CustomEvent<any>; +}, { + default: { + astring: string; + }; +}> & { + $$bindings?: string; +} & { + astring: string; }; -export {}; +declare const Test: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{ + astring?: string; +}, { + default: { + astring: string; + }; +}>, { + event: CustomEvent<any>; +} & { + [evt: string]: CustomEvent<any>; +}, { + default: { + astring: string; + }; +}, { + astring: string; +}, string>; +type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends { + default: any; +} ? Props extends Record<string, never> ? any : { + children?: any; +} : {}); +interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { + new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & { + $$bindings?: Bindings; + } & Exports; + (internal: unknown, props: Props & { + $$events?: Events; + $$slots?: Slots; + }): Exports & { + $set?: any; + $on?: any; + }; + z_$$bindings?: Bindings; +} diff --git a/packages/package/test/fixtures/javascript/expected/Test2.svelte.d.ts b/packages/package/test/fixtures/javascript/expected/Test2.svelte.d.ts index b01420475cf3..0774e4032afb 100644 --- a/packages/package/test/fixtures/javascript/expected/Test2.svelte.d.ts +++ b/packages/package/test/fixtures/javascript/expected/Test2.svelte.d.ts @@ -1,28 +1,26 @@ -/** @typedef {typeof __propDef.props} Test2Props */ -/** @typedef {typeof __propDef.events} Test2Events */ -/** @typedef {typeof __propDef.slots} Test2Slots */ -export default class Test2 extends SvelteComponent< - { - foo: boolean; - }, - { - [evt: string]: CustomEvent<any>; - }, - {} -> {} -export type Test2Props = typeof __propDef.props; -export type Test2Events = typeof __propDef.events; -export type Test2Slots = typeof __propDef.slots; -import { SvelteComponent } from 'svelte'; -declare const __propDef: { - props: { - foo: import('./foo').Foo; - }; - events: { - [evt: string]: CustomEvent<any>; - }; - slots: {}; - exports?: {}; - bindings?: string; +export default Test2; +type Test2 = SvelteComponent<{ + foo: boolean; +}, { + [evt: string]: CustomEvent<any>; +}, {}> & { + $$bindings?: string; }; -export {}; +declare const Test2: $$__sveltets_2_IsomorphicComponent<{ + foo: import("./foo").Foo; +}, { + [evt: string]: CustomEvent<any>; +}, {}, {}, string>; +interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { + new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & { + $$bindings?: Bindings; + } & Exports; + (internal: unknown, props: Props & { + $$events?: Events; + $$slots?: Slots; + }): Exports & { + $set?: any; + $on?: any; + }; + z_$$bindings?: Bindings; +} diff --git a/packages/package/test/fixtures/javascript/expected/internal/Test.svelte.d.ts b/packages/package/test/fixtures/javascript/expected/internal/Test.svelte.d.ts index 406a883fc969..1c3abfd7fb6e 100644 --- a/packages/package/test/fixtures/javascript/expected/internal/Test.svelte.d.ts +++ b/packages/package/test/fixtures/javascript/expected/internal/Test.svelte.d.ts @@ -1,28 +1,26 @@ -/** @typedef {typeof __propDef.props} TestProps */ -/** @typedef {typeof __propDef.events} TestEvents */ -/** @typedef {typeof __propDef.slots} TestSlots */ -export default class Test extends SvelteComponent< - { - foo: boolean; - }, - { - [evt: string]: CustomEvent<any>; - }, - {} -> {} -export type TestProps = typeof __propDef.props; -export type TestEvents = typeof __propDef.events; -export type TestSlots = typeof __propDef.slots; -import { SvelteComponent } from 'svelte'; -declare const __propDef: { - props: { - foo: import('./foo').Foo; - }; - events: { - [evt: string]: CustomEvent<any>; - }; - slots: {}; - exports?: {}; - bindings?: string; +export default Test; +type Test = SvelteComponent<{ + foo: boolean; +}, { + [evt: string]: CustomEvent<any>; +}, {}> & { + $$bindings?: string; }; -export {}; +declare const Test: $$__sveltets_2_IsomorphicComponent<{ + foo: import("./foo").Foo; +}, { + [evt: string]: CustomEvent<any>; +}, {}, {}, string>; +interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { + new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & { + $$bindings?: Bindings; + } & Exports; + (internal: unknown, props: Props & { + $$events?: Events; + $$slots?: Slots; + }): Exports & { + $set?: any; + $on?: any; + }; + z_$$bindings?: Bindings; +} diff --git a/packages/package/test/fixtures/resolve-alias/expected/Test.svelte b/packages/package/test/fixtures/resolve-alias/expected/Test.svelte index d6dbdc91b465..e1ffec195b89 100644 --- a/packages/package/test/fixtures/resolve-alias/expected/Test.svelte +++ b/packages/package/test/fixtures/resolve-alias/expected/Test.svelte @@ -1,6 +1,8 @@ -<script> - import { foo } from './sub/foo'; - import { util } from './utils'; - export let bar = foo; - util(); +<script lang="ts"> + import { foo } from './sub/foo'; + import { util } from './utils'; + + export let bar = foo; + + util(); </script> diff --git a/packages/package/test/fixtures/resolve-alias/expected/Test.svelte.d.ts b/packages/package/test/fixtures/resolve-alias/expected/Test.svelte.d.ts index 66031c66a487..f2b4fd180e4a 100644 --- a/packages/package/test/fixtures/resolve-alias/expected/Test.svelte.d.ts +++ b/packages/package/test/fixtures/resolve-alias/expected/Test.svelte.d.ts @@ -1,17 +1,20 @@ -import { SvelteComponent } from 'svelte'; -declare const __propDef: { - props: { - bar?: import('./sub/foo').Foo; +interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { + new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & { + $$bindings?: Bindings; + } & Exports; + (internal: unknown, props: Props & { + $$events?: Events; + $$slots?: Slots; + }): Exports & { + $set?: any; + $on?: any; }; - events: { - [evt: string]: CustomEvent<any>; - }; - slots: {}; - exports?: {}; - bindings?: string; -}; -export type TestProps = typeof __propDef.props; -export type TestEvents = typeof __propDef.events; -export type TestSlots = typeof __propDef.slots; -export default class Test extends SvelteComponent<TestProps, TestEvents, TestSlots> {} -export {}; + z_$$bindings?: Bindings; +} +declare const Test: $$__sveltets_2_IsomorphicComponent<{ + bar?: import("./sub/foo").Foo; +}, { + [evt: string]: CustomEvent<any>; +}, {}, {}, string>; +type Test = InstanceType<typeof Test>; +export default Test; diff --git a/packages/package/test/fixtures/svelte-3-types/expected/Test.svelte b/packages/package/test/fixtures/svelte-3-types/expected/Test.svelte index 661b1b8276b0..7613c3ebf28b 100644 --- a/packages/package/test/fixtures/svelte-3-types/expected/Test.svelte +++ b/packages/package/test/fixtures/svelte-3-types/expected/Test.svelte @@ -1,4 +1,4 @@ -<script> +<script lang="ts"> import { createEventDispatcher } from 'svelte'; export const astring = 'potato'; const dispatch = createEventDispatcher(); diff --git a/packages/package/test/fixtures/svelte-kit/expected/Test.svelte.d.ts b/packages/package/test/fixtures/svelte-kit/expected/Test.svelte.d.ts index 674fa1a2ab93..4d8d06cf9ae1 100644 --- a/packages/package/test/fixtures/svelte-kit/expected/Test.svelte.d.ts +++ b/packages/package/test/fixtures/svelte-kit/expected/Test.svelte.d.ts @@ -1,42 +1,55 @@ -/** @typedef {typeof __propDef.props} TestProps */ -/** @typedef {typeof __propDef.events} TestEvents */ -/** @typedef {typeof __propDef.slots} TestSlots */ -export default class Test extends SvelteComponent< - { - astring?: string; - }, - { - event: CustomEvent<any>; - } & { - [evt: string]: CustomEvent<any>; - }, - { - default: { - astring: string; - }; - } -> { - get astring(): string; -} -export type TestProps = typeof __propDef.props; -export type TestEvents = typeof __propDef.events; -export type TestSlots = typeof __propDef.slots; -import { SvelteComponent } from 'svelte'; -declare const __propDef: { - props: { - astring?: string; - }; - events: { - event: CustomEvent<any>; - } & { - [evt: string]: CustomEvent<any>; - }; - slots: { - default: { - astring: string; - }; - }; - exports?: {}; - bindings?: string; +export default Test; +type Test = SvelteComponent<$$__sveltets_2_PropsWithChildren<{ + astring?: string; +}, { + default: { + astring: string; + }; +}>, { + event: CustomEvent<any>; +} & { + [evt: string]: CustomEvent<any>; +}, { + default: { + astring: string; + }; +}> & { + $$bindings?: string; +} & { + astring: string; }; -export {}; +declare const Test: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{ + astring?: string; +}, { + default: { + astring: string; + }; +}>, { + event: CustomEvent<any>; +} & { + [evt: string]: CustomEvent<any>; +}, { + default: { + astring: string; + }; +}, { + astring: string; +}, string>; +type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends { + default: any; +} ? Props extends Record<string, never> ? any : { + children?: any; +} : {}); +interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { + new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & { + $$bindings?: Bindings; + } & Exports; + (internal: unknown, props: Props & { + $$events?: Events; + $$slots?: Slots; + }): Exports & { + $set?: any; + $on?: any; + }; + z_$$bindings?: Bindings; +} diff --git a/packages/package/test/fixtures/typescript-esnext/expected/Plain.svelte b/packages/package/test/fixtures/typescript-esnext/expected/Plain.svelte index 29329add3320..f46e78994ae5 100644 --- a/packages/package/test/fixtures/typescript-esnext/expected/Plain.svelte +++ b/packages/package/test/fixtures/typescript-esnext/expected/Plain.svelte @@ -4,5 +4,14 @@ </script> <svelte:head> - <script type="application/ld+json">{JSON.stringify(jsonLd)}</script> + <script type="application/ld+json"> + { + "@context": "http://schema.org", + "@type": "Corporation", + "name": "Svelte Corp", + "description": "Svelte will cybernetically enhance you", + "naics": "523910", + "url": "https://svelte.dev" + } + </script> </svelte:head> diff --git a/packages/package/test/fixtures/typescript-esnext/expected/Plain.svelte.d.ts b/packages/package/test/fixtures/typescript-esnext/expected/Plain.svelte.d.ts index 5da27ce522c5..e2632ad81c35 100644 --- a/packages/package/test/fixtures/typescript-esnext/expected/Plain.svelte.d.ts +++ b/packages/package/test/fixtures/typescript-esnext/expected/Plain.svelte.d.ts @@ -1,28 +1,26 @@ -/** @typedef {typeof __propDef.props} PlainProps */ -/** @typedef {typeof __propDef.events} PlainEvents */ -/** @typedef {typeof __propDef.slots} PlainSlots */ -export default class Plain extends SvelteComponent< - { - foo: boolean; - }, - { - [evt: string]: CustomEvent<any>; - }, - {} -> {} -export type PlainProps = typeof __propDef.props; -export type PlainEvents = typeof __propDef.events; -export type PlainSlots = typeof __propDef.slots; -import { SvelteComponent } from 'svelte'; -declare const __propDef: { - props: { - foo: import('./foo').Foo; - }; - events: { - [evt: string]: CustomEvent<any>; - }; - slots: {}; - exports?: {}; - bindings?: string; +export default Plain; +type Plain = SvelteComponent<{ + foo: boolean; +}, { + [evt: string]: CustomEvent<any>; +}, {}> & { + $$bindings?: string; }; -export {}; +declare const Plain: $$__sveltets_2_IsomorphicComponent<{ + foo: import("./foo").Foo; +}, { + [evt: string]: CustomEvent<any>; +}, {}, {}, string>; +interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { + new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & { + $$bindings?: Bindings; + } & Exports; + (internal: unknown, props: Props & { + $$events?: Events; + $$slots?: Slots; + }): Exports & { + $set?: any; + $on?: any; + }; + z_$$bindings?: Bindings; +} diff --git a/packages/package/test/fixtures/typescript-esnext/expected/Test.svelte b/packages/package/test/fixtures/typescript-esnext/expected/Test.svelte index 661b1b8276b0..7613c3ebf28b 100644 --- a/packages/package/test/fixtures/typescript-esnext/expected/Test.svelte +++ b/packages/package/test/fixtures/typescript-esnext/expected/Test.svelte @@ -1,4 +1,4 @@ -<script> +<script lang="ts"> import { createEventDispatcher } from 'svelte'; export const astring = 'potato'; const dispatch = createEventDispatcher(); diff --git a/packages/package/test/fixtures/typescript-esnext/expected/Test.svelte.d.ts b/packages/package/test/fixtures/typescript-esnext/expected/Test.svelte.d.ts index 5ed842ee8097..f5601c7243ed 100644 --- a/packages/package/test/fixtures/typescript-esnext/expected/Test.svelte.d.ts +++ b/packages/package/test/fixtures/typescript-esnext/expected/Test.svelte.d.ts @@ -1,25 +1,37 @@ -import { SvelteComponent } from 'svelte'; -declare const __propDef: { - props: { - astring?: string; +interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { + new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & { + $$bindings?: Bindings; + } & Exports; + (internal: unknown, props: Props & { + $$events?: Events; + $$slots?: Slots; + }): Exports & { + $set?: any; + $on?: any; }; - events: { - event: CustomEvent<boolean>; - } & { - [evt: string]: CustomEvent<any>; + z_$$bindings?: Bindings; +} +type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends { + default: any; +} ? Props extends Record<string, never> ? any : { + children?: any; +} : {}); +declare const Test: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{ + astring?: string; +}, { + default: { + astring: string; }; - slots: { - default: { +}>, { + event: CustomEvent<boolean>; +} & { + [evt: string]: CustomEvent<any>; +}, { + default: { astring: string; - }; }; - exports?: {}; - bindings?: string; -}; -export type TestProps = typeof __propDef.props; -export type TestEvents = typeof __propDef.events; -export type TestSlots = typeof __propDef.slots; -export default class Test extends SvelteComponent<TestProps, TestEvents, TestSlots> { - get astring(): string; -} -export {}; +}, { + astring: string; +}, string>; +type Test = InstanceType<typeof Test>; +export default Test; diff --git a/packages/package/test/fixtures/typescript-esnext/expected/Test2.svelte b/packages/package/test/fixtures/typescript-esnext/expected/Test2.svelte index 8754c5335039..497284d14e32 100644 --- a/packages/package/test/fixtures/typescript-esnext/expected/Test2.svelte +++ b/packages/package/test/fixtures/typescript-esnext/expected/Test2.svelte @@ -1,3 +1,3 @@ -<script> +<script lang="ts"> export let foo; </script> diff --git a/packages/package/test/fixtures/typescript-esnext/expected/Test2.svelte.d.ts b/packages/package/test/fixtures/typescript-esnext/expected/Test2.svelte.d.ts index d47a70a6e3f6..c8d660dcb43f 100644 --- a/packages/package/test/fixtures/typescript-esnext/expected/Test2.svelte.d.ts +++ b/packages/package/test/fixtures/typescript-esnext/expected/Test2.svelte.d.ts @@ -1,18 +1,21 @@ -import { SvelteComponent } from 'svelte'; import type { Foo } from './foo'; -declare const __propDef: { - props: { - foo: Foo; - }; - events: { - [evt: string]: CustomEvent<any>; - }; - slots: {}; - exports?: {}; - bindings?: string; -}; -export type Test2Props = typeof __propDef.props; -export type Test2Events = typeof __propDef.events; -export type Test2Slots = typeof __propDef.slots; -export default class Test2 extends SvelteComponent<Test2Props, Test2Events, Test2Slots> {} -export {}; +interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { + new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & { + $$bindings?: Bindings; + } & Exports; + (internal: unknown, props: Props & { + $$events?: Events; + $$slots?: Slots; + }): Exports & { + $set?: any; + $on?: any; + }; + z_$$bindings?: Bindings; +} +declare const Test2: $$__sveltets_2_IsomorphicComponent<{ + foo: Foo; +}, { + [evt: string]: CustomEvent<any>; +}, {}, {}, string>; +type Test2 = InstanceType<typeof Test2>; +export default Test2; diff --git a/packages/package/test/fixtures/typescript-esnext/src/lib/Plain.svelte b/packages/package/test/fixtures/typescript-esnext/src/lib/Plain.svelte index 1e058c33318f..dea0160a9343 100644 --- a/packages/package/test/fixtures/typescript-esnext/src/lib/Plain.svelte +++ b/packages/package/test/fixtures/typescript-esnext/src/lib/Plain.svelte @@ -6,7 +6,12 @@ <svelte:head> <script type="application/ld+json"> { - JSON.stringify(jsonLd); + "@context": "http://schema.org", + "@type": "Corporation", + "name": "Svelte Corp", + "description": "Svelte will cybernetically enhance you", + "naics": "523910", + "url": "https://svelte.dev" } </script> </svelte:head> diff --git a/packages/package/test/fixtures/typescript-nodenext/expected/Test.svelte b/packages/package/test/fixtures/typescript-nodenext/expected/Test.svelte index 661b1b8276b0..7613c3ebf28b 100644 --- a/packages/package/test/fixtures/typescript-nodenext/expected/Test.svelte +++ b/packages/package/test/fixtures/typescript-nodenext/expected/Test.svelte @@ -1,4 +1,4 @@ -<script> +<script lang="ts"> import { createEventDispatcher } from 'svelte'; export const astring = 'potato'; const dispatch = createEventDispatcher(); diff --git a/packages/package/test/fixtures/typescript-nodenext/expected/Test.svelte.d.ts b/packages/package/test/fixtures/typescript-nodenext/expected/Test.svelte.d.ts index 5ed842ee8097..f5601c7243ed 100644 --- a/packages/package/test/fixtures/typescript-nodenext/expected/Test.svelte.d.ts +++ b/packages/package/test/fixtures/typescript-nodenext/expected/Test.svelte.d.ts @@ -1,25 +1,37 @@ -import { SvelteComponent } from 'svelte'; -declare const __propDef: { - props: { - astring?: string; +interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { + new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & { + $$bindings?: Bindings; + } & Exports; + (internal: unknown, props: Props & { + $$events?: Events; + $$slots?: Slots; + }): Exports & { + $set?: any; + $on?: any; }; - events: { - event: CustomEvent<boolean>; - } & { - [evt: string]: CustomEvent<any>; + z_$$bindings?: Bindings; +} +type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends { + default: any; +} ? Props extends Record<string, never> ? any : { + children?: any; +} : {}); +declare const Test: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{ + astring?: string; +}, { + default: { + astring: string; }; - slots: { - default: { +}>, { + event: CustomEvent<boolean>; +} & { + [evt: string]: CustomEvent<any>; +}, { + default: { astring: string; - }; }; - exports?: {}; - bindings?: string; -}; -export type TestProps = typeof __propDef.props; -export type TestEvents = typeof __propDef.events; -export type TestSlots = typeof __propDef.slots; -export default class Test extends SvelteComponent<TestProps, TestEvents, TestSlots> { - get astring(): string; -} -export {}; +}, { + astring: string; +}, string>; +type Test = InstanceType<typeof Test>; +export default Test; diff --git a/packages/package/test/watch/expected/Test.svelte.d.ts b/packages/package/test/watch/expected/Test.svelte.d.ts index fecde1b0e9cb..f642196d7c16 100644 --- a/packages/package/test/watch/expected/Test.svelte.d.ts +++ b/packages/package/test/watch/expected/Test.svelte.d.ts @@ -1,18 +1,20 @@ -import { SvelteComponent } from "svelte"; -declare const __propDef: { - props: { - answer: number; +interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> { + new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & { + $$bindings?: Bindings; + } & Exports; + (internal: unknown, props: Props & { + $$events?: Events; + $$slots?: Slots; + }): Exports & { + $set?: any; + $on?: any; }; - events: { - [evt: string]: CustomEvent<any>; - }; - slots: {}; - exports?: {}; - bindings?: string; -}; -export type TestProps = typeof __propDef.props; -export type TestEvents = typeof __propDef.events; -export type TestSlots = typeof __propDef.slots; -export default class Test extends SvelteComponent<TestProps, TestEvents, TestSlots> { + z_$$bindings?: Bindings; } -export {}; +declare const Test: $$__sveltets_2_IsomorphicComponent<{ + answer: number; +}, { + [evt: string]: CustomEvent<any>; +}, {}, {}, string>; +type Test = InstanceType<typeof Test>; +export default Test; diff --git a/playgrounds/basic/package.json b/playgrounds/basic/package.json index 05d510a132f4..bd69a0b29525 100644 --- a/playgrounds/basic/package.json +++ b/playgrounds/basic/package.json @@ -24,14 +24,14 @@ "@sveltejs/amp": "workspace:*", "@sveltejs/kit": "workspace:*", "@sveltejs/package": "workspace:*", - "@sveltejs/vite-plugin-svelte": "^4.0.0", + "@sveltejs/vite-plugin-svelte": "^5.0.1", "prettier": "^3.3.2", "prettier-plugin-svelte": "^3.2.6", "publint": "^0.2.0", - "svelte": "^5.1.13", + "svelte": "^5.2.9", "svelte-check": "^4.0.1", "typescript": "^5.5.0", - "vite": "^5.4.4" + "vite": "^6.0.1" }, "type": "module", "exports": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c80878cb9d1..4c7a7dca9fbb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 2.27.8 '@sveltejs/eslint-config': specifier: ^8.1.0 - version: 8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.13))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3) + version: 8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.2.9))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 @@ -25,10 +25,10 @@ importers: version: 1.44.1 prettier: specifier: ^3.1.1 - version: 3.1.1 + version: 3.3.3 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.1.2(prettier@3.1.1)(svelte@5.1.13) + version: 3.2.7(prettier@3.3.3)(svelte@5.2.9) typescript-eslint: specifier: ^8.0.0 version: 8.4.0(eslint@9.6.0)(typescript@5.6.3) @@ -43,14 +43,14 @@ importers: specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.6.3 packages/adapter-cloudflare: dependencies: @@ -58,8 +58,8 @@ importers: specifier: ^4.20231121.0 version: 4.20240405.0 esbuild: - specifier: ^0.21.5 - version: 0.21.5 + specifier: ^0.24.0 + version: 0.24.0 worktop: specifier: 0.8.0-next.18 version: 0.8.0-next.18 @@ -78,7 +78,7 @@ importers: version: 8.5.10 typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.6.3 packages/adapter-cloudflare-workers: dependencies: @@ -89,8 +89,8 @@ importers: specifier: ^2.2.5 version: 2.2.5 esbuild: - specifier: ^0.21.5 - version: 0.21.5 + specifier: ^0.24.0 + version: 0.24.0 wrangler: specifier: ^3.28.4 version: 3.63.1(@cloudflare/workers-types@4.20240405.0) @@ -106,7 +106,7 @@ importers: version: 18.19.50 typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.6.3 packages/adapter-netlify: dependencies: @@ -114,8 +114,8 @@ importers: specifier: ^2.2.5 version: 2.2.5 esbuild: - specifier: ^0.21.5 - version: 0.21.5 + specifier: ^0.24.0 + version: 0.24.0 set-cookie-parser: specifier: ^2.6.0 version: 2.6.0 @@ -125,19 +125,19 @@ importers: version: 2.6.0 '@rollup/plugin-commonjs': specifier: ^28.0.1 - version: 28.0.1(rollup@4.24.0) + version: 28.0.1(rollup@4.27.4) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.24.0) + version: 6.1.0(rollup@4.27.4) '@rollup/plugin-node-resolve': specifier: ^15.3.0 - version: 15.3.0(rollup@4.24.0) + version: 15.3.0(rollup@4.27.4) '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -146,28 +146,28 @@ importers: version: 2.4.7 rollup: specifier: ^4.14.2 - version: 4.24.0 + version: 4.27.4 typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.6.3 vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^2.1.6 + version: 2.1.6(@types/node@18.19.50)(lightningcss@1.24.1) packages/adapter-node: dependencies: '@rollup/plugin-commonjs': specifier: ^28.0.1 - version: 28.0.1(rollup@4.24.0) + version: 28.0.1(rollup@4.27.4) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.24.0) + version: 6.1.0(rollup@4.27.4) '@rollup/plugin-node-resolve': specifier: ^15.3.0 - version: 15.3.0(rollup@4.24.0) + version: 15.3.0(rollup@4.27.4) rollup: specifier: ^4.9.5 - version: 4.24.0 + version: 4.27.4 devDependencies: '@polka/url': specifier: ^1.0.0-next.28 @@ -176,8 +176,8 @@ importers: specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -189,10 +189,10 @@ importers: version: 3.0.0 typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.6.3 vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^2.1.6 + version: 2.1.6(@types/node@18.19.50)(lightningcss@1.24.1) packages/adapter-static: devDependencies: @@ -203,8 +203,8 @@ importers: specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -212,14 +212,14 @@ importers: specifier: ^3.0.0 version: 3.0.0 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/adapter-static/test/apps/prerendered: devDependencies: @@ -227,17 +227,17 @@ importers: specifier: workspace:^ version: link:../../../../kit '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) sirv-cli: specifier: ^3.0.0 version: 3.0.0 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/adapter-static/test/apps/spa: devDependencies: @@ -248,17 +248,17 @@ importers: specifier: workspace:^ version: link:../../../../kit '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) sirv-cli: specifier: ^3.0.0 version: 3.0.0 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/adapter-vercel: dependencies: @@ -266,34 +266,34 @@ importers: specifier: ^0.27.1 version: 0.27.1 esbuild: - specifier: ^0.21.5 - version: 0.21.5 + specifier: ^0.24.0 + version: 0.24.0 devDependencies: '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.6.3 vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^2.1.6 + version: 2.1.6(@types/node@18.19.50)(lightningcss@1.24.1) packages/amp: dependencies: '@sveltejs/kit': specifier: ^1.0.0 || ^2.0.0 - version: 2.7.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + version: link:../kit devDependencies: typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.6.3 packages/create-svelte: {} @@ -301,13 +301,13 @@ importers: dependencies: magic-string: specifier: ^0.30.5 - version: 0.30.11 + version: 0.30.14 svelte-parse-markup: specifier: ^0.1.5 - version: 0.1.5(svelte@5.1.13) + version: 0.1.5(svelte@5.2.9) vite-imagetools: specifier: ^7.0.1 - version: 7.0.1(rollup@4.24.0) + version: 7.0.1(rollup@4.27.4) zimmerframe: specifier: ^1.1.2 version: 1.1.2 @@ -319,20 +319,20 @@ importers: specifier: ^18.19.48 version: 18.19.50 rollup: - specifier: ^4.14.2 - version: 4.24.0 + specifier: ^4.27.4 + version: 4.27.4 svelte: - specifier: ^5.1.3 - version: 5.1.13 + specifier: ^5.2.9 + version: 5.2.9 typescript: specifier: ^5.6.3 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^2.1.6 + version: 2.1.6(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit: dependencies: @@ -346,8 +346,8 @@ importers: specifier: ^5.1.0 version: 5.1.0 esm-env: - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.2.1 + version: 1.2.1 import-meta-resolve: specifier: ^4.1.0 version: 4.1.0 @@ -356,7 +356,7 @@ importers: version: 4.1.5 magic-string: specifier: ^0.30.5 - version: 0.30.11 + version: 0.30.14 mrmime: specifier: ^2.0.0 version: 2.0.0 @@ -377,8 +377,8 @@ importers: specifier: ^1.44.1 version: 1.44.1 '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/connect': specifier: ^3.4.38 version: 3.4.38 @@ -389,26 +389,26 @@ importers: specifier: ^2.4.7 version: 2.4.7 dts-buddy: - specifier: ^0.5.3 - version: 0.5.3(typescript@5.4.5) + specifier: ^0.5.4 + version: 0.5.4(typescript@5.6.3) rollup: specifier: ^4.14.2 - version: 4.24.0 + version: 4.27.4 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-preprocess: specifier: ^6.0.0 - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19)(typescript@5.4.5) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.4.49))(postcss@8.4.49)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^2.1.6 + version: 2.1.6(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/apps/amp: devDependencies: @@ -419,8 +419,8 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -428,17 +428,17 @@ importers: specifier: ^1.0.16 version: 1.0.16 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/apps/basics: devDependencies: @@ -446,23 +446,23 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/apps/dev-only: devDependencies: @@ -470,8 +470,8 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -506,17 +506,17 @@ importers: specifier: file:./_test_dependencies/cjs-only version: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/apps/embed: devDependencies: @@ -524,23 +524,23 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/apps/no-ssr: devDependencies: @@ -548,23 +548,23 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/apps/options: devDependencies: @@ -572,23 +572,23 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/apps/options-2: devDependencies: @@ -599,23 +599,23 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/apps/writes: devDependencies: @@ -623,29 +623,29 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors: devDependencies: vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^2.1.6 + version: 2.1.6(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch: devDependencies: @@ -656,20 +656,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment: devDependencies: @@ -680,20 +680,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/prerenderable-not-prerendered: devDependencies: @@ -704,20 +704,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/private-dynamic-env: devDependencies: @@ -725,20 +725,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import: devDependencies: @@ -746,20 +746,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/private-static-env: devDependencies: @@ -767,23 +767,23 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/private-static-env-dynamic-import: devDependencies: @@ -791,20 +791,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/server-only-folder: devDependencies: @@ -812,20 +812,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/server-only-folder-dynamic-import: devDependencies: @@ -833,20 +833,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/server-only-module: devDependencies: @@ -854,20 +854,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/server-only-module-dynamic-import: devDependencies: @@ -875,20 +875,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/service-worker-dynamic-public-env: devDependencies: @@ -896,20 +896,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/service-worker-private-env: devDependencies: @@ -917,20 +917,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/build-errors/apps/syntax-error: devDependencies: @@ -938,20 +938,20 @@ importers: specifier: workspace:^ version: link:../../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/prerendering/basics: devDependencies: @@ -959,23 +959,23 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^2.1.6 + version: 2.1.6(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/prerendering/options: devDependencies: @@ -983,23 +983,23 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^2.1.6 + version: 2.1.6(@types/node@18.19.50)(lightningcss@1.24.1) packages/kit/test/prerendering/paths-base: devDependencies: @@ -1007,23 +1007,23 @@ importers: specifier: workspace:^ version: link:../../.. '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 vite: - specifier: ^5.3.2 - version: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) vitest: - specifier: ^2.0.1 - version: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^2.1.6 + version: 2.1.6(@types/node@18.19.50)(lightningcss@1.24.1) packages/package: dependencies: @@ -1041,11 +1041,11 @@ importers: version: 7.6.3 svelte2tsx: specifier: ~0.7.16 - version: 0.7.18(svelte@4.2.19)(typescript@5.4.5) + version: 0.7.18(svelte@5.2.9)(typescript@5.6.3) devDependencies: '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.1 - version: 3.1.0(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) '@types/node': specifier: ^18.19.48 version: 18.19.50 @@ -1054,16 +1054,16 @@ importers: version: 7.5.8 prettier: specifier: ^3.1.1 - version: 3.1.1 + version: 3.3.3 svelte: - specifier: ^4.2.10 - version: 4.2.19 + specifier: ^5.2.9 + version: 5.2.9 svelte-preprocess: specifier: ^6.0.0 - version: 6.0.0(postcss-load-config@3.1.4(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19)(typescript@5.4.5) + version: 6.0.0(postcss-load-config@3.1.4(postcss@8.4.49))(postcss@8.4.49)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.6.3 uvu: specifier: ^0.5.6 version: 0.5.6 @@ -1101,29 +1101,29 @@ importers: specifier: workspace:* version: link:../../packages/package '@sveltejs/vite-plugin-svelte': - specifier: ^4.0.0 - version: 4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + specifier: ^5.0.1 + version: 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) prettier: specifier: ^3.3.2 version: 3.3.3 prettier-plugin-svelte: specifier: ^3.2.6 - version: 3.2.7(prettier@3.3.3)(svelte@5.1.13) + version: 3.2.7(prettier@3.3.3)(svelte@5.2.9) publint: specifier: ^0.2.0 version: 0.2.7 svelte: - specifier: ^5.1.13 - version: 5.1.13 + specifier: ^5.2.9 + version: 5.2.9 svelte-check: specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.1.13)(typescript@5.6.3) + version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.0 version: 5.6.3 vite: - specifier: ^5.4.4 - version: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) + specifier: ^6.0.1 + version: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) packages: @@ -1251,9 +1251,9 @@ packages: peerDependencies: esbuild: '*' - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -1263,9 +1263,9 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -1275,9 +1275,9 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} cpu: [arm] os: [android] @@ -1287,9 +1287,9 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} cpu: [x64] os: [android] @@ -1299,9 +1299,9 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -1311,9 +1311,9 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -1323,9 +1323,9 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -1335,9 +1335,9 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -1347,9 +1347,9 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -1359,9 +1359,9 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -1371,9 +1371,9 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1383,9 +1383,9 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -1395,9 +1395,9 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -1407,9 +1407,9 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -1419,9 +1419,9 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -1431,9 +1431,9 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -1443,9 +1443,9 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -1455,21 +1455,27 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.17.19': resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -1479,9 +1485,9 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -1491,9 +1497,9 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -1503,9 +1509,9 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -1515,20 +1521,20 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.1': - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/config-array@0.17.0': @@ -1675,10 +1681,6 @@ packages: cpu: [x64] os: [win32] - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -1785,89 +1787,96 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.24.0': - resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + '@rollup/rollup-android-arm-eabi@4.27.4': + resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.0': - resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + '@rollup/rollup-android-arm64@4.27.4': + resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.0': - resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + '@rollup/rollup-darwin-arm64@4.27.4': + resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.0': - resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + '@rollup/rollup-darwin-x64@4.27.4': + resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': - resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + '@rollup/rollup-freebsd-arm64@4.27.4': + resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.27.4': + resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.27.4': + resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.24.0': - resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + '@rollup/rollup-linux-arm-musleabihf@4.27.4': + resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.24.0': - resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + '@rollup/rollup-linux-arm64-gnu@4.27.4': + resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.24.0': - resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + '@rollup/rollup-linux-arm64-musl@4.27.4': + resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': - resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': + resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.24.0': - resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + '@rollup/rollup-linux-riscv64-gnu@4.27.4': + resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.24.0': - resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + '@rollup/rollup-linux-s390x-gnu@4.27.4': + resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.24.0': - resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + '@rollup/rollup-linux-x64-gnu@4.27.4': + resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.24.0': - resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + '@rollup/rollup-linux-x64-musl@4.27.4': + resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.24.0': - resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + '@rollup/rollup-win32-arm64-msvc@4.27.4': + resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.0': - resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + '@rollup/rollup-win32-ia32-msvc@4.27.4': + resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.0': - resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + '@rollup/rollup-win32-x64-msvc@4.27.4': + resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==} cpu: [x64] os: [win32] - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@stylistic/eslint-plugin-js@2.1.0': resolution: {integrity: sha512-gdXUjGNSsnY6nPyqxu6lmDTtVrwCOjun4x8PUn0x04d5ucLI74N3MT1Q0UhdcOR9No3bo5PGDyBgXK+KmD787A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1885,44 +1894,20 @@ packages: typescript: '>= 5' typescript-eslint: '>= 7.5' - '@sveltejs/kit@2.7.3': - resolution: {integrity: sha512-Vx7nq5MJ86I8qXYsVidC5PX6xm+uxt8DydvOdmJoyOK7LvGP18OFEG359yY+aa51t6pENvqZAMqAREQQx1OI2Q==} - engines: {node: '>=18.13'} - hasBin: true - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.3 - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0': - resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} - engines: {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 - - '@sveltejs/vite-plugin-svelte-inspector@3.0.1': - resolution: {integrity: sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==} + '@sveltejs/vite-plugin-svelte-inspector@4.0.1': + resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} peerDependencies: - '@sveltejs/vite-plugin-svelte': ^4.0.0-next.0||^4.0.0 - svelte: ^5.0.0-next.96 || ^5.0.0 - vite: ^5.0.0 - - '@sveltejs/vite-plugin-svelte@3.1.0': - resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte': ^5.0.0 + svelte: ^5.0.0 + vite: ^6.0.0 - '@sveltejs/vite-plugin-svelte@4.0.0': - resolution: {integrity: sha512-kpVJwF+gNiMEsoHaw+FJL76IYiwBikkxYU83+BpqQLdVMff19KeRKLd2wisS8niNBMJ2omv5gG+iGDDwd8jzag==} + '@sveltejs/vite-plugin-svelte@5.0.1': + resolution: {integrity: sha512-D5l5+STmywGoLST07T9mrqqFFU+xgv5fqyTWM+VbxTvQ6jujNn4h3lQNCvlwVYs4Erov8i0K5Rwr3LQtmBYmBw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} peerDependencies: - svelte: ^5.0.0-next.96 || ^5.0.0 - vite: ^5.0.0 + svelte: ^5.0.0 + vite: ^6.0.0 '@svitejs/changesets-changelog-github-compact@1.1.0': resolution: {integrity: sha512-qhUGGDHcpbY2zpjW3SwqchuW8J/5EzlPFud7xNntHKA7f3a/mx5+g+ruJKFHSAiVZYo30PALt+AyhmPUNKH/Og==} @@ -2026,20 +2011,34 @@ packages: engines: {node: '>=16'} hasBin: true - '@vitest/expect@2.0.1': - resolution: {integrity: sha512-yw70WL3ZwzbI2O3MOXYP2Shf4vqVkS3q5FckLJ6lhT9VMMtDyWdofD53COZcoeuHwsBymdOZp99r5bOr5g+oeA==} + '@vitest/expect@2.1.6': + resolution: {integrity: sha512-9M1UR9CAmrhJOMoSwVnPh2rELPKhYo0m/CSgqw9PyStpxtkwhmdM6XYlXGKeYyERY1N6EIuzkQ7e3Lm1WKCoUg==} - '@vitest/runner@2.0.1': - resolution: {integrity: sha512-XfcSXOGGxgR2dQ466ZYqf0ZtDLLDx9mZeQcKjQDLQ9y6Cmk2Wl7wxMuhiYK4Fo1VxCtLcFEGW2XpcfMuiD1Maw==} + '@vitest/mocker@2.1.6': + resolution: {integrity: sha512-MHZp2Z+Q/A3am5oD4WSH04f9B0T7UvwEb+v5W0kCYMhtXGYbdyl2NUk1wdSMqGthmhpiThPDp/hEoVwu16+u1A==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@2.1.6': + resolution: {integrity: sha512-exZyLcEnHgDMKc54TtHca4McV4sKT+NKAe9ix/yhd/qkYb/TP8HTyXRFDijV19qKqTZM0hPL4753zU/U8L/gAA==} + + '@vitest/runner@2.1.6': + resolution: {integrity: sha512-SjkRGSFyrA82m5nz7To4CkRSEVWn/rwQISHoia/DB8c6IHIhaE/UNAo+7UfeaeJRE979XceGl00LNkIz09RFsA==} - '@vitest/snapshot@2.0.1': - resolution: {integrity: sha512-rst79a4Q+J5vrvHRapdfK4BdqpMH0eF58jVY1vYeBo/1be+nkyenGI5SCSohmjf6MkCkI20/yo5oG+0R8qrAnA==} + '@vitest/snapshot@2.1.6': + resolution: {integrity: sha512-5JTWHw8iS9l3v4/VSuthCndw1lN/hpPB+mlgn1BUhFbobeIUj1J1V/Bj2t2ovGEmkXLTckFjQddsxS5T6LuVWw==} - '@vitest/spy@2.0.1': - resolution: {integrity: sha512-NLkdxbSefAtJN56GtCNcB4GiHFb5i9q1uh4V229lrlTZt2fnwsTyjLuWIli1xwK2fQspJJmHXHyWx0Of3KTXWA==} + '@vitest/spy@2.1.6': + resolution: {integrity: sha512-oTFObV8bd4SDdRka5O+mSh5w9irgx5IetrD5i+OsUUsk/shsBoHifwCzy45SAORzAhtNiprUVaK3hSCCzZh1jQ==} - '@vitest/utils@2.0.1': - resolution: {integrity: sha512-STH+2fHZxlveh1mpU4tKzNgRk7RZJyr6kFGJYCI5vocdfqfPsQrgVC6k7dBWHfin5QNB4TLvRS0Ckly3Dt1uWw==} + '@vitest/utils@2.1.6': + resolution: {integrity: sha512-ixNkFy3k4vokOUTU2blIUvOgKq/N2PW8vKIjZZYsGJCMX69MRa9J2sKqX5hY/k5O5Gty3YJChepkqZ3KM9LyIQ==} abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -2063,8 +2062,8 @@ packages: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true @@ -2087,10 +2086,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -2169,8 +2164,8 @@ packages: capnp-ts@0.7.0: resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} - chai@5.1.1: - resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} chalk@4.1.2: @@ -2200,9 +2195,6 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - code-red@1.0.4: - resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -2225,7 +2217,7 @@ packages: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} @@ -2258,10 +2250,6 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -2276,15 +2264,6 @@ packages: date-fns@3.6.0: resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -2334,10 +2313,6 @@ packages: devalue@5.1.0: resolution: {integrity: sha512-N1MxQrdI1KmHTVfiGzEi6J2rEtrGZU1f2CELFpqjqlBwl/KgQDjPpszqySb4W3+w3YWwjt2++OExkh2r6O2VPA==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@5.2.0: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} @@ -2353,11 +2328,11 @@ packages: dropcss@1.0.16: resolution: {integrity: sha512-QgA6BUh2SoBYE/dSuMmeGhNdoGtGewt3Rn66xKyXoGNyjrKRXf163wuM+xeQ83p87l/3ALoB6Il1dgKyGS5pEw==} - dts-buddy@0.5.3: - resolution: {integrity: sha512-wS2DC5T+F6R+sG/YNlJ21yn8CKVhy1QQlpKA34G+uO4PUXkwz+JQWbGcIryUByxoJgbH98O0dTGzE2RqsRR3KA==} + dts-buddy@0.5.4: + resolution: {integrity: sha512-a3jJYbMXK98aJvhdV/v+tEKTTEJXXWtMjrl5L8jJL7rnZzGtPA6JNHJZ5//NVRw4JiB5T10Ie5T7h/QsP3aaYw==} hasBin: true peerDependencies: - typescript: '>=5.0.4 <5.6' + typescript: '>=5.0.4 <5.8' e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: resolution: {directory: packages/kit/test/apps/dev-only/_test_dependencies/cjs-only, type: directory} @@ -2373,14 +2348,17 @@ packages: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + esbuild@0.17.19: resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} hasBin: true - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} hasBin: true escape-string-regexp@4.0.0: @@ -2433,8 +2411,8 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.1.0: - resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint@9.6.0: @@ -2442,11 +2420,11 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true - esm-env@1.0.0: - resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + esm-env@1.2.1: + resolution: {integrity: sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==} - espree@10.2.0: - resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} espree@9.6.1: @@ -2486,14 +2464,14 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - exit-hook@2.2.1: resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} engines: {node: '>=6'} + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -2517,14 +2495,6 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - fdir@6.3.0: - resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.4.0: resolution: {integrity: sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==} peerDependencies: @@ -2592,9 +2562,6 @@ packages: engines: {node: '>=10'} deprecated: This package is no longer supported. - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-port@5.1.1: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} engines: {node: '>=8'} @@ -2602,10 +2569,6 @@ packages: get-source@2.0.12: resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} @@ -2633,12 +2596,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.10.0: - resolution: {integrity: sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==} - engines: {node: '>=18'} - - globals@15.11.0: - resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} + globals@15.12.0: + resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==} engines: {node: '>=18'} globalyzer@0.1.0: @@ -2675,10 +2634,6 @@ packages: human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -2749,12 +2704,8 @@ packages: is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-reference@3.0.3: + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} @@ -2884,8 +2835,8 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - loupe@3.1.1: - resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -2896,22 +2847,13 @@ packages: magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - - magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + magic-string@0.30.14: + resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2925,10 +2867,6 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -2974,9 +2912,6 @@ packages: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3037,10 +2972,6 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} hasBin: true - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} deprecated: This package is no longer supported. @@ -3052,10 +2983,6 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -3117,10 +3044,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -3138,11 +3061,8 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} - periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - - picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -3198,20 +3118,14 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-svelte@3.1.2: - resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==} - peerDependencies: - prettier: ^3.0.0 - svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 - prettier-plugin-svelte@3.2.7: resolution: {integrity: sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==} peerDependencies: @@ -3223,20 +3137,11 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.1.1: - resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} - engines: {node: '>=14'} - hasBin: true - prettier@3.3.3: resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} hasBin: true - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - printable-characters@1.0.42: resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} @@ -3255,9 +3160,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} @@ -3319,8 +3221,8 @@ packages: rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@4.24.0: - resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + rollup@4.27.4: + resolution: {integrity: sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3386,10 +3288,6 @@ packages: signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -3430,8 +3328,8 @@ packages: stacktracey@2.1.8: resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} @@ -3452,10 +3350,6 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -3489,12 +3383,6 @@ packages: svelte: optional: true - svelte-hmr@0.16.0: - resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - svelte-parse-markup@0.1.5: resolution: {integrity: sha512-T6mqZrySltPCDwfKXWQ6zehipVLk4GWfH1zCMGgRtLlOIFPuw58ZxVYxVvotMJgJaurKi1i14viB2GIRKXeJTQ==} peerDependencies: @@ -3543,12 +3431,8 @@ packages: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@4.2.19: - resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} - engines: {node: '>=16'} - - svelte@5.1.13: - resolution: {integrity: sha512-xVNk8yLsZNfkyqWzVg8+nfU9ewiSjVW0S4qyTxfKa6Y7P5ZBhA+LDsh2cHWIXJQMltikQAk6W3sqGdQZSH58PA==} + svelte@5.2.9: + resolution: {integrity: sha512-LjO7R6K8FI8dA3l+4CcsbJ3djIe2TtokHGzfpDTro5g8nworMbTz9alCR95EQXGsqlzIAvqJtZ7Yy0o33lL09Q==} engines: {node: '>=18'} tapable@2.2.1: @@ -3569,19 +3453,26 @@ packages: tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} tinydate@1.3.0: resolution: {integrity: sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==} engines: {node: '>=4'} - tinypool@1.0.0: - resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} engines: {node: ^18.0.0 || >=20.0.0} - tinyspy@3.0.0: - resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} tmp@0.0.33: @@ -3625,11 +3516,6 @@ packages: typescript: optional: true - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} @@ -3670,55 +3556,32 @@ packages: resolution: {integrity: sha512-23jnLhkTH0HR9Vd9LxMYnajOLeo0RJNEAHhtlsQP6kfPuOBoTzt54rWbEWB9jmhEXAOflLQpM+FrmilVPAoyGA==} engines: {node: '>=18.0.0'} - vite-node@2.0.1: - resolution: {integrity: sha512-nVd6kyhPAql0s+xIVJzuF+RSRH8ZimNrm6U8ZvTA4MXv8CHI17TFaQwRaFiK75YX6XeFqZD4IoAaAfi9OR1XvQ==} - engines: {node: ^18.0.0 || >=20.0.0} + vite-node@2.1.6: + resolution: {integrity: sha512-DBfJY0n9JUwnyLxPSSUmEePT21j8JZp/sR9n+/gBwQU6DcQOioPdb8/pibWfXForbirSagZCilseYIwaL3f95A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@5.3.6: - resolution: {integrity: sha512-es78AlrylO8mTVBygC0gTC0FENv0C6T496vvd33ydbjF/mIi9q3XQ9A3NWo5qLGFKywvz10J26813OkLvcQleA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - 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 - - vite@5.4.10: - resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} - engines: {node: ^18.0.0 || >=20.0.0} + vite@6.0.1: + resolution: {integrity: sha512-Ldn6gorLGr4mCdFnmeAOLweJxZ34HjKnDm4HGo6P66IEqTxQb36VEdFJQENKxWjupNfoIjvRUnswjn1hpYEpjQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' less: '*' lightningcss: ^1.21.0 sass: '*' sass-embedded: '*' stylus: '*' sugarss: '*' - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -3733,32 +3596,28 @@ packages: optional: true terser: optional: true - - vitefu@0.2.5: - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: + tsx: + optional: true + yaml: optional: true - vitefu@1.0.3: - resolution: {integrity: sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==} + vitefu@1.0.4: + resolution: {integrity: sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 peerDependenciesMeta: vite: optional: true - vitest@2.0.1: - resolution: {integrity: sha512-PBPvNXRJiywtI9NmbnEqHIhcXlk8mB0aKf6REQIaYGY4JtWF1Pg8Am+N0vAuxdg/wUSlxPSVJr8QdjwcVxc2Hg==} - engines: {node: ^18.0.0 || >=20.0.0} + vitest@2.1.6: + resolution: {integrity: sha512-isUCkvPL30J4c5O5hgONeFRsDmlw6kzFEdLQHLezmDdKQHy8Ke/B/dgdTMEgU0vm+iZ0TjW8GuK83DiahBoKWQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.0.1 - '@vitest/ui': 2.0.1 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 2.1.6 + '@vitest/ui': 2.1.6 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -3927,7 +3786,7 @@ snapshots: outdent: 0.5.0 p-limit: 2.3.0 package-manager-detector: 0.2.0 - picocolors: 1.1.0 + picocolors: 1.1.1 resolve-from: 5.0.0 semver: 7.6.3 spawndamnit: 2.0.0 @@ -3951,7 +3810,7 @@ snapshots: dependencies: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - picocolors: 1.1.0 + picocolors: 1.1.1 semver: 7.6.3 '@changesets/get-github-info@0.5.2': @@ -3982,7 +3841,7 @@ snapshots: '@changesets/logger@0.1.1': dependencies: - picocolors: 1.1.0 + picocolors: 1.1.1 '@changesets/parse@0.4.0': dependencies: @@ -4004,7 +3863,7 @@ snapshots: '@changesets/types': 6.0.0 fs-extra: 7.0.1 p-filter: 2.1.0 - picocolors: 1.1.0 + picocolors: 1.1.1 '@changesets/should-skip-package@0.1.1': dependencies: @@ -4062,152 +3921,155 @@ snapshots: escape-string-regexp: 4.0.0 rollup-plugin-node-polyfills: 0.2.1 - '@esbuild/aix-ppc64@0.21.5': + '@esbuild/aix-ppc64@0.24.0': optional: true '@esbuild/android-arm64@0.17.19': optional: true - '@esbuild/android-arm64@0.21.5': + '@esbuild/android-arm64@0.24.0': optional: true '@esbuild/android-arm@0.17.19': optional: true - '@esbuild/android-arm@0.21.5': + '@esbuild/android-arm@0.24.0': optional: true '@esbuild/android-x64@0.17.19': optional: true - '@esbuild/android-x64@0.21.5': + '@esbuild/android-x64@0.24.0': optional: true '@esbuild/darwin-arm64@0.17.19': optional: true - '@esbuild/darwin-arm64@0.21.5': + '@esbuild/darwin-arm64@0.24.0': optional: true '@esbuild/darwin-x64@0.17.19': optional: true - '@esbuild/darwin-x64@0.21.5': + '@esbuild/darwin-x64@0.24.0': optional: true '@esbuild/freebsd-arm64@0.17.19': optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/freebsd-arm64@0.24.0': optional: true '@esbuild/freebsd-x64@0.17.19': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/freebsd-x64@0.24.0': optional: true '@esbuild/linux-arm64@0.17.19': optional: true - '@esbuild/linux-arm64@0.21.5': + '@esbuild/linux-arm64@0.24.0': optional: true '@esbuild/linux-arm@0.17.19': optional: true - '@esbuild/linux-arm@0.21.5': + '@esbuild/linux-arm@0.24.0': optional: true '@esbuild/linux-ia32@0.17.19': optional: true - '@esbuild/linux-ia32@0.21.5': + '@esbuild/linux-ia32@0.24.0': optional: true '@esbuild/linux-loong64@0.17.19': optional: true - '@esbuild/linux-loong64@0.21.5': + '@esbuild/linux-loong64@0.24.0': optional: true '@esbuild/linux-mips64el@0.17.19': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/linux-mips64el@0.24.0': optional: true '@esbuild/linux-ppc64@0.17.19': optional: true - '@esbuild/linux-ppc64@0.21.5': + '@esbuild/linux-ppc64@0.24.0': optional: true '@esbuild/linux-riscv64@0.17.19': optional: true - '@esbuild/linux-riscv64@0.21.5': + '@esbuild/linux-riscv64@0.24.0': optional: true '@esbuild/linux-s390x@0.17.19': optional: true - '@esbuild/linux-s390x@0.21.5': + '@esbuild/linux-s390x@0.24.0': optional: true '@esbuild/linux-x64@0.17.19': optional: true - '@esbuild/linux-x64@0.21.5': + '@esbuild/linux-x64@0.24.0': optional: true '@esbuild/netbsd-x64@0.17.19': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/netbsd-x64@0.24.0': + optional: true + + '@esbuild/openbsd-arm64@0.24.0': optional: true '@esbuild/openbsd-x64@0.17.19': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/openbsd-x64@0.24.0': optional: true '@esbuild/sunos-x64@0.17.19': optional: true - '@esbuild/sunos-x64@0.21.5': + '@esbuild/sunos-x64@0.24.0': optional: true '@esbuild/win32-arm64@0.17.19': optional: true - '@esbuild/win32-arm64@0.21.5': + '@esbuild/win32-arm64@0.24.0': optional: true '@esbuild/win32-ia32@0.17.19': optional: true - '@esbuild/win32-ia32@0.21.5': + '@esbuild/win32-ia32@0.24.0': optional: true '@esbuild/win32-x64@0.17.19': optional: true - '@esbuild/win32-x64@0.21.5': + '@esbuild/win32-x64@0.24.0': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.6.0)': + '@eslint-community/eslint-utils@4.4.1(eslint@9.6.0)': dependencies: eslint: 9.6.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.1': {} + '@eslint-community/regexpp@4.12.1': {} '@eslint/config-array@0.17.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.5 + debug: 4.3.7 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -4215,8 +4077,8 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.5 - espree: 10.2.0 + debug: 4.3.7 + espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 @@ -4313,10 +4175,6 @@ snapshots: '@img/sharp-win32-x64@0.33.3': optional: true - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -4404,222 +4262,139 @@ snapshots: '@polka/url@1.0.0-next.28': {} - '@rollup/plugin-commonjs@28.0.1(rollup@4.24.0)': + '@rollup/plugin-commonjs@28.0.1(rollup@4.27.4)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.24.0) + '@rollup/pluginutils': 5.1.0(rollup@4.27.4) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.0(picomatch@4.0.2) is-reference: 1.2.1 - magic-string: 0.30.11 + magic-string: 0.30.14 picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.0 + rollup: 4.27.4 - '@rollup/plugin-json@6.1.0(rollup@4.24.0)': + '@rollup/plugin-json@6.1.0(rollup@4.27.4)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.24.0) + '@rollup/pluginutils': 5.1.0(rollup@4.27.4) optionalDependencies: - rollup: 4.24.0 + rollup: 4.27.4 - '@rollup/plugin-node-resolve@15.3.0(rollup@4.24.0)': + '@rollup/plugin-node-resolve@15.3.0(rollup@4.27.4)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.24.0) + '@rollup/pluginutils': 5.1.0(rollup@4.27.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.24.0 + rollup: 4.27.4 '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.0(rollup@4.24.0)': + '@rollup/pluginutils@5.1.0(rollup@4.27.4)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.24.0 + rollup: 4.27.4 - '@rollup/rollup-android-arm-eabi@4.24.0': + '@rollup/rollup-android-arm-eabi@4.27.4': optional: true - '@rollup/rollup-android-arm64@4.24.0': + '@rollup/rollup-android-arm64@4.27.4': optional: true - '@rollup/rollup-darwin-arm64@4.24.0': + '@rollup/rollup-darwin-arm64@4.27.4': optional: true - '@rollup/rollup-darwin-x64@4.24.0': + '@rollup/rollup-darwin-x64@4.27.4': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + '@rollup/rollup-freebsd-arm64@4.27.4': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.0': + '@rollup/rollup-freebsd-x64@4.27.4': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.0': + '@rollup/rollup-linux-arm-gnueabihf@4.27.4': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.0': + '@rollup/rollup-linux-arm-musleabihf@4.27.4': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + '@rollup/rollup-linux-arm64-gnu@4.27.4': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.0': + '@rollup/rollup-linux-arm64-musl@4.27.4': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.0': + '@rollup/rollup-linux-riscv64-gnu@4.27.4': optional: true - '@rollup/rollup-linux-x64-musl@4.24.0': + '@rollup/rollup-linux-s390x-gnu@4.27.4': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.0': + '@rollup/rollup-linux-x64-gnu@4.27.4': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.0': + '@rollup/rollup-linux-x64-musl@4.27.4': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.0': + '@rollup/rollup-win32-arm64-msvc@4.27.4': optional: true - '@sinclair/typebox@0.27.8': {} + '@rollup/rollup-win32-ia32-msvc@4.27.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.27.4': + optional: true '@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0)': dependencies: '@types/eslint': 8.56.12 - acorn: 8.12.1 + acorn: 8.14.0 eslint: 9.6.0 - eslint-visitor-keys: 4.1.0 - espree: 10.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 - '@sveltejs/eslint-config@8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.13))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3)': + '@sveltejs/eslint-config@8.1.0(@stylistic/eslint-plugin-js@2.1.0(eslint@9.6.0))(eslint-config-prettier@9.1.0(eslint@9.6.0))(eslint-plugin-n@17.9.0(eslint@9.6.0))(eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.2.9))(eslint@9.6.0)(typescript-eslint@8.4.0(eslint@9.6.0)(typescript@5.6.3))(typescript@5.6.3)': dependencies: '@stylistic/eslint-plugin-js': 2.1.0(eslint@9.6.0) eslint: 9.6.0 eslint-config-prettier: 9.1.0(eslint@9.6.0) eslint-plugin-n: 17.9.0(eslint@9.6.0) - eslint-plugin-svelte: 2.41.0(eslint@9.6.0)(svelte@5.1.13) - globals: 15.10.0 + eslint-plugin-svelte: 2.41.0(eslint@9.6.0)(svelte@5.2.9) + globals: 15.12.0 typescript: 5.6.3 typescript-eslint: 8.4.0(eslint@9.6.0)(typescript@5.6.3) - '@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': - dependencies: - '@sveltejs/vite-plugin-svelte': 4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) - '@types/cookie': 0.6.0 - cookie: 0.6.0 - devalue: 5.1.0 - esm-env: 1.0.0 - import-meta-resolve: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.11 - mrmime: 2.0.0 - sade: 1.8.1 - set-cookie-parser: 2.6.0 - sirv: 3.0.0 - svelte: 5.1.13 - tiny-glob: 0.2.9 - vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) - debug: 4.3.5 - svelte: 4.2.19 - vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) - debug: 4.3.5 - svelte: 4.2.19 - vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) - debug: 4.3.5 - svelte: 5.1.13 - vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + '@sveltejs/vite-plugin-svelte': 5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) debug: 4.3.7 - svelte: 5.1.13 - vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) + svelte: 5.2.9 + vite: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1))': + '@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) - debug: 4.3.5 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.11 - svelte: 4.2.19 - svelte-hmr: 0.16.0(svelte@4.2.19) - vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) - vitefu: 0.2.5(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) - debug: 4.3.5 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.11 - svelte: 4.2.19 - svelte-hmr: 0.16.0(svelte@4.2.19) - vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) - vitefu: 0.2.5(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) - debug: 4.3.5 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.11 - svelte: 5.1.13 - svelte-hmr: 0.16.0(svelte@5.1.13) - vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) - vitefu: 0.2.5(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1))': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.1.13)(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.1(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)))(svelte@5.2.9)(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) debug: 4.3.7 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.12 - svelte: 5.1.13 - vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) - vitefu: 1.0.3(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)) + magic-string: 0.30.14 + svelte: 5.2.9 + vite: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + vitefu: 1.0.4(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) transitivePeerDependencies: - supports-color @@ -4669,7 +4444,7 @@ snapshots: '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.6.0)(typescript@5.6.3))(eslint@9.6.0)(typescript@5.6.3)': dependencies: - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 8.4.0(eslint@9.6.0)(typescript@5.6.3) '@typescript-eslint/scope-manager': 8.4.0 '@typescript-eslint/type-utils': 8.4.0(eslint@9.6.0)(typescript@5.6.3) @@ -4691,7 +4466,7 @@ snapshots: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.4.0 - debug: 4.3.5 + debug: 4.3.7 eslint: 9.6.0 optionalDependencies: typescript: 5.6.3 @@ -4707,7 +4482,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.3) '@typescript-eslint/utils': 8.4.0(eslint@9.6.0)(typescript@5.6.3) - debug: 4.3.5 + debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 @@ -4721,7 +4496,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.4.0 '@typescript-eslint/visitor-keys': 8.4.0 - debug: 4.3.5 + debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 @@ -4734,7 +4509,7 @@ snapshots: '@typescript-eslint/utils@8.4.0(eslint@9.6.0)(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.6.0) '@typescript-eslint/scope-manager': 8.4.0 '@typescript-eslint/types': 8.4.0 '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.3) @@ -4752,8 +4527,8 @@ snapshots: dependencies: '@mapbox/node-pre-gyp': 1.0.11 '@rollup/pluginutils': 4.2.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -4766,55 +4541,67 @@ snapshots: - encoding - supports-color - '@vitest/expect@2.0.1': + '@vitest/expect@2.1.6': dependencies: - '@vitest/spy': 2.0.1 - '@vitest/utils': 2.0.1 - chai: 5.1.1 + '@vitest/spy': 2.1.6 + '@vitest/utils': 2.1.6 + chai: 5.1.2 + tinyrainbow: 1.2.0 - '@vitest/runner@2.0.1': + '@vitest/mocker@2.1.6(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1))': dependencies: - '@vitest/utils': 2.0.1 + '@vitest/spy': 2.1.6 + estree-walker: 3.0.3 + magic-string: 0.30.14 + optionalDependencies: + vite: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + + '@vitest/pretty-format@2.1.6': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/runner@2.1.6': + dependencies: + '@vitest/utils': 2.1.6 pathe: 1.1.2 - '@vitest/snapshot@2.0.1': + '@vitest/snapshot@2.1.6': dependencies: - magic-string: 0.30.11 + '@vitest/pretty-format': 2.1.6 + magic-string: 0.30.14 pathe: 1.1.2 - pretty-format: 29.7.0 - '@vitest/spy@2.0.1': + '@vitest/spy@2.1.6': dependencies: - tinyspy: 3.0.0 + tinyspy: 3.0.2 - '@vitest/utils@2.0.1': + '@vitest/utils@2.1.6': dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 3.1.1 - pretty-format: 29.7.0 + '@vitest/pretty-format': 2.1.6 + loupe: 3.1.2 + tinyrainbow: 1.2.0 abbrev@1.1.1: {} - acorn-import-attributes@1.9.5(acorn@8.12.1): + acorn-import-attributes@1.9.5(acorn@8.14.0): dependencies: - acorn: 8.12.1 + acorn: 8.14.0 - acorn-jsx@5.3.2(acorn@8.12.1): + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: - acorn: 8.12.1 + acorn: 8.14.0 - acorn-typescript@1.4.13(acorn@8.12.1): + acorn-typescript@1.4.13(acorn@8.14.0): dependencies: - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk@8.3.2: {} - acorn@8.12.1: {} + acorn@8.14.0: {} agent-base@6.0.2: dependencies: - debug: 4.3.5 + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -4833,8 +4620,6 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -4900,17 +4685,17 @@ snapshots: capnp-ts@0.7.0: dependencies: - debug: 4.3.5 + debug: 4.3.7 tslib: 2.6.2 transitivePeerDependencies: - supports-color - chai@5.1.1: + chai@5.1.2: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.1 + loupe: 3.1.2 pathval: 2.0.0 chalk@4.1.2: @@ -4942,14 +4727,6 @@ snapshots: ci-info@3.9.0: {} - code-red@1.0.4: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - '@types/estree': 1.0.6 - acorn: 8.12.1 - estree-walker: 3.0.3 - periscopic: 3.1.0 - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -4998,11 +4775,6 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 - cssesc@3.0.0: {} data-uri-to-buffer@2.0.2: {} @@ -5011,10 +4783,6 @@ snapshots: date-fns@3.6.0: {} - debug@4.3.5: - dependencies: - ms: 2.1.2 - debug@4.3.7: dependencies: ms: 2.1.3 @@ -5042,8 +4810,6 @@ snapshots: devalue@5.1.0: {} - diff-sequences@29.6.3: {} - diff@5.2.0: {} dir-glob@3.0.1: @@ -5054,18 +4820,18 @@ snapshots: dropcss@1.0.16: {} - dts-buddy@0.5.3(typescript@5.4.5): + dts-buddy@0.5.4(typescript@5.6.3): dependencies: '@jridgewell/source-map': 0.3.6 '@jridgewell/sourcemap-codec': 1.5.0 globrex: 0.1.2 kleur: 4.1.5 locate-character: 3.0.0 - magic-string: 0.30.11 + magic-string: 0.30.14 sade: 1.8.1 tiny-glob: 0.2.9 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.6.3) + typescript: 5.6.3 e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: {} @@ -5081,6 +4847,8 @@ snapshots: ansi-colors: 4.1.3 strip-ansi: 6.0.1 + es-module-lexer@1.5.4: {} + esbuild@0.17.19: optionalDependencies: '@esbuild/android-arm': 0.17.19 @@ -5106,31 +4874,32 @@ snapshots: '@esbuild/win32-ia32': 0.17.19 '@esbuild/win32-x64': 0.17.19 - esbuild@0.21.5: + esbuild@0.24.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 escape-string-regexp@4.0.0: {} @@ -5145,39 +4914,39 @@ snapshots: eslint-plugin-es-x@7.8.0(eslint@9.6.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.6.0) + '@eslint-community/regexpp': 4.12.1 eslint: 9.6.0 eslint-compat-utils: 0.5.1(eslint@9.6.0) eslint-plugin-n@17.9.0(eslint@9.6.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.6.0) enhanced-resolve: 5.17.1 eslint: 9.6.0 eslint-plugin-es-x: 7.8.0(eslint@9.6.0) get-tsconfig: 4.8.1 - globals: 15.11.0 + globals: 15.12.0 ignore: 5.3.2 minimatch: 9.0.5 semver: 7.6.3 - eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.1.13): + eslint-plugin-svelte@2.41.0(eslint@9.6.0)(svelte@5.2.9): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.6.0) '@jridgewell/sourcemap-codec': 1.5.0 eslint: 9.6.0 eslint-compat-utils: 0.5.1(eslint@9.6.0) esutils: 2.0.3 known-css-properties: 0.34.0 - postcss: 8.4.47 - postcss-load-config: 3.1.4(postcss@8.4.47) - postcss-safe-parser: 6.0.0(postcss@8.4.47) + postcss: 8.4.49 + postcss-load-config: 3.1.4(postcss@8.4.49) + postcss-safe-parser: 6.0.0(postcss@8.4.49) postcss-selector-parser: 6.1.2 semver: 7.6.3 - svelte-eslint-parser: 0.39.2(svelte@5.1.13) + svelte-eslint-parser: 0.39.2(svelte@5.2.9) optionalDependencies: - svelte: 5.1.13 + svelte: 5.2.9 transitivePeerDependencies: - ts-node @@ -5193,12 +4962,12 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.1.0: {} + eslint-visitor-keys@4.2.0: {} eslint@9.6.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.6.0) + '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.17.0 '@eslint/eslintrc': 3.1.0 '@eslint/js': 9.6.0 @@ -5208,11 +4977,11 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.7 escape-string-regexp: 4.0.0 eslint-scope: 8.0.1 - eslint-visitor-keys: 4.1.0 - espree: 10.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -5234,18 +5003,18 @@ snapshots: transitivePeerDependencies: - supports-color - esm-env@1.0.0: {} + esm-env@1.2.1: {} - espree@10.2.0: + espree@10.3.0: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.1.0 + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 espree@9.6.1: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -5275,20 +5044,10 @@ snapshots: esutils@2.0.3: {} - execa@8.0.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - exit-hook@2.2.1: {} + expect-type@1.1.0: {} + extendable-error@0.1.7: {} external-editor@3.1.0: @@ -5315,10 +5074,6 @@ snapshots: dependencies: reusify: 1.0.4 - fdir@6.3.0(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.4.0(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -5388,8 +5143,6 @@ snapshots: strip-ansi: 6.0.1 wide-align: 1.1.5 - get-func-name@2.0.2: {} - get-port@5.1.1: {} get-source@2.0.12: @@ -5397,8 +5150,6 @@ snapshots: data-uri-to-buffer: 2.0.2 source-map: 0.6.1 - get-stream@8.0.1: {} - get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -5432,9 +5183,7 @@ snapshots: globals@14.0.0: {} - globals@15.10.0: {} - - globals@15.11.0: {} + globals@15.12.0: {} globalyzer@0.1.0: {} @@ -5464,14 +5213,12 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.7 transitivePeerDependencies: - supports-color human-id@1.0.2: {} - human-signals@5.0.0: {} - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -5530,12 +5277,10 @@ snapshots: dependencies: '@types/estree': 1.0.6 - is-reference@3.0.2: + is-reference@3.0.3: dependencies: '@types/estree': 1.0.6 - is-stream@3.0.0: {} - is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 @@ -5636,9 +5381,7 @@ snapshots: lodash.startcase@4.4.0: {} - loupe@3.1.1: - dependencies: - get-func-name: 2.0.2 + loupe@3.1.2: {} lower-case@2.0.2: dependencies: @@ -5653,11 +5396,7 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 - magic-string@0.30.11: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - magic-string@0.30.12: + magic-string@0.30.14: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -5665,10 +5404,6 @@ snapshots: dependencies: semver: 6.3.1 - mdn-data@2.0.30: {} - - merge-stream@2.0.0: {} - merge2@1.4.1: {} micromatch@4.0.8: @@ -5678,14 +5413,12 @@ snapshots: mime@3.0.0: {} - mimic-fn@4.0.0: {} - min-indent@1.0.1: {} miniflare@3.20240701.0: dependencies: '@cspotcode/source-map-support': 0.8.1 - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk: 8.3.2 capnp-ts: 0.7.0 exit-hook: 2.2.1 @@ -5730,8 +5463,6 @@ snapshots: mrmime@2.0.0: {} - ms@2.1.2: {} - ms@2.1.3: {} mustache@4.2.0: {} @@ -5774,10 +5505,6 @@ snapshots: npm-bundled: 2.0.1 npm-normalize-package-bin: 2.0.0 - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 @@ -5791,10 +5518,6 @@ snapshots: dependencies: wrappy: 1.0.2 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 @@ -5849,8 +5572,6 @@ snapshots: path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} path-to-regexp@6.2.2: {} @@ -5861,13 +5582,7 @@ snapshots: pathval@2.0.0: {} - periscopic@3.1.0: - dependencies: - '@types/estree': 1.0.6 - estree-walker: 3.0.3 - is-reference: 3.0.2 - - picocolors@1.1.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -5888,56 +5603,43 @@ snapshots: '@polka/url': 1.0.0-next.28 trouter: 4.0.0 - postcss-load-config@3.1.4(postcss@8.4.47): + postcss-load-config@3.1.4(postcss@8.4.49): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - postcss: 8.4.47 + postcss: 8.4.49 - postcss-safe-parser@6.0.0(postcss@8.4.47): + postcss-safe-parser@6.0.0(postcss@8.4.49): dependencies: - postcss: 8.4.47 + postcss: 8.4.49 - postcss-scss@4.0.9(postcss@8.4.47): + postcss-scss@4.0.9(postcss@8.4.49): dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.4.47: + postcss@8.4.49: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@5.1.13): - dependencies: - prettier: 3.1.1 - svelte: 5.1.13 - - prettier-plugin-svelte@3.2.7(prettier@3.3.3)(svelte@5.1.13): + prettier-plugin-svelte@3.2.7(prettier@3.3.3)(svelte@5.2.9): dependencies: prettier: 3.3.3 - svelte: 5.1.13 + svelte: 5.2.9 prettier@2.8.8: {} - prettier@3.1.1: {} - prettier@3.3.3: {} - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - printable-characters@1.0.42: {} pseudomap@1.0.2: {} @@ -5945,15 +5647,13 @@ snapshots: publint@0.2.7: dependencies: npm-packlist: 5.1.3 - picocolors: 1.1.0 + picocolors: 1.1.1 sade: 1.8.1 punycode@2.3.1: {} queue-microtask@1.2.3: {} - react-is@18.3.1: {} - read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -6011,26 +5711,28 @@ snapshots: dependencies: estree-walker: 0.6.1 - rollup@4.24.0: + rollup@4.27.4: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.0 - '@rollup/rollup-android-arm64': 4.24.0 - '@rollup/rollup-darwin-arm64': 4.24.0 - '@rollup/rollup-darwin-x64': 4.24.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 - '@rollup/rollup-linux-arm-musleabihf': 4.24.0 - '@rollup/rollup-linux-arm64-gnu': 4.24.0 - '@rollup/rollup-linux-arm64-musl': 4.24.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 - '@rollup/rollup-linux-riscv64-gnu': 4.24.0 - '@rollup/rollup-linux-s390x-gnu': 4.24.0 - '@rollup/rollup-linux-x64-gnu': 4.24.0 - '@rollup/rollup-linux-x64-musl': 4.24.0 - '@rollup/rollup-win32-arm64-msvc': 4.24.0 - '@rollup/rollup-win32-ia32-msvc': 4.24.0 - '@rollup/rollup-win32-x64-msvc': 4.24.0 + '@rollup/rollup-android-arm-eabi': 4.27.4 + '@rollup/rollup-android-arm64': 4.27.4 + '@rollup/rollup-darwin-arm64': 4.27.4 + '@rollup/rollup-darwin-x64': 4.27.4 + '@rollup/rollup-freebsd-arm64': 4.27.4 + '@rollup/rollup-freebsd-x64': 4.27.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.27.4 + '@rollup/rollup-linux-arm-musleabihf': 4.27.4 + '@rollup/rollup-linux-arm64-gnu': 4.27.4 + '@rollup/rollup-linux-arm64-musl': 4.27.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.27.4 + '@rollup/rollup-linux-riscv64-gnu': 4.27.4 + '@rollup/rollup-linux-s390x-gnu': 4.27.4 + '@rollup/rollup-linux-x64-gnu': 4.27.4 + '@rollup/rollup-linux-x64-musl': 4.27.4 + '@rollup/rollup-win32-arm64-msvc': 4.27.4 + '@rollup/rollup-win32-ia32-msvc': 4.27.4 + '@rollup/rollup-win32-x64-msvc': 4.27.4 fsevents: 2.3.3 run-parallel@1.2.0: @@ -6102,8 +5804,6 @@ snapshots: signal-exit@3.0.7: {} - signal-exit@4.1.0: {} - simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 @@ -6147,7 +5847,7 @@ snapshots: as-table: 1.0.55 get-source: 2.0.12 - std-env@3.7.0: {} + std-env@3.8.0: {} stoppable@1.1.0: {} @@ -6167,8 +5867,6 @@ snapshots: strip-bom@3.0.0: {} - strip-final-newline@3.0.0: {} - strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -6181,100 +5879,63 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.0.1(picomatch@4.0.2)(svelte@4.2.19)(typescript@5.6.3): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - chokidar: 3.6.0 - fdir: 6.3.0(picomatch@4.0.2) - picocolors: 1.1.0 - sade: 1.8.1 - svelte: 4.2.19 - typescript: 5.6.3 - transitivePeerDependencies: - - picomatch - - svelte-check@4.0.1(picomatch@4.0.2)(svelte@5.1.13)(typescript@5.6.3): + svelte-check@4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 - fdir: 6.3.0(picomatch@4.0.2) - picocolors: 1.1.0 + fdir: 6.4.0(picomatch@4.0.2) + picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.1.13 + svelte: 5.2.9 typescript: 5.6.3 transitivePeerDependencies: - picomatch - svelte-eslint-parser@0.39.2(svelte@5.1.13): + svelte-eslint-parser@0.39.2(svelte@5.2.9): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.47 - postcss-scss: 4.0.9(postcss@8.4.47) + postcss: 8.4.49 + postcss-scss: 4.0.9(postcss@8.4.49) optionalDependencies: - svelte: 5.1.13 - - svelte-hmr@0.16.0(svelte@4.2.19): - dependencies: - svelte: 4.2.19 - - svelte-hmr@0.16.0(svelte@5.1.13): - dependencies: - svelte: 5.1.13 + svelte: 5.2.9 - svelte-parse-markup@0.1.5(svelte@5.1.13): + svelte-parse-markup@0.1.5(svelte@5.2.9): dependencies: - svelte: 5.1.13 + svelte: 5.2.9 - svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.4.47))(postcss@8.4.47)(svelte@4.2.19)(typescript@5.4.5): + svelte-preprocess@6.0.0(postcss-load-config@3.1.4(postcss@8.4.49))(postcss@8.4.49)(svelte@5.2.9)(typescript@5.6.3): dependencies: detect-indent: 6.1.0 strip-indent: 3.0.0 - svelte: 4.2.19 + svelte: 5.2.9 optionalDependencies: - postcss: 8.4.47 - postcss-load-config: 3.1.4(postcss@8.4.47) - typescript: 5.4.5 + postcss: 8.4.49 + postcss-load-config: 3.1.4(postcss@8.4.49) + typescript: 5.6.3 - svelte2tsx@0.7.18(svelte@4.2.19)(typescript@5.4.5): + svelte2tsx@0.7.18(svelte@5.2.9)(typescript@5.6.3): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.19 - typescript: 5.4.5 - - svelte@4.2.19: - dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - '@types/estree': 1.0.6 - acorn: 8.12.1 - aria-query: 5.3.2 - axobject-query: 4.1.0 - code-red: 1.0.4 - css-tree: 2.3.1 - estree-walker: 3.0.3 - is-reference: 3.0.2 - locate-character: 3.0.0 - magic-string: 0.30.11 - periscopic: 3.1.0 + svelte: 5.2.9 + typescript: 5.6.3 - svelte@5.1.13: + svelte@5.2.9: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 '@types/estree': 1.0.6 - acorn: 8.12.1 - acorn-typescript: 1.4.13(acorn@8.12.1) + acorn: 8.14.0 + acorn-typescript: 1.4.13(acorn@8.14.0) aria-query: 5.3.2 axobject-query: 4.1.0 - esm-env: 1.0.0 + esm-env: 1.2.1 esrap: 1.2.2 - is-reference: 3.0.2 + is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.11 + magic-string: 0.30.14 zimmerframe: 1.1.2 tapable@2.2.1: {} @@ -6297,13 +5958,17 @@ snapshots: globalyzer: 0.1.0 globrex: 0.1.2 - tinybench@2.8.0: {} + tinybench@2.9.0: {} tinydate@1.3.0: {} - tinypool@1.0.0: {} + tinyexec@0.3.1: {} + + tinypool@1.0.2: {} + + tinyrainbow@1.2.0: {} - tinyspy@3.0.0: {} + tinyspy@3.0.2: {} tmp@0.0.33: dependencies: @@ -6321,10 +5986,6 @@ snapshots: dependencies: regexparam: 3.0.0 - ts-api-utils@1.3.0(typescript@5.4.5): - dependencies: - typescript: 5.4.5 - ts-api-utils@1.3.0(typescript@5.6.3): dependencies: typescript: 5.6.3 @@ -6346,8 +6007,6 @@ snapshots: - eslint - supports-color - typescript@5.4.5: {} - typescript@5.6.3: {} ufo@1.5.3: {} @@ -6384,22 +6043,23 @@ snapshots: kleur: 4.1.5 sade: 1.8.1 - vite-imagetools@7.0.1(rollup@4.24.0): + vite-imagetools@7.0.1(rollup@4.27.4): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.24.0) + '@rollup/pluginutils': 5.1.0(rollup@4.27.4) imagetools-core: 7.0.0 transitivePeerDependencies: - rollup - vite-node@2.0.1(@types/node@18.19.50)(lightningcss@1.24.1): + vite-node@2.1.6(@types/node@18.19.50)(lightningcss@1.24.1): dependencies: cac: 6.7.14 - debug: 4.3.5 + debug: 4.3.7 + es-module-lexer: 1.5.4 pathe: 1.1.2 - picocolors: 1.1.0 - vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) + vite: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - sass @@ -6408,70 +6068,60 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml - vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1): + vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1): dependencies: - esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.24.0 + esbuild: 0.24.0 + postcss: 8.4.49 + rollup: 4.27.4 optionalDependencies: '@types/node': 18.19.50 fsevents: 2.3.3 lightningcss: 1.24.1 - vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.24.0 + vitefu@1.0.4(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)): optionalDependencies: - '@types/node': 18.19.50 - fsevents: 2.3.3 - lightningcss: 1.24.1 - - vitefu@0.2.5(vite@5.3.6(@types/node@18.19.50)(lightningcss@1.24.1)): - optionalDependencies: - vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) - - vitefu@0.2.5(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)): - optionalDependencies: - vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) - - vitefu@1.0.3(vite@5.4.10(@types/node@18.19.50)(lightningcss@1.24.1)): - optionalDependencies: - vite: 5.4.10(@types/node@18.19.50)(lightningcss@1.24.1) - - vitest@2.0.1(@types/node@18.19.50)(lightningcss@1.24.1): - dependencies: - '@ampproject/remapping': 2.3.0 - '@vitest/expect': 2.0.1 - '@vitest/runner': 2.0.1 - '@vitest/snapshot': 2.0.1 - '@vitest/spy': 2.0.1 - '@vitest/utils': 2.0.1 - chai: 5.1.1 - debug: 4.3.5 - execa: 8.0.1 - magic-string: 0.30.11 + vite: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + + vitest@2.1.6(@types/node@18.19.50)(lightningcss@1.24.1): + dependencies: + '@vitest/expect': 2.1.6 + '@vitest/mocker': 2.1.6(vite@6.0.1(@types/node@18.19.50)(lightningcss@1.24.1)) + '@vitest/pretty-format': 2.1.6 + '@vitest/runner': 2.1.6 + '@vitest/snapshot': 2.1.6 + '@vitest/spy': 2.1.6 + '@vitest/utils': 2.1.6 + chai: 5.1.2 + debug: 4.3.7 + expect-type: 1.1.0 + magic-string: 0.30.14 pathe: 1.1.2 - picocolors: 1.1.0 - std-env: 3.7.0 - tinybench: 2.8.0 - tinypool: 1.0.0 - vite: 5.3.6(@types/node@18.19.50)(lightningcss@1.24.1) - vite-node: 2.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + std-env: 3.8.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.2 + tinyrainbow: 1.2.0 + vite: 6.0.1(@types/node@18.19.50)(lightningcss@1.24.1) + vite-node: 2.1.6(@types/node@18.19.50)(lightningcss@1.24.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 18.19.50 transitivePeerDependencies: + - jiti - less - lightningcss + - msw - sass - sass-embedded - stylus - sugarss - supports-color - terser + - tsx + - yaml webidl-conversions@3.0.1: {} From 42c8bf390a14ff18f604ae444d0f7a15c76ce911 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 29 Nov 2024 10:11:39 -0800 Subject: [PATCH 431/454] Version Packages (#13081) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/curvy-garlics-walk.md | 8 -------- .changeset/purple-comics-know.md | 5 ----- .changeset/slow-toes-clap.md | 5 ----- packages/adapter-cloudflare-workers/CHANGELOG.md | 12 ++++++++++++ packages/adapter-cloudflare-workers/package.json | 2 +- packages/adapter-cloudflare/CHANGELOG.md | 12 ++++++++++++ packages/adapter-cloudflare/package.json | 2 +- packages/adapter-netlify/CHANGELOG.md | 12 ++++++++++++ packages/adapter-netlify/package.json | 2 +- packages/adapter-vercel/CHANGELOG.md | 12 ++++++++++++ packages/adapter-vercel/package.json | 2 +- packages/kit/CHANGELOG.md | 12 ++++++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 14 files changed, 66 insertions(+), 24 deletions(-) delete mode 100644 .changeset/curvy-garlics-walk.md delete mode 100644 .changeset/purple-comics-know.md delete mode 100644 .changeset/slow-toes-clap.md diff --git a/.changeset/curvy-garlics-walk.md b/.changeset/curvy-garlics-walk.md deleted file mode 100644 index aa68c7585d68..000000000000 --- a/.changeset/curvy-garlics-walk.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@sveltejs/adapter-cloudflare-workers': minor -'@sveltejs/adapter-cloudflare': minor -'@sveltejs/adapter-netlify': minor -'@sveltejs/adapter-vercel': minor ---- - -chore: upgrade esbuild to 0.24.0 diff --git a/.changeset/purple-comics-know.md b/.changeset/purple-comics-know.md deleted file mode 100644 index 9334ee1fdab6..000000000000 --- a/.changeset/purple-comics-know.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': minor ---- - -feat: Vite 6 support diff --git a/.changeset/slow-toes-clap.md b/.changeset/slow-toes-clap.md deleted file mode 100644 index 77838348c450..000000000000 --- a/.changeset/slow-toes-clap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: transform link[rel='shortcut icon'] and link[rel='apple-touch-icon'] to be absolute to avoid console error when navigating diff --git a/packages/adapter-cloudflare-workers/CHANGELOG.md b/packages/adapter-cloudflare-workers/CHANGELOG.md index 02072ab969d8..a91453abbb70 100644 --- a/packages/adapter-cloudflare-workers/CHANGELOG.md +++ b/packages/adapter-cloudflare-workers/CHANGELOG.md @@ -1,5 +1,17 @@ # @sveltejs/adapter-cloudflare-workers +## 2.6.0 +### Minor Changes + + +- chore: upgrade esbuild to 0.24.0 ([#12270](https://github.com/sveltejs/kit/pull/12270)) + + +### Patch Changes + +- Updated dependencies [[`d030f4bb285e70844d09b3f0c87809bae43014b8`](https://github.com/sveltejs/kit/commit/d030f4bb285e70844d09b3f0c87809bae43014b8), [`67dd214863cbc5852eb0e8512efbb7bad5358e8a`](https://github.com/sveltejs/kit/commit/67dd214863cbc5852eb0e8512efbb7bad5358e8a)]: + - @sveltejs/kit@2.9.0 + ## 2.5.6 ### Patch Changes diff --git a/packages/adapter-cloudflare-workers/package.json b/packages/adapter-cloudflare-workers/package.json index 6715b2b8adeb..7db97724aa11 100644 --- a/packages/adapter-cloudflare-workers/package.json +++ b/packages/adapter-cloudflare-workers/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare-workers", - "version": "2.5.6", + "version": "2.6.0", "description": "SvelteKit adapter that creates a Cloudflare Workers site using a function for dynamic server rendering", "keywords": [ "adapter", diff --git a/packages/adapter-cloudflare/CHANGELOG.md b/packages/adapter-cloudflare/CHANGELOG.md index 16a1b821899f..a845c8a85189 100644 --- a/packages/adapter-cloudflare/CHANGELOG.md +++ b/packages/adapter-cloudflare/CHANGELOG.md @@ -1,5 +1,17 @@ # @sveltejs/adapter-cloudflare +## 4.8.0 +### Minor Changes + + +- chore: upgrade esbuild to 0.24.0 ([#12270](https://github.com/sveltejs/kit/pull/12270)) + + +### Patch Changes + +- Updated dependencies [[`d030f4bb285e70844d09b3f0c87809bae43014b8`](https://github.com/sveltejs/kit/commit/d030f4bb285e70844d09b3f0c87809bae43014b8), [`67dd214863cbc5852eb0e8512efbb7bad5358e8a`](https://github.com/sveltejs/kit/commit/67dd214863cbc5852eb0e8512efbb7bad5358e8a)]: + - @sveltejs/kit@2.9.0 + ## 4.7.4 ### Patch Changes diff --git a/packages/adapter-cloudflare/package.json b/packages/adapter-cloudflare/package.json index 27cc3471295f..4d49b21f4841 100644 --- a/packages/adapter-cloudflare/package.json +++ b/packages/adapter-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-cloudflare", - "version": "4.7.4", + "version": "4.8.0", "description": "Adapter for building SvelteKit applications on Cloudflare Pages with Workers integration", "keywords": [ "adapter", diff --git a/packages/adapter-netlify/CHANGELOG.md b/packages/adapter-netlify/CHANGELOG.md index 27ad75b65eaa..c1d077ff49aa 100644 --- a/packages/adapter-netlify/CHANGELOG.md +++ b/packages/adapter-netlify/CHANGELOG.md @@ -1,5 +1,17 @@ # @sveltejs/adapter-netlify +## 4.4.0 +### Minor Changes + + +- chore: upgrade esbuild to 0.24.0 ([#12270](https://github.com/sveltejs/kit/pull/12270)) + + +### Patch Changes + +- Updated dependencies [[`d030f4bb285e70844d09b3f0c87809bae43014b8`](https://github.com/sveltejs/kit/commit/d030f4bb285e70844d09b3f0c87809bae43014b8), [`67dd214863cbc5852eb0e8512efbb7bad5358e8a`](https://github.com/sveltejs/kit/commit/67dd214863cbc5852eb0e8512efbb7bad5358e8a)]: + - @sveltejs/kit@2.9.0 + ## 4.3.6 ### Patch Changes diff --git a/packages/adapter-netlify/package.json b/packages/adapter-netlify/package.json index f2f87d9d5edf..c407c76922ba 100644 --- a/packages/adapter-netlify/package.json +++ b/packages/adapter-netlify/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-netlify", - "version": "4.3.6", + "version": "4.4.0", "description": "A SvelteKit adapter that creates a Netlify app", "keywords": [ "adapter", diff --git a/packages/adapter-vercel/CHANGELOG.md b/packages/adapter-vercel/CHANGELOG.md index 9002d1d318e4..57bebeed2707 100644 --- a/packages/adapter-vercel/CHANGELOG.md +++ b/packages/adapter-vercel/CHANGELOG.md @@ -1,5 +1,17 @@ # @sveltejs/adapter-vercel +## 5.5.0 +### Minor Changes + + +- chore: upgrade esbuild to 0.24.0 ([#12270](https://github.com/sveltejs/kit/pull/12270)) + + +### Patch Changes + +- Updated dependencies [[`d030f4bb285e70844d09b3f0c87809bae43014b8`](https://github.com/sveltejs/kit/commit/d030f4bb285e70844d09b3f0c87809bae43014b8), [`67dd214863cbc5852eb0e8512efbb7bad5358e8a`](https://github.com/sveltejs/kit/commit/67dd214863cbc5852eb0e8512efbb7bad5358e8a)]: + - @sveltejs/kit@2.9.0 + ## 5.4.8 ### Patch Changes diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 884c460f24e1..d768f98b909a 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-vercel", - "version": "5.4.8", + "version": "5.5.0", "description": "A SvelteKit adapter that creates a Vercel app", "keywords": [ "adapter", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 31784d40d540..4ec70d7dc666 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,17 @@ # @sveltejs/kit +## 2.9.0 +### Minor Changes + + +- feat: Vite 6 support ([#12270](https://github.com/sveltejs/kit/pull/12270)) + + +### Patch Changes + + +- fix: transform link[rel='shortcut icon'] and link[rel='apple-touch-icon'] to be absolute to avoid console error when navigating ([#13077](https://github.com/sveltejs/kit/pull/13077)) + ## 2.8.5 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index a0ed5b02bef5..bbff055c4720 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.8.5", + "version": "2.9.0", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index 616f0dae624f..dc207ff654d2 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.8.5'; +export const VERSION = '2.9.0'; From 8aef436e06c1e2b3186d3ceb7e8c29c54a5b02bd Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Sun, 1 Dec 2024 09:42:59 -0500 Subject: [PATCH 432/454] fix cloudflare docs (#13086) * fix cloudflare docs * gah missed a spot --- documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md | 2 ++ .../docs/25-build-and-deploy/70-adapter-cloudflare-workers.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md index 3704dc0454b8..9a4b2b7e717a 100644 --- a/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md +++ b/documentation/docs/25-build-and-deploy/60-adapter-cloudflare.md @@ -86,6 +86,8 @@ To include type declarations for your bindings, reference them in your `src/app. ```ts /// file: src/app.d.ts +import { KVNamespace, DurableObjectNamespace } from '@cloudflare/workers-types'; + declare global { namespace App { interface Platform { diff --git a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md index b4e270f62283..bd53dd4d8e7d 100644 --- a/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md +++ b/documentation/docs/25-build-and-deploy/70-adapter-cloudflare-workers.md @@ -107,6 +107,8 @@ To include type declarations for your bindings, reference them in your `src/app. ```ts /// file: src/app.d.ts +import { KVNamespace, DurableObjectNamespace } from '@cloudflare/workers-types'; + declare global { namespace App { interface Platform { From 38d65e31c53055694165b7a042d10d8a54c141cb Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sun, 1 Dec 2024 17:59:03 -0800 Subject: [PATCH 433/454] chore: upgrade @vercel/nft to 0.27.7 (#13082) --- .changeset/few-lamps-work.md | 5 ++++ packages/adapter-vercel/package.json | 2 +- pnpm-lock.yaml | 38 +++++++++++----------------- 3 files changed, 21 insertions(+), 24 deletions(-) create mode 100644 .changeset/few-lamps-work.md diff --git a/.changeset/few-lamps-work.md b/.changeset/few-lamps-work.md new file mode 100644 index 000000000000..e3f0846f5a37 --- /dev/null +++ b/.changeset/few-lamps-work.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-vercel': patch +--- + +chore: upgrade @vercel/nft to 0.27.7 diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index d768f98b909a..69e6f19a3b0c 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -39,7 +39,7 @@ "test": "vitest run" }, "dependencies": { - "@vercel/nft": "^0.27.1", + "@vercel/nft": "^0.27.7", "esbuild": "^0.24.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4c7a7dca9fbb..b932daa819d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,8 +263,8 @@ importers: packages/adapter-vercel: dependencies: '@vercel/nft': - specifier: ^0.27.1 - version: 0.27.1 + specifier: ^0.27.7 + version: 0.27.7(rollup@4.27.4) esbuild: specifier: ^0.24.0 version: 0.24.0 @@ -1774,12 +1774,8 @@ packages: rollup: optional: true - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -2006,8 +2002,8 @@ packages: resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vercel/nft@0.27.1': - resolution: {integrity: sha512-K6upzYHCV1cq2gP83r1o8uNV1vwvAlozvMqp7CEjYWxo0CMI8/4jKcDkVjlypVhrfZ54SXwh9QbH0ZIk/vQCsw==} + '@vercel/nft@0.27.7': + resolution: {integrity: sha512-FG6H5YkP4bdw9Ll1qhmbxuE8KwW2E/g8fJpM183fWQLeVDGqzeywMIeJ9h2txdWZ03psgWMn6QymTxaDLmdwUg==} engines: {node: '>=16'} hasBin: true @@ -4264,7 +4260,7 @@ snapshots: '@rollup/plugin-commonjs@28.0.1(rollup@4.27.4)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.27.4) + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.0(picomatch@4.0.2) @@ -4276,13 +4272,13 @@ snapshots: '@rollup/plugin-json@6.1.0(rollup@4.27.4)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.27.4) + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) optionalDependencies: rollup: 4.27.4 '@rollup/plugin-node-resolve@15.3.0(rollup@4.27.4)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.27.4) + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 @@ -4290,16 +4286,11 @@ snapshots: optionalDependencies: rollup: 4.27.4 - '@rollup/pluginutils@4.2.1': - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - - '@rollup/pluginutils@5.1.0(rollup@4.27.4)': + '@rollup/pluginutils@5.1.3(rollup@4.27.4)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 - picomatch: 2.3.1 + picomatch: 4.0.2 optionalDependencies: rollup: 4.27.4 @@ -4523,10 +4514,10 @@ snapshots: '@typescript-eslint/types': 8.4.0 eslint-visitor-keys: 3.4.3 - '@vercel/nft@0.27.1': + '@vercel/nft@0.27.7(rollup@4.27.4)': dependencies: '@mapbox/node-pre-gyp': 1.0.11 - '@rollup/pluginutils': 4.2.1 + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) acorn: 8.14.0 acorn-import-attributes: 1.9.5(acorn@8.14.0) async-sema: 3.1.1 @@ -4539,6 +4530,7 @@ snapshots: resolve-from: 5.0.0 transitivePeerDependencies: - encoding + - rollup - supports-color '@vitest/expect@2.1.6': @@ -6045,7 +6037,7 @@ snapshots: vite-imagetools@7.0.1(rollup@4.27.4): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.27.4) + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) imagetools-core: 7.0.0 transitivePeerDependencies: - rollup From 78404dfe1eb346723eefc183278b85f25485b419 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Tue, 3 Dec 2024 18:30:10 +0800 Subject: [PATCH 434/454] fix: correctly match route groups preceding optional parameters (#13099) fixes #13095 This PR changes the RegExp to ensure that routes such as /[[optional]]/(group) are treated the same as [[optional]]. Previously, /[[optional]]/(group) was being treated the same as / which is incorrect since it has an optional segment. It wasn't recognised as /[[optional]] because the RegExp didn't consider the route group preceding it (it only looked for the end of the string). --- .changeset/fifty-cars-lie.md | 5 +++ .../sync/create_manifest_data/index.spec.js | 42 +++++++++++++++++++ .../core/sync/create_manifest_data/sort.js | 3 +- .../[[optional]]/(group)/+page.svelte | 0 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 .changeset/fifty-cars-lie.md create mode 100644 packages/kit/src/core/sync/create_manifest_data/test/samples/optional-group/[[optional]]/(group)/+page.svelte diff --git a/.changeset/fifty-cars-lie.md b/.changeset/fifty-cars-lie.md new file mode 100644 index 000000000000..cac282e057be --- /dev/null +++ b/.changeset/fifty-cars-lie.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: correctly match route groups preceding optional parameters diff --git a/packages/kit/src/core/sync/create_manifest_data/index.spec.js b/packages/kit/src/core/sync/create_manifest_data/index.spec.js index 758206be45d5..2642e0c3cce0 100644 --- a/packages/kit/src/core/sync/create_manifest_data/index.spec.js +++ b/packages/kit/src/core/sync/create_manifest_data/index.spec.js @@ -412,6 +412,48 @@ test('nested optionals', () => { ]); }); +test('group preceding optional parameters', () => { + const { nodes, routes } = create('samples/optional-group'); + + expect( + nodes + .map(simplify_node) + // for some reason linux and windows have a different order, which is why + // we need sort the nodes using a sort function (doesn't work either without), + // resulting in the following expected node order + .sort((a, b) => a.component?.localeCompare(b.component ?? '') ?? 1) + ).toEqual([ + default_error, + default_layout, + { + component: 'samples/optional-group/[[optional]]/(group)/+page.svelte' + } + ]); + + expect(routes.map(simplify_route)).toEqual([ + { + id: '/', + pattern: '/^/$/' + }, + { + id: '/[[optional]]/(group)', + pattern: '/^(?:/([^/]+))?/?$/', + page: { + layouts: [0], + errors: [1], + // see above, linux/windows difference -> find the index dynamically + leaf: nodes.findIndex((node) => + node.component?.includes('optional-group/[[optional]]/(group)') + ) + } + }, + { + id: '/[[optional]]', + pattern: '/^(?:/([^/]+))?/?$/' + } + ]); +}); + test('ignores files and directories with leading underscores', () => { const { routes } = create('samples/hidden-underscore'); diff --git a/packages/kit/src/core/sync/create_manifest_data/sort.js b/packages/kit/src/core/sync/create_manifest_data/sort.js index 9addd2c390c8..1629d146bf3e 100644 --- a/packages/kit/src/core/sync/create_manifest_data/sort.js +++ b/packages/kit/src/core/sync/create_manifest_data/sort.js @@ -136,7 +136,8 @@ function split_route_id(id) { return get_route_segments( id // remove all [[optional]] parts unless they're at the very end - .replace(/\[\[[^\]]+\]\](?!$)/g, '') + // or it ends with a route group + .replace(/\[\[[^\]]+\]\](?!(?:\/\([^/]+\))*$)/g, '') ).filter(Boolean); } diff --git a/packages/kit/src/core/sync/create_manifest_data/test/samples/optional-group/[[optional]]/(group)/+page.svelte b/packages/kit/src/core/sync/create_manifest_data/test/samples/optional-group/[[optional]]/(group)/+page.svelte new file mode 100644 index 000000000000..e69de29bb2d1 From b77753ea26ea41dc8d2f35970321616d0184bd89 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Wed, 4 Dec 2024 10:42:54 +0800 Subject: [PATCH 435/454] chore: publish other packages to pkg.pr.new (#13096) * add other packages to pkg.pr.new * Update .github/workflows/ci.yml Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --------- Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c754c5f185f8..b8529b9a6a7b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - - run: pnpx pkg-pr-new publish --comment=off ./packages/kit + - run: pnpx pkg-pr-new publish --comment=off ./packages/* lint-all: runs-on: ubuntu-latest steps: From 72a70838f9e3b1070ef3da7d5f8e02cc402b744d Mon Sep 17 00:00:00 2001 From: Tom Adler <me@arty.name> Date: Wed, 4 Dec 2024 14:24:00 +0100 Subject: [PATCH 436/454] docs: remove extraneous dash (#13105) --- documentation/docs/20-core-concepts/10-routing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/20-core-concepts/10-routing.md b/documentation/docs/20-core-concepts/10-routing.md index 3cb2ba3ef3aa..b54074cdd75a 100644 --- a/documentation/docs/20-core-concepts/10-routing.md +++ b/documentation/docs/20-core-concepts/10-routing.md @@ -169,7 +169,7 @@ To create a layout that applies to every page, make a file called `src/routes/+l ...but we can add whatever markup, styles and behaviour we want. The only requirement is that the component includes a `@render` tag for the page content. For example, let's add a nav bar: ```svelte -<!---- file: src/routes/+layout.svelte ---> +<!--- file: src/routes/+layout.svelte ---> <script> let { children } = $props(); </script> From 5819e66f8fec555decfa857a14d3ca7ba3241505 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:37:43 -0800 Subject: [PATCH 437/454] chore(deps): update pnpm to v9.15.0 (#13116) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6801ee9b2c2d..704805dd4ecd 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "prettier-plugin-svelte": "^3.1.2", "typescript-eslint": "^8.0.0" }, - "packageManager": "pnpm@9.14.4", + "packageManager": "pnpm@9.15.0", "engines": { "pnpm": "^9.0.0" } From ec35c837db9768342d69743474eac7488175fa38 Mon Sep 17 00:00:00 2001 From: Devr <bhargavj2804@pm.me> Date: Sun, 8 Dec 2024 05:01:17 +0530 Subject: [PATCH 438/454] docs: update Lucia URL (#13119) --- documentation/docs/40-best-practices/03-auth.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/40-best-practices/03-auth.md b/documentation/docs/40-best-practices/03-auth.md index b2b8e07aa82c..a68197ef8bbb 100644 --- a/documentation/docs/40-best-practices/03-auth.md +++ b/documentation/docs/40-best-practices/03-auth.md @@ -18,6 +18,6 @@ Auth [cookies](@sveltejs-kit#Cookies) can be checked inside [server hooks](hooks ## Guides -[Lucia](https://lucia-next.pages.dev/) is a reference for session-based web app auth. It contains example code snippets and projects for implementing session-based auth within SvelteKit and other JS projects. You can add code which follows the Lucia guide to your project with `npx sv create` when creating a new project or `npx sv add lucia` for an existing project. +[Lucia](https://lucia-auth.com/) is a reference for session-based web app auth. It contains example code snippets and projects for implementing session-based auth within SvelteKit and other JS projects. You can add code which follows the Lucia guide to your project with `npx sv create` when creating a new project or `npx sv add lucia` for an existing project. -An auth system is tightly coupled to a web framework because most of the code lies in validating user input, handling errors, and directing users to the appropriate next page. As a result, many of the generic JS auth libraries include one or more web frameworks within them. For this reason, many users will find it preferrable to follow a SvelteKit-specific guide such as the examples found in [Lucia](https://lucia-next.pages.dev/) rather than having multiple web frameworks inside their project. +An auth system is tightly coupled to a web framework because most of the code lies in validating user input, handling errors, and directing users to the appropriate next page. As a result, many of the generic JS auth libraries include one or more web frameworks within them. For this reason, many users will find it preferrable to follow a SvelteKit-specific guide such as the examples found in [Lucia](https://lucia-auth.com/) rather than having multiple web frameworks inside their project. From eb25a62436aa946214de19d0c3f3d64baf814069 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sat, 7 Dec 2024 15:31:56 -0800 Subject: [PATCH 439/454] perf: directly inline values since Svelte no longer inlines (#13035) --- .changeset/wild-flies-run.md | 5 +++ packages/enhanced-img/src/preprocessor.js | 48 ++++++----------------- packages/enhanced-img/test/Output.svelte | 11 ++---- 3 files changed, 19 insertions(+), 45 deletions(-) create mode 100644 .changeset/wild-flies-run.md diff --git a/.changeset/wild-flies-run.md b/.changeset/wild-flies-run.md new file mode 100644 index 000000000000..3f1f70ec0170 --- /dev/null +++ b/.changeset/wild-flies-run.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/enhanced-img': patch +--- + +perf: directly inline values since Svelte no longer inlines variables into template diff --git a/packages/enhanced-img/src/preprocessor.js b/packages/enhanced-img/src/preprocessor.js index dbba1aa5514f..7331cff18e11 100644 --- a/packages/enhanced-img/src/preprocessor.js +++ b/packages/enhanced-img/src/preprocessor.js @@ -5,7 +5,6 @@ import * as path from 'node:path'; import MagicString from 'magic-string'; import { walk } from 'zimmerframe'; -import { VERSION } from 'svelte/compiler'; import { parse } from 'svelte-parse-markup'; // TODO: expose this in vite-imagetools rather than duplicating it @@ -43,13 +42,6 @@ export function image(opts) { */ const imports = new Map(); - /** - * Vite name to declaration name - * e.g. __VITE_ASSET_0__ => __DECLARED_ASSET_0__ - * @type {Map<string, string>} - */ - const consts = new Map(); - /** * @param {import('svelte/compiler').AST.RegularElement} node * @param {AST.Text | AST.ExpressionTag} src_attribute @@ -110,7 +102,7 @@ export function image(opts) { image = await process(resolved_id, opts); images.set(resolved_id, image); } - s.update(node.start, node.end, img_to_picture(consts, content, node, image)); + s.update(node.start, node.end, img_to_picture(content, node, image)); } else { // e.g. <img src="./foo.svg" /> => <img src={__IMPORTED_ASSET_0__} /> const name = '__IMPORTED_ASSET_' + imports.size + '__'; @@ -160,7 +152,7 @@ export function image(opts) { await Promise.all(pending_ast_updates); - // add imports and consts to <script module> block + // add imports let text = ''; if (imports.size) { for (const [path, import_name] of imports.entries()) { @@ -168,19 +160,11 @@ export function image(opts) { } } - if (consts.size) { - for (const [vite_name, declaration_name] of consts.entries()) { - text += `\tconst ${declaration_name} = "${vite_name}";\n`; - } - } - - if (ast.module) { + if (ast.instance) { // @ts-ignore - s.appendLeft(ast.module.content.start, text); + s.appendLeft(ast.instance.content.start, text); } else { - s.prepend( - `<script ${VERSION.startsWith('4') ? 'context="module"' : 'module'}>${text}</script>\n` - ); + s.prepend(`<script>${text}</script>\n`); } return { @@ -318,12 +302,11 @@ function stringToNumber(param) { } /** - * @param {Map<string,string>} consts * @param {string} content * @param {import('svelte/compiler').AST.RegularElement} node * @param {import('vite-imagetools').Picture} image */ -function img_to_picture(consts, content, node, image) { +function img_to_picture(content, node, image) { /** @type {import('../types/internal.ts').Attribute[]} attributes */ const attributes = node.attributes; const index = attributes.findIndex( @@ -338,11 +321,11 @@ function img_to_picture(consts, content, node, image) { let res = '<picture>'; for (const [format, srcset] of Object.entries(image.sources)) { - res += `<source srcset=${to_value(consts, srcset)}${sizes_string} type="image/${format}" />`; + res += `<source srcset=${to_value(srcset)}${sizes_string} type="image/${format}" />`; } res += `<img ${serialize_img_attributes(content, attributes, { - src: to_value(consts, image.img.src), + src: to_value(image.img.src), width: image.img.w, height: image.img.h })} />`; @@ -351,20 +334,11 @@ function img_to_picture(consts, content, node, image) { } /** - * @param {Map<string, string>} consts * @param {string} src */ -function to_value(consts, src) { - if (src.startsWith('__VITE_ASSET__')) { - let var_name = consts.get(src); - if (!var_name) { - var_name = '__DECLARED_ASSET_' + consts.size + '__'; - consts.set(src, var_name); - } - return `{${var_name}}`; - } - - return `"${src}"`; +function to_value(src) { + // __VITE_ASSET__ needs to be contained in double quotes to work with Vite asset plugin + return src.startsWith('__VITE_ASSET__') ? `{"${src}"}` : `"${src}"`; } /** diff --git a/packages/enhanced-img/test/Output.svelte b/packages/enhanced-img/test/Output.svelte index 80a8485485ad..4d8bcc402272 100644 --- a/packages/enhanced-img/test/Output.svelte +++ b/packages/enhanced-img/test/Output.svelte @@ -1,11 +1,6 @@ -<script module> +<script lang="ts"> import __IMPORTED_ASSET_0__ from "./foo.svg"; - const __DECLARED_ASSET_0__ = "__VITE_ASSET__2AM7_y_a__ 1440w, __VITE_ASSET__2AM7_y_b__ 960w"; - const __DECLARED_ASSET_1__ = "__VITE_ASSET__2AM7_y_c__ 1440w, __VITE_ASSET__2AM7_y_d__ 960w"; - const __DECLARED_ASSET_2__ = "__VITE_ASSET__2AM7_y_e__ 1440w, __VITE_ASSET__2AM7_y_f__ 960w"; - const __DECLARED_ASSET_3__ = "__VITE_ASSET__2AM7_y_g__"; -</script> -<script lang="ts"> + import manual_image1 from './no.png'; @@ -28,7 +23,7 @@ <picture><source srcset="/1 1440w, /2 960w" type="image/avif" /><source srcset="/3 1440w, /4 960w" type="image/webp" /><source srcset="5 1440w, /6 960w" type="image/png" /><img src="/7" alt="nested test" width=1440 height=1440 /></picture> </div> -<picture><source srcset={__DECLARED_ASSET_0__} type="image/avif" /><source srcset={__DECLARED_ASSET_1__} type="image/webp" /><source srcset={__DECLARED_ASSET_2__} type="image/png" /><img src={__DECLARED_ASSET_3__} alt="production test" width=1440 height=1440 /></picture> +<picture><source srcset={"__VITE_ASSET__2AM7_y_a__ 1440w, __VITE_ASSET__2AM7_y_b__ 960w"} type="image/avif" /><source srcset={"__VITE_ASSET__2AM7_y_c__ 1440w, __VITE_ASSET__2AM7_y_d__ 960w"} type="image/webp" /><source srcset={"__VITE_ASSET__2AM7_y_e__ 1440w, __VITE_ASSET__2AM7_y_f__ 960w"} type="image/png" /><img src={"__VITE_ASSET__2AM7_y_g__"} alt="production test" width=1440 height=1440 /></picture> <picture><source srcset="/1 1440w, /2 960w" type="image/avif" /><source srcset="/3 1440w, /4 960w" type="image/webp" /><source srcset="5 1440w, /6 960w" type="image/png" /><img src="/7" width="5" height="10" alt="dimensions test" /></picture> From e2746ef39f5f2ca2d45ab3a081edf4f7200a5b98 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 9 Dec 2024 11:14:58 -0800 Subject: [PATCH 440/454] feat: set intrinsic width and height for SVGs (#13126) --- .changeset/tricky-squids-provide.md | 5 + packages/enhanced-img/package.json | 1 + packages/enhanced-img/src/preprocessor.js | 74 +++--- packages/enhanced-img/test/Input.svelte | 2 - packages/enhanced-img/test/Output.svelte | 6 +- .../enhanced-img/test/preprocessor.spec.js | 2 +- playgrounds/basic/package.json | 1 + playgrounds/basic/src/routes/+page.svelte | 6 + .../basic/src/routes/about/+page.svelte | 1 - .../basic/src/routes/images/+page.svelte | 11 + .../src/routes/images/state-of-js-chart.png | Bin 0 -> 190480 bytes .../basic/src/routes/images/svelte-logo.svg | 1 + playgrounds/basic/vite.config.js | 3 +- pnpm-lock.yaml | 216 +++++++++--------- 14 files changed, 169 insertions(+), 160 deletions(-) create mode 100644 .changeset/tricky-squids-provide.md delete mode 100644 playgrounds/basic/src/routes/about/+page.svelte create mode 100644 playgrounds/basic/src/routes/images/+page.svelte create mode 100644 playgrounds/basic/src/routes/images/state-of-js-chart.png create mode 100644 playgrounds/basic/src/routes/images/svelte-logo.svg diff --git a/.changeset/tricky-squids-provide.md b/.changeset/tricky-squids-provide.md new file mode 100644 index 000000000000..d15da40874d9 --- /dev/null +++ b/.changeset/tricky-squids-provide.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/enhanced-img': patch +--- + +feat: set intrinsic width and height for SVGs diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 4fc2bbc76dcb..41157706762f 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -37,6 +37,7 @@ "types": "types/index.d.ts", "dependencies": { "magic-string": "^0.30.5", + "sharp": "^0.33.5", "svelte-parse-markup": "^0.1.5", "vite-imagetools": "^7.0.1", "zimmerframe": "^1.1.2" diff --git a/packages/enhanced-img/src/preprocessor.js b/packages/enhanced-img/src/preprocessor.js index 7331cff18e11..de800b653734 100644 --- a/packages/enhanced-img/src/preprocessor.js +++ b/packages/enhanced-img/src/preprocessor.js @@ -4,8 +4,9 @@ import { existsSync } from 'node:fs'; import * as path from 'node:path'; import MagicString from 'magic-string'; -import { walk } from 'zimmerframe'; +import sharp from 'sharp'; import { parse } from 'svelte-parse-markup'; +import { walk } from 'zimmerframe'; // TODO: expose this in vite-imagetools rather than duplicating it const OPTIMIZABLE = /^[^?]+\.(avif|heif|gif|jpeg|jpg|png|tiff|webp)(\?.*)?$/; @@ -70,33 +71,36 @@ export function image(opts) { const original_url = src_attribute.raw.trim(); let url = original_url; - const sizes = get_attr_value(node, 'sizes'); - const width = get_attr_value(node, 'width'); - url += url.includes('?') ? '&' : '?'; - if (sizes && 'raw' in sizes) { - url += 'imgSizes=' + encodeURIComponent(sizes.raw) + '&'; - } - if (width && 'raw' in width) { - url += 'imgWidth=' + encodeURIComponent(width.raw) + '&'; + if (OPTIMIZABLE.test(url)) { + const sizes = get_attr_value(node, 'sizes'); + const width = get_attr_value(node, 'width'); + url += url.includes('?') ? '&' : '?'; + if (sizes && 'raw' in sizes) { + url += 'imgSizes=' + encodeURIComponent(sizes.raw) + '&'; + } + if (width && 'raw' in width) { + url += 'imgWidth=' + encodeURIComponent(width.raw) + '&'; + } + url += 'enhanced'; } - url += 'enhanced'; - if (OPTIMIZABLE.test(url)) { - // resolves the import so that we can build the entire picture template string and don't - // need any logic blocks - const resolved_id = (await opts.plugin_context.resolve(url, filename))?.id; - if (!resolved_id) { - const file_path = url.substring(0, url.indexOf('?')); - if (existsSync(path.resolve(opts.vite_config.publicDir, file_path))) { - throw new Error( - `Could not locate ${file_path}. Please move it to be located relative to the page in the routes directory or reference it beginning with /static/. See https://vitejs.dev/guide/assets for more details on referencing assets.` - ); - } + // resolves the import so that we can build the entire picture template string and don't + // need any logic blocks + const resolved_id = (await opts.plugin_context.resolve(url, filename))?.id; + if (!resolved_id) { + const query_index = url.indexOf('?'); + const file_path = query_index >= 0 ? url.substring(0, query_index) : url; + if (existsSync(path.resolve(opts.vite_config.publicDir, file_path))) { throw new Error( - `Could not locate ${file_path}. See https://vitejs.dev/guide/assets for more details on referencing assets.` + `Could not locate ${file_path}. Please move it to be located relative to the page in the routes directory or reference it beginning with /static/. See https://vitejs.dev/guide/assets for more details on referencing assets.` ); } + throw new Error( + `Could not locate ${file_path}. See https://vitejs.dev/guide/assets for more details on referencing assets.` + ); + } + if (OPTIMIZABLE.test(url)) { let image = images.get(resolved_id); if (!image) { image = await process(resolved_id, opts); @@ -104,17 +108,14 @@ export function image(opts) { } s.update(node.start, node.end, img_to_picture(content, node, image)); } else { - // e.g. <img src="./foo.svg" /> => <img src={__IMPORTED_ASSET_0__} /> const name = '__IMPORTED_ASSET_' + imports.size + '__'; - const { start, end } = src_attribute; - // update src with reference to imported asset - s.update( - is_quote(content, start - 1) ? start - 1 : start, - is_quote(content, end) ? end + 1 : end, - `{${name}}` - ); - // update `enhanced:img` to `img` - s.update(node.start + 1, node.start + 1 + 'enhanced:img'.length, 'img'); + const metadata = await sharp(resolved_id).metadata(); + const new_markup = `<img ${serialize_img_attributes(content, node.attributes, { + src: `{${name}}`, + width: metadata.width || 0, + height: metadata.height || 0 + })} />`; + s.update(node.start, node.end, new_markup); imports.set(original_url, name); } } @@ -175,15 +176,6 @@ export function image(opts) { }; } -/** - * @param {string} content - * @param {number} index - * @returns {boolean} - */ -function is_quote(content, index) { - return content.charAt(index) === '"' || content.charAt(index) === "'"; -} - /** * @param {string} resolved_id * @param {{ diff --git a/packages/enhanced-img/test/Input.svelte b/packages/enhanced-img/test/Input.svelte index 3a29902d0930..35fd9c59901d 100644 --- a/packages/enhanced-img/test/Input.svelte +++ b/packages/enhanced-img/test/Input.svelte @@ -45,8 +45,6 @@ <enhanced:img {src} alt="attribute shorthand test" /> -<enhanced:img src="./foo.svg" alt="svg test" /> - {#each images as image} <enhanced:img src={image} alt="opt-in test" /> {/each} diff --git a/packages/enhanced-img/test/Output.svelte b/packages/enhanced-img/test/Output.svelte index 4d8bcc402272..d8c18c1ad88f 100644 --- a/packages/enhanced-img/test/Output.svelte +++ b/packages/enhanced-img/test/Output.svelte @@ -1,6 +1,4 @@ -<script lang="ts"> - import __IMPORTED_ASSET_0__ from "./foo.svg"; - +<script lang="ts"> import manual_image1 from './no.png'; @@ -50,8 +48,6 @@ </picture> {/if} -<img src={__IMPORTED_ASSET_0__} alt="svg test" /> - {#each images as image} {#if typeof image === 'string'} <img src={image.img.src} alt="opt-in test" width={image.img.w} height={image.img.h} /> diff --git a/packages/enhanced-img/test/preprocessor.spec.js b/packages/enhanced-img/test/preprocessor.spec.js index 5c05b11107b4..96d1b5740eb7 100644 --- a/packages/enhanced-img/test/preprocessor.spec.js +++ b/packages/enhanced-img/test/preprocessor.spec.js @@ -37,7 +37,7 @@ it('Image preprocess snapshot test', async () => { // Make imports readable const ouput = processed.code.replace(/import/g, '\n\timport'); - expect(ouput).toMatchFileSnapshot('./Output.svelte'); + await expect(ouput).toMatchFileSnapshot('./Output.svelte'); }); it('parses a minimized object', () => { diff --git a/playgrounds/basic/package.json b/playgrounds/basic/package.json index bd69a0b29525..a24de2d8ba70 100644 --- a/playgrounds/basic/package.json +++ b/playgrounds/basic/package.json @@ -22,6 +22,7 @@ "@sveltejs/adapter-static": "workspace:*", "@sveltejs/adapter-vercel": "workspace:*", "@sveltejs/amp": "workspace:*", + "@sveltejs/enhanced-img": "workspace:*", "@sveltejs/kit": "workspace:*", "@sveltejs/package": "workspace:*", "@sveltejs/vite-plugin-svelte": "^5.0.1", diff --git a/playgrounds/basic/src/routes/+page.svelte b/playgrounds/basic/src/routes/+page.svelte index a1c65230591f..b3872f2e7f2c 100644 --- a/playgrounds/basic/src/routes/+page.svelte +++ b/playgrounds/basic/src/routes/+page.svelte @@ -7,3 +7,9 @@ <h1>Welcome to SvelteKit</h1> 2 + 2 = {data.sum} + +<h2>Pages:</h2> + +<ul> + <li><a href="images">images</a></li> +</ul> diff --git a/playgrounds/basic/src/routes/about/+page.svelte b/playgrounds/basic/src/routes/about/+page.svelte deleted file mode 100644 index d73780a99efd..000000000000 --- a/playgrounds/basic/src/routes/about/+page.svelte +++ /dev/null @@ -1 +0,0 @@ -<a href="/">home</a> diff --git a/playgrounds/basic/src/routes/images/+page.svelte b/playgrounds/basic/src/routes/images/+page.svelte new file mode 100644 index 000000000000..60bdbf3fd21c --- /dev/null +++ b/playgrounds/basic/src/routes/images/+page.svelte @@ -0,0 +1,11 @@ +<div><a href="/">home</a></div> +<br /> +<div> + <enhanced:img + src="./state-of-js-chart.png" + style="width:700px; height:auto" + alt="Svelte Collective" + /> +</div> +<br /> +<div><enhanced:img src="./svelte-logo.svg" alt="Svelte" /></div> diff --git a/playgrounds/basic/src/routes/images/state-of-js-chart.png b/playgrounds/basic/src/routes/images/state-of-js-chart.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e4b3e6d80a921b31dc57ac94beeec88a63d32f GIT binary patch literal 190480 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 AasU7T literal 0 HcmV?d00001 diff --git a/playgrounds/basic/src/routes/images/svelte-logo.svg b/playgrounds/basic/src/routes/images/svelte-logo.svg new file mode 100644 index 000000000000..d8b477bee13e --- /dev/null +++ b/playgrounds/basic/src/routes/images/svelte-logo.svg @@ -0,0 +1 @@ +<svg enable-background="new 0 0 98.1 118" viewBox="0 0 98.1 118" xmlns="http://www.w3.org/2000/svg"><path d="m91.8 15.6c-10.9-15.7-32.6-20.3-48.2-10.4l-27.5 17.6c-7.5 4.7-12.7 12.4-14.2 21.1-1.3 7.3-.2 14.8 3.3 21.3-2.4 3.6-4 7.6-4.7 11.8-1.6 8.9.5 18.1 5.7 25.4 11 15.7 32.6 20.3 48.2 10.4l27.5-17.5c7.5-4.7 12.7-12.4 14.2-21.1 1.3-7.3.2-14.8-3.3-21.3 2.4-3.6 4-7.6 4.7-11.8 1.7-9-.4-18.2-5.7-25.5" fill="#ff3e00"/><path d="m40.9 103.9c-8.9 2.3-18.2-1.2-23.4-8.7-3.2-4.4-4.4-9.9-3.5-15.3.2-.9.4-1.7.6-2.6l.5-1.6 1.4 1c3.3 2.4 6.9 4.2 10.8 5.4l1 .3-.1 1c-.1 1.4.3 2.9 1.1 4.1 1.6 2.3 4.4 3.4 7.1 2.7.6-.2 1.2-.4 1.7-.7l27.4-17.5c1.4-.9 2.3-2.2 2.6-3.8s-.1-3.3-1-4.6c-1.6-2.3-4.4-3.3-7.1-2.6-.6.2-1.2.4-1.7.7l-10.5 6.7c-1.7 1.1-3.6 1.9-5.6 2.4-8.9 2.3-18.2-1.2-23.4-8.7-3.1-4.4-4.4-9.9-3.4-15.3.9-5.2 4.1-9.9 8.6-12.7l27.5-17.5c1.7-1.1 3.6-1.9 5.6-2.5 8.9-2.3 18.2 1.2 23.4 8.7 3.2 4.4 4.4 9.9 3.5 15.3-.2.9-.4 1.7-.7 2.6l-.5 1.6-1.4-1c-3.3-2.4-6.9-4.2-10.8-5.4l-1-.3.1-1c.1-1.4-.3-2.9-1.1-4.1-1.6-2.3-4.4-3.3-7.1-2.6-.6.2-1.2.4-1.7.7l-27.4 17.5c-1.4.9-2.3 2.2-2.6 3.8s.1 3.3 1 4.6c1.6 2.3 4.4 3.3 7.1 2.6.6-.2 1.2-.4 1.7-.7l10.5-6.7c1.7-1.1 3.6-1.9 5.6-2.5 8.9-2.3 18.2 1.2 23.4 8.7 3.2 4.4 4.4 9.9 3.5 15.3-.9 5.2-4.1 9.9-8.6 12.7l-27.5 17.5c-1.7 1.1-3.6 1.9-5.6 2.5" fill="#fff"/></svg> \ No newline at end of file diff --git a/playgrounds/basic/vite.config.js b/playgrounds/basic/vite.config.js index 23ac5e8dcd7b..e9e130ab87a3 100644 --- a/playgrounds/basic/vite.config.js +++ b/playgrounds/basic/vite.config.js @@ -1,7 +1,8 @@ +import { enhancedImages } from '@sveltejs/enhanced-img'; import { sveltekit } from '@sveltejs/kit/vite'; export default { - plugins: [sveltekit()], + plugins: [enhancedImages(), sveltekit()], server: { fs: { allow: ['../../packages/kit'] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b932daa819d1..99c30e915614 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -302,6 +302,9 @@ importers: magic-string: specifier: ^0.30.5 version: 0.30.14 + sharp: + specifier: ^0.33.5 + version: 0.33.5 svelte-parse-markup: specifier: ^0.1.5 version: 0.1.5(svelte@5.2.9) @@ -1094,6 +1097,9 @@ importers: '@sveltejs/amp': specifier: workspace:* version: link:../../packages/amp + '@sveltejs/enhanced-img': + specifier: workspace:* + version: link:../../packages/enhanced-img '@sveltejs/kit': specifier: workspace:* version: link:../../packages/kit @@ -1568,116 +1574,108 @@ packages: '@iarna/toml@2.2.5': resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} - '@img/sharp-darwin-arm64@0.33.3': - resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.33.3': - resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.0.2': - resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.0.2': - resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.0.2': - resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.0.2': - resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-s390x@1.0.2': - resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.0.2': - resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': - resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.0.2': - resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.33.3': - resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.33.3': - resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-s390x@0.33.3': - resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.33.3': - resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.33.3': - resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.33.3': - resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.33.3': - resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-ia32@0.33.3': - resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.33.3': - resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -2213,7 +2211,7 @@ packages: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} concat-map@0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} @@ -3258,9 +3256,9 @@ packages: set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - sharp@0.33.3: - resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==} - engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -4096,79 +4094,79 @@ snapshots: '@iarna/toml@2.2.5': {} - '@img/sharp-darwin-arm64@0.33.3': + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.2 + '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - '@img/sharp-darwin-x64@0.33.3': + '@img/sharp-darwin-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.2 + '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.0.2': + '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - '@img/sharp-libvips-darwin-x64@1.0.2': + '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm64@1.0.2': + '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm@1.0.2': + '@img/sharp-libvips-linux-arm@1.0.5': optional: true - '@img/sharp-libvips-linux-s390x@1.0.2': + '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - '@img/sharp-libvips-linux-x64@1.0.2': + '@img/sharp-libvips-linux-x64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.2': + '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - '@img/sharp-linux-arm64@0.33.3': + '@img/sharp-linux-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.2 + '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - '@img/sharp-linux-arm@0.33.3': + '@img/sharp-linux-arm@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.2 + '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - '@img/sharp-linux-s390x@0.33.3': + '@img/sharp-linux-s390x@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.2 + '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - '@img/sharp-linux-x64@0.33.3': + '@img/sharp-linux-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.2 + '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - '@img/sharp-linuxmusl-arm64@0.33.3': + '@img/sharp-linuxmusl-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - '@img/sharp-linuxmusl-x64@0.33.3': + '@img/sharp-linuxmusl-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - '@img/sharp-wasm32@0.33.3': + '@img/sharp-wasm32@0.33.5': dependencies: '@emnapi/runtime': 1.2.0 optional: true - '@img/sharp-win32-ia32@0.33.3': + '@img/sharp-win32-ia32@0.33.5': optional: true - '@img/sharp-win32-x64@0.33.3': + '@img/sharp-win32-x64@0.33.5': optional: true '@jridgewell/gen-mapping@0.3.5': @@ -5223,7 +5221,7 @@ snapshots: imagetools-core@7.0.0: dependencies: - sharp: 0.33.3 + sharp: 0.33.5 import-fresh@3.3.0: dependencies: @@ -5754,31 +5752,31 @@ snapshots: set-cookie-parser@2.6.0: {} - sharp@0.33.3: + sharp@0.33.5: dependencies: color: 4.2.3 detect-libc: 2.0.3 semver: 7.6.3 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.3 - '@img/sharp-darwin-x64': 0.33.3 - '@img/sharp-libvips-darwin-arm64': 1.0.2 - '@img/sharp-libvips-darwin-x64': 1.0.2 - '@img/sharp-libvips-linux-arm': 1.0.2 - '@img/sharp-libvips-linux-arm64': 1.0.2 - '@img/sharp-libvips-linux-s390x': 1.0.2 - '@img/sharp-libvips-linux-x64': 1.0.2 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - '@img/sharp-linux-arm': 0.33.3 - '@img/sharp-linux-arm64': 0.33.3 - '@img/sharp-linux-s390x': 0.33.3 - '@img/sharp-linux-x64': 0.33.3 - '@img/sharp-linuxmusl-arm64': 0.33.3 - '@img/sharp-linuxmusl-x64': 0.33.3 - '@img/sharp-wasm32': 0.33.3 - '@img/sharp-win32-ia32': 0.33.3 - '@img/sharp-win32-x64': 0.33.3 + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 shebang-command@1.2.0: dependencies: From c89805e4a4af14859d44f625bd83344e3d1a08b0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 11:23:24 -0800 Subject: [PATCH 441/454] Version Packages (#13091) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/few-lamps-work.md | 5 ----- .changeset/fifty-cars-lie.md | 5 ----- .changeset/tricky-squids-provide.md | 5 ----- .changeset/wild-flies-run.md | 5 ----- packages/adapter-vercel/CHANGELOG.md | 9 +++++++++ packages/adapter-vercel/package.json | 2 +- packages/enhanced-img/CHANGELOG.md | 9 +++++++++ packages/enhanced-img/package.json | 2 +- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 11 files changed, 28 insertions(+), 24 deletions(-) delete mode 100644 .changeset/few-lamps-work.md delete mode 100644 .changeset/fifty-cars-lie.md delete mode 100644 .changeset/tricky-squids-provide.md delete mode 100644 .changeset/wild-flies-run.md diff --git a/.changeset/few-lamps-work.md b/.changeset/few-lamps-work.md deleted file mode 100644 index e3f0846f5a37..000000000000 --- a/.changeset/few-lamps-work.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/adapter-vercel': patch ---- - -chore: upgrade @vercel/nft to 0.27.7 diff --git a/.changeset/fifty-cars-lie.md b/.changeset/fifty-cars-lie.md deleted file mode 100644 index cac282e057be..000000000000 --- a/.changeset/fifty-cars-lie.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: correctly match route groups preceding optional parameters diff --git a/.changeset/tricky-squids-provide.md b/.changeset/tricky-squids-provide.md deleted file mode 100644 index d15da40874d9..000000000000 --- a/.changeset/tricky-squids-provide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/enhanced-img': patch ---- - -feat: set intrinsic width and height for SVGs diff --git a/.changeset/wild-flies-run.md b/.changeset/wild-flies-run.md deleted file mode 100644 index 3f1f70ec0170..000000000000 --- a/.changeset/wild-flies-run.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/enhanced-img': patch ---- - -perf: directly inline values since Svelte no longer inlines variables into template diff --git a/packages/adapter-vercel/CHANGELOG.md b/packages/adapter-vercel/CHANGELOG.md index 57bebeed2707..e0d089ca75ae 100644 --- a/packages/adapter-vercel/CHANGELOG.md +++ b/packages/adapter-vercel/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-vercel +## 5.5.1 +### Patch Changes + + +- chore: upgrade @vercel/nft to 0.27.7 ([#13082](https://github.com/sveltejs/kit/pull/13082)) + +- Updated dependencies [[`78404dfe1eb346723eefc183278b85f25485b419`](https://github.com/sveltejs/kit/commit/78404dfe1eb346723eefc183278b85f25485b419)]: + - @sveltejs/kit@2.9.1 + ## 5.5.0 ### Minor Changes diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 69e6f19a3b0c..eb9ef7c49e4d 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-vercel", - "version": "5.5.0", + "version": "5.5.1", "description": "A SvelteKit adapter that creates a Vercel app", "keywords": [ "adapter", diff --git a/packages/enhanced-img/CHANGELOG.md b/packages/enhanced-img/CHANGELOG.md index 31218412f370..18190901dc49 100644 --- a/packages/enhanced-img/CHANGELOG.md +++ b/packages/enhanced-img/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/enhanced-img +## 0.4.2 +### Patch Changes + + +- feat: set intrinsic width and height for SVGs ([#13126](https://github.com/sveltejs/kit/pull/13126)) + + +- perf: directly inline values since Svelte no longer inlines variables into template ([#13035](https://github.com/sveltejs/kit/pull/13035)) + ## 0.4.1 ### Patch Changes diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index 41157706762f..e18904422195 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/enhanced-img", - "version": "0.4.1", + "version": "0.4.2", "description": "Image optimization for your Svelte apps", "repository": { "type": "git", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index 4ec70d7dc666..af83e3cf0217 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.9.1 +### Patch Changes + + +- fix: correctly match route groups preceding optional parameters ([#13099](https://github.com/sveltejs/kit/pull/13099)) + ## 2.9.0 ### Minor Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index bbff055c4720..7ec03c214a65 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.9.0", + "version": "2.9.1", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index dc207ff654d2..fe52e1b8e0ae 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.9.0'; +export const VERSION = '2.9.1'; From b80cd4c4ab7d3e0536adb75b38de24b3dcd206c6 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 9 Dec 2024 11:57:29 -0800 Subject: [PATCH 442/454] fix: properly handle multiple SVGs (#13127) --- .changeset/gentle-queens-bathe.md | 5 +++++ packages/enhanced-img/src/preprocessor.js | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/gentle-queens-bathe.md diff --git a/.changeset/gentle-queens-bathe.md b/.changeset/gentle-queens-bathe.md new file mode 100644 index 000000000000..f6382919d848 --- /dev/null +++ b/.changeset/gentle-queens-bathe.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/enhanced-img': patch +--- + +fix: properly handle multiple SVGs diff --git a/packages/enhanced-img/src/preprocessor.js b/packages/enhanced-img/src/preprocessor.js index de800b653734..7069b334b955 100644 --- a/packages/enhanced-img/src/preprocessor.js +++ b/packages/enhanced-img/src/preprocessor.js @@ -108,8 +108,10 @@ export function image(opts) { } s.update(node.start, node.end, img_to_picture(content, node, image)); } else { - const name = '__IMPORTED_ASSET_' + imports.size + '__'; const metadata = await sharp(resolved_id).metadata(); + // this must come after the await so that we don't hand off processing between getting + // the imports.size and incrementing the imports.size + const name = '__IMPORTED_ASSET_' + imports.size + '__'; const new_markup = `<img ${serialize_img_attributes(content, node.attributes, { src: `{${name}}`, width: metadata.width || 0, From 77651513ddcafa53df5280bad76beb8005e89824 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:00:50 -0800 Subject: [PATCH 443/454] Version Packages (#13128) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/gentle-queens-bathe.md | 5 ----- packages/enhanced-img/CHANGELOG.md | 6 ++++++ packages/enhanced-img/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/gentle-queens-bathe.md diff --git a/.changeset/gentle-queens-bathe.md b/.changeset/gentle-queens-bathe.md deleted file mode 100644 index f6382919d848..000000000000 --- a/.changeset/gentle-queens-bathe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/enhanced-img': patch ---- - -fix: properly handle multiple SVGs diff --git a/packages/enhanced-img/CHANGELOG.md b/packages/enhanced-img/CHANGELOG.md index 18190901dc49..d64734eb67fa 100644 --- a/packages/enhanced-img/CHANGELOG.md +++ b/packages/enhanced-img/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/enhanced-img +## 0.4.3 +### Patch Changes + + +- fix: properly handle multiple SVGs ([#13127](https://github.com/sveltejs/kit/pull/13127)) + ## 0.4.2 ### Patch Changes diff --git a/packages/enhanced-img/package.json b/packages/enhanced-img/package.json index e18904422195..4c58f54db65b 100644 --- a/packages/enhanced-img/package.json +++ b/packages/enhanced-img/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/enhanced-img", - "version": "0.4.2", + "version": "0.4.3", "description": "Image optimization for your Svelte apps", "repository": { "type": "git", From a0bee5b0c27a3a67730112ad0ceaea014340e2b5 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 9 Dec 2024 15:40:44 -0800 Subject: [PATCH 444/454] chore: upgrade @vercel/nft to 0.27.9 (#13129) --- .changeset/moody-pumas-sin.md | 5 + packages/adapter-vercel/package.json | 2 +- pnpm-lock.yaml | 412 ++++++++++++++------------- 3 files changed, 215 insertions(+), 204 deletions(-) create mode 100644 .changeset/moody-pumas-sin.md diff --git a/.changeset/moody-pumas-sin.md b/.changeset/moody-pumas-sin.md new file mode 100644 index 000000000000..298b265fb876 --- /dev/null +++ b/.changeset/moody-pumas-sin.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-vercel': patch +--- + +chore: upgrade `@vercel/nft` to 0.27.9 diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index eb9ef7c49e4d..60073f01e2c5 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -39,7 +39,7 @@ "test": "vitest run" }, "dependencies": { - "@vercel/nft": "^0.27.7", + "@vercel/nft": "^0.27.9", "esbuild": "^0.24.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99c30e915614..1c962b64175a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,8 +263,8 @@ importers: packages/adapter-vercel: dependencies: '@vercel/nft': - specifier: ^0.27.7 - version: 0.27.7(rollup@4.27.4) + specifier: ^0.27.9 + version: 0.27.9(rollup@4.27.4) esbuild: specifier: ^0.24.0 version: 0.24.0 @@ -1679,6 +1679,14 @@ packages: cpu: [x64] os: [win32] + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -1709,8 +1717,9 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + '@mapbox/node-pre-gyp@2.0.0-rc.0': + resolution: {integrity: sha512-nhSMNprz3WmeRvd8iUs5JqkKr0Ncx46JtPxM3AhXes84XpSJfmIwKeWXRpsr53S7kqPkQfPhzrMFUxSNb23qSA==} + engines: {node: '>=18'} hasBin: true '@netlify/functions@2.6.0': @@ -1737,6 +1746,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@playwright/test@1.44.1': resolution: {integrity: sha512-1hZ4TNvD5z9VuhNJ/walIjvMVvYkZKf71axoF/uiAqpntQJXpG64dlXhoDXE3OczPuTuvjf/M5KWFg5VAVUS3Q==} engines: {node: '>=16'} @@ -2000,8 +2013,8 @@ packages: resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vercel/nft@0.27.7': - resolution: {integrity: sha512-FG6H5YkP4bdw9Ll1qhmbxuE8KwW2E/g8fJpM183fWQLeVDGqzeywMIeJ9h2txdWZ03psgWMn6QymTxaDLmdwUg==} + '@vercel/nft@0.27.9': + resolution: {integrity: sha512-pTs7OchHQmSYJPR0puVQCWw/NqzuvAtnAhBurz21lq4Y4KqWoMpYKqmikkETG5r1bHNCM/hQMZ5JiRr9mhOkyg==} engines: {node: '>=16'} hasBin: true @@ -2034,8 +2047,9 @@ packages: '@vitest/utils@2.1.6': resolution: {integrity: sha512-ixNkFy3k4vokOUTU2blIUvOgKq/N2PW8vKIjZZYsGJCMX69MRa9J2sKqX5hY/k5O5Gty3YJChepkqZ3KM9LyIQ==} - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} acorn-import-attributes@1.9.5: resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} @@ -2061,9 +2075,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -2076,22 +2090,22 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -2181,9 +2195,9 @@ packages: resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} engines: {node: '>= 14.16.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} @@ -2199,10 +2213,6 @@ packages: color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} @@ -2221,9 +2231,6 @@ packages: resolution: {integrity: sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==} engines: {node: '>=4'} - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} @@ -2284,9 +2291,6 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2331,9 +2335,15 @@ packages: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: resolution: {directory: packages/kit/test/apps/dev-only/_test_dependencies/cjs-only, type: directory} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} @@ -2523,6 +2533,10 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -2531,10 +2545,6 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -2551,11 +2561,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - get-port@5.1.1: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} engines: {node: '>=8'} @@ -2577,6 +2582,10 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -2614,16 +2623,13 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} @@ -2712,6 +2718,9 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -2835,6 +2844,9 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -2844,10 +2856,6 @@ packages: magic-string@0.30.14: resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2881,20 +2889,16 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} + minizlib@3.0.1: + resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + engines: {node: '>= 18'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} hasBin: true @@ -2944,9 +2948,9 @@ packages: resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} + nopt@8.0.0: + resolution: {integrity: sha512-1L/fTJ4UmV/lUxT2Uf006pfZKTvAgCF+chz+0OgBHO8u2Z67pE7AaAUUj7CJy0lXqHmymUvGFt6NE9R3HER0yw==} + engines: {node: ^18.17.0 || >=20.5.0} hasBin: true normalize-path@3.0.0: @@ -2966,14 +2970,6 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} hasBin: true - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3016,6 +3012,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@0.2.0: resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} @@ -3041,6 +3040,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-to-regexp@6.2.2: resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} @@ -3158,10 +3161,6 @@ packages: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -3200,9 +3199,8 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true rollup-plugin-inject@3.0.2: @@ -3227,9 +3225,6 @@ packages: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -3241,18 +3236,11 @@ packages: resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} engines: {node: '>=6'} - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} @@ -3282,6 +3270,10 @@ packages: signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -3333,13 +3325,18 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -3433,9 +3430,9 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} @@ -3648,9 +3645,6 @@ packages: engines: {node: '>=8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - workerd@1.20240701.0: resolution: {integrity: sha512-qSgNVqauqzNCij9MaJLF2c2ko3AnFioVSIxMSryGbRK+LvtGr9BKBt6JOxCb24DoJASoJDx3pe3DJHBVydUiBg==} engines: {node: '>=16'} @@ -3670,6 +3664,14 @@ packages: '@cloudflare/workers-types': optional: true + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -3691,8 +3693,9 @@ packages: yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} @@ -4169,6 +4172,19 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -4212,17 +4228,15 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@mapbox/node-pre-gyp@1.0.11': + '@mapbox/node-pre-gyp@2.0.0-rc.0': dependencies: + consola: 3.2.3 detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 + https-proxy-agent: 7.0.6 node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 + nopt: 8.0.0 semver: 7.6.3 - tar: 6.2.1 + tar: 7.4.3 transitivePeerDependencies: - encoding - supports-color @@ -4250,6 +4264,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@pkgjs/parseargs@0.11.0': + optional: true + '@playwright/test@1.44.1': dependencies: playwright: 1.44.1 @@ -4512,9 +4529,9 @@ snapshots: '@typescript-eslint/types': 8.4.0 eslint-visitor-keys: 3.4.3 - '@vercel/nft@0.27.7(rollup@4.27.4)': + '@vercel/nft@0.27.9(rollup@4.27.4)': dependencies: - '@mapbox/node-pre-gyp': 1.0.11 + '@mapbox/node-pre-gyp': 2.0.0-rc.0 '@rollup/pluginutils': 5.1.3(rollup@4.27.4) acorn: 8.14.0 acorn-import-attributes: 1.9.5(acorn@8.14.0) @@ -4523,8 +4540,8 @@ snapshots: estree-walker: 2.0.2 glob: 7.2.3 graceful-fs: 4.2.11 - micromatch: 4.0.8 node-gyp-build: 4.8.0 + picomatch: 4.0.2 resolve-from: 5.0.0 transitivePeerDependencies: - encoding @@ -4571,7 +4588,7 @@ snapshots: loupe: 3.1.2 tinyrainbow: 1.2.0 - abbrev@1.1.1: {} + abbrev@2.0.0: {} acorn-import-attributes@1.9.5(acorn@8.14.0): dependencies: @@ -4589,11 +4606,7 @@ snapshots: acorn@8.14.0: {} - agent-base@6.0.2: - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color + agent-base@7.1.3: {} ajv@6.12.6: dependencies: @@ -4606,22 +4619,19 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.1.0: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 + ansi-styles@6.2.1: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - aproba@2.0.0: {} - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -4713,7 +4723,7 @@ snapshots: dependencies: readdirp: 4.0.1 - chownr@2.0.0: {} + chownr@3.0.0: {} ci-info@3.9.0: {} @@ -4728,8 +4738,6 @@ snapshots: color-name: 1.1.4 simple-swizzle: 0.2.2 - color-support@1.1.3: {} - color@4.2.3: dependencies: color-convert: 2.0.1 @@ -4743,8 +4751,6 @@ snapshots: console-clear@1.1.1: {} - console-control-strings@1.1.0: {} - cookie@0.5.0: {} cookie@0.6.0: {} @@ -4787,8 +4793,6 @@ snapshots: defu@6.1.4: {} - delegates@1.0.0: {} - dequal@2.0.3: {} detect-indent@6.1.0: {} @@ -4825,8 +4829,12 @@ snapshots: e2e-test-dep-cjs-only@file:packages/kit/test/apps/dev-only/_test_dependencies/cjs-only: {} + eastasianwidth@0.2.0: {} + emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 @@ -5095,6 +5103,11 @@ snapshots: flatted@3.3.1: {} + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -5107,10 +5120,6 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -5121,18 +5130,6 @@ snapshots: function-bind@1.1.2: {} - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - get-port@5.1.1: {} get-source@2.0.12: @@ -5154,6 +5151,15 @@ snapshots: glob-to-regexp@0.4.1: {} + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -5194,15 +5200,13 @@ snapshots: has-flag@4.0.0: {} - has-unicode@2.0.1: {} - hasown@2.0.2: dependencies: function-bind: 1.1.2 - https-proxy-agent@5.0.1: + https-proxy-agent@7.0.6: dependencies: - agent-base: 6.0.2 + agent-base: 7.1.3 debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -5279,6 +5283,12 @@ snapshots: isexe@2.0.0: {} + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -5377,6 +5387,8 @@ snapshots: dependencies: tslib: 2.6.2 + lru-cache@10.4.3: {} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 @@ -5390,10 +5402,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - merge2@1.4.1: {} micromatch@4.0.8: @@ -5436,18 +5444,14 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} + minipass@7.1.2: {} - minizlib@2.1.2: + minizlib@3.0.1: dependencies: - minipass: 3.3.6 - yallist: 4.0.0 + minipass: 7.1.2 + rimraf: 5.0.10 - mkdirp@1.0.4: {} + mkdirp@3.0.1: {} mri@1.2.0: {} @@ -5476,9 +5480,9 @@ snapshots: node-gyp-build@4.8.0: {} - nopt@5.0.0: + nopt@8.0.0: dependencies: - abbrev: 1.1.1 + abbrev: 2.0.0 normalize-path@3.0.0: {} @@ -5495,15 +5499,6 @@ snapshots: npm-bundled: 2.0.1 npm-normalize-package-bin: 2.0.0 - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - - object-assign@4.1.1: {} - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -5545,6 +5540,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.1: {} + package-manager-detector@0.2.0: {} parent-module@1.0.1: @@ -5564,6 +5561,11 @@ snapshots: path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + path-to-regexp@6.2.2: {} path-type@4.0.0: {} @@ -5651,12 +5653,6 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -5683,9 +5679,9 @@ snapshots: reusify@1.0.4: {} - rimraf@3.0.2: + rimraf@5.0.10: dependencies: - glob: 7.2.3 + glob: 10.4.5 rollup-plugin-inject@3.0.2: dependencies: @@ -5733,8 +5729,6 @@ snapshots: dependencies: mri: 1.2.0 - safe-buffer@5.2.1: {} - safer-buffer@2.1.2: {} selfsigned@2.4.1: @@ -5744,12 +5738,8 @@ snapshots: semiver@1.1.0: {} - semver@6.3.1: {} - semver@7.6.3: {} - set-blocking@2.0.0: {} - set-cookie-parser@2.6.0: {} sharp@0.33.5: @@ -5794,6 +5784,8 @@ snapshots: signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 @@ -5847,14 +5839,20 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string_decoder@1.3.0: + string-width@5.1.2: dependencies: - safe-buffer: 5.2.1 + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + strip-bom@3.0.0: {} strip-indent@3.0.0: @@ -5930,14 +5928,14 @@ snapshots: tapable@2.2.1: {} - tar@6.2.1: + tar@7.4.3: dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.1 + mkdirp: 3.0.1 + yallist: 5.0.0 term-size@2.2.1: {} @@ -6133,10 +6131,6 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - workerd@1.20240701.0: optionalDependencies: '@cloudflare/workerd-darwin-64': 1.20240701.0 @@ -6176,6 +6170,18 @@ snapshots: - supports-color - utf-8-validate + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + wrappy@1.0.2: {} ws@8.18.0: {} @@ -6184,7 +6190,7 @@ snapshots: yallist@2.1.2: {} - yallist@4.0.0: {} + yallist@5.0.0: {} yaml@1.10.2: {} From 01d2720a0c1a913b8961d07ca2cfae5ea06be2ab Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 9 Dec 2024 16:06:10 -0800 Subject: [PATCH 445/454] chore: upgrade to svelte-check 4.1.1 (#13131) --- packages/kit/test/apps/amp/package.json | 2 +- packages/kit/test/apps/basics/package.json | 2 +- packages/kit/test/apps/dev-only/package.json | 2 +- packages/kit/test/apps/embed/package.json | 2 +- packages/kit/test/apps/no-ssr/package.json | 2 +- packages/kit/test/apps/options-2/package.json | 2 +- packages/kit/test/apps/options/package.json | 2 +- packages/kit/test/apps/writes/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../apps/private-dynamic-env/package.json | 2 +- .../package.json | 2 +- .../apps/private-static-env/package.json | 2 +- .../package.json | 2 +- .../apps/server-only-folder/package.json | 2 +- .../package.json | 2 +- .../apps/server-only-module/package.json | 2 +- .../package.json | 2 +- .../service-worker-private-env/package.json | 2 +- .../apps/syntax-error/package.json | 2 +- .../kit/test/prerendering/basics/package.json | 2 +- .../test/prerendering/options/package.json | 2 +- .../test/prerendering/paths-base/package.json | 2 +- playgrounds/basic/package.json | 2 +- pnpm-lock.yaml | 148 +++++++++--------- 27 files changed, 100 insertions(+), 100 deletions(-) diff --git a/packages/kit/test/apps/amp/package.json b/packages/kit/test/apps/amp/package.json index 7a6f03eebcb9..7774f14aba80 100644 --- a/packages/kit/test/apps/amp/package.json +++ b/packages/kit/test/apps/amp/package.json @@ -18,7 +18,7 @@ "cross-env": "^7.0.3", "dropcss": "^1.0.16", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index fda8f31a4ee2..0ae5b0924880 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -18,7 +18,7 @@ "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/apps/dev-only/package.json b/packages/kit/test/apps/dev-only/package.json index d2bef02977a2..4dccabf51749 100644 --- a/packages/kit/test/apps/dev-only/package.json +++ b/packages/kit/test/apps/dev-only/package.json @@ -24,7 +24,7 @@ "e2e-test-dep-page-universal": "file:./_test_dependencies/cjs-only", "e2e-test-dep-server": "file:./_test_dependencies/cjs-only", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/apps/embed/package.json b/packages/kit/test/apps/embed/package.json index 680dfe2235f6..4559fd1341a0 100644 --- a/packages/kit/test/apps/embed/package.json +++ b/packages/kit/test/apps/embed/package.json @@ -16,7 +16,7 @@ "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/apps/no-ssr/package.json b/packages/kit/test/apps/no-ssr/package.json index 4cc3a5c14f15..7f4348976632 100644 --- a/packages/kit/test/apps/no-ssr/package.json +++ b/packages/kit/test/apps/no-ssr/package.json @@ -16,7 +16,7 @@ "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/apps/options-2/package.json b/packages/kit/test/apps/options-2/package.json index 623d6cd62285..6b7c7de21657 100644 --- a/packages/kit/test/apps/options-2/package.json +++ b/packages/kit/test/apps/options-2/package.json @@ -17,7 +17,7 @@ "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/apps/options/package.json b/packages/kit/test/apps/options/package.json index 96d2a80b24fa..85c63b12321f 100644 --- a/packages/kit/test/apps/options/package.json +++ b/packages/kit/test/apps/options/package.json @@ -16,7 +16,7 @@ "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/apps/writes/package.json b/packages/kit/test/apps/writes/package.json index fb7f7f684c78..e5bf4b02eed4 100644 --- a/packages/kit/test/apps/writes/package.json +++ b/packages/kit/test/apps/writes/package.json @@ -16,7 +16,7 @@ "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json index 0dbfaafe1eb4..cf4d9913e0d7 100644 --- a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json +++ b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json index 0dbfaafe1eb4..cf4d9913e0d7 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json index 8797667db0c7..834924d345eb 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json +++ b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json index 1fa4ba71aa7c..b2effd8466cc 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json index 9195222826b2..6cc97fed6bf7 100644 --- a/packages/kit/test/build-errors/apps/private-dynamic-env/package.json +++ b/packages/kit/test/build-errors/apps/private-dynamic-env/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json index eb04f276dffa..c98b0c2e266a 100644 --- a/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env-dynamic-import/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/private-static-env/package.json b/packages/kit/test/build-errors/apps/private-static-env/package.json index fd63031f7d86..40edab1e2516 100644 --- a/packages/kit/test/build-errors/apps/private-static-env/package.json +++ b/packages/kit/test/build-errors/apps/private-static-env/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "^5.0.1", "cross-env": "^7.0.3", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json index 92bbc16f021b..36c162f4cb18 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/server-only-folder/package.json b/packages/kit/test/build-errors/apps/server-only-folder/package.json index e599b0fd8b7d..80c89040bbd3 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder/package.json +++ b/packages/kit/test/build-errors/apps/server-only-folder/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json index 977fb6d29bca..a3ce9cb0317b 100644 --- a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/server-only-module/package.json b/packages/kit/test/build-errors/apps/server-only-module/package.json index 2229d146edaa..d3f317627930 100644 --- a/packages/kit/test/build-errors/apps/server-only-module/package.json +++ b/packages/kit/test/build-errors/apps/server-only-module/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json index d70025311be1..d420359daf0f 100644 --- a/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-dynamic-public-env/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json index c58e53b08db5..06f895237d94 100644 --- a/packages/kit/test/build-errors/apps/service-worker-private-env/package.json +++ b/packages/kit/test/build-errors/apps/service-worker-private-env/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/build-errors/apps/syntax-error/package.json b/packages/kit/test/build-errors/apps/syntax-error/package.json index 819dcb848a2b..194ea56a99fe 100644 --- a/packages/kit/test/build-errors/apps/syntax-error/package.json +++ b/packages/kit/test/build-errors/apps/syntax-error/package.json @@ -11,7 +11,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1" }, diff --git a/packages/kit/test/prerendering/basics/package.json b/packages/kit/test/prerendering/basics/package.json index 6ef2d6bda23f..0b14e85ec19c 100644 --- a/packages/kit/test/prerendering/basics/package.json +++ b/packages/kit/test/prerendering/basics/package.json @@ -14,7 +14,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1", "vitest": "^2.1.6" diff --git a/packages/kit/test/prerendering/options/package.json b/packages/kit/test/prerendering/options/package.json index 0adfad3a14c2..e9f9b5be82e4 100644 --- a/packages/kit/test/prerendering/options/package.json +++ b/packages/kit/test/prerendering/options/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1", "vitest": "^2.1.6" diff --git a/packages/kit/test/prerendering/paths-base/package.json b/packages/kit/test/prerendering/paths-base/package.json index 960a2b2dd33e..7a09ce50a317 100644 --- a/packages/kit/test/prerendering/paths-base/package.json +++ b/packages/kit/test/prerendering/paths-base/package.json @@ -13,7 +13,7 @@ "@sveltejs/kit": "workspace:^", "@sveltejs/vite-plugin-svelte": "^5.0.1", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.4", "vite": "^6.0.1", "vitest": "^2.1.6" diff --git a/playgrounds/basic/package.json b/playgrounds/basic/package.json index a24de2d8ba70..9840e3683d05 100644 --- a/playgrounds/basic/package.json +++ b/playgrounds/basic/package.json @@ -30,7 +30,7 @@ "prettier-plugin-svelte": "^3.2.6", "publint": "^0.2.0", "svelte": "^5.2.9", - "svelte-check": "^4.0.1", + "svelte-check": "^4.1.1", "typescript": "^5.5.0", "vite": "^6.0.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1c962b64175a..873ed72ba864 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -434,8 +434,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -458,8 +458,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -512,8 +512,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -536,8 +536,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -560,8 +560,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -584,8 +584,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -611,8 +611,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -635,8 +635,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -665,8 +665,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -689,8 +689,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -713,8 +713,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -734,8 +734,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -755,8 +755,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -779,8 +779,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -800,8 +800,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -821,8 +821,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -842,8 +842,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -863,8 +863,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -884,8 +884,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -905,8 +905,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -926,8 +926,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -947,8 +947,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -968,8 +968,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -992,8 +992,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -1016,8 +1016,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.4 version: 5.6.3 @@ -1032,7 +1032,7 @@ importers: dependencies: chokidar: specifier: ^4.0.0 - version: 4.0.0 + version: 4.0.1 kleur: specifier: ^4.1.5 version: 4.1.5 @@ -1122,8 +1122,8 @@ importers: specifier: ^5.2.9 version: 5.2.9 svelte-check: - specifier: ^4.0.1 - version: 4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) + specifier: ^4.1.1 + version: 4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3) typescript: specifier: ^5.5.0 version: 5.6.3 @@ -2191,8 +2191,8 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chokidar@4.0.0: - resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} engines: {node: '>= 14.16.0'} chownr@3.0.0: @@ -2499,8 +2499,8 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - fdir@6.4.0: - resolution: {integrity: sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==} + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2599,8 +2599,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.12.0: - resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==} + globals@15.13.0: + resolution: {integrity: sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==} engines: {node: '>=18'} globalyzer@0.1.0: @@ -3165,8 +3165,8 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - readdirp@4.0.1: - resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} regenerator-runtime@0.14.1: @@ -3357,8 +3357,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte-check@4.0.1: - resolution: {integrity: sha512-AuWnCZdREoOzMhoptHPUUPYUxLNdXSkoZnPnlv19SZJJimRzLmjjZLKsOiRB4AnhgX+56/WSEdvkWXI/q2BSsA==} + svelte-check@4.1.1: + resolution: {integrity: sha512-NfaX+6Qtc8W/CyVGS/F7/XdiSSyXz+WGYA9ZWV3z8tso14V2vzjfXviKaTFEzB7g8TqfgO2FOzP6XT4ApSTUTw==} engines: {node: '>= 18.0.0'} hasBin: true peerDependencies: @@ -4278,7 +4278,7 @@ snapshots: '@rollup/pluginutils': 5.1.3(rollup@4.27.4) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.0(picomatch@4.0.2) + fdir: 6.4.2(picomatch@4.0.2) is-reference: 1.2.1 magic-string: 0.30.14 picomatch: 4.0.2 @@ -4378,7 +4378,7 @@ snapshots: eslint-config-prettier: 9.1.0(eslint@9.6.0) eslint-plugin-n: 17.9.0(eslint@9.6.0) eslint-plugin-svelte: 2.41.0(eslint@9.6.0)(svelte@5.2.9) - globals: 15.12.0 + globals: 15.13.0 typescript: 5.6.3 typescript-eslint: 8.4.0(eslint@9.6.0)(typescript@5.6.3) @@ -4719,9 +4719,9 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chokidar@4.0.0: + chokidar@4.0.1: dependencies: - readdirp: 4.0.1 + readdirp: 4.0.2 chownr@3.0.0: {} @@ -4924,7 +4924,7 @@ snapshots: eslint: 9.6.0 eslint-plugin-es-x: 7.8.0(eslint@9.6.0) get-tsconfig: 4.8.1 - globals: 15.12.0 + globals: 15.13.0 ignore: 5.3.2 minimatch: 9.0.5 semver: 7.6.3 @@ -5072,7 +5072,7 @@ snapshots: dependencies: reusify: 1.0.4 - fdir@6.4.0(picomatch@4.0.2): + fdir@6.4.2(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -5179,7 +5179,7 @@ snapshots: globals@14.0.0: {} - globals@15.12.0: {} + globals@15.13.0: {} globalyzer@0.1.0: {} @@ -5657,7 +5657,7 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.0.1: {} + readdirp@4.0.2: {} regenerator-runtime@0.14.1: {} @@ -5867,11 +5867,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.0.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3): + svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.2.9)(typescript@5.6.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 - chokidar: 3.6.0 - fdir: 6.4.0(picomatch@4.0.2) + chokidar: 4.0.1 + fdir: 6.4.2(picomatch@4.0.2) picocolors: 1.1.1 sade: 1.8.1 svelte: 5.2.9 From 7168778f1df156ab6d06f96ebb6aca8c488e8154 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Tue, 10 Dec 2024 18:05:57 +0800 Subject: [PATCH 446/454] docs: reword beforeNavigate description so that it includes navigations to the same URL (#13133) closes #12863 --- packages/kit/src/runtime/client/client.js | 2 +- packages/kit/types/index.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index bec38c9122fa..f36f14cb8e35 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -1668,7 +1668,7 @@ export function afterNavigate(callback) { } /** - * A navigation interceptor that triggers before we navigate to a new URL, whether by clicking a link, calling `goto(...)`, or using the browser back/forward controls. + * A navigation interceptor that triggers before we navigate to a URL, whether by clicking a link, calling `goto(...)`, or using the browser back/forward controls. * * Calling `cancel()` will prevent the navigation from completing. If `navigation.type === 'leave'` — meaning the user is navigating away from the app (or closing the tab) — calling `cancel` will trigger the native browser unload confirmation dialog. In this case, the navigation may or may not be cancelled depending on the user's response. * diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 63fdcb004bf3..77300bd9c243 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -2051,7 +2051,7 @@ declare module '$app/navigation' { * */ export function afterNavigate(callback: (navigation: import("@sveltejs/kit").AfterNavigate) => void): void; /** - * A navigation interceptor that triggers before we navigate to a new URL, whether by clicking a link, calling `goto(...)`, or using the browser back/forward controls. + * A navigation interceptor that triggers before we navigate to a URL, whether by clicking a link, calling `goto(...)`, or using the browser back/forward controls. * * Calling `cancel()` will prevent the navigation from completing. If `navigation.type === 'leave'` — meaning the user is navigating away from the app (or closing the tab) — calling `cancel` will trigger the native browser unload confirmation dialog. In this case, the navigation may or may not be cancelled depending on the user's response. * From 85b57168189fa16fe966434ec50cc19425cab275 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Tue, 10 Dec 2024 22:21:12 +0800 Subject: [PATCH 447/454] fix: prevent hooks exported from `hooks.js` from overwriting hooks from `hooks.server.js` (#13104) * specifically write to each property * changeset * Update .changeset/mean-bottles-wash.md --- .changeset/mean-bottles-wash.md | 5 +++++ packages/kit/src/core/sync/write_server.js | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 .changeset/mean-bottles-wash.md diff --git a/.changeset/mean-bottles-wash.md b/.changeset/mean-bottles-wash.md new file mode 100644 index 000000000000..839cfa2a8a54 --- /dev/null +++ b/.changeset/mean-bottles-wash.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: prevent hooks exported from `hooks.js` from overwriting hooks from `hooks.server.js` diff --git a/packages/kit/src/core/sync/write_server.js b/packages/kit/src/core/sync/write_server.js index eb50bfd4735b..f4568743728e 100644 --- a/packages/kit/src/core/sync/write_server.js +++ b/packages/kit/src/core/sync/write_server.js @@ -64,9 +64,19 @@ export const options = { }; export async function get_hooks() { + let handle; + let handleFetch; + let handleError; + ${server_hooks ? `({ handle, handleFetch, handleError } = await import(${s(server_hooks)}));` : ''} + + let reroute; + ${universal_hooks ? `({ reroute } = await import(${s(universal_hooks)}));` : ''} + return { - ${server_hooks ? `...(await import(${s(server_hooks)})),` : ''} - ${universal_hooks ? `...(await import(${s(universal_hooks)})),` : ''} + handle, + handleFetch, + handleError, + reroute, }; } From 9fc5ff3339e543b956f7ce5eb31267fa73ee332a Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti <ricciutipaolo@gmail.com> Date: Tue, 10 Dec 2024 15:22:29 +0100 Subject: [PATCH 448/454] feat: server and client `init` hook (#13103) * feat: server and client `init` hook * fix: provide client_hooks fallback even if universal hooks are present * chore: add tests * chore: cache server instance in `vite dev` * chore: remove only (duh) * chore: revert single server in dev * chore: revert weird did_it_run thing * chore: add additional inited check to prevent multiple init in case of race conditions * fix: remove `init` from client hooks * docs: write some documentation, use proper exported types * chore: regenerate types * simplify * chore: docs suggestions from review Co-authored-by: Rich Harris <hello@rich-harris.dev> * try this * chore: fix lint * chore: fix types * save a couple bytes * Apply suggestions from code review --------- Co-authored-by: Rich Harris <rich.harris@vercel.com> Co-authored-by: Rich Harris <hello@rich-harris.dev> Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> --- .changeset/eight-poems-learn.md | 5 ++++ documentation/docs/30-advanced/20-hooks.md | 19 +++++++++++++++ .../src/core/sync/write_client_manifest.js | 1 + packages/kit/src/exports/public.d.ts | 10 ++++++++ packages/kit/src/runtime/client/client.js | 3 +++ packages/kit/src/runtime/server/index.js | 13 +++++++++-- packages/kit/src/types/internal.d.ts | 6 ++++- .../kit/test/apps/basics/src/hooks.client.js | 4 ++++ .../kit/test/apps/basics/src/hooks.server.js | 9 ++++++-- .../src/routes/init-hooks/+page.server.ts | 11 +++++++++ .../basics/src/routes/init-hooks/+page.svelte | 7 ++++++ .../routes/init-hooks/navigate/+page.svelte | 1 + .../kit/test/apps/basics/test/client.test.js | 23 +++++++++++++++++++ .../kit/test/apps/basics/test/server.test.js | 9 ++++++++ packages/kit/types/index.d.ts | 10 ++++++++ 15 files changed, 126 insertions(+), 5 deletions(-) create mode 100644 .changeset/eight-poems-learn.md create mode 100644 packages/kit/test/apps/basics/src/routes/init-hooks/+page.server.ts create mode 100644 packages/kit/test/apps/basics/src/routes/init-hooks/+page.svelte create mode 100644 packages/kit/test/apps/basics/src/routes/init-hooks/navigate/+page.svelte diff --git a/.changeset/eight-poems-learn.md b/.changeset/eight-poems-learn.md new file mode 100644 index 000000000000..62d9e4224d54 --- /dev/null +++ b/.changeset/eight-poems-learn.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': minor +--- + +feat: server and client `init` hook diff --git a/documentation/docs/30-advanced/20-hooks.md b/documentation/docs/30-advanced/20-hooks.md index 6decc1cbf463..9663d724fc18 100644 --- a/documentation/docs/30-advanced/20-hooks.md +++ b/documentation/docs/30-advanced/20-hooks.md @@ -237,6 +237,25 @@ During development, if an error occurs because of a syntax error in your Svelte > [!NOTE] Make sure that `handleError` _never_ throws an error +### init + +This function runs once, when the server is created or the app starts in the browser, and is a useful place to do asynchronous work such as initializing a database connection. + +> [!NOTE] If your environment supports top-level await, the `init` function is really no different from writing your initialisation logic at the top level of the module, but some environments — most notably, Safari — don't. + +```js +/// file: src/hooks.server.js +import * as db from '$lib/server/database'; + +/** @type {import('@sveltejs/kit').ServerInit} */ +export async function init() { + await db.connect(); +} +``` + +> [!NOTE] +> In the browser, asynchronous work in `init` will delay hydration, so be mindful of what you put in there. + ## Universal hooks The following can be added to `src/hooks.js`. Universal hooks run on both server and client (not to be confused with shared hooks, which are environment-specific). diff --git a/packages/kit/src/core/sync/write_client_manifest.js b/packages/kit/src/core/sync/write_client_manifest.js index 1b97ed02e4c1..fe6127de934c 100644 --- a/packages/kit/src/core/sync/write_client_manifest.js +++ b/packages/kit/src/core/sync/write_client_manifest.js @@ -151,6 +151,7 @@ export function write_client_manifest(kit, manifest_data, output, metadata) { handleError: ${ client_hooks_file ? 'client_hooks.handleError || ' : '' }(({ error }) => { console.error(error) }), + ${client_hooks_file ? 'init: client_hooks.init,' : ''} reroute: ${universal_hooks_file ? 'universal_hooks.reroute || ' : ''}(() => {}) }; diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 84a3f041c322..be184575530f 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -724,6 +724,16 @@ export type HandleFetch = (input: { fetch: typeof fetch; }) => MaybePromise<Response>; +/** + * The [`init`](https://svelte.dev/docs/kit/hooks#Shared-hooks-init) will be invoked before the server responds to its first request + */ +export type ServerInit = () => MaybePromise<void>; + +/** + * The [`init`](https://svelte.dev/docs/kit/hooks#Shared-hooks-init) will be invoked once the app starts in the browser + */ +export type ClientInit = () => MaybePromise<void>; + /** * The [`reroute`](https://svelte.dev/docs/kit/hooks#Universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. * @since 2.3.0 diff --git a/packages/kit/src/runtime/client/client.js b/packages/kit/src/runtime/client/client.js index f36f14cb8e35..17469be00511 100644 --- a/packages/kit/src/runtime/client/client.js +++ b/packages/kit/src/runtime/client/client.js @@ -266,6 +266,9 @@ export async function start(_app, _target, hydrate) { } app = _app; + + await _app.hooks.init?.(); + routes = parse(_app); container = __SVELTEKIT_EMBEDDED__ ? _target : document.documentElement; target = _target; diff --git a/packages/kit/src/runtime/server/index.js b/packages/kit/src/runtime/server/index.js index 36cbd04be16f..5aa10ac560f5 100644 --- a/packages/kit/src/runtime/server/index.js +++ b/packages/kit/src/runtime/server/index.js @@ -15,6 +15,9 @@ const prerender_env_handler = { } }; +/** @type {Promise<any>} */ +let init_promise; + export class Server { /** @type {import('types').SSROptions} */ #options; @@ -63,7 +66,9 @@ export class Server { set_read_implementation(read); } - if (!this.#options.hooks) { + // During DEV and for some adapters this function might be called in quick succession, + // so we need to make sure we're not invoking this logic (most notably the init hook) multiple times + await (init_promise ??= (async () => { try { const module = await get_hooks(); @@ -73,6 +78,10 @@ export class Server { handleFetch: module.handleFetch || (({ request, fetch }) => fetch(request)), reroute: module.reroute || (() => {}) }; + + if (module.init) { + await module.init(); + } } catch (error) { if (DEV) { this.#options.hooks = { @@ -87,7 +96,7 @@ export class Server { throw error; } } - } + })()); } /** diff --git a/packages/kit/src/types/internal.d.ts b/packages/kit/src/types/internal.d.ts index c9dbb51ce007..cd7b1518b86a 100644 --- a/packages/kit/src/types/internal.d.ts +++ b/packages/kit/src/types/internal.d.ts @@ -17,7 +17,9 @@ import { RequestEvent, SSRManifest, Emulator, - Adapter + Adapter, + ServerInit, + ClientInit } from '@sveltejs/kit'; import { HttpMethod, @@ -109,11 +111,13 @@ export interface ServerHooks { handle: Handle; handleError: HandleServerError; reroute: Reroute; + init?: ServerInit; } export interface ClientHooks { handleError: HandleClientError; reroute: Reroute; + init?: ClientInit; } export interface Env { diff --git a/packages/kit/test/apps/basics/src/hooks.client.js b/packages/kit/test/apps/basics/src/hooks.client.js index 8e18bf084c06..3749d91b5aa3 100644 --- a/packages/kit/test/apps/basics/src/hooks.client.js +++ b/packages/kit/test/apps/basics/src/hooks.client.js @@ -8,3 +8,7 @@ export function handleError({ error, event, status, message }) { ? undefined : { message: `${/** @type {Error} */ (error).message} (${status} ${message})` }; } + +export function init() { + console.log('init hooks.client.js'); +} diff --git a/packages/kit/test/apps/basics/src/hooks.server.js b/packages/kit/test/apps/basics/src/hooks.server.js index b7cbbd9004eb..e485d038d995 100644 --- a/packages/kit/test/apps/basics/src/hooks.server.js +++ b/packages/kit/test/apps/basics/src/hooks.server.js @@ -1,7 +1,8 @@ -import fs from 'node:fs'; -import { sequence } from '@sveltejs/kit/hooks'; import { error, isHttpError, redirect } from '@sveltejs/kit'; +import { sequence } from '@sveltejs/kit/hooks'; +import fs from 'node:fs'; import { COOKIE_NAME } from './routes/cookies/shared'; +import { _set_from_init } from './routes/init-hooks/+page.server'; /** * Transform an error into a POJO, by copying its `name`, `message` @@ -154,3 +155,7 @@ export async function handleFetch({ request, fetch }) { return fetch(request); } + +export function init() { + _set_from_init(); +} diff --git a/packages/kit/test/apps/basics/src/routes/init-hooks/+page.server.ts b/packages/kit/test/apps/basics/src/routes/init-hooks/+page.server.ts new file mode 100644 index 000000000000..bccb323eaa3b --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/init-hooks/+page.server.ts @@ -0,0 +1,11 @@ +let did_init_run = 0; + +export function _set_from_init() { + did_init_run++; +} + +export function load() { + return { + did_init_run + }; +} diff --git a/packages/kit/test/apps/basics/src/routes/init-hooks/+page.svelte b/packages/kit/test/apps/basics/src/routes/init-hooks/+page.svelte new file mode 100644 index 000000000000..f421cfb32e9f --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/init-hooks/+page.svelte @@ -0,0 +1,7 @@ +<script> + const { data } = $props(); +</script> + +<p>{data.did_init_run}</p> + +<a href="/init-hooks/navigate">navigate</a> diff --git a/packages/kit/test/apps/basics/src/routes/init-hooks/navigate/+page.svelte b/packages/kit/test/apps/basics/src/routes/init-hooks/navigate/+page.svelte new file mode 100644 index 000000000000..3cb4eaa0ec04 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/init-hooks/navigate/+page.svelte @@ -0,0 +1 @@ +navigated diff --git a/packages/kit/test/apps/basics/test/client.test.js b/packages/kit/test/apps/basics/test/client.test.js index 56b2c96bc744..2286a6e6a234 100644 --- a/packages/kit/test/apps/basics/test/client.test.js +++ b/packages/kit/test/apps/basics/test/client.test.js @@ -1186,6 +1186,29 @@ test.describe('reroute', () => { }); }); +test.describe('init', () => { + test('init client hook is called once when the application start on the client', async ({ + page + }) => { + /** + * @type string[] + */ + const logs = []; + page.addListener('console', (message) => { + if (message.type() === 'log') { + logs.push(message.text()); + } + }); + const log_event = page.waitForEvent('console'); + await page.goto('/init-hooks'); + await log_event; + expect(logs).toStrictEqual(['init hooks.client.js']); + await page.getByRole('link').first().click(); + await page.waitForLoadState('load'); + expect(logs).toStrictEqual(['init hooks.client.js']); + }); +}); + test.describe('INP', () => { test('does not block next paint', async ({ page }) => { // Thanks to https://publishing-project.rivendellweb.net/measuring-performance-tasks-with-playwright/#interaction-to-next-paint-inp diff --git a/packages/kit/test/apps/basics/test/server.test.js b/packages/kit/test/apps/basics/test/server.test.js index ff77c55f0204..3c57fc9904c2 100644 --- a/packages/kit/test/apps/basics/test/server.test.js +++ b/packages/kit/test/apps/basics/test/server.test.js @@ -648,3 +648,12 @@ test.describe('reroute', () => { expect(response?.status()).toBe(500); }); }); + +test.describe('init', () => { + test('init server hook is called once before the load function', async ({ page }) => { + await page.goto('/init-hooks'); + await expect(page.locator('p')).toHaveText('1'); + await page.reload(); + await expect(page.locator('p')).toHaveText('1'); + }); +}); diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 77300bd9c243..85868fab0ac8 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -706,6 +706,16 @@ declare module '@sveltejs/kit' { fetch: typeof fetch; }) => MaybePromise<Response>; + /** + * The [`init`](https://svelte.dev/docs/kit/hooks#Shared-hooks-init) will be invoked before the server responds to its first request + */ + export type ServerInit = () => MaybePromise<void>; + + /** + * The [`init`](https://svelte.dev/docs/kit/hooks#Shared-hooks-init) will be invoked once the app starts in the browser + */ + export type ClientInit = () => MaybePromise<void>; + /** * The [`reroute`](https://svelte.dev/docs/kit/hooks#Universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. * @since 2.3.0 From 50ec8e91916c2e2f01646809847933e40a96d6d7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 09:24:23 -0500 Subject: [PATCH 449/454] Version Packages (#13130) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/eight-poems-learn.md | 5 ----- .changeset/mean-bottles-wash.md | 5 ----- .changeset/moody-pumas-sin.md | 5 ----- packages/adapter-vercel/CHANGELOG.md | 9 +++++++++ packages/adapter-vercel/package.json | 2 +- packages/kit/CHANGELOG.md | 12 ++++++++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 8 files changed, 24 insertions(+), 18 deletions(-) delete mode 100644 .changeset/eight-poems-learn.md delete mode 100644 .changeset/mean-bottles-wash.md delete mode 100644 .changeset/moody-pumas-sin.md diff --git a/.changeset/eight-poems-learn.md b/.changeset/eight-poems-learn.md deleted file mode 100644 index 62d9e4224d54..000000000000 --- a/.changeset/eight-poems-learn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': minor ---- - -feat: server and client `init` hook diff --git a/.changeset/mean-bottles-wash.md b/.changeset/mean-bottles-wash.md deleted file mode 100644 index 839cfa2a8a54..000000000000 --- a/.changeset/mean-bottles-wash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/kit': patch ---- - -fix: prevent hooks exported from `hooks.js` from overwriting hooks from `hooks.server.js` diff --git a/.changeset/moody-pumas-sin.md b/.changeset/moody-pumas-sin.md deleted file mode 100644 index 298b265fb876..000000000000 --- a/.changeset/moody-pumas-sin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@sveltejs/adapter-vercel': patch ---- - -chore: upgrade `@vercel/nft` to 0.27.9 diff --git a/packages/adapter-vercel/CHANGELOG.md b/packages/adapter-vercel/CHANGELOG.md index e0d089ca75ae..4ac8af405f4b 100644 --- a/packages/adapter-vercel/CHANGELOG.md +++ b/packages/adapter-vercel/CHANGELOG.md @@ -1,5 +1,14 @@ # @sveltejs/adapter-vercel +## 5.5.2 +### Patch Changes + + +- chore: upgrade `@vercel/nft` to 0.27.9 ([#13129](https://github.com/sveltejs/kit/pull/13129)) + +- Updated dependencies [[`9fc5ff3339e543b956f7ce5eb31267fa73ee332a`](https://github.com/sveltejs/kit/commit/9fc5ff3339e543b956f7ce5eb31267fa73ee332a), [`85b57168189fa16fe966434ec50cc19425cab275`](https://github.com/sveltejs/kit/commit/85b57168189fa16fe966434ec50cc19425cab275)]: + - @sveltejs/kit@2.10.0 + ## 5.5.1 ### Patch Changes diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index 60073f01e2c5..8cd633ce9d5b 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/adapter-vercel", - "version": "5.5.1", + "version": "5.5.2", "description": "A SvelteKit adapter that creates a Vercel app", "keywords": [ "adapter", diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index af83e3cf0217..f1d6b1c504db 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,17 @@ # @sveltejs/kit +## 2.10.0 +### Minor Changes + + +- feat: server and client `init` hook ([#13103](https://github.com/sveltejs/kit/pull/13103)) + + +### Patch Changes + + +- fix: prevent hooks exported from `hooks.js` from overwriting hooks from `hooks.server.js` ([#13104](https://github.com/sveltejs/kit/pull/13104)) + ## 2.9.1 ### Patch Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 7ec03c214a65..7bbe36a8e5ff 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.9.1", + "version": "2.10.0", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index fe52e1b8e0ae..b7bea1e09166 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.9.1'; +export const VERSION = '2.10.0'; From 4ff86e14848e02c450626e0e0663839c7675e321 Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti <ricciutipaolo@gmail.com> Date: Tue, 10 Dec 2024 15:53:37 +0100 Subject: [PATCH 450/454] fix: export `init` hook from `get_hooks` (#13136) * fix: export `init` hook from `get_hooks` * Create sour-pigs-talk.md * fix: create `init` variable --- .changeset/sour-pigs-talk.md | 5 +++++ packages/kit/src/core/sync/write_server.js | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/sour-pigs-talk.md diff --git a/.changeset/sour-pigs-talk.md b/.changeset/sour-pigs-talk.md new file mode 100644 index 000000000000..5498ed229873 --- /dev/null +++ b/.changeset/sour-pigs-talk.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: export `init` hook from `get_hooks` diff --git a/packages/kit/src/core/sync/write_server.js b/packages/kit/src/core/sync/write_server.js index f4568743728e..5dabea1f1c44 100644 --- a/packages/kit/src/core/sync/write_server.js +++ b/packages/kit/src/core/sync/write_server.js @@ -67,7 +67,8 @@ export async function get_hooks() { let handle; let handleFetch; let handleError; - ${server_hooks ? `({ handle, handleFetch, handleError } = await import(${s(server_hooks)}));` : ''} + let init; + ${server_hooks ? `({ handle, handleFetch, handleError, init } = await import(${s(server_hooks)}));` : ''} let reroute; ${universal_hooks ? `({ reroute } = await import(${s(universal_hooks)}));` : ''} @@ -77,6 +78,7 @@ export async function get_hooks() { handleFetch, handleError, reroute, + init, }; } From 07e346a94c531372d7fe19cee9686f1af669a219 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 09:56:05 -0500 Subject: [PATCH 451/454] Version Packages (#13137) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> --- .changeset/sour-pigs-talk.md | 5 ----- packages/kit/CHANGELOG.md | 6 ++++++ packages/kit/package.json | 2 +- packages/kit/src/version.js | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .changeset/sour-pigs-talk.md diff --git a/.changeset/sour-pigs-talk.md b/.changeset/sour-pigs-talk.md deleted file mode 100644 index 5498ed229873..000000000000 --- a/.changeset/sour-pigs-talk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sveltejs/kit": patch ---- - -fix: export `init` hook from `get_hooks` diff --git a/packages/kit/CHANGELOG.md b/packages/kit/CHANGELOG.md index f1d6b1c504db..a706f155a689 100644 --- a/packages/kit/CHANGELOG.md +++ b/packages/kit/CHANGELOG.md @@ -1,5 +1,11 @@ # @sveltejs/kit +## 2.10.1 +### Patch Changes + + +- fix: export `init` hook from `get_hooks` ([#13136](https://github.com/sveltejs/kit/pull/13136)) + ## 2.10.0 ### Minor Changes diff --git a/packages/kit/package.json b/packages/kit/package.json index 7bbe36a8e5ff..2c71d907b287 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -1,6 +1,6 @@ { "name": "@sveltejs/kit", - "version": "2.10.0", + "version": "2.10.1", "description": "SvelteKit is the fastest way to build Svelte apps", "keywords": [ "framework", diff --git a/packages/kit/src/version.js b/packages/kit/src/version.js index b7bea1e09166..846bd400f21a 100644 --- a/packages/kit/src/version.js +++ b/packages/kit/src/version.js @@ -1,4 +1,4 @@ // generated during release, do not modify /** @type {string} */ -export const VERSION = '2.10.0'; +export const VERSION = '2.10.1'; From 33600ee3a7aaf5d93b808b525c773b3b8580bd51 Mon Sep 17 00:00:00 2001 From: Rich Harris <richard.a.harris@gmail.com> Date: Tue, 10 Dec 2024 10:38:49 -0500 Subject: [PATCH 452/454] docs: note when `init` hook was added (#13138) * docs: note when `init` hook was added * add `@since` tags * on second thoughts, just use the tags --- packages/kit/src/exports/public.d.ts | 2 ++ packages/kit/types/index.d.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index be184575530f..70c1d8bf7e3e 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -726,11 +726,13 @@ export type HandleFetch = (input: { /** * The [`init`](https://svelte.dev/docs/kit/hooks#Shared-hooks-init) will be invoked before the server responds to its first request + * @since 2.10.0 */ export type ServerInit = () => MaybePromise<void>; /** * The [`init`](https://svelte.dev/docs/kit/hooks#Shared-hooks-init) will be invoked once the app starts in the browser + * @since 2.10.0 */ export type ClientInit = () => MaybePromise<void>; diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 85868fab0ac8..bfb7468dc955 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -708,11 +708,13 @@ declare module '@sveltejs/kit' { /** * The [`init`](https://svelte.dev/docs/kit/hooks#Shared-hooks-init) will be invoked before the server responds to its first request + * @since 2.10.0 */ export type ServerInit = () => MaybePromise<void>; /** * The [`init`](https://svelte.dev/docs/kit/hooks#Shared-hooks-init) will be invoked once the app starts in the browser + * @since 2.10.0 */ export type ClientInit = () => MaybePromise<void>; From 11a9f66922199ee5925cc71c0efc513376753754 Mon Sep 17 00:00:00 2001 From: Tee Ming <chewteeming01@gmail.com> Date: Wed, 11 Dec 2024 21:57:31 +0800 Subject: [PATCH 453/454] fix: correctly resolve hooks entry file when directory exists (#13144) fixes #13100 This PR adds a check to see if an index file exists in the related directory before resolving to that path. Directories without an index file should correctly fallback to the non-directory path. --- .changeset/brown-bats-mate.md | 5 +++++ packages/kit/src/utils/filesystem.js | 5 +++-- packages/kit/src/utils/filesystem.spec.js | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 .changeset/brown-bats-mate.md diff --git a/.changeset/brown-bats-mate.md b/.changeset/brown-bats-mate.md new file mode 100644 index 000000000000..3b0c4b70dabe --- /dev/null +++ b/.changeset/brown-bats-mate.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: correctly resolve hooks file when a similarly named directory exists diff --git a/packages/kit/src/utils/filesystem.js b/packages/kit/src/utils/filesystem.js index ff83568e0358..58bcce22c7e3 100644 --- a/packages/kit/src/utils/filesystem.js +++ b/packages/kit/src/utils/filesystem.js @@ -169,8 +169,9 @@ export function from_fs(str) { export function resolve_entry(entry) { if (fs.existsSync(entry)) { const stats = fs.statSync(entry); - if (stats.isDirectory()) { - return resolve_entry(path.join(entry, 'index')); + const index = path.join(entry, 'index'); + if (stats.isDirectory() && fs.existsSync(index)) { + return resolve_entry(index); } return entry; diff --git a/packages/kit/src/utils/filesystem.spec.js b/packages/kit/src/utils/filesystem.spec.js index 443268314d50..e9ccf8d832a9 100644 --- a/packages/kit/src/utils/filesystem.spec.js +++ b/packages/kit/src/utils/filesystem.spec.js @@ -105,3 +105,10 @@ test('ignores hooks.server folder when resolving hooks', () => { expect(resolve_entry(source_dir + '/hooks')).null; }); + +test('ignores hooks folder that has no index file when resolving hooks', () => { + write('hooks/not-index.js', ''); + write('hooks.js', ''); + + expect(resolve_entry(source_dir + '/hooks')).toBe(source_dir + '/hooks'); +}); From 874989461236cc9b053f8d721cf7e0a8f26984cd Mon Sep 17 00:00:00 2001 From: Hyunbin Seo <47051820+hyunbinseo@users.noreply.github.com> Date: Thu, 12 Dec 2024 13:00:10 +0900 Subject: [PATCH 454/454] chore: update node-adapter listening address (#13146) --- .changeset/angry-pumas-develop.md | 5 +++++ packages/adapter-node/src/index.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/angry-pumas-develop.md diff --git a/.changeset/angry-pumas-develop.md b/.changeset/angry-pumas-develop.md new file mode 100644 index 000000000000..028dfac732e3 --- /dev/null +++ b/.changeset/angry-pumas-develop.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-node': patch +--- + +chore: append http on listening address diff --git a/packages/adapter-node/src/index.js b/packages/adapter-node/src/index.js index 1000b46f3a11..ef1ab701a2a3 100644 --- a/packages/adapter-node/src/index.js +++ b/packages/adapter-node/src/index.js @@ -39,7 +39,7 @@ if (socket_activation) { }); } else { server.listen({ path, host, port }, () => { - console.log(`Listening on ${path ? path : host + ':' + port}`); + console.log(`Listening on ${path || `http://${host}:${port}`}`); }); }

^6St1d297cB*k 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