From 836cd91c37cea8ae58dd04a326435fcb2c88f358 Mon Sep 17 00:00:00 2001 From: Matt Callaway Date: Thu, 31 Oct 2024 13:47:32 +0000 Subject: [PATCH 01/18] fix: Destroy the node http server response stream if there was a caught error (#12333) --- .changeset/clean-plums-tap.md | 5 +++++ packages/astro/src/core/app/node.ts | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .changeset/clean-plums-tap.md diff --git a/.changeset/clean-plums-tap.md b/.changeset/clean-plums-tap.md new file mode 100644 index 000000000000..010cf1a31824 --- /dev/null +++ b/.changeset/clean-plums-tap.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Destroy the server response stream if async error is thrown diff --git a/packages/astro/src/core/app/node.ts b/packages/astro/src/core/app/node.ts index b2a60f90ef77..ee9aa0d60c63 100644 --- a/packages/astro/src/core/app/node.ts +++ b/packages/astro/src/core/app/node.ts @@ -153,8 +153,10 @@ export class NodeApp extends App { } destination.end(); // the error will be logged by the "on end" callback above - } catch { - destination.end('Internal server error'); + } catch (err) { + destination.write('Internal server error', () => { + err instanceof Error ? destination.destroy(err) : destination.destroy(); + }); } } } From 20e5a843c86e9328814615edf3e8a6fb5e4696cc Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Fri, 1 Nov 2024 16:01:19 +0800 Subject: [PATCH 02/18] Fix prefetch sourcemap generation (#12346) --- .changeset/heavy-walls-rhyme.md | 5 +++++ .../src/prefetch/vite-plugin-prefetch.ts | 22 ++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 .changeset/heavy-walls-rhyme.md diff --git a/.changeset/heavy-walls-rhyme.md b/.changeset/heavy-walls-rhyme.md new file mode 100644 index 000000000000..138e548a2877 --- /dev/null +++ b/.changeset/heavy-walls-rhyme.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes sourcemap generation when prefetch is enabled diff --git a/packages/astro/src/prefetch/vite-plugin-prefetch.ts b/packages/astro/src/prefetch/vite-plugin-prefetch.ts index d64c6d5008b9..67e6df79d54e 100644 --- a/packages/astro/src/prefetch/vite-plugin-prefetch.ts +++ b/packages/astro/src/prefetch/vite-plugin-prefetch.ts @@ -45,15 +45,25 @@ export default function astroPrefetch({ settings }: { settings: AstroSettings }) }, transform(code, id) { // NOTE: Handle replacing the specifiers even if prefetch is disabled so View Transitions - // can import the internal module as not hit runtime issues. + // can import the internal module and not hit runtime issues. if (id.includes(prefetchInternalModuleFsSubpath)) { - return code - .replace('__PREFETCH_PREFETCH_ALL__', JSON.stringify(prefetch?.prefetchAll)) - .replace('__PREFETCH_DEFAULT_STRATEGY__', JSON.stringify(prefetch?.defaultStrategy)) + // We perform a simple replacement with padding so that the code offset is not changed and + // we don't have to generate a sourcemap. This has the assumption that the replaced string + // will always be shorter than the search string to work. + code = code .replace( - '__EXPERIMENTAL_CLIENT_PRERENDER__', - JSON.stringify(settings.config.experimental.clientPrerender), + '__PREFETCH_PREFETCH_ALL__', // length: 25 + `${JSON.stringify(prefetch?.prefetchAll)}`.padEnd(25), + ) + .replace( + '__PREFETCH_DEFAULT_STRATEGY__', // length: 29 + `${JSON.stringify(prefetch?.defaultStrategy)}`.padEnd(29), + ) + .replace( + '__EXPERIMENTAL_CLIENT_PRERENDER__', // length: 33 + `${JSON.stringify(settings.config.experimental.clientPrerender)}`.padEnd(33), ); + return { code, map: null }; } }, }; From 1fc83d3ba8315c31b2a3aadc77b20b1615d261a0 Mon Sep 17 00:00:00 2001 From: Vladislav Mamon Date: Fri, 1 Nov 2024 13:49:55 +0300 Subject: [PATCH 03/18] fix(assets): fix `getImage` options type (#12349) --- .changeset/long-monkeys-exercise.md | 5 +++++ packages/astro/src/assets/types.ts | 6 +++--- packages/astro/src/type-utils.ts | 5 +++++ 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 .changeset/long-monkeys-exercise.md diff --git a/.changeset/long-monkeys-exercise.md b/.changeset/long-monkeys-exercise.md new file mode 100644 index 000000000000..f3f88fa141ec --- /dev/null +++ b/.changeset/long-monkeys-exercise.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes the `getImage` options type so it properly extends `ImageTransform` diff --git a/packages/astro/src/assets/types.ts b/packages/astro/src/assets/types.ts index 6de28d43c6b0..7b6b2893a00c 100644 --- a/packages/astro/src/assets/types.ts +++ b/packages/astro/src/assets/types.ts @@ -1,4 +1,4 @@ -import type { WithRequired } from '../type-utils.js'; +import type { OmitPreservingIndexSignature, Simplify, WithRequired } from '../type-utils.js'; import type { VALID_INPUT_FORMATS, VALID_OUTPUT_FORMATS } from './consts.js'; import type { ImageService } from './services/service.js'; @@ -66,10 +66,10 @@ export type SrcSetValue = UnresolvedSrcSetValue & { /** * A yet to be resolved image transform. Used by `getImage` */ -export type UnresolvedImageTransform = Omit & { +export type UnresolvedImageTransform = Simplify & { src: ImageMetadata | string | Promise<{ default: ImageMetadata }>; inferSize?: boolean; -} & { +}> & { [isESMImport]?: never; }; diff --git a/packages/astro/src/type-utils.ts b/packages/astro/src/type-utils.ts index daf1052e1462..cbb112f7946b 100644 --- a/packages/astro/src/type-utils.ts +++ b/packages/astro/src/type-utils.ts @@ -16,6 +16,11 @@ export type OmitIndexSignature = { : KeyType]: ObjectType[KeyType]; }; +// This is an alternative `Omit` implementation that _doesn't_ remove the index signature of an object. +export type OmitPreservingIndexSignature = { + [P in keyof T as Exclude]: T[P] +}; + // Transform a string into its kebab case equivalent (camelCase -> kebab-case). Useful for CSS-in-JS to CSS. export type Kebab = T extends `${infer F}${infer R}` ? Kebab ? '' : '-'}${Lowercase}`> From c480b8f2c4a6282ccee706e9121ceacd91f5172b Mon Sep 17 00:00:00 2001 From: Vladislav Mamon Date: Fri, 1 Nov 2024 10:50:42 +0000 Subject: [PATCH 04/18] [ci] format --- packages/astro/src/assets/types.ts | 10 ++++++---- packages/astro/src/type-utils.ts | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/astro/src/assets/types.ts b/packages/astro/src/assets/types.ts index 7b6b2893a00c..8bf7a5959380 100644 --- a/packages/astro/src/assets/types.ts +++ b/packages/astro/src/assets/types.ts @@ -66,10 +66,12 @@ export type SrcSetValue = UnresolvedSrcSetValue & { /** * A yet to be resolved image transform. Used by `getImage` */ -export type UnresolvedImageTransform = Simplify & { - src: ImageMetadata | string | Promise<{ default: ImageMetadata }>; - inferSize?: boolean; -}> & { +export type UnresolvedImageTransform = Simplify< + OmitPreservingIndexSignature & { + src: ImageMetadata | string | Promise<{ default: ImageMetadata }>; + inferSize?: boolean; + } +> & { [isESMImport]?: never; }; diff --git a/packages/astro/src/type-utils.ts b/packages/astro/src/type-utils.ts index cbb112f7946b..1aa816aadb81 100644 --- a/packages/astro/src/type-utils.ts +++ b/packages/astro/src/type-utils.ts @@ -18,7 +18,7 @@ export type OmitIndexSignature = { // This is an alternative `Omit` implementation that _doesn't_ remove the index signature of an object. export type OmitPreservingIndexSignature = { - [P in keyof T as Exclude]: T[P] + [P in keyof T as Exclude]: T[P]; }; // Transform a string into its kebab case equivalent (camelCase -> kebab-case). Useful for CSS-in-JS to CSS. From 57514881655b62a0bc39ace1e1ed4b89b96f74ca Mon Sep 17 00:00:00 2001 From: Florian Lefebvre Date: Fri, 1 Nov 2024 16:53:15 +0100 Subject: [PATCH 05/18] fix: revert #12227 (#12351) --- .changeset/friendly-radios-live.md | 5 +++++ packages/astro/src/env/runtime-constants.ts | 1 - packages/astro/src/env/runtime.ts | 6 +----- packages/astro/src/env/vite-plugin-env.ts | 7 +++++-- 4 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 .changeset/friendly-radios-live.md delete mode 100644 packages/astro/src/env/runtime-constants.ts diff --git a/.changeset/friendly-radios-live.md b/.changeset/friendly-radios-live.md new file mode 100644 index 000000000000..723a3d7f83de --- /dev/null +++ b/.changeset/friendly-radios-live.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Reverts a change made in `4.16.6` that prevented usage of `astro:env` secrets inside middleware in SSR diff --git a/packages/astro/src/env/runtime-constants.ts b/packages/astro/src/env/runtime-constants.ts deleted file mode 100644 index 27b5d72113b2..000000000000 --- a/packages/astro/src/env/runtime-constants.ts +++ /dev/null @@ -1 +0,0 @@ -export const ENV_SYMBOL = Symbol.for('astro:env/dev'); diff --git a/packages/astro/src/env/runtime.ts b/packages/astro/src/env/runtime.ts index 50684f63ef04..a2017b617f84 100644 --- a/packages/astro/src/env/runtime.ts +++ b/packages/astro/src/env/runtime.ts @@ -1,16 +1,12 @@ import { AstroError, AstroErrorData } from '../core/errors/index.js'; import { invalidVariablesToError } from './errors.js'; -import { ENV_SYMBOL } from './runtime-constants.js'; import type { ValidationResultInvalid } from './validators.js'; export { validateEnvVariable, getEnvFieldType } from './validators.js'; export type GetEnv = (key: string) => string | undefined; type OnSetGetEnv = (reset: boolean) => void; -let _getEnv: GetEnv = (key) => { - const env = (globalThis as any)[ENV_SYMBOL] ?? {}; - return env[key]; -}; +let _getEnv: GetEnv = (key) => process.env[key]; export function setGetEnv(fn: GetEnv, reset = false) { _getEnv = fn; diff --git a/packages/astro/src/env/vite-plugin-env.ts b/packages/astro/src/env/vite-plugin-env.ts index a672addccdf2..06d5b047c9d1 100644 --- a/packages/astro/src/env/vite-plugin-env.ts +++ b/packages/astro/src/env/vite-plugin-env.ts @@ -9,7 +9,6 @@ import { VIRTUAL_MODULES_IDS_VALUES, } from './constants.js'; import { type InvalidVariable, invalidVariablesToError } from './errors.js'; -import { ENV_SYMBOL } from './runtime-constants.js'; import type { EnvSchema } from './schema.js'; import { getEnvFieldType, validateEnvVariable } from './validators.js'; @@ -42,7 +41,11 @@ export function astroEnv({ fileURLToPath(settings.config.root), '', ); - (globalThis as any)[ENV_SYMBOL] = loadedEnv; + for (const [key, value] of Object.entries(loadedEnv)) { + if (value !== undefined) { + process.env[key] = value; + } + } const validatedVariables = validatePublicVariables({ schema, From 35795a1a54b2bfaf331c58ca91b47e5672e08c4e Mon Sep 17 00:00:00 2001 From: Hippo <6137925+hippotastic@users.noreply.github.com> Date: Mon, 4 Nov 2024 09:19:54 +0100 Subject: [PATCH 06/18] Fix watchfile multiple dev server restart (#12353) --- .changeset/famous-timers-move.md | 5 +++++ packages/astro/src/core/dev/restart.ts | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/famous-timers-move.md diff --git a/.changeset/famous-timers-move.md b/.changeset/famous-timers-move.md new file mode 100644 index 000000000000..ca9f914c0885 --- /dev/null +++ b/.changeset/famous-timers-move.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes an issue in dev server watch file handling that could cause multiple restarts for a single file change. diff --git a/packages/astro/src/core/dev/restart.ts b/packages/astro/src/core/dev/restart.ts index b7eab38af66b..9c3dc074296b 100644 --- a/packages/astro/src/core/dev/restart.ts +++ b/packages/astro/src/core/dev/restart.ts @@ -169,7 +169,9 @@ export async function createContainerWithAutomaticRestart({ // Restart the Astro dev server instead of Vite's when the API is called by plugins. // Ignore the `forceOptimize` parameter for now. - restart.container.viteServer.restart = () => handleServerRestart(); + restart.container.viteServer.restart = async () => { + if (!restart.container.restartInFlight) await handleServerRestart(); + }; // Set up shortcuts From 76803498738f9e86e7948ce81e01e63607e03549 Mon Sep 17 00:00:00 2001 From: Paul Welsh <1691867+spacedawwwg@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:01:09 +0000 Subject: [PATCH 07/18] fix: honor getViteConfig inlineAstroConfig.logLevel setting (#12358) Co-authored-by: Bjorn Lu --- .changeset/cuddly-feet-float.md | 5 +++++ packages/astro/src/config/index.ts | 10 +++------- 2 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 .changeset/cuddly-feet-float.md diff --git a/.changeset/cuddly-feet-float.md b/.changeset/cuddly-feet-float.md new file mode 100644 index 000000000000..8820770c04e8 --- /dev/null +++ b/.changeset/cuddly-feet-float.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Honors `inlineAstroConfig` parameter in `getViteConfig` when creating a logger diff --git a/packages/astro/src/config/index.ts b/packages/astro/src/config/index.ts index 3c5faf2fa087..8cfacfdfc417 100644 --- a/packages/astro/src/config/index.ts +++ b/packages/astro/src/config/index.ts @@ -1,6 +1,5 @@ import type { UserConfig as ViteUserConfig } from 'vite'; import type { AstroInlineConfig, AstroUserConfig } from '../@types/astro.js'; -import { Logger } from '../core/logger/core.js'; export function defineConfig(config: AstroUserConfig) { return config; @@ -19,7 +18,7 @@ export function getViteConfig( const [ fs, { mergeConfig }, - { nodeLogDestination }, + { createNodeLogger }, { resolveConfig, createSettings }, { createVite }, { runHookConfigSetup, runHookConfigDone }, @@ -27,16 +26,13 @@ export function getViteConfig( ] = await Promise.all([ import('node:fs'), import('vite'), - import('../core/logger/node.js'), + import('../core/config/logging.js'), import('../core/config/index.js'), import('../core/create-vite.js'), import('../integrations/hooks.js'), import('./vite-plugin-content-listen.js'), ]); - const logger = new Logger({ - dest: nodeLogDestination, - level: 'info', - }); + const logger = createNodeLogger(inlineAstroConfig); const { astroConfig: config } = await resolveConfig(inlineAstroConfig, cmd); let settings = await createSettings(config, userViteConfig.root); settings = await runHookConfigSetup({ settings, command: cmd, logger }); From ec3113d25a318d94cac879c3eae4ad624ed1aee0 Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" <108291165+astrobot-houston@users.noreply.github.com> Date: Mon, 4 Nov 2024 06:20:48 -0800 Subject: [PATCH 08/18] [ci] release (#12345) Co-authored-by: github-actions[bot] --- .changeset/clean-plums-tap.md | 5 --- .changeset/cuddly-feet-float.md | 5 --- .changeset/famous-timers-move.md | 5 --- .changeset/friendly-radios-live.md | 5 --- .changeset/heavy-walls-rhyme.md | 5 --- .changeset/long-monkeys-exercise.md | 5 --- examples/basics/package.json | 2 +- examples/blog/package.json | 2 +- examples/component/package.json | 2 +- examples/container-with-vitest/package.json | 2 +- examples/framework-alpine/package.json | 2 +- examples/framework-lit/package.json | 2 +- examples/framework-multiple/package.json | 2 +- examples/framework-preact/package.json | 2 +- examples/framework-react/package.json | 2 +- examples/framework-solid/package.json | 2 +- examples/framework-svelte/package.json | 2 +- examples/framework-vue/package.json | 2 +- examples/hackernews/package.json | 2 +- examples/integration/package.json | 2 +- examples/minimal/package.json | 2 +- examples/portfolio/package.json | 2 +- examples/ssr/package.json | 2 +- examples/starlog/package.json | 2 +- examples/toolbar-app/package.json | 2 +- examples/with-markdoc/package.json | 2 +- examples/with-mdx/package.json | 2 +- examples/with-nanostores/package.json | 2 +- examples/with-tailwindcss/package.json | 2 +- examples/with-vitest/package.json | 2 +- packages/astro/CHANGELOG.md | 16 +++++++ packages/astro/package.json | 2 +- pnpm-lock.yaml | 48 ++++++++++----------- 33 files changed, 65 insertions(+), 79 deletions(-) delete mode 100644 .changeset/clean-plums-tap.md delete mode 100644 .changeset/cuddly-feet-float.md delete mode 100644 .changeset/famous-timers-move.md delete mode 100644 .changeset/friendly-radios-live.md delete mode 100644 .changeset/heavy-walls-rhyme.md delete mode 100644 .changeset/long-monkeys-exercise.md diff --git a/.changeset/clean-plums-tap.md b/.changeset/clean-plums-tap.md deleted file mode 100644 index 010cf1a31824..000000000000 --- a/.changeset/clean-plums-tap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Destroy the server response stream if async error is thrown diff --git a/.changeset/cuddly-feet-float.md b/.changeset/cuddly-feet-float.md deleted file mode 100644 index 8820770c04e8..000000000000 --- a/.changeset/cuddly-feet-float.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Honors `inlineAstroConfig` parameter in `getViteConfig` when creating a logger diff --git a/.changeset/famous-timers-move.md b/.changeset/famous-timers-move.md deleted file mode 100644 index ca9f914c0885..000000000000 --- a/.changeset/famous-timers-move.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes an issue in dev server watch file handling that could cause multiple restarts for a single file change. diff --git a/.changeset/friendly-radios-live.md b/.changeset/friendly-radios-live.md deleted file mode 100644 index 723a3d7f83de..000000000000 --- a/.changeset/friendly-radios-live.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Reverts a change made in `4.16.6` that prevented usage of `astro:env` secrets inside middleware in SSR diff --git a/.changeset/heavy-walls-rhyme.md b/.changeset/heavy-walls-rhyme.md deleted file mode 100644 index 138e548a2877..000000000000 --- a/.changeset/heavy-walls-rhyme.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes sourcemap generation when prefetch is enabled diff --git a/.changeset/long-monkeys-exercise.md b/.changeset/long-monkeys-exercise.md deleted file mode 100644 index f3f88fa141ec..000000000000 --- a/.changeset/long-monkeys-exercise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes the `getImage` options type so it properly extends `ImageTransform` diff --git a/examples/basics/package.json b/examples/basics/package.json index 6ec3fab02ffc..eaff31cfef3a 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.16.8" + "astro": "^4.16.9" } } diff --git a/examples/blog/package.json b/examples/blog/package.json index bec00fa4f0d4..308f5fc721c3 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -14,6 +14,6 @@ "@astrojs/mdx": "^3.1.9", "@astrojs/rss": "^4.0.9", "@astrojs/sitemap": "^3.2.1", - "astro": "^4.16.8" + "astro": "^4.16.9" } } diff --git a/examples/component/package.json b/examples/component/package.json index 3484dcccec0c..9938cf17dbf1 100644 --- a/examples/component/package.json +++ b/examples/component/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^4.16.8" + "astro": "^4.16.9" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json index cba6204224f3..de81a50bd0e3 100644 --- a/examples/container-with-vitest/package.json +++ b/examples/container-with-vitest/package.json @@ -12,7 +12,7 @@ "test": "vitest run" }, "dependencies": { - "astro": "^4.16.8", + "astro": "^4.16.9", "@astrojs/react": "^3.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index 3031ad13ca0b..ade8c05c5673 100644 --- a/examples/framework-alpine/package.json +++ b/examples/framework-alpine/package.json @@ -14,6 +14,6 @@ "@astrojs/alpinejs": "^0.4.0", "@types/alpinejs": "^3.13.10", "alpinejs": "^3.14.3", - "astro": "^4.16.8" + "astro": "^4.16.9" } } diff --git a/examples/framework-lit/package.json b/examples/framework-lit/package.json index f3aa74b60128..f876b07d413a 100644 --- a/examples/framework-lit/package.json +++ b/examples/framework-lit/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/lit": "^4.3.0", "@webcomponents/template-shadowroot": "^0.2.1", - "astro": "^4.16.8", + "astro": "^4.16.9", "lit": "^3.2.1" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 9099bb551a77..cd6c01559561 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -18,7 +18,7 @@ "@astrojs/vue": "^4.5.2", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", - "astro": "^4.16.8", + "astro": "^4.16.9", "preact": "^10.24.3", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index 87d26f7c901f..383f57f8c6ae 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/preact": "^3.5.3", "@preact/signals": "^1.3.0", - "astro": "^4.16.8", + "astro": "^4.16.9", "preact": "^10.24.3" } } diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json index 5a8a4cec86c3..d92e84e0a851 100644 --- a/examples/framework-react/package.json +++ b/examples/framework-react/package.json @@ -14,7 +14,7 @@ "@astrojs/react": "^3.6.2", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", - "astro": "^4.16.8", + "astro": "^4.16.9", "react": "^18.3.1", "react-dom": "^18.3.1" } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index 230c1ae46e34..557a308924c7 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/solid-js": "^4.4.2", - "astro": "^4.16.8", + "astro": "^4.16.9", "solid-js": "^1.9.3" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index f5851c318ed5..f2ec05469624 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/svelte": "^5.7.2", - "astro": "^4.16.8", + "astro": "^4.16.9", "svelte": "^4.2.19" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index 07db44ef0d27..861184c0fac1 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/vue": "^4.5.2", - "astro": "^4.16.8", + "astro": "^4.16.9", "vue": "^3.5.12" } } diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index 7b2e84757bac..8ef5d3f6590c 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -12,6 +12,6 @@ }, "dependencies": { "@astrojs/node": "^8.3.4", - "astro": "^4.16.8" + "astro": "^4.16.9" } } diff --git a/examples/integration/package.json b/examples/integration/package.json index 706a017bba34..246c2a5985f4 100644 --- a/examples/integration/package.json +++ b/examples/integration/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^4.16.8" + "astro": "^4.16.9" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/minimal/package.json b/examples/minimal/package.json index e45e0b2316dd..840147261585 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.16.8" + "astro": "^4.16.9" } } diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index e3d15d325e77..faf2310e1d3e 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.16.8" + "astro": "^4.16.9" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 644db40237a2..51c12cceb827 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -14,7 +14,7 @@ "dependencies": { "@astrojs/node": "^8.3.4", "@astrojs/svelte": "^5.7.2", - "astro": "^4.16.8", + "astro": "^4.16.9", "svelte": "^4.2.19" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index 2ae63ff846ce..95fa682e62bd 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -10,7 +10,7 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.16.8", + "astro": "^4.16.9", "sass": "^1.80.4", "sharp": "^0.33.3" } diff --git a/examples/toolbar-app/package.json b/examples/toolbar-app/package.json index ea539150c7b8..1c00d9d0b202 100644 --- a/examples/toolbar-app/package.json +++ b/examples/toolbar-app/package.json @@ -15,6 +15,6 @@ "./app": "./dist/app.js" }, "devDependencies": { - "astro": "^4.16.8" + "astro": "^4.16.9" } } diff --git a/examples/with-markdoc/package.json b/examples/with-markdoc/package.json index 74b52f13cae6..4110a2bc13e6 100644 --- a/examples/with-markdoc/package.json +++ b/examples/with-markdoc/package.json @@ -12,6 +12,6 @@ }, "dependencies": { "@astrojs/markdoc": "^0.11.5", - "astro": "^4.16.8" + "astro": "^4.16.9" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index 36b3722780e7..441293d99cf7 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/mdx": "^3.1.9", "@astrojs/preact": "^3.5.3", - "astro": "^4.16.8", + "astro": "^4.16.9", "preact": "^10.24.3" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 38d2d4c3b6e0..35d262c4d3b4 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/preact": "^3.5.3", "@nanostores/preact": "^0.5.2", - "astro": "^4.16.8", + "astro": "^4.16.9", "nanostores": "^0.11.3", "preact": "^10.24.3" } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index 6829ad27ae23..fa959cdf443c 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -14,7 +14,7 @@ "@astrojs/mdx": "^3.1.9", "@astrojs/tailwind": "^5.1.2", "@types/canvas-confetti": "^1.6.4", - "astro": "^4.16.8", + "astro": "^4.16.9", "autoprefixer": "^10.4.20", "canvas-confetti": "^1.9.3", "postcss": "^8.4.47", diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index 95b1e08198d7..120ee754f59b 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -12,7 +12,7 @@ "test": "vitest" }, "dependencies": { - "astro": "^4.16.8", + "astro": "^4.16.9", "vitest": "^2.1.4" } } diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index d96d9fea84ed..e3f5f0c0d4a5 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,21 @@ # astro +## 4.16.9 + +### Patch Changes + +- [#12333](https://github.com/withastro/astro/pull/12333) [`836cd91`](https://github.com/withastro/astro/commit/836cd91c37cea8ae58dd04a326435fcb2c88f358) Thanks [@imattacus](https://github.com/imattacus)! - Destroy the server response stream if async error is thrown + +- [#12358](https://github.com/withastro/astro/pull/12358) [`7680349`](https://github.com/withastro/astro/commit/76803498738f9e86e7948ce81e01e63607e03549) Thanks [@spacedawwwg](https://github.com/spacedawwwg)! - Honors `inlineAstroConfig` parameter in `getViteConfig` when creating a logger + +- [#12353](https://github.com/withastro/astro/pull/12353) [`35795a1`](https://github.com/withastro/astro/commit/35795a1a54b2bfaf331c58ca91b47e5672e08c4e) Thanks [@hippotastic](https://github.com/hippotastic)! - Fixes an issue in dev server watch file handling that could cause multiple restarts for a single file change. + +- [#12351](https://github.com/withastro/astro/pull/12351) [`5751488`](https://github.com/withastro/astro/commit/57514881655b62a0bc39ace1e1ed4b89b96f74ca) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Reverts a change made in `4.16.6` that prevented usage of `astro:env` secrets inside middleware in SSR + +- [#12346](https://github.com/withastro/astro/pull/12346) [`20e5a84`](https://github.com/withastro/astro/commit/20e5a843c86e9328814615edf3e8a6fb5e4696cc) Thanks [@bluwy](https://github.com/bluwy)! - Fixes sourcemap generation when prefetch is enabled + +- [#12349](https://github.com/withastro/astro/pull/12349) [`1fc83d3`](https://github.com/withastro/astro/commit/1fc83d3ba8315c31b2a3aadc77b20b1615d261a0) Thanks [@norskeld](https://github.com/norskeld)! - Fixes the `getImage` options type so it properly extends `ImageTransform` + ## 4.16.8 ### Patch Changes diff --git a/packages/astro/package.json b/packages/astro/package.json index ba0148b60d7a..e33465ecc53a 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "astro", - "version": "4.16.8", + "version": "4.16.9", "description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.", "type": "module", "author": "withastro", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85f984d02a29..4da3b6b3d2f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -113,7 +113,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro examples/blog: @@ -128,13 +128,13 @@ importers: specifier: ^3.2.1 version: link:../../packages/integrations/sitemap astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro examples/component: devDependencies: astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro examples/container-with-vitest: @@ -143,7 +143,7 @@ importers: specifier: ^3.6.2 version: link:../../packages/integrations/react astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -174,7 +174,7 @@ importers: specifier: ^3.14.3 version: 3.14.3 astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro examples/framework-lit: @@ -186,7 +186,7 @@ importers: specifier: ^0.2.1 version: 0.2.1 astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro lit: specifier: ^3.2.1 @@ -216,7 +216,7 @@ importers: specifier: ^18.3.1 version: 18.3.1 astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro preact: specifier: ^10.24.3 @@ -246,7 +246,7 @@ importers: specifier: ^1.3.0 version: 1.3.0(preact@10.24.3) astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro preact: specifier: ^10.24.3 @@ -264,7 +264,7 @@ importers: specifier: ^18.3.1 version: 18.3.1 astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -279,7 +279,7 @@ importers: specifier: ^4.4.2 version: link:../../packages/integrations/solid astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro solid-js: specifier: ^1.9.3 @@ -291,7 +291,7 @@ importers: specifier: ^5.7.2 version: link:../../packages/integrations/svelte astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro svelte: specifier: ^4.2.19 @@ -303,7 +303,7 @@ importers: specifier: ^4.5.2 version: link:../../packages/integrations/vue astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro vue: specifier: ^3.5.12 @@ -315,25 +315,25 @@ importers: specifier: ^8.3.4 version: 8.3.4(astro@packages+astro) astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro examples/minimal: dependencies: astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro examples/ssr: @@ -345,7 +345,7 @@ importers: specifier: ^5.7.2 version: link:../../packages/integrations/svelte astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro svelte: specifier: ^4.2.19 @@ -354,7 +354,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro sass: specifier: ^1.80.4 @@ -366,7 +366,7 @@ importers: examples/toolbar-app: devDependencies: astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro examples/with-markdoc: @@ -375,7 +375,7 @@ importers: specifier: ^0.11.5 version: link:../../packages/integrations/markdoc astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro examples/with-mdx: @@ -387,7 +387,7 @@ importers: specifier: ^3.5.3 version: link:../../packages/integrations/preact astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro preact: specifier: ^10.24.3 @@ -402,7 +402,7 @@ importers: specifier: ^0.5.2 version: 0.5.2(nanostores@0.11.3)(preact@10.24.3) astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro nanostores: specifier: ^0.11.3 @@ -423,7 +423,7 @@ importers: specifier: ^1.6.4 version: 1.6.4 astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro autoprefixer: specifier: ^10.4.20 @@ -441,7 +441,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^4.16.8 + specifier: ^4.16.9 version: link:../../packages/astro vitest: specifier: ^2.1.4 From 493fe43cd3ef94b087b8958031ecc964ae73463b Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Mon, 4 Nov 2024 22:49:33 +0800 Subject: [PATCH 09/18] Improve tinyexec errors (#12368) --- .changeset/many-eyes-call.md | 5 +++++ benchmark/bench/cli-startup.js | 2 +- benchmark/bench/memory.js | 1 + benchmark/bench/render.js | 2 ++ benchmark/bench/server-stress.js | 1 + packages/astro/src/cli/add/index.ts | 2 +- packages/astro/src/cli/docs/open.ts | 3 ++- packages/astro/src/cli/exec.ts | 26 +++++++++++++++++++++++ packages/astro/src/cli/install-package.ts | 2 +- scripts/smoke/cleanup.js | 1 + scripts/smoke/index.js | 5 ++++- 11 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 .changeset/many-eyes-call.md create mode 100644 packages/astro/src/cli/exec.ts diff --git a/.changeset/many-eyes-call.md b/.changeset/many-eyes-call.md new file mode 100644 index 000000000000..75e3be47d3e9 --- /dev/null +++ b/.changeset/many-eyes-call.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Improves error logs when executing commands diff --git a/benchmark/bench/cli-startup.js b/benchmark/bench/cli-startup.js index 6f25554997cd..2e9eccf64561 100644 --- a/benchmark/bench/cli-startup.js +++ b/benchmark/bench/cli-startup.js @@ -45,7 +45,7 @@ async function benchmarkCommand(command, args, root) { for (let i = 0; i < 10; i++) { const start = performance.now(); - await exec(command, args, { nodeOptions: { cwd: root } }); + await exec(command, args, { nodeOptions: { cwd: root }, throwOnError: true }); durations.push(performance.now() - start); } diff --git a/benchmark/bench/memory.js b/benchmark/bench/memory.js index f1846204f8b9..9a3f94bc7380 100644 --- a/benchmark/bench/memory.js +++ b/benchmark/bench/memory.js @@ -26,6 +26,7 @@ export async function run(projectDir, outputFile) { ASTRO_TIMER_PATH: outputFilePath, }, }, + throwOnError: true, }); console.log('Raw results written to', outputFilePath); diff --git a/benchmark/bench/render.js b/benchmark/bench/render.js index aee04f2b5bed..8dfd47fbbe6e 100644 --- a/benchmark/bench/render.js +++ b/benchmark/bench/render.js @@ -25,6 +25,7 @@ export async function run(projectDir, outputFile) { cwd: root, stdio: 'inherit', }, + throwOnError: true, }); console.log('Previewing...'); @@ -33,6 +34,7 @@ export async function run(projectDir, outputFile) { cwd: root, stdio: 'inherit', }, + throwOnError: true, }); console.log('Waiting for server ready...'); diff --git a/benchmark/bench/server-stress.js b/benchmark/bench/server-stress.js index 18b31c71c59e..9e93c4cd930f 100644 --- a/benchmark/bench/server-stress.js +++ b/benchmark/bench/server-stress.js @@ -24,6 +24,7 @@ export async function run(projectDir, outputFile) { cwd: root, stdio: 'inherit', }, + throwOnError: true, }); console.log('Previewing...'); diff --git a/packages/astro/src/cli/add/index.ts b/packages/astro/src/cli/add/index.ts index 869a867d1ce3..08c57dc0440c 100644 --- a/packages/astro/src/cli/add/index.ts +++ b/packages/astro/src/cli/add/index.ts @@ -10,7 +10,6 @@ import ora from 'ora'; import preferredPM from 'preferred-pm'; import prompts from 'prompts'; import maxSatisfying from 'semver/ranges/max-satisfying.js'; -import { exec } from 'tinyexec'; import { loadTSConfig, resolveConfig, @@ -30,6 +29,7 @@ import { appendForwardSlash } from '../../core/path.js'; import { apply as applyPolyfill } from '../../core/polyfill.js'; import { ensureProcessNodeEnv, parseNpmName } from '../../core/util.js'; import { eventCliSession, telemetry } from '../../events/index.js'; +import { exec } from '../exec.js'; import { type Flags, createLoggerFromFlags, flagsToAstroInlineConfig } from '../flags.js'; import { fetchPackageJson, fetchPackageVersions } from '../install-package.js'; diff --git a/packages/astro/src/cli/docs/open.ts b/packages/astro/src/cli/docs/open.ts index 6f2fe4c82117..5b59e6c4711b 100644 --- a/packages/astro/src/cli/docs/open.ts +++ b/packages/astro/src/cli/docs/open.ts @@ -1,4 +1,5 @@ -import { type Result, exec } from 'tinyexec'; +import type { Result } from 'tinyexec'; +import { exec } from '../exec.js'; /** * Credit: Azhar22 diff --git a/packages/astro/src/cli/exec.ts b/packages/astro/src/cli/exec.ts new file mode 100644 index 000000000000..b2af3c377e73 --- /dev/null +++ b/packages/astro/src/cli/exec.ts @@ -0,0 +1,26 @@ +import { NonZeroExitError, type Options, x } from 'tinyexec'; + +/** + * Improve tinyexec error logging and set `throwOnError` to `true` by default + */ +export function exec(command: string, args?: string[], options?: Partial) { + return x(command, args, { + throwOnError: true, + ...options, + }).then( + (o) => o, + (e) => { + if (e instanceof NonZeroExitError) { + const fullCommand = args?.length + ? `${command} ${args.map((a) => (a.includes(' ') ? `"${a}"` : a)).join(' ')}` + : command; + const message = `The command \`${fullCommand}\` exited with code ${e.exitCode}`; + const newError = new Error(message, e.cause ? { cause: e.cause } : undefined); + (newError as any).stderr = e.output?.stderr; + (newError as any).stdout = e.output?.stdout; + throw newError; + } + throw e; + }, + ); +} diff --git a/packages/astro/src/cli/install-package.ts b/packages/astro/src/cli/install-package.ts index 2bd3afc8f0ab..25bd5c445a80 100644 --- a/packages/astro/src/cli/install-package.ts +++ b/packages/astro/src/cli/install-package.ts @@ -5,9 +5,9 @@ import { bold, cyan, dim, magenta } from 'kleur/colors'; import ora from 'ora'; import preferredPM from 'preferred-pm'; import prompts from 'prompts'; -import { exec } from 'tinyexec'; import whichPm from 'which-pm'; import type { Logger } from '../core/logger/core.js'; +import { exec } from './exec.js'; const require = createRequire(import.meta.url); diff --git a/scripts/smoke/cleanup.js b/scripts/smoke/cleanup.js index 1bb398d9e10e..e901556ec7b6 100644 --- a/scripts/smoke/cleanup.js +++ b/scripts/smoke/cleanup.js @@ -38,6 +38,7 @@ async function run() { await exec('pnpm', ['install'], { nodeOptions: { cwd: fileURLToPath(rootDir), stdio: ['pipe', 'inherit', 'inherit'] }, + throwOnError: true }); } diff --git a/scripts/smoke/index.js b/scripts/smoke/index.js index 49887cd2ee53..1d9651c598ca 100644 --- a/scripts/smoke/index.js +++ b/scripts/smoke/index.js @@ -33,7 +33,10 @@ async function run() { const directories = [...(await getChildDirectories(smokeDir)), ...(await getChildDirectories(exampleDir))]; /** @type {Partial} */ - const execOptions = { nodeOptions: { cwd: fileURLToPath(rootDir), stdio: 'inherit' }}; + const execOptions = { + nodeOptions: { cwd: fileURLToPath(rootDir), stdio: 'inherit' }, + throwOnError: true, + }; console.log('🤖', 'Preparing', 'pnpm'); From 222f71894cc7118319ce83b3b29fa61a9dbebb75 Mon Sep 17 00:00:00 2001 From: Luiz Ferraz Date: Wed, 6 Nov 2024 03:16:34 -0300 Subject: [PATCH 10/18] Fix `astro add` generated import identifier (#12363) --- .changeset/five-maps-bake.md | 5 +++++ packages/astro/src/cli/add/index.ts | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/five-maps-bake.md diff --git a/.changeset/five-maps-bake.md b/.changeset/five-maps-bake.md new file mode 100644 index 000000000000..13bacbcdcf82 --- /dev/null +++ b/.changeset/five-maps-bake.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes code generated by `astro add` command when adding a version of an integration other than the default `latest`. diff --git a/packages/astro/src/cli/add/index.ts b/packages/astro/src/cli/add/index.ts index 08c57dc0440c..2b4faa2664aa 100644 --- a/packages/astro/src/cli/add/index.ts +++ b/packages/astro/src/cli/add/index.ts @@ -390,13 +390,16 @@ function isAdapter( // Some examples: // - @astrojs/image => image // - @astrojs/markdown-component => markdownComponent +// - @astrojs/image@beta => image // - astro-cast => cast +// - astro-cast@next => cast // - markdown-astro => markdown // - some-package => somePackage // - example.com => exampleCom // - under_score => underScore // - 123numeric => numeric // - @npm/thingy => npmThingy +// - @npm/thingy@1.2.3 => npmThingy // - @jane/foo.js => janeFoo // - @tokencss/astro => tokencss const toIdent = (name: string) => { @@ -409,7 +412,9 @@ const toIdent = (name: string) => { // convert to camel case .replace(/[.\-_/]+([a-zA-Z])/g, (_, w) => w.toUpperCase()) // drop invalid first characters - .replace(/^[^a-zA-Z$_]+/, ''); + .replace(/^[^a-zA-Z$_]+/, '') + // drop version or tag + .replace(/@.*$/, ''); return `${ident[0].toLowerCase()}${ident.slice(1)}`; }; From ed5a9f1b755f9ae31735dacf75b970669c8c38c8 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Wed, 6 Nov 2024 12:33:14 +0000 Subject: [PATCH 11/18] chore: codspeed benchmark (#12347) --- .github/workflows/continuous_benchmark.yml | 50 ++++++++ benchmark/bench/_util.js | 2 +- benchmark/bench/cli-startup.js | 9 +- benchmark/bench/codspeed.js | 50 ++++++++ benchmark/bench/memory.js | 2 +- benchmark/bench/render.js | 12 +- benchmark/bench/server-stress.js | 22 ++-- benchmark/index.js | 33 ++++-- benchmark/make-project/render-bench.js | 132 +++++++++++++++++++++ benchmark/package.json | 5 + benchmark/packages/adapter/README.md | 3 + benchmark/packages/adapter/package.json | 35 ++++++ benchmark/packages/adapter/src/index.ts | 32 +++++ benchmark/packages/adapter/src/server.ts | 34 ++++++ benchmark/packages/adapter/tsconfig.json | 7 ++ benchmark/packages/timer/src/index.ts | 4 +- benchmark/packages/timer/src/server.ts | 2 +- biome.jsonc | 12 +- pnpm-lock.yaml | 123 +++++++++++++++++++ 19 files changed, 527 insertions(+), 42 deletions(-) create mode 100644 .github/workflows/continuous_benchmark.yml create mode 100644 benchmark/bench/codspeed.js create mode 100644 benchmark/make-project/render-bench.js create mode 100644 benchmark/packages/adapter/README.md create mode 100644 benchmark/packages/adapter/package.json create mode 100644 benchmark/packages/adapter/src/index.ts create mode 100644 benchmark/packages/adapter/src/server.ts create mode 100644 benchmark/packages/adapter/tsconfig.json diff --git a/.github/workflows/continuous_benchmark.yml b/.github/workflows/continuous_benchmark.yml new file mode 100644 index 000000000000..42aaf7fc691c --- /dev/null +++ b/.github/workflows/continuous_benchmark.yml @@ -0,0 +1,50 @@ +name: Continuous benchmark + +on: + workflow_dispatch: + pull_request: + branches: + - main + push: + branches: + - main + +env: + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + FORCE_COLOR: true + CODSPEED_TOKEN: ${{ secrets.CODSPEED_TOKEN }} + CODSPEED: true + +jobs: + codspeed: + if: ${{ github.repository_owner == 'withastro' }} + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Setup PNPM + uses: pnpm/action-setup@v3 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 18 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Build + run: pnpm run build + + - name: Run the benchmarks + uses: CodSpeedHQ/action@b587655f756aab640e742fec141261bc6f0a569d # v3.0.1 + timeout-minutes: 30 + with: + run: pnpm benchmark codspeed + diff --git a/benchmark/bench/_util.js b/benchmark/bench/_util.js index 23c4726046bc..b16a16e1ce36 100644 --- a/benchmark/bench/_util.js +++ b/benchmark/bench/_util.js @@ -14,7 +14,7 @@ export const astroBin = path.resolve(astroPkgPath, '../astro.js'); export function calculateStat(numbers) { const avg = numbers.reduce((a, b) => a + b, 0) / numbers.length; const stdev = Math.sqrt( - numbers.map((x) => Math.pow(x - avg, 2)).reduce((a, b) => a + b, 0) / numbers.length + numbers.map((x) => Math.pow(x - avg, 2)).reduce((a, b) => a + b, 0) / numbers.length, ); const max = Math.max(...numbers); return { avg, stdev, max }; diff --git a/benchmark/bench/cli-startup.js b/benchmark/bench/cli-startup.js index 2e9eccf64561..9144797d7547 100644 --- a/benchmark/bench/cli-startup.js +++ b/benchmark/bench/cli-startup.js @@ -1,6 +1,6 @@ import { fileURLToPath } from 'node:url'; -import { exec } from 'tinyexec'; import { markdownTable } from 'markdown-table'; +import { exec } from 'tinyexec'; import { astroBin, calculateStat } from './_util.js'; /** Default project to run for this benchmark if not specified */ @@ -8,9 +8,8 @@ export const defaultProject = 'render-default'; /** * @param {URL} projectDir - * @param {URL} outputFile */ -export async function run(projectDir, outputFile) { +export async function run(projectDir) { const root = fileURLToPath(projectDir); console.log('Benchmarking `astro --help`...'); @@ -28,7 +27,7 @@ export async function run(projectDir, outputFile) { printResult({ 'astro --help': helpStat, 'astro info': infoStat, - }) + }), ); console.log('='.repeat(10)); } @@ -69,6 +68,6 @@ function printResult(result) { ], { align: ['l', 'r', 'r', 'r'], - } + }, ); } diff --git a/benchmark/bench/codspeed.js b/benchmark/bench/codspeed.js new file mode 100644 index 000000000000..2ad783e8aa7d --- /dev/null +++ b/benchmark/bench/codspeed.js @@ -0,0 +1,50 @@ +import path from 'node:path'; +import { withCodSpeed } from '@codspeed/tinybench-plugin'; +import { Bench } from 'tinybench'; +import { exec } from 'tinyexec'; +import { renderPages } from '../make-project/render-default.js'; +import { astroBin } from './_util.js'; + +export async function run({ memory: _memory, render, stress: _stress }) { + const options = { + iterations: 10, + }; + const bench = process.env.CODSPEED ? withCodSpeed(new Bench(options)) : new Bench(options); + let app; + bench.add( + 'Rendering', + async () => { + console.info('Start task.'); + const result = {}; + for (const fileName of renderPages) { + const pathname = '/' + fileName.slice(0, -path.extname(fileName).length); + const request = new Request(new URL(pathname, 'http://exmpale.com')); + const response = await app.render(request); + const html = await response.text(); + if (!result[pathname]) result[pathname] = []; + result[pathname].push(html); + } + console.info('Finish task.'); + return result; + }, + { + async beforeAll() { + // build for rendering + await exec(astroBin, ['build'], { + nodeOptions: { + cwd: render.root, + stdio: 'inherit', + }, + }); + + const entry = new URL('./dist/server/entry.mjs', `file://${render.root}`); + const { manifest, createApp } = await import(entry); + app = createApp(manifest); + app.manifest = manifest; + }, + }, + ); + + await bench.run(); + console.table(bench.table()); +} diff --git a/benchmark/bench/memory.js b/benchmark/bench/memory.js index 9a3f94bc7380..5c746870e79d 100644 --- a/benchmark/bench/memory.js +++ b/benchmark/bench/memory.js @@ -56,6 +56,6 @@ function printResult(output) { ], { align: ['l', 'r', 'r', 'r'], - } + }, ); } diff --git a/benchmark/bench/render.js b/benchmark/bench/render.js index 8dfd47fbbe6e..02f75a73b270 100644 --- a/benchmark/bench/render.js +++ b/benchmark/bench/render.js @@ -1,12 +1,12 @@ -import { exec } from 'tinyexec'; -import { markdownTable } from 'markdown-table'; import fs from 'node:fs/promises'; import http from 'node:http'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; +import { markdownTable } from 'markdown-table'; import { waitUntilBusy } from 'port-authority'; -import { calculateStat, astroBin } from './_util.js'; +import { exec } from 'tinyexec'; import { renderPages } from '../make-project/render-default.js'; +import { astroBin, calculateStat } from './_util.js'; const port = 4322; @@ -60,14 +60,14 @@ export async function run(projectDir, outputFile) { console.log('Done!'); } -async function benchmarkRenderTime() { +export async function benchmarkRenderTime(portToListen = port) { /** @type {Record} */ const result = {}; for (const fileName of renderPages) { // Render each file 100 times and push to an array for (let i = 0; i < 100; i++) { const pathname = '/' + fileName.slice(0, -path.extname(fileName).length); - const renderTime = await fetchRenderTime(`http://localhost:${port}${pathname}`); + const renderTime = await fetchRenderTime(`http://localhost:${portToListen}${pathname}`); if (!result[pathname]) result[pathname] = []; result[pathname].push(renderTime); } @@ -97,7 +97,7 @@ function printResult(result) { ], { align: ['l', 'r', 'r', 'r'], - } + }, ); } diff --git a/benchmark/bench/server-stress.js b/benchmark/bench/server-stress.js index 9e93c4cd930f..5bcaa6963438 100644 --- a/benchmark/bench/server-stress.js +++ b/benchmark/bench/server-stress.js @@ -1,10 +1,10 @@ -import autocannon from 'autocannon'; -import { exec } from 'tinyexec'; -import { markdownTable } from 'markdown-table'; import fs from 'node:fs/promises'; import { fileURLToPath } from 'node:url'; +import autocannon from 'autocannon'; +import { markdownTable } from 'markdown-table'; import { waitUntilBusy } from 'port-authority'; import pb from 'pretty-bytes'; +import { exec } from 'tinyexec'; import { astroBin } from './_util.js'; const port = 4321; @@ -28,9 +28,11 @@ export async function run(projectDir, outputFile) { }); console.log('Previewing...'); - const previewProcess = execaCommand(`${astroBin} preview --port ${port}`, { - cwd: root, - stdio: 'inherit', + const previewProcess = await exec(astroBin, ['preview', '--port', port], { + nodeOptions: { + cwd: root, + stdio: 'inherit', + }, }); console.log('Waiting for server ready...'); @@ -59,7 +61,7 @@ export async function run(projectDir, outputFile) { /** * @returns {Promise} */ -async function benchmarkCannon() { +export async function benchmarkCannon() { return new Promise((resolve, reject) => { const instance = autocannon( { @@ -76,7 +78,7 @@ async function benchmarkCannon() { instance.stop(); resolve(result); } - } + }, ); autocannon.track(instance, { renderResultsTable: false }); }); @@ -95,7 +97,7 @@ function printResult(output) { ], { align: ['l', 'r', 'r', 'r'], - } + }, ); const reqAndBytesTable = markdownTable( @@ -106,7 +108,7 @@ function printResult(output) { ], { align: ['l', 'r', 'r', 'r', 'r'], - } + }, ); return `${latencyTable}\n\n${reqAndBytesTable}`; diff --git a/benchmark/index.js b/benchmark/index.js index 1c38993b13bf..2f2846e1db5c 100755 --- a/benchmark/index.js +++ b/benchmark/index.js @@ -1,7 +1,7 @@ import mri from 'mri'; import fs from 'node:fs/promises'; import path from 'node:path'; -import { pathToFileURL } from 'node:url'; +import {fileURLToPath, pathToFileURL} from 'node:url'; const args = mri(process.argv.slice(2)); @@ -14,6 +14,7 @@ Command memory Run build memory and speed test render Run rendering speed test server-stress Run server stress test + codspeed Run codspeed test cli-startup Run CLI startup speed test Options @@ -29,6 +30,7 @@ const benchmarks = { render: () => import('./bench/render.js'), 'server-stress': () => import('./bench/server-stress.js'), 'cli-startup': () => import('./bench/cli-startup.js'), + codspeed: () => import('./bench/codspeed.js') }; if (commandName && !(commandName in benchmarks)) { @@ -37,12 +39,26 @@ if (commandName && !(commandName in benchmarks)) { } if (commandName) { - // Run single benchmark - const bench = benchmarks[commandName]; - const benchMod = await bench(); - const projectDir = await makeProject(args.project || benchMod.defaultProject); - const outputFile = await getOutputFile(commandName); - await benchMod.run(projectDir, outputFile); + if (commandName === 'codspeed') { + const render = await makeProject('render-bench'); + const rootRender = fileURLToPath(render); + const bench = benchmarks[commandName]; + const benchMod = await bench(); + const payload = { + render: { + root: rootRender, + output: await getOutputFile('render') + }, + }; + await benchMod.run(payload); + } else { + // Run single benchmark + const bench = benchmarks[commandName]; + const benchMod = await bench(); + const projectDir = await makeProject(args.project || benchMod.defaultProject); + const outputFile = await getOutputFile(commandName); + await benchMod.run(projectDir, outputFile); + } } else { // Run all benchmarks for (const name in benchmarks) { @@ -54,7 +70,7 @@ if (commandName) { } } -async function makeProject(name) { +export async function makeProject(name) { console.log('Making project:', name); const projectDir = new URL(`./projects/${name}/`, import.meta.url); @@ -78,6 +94,5 @@ async function getOutputFile(benchmarkName) { // Prepare output file directory await fs.mkdir(new URL('./', file), { recursive: true }); - return file; } diff --git a/benchmark/make-project/render-bench.js b/benchmark/make-project/render-bench.js new file mode 100644 index 000000000000..9d10d9bf5f16 --- /dev/null +++ b/benchmark/make-project/render-bench.js @@ -0,0 +1,132 @@ +import fs from 'node:fs/promises'; +import { loremIpsumHtml, loremIpsumMd } from './_util.js'; + +// Map of files to be generated and tested for rendering. +// Ideally each content should be similar for comparison. +const renderFiles = { + 'components/ListItem.astro': `\ +--- +const { className, item, attrs } = Astro.props; +const nested = item !== 0; +--- +
  • + + {item} + +
  • + `, + 'components/Sublist.astro': `\ +--- +import ListItem from '../components/ListItem.astro'; +const { items } = Astro.props; +const className = "text-red-500"; +const style = { color: "red" }; +--- +
      +{items.map((item) => ( + +))} +
    + `, + 'pages/astro.astro': `\ +--- +const className = "text-red-500"; +const style = { color: "red" }; +const items = Array.from({ length: 10000 }, (_, i) => ({i})); +--- + + + My Site + + +

    List

    + + ${Array.from({ length: 1000 }) + .map(() => `

    ${loremIpsumHtml}

    `) + .join('\n')} + +`, + 'pages/md.md': `\ +# List + +${Array.from({ length: 1000 }, (_, i) => i) + .map((v) => `- ${v}`) + .join('\n')} + +${Array.from({ length: 1000 }) + .map(() => loremIpsumMd) + .join('\n\n')} +`, + 'pages/mdx.mdx': `\ +export const className = "text-red-500"; +export const style = { color: "red" }; +export const items = Array.from({ length: 1000 }, (_, i) => i); + +# List + +
      + {items.map((item) => ( +
    • {item}
    • + ))} +
    + +${Array.from({ length: 1000 }) + .map(() => loremIpsumMd) + .join('\n\n')} +`, +}; + +export const renderPages = []; +for (const file of Object.keys(renderFiles)) { + if (file.startsWith('pages/')) { + renderPages.push(file.replace('pages/', '')); + } +} + +/** + * @param {URL} projectDir + */ +export async function run(projectDir) { + await fs.rm(projectDir, { recursive: true, force: true }); + await fs.mkdir(new URL('./src/pages', projectDir), { recursive: true }); + await fs.mkdir(new URL('./src/components', projectDir), { recursive: true }); + + await Promise.all( + Object.entries(renderFiles).map(([name, content]) => { + return fs.writeFile(new URL(`./src/${name}`, projectDir), content, 'utf-8'); + }) + ); + + await fs.writeFile( + new URL('./astro.config.js', projectDir), + `\ +import { defineConfig } from 'astro/config'; +import adapter from '@benchmark/adapter'; +import mdx from '@astrojs/mdx'; + +export default defineConfig({ + integrations: [mdx()], + output: 'server', + adapter: adapter(), +});`, + 'utf-8' + ); +} diff --git a/benchmark/package.json b/benchmark/package.json index 2fe6ba7b9a49..428afe56d2cf 100644 --- a/benchmark/package.json +++ b/benchmark/package.json @@ -10,6 +10,7 @@ "@astrojs/mdx": "workspace:*", "@astrojs/node": "^8.3.4", "@benchmark/timer": "workspace:*", + "@benchmark/adapter": "workspace:*", "astro": "workspace:*", "autocannon": "^7.15.0", "markdown-table": "^3.0.4", @@ -18,5 +19,9 @@ "pretty-bytes": "^6.1.1", "sharp": "^0.33.3", "tinyexec": "^0.3.1" + }, + "devDependencies": { + "@codspeed/tinybench-plugin": "^3.1.1", + "tinybench": "^2.9.0" } } diff --git a/benchmark/packages/adapter/README.md b/benchmark/packages/adapter/README.md new file mode 100644 index 000000000000..5b8e33ed4e59 --- /dev/null +++ b/benchmark/packages/adapter/README.md @@ -0,0 +1,3 @@ +# @benchmark/timer + +Like `@astrojs/node`, but returns the rendered time in milliseconds for the page instead of the page content itself. This is used for internal benchmarks only. diff --git a/benchmark/packages/adapter/package.json b/benchmark/packages/adapter/package.json new file mode 100644 index 000000000000..2bdb73ce9bd8 --- /dev/null +++ b/benchmark/packages/adapter/package.json @@ -0,0 +1,35 @@ +{ + "name": "@benchmark/adapter", + "description": "Bench adapter", + "private": true, + "version": "0.0.0", + "type": "module", + "types": "./dist/index.d.ts", + "author": "withastro", + "license": "MIT", + "keywords": [ + "withastro", + "astro-adapter" + ], + "exports": { + ".": "./dist/index.js", + "./server.js": "./dist/server.js", + "./package.json": "./package.json" + }, + "scripts": { + "build": "astro-scripts build \"src/**/*.ts\" && tsc", + "build:ci": "astro-scripts build \"src/**/*.ts\"", + "dev": "astro-scripts dev \"src/**/*.ts\"" + }, + "dependencies": { + "server-destroy": "^1.0.1" + }, + "peerDependencies": { + "astro": "workspace:*" + }, + "devDependencies": { + "@types/server-destroy": "^1.0.4", + "astro": "workspace:*", + "astro-scripts": "workspace:*" + } +} diff --git a/benchmark/packages/adapter/src/index.ts b/benchmark/packages/adapter/src/index.ts new file mode 100644 index 000000000000..f2345deb0885 --- /dev/null +++ b/benchmark/packages/adapter/src/index.ts @@ -0,0 +1,32 @@ +import type { AstroAdapter, AstroIntegration } from 'astro'; + +export default function createIntegration(): AstroIntegration { + return { + name: '@benchmark/timer', + hooks: { + 'astro:config:setup': ({ updateConfig }) => { + updateConfig({ + vite: { + ssr: { + noExternal: ['@benchmark/timer'], + }, + }, + }); + }, + 'astro:config:done': ({ setAdapter }) => { + setAdapter({ + name: '@benchmark/adapter', + serverEntrypoint: '@benchmark/adapter/server.js', + exports: ['manifest', 'createApp'], + supportedAstroFeatures: { + serverOutput: 'stable', + envGetSecret: 'experimental', + staticOutput: 'stable', + hybridOutput: 'stable', + i18nDomains: 'stable', + }, + }); + }, + }, + }; +} diff --git a/benchmark/packages/adapter/src/server.ts b/benchmark/packages/adapter/src/server.ts new file mode 100644 index 000000000000..ca69fe28f262 --- /dev/null +++ b/benchmark/packages/adapter/src/server.ts @@ -0,0 +1,34 @@ +import * as fs from 'node:fs'; +import type { SSRManifest } from 'astro'; +import { App } from 'astro/app'; +import { applyPolyfills } from 'astro/app/node'; + +applyPolyfills(); + +class MyApp extends App { + #manifest: SSRManifest | undefined; + #streaming: boolean; + constructor(manifest: SSRManifest, streaming = false) { + super(manifest, streaming); + this.#manifest = manifest; + this.#streaming = streaming; + } + + async render(request: Request) { + const url = new URL(request.url); + if (this.#manifest?.assets.has(url.pathname)) { + const filePath = new URL('../../client/' + this.removeBase(url.pathname), import.meta.url); + const data = await fs.promises.readFile(filePath); + return new Response(data); + } + + return super.render(request); + } +} + +export function createExports(manifest: SSRManifest) { + return { + manifest, + createApp: (streaming: boolean) => new MyApp(manifest, streaming), + }; +} diff --git a/benchmark/packages/adapter/tsconfig.json b/benchmark/packages/adapter/tsconfig.json new file mode 100644 index 000000000000..1504b4b6dfa4 --- /dev/null +++ b/benchmark/packages/adapter/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.base.json", + "include": ["src"], + "compilerOptions": { + "outDir": "./dist" + } +} diff --git a/benchmark/packages/timer/src/index.ts b/benchmark/packages/timer/src/index.ts index 1c54e3727618..f83a61c36cb5 100644 --- a/benchmark/packages/timer/src/index.ts +++ b/benchmark/packages/timer/src/index.ts @@ -6,7 +6,9 @@ export function getAdapter(): AstroAdapter { serverEntrypoint: '@benchmark/timer/server.js', previewEntrypoint: '@benchmark/timer/preview.js', exports: ['handler'], - supportedAstroFeatures: {}, + supportedAstroFeatures: { + serverOutput: 'stable', + }, }; } diff --git a/benchmark/packages/timer/src/server.ts b/benchmark/packages/timer/src/server.ts index 9905a627b755..edcfaa248f0e 100644 --- a/benchmark/packages/timer/src/server.ts +++ b/benchmark/packages/timer/src/server.ts @@ -13,6 +13,6 @@ export function createExports(manifest: SSRManifest) { const end = performance.now(); res.write(end - start + ''); res.end(); - }, + } }; } diff --git a/biome.jsonc b/biome.jsonc index 227f37a08d17..17307455395b 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -9,20 +9,16 @@ "**/_temp-fixtures/**", "**/vendor/**", "**/.vercel/**", + "benchmark/projects/", + "benchmark/results/", ], - "include": ["test/**", "e2e/**", "packages/**", "/scripts/**"], + "include": ["test/**", "e2e/**", "packages/**", "/scripts/**", "benchmark/bench"], }, "formatter": { "indentStyle": "tab", "indentWidth": 2, "lineWidth": 100, - "ignore": [ - "benchmark/projects/", - "benchmark/results/", - ".changeset", - "pnpm-lock.yaml", - "*.astro", - ], + "ignore": [".changeset", "pnpm-lock.yaml", "*.astro"], }, "organizeImports": { "enabled": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4da3b6b3d2f0..b7db4c5b903b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,6 +66,9 @@ importers: '@astrojs/node': specifier: ^8.3.4 version: 8.3.4(astro@packages+astro) + '@benchmark/adapter': + specifier: workspace:* + version: link:packages/adapter '@benchmark/timer': specifier: workspace:* version: link:packages/timer @@ -93,6 +96,29 @@ importers: tinyexec: specifier: ^0.3.1 version: 0.3.1 + devDependencies: + '@codspeed/tinybench-plugin': + specifier: ^3.1.1 + version: 3.1.1(tinybench@2.9.0) + tinybench: + specifier: ^2.9.0 + version: 2.9.0 + + benchmark/packages/adapter: + dependencies: + server-destroy: + specifier: ^1.0.1 + version: 1.0.1 + devDependencies: + '@types/server-destroy': + specifier: ^1.0.4 + version: 1.0.4 + astro: + specifier: workspace:* + version: link:../../../packages/astro + astro-scripts: + specifier: workspace:* + version: link:../../../scripts benchmark/packages/timer: dependencies: @@ -5935,6 +5961,14 @@ packages: bundledDependencies: - is-unicode-supported + '@codspeed/core@3.1.1': + resolution: {integrity: sha512-ONhERVDAtkm0nc+FYPivDozoMOlNUP2BWRBFDJYATGA18Iap5Kd2mZ1/Lwz54RB5+g+3YDOpsvotHa4hd3Q+7Q==} + + '@codspeed/tinybench-plugin@3.1.1': + resolution: {integrity: sha512-LVF4End0kDU9V7CzuwAcmngSPJNnpduPnr+csOKvcG++FsYwfUuBJ1rvLPtv6yTkvxpUmUEsj6VA7/AEIBGZVw==} + peerDependencies: + tinybench: ^2.3.0 + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -7399,6 +7433,9 @@ packages: peerDependencies: postcss: ^8.1.0 + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -8212,6 +8249,10 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} @@ -8226,6 +8267,15 @@ packages: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + foreground-child@3.3.0: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} @@ -8751,6 +8801,10 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash.chunk@4.2.0: resolution: {integrity: sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w==} @@ -9174,6 +9228,10 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + node-gyp-build@4.8.2: + resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} + hasBin: true + node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} @@ -9276,6 +9334,10 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@6.1.0: resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} engines: {node: '>=18'} @@ -9288,6 +9350,10 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} @@ -9352,6 +9418,10 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -9687,6 +9757,9 @@ packages: property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} @@ -11501,6 +11574,23 @@ snapshots: picocolors: 1.1.0 sisteransi: 1.0.5 + '@codspeed/core@3.1.1': + dependencies: + axios: 1.7.7 + find-up: 6.3.0 + form-data: 4.0.0 + node-gyp-build: 4.8.2 + transitivePeerDependencies: + - debug + + '@codspeed/tinybench-plugin@3.1.1(tinybench@2.9.0)': + dependencies: + '@codspeed/core': 3.1.1 + stack-trace: 1.0.0-pre2 + tinybench: 2.9.0 + transitivePeerDependencies: + - debug + '@colors/colors@1.5.0': optional: true @@ -13033,6 +13123,14 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axobject-query@4.1.0: {} babel-plugin-jsx-dom-expressions@0.38.5(@babel/core@7.26.0): @@ -13771,6 +13869,11 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + find-up@6.3.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + find-yarn-workspace-root2@1.2.16: dependencies: micromatch: 4.0.8 @@ -13785,6 +13888,8 @@ snapshots: flattie@1.1.1: {} + follow-redirects@1.15.9: {} + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.3 @@ -14418,6 +14523,10 @@ snapshots: dependencies: p-locate: 5.0.0 + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + lodash.chunk@4.2.0: {} lodash.clonedeep@4.5.0: {} @@ -15091,6 +15200,8 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 + node-gyp-build@4.8.2: {} + node-html-parser@6.1.13: dependencies: css-select: 5.1.0 @@ -15201,6 +15312,10 @@ snapshots: dependencies: yocto-queue: 0.1.0 + p-limit@4.0.0: + dependencies: + yocto-queue: 1.1.1 + p-limit@6.1.0: dependencies: yocto-queue: 1.1.1 @@ -15213,6 +15328,10 @@ snapshots: dependencies: p-limit: 3.1.0 + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + p-map@2.1.0: {} p-queue@8.0.1: @@ -15282,6 +15401,8 @@ snapshots: path-exists@4.0.0: {} + path-exists@5.0.0: {} + path-key@3.1.1: {} path-key@4.0.0: {} @@ -15631,6 +15752,8 @@ snapshots: property-information@6.5.0: {} + proxy-from-env@1.1.0: {} + pseudomap@1.0.2: {} psl@1.9.0: {} From 4c9a42c2da7ac10f7aa5a5813cdac31253afa339 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Wed, 6 Nov 2024 12:34:13 +0000 Subject: [PATCH 12/18] [ci] format --- benchmark/bench/memory.js | 4 ++-- benchmark/packages/timer/src/server.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/benchmark/bench/memory.js b/benchmark/bench/memory.js index 5c746870e79d..4f9153cc0c67 100644 --- a/benchmark/bench/memory.js +++ b/benchmark/bench/memory.js @@ -1,7 +1,7 @@ -import { exec } from 'tinyexec'; -import { markdownTable } from 'markdown-table'; import fs from 'node:fs/promises'; import { fileURLToPath } from 'node:url'; +import { markdownTable } from 'markdown-table'; +import { exec } from 'tinyexec'; import { astroBin } from './_util.js'; /** @typedef {Record} AstroTimerStat */ diff --git a/benchmark/packages/timer/src/server.ts b/benchmark/packages/timer/src/server.ts index edcfaa248f0e..9905a627b755 100644 --- a/benchmark/packages/timer/src/server.ts +++ b/benchmark/packages/timer/src/server.ts @@ -13,6 +13,6 @@ export function createExports(manifest: SSRManifest) { const end = performance.now(); res.write(end - start + ''); res.end(); - } + }, }; } From c4726d7ba8cc93157390ce64d5c8b718ed5cac29 Mon Sep 17 00:00:00 2001 From: Arpan Patel Date: Wed, 6 Nov 2024 08:22:38 -0500 Subject: [PATCH 13/18] fix: show file name with invalid frontmatter errors for MDX (#12355) Co-authored-by: Emanuele Stoppa Co-authored-by: Princesseuh <3019731+Princesseuh@users.noreply.github.com> --- .changeset/wise-bulldogs-jump.md | 5 ++ packages/astro/src/cli/index.ts | 4 +- packages/astro/src/cli/sync/index.ts | 7 +- packages/astro/src/core/errors/errors-data.ts | 2 +- packages/astro/src/core/messages.ts | 5 ++ packages/astro/src/core/sync/index.ts | 90 ++++++++----------- 6 files changed, 50 insertions(+), 63 deletions(-) create mode 100644 .changeset/wise-bulldogs-jump.md diff --git a/.changeset/wise-bulldogs-jump.md b/.changeset/wise-bulldogs-jump.md new file mode 100644 index 000000000000..58900bc58d0a --- /dev/null +++ b/.changeset/wise-bulldogs-jump.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Improves error reporting for invalid frontmatter in MDX files during the `astro build` command. The error message now includes the file path where the frontmatter parsing failed. diff --git a/packages/astro/src/cli/index.ts b/packages/astro/src/cli/index.ts index a963b84143dd..8511a830496a 100644 --- a/packages/astro/src/cli/index.ts +++ b/packages/astro/src/cli/index.ts @@ -133,8 +133,8 @@ async function runCommand(cmd: string, flags: yargs.Arguments) { } case 'sync': { const { sync } = await import('./sync/index.js'); - const exitCode = await sync({ flags }); - return process.exit(exitCode); + await sync({ flags }); + return; } case 'preferences': { const { preferences } = await import('./preferences/index.js'); diff --git a/packages/astro/src/cli/sync/index.ts b/packages/astro/src/cli/sync/index.ts index 7ffe662c5c10..7f488836d6cf 100644 --- a/packages/astro/src/cli/sync/index.ts +++ b/packages/astro/src/cli/sync/index.ts @@ -22,10 +22,5 @@ export async function sync({ flags }: SyncOptions) { return 0; } - try { - await _sync(flagsToAstroInlineConfig(flags), { telemetry: true }); - return 0; - } catch (_) { - return 1; - } + await _sync(flagsToAstroInlineConfig(flags), { telemetry: true }); } diff --git a/packages/astro/src/core/errors/errors-data.ts b/packages/astro/src/core/errors/errors-data.ts index ed805eaffb4f..e8492584a967 100644 --- a/packages/astro/src/core/errors/errors-data.ts +++ b/packages/astro/src/core/errors/errors-data.ts @@ -1388,7 +1388,7 @@ export const GenerateContentTypesError = { title: 'Failed to generate content types.', message: (errorMessage: string) => `\`astro sync\` command failed to generate content collection types: ${errorMessage}`, - hint: 'Check your `src/content/config.*` file for typos.', + hint: 'This error is often caused by a syntax error inside your content, or your content configuration file. Check your `src/content/config.*` file for typos.', } satisfies ErrorData; /** * @docs diff --git a/packages/astro/src/core/messages.ts b/packages/astro/src/core/messages.ts index 3081c0b6cf7b..57c44b06504a 100644 --- a/packages/astro/src/core/messages.ts +++ b/packages/astro/src/core/messages.ts @@ -298,6 +298,11 @@ export function formatErrorMessage(err: ErrorWithMetadata, showFullStacktrace: b output.push(` ${cyan(underline(docsLink))}`); } + if (showFullStacktrace && err.loc) { + output.push(` ${bold('Location:')}`); + output.push(` ${underline(`${err.loc.file}:${err.loc.line ?? 0}:${err.loc.column ?? 0}`)}`); + } + if (err.stack) { output.push(` ${bold('Stack trace:')}`); output.push(dim(formatErrorStackTrace(err, showFullStacktrace))); diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index 75acbe2c8400..a4ee18702c17 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -23,6 +23,7 @@ import { AstroError, AstroErrorData, AstroUserError, + type ErrorWithMetadata, createSafeError, isAstroError, } from '../errors/index.js'; @@ -62,17 +63,7 @@ export default async function sync( logger, }); - // Run `astro:config:done` - // Actions will throw if there is misconfiguration, so catch here. - try { - await runHookConfigDone({ settings, logger }); - } catch (err) { - if (err instanceof Error) { - const errorMessage = err.toString(); - logger.error('sync', errorMessage); - } - throw err; - } + await runHookConfigDone({ settings, logger }); return await syncInternal({ settings, logger, fs, force: inlineConfig.force }); } @@ -112,51 +103,41 @@ export async function syncInternal({ const timerStart = performance.now(); - try { - if (!skip?.content) { - await syncContentCollections(settings, { fs, logger }); - settings.timer.start('Sync content layer'); - let store: MutableDataStore | undefined; - try { - const dataStoreFile = getDataStoreFile(settings); - if (existsSync(dataStoreFile)) { - store = await MutableDataStore.fromFile(dataStoreFile); - } - } catch (err: any) { - logger.error('content', err.message); - } - if (!store) { - store = new MutableDataStore(); + if (!skip?.content) { + await syncContentCollections(settings, { fs, logger }); + settings.timer.start('Sync content layer'); + let store: MutableDataStore | undefined; + try { + const dataStoreFile = getDataStoreFile(settings); + if (existsSync(dataStoreFile)) { + store = await MutableDataStore.fromFile(dataStoreFile); } - const contentLayer = globalContentLayer.init({ - settings, - logger, - store, - }); - await contentLayer.sync(); - settings.timer.end('Sync content layer'); - } else if (fs.existsSync(fileURLToPath(getContentPaths(settings.config, fs).contentDir))) { - // Content is synced after writeFiles. That means references are not created - // To work around it, we create a stub so the reference is created and content - // sync will override the empty file - settings.injectedTypes.push({ - filename: CONTENT_TYPES_FILE, - content: '', - }); + } catch (err: any) { + logger.error('content', err.message); } - syncAstroEnv(settings, fs); - - await writeFiles(settings, fs, logger); - logger.info('types', `Generated ${dim(getTimeStat(timerStart, performance.now()))}`); - } catch (err) { - const error = createSafeError(err); - logger.error( - 'types', - formatErrorMessage(collectErrorMetadata(error), logger.level() === 'debug') + '\n', - ); - // Will return exit code 1 in CLI - throw error; + if (!store) { + store = new MutableDataStore(); + } + const contentLayer = globalContentLayer.init({ + settings, + logger, + store, + }); + await contentLayer.sync(); + settings.timer.end('Sync content layer'); + } else if (fs.existsSync(fileURLToPath(getContentPaths(settings.config, fs).contentDir))) { + // Content is synced after writeFiles. That means references are not created + // To work around it, we create a stub so the reference is created and content + // sync will override the empty file + settings.injectedTypes.push({ + filename: CONTENT_TYPES_FILE, + content: '', + }); } + syncAstroEnv(settings, fs); + + await writeFiles(settings, fs, logger); + logger.info('types', `Generated ${dim(getTimeStat(timerStart, performance.now()))}`); } /** @@ -223,7 +204,7 @@ async function syncContentCollections( } } } catch (e) { - const safeError = createSafeError(e); + const safeError = createSafeError(e) as ErrorWithMetadata; if (isAstroError(e)) { throw e; } @@ -233,6 +214,7 @@ async function syncContentCollections( ...AstroErrorData.GenerateContentTypesError, hint, message: AstroErrorData.GenerateContentTypesError.message(safeError.message), + location: safeError.loc, }, { cause: e }, ); From bf2723e83140099914b29c6d51eb147a065be460 Mon Sep 17 00:00:00 2001 From: Sujal Gurung <86787475+dinesh-58@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:17:05 +0545 Subject: [PATCH 14/18] add `checked` to htmlBooleanAttributes (#12311) Co-authored-by: Emanuele Stoppa --- .changeset/brown-rocks-ring.md | 5 +++++ packages/astro/src/runtime/server/render/util.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/brown-rocks-ring.md diff --git a/.changeset/brown-rocks-ring.md b/.changeset/brown-rocks-ring.md new file mode 100644 index 000000000000..a32bd412d8b8 --- /dev/null +++ b/.changeset/brown-rocks-ring.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Adds `checked` to the list of boolean attributes. \ No newline at end of file diff --git a/packages/astro/src/runtime/server/render/util.ts b/packages/astro/src/runtime/server/render/util.ts index 5dd428b9b11d..ef8a64fa73c6 100644 --- a/packages/astro/src/runtime/server/render/util.ts +++ b/packages/astro/src/runtime/server/render/util.ts @@ -7,7 +7,7 @@ import { HTMLString, markHTMLString } from '../escape.js'; export const voidElementNames = /^(area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/i; const htmlBooleanAttributes = - /^(?:allowfullscreen|async|autofocus|autoplay|controls|default|defer|disabled|disablepictureinpicture|disableremoteplayback|formnovalidate|hidden|loop|nomodule|novalidate|open|playsinline|readonly|required|reversed|scoped|seamless|selected|itemscope)$/i; + /^(?:allowfullscreen|async|autofocus|autoplay|checked|controls|default|defer|disabled|disablepictureinpicture|disableremoteplayback|formnovalidate|hidden|loop|nomodule|novalidate|open|playsinline|readonly|required|reversed|scoped|seamless|selected|itemscope)$/i; const htmlEnumAttributes = /^(?:contenteditable|draggable|spellcheck|value)$/i; // Note: SVG is case-sensitive! const svgEnumAttributes = /^(?:autoReverse|externalResourcesRequired|focusable|preserveAlpha)$/i; From b7e46910fb90b78c0754c65d572375cd27646c29 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 21:47:42 +0800 Subject: [PATCH 15/18] fix(deps): update all non-major dependencies (#12366) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: bluwy --- .github/workflows/continuous_benchmark.yml | 2 +- biome.jsonc | 1 + examples/starlog/package.json | 2 +- package.json | 4 +- .../e2e/fixtures/error-sass/package.json | 2 +- .../astro/e2e/fixtures/errors/package.json | 2 +- packages/astro/e2e/fixtures/hmr/package.json | 2 +- packages/astro/package.json | 8 +- packages/astro/src/assets/services/squoosh.ts | 1 + .../services/vendor/squoosh/image-pool.ts | 1 + .../assets/services/vendor/squoosh/image.ts | 1 + packages/astro/src/cli/add/index.ts | 8 +- packages/astro/src/cli/docs/open.ts | 1 + packages/astro/src/core/app/index.ts | 12 +- packages/astro/src/core/build/generate.ts | 1 + packages/astro/src/core/build/static-build.ts | 31 +- packages/astro/src/preferences/index.ts | 2 + .../client/dev-toolbar/apps/settings.ts | 2 + .../src/runtime/server/render/component.ts | 1 + packages/astro/src/vite-plugin-astro/index.ts | 3 + .../astro/test/fixtures/postcss/package.json | 2 +- .../fixtures/solid-component/package.json | 2 +- packages/create-astro/src/data/seasonal.ts | 1 + packages/db/package.json | 2 +- packages/integrations/lit/package.json | 2 +- packages/integrations/vue/package.json | 2 +- packages/studio/package.json | 2 +- packages/telemetry/src/config.ts | 1 + pnpm-lock.yaml | 984 +++++++++--------- 29 files changed, 552 insertions(+), 533 deletions(-) diff --git a/.github/workflows/continuous_benchmark.yml b/.github/workflows/continuous_benchmark.yml index 42aaf7fc691c..10abc7bcd2e9 100644 --- a/.github/workflows/continuous_benchmark.yml +++ b/.github/workflows/continuous_benchmark.yml @@ -43,7 +43,7 @@ jobs: run: pnpm run build - name: Run the benchmarks - uses: CodSpeedHQ/action@b587655f756aab640e742fec141261bc6f0a569d # v3.0.1 + uses: CodSpeedHQ/action@fa1dcde8d58f2ab0b407a6a24d6cc5a8c1444a8c # v3.1.0 timeout-minutes: 30 with: run: pnpm benchmark codspeed diff --git a/biome.jsonc b/biome.jsonc index 17307455395b..edd0ea87173d 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -11,6 +11,7 @@ "**/.vercel/**", "benchmark/projects/", "benchmark/results/", + "benchmark/bench/_template.js", ], "include": ["test/**", "e2e/**", "packages/**", "/scripts/**", "benchmark/bench"], }, diff --git a/examples/starlog/package.json b/examples/starlog/package.json index 95fa682e62bd..f5b84e66b758 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "astro": "^4.16.9", - "sass": "^1.80.4", + "sass": "^1.80.6", "sharp": "^0.33.3" } } diff --git a/package.json b/package.json index 23197d75515d..861fcb21c148 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "@changesets/cli": "^2.27.9", "@types/node": "^18.17.8", "esbuild": "^0.21.5", - "eslint": "^9.13.0", + "eslint": "^9.14.0", "eslint-plugin-regexp": "^2.6.0", "globby": "^14.0.2", "only-allow": "^1.2.1", @@ -67,7 +67,7 @@ "prettier-plugin-astro": "^0.14.1", "turbo": "^2.2.3", "typescript": "~5.6.3", - "typescript-eslint": "^8.11.0" + "typescript-eslint": "^8.13.0" }, "pnpm": { "peerDependencyRules": { diff --git a/packages/astro/e2e/fixtures/error-sass/package.json b/packages/astro/e2e/fixtures/error-sass/package.json index c1a805b643ee..04457de959c4 100644 --- a/packages/astro/e2e/fixtures/error-sass/package.json +++ b/packages/astro/e2e/fixtures/error-sass/package.json @@ -4,6 +4,6 @@ "private": true, "dependencies": { "astro": "workspace:*", - "sass": "^1.80.4" + "sass": "^1.80.6" } } diff --git a/packages/astro/e2e/fixtures/errors/package.json b/packages/astro/e2e/fixtures/errors/package.json index ef5b0a02eca5..3730d61f1bd0 100644 --- a/packages/astro/e2e/fixtures/errors/package.json +++ b/packages/astro/e2e/fixtures/errors/package.json @@ -12,7 +12,7 @@ "preact": "^10.24.3", "react": "^18.3.1", "react-dom": "^18.3.1", - "sass": "^1.80.4", + "sass": "^1.80.6", "solid-js": "^1.9.3", "svelte": "^4.2.19", "vue": "^3.5.12" diff --git a/packages/astro/e2e/fixtures/hmr/package.json b/packages/astro/e2e/fixtures/hmr/package.json index e569c01b9659..b8178a33f685 100644 --- a/packages/astro/e2e/fixtures/hmr/package.json +++ b/packages/astro/e2e/fixtures/hmr/package.json @@ -4,6 +4,6 @@ "private": true, "devDependencies": { "astro": "workspace:*", - "sass": "^1.80.4" + "sass": "^1.80.6" } } diff --git a/packages/astro/package.json b/packages/astro/package.json index e33465ecc53a..b756f047abf3 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -165,7 +165,7 @@ "micromatch": "^4.0.8", "mrmime": "^2.0.0", "neotraverse": "^0.6.18", - "ora": "^8.1.0", + "ora": "^8.1.1", "p-limit": "^6.1.0", "p-queue": "^8.0.1", "preferred-pm": "^4.0.0", @@ -211,7 +211,7 @@ "eol": "^0.10.0", "execa": "^8.0.1", "expect-type": "^1.1.0", - "fs-fixture": "^2.5.0", + "fs-fixture": "^2.6.0", "mdast-util-mdx": "^3.0.0", "mdast-util-mdx-jsx": "^3.1.3", "node-mocks-http": "^1.16.1", @@ -220,8 +220,8 @@ "rehype-slug": "^6.0.0", "rehype-toc": "^3.0.2", "remark-code-titles": "^0.1.2", - "rollup": "^4.24.2", - "sass": "^1.80.4", + "rollup": "^4.24.4", + "sass": "^1.80.6", "undici": "^6.20.1", "unified": "^11.0.5" }, diff --git a/packages/astro/src/assets/services/squoosh.ts b/packages/astro/src/assets/services/squoosh.ts index 91c7bb687902..0fa3567e020c 100644 --- a/packages/astro/src/assets/services/squoosh.ts +++ b/packages/astro/src/assets/services/squoosh.ts @@ -53,6 +53,7 @@ async function getRotationForEXIF( case 7: case 8: return { type: 'rotate', numRotations: 3 }; + case undefined: default: return undefined; } diff --git a/packages/astro/src/assets/services/vendor/squoosh/image-pool.ts b/packages/astro/src/assets/services/vendor/squoosh/image-pool.ts index cc2df9c96ffe..7986f15e610d 100644 --- a/packages/astro/src/assets/services/vendor/squoosh/image-pool.ts +++ b/packages/astro/src/assets/services/vendor/squoosh/image-pool.ts @@ -140,6 +140,7 @@ export async function processBuffer( imageData, quality, })) as Uint8Array; + case 'svg': default: throw Error(`Unsupported encoding format`); } diff --git a/packages/astro/src/assets/services/vendor/squoosh/image.ts b/packages/astro/src/assets/services/vendor/squoosh/image.ts index 694f994d24d9..4d7dc31a1485 100644 --- a/packages/astro/src/assets/services/vendor/squoosh/image.ts +++ b/packages/astro/src/assets/services/vendor/squoosh/image.ts @@ -37,6 +37,7 @@ export async function processBuffer( return await impl.encodePng(imageData); case 'webp': return await impl.encodeWebp(imageData, { quality }); + case 'svg': default: throw Error(`Unsupported encoding format`) } diff --git a/packages/astro/src/cli/add/index.ts b/packages/astro/src/cli/add/index.ts index 2b4faa2664aa..93a767fa9ee6 100644 --- a/packages/astro/src/cli/add/index.ts +++ b/packages/astro/src/cli/add/index.ts @@ -344,7 +344,11 @@ export async function add(names: string[], { flags }: AddOptions) { logger.info('SKIP_FORMAT', msg.success(`Configuration up-to-date.`)); break; } - default: { + // NOTE: failure shouldn't happen in practice because `updateAstroConfig` doesn't return that. + // Pipe this to the same handling as `UpdateResult.updated` for now. + case UpdateResult.failure: + case UpdateResult.updated: + case undefined: { const list = integrations.map((integration) => ` - ${integration.packageName}`).join('\n'); logger.info( 'SKIP_FORMAT', @@ -375,7 +379,7 @@ export async function add(names: string[], { flags }: AddOptions) { `Unknown error parsing tsconfig.json or jsconfig.json. Could not update TypeScript settings.`, ); } - default: + case UpdateResult.updated: logger.info('SKIP_FORMAT', msg.success(`Successfully updated TypeScript settings`)); } } diff --git a/packages/astro/src/cli/docs/open.ts b/packages/astro/src/cli/docs/open.ts index 5b59e6c4711b..b3702844955e 100644 --- a/packages/astro/src/cli/docs/open.ts +++ b/packages/astro/src/cli/docs/open.ts @@ -9,6 +9,7 @@ const getPlatformSpecificCommand = (): [string] | [string, string[]] => { const isGitPod = Boolean(process.env.GITPOD_REPO_ROOT); const platform = isGitPod ? 'gitpod' : process.platform; + // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check switch (platform) { case 'android': case 'linux': diff --git a/packages/astro/src/core/app/index.ts b/packages/astro/src/core/app/index.ts index 69dd18a06ee1..afbb0eb00a6a 100644 --- a/packages/astro/src/core/app/index.ts +++ b/packages/astro/src/core/app/index.ts @@ -121,14 +121,10 @@ export class App { throw new Error(`Unable to resolve [${specifier}]`); } const bundlePath = this.#manifest.entryModules[specifier]; - switch (true) { - case bundlePath.startsWith('data:'): - case bundlePath.length === 0: { - return bundlePath; - } - default: { - return createAssetLink(bundlePath, this.#manifest.base, this.#manifest.assetsPrefix); - } + if (bundlePath.startsWith('data:') || bundlePath.length === 0) { + return bundlePath; + } else { + return createAssetLink(bundlePath, this.#manifest.base, this.#manifest.assetsPrefix); } }, serverLike: true, diff --git a/packages/astro/src/core/build/generate.ts b/packages/astro/src/core/build/generate.ts index 375dfe4c487f..5ba5df366d6f 100644 --- a/packages/astro/src/core/build/generate.ts +++ b/packages/astro/src/core/build/generate.ts @@ -394,6 +394,7 @@ function getUrlForPath( ending = trailingSlash === 'never' ? '' : '/'; break; } + case 'file': default: { ending = '.html'; break; diff --git a/packages/astro/src/core/build/static-build.ts b/packages/astro/src/core/build/static-build.ts index 7e2272dde60e..7bb73d5e5de9 100644 --- a/packages/astro/src/core/build/static-build.ts +++ b/packages/astro/src/core/build/static-build.ts @@ -144,25 +144,18 @@ export async function staticBuild( contentFileNames?: string[], ) { const { settings } = opts; - switch (true) { - case settings.config.output === 'static': { - settings.timer.start('Static generate'); - await generatePages(opts, internals); - await cleanServerOutput(opts, ssrOutputChunkNames, contentFileNames, internals); - settings.timer.end('Static generate'); - return; - } - case isServerLikeOutput(settings.config): { - settings.timer.start('Server generate'); - await generatePages(opts, internals); - await cleanStaticOutput(opts, internals); - opts.logger.info(null, `\n${bgMagenta(black(' finalizing server assets '))}\n`); - await ssrMoveAssets(opts); - settings.timer.end('Server generate'); - return; - } - default: - return; + if (settings.config.output === 'static') { + settings.timer.start('Static generate'); + await generatePages(opts, internals); + await cleanServerOutput(opts, ssrOutputChunkNames, contentFileNames, internals); + settings.timer.end('Static generate'); + } else if (isServerLikeOutput(settings.config)) { + settings.timer.start('Server generate'); + await generatePages(opts, internals); + await cleanStaticOutput(opts, internals); + opts.logger.info(null, `\n${bgMagenta(black(' finalizing server assets '))}\n`); + await ssrMoveAssets(opts); + settings.timer.end('Server generate'); } } diff --git a/packages/astro/src/preferences/index.ts b/packages/astro/src/preferences/index.ts index 2b92c5fb6cb5..803c76d195fb 100644 --- a/packages/astro/src/preferences/index.ts +++ b/packages/astro/src/preferences/index.ts @@ -66,6 +66,7 @@ export function isValidKey(key: string): key is PreferenceKey { } export function coerce(key: string, value: unknown) { const type = typeof dget(DEFAULT_PREFERENCES, key); + // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check switch (type) { case 'string': return value; @@ -143,6 +144,7 @@ function getGlobalPreferenceDir() { const { XDG_CONFIG_HOME = path.join(homedir, '.config') } = process.env; return path.join(XDG_CONFIG_HOME, name); }; + // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check switch (process.platform) { case 'darwin': return macos(); diff --git a/packages/astro/src/runtime/client/dev-toolbar/apps/settings.ts b/packages/astro/src/runtime/client/dev-toolbar/apps/settings.ts index 7ee42da84996..5bf314209c34 100644 --- a/packages/astro/src/runtime/client/dev-toolbar/apps/settings.ts +++ b/packages/astro/src/runtime/client/dev-toolbar/apps/settings.ts @@ -204,6 +204,8 @@ export default { label.append(astroSelect); break; } + case 'number': + case 'text': default: break; } diff --git a/packages/astro/src/runtime/server/render/component.ts b/packages/astro/src/runtime/server/render/component.ts index c667cd2d3cbc..63d7cbf3345a 100644 --- a/packages/astro/src/runtime/server/render/component.ts +++ b/packages/astro/src/runtime/server/render/component.ts @@ -44,6 +44,7 @@ function guessRenderers(componentUrl?: string): string[] { case 'jsx': case 'tsx': return ['@astrojs/react', '@astrojs/preact', '@astrojs/solid-js', '@astrojs/vue (jsx)']; + case undefined: default: return [ '@astrojs/react', diff --git a/packages/astro/src/vite-plugin-astro/index.ts b/packages/astro/src/vite-plugin-astro/index.ts index d5968a905953..1686bfe6eef4 100644 --- a/packages/astro/src/vite-plugin-astro/index.ts +++ b/packages/astro/src/vite-plugin-astro/index.ts @@ -195,6 +195,9 @@ export default function astro({ settings, logger }: AstroPluginOptions): vite.Pl return result; } + case 'custom': + case 'template': + case undefined: default: return null; } diff --git a/packages/astro/test/fixtures/postcss/package.json b/packages/astro/test/fixtures/postcss/package.json index e62d2267f682..c83201040674 100644 --- a/packages/astro/test/fixtures/postcss/package.json +++ b/packages/astro/test/fixtures/postcss/package.json @@ -14,6 +14,6 @@ "vue": "^3.5.12" }, "devDependencies": { - "postcss-preset-env": "^10.0.8" + "postcss-preset-env": "^10.0.9" } } diff --git a/packages/astro/test/fixtures/solid-component/package.json b/packages/astro/test/fixtures/solid-component/package.json index 480cffe6c553..85b84749d9ff 100644 --- a/packages/astro/test/fixtures/solid-component/package.json +++ b/packages/astro/test/fixtures/solid-component/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@astrojs/solid-js": "workspace:*", - "@solidjs/router": "^0.14.10", + "@solidjs/router": "^0.15.1", "@test/solid-jsx-component": "file:./deps/solid-jsx-component", "astro": "workspace:*", "solid-js": "^1.9.3" diff --git a/packages/create-astro/src/data/seasonal.ts b/packages/create-astro/src/data/seasonal.ts index ac3ce5d3befe..c333affa0267 100644 --- a/packages/create-astro/src/data/seasonal.ts +++ b/packages/create-astro/src/data/seasonal.ts @@ -57,6 +57,7 @@ export default function getSeasonalHouston({ fancy }: { fancy?: boolean }): Seas `Your creativity is the gift that keeps on giving!`, ], }; + case undefined: default: return { hats: fancy ? ['🎩', '🎩', '🎩', '🎩', '🎓', '👑', '🧢', '🍦'] : undefined, diff --git a/packages/db/package.json b/packages/db/package.json index dc3a0236c631..d40b36842f6b 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -78,7 +78,7 @@ "kleur": "^4.1.5", "nanoid": "^5.0.8", "open": "^10.1.0", - "ora": "^8.1.0", + "ora": "^8.1.1", "prompts": "^2.4.2", "yargs-parser": "^21.1.1", "zod": "^3.23.8" diff --git a/packages/integrations/lit/package.json b/packages/integrations/lit/package.json index 95af7feace22..27650a1f7306 100644 --- a/packages/integrations/lit/package.json +++ b/packages/integrations/lit/package.json @@ -61,7 +61,7 @@ "astro-scripts": "workspace:*", "cheerio": "1.0.0", "lit": "^3.2.1", - "sass": "^1.80.4" + "sass": "^1.80.6" }, "peerDependencies": { "@webcomponents/template-shadowroot": "^0.2.1", diff --git a/packages/integrations/vue/package.json b/packages/integrations/vue/package.json index 6867350d93bd..1b191ffcfe07 100644 --- a/packages/integrations/vue/package.json +++ b/packages/integrations/vue/package.json @@ -48,7 +48,7 @@ "@vitejs/plugin-vue": "^5.1.4", "@vitejs/plugin-vue-jsx": "^4.0.1", "@vue/compiler-sfc": "^3.5.12", - "vite-plugin-vue-devtools": "^7.5.4" + "vite-plugin-vue-devtools": "^7.6.3" }, "devDependencies": { "astro": "workspace:*", diff --git a/packages/studio/package.json b/packages/studio/package.json index 0307a6ee7195..4c85f3484f5e 100644 --- a/packages/studio/package.json +++ b/packages/studio/package.json @@ -36,7 +36,7 @@ "dependencies": { "ci-info": "^4.0.0", "kleur": "^4.1.5", - "ora": "^8.1.0" + "ora": "^8.1.1" }, "devDependencies": { "astro": "workspace:*", diff --git a/packages/telemetry/src/config.ts b/packages/telemetry/src/config.ts index dba5d5fc465a..5f25e2a9dec5 100644 --- a/packages/telemetry/src/config.ts +++ b/packages/telemetry/src/config.ts @@ -21,6 +21,7 @@ function getConfigDir(name: string) { const { XDG_CONFIG_HOME = path.join(homedir, '.config') } = process.env; return path.join(XDG_CONFIG_HOME, name); }; + // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check switch (process.platform) { case 'darwin': return macos(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7db4c5b903b..a8e2e24e4e8e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,11 +31,11 @@ importers: specifier: ^0.21.5 version: 0.21.5 eslint: - specifier: ^9.13.0 - version: 9.13.0(jiti@1.21.6) + specifier: ^9.14.0 + version: 9.14.0(jiti@1.21.6) eslint-plugin-regexp: specifier: ^2.6.0 - version: 2.6.0(eslint@9.13.0(jiti@1.21.6)) + version: 2.6.0(eslint@9.14.0(jiti@1.21.6)) globby: specifier: ^14.0.2 version: 14.0.2 @@ -55,8 +55,8 @@ importers: specifier: ~5.6.3 version: 5.6.3 typescript-eslint: - specifier: ^8.11.0 - version: 8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + specifier: ^8.13.0 + version: 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) benchmark: dependencies: @@ -179,7 +179,7 @@ importers: version: 18.3.1(react@18.3.1) vitest: specifier: ^2.1.4 - version: 2.1.4(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.80.4) + version: 2.1.4(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.80.6) devDependencies: '@types/react': specifier: ^18.3.12 @@ -383,8 +383,8 @@ importers: specifier: ^4.16.9 version: link:../../packages/astro sass: - specifier: ^1.80.4 - version: 1.80.4 + specifier: ^1.80.6 + version: 1.80.6 sharp: specifier: ^0.33.3 version: 0.33.5 @@ -471,7 +471,7 @@ importers: version: link:../../packages/astro vitest: specifier: ^2.1.4 - version: 2.1.4(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.80.4) + version: 2.1.4(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.80.6) packages/astro: dependencies: @@ -501,7 +501,7 @@ importers: version: 1.1.0 '@rollup/pluginutils': specifier: ^5.1.3 - version: 5.1.3(rollup@4.24.2) + version: 5.1.3(rollup@4.24.4) '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 @@ -602,8 +602,8 @@ importers: specifier: ^0.6.18 version: 0.6.18 ora: - specifier: ^8.1.0 - version: 8.1.0 + specifier: ^8.1.1 + version: 8.1.1 p-limit: specifier: ^6.1.0 version: 6.1.0 @@ -639,10 +639,10 @@ importers: version: 6.0.3 vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) vitefu: specifier: ^1.0.3 - version: 1.0.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + version: 1.0.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) which-pm: specifier: ^3.0.0 version: 3.0.0 @@ -730,8 +730,8 @@ importers: specifier: ^1.1.0 version: 1.1.0 fs-fixture: - specifier: ^2.5.0 - version: 2.5.0 + specifier: ^2.6.0 + version: 2.6.0 mdast-util-mdx: specifier: ^3.0.0 version: 3.0.0 @@ -757,11 +757,11 @@ importers: specifier: ^0.1.2 version: 0.1.2 rollup: - specifier: ^4.24.2 - version: 4.24.2 + specifier: ^4.24.4 + version: 4.24.4 sass: - specifier: ^1.80.4 - version: 1.80.4 + specifier: ^1.80.6 + version: 1.80.6 undici: specifier: ^6.20.1 version: 6.20.1 @@ -1019,8 +1019,8 @@ importers: specifier: workspace:* version: link:../../.. sass: - specifier: ^1.80.4 - version: 1.80.4 + specifier: ^1.80.6 + version: 1.80.6 packages/astro/e2e/fixtures/errors: dependencies: @@ -1052,8 +1052,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) sass: - specifier: ^1.80.4 - version: 1.80.4 + specifier: ^1.80.6 + version: 1.80.6 solid-js: specifier: ^1.9.3 version: 1.9.3 @@ -1070,8 +1070,8 @@ importers: specifier: workspace:* version: link:../../.. sass: - specifier: ^1.80.4 - version: 1.80.4 + specifier: ^1.80.6 + version: 1.80.6 packages/astro/e2e/fixtures/hydration-race: dependencies: @@ -3452,8 +3452,8 @@ importers: version: 3.5.12(typescript@5.6.3) devDependencies: postcss-preset-env: - specifier: ^10.0.8 - version: 10.0.8(postcss@8.4.47) + specifier: ^10.0.9 + version: 10.0.9(postcss@8.4.47) packages/astro/test/fixtures/preact-compat-component: dependencies: @@ -3744,8 +3744,8 @@ importers: specifier: workspace:* version: link:../../../../integrations/solid '@solidjs/router': - specifier: ^0.14.10 - version: 0.14.10(solid-js@1.9.3) + specifier: ^0.15.1 + version: 0.15.1(solid-js@1.9.3) '@test/solid-jsx-component': specifier: file:./deps/solid-jsx-component version: link:deps/solid-jsx-component @@ -4252,8 +4252,8 @@ importers: specifier: ^10.1.0 version: 10.1.0 ora: - specifier: ^8.1.0 - version: 8.1.0 + specifier: ^8.1.1 + version: 8.1.1 prompts: specifier: ^2.4.2 version: 2.4.2 @@ -4287,7 +4287,7 @@ importers: version: 5.6.3 vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) packages/db/test/fixtures/basics: dependencies: @@ -4443,7 +4443,7 @@ importers: version: link:../../../scripts vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) packages/integrations/alpinejs/test/fixtures/basics: dependencies: @@ -4520,8 +4520,8 @@ importers: specifier: ^3.2.1 version: 3.2.1 sass: - specifier: ^1.80.4 - version: 1.80.4 + specifier: ^1.80.6 + version: 1.80.6 packages/integrations/markdoc: dependencies: @@ -4567,7 +4567,7 @@ importers: version: 0.18.5 vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) packages/integrations/markdoc/test/fixtures/content-collections: dependencies: @@ -4820,7 +4820,7 @@ importers: version: 11.0.5 vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) packages/integrations/mdx/test/fixtures/css-head-mdx: dependencies: @@ -5008,7 +5008,7 @@ importers: version: 7.25.9(@babel/core@7.26.0) '@preact/preset-vite': specifier: 2.8.2 - version: 2.8.2(@babel/core@7.26.0)(preact@10.24.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + version: 2.8.2(@babel/core@7.26.0)(preact@10.24.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) '@preact/signals': specifier: ^1.3.0 version: 1.3.0(preact@10.24.3) @@ -5033,7 +5033,7 @@ importers: dependencies: '@vitejs/plugin-react': specifier: ^4.3.3 - version: 4.3.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + version: 4.3.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) ultrahtml: specifier: ^1.5.3 version: 1.5.3 @@ -5061,7 +5061,7 @@ importers: version: 18.3.1(react@18.3.1) vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) packages/integrations/react/test/fixtures/react-component: dependencies: @@ -5149,7 +5149,7 @@ importers: dependencies: vite-plugin-solid: specifier: ^2.10.2 - version: 2.10.2(solid-js@1.9.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + version: 2.10.2(solid-js@1.9.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) devDependencies: astro: specifier: workspace:* @@ -5162,13 +5162,13 @@ importers: version: 1.9.3 vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) packages/integrations/svelte: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.1.2 - version: 3.1.2(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + version: 3.1.2(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) svelte2tsx: specifier: ^0.7.22 version: 0.7.22(svelte@4.2.19)(typescript@5.6.3) @@ -5184,7 +5184,7 @@ importers: version: 4.2.19 vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) packages/integrations/tailwind: dependencies: @@ -5209,7 +5209,7 @@ importers: version: 3.4.14 vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) packages/integrations/tailwind/test/fixtures/basic: dependencies: @@ -5226,16 +5226,16 @@ importers: dependencies: '@vitejs/plugin-vue': specifier: ^5.1.4 - version: 5.1.4(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))(vue@3.5.12(typescript@5.6.3)) + version: 5.1.4(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))(vue@3.5.12(typescript@5.6.3)) '@vitejs/plugin-vue-jsx': specifier: ^4.0.1 - version: 4.0.1(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))(vue@3.5.12(typescript@5.6.3)) + version: 4.0.1(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))(vue@3.5.12(typescript@5.6.3)) '@vue/compiler-sfc': specifier: ^3.5.12 version: 3.5.12 vite-plugin-vue-devtools: - specifier: ^7.5.4 - version: 7.5.4(rollup@4.24.2)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))(vue@3.5.12(typescript@5.6.3)) + specifier: ^7.6.3 + version: 7.6.3(rollup@4.24.4)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))(vue@3.5.12(typescript@5.6.3)) devDependencies: astro: specifier: workspace:* @@ -5251,7 +5251,7 @@ importers: version: 0.18.5 vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) vue: specifier: ^3.5.12 version: 3.5.12(typescript@5.6.3) @@ -5465,8 +5465,8 @@ importers: specifier: ^4.1.5 version: 4.1.5 ora: - specifier: ^8.1.0 - version: 8.1.0 + specifier: ^8.1.1 + version: 8.1.1 devDependencies: astro: specifier: workspace:* @@ -5479,7 +5479,7 @@ importers: version: 5.6.3 vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + version: 5.4.10(@types/node@18.19.50)(sass@1.80.6) packages/telemetry: dependencies: @@ -5973,47 +5973,47 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@csstools/cascade-layer-name-parser@2.0.3': - resolution: {integrity: sha512-KUcKk2oe7666aaeY+yxhy5TB0AN5x2Pi/ZJ23fbO8A0TEcLpA+VhVIw9s+6hTsAQHr8Fqc8p4RClsxxsmuIn1A==} + '@csstools/cascade-layer-name-parser@2.0.4': + resolution: {integrity: sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.3 - '@csstools/css-tokenizer': ^3.0.2 + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 '@csstools/color-helpers@5.0.1': resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==} engines: {node: '>=18'} - '@csstools/css-calc@2.0.3': - resolution: {integrity: sha512-UAhqOt43s8e4MfLAnIS1OmB/lDN32t03YObodmFyy60+1i6ZsT2rlwBEdajH6zDFS/TGogsvgMamV5GzZt2muA==} + '@csstools/css-calc@2.0.4': + resolution: {integrity: sha512-8/iCd8lH10gKNsq5detnbGWiFd6PXK2wB8wjE6fHNNhtqvshyMrIJgffwRcw6yl/gzGTH+N1i+KRhjqHxqYTmg==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.3 - '@csstools/css-tokenizer': ^3.0.2 + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 - '@csstools/css-color-parser@3.0.4': - resolution: {integrity: sha512-kXviLfsxXmx2YcUPd478vuJd/s21EFTmxcgjC3danRhLa2zqfqZMTRonwRRSckezmgn7nlOCXpk3tZAKbFeihQ==} + '@csstools/css-color-parser@3.0.5': + resolution: {integrity: sha512-4Wo8raj9YF3PnZ5iGrAl+BSsk2MYBOEUS/X4k1HL9mInhyCVftEG02MywdvelXlwZGUF2XTQ0qj9Jd398mhqrw==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.3 - '@csstools/css-tokenizer': ^3.0.2 + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 - '@csstools/css-parser-algorithms@3.0.3': - resolution: {integrity: sha512-15WQTALDyxAwSgAvLt7BksAssiSrNNhTv4zM7qX9U6R7FtpNskVVakzWQlYODlwPwXhGpKPmB10LM943pxMe7w==} + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.2 + '@csstools/css-tokenizer': ^3.0.3 - '@csstools/css-tokenizer@3.0.2': - resolution: {integrity: sha512-IuTRcD53WHsXPCZ6W7ubfGqReTJ9Ra0yRRFmXYP/Re8hFYYfoIYIK4080X5luslVLWimhIeFq0hj09urVMQzTw==} + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} engines: {node: '>=18'} - '@csstools/media-query-list-parser@4.0.1': - resolution: {integrity: sha512-dMr9PcN2B0TzxBFk6r+08Ln39aCti7SJeXB671JcXB1ZTPHqs4hpheRpL2vPPGRyXiQwW/UexvOej7Nw0Janxg==} + '@csstools/media-query-list-parser@4.0.2': + resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.3 - '@csstools/css-tokenizer': ^3.0.2 + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 '@csstools/postcss-cascade-layers@5.0.1': resolution: {integrity: sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==} @@ -6021,26 +6021,26 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-function@4.0.4': - resolution: {integrity: sha512-lL+ITQgwmAZd0/yBWkNIKzud2jQXeetFH9PtmQ/tWcD+FfQUjCGWZ8u6y6Pta64PbGPm1qn7+WgSNop+TC6pMQ==} + '@csstools/postcss-color-function@4.0.5': + resolution: {integrity: sha512-6dHr2NDsBMiZCPkGDi2qMfIbzV2kWV8Dh7SVb1FZGnN/r2TI4TSAkVF8rCG5L70yQZHMcQGB84yp8Zm+RGhoHA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-mix-function@3.0.4': - resolution: {integrity: sha512-Jp6hI6T7Iq0+7VzEn5CbUymvo8W3x8xAJLVNRIQ/nn8iXsSprUtDo6DznDa7Uajz9qq70AwNK4Js1gmnZGKs3Q==} + '@csstools/postcss-color-mix-function@3.0.5': + resolution: {integrity: sha512-jgq0oGbit7TxWYP8y2hWWfV64xzcAgJk54PBYZ2fDrRgEDy1l5YMCrFawnn+5JETh/E1jjXPDFhFEYhwr3vA3g==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-content-alt-text@2.0.3': - resolution: {integrity: sha512-7fY4hfR77UezWoEu2NBMc550FL2NKr+FbcMdZLDIF5qkbn9rwW3l0+RXI7g6GmUPXeEwtVApp39xa55Cx1WKgw==} + '@csstools/postcss-content-alt-text@2.0.4': + resolution: {integrity: sha512-YItlZUOuZJCBlRaCf8Aucc1lgN41qYGALMly0qQllrxYJhiyzlI6RxOTMUvtWk+KhS8GphMDsDhKQ7KTPfEMSw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-exponential-functions@2.0.3': - resolution: {integrity: sha512-7d626jcY3Za5uXoG3FQ4laZ9zjIpp2fzpqfAQO902n2p9nguaoCgfcM6cu9Ot+av2OEhf6YeaG69L0rhv2GfNg==} + '@csstools/postcss-exponential-functions@2.0.4': + resolution: {integrity: sha512-xmzFCGTkkLDs7q9vVaRGlnu8s51lRRJzHsaJ/nXmkQuyg0q7gh7rTbJ0bY5sSVet+KB7MTIxRXRUCl2tm7RODA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -6051,20 +6051,20 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-gamut-mapping@2.0.4': - resolution: {integrity: sha512-3VidlUzT5VNKhxLSUS79B7EWk+KlF4cRdZPyg/T7q/QYI544a3o3/KoraEDw/np3Px1/9rljBJCgS5uNsRFBtQ==} + '@csstools/postcss-gamut-mapping@2.0.5': + resolution: {integrity: sha512-VQDayRhC/Mg1fuo8/4F43La5aROgvVyqtCqdNyGvRKi6L1+zXfwQ583nImi7k/gn2GNJH82Bf9mutTuT1GtXzA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-gradients-interpolation-method@5.0.4': - resolution: {integrity: sha512-t2GrRZ/pnR7FJHvUoDl3gspwWGj2RCE7h9erAqs6eLp5oNh6qf7OzL6HwV6RcfGUjx49sliBmXxoDrReBuzncw==} + '@csstools/postcss-gradients-interpolation-method@5.0.5': + resolution: {integrity: sha512-l3ShDdAt/szbyBh3Jz27MRFt5WPAbnVCMsU7Vs7EbBxJQNgVDrcu1APBB2nPagDJOyhI6/IahuW7nb6grWVTpA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-hwb-function@4.0.4': - resolution: {integrity: sha512-1kDydqBP16urjshTYdB28zSnWZXoTJyeToGhMkVEPDm4Mw9+JPe+PO2DZhqHXz2LzAMiHMAgOwp3oCBN2MRwoQ==} + '@csstools/postcss-hwb-function@4.0.5': + resolution: {integrity: sha512-bPn/SQyiiYjWkwK2ykc7O9LliMR50YfUGukd6jQI2okHzB7NxNt/IS45tS1Muk7Hhf3B9Lbmg1Ofq36tBmM92Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -6087,8 +6087,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-light-dark-function@2.0.6': - resolution: {integrity: sha512-eo9WPWkFGEfbhOgfHrIFTZlK8goW/rLYRfM2r8Rghl1NTvXnQ8qpMEmd67iXwMdfoKl6nMWs5sTTVLflpa2+EA==} + '@csstools/postcss-light-dark-function@2.0.7': + resolution: {integrity: sha512-ZZ0rwlanYKOHekyIPaU+sVm3BEHCe+Ha0/px+bmHe62n0Uc1lL34vbwrLYn6ote8PHlsqzKeTQdIejQCJ05tfw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -6117,20 +6117,20 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-logical-viewport-units@3.0.2': - resolution: {integrity: sha512-oog7VobKvrS34oyUKslI6wCphtJxx0ldiA8RToPQ0HXPWNiXXSM7IbgwOTImJKTIUjo3eL7o5uuPxeu5MsnkvA==} + '@csstools/postcss-logical-viewport-units@3.0.3': + resolution: {integrity: sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-media-minmax@2.0.3': - resolution: {integrity: sha512-+Vr5eQ/ZSL0hdARb/1sohoYtYnYxGi94HuzgmzjZ7jnruEDYJaWux6UtS2gXY/cWrsx/lmJCJNFJO87/5hcgCQ==} + '@csstools/postcss-media-minmax@2.0.4': + resolution: {integrity: sha512-zgdBOCI9aKoy5GK9tb/3ve0pl7vH0HJg7rfQEWT3TZiIKh7XEWucDSTSwnwgdgtgz50UxrOfbK+C59M+u2fE2Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.3': - resolution: {integrity: sha512-kyLO69jXq/BIkOJeCi7++uzarm9qb5La1K1cL36e+QUnV6wto7UtFuzjelT3PEuCnIikj9JCbDCYDfGzCmkhQw==} + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4': + resolution: {integrity: sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -6147,8 +6147,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-oklab-function@4.0.4': - resolution: {integrity: sha512-IDPtqifrFjIjdMBphc8ebbq7YdMReEBjkoEZOVrm1I+ZfclgMim9HAE7+V0zCFaP4WyKhVSodKAWWh5Uj4cDLA==} + '@csstools/postcss-oklab-function@4.0.5': + resolution: {integrity: sha512-19bsJQFyJNSEhpaVq0Mq1E0HDXfx8qMHa/bR1MaHr1UD4DWvM2/J6YXb9OVGS7eFl92Y3c84Yggn9uFv13vsiQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -6159,8 +6159,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-relative-color-syntax@3.0.4': - resolution: {integrity: sha512-vfjMNPHTZ3SZbTuZ30tNvplQuxEaubUugd4P6PeXfxSKcAMUUH1weVTMaY75MsT5RpHw0m7GRyLDNwwAKXGm1g==} + '@csstools/postcss-relative-color-syntax@3.0.5': + resolution: {integrity: sha512-5VrE4hAwv/ZpuL1Yo0ZGGFi1QPpIikp/rzz7LnpQ31ACQVRIA5/M9qZmJbRlZVsJ4bUFSQ3dq6kHSHrCt2uM6Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -6171,8 +6171,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-stepped-value-functions@4.0.3': - resolution: {integrity: sha512-xy/cT/a51xecPw0T2GIwuCTc4IwIB5woznFAbhOHaJvBi6cdUJyQPeUjwgpOQkA31JEl11T0oGRP0MBDEdLOrg==} + '@csstools/postcss-stepped-value-functions@4.0.4': + resolution: {integrity: sha512-JjShuWZkmIOT8EfI7lYjl7V5qM29LNDdnnSo5O7v/InJJHfeiQjtxyAaZzKGXzpkghPrCAcgLfJ+IyqTdXo7IA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -6183,8 +6183,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-trigonometric-functions@4.0.3': - resolution: {integrity: sha512-OTtGIJglcGqSMyZo6yYrt7c+eOqI7N38oh3IWfpqrDnjFtqvR7n2fDSSYPrkR9KjT4alCXNPV9cC7ExXFCG6Uw==} + '@csstools/postcss-trigonometric-functions@4.0.4': + resolution: {integrity: sha512-nn+gWTZZlSnwbyUtGQCnvBXIx1TX+HVStvIm3221dWGQvp47bB5giMBbuAK4a/UJGBbfDQhGKEbYq++WWM1i1A==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -6381,8 +6381,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.0': - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/config-array@0.18.0': @@ -6397,8 +6397,8 @@ packages: resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.13.0': - resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} + '@eslint/js@9.14.0': + resolution: {integrity: sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -6415,12 +6415,12 @@ packages: '@fontsource/montserrat@5.1.0': resolution: {integrity: sha512-HB4+rWP9Y8g6T9RGRVJk2SvAJtx2eBAXuivvPOqQdD806/9WESUfucfH9LqFj3bGgdhNCfh0Rv0NGuwEmBLRiw==} - '@humanfs/core@0.19.0': - resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.5': - resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': @@ -6431,6 +6431,10 @@ packages: resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -6807,93 +6811,93 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.24.2': - resolution: {integrity: sha512-ufoveNTKDg9t/b7nqI3lwbCG/9IJMhADBNjjz/Jn6LxIZxD7T5L8l2uO/wD99945F1Oo8FvgbbZJRguyk/BdzA==} + '@rollup/rollup-android-arm-eabi@4.24.4': + resolution: {integrity: sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.2': - resolution: {integrity: sha512-iZoYCiJz3Uek4NI0J06/ZxUgwAfNzqltK0MptPDO4OR0a88R4h0DSELMsflS6ibMCJ4PnLvq8f7O1d7WexUvIA==} + '@rollup/rollup-android-arm64@4.24.4': + resolution: {integrity: sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.2': - resolution: {integrity: sha512-/UhrIxobHYCBfhi5paTkUDQ0w+jckjRZDZ1kcBL132WeHZQ6+S5v9jQPVGLVrLbNUebdIRpIt00lQ+4Z7ys4Rg==} + '@rollup/rollup-darwin-arm64@4.24.4': + resolution: {integrity: sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.2': - resolution: {integrity: sha512-1F/jrfhxJtWILusgx63WeTvGTwE4vmsT9+e/z7cZLKU8sBMddwqw3UV5ERfOV+H1FuRK3YREZ46J4Gy0aP3qDA==} + '@rollup/rollup-darwin-x64@4.24.4': + resolution: {integrity: sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.24.2': - resolution: {integrity: sha512-1YWOpFcGuC6iGAS4EI+o3BV2/6S0H+m9kFOIlyFtp4xIX5rjSnL3AwbTBxROX0c8yWtiWM7ZI6mEPTI7VkSpZw==} + '@rollup/rollup-freebsd-arm64@4.24.4': + resolution: {integrity: sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.24.2': - resolution: {integrity: sha512-3qAqTewYrCdnOD9Gl9yvPoAoFAVmPJsBvleabvx4bnu1Kt6DrB2OALeRVag7BdWGWLhP1yooeMLEi6r2nYSOjg==} + '@rollup/rollup-freebsd-x64@4.24.4': + resolution: {integrity: sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.24.2': - resolution: {integrity: sha512-ArdGtPHjLqWkqQuoVQ6a5UC5ebdX8INPuJuJNWRe0RGa/YNhVvxeWmCTFQ7LdmNCSUzVZzxAvUznKaYx645Rig==} + '@rollup/rollup-linux-arm-gnueabihf@4.24.4': + resolution: {integrity: sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.24.2': - resolution: {integrity: sha512-B6UHHeNnnih8xH6wRKB0mOcJGvjZTww1FV59HqJoTJ5da9LCG6R4SEBt6uPqzlawv1LoEXSS0d4fBlHNWl6iYw==} + '@rollup/rollup-linux-arm-musleabihf@4.24.4': + resolution: {integrity: sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.24.2': - resolution: {integrity: sha512-kr3gqzczJjSAncwOS6i7fpb4dlqcvLidqrX5hpGBIM1wtt0QEVtf4wFaAwVv8QygFU8iWUMYEoJZWuWxyua4GQ==} + '@rollup/rollup-linux-arm64-gnu@4.24.4': + resolution: {integrity: sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.24.2': - resolution: {integrity: sha512-TDdHLKCWgPuq9vQcmyLrhg/bgbOvIQ8rtWQK7MRxJ9nvaxKx38NvY7/Lo6cYuEnNHqf6rMqnivOIPIQt6H2AoA==} + '@rollup/rollup-linux-arm64-musl@4.24.4': + resolution: {integrity: sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.2': - resolution: {integrity: sha512-xv9vS648T3X4AxFFZGWeB5Dou8ilsv4VVqJ0+loOIgDO20zIhYfDLkk5xoQiej2RiSQkld9ijF/fhLeonrz2mw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.24.4': + resolution: {integrity: sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.24.2': - resolution: {integrity: sha512-tbtXwnofRoTt223WUZYiUnbxhGAOVul/3StZ947U4A5NNjnQJV5irKMm76G0LGItWs6y+SCjUn/Q0WaMLkEskg==} + '@rollup/rollup-linux-riscv64-gnu@4.24.4': + resolution: {integrity: sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.24.2': - resolution: {integrity: sha512-gc97UebApwdsSNT3q79glOSPdfwgwj5ELuiyuiMY3pEWMxeVqLGKfpDFoum4ujivzxn6veUPzkGuSYoh5deQ2Q==} + '@rollup/rollup-linux-s390x-gnu@4.24.4': + resolution: {integrity: sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.24.2': - resolution: {integrity: sha512-jOG/0nXb3z+EM6SioY8RofqqmZ+9NKYvJ6QQaa9Mvd3RQxlH68/jcB/lpyVt4lCiqr04IyaC34NzhUqcXbB5FQ==} + '@rollup/rollup-linux-x64-gnu@4.24.4': + resolution: {integrity: sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.24.2': - resolution: {integrity: sha512-XAo7cJec80NWx9LlZFEJQxqKOMz/lX3geWs2iNT5CHIERLFfd90f3RYLLjiCBm1IMaQ4VOX/lTC9lWfzzQm14Q==} + '@rollup/rollup-linux-x64-musl@4.24.4': + resolution: {integrity: sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.24.2': - resolution: {integrity: sha512-A+JAs4+EhsTjnPQvo9XY/DC0ztaws3vfqzrMNMKlwQXuniBKOIIvAAI8M0fBYiTCxQnElYu7mLk7JrhlQ+HeOw==} + '@rollup/rollup-win32-arm64-msvc@4.24.4': + resolution: {integrity: sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.2': - resolution: {integrity: sha512-ZhcrakbqA1SCiJRMKSU64AZcYzlZ/9M5LaYil9QWxx9vLnkQ9Vnkve17Qn4SjlipqIIBFKjBES6Zxhnvh0EAEw==} + '@rollup/rollup-win32-ia32-msvc@4.24.4': + resolution: {integrity: sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.2': - resolution: {integrity: sha512-2mLH46K1u3r6uwc95hU+OR9q/ggYMpnS7pSp83Ece1HUQgF9Nh/QwTK5rcgbFnV9j+08yBrU5sA/P0RK2MSBNA==} + '@rollup/rollup-win32-x64-msvc@4.24.4': + resolution: {integrity: sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==} cpu: [x64] os: [win32] @@ -6916,8 +6920,8 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} - '@solidjs/router@0.14.10': - resolution: {integrity: sha512-5B8LVgvvXijfXyXWPVLUm7RQ05BhjIpAyRkYVDZtrR3OaSvftXobWc6qSEwk4ICLoGi/IE9CUp2LUdCBIs9AXg==} + '@solidjs/router@0.15.1': + resolution: {integrity: sha512-lb5BRBqQqii/1dQCglx2K68xLkgu7QcrcajWKuuEx6FHTsK/hp5IgVhjy6RzPMLj+SFyrrRi/ldirCFNxtzh0Q==} peerDependencies: solid-js: ^1.8.6 @@ -7102,8 +7106,8 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@typescript-eslint/eslint-plugin@8.11.0': - resolution: {integrity: sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==} + '@typescript-eslint/eslint-plugin@8.13.0': + resolution: {integrity: sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -7113,8 +7117,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.11.0': - resolution: {integrity: sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==} + '@typescript-eslint/parser@8.13.0': + resolution: {integrity: sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -7123,12 +7127,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.11.0': - resolution: {integrity: sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==} + '@typescript-eslint/scope-manager@8.13.0': + resolution: {integrity: sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.11.0': - resolution: {integrity: sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==} + '@typescript-eslint/type-utils@8.13.0': + resolution: {integrity: sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -7136,12 +7140,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@8.11.0': - resolution: {integrity: sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==} + '@typescript-eslint/types@8.13.0': + resolution: {integrity: sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.11.0': - resolution: {integrity: sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==} + '@typescript-eslint/typescript-estree@8.13.0': + resolution: {integrity: sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -7149,14 +7153,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.11.0': - resolution: {integrity: sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==} + '@typescript-eslint/utils@8.13.0': + resolution: {integrity: sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@8.11.0': - resolution: {integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==} + '@typescript-eslint/visitor-keys@8.13.0': + resolution: {integrity: sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/twoslash@3.1.0': @@ -7274,16 +7278,16 @@ packages: '@vue/compiler-ssr@3.5.12': resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==} - '@vue/devtools-core@7.5.4': - resolution: {integrity: sha512-igB2iUKsCUrXkp0wKLn3n5X8jz3AgXWk7if0QpLu3Do16QmlTO0e+/VvTpX0ZbLMh8OOAxDKyfPvJMMO/4QJ5w==} + '@vue/devtools-core@7.6.3': + resolution: {integrity: sha512-C7FOuh3Z+EmXXzDU9eRjHQL7zW7/CFovM6yCNNpUb+zXxhrn4fiqTum+a3gNau9DuzYfEtQXwZ9F7MeK0JKYVw==} peerDependencies: vue: ^3.0.0 - '@vue/devtools-kit@7.5.4': - resolution: {integrity: sha512-0i7WFgc1B2TL52tstn82zlb9opSA0aIiHfkUYFXtZb8CIpmlFMTkHtgwVl6PMWNBj3LNhYou1YJCLpCYvJYYoA==} + '@vue/devtools-kit@7.6.3': + resolution: {integrity: sha512-ETsFc8GlOp04rSFN79tB2TpVloWfsSx9BoCSElV3w3CaJTSBfz42KsIi5Ka+dNTJs1jY7QVLTDeoBmUGgA9h2A==} - '@vue/devtools-shared@7.5.4': - resolution: {integrity: sha512-dwuq4YmwTyLc7eBOqX63s3JB8il7qnKsNgENglSMkUPwiItHkVAYYfPESN1rxSdYkl1RCux1l5TBidYqfUDNAA==} + '@vue/devtools-shared@7.6.3': + resolution: {integrity: sha512-wJW5QF27i16+sNQIaes8QoEZg1eqEgF83GkiPUlEQe9k7ZoHXHV7PRrnrxOKem42sIHPU813J2V/ZK1uqTJe6g==} '@vue/reactivity@3.1.5': resolution: {integrity: sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==} @@ -8094,20 +8098,20 @@ packages: peerDependencies: eslint: '>=8.44.0' - eslint-scope@8.1.0: - resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.1.0: - resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.13.0: - resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} + eslint@9.14.0: + resolution: {integrity: sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -8120,8 +8124,8 @@ packages: resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} engines: {node: '>=6'} - espree@10.2.0: - resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: @@ -8311,8 +8315,8 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} - fs-fixture@2.5.0: - resolution: {integrity: sha512-AzCSCaChZORdNcSa9w9IBnGWhDP2Bv/lOso0P9mAl5nJw2s7pjSEoDaHtzZ9VGIHQlSXR2fuTPO7ln1dM4HTNQ==} + fs-fixture@2.6.0: + resolution: {integrity: sha512-XQNHBGYgth08BSgThjQNrUuzE9XUmr7CDgGFStKaAeB9Oq+kxUHd1zS6hp1YO11B501Sjv9Jq+B2VFn+CdwmIg==} engines: {node: '>=18.0.0'} fs-minipass@2.1.0: @@ -9311,8 +9315,8 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@8.1.0: - resolution: {integrity: sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==} + ora@8.1.1: + resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} engines: {node: '>=18'} os-tmpdir@1.0.2: @@ -9510,8 +9514,8 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.4: - resolution: {integrity: sha512-bK5EYM9f/F8zqbVT+Etky6sZBR3XedXRasF0cFxi2uX3JOKrkEw+YfRFaVLAYA934RuypGZiqTgDXVpVPnaoDQ==} + postcss-color-functional-notation@7.0.5: + resolution: {integrity: sha512-zW97tq5t2sSSSZQcIS4y6NDZj79zVv8hrBIJ4PSFZFmMBcjYqCt8sRXFGIYZohCpfFHmimMNqJje2Qd3qqMNdg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -9528,20 +9532,20 @@ packages: peerDependencies: postcss: ^8.4 - postcss-custom-media@11.0.4: - resolution: {integrity: sha512-fz6+8rikAQZHsDwy2EEdeE0JlOaYRz1O0WNyrENkC21nEQfp2etnLcP4V1igieGG5mKokfLmH6lLrBR8kMRUfA==} + postcss-custom-media@11.0.5: + resolution: {integrity: sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - postcss-custom-properties@14.0.3: - resolution: {integrity: sha512-zCc5y6cilcZXld3RK0glb5OR9p6i/54ro7Dul2drDI7kLCIZC1uiblHGociomp2fwBet3kRFf9DpG4lJtz5yhw==} + postcss-custom-properties@14.0.4: + resolution: {integrity: sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - postcss-custom-selectors@8.0.3: - resolution: {integrity: sha512-VozjI6h5AxtMWtsI7IdP/LYpioe2Ha0Cg0JwHiifIyIM/HIoRGcRPnbbrywbbG6uPagJH/l2xIOyVddAIqB/KA==} + postcss-custom-selectors@8.0.4: + resolution: {integrity: sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -9599,8 +9603,8 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-lab-function@7.0.4: - resolution: {integrity: sha512-BkNIkLVZDPJo5EYTfdri/tllk1y83zZET9Imn6gbt8YmeK4SnOiLN8Tfr3DSFk4sIHYbuuQp5UmPXsb9J2mNBQ==} + postcss-lab-function@7.0.5: + resolution: {integrity: sha512-q2M8CfQbjHxbwv1GPAny05EVuj0WByUgq/OWKgpfbTHnMchtUqsVQgaW1mztjSZ4UPufwuTLB14fmFGsoTE/VQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -9658,8 +9662,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.0.8: - resolution: {integrity: sha512-rN7wmrc4GDvsCR8o1J0c0lexJI7x7ibCoSJ6Xoz/lAyzXzJhq6MYtfQGby5hMU0eqQTQc8JDEcREJaA7kYy7aQ==} + postcss-preset-env@10.0.9: + resolution: {integrity: sha512-mpfJWMAW6szov+ifW9HpNUUZE3BoXoHc4CDzNQHdH2I4CwsqulQ3bpFNUR6zh4tg0BUcqM7UUAbzG4UTel8QYw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -9978,8 +9982,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.24.2: - resolution: {integrity: sha512-do/DFGq5g6rdDhdpPq5qb2ecoczeK6y+2UAjdJ5trjQJj5f1AiVdLRWRc9A9/fFukfvJRgM0UXzxBIYMovm5ww==} + rollup@4.24.4: + resolution: {integrity: sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -10008,8 +10012,8 @@ packages: sass-formatter@0.7.9: resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} - sass@1.80.4: - resolution: {integrity: sha512-rhMQ2tSF5CsuuspvC94nPM9rToiAFw2h3JTrLlgmNw1MH79v8Cr3DH6KF6o6r+8oofY3iYVPUf66KzC8yuVN1w==} + sass@1.80.6: + resolution: {integrity: sha512-ccZgdHNiBF1NHBsWvacvT5rju3y1d/Eu+8Ex6c21nHp2lZGLBEtuwc415QfiI1PJa1TpCo3iXwwSRjRpn2Ckjg==} engines: {node: '>=14.0.0'} hasBin: true @@ -10479,8 +10483,8 @@ packages: typescript-auto-import-cache@0.3.3: resolution: {integrity: sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==} - typescript-eslint@8.11.0: - resolution: {integrity: sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA==} + typescript-eslint@8.13.0: + resolution: {integrity: sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -10640,8 +10644,8 @@ packages: '@testing-library/jest-dom': optional: true - vite-plugin-vue-devtools@7.5.4: - resolution: {integrity: sha512-6yTcGrF+YdplDhNiNCkwj23BQDHA/jp06FR4Bo3rui1GW+8VdFcc26au2gtynPwRDNJXNueTxiVtVb6dq+lNZA==} + vite-plugin-vue-devtools@7.6.3: + resolution: {integrity: sha512-p1rZMKzreWqxj9U05RaxY1vDoOhGYhA6iX8vKfo4nD6jqTmVoGjjk+U1g5HYwwTCdr/eck3kzO2f4gnPCjqVKA==} engines: {node: '>=v14.21.3'} peerDependencies: vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 @@ -11594,35 +11598,35 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@csstools/cascade-layer-name-parser@2.0.3(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2)': + '@csstools/cascade-layer-name-parser@2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': dependencies: - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/color-helpers@5.0.1': {} - '@csstools/css-calc@2.0.3(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2)': + '@csstools/css-calc@2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': dependencies: - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 - '@csstools/css-color-parser@3.0.4(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2)': + '@csstools/css-color-parser@3.0.5(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': dependencies: '@csstools/color-helpers': 5.0.1 - '@csstools/css-calc': 2.0.3(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-calc': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 - '@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2)': + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': dependencies: - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-tokenizer': 3.0.3 - '@csstools/css-tokenizer@3.0.2': {} + '@csstools/css-tokenizer@3.0.3': {} - '@csstools/media-query-list-parser@4.0.1(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2)': + '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': dependencies: - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-cascade-layers@5.0.1(postcss@8.4.47)': dependencies: @@ -11630,37 +11634,37 @@ snapshots: postcss: 8.4.47 postcss-selector-parser: 7.0.0 - '@csstools/postcss-color-function@4.0.4(postcss@8.4.47)': + '@csstools/postcss-color-function@4.0.5(postcss@8.4.47)': dependencies: - '@csstools/css-color-parser': 3.0.4(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-color-parser': 3.0.5(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 - '@csstools/postcss-color-mix-function@3.0.4(postcss@8.4.47)': + '@csstools/postcss-color-mix-function@3.0.5(postcss@8.4.47)': dependencies: - '@csstools/css-color-parser': 3.0.4(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-color-parser': 3.0.5(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 - '@csstools/postcss-content-alt-text@2.0.3(postcss@8.4.47)': + '@csstools/postcss-content-alt-text@2.0.4(postcss@8.4.47)': dependencies: - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 - '@csstools/postcss-exponential-functions@2.0.3(postcss@8.4.47)': + '@csstools/postcss-exponential-functions@2.0.4(postcss@8.4.47)': dependencies: - '@csstools/css-calc': 2.0.3(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-calc': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 postcss: 8.4.47 '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.4.47)': @@ -11669,27 +11673,27 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 - '@csstools/postcss-gamut-mapping@2.0.4(postcss@8.4.47)': + '@csstools/postcss-gamut-mapping@2.0.5(postcss@8.4.47)': dependencies: - '@csstools/css-color-parser': 3.0.4(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-color-parser': 3.0.5(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 postcss: 8.4.47 - '@csstools/postcss-gradients-interpolation-method@5.0.4(postcss@8.4.47)': + '@csstools/postcss-gradients-interpolation-method@5.0.5(postcss@8.4.47)': dependencies: - '@csstools/css-color-parser': 3.0.4(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-color-parser': 3.0.5(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 - '@csstools/postcss-hwb-function@4.0.4(postcss@8.4.47)': + '@csstools/postcss-hwb-function@4.0.5(postcss@8.4.47)': dependencies: - '@csstools/css-color-parser': 3.0.4(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-color-parser': 3.0.5(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 @@ -11711,10 +11715,10 @@ snapshots: postcss: 8.4.47 postcss-selector-parser: 7.0.0 - '@csstools/postcss-light-dark-function@2.0.6(postcss@8.4.47)': + '@csstools/postcss-light-dark-function@2.0.7(postcss@8.4.47)': dependencies: - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 @@ -11736,25 +11740,25 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 - '@csstools/postcss-logical-viewport-units@3.0.2(postcss@8.4.47)': + '@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.4.47)': dependencies: - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-tokenizer': 3.0.3 '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 - '@csstools/postcss-media-minmax@2.0.3(postcss@8.4.47)': + '@csstools/postcss-media-minmax@2.0.4(postcss@8.4.47)': dependencies: - '@csstools/css-calc': 2.0.3(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 - '@csstools/media-query-list-parser': 4.0.1(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) + '@csstools/css-calc': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) postcss: 8.4.47 - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.3(postcss@8.4.47)': + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.4.47)': dependencies: - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 - '@csstools/media-query-list-parser': 4.0.1(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) postcss: 8.4.47 '@csstools/postcss-nested-calc@4.0.0(postcss@8.4.47)': @@ -11768,11 +11772,11 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@4.0.4(postcss@8.4.47)': + '@csstools/postcss-oklab-function@4.0.5(postcss@8.4.47)': dependencies: - '@csstools/css-color-parser': 3.0.4(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-color-parser': 3.0.5(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 @@ -11782,11 +11786,11 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 - '@csstools/postcss-relative-color-syntax@3.0.4(postcss@8.4.47)': + '@csstools/postcss-relative-color-syntax@3.0.5(postcss@8.4.47)': dependencies: - '@csstools/css-color-parser': 3.0.4(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-color-parser': 3.0.5(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 @@ -11796,11 +11800,11 @@ snapshots: postcss: 8.4.47 postcss-selector-parser: 7.0.0 - '@csstools/postcss-stepped-value-functions@4.0.3(postcss@8.4.47)': + '@csstools/postcss-stepped-value-functions@4.0.4(postcss@8.4.47)': dependencies: - '@csstools/css-calc': 2.0.3(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-calc': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 postcss: 8.4.47 '@csstools/postcss-text-decoration-shorthand@4.0.1(postcss@8.4.47)': @@ -11809,11 +11813,11 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 - '@csstools/postcss-trigonometric-functions@4.0.3(postcss@8.4.47)': + '@csstools/postcss-trigonometric-functions@4.0.4(postcss@8.4.47)': dependencies: - '@csstools/css-calc': 2.0.3(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-calc': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 postcss: 8.4.47 '@csstools/postcss-unset-value@4.0.0(postcss@8.4.47)': @@ -11929,12 +11933,12 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0(jiti@1.21.6))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.14.0(jiti@1.21.6))': dependencies: - eslint: 9.13.0(jiti@1.21.6) + eslint: 9.14.0(jiti@1.21.6) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.0': {} + '@eslint-community/regexpp@4.12.1': {} '@eslint/config-array@0.18.0': dependencies: @@ -11950,7 +11954,7 @@ snapshots: dependencies: ajv: 6.12.6 debug: 4.3.7 - espree: 10.2.0 + espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 @@ -11960,7 +11964,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.13.0': {} + '@eslint/js@9.14.0': {} '@eslint/object-schema@2.1.4': {} @@ -11972,17 +11976,19 @@ snapshots: '@fontsource/montserrat@5.1.0': {} - '@humanfs/core@0.19.0': {} + '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.5': + '@humanfs/node@0.16.6': dependencies: - '@humanfs/core': 0.19.0 + '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.3.1': {} + '@humanwhocodes/retry@0.4.1': {} + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.4 @@ -12296,6 +12302,7 @@ snapshots: '@parcel/watcher-win32-arm64': 2.4.1 '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 + optional: true '@parse5/tools@0.3.0': dependencies: @@ -12310,12 +12317,12 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@preact/preset-vite@2.8.2(@babel/core@7.26.0)(preact@10.24.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))': + '@preact/preset-vite@2.8.2(@babel/core@7.26.0)(preact@10.24.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) - '@prefresh/vite': 2.4.5(preact@10.24.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + '@prefresh/vite': 2.4.5(preact@10.24.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.26.0) debug: 4.3.7 @@ -12325,7 +12332,7 @@ snapshots: resolve: 1.22.8 source-map: 0.7.4 stack-trace: 1.0.0-pre2 - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) transitivePeerDependencies: - preact - supports-color @@ -12345,7 +12352,7 @@ snapshots: '@prefresh/utils@1.2.0': {} - '@prefresh/vite@2.4.5(preact@10.24.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))': + '@prefresh/vite@2.4.5(preact@10.24.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))': dependencies: '@babel/core': 7.26.0 '@prefresh/babel-plugin': 0.5.1 @@ -12353,7 +12360,7 @@ snapshots: '@prefresh/utils': 1.2.0 '@rollup/pluginutils': 4.2.1 preact: 10.24.3 - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) transitivePeerDependencies: - supports-color @@ -12362,66 +12369,66 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.3(rollup@4.24.2)': + '@rollup/pluginutils@5.1.3(rollup@4.24.4)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.2 + rollup: 4.24.4 - '@rollup/rollup-android-arm-eabi@4.24.2': + '@rollup/rollup-android-arm-eabi@4.24.4': optional: true - '@rollup/rollup-android-arm64@4.24.2': + '@rollup/rollup-android-arm64@4.24.4': optional: true - '@rollup/rollup-darwin-arm64@4.24.2': + '@rollup/rollup-darwin-arm64@4.24.4': optional: true - '@rollup/rollup-darwin-x64@4.24.2': + '@rollup/rollup-darwin-x64@4.24.4': optional: true - '@rollup/rollup-freebsd-arm64@4.24.2': + '@rollup/rollup-freebsd-arm64@4.24.4': optional: true - '@rollup/rollup-freebsd-x64@4.24.2': + '@rollup/rollup-freebsd-x64@4.24.4': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.2': + '@rollup/rollup-linux-arm-gnueabihf@4.24.4': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.2': + '@rollup/rollup-linux-arm-musleabihf@4.24.4': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.2': + '@rollup/rollup-linux-arm64-gnu@4.24.4': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.2': + '@rollup/rollup-linux-arm64-musl@4.24.4': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.4': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.2': + '@rollup/rollup-linux-riscv64-gnu@4.24.4': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.2': + '@rollup/rollup-linux-s390x-gnu@4.24.4': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.2': + '@rollup/rollup-linux-x64-gnu@4.24.4': optional: true - '@rollup/rollup-linux-x64-musl@4.24.2': + '@rollup/rollup-linux-x64-musl@4.24.4': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.2': + '@rollup/rollup-win32-arm64-msvc@4.24.4': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.2': + '@rollup/rollup-win32-ia32-msvc@4.24.4': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.2': + '@rollup/rollup-win32-x64-msvc@4.24.4': optional: true '@shikijs/core@1.22.2': @@ -12453,30 +12460,30 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} - '@solidjs/router@0.14.10(solid-js@1.9.3)': + '@solidjs/router@0.15.1(solid-js@1.9.3)': dependencies: solid-js: 1.9.3 - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)))(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)))(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) debug: 4.3.7 svelte: 4.2.19 - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))': + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)))(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)))(svelte@4.2.19)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) debug: 4.3.7 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.12 svelte: 4.2.19 svelte-hmr: 0.16.0(svelte@4.2.19) - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) - vitefu: 0.2.5(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) + vitefu: 0.2.5(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) transitivePeerDependencies: - supports-color @@ -12642,15 +12649,15 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/type-utils': 8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.11.0 - eslint: 9.13.0(jiti@1.21.6) + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/type-utils': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.13.0 + eslint: 9.14.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -12660,28 +12667,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/parser@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.11.0 + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.13.0 debug: 4.3.7 - eslint: 9.13.0(jiti@1.21.6) + eslint: 9.14.0(jiti@1.21.6) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.11.0': + '@typescript-eslint/scope-manager@8.13.0': dependencies: - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/visitor-keys': 8.11.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/visitor-keys': 8.13.0 - '@typescript-eslint/type-utils@8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: @@ -12690,12 +12697,12 @@ snapshots: - eslint - supports-color - '@typescript-eslint/types@8.11.0': {} + '@typescript-eslint/types@8.13.0': {} - '@typescript-eslint/typescript-estree@8.11.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.13.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/visitor-keys': 8.11.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/visitor-keys': 8.13.0 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -12707,20 +12714,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/utils@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@1.21.6)) - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) - eslint: 9.13.0(jiti@1.21.6) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + eslint: 9.14.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@8.11.0': + '@typescript-eslint/visitor-keys@8.13.0': dependencies: - '@typescript-eslint/types': 8.11.0 + '@typescript-eslint/types': 8.13.0 eslint-visitor-keys: 3.4.3 '@typescript/twoslash@3.1.0': @@ -12745,30 +12752,30 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))': + '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))(vue@3.5.12(typescript@5.6.3))': + '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))(vue@3.5.12(typescript@5.6.3))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.26.0) '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) vue: 3.5.12(typescript@5.6.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.4(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))(vue@3.5.12(typescript@5.6.3))': + '@vitejs/plugin-vue@5.1.4(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))(vue@3.5.12(typescript@5.6.3))': dependencies: - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) vue: 3.5.12(typescript@5.6.3) '@vitest/expect@2.1.4': @@ -12778,13 +12785,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.4(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))': + '@vitest/mocker@2.1.4(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))': dependencies: '@vitest/spy': 2.1.4 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) '@vitest/pretty-format@2.1.4': dependencies: @@ -12921,21 +12928,21 @@ snapshots: '@vue/compiler-dom': 3.5.12 '@vue/shared': 3.5.12 - '@vue/devtools-core@7.5.4(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))(vue@3.5.12(typescript@5.6.3))': + '@vue/devtools-core@7.6.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))(vue@3.5.12(typescript@5.6.3))': dependencies: - '@vue/devtools-kit': 7.5.4 - '@vue/devtools-shared': 7.5.4 + '@vue/devtools-kit': 7.6.3 + '@vue/devtools-shared': 7.6.3 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + vite-hot-client: 0.2.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) vue: 3.5.12(typescript@5.6.3) transitivePeerDependencies: - vite - '@vue/devtools-kit@7.5.4': + '@vue/devtools-kit@7.6.3': dependencies: - '@vue/devtools-shared': 7.5.4 + '@vue/devtools-shared': 7.6.3 birpc: 0.2.19 hookable: 5.5.3 mitt: 3.0.1 @@ -12943,7 +12950,7 @@ snapshots: speakingurl: 14.0.1 superjson: 2.2.1 - '@vue/devtools-shared@7.5.4': + '@vue/devtools-shared@7.6.3': dependencies: rfdc: 1.4.1 @@ -13513,7 +13520,8 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@1.0.3: {} + detect-libc@1.0.3: + optional: true detect-libc@2.0.2: {} @@ -13667,38 +13675,38 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-plugin-regexp@2.6.0(eslint@9.13.0(jiti@1.21.6)): + eslint-plugin-regexp@2.6.0(eslint@9.14.0(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@1.21.6)) - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@1.21.6)) + '@eslint-community/regexpp': 4.12.1 comment-parser: 1.4.1 - eslint: 9.13.0(jiti@1.21.6) + eslint: 9.14.0(jiti@1.21.6) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-scope@8.1.0: + eslint-scope@8.2.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.1.0: {} + eslint-visitor-keys@4.2.0: {} - eslint@9.13.0(jiti@1.21.6): + eslint@9.14.0(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@1.21.6)) - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@1.21.6)) + '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.18.0 '@eslint/core': 0.7.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.13.0 + '@eslint/js': 9.14.0 '@eslint/plugin-kit': 0.2.0 - '@humanfs/node': 0.16.5 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.1 '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -13706,9 +13714,9 @@ snapshots: cross-spawn: 7.0.3 debug: 4.3.7 escape-string-regexp: 4.0.0 - eslint-scope: 8.1.0 - eslint-visitor-keys: 4.1.0 - espree: 10.2.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -13731,11 +13739,11 @@ snapshots: esm@3.2.25: {} - espree@10.2.0: + espree@10.3.0: dependencies: acorn: 8.14.0 acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.1.0 + eslint-visitor-keys: 4.2.0 esprima@4.0.1: {} @@ -13933,7 +13941,7 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 - fs-fixture@2.5.0: {} + fs-fixture@2.6.0: {} fs-minipass@2.1.0: dependencies: @@ -15186,7 +15194,8 @@ snapshots: lower-case: 2.0.2 tslib: 2.7.0 - node-addon-api@7.1.1: {} + node-addon-api@7.1.1: + optional: true node-domexception@1.0.0: {} @@ -15284,7 +15293,7 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@8.1.0: + ora@8.1.1: dependencies: chalk: 5.3.0 cli-cursor: 5.0.0 @@ -15466,11 +15475,11 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.4(postcss@8.4.47): + postcss-color-functional-notation@7.0.5(postcss@8.4.47): dependencies: - '@csstools/css-color-parser': 3.0.4(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-color-parser': 3.0.5(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 @@ -15487,28 +15496,28 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.4(postcss@8.4.47): + postcss-custom-media@11.0.5(postcss@8.4.47): dependencies: - '@csstools/cascade-layer-name-parser': 2.0.3(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 - '@csstools/media-query-list-parser': 4.0.1(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) + '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) postcss: 8.4.47 - postcss-custom-properties@14.0.3(postcss@8.4.47): + postcss-custom-properties@14.0.4(postcss@8.4.47): dependencies: - '@csstools/cascade-layer-name-parser': 2.0.3(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.3(postcss@8.4.47): + postcss-custom-selectors@8.0.4(postcss@8.4.47): dependencies: - '@csstools/cascade-layer-name-parser': 2.0.3(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 postcss: 8.4.47 postcss-selector-parser: 7.0.0 @@ -15560,11 +15569,11 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.47 - postcss-lab-function@7.0.4(postcss@8.4.47): + postcss-lab-function@7.0.5(postcss@8.4.47): dependencies: - '@csstools/css-color-parser': 3.0.4(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.2))(@csstools/css-tokenizer@3.0.2) - '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.2) - '@csstools/css-tokenizer': 3.0.2 + '@csstools/css-color-parser': 3.0.5(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 @@ -15611,37 +15620,37 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-preset-env@10.0.8(postcss@8.4.47): + postcss-preset-env@10.0.9(postcss@8.4.47): dependencies: '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.4.47) - '@csstools/postcss-color-function': 4.0.4(postcss@8.4.47) - '@csstools/postcss-color-mix-function': 3.0.4(postcss@8.4.47) - '@csstools/postcss-content-alt-text': 2.0.3(postcss@8.4.47) - '@csstools/postcss-exponential-functions': 2.0.3(postcss@8.4.47) + '@csstools/postcss-color-function': 4.0.5(postcss@8.4.47) + '@csstools/postcss-color-mix-function': 3.0.5(postcss@8.4.47) + '@csstools/postcss-content-alt-text': 2.0.4(postcss@8.4.47) + '@csstools/postcss-exponential-functions': 2.0.4(postcss@8.4.47) '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.4.47) - '@csstools/postcss-gamut-mapping': 2.0.4(postcss@8.4.47) - '@csstools/postcss-gradients-interpolation-method': 5.0.4(postcss@8.4.47) - '@csstools/postcss-hwb-function': 4.0.4(postcss@8.4.47) + '@csstools/postcss-gamut-mapping': 2.0.5(postcss@8.4.47) + '@csstools/postcss-gradients-interpolation-method': 5.0.5(postcss@8.4.47) + '@csstools/postcss-hwb-function': 4.0.5(postcss@8.4.47) '@csstools/postcss-ic-unit': 4.0.0(postcss@8.4.47) '@csstools/postcss-initial': 2.0.0(postcss@8.4.47) '@csstools/postcss-is-pseudo-class': 5.0.1(postcss@8.4.47) - '@csstools/postcss-light-dark-function': 2.0.6(postcss@8.4.47) + '@csstools/postcss-light-dark-function': 2.0.7(postcss@8.4.47) '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.4.47) '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.4.47) '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.4.47) '@csstools/postcss-logical-resize': 3.0.0(postcss@8.4.47) - '@csstools/postcss-logical-viewport-units': 3.0.2(postcss@8.4.47) - '@csstools/postcss-media-minmax': 2.0.3(postcss@8.4.47) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.3(postcss@8.4.47) + '@csstools/postcss-logical-viewport-units': 3.0.3(postcss@8.4.47) + '@csstools/postcss-media-minmax': 2.0.4(postcss@8.4.47) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.4(postcss@8.4.47) '@csstools/postcss-nested-calc': 4.0.0(postcss@8.4.47) '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.4.47) - '@csstools/postcss-oklab-function': 4.0.4(postcss@8.4.47) + '@csstools/postcss-oklab-function': 4.0.5(postcss@8.4.47) '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.47) - '@csstools/postcss-relative-color-syntax': 3.0.4(postcss@8.4.47) + '@csstools/postcss-relative-color-syntax': 3.0.5(postcss@8.4.47) '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.4.47) - '@csstools/postcss-stepped-value-functions': 4.0.3(postcss@8.4.47) + '@csstools/postcss-stepped-value-functions': 4.0.4(postcss@8.4.47) '@csstools/postcss-text-decoration-shorthand': 4.0.1(postcss@8.4.47) - '@csstools/postcss-trigonometric-functions': 4.0.3(postcss@8.4.47) + '@csstools/postcss-trigonometric-functions': 4.0.4(postcss@8.4.47) '@csstools/postcss-unset-value': 4.0.0(postcss@8.4.47) autoprefixer: 10.4.20(postcss@8.4.47) browserslist: 4.24.0 @@ -15652,12 +15661,12 @@ snapshots: postcss: 8.4.47 postcss-attribute-case-insensitive: 7.0.1(postcss@8.4.47) postcss-clamp: 4.1.0(postcss@8.4.47) - postcss-color-functional-notation: 7.0.4(postcss@8.4.47) + postcss-color-functional-notation: 7.0.5(postcss@8.4.47) postcss-color-hex-alpha: 10.0.0(postcss@8.4.47) postcss-color-rebeccapurple: 10.0.0(postcss@8.4.47) - postcss-custom-media: 11.0.4(postcss@8.4.47) - postcss-custom-properties: 14.0.3(postcss@8.4.47) - postcss-custom-selectors: 8.0.3(postcss@8.4.47) + postcss-custom-media: 11.0.5(postcss@8.4.47) + postcss-custom-properties: 14.0.4(postcss@8.4.47) + postcss-custom-selectors: 8.0.4(postcss@8.4.47) postcss-dir-pseudo-class: 9.0.1(postcss@8.4.47) postcss-double-position-gradients: 6.0.0(postcss@8.4.47) postcss-focus-visible: 10.0.1(postcss@8.4.47) @@ -15665,7 +15674,7 @@ snapshots: postcss-font-variant: 5.0.0(postcss@8.4.47) postcss-gap-properties: 6.0.0(postcss@8.4.47) postcss-image-set-function: 7.0.0(postcss@8.4.47) - postcss-lab-function: 7.0.4(postcss@8.4.47) + postcss-lab-function: 7.0.5(postcss@8.4.47) postcss-logical: 8.0.0(postcss@8.4.47) postcss-nesting: 13.0.1(postcss@8.4.47) postcss-opacity-percentage: 3.0.0(postcss@8.4.47) @@ -15836,7 +15845,7 @@ snapshots: refa@0.12.1: dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.12.1 regenerator-runtime@0.13.11: {} @@ -15846,7 +15855,7 @@ snapshots: regexp-ast-analysis@0.7.1: dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.12.1 refa: 0.12.1 rehype-autolink-headings@7.1.0: @@ -16073,28 +16082,28 @@ snapshots: rfdc@1.4.1: {} - rollup@4.24.2: + rollup@4.24.4: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.2 - '@rollup/rollup-android-arm64': 4.24.2 - '@rollup/rollup-darwin-arm64': 4.24.2 - '@rollup/rollup-darwin-x64': 4.24.2 - '@rollup/rollup-freebsd-arm64': 4.24.2 - '@rollup/rollup-freebsd-x64': 4.24.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.2 - '@rollup/rollup-linux-arm-musleabihf': 4.24.2 - '@rollup/rollup-linux-arm64-gnu': 4.24.2 - '@rollup/rollup-linux-arm64-musl': 4.24.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.2 - '@rollup/rollup-linux-riscv64-gnu': 4.24.2 - '@rollup/rollup-linux-s390x-gnu': 4.24.2 - '@rollup/rollup-linux-x64-gnu': 4.24.2 - '@rollup/rollup-linux-x64-musl': 4.24.2 - '@rollup/rollup-win32-arm64-msvc': 4.24.2 - '@rollup/rollup-win32-ia32-msvc': 4.24.2 - '@rollup/rollup-win32-x64-msvc': 4.24.2 + '@rollup/rollup-android-arm-eabi': 4.24.4 + '@rollup/rollup-android-arm64': 4.24.4 + '@rollup/rollup-darwin-arm64': 4.24.4 + '@rollup/rollup-darwin-x64': 4.24.4 + '@rollup/rollup-freebsd-arm64': 4.24.4 + '@rollup/rollup-freebsd-x64': 4.24.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.4 + '@rollup/rollup-linux-arm-musleabihf': 4.24.4 + '@rollup/rollup-linux-arm64-gnu': 4.24.4 + '@rollup/rollup-linux-arm64-musl': 4.24.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.4 + '@rollup/rollup-linux-riscv64-gnu': 4.24.4 + '@rollup/rollup-linux-s390x-gnu': 4.24.4 + '@rollup/rollup-linux-x64-gnu': 4.24.4 + '@rollup/rollup-linux-x64-musl': 4.24.4 + '@rollup/rollup-win32-arm64-msvc': 4.24.4 + '@rollup/rollup-win32-ia32-msvc': 4.24.4 + '@rollup/rollup-win32-x64-msvc': 4.24.4 fsevents: 2.3.3 rrweb-cssom@0.6.0: {} @@ -16117,12 +16126,13 @@ snapshots: dependencies: suf-log: 2.5.3 - sass@1.80.4: + sass@1.80.6: dependencies: - '@parcel/watcher': 2.4.1 chokidar: 4.0.1 immutable: 4.3.7 source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.4.1 sax@1.4.1: {} @@ -16138,7 +16148,7 @@ snapshots: scslre@0.3.0: dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.12.1 refa: 0.12.1 regexp-ast-analysis: 0.7.1 @@ -16631,11 +16641,11 @@ snapshots: dependencies: semver: 7.6.3 - typescript-eslint@8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3): + typescript-eslint@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/parser': 8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -16784,16 +16794,16 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-hot-client@0.2.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)): + vite-hot-client@0.2.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)): dependencies: - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) - vite-node@2.1.4(@types/node@18.19.50)(sass@1.80.4): + vite-node@2.1.4(@types/node@18.19.50)(sass@1.80.6): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) transitivePeerDependencies: - '@types/node' - less @@ -16805,10 +16815,10 @@ snapshots: - supports-color - terser - vite-plugin-inspect@0.8.7(rollup@4.24.2)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)): + vite-plugin-inspect@0.8.7(rollup@4.24.4)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.3(rollup@4.24.2) + '@rollup/pluginutils': 5.1.3(rollup@4.24.4) debug: 4.3.7 error-stack-parser-es: 0.1.5 fs-extra: 11.2.0 @@ -16816,12 +16826,12 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.1.0 sirv: 2.0.4 - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) transitivePeerDependencies: - rollup - supports-color - vite-plugin-solid@2.10.2(solid-js@1.9.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)): + vite-plugin-solid@2.10.2(solid-js@1.9.3)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)): dependencies: '@babel/core': 7.26.0 '@types/babel__core': 7.20.5 @@ -16829,28 +16839,28 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.3 solid-refresh: 0.6.3(solid-js@1.9.3) - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) - vitefu: 0.2.5(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) + vitefu: 0.2.5(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@7.5.4(rollup@4.24.2)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))(vue@3.5.12(typescript@5.6.3)): + vite-plugin-vue-devtools@7.6.3(rollup@4.24.4)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))(vue@3.5.12(typescript@5.6.3)): dependencies: - '@vue/devtools-core': 7.5.4(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4))(vue@3.5.12(typescript@5.6.3)) - '@vue/devtools-kit': 7.5.4 - '@vue/devtools-shared': 7.5.4 + '@vue/devtools-core': 7.6.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6))(vue@3.5.12(typescript@5.6.3)) + '@vue/devtools-kit': 7.6.3 + '@vue/devtools-shared': 7.6.3 execa: 8.0.1 sirv: 3.0.0 - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) - vite-plugin-inspect: 0.8.7(rollup@4.24.2)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) - vite-plugin-vue-inspector: 5.2.0(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) + vite-plugin-inspect: 0.8.7(rollup@4.24.4)(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) + vite-plugin-vue-inspector: 5.2.0(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) transitivePeerDependencies: - '@nuxt/kit' - rollup - supports-color - vue - vite-plugin-vue-inspector@5.2.0(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)): + vite-plugin-vue-inspector@5.2.0(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)): dependencies: '@babel/core': 7.26.0 '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.26.0) @@ -16861,7 +16871,7 @@ snapshots: '@vue/compiler-dom': 3.5.12 kolorist: 1.8.0 magic-string: 0.30.12 - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) transitivePeerDependencies: - supports-color @@ -16870,28 +16880,28 @@ snapshots: svgo: 3.3.2 vue: 3.5.12(typescript@5.6.3) - vite@5.4.10(@types/node@18.19.50)(sass@1.80.4): + vite@5.4.10(@types/node@18.19.50)(sass@1.80.6): dependencies: esbuild: 0.21.5 postcss: 8.4.47 - rollup: 4.24.2 + rollup: 4.24.4 optionalDependencies: '@types/node': 18.19.50 fsevents: 2.3.3 - sass: 1.80.4 + sass: 1.80.6 - vitefu@0.2.5(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)): + vitefu@0.2.5(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)): optionalDependencies: - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) - vitefu@1.0.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)): + vitefu@1.0.3(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)): optionalDependencies: - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) - vitest@2.1.4(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.80.4): + vitest@2.1.4(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.80.6): dependencies: '@vitest/expect': 2.1.4 - '@vitest/mocker': 2.1.4(vite@5.4.10(@types/node@18.19.50)(sass@1.80.4)) + '@vitest/mocker': 2.1.4(vite@5.4.10(@types/node@18.19.50)(sass@1.80.6)) '@vitest/pretty-format': 2.1.4 '@vitest/runner': 2.1.4 '@vitest/snapshot': 2.1.4 @@ -16907,8 +16917,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@18.19.50)(sass@1.80.4) - vite-node: 2.1.4(@types/node@18.19.50)(sass@1.80.4) + vite: 5.4.10(@types/node@18.19.50)(sass@1.80.6) + vite-node: 2.1.4(@types/node@18.19.50)(sass@1.80.6) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 18.19.50 From 6fd3d5960f5ab16591bfdb94d1f9b9a9b72006cf Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Wed, 6 Nov 2024 22:09:22 +0800 Subject: [PATCH 16/18] Add support for Svelte 5 @render syntax (#12390) Co-authored-by: Jonas Robertsson --- .changeset/shaggy-kids-juggle.md | 5 +++++ packages/integrations/svelte/client-v5.js | 16 ++++++++++++++++ packages/integrations/svelte/server-v5.js | 9 +++++++++ 3 files changed, 30 insertions(+) create mode 100644 .changeset/shaggy-kids-juggle.md diff --git a/.changeset/shaggy-kids-juggle.md b/.changeset/shaggy-kids-juggle.md new file mode 100644 index 000000000000..ceb208dc4f40 --- /dev/null +++ b/.changeset/shaggy-kids-juggle.md @@ -0,0 +1,5 @@ +--- +'@astrojs/svelte': patch +--- + +Adds support for Svelte 5's new `@render` syntax while maintaining backward compatibility with traditional slots. diff --git a/packages/integrations/svelte/client-v5.js b/packages/integrations/svelte/client-v5.js index 7a046b5bfd08..f2cc647a2be6 100644 --- a/packages/integrations/svelte/client-v5.js +++ b/packages/integrations/svelte/client-v5.js @@ -8,7 +8,11 @@ export default (element) => { let children = undefined; let $$slots = undefined; + let renderFns = {}; + + for (const [key, value] of Object.entries(slotted)) { + // Legacy slot support $$slots ??= {}; if (key === 'default') { $$slots.default = true; @@ -20,6 +24,16 @@ export default (element) => { render: () => `${value}`, })); } + // @render support for Svelte ^5.0 + if (key === 'default') { + renderFns.children = createRawSnippet(() => ({ + render: () => `${value}` + })); + } else { + renderFns[key] = createRawSnippet(() => ({ + render: () => `${value}` + })); + } } const bootstrap = client !== 'only' ? hydrate : mount; @@ -28,6 +42,7 @@ export default (element) => { ...props, children, $$slots, + ...renderFns }); } else { const component = bootstrap(Component, { @@ -36,6 +51,7 @@ export default (element) => { ...props, children, $$slots, + ...renderFns }, }); existingApplications.set(element, component); diff --git a/packages/integrations/svelte/server-v5.js b/packages/integrations/svelte/server-v5.js index acffd10dfef0..932a52b1ff06 100644 --- a/packages/integrations/svelte/server-v5.js +++ b/packages/integrations/svelte/server-v5.js @@ -17,7 +17,10 @@ async function renderToStaticMarkup(Component, props, slotted, metadata) { let children = undefined; let $$slots = undefined; + const renderProps = {}; + for (const [key, value] of Object.entries(slotted)) { + // Legacy slot support $$slots ??= {}; if (key === 'default') { $$slots.default = true; @@ -29,6 +32,11 @@ async function renderToStaticMarkup(Component, props, slotted, metadata) { render: () => `<${tagName} name="${key}">${value}`, })); } + // @render support for Svelte ^5.0 + const slotName = key === 'default' ? 'children' : key; + renderProps[slotName] = createRawSnippet(() => ({ + render: () => `<${tagName}${key !== 'default' ? ` name="${key}"` : ''}>${value}` + })); } const result = render(Component, { @@ -36,6 +44,7 @@ async function renderToStaticMarkup(Component, props, slotted, metadata) { ...props, children, $$slots, + ...renderProps }, }); return { html: result.body }; From 4a35c505e4914c723ec0d26cd663e7a1d9a86b00 Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Wed, 6 Nov 2024 14:16:10 +0000 Subject: [PATCH 17/18] [ci] format --- packages/integrations/svelte/client-v5.js | 23 +++++++++++------------ packages/integrations/svelte/server-v5.js | 12 ++++++------ 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/integrations/svelte/client-v5.js b/packages/integrations/svelte/client-v5.js index f2cc647a2be6..123e544f6176 100644 --- a/packages/integrations/svelte/client-v5.js +++ b/packages/integrations/svelte/client-v5.js @@ -10,7 +10,6 @@ export default (element) => { let $$slots = undefined; let renderFns = {}; - for (const [key, value] of Object.entries(slotted)) { // Legacy slot support $$slots ??= {}; @@ -25,15 +24,15 @@ export default (element) => { })); } // @render support for Svelte ^5.0 - if (key === 'default') { - renderFns.children = createRawSnippet(() => ({ - render: () => `${value}` - })); - } else { - renderFns[key] = createRawSnippet(() => ({ - render: () => `${value}` - })); - } + if (key === 'default') { + renderFns.children = createRawSnippet(() => ({ + render: () => `${value}`, + })); + } else { + renderFns[key] = createRawSnippet(() => ({ + render: () => `${value}`, + })); + } } const bootstrap = client !== 'only' ? hydrate : mount; @@ -42,7 +41,7 @@ export default (element) => { ...props, children, $$slots, - ...renderFns + ...renderFns, }); } else { const component = bootstrap(Component, { @@ -51,7 +50,7 @@ export default (element) => { ...props, children, $$slots, - ...renderFns + ...renderFns, }, }); existingApplications.set(element, component); diff --git a/packages/integrations/svelte/server-v5.js b/packages/integrations/svelte/server-v5.js index 932a52b1ff06..a38d3826042d 100644 --- a/packages/integrations/svelte/server-v5.js +++ b/packages/integrations/svelte/server-v5.js @@ -18,7 +18,7 @@ async function renderToStaticMarkup(Component, props, slotted, metadata) { let children = undefined; let $$slots = undefined; const renderProps = {}; - + for (const [key, value] of Object.entries(slotted)) { // Legacy slot support $$slots ??= {}; @@ -33,10 +33,10 @@ async function renderToStaticMarkup(Component, props, slotted, metadata) { })); } // @render support for Svelte ^5.0 - const slotName = key === 'default' ? 'children' : key; - renderProps[slotName] = createRawSnippet(() => ({ - render: () => `<${tagName}${key !== 'default' ? ` name="${key}"` : ''}>${value}` - })); + const slotName = key === 'default' ? 'children' : key; + renderProps[slotName] = createRawSnippet(() => ({ + render: () => `<${tagName}${key !== 'default' ? ` name="${key}"` : ''}>${value}`, + })); } const result = render(Component, { @@ -44,7 +44,7 @@ async function renderToStaticMarkup(Component, props, slotted, metadata) { ...props, children, $$slots, - ...renderProps + ...renderProps, }, }); return { html: result.body }; From e10b03e88c22592fbb42d7245b65c4f486ab736d Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" <108291165+astrobot-houston@users.noreply.github.com> Date: Wed, 6 Nov 2024 06:55:41 -0800 Subject: [PATCH 18/18] [ci] release (#12369) Co-authored-by: github-actions[bot] --- .changeset/brown-rocks-ring.md | 5 -- .changeset/five-maps-bake.md | 5 -- .changeset/many-eyes-call.md | 5 -- .changeset/shaggy-kids-juggle.md | 5 -- .changeset/wise-bulldogs-jump.md | 5 -- examples/basics/package.json | 2 +- examples/blog/package.json | 2 +- examples/component/package.json | 2 +- examples/container-with-vitest/package.json | 2 +- examples/framework-alpine/package.json | 2 +- examples/framework-lit/package.json | 2 +- examples/framework-multiple/package.json | 4 +- examples/framework-preact/package.json | 2 +- examples/framework-react/package.json | 2 +- examples/framework-solid/package.json | 2 +- examples/framework-svelte/package.json | 4 +- examples/framework-vue/package.json | 2 +- examples/hackernews/package.json | 2 +- examples/integration/package.json | 2 +- examples/minimal/package.json | 2 +- examples/portfolio/package.json | 2 +- examples/ssr/package.json | 4 +- examples/starlog/package.json | 2 +- examples/toolbar-app/package.json | 2 +- examples/with-markdoc/package.json | 2 +- examples/with-mdx/package.json | 2 +- examples/with-nanostores/package.json | 2 +- examples/with-tailwindcss/package.json | 2 +- examples/with-vitest/package.json | 2 +- packages/astro/CHANGELOG.md | 12 +++++ packages/astro/package.json | 2 +- packages/integrations/svelte/CHANGELOG.md | 6 +++ packages/integrations/svelte/package.json | 2 +- pnpm-lock.yaml | 54 ++++++++++----------- 34 files changed, 74 insertions(+), 81 deletions(-) delete mode 100644 .changeset/brown-rocks-ring.md delete mode 100644 .changeset/five-maps-bake.md delete mode 100644 .changeset/many-eyes-call.md delete mode 100644 .changeset/shaggy-kids-juggle.md delete mode 100644 .changeset/wise-bulldogs-jump.md diff --git a/.changeset/brown-rocks-ring.md b/.changeset/brown-rocks-ring.md deleted file mode 100644 index a32bd412d8b8..000000000000 --- a/.changeset/brown-rocks-ring.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Adds `checked` to the list of boolean attributes. \ No newline at end of file diff --git a/.changeset/five-maps-bake.md b/.changeset/five-maps-bake.md deleted file mode 100644 index 13bacbcdcf82..000000000000 --- a/.changeset/five-maps-bake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes code generated by `astro add` command when adding a version of an integration other than the default `latest`. diff --git a/.changeset/many-eyes-call.md b/.changeset/many-eyes-call.md deleted file mode 100644 index 75e3be47d3e9..000000000000 --- a/.changeset/many-eyes-call.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Improves error logs when executing commands diff --git a/.changeset/shaggy-kids-juggle.md b/.changeset/shaggy-kids-juggle.md deleted file mode 100644 index ceb208dc4f40..000000000000 --- a/.changeset/shaggy-kids-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@astrojs/svelte': patch ---- - -Adds support for Svelte 5's new `@render` syntax while maintaining backward compatibility with traditional slots. diff --git a/.changeset/wise-bulldogs-jump.md b/.changeset/wise-bulldogs-jump.md deleted file mode 100644 index 58900bc58d0a..000000000000 --- a/.changeset/wise-bulldogs-jump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Improves error reporting for invalid frontmatter in MDX files during the `astro build` command. The error message now includes the file path where the frontmatter parsing failed. diff --git a/examples/basics/package.json b/examples/basics/package.json index eaff31cfef3a..84d2260ded8d 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.16.9" + "astro": "^4.16.10" } } diff --git a/examples/blog/package.json b/examples/blog/package.json index 308f5fc721c3..4a36ac4be146 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -14,6 +14,6 @@ "@astrojs/mdx": "^3.1.9", "@astrojs/rss": "^4.0.9", "@astrojs/sitemap": "^3.2.1", - "astro": "^4.16.9" + "astro": "^4.16.10" } } diff --git a/examples/component/package.json b/examples/component/package.json index 9938cf17dbf1..b3d65ba7654f 100644 --- a/examples/component/package.json +++ b/examples/component/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^4.16.9" + "astro": "^4.16.10" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json index de81a50bd0e3..9b8ad347a3d5 100644 --- a/examples/container-with-vitest/package.json +++ b/examples/container-with-vitest/package.json @@ -12,7 +12,7 @@ "test": "vitest run" }, "dependencies": { - "astro": "^4.16.9", + "astro": "^4.16.10", "@astrojs/react": "^3.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index ade8c05c5673..63b0ab0d2281 100644 --- a/examples/framework-alpine/package.json +++ b/examples/framework-alpine/package.json @@ -14,6 +14,6 @@ "@astrojs/alpinejs": "^0.4.0", "@types/alpinejs": "^3.13.10", "alpinejs": "^3.14.3", - "astro": "^4.16.9" + "astro": "^4.16.10" } } diff --git a/examples/framework-lit/package.json b/examples/framework-lit/package.json index f876b07d413a..951632a5397f 100644 --- a/examples/framework-lit/package.json +++ b/examples/framework-lit/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/lit": "^4.3.0", "@webcomponents/template-shadowroot": "^0.2.1", - "astro": "^4.16.9", + "astro": "^4.16.10", "lit": "^3.2.1" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index cd6c01559561..d742d06097a9 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -14,11 +14,11 @@ "@astrojs/preact": "^3.5.3", "@astrojs/react": "^3.6.2", "@astrojs/solid-js": "^4.4.2", - "@astrojs/svelte": "^5.7.2", + "@astrojs/svelte": "^5.7.3", "@astrojs/vue": "^4.5.2", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", - "astro": "^4.16.9", + "astro": "^4.16.10", "preact": "^10.24.3", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index 383f57f8c6ae..3f0d52d1ccf5 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/preact": "^3.5.3", "@preact/signals": "^1.3.0", - "astro": "^4.16.9", + "astro": "^4.16.10", "preact": "^10.24.3" } } diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json index d92e84e0a851..b5491d77cc0e 100644 --- a/examples/framework-react/package.json +++ b/examples/framework-react/package.json @@ -14,7 +14,7 @@ "@astrojs/react": "^3.6.2", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", - "astro": "^4.16.9", + "astro": "^4.16.10", "react": "^18.3.1", "react-dom": "^18.3.1" } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index 557a308924c7..e67c3f573c93 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/solid-js": "^4.4.2", - "astro": "^4.16.9", + "astro": "^4.16.10", "solid-js": "^1.9.3" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index f2ec05469624..266dfb85a7c1 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -11,8 +11,8 @@ "astro": "astro" }, "dependencies": { - "@astrojs/svelte": "^5.7.2", - "astro": "^4.16.9", + "@astrojs/svelte": "^5.7.3", + "astro": "^4.16.10", "svelte": "^4.2.19" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index 861184c0fac1..10da8e798381 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/vue": "^4.5.2", - "astro": "^4.16.9", + "astro": "^4.16.10", "vue": "^3.5.12" } } diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index 8ef5d3f6590c..534898a39de5 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -12,6 +12,6 @@ }, "dependencies": { "@astrojs/node": "^8.3.4", - "astro": "^4.16.9" + "astro": "^4.16.10" } } diff --git a/examples/integration/package.json b/examples/integration/package.json index 246c2a5985f4..63697a0e24c3 100644 --- a/examples/integration/package.json +++ b/examples/integration/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^4.16.9" + "astro": "^4.16.10" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/minimal/package.json b/examples/minimal/package.json index 840147261585..5ba444a9e410 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.16.9" + "astro": "^4.16.10" } } diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index faf2310e1d3e..861fb95c69c4 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.16.9" + "astro": "^4.16.10" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 51c12cceb827..aa06d247e2c6 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -13,8 +13,8 @@ }, "dependencies": { "@astrojs/node": "^8.3.4", - "@astrojs/svelte": "^5.7.2", - "astro": "^4.16.9", + "@astrojs/svelte": "^5.7.3", + "astro": "^4.16.10", "svelte": "^4.2.19" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index f5b84e66b758..70106978bf71 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -10,7 +10,7 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.16.9", + "astro": "^4.16.10", "sass": "^1.80.6", "sharp": "^0.33.3" } diff --git a/examples/toolbar-app/package.json b/examples/toolbar-app/package.json index 1c00d9d0b202..043e6a0647d0 100644 --- a/examples/toolbar-app/package.json +++ b/examples/toolbar-app/package.json @@ -15,6 +15,6 @@ "./app": "./dist/app.js" }, "devDependencies": { - "astro": "^4.16.9" + "astro": "^4.16.10" } } diff --git a/examples/with-markdoc/package.json b/examples/with-markdoc/package.json index 4110a2bc13e6..fb6abf4f9b63 100644 --- a/examples/with-markdoc/package.json +++ b/examples/with-markdoc/package.json @@ -12,6 +12,6 @@ }, "dependencies": { "@astrojs/markdoc": "^0.11.5", - "astro": "^4.16.9" + "astro": "^4.16.10" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index 441293d99cf7..a49d5d1292c6 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/mdx": "^3.1.9", "@astrojs/preact": "^3.5.3", - "astro": "^4.16.9", + "astro": "^4.16.10", "preact": "^10.24.3" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 35d262c4d3b4..dfbdf14e597b 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/preact": "^3.5.3", "@nanostores/preact": "^0.5.2", - "astro": "^4.16.9", + "astro": "^4.16.10", "nanostores": "^0.11.3", "preact": "^10.24.3" } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index fa959cdf443c..85e9efa0b322 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -14,7 +14,7 @@ "@astrojs/mdx": "^3.1.9", "@astrojs/tailwind": "^5.1.2", "@types/canvas-confetti": "^1.6.4", - "astro": "^4.16.9", + "astro": "^4.16.10", "autoprefixer": "^10.4.20", "canvas-confetti": "^1.9.3", "postcss": "^8.4.47", diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index 120ee754f59b..4c7391979a10 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -12,7 +12,7 @@ "test": "vitest" }, "dependencies": { - "astro": "^4.16.9", + "astro": "^4.16.10", "vitest": "^2.1.4" } } diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index e3f5f0c0d4a5..d96ac516ba2e 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,17 @@ # astro +## 4.16.10 + +### Patch Changes + +- [#12311](https://github.com/withastro/astro/pull/12311) [`bf2723e`](https://github.com/withastro/astro/commit/bf2723e83140099914b29c6d51eb147a065be460) Thanks [@dinesh-58](https://github.com/dinesh-58)! - Adds `checked` to the list of boolean attributes. + +- [#12363](https://github.com/withastro/astro/pull/12363) [`222f718`](https://github.com/withastro/astro/commit/222f71894cc7118319ce83b3b29fa61a9dbebb75) Thanks [@Fryuni](https://github.com/Fryuni)! - Fixes code generated by `astro add` command when adding a version of an integration other than the default `latest`. + +- [#12368](https://github.com/withastro/astro/pull/12368) [`493fe43`](https://github.com/withastro/astro/commit/493fe43cd3ef94b087b8958031ecc964ae73463b) Thanks [@bluwy](https://github.com/bluwy)! - Improves error logs when executing commands + +- [#12355](https://github.com/withastro/astro/pull/12355) [`c4726d7`](https://github.com/withastro/astro/commit/c4726d7ba8cc93157390ce64d5c8b718ed5cac29) Thanks [@apatel369](https://github.com/apatel369)! - Improves error reporting for invalid frontmatter in MDX files during the `astro build` command. The error message now includes the file path where the frontmatter parsing failed. + ## 4.16.9 ### Patch Changes diff --git a/packages/astro/package.json b/packages/astro/package.json index b756f047abf3..c13e8f7fb85f 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "astro", - "version": "4.16.9", + "version": "4.16.10", "description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.", "type": "module", "author": "withastro", diff --git a/packages/integrations/svelte/CHANGELOG.md b/packages/integrations/svelte/CHANGELOG.md index 12f1560c8c3c..5e996c7160f5 100644 --- a/packages/integrations/svelte/CHANGELOG.md +++ b/packages/integrations/svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # @astrojs/svelte +## 5.7.3 + +### Patch Changes + +- [#12390](https://github.com/withastro/astro/pull/12390) [`6fd3d59`](https://github.com/withastro/astro/commit/6fd3d5960f5ab16591bfdb94d1f9b9a9b72006cf) Thanks [@bluwy](https://github.com/bluwy)! - Adds support for Svelte 5's new `@render` syntax while maintaining backward compatibility with traditional slots. + ## 5.7.2 ### Patch Changes diff --git a/packages/integrations/svelte/package.json b/packages/integrations/svelte/package.json index 9eccc4fe7667..08a87c36639a 100644 --- a/packages/integrations/svelte/package.json +++ b/packages/integrations/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@astrojs/svelte", - "version": "5.7.2", + "version": "5.7.3", "description": "Use Svelte components within Astro", "type": "module", "types": "./dist/index.d.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a8e2e24e4e8e..f21e9c712c55 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -139,7 +139,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro examples/blog: @@ -154,13 +154,13 @@ importers: specifier: ^3.2.1 version: link:../../packages/integrations/sitemap astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro examples/component: devDependencies: astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro examples/container-with-vitest: @@ -169,7 +169,7 @@ importers: specifier: ^3.6.2 version: link:../../packages/integrations/react astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -200,7 +200,7 @@ importers: specifier: ^3.14.3 version: 3.14.3 astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro examples/framework-lit: @@ -212,7 +212,7 @@ importers: specifier: ^0.2.1 version: 0.2.1 astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro lit: specifier: ^3.2.1 @@ -230,7 +230,7 @@ importers: specifier: ^4.4.2 version: link:../../packages/integrations/solid '@astrojs/svelte': - specifier: ^5.7.2 + specifier: ^5.7.3 version: link:../../packages/integrations/svelte '@astrojs/vue': specifier: ^4.5.2 @@ -242,7 +242,7 @@ importers: specifier: ^18.3.1 version: 18.3.1 astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro preact: specifier: ^10.24.3 @@ -272,7 +272,7 @@ importers: specifier: ^1.3.0 version: 1.3.0(preact@10.24.3) astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro preact: specifier: ^10.24.3 @@ -290,7 +290,7 @@ importers: specifier: ^18.3.1 version: 18.3.1 astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -305,7 +305,7 @@ importers: specifier: ^4.4.2 version: link:../../packages/integrations/solid astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro solid-js: specifier: ^1.9.3 @@ -314,10 +314,10 @@ importers: examples/framework-svelte: dependencies: '@astrojs/svelte': - specifier: ^5.7.2 + specifier: ^5.7.3 version: link:../../packages/integrations/svelte astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro svelte: specifier: ^4.2.19 @@ -329,7 +329,7 @@ importers: specifier: ^4.5.2 version: link:../../packages/integrations/vue astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro vue: specifier: ^3.5.12 @@ -341,25 +341,25 @@ importers: specifier: ^8.3.4 version: 8.3.4(astro@packages+astro) astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro examples/minimal: dependencies: astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro examples/ssr: @@ -368,10 +368,10 @@ importers: specifier: ^8.3.4 version: 8.3.4(astro@packages+astro) '@astrojs/svelte': - specifier: ^5.7.2 + specifier: ^5.7.3 version: link:../../packages/integrations/svelte astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro svelte: specifier: ^4.2.19 @@ -380,7 +380,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro sass: specifier: ^1.80.6 @@ -392,7 +392,7 @@ importers: examples/toolbar-app: devDependencies: astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro examples/with-markdoc: @@ -401,7 +401,7 @@ importers: specifier: ^0.11.5 version: link:../../packages/integrations/markdoc astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro examples/with-mdx: @@ -413,7 +413,7 @@ importers: specifier: ^3.5.3 version: link:../../packages/integrations/preact astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro preact: specifier: ^10.24.3 @@ -428,7 +428,7 @@ importers: specifier: ^0.5.2 version: 0.5.2(nanostores@0.11.3)(preact@10.24.3) astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro nanostores: specifier: ^0.11.3 @@ -449,7 +449,7 @@ importers: specifier: ^1.6.4 version: 1.6.4 astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro autoprefixer: specifier: ^10.4.20 @@ -467,7 +467,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^4.16.9 + specifier: ^4.16.10 version: link:../../packages/astro vitest: specifier: ^2.1.4