From cbed243adc79add7bd199638f9dea355242a333e Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sat, 4 Nov 2023 23:50:31 +0800 Subject: [PATCH 01/62] add ability to copy server assets per route --- .../25-build-and-deploy/90-adapter-vercel.md | 32 ++++++++- packages/adapter-vercel/index.js | 10 ++- packages/kit/src/core/adapt/builder.js | 65 ++++++++++++++++++- packages/kit/src/exports/public.d.ts | 1 + 4 files changed, 102 insertions(+), 6 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 6f72025b9565..2db1865ee02d 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -141,8 +141,34 @@ If you have Vercel functions contained in the `api` directory at the project's r Projects created before a certain date will default to using Node 14, while SvelteKit requires Node 16 or later. You can [change the Node version in your project settings](https://vercel.com/docs/concepts/functions/serverless-functions/runtimes/node-js#node.js-version). -## Troubleshooting +## Accessing the file system -### Accessing the file system +You can (use files in Serverless Functions on Vercel)[https://vercel.com/guides/how-can-i-use-files-in-serverless-functions]. -You can't access the file system through methods like `fs.readFileSync` in Serverless/Edge environments. If you need to access files that way, do that during building the app through [prerendering](https://kit.svelte.dev/docs/page-options#prerender). If you have a blog for example and don't want to manage your content through a CMS, then you need to prerender the content (or prerender the endpoint from which you get it) and redeploy your blog everytime you add new content. +```js +import path from 'node:path'; +import { env } from '$env/dynamic/private'; +import { dev } from '$app/environment'; +import { FFmpeg } from '@ffmpeg.wasm/main'; +import core from '@ffmpeg.wasm/core-mt'; +import wasmPathAb from '@ffmpeg.wasm/core-mt/dist/core.wasm?url'; + +export async function GET() { + let wasmPath = path.join(process.cwd(), wasmPathAb); + + // when running `vite preview`, files are served from `.svelte-kit/output` + // see https://kit.svelte.dev/docs/building-your-app#preview-your-app + if (!dev && !env.VERCEL) { + wasmPath = path.join(process.cwd(), '.svelte-kit/output/server', wasmPathAb) + } + + const ffmpeg = await FFmpeg.create({ + core, + coreOptions: { + wasmPath, + }, + }); + + return new Response(wasmPath); +} +``` diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index a46a953dd32f..8907ab4e8138 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -83,7 +83,8 @@ const plugin = function (defaults = {}) { builder, `${tmp}/index.js`, `${dirs.functions}/${name}.func`, - config + config, + routes ); } @@ -430,8 +431,9 @@ function static_vercel_config(builder) { * @param {string} entry * @param {string} dir * @param {import('.').ServerlessConfig} config + * @param {import('@sveltejs/kit').RouteDefinition[]} routes */ -async function create_function_bundle(builder, entry, dir, config) { +async function create_function_bundle(builder, entry, dir, config, routes) { fs.rmSync(dir, { force: true, recursive: true }); let base = entry; @@ -539,6 +541,10 @@ async function create_function_bundle(builder, entry, dir, config) { ) ); + for (const asset of new Set(routes.flatMap((route) => route.serverAssets))) { + builder.copy(path.join(builder.getServerDirectory(), asset), dir); + } + write(`${dir}/package.json`, JSON.stringify({ type: 'module' })); } diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index cc99e8da8555..17ac72205c56 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -41,6 +41,59 @@ export function create_builder({ /** @type {Map} */ const lookup = new Map(); + /** @type {Set} */ + let asset_chunks = new Set(); + + for (const [filename, meta] of Object.entries(build_data.server_manifest)) { + if (filename.startsWith('_') && meta.assets) { + asset_chunks = new Set([...asset_chunks, ...meta.assets]); + } + } + + /** + * @param {string | undefined} filename + */ + function get_server_assets(filename) { + if (!filename) { + return []; + } + const { imports, assets } = build_data.server_manifest[filename]; + + /** @type {string[]} */ + let server_assets = []; + + if (imports) { + server_assets = imports.filter((file) => asset_chunks.has(file)); + } + if (assets) { + server_assets = [...server_assets, ...assets]; + } + + return new Set(server_assets); + } + + /** + * @param {{ + * component?: string; + * server?: string; + * universal?: string; + * parent?: import('types').PageNode; + * }} node + * @returns + */ + function get_page_node_assets({ component, server, universal, parent }) { + /** @type {string[]} */ + let server_assets = [ + ...get_server_assets(component), + ...get_server_assets(server), + ...get_server_assets(universal) + ]; + if (parent) { + server_assets = [...server_assets, ...get_page_node_assets(parent)]; + } + return new Set(server_assets); + } + /** * Rather than exposing the internal `RouteData` type, which is subject to change, * we expose a stable type that adapters can use to group/filter routes @@ -50,6 +103,15 @@ export function create_builder({ server_metadata.routes.get(route.id) ); + /** @type {Set} */ + let server_assets = new Set(); + if (route.leaf) { + server_assets = new Set(get_page_node_assets(route.leaf)); + } + if (route.endpoint) { + server_assets = new Set([...server_assets, ...get_server_assets(route.endpoint.file)]); + } + /** @type {import('@sveltejs/kit').RouteDefinition} */ const facade = { id: route.id, @@ -63,7 +125,8 @@ export function create_builder({ pattern: route.pattern, prerender: prerender_map.get(route.id) ?? false, methods, - config + config, + serverAssets: Array.from(server_assets) }; lookup.set(facade, route); diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index d3bbaed15469..81bc301bacc8 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -1094,6 +1094,7 @@ export interface RouteDefinition { segments: RouteSegment[]; methods: Array; config: Config; + serverAssets: string[]; } export class Server { From 4915822e1b1f9bae7db5ab3f8ba8da41c70d912c Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 5 Nov 2023 00:00:11 +0800 Subject: [PATCH 02/62] changeset --- .changeset/loud-needles-refuse.md | 5 +++++ .changeset/selfish-bobcats-run.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/loud-needles-refuse.md create mode 100644 .changeset/selfish-bobcats-run.md diff --git a/.changeset/loud-needles-refuse.md b/.changeset/loud-needles-refuse.md new file mode 100644 index 000000000000..a98254e9f310 --- /dev/null +++ b/.changeset/loud-needles-refuse.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-vercel': minor +--- + +feat: server assets are bundled together with serverless functions diff --git a/.changeset/selfish-bobcats-run.md b/.changeset/selfish-bobcats-run.md new file mode 100644 index 000000000000..3cdca15db6a5 --- /dev/null +++ b/.changeset/selfish-bobcats-run.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': minor +--- + +feat: build metadata includes the server assets used by each route From fc081d09f3b243b8e2535e9dfadecb24ea2b0e18 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 5 Nov 2023 00:15:29 +0800 Subject: [PATCH 03/62] fix test --- packages/kit/src/core/adapt/builder.spec.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/core/adapt/builder.spec.js b/packages/kit/src/core/adapt/builder.spec.js index d61fe4c70860..9786fbf6f14a 100644 --- a/packages/kit/src/core/adapt/builder.spec.js +++ b/packages/kit/src/core/adapt/builder.spec.js @@ -28,7 +28,9 @@ test('copy files', () => { const builder = create_builder({ config: /** @type {import('types').ValidatedConfig} */ (mocked), // @ts-expect-error - build_data: {}, + build_data: { + server_manifest: {} + }, // @ts-expect-error server_metadata: {}, route_data: [], @@ -60,9 +62,12 @@ test('copy files', () => { }); test('compress files', async () => { - // @ts-expect-error - we don't need the whole config for this test const builder = create_builder({ - route_data: [] + route_data: [], + // @ts-expect-error - we don't need the whole config for this test + build_data: { + server_manifest: {} + } }); const target = fileURLToPath(new URL('./fixtures/compress/foo.css', import.meta.url)); From e45f4ce9d1fe8f0b68e748a22feb3d15b6a7637f Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 5 Nov 2023 00:28:28 +0800 Subject: [PATCH 04/62] fix doc --- documentation/docs/25-build-and-deploy/90-adapter-vercel.md | 1 + 1 file changed, 1 insertion(+) 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 2db1865ee02d..a8a9254a1b27 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -146,6 +146,7 @@ Projects created before a certain date will default to using Node 14, while Svel You can (use files in Serverless Functions on Vercel)[https://vercel.com/guides/how-can-i-use-files-in-serverless-functions]. ```js +// @errors: 2307 import path from 'node:path'; import { env } from '$env/dynamic/private'; import { dev } from '$app/environment'; From 045f343ee7c307ba786e1453e79d305829114712 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 5 Nov 2023 00:54:28 +0800 Subject: [PATCH 05/62] fix asset copying --- packages/adapter-vercel/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 8907ab4e8138..0e71600e92a3 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -542,7 +542,7 @@ async function create_function_bundle(builder, entry, dir, config, routes) { ); for (const asset of new Set(routes.flatMap((route) => route.serverAssets))) { - builder.copy(path.join(builder.getServerDirectory(), asset), dir); + builder.copy(path.join(builder.getServerDirectory(), asset), path.join(dir, asset)); } write(`${dir}/package.json`, JSON.stringify({ type: 'module' })); From eeb1cf5af622fc2913b43deb4a2c0ddd4807052f Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 5 Nov 2023 01:06:43 +0800 Subject: [PATCH 06/62] change process dir when using vite preview --- .../docs/25-build-and-deploy/90-adapter-vercel.md | 8 -------- packages/kit/src/exports/vite/preview/index.js | 2 ++ 2 files changed, 2 insertions(+), 8 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 a8a9254a1b27..e8b63de17b77 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -148,8 +148,6 @@ You can (use files in Serverless Functions on Vercel)[https://vercel.com/guides/ ```js // @errors: 2307 import path from 'node:path'; -import { env } from '$env/dynamic/private'; -import { dev } from '$app/environment'; import { FFmpeg } from '@ffmpeg.wasm/main'; import core from '@ffmpeg.wasm/core-mt'; import wasmPathAb from '@ffmpeg.wasm/core-mt/dist/core.wasm?url'; @@ -157,12 +155,6 @@ import wasmPathAb from '@ffmpeg.wasm/core-mt/dist/core.wasm?url'; export async function GET() { let wasmPath = path.join(process.cwd(), wasmPathAb); - // when running `vite preview`, files are served from `.svelte-kit/output` - // see https://kit.svelte.dev/docs/building-your-app#preview-your-app - if (!dev && !env.VERCEL) { - wasmPath = path.join(process.cwd(), '.svelte-kit/output/server', wasmPathAb) - } - const ffmpeg = await FFmpeg.create({ core, coreOptions: { diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index 445334635d2c..f0cae4f0db5b 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -41,6 +41,8 @@ export async function preview(vite, vite_config, svelte_config) { throw new Error(`Server files not found at ${dir}, did you run \`build\` first?`); } + process.chdir(dir); + /** @type {import('types').ServerInternalModule} */ const { set_assets } = await import(pathToFileURL(join(dir, 'internal.js')).href); From 9ec0f8227200a2e4178131543ea627253eff14d9 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 5 Nov 2023 16:05:32 +0800 Subject: [PATCH 07/62] remove process.chdir from vite preview --- packages/kit/src/exports/vite/preview/index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/kit/src/exports/vite/preview/index.js b/packages/kit/src/exports/vite/preview/index.js index f0cae4f0db5b..445334635d2c 100644 --- a/packages/kit/src/exports/vite/preview/index.js +++ b/packages/kit/src/exports/vite/preview/index.js @@ -41,8 +41,6 @@ export async function preview(vite, vite_config, svelte_config) { throw new Error(`Server files not found at ${dir}, did you run \`build\` first?`); } - process.chdir(dir); - /** @type {import('types').ServerInternalModule} */ const { set_assets } = await import(pathToFileURL(join(dir, 'internal.js')).href); From ac6f3f7f419dcb635b7087734b0728f88161a062 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 6 Nov 2023 22:48:55 +0800 Subject: [PATCH 08/62] include assets used by default error pages --- packages/adapter-vercel/index.js | 5 +- packages/kit/src/core/adapt/builder.js | 82 ++++++++++++++++++++------ packages/kit/src/exports/public.d.ts | 2 + packages/kit/src/utils/set.js | 23 ++++++++ 4 files changed, 92 insertions(+), 20 deletions(-) create mode 100644 packages/kit/src/utils/set.js diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 0e71600e92a3..0546a4078daa 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -541,7 +541,10 @@ async function create_function_bundle(builder, entry, dir, config, routes) { ) ); - for (const asset of new Set(routes.flatMap((route) => route.serverAssets))) { + for (const asset of new Set([ + ...routes.flatMap((route) => route.serverAssets), + ...builder.getRootErrorPageServerAssets() + ])) { builder.copy(path.join(builder.getServerDirectory(), asset), path.join(dir, asset)); } diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 17ac72205c56..7cfa82529a31 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -10,6 +10,7 @@ import { get_env } from '../../exports/vite/utils.js'; import generate_fallback from '../postbuild/fallback.js'; import { write } from '../sync/utils.js'; import { list_files } from '../utils.js'; +import { concat } from '../../utils/set.js'; const pipe = promisify(pipeline); const extensions = ['.html', '.js', '.mjs', '.json', '.css', '.svg', '.xml', '.wasm']; @@ -46,30 +47,34 @@ export function create_builder({ for (const [filename, meta] of Object.entries(build_data.server_manifest)) { if (filename.startsWith('_') && meta.assets) { - asset_chunks = new Set([...asset_chunks, ...meta.assets]); + asset_chunks = concat(asset_chunks, meta.assets); } } /** * @param {string | undefined} filename + * @returns {Set} */ function get_server_assets(filename) { - if (!filename) { - return []; + if (!filename || !build_data.server_manifest[filename]) { + return /** @type {Set} */ (new Set()); } const { imports, assets } = build_data.server_manifest[filename]; - /** @type {string[]} */ - let server_assets = []; + /** @type {Set} */ + let server_assets = new Set(); if (imports) { - server_assets = imports.filter((file) => asset_chunks.has(file)); + server_assets = concat( + server_assets, + imports.filter((file) => asset_chunks.has(file)) + ); } if (assets) { - server_assets = [...server_assets, ...assets]; + server_assets = concat(server_assets, assets); } - return new Set(server_assets); + return server_assets; } /** @@ -82,16 +87,35 @@ export function create_builder({ * @returns */ function get_page_node_assets({ component, server, universal, parent }) { - /** @type {string[]} */ - let server_assets = [ - ...get_server_assets(component), - ...get_server_assets(server), - ...get_server_assets(universal) - ]; + let server_assets = concat( + /** @type {Set}*/ (new Set()), + get_server_assets(component), + get_server_assets(server), + get_server_assets(universal) + ); if (parent) { - server_assets = [...server_assets, ...get_page_node_assets(parent)]; + server_assets = concat(server_assets, get_page_node_assets(parent)); } - return new Set(server_assets); + return server_assets; + } + + /** + * @param {import('types').RouteData} route + */ + function get_default_error_page_assets(route) { + /** @type {Set} */ + let server_assets = new Set(); + let route_id = route.id; + do { + server_assets = concat( + server_assets, + get_server_assets( + `${config.kit.files.routes}${route_id === '/' ? route_id : route_id + '/'}+error.svelte` + ) + ); + route_id = route_id.split('/').slice(0, -1).join('/'); + } while (route_id); + return server_assets; } /** @@ -103,13 +127,16 @@ export function create_builder({ server_metadata.routes.get(route.id) ); - /** @type {Set} */ let server_assets = new Set(); if (route.leaf) { - server_assets = new Set(get_page_node_assets(route.leaf)); + server_assets = concat( + server_assets, + get_page_node_assets(route.leaf), + get_default_error_page_assets(route) + ); } if (route.endpoint) { - server_assets = new Set([...server_assets, ...get_server_assets(route.endpoint.file)]); + server_assets = concat(server_assets, get_server_assets(route.endpoint.file)); } /** @type {import('@sveltejs/kit').RouteDefinition} */ @@ -245,6 +272,23 @@ export function create_builder({ return build_data.app_path; }, + getRootErrorPageServerAssets() { + const route = route_data.find((route) => route.leaf); + if (!route || !route.leaf) { + return /** @type {string[]}*/ ([]); + } + + let assets = new Set(get_server_assets(`${config.kit.files.routes}/+error.svelte`)); + + let layout = route.leaf.parent; + while (layout) { + assets = concat(assets, get_page_node_assets(layout)); + layout = layout.parent; + } + + return [...assets]; + }, + writeClient(dest) { return copy(`${config.kit.outDir}/output/client`, dest, { // avoid making vite build artefacts public diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 81bc301bacc8..0cb7c7621ff1 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -121,6 +121,8 @@ export interface Builder { getServerDirectory(): string; /** Get the application path including any configured `base` path, e.g. `my-base-path/_app`. */ getAppPath(): string; + /** Get an array of server assets used by the root [default error page](https://kit.svelte.dev/docs/routing#error). */ + getRootErrorPageServerAssets(): string[]; /** * Write client assets to `dest`. diff --git a/packages/kit/src/utils/set.js b/packages/kit/src/utils/set.js new file mode 100644 index 000000000000..09f7ec988f93 --- /dev/null +++ b/packages/kit/src/utils/set.js @@ -0,0 +1,23 @@ +/** + * Concatenate an array or set with another set. + * + * @template T + * @param {Set} set + * @param {(Array | Set)[]} args + */ +export function concat(set, ...args) { + for (let i = 0; i < args.length; i++) { + const item = args[i]; + if (Array.isArray(item)) { + // for loop is most performant here + // see https://stackoverflow.com/a/47220028 + const array_length = item.length; + for (let j = 0; j < array_length; j++) { + set.add(item[j]); + } + } else { + set = new Set([...set, ...item]); + } + } + return set; +} From 9ce6edbe946ea0de993118d47251a50cc2df929f Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 6 Nov 2023 22:51:05 +0800 Subject: [PATCH 09/62] fix doc link --- 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 e8b63de17b77..d2a5ed91e361 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -143,7 +143,7 @@ Projects created before a certain date will default to using Node 14, while Svel ## Accessing the file system -You can (use files in Serverless Functions on Vercel)[https://vercel.com/guides/how-can-i-use-files-in-serverless-functions]. +You can [use files in Serverless Functions on Vercel](https://vercel.com/guides/how-can-i-use-files-in-serverless-functions). ```js // @errors: 2307 From d8aec4b296a8e9211b446c5ec544be285b1c3a20 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 6 Nov 2023 23:30:26 +0800 Subject: [PATCH 10/62] better doc example --- .../25-build-and-deploy/90-adapter-vercel.md | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 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 d2a5ed91e361..8d27c1abf4d4 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -147,21 +147,33 @@ You can [use files in Serverless Functions on Vercel](https://vercel.com/guides/ ```js // @errors: 2307 -import path from 'node:path'; -import { FFmpeg } from '@ffmpeg.wasm/main'; -import core from '@ffmpeg.wasm/core-mt'; -import wasmPathAb from '@ffmpeg.wasm/core-mt/dist/core.wasm?url'; - -export async function GET() { - let wasmPath = path.join(process.cwd(), wasmPathAb); - - const ffmpeg = await FFmpeg.create({ - core, - coreOptions: { - wasmPath, - }, - }); +/// file: api/pdf/+server.js +import fs from "node:fs"; +import path from "node:path"; +import { json } from '@sveltejs/kit'; +import PDFDocument from "pdfkit"; +import PalatinoBoldFont from "$lib/fonts/PalatinoBold.ttf"; + +const font = path.join(process.cwd(), PalatinoBoldFont); + +export async function POST({ url }) { + const title = url.searchParams.get('title'); + const filename = url.searchParams.get('filename'); + + const doc = new PDFDocument(); + // use the tmp serverless function folder to create the write stream for the pdf + const file = `/tmp/${filename}.pdf`; + let writeStream = fs.createWriteStream(file); + doc.pipe(writeStream); + doc.font(font).fontSize(25).text(title, 100, 100); + doc.end(); - return new Response(wasmPath); + writeStream.on("finish", () => { + const fileContent = fs.readFileSync(file); + + // upload file to storage bucket + + return json({ response: `File ${filename} saved` }); + }); } ``` From ad67ee2472d91c1b45337e5b0e6fa05cc4badc81 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 6 Nov 2023 23:55:31 +0800 Subject: [PATCH 11/62] fix doc type --- 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 8d27c1abf4d4..85ddbd6eb9e7 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -146,7 +146,7 @@ Projects created before a certain date will default to using Node 14, while Svel You can [use files in Serverless Functions on Vercel](https://vercel.com/guides/how-can-i-use-files-in-serverless-functions). ```js -// @errors: 2307 +// @errors: 2307 276 /// file: api/pdf/+server.js import fs from "node:fs"; import path from "node:path"; From 407af73faff5d6b79de9ebbff4f4abfaefa6ee03 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 7 Nov 2023 00:02:20 +0800 Subject: [PATCH 12/62] ok for real --- 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 85ddbd6eb9e7..cb12987a612c 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -146,7 +146,7 @@ Projects created before a certain date will default to using Node 14, while Svel You can [use files in Serverless Functions on Vercel](https://vercel.com/guides/how-can-i-use-files-in-serverless-functions). ```js -// @errors: 2307 276 +// @errors: 2307 7031 /// file: api/pdf/+server.js import fs from "node:fs"; import path from "node:path"; From df45d578eec3d63f90cce3d8b4a34edbbb9bc45a Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 15:29:38 +0800 Subject: [PATCH 13/62] add tests for vercel adapter --- packages/adapter-vercel/.gitignore | 1 + packages/adapter-vercel/package.json | 3 +- .../adapter-vercel/test/apps/split/.gitignore | 10 ++ .../adapter-vercel/test/apps/split/.npmrc | 1 + .../test/apps/split/jsconfig.json | 13 ++ .../test/apps/split/package.json | 17 ++ .../test/apps/split/playwright.config.js | 1 + .../test/apps/split/src/app.d.ts | 12 ++ .../test/apps/split/src/app.html | 12 ++ .../test/apps/split/src/lib/Main.svelte | 5 + .../test/apps/split/src/lib/Transitive.svelte | 5 + .../test/apps/split/src/lib/component1.txt | 1 + .../test/apps/split/src/lib/component2.txt | 1 + .../test/apps/split/src/lib/endpoint.txt | 1 + .../test/apps/split/src/lib/error1.txt | 1 + .../test/apps/split/src/lib/error2.txt | 1 + .../test/apps/split/src/lib/layout1.txt | 1 + .../test/apps/split/src/lib/layout2.txt | 1 + .../test/apps/split/src/lib/layout3.txt | 1 + .../test/apps/split/src/lib/page1.txt | 1 + .../test/apps/split/src/lib/page2.txt | 1 + .../test/apps/split/src/lib/transitive.txt | 1 + .../test/apps/split/src/routes/+error.svelte | 5 + .../test/apps/split/src/routes/+layout.svelte | 7 + .../test/apps/split/src/routes/+page.svelte | 5 + .../test/apps/split/src/routes/api/+server.js | 5 + .../apps/split/src/routes/load/+error.svelte | 5 + .../apps/split/src/routes/load/+layout.js | 5 + .../split/src/routes/load/+layout.server.js | 5 + .../apps/split/src/routes/load/+layout.svelte | 7 + .../test/apps/split/src/routes/load/+page.js | 5 + .../split/src/routes/load/+page.server.js | 5 + .../apps/split/src/routes/load/+page.svelte | 5 + .../test/apps/split/svelte.config.js | 12 ++ .../test/apps/split/test/test.js | 64 +++++++ .../test/apps/split/vite.config.js | 9 + packages/adapter-vercel/test/utils.js | 27 +++ packages/kit/src/core/adapt/builder.js | 6 +- packages/kit/src/core/postbuild/analyse.js | 9 +- pnpm-lock.yaml | 161 +++++++++++++++++- pnpm-workspace.yaml | 1 + 41 files changed, 428 insertions(+), 11 deletions(-) create mode 100644 packages/adapter-vercel/test/apps/split/.gitignore create mode 100644 packages/adapter-vercel/test/apps/split/.npmrc create mode 100644 packages/adapter-vercel/test/apps/split/jsconfig.json create mode 100644 packages/adapter-vercel/test/apps/split/package.json create mode 100644 packages/adapter-vercel/test/apps/split/playwright.config.js create mode 100644 packages/adapter-vercel/test/apps/split/src/app.d.ts create mode 100644 packages/adapter-vercel/test/apps/split/src/app.html create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/Main.svelte create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/Transitive.svelte create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/component1.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/component2.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/endpoint.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/error1.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/error2.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/layout1.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/layout2.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/layout3.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/page1.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/page2.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/transitive.txt create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/+error.svelte create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/+page.svelte create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/api/+server.js create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/load/+error.svelte create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/load/+page.js create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js create mode 100644 packages/adapter-vercel/test/apps/split/src/routes/load/+page.svelte create mode 100644 packages/adapter-vercel/test/apps/split/svelte.config.js create mode 100644 packages/adapter-vercel/test/apps/split/test/test.js create mode 100644 packages/adapter-vercel/test/apps/split/vite.config.js create mode 100644 packages/adapter-vercel/test/utils.js diff --git a/packages/adapter-vercel/.gitignore b/packages/adapter-vercel/.gitignore index 9daa8247da45..b7362de17545 100644 --- a/packages/adapter-vercel/.gitignore +++ b/packages/adapter-vercel/.gitignore @@ -1,2 +1,3 @@ .DS_Store node_modules +.vercel \ No newline at end of file diff --git a/packages/adapter-vercel/package.json b/packages/adapter-vercel/package.json index e9af9d7f78f2..bae473c19229 100644 --- a/packages/adapter-vercel/package.json +++ b/packages/adapter-vercel/package.json @@ -28,13 +28,14 @@ "lint": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore", "format": "pnpm lint --write", "check": "tsc", - "test": "vitest run" + "test": "vitest run & pnpm -r --workspace-concurrency 1 --filter=\"./test/**\" test" }, "dependencies": { "@vercel/nft": "^0.24.0", "esbuild": "^0.18.11" }, "devDependencies": { + "@playwright/test": "1.30.0", "@sveltejs/kit": "workspace:^", "@types/node": "^16.18.6", "typescript": "^4.9.4", diff --git a/packages/adapter-vercel/test/apps/split/.gitignore b/packages/adapter-vercel/test/apps/split/.gitignore new file mode 100644 index 000000000000..6635cf554275 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/packages/adapter-vercel/test/apps/split/.npmrc b/packages/adapter-vercel/test/apps/split/.npmrc new file mode 100644 index 000000000000..b6f27f135954 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/packages/adapter-vercel/test/apps/split/jsconfig.json b/packages/adapter-vercel/test/apps/split/jsconfig.json new file mode 100644 index 000000000000..0f47472f79f8 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/jsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + } +} diff --git a/packages/adapter-vercel/test/apps/split/package.json b/packages/adapter-vercel/test/apps/split/package.json new file mode 100644 index 000000000000..c0e2bbfc47fd --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/package.json @@ -0,0 +1,17 @@ +{ + "name": "~TODO~", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "test": "playwright test" + }, + "devDependencies": { + "@sveltejs/kit": "workspace:^", + "svelte": "^4.2.3", + "vite": "^4.5.0" + }, + "type": "module" +} diff --git a/packages/adapter-vercel/test/apps/split/playwright.config.js b/packages/adapter-vercel/test/apps/split/playwright.config.js new file mode 100644 index 000000000000..33d36b651014 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/playwright.config.js @@ -0,0 +1 @@ +export { config as default } from '../../utils.js'; diff --git a/packages/adapter-vercel/test/apps/split/src/app.d.ts b/packages/adapter-vercel/test/apps/split/src/app.d.ts new file mode 100644 index 000000000000..f59b884c51ed --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/app.d.ts @@ -0,0 +1,12 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } +} + +export {}; diff --git a/packages/adapter-vercel/test/apps/split/src/app.html b/packages/adapter-vercel/test/apps/split/src/app.html new file mode 100644 index 000000000000..6769ed5e89c5 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/packages/adapter-vercel/test/apps/split/src/lib/Main.svelte b/packages/adapter-vercel/test/apps/split/src/lib/Main.svelte new file mode 100644 index 000000000000..9c125d67ed74 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/Main.svelte @@ -0,0 +1,5 @@ + + + diff --git a/packages/adapter-vercel/test/apps/split/src/lib/Transitive.svelte b/packages/adapter-vercel/test/apps/split/src/lib/Transitive.svelte new file mode 100644 index 000000000000..4efa631084af --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/Transitive.svelte @@ -0,0 +1,5 @@ + + +

{asset}

diff --git a/packages/adapter-vercel/test/apps/split/src/lib/component1.txt b/packages/adapter-vercel/test/apps/split/src/lib/component1.txt new file mode 100644 index 000000000000..302c57a113f3 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/component1.txt @@ -0,0 +1 @@ +component1 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/component2.txt b/packages/adapter-vercel/test/apps/split/src/lib/component2.txt new file mode 100644 index 000000000000..7966c355ac94 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/component2.txt @@ -0,0 +1 @@ +component2 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/endpoint.txt b/packages/adapter-vercel/test/apps/split/src/lib/endpoint.txt new file mode 100644 index 000000000000..472161a3d13a --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/endpoint.txt @@ -0,0 +1 @@ +endpoint \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/error1.txt b/packages/adapter-vercel/test/apps/split/src/lib/error1.txt new file mode 100644 index 000000000000..8656d6f1908a --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/error1.txt @@ -0,0 +1 @@ +error1 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/error2.txt b/packages/adapter-vercel/test/apps/split/src/lib/error2.txt new file mode 100644 index 000000000000..7c65fc717537 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/error2.txt @@ -0,0 +1 @@ +error2 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/layout1.txt b/packages/adapter-vercel/test/apps/split/src/lib/layout1.txt new file mode 100644 index 000000000000..a2d06d003f55 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/layout1.txt @@ -0,0 +1 @@ +layout1 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/layout2.txt b/packages/adapter-vercel/test/apps/split/src/lib/layout2.txt new file mode 100644 index 000000000000..409f807b04ad --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/layout2.txt @@ -0,0 +1 @@ +layout2 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/layout3.txt b/packages/adapter-vercel/test/apps/split/src/lib/layout3.txt new file mode 100644 index 000000000000..fa10dc1bb2e0 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/layout3.txt @@ -0,0 +1 @@ +layout3 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/page1.txt b/packages/adapter-vercel/test/apps/split/src/lib/page1.txt new file mode 100644 index 000000000000..b7c3500ba293 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/page1.txt @@ -0,0 +1 @@ +page1 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/page2.txt b/packages/adapter-vercel/test/apps/split/src/lib/page2.txt new file mode 100644 index 000000000000..cb4962638782 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/page2.txt @@ -0,0 +1 @@ +page2 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/transitive.txt b/packages/adapter-vercel/test/apps/split/src/lib/transitive.txt new file mode 100644 index 000000000000..b44343052d17 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/transitive.txt @@ -0,0 +1 @@ +transitive \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+error.svelte b/packages/adapter-vercel/test/apps/split/src/routes/+error.svelte new file mode 100644 index 000000000000..c9905623b802 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/+error.svelte @@ -0,0 +1,5 @@ + + +

{asset}

diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte b/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte new file mode 100644 index 000000000000..9f7a5900f462 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte @@ -0,0 +1,7 @@ + + +

{layout3}

+ + diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte b/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte new file mode 100644 index 000000000000..3d3ac6de52f6 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte @@ -0,0 +1,5 @@ + + +
diff --git a/packages/adapter-vercel/test/apps/split/src/routes/api/+server.js b/packages/adapter-vercel/test/apps/split/src/routes/api/+server.js new file mode 100644 index 000000000000..34d9476ab882 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/api/+server.js @@ -0,0 +1,5 @@ +import server_asset from '$lib/endpoint.txt'; + +export function GET() { + return new Response(server_asset); +} diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+error.svelte b/packages/adapter-vercel/test/apps/split/src/routes/load/+error.svelte new file mode 100644 index 000000000000..37950362c1b6 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+error.svelte @@ -0,0 +1,5 @@ + + +

{asset}

diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js new file mode 100644 index 000000000000..16f1d7ed40d9 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js @@ -0,0 +1,5 @@ +import layout2 from '$lib/layout2.txt'; + +export function load({ data }) { + return { ...data, layout2 }; +} diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js new file mode 100644 index 000000000000..1d3107c9d4e4 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js @@ -0,0 +1,5 @@ +import layout1 from '$lib/layout1.txt'; + +export function load() { + return { layout1 }; +} diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte new file mode 100644 index 000000000000..af2b64e3cfbb --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte @@ -0,0 +1,7 @@ + + +

{asset}

+ + \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js new file mode 100644 index 000000000000..c2be6fc450e0 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js @@ -0,0 +1,5 @@ +import page2 from '$lib/page2.txt'; + +export async function load({ parent, data }) { + return { ...data, ...(await parent()), page2 }; +} diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js new file mode 100644 index 000000000000..0317909576f2 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js @@ -0,0 +1,5 @@ +import page1 from '$lib/page1.txt'; + +export async function load({ parent }) { + return { ...(await parent()), page1 }; +} diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.svelte b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.svelte new file mode 100644 index 000000000000..b53fd03b00a7 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.svelte @@ -0,0 +1,5 @@ + + +

{asset}

diff --git a/packages/adapter-vercel/test/apps/split/svelte.config.js b/packages/adapter-vercel/test/apps/split/svelte.config.js new file mode 100644 index 000000000000..a4365e2ed6ad --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/svelte.config.js @@ -0,0 +1,12 @@ +import adapter from '../../../index.js'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + kit: { + adapter: adapter({ + split: true + }) + } +}; + +export default config; diff --git a/packages/adapter-vercel/test/apps/split/test/test.js b/packages/adapter-vercel/test/apps/split/test/test.js new file mode 100644 index 000000000000..6ccc05bae764 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/test/test.js @@ -0,0 +1,64 @@ +import * as fs from 'node:fs'; +import { expect, test } from '@playwright/test'; + +const cwd = process.cwd(); + +const vercel = `${cwd}.vercel/output/functions`; + +const assets = '_app/immutable/assets'; + +test('includes server assets from page', () => { + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/component2.2e05b0ae.txt`)).toBeTruthy(); +}); + +test('includes server assets from layouts', () => { + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/component1.49f0d6ea.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); +}) + +test('includes server assets from load functions', () => { + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout1.a02b2ee3.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout2.ccbbe7cd.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/page1.4a715ec1.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/page2.b0565940.txt`)).toBeTruthy(); +}); + +test('includes server assets from endpoints', () => { + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/endpoint.b6bf7bc8.txt`)).toBeTruthy(); +}); + +test('only includes required server assets for each function', () => { + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/endpoint.b6bf7bc8.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/component1.49f0d6ea.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/component2.2e05b0ae.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout1.a02b2ee3.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout2.ccbbe7cd.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/page1.4a715ec1.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/page2.b0565940.txt`)).toBeTruthy(); + + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/endpoint.b6bf7bc8.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/component1.49f0d6ea.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/component2.2e05b0ae.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/layout1.a02b2ee3.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/layout2.ccbbe7cd.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/page1.4a715ec1.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/page2.b0565940.txt`)).toBeFalsy(); +}); + +test('includes transitive server assets', () => { + expect(fs.existsSync(`${vercel}/fn-0.func/${assets}/transitive.f0151e85.txt`)).toBeTruthy(); +}); + +test('includes server assets from the default error page for every function', () => { + expect(fs.existsSync(`${vercel}/fn-0.func/${assets}/error1.f6113f76.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-0.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); + + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/error1.f6113f76.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); + + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/error1.f6113f76.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); + + expect(fs.existsSync(`${vercel}/fn.func/${assets}/error1.f6113f76.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); +}); diff --git a/packages/adapter-vercel/test/apps/split/vite.config.js b/packages/adapter-vercel/test/apps/split/vite.config.js new file mode 100644 index 000000000000..8803e80349cb --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/vite.config.js @@ -0,0 +1,9 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit()], + build: { + assetsInlineLimit: 0 + } +}); diff --git a/packages/adapter-vercel/test/utils.js b/packages/adapter-vercel/test/utils.js new file mode 100644 index 000000000000..f61cd97cda8f --- /dev/null +++ b/packages/adapter-vercel/test/utils.js @@ -0,0 +1,27 @@ +import { devices } from '@playwright/test'; + +/** @type {import('@playwright/test').PlaywrightTestConfig} */ +export const config = { + forbidOnly: !!process.env.CI, + // generous timeouts on CI + timeout: process.env.CI ? 45000 : 15000, + webServer: { + command: 'pnpm build && pnpm preview', + port: 4173 + }, + retries: process.env.CI ? 2 : 0, + projects: [ + { + name: 'chromium' + } + ], + use: { + ...devices['Desktop Chrome'], + screenshot: 'only-on-failure', + trace: 'retain-on-failure' + }, + workers: process.env.CI ? 2 : undefined, + reporter: 'list', + testDir: 'test', + testMatch: /(.+\.)?(test|spec)\.[jt]s/ +}; diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 7cfa82529a31..1fdb05a67366 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -99,6 +99,8 @@ export function create_builder({ return server_assets; } + const route_dir = config.kit.files.routes.split(process.cwd() + '/').join(''); + /** * @param {import('types').RouteData} route */ @@ -110,7 +112,7 @@ export function create_builder({ server_assets = concat( server_assets, get_server_assets( - `${config.kit.files.routes}${route_id === '/' ? route_id : route_id + '/'}+error.svelte` + `${route_dir}${route_id === '/' ? route_id : route_id + '/'}+error.svelte` ) ); route_id = route_id.split('/').slice(0, -1).join('/'); @@ -278,7 +280,7 @@ export function create_builder({ return /** @type {string[]}*/ ([]); } - let assets = new Set(get_server_assets(`${config.kit.files.routes}/+error.svelte`)); + let assets = new Set(get_server_assets(`${route_dir}/+error.svelte`)); let layout = route.leaf.parent; while (layout) { diff --git a/packages/kit/src/core/postbuild/analyse.js b/packages/kit/src/core/postbuild/analyse.js index c311dfe43337..db1e0cb3721d 100644 --- a/packages/kit/src/core/postbuild/analyse.js +++ b/packages/kit/src/core/postbuild/analyse.js @@ -93,10 +93,11 @@ async function analyse({ manifest_path, env }) { prerender = mod.prerender; } - Object.values(mod).forEach((/** @type {import('types').HttpMethod} */ method) => { - if (mod[method] && ENDPOINT_METHODS.has(method)) { - api_methods.push(method); - } else if (mod.fallback) { + Object.keys(mod).forEach((key) => { + // @ts-ignore + if (mod[key] && ENDPOINT_METHODS.has(key)) { + api_methods.push(/** @type {import('types').HttpMethod} */ (key)); + } else if (mod.fallback && key === 'fallback') { api_methods.push('*'); } }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64c6d9b58e67..4f7f35ab5187 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,7 +80,7 @@ importers: version: 4.20230404.0 '@sveltejs/kit': specifier: ^1.0.0 - version: link:../kit + version: 1.27.5(svelte@4.2.3)(vite@4.5.0) esbuild: specifier: ^0.18.11 version: 0.18.11 @@ -108,7 +108,7 @@ importers: version: 2.2.5 '@sveltejs/kit': specifier: ^1.0.0 - version: link:../kit + version: 1.27.5(svelte@4.2.3)(vite@4.5.0) esbuild: specifier: ^0.18.11 version: 0.18.11 @@ -272,6 +272,9 @@ importers: specifier: ^0.18.11 version: 0.18.11 devDependencies: + '@playwright/test': + specifier: 1.30.0 + version: 1.30.0 '@sveltejs/kit': specifier: workspace:^ version: link:../kit @@ -285,11 +288,23 @@ importers: specifier: ^0.34.5 version: 0.34.5(lightningcss@1.21.8)(playwright@1.30.0) + packages/adapter-vercel/test/apps/split: + devDependencies: + '@sveltejs/kit': + specifier: workspace:^ + version: link:../../../../kit + svelte: + specifier: ^4.2.3 + version: 4.2.3 + vite: + specifier: ^4.5.0 + version: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) + packages/amp: dependencies: '@sveltejs/kit': specifier: ^1.0.0 - version: link:../kit + version: 1.27.5(svelte@4.2.3)(vite@4.5.0) packages/create-svelte: dependencies: @@ -2023,6 +2038,34 @@ packages: typescript: 4.9.4 dev: true + /@sveltejs/kit@1.27.5(svelte@4.2.3)(vite@4.5.0): + resolution: {integrity: sha512-+L1WPs/ZYNjXoBFoFARypD4aZOjkT51vFpRCtQI45+Fmmfi4Y0dH/8VFlmYD6VlGe89ViIPg7lgf/JpGQ2tr7A==} + engines: {node: ^16.14 || >=18} + hasBin: true + requiresBuild: true + peerDependencies: + svelte: ^3.54.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.5.2(svelte@4.2.3)(vite@4.5.0) + '@types/cookie': 0.5.1 + cookie: 0.5.0 + devalue: 4.3.1 + esm-env: 1.0.0 + kleur: 4.1.5 + magic-string: 0.30.5 + mrmime: 1.0.1 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.3 + svelte: 4.2.3 + tiny-glob: 0.2.9 + undici: 5.26.3 + vite: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) + transitivePeerDependencies: + - supports-color + dev: false + /@sveltejs/site-kit@6.0.0-next.52(@sveltejs/kit@packages+kit)(svelte@4.2.2): resolution: {integrity: sha512-r/VoVllvrr9So9LcYT7XRXDK38Q6Fx062gosuTkDztENBw+qGp3hMq1vg9qSomJastmavRzze1cjJnQFgacWMw==} peerDependencies: @@ -2051,6 +2094,22 @@ packages: - supports-color dev: false + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.2)(svelte@4.2.3)(vite@4.5.0): + resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^2.2.0 + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.5.2(svelte@4.2.3)(vite@4.5.0) + debug: 4.3.4 + svelte: 4.2.3 + vite: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) + transitivePeerDependencies: + - supports-color + dev: false + /@sveltejs/vite-plugin-svelte@2.4.1(svelte@4.2.2)(vite@4.4.9): resolution: {integrity: sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==} engines: {node: ^14.18.0 || >= 16} @@ -2071,6 +2130,26 @@ packages: - supports-color dev: false + /@sveltejs/vite-plugin-svelte@2.5.2(svelte@4.2.3)(vite@4.5.0): + resolution: {integrity: sha512-Dfy0Rbl+IctOVfJvWGxrX/3m6vxPLH8o0x+8FA5QEyMUQMo4kGOVIojjryU7YomBAexOTAuYf1RT7809yDziaA==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.2)(svelte@4.2.3)(vite@4.5.0) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.5 + svelte: 4.2.3 + svelte-hmr: 0.15.3(svelte@4.2.3) + vite: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) + vitefu: 0.2.4(vite@4.5.0) + transitivePeerDependencies: + - supports-color + dev: false + /@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} @@ -5770,6 +5849,15 @@ packages: svelte: 4.2.2 dev: false + /svelte-hmr@0.15.3(svelte@4.2.3): + resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + dependencies: + svelte: 4.2.3 + dev: false + /svelte-local-storage-store@0.6.0(svelte@4.2.2): resolution: {integrity: sha512-UbCY/yT/YUadU5IX/gZkoRQnA+ebFZHKKQjlJvfWHnBj3CPe9sNn8ndxYz/xy4LUzGjuBLq8+wH5RYK54ba3wA==} engines: {node: '>=0.14'} @@ -5905,6 +5993,24 @@ packages: magic-string: 0.30.5 periscopic: 3.1.0 + /svelte@4.2.3: + resolution: {integrity: sha512-sqmG9KC6uUc7fb3ZuWoxXvqk6MI9Uu4ABA1M0fYDgTlFYu1k02xp96u6U9+yJZiVm84m9zge7rrA/BNZdFpOKw==} + engines: {node: '>=16'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + acorn: 8.10.0 + aria-query: 5.3.0 + axobject-query: 3.2.1 + code-red: 1.0.3 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.1 + locate-character: 3.0.0 + magic-string: 0.30.5 + periscopic: 3.1.0 + /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} dependencies: @@ -6292,7 +6398,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@16.18.6)(lightningcss@1.21.8) + vite: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) transitivePeerDependencies: - '@types/node' - less @@ -6340,6 +6446,42 @@ packages: optionalDependencies: fsevents: 2.3.3 + /vite@4.5.0(@types/node@16.18.6)(lightningcss@1.21.8): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 16.18.6 + esbuild: 0.18.20 + lightningcss: 1.21.8 + postcss: 8.4.31 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 + /vitefu@0.2.4(vite@4.4.9): resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: @@ -6351,6 +6493,17 @@ packages: vite: 4.4.9(@types/node@16.18.6)(lightningcss@1.21.8) dev: false + /vitefu@0.2.4(vite@4.5.0): + resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) + dev: false + /vitest@0.34.5(lightningcss@1.21.8)(playwright@1.30.0): resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} engines: {node: '>=v14.18.0'} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 061febda7d04..09c23c9f11f9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,6 +2,7 @@ packages: - 'packages/*' - 'sites/*' - 'packages/adapter-static/test/apps/*' + - 'packages/adapter-vercel/test/apps/*' - 'packages/kit/test/apps/*' - 'packages/kit/test/prerendering/*' - 'packages/kit/test/build-errors/**' From efa240d64f504f0010e9a7f403828b8d0615e9d8 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 15:30:07 +0800 Subject: [PATCH 14/62] prettier --- packages/adapter-vercel/test/apps/split/test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/adapter-vercel/test/apps/split/test/test.js b/packages/adapter-vercel/test/apps/split/test/test.js index 6ccc05bae764..025b99f8c149 100644 --- a/packages/adapter-vercel/test/apps/split/test/test.js +++ b/packages/adapter-vercel/test/apps/split/test/test.js @@ -14,7 +14,7 @@ test('includes server assets from page', () => { test('includes server assets from layouts', () => { expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/component1.49f0d6ea.txt`)).toBeTruthy(); expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); -}) +}); test('includes server assets from load functions', () => { expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout1.a02b2ee3.txt`)).toBeTruthy(); From 816fe4434da5d4f8e3f557b1b3abc23b3100f6a0 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 16:00:45 +0800 Subject: [PATCH 15/62] fix tests --- packages/adapter-vercel/test/apps/split/test/test.js | 2 +- packages/kit/src/core/adapt/builder.js | 2 +- packages/kit/src/core/adapt/builder.spec.js | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/adapter-vercel/test/apps/split/test/test.js b/packages/adapter-vercel/test/apps/split/test/test.js index 025b99f8c149..c399d0cd0214 100644 --- a/packages/adapter-vercel/test/apps/split/test/test.js +++ b/packages/adapter-vercel/test/apps/split/test/test.js @@ -3,7 +3,7 @@ import { expect, test } from '@playwright/test'; const cwd = process.cwd(); -const vercel = `${cwd}.vercel/output/functions`; +const vercel = `${cwd}/.vercel/output/functions`; const assets = '_app/immutable/assets'; diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 1fdb05a67366..bed2efeb2c35 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -99,7 +99,7 @@ export function create_builder({ return server_assets; } - const route_dir = config.kit.files.routes.split(process.cwd() + '/').join(''); + const route_dir = config.kit.files.routes.slice(process.cwd().length + 1); /** * @param {import('types').RouteData} route diff --git a/packages/kit/src/core/adapt/builder.spec.js b/packages/kit/src/core/adapt/builder.spec.js index 9786fbf6f14a..62959cbc5ffb 100644 --- a/packages/kit/src/core/adapt/builder.spec.js +++ b/packages/kit/src/core/adapt/builder.spec.js @@ -19,7 +19,8 @@ test('copy files', () => { kit: { appDir: '_app', files: { - assets: join(__dirname, 'fixtures/basic/static') + assets: join(__dirname, 'fixtures/basic/static'), + routes: '' }, outDir } @@ -63,6 +64,13 @@ test('copy files', () => { test('compress files', async () => { const builder = create_builder({ + config: /** @type {import('types').ValidatedConfig} */ ({ + kit: { + files: { + routes: '' + } + } + }), route_data: [], // @ts-expect-error - we don't need the whole config for this test build_data: { From 7390ed877252c3717d5c4ef0c30e7734e8969ce0 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 16:56:12 +0800 Subject: [PATCH 16/62] fix types --- .../test/apps/split/package.json | 4 +- pnpm-lock.yaml | 84 ++----------------- 2 files changed, 11 insertions(+), 77 deletions(-) diff --git a/packages/adapter-vercel/test/apps/split/package.json b/packages/adapter-vercel/test/apps/split/package.json index c0e2bbfc47fd..2ced90631d2b 100644 --- a/packages/adapter-vercel/test/apps/split/package.json +++ b/packages/adapter-vercel/test/apps/split/package.json @@ -10,8 +10,8 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "svelte": "^4.2.3", - "vite": "^4.5.0" + "svelte": "^4.2.2", + "vite": "^4.4.9" }, "type": "module" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 60ac9b02397d..d72691626eb0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,7 +80,7 @@ importers: version: 4.20230404.0 '@sveltejs/kit': specifier: ^1.0.0 - version: 1.27.5(svelte@4.2.3)(vite@4.5.0) + version: link:../kit esbuild: specifier: ^0.18.11 version: 0.18.11 @@ -108,7 +108,7 @@ importers: version: 2.2.5 '@sveltejs/kit': specifier: ^1.0.0 - version: 1.27.5(svelte@4.2.3)(vite@4.5.0) + version: link:../kit esbuild: specifier: ^0.18.11 version: 0.18.11 @@ -294,17 +294,17 @@ importers: specifier: workspace:^ version: link:../../../../kit svelte: - specifier: ^4.2.3 + specifier: ^4.2.2 version: 4.2.3 vite: - specifier: ^4.5.0 - version: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) + specifier: ^4.4.9 + version: 4.4.9(@types/node@16.18.6)(lightningcss@1.21.8) packages/amp: dependencies: '@sveltejs/kit': specifier: ^1.0.0 - version: 1.27.5(svelte@4.2.3)(vite@4.5.0) + version: link:../kit packages/create-svelte: dependencies: @@ -2072,34 +2072,6 @@ packages: typescript: 4.9.4 dev: true - /@sveltejs/kit@1.27.5(svelte@4.2.3)(vite@4.5.0): - resolution: {integrity: sha512-+L1WPs/ZYNjXoBFoFARypD4aZOjkT51vFpRCtQI45+Fmmfi4Y0dH/8VFlmYD6VlGe89ViIPg7lgf/JpGQ2tr7A==} - engines: {node: ^16.14 || >=18} - hasBin: true - requiresBuild: true - peerDependencies: - svelte: ^3.54.0 || ^4.0.0-next.0 || ^5.0.0-next.0 - vite: ^4.0.0 - dependencies: - '@sveltejs/vite-plugin-svelte': 2.5.2(svelte@4.2.3)(vite@4.5.0) - '@types/cookie': 0.5.1 - cookie: 0.5.0 - devalue: 4.3.1 - esm-env: 1.0.0 - kleur: 4.1.5 - magic-string: 0.30.5 - mrmime: 1.0.1 - sade: 1.8.1 - set-cookie-parser: 2.6.0 - sirv: 2.0.3 - svelte: 4.2.3 - tiny-glob: 0.2.9 - undici: 5.26.3 - vite: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) - transitivePeerDependencies: - - supports-color - dev: false - /@sveltejs/site-kit@6.0.0-next.52(@sveltejs/kit@packages+kit)(svelte@4.2.2): resolution: {integrity: sha512-r/VoVllvrr9So9LcYT7XRXDK38Q6Fx062gosuTkDztENBw+qGp3hMq1vg9qSomJastmavRzze1cjJnQFgacWMw==} peerDependencies: @@ -2148,26 +2120,6 @@ packages: - supports-color dev: false - /@sveltejs/vite-plugin-svelte@2.5.2(svelte@4.2.3)(vite@4.5.0): - resolution: {integrity: sha512-Dfy0Rbl+IctOVfJvWGxrX/3m6vxPLH8o0x+8FA5QEyMUQMo4kGOVIojjryU7YomBAexOTAuYf1RT7809yDziaA==} - engines: {node: ^14.18.0 || >= 16} - peerDependencies: - svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 - vite: ^4.0.0 - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.2)(svelte@4.2.3)(vite@4.5.0) - debug: 4.3.4 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.5 - svelte: 4.2.3 - svelte-hmr: 0.15.3(svelte@4.2.3) - vite: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) - vitefu: 0.2.4(vite@4.5.0) - transitivePeerDependencies: - - supports-color - dev: false - /@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} @@ -5868,15 +5820,6 @@ packages: svelte: 4.2.2 dev: false - /svelte-hmr@0.15.3(svelte@4.2.3): - resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - dependencies: - svelte: 4.2.3 - dev: false - /svelte-local-storage-store@0.6.0(svelte@4.2.2): resolution: {integrity: sha512-UbCY/yT/YUadU5IX/gZkoRQnA+ebFZHKKQjlJvfWHnBj3CPe9sNn8ndxYz/xy4LUzGjuBLq8+wH5RYK54ba3wA==} engines: {node: '>=0.14'} @@ -6037,6 +5980,7 @@ packages: locate-character: 3.0.0 magic-string: 0.30.5 periscopic: 3.1.0 + dev: true /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} @@ -6502,6 +6446,7 @@ packages: rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 + dev: true /vitefu@0.2.4(vite@4.4.9): resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} @@ -6514,17 +6459,6 @@ packages: vite: 4.4.9(@types/node@16.18.6)(lightningcss@1.21.8) dev: false - /vitefu@0.2.4(vite@4.5.0): - resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - vite: - optional: true - dependencies: - vite: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) - dev: false - /vitest@0.34.5(lightningcss@1.21.8)(playwright@1.30.0): resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} engines: {node: '>=v14.18.0'} @@ -6578,7 +6512,7 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.0 tinypool: 0.7.0 - vite: 4.4.9(@types/node@16.18.6)(lightningcss@1.21.8) + vite: 4.5.0(@types/node@16.18.6)(lightningcss@1.21.8) vite-node: 0.34.5(@types/node@16.18.6)(lightningcss@1.21.8) why-is-node-running: 2.2.2 transitivePeerDependencies: From 2c9e86c6491acb7eb785a8a2899ce4dc542f0d3f Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 16:58:38 +0800 Subject: [PATCH 17/62] more type fixes --- .../adapter-vercel/test/apps/split/src/routes/load/+layout.js | 1 + .../test/apps/split/src/routes/load/+layout.server.js | 1 + packages/adapter-vercel/test/apps/split/src/routes/load/+page.js | 1 + .../test/apps/split/src/routes/load/+page.server.js | 1 + 4 files changed, 4 insertions(+) diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js index 16f1d7ed40d9..141b18e1db1d 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js @@ -1,5 +1,6 @@ import layout2 from '$lib/layout2.txt'; +/** @type {import('./$types').LayoutLoad} */ export function load({ data }) { return { ...data, layout2 }; } diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js index 1d3107c9d4e4..2647ed53d158 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js @@ -1,5 +1,6 @@ import layout1 from '$lib/layout1.txt'; +/** @type {import('./$types').LayoutServerLoad} */ export function load() { return { layout1 }; } diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js index c2be6fc450e0..6f68f9104499 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js @@ -1,5 +1,6 @@ import page2 from '$lib/page2.txt'; +/** @type {import('./$types').PageLoad} */ export async function load({ parent, data }) { return { ...data, ...(await parent()), page2 }; } diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js index 0317909576f2..02a729ffd65f 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js @@ -1,5 +1,6 @@ import page1 from '$lib/page1.txt'; +/** @type {import('./$types').PageServerLoad} */ export async function load({ parent }) { return { ...(await parent()), page1 }; } From 957dc06f09c52c50612311282cc3a337ea2e8a16 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 17:03:50 +0800 Subject: [PATCH 18/62] try this --- packages/adapter-vercel/tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index 8aa63e3d2a76..627d48a37054 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -14,5 +14,6 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "include": ["**/*.js", "index.d.ts", "internal.d.ts"] + "include": ["**/*.js", "index.d.ts", "internal.d.ts"], + "exclude": ["test/apps"] } From 396d48c70a8412d4c78388f17054be3625d81df8 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 18:03:37 +0800 Subject: [PATCH 19/62] documentation --- .../25-build-and-deploy/80-adapter-netlify.md | 40 +++++++++++++++++-- .../25-build-and-deploy/90-adapter-vercel.md | 2 +- 2 files changed, 38 insertions(+), 4 deletions(-) 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 168f1bdc073d..a9c779c9da99 100644 --- a/documentation/docs/25-build-and-deploy/80-adapter-netlify.md +++ b/documentation/docs/25-build-and-deploy/80-adapter-netlify.md @@ -107,8 +107,42 @@ Additionally, you can add your own Netlify functions by creating a directory for directory = "functions" ``` -## Troubleshooting - ### Accessing the file system -You can't access the file system through methods like `fs.readFileSync` in Serverless/Edge environments. If you need to access files that way, do that during building the app through [prerendering](https://kit.svelte.dev/docs/page-options#prerender). If you have a blog for example and don't want to manage your content through a CMS, then you need to prerender the content (or prerender the endpoint from which you get it) and redeploy your blog everytime you add new content. +You can [use files in Netlify Serverless Functions](https://www.netlify.com/blog/2021/08/12/how-to-include-files-in-netlify-serverless-functions/). + +```js +// @errors: 2307 7031 +/// file: api/pdf/+server.js +import fs from "node:fs"; +import path from "node:path"; +import { json } from '@sveltejs/kit'; +import { dev } from '$app/environment'; +import PDFDocument from "pdfkit"; +import PalatinoBoldFont from "$lib/fonts/PalatinoBold.ttf"; + +// server assets live in `.netlify/server` when deployed to Netlify +const dir = dev ? process.cwd() : path.join(process.cwd(), '.netlify/server'); + +const font = path.join(dir, PalatinoBoldFont); + +export async function GET({ url }) { + const title = url.searchParams.get('title'); + const filename = url.searchParams.get('filename'); + + const doc = new PDFDocument(); + const file = `/tmp/${filename}.pdf`; + let writeStream = fs.createWriteStream(file); + doc.pipe(writeStream); + doc.font(font).fontSize(25).text(title, 100, 100); + doc.end(); + + writeStream.on("finish", () => { + const fileContent = fs.readFileSync(file); + + // upload file to storage bucket + + return json({ response: `File ${filename} saved` }); + }); +} +``` \ No newline at end of file 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 cb12987a612c..ff9389bcf7b5 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -141,7 +141,7 @@ If you have Vercel functions contained in the `api` directory at the project's r Projects created before a certain date will default to using Node 14, while SvelteKit requires Node 16 or later. You can [change the Node version in your project settings](https://vercel.com/docs/concepts/functions/serverless-functions/runtimes/node-js#node.js-version). -## Accessing the file system +### Accessing the file system You can [use files in Serverless Functions on Vercel](https://vercel.com/guides/how-can-i-use-files-in-serverless-functions). From bb1d8918eb23026a8150c387828d681557fb1f0a Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 18:25:12 +0800 Subject: [PATCH 20/62] skip adapter-vercel tests if on node v20 --- packages/adapter-vercel/test/apps/split/test/test.js | 2 -- packages/adapter-vercel/test/utils.js | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/adapter-vercel/test/apps/split/test/test.js b/packages/adapter-vercel/test/apps/split/test/test.js index c399d0cd0214..000fee5e2c36 100644 --- a/packages/adapter-vercel/test/apps/split/test/test.js +++ b/packages/adapter-vercel/test/apps/split/test/test.js @@ -2,9 +2,7 @@ import * as fs from 'node:fs'; import { expect, test } from '@playwright/test'; const cwd = process.cwd(); - const vercel = `${cwd}/.vercel/output/functions`; - const assets = '_app/immutable/assets'; test('includes server assets from page', () => { diff --git a/packages/adapter-vercel/test/utils.js b/packages/adapter-vercel/test/utils.js index f61cd97cda8f..94dae2a21cad 100644 --- a/packages/adapter-vercel/test/utils.js +++ b/packages/adapter-vercel/test/utils.js @@ -1,5 +1,10 @@ import { devices } from '@playwright/test'; +const major = process.version.slice(1).split('.')[0]; +if (major !== '16' && major !== '18') { + process.exit(0); +} + /** @type {import('@playwright/test').PlaywrightTestConfig} */ export const config = { forbidOnly: !!process.env.CI, From 3449ca2f5cfc2970f9d47738bd610927d12a7788 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 20:09:37 +0800 Subject: [PATCH 21/62] oopsie wrong PR --- packages/kit/src/core/postbuild/analyse.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/kit/src/core/postbuild/analyse.js b/packages/kit/src/core/postbuild/analyse.js index db1e0cb3721d..c311dfe43337 100644 --- a/packages/kit/src/core/postbuild/analyse.js +++ b/packages/kit/src/core/postbuild/analyse.js @@ -93,11 +93,10 @@ async function analyse({ manifest_path, env }) { prerender = mod.prerender; } - Object.keys(mod).forEach((key) => { - // @ts-ignore - if (mod[key] && ENDPOINT_METHODS.has(key)) { - api_methods.push(/** @type {import('types').HttpMethod} */ (key)); - } else if (mod.fallback && key === 'fallback') { + Object.values(mod).forEach((/** @type {import('types').HttpMethod} */ method) => { + if (mod[method] && ENDPOINT_METHODS.has(method)) { + api_methods.push(method); + } else if (mod.fallback) { api_methods.push('*'); } }); From 8fbc1aaba416fa8be5d3a553749234c5a48aea51 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 21:15:46 +0800 Subject: [PATCH 22/62] move server asset metadata resolving to function --- packages/adapter-vercel/index.js | 37 ++-- packages/adapter-vercel/tsconfig.json | 3 +- packages/kit/src/core/adapt/builder.js | 232 ++++++++++++++----------- packages/kit/src/exports/public.d.ts | 10 +- 4 files changed, 162 insertions(+), 120 deletions(-) diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 0546a4078daa..facbf94e1939 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -19,7 +19,7 @@ const get_default_runtime = () => { ); }; -/** @type {import('.').default} **/ +/** @type {import('./index.js').default} **/ const plugin = function (defaults = {}) { if ('edge' in defaults) { throw new Error("{ edge: true } has been removed in favour of { runtime: 'edge' }"); @@ -61,8 +61,8 @@ const plugin = function (defaults = {}) { /** * @param {string} name - * @param {import('.').ServerlessConfig} config - * @param {import('@sveltejs/kit').RouteDefinition[]} routes + * @param {import('./index.js').ServerlessConfig} config + * @param {import('@sveltejs/kit').RouteDefinition[]} routes */ async function generate_serverless_function(name, config, routes) { const relativePath = path.posix.relative(tmp, builder.getServerDirectory()); @@ -90,8 +90,8 @@ const plugin = function (defaults = {}) { /** * @param {string} name - * @param {import('.').EdgeConfig} config - * @param {import('@sveltejs/kit').RouteDefinition[]} routes + * @param {import('./index.js').EdgeConfig} config + * @param {import('@sveltejs/kit').RouteDefinition[]} routes */ async function generate_edge_function(name, config, routes) { const tmp = builder.getBuildDirectory(`vercel-tmp/${name}`); @@ -138,7 +138,7 @@ const plugin = function (defaults = {}) { ); } - /** @type {Map[] }>} */ + /** @type {Map[] }>} */ const groups = new Map(); /** @type {Map} */ @@ -147,7 +147,7 @@ const plugin = function (defaults = {}) { /** @type {Map} */ const functions = new Map(); - /** @type {Map, { expiration: number | false, bypassToken: string | undefined, allowQuery: string[], group: number, passQuery: true }>} */ + /** @type {Map, { expiration: number | false, bypassToken: string | undefined, allowQuery: string[], group: number, passQuery: true }>} */ const isr_config = new Map(); /** @type {Set} */ @@ -342,7 +342,7 @@ const plugin = function (defaults = {}) { }; }; -/** @param {import('.').EdgeConfig & import('.').ServerlessConfig} config */ +/** @param {import('./index.js').EdgeConfig & import('./index.js').ServerlessConfig} config */ function hash_config(config) { return [ config.runtime ?? '', @@ -430,7 +430,7 @@ function static_vercel_config(builder) { * @param {import('@sveltejs/kit').Builder} builder * @param {string} entry * @param {string} dir - * @param {import('.').ServerlessConfig} config + * @param {import('./index.js').ServerlessConfig} config * @param {import('@sveltejs/kit').RouteDefinition[]} routes */ async function create_function_bundle(builder, entry, dir, config, routes) { @@ -541,10 +541,21 @@ async function create_function_bundle(builder, entry, dir, config, routes) { ) ); - for (const asset of new Set([ - ...routes.flatMap((route) => route.serverAssets), - ...builder.getRootErrorPageServerAssets() - ])) { + const { serverAssets, rootErrorPageAssets } = builder.getServerAssets(); + const routes_assets = new Set(rootErrorPageAssets); + + const routes_length = routes.length; + for (let i = 0; i < routes_length; i++) { + const assets = serverAssets.get(routes[i].id); + if (assets) { + const assets_length = assets.length; + for (let j = 0; j < assets_length; j++) { + routes_assets.add(assets[j]); + } + } + } + + for (const asset of routes_assets) { builder.copy(path.join(builder.getServerDirectory(), asset), path.join(dir, asset)); } diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index 627d48a37054..d0551eb860ab 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -14,6 +14,5 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "include": ["**/*.js", "index.d.ts", "internal.d.ts"], - "exclude": ["test/apps"] + "include": ["index.js", "utils.js"] } diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index bed2efeb2c35..7939e06225c5 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -42,84 +42,6 @@ export function create_builder({ /** @type {Map} */ const lookup = new Map(); - /** @type {Set} */ - let asset_chunks = new Set(); - - for (const [filename, meta] of Object.entries(build_data.server_manifest)) { - if (filename.startsWith('_') && meta.assets) { - asset_chunks = concat(asset_chunks, meta.assets); - } - } - - /** - * @param {string | undefined} filename - * @returns {Set} - */ - function get_server_assets(filename) { - if (!filename || !build_data.server_manifest[filename]) { - return /** @type {Set} */ (new Set()); - } - const { imports, assets } = build_data.server_manifest[filename]; - - /** @type {Set} */ - let server_assets = new Set(); - - if (imports) { - server_assets = concat( - server_assets, - imports.filter((file) => asset_chunks.has(file)) - ); - } - if (assets) { - server_assets = concat(server_assets, assets); - } - - return server_assets; - } - - /** - * @param {{ - * component?: string; - * server?: string; - * universal?: string; - * parent?: import('types').PageNode; - * }} node - * @returns - */ - function get_page_node_assets({ component, server, universal, parent }) { - let server_assets = concat( - /** @type {Set}*/ (new Set()), - get_server_assets(component), - get_server_assets(server), - get_server_assets(universal) - ); - if (parent) { - server_assets = concat(server_assets, get_page_node_assets(parent)); - } - return server_assets; - } - - const route_dir = config.kit.files.routes.slice(process.cwd().length + 1); - - /** - * @param {import('types').RouteData} route - */ - function get_default_error_page_assets(route) { - /** @type {Set} */ - let server_assets = new Set(); - let route_id = route.id; - do { - server_assets = concat( - server_assets, - get_server_assets( - `${route_dir}${route_id === '/' ? route_id : route_id + '/'}+error.svelte` - ) - ); - route_id = route_id.split('/').slice(0, -1).join('/'); - } while (route_id); - return server_assets; - } - /** * Rather than exposing the internal `RouteData` type, which is subject to change, * we expose a stable type that adapters can use to group/filter routes @@ -129,18 +51,6 @@ export function create_builder({ server_metadata.routes.get(route.id) ); - let server_assets = new Set(); - if (route.leaf) { - server_assets = concat( - server_assets, - get_page_node_assets(route.leaf), - get_default_error_page_assets(route) - ); - } - if (route.endpoint) { - server_assets = concat(server_assets, get_server_assets(route.endpoint.file)); - } - /** @type {import('@sveltejs/kit').RouteDefinition} */ const facade = { id: route.id, @@ -154,8 +64,7 @@ export function create_builder({ pattern: route.pattern, prerender: prerender_map.get(route.id) ?? false, methods, - config, - serverAssets: Array.from(server_assets) + config }; lookup.set(facade, route); @@ -163,6 +72,11 @@ export function create_builder({ return facade; }); + /** @type {Map | undefined} */ + let serverAssets; + /** @type {string[] | undefined} */ + let rootErrorPageAssets; + return { log, rimraf, @@ -274,21 +188,135 @@ export function create_builder({ return build_data.app_path; }, - getRootErrorPageServerAssets() { - const route = route_data.find((route) => route.leaf); - if (!route || !route.leaf) { - return /** @type {string[]}*/ ([]); + getServerAssets() { + if (serverAssets && rootErrorPageAssets) { + return { + serverAssets, + rootErrorPageAssets + }; } - let assets = new Set(get_server_assets(`${route_dir}/+error.svelte`)); + /** @type {Set} */ + let asset_chunks = new Set(); - let layout = route.leaf.parent; - while (layout) { - assets = concat(assets, get_page_node_assets(layout)); - layout = layout.parent; + for (const [filename, meta] of Object.entries(build_data.server_manifest)) { + if (filename.startsWith('_') && meta.assets) { + asset_chunks = concat(asset_chunks, meta.assets); + } + } + + /** + * @param {string | undefined} filename + * @returns {Set} + */ + function get_server_assets(filename) { + if (!filename || !build_data.server_manifest[filename]) { + return /** @type {Set} */ (new Set()); + } + const { imports, assets } = build_data.server_manifest[filename]; + + /** @type {Set} */ + let server_assets = new Set(); + + if (imports) { + server_assets = concat( + server_assets, + imports.filter((file) => asset_chunks.has(file)) + ); + } + if (assets) { + server_assets = concat(server_assets, assets); + } + + return server_assets; + } + + /** + * @param {{ + * component?: string; + * server?: string; + * universal?: string; + * parent?: import('types').PageNode; + * }} node + * @returns + */ + function get_page_node_assets({ component, server, universal, parent }) { + let server_assets = concat( + /** @type {Set}*/ (new Set()), + get_server_assets(component), + get_server_assets(server), + get_server_assets(universal) + ); + if (parent) { + server_assets = concat(server_assets, get_page_node_assets(parent)); + } + return server_assets; + } + + const route_dir = config.kit.files.routes.slice(process.cwd().length + 1); + + /** + * @param {import('types').RouteData} route + */ + function get_default_error_page_assets(route) { + /** @type {Set} */ + let server_assets = new Set(); + let route_id = route.id; + do { + server_assets = concat( + server_assets, + get_server_assets( + `${route_dir}${route_id === '/' ? route_id : route_id + '/'}+error.svelte` + ) + ); + route_id = route_id.split('/').slice(0, -1).join('/'); + } while (route_id); + return server_assets; } - return [...assets]; + function get_root_error_page_assets() { + const route = route_data.find((route) => route.leaf); + if (!route || !route.leaf) { + return /** @type {string[]}*/ ([]); + } + + let assets = new Set(get_server_assets(`${route_dir}/+error.svelte`)); + + let layout = route.leaf.parent; + while (layout) { + assets = concat(assets, get_page_node_assets(layout)); + layout = layout.parent; + } + + return [...assets]; + } + + /** @type {Map} */ + const routes = new Map(); + route_data.forEach((route) => { + /** @type {Set} */ + let server_assets = new Set(); + if (route.leaf) { + server_assets = concat( + server_assets, + get_page_node_assets(route.leaf), + get_default_error_page_assets(route) + ); + } + if (route.endpoint) { + server_assets = concat(server_assets, get_server_assets(route.endpoint.file)); + } + + routes.set(route.id, Array.from(server_assets)); + }); + + serverAssets = routes; + rootErrorPageAssets = get_root_error_page_assets(); + + return { + serverAssets, + rootErrorPageAssets + }; }, writeClient(dest) { diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index 0cb7c7621ff1..555e91f20ba6 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -121,8 +121,13 @@ export interface Builder { getServerDirectory(): string; /** Get the application path including any configured `base` path, e.g. `my-base-path/_app`. */ getAppPath(): string; - /** Get an array of server assets used by the root [default error page](https://kit.svelte.dev/docs/routing#error). */ - getRootErrorPageServerAssets(): string[]; + /** Get the asset paths imported by server-side code. */ + getServerAssets(): { + /** A map of route IDs and its array of assets paths imported by server-side code. */ + serverAssets: Map; + /** An array of asset paths imported by the root [default error page](https://kit.svelte.dev/docs/routing#error). */ + rootErrorPageAssets: string[]; + }; /** * Write client assets to `dest`. @@ -1096,7 +1101,6 @@ export interface RouteDefinition { segments: RouteSegment[]; methods: Array; config: Config; - serverAssets: string[]; } export class Server { From 306dcde4aac58649c5b7afe597bddbef01c37d74 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 21:19:06 +0800 Subject: [PATCH 23/62] update changesets --- .changeset/loud-needles-refuse.md | 2 +- .changeset/selfish-bobcats-run.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/loud-needles-refuse.md b/.changeset/loud-needles-refuse.md index a98254e9f310..a987903ee784 100644 --- a/.changeset/loud-needles-refuse.md +++ b/.changeset/loud-needles-refuse.md @@ -2,4 +2,4 @@ '@sveltejs/adapter-vercel': minor --- -feat: server assets are bundled together with serverless functions +feat: bundle server assets with serverless functions diff --git a/.changeset/selfish-bobcats-run.md b/.changeset/selfish-bobcats-run.md index 3cdca15db6a5..a5c561daedef 100644 --- a/.changeset/selfish-bobcats-run.md +++ b/.changeset/selfish-bobcats-run.md @@ -2,4 +2,4 @@ '@sveltejs/kit': minor --- -feat: build metadata includes the server assets used by each route +feat: adapter method to get server assets used by each route From 71a722cc3f94259b521fdaa5794c53d7c329c830 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 12 Nov 2023 22:14:43 +0800 Subject: [PATCH 24/62] revert builder test fixes --- packages/kit/src/core/adapt/builder.spec.js | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/packages/kit/src/core/adapt/builder.spec.js b/packages/kit/src/core/adapt/builder.spec.js index 62959cbc5ffb..d61fe4c70860 100644 --- a/packages/kit/src/core/adapt/builder.spec.js +++ b/packages/kit/src/core/adapt/builder.spec.js @@ -19,8 +19,7 @@ test('copy files', () => { kit: { appDir: '_app', files: { - assets: join(__dirname, 'fixtures/basic/static'), - routes: '' + assets: join(__dirname, 'fixtures/basic/static') }, outDir } @@ -29,9 +28,7 @@ test('copy files', () => { const builder = create_builder({ config: /** @type {import('types').ValidatedConfig} */ (mocked), // @ts-expect-error - build_data: { - server_manifest: {} - }, + build_data: {}, // @ts-expect-error server_metadata: {}, route_data: [], @@ -63,19 +60,9 @@ test('copy files', () => { }); test('compress files', async () => { + // @ts-expect-error - we don't need the whole config for this test const builder = create_builder({ - config: /** @type {import('types').ValidatedConfig} */ ({ - kit: { - files: { - routes: '' - } - } - }), - route_data: [], - // @ts-expect-error - we don't need the whole config for this test - build_data: { - server_manifest: {} - } + route_data: [] }); const target = fileURLToPath(new URL('./fixtures/compress/foo.css', import.meta.url)); From 7625adbeddfd040c668d59c1983cbaefcf4fc525 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 21 Dec 2023 21:05:34 +0800 Subject: [PATCH 25/62] fix lockfile --- pnpm-lock.yaml | 267 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 265 insertions(+), 2 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50edfabd3de0..a4b3087fca32 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -307,10 +307,10 @@ importers: version: link:../../../../kit svelte: specifier: ^4.2.2 - version: 4.2.3 + version: 4.2.8 vite: specifier: ^4.4.9 - version: 4.4.9(@types/node@16.18.6)(lightningcss@1.21.8) + version: 4.5.1 packages/amp: dependencies: @@ -1502,6 +1502,15 @@ packages: dev: false optional: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.19.9: resolution: {integrity: sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==} engines: {node: '>=12'} @@ -1510,6 +1519,15 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.19.9: resolution: {integrity: sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==} engines: {node: '>=12'} @@ -1518,6 +1536,15 @@ packages: requiresBuild: true optional: true + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.19.9: resolution: {integrity: sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==} engines: {node: '>=12'} @@ -1526,6 +1553,15 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.19.9: resolution: {integrity: sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==} engines: {node: '>=12'} @@ -1534,6 +1570,15 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.19.9: resolution: {integrity: sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==} engines: {node: '>=12'} @@ -1542,6 +1587,15 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.19.9: resolution: {integrity: sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==} engines: {node: '>=12'} @@ -1550,6 +1604,15 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.19.9: resolution: {integrity: sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==} engines: {node: '>=12'} @@ -1558,6 +1621,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.19.9: resolution: {integrity: sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==} engines: {node: '>=12'} @@ -1566,6 +1638,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.19.9: resolution: {integrity: sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==} engines: {node: '>=12'} @@ -1574,6 +1655,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.19.9: resolution: {integrity: sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==} engines: {node: '>=12'} @@ -1582,6 +1672,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.19.9: resolution: {integrity: sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==} engines: {node: '>=12'} @@ -1590,6 +1689,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.19.9: resolution: {integrity: sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==} engines: {node: '>=12'} @@ -1598,6 +1706,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.19.9: resolution: {integrity: sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==} engines: {node: '>=12'} @@ -1606,6 +1723,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.19.9: resolution: {integrity: sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==} engines: {node: '>=12'} @@ -1614,6 +1740,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.19.9: resolution: {integrity: sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==} engines: {node: '>=12'} @@ -1622,6 +1757,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.19.9: resolution: {integrity: sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==} engines: {node: '>=12'} @@ -1630,6 +1774,15 @@ packages: requiresBuild: true optional: true + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.19.9: resolution: {integrity: sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==} engines: {node: '>=12'} @@ -1638,6 +1791,15 @@ packages: requiresBuild: true optional: true + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.19.9: resolution: {integrity: sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==} engines: {node: '>=12'} @@ -1646,6 +1808,15 @@ packages: requiresBuild: true optional: true + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.19.9: resolution: {integrity: sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==} engines: {node: '>=12'} @@ -1654,6 +1825,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.19.9: resolution: {integrity: sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==} engines: {node: '>=12'} @@ -1662,6 +1842,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.19.9: resolution: {integrity: sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==} engines: {node: '>=12'} @@ -1670,6 +1859,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.19.9: resolution: {integrity: sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==} engines: {node: '>=12'} @@ -3432,6 +3630,36 @@ packages: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + /esbuild@0.19.9: resolution: {integrity: sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==} engines: {node: '>=12'} @@ -6300,6 +6528,41 @@ packages: - terser dev: true + /vite@4.5.1: + resolution: {integrity: sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.20 + postcss: 8.4.32 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /vite@5.0.8(@types/node@18.19.3)(lightningcss@1.22.1): resolution: {integrity: sha512-jYMALd8aeqR3yS9xlHd0OzQJndS9fH5ylVgWdB+pxTwxLKdO1pgC5Dlb398BUxpfaBxa4M9oT7j1g503Gaj5IQ==} engines: {node: ^18.0.0 || >=20.0.0} From 028f35e215e7714dd2f9ed1048b664f30a6e6dd0 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 21 Dec 2023 21:06:07 +0800 Subject: [PATCH 26/62] prettier --- packages/adapter-vercel/test/apps/split/src/app.html | 2 +- .../adapter-vercel/test/apps/split/src/routes/+layout.svelte | 2 +- packages/adapter-vercel/test/apps/split/src/routes/+page.svelte | 2 +- .../test/apps/split/src/routes/load/+layout.svelte | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/adapter-vercel/test/apps/split/src/app.html b/packages/adapter-vercel/test/apps/split/src/app.html index 6769ed5e89c5..77a5ff52c923 100644 --- a/packages/adapter-vercel/test/apps/split/src/app.html +++ b/packages/adapter-vercel/test/apps/split/src/app.html @@ -1,4 +1,4 @@ - + diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte b/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte index 9f7a5900f462..4f7d92417197 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte +++ b/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte @@ -1,5 +1,5 @@

{layout3}

diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte b/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte index 3d3ac6de52f6..29e50f2dee15 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte +++ b/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte @@ -1,5 +1,5 @@
diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte index af2b64e3cfbb..ef77ae57fe82 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte @@ -4,4 +4,4 @@

{asset}

- \ No newline at end of file + From 9401f079fdf62ce510ce466c78968d6709da6db9 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 21 Dec 2023 21:08:43 +0800 Subject: [PATCH 27/62] lint --- packages/kit/types/index.d.ts | 134 +++++++++++++++++++++++++--------- 1 file changed, 98 insertions(+), 36 deletions(-) diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 02fbb0c69cc0..4f0ac46e9609 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -105,6 +105,13 @@ declare module '@sveltejs/kit' { getServerDirectory(): string; /** Get the application path including any configured `base` path, e.g. `my-base-path/_app`. */ getAppPath(): string; + /** Get the asset paths imported by server-side code. */ + getServerAssets(): { + /** A map of route IDs and its array of assets paths imported by server-side code. */ + serverAssets: Map; + /** An array of asset paths imported by the root [default error page](https://kit.svelte.dev/docs/routing#error). */ + rootErrorPageAssets: string[]; + }; /** * Write client assets to `dest`. @@ -1322,7 +1329,9 @@ declare module '@sveltejs/kit' { * A function that is invoked once the entry has been created. This is where you * should write the function to the filesystem and generate redirect manifests. */ - complete(entry: { generateManifest(opts: { relativePath: string }): string }): MaybePromise; + complete(entry: { + generateManifest(opts: { relativePath: string }): string; + }): MaybePromise; } // Based on https://github.com/josh-hemphill/csp-typed-directives/blob/latest/src/csp.types.ts @@ -1715,14 +1724,22 @@ 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?: { - message: string; - } extends App.Error ? App.Error | string | undefined : never): never; + export function error( + status: NumericRange<400, 599>, + body?: { + message: string; + } extends App.Error + ? App.Error | string | undefined + : never + ): never; /** * Checks whether this is an error thrown by {@link error}. * @param status The status to filter for. * */ - export function isHttpError(e: unknown, status?: T | undefined): e is HttpError_1 & { + export function isHttpError( + e: unknown, + status?: T | undefined + ): e is HttpError_1 & { status: T extends undefined ? never : T; }; /** @@ -1761,21 +1778,35 @@ declare module '@sveltejs/kit' { * @param 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 data Data associated with the failure (e.g. validation errors) * */ - export function fail | undefined = undefined>(status: number, data: T): ActionFailure; - export type LessThan = TNumber extends TArray['length'] ? TArray[number] : LessThan; - export type NumericRange = Exclude, LessThan>; + export function fail | undefined = undefined>( + status: number, + data: T + ): ActionFailure; + export type LessThan< + TNumber extends number, + TArray extends any[] = [] + > = TNumber extends TArray['length'] + ? TArray[number] + : LessThan; + export type NumericRange = Exclude< + TEnd | LessThan, + LessThan + >; export const VERSION: string; class HttpError_1 { - - constructor(status: number, body: { - message: string; - } extends App.Error ? (App.Error | string | undefined) : App.Error); + constructor( + status: number, + body: { + message: string; + } extends App.Error + ? App.Error | string | undefined + : App.Error + ); status: number; body: App.Error; toString(): string; } class Redirect_1 { - constructor(status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308, location: string); status: 301 | 302 | 303 | 307 | 308 | 300 | 304 | 305 | 306; location: string; @@ -1850,17 +1881,26 @@ 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: Array + ): import('@sveltejs/kit').Handle; } declare module '@sveltejs/kit/node' { - export function getRequest({ request, base, bodySizeLimit }: { + export function getRequest({ + request, + base, + bodySizeLimit + }: { request: import('http').IncomingMessage; base: string; bodySizeLimit?: number; }): Promise; - export function setResponse(res: import('http').ServerResponse, response: Response): Promise; + export function setResponse( + res: import('http').ServerResponse, + response: Response + ): Promise; } declare module '@sveltejs/kit/node/polyfills' { @@ -1876,7 +1916,7 @@ declare module '@sveltejs/kit/vite' { /** * Returns the SvelteKit Vite plugins. * */ - export function sveltekit(): Promise; + export function sveltekit(): Promise>; } declare module '$app/environment' { @@ -1896,7 +1936,10 @@ declare module '$app/forms' { * This action updates the `form` property of the current page with the given data and updates `$page.status`. * In case of an error, it redirects to the nearest error page. * */ - export function applyAction | undefined, Failure extends Record | undefined>(result: import("@sveltejs/kit").ActionResult): Promise; + export function applyAction< + Success extends Record | undefined, + Failure extends Record | undefined + >(result: import('@sveltejs/kit').ActionResult): Promise; /** * Use this function to deserialize the response from a form submission. * Usage: @@ -1915,7 +1958,10 @@ declare module '$app/forms' { * } * ``` * */ - export function deserialize | undefined, Failure extends Record | undefined>(result: string): import("@sveltejs/kit").ActionResult; + export function deserialize< + Success extends Record | undefined, + Failure extends Record | undefined + >(result: string): import('@sveltejs/kit').ActionResult; /** * This action enhances a `
` element that otherwise would work without JavaScript. * @@ -1936,7 +1982,13 @@ declare module '$app/forms' { * @param form_element The form element * @param submit Submit callback */ - export function enhance | undefined, Failure extends Record | undefined>(form_element: HTMLFormElement, submit?: import("@sveltejs/kit").SubmitFunction): { + export function enhance< + Success extends Record | undefined, + Failure extends Record | undefined + >( + form_element: HTMLFormElement, + submit?: import('@sveltejs/kit').SubmitFunction + ): { destroy(): void; }; } @@ -1954,13 +2006,16 @@ declare module '$app/navigation' { * @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 {Object} opts Options related to the navigation * */ - export const goto: (url: string | URL, opts?: { - replaceState?: boolean; - noScroll?: boolean; - keepFocus?: boolean; - invalidateAll?: boolean; - state?: App.PageState; - }) => Promise; + export const goto: ( + url: string | URL, + opts?: { + replaceState?: boolean; + noScroll?: boolean; + keepFocus?: boolean; + invalidateAll?: boolean; + state?: App.PageState; + } + ) => Promise; /** * Causes any `load` functions belonging to the currently active page to re-run if they depend on the `url` in question, via `fetch` or `depends`. Returns a `Promise` that resolves when the page is subsequently updated. * @@ -2017,7 +2072,9 @@ declare module '$app/navigation' { * * `beforeNavigate` must be called during a component initialization. It remains active as long as the component is mounted. * */ - export const beforeNavigate: (callback: (navigation: import('@sveltejs/kit').BeforeNavigate) => void) => void; + export const 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. * @@ -2027,13 +2084,17 @@ declare module '$app/navigation' { * * `onNavigate` must be called during a component initialization. It remains active as long as the component is mounted. * */ - export const onNavigate: (callback: (navigation: import('@sveltejs/kit').OnNavigate) => MaybePromise<(() => void) | void>) => void; + export const onNavigate: ( + callback: (navigation: import('@sveltejs/kit').OnNavigate) => MaybePromise<(() => void) | void> + ) => void; /** * A lifecycle function that runs the supplied `callback` when the current component mounts, and also whenever we navigate to a new URL. * * `afterNavigate` must be called during a component initialization. It remains active as long as the component is mounted. * */ - export const afterNavigate: (callback: (navigation: import('@sveltejs/kit').AfterNavigate) => void) => void; + export const afterNavigate: ( + callback: (navigation: import('@sveltejs/kit').AfterNavigate) => void + ) => 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). * @@ -2067,11 +2128,10 @@ declare module '$app/paths' { declare module '$app/stores' { export function getStores(): { - page: typeof page; - + navigating: typeof navigating; - + updated: typeof updated; }; /** @@ -2088,7 +2148,9 @@ 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; + 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. * @@ -2097,7 +2159,7 @@ declare module '$app/stores' { export const updated: import('svelte/store').Readable & { check(): Promise; }; -}/** +} /** * It's possible to tell SvelteKit how to type objects inside your app by declaring the `App` namespace. By default, a new project will have a file called `src/app.d.ts` containing the following: * * ```ts @@ -2212,4 +2274,4 @@ declare module '__sveltekit/paths' { export function set_assets(path: string): void; } -//# sourceMappingURL=index.d.ts.map \ No newline at end of file +//# sourceMappingURL=index.d.ts.map From abafe51d4ab37a95958c9f11363aa6429a329642 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 21 Dec 2023 21:31:49 +0800 Subject: [PATCH 28/62] fix vercel tsc errors --- packages/adapter-vercel/index.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index f41fcb485a0d..cad87ec6b34d 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -164,7 +164,7 @@ const plugin = function (defaults = {}) { } const node_runtime = /nodejs([0-9]+)\.x/.exec(runtime); - if (runtime !== 'edge' && (!node_runtime || node_runtime[1] < 18)) { + if (runtime !== 'edge' && (!node_runtime || +node_runtime[1] < 18)) { throw new Error( `Invalid runtime '${runtime}' for route ${route.id}. Valid runtimes are 'edge' and 'nodejs18.x' or higher ` + '(see the Node.js Version section in your Vercel project settings for info on the currently supported versions).' @@ -369,7 +369,7 @@ function write(file, data) { // This function is duplicated in adapter-static /** * @param {import('@sveltejs/kit').Builder} builder - * @param {import('.').Config} config + * @param {import('index.js').Config} config */ function static_vercel_config(builder, config) { /** @type {any[]} */ @@ -378,8 +378,11 @@ function static_vercel_config(builder, config) { /** @type {Record} */ const overrides = {}; - /** @type {import('./index').ImagesConfig} */ - const images = config.images; + /** @type {import('./index.js').ImagesConfig | undefined} */ + let images; + if (config.runtime !== 'edge') { + images = /** @type {import('./index.js').ServerlessConfig} */ (config).images; + } for (const [src, redirect] of builder.prerendered.redirects) { prerendered_redirects.push({ From 7312bd96bd5994aa9e26a65140ae802f4f0eeb97 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Thu, 21 Dec 2023 21:40:25 +0800 Subject: [PATCH 29/62] prepublish only --- packages/kit/types/index.d.ts | 127 ++++++++++------------------------ 1 file changed, 36 insertions(+), 91 deletions(-) diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 4f0ac46e9609..89798a1c8727 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -1329,9 +1329,7 @@ declare module '@sveltejs/kit' { * A function that is invoked once the entry has been created. This is where you * should write the function to the filesystem and generate redirect manifests. */ - complete(entry: { - generateManifest(opts: { relativePath: string }): string; - }): MaybePromise; + complete(entry: { generateManifest(opts: { relativePath: string }): string }): MaybePromise; } // Based on https://github.com/josh-hemphill/csp-typed-directives/blob/latest/src/csp.types.ts @@ -1724,22 +1722,14 @@ 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?: { - message: string; - } extends App.Error - ? App.Error | string | undefined - : never - ): never; + export function error(status: NumericRange<400, 599>, body?: { + message: string; + } extends App.Error ? App.Error | string | undefined : never): never; /** * Checks whether this is an error thrown by {@link error}. * @param status The status to filter for. * */ - export function isHttpError( - e: unknown, - status?: T | undefined - ): e is HttpError_1 & { + export function isHttpError(e: unknown, status?: T | undefined): e is HttpError_1 & { status: T extends undefined ? never : T; }; /** @@ -1778,35 +1768,21 @@ declare module '@sveltejs/kit' { * @param 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 data Data associated with the failure (e.g. validation errors) * */ - export function fail | undefined = undefined>( - status: number, - data: T - ): ActionFailure; - export type LessThan< - TNumber extends number, - TArray extends any[] = [] - > = TNumber extends TArray['length'] - ? TArray[number] - : LessThan; - export type NumericRange = Exclude< - TEnd | LessThan, - LessThan - >; + export function fail | undefined = undefined>(status: number, data: T): ActionFailure; + export type LessThan = TNumber extends TArray['length'] ? TArray[number] : LessThan; + export type NumericRange = Exclude, LessThan>; export const VERSION: string; class HttpError_1 { - constructor( - status: number, - body: { - message: string; - } extends App.Error - ? App.Error | string | undefined - : App.Error - ); + + constructor(status: number, body: { + message: string; + } extends App.Error ? (App.Error | string | undefined) : App.Error); status: number; body: App.Error; toString(): string; } class Redirect_1 { + constructor(status: 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308, location: string); status: 301 | 302 | 303 | 307 | 308 | 300 | 304 | 305 | 306; location: string; @@ -1881,26 +1857,17 @@ declare module '@sveltejs/kit/hooks' { * * @param handlers The chain of `handle` functions * */ - export function sequence( - ...handlers: Array - ): import('@sveltejs/kit').Handle; + export function sequence(...handlers: import('@sveltejs/kit').Handle[]): import('@sveltejs/kit').Handle; } declare module '@sveltejs/kit/node' { - export function getRequest({ - request, - base, - bodySizeLimit - }: { + export function getRequest({ request, base, bodySizeLimit }: { request: import('http').IncomingMessage; base: string; bodySizeLimit?: number; }): Promise; - export function setResponse( - res: import('http').ServerResponse, - response: Response - ): Promise; + export function setResponse(res: import('http').ServerResponse, response: Response): Promise; } declare module '@sveltejs/kit/node/polyfills' { @@ -1916,7 +1883,7 @@ declare module '@sveltejs/kit/vite' { /** * Returns the SvelteKit Vite plugins. * */ - export function sveltekit(): Promise>; + export function sveltekit(): Promise; } declare module '$app/environment' { @@ -1936,10 +1903,7 @@ declare module '$app/forms' { * This action updates the `form` property of the current page with the given data and updates `$page.status`. * In case of an error, it redirects to the nearest error page. * */ - export function applyAction< - Success extends Record | undefined, - Failure extends Record | undefined - >(result: import('@sveltejs/kit').ActionResult): Promise; + export function applyAction | undefined, Failure extends Record | undefined>(result: import("@sveltejs/kit").ActionResult): Promise; /** * Use this function to deserialize the response from a form submission. * Usage: @@ -1958,10 +1922,7 @@ declare module '$app/forms' { * } * ``` * */ - export function deserialize< - Success extends Record | undefined, - Failure extends Record | undefined - >(result: string): import('@sveltejs/kit').ActionResult; + export function deserialize | undefined, Failure extends Record | undefined>(result: string): import("@sveltejs/kit").ActionResult; /** * This action enhances a `` element that otherwise would work without JavaScript. * @@ -1982,13 +1943,7 @@ declare module '$app/forms' { * @param form_element The form element * @param submit Submit callback */ - export function enhance< - Success extends Record | undefined, - Failure extends Record | undefined - >( - form_element: HTMLFormElement, - submit?: import('@sveltejs/kit').SubmitFunction - ): { + export function enhance | undefined, Failure extends Record | undefined>(form_element: HTMLFormElement, submit?: import("@sveltejs/kit").SubmitFunction): { destroy(): void; }; } @@ -2006,16 +1961,13 @@ declare module '$app/navigation' { * @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 {Object} opts Options related to the navigation * */ - export const goto: ( - url: string | URL, - opts?: { - replaceState?: boolean; - noScroll?: boolean; - keepFocus?: boolean; - invalidateAll?: boolean; - state?: App.PageState; - } - ) => Promise; + export const goto: (url: string | URL, opts?: { + replaceState?: boolean; + noScroll?: boolean; + keepFocus?: boolean; + invalidateAll?: boolean; + state?: App.PageState; + }) => Promise; /** * Causes any `load` functions belonging to the currently active page to re-run if they depend on the `url` in question, via `fetch` or `depends`. Returns a `Promise` that resolves when the page is subsequently updated. * @@ -2072,9 +2024,7 @@ declare module '$app/navigation' { * * `beforeNavigate` must be called during a component initialization. It remains active as long as the component is mounted. * */ - export const beforeNavigate: ( - callback: (navigation: import('@sveltejs/kit').BeforeNavigate) => void - ) => void; + export const 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. * @@ -2084,17 +2034,13 @@ declare module '$app/navigation' { * * `onNavigate` must be called during a component initialization. It remains active as long as the component is mounted. * */ - export const onNavigate: ( - callback: (navigation: import('@sveltejs/kit').OnNavigate) => MaybePromise<(() => void) | void> - ) => void; + export const onNavigate: (callback: (navigation: import('@sveltejs/kit').OnNavigate) => MaybePromise<(() => void) | void>) => void; /** * A lifecycle function that runs the supplied `callback` when the current component mounts, and also whenever we navigate to a new URL. * * `afterNavigate` must be called during a component initialization. It remains active as long as the component is mounted. * */ - export const afterNavigate: ( - callback: (navigation: import('@sveltejs/kit').AfterNavigate) => void - ) => void; + export const afterNavigate: (callback: (navigation: import('@sveltejs/kit').AfterNavigate) => void) => 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). * @@ -2128,10 +2074,11 @@ declare module '$app/paths' { declare module '$app/stores' { export function getStores(): { + page: typeof page; - + navigating: typeof navigating; - + updated: typeof updated; }; /** @@ -2148,9 +2095,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 navigating: import('svelte/store').Readable< - import('@sveltejs/kit').Navigation | null - >; + export const navigating: import('svelte/store').Readable; /** * 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. * @@ -2159,7 +2104,7 @@ declare module '$app/stores' { export const updated: import('svelte/store').Readable & { check(): Promise; }; -} /** +}/** * It's possible to tell SvelteKit how to type objects inside your app by declaring the `App` namespace. By default, a new project will have a file called `src/app.d.ts` containing the following: * * ```ts @@ -2274,4 +2219,4 @@ declare module '__sveltekit/paths' { export function set_assets(path: string): void; } -//# sourceMappingURL=index.d.ts.map +//# sourceMappingURL=index.d.ts.map \ No newline at end of file From 010081f95f11fa7bdf66122623812c9b7aac4a84 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Fri, 22 Dec 2023 00:28:58 +0800 Subject: [PATCH 30/62] fix: avoid running load functions when prerendering if no server load function exists and SSR is off (#11405) --- .changeset/orange-students-hide.md | 5 +++++ packages/kit/src/runtime/server/page/index.js | 13 +++++++++---- .../basics/src/routes/spa-shell/+page.js | 10 ++++++++++ .../basics/src/routes/spa-shell/+page.server.js | 1 + .../basics/src/routes/spa-shell/+page.svelte | 1 + .../kit/test/prerendering/basics/test/tests.spec.js | 8 ++++++++ 6 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 .changeset/orange-students-hide.md create mode 100644 packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.js create mode 100644 packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.server.js create mode 100644 packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.svelte diff --git a/.changeset/orange-students-hide.md b/.changeset/orange-students-hide.md new file mode 100644 index 000000000000..92606c701020 --- /dev/null +++ b/.changeset/orange-students-hide.md @@ -0,0 +1,5 @@ +--- +"@sveltejs/kit": patch +--- + +fix: render SPA shell when SSR is turned off and there is no server data diff --git a/packages/kit/src/runtime/server/page/index.js b/packages/kit/src/runtime/server/page/index.js index 067d60585cd9..f8878e112328 100644 --- a/packages/kit/src/runtime/server/page/index.js +++ b/packages/kit/src/runtime/server/page/index.js @@ -72,7 +72,7 @@ export async function render_page(event, page, options, manifest, state, resolve } } - const should_prerender_data = nodes.some((node) => node?.server); + const should_prerender_data = nodes.some((node) => node?.server?.load); const data_pathname = add_data_suffix(event.url.pathname); // it's crucial that we do this before returning the non-SSR response, otherwise @@ -98,7 +98,10 @@ export async function render_page(event, page, options, manifest, state, resolve /** @type {import('./types.js').Fetched[]} */ const fetched = []; - if (get_option(nodes, 'ssr') === false && !state.prerendering) { + // renders an empty 'shell' page if SSR is turned off and if there is + // no server data to prerender. As a result, the load functions and rendering + // only occur client-side. + if (get_option(nodes, 'ssr') === false && !(state.prerendering && should_prerender_data)) { return await render_response({ branch: [], fetched, @@ -281,6 +284,8 @@ export async function render_page(event, page, options, manifest, state, resolve }); } + const ssr = get_option(nodes, 'ssr') ?? true; + return await render_response({ event, options, @@ -289,11 +294,11 @@ export async function render_page(event, page, options, manifest, state, resolve resolve_opts, page_config: { csr: get_option(nodes, 'csr') ?? true, - ssr: get_option(nodes, 'ssr') ?? true + ssr }, status, error: null, - branch: compact(branch), + branch: ssr === false ? [] : compact(branch), action_result, fetched }); diff --git a/packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.js b/packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.js new file mode 100644 index 000000000000..55a527fff567 --- /dev/null +++ b/packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.js @@ -0,0 +1,10 @@ +import { redirect } from '@sveltejs/kit'; + +export const prerender = true; + +export const ssr = false; + +/** @type {import('@sveltejs/kit').Load} */ +export function load() { + redirect(301, 'https://example.com/redirected'); +} diff --git a/packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.server.js b/packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.server.js new file mode 100644 index 000000000000..7dbe1c850533 --- /dev/null +++ b/packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.server.js @@ -0,0 +1 @@ +// spa shell should still prererender when +page.server.js exists but it has no load function diff --git a/packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.svelte b/packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.svelte new file mode 100644 index 000000000000..c1c9cf988847 --- /dev/null +++ b/packages/kit/test/prerendering/basics/src/routes/spa-shell/+page.svelte @@ -0,0 +1 @@ +

this won't be prerendered

diff --git a/packages/kit/test/prerendering/basics/test/tests.spec.js b/packages/kit/test/prerendering/basics/test/tests.spec.js index ecf337c35a76..04bb754ef70f 100644 --- a/packages/kit/test/prerendering/basics/test/tests.spec.js +++ b/packages/kit/test/prerendering/basics/test/tests.spec.js @@ -60,6 +60,14 @@ test('renders a relative redirect', () => { ); }); +test('renders a shell when SSR is turned off and there is no server data', () => { + const content = read('spa-shell.html'); + assert.match( + content, + /\n([\s]*?)([\s]*?)([\s]*?)([\s\S]*?)<\/head>\n([\s]*?)([\s]*?) - - diff --git a/packages/adapter-vercel/test/apps/split/src/lib/Transitive.svelte b/packages/adapter-vercel/test/apps/split/src/lib/Transitive.svelte deleted file mode 100644 index 4efa631084af..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/Transitive.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -

{asset}

diff --git a/packages/adapter-vercel/test/apps/split/src/lib/component.svelte b/packages/adapter-vercel/test/apps/split/src/lib/component.svelte new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/adapter-vercel/test/apps/split/src/lib/component1.txt b/packages/adapter-vercel/test/apps/split/src/lib/component1.txt deleted file mode 100644 index 302c57a113f3..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/component1.txt +++ /dev/null @@ -1 +0,0 @@ -component1 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/component2.txt b/packages/adapter-vercel/test/apps/split/src/lib/component2.txt deleted file mode 100644 index 7966c355ac94..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/component2.txt +++ /dev/null @@ -1 +0,0 @@ -component2 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/endpoint.txt b/packages/adapter-vercel/test/apps/split/src/lib/endpoint.txt deleted file mode 100644 index 472161a3d13a..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/endpoint.txt +++ /dev/null @@ -1 +0,0 @@ -endpoint \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/error1.txt b/packages/adapter-vercel/test/apps/split/src/lib/error1.txt deleted file mode 100644 index 8656d6f1908a..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/error1.txt +++ /dev/null @@ -1 +0,0 @@ -error1 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/error2.txt b/packages/adapter-vercel/test/apps/split/src/lib/error2.txt deleted file mode 100644 index 7c65fc717537..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/error2.txt +++ /dev/null @@ -1 +0,0 @@ -error2 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/layout1.txt b/packages/adapter-vercel/test/apps/split/src/lib/layout1.txt deleted file mode 100644 index a2d06d003f55..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/layout1.txt +++ /dev/null @@ -1 +0,0 @@ -layout1 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/layout2.txt b/packages/adapter-vercel/test/apps/split/src/lib/layout2.txt deleted file mode 100644 index 409f807b04ad..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/layout2.txt +++ /dev/null @@ -1 +0,0 @@ -layout2 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/layout3.txt b/packages/adapter-vercel/test/apps/split/src/lib/layout3.txt deleted file mode 100644 index fa10dc1bb2e0..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/layout3.txt +++ /dev/null @@ -1 +0,0 @@ -layout3 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/page1.txt b/packages/adapter-vercel/test/apps/split/src/lib/page1.txt deleted file mode 100644 index b7c3500ba293..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/page1.txt +++ /dev/null @@ -1 +0,0 @@ -page1 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/page2.txt b/packages/adapter-vercel/test/apps/split/src/lib/page2.txt deleted file mode 100644 index cb4962638782..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/lib/page2.txt +++ /dev/null @@ -1 +0,0 @@ -page2 \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/root_error.txt b/packages/adapter-vercel/test/apps/split/src/lib/root_error.txt new file mode 100644 index 000000000000..76dc14acb31d --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/root_error.txt @@ -0,0 +1 @@ +root_error \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/root_layout.txt b/packages/adapter-vercel/test/apps/split/src/lib/root_layout.txt new file mode 100644 index 000000000000..a98031f9a61f --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/root_layout.txt @@ -0,0 +1 @@ +root_layout \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/src/lib/transitive.js b/packages/adapter-vercel/test/apps/split/src/lib/transitive.js new file mode 100644 index 000000000000..a11550f5cf22 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/transitive.js @@ -0,0 +1,3 @@ +import text from './transitive.txt'; + +export { text }; diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+error.svelte b/packages/adapter-vercel/test/apps/split/src/routes/+error.svelte index c9905623b802..6ca26de6429e 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/+error.svelte +++ b/packages/adapter-vercel/test/apps/split/src/routes/+error.svelte @@ -1,5 +1,9 @@ +

{data}

{asset}

diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+layout.js b/packages/adapter-vercel/test/apps/split/src/routes/+layout.js new file mode 100644 index 000000000000..3a2e9fe635d3 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/+layout.js @@ -0,0 +1,5 @@ +import layout from '$lib/+layout.js.txt'; + +export function load({ data }) { + return { ...data, layout }; +} diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+layout.server.js b/packages/adapter-vercel/test/apps/split/src/routes/+layout.server.js new file mode 100644 index 000000000000..d68715ad1070 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/+layout.server.js @@ -0,0 +1,5 @@ +import layout_server from '$lib/+layout.server.js.txt'; + +export function load() { + return { layout_server }; +} diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte b/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte deleted file mode 100644 index 4f7d92417197..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/routes/+layout.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -

{layout3}

- - diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+page.server.js b/packages/adapter-vercel/test/apps/split/src/routes/+page.server.js new file mode 100644 index 000000000000..8d6f051f5838 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/routes/+page.server.js @@ -0,0 +1,5 @@ +import { text } from '$lib/transitive'; + +export function load() { + return { text }; +} diff --git a/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte b/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte index 29e50f2dee15..e69de29bb2d1 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte +++ b/packages/adapter-vercel/test/apps/split/src/routes/+page.svelte @@ -1,5 +0,0 @@ - - -
diff --git a/packages/adapter-vercel/test/apps/split/src/routes/api/+server.js b/packages/adapter-vercel/test/apps/split/src/routes/api/+server.js index 34d9476ab882..6f9b472b93c3 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/api/+server.js +++ b/packages/adapter-vercel/test/apps/split/src/routes/api/+server.js @@ -1,4 +1,4 @@ -import server_asset from '$lib/endpoint.txt'; +import server_asset from '$lib/+server.js.txt'; export function GET() { return new Response(server_asset); diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+error.svelte b/packages/adapter-vercel/test/apps/split/src/routes/load/+error.svelte index 37950362c1b6..2b4401013d09 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+error.svelte +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+error.svelte @@ -1,5 +1,5 @@

{asset}

diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js index 141b18e1db1d..3b95cdbeefaf 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.js @@ -1,6 +1,5 @@ -import layout2 from '$lib/layout2.txt'; +import layout from '$lib/+layout.js.txt'; -/** @type {import('./$types').LayoutLoad} */ -export function load({ data }) { - return { ...data, layout2 }; +export function load() { + return { layout }; } diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js deleted file mode 100644 index 2647ed53d158..000000000000 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.server.js +++ /dev/null @@ -1,6 +0,0 @@ -import layout1 from '$lib/layout1.txt'; - -/** @type {import('./$types').LayoutServerLoad} */ -export function load() { - return { layout1 }; -} diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte index ef77ae57fe82..def699e7ee22 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+layout.svelte @@ -1,5 +1,5 @@

{asset}

diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js index 6f68f9104499..53218b0ba673 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js @@ -1,6 +1,6 @@ -import page2 from '$lib/page2.txt'; +import page_data from '$lib/+page.js.txt'; /** @type {import('./$types').PageLoad} */ export async function load({ parent, data }) { - return { ...data, ...(await parent()), page2 }; + return { ...data, ...(await parent()), page_data }; } diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js index 02a729ffd65f..38c1d6920e89 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js @@ -1,6 +1,6 @@ -import page1 from '$lib/page1.txt'; +import page_server_text from '$lib/+page.server.js.txt'; /** @type {import('./$types').PageServerLoad} */ export async function load({ parent }) { - return { ...(await parent()), page1 }; + return { ...(await parent()), page_server_text }; } diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.svelte b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.svelte index b53fd03b00a7..0969cf108bef 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.svelte +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.svelte @@ -1,5 +1,5 @@

{asset}

diff --git a/packages/adapter-vercel/test/apps/split/test/test.js b/packages/adapter-vercel/test/apps/split/test/test.js index 000fee5e2c36..8bcdd411dad7 100644 --- a/packages/adapter-vercel/test/apps/split/test/test.js +++ b/packages/adapter-vercel/test/apps/split/test/test.js @@ -4,59 +4,45 @@ import { expect, test } from '@playwright/test'; const cwd = process.cwd(); const vercel = `${cwd}/.vercel/output/functions`; const assets = '_app/immutable/assets'; +const serverless_functions = ['fn-0', 'fn-1', 'fn-2', 'fn']; -test('includes server assets from page', () => { - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/component2.2e05b0ae.txt`)).toBeTruthy(); +test('includes server assets from pages', () => { + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_page.js.9fbd6c4c.txt`)).toBeTruthy(); }); -test('includes server assets from layouts', () => { - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/component1.49f0d6ea.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); +test('includes server assets from endpoints', () => { + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/_server.js.8663e12c.txt`)).toBeTruthy(); }); -test('includes server assets from load functions', () => { - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout1.a02b2ee3.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout2.ccbbe7cd.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/page1.4a715ec1.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/page2.b0565940.txt`)).toBeTruthy(); +test('includes server assets from transitive imports', () => { + expect(fs.existsSync(`${vercel}/fn-0.func/${assets}/transitive.f0151e85.txt`)).toBeTruthy(); }); -test('includes server assets from endpoints', () => { - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/endpoint.b6bf7bc8.txt`)).toBeTruthy(); +test('includes server assets of the default error page for every function', () => { + for (const fn of serverless_functions) { + expect( + fs.existsSync(`${vercel}/${fn}.func/${assets}/_layout.server.js.c7c8c528.txt`) + ).toBeTruthy(); + } }); -test('only includes required server assets for each function', () => { - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/endpoint.b6bf7bc8.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/component1.49f0d6ea.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/component2.2e05b0ae.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout1.a02b2ee3.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout2.ccbbe7cd.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/page1.4a715ec1.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/page2.b0565940.txt`)).toBeTruthy(); - - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/endpoint.b6bf7bc8.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/component1.49f0d6ea.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/component2.2e05b0ae.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/layout1.a02b2ee3.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/layout2.ccbbe7cd.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/page1.4a715ec1.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/page2.b0565940.txt`)).toBeFalsy(); +test('only includes relevant server assets for split functions', () => { + expect(fs.existsSync(`${vercel}/fn-0.func/${assets}/_server.js.8663e12c.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/_server.js.8663e12c.txt`)).toBeTruthy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_server.js.8663e12c.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn.func/${assets}/_server.js.8663e12c.txt`)).toBeFalsy(); }); -test('includes transitive server assets', () => { - expect(fs.existsSync(`${vercel}/fn-0.func/${assets}/transitive.f0151e85.txt`)).toBeTruthy(); +test('excludes server assets from universal load functions', () => { + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_layout.js.35a48854.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_page.js.9fbd6c4c.txt`)).toBeFalsy(); }); -test('includes server assets from the default error page for every function', () => { - expect(fs.existsSync(`${vercel}/fn-0.func/${assets}/error1.f6113f76.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-0.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); - - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/error1.f6113f76.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); - - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/error1.f6113f76.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); - - expect(fs.existsSync(`${vercel}/fn.func/${assets}/error1.f6113f76.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn.func/${assets}/layout3.d0b1d3a8.txt`)).toBeTruthy(); +test('excludes server assets from components', () => { + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_layout.svelte.b9607e14.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_page.svelte.f095c905.txt`)).toBeFalsy(); + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_error.svelte.f87bcaff.txt`)).toBeFalsy(); + for (const fn of serverless_functions) { + expect(fs.existsSync(`${vercel}/${fn}.func/${assets}/root_error.4de02419.txt`)).toBeFalsy(); + } }); diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index dbe14ade3b68..dc49b54a809c 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -266,36 +266,13 @@ export function create_builder({ return server_assets; } - const route_dir = config.kit.files.routes.slice(process.cwd().length + 1); - - /** - * @param {import('types').RouteData} route - */ - function get_default_error_page_assets(route) { - /** @type {Set} */ - let server_assets = new Set(); - let route_id = route.id; - - do { - server_assets = concat( - server_assets, - get_server_assets( - `${route_dir}${route_id === '/' ? route_id : route_id + '/'}+error.svelte` - ) - ); - route_id = route_id.split('/').slice(0, -1).join('/'); - } while (route_id); - - return server_assets; - } - function get_root_error_page_assets() { const route = route_data.find((route) => route.leaf); if (!route || !route.leaf) { return /** @type {string[]}*/ ([]); } - let assets = new Set(get_server_assets(`${route_dir}/+error.svelte`)); + let assets = new Set(); let layout = route.leaf.parent; while (layout) { @@ -313,11 +290,7 @@ export function create_builder({ let server_assets = new Set(); if (route.leaf) { - server_assets = concat( - server_assets, - get_server_load_assets(route.leaf), - get_default_error_page_assets(route) - ); + server_assets = concat(server_assets, get_server_load_assets(route.leaf)); } if (route.endpoint) { From fc09cb7819436e1618c5702b966efb98cbb570b8 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sat, 13 Jan 2024 10:18:13 +0800 Subject: [PATCH 53/62] fix tests --- .../test/apps/split/test/test.js | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/packages/adapter-vercel/test/apps/split/test/test.js b/packages/adapter-vercel/test/apps/split/test/test.js index 8bcdd411dad7..59d21861a0d3 100644 --- a/packages/adapter-vercel/test/apps/split/test/test.js +++ b/packages/adapter-vercel/test/apps/split/test/test.js @@ -6,8 +6,16 @@ const vercel = `${cwd}/.vercel/output/functions`; const assets = '_app/immutable/assets'; const serverless_functions = ['fn-0', 'fn-1', 'fn-2', 'fn']; -test('includes server assets from pages', () => { - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_page.js.9fbd6c4c.txt`)).toBeTruthy(); +test('includes server assets from page server load functions', () => { + expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_page.server.js.63084e6e.txt`)).toBeTruthy(); +}); + +test('includes server assets from layout server load functions', () => { + for (const fn of serverless_functions) { + expect( + fs.existsSync(`${vercel}/${fn}.func/${assets}/_layout.server.js.c7c8c528.txt`) + ).toBeTruthy(); + } }); test('includes server assets from endpoints', () => { @@ -27,10 +35,25 @@ test('includes server assets of the default error page for every function', () = }); test('only includes relevant server assets for split functions', () => { - expect(fs.existsSync(`${vercel}/fn-0.func/${assets}/_server.js.8663e12c.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/_server.js.8663e12c.txt`)).toBeTruthy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_server.js.8663e12c.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn.func/${assets}/_server.js.8663e12c.txt`)).toBeFalsy(); + for (const fn of serverless_functions) { + const file_exists = fs.existsSync(`${vercel}/${fn}.func/${assets}/_server.js.8663e12c.txt`); + if (fn === 'fn-1') { + expect(file_exists).toBeTruthy(); + } else { + expect(file_exists).toBeFalsy(); + } + } + + for (const fn of serverless_functions) { + const file_exists = fs.existsSync( + `${vercel}/${fn}.func/${assets}/_page.server.js.63084e6e.txt` + ); + if (fn === 'fn-2') { + expect(file_exists).toBeTruthy(); + } else { + expect(file_exists).toBeFalsy(); + } + } }); test('excludes server assets from universal load functions', () => { From 821c67354bde6c9548a1ccad7d6398c6ef5a3ca2 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sat, 13 Jan 2024 14:25:47 +0800 Subject: [PATCH 54/62] fix and add test for server hooks assets --- .../test/apps/split/src/hooks.server.js | 9 +++ .../apps/split/src/lib/hooks.server.js.txt | 1 + .../test/apps/split/test/test.js | 58 ++++++++++++++----- packages/adapter-vercel/tsconfig.json | 2 +- packages/kit/src/core/adapt/builder.js | 8 ++- packages/kit/src/exports/public.d.ts | 2 +- packages/kit/types/index.d.ts | 2 +- 7 files changed, 61 insertions(+), 21 deletions(-) create mode 100644 packages/adapter-vercel/test/apps/split/src/hooks.server.js create mode 100644 packages/adapter-vercel/test/apps/split/src/lib/hooks.server.js.txt diff --git a/packages/adapter-vercel/test/apps/split/src/hooks.server.js b/packages/adapter-vercel/test/apps/split/src/hooks.server.js new file mode 100644 index 000000000000..3902df2a4a39 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/hooks.server.js @@ -0,0 +1,9 @@ +import text from '$lib/hooks.server.js.txt'; + +export async function handle({ event, resolve }) { + event.setHeaders({ 'x-server-asset': text }); + + const response = await resolve(event); + + return response; +} diff --git a/packages/adapter-vercel/test/apps/split/src/lib/hooks.server.js.txt b/packages/adapter-vercel/test/apps/split/src/lib/hooks.server.js.txt new file mode 100644 index 000000000000..4591266d1aad --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/src/lib/hooks.server.js.txt @@ -0,0 +1 @@ +hooks.server.js \ No newline at end of file diff --git a/packages/adapter-vercel/test/apps/split/test/test.js b/packages/adapter-vercel/test/apps/split/test/test.js index 59d21861a0d3..e31835d111db 100644 --- a/packages/adapter-vercel/test/apps/split/test/test.js +++ b/packages/adapter-vercel/test/apps/split/test/test.js @@ -2,41 +2,57 @@ import * as fs from 'node:fs'; import { expect, test } from '@playwright/test'; const cwd = process.cwd(); -const vercel = `${cwd}/.vercel/output/functions`; -const assets = '_app/immutable/assets'; +const vercel_fn_dir = `${cwd}/.vercel/output/functions`; const serverless_functions = ['fn-0', 'fn-1', 'fn-2', 'fn']; +const assets_dir = '_app/immutable/assets'; test('includes server assets from page server load functions', () => { - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_page.server.js.63084e6e.txt`)).toBeTruthy(); + expect( + fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_page.server.js.63084e6e.txt`) + ).toBeTruthy(); }); test('includes server assets from layout server load functions', () => { for (const fn of serverless_functions) { expect( - fs.existsSync(`${vercel}/${fn}.func/${assets}/_layout.server.js.c7c8c528.txt`) + fs.existsSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}/_layout.server.js.c7c8c528.txt`) ).toBeTruthy(); } }); test('includes server assets from endpoints', () => { - expect(fs.existsSync(`${vercel}/fn-1.func/${assets}/_server.js.8663e12c.txt`)).toBeTruthy(); + expect( + fs.existsSync(`${vercel_fn_dir}/fn-1.func/${assets_dir}/_server.js.8663e12c.txt`) + ).toBeTruthy(); +}); + +test('includes server assets from server hooks', () => { + for (const fn of serverless_functions) { + expect( + fs.existsSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}/hooks.server.js.c6a4ba4a.txt`) + ).toBeTruthy(); + } }); test('includes server assets from transitive imports', () => { - expect(fs.existsSync(`${vercel}/fn-0.func/${assets}/transitive.f0151e85.txt`)).toBeTruthy(); + expect( + fs.existsSync(`${vercel_fn_dir}/fn-0.func/${assets_dir}/transitive.f0151e85.txt`) + ).toBeTruthy(); }); test('includes server assets of the default error page for every function', () => { for (const fn of serverless_functions) { expect( - fs.existsSync(`${vercel}/${fn}.func/${assets}/_layout.server.js.c7c8c528.txt`) + fs.existsSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}/_layout.server.js.c7c8c528.txt`) ).toBeTruthy(); } }); test('only includes relevant server assets for split functions', () => { for (const fn of serverless_functions) { - const file_exists = fs.existsSync(`${vercel}/${fn}.func/${assets}/_server.js.8663e12c.txt`); + const file_exists = fs.existsSync( + `${vercel_fn_dir}/${fn}.func/${assets_dir}/_server.js.8663e12c.txt` + ); if (fn === 'fn-1') { expect(file_exists).toBeTruthy(); } else { @@ -46,7 +62,7 @@ test('only includes relevant server assets for split functions', () => { for (const fn of serverless_functions) { const file_exists = fs.existsSync( - `${vercel}/${fn}.func/${assets}/_page.server.js.63084e6e.txt` + `${vercel_fn_dir}/${fn}.func/${assets_dir}/_page.server.js.63084e6e.txt` ); if (fn === 'fn-2') { expect(file_exists).toBeTruthy(); @@ -57,15 +73,27 @@ test('only includes relevant server assets for split functions', () => { }); test('excludes server assets from universal load functions', () => { - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_layout.js.35a48854.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_page.js.9fbd6c4c.txt`)).toBeFalsy(); + expect( + fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_layout.js.35a48854.txt`) + ).toBeFalsy(); + expect( + fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_page.js.9fbd6c4c.txt`) + ).toBeFalsy(); }); test('excludes server assets from components', () => { - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_layout.svelte.b9607e14.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_page.svelte.f095c905.txt`)).toBeFalsy(); - expect(fs.existsSync(`${vercel}/fn-2.func/${assets}/_error.svelte.f87bcaff.txt`)).toBeFalsy(); + expect( + fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_layout.svelte.b9607e14.txt`) + ).toBeFalsy(); + expect( + fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_page.svelte.f095c905.txt`) + ).toBeFalsy(); + expect( + fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_error.svelte.f87bcaff.txt`) + ).toBeFalsy(); for (const fn of serverless_functions) { - expect(fs.existsSync(`${vercel}/${fn}.func/${assets}/root_error.4de02419.txt`)).toBeFalsy(); + expect( + fs.existsSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}/root_error.4de02419.txt`) + ).toBeFalsy(); } }); diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index d0551eb860ab..0355426309f8 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -14,5 +14,5 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "include": ["index.js", "utils.js"] + "include": ["**/*.js", "internal.d.ts"] } diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index dc49b54a809c..6ff68c56fb16 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -76,7 +76,7 @@ export function create_builder({ * @type {{ * routes: Map; * root_error_page: string[]; - * hooks: string[] | undefined; + * hooks: string[]; * } | undefined} */ let server_assets; @@ -300,11 +300,13 @@ export function create_builder({ routes.set(route.id, Array.from(server_assets)); }); - const server_hooks_file = resolve_entry(config.kit.files.hooks.server); + const server_hooks_path = resolve_entry(config.kit.files.hooks.server)?.slice( + process.cwd().length + 1 + ); server_assets = { routes, - hooks: server_hooks_file ? [...get_server_assets(server_hooks_file)] : undefined, + hooks: [...get_server_assets(server_hooks_path)], root_error_page: get_root_error_page_assets() }; diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index db5bd77d2da0..9124e509cb5a 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -130,7 +130,7 @@ export interface Builder { /** An array of asset paths imported by the root [default error page](https://kit.svelte.dev/docs/routing#error). */ rootErrorPage: string[]; /** An array of asset paths imported by the [server hooks](https://kit.svelte.dev/docs/hooks#server-hooks). */ - hooks?: string[]; + hooks: string[]; }; /** diff --git a/packages/kit/types/index.d.ts b/packages/kit/types/index.d.ts index 318bfe6107fa..af3430f2877f 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -112,7 +112,7 @@ declare module '@sveltejs/kit' { /** An array of asset paths imported by the root [default error page](https://kit.svelte.dev/docs/routing#error). */ rootErrorPage: string[]; /** An array of asset paths imported by the [server hooks](https://kit.svelte.dev/docs/hooks#server-hooks). */ - hooks?: string[]; + hooks: string[]; }; /** From 3b7127a8ae5f193b66e5926be0fa6631ec3742f2 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sat, 13 Jan 2024 14:39:38 +0800 Subject: [PATCH 55/62] update adapter-vercel test app packages --- .../test/apps/split/jsconfig.json | 6 +- .../test/apps/split/package.json | 4 +- packages/kit/src/exports/public.d.ts | 11 +- packages/kit/types/index.d.ts | 11 +- pnpm-lock.yaml | 1527 ++++++++--------- 5 files changed, 695 insertions(+), 864 deletions(-) diff --git a/packages/adapter-vercel/test/apps/split/jsconfig.json b/packages/adapter-vercel/test/apps/split/jsconfig.json index 0f47472f79f8..11a0cbc7d969 100644 --- a/packages/adapter-vercel/test/apps/split/jsconfig.json +++ b/packages/adapter-vercel/test/apps/split/jsconfig.json @@ -4,10 +4,6 @@ "allowJs": true, "checkJs": true, "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true + "resolveJsonModule": true } } diff --git a/packages/adapter-vercel/test/apps/split/package.json b/packages/adapter-vercel/test/apps/split/package.json index 2ced90631d2b..c1c50546484e 100644 --- a/packages/adapter-vercel/test/apps/split/package.json +++ b/packages/adapter-vercel/test/apps/split/package.json @@ -10,8 +10,8 @@ }, "devDependencies": { "@sveltejs/kit": "workspace:^", - "svelte": "^4.2.2", - "vite": "^4.4.9" + "svelte": "^4.2.8", + "vite": "^5.0.8" }, "type": "module" } diff --git a/packages/kit/src/exports/public.d.ts b/packages/kit/src/exports/public.d.ts index bfcf5256dfe7..0f5e4bf3ff67 100644 --- a/packages/kit/src/exports/public.d.ts +++ b/packages/kit/src/exports/public.d.ts @@ -64,11 +64,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/types/index.d.ts b/packages/kit/types/index.d.ts index 6784b07a0916..6b7be2c28a09 100644 --- a/packages/kit/types/index.d.ts +++ b/packages/kit/types/index.d.ts @@ -46,11 +46,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/pnpm-lock.yaml b/pnpm-lock.yaml index bbfec3a25c43..b8692011bcb3 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.14.0)(@typescript-eslint/parser@6.14.0)(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.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) '@svitejs/changesets-changelog-github-compact': specifier: ^1.1.0 version: 1.1.0 '@typescript-eslint/eslint-plugin': specifier: ^6.14.0 - version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3) + version: 6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3) eslint: specifier: ^8.56.0 version: 8.56.0 @@ -37,7 +37,7 @@ importers: version: 1.30.0 prettier: specifier: ^3.1.1 - version: 3.1.1 + version: 3.2.1 rollup: specifier: ^3.29.4 version: 3.29.4 @@ -59,10 +59,10 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 typescript: specifier: ^5.3.3 version: 5.3.3 @@ -71,10 +71,10 @@ importers: dependencies: '@cloudflare/workers-types': specifier: ^4.20231121.0 - version: 4.20231121.0 + version: 4.20231218.0 esbuild: specifier: ^0.19.9 - version: 0.19.9 + version: 0.19.11 worktop: specifier: 0.8.0-next.16 version: 0.8.0-next.16 @@ -84,7 +84,7 @@ importers: version: link:../kit '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 '@types/ws': specifier: ^8.5.10 version: 8.5.10 @@ -96,13 +96,13 @@ importers: dependencies: '@cloudflare/workers-types': specifier: ^4.20231121.0 - version: 4.20231121.0 + version: 4.20231218.0 '@iarna/toml': specifier: ^2.2.5 version: 2.2.5 esbuild: specifier: ^0.19.9 - version: 0.19.9 + version: 0.19.11 devDependencies: '@cloudflare/kv-asset-handler': specifier: ^0.3.0 @@ -112,7 +112,7 @@ importers: version: link:../kit '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 typescript: specifier: ^5.3.3 version: 5.3.3 @@ -124,7 +124,7 @@ importers: version: 2.2.5 esbuild: specifier: ^0.19.9 - version: 0.19.9 + version: 0.19.11 set-cookie-parser: specifier: ^2.6.0 version: 2.6.0 @@ -134,49 +134,49 @@ importers: version: 2.4.1 '@rollup/plugin-commonjs': specifier: ^25.0.7 - version: 25.0.7(rollup@4.8.0) + version: 25.0.7(rollup@4.9.5) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.8.0) + version: 6.1.0(rollup@4.9.5) '@rollup/plugin-node-resolve': specifier: ^15.2.3 - version: 15.2.3(rollup@4.8.0) + version: 15.2.3(rollup@4.9.5) '@sveltejs/kit': specifier: workspace:^ version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 '@types/set-cookie-parser': specifier: ^2.4.7 version: 2.4.7 rollup: specifier: ^4.8.0 - version: 4.8.0 + version: 4.9.5 typescript: specifier: ^5.3.3 version: 5.3.3 vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/adapter-node: dependencies: '@rollup/plugin-commonjs': specifier: ^25.0.7 - version: 25.0.7(rollup@4.8.0) + version: 25.0.7(rollup@4.9.5) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.8.0) + version: 6.1.0(rollup@4.9.5) '@rollup/plugin-node-resolve': specifier: ^15.2.3 - version: 15.2.3(rollup@4.8.0) + version: 15.2.3(rollup@4.9.5) rollup: specifier: ^4.8.0 - version: 4.8.0 + version: 4.9.5 devDependencies: '@polka/url': specifier: 1.0.0-next.24 @@ -186,13 +186,13 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 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 @@ -204,7 +204,7 @@ importers: version: 5.3.3 vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/adapter-static: devDependencies: @@ -216,10 +216,10 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 sirv: specifier: ^2.0.4 version: 2.0.4 @@ -231,7 +231,7 @@ importers: version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/adapter-static/test/apps/prerendered: devDependencies: @@ -240,7 +240,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) sirv-cli: specifier: ^2.0.2 version: 2.0.2 @@ -249,7 +249,7 @@ importers: version: 4.2.8 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/adapter-static/test/apps/spa: devDependencies: @@ -261,7 +261,7 @@ importers: version: link:../../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) sirv-cli: specifier: ^2.0.2 version: 2.0.2 @@ -270,16 +270,16 @@ importers: version: 4.2.8 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/adapter-vercel: dependencies: '@vercel/nft': specifier: ^0.26.1 - version: 0.26.1 + version: 0.26.2 esbuild: specifier: ^0.19.9 - version: 0.19.9 + version: 0.19.11 devDependencies: '@playwright/test': specifier: 1.30.0 @@ -289,16 +289,16 @@ importers: version: link:../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 typescript: specifier: ^5.3.3 version: 5.3.3 vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/adapter-vercel/test/apps/split: devDependencies: @@ -306,11 +306,11 @@ importers: specifier: workspace:^ version: link:../../../../kit svelte: - specifier: ^4.2.2 + specifier: ^4.2.8 version: 4.2.8 vite: - specifier: ^4.4.9 - version: 4.5.1 + specifier: ^5.0.8 + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/amp: dependencies: @@ -338,13 +338,13 @@ importers: version: 0.0.2 prettier: specifier: ^3.1.1 - version: 3.1.1 + version: 3.2.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.2.1)(svelte@4.2.8) sucrase: specifier: ^3.34.0 - version: 3.34.0 + version: 3.35.0 svelte: specifier: ^4.2.8 version: 4.2.8 @@ -353,7 +353,7 @@ importers: version: 0.2.9 vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/create-svelte/templates/default: dependencies: @@ -372,7 +372,7 @@ importers: version: link:../../../kit '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 @@ -381,7 +381,7 @@ importers: version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/create-svelte/templates/skeleton: devDependencies: @@ -399,20 +399,20 @@ importers: version: 0.1.2(svelte@4.2.8) vite-imagetools: specifier: ^6.2.8 - version: 6.2.8(rollup@4.8.0) + version: 6.2.9(rollup@4.9.5) devDependencies: '@types/estree': specifier: ^1.0.5 version: 1.0.5 '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 estree-walker: specifier: ^3.0.3 version: 3.0.3 rollup: specifier: ^4.8.0 - version: 4.8.0 + version: 4.9.5 svelte: specifier: ^4.2.8 version: 4.2.8 @@ -421,10 +421,10 @@ importers: version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit: dependencies: @@ -470,13 +470,13 @@ importers: version: 1.30.0 '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) '@types/connect': specifier: ^3.4.38 version: 3.4.38 '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 '@types/sade': specifier: ^1.7.8 version: 1.7.8 @@ -485,25 +485,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.8.0 - version: 4.8.0 + version: 4.9.5 svelte: specifier: ^4.2.8 version: 4.2.8 svelte-preprocess: specifier: ^5.1.2 - version: 5.1.2(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3) + version: 5.1.3(postcss@8.4.33)(svelte@4.2.8)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/apps/amp: devDependencies: @@ -515,7 +515,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -527,13 +527,13 @@ importers: version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/apps/basics: devDependencies: @@ -542,25 +542,25 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) cross-env: specifier: ^7.0.3 version: 7.0.3 marked: specifier: ^11.1.0 - version: 11.1.0 + version: 11.1.1 svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/apps/dev-only: devDependencies: @@ -569,7 +569,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -578,13 +578,13 @@ importers: version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/apps/embed: devDependencies: @@ -593,7 +593,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -602,13 +602,13 @@ importers: version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/apps/no-ssr: devDependencies: @@ -617,7 +617,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -626,13 +626,13 @@ importers: version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/apps/options: devDependencies: @@ -641,7 +641,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -650,13 +650,13 @@ importers: version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/apps/options-2: devDependencies: @@ -668,7 +668,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -677,13 +677,13 @@ importers: version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/apps/writes: devDependencies: @@ -692,7 +692,7 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -701,19 +701,19 @@ importers: version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors: devDependencies: vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch: 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.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment: 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.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/prerenderable-not-prerendered: devDependencies: @@ -773,19 +773,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/private-dynamic-env: devDependencies: @@ -794,19 +794,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/private-dynamic-env-dynamic-import: devDependencies: @@ -815,19 +815,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/private-static-env: devDependencies: @@ -836,7 +836,7 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -845,13 +845,13 @@ importers: version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/private-static-env-dynamic-import: devDependencies: @@ -860,19 +860,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/server-only-folder: devDependencies: @@ -881,19 +881,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/server-only-folder-dynamic-import: devDependencies: @@ -902,19 +902,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/server-only-module: devDependencies: @@ -923,19 +923,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/server-only-module-dynamic-import: devDependencies: @@ -944,19 +944,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/service-worker-dynamic-public-env: devDependencies: @@ -965,19 +965,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/service-worker-private-env: devDependencies: @@ -986,19 +986,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/build-errors/apps/syntax-error: devDependencies: @@ -1007,19 +1007,19 @@ importers: version: link:../../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/prerendering/basics: devDependencies: @@ -1028,22 +1028,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/prerendering/options: devDependencies: @@ -1052,22 +1052,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/kit/test/prerendering/paths-base: devDependencies: @@ -1076,22 +1076,22 @@ importers: version: link:../../.. '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) svelte: specifier: ^4.2.8 version: 4.2.8 svelte-check: specifier: ^3.6.2 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/migrate: dependencies: @@ -1119,7 +1119,7 @@ importers: devDependencies: '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 '@types/prompts': specifier: ^2.4.9 version: 2.4.9 @@ -1128,10 +1128,10 @@ importers: version: 7.5.6 prettier: specifier: ^3.1.1 - version: 3.1.1 + version: 3.2.1 vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages/package: dependencies: @@ -1153,10 +1153,10 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 '@types/semver': specifier: ^7.5.6 version: 7.5.6 @@ -1165,7 +1165,7 @@ importers: version: 4.2.8 svelte-preprocess: specifier: ^5.1.2 - version: 5.1.2(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3) + version: 5.1.3(postcss@8.4.33)(svelte@4.2.8)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1207,7 +1207,7 @@ importers: version: link:../../packages/package '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) publint: specifier: ^0.2.0 version: 0.2.7 @@ -1216,13 +1216,13 @@ importers: version: 4.2.8 svelte-check: specifier: ^3.6.0 - version: 3.6.2(postcss@8.4.32)(svelte@4.2.8) + version: 3.6.3(postcss@8.4.33)(svelte@4.2.8) typescript: specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) sites/kit.svelte.dev: dependencies: @@ -1253,31 +1253,31 @@ importers: version: 6.0.0-next.59(@sveltejs/kit@packages+kit)(svelte@4.2.8) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.1 - version: 3.0.1(svelte@4.2.8)(vite@5.0.8) + version: 3.0.1(svelte@4.2.8)(vite@5.0.11) '@types/d3-geo': specifier: ^3.1.0 version: 3.1.0 '@types/node': specifier: ^18.19.3 - version: 18.19.3 + version: 18.19.6 browserslist: specifier: ^4.22.2 version: 4.22.2 flexsearch: specifier: ^0.7.31 - version: 0.7.31 + version: 0.7.43 lightningcss: specifier: ^1.22.1 version: 1.22.1 marked: specifier: ^11.1.0 - version: 11.1.0 + version: 11.1.1 prettier: specifier: ^3.1.1 - version: 3.1.1 + version: 3.2.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.2.1)(svelte@4.2.8) prism-svelte: specifier: ^0.5.0 version: 0.5.0 @@ -1298,10 +1298,10 @@ importers: version: 5.0.4 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) vitest: specifier: ^1.0.4 - version: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + version: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) packages: @@ -1315,7 +1315,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.21 /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} @@ -1339,11 +1339,11 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/runtime@7.23.6: - resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} + /@babel/runtime@7.23.8: + resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.14.0 + regenerator-runtime: 0.14.1 dev: true /@bcoe/v8-coverage@0.2.3: @@ -1353,7 +1353,7 @@ packages: /@changesets/apply-release-plan@7.0.0: resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.8 '@changesets/config': 3.0.0 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.0 @@ -1371,7 +1371,7 @@ packages: /@changesets/assemble-release-plan@6.0.0: resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.8 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.0.0 '@changesets/types': 6.0.0 @@ -1389,7 +1389,7 @@ packages: resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} hasBin: true dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.8 '@changesets/apply-release-plan': 7.0.0 '@changesets/assemble-release-plan': 6.0.0 '@changesets/changelog-git': 0.2.0 @@ -1463,7 +1463,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.8 '@changesets/assemble-release-plan': 6.0.0 '@changesets/config': 3.0.0 '@changesets/pre': 2.0.0 @@ -1479,7 +1479,7 @@ packages: /@changesets/git@3.0.0: resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.8 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -1504,7 +1504,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.8 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -1514,7 +1514,7 @@ packages: /@changesets/read@0.6.0: resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.8 '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/parse': 0.4.0 @@ -1535,7 +1535,7 @@ packages: /@changesets/write@0.3.0: resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.8 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 @@ -1565,386 +1565,196 @@ packages: mime: 3.0.0 dev: true - /@cloudflare/workers-types@4.20231121.0: - resolution: {integrity: sha512-+kWfpCkqiepwAKXyHoE0gnkPgkLhz0/9HOBIGhHRsUvUKvhUtm3mbqqoGRWgF1qcjzrDUBbrrOq4MYHfFtc2RA==} + /@cloudflare/workers-types@4.20231218.0: + resolution: {integrity: sha512-Vs1FKjfUjXYGbCsXzkl+ITp0Iyb6QiW6+vTERTNThC+v96T0IvPVAioH4tT20rXwoxAfxh380mAaxYtTrJUNVg==} 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/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + /@esbuild/aix-ppc64@0.19.11: + resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} engines: {node: '>=12'} - cpu: [arm64] - os: [android] + cpu: [ppc64] + os: [aix] requiresBuild: true - dev: true optional: true - /@esbuild/android-arm64@0.19.9: - resolution: {integrity: sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==} + /@esbuild/android-arm64@0.19.11: + resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + /@esbuild/android-arm@0.19.11: + resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true - dev: true optional: true - /@esbuild/android-arm@0.19.9: - resolution: {integrity: sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - optional: true - - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + /@esbuild/android-x64@0.19.11: + resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true - dev: true optional: true - /@esbuild/android-x64@0.19.9: - resolution: {integrity: sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - optional: true - - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64@0.19.9: - resolution: {integrity: sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==} + /@esbuild/darwin-arm64@0.19.11: + resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + /@esbuild/darwin-x64@0.19.11: + resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true - /@esbuild/darwin-x64@0.19.9: - resolution: {integrity: sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64@0.19.9: - resolution: {integrity: sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==} + /@esbuild/freebsd-arm64@0.19.11: + resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + /@esbuild/freebsd-x64@0.19.11: + resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64@0.19.9: - resolution: {integrity: sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - optional: true - - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true optional: true - /@esbuild/linux-arm64@0.19.9: - resolution: {integrity: sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==} + /@esbuild/linux-arm64@0.19.11: + resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm@0.19.9: - resolution: {integrity: sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==} + /@esbuild/linux-arm@0.19.11: + resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + /@esbuild/linux-ia32@0.19.11: + resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true - /@esbuild/linux-ia32@0.19.9: - resolution: {integrity: sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.19.9: - resolution: {integrity: sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==} + /@esbuild/linux-loong64@0.19.11: + resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el@0.19.9: - resolution: {integrity: sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==} + /@esbuild/linux-mips64el@0.19.11: + resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64@0.19.9: - resolution: {integrity: sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==} + /@esbuild/linux-ppc64@0.19.11: + resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64@0.19.9: - resolution: {integrity: sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==} + /@esbuild/linux-riscv64@0.19.11: + resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + /@esbuild/linux-s390x@0.19.11: + resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x@0.19.9: - resolution: {integrity: sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - optional: true - - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true optional: true - /@esbuild/linux-x64@0.19.9: - resolution: {integrity: sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==} + /@esbuild/linux-x64@0.19.11: + resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.19.9: - resolution: {integrity: sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==} + /@esbuild/netbsd-x64@0.19.11: + resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.19.9: - resolution: {integrity: sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==} + /@esbuild/openbsd-x64@0.19.11: + resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + /@esbuild/sunos-x64@0.19.11: + resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true - /@esbuild/sunos-x64@0.19.9: - resolution: {integrity: sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - optional: true - - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.19.9: - resolution: {integrity: sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==} + /@esbuild/win32-arm64@0.19.11: + resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.19.9: - resolution: {integrity: sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==} + /@esbuild/win32-ia32@0.19.11: + resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.19.9: - resolution: {integrity: sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==} + /@esbuild/win32-x64@0.19.11: + resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1992,11 +1802,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: @@ -2008,38 +1818,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] @@ -2047,8 +1857,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] @@ -2056,8 +1866,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] @@ -2065,8 +1875,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] @@ -2074,8 +1884,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] @@ -2083,8 +1893,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] @@ -2092,8 +1902,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] @@ -2101,8 +1911,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] @@ -2110,84 +1920,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] @@ -2195,8 +2005,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] @@ -2204,6 +2014,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'} @@ -2222,7 +2044,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.21 /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} @@ -2236,14 +2058,14 @@ 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.21 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.21: + resolution: {integrity: sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 @@ -2251,7 +2073,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.8 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -2260,7 +2082,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.8 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -2327,21 +2149,28 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.16.0 + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true /@playwright/test@1.30.0: resolution: {integrity: sha512-SVxkQw1xvn/Wk/EvBnqWIq6NLo1AppwbYOjNLmyU0R1RoQ3rLEBtmjTnElcnz8VEtn11fptj1ECxK0tgURhajw==} engines: {node: '>=14'} hasBin: true dependencies: - '@types/node': 18.19.3 + '@types/node': 18.19.6 playwright-core: 1.30.0 dev: true /@polka/url@1.0.0-next.24: resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} - /@rollup/plugin-commonjs@25.0.7(rollup@4.8.0): + /@rollup/plugin-commonjs@25.0.7(rollup@4.9.5): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2350,15 +2179,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.8.0) + '@rollup/pluginutils': 5.1.0(rollup@4.9.5) 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.8.0 + rollup: 4.9.5 - /@rollup/plugin-json@6.1.0(rollup@4.8.0): + /@rollup/plugin-json@6.1.0(rollup@4.9.5): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2367,10 +2196,10 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.8.0) - rollup: 4.8.0 + '@rollup/pluginutils': 5.1.0(rollup@4.9.5) + rollup: 4.9.5 - /@rollup/plugin-node-resolve@15.2.3(rollup@4.8.0): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.9.5): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2379,13 +2208,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.8.0) + '@rollup/pluginutils': 5.1.0(rollup@4.9.5) '@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.8.0 + rollup: 4.9.5 /@rollup/pluginutils@4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -2395,7 +2224,7 @@ packages: picomatch: 2.3.1 dev: false - /@rollup/pluginutils@5.1.0(rollup@4.8.0): + /@rollup/pluginutils@5.1.0(rollup@4.9.5): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2407,94 +2236,94 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.8.0 + rollup: 4.9.5 - /@rollup/rollup-android-arm-eabi@4.8.0: - resolution: {integrity: sha512-zdTObFRoNENrdPpnTNnhOljYIcOX7aI7+7wyrSpPFFIOf/nRdedE6IYsjaBE7tjukphh1tMTojgJ7p3lKY8x6Q==} + /@rollup/rollup-android-arm-eabi@4.9.5: + resolution: {integrity: sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.8.0: - resolution: {integrity: sha512-aiItwP48BiGpMFS9Znjo/xCNQVwTQVcRKkFKsO81m8exrGjHkCBDvm9PHay2kpa8RPnZzzKcD1iQ9KaLY4fPQQ==} + /@rollup/rollup-android-arm64@4.9.5: + resolution: {integrity: sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.8.0: - resolution: {integrity: sha512-zhNIS+L4ZYkYQUjIQUR6Zl0RXhbbA0huvNIWjmPc2SL0cB1h5Djkcy+RZ3/Bwszfb6vgwUvcVJYD6e6Zkpsi8g==} + /@rollup/rollup-darwin-arm64@4.9.5: + resolution: {integrity: sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.8.0: - resolution: {integrity: sha512-A/FAHFRNQYrELrb/JHncRWzTTXB2ticiRFztP4ggIUAfa9Up1qfW8aG2w/mN9jNiZ+HB0t0u0jpJgFXG6BfRTA==} + /@rollup/rollup-darwin-x64@4.9.5: + resolution: {integrity: sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.8.0: - resolution: {integrity: sha512-JsidBnh3p2IJJA4/2xOF2puAYqbaczB3elZDT0qHxn362EIoIkq7hrR43Xa8RisgI6/WPfvb2umbGsuvf7E37A==} + /@rollup/rollup-linux-arm-gnueabihf@4.9.5: + resolution: {integrity: sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.8.0: - resolution: {integrity: sha512-hBNCnqw3EVCkaPB0Oqd24bv8SklETptQWcJz06kb9OtiShn9jK1VuTgi7o4zPSt6rNGWQOTDEAccbk0OqJmS+g==} + /@rollup/rollup-linux-arm64-gnu@4.9.5: + resolution: {integrity: sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.8.0: - resolution: {integrity: sha512-Fw9ChYfJPdltvi9ALJ9wzdCdxGw4wtq4t1qY028b2O7GwB5qLNSGtqMsAel1lfWTZvf4b6/+4HKp0GlSYg0ahA==} + /@rollup/rollup-linux-arm64-musl@4.9.5: + resolution: {integrity: sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.8.0: - resolution: {integrity: sha512-BH5xIh7tOzS9yBi8dFrCTG8Z6iNIGWGltd3IpTSKp6+pNWWO6qy8eKoRxOtwFbMrid5NZaidLYN6rHh9aB8bEw==} + /@rollup/rollup-linux-riscv64-gnu@4.9.5: + resolution: {integrity: sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.8.0: - resolution: {integrity: sha512-PmvAj8k6EuWiyLbkNpd6BLv5XeYFpqWuRvRNRl80xVfpGXK/z6KYXmAgbI4ogz7uFiJxCnYcqyvZVD0dgFog7Q==} + /@rollup/rollup-linux-x64-gnu@4.9.5: + resolution: {integrity: sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.8.0: - resolution: {integrity: sha512-mdxnlW2QUzXwY+95TuxZ+CurrhgrPAMveDWI97EQlA9bfhR8tw3Pt7SUlc/eSlCNxlWktpmT//EAA8UfCHOyXg==} + /@rollup/rollup-linux-x64-musl@4.9.5: + resolution: {integrity: sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.8.0: - resolution: {integrity: sha512-ge7saUz38aesM4MA7Cad8CHo0Fyd1+qTaqoIo+Jtk+ipBi4ATSrHWov9/S4u5pbEQmLjgUjB7BJt+MiKG2kzmA==} + /@rollup/rollup-win32-arm64-msvc@4.9.5: + resolution: {integrity: sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.8.0: - resolution: {integrity: sha512-p9E3PZlzurhlsN5h9g7zIP1DnqKXJe8ZUkFwAazqSvHuWfihlIISPxG9hCHCoA+dOOspL/c7ty1eeEVFTE0UTw==} + /@rollup/rollup-win32-ia32-msvc@4.9.5: + resolution: {integrity: sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.8.0: - resolution: {integrity: sha512-kb4/auKXkYKqlUYTE8s40FcJIj5soOyRLHKd4ugR0dCq0G2EfcF54eYcfQiGkHzjidZ40daB4ulsFdtqNKZtBg==} + /@rollup/rollup-win32-x64-msvc@4.9.5: + resolution: {integrity: sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==} cpu: [x64] os: [win32] requiresBuild: true @@ -2504,7 +2333,7 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sveltejs/eslint-config@6.0.4(@typescript-eslint/eslint-plugin@6.14.0)(@typescript-eslint/parser@6.14.0)(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.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): resolution: {integrity: sha512-U9pwmDs+DbmsnCgTfu6Bacdwqn0DuI1IQNSiQqTgzVyYfaaj+zy9ZoQCiJfxFBGXHkklyXuRHp0KMx346N0lcQ==} peerDependencies: '@typescript-eslint/eslint-plugin': '>= 5' @@ -2515,8 +2344,8 @@ packages: eslint-plugin-unicorn: '>= 47' typescript: '>= 4' dependencies: - '@typescript-eslint/eslint-plugin': 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3) + '@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) eslint: 8.56.0 eslint-config-prettier: 9.1.0(eslint@8.56.0) eslint-plugin-svelte: 2.35.1(eslint@8.56.0)(svelte@4.2.8) @@ -2536,7 +2365,7 @@ packages: svelte-local-storage-store: 0.6.4(svelte@4.2.8) dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.8): + /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.11): resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} engines: {node: ^18.0.0 || >=20} peerDependencies: @@ -2544,30 +2373,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.8) + '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.11) debug: 4.3.4 svelte: 4.2.8 - vite: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + vite: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.8): + /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.11): 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.8) + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.11) 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.8(@types/node@18.19.3)(lightningcss@1.22.1) - vitefu: 0.2.5(vite@5.0.8) + vite: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) + vitefu: 0.2.5(vite@5.0.11) transitivePeerDependencies: - supports-color dev: true @@ -2594,7 +2423,7 @@ packages: /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.19.3 + '@types/node': 18.19.6 dev: true /@types/cookie@0.6.0: @@ -2638,8 +2467,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.6: + resolution: {integrity: sha512-X36s5CXMrrJOs2lQCdDF68apW4Rfx9ixYMawlepwmE4Anezv/AV2LSpKD1Ub8DAc+urp5bk0BGZ6NtmBitfnsg==} dependencies: undici-types: 5.26.5 dev: true @@ -2651,7 +2480,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.6 kleur: 3.0.3 dev: true @@ -2675,17 +2504,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.6 dev: true /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 18.19.3 + '@types/node': 18.19.6 dev: true - /@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==} + /@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==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -2696,11 +2525,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.14.0 - '@typescript-eslint/type-utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.14.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 debug: 4.3.4 eslint: 8.56.0 graphemer: 1.4.0 @@ -2713,8 +2542,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.14.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==} + /@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2723,10 +2552,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.14.0 - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.14.0 + '@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 debug: 4.3.4 eslint: 8.56.0 typescript: 5.3.3 @@ -2734,16 +2563,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.14.0: - resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==} + /@typescript-eslint/scope-manager@6.18.1: + resolution: {integrity: sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/visitor-keys': 6.14.0 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/visitor-keys': 6.18.1 dev: true - /@typescript-eslint/type-utils@6.14.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==} + /@typescript-eslint/type-utils@6.18.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2752,8 +2581,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3) + '@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) debug: 4.3.4 eslint: 8.56.0 ts-api-utils: 1.0.3(typescript@5.3.3) @@ -2762,13 +2591,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.14.0: - resolution: {integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==} + /@typescript-eslint/types@6.18.1: + resolution: {integrity: sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.14.0(typescript@5.3.3): - resolution: {integrity: sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==} + /@typescript-eslint/typescript-estree@6.18.1(typescript@5.3.3): + resolution: {integrity: sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -2776,11 +2605,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/visitor-keys': 6.14.0 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/visitor-keys': 6.18.1 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) typescript: 5.3.3 @@ -2788,8 +2618,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.14.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==} + /@typescript-eslint/utils@6.18.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2797,9 +2627,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.14.0 - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.18.1 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: @@ -2807,11 +2637,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.14.0: - resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==} + /@typescript-eslint/visitor-keys@6.18.1: + resolution: {integrity: sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.14.0 + '@typescript-eslint/types': 6.18.1 eslint-visitor-keys: 3.4.3 dev: true @@ -2845,62 +2675,63 @@ 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.2: + resolution: {integrity: sha512-bxe2iShmKZi7476xYamyKvhhKwQ6JPEtQ2FSq1AjMUH2buMd8LQMkdoHinTqZYc+1sMTh3G0ARdjzNvV1FEisA==} + engines: {node: '>=16'} hasBin: true dependencies: '@mapbox/node-pre-gyp': 1.0.11 '@rollup/pluginutils': 4.2.1 - acorn: 8.11.2 - acorn-import-attributes: 1.9.2(acorn@8.11.2) + acorn: 8.11.3 + acorn-import-attributes: 1.9.2(acorn@8.11.3) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 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.0.4: - resolution: {integrity: sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==} + /@vitest/expect@1.2.0: + resolution: {integrity: sha512-H+2bHzhyvgp32o7Pgj2h9RTHN0pgYaoi26Oo3mE+dCi1PAqV31kIIVfTbqMO3Bvshd5mIrJLc73EwSRrbol9Lw==} dependencies: - '@vitest/spy': 1.0.4 - '@vitest/utils': 1.0.4 - chai: 4.3.10 + '@vitest/spy': 1.2.0 + '@vitest/utils': 1.2.0 + chai: 4.4.1 dev: true - /@vitest/runner@1.0.4: - resolution: {integrity: sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==} + /@vitest/runner@1.2.0: + resolution: {integrity: sha512-vaJkDoQaNUTroT70OhM0NPznP7H3WyRwt4LvGwCVYs/llLaqhoSLnlIhUClZpbF5RgAee29KRcNz0FEhYcgxqA==} dependencies: - '@vitest/utils': 1.0.4 + '@vitest/utils': 1.2.0 p-limit: 5.0.0 - pathe: 1.1.1 + pathe: 1.1.2 dev: true - /@vitest/snapshot@1.0.4: - resolution: {integrity: sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==} + /@vitest/snapshot@1.2.0: + resolution: {integrity: sha512-P33EE7TrVgB3HDLllrjK/GG6WSnmUtWohbwcQqmm7TAk9AVHpdgf7M3F3qRHKm6vhr7x3eGIln7VH052Smo6Kw==} dependencies: magic-string: 0.30.5 - pathe: 1.1.1 + pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.0.4: - resolution: {integrity: sha512-9ojTFRL1AJVh0hvfzAQpm0QS6xIS+1HFIw94kl/1ucTfGCaj1LV/iuJU4Y6cdR03EzPDygxTHwE1JOm+5RCcvA==} + /@vitest/spy@1.2.0: + resolution: {integrity: sha512-MNxSAfxUaCeowqyyGwC293yZgk7cECZU9wGb8N1pYQ0yOn/SIr8t0l9XnGRdQZvNV/ZHBYu6GO/W3tj5K3VN1Q==} dependencies: tinyspy: 2.2.0 dev: true - /@vitest/utils@1.0.4: - resolution: {integrity: sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==} + /@vitest/utils@1.2.0: + resolution: {integrity: sha512-FyD5bpugsXlwVpTcGLDf3wSPYy8g541fQt14qtzo8mJ4LdEpDKZ9mQy2+qdJm2TZRpjY5JLXihXCgIxiRJgi5g==} dependencies: diff-sequences: 29.6.3 + estree-walker: 3.0.3 loupe: 2.3.7 pretty-format: 29.7.0 dev: true @@ -2909,29 +2740,29 @@ packages: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: false - /acorn-import-attributes@1.9.2(acorn@8.11.2): + /acorn-import-attributes@1.9.2(acorn@8.11.3): resolution: {integrity: sha512-O+nfJwNolEA771IYJaiLWK1UAwjNsQmZbTRqqwBYxCgVQTmpFEMvBw6LOIQV0Me339L5UMVYFyRohGnGlQDdIQ==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: false - /acorn-jsx@5.3.2(acorn@8.11.2): + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: true - /acorn-walk@8.3.1: - resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} dev: true - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true @@ -2962,6 +2793,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'} @@ -2981,6 +2817,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 @@ -3125,8 +2966,8 @@ packages: 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.30001576 + electron-to-chromium: 1.4.630 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) dev: true @@ -3139,8 +2980,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: @@ -3189,12 +3030,12 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001568: - resolution: {integrity: sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==} + /caniuse-lite@1.0.30001576: + resolution: {integrity: sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==} dev: true - /chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 @@ -3300,7 +3141,7 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 '@types/estree': 1.0.5 - acorn: 8.11.2 + acorn: 8.11.3 estree-walker: 3.0.3 periscopic: 3.1.0 @@ -3381,8 +3222,8 @@ 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.0: + resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==} dependencies: browserslist: 4.22.2 dev: true @@ -3603,8 +3444,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' @@ -3621,13 +3462,21 @@ packages: 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.630: + resolution: {integrity: sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg==} 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'} @@ -3675,7 +3524,7 @@ packages: object.assign: 4.1.5 regexp.prototype.flags: 1.5.1 safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 + safe-regex-test: 1.0.2 string.prototype.trim: 1.2.8 string.prototype.trimend: 1.0.7 string.prototype.trimstart: 1.0.7 @@ -3715,64 +3564,35 @@ packages: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - dev: true - - /esbuild@0.19.9: - resolution: {integrity: sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==} + /esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.9 - '@esbuild/android-arm64': 0.19.9 - '@esbuild/android-x64': 0.19.9 - '@esbuild/darwin-arm64': 0.19.9 - '@esbuild/darwin-x64': 0.19.9 - '@esbuild/freebsd-arm64': 0.19.9 - '@esbuild/freebsd-x64': 0.19.9 - '@esbuild/linux-arm': 0.19.9 - '@esbuild/linux-arm64': 0.19.9 - '@esbuild/linux-ia32': 0.19.9 - '@esbuild/linux-loong64': 0.19.9 - '@esbuild/linux-mips64el': 0.19.9 - '@esbuild/linux-ppc64': 0.19.9 - '@esbuild/linux-riscv64': 0.19.9 - '@esbuild/linux-s390x': 0.19.9 - '@esbuild/linux-x64': 0.19.9 - '@esbuild/netbsd-x64': 0.19.9 - '@esbuild/openbsd-x64': 0.19.9 - '@esbuild/sunos-x64': 0.19.9 - '@esbuild/win32-arm64': 0.19.9 - '@esbuild/win32-ia32': 0.19.9 - '@esbuild/win32-x64': 0.19.9 + '@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==} @@ -3824,10 +3644,10 @@ 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 + postcss: 8.4.33 + postcss-load-config: 3.1.4(postcss@8.4.33) + postcss-safe-parser: 6.0.0(postcss@8.4.33) + postcss-selector-parser: 6.0.15 semver: 7.5.4 svelte: 4.2.8 svelte-eslint-parser: 0.33.1(svelte@4.2.8) @@ -3847,7 +3667,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.0 eslint: 8.56.0 esquery: 1.5.0 indent-string: 4.0.0 @@ -3885,7 +3705,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 @@ -3930,8 +3750,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 dev: true @@ -3982,7 +3802,7 @@ packages: human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.1.0 + npm-run-path: 5.2.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 @@ -4023,8 +3843,8 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + /fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} dependencies: reusify: 1.0.4 @@ -4086,8 +3906,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: @@ -4225,15 +4045,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: @@ -4403,11 +4224,11 @@ packages: 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: @@ -4659,6 +4480,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 @@ -4872,7 +4702,7 @@ packages: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} dependencies: - mlly: 1.4.2 + mlly: 1.5.0 pkg-types: 1.0.3 dev: true @@ -4913,6 +4743,11 @@ packages: tslib: 2.6.2 dev: false + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + dev: true + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: @@ -4931,13 +4766,6 @@ packages: hasBin: true dev: true - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} @@ -4968,8 +4796,8 @@ packages: engines: {node: '>=8'} dev: true - /marked@11.1.0: - resolution: {integrity: sha512-fvKJWAPEafVj1dwGwcPI5mBB/0pvViL6NlCbNDG1HOIRwwAU/jeMoFxfbRLuirO1wRH7m4yPvBqD/O1wyWvayw==} + /marked@11.1.1: + resolution: {integrity: sha512-EgxRjgK9axsQuUa/oKMx5DEY8oXpKJfk61rT5iY3aRlgU6QJtUcxU5OAymdhCvWvhYcd9FKmO5eQoX8m9VGJXg==} engines: {node: '>= 18'} hasBin: true dev: true @@ -5041,7 +4869,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: false /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} @@ -5068,6 +4895,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'} @@ -5100,11 +4932,11 @@ packages: hasBin: true dev: false - /mlly@1.4.2: - resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + /mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} dependencies: - acorn: 8.11.2 - pathe: 1.1.1 + acorn: 8.11.3 + pathe: 1.1.2 pkg-types: 1.0.3 ufo: 1.3.2 dev: true @@ -5156,8 +4988,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 @@ -5209,8 +5041,8 @@ packages: npm-normalize-package-bin: 2.0.0 dev: true - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + /npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 @@ -5383,13 +5215,21 @@ 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.1.0 + minipass: 7.0.4 + dev: true + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} dev: true /pathval@1.1.1: @@ -5431,8 +5271,8 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.4.2 - pathe: 1.1.1 + mlly: 1.5.0 + pathe: 1.1.2 dev: true /playwright-core@1.30.0: @@ -5463,7 +5303,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.33): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -5476,38 +5316,38 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.32 + postcss: 8.4.33 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.33): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 dev: true - /postcss-scss@4.0.9(postcss@8.4.32): + /postcss-scss@4.0.9(postcss@8.4.33): resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.4.29 dependencies: - postcss: 8.4.32 + postcss: 8.4.33 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==} + /postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -5530,13 +5370,13 @@ 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.2.1)(svelte@4.2.8): resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 dependencies: - prettier: 3.1.1 + prettier: 3.2.1 svelte: 4.2.8 dev: true @@ -5546,8 +5386,8 @@ packages: hasBin: true dev: true - /prettier@3.1.1: - resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + /prettier@3.2.1: + resolution: {integrity: sha512-qSUWshj1IobVbKc226Gw2pync27t0Kf0EdufZa9j7uBSJay1CC+B3K5lAAZoqgX3ASiKuWsk6OmzKRetXNObWg==} engines: {node: '>=14'} hasBin: true dev: true @@ -5661,8 +5501,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: @@ -5747,24 +5587,26 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.8.0: - resolution: {integrity: sha512-NpsklK2fach5CdI+PScmlE5R4Ao/FSWtF7LkoIrHDxPACY/xshNasPsbpG0VVHxUTbf74tJbVT4PrP8JsJ6ZDA==} + /rollup@4.9.5: + resolution: {integrity: sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + dependencies: + '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.8.0 - '@rollup/rollup-android-arm64': 4.8.0 - '@rollup/rollup-darwin-arm64': 4.8.0 - '@rollup/rollup-darwin-x64': 4.8.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.8.0 - '@rollup/rollup-linux-arm64-gnu': 4.8.0 - '@rollup/rollup-linux-arm64-musl': 4.8.0 - '@rollup/rollup-linux-riscv64-gnu': 4.8.0 - '@rollup/rollup-linux-x64-gnu': 4.8.0 - '@rollup/rollup-linux-x64-musl': 4.8.0 - '@rollup/rollup-win32-arm64-msvc': 4.8.0 - '@rollup/rollup-win32-ia32-msvc': 4.8.0 - '@rollup/rollup-win32-x64-msvc': 4.8.0 + '@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 fsevents: 2.3.3 /run-parallel@1.2.0: @@ -5792,8 +5634,9 @@ 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.2: + resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 @@ -5861,34 +5704,34 @@ packages: 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 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: @@ -6059,8 +5902,8 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /std-env@3.6.0: - resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: true /stream-transform@2.1.3: @@ -6077,6 +5920,15 @@ 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'} @@ -6114,6 +5966,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'} @@ -6139,17 +5998,17 @@ packages: /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: - acorn: 8.11.2 + 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 @@ -6174,20 +6033,20 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check@3.6.2(postcss@8.4.32)(svelte@4.2.8): - resolution: {integrity: sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==} + /svelte-check@3.6.3(postcss@8.4.33)(svelte@4.2.8): + 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.20 + '@jridgewell/trace-mapping': 0.3.21 chokidar: 3.5.3 fast-glob: 3.3.2 import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.8 - svelte-preprocess: 5.1.2(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3) + svelte-preprocess: 5.1.3(postcss@8.4.33)(svelte@4.2.8)(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - '@babel/core' @@ -6213,8 +6072,8 @@ 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.33 + postcss-scss: 4.0.9(postcss@8.4.33) svelte: 4.2.8 dev: true @@ -6244,9 +6103,9 @@ packages: svelte: 4.2.8 dev: false - /svelte-preprocess@5.1.2(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3): - resolution: {integrity: sha512-XF0aliMAcYnP4hLETvB6HRAMnaL09ASYT1Z2I1Gwu0nz6xbdg/dSgAEthtFZJA4AKrNhFDFdmUDO+H9d/6xg5g==} - engines: {node: '>= 14.10.0'} + /svelte-preprocess@5.1.3(postcss@8.4.33)(svelte@4.2.8)(typescript@5.3.3): + resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} + engines: {node: '>= 16.0.0', pnpm: ^8.0.0} requiresBuild: true peerDependencies: '@babel/core': ^7.10.2 @@ -6284,8 +6143,8 @@ packages: dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 - magic-string: 0.27.0 - postcss: 8.4.32 + magic-string: 0.30.5 + postcss: 8.4.33 sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.8 @@ -6310,8 +6169,8 @@ packages: dependencies: '@ampproject/remapping': 2.2.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 - acorn: 8.11.2 + '@jridgewell/trace-mapping': 0.3.21 + acorn: 8.11.3 aria-query: 5.3.0 axobject-query: 3.2.1 code-red: 1.0.4 @@ -6609,7 +6468,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.21 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 dev: true @@ -6621,26 +6480,26 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-imagetools@6.2.8(rollup@4.8.0): - resolution: {integrity: sha512-52r/BvprawSlUXayDn5ncX3mqaoxBbOaYG4eakzwREoCXEOTvp+A4HDXrDoeS6PM9T/3ZH7CqBhgmIYm6B/mpQ==} + /vite-imagetools@6.2.9(rollup@4.9.5): + resolution: {integrity: sha512-C4ZYhgj2vAj43/TpZ06XlDNP0p/7LIeYbgUYr+xG44nM++4HGX6YZBKAYpiBNgiCFUTJ6eXkRppWBrfPMevgmg==} engines: {node: '>=12.0.0'} dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.8.0) - imagetools-core: 6.0.3 + '@rollup/pluginutils': 5.1.0(rollup@4.9.5) + imagetools-core: 6.0.4 transitivePeerDependencies: - rollup dev: false - /vite-node@1.0.4(@types/node@18.19.3)(lightningcss@1.22.1): - resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==} + /vite-node@1.2.0(@types/node@18.19.6)(lightningcss@1.22.1): + resolution: {integrity: sha512-ETnQTHeAbbOxl7/pyBck9oAPZZZo+kYnFt1uQDD+hPReOc+wCjXw4r4jHriBRuVDB5isHmPXxrfc1yJnfBERqg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - pathe: 1.1.1 + pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + vite: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) transitivePeerDependencies: - '@types/node' - less @@ -6652,43 +6511,8 @@ packages: - terser dev: true - /vite@4.5.1: - resolution: {integrity: sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.18.20 - postcss: 8.4.32 - rollup: 3.29.4 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@5.0.8(@types/node@18.19.3)(lightningcss@1.22.1): - resolution: {integrity: sha512-jYMALd8aeqR3yS9xlHd0OzQJndS9fH5ylVgWdB+pxTwxLKdO1pgC5Dlb398BUxpfaBxa4M9oT7j1g503Gaj5IQ==} + /vite@5.0.11(@types/node@18.19.6)(lightningcss@1.22.1): + resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6715,16 +6539,16 @@ packages: terser: optional: true dependencies: - '@types/node': 18.19.3 - esbuild: 0.19.9 + '@types/node': 18.19.6 + esbuild: 0.19.11 lightningcss: 1.22.1 - postcss: 8.4.32 - rollup: 4.8.0 + postcss: 8.4.33 + rollup: 4.9.5 optionalDependencies: fsevents: 2.3.3 dev: true - /vitefu@0.2.5(vite@5.0.8): + /vitefu@0.2.5(vite@5.0.11): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -6732,11 +6556,11 @@ packages: vite: optional: true dependencies: - vite: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) + vite: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) dev: true - /vitest@1.0.4(@types/node@18.19.3)(lightningcss@1.22.1): - resolution: {integrity: sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==} + /vitest@1.2.0(@types/node@18.19.6)(lightningcss@1.22.1): + resolution: {integrity: sha512-Ixs5m7BjqvLHXcibkzKRQUvD/XLw0E3rvqaCMlrm/0LMsA0309ZqYvTlPzkhh81VlEyVZXFlwWnkhb6/UMtcaQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6760,27 +6584,27 @@ packages: jsdom: optional: true dependencies: - '@types/node': 18.19.3 - '@vitest/expect': 1.0.4 - '@vitest/runner': 1.0.4 - '@vitest/snapshot': 1.0.4 - '@vitest/spy': 1.0.4 - '@vitest/utils': 1.0.4 - acorn-walk: 8.3.1 + '@types/node': 18.19.6 + '@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 + acorn-walk: 8.3.2 cac: 6.7.14 - chai: 4.3.10 + chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.5 - pathe: 1.1.1 + pathe: 1.1.2 picocolors: 1.0.0 - std-env: 3.6.0 + std-env: 3.7.0 strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.8.1 - vite: 5.0.8(@types/node@18.19.3)(lightningcss@1.22.1) - vite-node: 1.0.4(@types/node@18.19.3)(lightningcss@1.22.1) + vite: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) + vite-node: 1.2.0(@types/node@18.19.6)(lightningcss@1.22.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -6904,6 +6728,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==} From 463ffb957e1dd51459958e63eb9bc490fb17949f Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sat, 13 Jan 2024 15:14:37 +0800 Subject: [PATCH 56/62] im gonna lose my mind --- packages/adapter-vercel/test/apps/split/package.json | 1 + packages/adapter-vercel/test/apps/split/src/hooks.server.js | 5 +---- .../adapter-vercel/test/apps/split/src/routes/load/+page.js | 1 - .../test/apps/split/src/routes/load/+page.server.js | 1 - .../test/apps/split/{jsconfig.json => tsconfig.json} | 0 packages/adapter-vercel/tsconfig.json | 3 ++- pnpm-lock.yaml | 3 +++ 7 files changed, 7 insertions(+), 7 deletions(-) rename packages/adapter-vercel/test/apps/split/{jsconfig.json => tsconfig.json} (100%) diff --git a/packages/adapter-vercel/test/apps/split/package.json b/packages/adapter-vercel/test/apps/split/package.json index c1c50546484e..f2083887b867 100644 --- a/packages/adapter-vercel/test/apps/split/package.json +++ b/packages/adapter-vercel/test/apps/split/package.json @@ -11,6 +11,7 @@ "devDependencies": { "@sveltejs/kit": "workspace:^", "svelte": "^4.2.8", + "typescript": "^5.3.3", "vite": "^5.0.8" }, "type": "module" diff --git a/packages/adapter-vercel/test/apps/split/src/hooks.server.js b/packages/adapter-vercel/test/apps/split/src/hooks.server.js index 3902df2a4a39..6f6a809ecadd 100644 --- a/packages/adapter-vercel/test/apps/split/src/hooks.server.js +++ b/packages/adapter-vercel/test/apps/split/src/hooks.server.js @@ -2,8 +2,5 @@ import text from '$lib/hooks.server.js.txt'; export async function handle({ event, resolve }) { event.setHeaders({ 'x-server-asset': text }); - - const response = await resolve(event); - - return response; + return resolve(event); } diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js index 53218b0ba673..a8553a382eab 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.js @@ -1,6 +1,5 @@ import page_data from '$lib/+page.js.txt'; -/** @type {import('./$types').PageLoad} */ export async function load({ parent, data }) { return { ...data, ...(await parent()), page_data }; } diff --git a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js index 38c1d6920e89..78b33fa655cf 100644 --- a/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js +++ b/packages/adapter-vercel/test/apps/split/src/routes/load/+page.server.js @@ -1,6 +1,5 @@ import page_server_text from '$lib/+page.server.js.txt'; -/** @type {import('./$types').PageServerLoad} */ export async function load({ parent }) { return { ...(await parent()), page_server_text }; } diff --git a/packages/adapter-vercel/test/apps/split/jsconfig.json b/packages/adapter-vercel/test/apps/split/tsconfig.json similarity index 100% rename from packages/adapter-vercel/test/apps/split/jsconfig.json rename to packages/adapter-vercel/test/apps/split/tsconfig.json diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index 0355426309f8..a516ec009f20 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -14,5 +14,6 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "include": ["**/*.js", "internal.d.ts"] + "include": ["**/*.js", "internal.d.ts"], + "exclude": ["test/apps"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b8692011bcb3..aaf6646cf03a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -308,6 +308,9 @@ importers: svelte: specifier: ^4.2.8 version: 4.2.8 + typescript: + specifier: ^5.3.3 + version: 5.3.3 vite: specifier: ^5.0.8 version: 5.0.11(@types/node@18.19.6)(lightningcss@1.22.1) From cb58b72c200596bf9e43791442fc8e12b4faa8b8 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sat, 13 Jan 2024 23:20:56 +0800 Subject: [PATCH 57/62] ignore hashes for filenames in tests --- .../test/apps/split/test/test.js | 99 ------------------- .../test/apps/split/tests/test.js | 90 +++++++++++++++++ 2 files changed, 90 insertions(+), 99 deletions(-) delete mode 100644 packages/adapter-vercel/test/apps/split/test/test.js create mode 100644 packages/adapter-vercel/test/apps/split/tests/test.js diff --git a/packages/adapter-vercel/test/apps/split/test/test.js b/packages/adapter-vercel/test/apps/split/test/test.js deleted file mode 100644 index e31835d111db..000000000000 --- a/packages/adapter-vercel/test/apps/split/test/test.js +++ /dev/null @@ -1,99 +0,0 @@ -import * as fs from 'node:fs'; -import { expect, test } from '@playwright/test'; - -const cwd = process.cwd(); -const vercel_fn_dir = `${cwd}/.vercel/output/functions`; -const serverless_functions = ['fn-0', 'fn-1', 'fn-2', 'fn']; -const assets_dir = '_app/immutable/assets'; - -test('includes server assets from page server load functions', () => { - expect( - fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_page.server.js.63084e6e.txt`) - ).toBeTruthy(); -}); - -test('includes server assets from layout server load functions', () => { - for (const fn of serverless_functions) { - expect( - fs.existsSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}/_layout.server.js.c7c8c528.txt`) - ).toBeTruthy(); - } -}); - -test('includes server assets from endpoints', () => { - expect( - fs.existsSync(`${vercel_fn_dir}/fn-1.func/${assets_dir}/_server.js.8663e12c.txt`) - ).toBeTruthy(); -}); - -test('includes server assets from server hooks', () => { - for (const fn of serverless_functions) { - expect( - fs.existsSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}/hooks.server.js.c6a4ba4a.txt`) - ).toBeTruthy(); - } -}); - -test('includes server assets from transitive imports', () => { - expect( - fs.existsSync(`${vercel_fn_dir}/fn-0.func/${assets_dir}/transitive.f0151e85.txt`) - ).toBeTruthy(); -}); - -test('includes server assets of the default error page for every function', () => { - for (const fn of serverless_functions) { - expect( - fs.existsSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}/_layout.server.js.c7c8c528.txt`) - ).toBeTruthy(); - } -}); - -test('only includes relevant server assets for split functions', () => { - for (const fn of serverless_functions) { - const file_exists = fs.existsSync( - `${vercel_fn_dir}/${fn}.func/${assets_dir}/_server.js.8663e12c.txt` - ); - if (fn === 'fn-1') { - expect(file_exists).toBeTruthy(); - } else { - expect(file_exists).toBeFalsy(); - } - } - - for (const fn of serverless_functions) { - const file_exists = fs.existsSync( - `${vercel_fn_dir}/${fn}.func/${assets_dir}/_page.server.js.63084e6e.txt` - ); - if (fn === 'fn-2') { - expect(file_exists).toBeTruthy(); - } else { - expect(file_exists).toBeFalsy(); - } - } -}); - -test('excludes server assets from universal load functions', () => { - expect( - fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_layout.js.35a48854.txt`) - ).toBeFalsy(); - expect( - fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_page.js.9fbd6c4c.txt`) - ).toBeFalsy(); -}); - -test('excludes server assets from components', () => { - expect( - fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_layout.svelte.b9607e14.txt`) - ).toBeFalsy(); - expect( - fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_page.svelte.f095c905.txt`) - ).toBeFalsy(); - expect( - fs.existsSync(`${vercel_fn_dir}/fn-2.func/${assets_dir}/_error.svelte.f87bcaff.txt`) - ).toBeFalsy(); - for (const fn of serverless_functions) { - expect( - fs.existsSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}/root_error.4de02419.txt`) - ).toBeFalsy(); - } -}); diff --git a/packages/adapter-vercel/test/apps/split/tests/test.js b/packages/adapter-vercel/test/apps/split/tests/test.js new file mode 100644 index 000000000000..7d4eeed660e8 --- /dev/null +++ b/packages/adapter-vercel/test/apps/split/tests/test.js @@ -0,0 +1,90 @@ +import * as fs from 'node:fs'; +import { expect, test } from '@playwright/test'; + +const cwd = process.cwd(); +const vercel_fn_dir = `${cwd}/.vercel/output/functions`; +const serverless_functions = ['fn-0', 'fn-1', 'fn-2', 'fn']; +const assets_dir = '_app/immutable/assets'; + +const server_assets = Object.fromEntries( + serverless_functions.map((fn) => [ + fn, + fs.readdirSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}`) + ]) +); + +test('includes server assets from page server load functions', () => { + const server_asset = server_assets['fn-2'].find((file) => file.startsWith('_page.server.js')); + expect(server_asset).toBeTruthy(); +}); + +test('includes server assets from layout server load functions', () => { + for (const fn of serverless_functions) { + const server_asset = server_assets[fn].find((file) => file.startsWith('_layout.server.js')); + expect(server_asset).toBeTruthy(); + } +}); + +test('includes server assets from endpoints', () => { + const server_asset = server_assets['fn-1'].find((file) => file.startsWith('_server.js')); + expect(server_asset).toBeTruthy(); +}); + +test('includes server assets from server hooks', () => { + for (const fn of serverless_functions) { + const server_asset = server_assets[fn].find((file) => file.startsWith('hooks.server.js')); + expect(server_asset).toBeTruthy(); + } +}); + +test('includes server assets from transitive imports', () => { + const server_asset = server_assets['fn-0'].find((file) => file.startsWith('transitive')); + expect(server_asset).toBeTruthy(); +}); + +test('includes server assets of the default error page for every function', () => { + for (const fn of serverless_functions) { + const server_asset = server_assets[fn].find((file) => file.startsWith('_layout.server.js')); + expect(server_asset).toBeTruthy(); + } +}); + +test('only includes relevant server assets for split functions', () => { + for (const fn of serverless_functions) { + const server_asset = server_assets[fn].find((file) => file.startsWith('_server.js')); + if (fn === 'fn-1') { + expect(server_asset).toBeTruthy(); + } else { + expect(server_asset).toBeFalsy(); + } + } + + for (const fn of serverless_functions) { + const server_asset = server_assets[fn].find((file) => file.startsWith('_page.server.js')); + if (fn === 'fn-2') { + expect(server_asset).toBeTruthy(); + } else { + expect(server_asset).toBeFalsy(); + } + } +}); + +test('excludes server assets from universal load functions', () => { + const layout_load = server_assets['fn-2'].find((file) => file.startsWith('_layout.js')); + const page_load = server_assets['fn-2'].find((file) => file.startsWith('_page.js')); + + expect(layout_load).toBeFalsy(); + expect(page_load).toBeFalsy(); +}); + +test('excludes server assets from components', () => { + const components = ['_layout.svelte', '_page.svelte', '_error.svelte']; + for (const component_name of components) { + const server_asset = server_assets['fn-2'].find((f) => f.startsWith(component_name)); + expect(server_asset).toBeFalsy(); + } + for (const fn of serverless_functions) { + const root_error = server_assets[fn].find((file) => file.startsWith('root_error')); + expect(root_error).toBeFalsy(); + } +}); From 6f0fcc0146484fe9448bbb70062473d33430d4b0 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 14 Jan 2024 01:23:41 +0800 Subject: [PATCH 58/62] oops --- packages/adapter-vercel/test/apps/split/{tests => test}/test.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/adapter-vercel/test/apps/split/{tests => test}/test.js (100%) diff --git a/packages/adapter-vercel/test/apps/split/tests/test.js b/packages/adapter-vercel/test/apps/split/test/test.js similarity index 100% rename from packages/adapter-vercel/test/apps/split/tests/test.js rename to packages/adapter-vercel/test/apps/split/test/test.js From 88b68009fe63b9e16c06ea6ab2eccaf525112db2 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Sun, 14 Jan 2024 01:49:36 +0800 Subject: [PATCH 59/62] fix tests? --- .../test/apps/split/test/test.js | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/packages/adapter-vercel/test/apps/split/test/test.js b/packages/adapter-vercel/test/apps/split/test/test.js index 7d4eeed660e8..4615d4396228 100644 --- a/packages/adapter-vercel/test/apps/split/test/test.js +++ b/packages/adapter-vercel/test/apps/split/test/test.js @@ -6,19 +6,23 @@ const vercel_fn_dir = `${cwd}/.vercel/output/functions`; const serverless_functions = ['fn-0', 'fn-1', 'fn-2', 'fn']; const assets_dir = '_app/immutable/assets'; -const server_assets = Object.fromEntries( - serverless_functions.map((fn) => [ - fn, - fs.readdirSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}`) - ]) -); +function scan_build_output() { + return Object.fromEntries( + serverless_functions.map((fn) => [ + fn, + fs.readdirSync(`${vercel_fn_dir}/${fn}.func/${assets_dir}`) + ]) + ); +} test('includes server assets from page server load functions', () => { + const server_assets = scan_build_output(); const server_asset = server_assets['fn-2'].find((file) => file.startsWith('_page.server.js')); expect(server_asset).toBeTruthy(); }); test('includes server assets from layout server load functions', () => { + const server_assets = scan_build_output(); for (const fn of serverless_functions) { const server_asset = server_assets[fn].find((file) => file.startsWith('_layout.server.js')); expect(server_asset).toBeTruthy(); @@ -26,11 +30,13 @@ test('includes server assets from layout server load functions', () => { }); test('includes server assets from endpoints', () => { + const server_assets = scan_build_output(); const server_asset = server_assets['fn-1'].find((file) => file.startsWith('_server.js')); expect(server_asset).toBeTruthy(); }); test('includes server assets from server hooks', () => { + const server_assets = scan_build_output(); for (const fn of serverless_functions) { const server_asset = server_assets[fn].find((file) => file.startsWith('hooks.server.js')); expect(server_asset).toBeTruthy(); @@ -38,11 +44,13 @@ test('includes server assets from server hooks', () => { }); test('includes server assets from transitive imports', () => { + const server_assets = scan_build_output(); const server_asset = server_assets['fn-0'].find((file) => file.startsWith('transitive')); expect(server_asset).toBeTruthy(); }); test('includes server assets of the default error page for every function', () => { + const server_assets = scan_build_output(); for (const fn of serverless_functions) { const server_asset = server_assets[fn].find((file) => file.startsWith('_layout.server.js')); expect(server_asset).toBeTruthy(); @@ -50,6 +58,8 @@ test('includes server assets of the default error page for every function', () = }); test('only includes relevant server assets for split functions', () => { + const server_assets = scan_build_output(); + for (const fn of serverless_functions) { const server_asset = server_assets[fn].find((file) => file.startsWith('_server.js')); if (fn === 'fn-1') { @@ -70,6 +80,8 @@ test('only includes relevant server assets for split functions', () => { }); test('excludes server assets from universal load functions', () => { + const server_assets = scan_build_output(); + const layout_load = server_assets['fn-2'].find((file) => file.startsWith('_layout.js')); const page_load = server_assets['fn-2'].find((file) => file.startsWith('_page.js')); @@ -78,8 +90,9 @@ test('excludes server assets from universal load functions', () => { }); test('excludes server assets from components', () => { - const components = ['_layout.svelte', '_page.svelte', '_error.svelte']; - for (const component_name of components) { + const server_assets = scan_build_output(); + + for (const component_name of ['_layout.svelte', '_page.svelte', '_error.svelte']) { const server_asset = server_assets['fn-2'].find((f) => f.startsWith(component_name)); expect(server_asset).toBeFalsy(); } From 3a0929c48cea03f9d5624af1af9c913ce22bae27 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 15 Jan 2024 19:45:36 +0800 Subject: [PATCH 60/62] revert adapter-vercel types fix --- packages/adapter-vercel/index.js | 4 ++-- packages/adapter-vercel/tsconfig.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index ec916464a18c..ec4a53468ec9 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -17,7 +17,7 @@ const get_default_runtime = () => { ); }; -/** @type {import('./index.js').default} **/ +/** @type {import('.').default} **/ const plugin = function (defaults = {}) { if ('edge' in defaults) { throw new Error("{ edge: true } has been removed in favour of { runtime: 'edge' }"); @@ -340,7 +340,7 @@ const plugin = function (defaults = {}) { }; }; -/** @param {import('./index.js').EdgeConfig & import('./index.js').ServerlessConfig} config */ +/** @param {import('.').EdgeConfig & import('.').ServerlessConfig} config */ function hash_config(config) { return [ config.runtime ?? '', diff --git a/packages/adapter-vercel/tsconfig.json b/packages/adapter-vercel/tsconfig.json index a516ec009f20..627d48a37054 100644 --- a/packages/adapter-vercel/tsconfig.json +++ b/packages/adapter-vercel/tsconfig.json @@ -14,6 +14,6 @@ "@sveltejs/kit": ["../kit/types/index"] } }, - "include": ["**/*.js", "internal.d.ts"], + "include": ["**/*.js", "index.d.ts", "internal.d.ts"], "exclude": ["test/apps"] } From 509a698ac1cb0142bc841e9476e2c6c6fdce35b2 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 15 Jan 2024 19:49:17 +0800 Subject: [PATCH 61/62] improve readability of route asset for loop --- packages/adapter-vercel/index.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index ec4a53468ec9..b3d6e336a13a 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -552,14 +552,10 @@ async function create_function_bundle(builder, entry, dir, config, routes) { const server_assets = builder.getServerAssets(); let routes_assets = new Set(server_assets.rootErrorPage); - const routes_length = routes.length; - for (let i = 0; i < routes_length; i++) { - const assets = server_assets.routes.get(routes[i].id); + for (const route of routes) { + const assets = server_assets.routes.get(route.id); if (assets) { - const assets_length = assets.length; - for (let j = 0; j < assets_length; j++) { - routes_assets.add(assets[j]); - } + routes_assets = new Set([...routes_assets, ...assets]); } } From 9f03b6b96b77fecdddd18e047176274564839c0d Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 15 Jan 2024 20:25:12 +0800 Subject: [PATCH 62/62] simplify file reading in serverless functions example --- .../25-build-and-deploy/80-adapter-netlify.md | 33 ++++++------------- .../25-build-and-deploy/90-adapter-vercel.md | 30 ++++------------- 2 files changed, 17 insertions(+), 46 deletions(-) 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 26c9e56ad6b4..15a9d6148716 100644 --- a/documentation/docs/25-build-and-deploy/80-adapter-netlify.md +++ b/documentation/docs/25-build-and-deploy/80-adapter-netlify.md @@ -113,36 +113,23 @@ You can [use files in Netlify Serverless Functions](https://www.netlify.com/blog ```js // @errors: 2307 7031 -/// file: api/pdf/+server.js +/// file: +server.js import fs from "node:fs"; import path from "node:path"; -import { json } from '@sveltejs/kit'; import { dev } from '$app/environment'; -import PDFDocument from "pdfkit"; -import PalatinoBoldFont from "$lib/fonts/PalatinoBold.ttf"; - -// server assets live in `.netlify/server` when deployed to Netlify -const dir = dev ? process.cwd() : path.join(process.cwd(), '.netlify/server'); -const font = path.join(dir, PalatinoBoldFont); - -export async function GET({ url }) { - const title = url.searchParams.get('title'); - const filename = url.searchParams.get('filename'); +// importing a static asset will return the resolved path in the production build +import PalatinoBoldFont from "$lib/fonts/PalatinoBold.ttf"; - const doc = new PDFDocument(); - const file = `/tmp/${filename}.pdf`; - let writeStream = fs.createWriteStream(file); - doc.pipe(writeStream); - doc.font(font).fontSize(25).text(title, 100, 100); - doc.end(); +const cwd = process.cwd(); - writeStream.on("finish", () => { - const fileContent = fs.readFileSync(file); +// server assets live in `.netlify/server` when deployed to Netlify +const dir = dev ? cwd : path.join(cwd, '.netlify/server'); - // upload file to storage bucket +const pathToFile = path.join(dir, PalatinoBoldFont); - return json({ response: `File ${filename} saved` }); - }); +export async function GET() { + const file = fs.readFileSync(pathToFile); + // ... } ``` \ No newline at end of file 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 a2e4f8007161..d9d72ae929a0 100644 --- a/documentation/docs/25-build-and-deploy/90-adapter-vercel.md +++ b/documentation/docs/25-build-and-deploy/90-adapter-vercel.md @@ -162,32 +162,16 @@ You can [use files in Serverless Functions on Vercel](https://vercel.com/guides/ /// file: api/pdf/+server.js import fs from "node:fs"; import path from "node:path"; -import { json } from '@sveltejs/kit'; -import PDFDocument from "pdfkit"; -import PalatinoBoldFont from "$lib/fonts/PalatinoBold.ttf"; - -const font = path.join(process.cwd(), PalatinoBoldFont); - -export async function POST({ url }) { - const title = url.searchParams.get('title'); - const filename = url.searchParams.get('filename'); - const doc = new PDFDocument(); - // use the tmp serverless function folder to create the write stream for the pdf - const file = `/tmp/${filename}.pdf`; - let writeStream = fs.createWriteStream(file); - doc.pipe(writeStream); - doc.font(font).fontSize(25).text(title, 100, 100); - doc.end(); - - writeStream.on("finish", () => { - const fileContent = fs.readFileSync(file); +// importing a static asset will return the resolved path in the production build +import PalatinoBoldFont from "$lib/fonts/PalatinoBold.ttf"; - // upload file to storage bucket +const pathToFile = path.join(process.cwd(), PalatinoBoldFont); - return json({ response: `File ${filename} saved` }); - }); +export async function GET() { + const file = fs.readFileSync(pathToFile); + // ... } ``` -> Only imported assets in `+page.server`, `+layout.server` and `+server` files are included in the Serverless Function bundle. +> Only assets that are imported in `+page.server`, `+layout.server` and `+server` files are included in the Serverless Function bundle.