diff --git a/e2e/adapters-e2e/adapters/express/vite.config.ts b/e2e/adapters-e2e/adapters/express/vite.config.ts
index 5c0ac664b36..a08e8dc531a 100644
--- a/e2e/adapters-e2e/adapters/express/vite.config.ts
+++ b/e2e/adapters-e2e/adapters/express/vite.config.ts
@@ -6,7 +6,7 @@ export default extendConfig(baseConfig, () => {
return {
build: {
ssr: true,
- rollupOptions: {
+ rolldownOptions: {
input: ['src/entry.express.tsx'],
},
},
diff --git a/e2e/qwik-e2e/apps/preloader-test/vite.config.ts b/e2e/qwik-e2e/apps/preloader-test/vite.config.ts
index 944f0579b63..d4c702fc557 100644
--- a/e2e/qwik-e2e/apps/preloader-test/vite.config.ts
+++ b/e2e/qwik-e2e/apps/preloader-test/vite.config.ts
@@ -75,14 +75,23 @@ export default defineConfig((): UserConfig => {
],
build: {
minify: false,
- rollupOptions: {
+ rolldownOptions: {
output: {
- manualChunks: (id) => {
- // Put library code in separate chunks
- if (id.includes('vendor-lib')) {
- return id;
- }
+ codeSplitting: {
+ groups: [
+ {
+ name: (id) => {
+ if (id.includes('vendor-lib')) {
+ return 'vendor';
+ }
+ },
+ },
+ ],
},
+ comments: true,
+ },
+ experimental: {
+ attachDebugInfo: 'full',
},
},
},
diff --git a/e2e/qwik-e2e/apps/qwikrouter-ssg-snapshot/expected.ssg.html b/e2e/qwik-e2e/apps/qwikrouter-ssg-snapshot/expected.ssg.html
index 2ffadd3e233..156c0d68152 100644
--- a/e2e/qwik-e2e/apps/qwikrouter-ssg-snapshot/expected.ssg.html
+++ b/e2e/qwik-e2e/apps/qwikrouter-ssg-snapshot/expected.ssg.html
@@ -1,3 +1,3 @@
-
Qwik Router SSG SnapshotSSG Snapshot Fixture
routeLoader$ | useResource$ | useSignal
{"heading":"SSG Snapshot Fixture","stats":[2,3,5,8],"tags":["routeLoader$","useResource$","useSignal"],"profile":{"name":"router-state","status":"stable"}}{"total":18,"selectedCount":2,"clicks":2}{"headline":"router-state:stable","selected":["alpha","beta"],"weighted":[2,6,15,32],"summary":{"total":18,"selectedCount":2,"clicks":2}}[state omitted]
+Qwik Router SSG SnapshotSSG Snapshot Fixture
routeLoader$ | useResource$ | useSignal
{"heading":"SSG Snapshot Fixture","stats":[2,3,5,8],"tags":["routeLoader$","useResource$","useSignal"],"profile":{"name":"router-state","status":"stable"}}{"total":18,"selectedCount":2,"clicks":2}{"headline":"router-state:stable","selected":["alpha","beta"],"weighted":[2,6,15,32],"summary":{"total":18,"selectedCount":2,"clicks":2}}[state omitted]
[vnode map omitted]
\ No newline at end of file
diff --git a/e2e/qwik-e2e/tests/style.e2e.ts b/e2e/qwik-e2e/tests/style.e2e.ts
index a463f5acef2..187e743770e 100644
--- a/e2e/qwik-e2e/tests/style.e2e.ts
+++ b/e2e/qwik-e2e/tests/style.e2e.ts
@@ -1,6 +1,6 @@
import { test, expect } from '@playwright/test';
-const USE_STYLES_DEDUPE_MARKER = '--use-styles-dedupe-marker: dedupe-ok';
+const USE_STYLES_DEDUPE_MARKER = '--use-styles-dedupe-marker:dedupe-ok';
test.describe('styles', () => {
test.beforeEach(async ({ page }) => {
diff --git a/e2e/qwik-react-e2e/adapters/express/vite.config.ts b/e2e/qwik-react-e2e/adapters/express/vite.config.ts
index 5c0ac664b36..a08e8dc531a 100644
--- a/e2e/qwik-react-e2e/adapters/express/vite.config.ts
+++ b/e2e/qwik-react-e2e/adapters/express/vite.config.ts
@@ -6,7 +6,7 @@ export default extendConfig(baseConfig, () => {
return {
build: {
ssr: true,
- rollupOptions: {
+ rolldownOptions: {
input: ['src/entry.express.tsx'],
},
},
diff --git a/package.json b/package.json
index 0e8e49daef6..aabe0474447 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,7 @@
"syncpack": {
"versionGroups": [
{
- "label": "Be lenient in vite versions for prod. v4 is broken, v5 is good",
+ "label": "Only accept vite 6 or higher",
"dependencyTypes": [
"prod",
"peer"
@@ -19,7 +19,7 @@
"dependencies": [
"vite"
],
- "pinVersion": ">=6 <9"
+ "pinVersion": ">=6"
},
{
"label": "optimizer needs exact workspace version",
@@ -129,7 +129,7 @@
"@types/semver": "7.7.1",
"@types/tmp": "0.2.6",
"@types/which-pm-runs": "1.0.2",
- "@vitejs/plugin-basic-ssl": "2.1.4",
+ "@vitejs/plugin-basic-ssl": "2.2.0",
"@vitest/coverage-v8": "4.0.18",
"all-contributors-cli": "6.26.1",
"brotli": "1.3.3",
@@ -155,7 +155,7 @@
"prettier-plugin-tailwindcss": "0.7.2",
"pretty-quick": "4.2.2",
"prompts": "2.4.2",
- "rollup": "4.59.0",
+ "rolldown": "1.0.0-rc.16",
"semver": "7.7.3",
"simple-git-hooks": "2.13.1",
"snoop": "1.0.4",
@@ -169,7 +169,7 @@
"typescript": "5.9.3",
"typescript-eslint": "8.56.1",
"vfile": "6.0.3",
- "vite": "7.3.1",
+ "vite": "8.0.9",
"vite-imagetools": "10.0.0",
"vite-plugin-dts": "4.5.4",
"vite-tsconfig-paths": "6.0.4",
diff --git a/packages/docs/adapters/cloudflare-pages/vite.config.ts b/packages/docs/adapters/cloudflare-pages/vite.config.ts
index 09178a42746..ea38d64e89d 100644
--- a/packages/docs/adapters/cloudflare-pages/vite.config.ts
+++ b/packages/docs/adapters/cloudflare-pages/vite.config.ts
@@ -6,7 +6,7 @@ export default extendConfig(baseConfig, () => {
return {
build: {
ssr: true,
- rollupOptions: {
+ rolldownOptions: {
input: ['src/entry.cloudflare-pages.tsx'],
},
minify: false,
diff --git a/packages/docs/package.json b/packages/docs/package.json
index d57b6387f34..67d119422d3 100644
--- a/packages/docs/package.json
+++ b/packages/docs/package.json
@@ -20,7 +20,7 @@
"@qwik.dev/partytown": "0.11.2",
"@qwik.dev/react": "workspace:*",
"@qwik.dev/router": "workspace:*",
- "@rolldown/browser": "1.0.0-beta.59",
+ "@rolldown/browser": "1.0.0-rc.12",
"@shikijs/colorized-brackets": "3.21.0",
"@shikijs/langs": "3.21.0",
"@shikijs/rehype": "3.21.0",
@@ -28,7 +28,8 @@
"@shikijs/transformers": "3.21.0",
"@shikijs/types": "3.21.0",
"@supabase/supabase-js": "2.53.0",
- "@tailwindcss/vite": "4.1.18",
+ "@tailwindcss/postcss": "4.2.2",
+ "@tailwindcss/vite": "4.2.2",
"@types/leaflet": "1.9.21",
"@types/prismjs": "1.26.5",
"@types/react": "19.2.7",
@@ -44,21 +45,23 @@
"pagefind": "1.4.0",
"prettier": "3.7.4",
"prism-themes": "1.9.0",
- "prismjs": "1.30.0",
"qwik-image": "0.0.16",
"react": "19.2.3",
"react-dom": "19.2.3",
"shiki": "3.21.0",
"snarkdown": "2.0.0",
- "tailwindcss": "4.1.18",
+ "tailwindcss": "4.2.1",
"terser": "5.46.0",
"tsm": "2.3.0",
"typescript": "5.9.3",
"valibot": "1.2.0",
- "vite": "7.3.1",
+ "vite": "8.0.9",
"vite-tsconfig-paths": "6.0.4",
"wrangler": "4.80.0"
},
+ "dependencies": {
+ "prismjs": "1.30.0"
+ },
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
"npm": "please-use-pnpm",
diff --git a/packages/docs/src/routes/docs/deployments/cloudflare-pages/index.mdx b/packages/docs/src/routes/docs/deployments/cloudflare-pages/index.mdx
index 9689f213f3e..0244d5f8ac8 100644
--- a/packages/docs/src/routes/docs/deployments/cloudflare-pages/index.mdx
+++ b/packages/docs/src/routes/docs/deployments/cloudflare-pages/index.mdx
@@ -151,7 +151,7 @@ export default extendConfig(baseConfig, () => {
return {
build: {
ssr: true,
- rollupOptions: {
+ rolldownOptions: {
input: [
'src/entry.cloudflare-pages.tsx',
// This ensures that the SSG can read the routes from the config
diff --git a/packages/docs/src/routes/docs/deployments/static/index.mdx b/packages/docs/src/routes/docs/deployments/static/index.mdx
index c360b9969e8..cb7448dc60d 100644
--- a/packages/docs/src/routes/docs/deployments/static/index.mdx
+++ b/packages/docs/src/routes/docs/deployments/static/index.mdx
@@ -53,7 +53,7 @@ export default extendConfig(baseConfig, () => {
return {
build: {
ssr: true,
- rollupOptions: {
+ rolldownOptions: {
input: ['@qwik-router-config'],
},
},
diff --git a/packages/docs/vite.config.ts b/packages/docs/vite.config.ts
index a8eda7507d7..2242d715adb 100644
--- a/packages/docs/vite.config.ts
+++ b/packages/docs/vite.config.ts
@@ -12,7 +12,7 @@ import type { ShikiTransformer } from '@shikijs/types';
import tailwindcss from '@tailwindcss/vite';
import path, { resolve } from 'node:path';
// import { qwikDevtools } from '@qwik.dev/devtools';
-import { defineConfig, loadEnv, type Plugin, type Rollup, type UserConfig } from 'vite';
+import { defineConfig, loadEnv, type Plugin, type UserConfig } from 'vite';
import { compiledStringPlugin } from '../../scripts/compiled-string-plugin.js';
import { examplesData, playgroundData, rawSource, tutorialData } from './vite.repl-apps';
import { sourceResolver } from './vite.source-resolver';
@@ -27,10 +27,10 @@ const muteWarningsPlugin = (warningsToIgnore: string[][]): Plugin => {
name: 'mute-warnings',
enforce: 'pre',
config: (userConfig) => {
- const origOnLog = userConfig.build?.rollupOptions?.onLog;
+ const origOnLog = userConfig.build?.rolldownOptions?.onLog;
return {
build: {
- rollupOptions: {
+ rolldownOptions: {
onLog(type, warning, defaultHandler) {
if (type === 'warn') {
if (warning.code) {
@@ -98,42 +98,6 @@ function transformerMetaShowTitle(): ShikiTransformer {
};
}
-function overrideManualChunksForRepl(): Plugin {
- return {
- name: 'override-manual-chunks-for-repl',
- enforce: 'post',
- config(userConfig) {
- const prevOutput = userConfig.build?.rollupOptions?.output;
- const prevManualChunks: Rollup.ManualChunksOption | undefined =
- prevOutput && !Array.isArray(prevOutput)
- ? (prevOutput as Rollup.OutputOptions).manualChunks
- : undefined;
-
- return {
- build: {
- rollupOptions: {
- output: {
- manualChunks: (id, meta) => {
- const moduleInfo = meta.getModuleInfo(id);
- if (moduleInfo) {
- // Prevent the similar optimizer plugin logic from running on the repl
- if (id.includes('repl') && (moduleInfo as any).meta?.qwikdeps?.length === 0) {
- return null;
- }
- }
-
- if (typeof prevManualChunks === 'function') {
- return prevManualChunks(id, meta);
- }
- },
- },
- },
- },
- };
- },
- };
-}
-
export default defineConfig(({ mode }) => {
const routesDir = resolve('src', 'routes');
const isProd = mode === 'production';
@@ -264,12 +228,12 @@ export default defineConfig(({ mode }) => {
qwikReact(),
qwikInsights({ publicApiKey: insightsApiKey }),
tailwindcss(),
- overrideManualChunksForRepl(),
// qwikDevtools(),
],
build: {
sourcemap: true,
- rollupOptions: {
+ rolldownOptions: {
+ makeAbsoluteExternalsRelative: true,
output: {
assetFileNames: 'assets/[hash]-[name].[ext]',
},
diff --git a/packages/docs/vite.repl-apps.ts b/packages/docs/vite.repl-apps.ts
index a8f70a854b1..d8c9cb2639b 100644
--- a/packages/docs/vite.repl-apps.ts
+++ b/packages/docs/vite.repl-apps.ts
@@ -2,7 +2,7 @@ import type { TransformModuleInput } from '@qwik.dev/core/optimizer';
import MagicString from 'magic-string';
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
import { basename, join } from 'node:path';
-import type { PluginContext } from 'rollup';
+import type { PluginContext } from 'rolldown';
import type { Plugin } from 'vite';
import type { ReplModuleInput } from './src/repl/types';
import type { ExampleSection } from './src/routes/examples/apps/examples-data';
diff --git a/packages/insights/adapters/netlify-edge/vite.config.ts b/packages/insights/adapters/netlify-edge/vite.config.ts
index 42f7ec4061a..4818da43b87 100644
--- a/packages/insights/adapters/netlify-edge/vite.config.ts
+++ b/packages/insights/adapters/netlify-edge/vite.config.ts
@@ -6,7 +6,7 @@ export default extendConfig(baseConfig, () => {
return {
build: {
ssr: true,
- rollupOptions: {
+ rolldownOptions: {
input: ['src/entry.netlify-edge.tsx'],
},
outDir: '.netlify/edge-functions/entry.netlify-edge',
diff --git a/packages/insights/package.json b/packages/insights/package.json
index fa476e1c9c9..7e5665c9bea 100644
--- a/packages/insights/package.json
+++ b/packages/insights/package.json
@@ -19,7 +19,7 @@
"@netlify/edge-functions": "3.0.6",
"@qwik.dev/core": "workspace:*",
"@qwik.dev/router": "workspace:*",
- "@tailwindcss/vite": "4.1.18",
+ "@tailwindcss/vite": "4.2.2",
"@types/density-clustering": "1.3.3",
"@types/node": "24.10.0",
"autoprefixer": "10.4.23",
@@ -30,10 +30,10 @@
"postcss": "8.5.6",
"prettier": "3.7.4",
"prettier-plugin-tailwindcss": "0.7.2",
- "tailwindcss": "4.1.18",
+ "tailwindcss": "4.2.1",
"typescript": "5.9.3",
"typescript-eslint": "8.56.1",
- "vite": "7.3.1",
+ "vite": "8.0.9",
"vite-tsconfig-paths": "6.0.4",
"vitest": "4.0.18",
"zod": "3.25.48"
diff --git a/packages/optimizer/vite.config.ts b/packages/optimizer/vite.config.ts
index afd46ba5304..293a887d027 100644
--- a/packages/optimizer/vite.config.ts
+++ b/packages/optimizer/vite.config.ts
@@ -22,7 +22,7 @@ export default defineConfig(({ mode }) => ({
fileName: () => 'index.mjs',
formats: ['es'],
},
- rollupOptions: {
+ rolldownOptions: {
output: { banner: getBanner('@qwik.dev/optimizer', version) },
},
},
diff --git a/packages/qwik-react/package.json b/packages/qwik-react/package.json
index f5a4f017566..7c43701ce18 100644
--- a/packages/qwik-react/package.json
+++ b/packages/qwik-react/package.json
@@ -10,7 +10,7 @@
"react": "19.2.3",
"react-dom": "19.2.3",
"typescript": "5.9.3",
- "vite": "7.3.1"
+ "vite": "8.0.9"
},
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
@@ -38,7 +38,7 @@
"@types/react-dom": "^18",
"react": "^18",
"react-dom": "^18",
- "vite": ">=6 <9"
+ "vite": ">=6"
},
"publishConfig": {
"access": "public"
diff --git a/packages/qwik-react/vite.config.ts b/packages/qwik-react/vite.config.ts
index a2c2ba1eb63..a2dbe689ed7 100644
--- a/packages/qwik-react/vite.config.ts
+++ b/packages/qwik-react/vite.config.ts
@@ -11,7 +11,7 @@ export default defineConfig(() => {
formats: ['es'],
fileName: (format, entryName) => `${entryName}.mjs`,
},
- rollupOptions: {
+ rolldownOptions: {
external: [
'react',
'react/jsx-runtime',
diff --git a/packages/qwik-router/package.json b/packages/qwik-router/package.json
index 4652e0ce21d..83718cd4f8a 100644
--- a/packages/qwik-router/package.json
+++ b/packages/qwik-router/package.json
@@ -26,7 +26,6 @@
"unist-util-visit": "^5.0.0",
"valibot": ">=0.36.0 <2",
"vfile": "6.0.3",
- "vite": ">=6 <9",
"vite-imagetools": "10.0.0",
"yaml": "^2.8.2",
"zod": "^3.25.48"
@@ -40,7 +39,8 @@
"@types/set-cookie-parser": "2.4.10",
"tsm": "2.3.0",
"typescript": "5.9.3",
- "uvu": "0.5.6"
+ "uvu": "0.5.6",
+ "vite": "8.0.9"
},
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
@@ -169,7 +169,7 @@
"main": "./lib/index.qwik.mjs",
"peerDependencies": {
"@qwik.dev/core": "workspace:^",
- "vite": ">=6 <9"
+ "vite": ">=6"
},
"publishConfig": {
"access": "public"
diff --git a/packages/qwik-router/src/adapters/cloudflare-pages/vite/index.ts b/packages/qwik-router/src/adapters/cloudflare-pages/vite/index.ts
index ed0fed99c06..bdfa3602098 100644
--- a/packages/qwik-router/src/adapters/cloudflare-pages/vite/index.ts
+++ b/packages/qwik-router/src/adapters/cloudflare-pages/vite/index.ts
@@ -26,7 +26,7 @@ export function cloudflarePagesAdapter(opts: CloudflarePagesAdapterOptions = {})
},
build: {
ssr: true,
- rollupOptions: {
+ rolldownOptions: {
output: {
format: 'es',
hoistTransitiveImports: false,
diff --git a/packages/qwik-router/src/adapters/deno-server/vite/index.ts b/packages/qwik-router/src/adapters/deno-server/vite/index.ts
index aba61a974b5..da99c27f2b7 100644
--- a/packages/qwik-router/src/adapters/deno-server/vite/index.ts
+++ b/packages/qwik-router/src/adapters/deno-server/vite/index.ts
@@ -23,7 +23,7 @@ export function denoServerAdapter(opts: DenoServerAdapterOptions = {}): any {
build: {
ssr: true,
target: 'esnext',
- rollupOptions: {
+ rolldownOptions: {
output: {
format: 'es',
hoistTransitiveImports: false,
diff --git a/packages/qwik-router/src/adapters/netlify-edge/vite/index.ts b/packages/qwik-router/src/adapters/netlify-edge/vite/index.ts
index 26dbade0b40..0cb35eac95e 100644
--- a/packages/qwik-router/src/adapters/netlify-edge/vite/index.ts
+++ b/packages/qwik-router/src/adapters/netlify-edge/vite/index.ts
@@ -27,7 +27,7 @@ export function netlifyEdgeAdapter(opts: NetlifyEdgeAdapterOptions = {}): any {
build: {
ssr: true,
outDir,
- rollupOptions: {
+ rolldownOptions: {
output: {
format: 'es',
hoistTransitiveImports: false,
diff --git a/packages/qwik-router/src/adapters/vercel-edge/vite/index.ts b/packages/qwik-router/src/adapters/vercel-edge/vite/index.ts
index 5ee9116505f..d5c9ae9b24b 100644
--- a/packages/qwik-router/src/adapters/vercel-edge/vite/index.ts
+++ b/packages/qwik-router/src/adapters/vercel-edge/vite/index.ts
@@ -29,7 +29,7 @@ export function vercelEdgeAdapter(opts: VercelEdgeAdapterOptions = {}): any {
build: {
ssr: true,
outDir,
- rollupOptions: {
+ rolldownOptions: {
output: {
format: 'es',
hoistTransitiveImports: false,
diff --git a/packages/qwik-router/src/ssg/bundle-isolation.unit.ts b/packages/qwik-router/src/ssg/bundle-isolation.unit.ts
index 69f81f9fe83..bb4cc09826d 100644
--- a/packages/qwik-router/src/ssg/bundle-isolation.unit.ts
+++ b/packages/qwik-router/src/ssg/bundle-isolation.unit.ts
@@ -65,7 +65,7 @@ describe('SSG worker bundle isolation', () => {
minify: false,
outDir,
ssr: true,
- rollupOptions: {
+ rolldownOptions: {
input: join(appDir, 'run-ssg.ts'),
},
},
diff --git a/packages/qwik-router/vite.config.ts b/packages/qwik-router/vite.config.ts
index 4ab77e10c19..9916fbaccee 100644
--- a/packages/qwik-router/vite.config.ts
+++ b/packages/qwik-router/vite.config.ts
@@ -3,8 +3,9 @@ import { defineConfig } from 'vite';
import { compiledStringPlugin } from '../../scripts/compiled-string-plugin.js';
import { ssgWorkerImportPlugin } from './src/buildtime/vite/ssg-worker-imports';
import pkg from './package.json' with { type: 'json' };
+import type { UserConfig } from 'vite';
-export default defineConfig(() => {
+export default defineConfig((): UserConfig => {
return {
build: {
emptyOutDir: false,
@@ -13,7 +14,7 @@ export default defineConfig(() => {
target: 'esnext',
outDir: 'lib',
minify: false,
- rollupOptions: {
+ rolldownOptions: {
input: {
index: './src/runtime/src/',
'adapters/azure-swa/vite': './src/adapters/azure-swa/vite',
diff --git a/packages/qwik-vite/package.json b/packages/qwik-vite/package.json
index 82e40fecd7f..a19a392bf3e 100644
--- a/packages/qwik-vite/package.json
+++ b/packages/qwik-vite/package.json
@@ -1,7 +1,10 @@
{
"name": "@qwik.dev/qwik-vite",
"devDependencies": {
- "image-size": "1.2.1"
+ "image-size": "1.2.1",
+ "rolldown": "1.0.0-rc.16",
+ "rollup": "4.60.2",
+ "vite": "8.0.9"
},
"private": true
}
diff --git a/packages/qwik-vite/src/manifest.ts b/packages/qwik-vite/src/manifest.ts
index 121b90598b8..c2cdeef2709 100644
--- a/packages/qwik-vite/src/manifest.ts
+++ b/packages/qwik-vite/src/manifest.ts
@@ -395,6 +395,7 @@ export function computeTotals(graph: QwikManifest['bundles']): void {
const preloaderRegex = /[/\\](core|qwik)[/\\]dist[/\\]preloader\.(|c|m)js$/;
const coreRegex = /[/\\](core|qwik)[/\\]dist[/\\]core(\.min|\.prod)?\.(|c|m)js$/;
const qwikLoaderRegex = /[/\\](core|qwik)[/\\](dist[/\\])?qwikloader(\.debug)?\.[^/]*js$/;
+const handlersRegex = /[/\\](core|qwik)[/\\]handlers\.(|c|m)js$/;
/**
* Generates the Qwik build manifest from the Rollup output bundles. It also figures out the bundle
* files for the preloader, core, qwikloader and handlers. This information is used during SSR.
@@ -486,8 +487,6 @@ export function generateManifestFromBundles(
}
}
const bundleImports = outputBundle.imports
- // Tree shaking might remove imports
- .filter((i) => outputBundle.code.includes(path.basename(i)))
.map((i) => getBundleName(i))
.filter((i) => i !== preloaderBundleName && i !== coreBundleName && i !== qwikHandlersName)
.filter(Boolean) as string[];
@@ -495,7 +494,6 @@ export function generateManifestFromBundles(
bundle.imports = bundleImports;
}
const bundleDynamicImports = outputBundle.dynamicImports
- .filter((i) => outputBundle.code.includes(path.basename(i)))
.map((i) => getBundleName(i))
.filter(Boolean) as string[];
if (bundleDynamicImports.length > 0) {
@@ -510,6 +508,8 @@ export function generateManifestFromBundles(
manifest.core = bundleFileName;
} else if (qwikLoaderRegex.test(outputBundle.facadeModuleId)) {
manifest.qwikLoader = bundleFileName;
+ } else if (handlersRegex.test(outputBundle.facadeModuleId)) {
+ qwikHandlersName = bundleFileName;
}
}
// Rollup doesn't provide the moduleIds in the outputBundle but Vite does
@@ -529,6 +529,9 @@ export function generateManifestFromBundles(
if (!manifest.qwikLoader && modulePaths.some((m) => qwikLoaderRegex.test(m))) {
manifest.qwikLoader = bundleFileName;
}
+ if (!qwikHandlersName && modulePaths.some((m) => handlersRegex.test(m))) {
+ qwikHandlersName = bundleFileName;
+ }
}
manifest.bundles[bundleFileName] = bundle;
diff --git a/packages/qwik-vite/src/plugins/bundle-graph.ts b/packages/qwik-vite/src/plugins/bundle-graph.ts
index 94117adcfec..0677995bd5b 100644
--- a/packages/qwik-vite/src/plugins/bundle-graph.ts
+++ b/packages/qwik-vite/src/plugins/bundle-graph.ts
@@ -115,22 +115,6 @@ export function convertManifestToBundleGraph(
const names = Object.keys(graph);
const map = new Map }>();
- const clearTransitiveDeps = (
- parentDeps: Set,
- bundleName: string,
- seen: Set = new Set()
- ) => {
- const bundle = graph[bundleName];
- for (const dep of bundle.imports!) {
- if (parentDeps.has(dep)) {
- parentDeps.delete(dep);
- }
- if (!seen.has(dep)) {
- seen.add(dep);
- clearTransitiveDeps(parentDeps, dep, seen);
- }
- }
- };
/**
* First pass to collect minimal dependency lists and allocate space for dependencies. Minimal
@@ -141,13 +125,9 @@ export function convertManifestToBundleGraph(
const bundle = graph[bundleName];
// external dependencies are not included in `graph`
const deps = new Set(bundle.imports!);
- for (const depName of deps) {
- clearTransitiveDeps(deps, depName);
- }
const dynDeps = new Set(bundle.dynamicImports!);
const depProbability = new Map();
for (const depName of dynDeps) {
- clearTransitiveDeps(dynDeps, depName);
const dep = graph[depName];
// Calculate the probability of the dependency
diff --git a/packages/qwik-vite/src/plugins/bundle-graph.unit.ts b/packages/qwik-vite/src/plugins/bundle-graph.unit.ts
index 0bca11d533f..5e1bfd4a3b6 100644
--- a/packages/qwik-vite/src/plugins/bundle-graph.unit.ts
+++ b/packages/qwik-vite/src/plugins/bundle-graph.unit.ts
@@ -51,30 +51,30 @@ describe('convertManifestToBundleGraph', () => {
2,
'static-dep.js', // 2
-7,
- 5,
- // doesn't list 13 because it's also statically imported by dynamic-dep.js
- 'dynamic-dep.js', // 5
+ 13,
+ 6,
+ 'dynamic-dep.js', // 6
2,
- 12,
- -9,
13,
+ -9,
+ 14,
-7,
- 16,
- 'transitive-dep.js', // 12
- 'has-a-symbol.js', // 13
- -5,
17,
- 'boring-dep.js', // 16
- 'large-file.js', // 17
- 'sym1', // 18
+ 'transitive-dep.js', // 13
+ 'has-a-symbol.js', // 14
+ -5,
+ 18,
+ 'boring-dep.js', // 17
+ 'large-file.js', // 18
+ 'sym1', // 19
-7,
- 5,
- 'sym2', // 21
+ 6,
+ 'sym2', // 22
-7,
- 13,
- 'sym3', // 24
+ 14,
+ 'sym3', // 25
-5,
- 17,
+ 18,
]);
});
@@ -130,28 +130,29 @@ describe('convertManifestToBundleGraph', () => {
2,
'static-dep.js', // 2
-7,
- 5,
- 'dynamic-dep.js', // 5
+ 9,
+ 6,
+ 'dynamic-dep.js', // 6
2,
- 8,
- 'transitive-dep.js', // 8
- 'has-a-symbol.js', // 9
+ 9,
+ 'transitive-dep.js', // 9
+ 'has-a-symbol.js', // 10
-5,
- 12,
- 'large-file.js', // 12
- 'sym1', // 13
+ 13,
+ 'large-file.js', // 13
+ 'sym1', // 14
-7,
- 5,
- 'sym2', // 16
+ 6,
+ 'sym2', // 17
-7,
- 9,
- 'sym3', // 19
+ 10,
+ 'sym3', // 20
-5,
- 12,
- 'dashboard/', // 22
+ 13,
+ 'dashboard/', // 23
2,
-7,
- 8,
+ 9,
]);
});
@@ -208,127 +209,146 @@ describe('convertManifestToBundleGraph', () => {
[
"index.js",
-9,
- 18,
+ 26,
"index.qwik.mjs_ErrorBoundary_component_6VMZkqoH00Q.js",
"index.qwik.mjs_Form_form_onSubmit_5DbAsQLGGo4.js",
"index.qwik.mjs_Link_component_handlePrefetch_0xCNPioszTk.js",
- 27,
+ 38,
"index.qwik.mjs_QwikRouterMockProvider_component_goto_dNtHVLGwESE.js",
- 27,
+ 38,
"index.qwik.mjs_QwikRouterProvider_component_useStyles_BMutFDNOKhc.js",
+ 38,
+ -9,
+ 29,
+ -7,
27,
+ -6,
+ 0,
+ -5,
+ 33,
"index.qwik.mjs_routeActionQrl_action_submit_rufUrhffR5k.js",
"index.qwik.mjs_RouterOutlet_component_q56DrQcc9VE.js",
- 27,
+ 38,
"index.qwik.mjs_serverQrl_rpc_Nhj4Mq4ilm8.js",
- 27,
+ 38,
"index.qwik.mjs_spaInit_event_3mjmVvTlJqo.js",
"index.qwik.mjs_usePreventNavigateQrl_useVisibleTask_VjDx6RO4Kis.js",
"index.tsx_about_component_useStyles_WOcPLNnm2is.js",
"index.tsx_form_component_useStyles_0pasaG6nmEA.js",
- 27,
+ 38,
"index.tsx_routes_component_vG0UuU4cNCg.js",
+ -5,
+ 57,
+ 59,
"layout.js",
-9,
- 25,
+ 36,
"layout.tsx_layout_component_useStyles_MOLFIZOhXmE.js",
- 27,
+ 38,
"qwik-router.js",
+ -10,
+ 4,
+ 9,
+ -9,
+ 5,
+ 20,
+ 19,
+ 24,
"root.js",
-9,
- 31,
+ 50,
"root.tsx_root_component_9PcKHFjikV0.js",
- 27,
+ 38,
-9,
- 35,
+ 54,
"router-head.tsx_RouterHead_component_dAo05yeFq1I.js",
- 27,
+ 38,
"src-vendor-lib-helper.ts.js",
"src-vendor-lib-libA.ts.js",
- 37,
+ 56,
"src-vendor-lib-libB.ts.js",
- 37,
+ 56,
"BjxcCeNQ9ak",
-9,
- 21,
+ 29,
"eevMxFvmCM8",
-7,
- 25,
+ 36,
"99K9SAWjPFQ",
-9,
- 21,
+ 29,
"LopIayqLfMo",
-8,
9,
"VjDx6RO4Kis",
-9,
- 17,
+ 25,
"HEFxKy9cwuk",
-9,
- 21,
+ 29,
"6VMZkqoH00Q",
-7,
3,
"9PcKHFjikV0",
-7,
- 31,
+ 50,
"9fcUDoGM9Wo",
-8,
9,
"SHtFir1Ia94",
-7,
- 25,
+ 36,
"cH9twROgaEg",
-7,
7,
"dAo05yeFq1I",
-7,
- 35,
+ 54,
"ds9jIPT1g9s",
-7,
- 19,
+ 27,
"lTNqDDf58lI",
-7,
5,
"m7u9ARcfDGU",
-7,
- 18,
+ 26,
"q56DrQcc9VE",
-7,
- 12,
+ 20,
"vG0UuU4cNCg",
-9,
- 21,
+ 29,
"vXTAPbOW0Ig",
-7,
- 27,
+ 38,
"0pasaG6nmEA",
-7,
- 19,
+ 27,
"BMutFDNOKhc",
-8,
9,
"Iyy38y0K3Hw",
-9,
- 21,
+ 29,
"MOLFIZOhXmE",
-7,
- 25,
+ 36,
"WOcPLNnm2is",
-7,
- 18,
+ 26,
"3mjmVvTlJqo",
-6,
- 16,
+ 24,
"5DbAsQLGGo4",
-8,
4,
"Nhj4Mq4ilm8",
-6,
- 14,
+ 22,
"rufUrhffR5k",
-6,
- 11,
+ 19,
"0xCNPioszTk",
-7,
5,
@@ -337,19 +357,19 @@ describe('convertManifestToBundleGraph', () => {
3,
"ANY7TPAnAd8",
-7,
- 27,
+ 38,
"BdwdOv10pp0",
-8,
9,
"YCi2vDzuhns",
-7,
- 27,
+ 38,
"dNtHVLGwESE",
-7,
7,
"ep3t0fF0SDA",
-9,
- 21,
+ 29,
"lWJp5Z4VtFs",
-7,
5,
diff --git a/packages/qwik-vite/src/plugins/dev/image-size-server.ts b/packages/qwik-vite/src/plugins/dev/image-size-server.ts
index 5bebc462529..13ad28bf61e 100644
--- a/packages/qwik-vite/src/plugins/dev/image-size-server.ts
+++ b/packages/qwik-vite/src/plugins/dev/image-size-server.ts
@@ -1,20 +1,20 @@
-import bmp_1 from 'image-size/dist/types/bmp.js';
-import cur_1 from 'image-size/dist/types/cur.js';
-import dds_1 from 'image-size/dist/types/dds.js';
-import gif_1 from 'image-size/dist/types/gif.js';
-import icns_1 from 'image-size/dist/types/icns.js';
-import ico_1 from 'image-size/dist/types/ico.js';
-import j2c_1 from 'image-size/dist/types/j2c.js';
-import jp2_1 from 'image-size/dist/types/jp2.js';
-import jpg_1 from 'image-size/dist/types/jpg.js';
-import ktx_1 from 'image-size/dist/types/ktx.js';
-import png_1 from 'image-size/dist/types/png.js';
-import pnm_1 from 'image-size/dist/types/pnm.js';
-import psd_1 from 'image-size/dist/types/psd.js';
-import svg_1 from 'image-size/dist/types/svg.js';
-import tga_1 from 'image-size/dist/types/tga.js';
-import webp_1 from 'image-size/dist/types/webp.js';
-import heif_1 from 'image-size/dist/types/heif.js';
+import { BMP } from 'image-size/dist/types/bmp.js';
+import { CUR } from 'image-size/dist/types/cur.js';
+import { DDS } from 'image-size/dist/types/dds.js';
+import { GIF } from 'image-size/dist/types/gif.js';
+import { ICNS } from 'image-size/dist/types/icns.js';
+import { ICO } from 'image-size/dist/types/ico.js';
+import { J2C } from 'image-size/dist/types/j2c.js';
+import { JP2 } from 'image-size/dist/types/jp2.js';
+import { JPG } from 'image-size/dist/types/jpg.js';
+import { KTX } from 'image-size/dist/types/ktx.js';
+import { PNG } from 'image-size/dist/types/png.js';
+import { PNM } from 'image-size/dist/types/pnm.js';
+import { PSD } from 'image-size/dist/types/psd.js';
+import { SVG } from 'image-size/dist/types/svg.js';
+import { TGA } from 'image-size/dist/types/tga.js';
+import { WEBP } from 'image-size/dist/types/webp.js';
+import { HEIF } from 'image-size/dist/types/heif.js';
import type { Connect } from 'vite';
import type { OptimizerSystem } from '../../types';
@@ -34,23 +34,23 @@ const firstBytes: Record = {
// Put in order of most common to least common
const types = {
- webp: webp_1.WEBP,
- jpg: jpg_1.JPG,
- png: png_1.PNG,
- svg: svg_1.SVG,
- gif: gif_1.GIF,
- avif: heif_1.HEIF,
- bmp: bmp_1.BMP,
- cur: cur_1.CUR,
- dds: dds_1.DDS,
- icns: icns_1.ICNS,
- ico: ico_1.ICO,
- j2c: j2c_1.J2C,
- jp2: jp2_1.JP2,
- ktx: ktx_1.KTX,
- pnm: pnm_1.PNM,
- psd: psd_1.PSD,
- tga: tga_1.TGA,
+ webp: WEBP,
+ jpg: JPG,
+ png: PNG,
+ svg: SVG,
+ gif: GIF,
+ avif: HEIF,
+ bmp: BMP,
+ cur: CUR,
+ dds: DDS,
+ icns: ICNS,
+ ico: ICO,
+ j2c: J2C,
+ jp2: JP2,
+ ktx: KTX,
+ pnm: PNM,
+ psd: PSD,
+ tga: TGA,
};
const keys = Object.keys(types) as (keyof typeof types)[];
diff --git a/packages/qwik-vite/src/plugins/eslint-plugin.ts b/packages/qwik-vite/src/plugins/eslint-plugin.ts
index 87c11c50876..78e44a00924 100644
--- a/packages/qwik-vite/src/plugins/eslint-plugin.ts
+++ b/packages/qwik-vite/src/plugins/eslint-plugin.ts
@@ -54,7 +54,7 @@ export async function createLinter(
if (message.ruleId != null && !message.ruleId.startsWith('qwik/')) {
continue;
}
- const err = createRollupError(file.filePath, message);
+ const err = createBundlerError(file.filePath, message);
ctx.warn(err);
}
});
@@ -69,7 +69,7 @@ function parseRequest(id: string) {
return id.split('?', 2)[0];
}
-function createRollupError(id: string, reportMessage: Linter.LintMessage) {
+function createBundlerError(id: string, reportMessage: Linter.LintMessage) {
const err: Rollup.RollupError = Object.assign(new Error(reportMessage.message), {
id,
plugin: 'vite-plugin-eslint',
diff --git a/packages/qwik-vite/src/plugins/plugin.ts b/packages/qwik-vite/src/plugins/plugin.ts
index 42fa6b4403e..3cf9108fc2c 100644
--- a/packages/qwik-vite/src/plugins/plugin.ts
+++ b/packages/qwik-vite/src/plugins/plugin.ts
@@ -1,3 +1,4 @@
+import type { ChunkingContext, CodeSplittingOptions } from 'rolldown';
import type { DevEnvironment, HotUpdateOptions, Plugin, Rollup, ViteDevServer } from 'vite';
import { hashCode } from '../../../qwik/src/core/shared/utils/hash_code';
import { generateManifestFromBundles, getValidManifest } from '../manifest';
@@ -89,6 +90,9 @@ export function createQwikPlugin(optimizerOptions: OptimizerOptions = {}) {
const clientResults = new Map();
const clientTransformedOutputs = new Map();
+ // Maintaing our own map of segments because Rolldown doesn't retain module.meta information (https://github.com/rolldown/rolldown/issues/8924)
+ const clientSegments = new Map();
+ const clientChunkNames = new Map();
const serverTransformedOutputs = new Map();
const parentIds = new Map();
@@ -430,8 +434,12 @@ export function createQwikPlugin(optimizerOptions: OptimizerOptions = {}) {
}
debug(`transformedOutputs.clear()`);
+ clientResults.clear();
clientTransformedOutputs.clear();
+ clientSegments.clear();
+ clientChunkNames.clear();
serverTransformedOutputs.clear();
+ parentIds.clear();
if (opts.target === 'client' && !devServer) {
// emitFile() is only supported during build, not in Vite serve mode
@@ -457,6 +465,55 @@ export function createQwikPlugin(optimizerOptions: OptimizerOptions = {}) {
: opts.target === 'ssr' || opts.target === 'test';
};
+ const normalizeId = (id: string) => normalizePath(parseId(id).pathId);
+
+ const setCachedSegment = (id: string, segment: SegmentAnalysis | null) => {
+ if (!segment) {
+ return;
+ }
+ clientSegments.set(normalizeId(id), segment);
+ };
+
+ /** Rolldown drops module.meta.segment during codeSplitting, so we cache it ourselves. */
+ const getCachedSegment = (id: string): SegmentAnalysis | undefined => {
+ return clientSegments.get(normalizeId(id));
+ };
+
+ const sanitizeChunkGroupName = (name: string | null | undefined) => {
+ if (!name) {
+ return null;
+ }
+ if (!/^(\.\.?([/\\]|$)|[/\\]|[A-Za-z]:[/\\])/.test(name)) {
+ return name;
+ }
+
+ const normalizedName = name
+ .replace(/^[A-Za-z]:/, '')
+ .replace(/^(\.\.[/\\])+/, '')
+ .replace(/^\.[/\\]/, '')
+ .replace(/^[/\\]+/, '')
+ .replace(/[/\\]+/g, '-');
+
+ return normalizedName || null;
+ };
+
+ const normalizeChunkGroupName = (entry: string | null | undefined, srcDir: string) => {
+ if (!entry) {
+ return null;
+ }
+ const path = getPath();
+ const normalizedEntry = normalizePath(entry);
+ const absoluteEntry = path.isAbsolute(normalizedEntry)
+ ? normalizedEntry
+ : normalizePath(path.resolve(srcDir, normalizedEntry));
+ const rootRelativeEntry = normalizePath(path.relative(opts.rootDir, absoluteEntry));
+ const preferredName =
+ !rootRelativeEntry.startsWith('../') && !path.isAbsolute(rootRelativeEntry)
+ ? rootRelativeEntry
+ : absoluteEntry;
+ return sanitizeChunkGroupName(preferredName);
+ };
+
let resolveIdCount = 0;
let doNotEdit = false;
/**
@@ -865,7 +922,6 @@ export function createQwikPlugin(optimizerOptions: OptimizerOptions = {}) {
const newOutput = await optimizer.transformModules(transformOpts);
debug(`transform(${count})`, `done in ${Date.now() - now}ms`);
const module = newOutput.modules.find((mod) => !isAdditionalFile(mod))!;
-
// uncomment to show transform results
// debug({ isServer, strip }, transformOpts, newOutput);
diagnosticsCallback(newOutput.diagnostics, optimizer, srcDir);
@@ -879,12 +935,22 @@ export function createQwikPlugin(optimizerOptions: OptimizerOptions = {}) {
}
const deps = new Set();
for (const mod of newOutput.modules) {
+ if (mod.segment) {
+ mod.segment.entry = normalizeChunkGroupName(mod.segment.entry, srcDir);
+ }
+ if (!isServer && mod.segment) {
+ const chunkName = mod.segment.entry;
+ if (chunkName) {
+ clientChunkNames.set(mod.segment.hash, chunkName);
+ }
+ }
// TODO handle noop modules
if (mod !== module) {
const key = normalizePath(path.join(srcDir, mod.path));
debug(`transform(${count})`, `segment ${key}`, mod.segment!.displayName);
parentIds.set(key, id);
currentOutputs.set(key, [mod, id]);
+ setCachedSegment(key, mod.segment);
deps.add(key);
if (devServer) {
const mod = devServer.moduleGraph.getModuleById(key);
@@ -1081,9 +1147,14 @@ export const manifest = ${serverManifest ? JSON.stringify(serverManifest) : 'glo
if (id) {
debug('hotUpdate()', `invalidate ${id}`);
clientResults.delete(id);
+ clientChunkNames.clear();
+ clientSegments.delete(id);
+ clientSegments.delete(normalizePath(parseId(id).pathId));
for (const [key, [_, parentId]] of outputs) {
if (parentId === id) {
debug('hotUpdate()', `invalidate ${id} segment ${key}`);
+ clientSegments.delete(key);
+ clientSegments.delete(normalizePath(parseId(key).pathId));
outputs.delete(key);
const segMod = environment.moduleGraph.getModuleById(key);
if (segMod) {
@@ -1095,7 +1166,7 @@ export const manifest = ${serverManifest ? JSON.stringify(serverManifest) : 'glo
}
}
- const manualChunks: Rollup.ManualChunksOption = (id: string, { getModuleInfo }) => {
+ const manualChunks = (id: string, ctx: ChunkingContext) => {
if (opts.target === 'client') {
if (
// The preloader has to stay in a separate chunk if it's a client build
@@ -1114,10 +1185,39 @@ export const manifest = ${serverManifest ? JSON.stringify(serverManifest) : 'glo
return 'qwik-loader';
}
}
+ return mergeRelatedSegments(id, ctx);
+ };
+
+ const codeSplitting: CodeSplittingOptions = {
+ includeDependenciesRecursively: false,
+ groups: [
+ {
+ name: 'qwik-core',
+ test: /[/\\](core|qwik)[/\\](handlers|dist[/\\]core(\.prod|\.min)?)\.[cm]js$/,
+ },
+ {
+ name: 'qwik-loader',
+ test: /[/\\](core|qwik)[/\\]dist[/\\]qwikloader\.js$/,
+ },
+ {
+ name: 'qwik-preloader',
+ test: (id: string) =>
+ id.endsWith('@qwik.dev/core/build') ||
+ id === '\0vite/preload-helper.js' ||
+ /[/\\](core|qwik)[/\\]dist[/\\]preloader\.[cm]js$/.test(id),
+ },
+ {
+ name: (id: string, ctx: ChunkingContext) => {
+ return mergeRelatedSegments(id, ctx);
+ },
+ },
+ ],
+ };
- const module = getModuleInfo(id);
+ const mergeRelatedSegments = (id: string, ctx: ChunkingContext) => {
+ const module = ctx?.getModuleInfo(id);
if (module) {
- const segment = module.meta.segment as SegmentAnalysis | undefined;
+ const segment = (module.meta.segment as SegmentAnalysis | undefined) ?? getCachedSegment(id);
if (segment) {
// TODO: Remove useComputed$ once we don't need to eagerly load them anymore
if (['qwikify$', 'useVisibleTask$', 'useComputed$'].includes(segment.ctxName)) {
@@ -1136,7 +1236,6 @@ export const manifest = ${serverManifest ? JSON.stringify(serverManifest) : 'glo
}
}
- // The rest is non-qwik code. We let rollup handle it.
return null;
};
@@ -1212,6 +1311,7 @@ export const manifest = ${serverManifest ? JSON.stringify(serverManifest) : 'glo
configureServer,
hotUpdate,
manualChunks,
+ codeSplitting,
generateManifest,
};
}
diff --git a/packages/qwik-vite/src/plugins/plugin.unit.ts b/packages/qwik-vite/src/plugins/plugin.unit.ts
index 53a1a37a423..66a06ad6a9b 100644
--- a/packages/qwik-vite/src/plugins/plugin.unit.ts
+++ b/packages/qwik-vite/src/plugins/plugin.unit.ts
@@ -4,7 +4,7 @@ import { normalizePath } from '../../../qwik/src/testing/util';
import type { QwikManifest } from '../types';
import { ExperimentalFeatures, createQwikPlugin } from './plugin';
import { qwikVite } from './vite';
-import type { ResolvedId } from 'rollup';
+import type { ResolvedId } from 'rolldown';
const cwd = process.cwd();
@@ -191,6 +191,12 @@ test.runIf(process.platform === 'win32')('input array, win32', async () => {
assert.deepEqual(opts.input, ['C:/proj/src/cmps/a.tsx', 'C:\\abs\\b.tsx']);
});
+test('input with @ prefix is not resolved', async () => {
+ const plugin = await mockPlugin();
+ const opts = await plugin.normalizeOptions({ input: ['@some/virtual-entry'] });
+ assert.deepEqual(opts.input, ['@some/virtual-entry']);
+});
+
test('outDir', async () => {
const plugin = await mockPlugin();
const opts = await plugin.normalizeOptions({ outDir: 'out' });
@@ -240,6 +246,188 @@ test('experimental[]', async () => {
assert.deepEqual(opts.experimental, { [flag]: true } as any);
});
+test('manualChunks falls back to cached segment metadata', async () => {
+ const segment = {
+ origin: 'routes/index.tsx',
+ name: 's_test',
+ entry: 'routes/index',
+ displayName: 'useTask$',
+ hash: 'test-hash',
+ canonicalFilename: 'q-test',
+ extension: 'js',
+ parent: null,
+ ctxKind: 'function',
+ ctxName: 'useTask$',
+ captures: false,
+ loc: [0, 0],
+ } as const;
+
+ const plugin = createQwikPlugin({
+ sys: {
+ cwd: () => process.cwd(),
+ env: 'node',
+ os: process.platform,
+ dynamicImport: async (path) => import(path),
+ strictDynamicImport: async (path) => import(path),
+ path: path as any,
+ },
+ binding: {
+ transform_modules: async () => ({
+ modules: [
+ {
+ path: 'routes/index.tsx',
+ isEntry: false,
+ code: 'export default 1;',
+ map: null,
+ segment: null,
+ origPath: null,
+ },
+ {
+ path: 'routes/index.tsx_s_test.js',
+ isEntry: false,
+ code: 'export const s_test = () => {};',
+ map: null,
+ segment,
+ origPath: null,
+ },
+ ],
+ diagnostics: [],
+ isTypeScript: true,
+ isJsx: true,
+ }),
+ },
+ });
+ await plugin.init();
+ await plugin.normalizeOptions({
+ target: 'client',
+ buildMode: 'production',
+ });
+ await plugin.buildStart({
+ resolve: async () => null,
+ emitFile: () => '0',
+ } as any);
+
+ const id = normalizePath(resolve(cwd, 'src', 'routes', 'index.tsx'));
+ const transformResult = (await plugin.transform(
+ {
+ addWatchFile: () => {},
+ emitFile: () => '0',
+ load: async () => null,
+ } as any,
+ `
+ import { component$, useTask$ } from '@qwik.dev/core';
+ export default component$(() => {
+ useTask$(() => {});
+ return Hello
;
+ });
+ `,
+ id
+ )) as { meta?: { qwikdeps?: string[] } };
+
+ const depId = transformResult.meta?.qwikdeps?.[0];
+ expect(depId).toBeTruthy();
+
+ const withMeta = plugin.manualChunks(depId!, {
+ getModuleInfo: () => ({ id: depId, meta: { segment } }),
+ } as any);
+ const withoutMeta = plugin.manualChunks(depId!, {
+ getModuleInfo: () => ({ id: depId, meta: {} }),
+ } as any);
+
+ assert.deepEqual(withoutMeta, withMeta);
+});
+
+test('manualChunks normalizes cached segment entry', async () => {
+ const segment = {
+ origin: 'routing.qwik.mjs',
+ name: 'entry_createLoaderSignal',
+ entry:
+ '../node_modules/.pnpm/@qwik.dev_router@x/node_modules/@qwik.dev/router/lib/chunks/routing.qwik.mjs_entry_createLoaderSignal',
+ displayName: 'createLoaderSignal',
+ hash: 'hash',
+ canonicalFilename: 'q-file',
+ extension: 'js',
+ parent: null,
+ ctxKind: 'function',
+ ctxName: 'routeLoader$',
+ captures: false,
+ loc: [0, 0],
+ } as const;
+ const plugin = createQwikPlugin({
+ sys: {
+ cwd: () => process.cwd(),
+ env: 'node',
+ os: process.platform,
+ dynamicImport: async (path) => import(path),
+ strictDynamicImport: async (path) => import(path),
+ path: path as any,
+ },
+ binding: {
+ transform_modules: async () => ({
+ modules: [
+ {
+ path: 'routes/index.tsx',
+ isEntry: false,
+ code: 'export default 1;',
+ map: null,
+ segment: null,
+ origPath: null,
+ },
+ {
+ path: 'routing.qwik.mjs_entry_createLoaderSignal.js',
+ isEntry: false,
+ code: 'export const x = 1;',
+ map: null,
+ segment,
+ origPath: null,
+ },
+ ],
+ diagnostics: [],
+ isTypeScript: true,
+ isJsx: true,
+ }),
+ },
+ });
+ await plugin.init();
+ await plugin.normalizeOptions({
+ target: 'client',
+ buildMode: 'production',
+ });
+ await plugin.buildStart({
+ resolve: async () => null,
+ emitFile: () => '0',
+ } as any);
+
+ const id = normalizePath(resolve(cwd, 'src', 'routes', 'index.tsx'));
+ const transformResult = (await plugin.transform(
+ {
+ addWatchFile: () => {},
+ emitFile: () => '0',
+ load: async () => null,
+ } as any,
+ `
+ import { component$, useTask$ } from '@qwik.dev/core';
+ export default component$(() => {
+ useTask$(() => {});
+ return Hello
;
+ });
+ `,
+ id
+ )) as { meta?: { qwikdeps?: string[] } };
+
+ const depId = transformResult.meta?.qwikdeps?.[0];
+ expect(depId).toBeTruthy();
+
+ const chunkName = plugin.manualChunks(depId!, {
+ getModuleInfo: () => ({ id: depId, meta: {} }),
+ } as any);
+
+ assert.deepEqual(
+ chunkName,
+ 'node_modules/.pnpm/@qwik.dev_router@x/node_modules/@qwik.dev/router/lib/chunks/routing.qwik.mjs_entry_createLoaderSignal'
+ );
+});
+
describe('resolveId', () => {
test('qrls', async () => {
const plugin = await mockPlugin();
diff --git a/packages/qwik-vite/src/plugins/rollup.ts b/packages/qwik-vite/src/plugins/rollup.ts
index 4ddf5b368ce..f4a5918362a 100644
--- a/packages/qwik-vite/src/plugins/rollup.ts
+++ b/packages/qwik-vite/src/plugins/rollup.ts
@@ -19,6 +19,7 @@ import {
} from './plugin';
import { findDepPkgJsonPath } from './utils';
import { isVirtualId } from './vite-utils';
+import type { OutputOptions } from 'rolldown';
type QwikRollupPluginApi = {
getOptimizer: () => Optimizer;
@@ -76,7 +77,7 @@ export function qwikRollup(qwikRollupOpts: QwikRollupPluginOptions = {}): any {
},
outputOptions(rollupOutputOpts) {
- return normalizeRollupOutputOptionsObject(qwikPlugin, rollupOutputOpts, false) as any;
+ return normalizeRollupOutputObject(qwikPlugin, rollupOutputOpts, false) as any;
},
async buildStart() {
@@ -84,9 +85,9 @@ export function qwikRollup(qwikRollupOpts: QwikRollupPluginOptions = {}): any {
diagnostics.forEach((d) => {
const id = qwikPlugin.normalizePath(optimizer.sys.path.join(srcDir, d.file));
if (d.category === 'error') {
- this.error(createRollupError(id, d));
+ this.error(createBundlerError(id, d));
} else {
- this.warn(createRollupError(id, d));
+ this.warn(createBundlerError(id, d));
}
});
});
@@ -127,32 +128,70 @@ export function qwikRollup(qwikRollupOpts: QwikRollupPluginOptions = {}): any {
return rollupPlugin;
}
-export async function normalizeRollupOutputOptions(
+// `outputOptions.onlyExplicitManualChunks` is a new option in Rollup 4.52 that is not present in Rolldown yet so we need to add it manually.
+type ExtendedOutputOptions = OutputOptions & { onlyExplicitManualChunks?: boolean };
+
+async function normalizeOutputOptions(
qwikPlugin: QwikPlugin,
- rollupOutputOpts: Rollup.OutputOptions | Rollup.OutputOptions[] | undefined,
+ outputOpts: ExtendedOutputOptions | ExtendedOutputOptions[] | undefined,
useAssetsDir: boolean,
- outDir?: string
-): Promise {
- if (Array.isArray(rollupOutputOpts)) {
+ outDir: string | undefined,
+ normalizeObject: (
+ qwikPlugin: QwikPlugin,
+ outputOptions: ExtendedOutputOptions | undefined,
+ useAssetsDir: boolean
+ ) => Promise
+): Promise {
+ if (Array.isArray(outputOpts)) {
// make sure at least one output is present in every case
- if (!rollupOutputOpts.length) {
- rollupOutputOpts.push({});
+ if (!outputOpts.length) {
+ outputOpts.push({});
}
return await Promise.all(
- rollupOutputOpts.map(async (outputOptsObj) => ({
- ...(await normalizeRollupOutputOptionsObject(qwikPlugin, outputOptsObj, useAssetsDir)),
+ outputOpts.map(async (outputOptsObj) => ({
+ ...(await normalizeObject(qwikPlugin, outputOptsObj, useAssetsDir)),
dir: outDir || outputOptsObj.dir,
}))
);
}
return {
- ...(await normalizeRollupOutputOptionsObject(qwikPlugin, rollupOutputOpts, useAssetsDir)),
- dir: outDir || rollupOutputOpts?.dir,
+ ...(await normalizeObject(qwikPlugin, outputOpts, useAssetsDir)),
+ dir: outDir || outputOpts?.dir,
};
}
+export function normalizeRollupOutputOptions(
+ qwikPlugin: QwikPlugin,
+ outputOpts: ExtendedOutputOptions | ExtendedOutputOptions[] | undefined,
+ useAssetsDir: boolean,
+ outDir?: string
+) {
+ return normalizeOutputOptions(
+ qwikPlugin,
+ outputOpts,
+ useAssetsDir,
+ outDir,
+ normalizeRollupOutputObject
+ );
+}
+
+export function normalizeRolldownOutputOptions(
+ qwikPlugin: QwikPlugin,
+ outputOpts: ExtendedOutputOptions | ExtendedOutputOptions[] | undefined,
+ useAssetsDir: boolean,
+ outDir?: string
+) {
+ return normalizeOutputOptions(
+ qwikPlugin,
+ outputOpts,
+ useAssetsDir,
+ outDir,
+ normalizeRolldownOutputObject
+ );
+}
+
const getChunkFileName = (
prefix: string,
opts: NormalizedQwikPluginOptions,
@@ -172,8 +211,13 @@ const getChunkFileName = (
// The chunk name can often be a path. We sanitize it to use dashes instead of slashes, to keep the same folder structure as without debug:true.
// Besides, Rollup doesn't accept absolute or relative paths as inputs for the [name] placeholder for the same reason.
- const relativePath = optimizer.sys.path.relative(optimizer.sys.cwd(), chunkInfo.name);
- const sanitized = relativePath
+ let name = optimizer.sys.path.relative(optimizer.sys.cwd(), chunkInfo.name);
+ // Strip everything up to the last node_modules/ to get the meaningful package path
+ const lastNodeModules = name.lastIndexOf('node_modules-');
+ if (lastNodeModules !== -1) {
+ name = name.slice(lastNodeModules + 'node_modules-'.length);
+ }
+ const sanitized = name
.replace(/^(\.\.\/)+/, '')
.replace(/^\/+/, '')
.replace(/\//g, '-');
@@ -182,15 +226,14 @@ const getChunkFileName = (
}
};
-export async function normalizeRollupOutputOptionsObject(
+async function normalizeSharedOutputOptions(
qwikPlugin: QwikPlugin,
- rollupOutputOptsObj: Rollup.OutputOptions | undefined,
+ outputOptions: ExtendedOutputOptions | undefined,
useAssetsDir: boolean
-): Promise {
- const outputOpts: Rollup.OutputOptions = { ...rollupOutputOptsObj };
+): Promise {
+ const outputOpts = { ...outputOptions };
const opts = qwikPlugin.getOptions();
const optimizer = qwikPlugin.getOptimizer();
- const manualChunks = qwikPlugin.manualChunks;
if (!outputOpts.assetFileNames) {
// SEO likes readable asset names
@@ -211,18 +254,6 @@ export async function normalizeRollupOutputOptionsObject(
// client should always be es
outputOpts.format = 'es';
- const prevManualChunks = outputOpts.manualChunks;
- if (prevManualChunks && typeof prevManualChunks !== 'function') {
- throw new Error('manualChunks must be a function');
- }
- // Casts bridge Rollup vs Rolldown ManualChunkMeta type differences
- type ManualChunkFn = (id: string, meta: unknown) => string | void | null;
-
- // We need custom chunking for the client build
- outputOpts.manualChunks = prevManualChunks
- ? (id, meta) =>
- (prevManualChunks as ManualChunkFn)(id, meta) || (manualChunks as ManualChunkFn)(id, meta)
- : (manualChunks as Rollup.OutputOptions['manualChunks']);
} else {
// server production output, try to be similar to client
if (!outputOpts.chunkFileNames) {
@@ -238,10 +269,52 @@ export async function normalizeRollupOutputOptionsObject(
outputOpts.exports = 'auto';
}
+ return outputOpts;
+}
+
+/*
+ * The Vite 8 types override the Rollup types to use the Rolldown ones.
+ * This is why manualChunks appears as deprecated.
+ * Using the Rollup types directly leads to type errors in normalizeSharedOutputOptions because the functions are about the same but the types signatures have been changed in Rolldown.
+ */
+
+export async function normalizeRollupOutputObject(
+ qwikPlugin: QwikPlugin,
+ outputOptions: ExtendedOutputOptions | undefined,
+ useAssetsDir: boolean
+): Promise {
+ const outputOpts: ExtendedOutputOptions = await normalizeSharedOutputOptions(
+ qwikPlugin,
+ outputOptions,
+ useAssetsDir
+ );
+ const opts = qwikPlugin.getOptions();
+ const optimizer = qwikPlugin.getOptimizer();
+ const internalManualChunks = qwikPlugin.manualChunks;
+
+ if (opts.target === 'client') {
+ const userManualChunks = outputOptions?.manualChunks;
+ if (userManualChunks && typeof userManualChunks !== 'function') {
+ throw new Error(
+ 'manualChunks must be a function for Qwik to group qrl segments back together'
+ );
+ }
+
+ // We need custom chunking for the client build
+ outputOpts.manualChunks = userManualChunks
+ ? (id, meta) => userManualChunks(id, meta) || internalManualChunks(id, meta)
+ : internalManualChunks;
+ }
+
/**
* Transitive imports must not be hoisted. Otherwise, the bundle-graph static imports will be
* incorrect; leading to over-preloading.
*/
+ if (outputOpts.hoistTransitiveImports) {
+ throw new Error(
+ 'hoistTransitiveImports must be false for Qwik to ensure the bundle graph is correct for proper preloading. Please set it to false in your Rollup output configuration.'
+ );
+ }
outputOpts.hoistTransitiveImports = false;
// V2 official release TODO: remove below checks and just keep `outputOpts.onlyExplicitManualChunks = true;`
@@ -277,7 +350,44 @@ export async function normalizeRollupOutputOptionsObject(
return outputOpts;
}
-export function createRollupError(id: string, diagnostic: Diagnostic) {
+export async function normalizeRolldownOutputObject(
+ qwikPlugin: QwikPlugin,
+ outputOptions: ExtendedOutputOptions | undefined,
+ useAssetsDir: boolean
+): Promise {
+ const outputOpts = await normalizeSharedOutputOptions(qwikPlugin, outputOptions, useAssetsDir);
+ const opts = qwikPlugin.getOptions();
+ const internalCodeSplitting = qwikPlugin.codeSplitting;
+
+ if (opts.target === 'client') {
+ // User config: only object form is merged (boolean is never passed through)
+ const userCodeSplitting = outputOptions?.codeSplitting;
+ if (typeof userCodeSplitting === 'boolean') {
+ throw new Error(
+ "codeSplitting must be a `codeSplitting: { groups: [...] }` object for Qwik's chunking and preloading to work without causing network waterfalls issues."
+ );
+ }
+
+ outputOpts.codeSplitting = {
+ includeDependenciesRecursively: internalCodeSplitting.includeDependenciesRecursively,
+ groups: [...(internalCodeSplitting.groups ?? []), ...(userCodeSplitting?.groups ?? [])],
+ };
+ } else if (internalCodeSplitting) {
+ outputOpts.codeSplitting = internalCodeSplitting;
+ }
+
+ const userComments = outputOptions?.comments;
+ if (userComments) {
+ console.warn(
+ `⚠️ You enabled the "comments" option in your Rollup output configuration. This can lead to larger bundle sizes and slower load times. Disable this option for optimal performance.`
+ );
+ }
+ outputOpts.comments = userComments ?? false;
+
+ return outputOpts;
+}
+
+export function createBundlerError(id: string, diagnostic: Diagnostic) {
const loc = diagnostic.highlights?.[0];
const err: Rollup.RollupError = Object.assign(new Error(diagnostic.message), {
id,
diff --git a/packages/qwik-vite/src/plugins/vite.ts b/packages/qwik-vite/src/plugins/vite.ts
index ae5b100ee62..888c5f480b6 100644
--- a/packages/qwik-vite/src/plugins/vite.ts
+++ b/packages/qwik-vite/src/plugins/vite.ts
@@ -1,6 +1,4 @@
-import type { ResolvedId } from 'rollup';
import type {
- BuildOptions,
ConfigEnv,
EnvironmentOptions,
UserConfig,
@@ -35,8 +33,14 @@ import {
type QwikPluginDevTools,
type QwikPluginOptions,
} from './plugin';
-import { createRollupError, normalizeRollupOutputOptions } from './rollup';
+import {
+ createBundlerError,
+ normalizeRolldownOutputOptions,
+ normalizeRollupOutputOptions,
+} from './rollup';
import { isVirtualId } from './vite-utils';
+import type { BuildOptions, ResolvedId } from 'rolldown';
+import type { RollupOptions } from 'rollup';
const DEDUPE = [
QWIK_CORE_ID,
@@ -106,7 +110,6 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any {
let viteAssetsDir: string | undefined;
let srcDir: string | null = null;
let rootDir: string | null = null;
-
let ssrOutDir: string | null = null;
let buildMode: QwikBuildMode = 'development';
let viteServer: ViteDevServer | undefined;
@@ -147,6 +150,8 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any {
async config(viteConfig, viteEnv) {
await qwikPlugin.init();
+ const bundlerOptionsKey = this.meta.rolldownVersion ? 'rolldownOptions' : 'rollupOptions';
+
let target: QwikBuildTarget;
if (viteEnv.mode === 'lib') {
target = 'lib';
@@ -191,7 +196,7 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any {
: qwikViteOpts.ssr?.input
: undefined;
const clientInput = target === 'client' ? qwikViteOpts.client?.input : undefined;
- let input = viteConfig.build?.rollupOptions?.input || clientInput || ssrInput;
+ let input = viteConfig.build?.[bundlerOptionsKey]?.input || clientInput || ssrInput;
if (input && typeof input === 'string') {
input = [input];
}
@@ -252,6 +257,26 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any {
const qDev = viteConfig?.define?.[qDevKey] ?? isDevelopment;
const qInspector = viteConfig?.define?.[qInspectorKey] ?? isDevelopment;
+ const sharedBuildOptions: BuildOptions & RollupOptions = {
+ external: ['node:async_hooks'],
+ input,
+ };
+ const rolldownBuildOptions: BuildOptions = {
+ ...sharedBuildOptions,
+ experimental: {
+ attachDebugInfo:
+ viteConfig.build?.rolldownOptions?.experimental?.attachDebugInfo ?? 'none',
+ },
+ };
+ const rollupBuildOptions: RollupOptions = {
+ ...sharedBuildOptions,
+ /**
+ * This is a workaround to have predictable chunk hashes between builds. It doesn't seem to
+ * impact the build time.
+ * https://github.com/QwikDev/qwik/issues/7226#issuecomment-2647122505
+ */
+ maxParallelFileOps: 1,
+ };
const updatedViteConfig: UserConfig = {
// Duplicated in configEnvironment to support legacy vite build --ssr compatibility
ssr: {
@@ -301,12 +326,9 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any {
dynamicImportVarsOptions: {
exclude: [/./],
},
- rollupOptions: {
- external: ['node:async_hooks'],
- // This will amend the existing input
- input,
- // temporary fix for rolldown-vite types
- } as BuildOptions['rollupOptions'],
+ [bundlerOptionsKey]: this.meta.rolldownVersion
+ ? rolldownBuildOptions
+ : rollupBuildOptions,
},
define: {
[qDevKey]: qDev,
@@ -315,21 +337,39 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any {
},
};
+ if (this.meta.rolldownVersion) {
+ updatedViteConfig.oxc =
+ viteCommand === 'serve'
+ ? false
+ : {
+ jsx: {
+ runtime: 'automatic',
+ },
+ };
+ } else {
+ updatedViteConfig.esbuild =
+ viteCommand === 'serve'
+ ? false
+ : {
+ logLevel: 'error',
+ jsx: 'automatic',
+ };
+ }
+
if (!qwikViteOpts.csr) {
updatedViteConfig.build!.cssCodeSplit = false;
if (opts.outDir) {
updatedViteConfig.build!.outDir = opts.outDir;
}
- const origOnwarn = updatedViteConfig.build!.rollupOptions?.onwarn;
- updatedViteConfig.build!.rollupOptions = {
- ...updatedViteConfig.build!.rollupOptions,
- output: await normalizeRollupOutputOptions(
- qwikPlugin,
- viteConfig.build?.rollupOptions?.output,
- useAssetsDir,
- opts.outDir
- ),
- preserveEntrySignatures: 'exports-only',
+ const origOnwarn = updatedViteConfig.build![bundlerOptionsKey]?.onwarn;
+ updatedViteConfig.build![bundlerOptionsKey] = {
+ ...updatedViteConfig.build![bundlerOptionsKey],
+ output: await (
+ this.meta.rolldownVersion
+ ? normalizeRolldownOutputOptions
+ : normalizeRollupOutputOptions
+ )(qwikPlugin, viteConfig.build?.[bundlerOptionsKey]?.output, useAssetsDir, opts.outDir),
+ preserveEntrySignatures: 'allow-extension',
onwarn: (warning, warn) => {
if (warning.plugin === 'typescript' && warning.message.includes('outputToFilesystem')) {
return;
@@ -352,7 +392,7 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any {
} else if (opts.target === 'lib') {
// Library Build
updatedViteConfig.build!.minify = false;
- updatedViteConfig.build!.rollupOptions.external = [
+ updatedViteConfig.build![bundlerOptionsKey]!.external = [
QWIK_CORE_ID,
QWIK_CORE_INTERNAL_ID,
QWIK_CORE_SERVER,
@@ -431,9 +471,9 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any {
diagnostics.forEach((d) => {
const id = qwikPlugin.normalizePath(optimizer.sys.path.join(srcDir, d.file));
if (d.category === 'error') {
- this.error(createRollupError(id, d));
+ this.error(createBundlerError(id, d));
} else {
- this.warn(createRollupError(id, d));
+ this.warn(createBundlerError(id, d));
}
});
});
diff --git a/packages/qwik-vite/src/plugins/vite.unit.ts b/packages/qwik-vite/src/plugins/vite.unit.ts
index 5e62ec74fe2..4f4b4f6f897 100644
--- a/packages/qwik-vite/src/plugins/vite.unit.ts
+++ b/packages/qwik-vite/src/plugins/vite.unit.ts
@@ -58,713 +58,805 @@ const excludeDeps = [
const getPlugin = (opts: QwikVitePluginOptions | undefined) =>
(qwikVite(opts) as any)[0] as QwikVitePlugin;
-// undefined for Vite 5 - 6, an object for Vite 7
-const configHookPluginContext = undefined as any;
-
-test('command: serve, mode: development', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
- const plugin = getPlugin(initOpts);
- const c = (await plugin.config.call(
- configHookPluginContext,
- {},
- { command: 'serve', mode: 'development' }
- ))!;
- const opts = await plugin.api?.getOptions();
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
- const outputOptions = rollupOptions.output as Rollup.OutputOptions;
- const chunkFileNames = outputOptions.chunkFileNames as (
- chunkInfo: Rollup.PreRenderedChunk
- ) => string;
- const entryFileNames = outputOptions.entryFileNames as (
- chunkInfo: Rollup.PreRenderedChunk
- ) => string;
-
- assert.deepEqual(opts.target, 'client');
- assert.deepEqual(opts.buildMode, 'development');
- assert.deepEqual(opts.entryStrategy, { type: 'segment' });
- assert.deepEqual(opts.debug, false);
-
- assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
- assert.deepEqual(rollupOptions.input, [normalizePath(resolve(cwd, 'src', 'root'))]);
-
- assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
- assert.deepEqual(chunkFileNames(chunkInfoMocks[0]), `build/chunk.tsx.js`);
- assert.deepEqual(entryFileNames(chunkInfoMocks[0]), `build/chunk.tsx.js`);
- const relDev = path.relative(cwd, chunkInfoMocks[1].name);
- const sanitizedDev = relDev
- .replace(/^\(\.\.\/\)+/, '')
- .replace(/^\/+/, '')
- .replace(/\//g, '-');
- const expectedDevChunk = `build/${sanitizedDev}.js`;
- assert.deepEqual(chunkFileNames(chunkInfoMocks[1]), expectedDevChunk);
- assert.deepEqual(entryFileNames(chunkInfoMocks[1]), expectedDevChunk);
- assert.deepEqual(outputOptions.format, 'es');
-
- assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
- assert.deepEqual(build.ssr, undefined);
- assert.deepEqual(c.optimizeDeps?.include, includeDeps);
- assert.deepEqual(c.optimizeDeps?.exclude, excludeDeps);
-
- assert.deepEqual(c.ssr?.noExternal, noExternal);
-});
-
-test('command: serve, mode: production', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
- const plugin = getPlugin(initOpts);
- const c = (await plugin.config.call(
- configHookPluginContext,
- {},
- { command: 'serve', mode: 'production' }
- ))!;
- const opts = await plugin.api?.getOptions();
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
- const outputOptions = rollupOptions.output as Rollup.OutputOptions;
-
- assert.deepEqual(opts.target, 'client');
- assert.deepEqual(opts.buildMode, 'production');
- assert.deepEqual(opts.entryStrategy, { type: 'segment' });
- assert.deepEqual(opts.debug, false);
- assert.deepEqual(opts.resolveQwikBuild, true);
-
- assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
- assert.deepEqual(build.emptyOutDir, undefined);
- assert.deepEqual(rollupOptions.input, [normalizePath(resolve(cwd, 'src', 'root'))]);
- assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
- assert.deepEqual(outputOptions.chunkFileNames, 'build/q-[hash].js');
- assert.deepEqual(outputOptions.entryFileNames, 'build/q-[hash].js');
- assert.deepEqual(outputOptions.format, 'es');
-
- assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
- assert.deepEqual(build.ssr, undefined);
- assert.deepEqual(c.optimizeDeps?.include, includeDeps);
- assert.deepEqual(c.optimizeDeps?.exclude, excludeDeps);
- assert.deepEqual(c.ssr?.noExternal, noExternal);
-});
-
-test('command: build, mode: development', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
- const plugin = getPlugin(initOpts);
- const c = (await plugin.config.call(
- configHookPluginContext,
- {},
- { command: 'build', mode: 'development' }
- ))!;
- const opts = await plugin.api?.getOptions();
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
- const outputOptions = rollupOptions.output as Rollup.OutputOptions;
- const chunkFileNames = outputOptions.chunkFileNames as (
- chunkInfo: Rollup.PreRenderedChunk
- ) => string;
- const entryFileNames = outputOptions.entryFileNames as (
- chunkInfo: Rollup.PreRenderedChunk
- ) => string;
-
- assert.deepEqual(opts.target, 'client');
- assert.deepEqual(opts.buildMode, 'development');
- assert.deepEqual(opts.entryStrategy, { type: 'segment' });
- assert.deepEqual(opts.debug, false);
- assert.deepEqual(opts.resolveQwikBuild, true);
-
- assert.deepEqual(plugin.enforce, 'pre');
- assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
- assert.deepEqual(build.emptyOutDir, undefined);
- assert.deepEqual((rollupOptions.input as string[]).map(normalizePath), [
- normalizePath(resolve(cwd, 'src', 'root')),
- ]);
-
- assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
- assert.deepEqual(chunkFileNames(chunkInfoMocks[0]), `build/chunk.tsx.js`);
- assert.deepEqual(entryFileNames(chunkInfoMocks[0]), `build/chunk.tsx.js`);
- const relBuildDev = path.relative(cwd, chunkInfoMocks[1].name);
- const sanitizedBuildDev = relBuildDev
- .replace(/^\(\.\.\/\)+/, '')
- .replace(/^\/+/, '')
- .replace(/\//g, '-');
- const expectedBuildDevChunk = `build/${sanitizedBuildDev}.js`;
- assert.deepEqual(chunkFileNames(chunkInfoMocks[1]), expectedBuildDevChunk);
- assert.deepEqual(entryFileNames(chunkInfoMocks[1]), expectedBuildDevChunk);
-
- assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
- assert.deepEqual(build.ssr, undefined);
- assert.deepEqual(c.optimizeDeps?.include, includeDeps);
- assert.deepEqual(c.optimizeDeps?.exclude, excludeDeps);
- assert.deepEqual(c.ssr?.noExternal, noExternal);
-});
-
-test('command: build, mode: production', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
- const plugin = getPlugin(initOpts);
- const c = (await plugin.config.call(
- configHookPluginContext,
- {},
- { command: 'build', mode: 'production' }
- ))!;
- const opts = await plugin.api?.getOptions();
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
- const outputOptions = rollupOptions.output as Rollup.OutputOptions;
-
- assert.deepEqual(opts.target, 'client');
- assert.deepEqual(opts.buildMode, 'production');
- assert.deepEqual(opts.entryStrategy, { type: 'smart' });
- assert.deepEqual(opts.debug, false);
- assert.deepEqual(opts.resolveQwikBuild, true);
-
- assert.deepEqual(plugin.enforce, 'pre');
- assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
- assert.deepEqual(build.emptyOutDir, undefined);
- assert.deepEqual((rollupOptions.input as string[]).map(normalizePath), [
- normalizePath(resolve(cwd, 'src', 'root')),
- ]);
-
- assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
- assert.deepEqual(outputOptions.chunkFileNames, 'build/q-[hash].js');
- assert.deepEqual(outputOptions.entryFileNames, 'build/q-[hash].js');
-
- assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
- assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
- assert.deepEqual(build.ssr, undefined);
- assert.deepEqual(c.optimizeDeps?.include, includeDeps);
- assert.deepEqual(c.optimizeDeps?.exclude, excludeDeps);
- assert.deepEqual(c.ssr?.noExternal, noExternal);
-});
-
-test('command: build, --mode production (client)', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- client: {
- devInput: resolve(cwd, 'src', 'dev.entry.tsx'),
- outDir: resolve(cwd, 'client-dist'),
- },
- };
-
- const plugin = getPlugin(initOpts);
- const c: any = (await plugin.config.call(
- configHookPluginContext,
- {},
- { command: 'build', mode: 'production' }
- ))!;
- const opts = await plugin.api?.getOptions();
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
- assert.deepEqual(opts.resolveQwikBuild, true);
-
- assert.deepEqual(opts.target, 'client');
- assert.deepEqual(opts.buildMode, 'production');
- assert.deepEqual((rollupOptions.input as string[]).map(normalizePath), [
- normalizePath(resolve(cwd, 'src', 'root')),
- ]);
- assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'client-dist')));
- assert.deepEqual(build.emptyOutDir, undefined);
-});
-
-test('command: build, --ssr entry.server.tsx', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
- const plugin = getPlugin(initOpts);
- const c = (await plugin.config.call(
- configHookPluginContext,
- { build: { ssr: resolve(cwd, 'src', 'entry.server.tsx') } },
- { command: 'build', mode: '' }
- ))!;
- const opts = await plugin.api?.getOptions();
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
- const outputOptions = rollupOptions.output as Rollup.OutputOptions;
-
- assert.deepEqual(opts.target, 'ssr');
- assert.deepEqual(opts.buildMode, 'development');
- assert.deepEqual(opts.entryStrategy, { type: 'hoist' });
- assert.deepEqual(opts.debug, false);
- assert.deepEqual(opts.resolveQwikBuild, true);
-
- assert.deepEqual(plugin.enforce, 'pre');
- assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'server')));
- assert.deepEqual(build.emptyOutDir, undefined);
- assert.deepEqual((rollupOptions.input as string[]).map(normalizePath), [
- normalizePath(resolve(cwd, 'src', 'entry.server.tsx')),
- ]);
-
- assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
- assert.isFunction(outputOptions.chunkFileNames);
- assert.deepEqual((outputOptions.chunkFileNames as any)({ name: 'hello' }), 'build/hello.js');
- assert.deepEqual(outputOptions.entryFileNames, undefined);
-
- assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'server')));
- assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
- assert.deepEqual(build.ssr, true);
- assert.deepEqual(c.optimizeDeps?.include, includeDeps);
- assert.deepEqual(c.optimizeDeps?.exclude, excludeDeps);
- assert.deepEqual(c.publicDir, false);
-});
-
-test('command: build, --ssr with relative path resolves to absolute', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
- const plugin = getPlugin(initOpts);
- const c = (await plugin.config.call(
- configHookPluginContext,
- { build: { ssr: 'src/entry.server.tsx' } },
- { command: 'build', mode: '' }
- ))!;
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
-
- assert.deepEqual((rollupOptions.input as string[]).map(normalizePath), [
- normalizePath(resolve(cwd, 'src', 'entry.server.tsx')),
- ]);
-});
-
-test('command: serve, --mode ssr', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- ssr: {
- input: resolve(cwd, 'src', 'renderz.tsx'),
- outDir: resolve(cwd, 'ssr-dist'),
- },
- };
- const plugin = getPlugin(initOpts);
- const c: any = (await plugin.config.call(
- configHookPluginContext,
- { build: { emptyOutDir: true } },
- { command: 'serve', mode: 'ssr' }
- ))!;
- const opts = await plugin.api?.getOptions();
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
-
- assert.deepEqual(opts.target, 'ssr');
- assert.deepEqual(opts.buildMode, 'development');
- assert.deepEqual(build.minify, undefined);
- assert.deepEqual(build.ssr, undefined);
- assert.deepEqual((rollupOptions.input as string[]).map(normalizePath), [
- normalizePath(resolve(cwd, 'src', 'renderz.tsx')),
- ]);
- assert.deepEqual(c.build.outDir, normalizePath(resolve(cwd, 'ssr-dist')));
- assert.deepEqual(build.emptyOutDir, undefined);
- assert.deepEqual(c.publicDir, undefined);
- assert.deepEqual(opts.resolveQwikBuild, true);
-});
-
-test('command: serve, --mode ssr with build.assetsDir', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- ssr: {
- input: resolve(cwd, 'src', 'renderz.tsx'),
- outDir: resolve(cwd, 'ssr-dist'),
- },
- };
- const plugin = getPlugin(initOpts);
- const c: any = (await plugin.config.call(
- configHookPluginContext,
- { build: { emptyOutDir: true, assetsDir: 'my-assets-dir' } },
- { command: 'serve', mode: 'ssr' }
- ))!;
- const opts = plugin.api?.getOptions();
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
-
- assert.deepEqual(opts.target, 'ssr');
- assert.deepEqual(opts.buildMode, 'development');
- assert.deepEqual(build.minify, undefined);
- assert.deepEqual(build.ssr, undefined);
- assert.deepEqual((rollupOptions.input as string[]).map(normalizePath), [
- normalizePath(resolve(cwd, 'src', 'renderz.tsx')),
- ]);
- assert.deepEqual(c.build.outDir, normalizePath(resolve(cwd, 'ssr-dist')));
- assert.deepEqual(build.emptyOutDir, undefined);
- assert.deepEqual(c.publicDir, undefined);
- assert.deepEqual(opts.resolveQwikBuild, true);
-});
-
-test('should use the dist/ fallback with client target', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
- const plugin = getPlugin(initOpts);
- const c: any = (await plugin.config.call(
- configHookPluginContext,
- { build: { assetsDir: 'my-assets-dir/' } },
- { command: 'serve', mode: 'development' }
- ))!;
-
- assert.equal(c.build.outDir, normalizePath(resolve(cwd, `dist`)));
-});
-
-test('should use build.outDir config with client target', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
- const plugin = getPlugin(initOpts);
- const c: any = (await plugin.config.call(
- configHookPluginContext,
- { build: { outDir: 'my-dist/', assetsDir: 'my-assets-dir' } },
- { command: 'serve', mode: 'development' }
- ))!;
-
- assert.equal(c.build.outDir, normalizePath(resolve(cwd, `my-dist`)));
-});
-
-test('should use build.outDir config when assetsDir is _astro', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
+const bundlerMatrix = [
+ {
+ name: 'rollup',
+ configHookPluginContext: {
+ meta: {
+ rollupVersion: '4.0.0',
+ },
+ } as any,
+ bundlerOptionsKey: 'rollupOptions' as const,
+ },
+ {
+ name: 'rolldown',
+ configHookPluginContext: {
+ meta: {
+ rollupVersion: '4.0.0',
+ rolldownVersion: '1.0.0',
+ },
+ } as any,
+ bundlerOptionsKey: 'rolldownOptions' as const,
+ },
+];
- const plugin = getPlugin(initOpts);
+type BundlerOptionsKey = (typeof bundlerMatrix)[number]['bundlerOptionsKey'];
+
+const getBundlerOptions = (build: any, bundlerOptionsKey: BundlerOptionsKey) => {
+ const bundlerOptions = build[bundlerOptionsKey];
+ assert.ok(bundlerOptions, `Missing ${bundlerOptionsKey}`);
+ if (bundlerOptionsKey === 'rolldownOptions') {
+ assert.equal(build.rollupOptions, undefined);
+ } else {
+ assert.equal(build.rolldownOptions, undefined);
+ }
+ return bundlerOptions;
+};
+
+const expectTransformEngine = (
+ c: any,
+ bundlerOptionsKey: BundlerOptionsKey,
+ command: 'serve' | 'build'
+) => {
+ if (bundlerOptionsKey === 'rolldownOptions') {
+ assert.deepEqual(
+ c.oxc,
+ command === 'serve'
+ ? false
+ : {
+ jsx: {
+ runtime: 'automatic',
+ },
+ }
+ );
+ assert.equal(c.esbuild, undefined);
+ } else {
+ assert.deepEqual(
+ c.esbuild,
+ command === 'serve'
+ ? false
+ : {
+ logLevel: 'error',
+ jsx: 'automatic',
+ }
+ );
+ assert.equal(c.oxc, undefined);
+ }
+};
- // Astro sets a build.assetsDir of _astro, but we don't want to change that
- const c: any = (await plugin.config.call(
- configHookPluginContext,
- { build: { assetsDir: '_astro' } },
- { command: 'serve', mode: 'development' }
- ))!;
+describe.each(bundlerMatrix)('$name', ({ configHookPluginContext, bundlerOptionsKey }) => {
+ test('command: serve, mode: development', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ };
+ const plugin = getPlugin(initOpts);
+ const c = (await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'serve', mode: 'development' }
+ ))!;
+ const opts = await plugin.api?.getOptions();
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
+ const outputOptions = bundlerOptions.output as Rollup.OutputOptions;
+ const chunkFileNames = outputOptions.chunkFileNames as (
+ chunkInfo: Rollup.PreRenderedChunk
+ ) => string;
+ const entryFileNames = outputOptions.entryFileNames as (
+ chunkInfo: Rollup.PreRenderedChunk
+ ) => string;
+
+ assert.deepEqual(opts.target, 'client');
+ assert.deepEqual(opts.buildMode, 'development');
+ assert.deepEqual(opts.entryStrategy, { type: 'segment' });
+ assert.deepEqual(opts.debug, false);
+
+ assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
+ assert.deepEqual(bundlerOptions.input, [normalizePath(resolve(cwd, 'src', 'root'))]);
+
+ assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
+ assert.deepEqual(chunkFileNames(chunkInfoMocks[0]), `build/chunk.tsx.js`);
+ assert.deepEqual(entryFileNames(chunkInfoMocks[0]), `build/chunk.tsx.js`);
+ const relDev = path.relative(cwd, chunkInfoMocks[1].name);
+ const sanitizedDev = relDev
+ .replace(/^\(\.\.\/\)+/, '')
+ .replace(/^\/+/, '')
+ .replace(/\//g, '-');
+ const expectedDevChunk = `build/${sanitizedDev}.js`;
+ assert.deepEqual(chunkFileNames(chunkInfoMocks[1]), expectedDevChunk);
+ assert.deepEqual(entryFileNames(chunkInfoMocks[1]), expectedDevChunk);
+ assert.deepEqual(outputOptions.format, 'es');
+
+ assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
+ assert.deepEqual(build.ssr, undefined);
+ assert.deepEqual(c.optimizeDeps?.include, includeDeps);
+ assert.deepEqual(c.optimizeDeps?.exclude, excludeDeps);
+
+ expectTransformEngine(c, bundlerOptionsKey, 'serve');
+ assert.deepEqual(c.ssr, {
+ noExternal,
+ });
+ });
- assert.equal(c.build.outDir, normalizePath(resolve(cwd, `dist/`)));
-});
+ test('command: serve, mode: production', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ };
+ const plugin = getPlugin(initOpts);
+ const c = (await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'serve', mode: 'production' }
+ ))!;
+ const opts = await plugin.api?.getOptions();
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
+ const outputOptions = bundlerOptions.output as Rollup.OutputOptions;
+
+ assert.deepEqual(opts.target, 'client');
+ assert.deepEqual(opts.buildMode, 'production');
+ assert.deepEqual(opts.entryStrategy, { type: 'segment' });
+ assert.deepEqual(opts.debug, false);
+ assert.deepEqual(opts.resolveQwikBuild, true);
+
+ assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
+ assert.deepEqual(build.emptyOutDir, undefined);
+ assert.deepEqual(bundlerOptions.input, [normalizePath(resolve(cwd, 'src', 'root'))]);
+ assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
+ assert.deepEqual(outputOptions.chunkFileNames, 'build/q-[hash].js');
+ assert.deepEqual(outputOptions.entryFileNames, 'build/q-[hash].js');
+ assert.deepEqual(outputOptions.format, 'es');
+
+ assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
+ assert.deepEqual(build.ssr, undefined);
+ assert.deepEqual(c.optimizeDeps?.include, includeDeps);
+ assert.deepEqual(c.optimizeDeps?.exclude, excludeDeps);
+ expectTransformEngine(c, bundlerOptionsKey, 'serve');
+ assert.deepEqual(c.ssr, {
+ noExternal,
+ });
+ });
-test('command: build, mode: production (deno)', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions('deno'),
- };
- const plugin = getPlugin(initOpts);
- const c = (await plugin.config.call(
- configHookPluginContext,
- {},
- { command: 'build', mode: 'production' }
- ))!;
- const opts = await plugin.api?.getOptions();
-
- assert.deepEqual(opts.target, 'client');
- assert.deepEqual(opts.buildMode, 'production');
- assert.deepEqual(opts.resolveQwikBuild, true);
-
- // Deno should produce the same config shape as Node
- const build = c.build!;
- assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
- assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
- assert.deepEqual(build.ssr, undefined);
-});
+ test('command: build, mode: development', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ };
+ const plugin = getPlugin(initOpts);
+ const c = (await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'build', mode: 'development' }
+ ))!;
+ const opts = await plugin.api?.getOptions();
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
+ const outputOptions = bundlerOptions.output as Rollup.OutputOptions;
+ const chunkFileNames = outputOptions.chunkFileNames as (
+ chunkInfo: Rollup.PreRenderedChunk
+ ) => string;
+ const entryFileNames = outputOptions.entryFileNames as (
+ chunkInfo: Rollup.PreRenderedChunk
+ ) => string;
+
+ assert.deepEqual(opts.target, 'client');
+ assert.deepEqual(opts.buildMode, 'development');
+ assert.deepEqual(opts.entryStrategy, { type: 'segment' });
+ assert.deepEqual(opts.debug, false);
+ assert.deepEqual(opts.resolveQwikBuild, true);
+
+ assert.deepEqual(plugin.enforce, 'pre');
+ assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
+ assert.deepEqual(build.emptyOutDir, undefined);
+ assert.deepEqual((bundlerOptions.input as string[]).map(normalizePath), [
+ normalizePath(resolve(cwd, 'src', 'root')),
+ ]);
-test('command: build, --ssr entry.server.tsx (deno)', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions('deno'),
- };
- const plugin = getPlugin(initOpts);
- const c = (await plugin.config.call(
- configHookPluginContext,
- { build: { ssr: resolve(cwd, 'src', 'entry.server.tsx') } },
- { command: 'build', mode: '' }
- ))!;
- const opts = await plugin.api?.getOptions();
-
- assert.deepEqual(opts.target, 'ssr');
- assert.deepEqual(opts.buildMode, 'development');
- assert.deepEqual(opts.entryStrategy, { type: 'hoist' });
-
- const build = c.build!;
- assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'server')));
- assert.deepEqual(build.ssr, true);
- assert.deepEqual(c.publicDir, false);
-});
+ assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
+ assert.deepEqual(chunkFileNames(chunkInfoMocks[0]), `build/chunk.tsx.js`);
+ assert.deepEqual(entryFileNames(chunkInfoMocks[0]), `build/chunk.tsx.js`);
+ const relBuildDev = path.relative(cwd, chunkInfoMocks[1].name);
+ const sanitizedBuildDev = relBuildDev
+ .replace(/^\(\.\.\/\)+/, '')
+ .replace(/^\/+/, '')
+ .replace(/\//g, '-');
+ const expectedBuildDevChunk = `build/${sanitizedBuildDev}.js`;
+ assert.deepEqual(chunkFileNames(chunkInfoMocks[1]), expectedBuildDevChunk);
+ assert.deepEqual(entryFileNames(chunkInfoMocks[1]), expectedBuildDevChunk);
+
+ assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
+ assert.deepEqual(build.ssr, undefined);
+ assert.deepEqual(c.optimizeDeps?.include, includeDeps);
+ assert.deepEqual(c.optimizeDeps?.exclude, excludeDeps);
+ expectTransformEngine(c, bundlerOptionsKey, 'build');
+ assert.deepEqual(c.ssr?.noExternal, noExternal);
+ });
-test('command: build, --mode lib', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
- const plugin = getPlugin(initOpts);
- const c: any = (await plugin.config.call(
- configHookPluginContext,
- {
- build: {
- lib: {
- entry: './src/index.ts',
- formats: ['es', 'cjs'],
- },
- },
- },
- { command: 'build', mode: 'lib' }
- ))!;
- const opts = await plugin.api?.getOptions();
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
- const outputOptions = rollupOptions.output as Rollup.OutputOptions;
-
- assert.deepEqual(opts.target, 'lib');
- assert.deepEqual(opts.buildMode, 'development');
- assert.deepEqual(build.minify, false);
- assert.deepEqual(build.ssr, undefined);
- assert.deepEqual(rollupOptions.input, undefined);
-
- assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
- assert.isFunction(outputOptions.chunkFileNames);
- assert.deepEqual((outputOptions.chunkFileNames as any)({ name: 'hello' }), 'build/hello.js');
-
- assert.deepEqual(c.build.outDir, normalizePath(resolve(cwd, 'lib')));
- assert.deepEqual(build.emptyOutDir, undefined);
- assert.deepEqual(opts.resolveQwikBuild, true);
-});
+ test('command: build, mode: production', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ };
+ const plugin = getPlugin(initOpts);
+ const c = (await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'build', mode: 'production' }
+ ))!;
+ const opts = await plugin.api?.getOptions();
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
+ const outputOptions = bundlerOptions.output as Rollup.OutputOptions;
+
+ assert.deepEqual(opts.target, 'client');
+ assert.deepEqual(opts.buildMode, 'production');
+ assert.deepEqual(opts.entryStrategy, { type: 'smart' });
+ assert.deepEqual(opts.debug, false);
+ assert.deepEqual(opts.resolveQwikBuild, true);
+
+ assert.deepEqual(plugin.enforce, 'pre');
+ assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
+ assert.deepEqual(build.emptyOutDir, undefined);
+ assert.deepEqual((bundlerOptions.input as string[]).map(normalizePath), [
+ normalizePath(resolve(cwd, 'src', 'root')),
+ ]);
-test('command: build, --mode lib with multiple outputs', async () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- };
- const plugin = getPlugin(initOpts);
- const c: any = (await plugin.config.call(
- configHookPluginContext,
- {
- build: {
- lib: {
- entry: './src/index.ts',
- },
- rollupOptions: {
- output: [
- {
- format: 'es',
- entryFileNames: 'index.esm.js',
- },
- {
- format: 'es',
- entryFileNames: 'index.mjs',
- },
- {
- format: 'cjs',
- entryFileNames: 'index.cjs.js',
- },
- {
- format: 'cjs',
- entryFileNames: 'index.cjs',
- },
- ],
- },
- },
- },
- { command: 'build', mode: 'lib' }
- ))!;
- const opts = await plugin.api?.getOptions();
- const build = c.build!;
- const rollupOptions = build!.rollupOptions!;
- const outputOptions = rollupOptions.output as Rollup.OutputOptions[];
-
- assert.deepEqual(opts.target, 'lib');
- assert.deepEqual(opts.buildMode, 'development');
- assert.deepEqual(build.minify, false);
- assert.deepEqual(build.ssr, undefined);
- assert.deepEqual(rollupOptions.input, undefined);
-
- assert.ok(Array.isArray(outputOptions));
- assert.lengthOf(outputOptions, 4);
-
- outputOptions.forEach((outputOptionsObj) => {
- assert.deepEqual(outputOptionsObj.assetFileNames, 'assets/[hash]-[name].[ext]');
- assert.isFunction(outputOptionsObj.chunkFileNames);
- assert.deepEqual((outputOptionsObj.chunkFileNames as any)({ name: 'hello' }), 'build/hello.js');
+ assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
+ assert.deepEqual(outputOptions.chunkFileNames, 'build/q-[hash].js');
+ assert.deepEqual(outputOptions.entryFileNames, 'build/q-[hash].js');
+
+ assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'dist')));
+ assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
+ assert.deepEqual(build.ssr, undefined);
+ assert.deepEqual(c.optimizeDeps?.include, includeDeps);
+ assert.deepEqual(c.optimizeDeps?.exclude, excludeDeps);
+ expectTransformEngine(c, bundlerOptionsKey, 'build');
+ assert.deepEqual(c.ssr, {
+ noExternal,
+ });
});
- assert.deepEqual(c.build.outDir, normalizePath(resolve(cwd, 'lib')));
- assert.deepEqual(build.emptyOutDir, undefined);
- assert.deepEqual(opts.resolveQwikBuild, true);
-});
+ test('command: build, --mode production (client)', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ client: {
+ devInput: resolve(cwd, 'src', 'dev.entry.tsx'),
+ outDir: resolve(cwd, 'client-dist'),
+ },
+ };
-describe('input config', () => {
- const initOpts = {
- optimizerOptions: mockOptimizerOptions(),
- client: {
- input: './src/widget/counter.tsx',
- outDir: './dist/client',
- },
- ssr: {
- input: './src/widget/ssr.tsx',
- outDir: './dist/server',
- },
- } as QwikVitePluginOptions;
- test('should handle client target', async () => {
const plugin = getPlugin(initOpts);
const c: any = (await plugin.config.call(
configHookPluginContext,
{},
- { command: 'build', mode: 'development' }
+ { command: 'build', mode: 'production' }
))!;
- assert.deepEqual((c.build.rollupOptions.input as string[]).map(normalizePath), [
- normalizePath(resolve(cwd, 'src', 'widget', 'counter.tsx')),
+ const opts = await plugin.api?.getOptions();
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
+ assert.deepEqual(opts.resolveQwikBuild, true);
+
+ assert.deepEqual(opts.target, 'client');
+ assert.deepEqual(opts.buildMode, 'production');
+ assert.deepEqual((bundlerOptions.input as string[]).map(normalizePath), [
+ normalizePath(resolve(cwd, 'src', 'root')),
]);
+ assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'client-dist')));
+ assert.deepEqual(build.emptyOutDir, undefined);
});
- test('should handle ssr target', async () => {
+
+ test('command: build, --ssr entry.server.tsx', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ };
const plugin = getPlugin(initOpts);
- const c: any = (await plugin.config.call(
+ const c = (await plugin.config.call(
configHookPluginContext,
- {},
- { command: 'build', mode: 'ssr' }
+ { build: { ssr: resolve(cwd, 'src', 'entry.server.tsx') } },
+ { command: 'build', mode: '' }
))!;
- assert.deepEqual((c.build.rollupOptions.input as string[]).map(normalizePath), [
- normalizePath(resolve(cwd, 'src', 'widget', 'ssr.tsx')),
+ const opts = await plugin.api?.getOptions();
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
+ const outputOptions = bundlerOptions.output as Rollup.OutputOptions;
+
+ assert.deepEqual(opts.target, 'ssr');
+ assert.deepEqual(opts.buildMode, 'development');
+ assert.deepEqual(opts.entryStrategy, { type: 'hoist' });
+ assert.deepEqual(opts.debug, false);
+ assert.deepEqual(opts.resolveQwikBuild, true);
+
+ assert.deepEqual(plugin.enforce, 'pre');
+ assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'server')));
+ assert.deepEqual(build.emptyOutDir, undefined);
+ assert.deepEqual((bundlerOptions.input as string[]).map(normalizePath), [
+ normalizePath(resolve(cwd, 'src', 'entry.server.tsx')),
]);
+
+ assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
+ assert.isFunction(outputOptions.chunkFileNames);
+ assert.deepEqual((outputOptions.chunkFileNames as any)({ name: 'hello' }), 'build/hello.js');
+ assert.deepEqual(outputOptions.entryFileNames, undefined);
+
+ assert.deepEqual(build.outDir, normalizePath(resolve(cwd, 'server')));
+ assert.deepEqual(build.dynamicImportVarsOptions?.exclude, [/./]);
+ assert.deepEqual(build.ssr, true);
+ assert.deepEqual(c.optimizeDeps?.include, includeDeps);
+ assert.deepEqual(c.optimizeDeps?.exclude, excludeDeps);
+ expectTransformEngine(c, bundlerOptionsKey, 'build');
+ assert.deepEqual(c.publicDir, false);
});
-});
-describe('clientPublicOutDir', () => {
- test('clientPublicOutDir should equal clientOutDir when base is set', async () => {
+ test('command: build, --ssr with relative path resolves to absolute', async () => {
const initOpts = {
optimizerOptions: mockOptimizerOptions(),
};
const plugin = getPlugin(initOpts);
+ const c = (await plugin.config.call(
+ configHookPluginContext,
+ { build: { ssr: 'src/entry.server.tsx' } },
+ { command: 'build', mode: '' }
+ ))!;
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
- // Simulate a config with a base path that might cause duplication
- const viteConfig = {
- base: '/frameworks/keyed/qwik2/',
- build: {
- outDir: 'dist',
+ assert.deepEqual((bundlerOptions.input as string[]).map(normalizePath), [
+ normalizePath(resolve(cwd, 'src', 'entry.server.tsx')),
+ ]);
+ });
+
+ test('command: serve, --mode ssr', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ ssr: {
+ input: resolve(cwd, 'src', 'renderz.tsx'),
+ outDir: resolve(cwd, 'ssr-dist'),
},
};
+ const plugin = getPlugin(initOpts);
+ const c: any = (await plugin.config.call(
+ configHookPluginContext,
+ { build: { emptyOutDir: true } },
+ { command: 'serve', mode: 'ssr' }
+ ))!;
+ const opts = await plugin.api?.getOptions();
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
+
+ assert.deepEqual(opts.target, 'ssr');
+ assert.deepEqual(opts.buildMode, 'development');
+ assert.deepEqual(build.minify, undefined);
+ assert.deepEqual(build.ssr, undefined);
+ assert.deepEqual((bundlerOptions.input as string[]).map(normalizePath), [
+ normalizePath(resolve(cwd, 'src', 'renderz.tsx')),
+ ]);
+ assert.deepEqual(c.build.outDir, normalizePath(resolve(cwd, 'ssr-dist')));
+ assert.deepEqual(build.emptyOutDir, undefined);
+ assert.deepEqual(c.publicDir, undefined);
+ assert.deepEqual(opts.resolveQwikBuild, true);
+ });
- await plugin.config.call(configHookPluginContext, viteConfig, {
- command: 'build',
- mode: 'production',
- });
+ test('command: serve, --mode ssr with build.assetsDir', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ ssr: {
+ input: resolve(cwd, 'src', 'renderz.tsx'),
+ outDir: resolve(cwd, 'ssr-dist'),
+ },
+ };
+ const plugin = getPlugin(initOpts);
+ const c: any = (await plugin.config.call(
+ configHookPluginContext,
+ { build: { emptyOutDir: true, assetsDir: 'my-assets-dir' } },
+ { command: 'serve', mode: 'ssr' }
+ ))!;
+ const opts = plugin.api?.getOptions();
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
+
+ assert.deepEqual(opts.target, 'ssr');
+ assert.deepEqual(opts.buildMode, 'development');
+ assert.deepEqual(build.minify, undefined);
+ assert.deepEqual(build.ssr, undefined);
+ assert.deepEqual((bundlerOptions.input as string[]).map(normalizePath), [
+ normalizePath(resolve(cwd, 'src', 'renderz.tsx')),
+ ]);
+ assert.deepEqual(c.build.outDir, normalizePath(resolve(cwd, 'ssr-dist')));
+ assert.deepEqual(build.emptyOutDir, undefined);
+ assert.deepEqual(c.publicDir, undefined);
+ assert.deepEqual(opts.resolveQwikBuild, true);
+ });
- const clientOutDir = plugin.api.getClientOutDir();
- const clientPublicOutDir = plugin.api.getClientPublicOutDir();
+ test('should use the dist/ fallback with client target', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ };
+ const plugin = getPlugin(initOpts);
+ const c: any = (await plugin.config.call(
+ configHookPluginContext,
+ { build: { assetsDir: 'my-assets-dir/' } },
+ { command: 'serve', mode: 'development' }
+ ))!;
- // clientPublicOutDir should be the same as clientOutDir
- // The base path should NOT be appended to the filesystem path
- assert.equal(clientPublicOutDir, clientOutDir);
+ assert.equal(c.build.outDir, normalizePath(resolve(cwd, `dist`)));
});
- test('clientPublicOutDir should equal clientOutDir without base', async () => {
+ test('should use build.outDir config with client target', async () => {
const initOpts = {
optimizerOptions: mockOptimizerOptions(),
};
const plugin = getPlugin(initOpts);
+ const c: any = (await plugin.config.call(
+ configHookPluginContext,
+ { build: { outDir: 'my-dist/', assetsDir: 'my-assets-dir' } },
+ { command: 'serve', mode: 'development' }
+ ))!;
- const viteConfig = {
- build: {
- outDir: 'dist',
- },
+ assert.equal(c.build.outDir, normalizePath(resolve(cwd, `my-dist`)));
+ });
+
+ test('should use build.outDir config when assetsDir is _astro', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
};
- await plugin.config.call(configHookPluginContext, viteConfig, {
- command: 'build',
- mode: 'production',
- });
+ const plugin = getPlugin(initOpts);
- const clientOutDir = plugin.api.getClientOutDir();
- const clientPublicOutDir = plugin.api.getClientPublicOutDir();
+ // Astro sets a build.assetsDir of _astro, but we don't want to change that
+ const c: any = (await plugin.config.call(
+ configHookPluginContext,
+ { build: { assetsDir: '_astro' } },
+ { command: 'serve', mode: 'development' }
+ ))!;
- assert.equal(clientPublicOutDir, clientOutDir);
+ assert.equal(c.build.outDir, normalizePath(resolve(cwd, `dist/`)));
});
- test('clientPublicOutDir should equal clientOutDir with base="/"', async () => {
+ test('command: build, --mode lib', async () => {
const initOpts = {
optimizerOptions: mockOptimizerOptions(),
};
const plugin = getPlugin(initOpts);
-
- const viteConfig = {
- base: '/',
- build: {
- outDir: 'dist',
+ const c: any = (await plugin.config.call(
+ configHookPluginContext,
+ {
+ build: {
+ lib: {
+ entry: './src/index.ts',
+ formats: ['es', 'cjs'],
+ },
+ },
},
- };
+ { command: 'build', mode: 'lib' }
+ ))!;
+ const opts = await plugin.api?.getOptions();
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
+ const outputOptions = bundlerOptions.output as Rollup.OutputOptions;
+
+ assert.deepEqual(opts.target, 'lib');
+ assert.deepEqual(opts.buildMode, 'development');
+ assert.deepEqual(build.minify, false);
+ assert.deepEqual(build.ssr, undefined);
+ assert.deepEqual(bundlerOptions.input, undefined);
+
+ assert.deepEqual(outputOptions.assetFileNames, 'assets/[hash]-[name].[ext]');
+ assert.isFunction(outputOptions.chunkFileNames);
+ assert.deepEqual((outputOptions.chunkFileNames as any)({ name: 'hello' }), 'build/hello.js');
+
+ assert.deepEqual(c.build.outDir, normalizePath(resolve(cwd, 'lib')));
+ assert.deepEqual(build.emptyOutDir, undefined);
+ assert.deepEqual(opts.resolveQwikBuild, true);
+ });
- await plugin.config.call(configHookPluginContext, viteConfig, {
- command: 'build',
- mode: 'production',
+ test('command: build, --mode lib with multiple outputs', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ };
+ const plugin = getPlugin(initOpts);
+ const c: any = (await plugin.config.call(
+ configHookPluginContext,
+ {
+ build: {
+ lib: {
+ entry: './src/index.ts',
+ },
+ [bundlerOptionsKey]: {
+ output: [
+ {
+ format: 'es',
+ entryFileNames: 'index.esm.js',
+ },
+ {
+ format: 'es',
+ entryFileNames: 'index.mjs',
+ },
+ {
+ format: 'cjs',
+ entryFileNames: 'index.cjs.js',
+ },
+ {
+ format: 'cjs',
+ entryFileNames: 'index.cjs',
+ },
+ ],
+ },
+ },
+ },
+ { command: 'build', mode: 'lib' }
+ ))!;
+ const opts = await plugin.api?.getOptions();
+ const build = c.build!;
+ const bundlerOptions = getBundlerOptions(build, bundlerOptionsKey);
+ const outputOptions = bundlerOptions.output as Rollup.OutputOptions[];
+
+ assert.deepEqual(opts.target, 'lib');
+ assert.deepEqual(opts.buildMode, 'development');
+ assert.deepEqual(build.minify, false);
+ assert.deepEqual(build.ssr, undefined);
+ assert.deepEqual(bundlerOptions.input, undefined);
+
+ assert.ok(Array.isArray(outputOptions));
+ assert.lengthOf(outputOptions, 4);
+
+ outputOptions.forEach((outputOptionsObj) => {
+ assert.deepEqual(outputOptionsObj.assetFileNames, 'assets/[hash]-[name].[ext]');
+ assert.isFunction(outputOptionsObj.chunkFileNames);
+ assert.deepEqual(
+ (outputOptionsObj.chunkFileNames as any)({ name: 'hello' }),
+ 'build/hello.js'
+ );
});
- const clientOutDir = plugin.api.getClientOutDir();
- const clientPublicOutDir = plugin.api.getClientPublicOutDir();
-
- assert.equal(clientPublicOutDir, clientOutDir);
+ assert.deepEqual(c.build.outDir, normalizePath(resolve(cwd, 'lib')));
+ assert.deepEqual(build.emptyOutDir, undefined);
+ assert.deepEqual(opts.resolveQwikBuild, true);
});
- test('clientPublicOutDir should not duplicate custom outDir with nested base path', async () => {
+ describe('input config', () => {
const initOpts = {
optimizerOptions: mockOptimizerOptions(),
client: {
- outDir: 'frameworks/keyed/qwik2/dist',
+ input: './src/widget/counter.tsx',
+ outDir: './dist/client',
},
- };
- const plugin = getPlugin(initOpts);
-
- const viteConfig = {
- base: '/frameworks/keyed/qwik2/',
- build: {
- outDir: 'frameworks/keyed/qwik2/dist',
+ ssr: {
+ input: './src/widget/ssr.tsx',
+ outDir: './dist/server',
},
- };
+ } as QwikVitePluginOptions;
+ test('should handle client target', async () => {
+ const plugin = getPlugin(initOpts);
+ const c: any = (await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'build', mode: 'development' }
+ ))!;
+ assert.deepEqual(c.build.rollupOptions.input, ['./src/widget/counter.tsx']);
+ });
+ test('should handle ssr target', async () => {
+ const plugin = getPlugin(initOpts);
+ const c: any = (await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'build', mode: 'ssr' }
+ ))!;
+ assert.deepEqual(c.build.rollupOptions.input, ['./src/widget/ssr.tsx']);
+ });
+ });
+
+ describe('clientPublicOutDir', () => {
+ test('clientPublicOutDir should equal clientOutDir when base is set', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ };
+ const plugin = getPlugin(initOpts);
+
+ // Simulate a config with a base path that might cause duplication
+ const viteConfig = {
+ base: '/frameworks/keyed/qwik2/',
+ build: {
+ outDir: 'dist',
+ },
+ };
- await plugin.config.call(configHookPluginContext, viteConfig, {
- command: 'build',
- mode: 'production',
+ await plugin.config.call(configHookPluginContext, viteConfig, {
+ command: 'build',
+ mode: 'production',
+ });
+
+ const clientOutDir = plugin.api.getClientOutDir();
+ const clientPublicOutDir = plugin.api.getClientPublicOutDir();
+
+ // clientPublicOutDir should be the same as clientOutDir
+ // The base path should NOT be appended to the filesystem path
+ assert.equal(clientPublicOutDir, clientOutDir);
});
- const clientPublicOutDir = plugin.api.getClientPublicOutDir();
+ test('clientPublicOutDir should equal clientOutDir without base', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ };
+ const plugin = getPlugin(initOpts);
- // Should be the outDir, not outDir + base
- assert.equal(
- normalizePath(clientPublicOutDir!),
- normalizePath(resolve(cwd, 'frameworks/keyed/qwik2/dist'))
- );
+ const viteConfig = {
+ build: {
+ outDir: 'dist',
+ },
+ };
- // Should NOT be duplicated like: frameworks/keyed/qwik2/dist/frameworks/keyed/qwik2
- assert.notMatch(clientPublicOutDir!, /frameworks.*frameworks/);
- });
-});
+ await plugin.config.call(configHookPluginContext, viteConfig, {
+ command: 'build',
+ mode: 'production',
+ });
-describe('configEnvironment', () => {
- test('should set noExternal for server environments', async () => {
- const plugin = getPlugin({ optimizerOptions: mockOptimizerOptions() });
- // Initialize the plugin first
- await plugin.config.call(
- configHookPluginContext,
- {},
- { command: 'serve', mode: 'development' }
- );
+ const clientOutDir = plugin.api.getClientOutDir();
+ const clientPublicOutDir = plugin.api.getClientPublicOutDir();
- const hook = (plugin as any).configEnvironment;
- assert.isFunction(hook);
+ assert.equal(clientPublicOutDir, clientOutDir);
+ });
- const result = hook('ssr', { consumer: 'server' }, { command: 'serve', mode: 'development' });
- assert.deepEqual(result.resolve.noExternal, noExternal);
+ test('clientPublicOutDir should equal clientOutDir with base="/"', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ };
+ const plugin = getPlugin(initOpts);
+
+ const viteConfig = {
+ base: '/',
+ build: {
+ outDir: 'dist',
+ },
+ };
+
+ await plugin.config.call(configHookPluginContext, viteConfig, {
+ command: 'build',
+ mode: 'production',
+ });
+
+ const clientOutDir = plugin.api.getClientOutDir();
+ const clientPublicOutDir = plugin.api.getClientPublicOutDir();
+
+ assert.equal(clientPublicOutDir, clientOutDir);
+ });
+
+ test('clientPublicOutDir should not duplicate custom outDir with nested base path', async () => {
+ const initOpts = {
+ optimizerOptions: mockOptimizerOptions(),
+ client: {
+ outDir: 'frameworks/keyed/qwik2/dist',
+ },
+ };
+ const plugin = getPlugin(initOpts);
+
+ const viteConfig = {
+ base: '/frameworks/keyed/qwik2/',
+ build: {
+ outDir: 'frameworks/keyed/qwik2/dist',
+ },
+ };
+
+ await plugin.config.call(configHookPluginContext, viteConfig, {
+ command: 'build',
+ mode: 'production',
+ });
+
+ const clientPublicOutDir = plugin.api.getClientPublicOutDir();
+
+ // Should be the outDir, not outDir + base
+ assert.equal(
+ normalizePath(clientPublicOutDir!),
+ normalizePath(resolve(cwd, 'frameworks/keyed/qwik2/dist'))
+ );
+
+ // Should NOT be duplicated like: frameworks/keyed/qwik2/dist/frameworks/keyed/qwik2
+ assert.notMatch(clientPublicOutDir!, /frameworks.*frameworks/);
+ });
});
- test('should set resolve conditions for client environments in production', async () => {
- const plugin = getPlugin({ optimizerOptions: mockOptimizerOptions() });
- await plugin.config.call(configHookPluginContext, {}, { command: 'build', mode: 'production' });
+ describe('configEnvironment', () => {
+ test('should set noExternal for server environments', async () => {
+ const plugin = getPlugin({ optimizerOptions: mockOptimizerOptions() });
+ // Initialize the plugin first
+ await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'serve', mode: 'development' }
+ );
+
+ const hook = (plugin as any).configEnvironment;
+ assert.isFunction(hook);
+
+ const result = hook('ssr', { consumer: 'server' }, { command: 'serve', mode: 'development' });
+ assert.deepEqual(result.resolve.noExternal, noExternal);
+ });
+
+ test('should set resolve conditions for client environments in production', async () => {
+ const plugin = getPlugin({ optimizerOptions: mockOptimizerOptions() });
+ await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'build', mode: 'production' }
+ );
+
+ const hook = (plugin as any).configEnvironment;
+ const result = hook(
+ 'client',
+ { consumer: 'client' },
+ { command: 'build', mode: 'production' }
+ );
+ assert.deepEqual(result.resolve.conditions, ['min']);
+ });
- const hook = (plugin as any).configEnvironment;
- const result = hook('client', { consumer: 'client' }, { command: 'build', mode: 'production' });
- assert.deepEqual(result.resolve.conditions, ['min']);
+ test('should return empty config for client environments in development', async () => {
+ const plugin = getPlugin({ optimizerOptions: mockOptimizerOptions() });
+ await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'serve', mode: 'development' }
+ );
+
+ const hook = (plugin as any).configEnvironment;
+ const result = hook(
+ 'client',
+ { consumer: 'client' },
+ { command: 'serve', mode: 'development' }
+ );
+ // In development, we don't set conditions to avoid overriding adapter-provided conditions
+ // (e.g. ['webworker', 'worker'] for edge adapters). Empty object is the correct result.
+ assert.deepEqual(result, {});
+ });
});
- test('should return empty config for client environments in development', async () => {
- const plugin = getPlugin({ optimizerOptions: mockOptimizerOptions() });
- await plugin.config.call(
- configHookPluginContext,
- {},
- { command: 'serve', mode: 'development' }
- );
+ describe('configEnvironment', () => {
+ test('should set noExternal for server environments', async () => {
+ const plugin = getPlugin({ optimizerOptions: mockOptimizerOptions() });
+ // Initialize the plugin first
+ await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'serve', mode: 'development' }
+ );
+
+ const hook = (plugin as any).configEnvironment;
+ assert.isFunction(hook);
+
+ const result = hook('ssr', { consumer: 'server' }, { command: 'serve', mode: 'development' });
+ assert.deepEqual(result.resolve.noExternal, noExternal);
+ });
- const hook = (plugin as any).configEnvironment;
- const result = hook(
- 'client',
- { consumer: 'client' },
- { command: 'serve', mode: 'development' }
- );
- // In development, we don't set conditions to avoid overriding adapter-provided conditions
- // (e.g. ['webworker', 'worker'] for edge adapters). Empty object is the correct result.
- assert.deepEqual(result, {});
+ test('should set resolve conditions for client environments in production', async () => {
+ const plugin = getPlugin({ optimizerOptions: mockOptimizerOptions() });
+ await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'build', mode: 'production' }
+ );
+
+ const hook = (plugin as any).configEnvironment;
+ const result = hook(
+ 'client',
+ { consumer: 'client' },
+ { command: 'build', mode: 'production' }
+ );
+ assert.deepEqual(result.resolve.conditions, ['min']);
+ });
+
+ test('should return empty config for client environments in development', async () => {
+ const plugin = getPlugin({ optimizerOptions: mockOptimizerOptions() });
+ await plugin.config.call(
+ configHookPluginContext,
+ {},
+ { command: 'serve', mode: 'development' }
+ );
+
+ const hook = (plugin as any).configEnvironment;
+ const result = hook(
+ 'client',
+ { consumer: 'client' },
+ { command: 'serve', mode: 'development' }
+ );
+ // In development, we don't set conditions to avoid overriding adapter-provided conditions
+ // (e.g. ['webworker', 'worker'] for edge adapters). Empty object is the correct result.
+ assert.deepEqual(result, {});
+ });
});
});
diff --git a/packages/qwik/package.json b/packages/qwik/package.json
index f24a50ddccb..50082b5d2b9 100644
--- a/packages/qwik/package.json
+++ b/packages/qwik/package.json
@@ -10,10 +10,10 @@
"dependencies": {
"@qwik.dev/optimizer": "workspace:*",
"csstype": "^3.2.3",
- "launch-editor": "^2.12.0",
- "rollup": "^4.59.0"
+ "launch-editor": "^2.12.0"
},
"devDependencies": {
+ "rolldown": "1.0.0-rc.16",
"@croct/json5-parser": "0.2.2",
"@qwik.dev/core": "workspace:*",
"@qwik.dev/dom": "workspace:*",
@@ -155,8 +155,8 @@
"main": "./src/index.ts",
"peerDependencies": {
"prettier": "*",
- "vite": ">=6 <9",
- "vitest": ">=2 <4"
+ "vite": ">=6",
+ "vitest": ">=2 <5"
},
"peerDependenciesMeta": {
"vitest": {
diff --git a/packages/qwik/src/core/bench/bench-results.json b/packages/qwik/src/core/bench/bench-results.json
index 7a9be0d7c74..9a065ddc641 100644
--- a/packages/qwik/src/core/bench/bench-results.json
+++ b/packages/qwik/src/core/bench/bench-results.json
@@ -1,71 +1,71 @@
{
"version": 1,
- "generatedAt": "2026-04-22T13:33:16.277Z",
+ "generatedAt": "2026-04-28T17:50:42.820Z",
"benchmarks": {
"baseline.shared-workload": {
- "mean": 1.4272255158758433,
- "median": 1.3930829999999332,
- "p75": 1.4647919999997612,
- "p99": 1.9199589999998352,
- "p995": 2.7983750000003056,
- "p999": 4.205416999999898,
- "rme": 0.5182242396741151,
- "sampleCount": 2803
+ "mean": 1.4240758113207423,
+ "median": 1.3966250000003129,
+ "p75": 1.450749999999971,
+ "p99": 1.7515830000002097,
+ "p995": 2.1427910000002157,
+ "p999": 5.109749999999622,
+ "rme": 0.54052124000814,
+ "sampleCount": 2809
},
"current.dom-table-10": {
- "mean": 0.13639182387307877,
- "median": 0.12041700000190758,
- "p75": 0.12604099999953178,
- "p99": 0.2091660000005504,
- "p995": 0.34633300000132294,
- "p999": 4.493583999999828,
- "rme": 1.9663956362018276,
- "sampleCount": 43991,
- "factor": 0.08643921431954403
+ "mean": 0.14941045403157716,
+ "median": 0.13149999999950523,
+ "p75": 0.13608299999759765,
+ "p99": 0.2580409999973199,
+ "p995": 0.45600000000194996,
+ "p999": 5.176124999998137,
+ "rme": 1.7565343657150443,
+ "sampleCount": 40158,
+ "factor": 0.0941555535662585
},
"current.dom-table-1k": {
- "mean": 10.707175217468814,
- "median": 9.631915999998455,
- "p75": 9.969834000003175,
- "p99": 20.992291000002297,
- "p995": 27.08808300000237,
- "p999": 38.75787499999933,
- "rme": 2.2165818681117764,
- "sampleCount": 561,
- "factor": 6.9141005955846975
+ "mean": 11.107390414048036,
+ "median": 9.975790999997116,
+ "p75": 10.397375000000466,
+ "p99": 24.391875000001164,
+ "p995": 29.972459000000526,
+ "p999": 33.76166699999885,
+ "rme": 2.3070835409071266,
+ "sampleCount": 541,
+ "factor": 7.142784211935832
},
"current.serialize-state-1k": {
- "mean": 3.4859137189313567,
- "median": 3.102792000003319,
- "p75": 3.2292079999970156,
- "p99": 10.06095799999457,
- "p995": 20.237291000004916,
- "p999": 33.13070799999696,
- "rme": 2.710598920931681,
- "sampleCount": 1722,
- "factor": 2.227284375736024
+ "mean": 3.312152468543047,
+ "median": 3.102082999997947,
+ "p75": 3.1808750000054715,
+ "p99": 6.288375000003725,
+ "p995": 6.612584000002244,
+ "p999": 11.6240420000031,
+ "rme": 1.1007574834956455,
+ "sampleCount": 1812,
+ "factor": 2.2211280766112966
},
"current.ssr-table-10": {
- "mean": 0.09733865399652775,
- "median": 0.08687500000087311,
- "p75": 0.09112500000082946,
- "p99": 0.1670830000002752,
- "p995": 0.27616699999998673,
- "p999": 3.2901249999995343,
- "rme": 1.3731043157090865,
- "sampleCount": 61641,
- "factor": 0.0623616826857246
+ "mean": 0.10140340277167215,
+ "median": 0.09112500000082946,
+ "p75": 0.0946670000002996,
+ "p99": 0.17295799999919836,
+ "p995": 0.23849999999947613,
+ "p999": 3.298624999999447,
+ "rme": 1.3121057818426658,
+ "sampleCount": 59170,
+ "factor": 0.06524657656909266
},
"current.ssr-table-1k": {
- "mean": 8.069372754032258,
- "median": 7.222708999999668,
- "p75": 7.565000000002328,
- "p99": 13.761290999998891,
- "p995": 14.159625000000233,
- "p999": 23.3426670000008,
- "rme": 1.7015020992506698,
- "sampleCount": 744,
- "factor": 5.1846939486017805
+ "mean": 8.582158692857139,
+ "median": 7.750499499999933,
+ "p75": 8.104166000000987,
+ "p99": 14.326499999999214,
+ "p995": 15.043208999999479,
+ "p999": 20.417457999999897,
+ "rme": 1.6630042599469437,
+ "sampleCount": 700,
+ "factor": 5.549449207910639
}
},
"sizes": {
diff --git a/packages/qwik/src/core/preloader/preloader.unit.ts b/packages/qwik/src/core/preloader/preloader.unit.ts
index f3739bf04c3..25ce59f7881 100644
--- a/packages/qwik/src/core/preloader/preloader.unit.ts
+++ b/packages/qwik/src/core/preloader/preloader.unit.ts
@@ -33,8 +33,8 @@ test('preloader script', async () => {
const compressed = compress(Buffer.from(code), { mode: 1, quality: 11 });
expect({ brotli: compressed.length, minified: code.length }).toMatchInlineSnapshot(`
{
- "brotli": 1357,
- "minified": 2913,
+ "brotli": 1350,
+ "minified": 2859,
}
`);
});
diff --git a/packages/qwik/src/qwikloader.unit.ts b/packages/qwik/src/qwikloader.unit.ts
index cedcf1cdc97..3704142f638 100644
--- a/packages/qwik/src/qwikloader.unit.ts
+++ b/packages/qwik/src/qwikloader.unit.ts
@@ -23,13 +23,13 @@ test('qwikloader script', () => {
const compressed = compress(Buffer.from(qwikLoader), { mode: 1, quality: 11 });
expect([compressed.length, qwikLoader.length]).toMatchInlineSnapshot(`
[
- 1943,
- 4913,
+ 1928,
+ 4897,
]
`);
expect(qwikLoader).toMatchInlineSnapshot(
- `"const e=document,t=window,r="w",n="wp",o="d",s="dp",i="e",c="ep",l="capture:",a=new Set,p=new Set([e]),q=new Map;let u,f,h;const d=(e,t)=>Array.from(e.querySelectorAll(t)),b=e=>{const t=[];return p.forEach(r=>t.push(...d(r,e))),t},m=(e,t,r,n=!1,o=!1)=>e.addEventListener(t,r,{capture:n,passive:o}),g=e=>{J(e);const t=d(e,"[q\\\\:shadowroot]");for(let e=0;ee&&"function"==typeof e.then,y=async e=>{for(let t=0;t{if(e.length){const t=()=>y(e);h=h?h.then(t,t):t()}},E=t=>{if(void 0===t._qwikjson_){let r=(t===e.documentElement?e.body:t).lastElementChild;for(;r;){if("SCRIPT"===r.tagName&&"qwik/json"===r.getAttribute("type")){t._qwikjson_=JSON.parse(r.textContent.replace(/\\\\x3C(\\/?script)/gi,"<$1"));break}r=r.previousElementSibling}}},A=(e,t)=>new CustomEvent(e,{detail:t}),C=(t,r)=>{e.dispatchEvent(A(t,r))},_=e=>e.replace(/([A-Z-])/g,e=>"-"+e.toLowerCase()),k=e=>e.replace(/-./g,e=>e[1].toUpperCase()),B=e=>{const t=e.indexOf(":");return{scope:e.slice(0,t),eventName:k(e.slice(t+1))}},S=e=>2===e.length,I=e=>e.charAt(0),N=e=>!!e&&1===e.nodeType,T=(e,t,r)=>e.hasAttribute(r)&&(!!e._qDispatch?.[t]||e.hasAttribute("q-"+t)),$=(t,r,n,o,s,i,c)=>{const l={qBase:n,symbol:i,element:r,reqTime:c};if(""===s){const r=t.getAttribute("q:instance"),n=(e["qFuncs_"+r]||[])[Number.parseInt(i)];if(!n){const e=Error("sym:"+i);C("qerror",{importError:"sync",error:e,...l}),console.error(e)}return n}const a=\`\${i}|\${n}|\${s}\`,p=q.get(a);if(p)return p;const u=new URL(s,o).href,f=import(u);return E(t),f.then(e=>{const t=e[i];if(t)q.set(a,t),C("qsymbol",l);else{const e=Error(\`\${i} not in \${u}\`);C("qerror",{importError:"no-symbol",error:e,...l}),console.error(e)}return t},e=>{C("qerror",{importError:"async",error:e,...l}),console.error(e)})},R=(t,r,n,o,s,i=!0)=>{let c=!1;s&&(i&&t.hasAttribute("preventdefault:"+s)&&r.preventDefault(),t.hasAttribute("stoppropagation:"+s)&&r.stopPropagation());const l=t._qDispatch?.[n];if(l){if("function"==typeof l){const e=()=>l(r,t);if(c)o.push(async()=>{const t=e();v(t)&&await t});else{const t=e();v(t)&&(c=!0,o.push(()=>t))}}else if(l.length)for(let e=0;en(r,t);if(c)o.push(async()=>{const t=e();v(t)&&await t});else{const t=e();v(t)&&(c=!0,o.push(()=>t))}}}return}const a=t.getAttribute("q-"+n);if(a){const n=t.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])"),s=n.getAttribute("q:base"),i=new URL(s,e.baseURI),l=a.split("|");for(let e=0;e{if(e&&t.isConnected)try{const n=e.call(f,r,t);if(v(n))return n.catch(e=>{C("qerror",{error:e,qBase:s,symbol:u,element:t,reqTime:p})})}catch(e){C("qerror",{error:e,qBase:s,symbol:u,element:t,reqTime:p})}},d=$(n,t,s,i,q,u,p);if(c||v(d))c=!0,o.push(async()=>{await h(v(d)?await d:d)});else{const e=h(d);v(e)&&(c=!0,o.push(()=>e))}}}},x=(e,t=i,r=!0)=>{const n=_(e.type),o=t+":"+n,s=l+n,c=[],a=[],p=[];let q=e.target;for(;q;)N(q)?(c.push(q),a.push(T(q,o,s)),q=q.parentElement):q=q.parentElement;for(let t=c.length-1;t>=0;t--)if(a[t]&&(R(c[t],e,o,p,n,r),e.cancelBubble||e.cancelBubble))return void w(p);for(let t=0;tx(e,c,!1),U=(e,t,r=!0)=>{const n=_(t.type),o=e+":"+n,s=b("[q-"+e+"\\\\:"+n+"]"),i=[];for(let e=0;e{U(o,e)},D=e=>{U(s,e,!1)},O=e=>{U(r,e)},P=e=>{U(n,e,!1)},F=()=>{const r=e.readyState;if("interactive"==r||"complete"==r){if(f=1,p.forEach(g),a.has("d:qinit")){a.delete("d:qinit");const e=A("qinit"),t=b("[q-d\\\\:qinit]"),r=[];for(let n=0;n{const e=A("qidle"),t=b("[q-d\\\\:qidle]"),r=[];for(let n=0;n{const t=[];for(let r=0;r{for(let n=0;nm(e,n,c===o?i?D:j:i?L:x,!0,i)),1!==f||"e:qvisible"!==s&&"d:qinit"!==s&&"d:qidle"!==s||F()}}else p.has(s)||(a.forEach(e=>{const{scope:t,eventName:n}=B(e),i=S(t),c=I(t);c!==r&&m(s,n,c===o?i?D:j:i?L:x,!0,i)}),p.add(s))}},M=t._qwikEv;M?.roots||(Array.isArray(M)?J(...M):J("e:click","e:input"),t._qwikEv={events:a,roots:p,push:J},m(e,"readystatechange",F),F());"`
+ `"var e,t,r,n=document,o=window,s="w",i="wp",c="d",l="dp",a="e",p="ep",q="capture:",u=new Set,f=new Set([n]),h=new Map,d=(e,t)=>Array.from(e.querySelectorAll(t)),b=e=>{const t=[];return f.forEach(r=>t.push(...d(r,e))),t},m=(e,t,r,n=!1,o=!1)=>e.addEventListener(t,r,{capture:n,passive:o}),g=e=>{J(e);const t=d(e,"[q\\\\:shadowroot]");for(let e=0;ee&&"function"==typeof e.then,y=async e=>{for(let t=0;t{if(e.length){const t=()=>y(e);r=r?r.then(t,t):t()}},E=e=>{if(void 0===e._qwikjson_){let t=(e===n.documentElement?n.body:e).lastElementChild;for(;t;){if("SCRIPT"===t.tagName&&"qwik/json"===t.getAttribute("type")){e._qwikjson_=JSON.parse(t.textContent.replace(/\\\\x3C(\\/?script)/gi,"<$1"));break}t=t.previousElementSibling}}},A=(e,t)=>new CustomEvent(e,{detail:t}),C=(e,t)=>{n.dispatchEvent(A(e,t))},_=e=>e.replace(/([A-Z-])/g,e=>"-"+e.toLowerCase()),k=e=>e.replace(/-./g,e=>e[1].toUpperCase()),B=e=>{const t=e.indexOf(":");return{scope:e.slice(0,t),eventName:k(e.slice(t+1))}},S=e=>2===e.length,I=e=>e.charAt(0),N=e=>!!e&&1===e.nodeType,T=(e,t,r)=>e.hasAttribute(r)&&(!!e._qDispatch?.[t]||e.hasAttribute("q-"+t)),$=(e,t,r,o,s,i,c)=>{const l={qBase:r,symbol:i,element:t,reqTime:c};if(""===s){const t=(n["qFuncs_"+e.getAttribute("q:instance")]||[])[Number.parseInt(i)];if(!t){const e=Error("sym:"+i);C("qerror",{importError:"sync",error:e,...l}),console.error(e)}return t}const a=\`\${i}|\${r}|\${s}\`,p=h.get(a);if(p)return p;const q=new URL(s,o).href,u=import(q);return E(e),u.then(e=>{const t=e[i];if(t)h.set(a,t),C("qsymbol",l);else{const e=Error(\`\${i} not in \${q}\`);C("qerror",{importError:"no-symbol",error:e,...l}),console.error(e)}return t},e=>{C("qerror",{importError:"async",error:e,...l}),console.error(e)})},R=(e,t,r,o,s,i=!0)=>{let c=!1;s&&(i&&e.hasAttribute("preventdefault:"+s)&&t.preventDefault(),e.hasAttribute("stoppropagation:"+s)&&t.stopPropagation());const l=e._qDispatch?.[r];if(l){if("function"==typeof l){const r=()=>l(t,e);if(c)o.push(async()=>{const e=r();v(e)&&await e});else{const e=r();v(e)&&(c=!0,o.push(()=>e))}}else if(l.length)for(let r=0;rn(t,e);if(c)o.push(async()=>{const e=r();v(e)&&await e});else{const e=r();v(e)&&(c=!0,o.push(()=>e))}}}return}const a=e.getAttribute("q-"+r);if(a){const r=e.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])"),s=r.getAttribute("q:base"),i=new URL(s,n.baseURI),l=a.split("|");for(let n=0;n{if(r&&e.isConnected)try{const n=r.call(f,t,e);if(v(n))return n.catch(t=>{C("qerror",{error:t,qBase:s,symbol:u,element:e,reqTime:p})})}catch(t){C("qerror",{error:t,qBase:s,symbol:u,element:e,reqTime:p})}},d=$(r,e,s,i,q,u,p);if(c||v(d))c=!0,o.push(async()=>{await h(v(d)?await d:d)});else{const e=h(d);v(e)&&(c=!0,o.push(()=>e))}}}},x=(e,t=a,r=!0)=>{const n=_(e.type),o=t+":"+n,s=q+n,i=[],c=[],l=[];let p=e.target;for(;p;)N(p)?(i.push(p),c.push(T(p,o,s)),p=p.parentElement):p=p.parentElement;for(let t=i.length-1;t>=0;t--)if(c[t]&&(R(i[t],e,o,l,n,r),e.cancelBubble||e.cancelBubble))return void w(l);for(let t=0;tx(e,p,!1),U=(e,t,r=!0)=>{const n=_(t.type),o=e+":"+n,s=b("[q-"+e+"\\\\:"+n+"]"),i=[];for(let e=0;e{U(c,e)},D=e=>{U(l,e,!1)},O=e=>{U(s,e)},P=e=>{U(i,e,!1)},F=()=>{const r=n.readyState;if("interactive"==r||"complete"==r){if(t=1,f.forEach(g),u.has("d:qinit")){u.delete("d:qinit");const e=A("qinit"),t=b("[q-d\\\\:qinit]"),r=[];for(let n=0;n{const e=A("qidle"),t=b("[q-d\\\\:qidle]"),r=[];for(let n=0;n{const r=[];for(let n=0;n{for(let r=0;rm(e,r,l===c?i?D:j:i?L:x,!0,i)),1!==t||"e:qvisible"!==n&&"d:qinit"!==n&&"d:qidle"!==n||F()}}else f.has(n)||(u.forEach(e=>{const{scope:t,eventName:r}=B(e),o=S(t),i=I(t);i!==s&&m(n,r,i===c?o?D:j:o?L:x,!0,o)}),f.add(n))}},M=o._qwikEv;M?.roots||(Array.isArray(M)?J(...M):J("e:click","e:input"),o._qwikEv={events:u,roots:f,push:J},m(n,"readystatechange",F),F());"`
);
});
diff --git a/packages/supabase-auth-helpers-qwik/vite.config.ts b/packages/supabase-auth-helpers-qwik/vite.config.ts
index 9fc503607a9..2c774117f94 100644
--- a/packages/supabase-auth-helpers-qwik/vite.config.ts
+++ b/packages/supabase-auth-helpers-qwik/vite.config.ts
@@ -13,7 +13,7 @@ export default defineConfig((config) => {
formats: ['es'],
fileName: () => `index.qwik.mjs`,
},
- rollupOptions: {
+ rolldownOptions: {
external: [
'@qwik.dev/core',
'@qwik.dev/router',
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 857e2d743b2..7354e59959e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -107,11 +107,11 @@ importers:
specifier: 1.0.2
version: 1.0.2
'@vitejs/plugin-basic-ssl':
- specifier: 2.1.4
- version: 2.1.4(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ specifier: 2.2.0
+ version: 2.2.0(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@vitest/coverage-v8':
specifier: 4.0.18
- version: 4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
all-contributors-cli:
specifier: 6.26.1
version: 6.26.1
@@ -184,9 +184,9 @@ importers:
prompts:
specifier: 2.4.2
version: 2.4.2
- rollup:
- specifier: 4.59.0
- version: 4.59.0
+ rolldown:
+ specifier: 1.0.0-rc.16
+ version: 1.0.0-rc.16
semver:
specifier: 7.7.3
version: 7.7.3
@@ -227,20 +227,20 @@ importers:
specifier: 6.0.3
version: 6.0.3
vite:
- specifier: 7.3.1
- version: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ specifier: 8.0.9
+ version: 8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
vite-imagetools:
specifier: 10.0.0
- version: 10.0.0(rollup@4.59.0)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 10.0.0(rollup@4.60.2)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
vite-plugin-dts:
specifier: 4.5.4
- version: 4.5.4(@types/node@24.10.0)(rollup@4.59.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 4.5.4(@types/node@24.10.0)(rollup@4.60.2)(typescript@5.9.3)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
vite-tsconfig-paths:
specifier: 6.0.4
- version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 6.0.4(typescript@5.9.3)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
vitest:
specifier: 4.0.18
- version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
watchlist:
specifier: 0.3.1
version: 0.3.1
@@ -311,6 +311,10 @@ importers:
version: 17.7.2
packages/docs:
+ dependencies:
+ prismjs:
+ specifier: 1.30.0
+ version: 1.30.0
devDependencies:
'@emnapi/core':
specifier: 1.9.2
@@ -335,7 +339,7 @@ importers:
version: 8.11.3(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.3))(@types/react@19.2.7)(react@19.2.3))(@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.3))(@types/react@19.2.7)(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mui/system@7.3.2(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.3))(@types/react@19.2.7)(react@19.2.3))(@types/react@19.2.7)(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@qds.dev/tools':
specifier: 0.14.3
- version: 0.14.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ version: 0.14.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
'@qds.dev/ui':
specifier: 0.14.3
version: 0.14.3(@qwik.dev/core@packages+qwik)
@@ -344,7 +348,7 @@ importers:
version: link:../qwik
'@qwik.dev/devtools':
specifier: 0.2.5
- version: 0.2.5(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@qwik.dev/core@packages+qwik)(@qwik.dev/router@packages+qwik-router)(@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(tailwindcss@4.1.18)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 0.2.5(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@qwik.dev/core@packages+qwik)(@qwik.dev/router@packages+qwik-router)(@tailwindcss/postcss@4.2.2)(@tailwindcss/vite@4.2.2(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(tailwindcss@4.2.1)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@qwik.dev/optimizer':
specifier: workspace:*
version: link:../optimizer
@@ -358,8 +362,8 @@ importers:
specifier: workspace:*
version: link:../qwik-router
'@rolldown/browser':
- specifier: 1.0.0-beta.59
- version: 1.0.0-beta.59(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ specifier: 1.0.0-rc.12
+ version: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
'@shikijs/colorized-brackets':
specifier: 3.21.0
version: 3.21.0
@@ -381,9 +385,12 @@ importers:
'@supabase/supabase-js':
specifier: 2.53.0
version: 2.53.0
+ '@tailwindcss/postcss':
+ specifier: 4.2.2
+ version: 4.2.2
'@tailwindcss/vite':
- specifier: 4.1.18
- version: 4.1.18(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ specifier: 4.2.2
+ version: 4.2.2(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@types/leaflet':
specifier: 1.9.21
version: 1.9.21
@@ -429,9 +436,6 @@ importers:
prism-themes:
specifier: 1.9.0
version: 1.9.0
- prismjs:
- specifier: 1.30.0
- version: 1.30.0
qwik-image:
specifier: 0.0.16
version: 0.0.16
@@ -448,8 +452,8 @@ importers:
specifier: 2.0.0
version: 2.0.0
tailwindcss:
- specifier: 4.1.18
- version: 4.1.18
+ specifier: 4.2.1
+ version: 4.2.1
terser:
specifier: 5.46.0
version: 5.46.0
@@ -463,11 +467,11 @@ importers:
specifier: 1.2.0
version: 1.2.0(typescript@5.9.3)
vite:
- specifier: 7.3.1
- version: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ specifier: 8.0.9
+ version: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
vite-tsconfig-paths:
specifier: 6.0.4
- version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 6.0.4(typescript@5.9.3)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
wrangler:
specifier: 4.80.0
version: 4.80.0
@@ -476,7 +480,7 @@ importers:
dependencies:
'@typescript-eslint/utils':
specifier: ^8.56.1
- version: 8.58.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ version: 8.59.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
jsx-ast-utils:
specifier: ^3.3.5
version: 3.3.5
@@ -543,8 +547,8 @@ importers:
specifier: workspace:*
version: link:../qwik-router
'@tailwindcss/vite':
- specifier: 4.1.18
- version: 4.1.18(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ specifier: 4.2.2
+ version: 4.2.2(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@types/density-clustering':
specifier: 1.3.3
version: 1.3.3
@@ -565,7 +569,7 @@ importers:
version: 17.0.0
netlify-cli:
specifier: 24.5.1
- version: 24.5.1(@types/node@24.10.0)(picomatch@4.0.4)(rollup@4.59.0)
+ version: 24.5.1(@types/node@24.10.0)(picomatch@4.0.4)(rollup@4.60.2)
postcss:
specifier: 8.5.6
version: 8.5.6
@@ -576,8 +580,8 @@ importers:
specifier: 0.7.2
version: 0.7.2(prettier-plugin-jsdoc@1.8.0(prettier@3.7.4))(prettier@3.7.4)
tailwindcss:
- specifier: 4.1.18
- version: 4.1.18
+ specifier: 4.2.1
+ version: 4.2.1
typescript:
specifier: 5.9.3
version: 5.9.3
@@ -585,14 +589,14 @@ importers:
specifier: 8.56.1
version: 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
vite:
- specifier: 7.3.1
- version: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ specifier: 8.0.9
+ version: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
vite-tsconfig-paths:
specifier: 6.0.4
- version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 6.0.4(typescript@5.9.3)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
vitest:
specifier: 4.0.18
- version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
zod:
specifier: 3.25.48
version: 3.25.48
@@ -610,9 +614,6 @@ importers:
launch-editor:
specifier: ^2.12.0
version: 2.13.2
- rollup:
- specifier: ^4.59.0
- version: 4.59.0
devDependencies:
'@croct/json5-parser':
specifier: 0.2.2
@@ -638,9 +639,12 @@ importers:
prettier:
specifier: 3.7.4
version: 3.7.4
+ rolldown:
+ specifier: 1.0.0-rc.16
+ version: 1.0.0-rc.16
vitest:
specifier: 4.0.18
- version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
packages/qwik-dom: {}
@@ -665,8 +669,8 @@ importers:
specifier: 5.9.3
version: 5.9.3
vite:
- specifier: 7.3.1
- version: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ specifier: 8.0.9
+ version: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
packages/qwik-router:
dependencies:
@@ -736,12 +740,9 @@ importers:
vfile:
specifier: 6.0.3
version: 6.0.3
- vite:
- specifier: '>=6 <9'
- version: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
vite-imagetools:
specifier: 10.0.0
- version: 10.0.0(rollup@4.59.0)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ version: 10.0.0(rollup@4.60.2)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
yaml:
specifier: ^2.8.2
version: 2.8.3
@@ -776,12 +777,24 @@ importers:
uvu:
specifier: 0.5.6
version: 0.5.6
+ vite:
+ specifier: 8.0.9
+ version: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
packages/qwik-vite:
devDependencies:
image-size:
specifier: 1.2.1
version: 1.2.1
+ rolldown:
+ specifier: 1.0.0-rc.16
+ version: 1.0.0-rc.16
+ rollup:
+ specifier: 4.60.2
+ version: 4.60.2
+ vite:
+ specifier: 8.0.9
+ version: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
packages/supabase-auth-helpers-qwik:
devDependencies:
@@ -842,6 +855,10 @@ packages:
'@algolia/transporter@4.16.0':
resolution: {integrity: sha512-H9BVB2EAjT65w7XGBNf5drpsW39x2aSZ942j4boSAAJPPlLmjtj5IpAP7UAtsV8g9Beslonh0bLa1XGmE/P0BA==}
+ '@alloc/quick-lru@5.2.0':
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+
'@antfu/install-pkg@1.1.0':
resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
@@ -921,8 +938,8 @@ packages:
'@bugsnag/core@8.9.0':
resolution: {integrity: sha512-SrXO0isIZfrCem06/WDvC5MSd1Tj6Yjm4Wqdlv6jyjTvsow+cppvt7rS9Bps3qOeXfYCqWHN4ev02OdwnfZ1PQ==}
- '@bugsnag/cuid@3.2.1':
- resolution: {integrity: sha512-zpvN8xQ5rdRWakMd/BcVkdn2F8HKlDSbM3l7duueK590WmI1T0ObTLc1V/1e55r14WNjPd5AJTYX4yPEAFVi+Q==}
+ '@bugsnag/cuid@3.2.2':
+ resolution: {integrity: sha512-7onuYLTMqMmHE9BBPG0YER4nFsU1rB+me1/YIeMusqcLbVbKKuG9u9+BDVDpje5e0llkkrVNOKYwmzM9DRIo7A==}
'@bugsnag/js@8.9.0':
resolution: {integrity: sha512-ChjKFVBF2CgepDXfMBkbEdcFUniJNN8py5V+tinaB8+vpJbr/fD1+VLFhkruSEn3jOafXrc1XJe9WHtsu9ht0g==}
@@ -933,11 +950,11 @@ packages:
'@bugsnag/safe-json-stringify@6.1.0':
resolution: {integrity: sha512-ImA35rnM7bGr+J30R979FQ95BhRB4UO1KfJA0J2sVqc8nwnrS9hhE5mkTmQWMs8Vh1Da+hkLKs5jJB4JjNZp4A==}
- '@changesets/apply-release-plan@7.1.0':
- resolution: {integrity: sha512-yq8ML3YS7koKQ/9bk1PqO0HMzApIFNwjlwCnwFEXMzNe8NpzeeYYKCmnhWJGkN8g7E51MnWaSbqRcTcdIxUgnQ==}
+ '@changesets/apply-release-plan@7.1.1':
+ resolution: {integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==}
- '@changesets/assemble-release-plan@6.0.9':
- resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==}
+ '@changesets/assemble-release-plan@6.0.10':
+ resolution: {integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==}
'@changesets/changelog-git@0.2.1':
resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==}
@@ -946,20 +963,20 @@ packages:
resolution: {integrity: sha512-0j0cPq3fgxt2dPdFsg4XvO+6L66RC0pZybT9F4dG5TBrLA3jA/1pNkdTXH9IBBVHkgsKrNKenI3n1mPyPlIydg==}
hasBin: true
- '@changesets/config@3.1.3':
- resolution: {integrity: sha512-vnXjcey8YgBn2L1OPWd3ORs0bGC4LoYcK/ubpgvzNVr53JXV5GiTVj7fWdMRsoKUH7hhhMAQnsJUqLr21EncNw==}
+ '@changesets/config@3.1.4':
+ resolution: {integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==}
'@changesets/errors@0.2.0':
resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==}
- '@changesets/get-dependents-graph@2.1.3':
- resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==}
+ '@changesets/get-dependents-graph@2.1.4':
+ resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==}
'@changesets/get-github-info@0.6.0':
resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==}
- '@changesets/get-release-plan@4.0.15':
- resolution: {integrity: sha512-Q04ZaRPuEVZtA+auOYgFaVQQSA98dXiVe/yFaZfY7hoSmQICHGvP0TF4u3EDNHWmmCS4ekA/XSpKlSM2PyTS2g==}
+ '@changesets/get-release-plan@4.0.16':
+ resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==}
'@changesets/get-version-range-type@0.4.0':
resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
@@ -1057,8 +1074,8 @@ packages:
'@dabh/diagnostics@2.0.8':
resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==}
- '@dependents/detective-less@5.0.1':
- resolution: {integrity: sha512-Y6+WUMsTFWE5jb20IFP4YGa5IrGY/+a/FbOSjDF/wz9gepU2hwCYSXRHP/vPwBvwcY3SVMASt4yXxbXNXigmZQ==}
+ '@dependents/detective-less@5.0.3':
+ resolution: {integrity: sha512-v6oD9Ukp+N7V4n6p5I/+mM5fIohSfkrDSGlFm5w/pYmchvbk+sMIHsLxrFJ5Lnujewj1BzWL0K84d88lwZAMQA==}
engines: {node: '>=18'}
'@drizzle-team/brocli@0.10.2':
@@ -1070,6 +1087,9 @@ packages:
'@emnapi/core@1.9.2':
resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==}
+ '@emnapi/runtime@1.10.0':
+ resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
+
'@emnapi/runtime@1.9.2':
resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==}
@@ -1827,12 +1847,16 @@ packages:
'@floating-ui/utils@0.2.11':
resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
- '@humanfs/core@0.19.1':
- resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
+ '@humanfs/core@0.19.2':
+ resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==}
engines: {node: '>=18.18.0'}
- '@humanfs/node@0.16.7':
- resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
+ '@humanfs/node@0.16.8':
+ resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanfs/types@0.15.0':
+ resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==}
engines: {node: '>=18.18.0'}
'@humanwhocodes/module-importer@1.0.1':
@@ -1850,14 +1874,14 @@ packages:
'@iarna/toml@2.2.5':
resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
- '@iconify/json@2.2.461':
- resolution: {integrity: sha512-UiujJDldh6bD5v0EDbB6aKgye1tW3mteqmjHAwXi1bLQm9OYnHAWBIe8ogVZB2ttEFFraOBFkpe3VFwtxRSKSQ==}
+ '@iconify/json@2.2.467':
+ resolution: {integrity: sha512-vjw27l6Sp6OJnCSNAhE6PGCZFYNSp68j1xK+hws0T5mptSEez0EjmmJBQLUk4yM5nhA9G5H5mW3EF2/yRfk74Q==}
'@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
- '@iconify/utils@3.1.0':
- resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==}
+ '@iconify/utils@3.1.1':
+ resolution: {integrity: sha512-MwzoDtw9rO1x+qfgLTV/IVXsHDBqeYZoMIQC8SfxfYSlaSUG+oWiAcoiB1yajAda6mqblm4/1/w2E8tRu7a7Tw==}
'@img/colour@1.1.0':
resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==}
@@ -2290,8 +2314,8 @@ packages:
'@napi-rs/triples@1.2.0':
resolution: {integrity: sha512-HAPjR3bnCsdXBsATpDIP5WCrw0JcACwhhrwIAQhiR46n+jm+a2F8kBsfseAuWtSyQ+H3Yebt2k43B5dy+04yMA==}
- '@napi-rs/wasm-runtime@1.1.3':
- resolution: {integrity: sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==}
+ '@napi-rs/wasm-runtime@1.1.4':
+ resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
peerDependencies:
'@emnapi/core': ^1.7.1
'@emnapi/runtime': ^1.7.1
@@ -2385,8 +2409,8 @@ packages:
resolution: {integrity: sha512-Ejrb+1HL11zgVgaaMHWukH4hOXFy3FUtue8hD5rgBiLWeGp03uOlGehmbRz47FXvGBMK7Z4t7HZRZU/vpaN5+g==}
engines: {node: '>=20.6.1'}
- '@netlify/functions-utils@6.2.29':
- resolution: {integrity: sha512-82VfLDTEXLl6LKKMlBUIektOOaIz4Bhdn1FI6zgRhE4uPDnDd1rhJZPZ1JXf7QUaj0xUfVQAf9cALnQR0y+8Qw==}
+ '@netlify/functions-utils@6.2.30':
+ resolution: {integrity: sha512-UpYeqEWXpheOrq6vmQJq/SBWToHpi0qxHoUNNr2dSUrplJa+ehUnEujaDE2kiQnuux88cM9Zt9x+KmBVTYG12g==}
engines: {node: '>=18.14.0'}
'@netlify/functions@5.1.5':
@@ -2485,8 +2509,8 @@ packages:
resolution: {integrity: sha512-siVwmrp7Ow+7jLALi6jXOja4Y4uHMMgOLLQMgd+OZ1TESOstrJvkUisJEDAc9hx7u0v/B0mh5g1g1huiH3uS3A==}
engines: {node: '>=18.14.0'}
- '@netlify/open-api@2.52.0':
- resolution: {integrity: sha512-QkWQu0vz3uBcxjSslA0N6Njo0x1ndkhEIVEmdwcmxfufX8wA0d9WjiU2sWuHYw11Mrf5pkMUQHvZy+6V4A9TYQ==}
+ '@netlify/open-api@2.53.0':
+ resolution: {integrity: sha512-CcIhcB+XzY77nze7vLTdxkqS/uX5DXleo3adE8H+M7TapLX6GTXp5qMIsq8bAuHy5eGw0ijRrAnSUmkOP4DM2w==}
engines: {node: '>=14.8.0'}
'@netlify/opentelemetry-utils@2.0.2':
@@ -2527,8 +2551,8 @@ packages:
resolution: {integrity: sha512-4DoMV6nJRpBNkWUHCyyhovZxMQNHYO0/oiK1TDe+Kx+pDycqCO3YqbqFDgPwZg807H/L5SnsZF9JgPgu2ACKIw==}
engines: {node: '>=18.0.0'}
- '@netlify/serverless-functions-api@2.14.0':
- resolution: {integrity: sha512-6UwJ9Fm8NU9LPBa5zV5Gv20JgSEPOOwZ7oUbNYbB7SUnNTmIBccafgZF3+xXqSpI3hxXn4/l5xxCO+Pc2KURZA==}
+ '@netlify/serverless-functions-api@2.15.0':
+ resolution: {integrity: sha512-FDZwRBWq6zgmuYkszHGcN1qYliTOY7/ZzuWWxJy1WoB4cZt6gdzgN5Gx9zuIKfiL9KelL0iAnd/bZrrfLZZ5ig==}
engines: {node: '>=18.0.0'}
'@netlify/static@3.1.7':
@@ -2544,8 +2568,8 @@ packages:
engines: {node: '>=18.14.0'}
hasBin: true
- '@netlify/zip-it-and-ship-it@14.5.3':
- resolution: {integrity: sha512-7CCFbfEs11WZmY2ddXR85q6O6dHr8aWA/fcdw+7ftwtIaajQKWGDduZT5lI+u7i60wVymt8CEu2Et/hKOhFtzQ==}
+ '@netlify/zip-it-and-ship-it@14.5.4':
+ resolution: {integrity: sha512-kaX/03YsBy/9ZOTNF/EtbBkof/Uukul5mnxs/SHD8LPY9Co6TcdMz61ZfDNyAYeIdfTMDIs4EFNBQPvzHexEMg==}
engines: {node: '>=18.14.0'}
hasBin: true
@@ -3075,6 +3099,9 @@ packages:
'@oxc-project/types@0.115.0':
resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==}
+ '@oxc-project/types@0.126.0':
+ resolution: {integrity: sha512-oGfVtjAgwQVVpfBrbtk4e1XDyWHRFta6BS3GWVzrF8xYBT2VGQAk39yJS/wFSMrZqoiCU4oghT3Ch0HaHGIHcQ==}
+
'@oxc-project/types@0.82.3':
resolution: {integrity: sha512-6nCUxBnGX0c6qfZW5MaF6/fmu5dHJDMiMPaioKHKs5mi5+8/FHQ7WGjgQIz1zxpmceMYfdIXkOaLYE+ejbuOtA==}
@@ -3392,10 +3419,102 @@ packages:
resolution: {integrity: sha512-e0wY8vmx0nDSUiuCATlk+ojTvdBV4txIGHHWjZW5SRkv4XB8H9+3WSDcLPz0ItUdRyzcrohE9k2jtQI/98aRPA==}
engines: {node: '>=15.0.0'}
- '@rolldown/browser@1.0.0-beta.59':
- resolution: {integrity: sha512-4mPCTcp0HHFOfaQTz+Qb7bFHovQFWadTAX+GgbGwGXGUi41xMv6epDtIBpC+O/+odX2n0z1nXyOPGvra4ufW4Q==}
+ '@rolldown/binding-android-arm64@1.0.0-rc.16':
+ resolution: {integrity: sha512-rhY3k7Bsae9qQfOtph2Pm2jZEA+s8Gmjoz4hhmx70K9iMQ/ddeae+xhRQcM5IuVx5ry1+bGfkvMn7D6MJggVSA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@rolldown/binding-darwin-arm64@1.0.0-rc.16':
+ resolution: {integrity: sha512-rNz0yK078yrNn3DrdgN+PKiMOW8HfQ92jQiXxwX8yW899ayV00MLVdaCNeVBhG/TbH3ouYVObo8/yrkiectkcQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-x64@1.0.0-rc.16':
+ resolution: {integrity: sha512-r/OmdR00HmD4i79Z//xO06uEPOq5hRXdhw7nzkxQxwSavs3PSHa1ijntdpOiZ2mzOQ3fVVu8C1M19FoNM+dMUQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rolldown/binding-freebsd-x64@1.0.0-rc.16':
+ resolution: {integrity: sha512-KcRE5w8h0OnjUatG8pldyD14/CQ5Phs1oxfR+3pKDjboHRo9+MkqQaiIZlZRpsxC15paeXme/I127tUa9TXJ6g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.16':
+ resolution: {integrity: sha512-bT0guA1bpxEJ/ZhTRniQf7rNF8ybvXOuWbNIeLABaV5NGjx4EtOWBTSRGWFU9ZWVkPOZ+HNFP8RMcBokBiZ0Kg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.16':
+ resolution: {integrity: sha512-+tHktCHWV8BDQSjemUqm/Jl/TPk3QObCTIjmdDy/nlupcujZghmKK2962LYrqFpWu+ai01AN/REOH3NEpqvYQg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-musl@1.0.0-rc.16':
+ resolution: {integrity: sha512-3fPzdREH806oRLxpTWW1Gt4tQHs0TitZFOECB2xzCFLPKnSOy90gwA7P29cksYilFO6XVRY1kzga0cL2nRjKPg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.16':
+ resolution: {integrity: sha512-EKwI1tSrLs7YVw+JPJT/G2dJQ1jl9qlTTTEG0V2Ok/RdOenRfBw2PQdLPyjhIu58ocdBfP7vIRN/pvMsPxs/AQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.16':
+ resolution: {integrity: sha512-Uknladnb3Sxqu6SEcqBldQyJUpk8NleooZEc0MbRBJ4inEhRYWZX0NJu12vNf2mqAq7gsofAxHrGghiUYjhaLQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rolldown/binding-linux-x64-gnu@1.0.0-rc.16':
+ resolution: {integrity: sha512-FIb8+uG49sZBtLTn+zt1AJ20TqVcqWeSIyoVt0or7uAWesgKaHbiBh6OpA/k9v0LTt+PTrb1Lao133kP4uVxkg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@rolldown/binding-linux-x64-musl@1.0.0-rc.16':
+ resolution: {integrity: sha512-RuERhF9/EgWxZEXYWCOaViUWHIboceK4/ivdtQ3R0T44NjLkIIlGIAVAuCddFxsZ7vnRHtNQUrt2vR2n2slB2w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@rolldown/binding-openharmony-arm64@1.0.0-rc.16':
+ resolution: {integrity: sha512-mXcXnvd9GpazCxeUCCnZ2+YF7nut+ZOEbE4GtaiPtyY6AkhZWbK70y1KK3j+RDhjVq5+U8FySkKRb/+w0EeUwA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rolldown/binding-wasm32-wasi@1.0.0-rc.16':
+ resolution: {integrity: sha512-3Q2KQxnC8IJOLqXmUMoYwyIPZU9hzRbnHaoV3Euz+VVnjZKcY8ktnNP8T9R4/GGQtb27C/UYKABxesKWb8lsvQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [wasm32]
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.16':
+ resolution: {integrity: sha512-tj7XRemQcOcFwv7qhpUxMTBbI5mWMlE4c1Omhg5+h8GuLXzyj8HviYgR+bB2DMDgRqUE+jiDleqSCRjx4aYk/Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rolldown/binding-win32-x64-msvc@1.0.0-rc.16':
+ resolution: {integrity: sha512-PH5DRZT+F4f2PTXRXR8uJxnBq2po/xFtddyabTJVJs/ZYVHqXPEgNIr35IHTEa6bpa0Q8Awg+ymkTaGnKITw4g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@rolldown/browser@1.0.0-rc.12':
+ resolution: {integrity: sha512-E6XVYtkrEiHE2JzKr4Bntzi/yvYDXZi9RNCYtgoZ7i9fqn9W8sTlReV2KO2H8nc2mN+0YHZeKmeuKf8ct4r1CQ==}
hasBin: true
+ '@rolldown/pluginutils@1.0.0-rc.16':
+ resolution: {integrity: sha512-45+YtqxLYKDWQouLKCrpIZhke+nXxhsw+qAHVzHDVwttyBlHNBVs2K25rDXrZzhpTp9w1FlAlvweV1H++fdZoA==}
+
'@rollup/pluginutils@5.3.0':
resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
engines: {node: '>=14.0.0'}
@@ -3405,128 +3524,128 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.59.0':
- resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==}
+ '@rollup/rollup-android-arm-eabi@4.60.2':
+ resolution: {integrity: sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.59.0':
- resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==}
+ '@rollup/rollup-android-arm64@4.60.2':
+ resolution: {integrity: sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.59.0':
- resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==}
+ '@rollup/rollup-darwin-arm64@4.60.2':
+ resolution: {integrity: sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.59.0':
- resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==}
+ '@rollup/rollup-darwin-x64@4.60.2':
+ resolution: {integrity: sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.59.0':
- resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==}
+ '@rollup/rollup-freebsd-arm64@4.60.2':
+ resolution: {integrity: sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.59.0':
- resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==}
+ '@rollup/rollup-freebsd-x64@4.60.2':
+ resolution: {integrity: sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.59.0':
- resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.60.2':
+ resolution: {integrity: sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.59.0':
- resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==}
+ '@rollup/rollup-linux-arm-musleabihf@4.60.2':
+ resolution: {integrity: sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.59.0':
- resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==}
+ '@rollup/rollup-linux-arm64-gnu@4.60.2':
+ resolution: {integrity: sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.59.0':
- resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==}
+ '@rollup/rollup-linux-arm64-musl@4.60.2':
+ resolution: {integrity: sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loong64-gnu@4.59.0':
- resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==}
+ '@rollup/rollup-linux-loong64-gnu@4.60.2':
+ resolution: {integrity: sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-loong64-musl@4.59.0':
- resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==}
+ '@rollup/rollup-linux-loong64-musl@4.60.2':
+ resolution: {integrity: sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-ppc64-gnu@4.59.0':
- resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==}
+ '@rollup/rollup-linux-ppc64-gnu@4.60.2':
+ resolution: {integrity: sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-ppc64-musl@4.59.0':
- resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==}
+ '@rollup/rollup-linux-ppc64-musl@4.60.2':
+ resolution: {integrity: sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.59.0':
- resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==}
+ '@rollup/rollup-linux-riscv64-gnu@4.60.2':
+ resolution: {integrity: sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.59.0':
- resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==}
+ '@rollup/rollup-linux-riscv64-musl@4.60.2':
+ resolution: {integrity: sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.59.0':
- resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==}
+ '@rollup/rollup-linux-s390x-gnu@4.60.2':
+ resolution: {integrity: sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.59.0':
- resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==}
+ '@rollup/rollup-linux-x64-gnu@4.60.2':
+ resolution: {integrity: sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.59.0':
- resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==}
+ '@rollup/rollup-linux-x64-musl@4.60.2':
+ resolution: {integrity: sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-openbsd-x64@4.59.0':
- resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==}
+ '@rollup/rollup-openbsd-x64@4.60.2':
+ resolution: {integrity: sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==}
cpu: [x64]
os: [openbsd]
- '@rollup/rollup-openharmony-arm64@4.59.0':
- resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==}
+ '@rollup/rollup-openharmony-arm64@4.60.2':
+ resolution: {integrity: sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.59.0':
- resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==}
+ '@rollup/rollup-win32-arm64-msvc@4.60.2':
+ resolution: {integrity: sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.59.0':
- resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==}
+ '@rollup/rollup-win32-ia32-msvc@4.60.2':
+ resolution: {integrity: sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.59.0':
- resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==}
+ '@rollup/rollup-win32-x64-gnu@4.60.2':
+ resolution: {integrity: sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.59.0':
- resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==}
+ '@rollup/rollup-win32-x64-msvc@4.60.2':
+ resolution: {integrity: sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==}
cpu: [x64]
os: [win32]
@@ -3646,8 +3765,8 @@ packages:
peerDependencies:
'@supabase/supabase-js': ^2.43.4
- '@supabase/storage-js@2.103.0':
- resolution: {integrity: sha512-DHmlvdAXwtOmZNbkIZi4lkobPR3XjIzoOgzoz5duMf6G+sDeY015YrzMJCnqdccuYr7X5x4yYuSwF//RoN2dvQ==}
+ '@supabase/storage-js@2.105.1':
+ resolution: {integrity: sha512-owfdCNH5ikXXDusjzsgU6LavEBqGUoueOnL/9XIucld70/WJ/rbqp89K//c9QPICDNuegsmpoeasydDAiucLKQ==}
engines: {node: '>=20.0.0'}
'@supabase/supabase-js@2.53.0':
@@ -3658,65 +3777,65 @@ packages:
peerDependencies:
acorn: ^8.9.0
- '@tailwindcss/node@4.1.18':
- resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==}
+ '@tailwindcss/node@4.2.2':
+ resolution: {integrity: sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==}
- '@tailwindcss/oxide-android-arm64@4.1.18':
- resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-android-arm64@4.2.2':
+ resolution: {integrity: sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==}
+ engines: {node: '>= 20'}
cpu: [arm64]
os: [android]
- '@tailwindcss/oxide-darwin-arm64@4.1.18':
- resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-darwin-arm64@4.2.2':
+ resolution: {integrity: sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==}
+ engines: {node: '>= 20'}
cpu: [arm64]
os: [darwin]
- '@tailwindcss/oxide-darwin-x64@4.1.18':
- resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-darwin-x64@4.2.2':
+ resolution: {integrity: sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==}
+ engines: {node: '>= 20'}
cpu: [x64]
os: [darwin]
- '@tailwindcss/oxide-freebsd-x64@4.1.18':
- resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-freebsd-x64@4.2.2':
+ resolution: {integrity: sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==}
+ engines: {node: '>= 20'}
cpu: [x64]
os: [freebsd]
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18':
- resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2':
+ resolution: {integrity: sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==}
+ engines: {node: '>= 20'}
cpu: [arm]
os: [linux]
- '@tailwindcss/oxide-linux-arm64-gnu@4.1.18':
- resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-linux-arm64-gnu@4.2.2':
+ resolution: {integrity: sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==}
+ engines: {node: '>= 20'}
cpu: [arm64]
os: [linux]
- '@tailwindcss/oxide-linux-arm64-musl@4.1.18':
- resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-linux-arm64-musl@4.2.2':
+ resolution: {integrity: sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==}
+ engines: {node: '>= 20'}
cpu: [arm64]
os: [linux]
- '@tailwindcss/oxide-linux-x64-gnu@4.1.18':
- resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-linux-x64-gnu@4.2.2':
+ resolution: {integrity: sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==}
+ engines: {node: '>= 20'}
cpu: [x64]
os: [linux]
- '@tailwindcss/oxide-linux-x64-musl@4.1.18':
- resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-linux-x64-musl@4.2.2':
+ resolution: {integrity: sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==}
+ engines: {node: '>= 20'}
cpu: [x64]
os: [linux]
- '@tailwindcss/oxide-wasm32-wasi@4.1.18':
- resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==}
+ '@tailwindcss/oxide-wasm32-wasi@4.2.2':
+ resolution: {integrity: sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==}
engines: {node: '>=14.0.0'}
cpu: [wasm32]
bundledDependencies:
@@ -3727,26 +3846,29 @@ packages:
- '@emnapi/wasi-threads'
- tslib
- '@tailwindcss/oxide-win32-arm64-msvc@4.1.18':
- resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-win32-arm64-msvc@4.2.2':
+ resolution: {integrity: sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==}
+ engines: {node: '>= 20'}
cpu: [arm64]
os: [win32]
- '@tailwindcss/oxide-win32-x64-msvc@4.1.18':
- resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide-win32-x64-msvc@4.2.2':
+ resolution: {integrity: sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==}
+ engines: {node: '>= 20'}
cpu: [x64]
os: [win32]
- '@tailwindcss/oxide@4.1.18':
- resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==}
- engines: {node: '>= 10'}
+ '@tailwindcss/oxide@4.2.2':
+ resolution: {integrity: sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==}
+ engines: {node: '>= 20'}
- '@tailwindcss/vite@4.1.18':
- resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==}
+ '@tailwindcss/postcss@4.2.2':
+ resolution: {integrity: sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==}
+
+ '@tailwindcss/vite@4.2.2':
+ resolution: {integrity: sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==}
peerDependencies:
- vite: ^5.2.0 || ^6 || ^7
+ vite: ^5.2.0 || ^6 || ^7 || ^8
'@ts-morph/common@0.28.1':
resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==}
@@ -3957,8 +4079,8 @@ packages:
peerDependencies:
typescript: 5.9.3
- '@typescript-eslint/project-service@8.58.1':
- resolution: {integrity: sha512-gfQ8fk6cxhtptek+/8ZIqw8YrRW5048Gug8Ts5IYcMLCw18iUgrZAEY/D7s4hkI0FxEfGakKuPK/XUMPzPxi5g==}
+ '@typescript-eslint/project-service@8.59.1':
+ resolution: {integrity: sha512-+MuHQlHiEr00Of/IQbE/MmEoi44znZHbR/Pz7Opq4HryUOlRi+/44dro9Ycy8Fyo+/024IWtw8m4JUMCGTYxDg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: 5.9.3
@@ -3973,8 +4095,8 @@ packages:
resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/scope-manager@8.58.1':
- resolution: {integrity: sha512-TPYUEqJK6avLcEjumWsIuTpuYODTTDAtoMdt8ZZa93uWMTX13Nb8L5leSje1NluammvU+oI3QRr5lLXPgihX3w==}
+ '@typescript-eslint/scope-manager@8.59.1':
+ resolution: {integrity: sha512-LwuHQI4pDOYVKvmH2dkaJo6YZCSgouVgnS/z7yBPKBMvgtBvyLqiLy9Z6b7+m/TRcX1NFYUqZetI5Y+aT4GEfg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/tsconfig-utils@8.56.1':
@@ -3983,8 +4105,8 @@ packages:
peerDependencies:
typescript: 5.9.3
- '@typescript-eslint/tsconfig-utils@8.58.1':
- resolution: {integrity: sha512-JAr2hOIct2Q+qk3G+8YFfqkqi7sC86uNryT+2i5HzMa2MPjw4qNFvtjnw1IiA1rP7QhNKVe21mSSLaSjwA1Olw==}
+ '@typescript-eslint/tsconfig-utils@8.59.1':
+ resolution: {integrity: sha512-/0nEyPbX7gRsk0Uwfe4ALwwgxuA66d/l2mhRDNlAvaj4U3juhUtJNq0DsY8M2AYwwb9rEq2hrC3IcIcEt++iJA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: 5.9.3
@@ -4000,8 +4122,8 @@ packages:
resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/types@8.58.1':
- resolution: {integrity: sha512-io/dV5Aw5ezwzfPBBWLoT+5QfVtP8O7q4Kftjn5azJ88bYyp/ZMCsyW1lpKK46EXJcaYMZ1JtYj+s/7TdzmQMw==}
+ '@typescript-eslint/types@8.59.1':
+ resolution: {integrity: sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.56.1':
@@ -4010,8 +4132,8 @@ packages:
peerDependencies:
typescript: 5.9.3
- '@typescript-eslint/typescript-estree@8.58.1':
- resolution: {integrity: sha512-w4w7WR7GHOjqqPnvAYbazq+Y5oS68b9CzasGtnd6jIeOIeKUzYzupGTB2T4LTPSv4d+WPeccbxuneTFHYgAAWg==}
+ '@typescript-eslint/typescript-estree@8.59.1':
+ resolution: {integrity: sha512-OUd+vJS05sSkOip+BkZ/2NS8RMxrAAJemsC6vU3kmfLyeaJT0TftHkV9mcx2107MmsBVXXexhVu4F0TZXyMl4g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: 5.9.3
@@ -4023,8 +4145,8 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: 5.9.3
- '@typescript-eslint/utils@8.58.1':
- resolution: {integrity: sha512-Ln8R0tmWC7pTtLOzgJzYTXSCjJ9rDNHAqTaVONF4FEi2qwce8mD9iSOxOpLFFvWp/wBFlew0mjM1L1ihYWfBdQ==}
+ '@typescript-eslint/utils@8.59.1':
+ resolution: {integrity: sha512-3pIeoXhCeYH9FSCBI8P3iNwJlGuzPlYKkTlen2O9T1DSeeg8UG8jstq6BLk+Mda0qup7mgk4z4XL4OzRaxZ8LA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
@@ -4034,8 +4156,8 @@ packages:
resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/visitor-keys@8.58.1':
- resolution: {integrity: sha512-y+vH7QE8ycjoa0bWciFg7OpFcipUuem1ujhrdLtq1gByKwfbC7bPeKsiny9e0urg93DqwGcHey+bGRKCnF1nZQ==}
+ '@typescript-eslint/visitor-keys@8.59.1':
+ resolution: {integrity: sha512-LdDNl6C5iJExcM0Yh0PwAIBb9PrSiCsWamF/JyEZawm3kFDnRoaq3LGE4bpyRao/fWeGKKyw7icx0YxrLFC5Cg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript/analyze-trace@0.10.1':
@@ -4057,11 +4179,11 @@ packages:
engines: {node: '>=18'}
hasBin: true
- '@vitejs/plugin-basic-ssl@2.1.4':
- resolution: {integrity: sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==}
+ '@vitejs/plugin-basic-ssl@2.2.0':
+ resolution: {integrity: sha512-nmyQ1HGRkfUxjsv3jw0+hMhEdZdrtkvMTdkzRUaRWfiO6PCWw2V2Pz3gldCq96Tn9S8htcgdTxw/gmbLLEbfYw==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
peerDependencies:
- vite: ^6.0.0 || ^7.0.0
+ vite: ^6.0.0 || ^7.0.0 || ^8.0.0
'@vitest/coverage-v8@4.0.18':
resolution: {integrity: sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==}
@@ -4110,17 +4232,17 @@ packages:
'@volar/typescript@2.4.28':
resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==}
- '@vue/compiler-core@3.5.32':
- resolution: {integrity: sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==}
+ '@vue/compiler-core@3.5.33':
+ resolution: {integrity: sha512-3PZLQwFw4Za3TC8t0FvTy3wI16Kt+pmwcgNZca4Pj9iWL2E72a/gZlpBtAJvEdDMdCxdG/qq0C7PN0bsJuv0Rw==}
- '@vue/compiler-dom@3.5.32':
- resolution: {integrity: sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==}
+ '@vue/compiler-dom@3.5.33':
+ resolution: {integrity: sha512-PXq0yrfCLzzL07rbXO4awtXY1Z06LG2eu6Adg3RJFa/j3Cii217XxxLXG22N330gw7GmALCY0Z8RgXEviwgpjA==}
- '@vue/compiler-sfc@3.5.32':
- resolution: {integrity: sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==}
+ '@vue/compiler-sfc@3.5.33':
+ resolution: {integrity: sha512-UTUvRO9cY+rROrx/pvN9P5Z7FgA6QGfokUCfhQE4EnmUj3rVnK+CHI0LsEO1pg+I7//iRYMUfcNcCPe7tg0CoA==}
- '@vue/compiler-ssr@3.5.32':
- resolution: {integrity: sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==}
+ '@vue/compiler-ssr@3.5.33':
+ resolution: {integrity: sha512-IErjYdnj1qIupG5xxiVIYiiRvDhGWV4zuh/RCrwfYpuL+HWQzeU6lCk/nF9r7olWMnjKxCAkOctT2qFWFkzb1A==}
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
@@ -4133,8 +4255,8 @@ packages:
typescript:
optional: true
- '@vue/shared@3.5.32':
- resolution: {integrity: sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==}
+ '@vue/shared@3.5.33':
+ resolution: {integrity: sha512-5vR2QIlmaLG77Ygd4pMP6+SGQ5yox9VhtnbDWTy9DzMzdmeLxZ1QqxrywEZ9sa1AVubfIJyaCG3ytyWU81ufcQ==}
'@whatwg-node/disposablestack@0.0.6':
resolution: {integrity: sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==}
@@ -4218,12 +4340,15 @@ packages:
ajv-formats@3.0.1:
resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==}
- ajv@6.14.0:
- resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==}
+ ajv@6.15.0:
+ resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
ajv@8.18.0:
resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==}
+ ajv@8.20.0:
+ resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==}
+
algoliasearch@4.16.0:
resolution: {integrity: sha512-HAjKJ6bBblaXqO4dYygF4qx251GuJ6zCZt+qbJ+kU7sOC+yc84pawEjVpJByh+cGP2APFCsao2Giz50cDlKNPA==}
@@ -4413,8 +4538,8 @@ packages:
bare-abort-controller:
optional: true
- bare-fs@4.7.0:
- resolution: {integrity: sha512-xzqKsCFxAek9aezYhjJuJRXBIaYlg/0OGDTZp+T8eYmYMlm66cs6cYko02drIyjN2CBbi+I6L7YfXyqpqtKRXA==}
+ bare-fs@4.7.1:
+ resolution: {integrity: sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==}
engines: {bare: '>=1.16.0'}
peerDependencies:
bare-buffer: '*'
@@ -4422,15 +4547,15 @@ packages:
bare-buffer:
optional: true
- bare-os@3.8.7:
- resolution: {integrity: sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==}
+ bare-os@3.9.0:
+ resolution: {integrity: sha512-JTjuZyNIDpw+GytMO4a6TK1VXdVKKJr6DRxEHasyuYyShV2deuiHJK/ahGZlebc+SG0/wJCB9XK8gprBGDFi/Q==}
engines: {bare: '>=1.14.0'}
bare-path@3.0.0:
resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
- bare-stream@2.12.0:
- resolution: {integrity: sha512-w28i8lkBgREV3rPXGbgK+BO66q+ZpKqRWrZLiCdmmUlLPrQ45CzkvRhN+7lnv00Gpi2zy5naRxnUFAxCECDm9g==}
+ bare-stream@2.13.1:
+ resolution: {integrity: sha512-Vp0cnjYyrEC4whYTymQ+YZi6pBpfiICZO3cfRG8sy67ZNWe951urv1x4eW1BKNngw3U+3fPYb5JQvHbCtxH7Ow==}
peerDependencies:
bare-abort-controller: '*'
bare-buffer: '*'
@@ -4443,14 +4568,14 @@ packages:
bare-events:
optional: true
- bare-url@2.4.0:
- resolution: {integrity: sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==}
+ bare-url@2.4.2:
+ resolution: {integrity: sha512-/9a2j4ac6ckpmAHvod/ob7x439OAHst/drc2Clnq+reRYd/ovddwcF4LfoxHyNk5AuGBnPg+HqFjmE/Zpq6v0A==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- baseline-browser-mapping@2.10.17:
- resolution: {integrity: sha512-HdrkN8eVG2CXxeifv/VdJ4A4RSra1DTW8dc/hdxzhGHN8QePs6gKaWM9pHPcpCoxYZJuOZ8drHmbdpLHjCYjLA==}
+ baseline-browser-mapping@2.10.24:
+ resolution: {integrity: sha512-I2NkZOOrj2XuguvWCK6OVh9GavsNjZjK908Rq3mIBK25+GD8vPX5w2WdxVqnQ7xx3SrZJiCiZFu+/Oz50oSYSA==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -4488,8 +4613,8 @@ packages:
blake3-wasm@2.1.5:
resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
- body-parser@1.20.4:
- resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==}
+ body-parser@1.20.5:
+ resolution: {integrity: sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
body-parser@2.2.2:
@@ -4503,11 +4628,11 @@ packages:
resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==}
engines: {node: '>=18'}
- brace-expansion@1.1.13:
- resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==}
+ brace-expansion@1.1.14:
+ resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==}
- brace-expansion@2.0.3:
- resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==}
+ brace-expansion@2.1.0:
+ resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==}
brace-expansion@5.0.5:
resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==}
@@ -4586,8 +4711,8 @@ packages:
resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
engines: {node: '>=16'}
- caniuse-lite@1.0.30001787:
- resolution: {integrity: sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==}
+ caniuse-lite@1.0.30001791:
+ resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==}
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@@ -4882,10 +5007,10 @@ packages:
crossws@0.3.5:
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
- crossws@0.4.4:
- resolution: {integrity: sha512-w6c4OdpRNnudVmcgr7brb/+/HmYjMQvYToO/oTrprTwxRUiom3LYWU1PMWuD006okbUWpII1Ea9/+kwpUfmyRg==}
+ crossws@0.4.5:
+ resolution: {integrity: sha512-wUR89x/Rw7/8t+vn0CmGDYM9TD6VtARGb0LD5jq2wjtMy1vCP4M+sm6N6TigWeTYvnA8MoW29NqqXD0ep0rfBA==}
peerDependencies:
- srvx: '>=0.7.1'
+ srvx: '>=0.11.5'
peerDependenciesMeta:
srvx:
optional: true
@@ -5056,17 +5181,17 @@ packages:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
- detective-amd@6.0.1:
- resolution: {integrity: sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g==}
+ detective-amd@6.1.0:
+ resolution: {integrity: sha512-fmI6LGMvotqd49QaA3ZYw+q0aGp2yXmMjzIuY6fH9j9YFIXY/73yDhMwhX9cPbhWd+AH06NH1Di/LKOuCH0Ubg==}
engines: {node: '>=18'}
hasBin: true
- detective-cjs@6.1.0:
- resolution: {integrity: sha512-Qt3S4IddVNDb+71lm+jmt5NznIsgcKlibTnrw9Zr91rT9vRwKp+73+ImqLTNrQj4YuOxnzrC7GwIAVwF7136XQ==}
+ detective-cjs@6.1.1:
+ resolution: {integrity: sha512-pSh7mkCKEtLlmANqLu3KDFS3NV8Hx41jy/JF1/gAWOgU+Uo5QTkeI1tWNP4dWGo4L0E9j18Ez9EPsTleautKqA==}
engines: {node: '>=18'}
- detective-es6@5.0.1:
- resolution: {integrity: sha512-XusTPuewnSUdoxRSx8OOI6xIA/uld/wMQwYsouvFN2LAg7HgP06NF1lHRV3x6BZxyL2Kkoih4ewcq8hcbGtwew==}
+ detective-es6@5.0.2:
+ resolution: {integrity: sha512-+qHHGYhjupiVs4rnIpI9nZ5B130A4AmE35ZX1w33hb46vcZ7T3jfDbvmPw0FhWtMHn5BS5HHu7ZtnZ53bMcXZA==}
engines: {node: '>=18'}
detective-postcss@7.0.1:
@@ -5075,26 +5200,26 @@ packages:
peerDependencies:
postcss: ^8.4.47
- detective-sass@6.0.1:
- resolution: {integrity: sha512-jSGPO8QDy7K7pztUmGC6aiHkexBQT4GIH+mBAL9ZyBmnUIOFbkfZnO8wPRRJFP/QP83irObgsZHCoDHZ173tRw==}
+ detective-sass@6.0.2:
+ resolution: {integrity: sha512-i3xpXHDKS0qI2aFW4asQ7fqlPK00ndOVZELvQapFJCaF0VxYmsNWtd0AmvXbTLMk7bfO5VdIeorhY9KfmHVoVA==}
engines: {node: '>=18'}
- detective-scss@5.0.1:
- resolution: {integrity: sha512-MAyPYRgS6DCiS6n6AoSBJXLGVOydsr9huwXORUlJ37K3YLyiN0vYHpzs3AdJOgHobBfispokoqrEon9rbmKacg==}
+ detective-scss@5.0.2:
+ resolution: {integrity: sha512-9JOEMZ8pDh3ShXmftq7hoQqqJsClaGgxo1hghfCeFlmKf5TC/Twtwb0PAaK8dXwpg9Z0uCmEYSrCxO+kel2eEg==}
engines: {node: '>=18'}
detective-stylus@5.0.1:
resolution: {integrity: sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA==}
engines: {node: '>=18'}
- detective-typescript@14.0.0:
- resolution: {integrity: sha512-pgN43/80MmWVSEi5LUuiVvO/0a9ss5V7fwVfrJ4QzAQRd3cwqU1SfWGXJFcNKUqoD5cS+uIovhw5t/0rSeC5Mw==}
+ detective-typescript@14.1.2:
+ resolution: {integrity: sha512-bIeEn0eVi/JRsE1YizBR2ilnMlWRAIBJJ6kXCKNFxEEWhUcEY3R6I3KYIAy48ieURbD1hcb3Ebvl8AqeoPMSzg==}
engines: {node: '>=18'}
peerDependencies:
typescript: 5.9.3
- detective-vue2@2.2.0:
- resolution: {integrity: sha512-sVg/t6O2z1zna8a/UIV6xL5KUa2cMTQbdTIIvqNM0NIPswp52fe43Nwmbahzj3ww4D844u/vC2PYfiGLvD3zFA==}
+ detective-vue2@2.3.0:
+ resolution: {integrity: sha512-3gwbZPqVTm9sL9XdZsgEJ7x4x99O853VVZHapQAiEkGuMJMpFPjHDrecSgfqnS5JW3FJfYXesLZGvUOibjn49g==}
engines: {node: '>=18'}
peerDependencies:
typescript: 5.9.3
@@ -5283,11 +5408,11 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
- effect@3.21.0:
- resolution: {integrity: sha512-PPN80qRokCd1f015IANNhrwOnLO7GrrMQfk4/lnZRE/8j7UPWrNNjPV0uBrZutI/nHzernbW+J0hdqQysHiSnQ==}
+ effect@3.21.2:
+ resolution: {integrity: sha512-rXd2FGDM8KdjSIrc+mqEELo7ScW7xTVxEf1iInmPSpIde9/nyGuFM710cjTo7/EreGXiUX2MOonPpprbz2XHCg==}
- electron-to-chromium@1.5.334:
- resolution: {integrity: sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==}
+ electron-to-chromium@1.5.344:
+ resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==}
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -5312,8 +5437,8 @@ packages:
end-of-stream@1.4.5:
resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
- enhanced-resolve@5.20.1:
- resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==}
+ enhanced-resolve@5.21.0:
+ resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==}
engines: {node: '>=10.13.0'}
enquirer@2.4.1:
@@ -5914,8 +6039,8 @@ packages:
folder-walker@3.2.0:
resolution: {integrity: sha512-VjAQdSLsl6AkpZNyrQJfO7BXLo4chnStqb055bumZMbRUPpVuPN3a4ktsnRCmrFZjtMlYLkyXiR5rAs4WOpC4Q==}
- follow-redirects@1.15.11:
- resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
+ follow-redirects@1.16.0:
+ resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
@@ -5997,8 +6122,8 @@ packages:
resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
engines: {node: '>= 0.4'}
- get-amd-module-type@6.0.1:
- resolution: {integrity: sha512-MtjsmYiCXcYDDrGqtNbeIYdAl85n+5mSv2r3FbzER/YV3ZILw4HNNIw34HuV5pyl0jzs6GFYU1VHVEefhgcNHQ==}
+ get-amd-module-type@6.0.2:
+ resolution: {integrity: sha512-7zShVYAYtMnj9S65CfN+hvpBCByfuB1OY8xID01nZEzXTZbx4YyysAfi+nMl95JSR6odt4q8TCj2W63KAoyVLQ==}
engines: {node: '>=18'}
get-caller-file@2.0.5:
@@ -6048,8 +6173,8 @@ packages:
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
engines: {node: '>= 0.4'}
- get-tsconfig@4.13.7:
- resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==}
+ get-tsconfig@4.14.0:
+ resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==}
git-repo-info@2.1.1:
resolution: {integrity: sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==}
@@ -6156,8 +6281,8 @@ packages:
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
engines: {node: '>= 0.4'}
- hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ hasown@2.0.3:
+ resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==}
engines: {node: '>= 0.4'}
hast-util-heading-rank@2.1.1:
@@ -6687,8 +6812,8 @@ packages:
jju@1.4.0:
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
- jose@6.2.2:
- resolution: {integrity: sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==}
+ jose@6.2.3:
+ resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==}
jpeg-js@0.4.4:
resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==}
@@ -6753,8 +6878,8 @@ packages:
jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
- jsonfile@6.2.0:
- resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
+ jsonfile@6.2.1:
+ resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==}
jsonparse@1.3.1:
resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
@@ -6855,74 +6980,74 @@ packages:
light-my-request@6.6.0:
resolution: {integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==}
- lightningcss-android-arm64@1.30.2:
- resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==}
+ lightningcss-android-arm64@1.32.0:
+ resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [android]
- lightningcss-darwin-arm64@1.30.2:
- resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
+ lightningcss-darwin-arm64@1.32.0:
+ resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
- lightningcss-darwin-x64@1.30.2:
- resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
+ lightningcss-darwin-x64@1.32.0:
+ resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
- lightningcss-freebsd-x64@1.30.2:
- resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==}
+ lightningcss-freebsd-x64@1.32.0:
+ resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
- lightningcss-linux-arm-gnueabihf@1.30.2:
- resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==}
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
- lightningcss-linux-arm64-gnu@1.30.2:
- resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
+ lightningcss-linux-arm64-gnu@1.32.0:
+ resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- lightningcss-linux-arm64-musl@1.30.2:
- resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
+ lightningcss-linux-arm64-musl@1.32.0:
+ resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- lightningcss-linux-x64-gnu@1.30.2:
- resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
+ lightningcss-linux-x64-gnu@1.32.0:
+ resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- lightningcss-linux-x64-musl@1.30.2:
- resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
+ lightningcss-linux-x64-musl@1.32.0:
+ resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- lightningcss-win32-arm64-msvc@1.30.2:
- resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
+ lightningcss-win32-arm64-msvc@1.32.0:
+ resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
- lightningcss-win32-x64-msvc@1.30.2:
- resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
+ lightningcss-win32-x64-msvc@1.32.0:
+ resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
- lightningcss@1.30.2:
- resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
+ lightningcss@1.32.0:
+ resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
engines: {node: '>= 12.0.0'}
lines-and-columns@1.2.4:
@@ -7024,8 +7149,8 @@ packages:
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
- lru-cache@11.3.3:
- resolution: {integrity: sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ==}
+ lru-cache@11.3.5:
+ resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==}
engines: {node: 20 || >=22}
lru-cache@6.0.0:
@@ -7382,8 +7507,8 @@ packages:
resolution: {integrity: sha512-YTefgdpKKFgoTDbEUqXqgUJct2OG6/4hs4XWLsxcHkDLj/x/V8WmKIRppPnXP5feQ7d1vuYWSp3qKkxfwaFaxA==}
engines: {node: '>=18.0.0'}
- module-definition@6.0.1:
- resolution: {integrity: sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g==}
+ module-definition@6.0.2:
+ resolution: {integrity: sha512-SvAU3lB0+Yjbq55yHY3wkRZBOh+fhU1SnIF3IFbTewv6mtAh7yUT8ACHAJ2mGIJ7tCes2QuCL/cl6m0JSZ/ArA==}
engines: {node: '>=18'}
hasBin: true
@@ -7429,8 +7554,8 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- nanoid@5.1.7:
- resolution: {integrity: sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ==}
+ nanoid@5.1.9:
+ resolution: {integrity: sha512-ZUvP7KeBLe3OZ1ypw6dI/TzYJuvHP77IM4Ry73waSQTLn8/g8rpdjfyVAh7t1/+FjBtG4lCP42MEbDxOsRpBMw==}
engines: {node: ^18 || >=20}
hasBin: true
@@ -7495,11 +7620,11 @@ packages:
node-mock-http@1.0.4:
resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==}
- node-releases@2.0.37:
- resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==}
+ node-releases@2.0.38:
+ resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==}
- node-source-walk@7.0.1:
- resolution: {integrity: sha512-3VW/8JpPqPvnJvseXowjZcirPisssnBuDikk6JIZ8jQzF7KJQX52iPFX4RYYxLycYH7IbMRSPUOga/esVjy5Yg==}
+ node-source-walk@7.0.2:
+ resolution: {integrity: sha512-71kFFjYaSshDTA8/a2HiTYPLdASWjLJxUyJxGE+ffxU+KhxSBtM9kiLUX+R2yooFdSFKMFpi4n3PFtDy6qXv8A==}
engines: {node: '>=18'}
node-stream-zip@1.15.0:
@@ -7554,8 +7679,8 @@ packages:
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
- oauth4webapi@3.8.5:
- resolution: {integrity: sha512-A8jmyUckVhRJj5lspguklcl90Ydqk61H3dcU0oLhH3Yv13KpAliKTt5hknpGGPZSSfOwGyraNEFmofDYH+1kSg==}
+ oauth4webapi@3.8.6:
+ resolution: {integrity: sha512-iwemM91xz8nryHti2yTmg5fhyEMVOkOXwHNqbvcATjyajb5oQxCQzrNOA6uElRHuMhQQTKUyFKV9y/CNyg25BQ==}
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
@@ -7631,11 +7756,11 @@ packages:
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
engines: {node: '>=18'}
- oniguruma-parser@0.12.1:
- resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
+ oniguruma-parser@0.12.2:
+ resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==}
- oniguruma-to-es@4.3.5:
- resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==}
+ oniguruma-to-es@4.3.6:
+ resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==}
open@10.2.0:
resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==}
@@ -7957,8 +8082,8 @@ packages:
pkg-types@1.3.1:
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
- pkg-types@2.3.0:
- resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
+ pkg-types@2.3.1:
+ resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==}
playwright-core@1.57.0:
resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==}
@@ -7983,12 +8108,12 @@ packages:
peerDependencies:
postcss: ^8.2.9
- postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ postcss@8.5.12:
+ resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==}
engines: {node: ^10 || ^12 || >=14}
- postcss@8.5.9:
- resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==}
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
postgres-array@2.0.0:
@@ -8019,8 +8144,8 @@ packages:
preact@10.24.3:
resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==}
- precinct@12.2.0:
- resolution: {integrity: sha512-NFBMuwIfaJ4SocE9YXPU/n4AcNSoFMVFjP72nvl3cx69j/ke61/hPOWFREVxLkFhhEGnA8ZuVfTqJBa+PK3b5w==}
+ precinct@12.3.1:
+ resolution: {integrity: sha512-wGyTIvtxh2S2NAHxTJj0YymxWOIcEDotu17yHoQUd2Bz2C07LrS28L1nvXDMxrCHvHmV6KTlaIQy5PzRm7Y8rg==}
engines: {node: '>=18'}
hasBin: true
@@ -8421,8 +8546,8 @@ packages:
resolve-pkg-maps@1.0.0:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
- resolve@1.22.11:
- resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
+ resolve@1.22.12:
+ resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==}
engines: {node: '>= 0.4'}
hasBin: true
@@ -8454,8 +8579,13 @@ packages:
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
- rollup@4.59.0:
- resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==}
+ rolldown@1.0.0-rc.16:
+ resolution: {integrity: sha512-rzi5WqKzEZw3SooTt7cgm4eqIoujPIyGcJNGFL7iPEuajQw7vxMHUkXylu4/vhCkJGXsgRmxqMKXUpT6FEgl0g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+
+ rollup@4.60.2:
+ resolution: {integrity: sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -8485,8 +8615,8 @@ packages:
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
engines: {node: '>=6'}
- safe-array-concat@1.1.3:
- resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
+ safe-array-concat@1.1.4:
+ resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==}
engines: {node: '>=0.4'}
safe-buffer@5.1.2:
@@ -8506,8 +8636,8 @@ packages:
resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
engines: {node: '>= 0.4'}
- safe-regex2@5.1.0:
- resolution: {integrity: sha512-pNHAuBW7TrcleFHsxBr5QMi/Iyp0ENjUKz7GCcX1UO7cMh+NmVK6HxQckNL1tJp1XAJVjG6B8OKIPqodqj9rtw==}
+ safe-regex2@5.1.1:
+ resolution: {integrity: sha512-mOSBvHGDZMuIEZMdOz/aCEYDCv0E7nfcNsIhUF+/P+xC7Hyf3FkvymqgPbg9D1EdSGu+uKbJgy09K/RKKc7kJA==}
hasBin: true
safe-stable-stringify@2.5.0:
@@ -8748,8 +8878,8 @@ packages:
std-env@3.10.0:
resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
- std-env@4.0.0:
- resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==}
+ std-env@4.1.0:
+ resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==}
stdin-discarder@0.2.2:
resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
@@ -8778,8 +8908,8 @@ packages:
resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
engines: {node: '>=18'}
- string-width@8.2.0:
- resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==}
+ string-width@8.2.1:
+ resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==}
engines: {node: '>=20'}
string.prototype.trim@1.2.10:
@@ -8909,11 +9039,14 @@ packages:
resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
engines: {node: '>=20'}
- tailwindcss@4.1.18:
- resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==}
+ tailwindcss@4.2.1:
+ resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==}
+
+ tailwindcss@4.2.2:
+ resolution: {integrity: sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==}
- tapable@2.3.2:
- resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==}
+ tapable@2.3.3:
+ resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
engines: {node: '>=6'}
tar-stream@3.1.8:
@@ -9127,8 +9260,8 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
- type-fest@5.5.0:
- resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==}
+ type-fest@5.6.0:
+ resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==}
engines: {node: '>=20'}
type-is@1.6.18:
@@ -9191,8 +9324,8 @@ packages:
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
- undici@6.24.1:
- resolution: {integrity: sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==}
+ undici@6.25.0:
+ resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==}
engines: {node: '>=18.17'}
undici@7.24.4:
@@ -9473,8 +9606,8 @@ packages:
vite:
optional: true
- vite@7.3.1:
- resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
+ vite@7.3.2:
+ resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -9513,6 +9646,49 @@ packages:
yaml:
optional: true
+ vite@8.0.9:
+ resolution: {integrity: sha512-t7g7GVRpMXjNpa67HaVWI/8BWtdVIQPCL2WoozXXA7LBGEFK4AkkKkHx2hAQf5x1GZSlcmEDPkVLSGahxnEEZw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ '@vitejs/devtools': ^0.1.0
+ esbuild: ^0.27.0 || ^0.28.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ '@vitejs/devtools':
+ optional: true
+ esbuild:
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
vitest@4.0.18:
resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
@@ -9878,6 +10054,8 @@ snapshots:
'@algolia/logger-common': 4.16.0
'@algolia/requester-common': 4.16.0
+ '@alloc/quick-lru@5.2.0': {}
+
'@antfu/install-pkg@1.1.0':
dependencies:
package-manager-detector: 1.6.0
@@ -9886,8 +10064,8 @@ snapshots:
'@auth/core@0.41.1':
dependencies:
'@panva/hkdf': 1.2.1
- jose: 6.2.2
- oauth4webapi: 3.8.5
+ jose: 6.2.3
+ oauth4webapi: 3.8.6
preact: 10.24.3
preact-render-to-string: 6.5.11(preact@10.24.3)
@@ -9970,13 +10148,13 @@ snapshots:
'@bugsnag/core@8.9.0':
dependencies:
- '@bugsnag/cuid': 3.2.1
+ '@bugsnag/cuid': 3.2.2
'@bugsnag/safe-json-stringify': 6.1.0
error-stack-parser: 2.1.4
iserror: 0.0.2
stack-generator: 2.0.10
- '@bugsnag/cuid@3.2.1': {}
+ '@bugsnag/cuid@3.2.2': {}
'@bugsnag/js@8.9.0':
dependencies:
@@ -9994,9 +10172,9 @@ snapshots:
'@bugsnag/safe-json-stringify@6.1.0': {}
- '@changesets/apply-release-plan@7.1.0':
+ '@changesets/apply-release-plan@7.1.1':
dependencies:
- '@changesets/config': 3.1.3
+ '@changesets/config': 3.1.4
'@changesets/get-version-range-type': 0.4.0
'@changesets/git': 3.0.4
'@changesets/should-skip-package': 0.1.2
@@ -10010,10 +10188,10 @@ snapshots:
resolve-from: 5.0.0
semver: 7.7.3
- '@changesets/assemble-release-plan@6.0.9':
+ '@changesets/assemble-release-plan@6.0.10':
dependencies:
'@changesets/errors': 0.2.0
- '@changesets/get-dependents-graph': 2.1.3
+ '@changesets/get-dependents-graph': 2.1.4
'@changesets/should-skip-package': 0.1.2
'@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
@@ -10025,13 +10203,13 @@ snapshots:
'@changesets/cli@2.29.5':
dependencies:
- '@changesets/apply-release-plan': 7.1.0
- '@changesets/assemble-release-plan': 6.0.9
+ '@changesets/apply-release-plan': 7.1.1
+ '@changesets/assemble-release-plan': 6.0.10
'@changesets/changelog-git': 0.2.1
- '@changesets/config': 3.1.3
+ '@changesets/config': 3.1.4
'@changesets/errors': 0.2.0
- '@changesets/get-dependents-graph': 2.1.3
- '@changesets/get-release-plan': 4.0.15
+ '@changesets/get-dependents-graph': 2.1.4
+ '@changesets/get-release-plan': 4.0.16
'@changesets/git': 3.0.4
'@changesets/logger': 0.1.1
'@changesets/pre': 2.0.2
@@ -10054,10 +10232,10 @@ snapshots:
spawndamnit: 3.0.1
term-size: 2.2.1
- '@changesets/config@3.1.3':
+ '@changesets/config@3.1.4':
dependencies:
'@changesets/errors': 0.2.0
- '@changesets/get-dependents-graph': 2.1.3
+ '@changesets/get-dependents-graph': 2.1.4
'@changesets/logger': 0.1.1
'@changesets/should-skip-package': 0.1.2
'@changesets/types': 6.1.0
@@ -10069,7 +10247,7 @@ snapshots:
dependencies:
extendable-error: 0.1.7
- '@changesets/get-dependents-graph@2.1.3':
+ '@changesets/get-dependents-graph@2.1.4':
dependencies:
'@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
@@ -10083,10 +10261,10 @@ snapshots:
transitivePeerDependencies:
- encoding
- '@changesets/get-release-plan@4.0.15':
+ '@changesets/get-release-plan@4.0.16':
dependencies:
- '@changesets/assemble-release-plan': 6.0.9
- '@changesets/config': 3.1.3
+ '@changesets/assemble-release-plan': 6.0.10
+ '@changesets/config': 3.1.4
'@changesets/pre': 2.0.2
'@changesets/read': 0.6.7
'@changesets/types': 6.1.0
@@ -10196,10 +10374,10 @@ snapshots:
enabled: 2.0.0
kuler: 2.0.0
- '@dependents/detective-less@5.0.1':
+ '@dependents/detective-less@5.0.3':
dependencies:
gonzales-pe: 4.3.0
- node-source-walk: 7.0.1
+ node-source-walk: 7.0.2
'@drizzle-team/brocli@0.10.2': {}
@@ -10210,9 +10388,14 @@ snapshots:
'@emnapi/wasi-threads': 1.2.1
tslib: 2.8.1
+ '@emnapi/runtime@1.10.0':
+ dependencies:
+ tslib: 2.8.1
+
'@emnapi/runtime@1.9.2':
dependencies:
tslib: 2.8.1
+ optional: true
'@emnapi/wasi-threads@1.2.1':
dependencies:
@@ -10314,7 +10497,7 @@ snapshots:
'@esbuild-kit/esm-loader@2.6.5':
dependencies:
'@esbuild-kit/core-utils': 3.3.2
- get-tsconfig: 4.13.7
+ get-tsconfig: 4.14.0
'@esbuild/aix-ppc64@0.25.12':
optional: true
@@ -10658,7 +10841,7 @@ snapshots:
'@fastify/ajv-compiler@4.0.5':
dependencies:
- ajv: 8.18.0
+ ajv: 8.20.0
ajv-formats: 3.0.1
fast-uri: 3.1.0
@@ -10709,13 +10892,18 @@ snapshots:
'@floating-ui/utils@0.2.11': {}
- '@humanfs/core@0.19.1': {}
+ '@humanfs/core@0.19.2':
+ dependencies:
+ '@humanfs/types': 0.15.0
- '@humanfs/node@0.16.7':
+ '@humanfs/node@0.16.8':
dependencies:
- '@humanfs/core': 0.19.1
+ '@humanfs/core': 0.19.2
+ '@humanfs/types': 0.15.0
'@humanwhocodes/retry': 0.4.3
+ '@humanfs/types@0.15.0': {}
+
'@humanwhocodes/module-importer@1.0.1': {}
'@humanwhocodes/momoa@2.0.4': {}
@@ -10724,14 +10912,14 @@ snapshots:
'@iarna/toml@2.2.5': {}
- '@iconify/json@2.2.461':
+ '@iconify/json@2.2.467':
dependencies:
'@iconify/types': 2.0.0
pathe: 2.0.3
'@iconify/types@2.0.0': {}
- '@iconify/utils@3.1.0':
+ '@iconify/utils@3.1.1':
dependencies:
'@antfu/install-pkg': 1.1.0
'@iconify/types': 2.0.0
@@ -10821,7 +11009,7 @@ snapshots:
'@img/sharp-wasm32@0.34.5':
dependencies:
- '@emnapi/runtime': 1.9.2
+ '@emnapi/runtime': 1.10.0
optional: true
'@img/sharp-win32-arm64@0.34.5':
@@ -11051,7 +11239,7 @@ snapshots:
'@rushstack/terminal': 0.22.3(@types/node@24.10.0)
'@rushstack/ts-command-line': 5.3.3(@types/node@24.10.0)
js-yaml: 4.1.1
- resolve: 1.22.11
+ resolve: 1.22.12
transitivePeerDependencies:
- '@types/node'
@@ -11075,7 +11263,7 @@ snapshots:
diff: 8.0.4
lodash: 4.17.23
minimatch: 10.2.1
- resolve: 1.22.11
+ resolve: 1.22.12
semver: 7.5.4
source-map: 0.6.1
typescript: 5.9.3
@@ -11087,7 +11275,7 @@ snapshots:
'@microsoft/tsdoc': 0.16.0
ajv: 8.18.0
jju: 1.4.0
- resolve: 1.22.11
+ resolve: 1.22.12
'@microsoft/tsdoc@0.16.0': {}
@@ -11222,11 +11410,18 @@ snapshots:
'@napi-rs/triples@1.2.0': {}
- '@napi-rs/wasm-runtime@1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
+ '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)':
+ dependencies:
+ '@emnapi/core': 1.9.2
+ '@emnapi/runtime': 1.10.0
+ '@tybys/wasm-util': 0.10.1
+
+ '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
dependencies:
'@emnapi/core': 1.9.2
'@emnapi/runtime': 1.9.2
'@tybys/wasm-util': 0.10.1
+ optional: true
'@neon-rs/load@0.0.4': {}
@@ -11236,7 +11431,7 @@ snapshots:
'@netlify/api@14.0.18':
dependencies:
- '@netlify/open-api': 2.52.0
+ '@netlify/open-api': 2.53.0
node-fetch: 3.3.2
p-wait-for: 5.0.2
picoquery: 2.5.0
@@ -11271,19 +11466,19 @@ snapshots:
yaml: 2.8.3
yargs: 17.7.2
- '@netlify/build@35.11.1(@opentelemetry/api@1.8.0)(@types/node@24.10.0)(picomatch@4.0.4)(rollup@4.59.0)':
+ '@netlify/build@35.11.1(@opentelemetry/api@1.8.0)(@types/node@24.10.0)(picomatch@4.0.4)(rollup@4.60.2)':
dependencies:
'@bugsnag/js': 8.9.0
'@netlify/blobs': 10.7.4(supports-color@10.2.2)
'@netlify/cache-utils': 6.0.5
'@netlify/config': 24.4.4
'@netlify/edge-bundler': 14.9.19
- '@netlify/functions-utils': 6.2.29(rollup@4.59.0)(supports-color@10.2.2)
+ '@netlify/functions-utils': 6.2.30(rollup@4.60.2)(supports-color@10.2.2)
'@netlify/git-utils': 6.0.4
'@netlify/opentelemetry-utils': 2.0.2(@opentelemetry/api@1.8.0)
'@netlify/plugins-list': 6.81.3
'@netlify/run-utils': 6.0.3
- '@netlify/zip-it-and-ship-it': 14.5.2(rollup@4.59.0)(supports-color@10.2.2)
+ '@netlify/zip-it-and-ship-it': 14.5.2(rollup@4.60.2)(supports-color@10.2.2)
'@opentelemetry/api': 1.8.0
'@sindresorhus/slugify': 2.2.1
ansi-escapes: 7.3.0
@@ -11419,7 +11614,7 @@ snapshots:
uuid: 13.0.0
write-file-atomic: 5.0.1
- '@netlify/dev@4.16.4(rollup@4.59.0)':
+ '@netlify/dev@4.16.4(rollup@4.60.2)':
dependencies:
'@netlify/ai': 0.4.1
'@netlify/blobs': 10.7.4(supports-color@10.2.2)
@@ -11427,7 +11622,7 @@ snapshots:
'@netlify/db-dev': 0.7.0
'@netlify/dev-utils': 4.4.3
'@netlify/edge-functions-dev': 1.0.16
- '@netlify/functions-dev': 1.2.4(rollup@4.59.0)
+ '@netlify/functions-dev': 1.2.4(rollup@4.60.2)
'@netlify/headers': 2.1.8
'@netlify/images': 1.3.7(@netlify/blobs@10.7.4)
'@netlify/redirects': 3.1.10
@@ -11466,9 +11661,9 @@ snapshots:
'@import-maps/resolve': 2.0.0
'@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0)
acorn: 8.16.0
- ajv: 8.18.0
- ajv-errors: 3.0.0(ajv@8.18.0)
- better-ajv-errors: 1.2.0(ajv@8.18.0)
+ ajv: 8.20.0
+ ajv-errors: 3.0.0(ajv@8.20.0)
+ better-ajv-errors: 1.2.0(ajv@8.20.0)
common-path-prefix: 3.0.0
env-paths: 3.0.0
esbuild: 0.27.3
@@ -11503,12 +11698,12 @@ snapshots:
dependencies:
'@netlify/types': 2.6.0
- '@netlify/functions-dev@1.2.4(rollup@4.59.0)':
+ '@netlify/functions-dev@1.2.4(rollup@4.60.2)':
dependencies:
'@netlify/blobs': 10.7.4(supports-color@10.2.2)
'@netlify/dev-utils': 4.4.3
'@netlify/functions': 5.1.5
- '@netlify/zip-it-and-ship-it': 14.5.3(rollup@4.59.0)(supports-color@10.2.2)
+ '@netlify/zip-it-and-ship-it': 14.5.4(rollup@4.60.2)(supports-color@10.2.2)
cron-parser: 4.9.0
decache: 4.6.2
extract-zip: 2.0.1
@@ -11526,9 +11721,9 @@ snapshots:
- rollup
- supports-color
- '@netlify/functions-utils@6.2.29(rollup@4.59.0)(supports-color@10.2.2)':
+ '@netlify/functions-utils@6.2.30(rollup@4.60.2)(supports-color@10.2.2)':
dependencies:
- '@netlify/zip-it-and-ship-it': 14.5.3(rollup@4.59.0)(supports-color@10.2.2)
+ '@netlify/zip-it-and-ship-it': 14.5.4(rollup@4.60.2)(supports-color@10.2.2)
cpy: 11.1.0
path-exists: 5.0.0
transitivePeerDependencies:
@@ -11664,7 +11859,7 @@ snapshots:
'@netlify/local-functions-proxy-win32-ia32': 1.1.1
'@netlify/local-functions-proxy-win32-x64': 1.1.1
- '@netlify/open-api@2.52.0': {}
+ '@netlify/open-api@2.53.0': {}
'@netlify/opentelemetry-utils@2.0.2(@opentelemetry/api@1.8.0)':
dependencies:
@@ -11716,7 +11911,7 @@ snapshots:
dependencies:
'@netlify/types': 2.6.0
- '@netlify/serverless-functions-api@2.14.0':
+ '@netlify/serverless-functions-api@2.15.0':
dependencies:
'@netlify/types': 2.6.0
@@ -11726,13 +11921,13 @@ snapshots:
'@netlify/types@2.6.0': {}
- '@netlify/zip-it-and-ship-it@14.5.2(rollup@4.59.0)(supports-color@10.2.2)':
+ '@netlify/zip-it-and-ship-it@14.5.2(rollup@4.60.2)(supports-color@10.2.2)':
dependencies:
'@babel/parser': 7.29.2
'@babel/types': 7.29.0
'@netlify/binary-info': 1.0.0
'@netlify/serverless-functions-api': 2.13.0
- '@vercel/nft': 0.29.4(rollup@4.59.0)(supports-color@10.2.2)
+ '@vercel/nft': 0.29.4(rollup@4.60.2)(supports-color@10.2.2)
archiver: 7.0.1
common-path-prefix: 3.0.0
copy-file: 11.1.0
@@ -11750,7 +11945,7 @@ snapshots:
normalize-path: 3.0.0
p-map: 7.0.3
path-exists: 5.0.0
- precinct: 12.2.0(supports-color@10.2.2)
+ precinct: 12.3.1(supports-color@10.2.2)
require-package-name: 2.0.1
resolve: 2.0.0-next.6
semver: 7.7.3
@@ -11768,13 +11963,13 @@ snapshots:
- rollup
- supports-color
- '@netlify/zip-it-and-ship-it@14.5.3(rollup@4.59.0)(supports-color@10.2.2)':
+ '@netlify/zip-it-and-ship-it@14.5.4(rollup@4.60.2)(supports-color@10.2.2)':
dependencies:
'@babel/parser': 7.29.2
'@babel/types': 7.29.0
'@netlify/binary-info': 1.0.0
- '@netlify/serverless-functions-api': 2.14.0
- '@vercel/nft': 0.29.4(rollup@4.59.0)(supports-color@10.2.2)
+ '@netlify/serverless-functions-api': 2.15.0
+ '@vercel/nft': 0.29.4(rollup@4.60.2)(supports-color@10.2.2)
archiver: 7.0.1
common-path-prefix: 3.0.0
copy-file: 11.1.0
@@ -11792,7 +11987,7 @@ snapshots:
normalize-path: 3.0.0
p-map: 7.0.3
path-exists: 5.0.0
- precinct: 12.2.0(supports-color@10.2.2)
+ precinct: 12.3.1(supports-color@10.2.2)
require-package-name: 2.0.1
resolve: 2.0.0-next.6
semver: 7.7.3
@@ -11833,7 +12028,7 @@ snapshots:
'@octokit/plugin-paginate-rest': 9.2.2(@octokit/core@5.2.2)
'@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.2.2)
'@octokit/types': 12.6.0
- undici: 6.24.1
+ undici: 6.25.0
'@octokit/auth-action@4.1.0':
dependencies:
@@ -11972,7 +12167,7 @@ snapshots:
'@floating-ui/dom': 1.7.6
'@types/css-tree': 2.3.11
css-tree: 3.2.1
- nanoid: 5.1.7
+ nanoid: 5.1.9
'@opentelemetry/api-logs@0.203.0':
dependencies:
@@ -12083,9 +12278,9 @@ snapshots:
'@oxc-minify/binding-openharmony-arm64@0.115.0':
optional: true
- '@oxc-minify/binding-wasm32-wasi@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
+ '@oxc-minify/binding-wasm32-wasi@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)':
dependencies:
- '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
@@ -12184,17 +12379,17 @@ snapshots:
'@oxc-parser/binding-openharmony-arm64@0.115.0':
optional: true
- '@oxc-parser/binding-wasm32-wasi@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
+ '@oxc-parser/binding-wasm32-wasi@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)':
dependencies:
- '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
optional: true
- '@oxc-parser/binding-wasm32-wasi@0.82.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
+ '@oxc-parser/binding-wasm32-wasi@0.82.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)':
dependencies:
- '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
@@ -12217,6 +12412,8 @@ snapshots:
'@oxc-project/types@0.115.0': {}
+ '@oxc-project/types@0.126.0': {}
+
'@oxc-project/types@0.82.3': {}
'@oxc-transform/binding-android-arm-eabi@0.115.0':
@@ -12267,9 +12464,9 @@ snapshots:
'@oxc-transform/binding-openharmony-arm64@0.115.0':
optional: true
- '@oxc-transform/binding-wasm32-wasi@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
+ '@oxc-transform/binding-wasm32-wasi@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)':
dependencies:
- '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
@@ -12417,16 +12614,16 @@ snapshots:
'@poppinss/exception@1.2.3': {}
- '@qds.dev/tools@0.14.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
+ '@qds.dev/tools@0.14.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)':
dependencies:
- '@iconify/json': 2.2.461
- '@iconify/utils': 3.1.0
+ '@iconify/json': 2.2.467
+ '@iconify/utils': 3.1.1
'@oxc-project/types': 0.115.0
magic-regexp: 0.10.0
- oxc-minify: 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
- oxc-parser: 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
- oxc-transform: 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
- oxc-walker: 0.7.0(oxc-parser@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))
+ oxc-minify: 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
+ oxc-parser: 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
+ oxc-transform: 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
+ oxc-walker: 0.7.0(oxc-parser@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0))
remark: 15.0.1
remark-mdx: 3.1.1
transitivePeerDependencies:
@@ -12440,20 +12637,21 @@ snapshots:
'@qwik.dev/core': link:packages/qwik
temporal-polyfill: 0.3.2
- '@qwik.dev/devtools@0.2.5(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@qwik.dev/core@packages+qwik)(@qwik.dev/router@packages+qwik-router)(@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(tailwindcss@4.1.18)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@qwik.dev/devtools@0.2.5(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)(@qwik.dev/core@packages+qwik)(@qwik.dev/router@packages+qwik-router)(@tailwindcss/postcss@4.2.2)(@tailwindcss/vite@4.2.2(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)))(tailwindcss@4.2.1)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@qwik.dev/core': link:packages/qwik
'@qwik.dev/router': link:packages/qwik-router
'@qwikest/icons': 0.0.13
- '@tailwindcss/vite': 4.1.18(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@tailwindcss/postcss': 4.2.2
+ '@tailwindcss/vite': 4.2.2(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
birpc: 0.2.19
dree: 5.1.5
- oxc-parser: 0.82.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ oxc-parser: 0.82.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
superjson: 2.2.6
- tailwindcss: 4.1.18
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vite-hot-client: 0.2.4(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
- vite-plugin-inspect: 11.3.3(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ tailwindcss: 4.2.1
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite-hot-client: 0.2.4(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ vite-plugin-inspect: 11.3.3(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
@@ -12468,94 +12666,145 @@ snapshots:
dependencies:
'@builder.io/qwik': link:packages/qwik
- '@rolldown/browser@1.0.0-beta.59(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
+ '@rolldown/binding-android-arm64@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-darwin-arm64@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-darwin-x64@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-freebsd-x64@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-musl@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-linux-x64-gnu@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-linux-x64-musl@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-openharmony-arm64@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-wasm32-wasi@1.0.0-rc.16':
dependencies:
- '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ '@emnapi/core': 1.9.2
+ '@emnapi/runtime': 1.9.2
+ '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ optional: true
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/binding-win32-x64-msvc@1.0.0-rc.16':
+ optional: true
+
+ '@rolldown/browser@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)':
+ dependencies:
+ '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
- '@rollup/pluginutils@5.3.0(rollup@4.59.0)':
+ '@rolldown/pluginutils@1.0.0-rc.16': {}
+
+ '@rollup/pluginutils@5.3.0(rollup@4.60.2)':
dependencies:
'@types/estree': 1.0.8
estree-walker: 2.0.2
picomatch: 4.0.4
optionalDependencies:
- rollup: 4.59.0
+ rollup: 4.60.2
- '@rollup/rollup-android-arm-eabi@4.59.0':
+ '@rollup/rollup-android-arm-eabi@4.60.2':
optional: true
- '@rollup/rollup-android-arm64@4.59.0':
+ '@rollup/rollup-android-arm64@4.60.2':
optional: true
- '@rollup/rollup-darwin-arm64@4.59.0':
+ '@rollup/rollup-darwin-arm64@4.60.2':
optional: true
- '@rollup/rollup-darwin-x64@4.59.0':
+ '@rollup/rollup-darwin-x64@4.60.2':
optional: true
- '@rollup/rollup-freebsd-arm64@4.59.0':
+ '@rollup/rollup-freebsd-arm64@4.60.2':
optional: true
- '@rollup/rollup-freebsd-x64@4.59.0':
+ '@rollup/rollup-freebsd-x64@4.60.2':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.59.0':
+ '@rollup/rollup-linux-arm-gnueabihf@4.60.2':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.59.0':
+ '@rollup/rollup-linux-arm-musleabihf@4.60.2':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.59.0':
+ '@rollup/rollup-linux-arm64-gnu@4.60.2':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.59.0':
+ '@rollup/rollup-linux-arm64-musl@4.60.2':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.59.0':
+ '@rollup/rollup-linux-loong64-gnu@4.60.2':
optional: true
- '@rollup/rollup-linux-loong64-musl@4.59.0':
+ '@rollup/rollup-linux-loong64-musl@4.60.2':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.59.0':
+ '@rollup/rollup-linux-ppc64-gnu@4.60.2':
optional: true
- '@rollup/rollup-linux-ppc64-musl@4.59.0':
+ '@rollup/rollup-linux-ppc64-musl@4.60.2':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.59.0':
+ '@rollup/rollup-linux-riscv64-gnu@4.60.2':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.59.0':
+ '@rollup/rollup-linux-riscv64-musl@4.60.2':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.59.0':
+ '@rollup/rollup-linux-s390x-gnu@4.60.2':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.59.0':
+ '@rollup/rollup-linux-x64-gnu@4.60.2':
optional: true
- '@rollup/rollup-linux-x64-musl@4.59.0':
+ '@rollup/rollup-linux-x64-musl@4.60.2':
optional: true
- '@rollup/rollup-openbsd-x64@4.59.0':
+ '@rollup/rollup-openbsd-x64@4.60.2':
optional: true
- '@rollup/rollup-openharmony-arm64@4.59.0':
+ '@rollup/rollup-openharmony-arm64@4.60.2':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.59.0':
+ '@rollup/rollup-win32-arm64-msvc@4.60.2':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.59.0':
+ '@rollup/rollup-win32-ia32-msvc@4.60.2':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.59.0':
+ '@rollup/rollup-win32-x64-gnu@4.60.2':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.59.0':
+ '@rollup/rollup-win32-x64-msvc@4.60.2':
optional: true
'@rtsao/scc@1.1.0': {}
@@ -12568,7 +12817,7 @@ snapshots:
fs-extra: 11.3.4
import-lazy: 4.0.0
jju: 1.4.0
- resolve: 1.22.11
+ resolve: 1.22.12
semver: 7.5.4
optionalDependencies:
'@types/node': 24.10.0
@@ -12579,7 +12828,7 @@ snapshots:
'@rushstack/rig-package@0.7.2':
dependencies:
- resolve: 1.22.11
+ resolve: 1.22.12
strip-json-comments: 3.1.1
'@rushstack/terminal@0.22.3(@types/node@24.10.0)':
@@ -12616,7 +12865,7 @@ snapshots:
dependencies:
'@shikijs/types': 3.21.0
'@shikijs/vscode-textmate': 10.0.2
- oniguruma-to-es: 4.3.5
+ oniguruma-to-es: 4.3.6
'@shikijs/engine-oniguruma@3.21.0':
dependencies:
@@ -12708,7 +12957,7 @@ snapshots:
'@supabase/supabase-js': 2.53.0
cookie: 1.1.1
- '@supabase/storage-js@2.103.0':
+ '@supabase/storage-js@2.105.1':
dependencies:
iceberg-js: 0.8.1
tslib: 2.8.1
@@ -12720,7 +12969,7 @@ snapshots:
'@supabase/node-fetch': 2.6.15
'@supabase/postgrest-js': 1.19.4
'@supabase/realtime-js': 2.11.15
- '@supabase/storage-js': 2.103.0
+ '@supabase/storage-js': 2.105.1
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -12729,73 +12978,81 @@ snapshots:
dependencies:
acorn: 8.16.0
- '@tailwindcss/node@4.1.18':
+ '@tailwindcss/node@4.2.2':
dependencies:
'@jridgewell/remapping': 2.3.5
- enhanced-resolve: 5.20.1
+ enhanced-resolve: 5.21.0
jiti: 2.6.1
- lightningcss: 1.30.2
+ lightningcss: 1.32.0
magic-string: 0.30.21
source-map-js: 1.2.1
- tailwindcss: 4.1.18
+ tailwindcss: 4.2.2
- '@tailwindcss/oxide-android-arm64@4.1.18':
+ '@tailwindcss/oxide-android-arm64@4.2.2':
optional: true
- '@tailwindcss/oxide-darwin-arm64@4.1.18':
+ '@tailwindcss/oxide-darwin-arm64@4.2.2':
optional: true
- '@tailwindcss/oxide-darwin-x64@4.1.18':
+ '@tailwindcss/oxide-darwin-x64@4.2.2':
optional: true
- '@tailwindcss/oxide-freebsd-x64@4.1.18':
+ '@tailwindcss/oxide-freebsd-x64@4.2.2':
optional: true
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18':
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2':
optional: true
- '@tailwindcss/oxide-linux-arm64-gnu@4.1.18':
+ '@tailwindcss/oxide-linux-arm64-gnu@4.2.2':
optional: true
- '@tailwindcss/oxide-linux-arm64-musl@4.1.18':
+ '@tailwindcss/oxide-linux-arm64-musl@4.2.2':
optional: true
- '@tailwindcss/oxide-linux-x64-gnu@4.1.18':
+ '@tailwindcss/oxide-linux-x64-gnu@4.2.2':
optional: true
- '@tailwindcss/oxide-linux-x64-musl@4.1.18':
+ '@tailwindcss/oxide-linux-x64-musl@4.2.2':
optional: true
- '@tailwindcss/oxide-wasm32-wasi@4.1.18':
+ '@tailwindcss/oxide-wasm32-wasi@4.2.2':
optional: true
- '@tailwindcss/oxide-win32-arm64-msvc@4.1.18':
+ '@tailwindcss/oxide-win32-arm64-msvc@4.2.2':
optional: true
- '@tailwindcss/oxide-win32-x64-msvc@4.1.18':
+ '@tailwindcss/oxide-win32-x64-msvc@4.2.2':
optional: true
- '@tailwindcss/oxide@4.1.18':
+ '@tailwindcss/oxide@4.2.2':
optionalDependencies:
- '@tailwindcss/oxide-android-arm64': 4.1.18
- '@tailwindcss/oxide-darwin-arm64': 4.1.18
- '@tailwindcss/oxide-darwin-x64': 4.1.18
- '@tailwindcss/oxide-freebsd-x64': 4.1.18
- '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18
- '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18
- '@tailwindcss/oxide-linux-arm64-musl': 4.1.18
- '@tailwindcss/oxide-linux-x64-gnu': 4.1.18
- '@tailwindcss/oxide-linux-x64-musl': 4.1.18
- '@tailwindcss/oxide-wasm32-wasi': 4.1.18
- '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18
- '@tailwindcss/oxide-win32-x64-msvc': 4.1.18
-
- '@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
- dependencies:
- '@tailwindcss/node': 4.1.18
- '@tailwindcss/oxide': 4.1.18
- tailwindcss: 4.1.18
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ '@tailwindcss/oxide-android-arm64': 4.2.2
+ '@tailwindcss/oxide-darwin-arm64': 4.2.2
+ '@tailwindcss/oxide-darwin-x64': 4.2.2
+ '@tailwindcss/oxide-freebsd-x64': 4.2.2
+ '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.2
+ '@tailwindcss/oxide-linux-arm64-gnu': 4.2.2
+ '@tailwindcss/oxide-linux-arm64-musl': 4.2.2
+ '@tailwindcss/oxide-linux-x64-gnu': 4.2.2
+ '@tailwindcss/oxide-linux-x64-musl': 4.2.2
+ '@tailwindcss/oxide-wasm32-wasi': 4.2.2
+ '@tailwindcss/oxide-win32-arm64-msvc': 4.2.2
+ '@tailwindcss/oxide-win32-x64-msvc': 4.2.2
+
+ '@tailwindcss/postcss@4.2.2':
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ '@tailwindcss/node': 4.2.2
+ '@tailwindcss/oxide': 4.2.2
+ postcss: 8.5.6
+ tailwindcss: 4.2.2
+
+ '@tailwindcss/vite@4.2.2(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ dependencies:
+ '@tailwindcss/node': 4.2.2
+ '@tailwindcss/oxide': 4.2.2
+ tailwindcss: 4.2.2
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
'@ts-morph/common@0.28.1':
dependencies:
@@ -13017,17 +13274,17 @@ snapshots:
'@typescript-eslint/project-service@8.56.1(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3)
- '@typescript-eslint/types': 8.58.1
+ '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.59.1
debug: 4.4.3(supports-color@10.2.2)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.58.1(supports-color@10.2.2)(typescript@5.9.3)':
+ '@typescript-eslint/project-service@8.59.1(supports-color@10.2.2)(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3)
- '@typescript-eslint/types': 8.58.1
+ '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.59.1
debug: 4.4.3(supports-color@10.2.2)
typescript: 5.9.3
transitivePeerDependencies:
@@ -13038,7 +13295,7 @@ snapshots:
'@typescript-eslint/parser': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3)
'@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
- ajv: 6.14.0
+ ajv: 6.15.0
eslint: 10.0.2(jiti@2.6.1)
json-stable-stringify-without-jsonify: 1.0.1
lodash.merge: 4.6.2
@@ -13052,16 +13309,16 @@ snapshots:
'@typescript-eslint/types': 8.56.1
'@typescript-eslint/visitor-keys': 8.56.1
- '@typescript-eslint/scope-manager@8.58.1':
+ '@typescript-eslint/scope-manager@8.59.1':
dependencies:
- '@typescript-eslint/types': 8.58.1
- '@typescript-eslint/visitor-keys': 8.58.1
+ '@typescript-eslint/types': 8.59.1
+ '@typescript-eslint/visitor-keys': 8.59.1
'@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)':
dependencies:
typescript: 5.9.3
- '@typescript-eslint/tsconfig-utils@8.58.1(typescript@5.9.3)':
+ '@typescript-eslint/tsconfig-utils@8.59.1(typescript@5.9.3)':
dependencies:
typescript: 5.9.3
@@ -13079,7 +13336,7 @@ snapshots:
'@typescript-eslint/types@8.56.1': {}
- '@typescript-eslint/types@8.58.1': {}
+ '@typescript-eslint/types@8.59.1': {}
'@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)':
dependencies:
@@ -13096,12 +13353,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.58.1(supports-color@10.2.2)(typescript@5.9.3)':
+ '@typescript-eslint/typescript-estree@8.59.1(supports-color@10.2.2)(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/project-service': 8.58.1(supports-color@10.2.2)(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3)
- '@typescript-eslint/types': 8.58.1
- '@typescript-eslint/visitor-keys': 8.58.1
+ '@typescript-eslint/project-service': 8.59.1(supports-color@10.2.2)(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.59.1
+ '@typescript-eslint/visitor-keys': 8.59.1
debug: 4.4.3(supports-color@10.2.2)
minimatch: 10.2.5
semver: 7.7.3
@@ -13122,12 +13379,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.58.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/utils@8.59.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
- '@typescript-eslint/scope-manager': 8.58.1
- '@typescript-eslint/types': 8.58.1
- '@typescript-eslint/typescript-estree': 8.58.1(supports-color@10.2.2)(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.59.1
+ '@typescript-eslint/types': 8.59.1
+ '@typescript-eslint/typescript-estree': 8.59.1(supports-color@10.2.2)(typescript@5.9.3)
eslint: 10.0.2(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
@@ -13138,9 +13395,9 @@ snapshots:
'@typescript-eslint/types': 8.56.1
eslint-visitor-keys: 5.0.1
- '@typescript-eslint/visitor-keys@8.58.1':
+ '@typescript-eslint/visitor-keys@8.59.1':
dependencies:
- '@typescript-eslint/types': 8.58.1
+ '@typescript-eslint/types': 8.59.1
eslint-visitor-keys: 5.0.1
'@typescript/analyze-trace@0.10.1':
@@ -13164,10 +13421,10 @@ snapshots:
dependencies:
'@builder.io/qwik': link:packages/qwik
- '@vercel/nft@0.29.4(rollup@4.59.0)(supports-color@10.2.2)':
+ '@vercel/nft@0.29.4(rollup@4.60.2)(supports-color@10.2.2)':
dependencies:
'@mapbox/node-pre-gyp': 2.0.3(supports-color@10.2.2)
- '@rollup/pluginutils': 5.3.0(rollup@4.59.0)
+ '@rollup/pluginutils': 5.3.0(rollup@4.60.2)
acorn: 8.16.0
acorn-import-attributes: 1.9.5(acorn@8.16.0)
async-sema: 3.1.1
@@ -13183,11 +13440,11 @@ snapshots:
- rollup
- supports-color
- '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@vitejs/plugin-basic-ssl@2.2.0(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- '@vitest/coverage-v8@4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@vitest/coverage-v8@4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@bcoe/v8-coverage': 1.0.2
'@vitest/utils': 4.0.18
@@ -13199,7 +13456,7 @@ snapshots:
obug: 2.1.1
std-env: 3.10.0
tinyrainbow: 3.1.0
- vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
'@vitest/expect@4.0.18':
dependencies:
@@ -13210,13 +13467,13 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.0
- '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
+ '@vitest/mocker@4.0.18(vite@7.3.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))':
dependencies:
'@vitest/spy': 4.0.18
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
'@vitest/pretty-format@4.0.18':
dependencies:
@@ -13252,35 +13509,35 @@ snapshots:
path-browserify: 1.0.1
vscode-uri: 3.1.0
- '@vue/compiler-core@3.5.32':
+ '@vue/compiler-core@3.5.33':
dependencies:
'@babel/parser': 7.29.2
- '@vue/shared': 3.5.32
+ '@vue/shared': 3.5.33
entities: 7.0.1
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-dom@3.5.32':
+ '@vue/compiler-dom@3.5.33':
dependencies:
- '@vue/compiler-core': 3.5.32
- '@vue/shared': 3.5.32
+ '@vue/compiler-core': 3.5.33
+ '@vue/shared': 3.5.33
- '@vue/compiler-sfc@3.5.32':
+ '@vue/compiler-sfc@3.5.33':
dependencies:
'@babel/parser': 7.29.2
- '@vue/compiler-core': 3.5.32
- '@vue/compiler-dom': 3.5.32
- '@vue/compiler-ssr': 3.5.32
- '@vue/shared': 3.5.32
+ '@vue/compiler-core': 3.5.33
+ '@vue/compiler-dom': 3.5.33
+ '@vue/compiler-ssr': 3.5.33
+ '@vue/shared': 3.5.33
estree-walker: 2.0.2
magic-string: 0.30.21
- postcss: 8.5.9
+ postcss: 8.5.12
source-map-js: 1.2.1
- '@vue/compiler-ssr@3.5.32':
+ '@vue/compiler-ssr@3.5.33':
dependencies:
- '@vue/compiler-dom': 3.5.32
- '@vue/shared': 3.5.32
+ '@vue/compiler-dom': 3.5.33
+ '@vue/shared': 3.5.33
'@vue/compiler-vue2@2.7.16':
dependencies:
@@ -13290,9 +13547,9 @@ snapshots:
'@vue/language-core@2.2.0(typescript@5.9.3)':
dependencies:
'@volar/language-core': 2.4.28
- '@vue/compiler-dom': 3.5.32
+ '@vue/compiler-dom': 3.5.33
'@vue/compiler-vue2': 2.7.16
- '@vue/shared': 3.5.32
+ '@vue/shared': 3.5.33
alien-signals: 0.4.14
minimatch: 9.0.9
muggle-string: 0.4.1
@@ -13300,7 +13557,7 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
- '@vue/shared@3.5.32': {}
+ '@vue/shared@3.5.33': {}
'@whatwg-node/disposablestack@0.0.6':
dependencies:
@@ -13371,15 +13628,15 @@ snapshots:
optionalDependencies:
ajv: 8.18.0
- ajv-errors@3.0.0(ajv@8.18.0):
+ ajv-errors@3.0.0(ajv@8.20.0):
dependencies:
- ajv: 8.18.0
+ ajv: 8.20.0
ajv-formats@3.0.1:
dependencies:
- ajv: 8.18.0
+ ajv: 8.20.0
- ajv@6.14.0:
+ ajv@6.15.0:
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
@@ -13393,6 +13650,13 @@ snapshots:
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
+ ajv@8.20.0:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.1.0
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
algoliasearch@4.16.0:
dependencies:
'@algolia/cache-browser-local-storage': 4.16.0
@@ -13582,7 +13846,7 @@ snapshots:
autoprefixer@10.4.23(postcss@8.5.6):
dependencies:
browserslist: 4.28.2
- caniuse-lite: 1.0.30001787
+ caniuse-lite: 1.0.30001791
fraction.js: 5.3.4
picocolors: 1.1.1
postcss: 8.5.6
@@ -13603,7 +13867,7 @@ snapshots:
dependencies:
'@babel/runtime': 7.29.2
cosmiconfig: 7.1.0
- resolve: 1.22.11
+ resolve: 1.22.12
backoff@2.5.0:
dependencies:
@@ -13617,24 +13881,24 @@ snapshots:
bare-events@2.8.2: {}
- bare-fs@4.7.0:
+ bare-fs@4.7.1:
dependencies:
bare-events: 2.8.2
bare-path: 3.0.0
- bare-stream: 2.12.0(bare-events@2.8.2)
- bare-url: 2.4.0
+ bare-stream: 2.13.1(bare-events@2.8.2)
+ bare-url: 2.4.2
fast-fifo: 1.3.2
transitivePeerDependencies:
- bare-abort-controller
- react-native-b4a
- bare-os@3.8.7: {}
+ bare-os@3.9.0: {}
bare-path@3.0.0:
dependencies:
- bare-os: 3.8.7
+ bare-os: 3.9.0
- bare-stream@2.12.0(bare-events@2.8.2):
+ bare-stream@2.13.1(bare-events@2.8.2):
dependencies:
streamx: 2.25.0
teex: 1.0.1
@@ -13643,23 +13907,23 @@ snapshots:
transitivePeerDependencies:
- react-native-b4a
- bare-url@2.4.0:
+ bare-url@2.4.2:
dependencies:
bare-path: 3.0.0
base64-js@1.5.1: {}
- baseline-browser-mapping@2.10.17: {}
+ baseline-browser-mapping@2.10.24: {}
before-after-hook@2.2.3: {}
before-after-hook@4.0.0: {}
- better-ajv-errors@1.2.0(ajv@8.18.0):
+ better-ajv-errors@1.2.0(ajv@8.20.0):
dependencies:
'@babel/code-frame': 7.29.0
'@humanwhocodes/momoa': 2.0.4
- ajv: 8.18.0
+ ajv: 8.20.0
chalk: 4.1.2
jsonpointer: 5.0.1
leven: 3.1.0
@@ -13686,7 +13950,7 @@ snapshots:
blake3-wasm@2.1.5: {}
- body-parser@1.20.4:
+ body-parser@1.20.5:
dependencies:
bytes: 3.1.2
content-type: 1.0.5
@@ -13696,7 +13960,7 @@ snapshots:
http-errors: 2.0.1
iconv-lite: 0.4.24
on-finished: 2.4.1
- qs: 6.14.2
+ qs: 6.15.1
raw-body: 2.5.3
type-is: 1.6.18
unpipe: 1.0.0
@@ -13730,12 +13994,12 @@ snapshots:
widest-line: 5.0.0
wrap-ansi: 9.0.2
- brace-expansion@1.1.13:
+ brace-expansion@1.1.14:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
- brace-expansion@2.0.3:
+ brace-expansion@2.1.0:
dependencies:
balanced-match: 1.0.2
@@ -13753,10 +14017,10 @@ snapshots:
browserslist@4.28.2:
dependencies:
- baseline-browser-mapping: 2.10.17
- caniuse-lite: 1.0.30001787
- electron-to-chromium: 1.5.334
- node-releases: 2.0.37
+ baseline-browser-mapping: 2.10.24
+ caniuse-lite: 1.0.30001791
+ electron-to-chromium: 1.5.344
+ node-releases: 2.0.38
update-browserslist-db: 1.2.3(browserslist@4.28.2)
buffer-crc32@0.2.13: {}
@@ -13814,7 +14078,7 @@ snapshots:
camelcase@8.0.0: {}
- caniuse-lite@1.0.30001787: {}
+ caniuse-lite@1.0.30001791: {}
ccount@2.0.1: {}
@@ -14071,7 +14335,7 @@ snapshots:
dependencies:
uncrypto: 0.1.3
- crossws@0.4.4: {}
+ crossws@0.4.5: {}
css-select@5.2.2:
dependencies:
@@ -14211,58 +14475,58 @@ snapshots:
detect-libc@2.1.2: {}
- detective-amd@6.0.1:
+ detective-amd@6.1.0:
dependencies:
ast-module-types: 6.0.1
escodegen: 2.1.0
- get-amd-module-type: 6.0.1
- node-source-walk: 7.0.1
+ get-amd-module-type: 6.0.2
+ node-source-walk: 7.0.2
- detective-cjs@6.1.0:
+ detective-cjs@6.1.1:
dependencies:
ast-module-types: 6.0.1
- node-source-walk: 7.0.1
+ node-source-walk: 7.0.2
- detective-es6@5.0.1:
+ detective-es6@5.0.2:
dependencies:
- node-source-walk: 7.0.1
+ node-source-walk: 7.0.2
- detective-postcss@7.0.1(postcss@8.5.6):
+ detective-postcss@7.0.1(postcss@8.5.12):
dependencies:
is-url: 1.2.4
- postcss: 8.5.6
- postcss-values-parser: 6.0.2(postcss@8.5.6)
+ postcss: 8.5.12
+ postcss-values-parser: 6.0.2(postcss@8.5.12)
- detective-sass@6.0.1:
+ detective-sass@6.0.2:
dependencies:
gonzales-pe: 4.3.0
- node-source-walk: 7.0.1
+ node-source-walk: 7.0.2
- detective-scss@5.0.1:
+ detective-scss@5.0.2:
dependencies:
gonzales-pe: 4.3.0
- node-source-walk: 7.0.1
+ node-source-walk: 7.0.2
detective-stylus@5.0.1: {}
- detective-typescript@14.0.0(supports-color@10.2.2)(typescript@5.9.3):
+ detective-typescript@14.1.2(supports-color@10.2.2)(typescript@5.9.3):
dependencies:
- '@typescript-eslint/typescript-estree': 8.58.1(supports-color@10.2.2)(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.59.1(supports-color@10.2.2)(typescript@5.9.3)
ast-module-types: 6.0.1
- node-source-walk: 7.0.1
+ node-source-walk: 7.0.2
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- detective-vue2@2.2.0(supports-color@10.2.2)(typescript@5.9.3):
+ detective-vue2@2.3.0(supports-color@10.2.2)(typescript@5.9.3):
dependencies:
- '@dependents/detective-less': 5.0.1
- '@vue/compiler-sfc': 3.5.32
- detective-es6: 5.0.1
- detective-sass: 6.0.1
- detective-scss: 5.0.1
+ '@dependents/detective-less': 5.0.3
+ '@vue/compiler-sfc': 3.5.33
+ detective-es6: 5.0.2
+ detective-sass: 6.0.2
+ detective-scss: 5.0.2
detective-stylus: 5.0.1
- detective-typescript: 14.0.0(supports-color@10.2.2)(typescript@5.9.3)
+ detective-typescript: 14.1.2(supports-color@10.2.2)(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -14318,7 +14582,7 @@ snapshots:
dot-prop@10.1.0:
dependencies:
- type-fest: 5.5.0
+ type-fest: 5.6.0
dot-prop@9.0.0:
dependencies:
@@ -14364,12 +14628,12 @@ snapshots:
ee-first@1.1.1: {}
- effect@3.21.0:
+ effect@3.21.2:
dependencies:
'@standard-schema/spec': 1.1.0
fast-check: 3.23.2
- electron-to-chromium@1.5.334: {}
+ electron-to-chromium@1.5.344: {}
emoji-regex@10.6.0: {}
@@ -14387,10 +14651,10 @@ snapshots:
dependencies:
once: 1.4.0
- enhanced-resolve@5.20.1:
+ enhanced-resolve@5.21.0:
dependencies:
graceful-fs: 4.2.11
- tapable: 2.3.2
+ tapable: 2.3.3
enquirer@2.4.1:
dependencies:
@@ -14449,7 +14713,7 @@ snapshots:
has-property-descriptors: 1.0.2
has-proto: 1.2.0
has-symbols: 1.1.0
- hasown: 2.0.2
+ hasown: 2.0.3
internal-slot: 1.1.0
is-array-buffer: 3.0.5
is-callable: 1.2.7
@@ -14467,7 +14731,7 @@ snapshots:
object.assign: 4.1.7
own-keys: 1.0.1
regexp.prototype.flags: 1.5.4
- safe-array-concat: 1.1.3
+ safe-array-concat: 1.1.4
safe-push-apply: 1.0.0
safe-regex-test: 1.1.0
set-proto: 1.0.0
@@ -14497,11 +14761,11 @@ snapshots:
es-errors: 1.3.0
get-intrinsic: 1.3.0
has-tostringtag: 1.0.2
- hasown: 2.0.2
+ hasown: 2.0.3
es-shim-unscopables@1.1.0:
dependencies:
- hasown: 2.0.2
+ hasown: 2.0.3
es-to-primitive@1.3.0:
dependencies:
@@ -14773,7 +15037,7 @@ snapshots:
eslint: 10.0.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.10
eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.10)(eslint@10.0.2(jiti@2.6.1))
- hasown: 2.0.2
+ hasown: 2.0.3
is-core-module: 2.16.1
is-glob: 4.0.3
minimatch: 3.1.5
@@ -14809,11 +15073,11 @@ snapshots:
'@eslint/config-helpers': 0.5.5
'@eslint/core': 1.2.1
'@eslint/plugin-kit': 0.6.1
- '@humanfs/node': 0.16.7
+ '@humanfs/node': 0.16.8
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
'@types/estree': 1.0.8
- ajv: 6.14.0
+ ajv: 6.15.0
cross-spawn: 7.0.6
debug: 4.4.3(supports-color@10.2.2)
escape-string-regexp: 4.0.0
@@ -14962,7 +15226,7 @@ snapshots:
dependencies:
accepts: 1.3.8
array-flatten: 1.1.1
- body-parser: 1.20.4
+ body-parser: 1.20.5
content-disposition: 0.5.4
content-type: 1.0.5
cookie: 0.7.2
@@ -15080,7 +15344,7 @@ snapshots:
fast-json-stringify@6.3.0:
dependencies:
'@fastify/merge-json-schemas': 0.2.1
- ajv: 8.18.0
+ ajv: 8.20.0
ajv-formats: 3.0.1
fast-uri: 3.1.0
json-schema-ref-resolver: 3.0.0
@@ -15192,7 +15456,7 @@ snapshots:
dependencies:
fast-deep-equal: 3.1.3
fast-querystring: 1.1.2
- safe-regex2: 5.1.0
+ safe-regex2: 5.1.1
find-root@1.1.0: {}
@@ -15232,7 +15496,7 @@ snapshots:
dependencies:
from2: 2.3.0
- follow-redirects@1.15.11(debug@4.4.3):
+ follow-redirects@1.16.0(debug@4.4.3):
optionalDependencies:
debug: 4.4.3(supports-color@10.2.2)
@@ -15267,7 +15531,7 @@ snapshots:
fs-extra@11.3.4:
dependencies:
graceful-fs: 4.2.11
- jsonfile: 6.2.0
+ jsonfile: 6.2.1
universalify: 2.0.1
fs-extra@7.0.1:
@@ -15296,7 +15560,7 @@ snapshots:
call-bound: 1.0.4
define-properties: 1.2.1
functions-have-names: 1.2.3
- hasown: 2.0.2
+ hasown: 2.0.3
is-callable: 1.2.7
functions-have-names@1.2.3: {}
@@ -15305,10 +15569,10 @@ snapshots:
generator-function@2.0.1: {}
- get-amd-module-type@6.0.1:
+ get-amd-module-type@6.0.2:
dependencies:
ast-module-types: 6.0.1
- node-source-walk: 7.0.1
+ node-source-walk: 7.0.2
get-caller-file@2.0.5: {}
@@ -15324,7 +15588,7 @@ snapshots:
get-proto: 1.0.1
gopd: 1.2.0
has-symbols: 1.1.0
- hasown: 2.0.2
+ hasown: 2.0.3
math-intrinsics: 1.1.0
get-port-please@3.2.0: {}
@@ -15357,7 +15621,7 @@ snapshots:
es-errors: 1.3.0
get-intrinsic: 1.3.0
- get-tsconfig@4.13.7:
+ get-tsconfig@4.14.0:
dependencies:
resolve-pkg-maps: 1.0.0
@@ -15476,7 +15740,7 @@ snapshots:
dependencies:
has-symbols: 1.1.0
- hasown@2.0.2:
+ hasown@2.0.3:
dependencies:
function-bind: 1.1.2
@@ -15587,7 +15851,7 @@ snapshots:
hosted-git-info@9.0.2:
dependencies:
- lru-cache: 11.3.3
+ lru-cache: 11.3.5
hot-shots@11.4.0:
optionalDependencies:
@@ -15635,7 +15899,7 @@ snapshots:
http-proxy@1.18.1(debug@4.4.3):
dependencies:
eventemitter3: 4.0.7
- follow-redirects: 1.15.11(debug@4.4.3)
+ follow-redirects: 1.16.0(debug@4.4.3)
requires-port: 1.0.0
transitivePeerDependencies:
- debug
@@ -15778,7 +16042,7 @@ snapshots:
internal-slot@1.1.0:
dependencies:
es-errors: 1.3.0
- hasown: 2.0.2
+ hasown: 2.0.3
side-channel: 1.1.0
ipaddr.js@1.9.1: {}
@@ -15903,7 +16167,7 @@ snapshots:
is-core-module@2.16.1:
dependencies:
- hasown: 2.0.2
+ hasown: 2.0.3
is-data-view@1.0.2:
dependencies:
@@ -15999,7 +16263,7 @@ snapshots:
call-bound: 1.0.4
gopd: 1.2.0
has-tostringtag: 1.0.2
- hasown: 2.0.2
+ hasown: 2.0.3
is-safe-filename@0.1.1: {}
@@ -16104,7 +16368,7 @@ snapshots:
jju@1.4.0: {}
- jose@6.2.2: {}
+ jose@6.2.3: {}
jpeg-js@0.4.4: {}
@@ -16161,7 +16425,7 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
- jsonfile@6.2.0:
+ jsonfile@6.2.1:
dependencies:
universalify: 2.0.1
optionalDependencies:
@@ -16280,54 +16544,54 @@ snapshots:
process-warning: 4.0.1
set-cookie-parser: 2.7.2
- lightningcss-android-arm64@1.30.2:
+ lightningcss-android-arm64@1.32.0:
optional: true
- lightningcss-darwin-arm64@1.30.2:
+ lightningcss-darwin-arm64@1.32.0:
optional: true
- lightningcss-darwin-x64@1.30.2:
+ lightningcss-darwin-x64@1.32.0:
optional: true
- lightningcss-freebsd-x64@1.30.2:
+ lightningcss-freebsd-x64@1.32.0:
optional: true
- lightningcss-linux-arm-gnueabihf@1.30.2:
+ lightningcss-linux-arm-gnueabihf@1.32.0:
optional: true
- lightningcss-linux-arm64-gnu@1.30.2:
+ lightningcss-linux-arm64-gnu@1.32.0:
optional: true
- lightningcss-linux-arm64-musl@1.30.2:
+ lightningcss-linux-arm64-musl@1.32.0:
optional: true
- lightningcss-linux-x64-gnu@1.30.2:
+ lightningcss-linux-x64-gnu@1.32.0:
optional: true
- lightningcss-linux-x64-musl@1.30.2:
+ lightningcss-linux-x64-musl@1.32.0:
optional: true
- lightningcss-win32-arm64-msvc@1.30.2:
+ lightningcss-win32-arm64-msvc@1.32.0:
optional: true
- lightningcss-win32-x64-msvc@1.30.2:
+ lightningcss-win32-x64-msvc@1.32.0:
optional: true
- lightningcss@1.30.2:
+ lightningcss@1.32.0:
dependencies:
detect-libc: 2.1.2
optionalDependencies:
- lightningcss-android-arm64: 1.30.2
- lightningcss-darwin-arm64: 1.30.2
- lightningcss-darwin-x64: 1.30.2
- lightningcss-freebsd-x64: 1.30.2
- lightningcss-linux-arm-gnueabihf: 1.30.2
- lightningcss-linux-arm64-gnu: 1.30.2
- lightningcss-linux-arm64-musl: 1.30.2
- lightningcss-linux-x64-gnu: 1.30.2
- lightningcss-linux-x64-musl: 1.30.2
- lightningcss-win32-arm64-msvc: 1.30.2
- lightningcss-win32-x64-msvc: 1.30.2
+ lightningcss-android-arm64: 1.32.0
+ lightningcss-darwin-arm64: 1.32.0
+ lightningcss-darwin-x64: 1.32.0
+ lightningcss-freebsd-x64: 1.32.0
+ lightningcss-linux-arm-gnueabihf: 1.32.0
+ lightningcss-linux-arm64-gnu: 1.32.0
+ lightningcss-linux-arm64-musl: 1.32.0
+ lightningcss-linux-x64-gnu: 1.32.0
+ lightningcss-linux-x64-musl: 1.32.0
+ lightningcss-win32-arm64-msvc: 1.32.0
+ lightningcss-win32-x64-msvc: 1.32.0
lines-and-columns@1.2.4: {}
@@ -16337,7 +16601,7 @@ snapshots:
'@parcel/watcher-wasm': 2.5.6
citty: 0.2.2
consola: 3.4.2
- crossws: 0.4.4
+ crossws: 0.4.5
defu: 6.1.7
get-port-please: 3.2.0
h3: 1.15.11
@@ -16346,7 +16610,7 @@ snapshots:
mlly: 1.8.2
node-forge: 1.4.0
pathe: 2.0.3
- std-env: 4.0.0
+ std-env: 4.1.0
tinyclip: 0.1.12
ufo: 1.6.3
untun: 0.1.3
@@ -16357,7 +16621,7 @@ snapshots:
local-pkg@1.1.2:
dependencies:
mlly: 1.8.2
- pkg-types: 2.3.0
+ pkg-types: 2.3.1
quansync: 0.2.11
locate-path@5.0.0:
@@ -16446,7 +16710,7 @@ snapshots:
lru-cache@10.4.3: {}
- lru-cache@11.3.3: {}
+ lru-cache@11.3.5: {}
lru-cache@6.0.0:
dependencies:
@@ -17037,19 +17301,19 @@ snapshots:
minimatch@3.1.5:
dependencies:
- brace-expansion: 1.1.13
+ brace-expansion: 1.1.14
minimatch@5.1.9:
dependencies:
- brace-expansion: 2.0.3
+ brace-expansion: 2.1.0
minimatch@9.0.5:
dependencies:
- brace-expansion: 2.0.3
+ brace-expansion: 2.1.0
minimatch@9.0.9:
dependencies:
- brace-expansion: 2.0.3
+ brace-expansion: 2.1.0
minimist@1.2.8: {}
@@ -17068,10 +17332,10 @@ snapshots:
modern-tar@0.7.5: {}
- module-definition@6.0.1:
+ module-definition@6.0.2:
dependencies:
ast-module-types: 6.0.1
- node-source-walk: 7.0.1
+ node-source-walk: 7.0.2
module-details-from-path@1.0.4: {}
@@ -17107,7 +17371,7 @@ snapshots:
nanoid@3.3.11: {}
- nanoid@5.1.7: {}
+ nanoid@5.1.9: {}
nanospinner@1.2.2:
dependencies:
@@ -17119,16 +17383,16 @@ snapshots:
negotiator@1.0.0: {}
- netlify-cli@24.5.1(@types/node@24.10.0)(picomatch@4.0.4)(rollup@4.59.0):
+ netlify-cli@24.5.1(@types/node@24.10.0)(picomatch@4.0.4)(rollup@4.60.2):
dependencies:
'@fastify/static': 9.0.0
'@netlify/ai': 0.4.1
'@netlify/api': 14.0.18
'@netlify/blobs': 10.7.0
- '@netlify/build': 35.11.1(@opentelemetry/api@1.8.0)(@types/node@24.10.0)(picomatch@4.0.4)(rollup@4.59.0)
+ '@netlify/build': 35.11.1(@opentelemetry/api@1.8.0)(@types/node@24.10.0)(picomatch@4.0.4)(rollup@4.60.2)
'@netlify/build-info': 10.4.0
'@netlify/config': 24.4.4
- '@netlify/dev': 4.16.4(rollup@4.59.0)
+ '@netlify/dev': 4.16.4(rollup@4.60.2)
'@netlify/dev-utils': 4.4.3
'@netlify/edge-bundler': 14.9.19
'@netlify/edge-functions': 3.0.6
@@ -17137,7 +17401,7 @@ snapshots:
'@netlify/images': 1.3.7(@netlify/blobs@10.7.0)
'@netlify/local-functions-proxy': 2.0.3
'@netlify/redirect-parser': 15.0.4
- '@netlify/zip-it-and-ship-it': 14.5.2(rollup@4.59.0)(supports-color@10.2.2)
+ '@netlify/zip-it-and-ship-it': 14.5.2(rollup@4.60.2)(supports-color@10.2.2)
'@octokit/rest': 22.0.0
'@opentelemetry/api': 1.8.0
'@pnpm/tabtab': 0.5.4
@@ -17284,9 +17548,9 @@ snapshots:
node-mock-http@1.0.4: {}
- node-releases@2.0.37: {}
+ node-releases@2.0.38: {}
- node-source-walk@7.0.1:
+ node-source-walk@7.0.2:
dependencies:
'@babel/parser': 7.29.2
@@ -17349,7 +17613,7 @@ snapshots:
dependencies:
boolbase: 1.0.0
- oauth4webapi@3.8.5: {}
+ oauth4webapi@3.8.6: {}
object-assign@4.1.1: {}
@@ -17433,11 +17697,11 @@ snapshots:
dependencies:
mimic-function: 5.0.1
- oniguruma-parser@0.12.1: {}
+ oniguruma-parser@0.12.2: {}
- oniguruma-to-es@4.3.5:
+ oniguruma-to-es@4.3.6:
dependencies:
- oniguruma-parser: 0.12.1
+ oniguruma-parser: 0.12.2
regex: 6.1.0
regex-recursion: 6.0.2
@@ -17505,7 +17769,7 @@ snapshots:
object-keys: 1.1.1
safe-push-apply: 1.0.0
- oxc-minify@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2):
+ oxc-minify@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0):
optionalDependencies:
'@oxc-minify/binding-android-arm-eabi': 0.115.0
'@oxc-minify/binding-android-arm64': 0.115.0
@@ -17523,7 +17787,7 @@ snapshots:
'@oxc-minify/binding-linux-x64-gnu': 0.115.0
'@oxc-minify/binding-linux-x64-musl': 0.115.0
'@oxc-minify/binding-openharmony-arm64': 0.115.0
- '@oxc-minify/binding-wasm32-wasi': 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ '@oxc-minify/binding-wasm32-wasi': 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
'@oxc-minify/binding-win32-arm64-msvc': 0.115.0
'@oxc-minify/binding-win32-ia32-msvc': 0.115.0
'@oxc-minify/binding-win32-x64-msvc': 0.115.0
@@ -17531,7 +17795,7 @@ snapshots:
- '@emnapi/core'
- '@emnapi/runtime'
- oxc-parser@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2):
+ oxc-parser@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0):
dependencies:
'@oxc-project/types': 0.115.0
optionalDependencies:
@@ -17551,7 +17815,7 @@ snapshots:
'@oxc-parser/binding-linux-x64-gnu': 0.115.0
'@oxc-parser/binding-linux-x64-musl': 0.115.0
'@oxc-parser/binding-openharmony-arm64': 0.115.0
- '@oxc-parser/binding-wasm32-wasi': 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ '@oxc-parser/binding-wasm32-wasi': 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
'@oxc-parser/binding-win32-arm64-msvc': 0.115.0
'@oxc-parser/binding-win32-ia32-msvc': 0.115.0
'@oxc-parser/binding-win32-x64-msvc': 0.115.0
@@ -17559,7 +17823,7 @@ snapshots:
- '@emnapi/core'
- '@emnapi/runtime'
- oxc-parser@0.82.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2):
+ oxc-parser@0.82.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0):
dependencies:
'@oxc-project/types': 0.82.3
optionalDependencies:
@@ -17575,14 +17839,14 @@ snapshots:
'@oxc-parser/binding-linux-s390x-gnu': 0.82.3
'@oxc-parser/binding-linux-x64-gnu': 0.82.3
'@oxc-parser/binding-linux-x64-musl': 0.82.3
- '@oxc-parser/binding-wasm32-wasi': 0.82.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ '@oxc-parser/binding-wasm32-wasi': 0.82.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
'@oxc-parser/binding-win32-arm64-msvc': 0.82.3
'@oxc-parser/binding-win32-x64-msvc': 0.82.3
transitivePeerDependencies:
- '@emnapi/core'
- '@emnapi/runtime'
- oxc-transform@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2):
+ oxc-transform@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0):
optionalDependencies:
'@oxc-transform/binding-android-arm-eabi': 0.115.0
'@oxc-transform/binding-android-arm64': 0.115.0
@@ -17600,7 +17864,7 @@ snapshots:
'@oxc-transform/binding-linux-x64-gnu': 0.115.0
'@oxc-transform/binding-linux-x64-musl': 0.115.0
'@oxc-transform/binding-openharmony-arm64': 0.115.0
- '@oxc-transform/binding-wasm32-wasi': 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ '@oxc-transform/binding-wasm32-wasi': 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
'@oxc-transform/binding-win32-arm64-msvc': 0.115.0
'@oxc-transform/binding-win32-ia32-msvc': 0.115.0
'@oxc-transform/binding-win32-x64-msvc': 0.115.0
@@ -17608,10 +17872,10 @@ snapshots:
- '@emnapi/core'
- '@emnapi/runtime'
- oxc-walker@0.7.0(oxc-parser@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)):
+ oxc-walker@0.7.0(oxc-parser@0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)):
dependencies:
magic-regexp: 0.10.0
- oxc-parser: 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ oxc-parser: 0.115.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.10.0)
p-event@6.0.1:
dependencies:
@@ -17764,7 +18028,7 @@ snapshots:
path-scurry@2.0.2:
dependencies:
- lru-cache: 11.3.3
+ lru-cache: 11.3.5
minipass: 7.1.3
path-to-regexp@0.1.13: {}
@@ -17862,7 +18126,7 @@ snapshots:
mlly: 1.8.2
pathe: 2.0.3
- pkg-types@2.3.0:
+ pkg-types@2.3.1:
dependencies:
confbox: 0.2.4
exsolve: 1.0.8
@@ -17880,20 +18144,20 @@ snapshots:
postcss-value-parser@4.2.0: {}
- postcss-values-parser@6.0.2(postcss@8.5.6):
+ postcss-values-parser@6.0.2(postcss@8.5.12):
dependencies:
color-name: 1.1.4
is-url-superb: 4.0.0
- postcss: 8.5.6
+ postcss: 8.5.12
quote-unquote: 1.0.0
- postcss@8.5.6:
+ postcss@8.5.12:
dependencies:
nanoid: 3.3.11
picocolors: 1.1.1
source-map-js: 1.2.1
- postcss@8.5.9:
+ postcss@8.5.6:
dependencies:
nanoid: 3.3.11
picocolors: 1.1.1
@@ -17917,22 +18181,22 @@ snapshots:
preact@10.24.3: {}
- precinct@12.2.0(supports-color@10.2.2):
+ precinct@12.3.1(supports-color@10.2.2):
dependencies:
- '@dependents/detective-less': 5.0.1
+ '@dependents/detective-less': 5.0.3
commander: 12.1.0
- detective-amd: 6.0.1
- detective-cjs: 6.1.0
- detective-es6: 5.0.1
- detective-postcss: 7.0.1(postcss@8.5.6)
- detective-sass: 6.0.1
- detective-scss: 5.0.1
+ detective-amd: 6.1.0
+ detective-cjs: 6.1.1
+ detective-es6: 5.0.2
+ detective-postcss: 7.0.1(postcss@8.5.12)
+ detective-sass: 6.0.2
+ detective-scss: 5.0.2
detective-stylus: 5.0.1
- detective-typescript: 14.0.0(supports-color@10.2.2)(typescript@5.9.3)
- detective-vue2: 2.2.0(supports-color@10.2.2)(typescript@5.9.3)
- module-definition: 6.0.1
- node-source-walk: 7.0.1
- postcss: 8.5.6
+ detective-typescript: 14.1.2(supports-color@10.2.2)(typescript@5.9.3)
+ detective-vue2: 2.3.0(supports-color@10.2.2)(typescript@5.9.3)
+ module-definition: 6.0.2
+ node-source-walk: 7.0.2
+ postcss: 8.5.12
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -18117,14 +18381,14 @@ snapshots:
dependencies:
find-up-simple: 1.0.1
read-pkg: 10.1.0
- type-fest: 5.5.0
+ type-fest: 5.6.0
read-pkg@10.1.0:
dependencies:
'@types/normalize-package-data': 2.4.4
normalize-package-data: 8.0.0
parse-json: 8.3.0
- type-fest: 5.5.0
+ type-fest: 5.6.0
unicorn-magic: 0.4.0
read-pkg@9.0.1:
@@ -18348,7 +18612,7 @@ snapshots:
dependencies:
debug: 4.4.3(supports-color@10.2.2)
module-details-from-path: 1.0.4
- resolve: 1.22.11
+ resolve: 1.22.12
transitivePeerDependencies:
- supports-color
@@ -18366,8 +18630,9 @@ snapshots:
resolve-pkg-maps@1.0.0: {}
- resolve@1.22.11:
+ resolve@1.22.12:
dependencies:
+ es-errors: 1.3.0
is-core-module: 2.16.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -18399,35 +18664,56 @@ snapshots:
rfdc@1.4.1: {}
- rollup@4.59.0:
+ rolldown@1.0.0-rc.16:
+ dependencies:
+ '@oxc-project/types': 0.126.0
+ '@rolldown/pluginutils': 1.0.0-rc.16
+ optionalDependencies:
+ '@rolldown/binding-android-arm64': 1.0.0-rc.16
+ '@rolldown/binding-darwin-arm64': 1.0.0-rc.16
+ '@rolldown/binding-darwin-x64': 1.0.0-rc.16
+ '@rolldown/binding-freebsd-x64': 1.0.0-rc.16
+ '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.16
+ '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.16
+ '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.16
+ '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.16
+ '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.16
+ '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.16
+ '@rolldown/binding-linux-x64-musl': 1.0.0-rc.16
+ '@rolldown/binding-openharmony-arm64': 1.0.0-rc.16
+ '@rolldown/binding-wasm32-wasi': 1.0.0-rc.16
+ '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.16
+ '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.16
+
+ rollup@4.60.2:
dependencies:
'@types/estree': 1.0.8
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.59.0
- '@rollup/rollup-android-arm64': 4.59.0
- '@rollup/rollup-darwin-arm64': 4.59.0
- '@rollup/rollup-darwin-x64': 4.59.0
- '@rollup/rollup-freebsd-arm64': 4.59.0
- '@rollup/rollup-freebsd-x64': 4.59.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.59.0
- '@rollup/rollup-linux-arm-musleabihf': 4.59.0
- '@rollup/rollup-linux-arm64-gnu': 4.59.0
- '@rollup/rollup-linux-arm64-musl': 4.59.0
- '@rollup/rollup-linux-loong64-gnu': 4.59.0
- '@rollup/rollup-linux-loong64-musl': 4.59.0
- '@rollup/rollup-linux-ppc64-gnu': 4.59.0
- '@rollup/rollup-linux-ppc64-musl': 4.59.0
- '@rollup/rollup-linux-riscv64-gnu': 4.59.0
- '@rollup/rollup-linux-riscv64-musl': 4.59.0
- '@rollup/rollup-linux-s390x-gnu': 4.59.0
- '@rollup/rollup-linux-x64-gnu': 4.59.0
- '@rollup/rollup-linux-x64-musl': 4.59.0
- '@rollup/rollup-openbsd-x64': 4.59.0
- '@rollup/rollup-openharmony-arm64': 4.59.0
- '@rollup/rollup-win32-arm64-msvc': 4.59.0
- '@rollup/rollup-win32-ia32-msvc': 4.59.0
- '@rollup/rollup-win32-x64-gnu': 4.59.0
- '@rollup/rollup-win32-x64-msvc': 4.59.0
+ '@rollup/rollup-android-arm-eabi': 4.60.2
+ '@rollup/rollup-android-arm64': 4.60.2
+ '@rollup/rollup-darwin-arm64': 4.60.2
+ '@rollup/rollup-darwin-x64': 4.60.2
+ '@rollup/rollup-freebsd-arm64': 4.60.2
+ '@rollup/rollup-freebsd-x64': 4.60.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.60.2
+ '@rollup/rollup-linux-arm-musleabihf': 4.60.2
+ '@rollup/rollup-linux-arm64-gnu': 4.60.2
+ '@rollup/rollup-linux-arm64-musl': 4.60.2
+ '@rollup/rollup-linux-loong64-gnu': 4.60.2
+ '@rollup/rollup-linux-loong64-musl': 4.60.2
+ '@rollup/rollup-linux-ppc64-gnu': 4.60.2
+ '@rollup/rollup-linux-ppc64-musl': 4.60.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.60.2
+ '@rollup/rollup-linux-riscv64-musl': 4.60.2
+ '@rollup/rollup-linux-s390x-gnu': 4.60.2
+ '@rollup/rollup-linux-x64-gnu': 4.60.2
+ '@rollup/rollup-linux-x64-musl': 4.60.2
+ '@rollup/rollup-openbsd-x64': 4.60.2
+ '@rollup/rollup-openharmony-arm64': 4.60.2
+ '@rollup/rollup-win32-arm64-msvc': 4.60.2
+ '@rollup/rollup-win32-ia32-msvc': 4.60.2
+ '@rollup/rollup-win32-x64-gnu': 4.60.2
+ '@rollup/rollup-win32-x64-msvc': 4.60.2
fsevents: 2.3.3
router@2.2.0:
@@ -18460,7 +18746,7 @@ snapshots:
dependencies:
mri: 1.2.0
- safe-array-concat@1.1.3:
+ safe-array-concat@1.1.4:
dependencies:
call-bind: 1.0.9
call-bound: 1.0.4
@@ -18485,7 +18771,7 @@ snapshots:
es-errors: 1.3.0
is-regex: 1.2.1
- safe-regex2@5.1.0:
+ safe-regex2@5.1.1:
dependencies:
ret: 0.5.0
@@ -18775,7 +19061,7 @@ snapshots:
std-env@3.10.0: {}
- std-env@4.0.0: {}
+ std-env@4.1.0: {}
stdin-discarder@0.2.2: {}
@@ -18813,7 +19099,7 @@ snapshots:
get-east-asian-width: 1.5.0
strip-ansi: 7.2.0
- string-width@8.2.0:
+ string-width@8.2.1:
dependencies:
get-east-asian-width: 1.5.0
strip-ansi: 7.2.0
@@ -18948,7 +19234,7 @@ snapshots:
chalk-template: 1.1.2
commander: 13.1.0
cosmiconfig: 9.0.1(typescript@5.9.3)
- effect: 3.21.0
+ effect: 3.21.2
enquirer: 2.4.1
fast-check: 3.23.2
globby: 14.1.0
@@ -18966,14 +19252,16 @@ snapshots:
tagged-tag@1.0.0: {}
- tailwindcss@4.1.18: {}
+ tailwindcss@4.2.1: {}
+
+ tailwindcss@4.2.2: {}
- tapable@2.3.2: {}
+ tapable@2.3.3: {}
tar-stream@3.1.8:
dependencies:
b4a: 1.8.0
- bare-fs: 4.7.0
+ bare-fs: 4.7.1
fast-fifo: 1.3.2
streamx: 2.25.0
transitivePeerDependencies:
@@ -19156,7 +19444,7 @@ snapshots:
tsx@4.21.0:
dependencies:
esbuild: 0.27.2
- get-tsconfig: 4.13.7
+ get-tsconfig: 4.14.0
optionalDependencies:
fsevents: 2.3.3
@@ -19168,7 +19456,7 @@ snapshots:
type-fest@4.41.0: {}
- type-fest@5.5.0:
+ type-fest@5.6.0:
dependencies:
tagged-tag: 1.0.0
@@ -19250,7 +19538,7 @@ snapshots:
undici-types@7.16.0: {}
- undici@6.24.1: {}
+ undici@6.25.0: {}
undici@7.24.4: {}
@@ -19341,7 +19629,7 @@ snapshots:
chokidar: 5.0.0
destr: 2.0.5
h3: 1.15.11
- lru-cache: 11.3.3
+ lru-cache: 11.3.5
node-fetch-native: 1.6.7
ofetch: 1.5.1
ufo: 1.6.3
@@ -19354,7 +19642,7 @@ snapshots:
chokidar: 5.0.0
destr: 2.0.5
h3: 1.15.11
- lru-cache: 11.3.3
+ lru-cache: 11.3.5
node-fetch-native: 1.6.7
ofetch: 1.5.1
ufo: 1.6.3
@@ -19446,33 +19734,42 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite-dev-rpc@1.1.0(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ vite-dev-rpc@1.1.0(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
birpc: 2.9.0
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vite-hot-client: 2.1.0(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite-hot-client: 2.1.0(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+
+ vite-hot-client@0.2.4(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ dependencies:
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vite-hot-client@0.2.4(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ vite-hot-client@2.1.0(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vite-hot-client@2.1.0(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ vite-imagetools@10.0.0(rollup@4.60.2)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ '@rollup/pluginutils': 5.3.0(rollup@4.60.2)
+ imagetools-core: 9.1.0
+ sharp: 0.34.5
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ transitivePeerDependencies:
+ - rollup
- vite-imagetools@10.0.0(rollup@4.59.0)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ vite-imagetools@10.0.0(rollup@4.60.2)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
- '@rollup/pluginutils': 5.3.0(rollup@4.59.0)
+ '@rollup/pluginutils': 5.3.0(rollup@4.60.2)
imagetools-core: 9.1.0
sharp: 0.34.5
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
transitivePeerDependencies:
- rollup
- vite-plugin-dts@4.5.4(@types/node@24.10.0)(rollup@4.59.0)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ vite-plugin-dts@4.5.4(@types/node@24.10.0)(rollup@4.60.2)(typescript@5.9.3)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
'@microsoft/api-extractor': 7.57.6(@types/node@24.10.0)
- '@rollup/pluginutils': 5.3.0(rollup@4.59.0)
+ '@rollup/pluginutils': 5.3.0(rollup@4.60.2)
'@volar/typescript': 2.4.28
'@vue/language-core': 2.2.0(typescript@5.9.3)
compare-versions: 6.1.1
@@ -19482,13 +19779,13 @@ snapshots:
magic-string: 0.30.21
typescript: 5.9.3
optionalDependencies:
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
- vite-plugin-inspect@11.3.3(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ vite-plugin-inspect@11.3.3(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
ansis: 4.2.0
debug: 4.4.3(supports-color@10.2.2)
@@ -19498,43 +19795,86 @@ snapshots:
perfect-debounce: 2.1.0
sirv: 3.0.2
unplugin-utils: 0.3.1
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
- vite-dev-rpc: 1.1.0(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite-dev-rpc: 1.1.0(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
transitivePeerDependencies:
- supports-color
- vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
debug: 4.4.3(supports-color@10.2.2)
globrex: 0.1.2
tsconfck: 3.1.6(typescript@5.9.3)
optionalDependencies:
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
transitivePeerDependencies:
- supports-color
- typescript
- vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
+ vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)):
+ dependencies:
+ debug: 4.4.3(supports-color@10.2.2)
+ globrex: 0.1.2
+ tsconfck: 3.1.6(typescript@5.9.3)
+ optionalDependencies:
+ vite: 8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ vite@7.3.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
dependencies:
esbuild: 0.27.2
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
postcss: 8.5.6
- rollup: 4.59.0
+ rollup: 4.60.2
tinyglobby: 0.2.16
optionalDependencies:
'@types/node': 24.10.0
fsevents: 2.3.3
jiti: 2.6.1
- lightningcss: 1.30.2
+ lightningcss: 1.32.0
+ terser: 5.46.0
+ tsx: 4.21.0
+ yaml: 2.8.3
+
+ vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
+ dependencies:
+ lightningcss: 1.32.0
+ picomatch: 4.0.4
+ postcss: 8.5.12
+ rolldown: 1.0.0-rc.16
+ tinyglobby: 0.2.16
+ optionalDependencies:
+ '@types/node': 24.10.0
+ esbuild: 0.27.2
+ fsevents: 2.3.3
+ jiti: 2.6.1
+ terser: 5.46.0
+ tsx: 4.21.0
+ yaml: 2.8.3
+
+ vite@8.0.9(@types/node@24.10.0)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
+ dependencies:
+ lightningcss: 1.32.0
+ picomatch: 4.0.4
+ postcss: 8.5.12
+ rolldown: 1.0.0-rc.16
+ tinyglobby: 0.2.16
+ optionalDependencies:
+ '@types/node': 24.10.0
+ esbuild: 0.27.3
+ fsevents: 2.3.3
+ jiti: 2.6.1
terser: 5.46.0
tsx: 4.21.0
yaml: 2.8.3
- vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
+ vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3):
dependencies:
'@vitest/expect': 4.0.18
- '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
+ '@vitest/mocker': 4.0.18(vite@7.3.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3))
'@vitest/pretty-format': 4.0.18
'@vitest/runner': 4.0.18
'@vitest/snapshot': 4.0.18
@@ -19551,7 +19891,7 @@ snapshots:
tinyexec: 1.1.1
tinyglobby: 0.2.16
tinyrainbow: 3.1.0
- vite: 7.3.1(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
+ vite: 7.3.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
@@ -19703,7 +20043,7 @@ snapshots:
wrap-ansi@10.0.0:
dependencies:
ansi-styles: 6.2.3
- string-width: 8.2.0
+ string-width: 8.2.1
strip-ansi: 7.2.0
wrap-ansi@6.2.0:
diff --git a/scripts/binding-wasm.ts b/scripts/binding-wasm.ts
index 1c1738bdb96..5593947e488 100644
--- a/scripts/binding-wasm.ts
+++ b/scripts/binding-wasm.ts
@@ -1,7 +1,7 @@
import { type BuildConfig, copyFile, emptyDir, ensureDir } from './util.ts';
import { execa } from 'execa';
import { join } from 'node:path';
-import { rollup } from 'rollup';
+import { rolldown } from 'rolldown';
export async function buildWasmBinding(config: BuildConfig) {
const srcWasmDir = config.srcWasmDir;
@@ -39,7 +39,7 @@ export async function buildWasmBinding(config: BuildConfig) {
CARGO_PROFILE_RELEASE_OPT_LEVEL: 'z',
});
- const build = await rollup({
+ const build = await rolldown({
input: wasmJsBuildPath,
});
diff --git a/scripts/compiled-string-plugin.ts b/scripts/compiled-string-plugin.ts
index 12fffdf2710..412093cadf0 100644
--- a/scripts/compiled-string-plugin.ts
+++ b/scripts/compiled-string-plugin.ts
@@ -9,7 +9,6 @@ const isCompiledStringId = (id: string) => /[?&]compiled-string/.test(id);
*/
export function compiledStringPlugin(): Plugin {
let devServer: any;
- const originals = new Map();
return {
name: 'compiled-string-plugin',
@@ -26,25 +25,6 @@ export function compiledStringPlugin(): Plugin {
const cleanId = id.replace(/([?&])compiled-string/, '$1').replace(/[?&]$/, '');
const resolved = await this.resolve(cleanId, importer, { skipSelf: true });
if (resolved) {
- /**
- * Note: we load the code here instead of in the load hook to prevent a bug in Vite when
- * `rollupOptions.maxParallelFileOps=1`. See
- * https://github.com/vitejs/vite/issues/20775
- */
- let code: string | null;
- if (devServer) {
- // in dev mode, you need to use the dev server to transform the request
- const transformResult = await devServer.transformRequest(resolved.id);
- code = transformResult?.code;
- this.addWatchFile(resolved.id);
- } else {
- const loaded = await this.load({ id: resolved.id });
- code = loaded.code;
- }
- if (!code) {
- throw new Error(`compiled-string: Unable to load code for ${resolved.id}`);
- }
- originals.set(resolved.id, code);
return `virtual:compiled-string:${resolved.id}`;
}
} else if (id.startsWith('virtual:compiled-string:')) {
@@ -59,9 +39,18 @@ export function compiledStringPlugin(): Plugin {
async handler(id) {
if (id.startsWith('virtual:compiled-string:')) {
const originalId = id.slice('virtual:compiled-string:'.length);
- const code = originals.get(originalId);
+ let code: string | null | undefined;
+ if (devServer) {
+ // in dev mode, you need to use the dev server to transform the request
+ const transformResult = await devServer.transformRequest(originalId);
+ code = transformResult?.code;
+ this.addWatchFile(originalId);
+ } else {
+ const loaded = await this.load({ id: originalId, moduleSideEffects: true });
+ code = loaded.code;
+ }
if (!code) {
- throw new Error(`compiled-string: Unable to retrieve loaded code for ${originalId}`);
+ throw new Error(`compiled-string: Unable to load code for ${originalId}`);
}
const minified = await minify(code);
if (!minified.code) {
diff --git a/scripts/submodule-core.ts b/scripts/submodule-core.ts
index 6fb93336b5c..55cc69c7322 100644
--- a/scripts/submodule-core.ts
+++ b/scripts/submodule-core.ts
@@ -1,16 +1,8 @@
import { build, type BuildOptions } from 'esbuild';
import { join } from 'node:path';
-import { type InputOptions, type OutputOptions, rollup } from 'rollup';
+import { type InputOptions, type OutputOptions, rolldown } from 'rolldown';
import { minify } from 'terser';
-import {
- type BuildConfig,
- fileSize,
- getBanner,
- readFile,
- rollupOnWarn,
- target,
- writeFile,
-} from './util.ts';
+import { type BuildConfig, fileSize, getBanner, rollupOnWarn, target, writeFile } from './util.ts';
/**
* Regex for property names that should be mangled consistently across all bundles (core + server).
@@ -66,7 +58,7 @@ async function submoduleCoreProd(config: BuildConfig): Promise