diff --git a/docs/pages/docs/quickstart.md b/docs/pages/docs/quickstart.md index 0e1c619ed..c3e01a66d 100644 --- a/docs/pages/docs/quickstart.md +++ b/docs/pages/docs/quickstart.md @@ -10,7 +10,7 @@ have you up and running with a modern, customizable site that your developers wi ## Prerequisites -- **Node.js** `22.7.0+` (or `20.19+`) - [Download here](https://nodejs.org/) +- **Node.js** `22.12.0+` (or `20.19+`) - [Download here](https://nodejs.org/) - A terminal or command prompt - Your favorite code editor diff --git a/examples/with-vite-config/vite.config.ts b/examples/with-vite-config/vite.config.ts index 52c815d8f..ff0e9692e 100644 --- a/examples/with-vite-config/vite.config.ts +++ b/examples/with-vite-config/vite.config.ts @@ -3,7 +3,7 @@ import { visualizer } from "rollup-plugin-visualizer"; /** @type {import('vite').UserConfig} */ export default { build: { - rollupOptions: { + rolldownOptions: { plugins: [visualizer()], }, }, diff --git a/packages/zudoku/cli.js b/packages/zudoku/cli.js index 7da840b3c..67c457228 100755 --- a/packages/zudoku/cli.js +++ b/packages/zudoku/cli.js @@ -2,10 +2,10 @@ import semver from "semver"; -if (!semver.satisfies(process.version, ">=20.19.0 <21.0.0 || >=22.7.0")) { +if (!semver.satisfies(process.version, ">=20.19.0 <21.0.0 || >=22.12.0")) { // biome-ignore lint/suspicious/noConsole: Logging allowed here console.error( - `⚠️ Zudoku requires Node.js version >=20.19.0 or >=22.7.0. Your version: ${process.version}`, + `⚠️ Zudoku requires Node.js version >=20.19.0 or >=22.12.0. Your version: ${process.version}`, ); process.exit(1); } diff --git a/packages/zudoku/package.json b/packages/zudoku/package.json index 846929f94..86969cd2e 100644 --- a/packages/zudoku/package.json +++ b/packages/zudoku/package.json @@ -120,7 +120,7 @@ "@tanstack/react-query": "5.90.21", "@types/react": "catalog:", "@types/react-dom": "catalog:", - "@vitejs/plugin-react": "5.1.4", + "@vitejs/plugin-react": "6.0.0", "@x0k/json-schema-merge": "1.0.2", "@zudoku/httpsnippet": "10.0.9", "@zudoku/react-helmet-async": "2.0.5", @@ -176,7 +176,6 @@ "remark-frontmatter": "5.0.0", "remark-gfm": "4.0.1", "remark-mdx-frontmatter": "5.2.0", - "rollup": "4.59.0", "semver": "7.7.4", "shiki": "3.23.0", "sitemap": "9.0.1", @@ -188,7 +187,7 @@ "unist-util-visit": "5.1.0", "vaul": "1.1.2", "vfile": "6.0.3", - "vite": "7.3.1", + "vite": "8.0.0", "yaml": "2.8.2", "yargs": "18.0.0", "zod": "4.3.6", diff --git a/packages/zudoku/src/config/loader.ts b/packages/zudoku/src/config/loader.ts index 7ae4b5eac..d6ebef012 100644 --- a/packages/zudoku/src/config/loader.ts +++ b/packages/zudoku/src/config/loader.ts @@ -1,7 +1,6 @@ import { stat } from "node:fs/promises"; import path from "node:path"; import colors from "picocolors"; -import type { RollupOutput, RollupWatcher } from "rollup"; import { type ConfigEnv, runnerImport, @@ -106,23 +105,6 @@ async function loadZudokuConfigWithMeta( return configWithMetadata; } -export function findOutputPathOfServerConfig( - output: RollupOutput | RollupOutput[] | RollupWatcher, -) { - if (Array.isArray(output)) { - throw new Error("Expected a single output, but got an array"); - } - if ("output" in output) { - const result = output.output.find( - (o) => "isEntry" in o && o.isEntry && o.fileName === "zudoku.config.js", - ); - if (result) { - return result.fileName; - } - } - throw new Error("Could not find server config output file"); -} - function loadEnv(configEnv: ConfigEnv, rootDir: string) { const envPrefix = ["ZUPLO_PUBLIC_", "ZUDOKU_PUBLIC_"]; const localEnv = viteLoadEnv(configEnv.mode, rootDir, envPrefix); diff --git a/packages/zudoku/src/config/validators/icon-types.ts b/packages/zudoku/src/config/validators/icon-types.ts index ef4ce3b78..12710bc73 100644 --- a/packages/zudoku/src/config/validators/icon-types.ts +++ b/packages/zudoku/src/config/validators/icon-types.ts @@ -647,6 +647,7 @@ export const IconNames = [ "egg", "egg-fried", "egg-off", + "ellipse", "ellipsis", "ellipsis-vertical", "equal", @@ -763,6 +764,7 @@ export const IconNames = [ "fish-off", "fish-symbol", "fishing-hook", + "fishing-rod", "flag", "flag-off", "flag-triangle-left", @@ -1934,6 +1936,19 @@ export const IconNames = [ "youtube", "zap", "zap-off", + "zodiac-aquarius", + "zodiac-aries", + "zodiac-cancer", + "zodiac-capricorn", + "zodiac-gemini", + "zodiac-leo", + "zodiac-libra", + "zodiac-ophiuchus", + "zodiac-pisces", + "zodiac-sagittarius", + "zodiac-scorpio", + "zodiac-taurus", + "zodiac-virgo", "zoom-in", "zoom-out", ] as const; diff --git a/packages/zudoku/src/lib/authentication/errors.ts b/packages/zudoku/src/lib/authentication/errors.ts index b488f6453..0d6012443 100644 --- a/packages/zudoku/src/lib/authentication/errors.ts +++ b/packages/zudoku/src/lib/authentication/errors.ts @@ -3,12 +3,11 @@ import { ZudokuError, type ZudokuErrorOptions } from "../util/invariant.js"; export class AuthorizationError extends Error {} export class OAuthAuthorizationError extends ZudokuError { - constructor( - message: string, - public error?: unknown, - options?: ZudokuErrorOptions, - ) { + error: unknown; + + constructor(message: string, error?: unknown, options?: ZudokuErrorOptions) { super(message, options); + this.error = error; } } diff --git a/packages/zudoku/src/vite/build.ts b/packages/zudoku/src/vite/build.ts index 3fd8be665..bbe5fc845 100644 --- a/packages/zudoku/src/vite/build.ts +++ b/packages/zudoku/src/vite/build.ts @@ -1,14 +1,10 @@ import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises"; import path from "node:path"; import { build as esbuild } from "esbuild"; -import type { Rollup } from "vite"; -import { build as viteBuild } from "vite"; +import { createBuilder, type Rolldown } from "vite"; import { ZuploEnv } from "../app/env.js"; import { getZudokuRootDir } from "../cli/common/package-json.js"; -import { - findOutputPathOfServerConfig, - loadZudokuConfig, -} from "../config/loader.js"; +import { type ConfigWithMeta, loadZudokuConfig } from "../config/loader.js"; import { getIssuer } from "../lib/auth/issuer.js"; import invariant from "../lib/util/invariant.js"; import { joinUrl } from "../lib/util/joinUrl.js"; @@ -19,21 +15,6 @@ import { prerender } from "./prerender/prerender.js"; const DIST_DIR = "dist"; -const extractAssets = (result: Rollup.RollupOutput) => { - const jsEntry = result.output.find( - (o) => "isEntry" in o && o.isEntry, - )?.fileName; - const cssEntries = result.output - .filter((o) => o.fileName.endsWith(".css")) - .map((o) => o.fileName); - - if (!jsEntry || cssEntries.length === 0) { - throw new Error("Build failed. No js or css assets found"); - } - - return { jsEntry, cssEntries }; -}; - export type BuildOptions = { dir: string; ssr?: boolean; @@ -43,49 +24,63 @@ export type BuildOptions = { export async function runBuild(options: BuildOptions) { const { dir, ssr, adapter = "node" } = options; - // Build client and server bundles - const viteClientConfig = await getViteConfig(dir, { + const viteConfig = await getViteConfig(dir, { mode: "production", command: "build", }); - const viteServerConfig = await getViteConfig(dir, { - mode: "production", - command: "build", - isSsrBuild: true, - }); - const clientResult = await viteBuild(viteClientConfig); - const serverResult = await viteBuild({ - ...viteServerConfig, - logLevel: "silent", - }); + const builder = await createBuilder(viteConfig); - if (Array.isArray(clientResult) || !("output" in clientResult)) { - throw new Error("Client build failed"); - } - if (Array.isArray(serverResult) || !("output" in serverResult)) { - throw new Error("Server build failed"); - } + invariant(builder.environments.client, "Client environment is missing"); + invariant(builder.environments.ssr, "SSR environment is missing"); + + const distDir = path.resolve(path.join(dir, "dist")); + await rm(distDir, { recursive: true, force: true }); + + const [clientResult, serverResult] = await Promise.all([ + builder.build(builder.environments.client), + builder.build(builder.environments.ssr), + ]); + + invariant( + clientResult && !Array.isArray(clientResult) && "output" in clientResult, + "Client build failed to produce valid output", + ); + + invariant( + serverResult && !Array.isArray(serverResult) && "output" in serverResult, + "SSR build failed to produce valid output", + ); const { config } = await loadZudokuConfig( { mode: "production", command: "build" }, dir, ); - const { jsEntry, cssEntries } = extractAssets(clientResult); + const base = viteConfig.base ?? "/"; + const clientOutDir = viteConfig.environments?.client?.build?.outDir; + const serverOutDir = viteConfig.environments?.ssr?.build?.outDir; + + invariant(clientOutDir, "Client build outDir is missing"); + invariant(serverOutDir, "Server build outDir is missing"); + + const jsEntry = clientResult.output.find( + (o) => "isEntry" in o && o.isEntry, + )?.fileName; + const cssEntries = clientResult.output + .filter((o) => o.fileName.endsWith(".css")) + .map((o) => o.fileName); + + if (!jsEntry || cssEntries.length === 0) { + throw new Error("Build failed. No js or css assets found"); + } const html = getBuildHtml({ - jsEntry: joinUrl(viteClientConfig.base, jsEntry), - cssEntries: cssEntries.map((css) => joinUrl(viteClientConfig.base, css)), + jsEntry: joinUrl(base, jsEntry), + cssEntries: cssEntries.map((css) => joinUrl(base, css)), dir: config.site?.dir, }); - invariant(viteClientConfig.build?.outDir, "Client build outDir is missing"); - invariant(viteServerConfig.build?.outDir, "Server build outDir is missing"); - - const clientOutDir = viteClientConfig.build.outDir; - const serverOutDir = viteServerConfig.build.outDir; - if (ssr) { // SSR: bundle entry.js and remove index.html await bundleSSREntry({ @@ -111,18 +106,27 @@ export async function runBuild(options: BuildOptions) { type PrerenderOptions = { dir: string; - config: Awaited>["config"]; + config: ConfigWithMeta; html: string; clientOutDir: string; serverOutDir: string; - serverResult: Rollup.RollupOutput; + serverResult: Rolldown.RolldownOutput; +}; + +const findServerConfigFilename = (result: Rolldown.RolldownOutput) => { + const entry = result.output.find( + (o) => o.type === "chunk" && o.isEntry && o.fileName === "zudoku.config.js", + ); + invariant(entry, "Could not find zudoku.config entry in server build output"); + + return entry.fileName; }; const runPrerender = async (options: PrerenderOptions) => { const { dir, config, html, clientOutDir, serverOutDir, serverResult } = options; const issuer = await getIssuer(config); - const serverConfigFilename = findOutputPathOfServerConfig(serverResult); + const serverConfigFilename = findServerConfigFilename(serverResult); try { const { workerResults, rewrites } = await prerender({ diff --git a/packages/zudoku/src/vite/config.ts b/packages/zudoku/src/vite/config.ts index 748f13f7e..5fe867e9a 100644 --- a/packages/zudoku/src/vite/config.ts +++ b/packages/zudoku/src/vite/config.ts @@ -134,29 +134,44 @@ export async function getViteConfig( }, }, build: { - ssr: configEnv.isSsrBuild, sourcemap: true, target: "es2022", - outDir: path.resolve( - path.join( - dir, - "dist", - config.basePath ?? "", - configEnv.isSsrBuild ? "server" : "", - ), - ), - emptyOutDir: true, - rollupOptions: { - input: - configEnv.command === "build" - ? configEnv.isSsrBuild - ? ["zudoku/app/entry.server.tsx", config.__meta.configPath] - : "zudoku/app/entry.client.tsx" - : undefined, - external: [joinUrl(config.basePath, "/pagefind/pagefind.js")], - }, chunkSizeWarningLimit: 1500, }, + environments: { + client: { + build: { + outDir: path.resolve(path.join(dir, "dist", config.basePath ?? "")), + emptyOutDir: false, + rolldownOptions: { + input: + configEnv.command === "build" + ? "zudoku/app/entry.client.tsx" + : undefined, + external: [joinUrl(config.basePath, "/pagefind/pagefind.js")], + }, + }, + }, + ssr: { + build: { + outDir: path.resolve( + path.join(dir, "dist", config.basePath ?? "", "server"), + ), + emptyOutDir: false, + rolldownOptions: { + logLevel: "warn", + checks: { + pluginTimings: process.env.ZUDOKU_ENV === "internal", + }, + input: + configEnv.command === "build" + ? ["zudoku/app/entry.server.tsx", config.__meta.configPath] + : undefined, + external: [joinUrl(config.basePath, "/pagefind/pagefind.js")], + }, + }, + }, + }, experimental: { renderBuiltUrl(filename) { if (cdnUrl?.base && [".js", ".css"].includes(path.extname(filename))) { @@ -171,12 +186,10 @@ export async function getViteConfig( }, }, optimizeDeps: { - esbuildOptions: { - target: "es2022", - }, entries: [path.posix.join(getZudokuRootDir(), "src/{app,lib}/**")], exclude: ["zudoku"], include: [ + "@mdx-js/react", "react-dom/client", "zudoku/icons", ...(process.env.SENTRY_DSN ? ["@sentry/react"] : []), @@ -195,6 +208,8 @@ export async function getViteConfig( removePluginHookHandleHotUpdate: "warn", removePluginHookSsrArgument: "warn", removeServerHot: "warn", + removeServerPluginContainer: "warn", + removeServerReloadModule: "warn", }, }; diff --git a/packages/zudoku/src/vite/dev-server.ts b/packages/zudoku/src/vite/dev-server.ts index ed24f376c..afeab5cba 100644 --- a/packages/zudoku/src/vite/dev-server.ts +++ b/packages/zudoku/src/vite/dev-server.ts @@ -29,25 +29,28 @@ const DEFAULT_DEV_PORT = 3000; type EntryServerImport = typeof import("../app/entry.server.js"); +type DevServerOptions = { + dir: string; + ssr?: boolean; + open?: boolean; + argPort?: number; +}; + export class DevServer { - private terminator: HttpTerminator | undefined; - public resolvedPort = 0; - public protocol = "http"; - - constructor( - private options: { - dir: string; - ssr?: boolean; - open?: boolean; - argPort?: number; - }, - ) {} + resolvedPort = 0; + protocol = "http"; + #terminator: HttpTerminator | undefined; + #options: DevServerOptions; + + constructor(options: DevServerOptions) { + this.#options = options; + } private async createNodeServer(config: LoadedConfig): Promise { if (!config.https) return http.createServer(); this.protocol = "https"; - const { dir } = this.options; + const { dir } = this.#options; const [key, cert, ca] = await Promise.all([ fs.readFile(path.resolve(dir, config.https.key)), @@ -64,13 +67,12 @@ export class DevServer { const configEnv: ZudokuConfigEnv = { mode: "development", command: "serve", - isSsrBuild: this.options.ssr, }; - const viteConfig = await getViteConfig(this.options.dir, configEnv); - const { config } = await loadZudokuConfig(configEnv, this.options.dir); + const viteConfig = await getViteConfig(this.#options.dir, configEnv); + const { config } = await loadZudokuConfig(configEnv, this.#options.dir); this.resolvedPort = await findAvailablePort( - this.options.argPort ?? config.port ?? DEFAULT_DEV_PORT, + this.#options.argPort ?? config.port ?? DEFAULT_DEV_PORT, ); const server = await this.createNodeServer(config); @@ -139,7 +141,7 @@ export class DevServer { const { config: currentConfig } = await loadZudokuConfig( configEnv, - this.options.dir, + this.#options.dir, ); const sendEvent = (data: unknown) => @@ -176,7 +178,7 @@ export class DevServer { }); printDiagnosticsToConsole( - `Server-side rendering ${this.options.ssr ? "enabled" : "disabled"}`, + `Server-side rendering ${this.#options.ssr ? "enabled" : "disabled"}`, ); if (config.search?.type === "pagefind") { @@ -204,7 +206,7 @@ export class DevServer { try { const { config: currentConfig } = await loadZudokuConfig( configEnv, - this.options.dir, + this.#options.dir, ); const rawHtml = getDevHtml({ jsEntry: "/__z/entry.client.tsx", @@ -212,7 +214,7 @@ export class DevServer { }); const template = await vite.transformIndexHtml(url, rawHtml); - if (this.options.ssr) { + if (this.#options.ssr) { const entryServer = await ssrEnvironment.runner.import( getAppServerEntryPath(), @@ -271,9 +273,9 @@ export class DevServer { server.listen(this.resolvedPort, resolve); }); - this.terminator = createHttpTerminator({ server }); + this.#terminator = createHttpTerminator({ server }); - if (this.options.open || process.env.ZUDOKU_OPEN_BROWSER) { + if (this.#options.open || process.env.ZUDOKU_OPEN_BROWSER) { const url = `${this.protocol}://localhost:${this.resolvedPort}`; vite.resolvedUrls = { local: [`${url}${vite.config.base || "/"}`], @@ -286,6 +288,6 @@ export class DevServer { } async stop() { - await this.terminator?.terminate(); + await this.#terminator?.terminate(); } } diff --git a/packages/zudoku/src/vite/plugin-api.ts b/packages/zudoku/src/vite/plugin-api.ts index c49f1433b..94b3e66bd 100644 --- a/packages/zudoku/src/vite/plugin-api.ts +++ b/packages/zudoku/src/vite/plugin-api.ts @@ -48,14 +48,13 @@ const viteApiPlugin = async (): Promise => { processors, }); + await fs.rm(tmpStoreDir, { recursive: true, force: true }); + await fs.mkdir(tmpStoreDir, { recursive: true }); + await schemaManager.processAllSchemas(); + return { name: "zudoku-api-plugins", async buildStart() { - await fs.rm(tmpStoreDir, { recursive: true, force: true }); - await fs.mkdir(tmpStoreDir, { recursive: true }); - - await schemaManager.processAllSchemas(); - schemaManager .getAllTrackedFiles() .forEach((file) => this.addWatchFile(file)); diff --git a/packages/zudoku/src/vite/plugin-metadata.ts b/packages/zudoku/src/vite/plugin-metadata.ts index 4790ff1e5..54a98540a 100644 --- a/packages/zudoku/src/vite/plugin-metadata.ts +++ b/packages/zudoku/src/vite/plugin-metadata.ts @@ -12,7 +12,7 @@ const viteBuildMetadata = (): Plugin => { const deps = []; for (const id of this.getModuleIds()) { const m = this.getModuleInfo(id); - if (m != null && !m.isExternal) { + if (m != null) { for (const target of m.importedIds) { deps.push({ source: m.id, target }); } diff --git a/packages/zudoku/src/vite/plugin-shiki-register.ts b/packages/zudoku/src/vite/plugin-shiki.ts similarity index 73% rename from packages/zudoku/src/vite/plugin-shiki-register.ts rename to packages/zudoku/src/vite/plugin-shiki.ts index 6f725748a..149d10f6d 100644 --- a/packages/zudoku/src/vite/plugin-shiki-register.ts +++ b/packages/zudoku/src/vite/plugin-shiki.ts @@ -5,20 +5,20 @@ import { getCurrentConfig } from "../config/loader.js"; import { defaultLanguages } from "../lib/shiki-constants.js"; import { defaultHighlightOptions, highlighterPromise } from "../lib/shiki.js"; -const aliasToId = new Map( - bundledLanguagesInfo.flatMap((lang) => - (lang.aliases ?? []).map((alias) => [alias, lang.id]), - ), -); - -// Resolve either an alias or the original language id -const resolveLang = (lang: BundledLanguage): string => - aliasToId.get(lang) ?? lang; - -export const viteShikiRegisterPlugin = (): Plugin => { +export const viteShikiPlugin = (): Plugin => { const virtualModuleId = "virtual:zudoku-shiki-register"; const resolvedVirtualModuleId = `\0${virtualModuleId}`; + const aliasToId = new Map( + bundledLanguagesInfo.flatMap((lang) => + (lang.aliases ?? []).map((alias) => [alias, lang.id]), + ), + ); + + // Resolve either an alias or the original language id + const resolveLang = (lang: BundledLanguage): string => + aliasToId.get(lang) ?? lang; + return { name: "vite-plugin-shiki-register", config() { @@ -29,22 +29,19 @@ export const viteShikiRegisterPlugin = (): Plugin => { config.syntaxHighlighting?.themes ?? defaultHighlightOptions.themes, ); + const shikiIds = [ + ...languages.map((lang) => `@shikijs/langs/${resolveLang(lang)}`), + ...themes.map((theme) => `@shikijs/themes/${theme}`), + ]; + return { resolve: { - alias: [ - { - find: /^@shikijs\/(langs|themes)\/.+$/, - replacement: "$&", - customResolver: (id) => fileURLToPath(import.meta.resolve(id)), - }, - ], - }, - optimizeDeps: { - include: [ - ...languages.map((lang) => `@shikijs/langs/${resolveLang(lang)}`), - ...themes.map((theme) => `@shikijs/themes/${theme}`), - ], + alias: shikiIds.map((id) => ({ + find: id, + replacement: fileURLToPath(import.meta.resolve(id)), + })), }, + optimizeDeps: { include: shikiIds }, }; }, resolveId(id) { diff --git a/packages/zudoku/src/vite/plugin-theme.test.ts b/packages/zudoku/src/vite/plugin-theme.test.ts index 9018af9ca..3cdebfc33 100644 --- a/packages/zudoku/src/vite/plugin-theme.test.ts +++ b/packages/zudoku/src/vite/plugin-theme.test.ts @@ -1,4 +1,3 @@ -import type { PluginContext, TransformPluginContext } from "rollup"; import type { Plugin } from "vite"; import { describe, expect, it, vi } from "vitest"; import type { ConfigWithMeta } from "../config/loader.js"; @@ -11,14 +10,16 @@ const callPluginLoad = async (plugin: Plugin, id: string) => { // biome-ignore lint/style/noNonNullAssertion: is guaranteed to be defined const hook = plugin.load!; const loadFn = typeof hook === "function" ? hook : hook.handler; - return loadFn.call({} as PluginContext, id); + // biome-ignore lint/suspicious/noExplicitAny: Allow any type + return loadFn.call({} as any, id); }; const callPluginTransform = async (plugin: Plugin, src: string, id: string) => { // biome-ignore lint/style/noNonNullAssertion: is guaranteed to be defined const hook = plugin.transform!; const transformFn = typeof hook === "function" ? hook : hook.handler; - return transformFn.call({} as TransformPluginContext, src, id); + // biome-ignore lint/suspicious/noExplicitAny: Allow any type + return transformFn.call({} as any, src, id); }; describe("plugin-theme", () => { diff --git a/packages/zudoku/src/vite/plugin.ts b/packages/zudoku/src/vite/plugin.ts index add4aebe4..605d7bb84 100644 --- a/packages/zudoku/src/vite/plugin.ts +++ b/packages/zudoku/src/vite/plugin.ts @@ -16,12 +16,12 @@ import viteMdxPlugin from "./plugin-mdx.js"; import { viteNavigationPlugin } from "./plugin-navigation.js"; import viteRedirectPlugin from "./plugin-redirect.js"; import { viteSearchPlugin } from "./plugin-search.js"; -import { viteShikiRegisterPlugin } from "./plugin-shiki-register.js"; +import { viteShikiPlugin } from "./plugin-shiki.js"; import { viteThemePlugin } from "./plugin-theme.js"; export default function vitePlugin(): PluginOption { return [ - viteShikiRegisterPlugin(), + viteShikiPlugin(), viteConfigReloadPlugin(), viteMdxPlugin(), react({ include: /\.(mdx?|jsx?|tsx?)$/ }), diff --git a/packages/zudoku/src/vite/prerender/prerender.ts b/packages/zudoku/src/vite/prerender/prerender.ts index 2393ead95..30f29d550 100644 --- a/packages/zudoku/src/vite/prerender/prerender.ts +++ b/packages/zudoku/src/vite/prerender/prerender.ts @@ -113,6 +113,7 @@ export const prerender = async ({ filename: new URL("./worker.js", import.meta.url).href, idleTimeout: 5_000, maxThreads, + execArgv: ["--no-deprecation"], workerData: { template: html, distDir, diff --git a/packages/zudoku/tsconfig.app.json b/packages/zudoku/tsconfig.app.json index 548a1b41f..9aa1c782f 100644 --- a/packages/zudoku/tsconfig.app.json +++ b/packages/zudoku/tsconfig.app.json @@ -17,6 +17,7 @@ "skipLibCheck": true, "skipDefaultLibCheck": true, "isolatedModules": true, + "erasableSyntaxOnly": true, "jsx": "react-jsx", "types": ["vite/client", "@testing-library/jest-dom", "vitest/globals"], "paths": { diff --git a/packages/zudoku/tsconfig.node.json b/packages/zudoku/tsconfig.node.json index 024df03b9..c1839b7ea 100644 --- a/packages/zudoku/tsconfig.node.json +++ b/packages/zudoku/tsconfig.node.json @@ -7,7 +7,8 @@ "moduleResolution": "bundler", "esModuleInterop": true, "noEmit": true, - "resolveJsonModule": true + "resolveJsonModule": true, + "erasableSyntaxOnly": true }, "include": ["scripts", "lucide-react.d.ts"], "exclude": ["node_modules"] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46fed4551..099edda29 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,7 +68,7 @@ importers: version: 2.4.6 '@nx/vite': specifier: 22.5.4 - version: 22.5.4(@babel/traverse@7.29.0)(nx@22.5.4)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 22.5.4(@babel/traverse@7.29.0)(nx@22.5.4)(typescript@5.9.3)(vite@8.0.0(@types/node@25.3.5)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) '@nx/web': specifier: 22.5.4 version: 22.5.4(@babel/traverse@7.29.0)(nx@22.5.4) @@ -77,7 +77,7 @@ importers: version: 12.0.1(size-limit@12.0.1(jiti@2.6.1)) '@vitest/coverage-v8': specifier: 4.0.18 - version: 4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) lefthook: specifier: 2.1.2 version: 2.1.2 @@ -95,13 +95,13 @@ importers: version: 5.9.3 vitest: specifier: 4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) docs: dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': specifier: ^0.6.4 - version: 0.6.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 0.6.4(typescript@5.9.3)(vite@8.0.0(@types/node@25.3.5)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) mermaid: specifier: ^11.12.2 version: 11.12.2 @@ -331,7 +331,7 @@ importers: version: 19.2.4(react@19.2.4) rollup-plugin-visualizer: specifier: 6.0.5 - version: 6.0.5(rolldown@1.0.0-rc.3)(rollup@4.59.0) + version: 6.0.5(rolldown@1.0.0-rc.9)(rollup@4.59.0) zudoku: specifier: workspace:* version: link:../../packages/zudoku @@ -644,7 +644,7 @@ importers: version: 0.5.19(tailwindcss@4.2.1) '@tailwindcss/vite': specifier: 4.2.1 - version: 4.2.1(vite@7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.2.1(vite@8.0.0(@types/node@22.19.1)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) '@tanem/react-nprogress': specifier: 5.0.63 version: 5.0.63(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -658,8 +658,8 @@ importers: specifier: 'catalog:' version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: 5.1.4 - version: 5.1.4(vite@7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 6.0.0 + version: 6.0.0(vite@8.0.0(@types/node@22.19.1)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) '@x0k/json-schema-merge': specifier: 1.0.2 version: 1.0.2 @@ -831,9 +831,6 @@ importers: remark-mdx-frontmatter: specifier: 5.2.0 version: 5.2.0 - rollup: - specifier: 4.59.0 - version: 4.59.0 semver: specifier: 7.7.4 version: 7.7.4 @@ -868,8 +865,8 @@ importers: specifier: 6.0.3 version: 6.0.3 vite: - specifier: 7.3.1 - version: 7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 8.0.0 + version: 8.0.0(@types/node@22.19.1)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) yaml: specifier: 2.8.2 version: 2.8.2 @@ -939,7 +936,7 @@ importers: version: 17.0.35 '@vitest/coverage-v8': specifier: 4.0.18 - version: 4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) esbuild: specifier: 0.27.3 version: 0.27.3 @@ -1577,18 +1574,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.29.0': resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==} engines: {node: '>=6.9.0'} @@ -3541,9 +3526,16 @@ packages: peerDependencies: '@opentelemetry/api': ^1.1.0 + '@oxc-project/runtime@0.115.0': + resolution: {integrity: sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==} + engines: {node: ^20.19.0 || >=22.12.0} + '@oxc-project/types@0.112.0': resolution: {integrity: sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ==} + '@oxc-project/types@0.115.0': + resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} + '@oxfmt/binding-android-arm-eabi@0.36.0': resolution: {integrity: sha512-Z4yVHJWx/swHHjtr0dXrBZb6LxS+qNz1qdza222mWwPTUK4L790+5i3LTgjx3KYGBzcYpjaiZBw4vOx94dH7MQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4474,30 +4466,60 @@ packages: cpu: [arm64] os: [android] + '@rolldown/binding-android-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@rolldown/binding-darwin-arm64@1.0.0-rc.3': resolution: {integrity: sha512-JWWLzvcmc/3pe7qdJqPpuPk91SoE/N+f3PcWx/6ZwuyDVyungAEJPvKm/eEldiDdwTmaEzWfIR+HORxYWrCi1A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-rc.3': resolution: {integrity: sha512-MTakBxfx3tde5WSmbHxuqlDsIW0EzQym+PJYGF4P6lG2NmKzi128OGynoFUqoD5ryCySEY85dug4v+LWGBElIw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-rc.9': + resolution: {integrity: sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@rolldown/binding-freebsd-x64@1.0.0-rc.3': resolution: {integrity: sha512-jje3oopyOLs7IwfvXoS6Lxnmie5JJO7vW29fdGFu5YGY1EDbVDhD+P9vDihqS5X6fFiqL3ZQZCMBg6jyHkSVww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + resolution: {integrity: sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.3': resolution: {integrity: sha512-A0n8P3hdLAaqzSFrQoA42p23ZKBYQOw+8EH5r15Sa9X1kD9/JXe0YT2gph2QTWvdr0CVK2BOXiK6ENfy6DXOag==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + resolution: {integrity: sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.3': resolution: {integrity: sha512-kWXkoxxarYISBJ4bLNf5vFkEbb4JvccOwxWDxuK9yee8lg5XA7OpvlTptfRuwEvYcOZf+7VS69Uenpmpyo5Bjw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4505,6 +4527,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.3': resolution: {integrity: sha512-Z03/wrqau9Bicfgb3Dbs6SYTHliELk2PM2LpG2nFd+cGupTMF5kanLEcj2vuuJLLhptNyS61rtk7SOZ+lPsTUA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4512,6 +4541,27 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.3': resolution: {integrity: sha512-iSXXZsQp08CSilff/DCTFZHSVEpEwdicV3W8idHyrByrcsRDVh9sGC3sev6d8BygSGj3vt8GvUKBPCoyMA4tgQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4519,6 +4569,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-musl@1.0.0-rc.3': resolution: {integrity: sha512-qaj+MFudtdCv9xZo9znFvkgoajLdc+vwf0Kz5N44g+LU5XMe+IsACgn3UG7uTRlCCvhMAGXm1XlpEA5bZBrOcw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4526,32 +4583,68 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.3': resolution: {integrity: sha512-U662UnMETyjT65gFmG9ma+XziENrs7BBnENi/27swZPYagubfHRirXHG2oMl+pEax2WvO7Kb9gHZmMakpYqBHQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.3': resolution: {integrity: sha512-gekrQ3Q2HiC1T5njGyuUJoGpK/l6B/TNXKed3fZXNf9YRTJn3L5MOZsFBn4bN2+UX+8+7hgdlTcEsexX988G4g==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + resolution: {integrity: sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.3': resolution: {integrity: sha512-85y5JifyMgs8m5K2XzR/VDsapKbiFiohl7s5lEj7nmNGO0pkTXE7q6TQScei96BNAsoK7JC3pA7ukA8WRHVJpg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.3': resolution: {integrity: sha512-a4VUQZH7LxGbUJ3qJ/TzQG8HxdHvf+jOnqf7B7oFx1TEBm+j2KNL2zr5SQ7wHkNAcaPevF6gf9tQnVBnC4mD+A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-rc.3': resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rolldown/pluginutils@1.0.0-rc.7': + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + + '@rolldown/pluginutils@1.0.0-rc.9': + resolution: {integrity: sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==} + '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -5475,11 +5568,18 @@ packages: resolution: {integrity: sha512-8LwjnlP39s08C08J5NstzriPvW1SP8Zfpp1BvC2sI35kPeZnHfxVkCwu4/+Wodgnd60UtT1n8K8zw+Mp7J9JmQ==} hasBin: true - '@vitejs/plugin-react@5.1.4': - resolution: {integrity: sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==} + '@vitejs/plugin-react@6.0.0': + resolution: {integrity: sha512-Bu5/eP6td3WI654+tRq+ryW1PbgA90y5pqMKpb3U7UpNk6VjI53P/ncPUd192U9dSrepLy7DHnq1XEMDz5H++w==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@rolldown/plugin-babel': ^0.1.7 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true '@vitest/coverage-v8@4.0.18': resolution: {integrity: sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==} @@ -7661,30 +7761,60 @@ packages: cpu: [arm64] os: [android] + 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.31.1: resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] + 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.31.1: resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] + 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.31.1: resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] + 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.31.1: resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] + 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.31.1: resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} engines: {node: '>= 12.0.0'} @@ -7692,6 +7822,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + lightningcss-linux-arm64-musl@1.31.1: resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} @@ -7699,6 +7836,13 @@ packages: os: [linux] libc: [musl] + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + lightningcss-linux-x64-gnu@1.31.1: resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} @@ -7706,6 +7850,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + lightningcss-linux-x64-musl@1.31.1: resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} @@ -7713,22 +7864,45 @@ packages: os: [linux] libc: [musl] + 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] + libc: [musl] + lightningcss-win32-arm64-msvc@1.31.1: resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] + 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.31.1: resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + lightningcss@1.31.1: resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -8597,6 +8771,10 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -8762,10 +8940,6 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-refresh@0.18.0: - resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} - engines: {node: '>=0.10.0'} - react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} @@ -9026,6 +9200,11 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + rolldown@1.0.0-rc.9: + resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup-plugin-visualizer@6.0.5: resolution: {integrity: sha512-9+HlNgKCVbJDs8tVtjQ43US12eqaiHyyiLMdBwQ7vSZPiHMysGNo2E88TAp1si5wx8NAoYriI2A5kuKfIakmJg==} engines: {node: '>=18'} @@ -9774,6 +9953,49 @@ packages: yaml: optional: true + vite@8.0.0: + resolution: {integrity: sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.0.0-alpha.31 + esbuild: ^0.27.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} @@ -10793,16 +11015,6 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12908,11 +13120,11 @@ snapshots: '@types/yargs': 17.0.35 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.9.3)(vite@8.0.0(@types/node@25.3.5)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@5.9.3) - vite: 7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.0(@types/node@25.3.5)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: typescript: 5.9.3 @@ -13183,11 +13395,11 @@ snapshots: '@nx/nx-win32-x64-msvc@22.5.4': optional: true - '@nx/vite@22.5.4(@babel/traverse@7.29.0)(nx@22.5.4)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@nx/vite@22.5.4(@babel/traverse@7.29.0)(nx@22.5.4)(typescript@5.9.3)(vite@8.0.0(@types/node@25.3.5)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@nx/devkit': 22.5.4(nx@22.5.4) '@nx/js': 22.5.4(@babel/traverse@7.29.0)(nx@22.5.4) - '@nx/vitest': 22.5.4(@babel/traverse@7.29.0)(nx@22.5.4)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@nx/vitest': 22.5.4(@babel/traverse@7.29.0)(nx@22.5.4)(typescript@5.9.3)(vite@8.0.0(@types/node@25.3.5)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) '@phenomnomnominal/tsquery': 6.1.4(typescript@5.9.3) ajv: 8.18.0 enquirer: 2.3.6 @@ -13195,8 +13407,8 @@ snapshots: semver: 7.7.4 tsconfig-paths: 4.2.0 tslib: 2.8.1 - vite: 7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.0(@types/node@25.3.5)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -13207,7 +13419,7 @@ snapshots: - typescript - verdaccio - '@nx/vitest@22.5.4(@babel/traverse@7.29.0)(nx@22.5.4)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@nx/vitest@22.5.4(@babel/traverse@7.29.0)(nx@22.5.4)(typescript@5.9.3)(vite@8.0.0(@types/node@25.3.5)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@nx/devkit': 22.5.4(nx@22.5.4) '@nx/js': 22.5.4(@babel/traverse@7.29.0)(nx@22.5.4) @@ -13215,8 +13427,8 @@ snapshots: semver: 7.7.4 tslib: 2.8.1 optionalDependencies: - vite: 7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.0(@types/node@25.3.5)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -13528,8 +13740,12 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.6.0(@opentelemetry/api@1.9.0) + '@oxc-project/runtime@0.115.0': {} + '@oxc-project/types@0.112.0': {} + '@oxc-project/types@0.115.0': {} + '@oxfmt/binding-android-arm-eabi@0.36.0': optional: true @@ -14446,46 +14662,97 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-rc.3': optional: true + '@rolldown/binding-android-arm64@1.0.0-rc.9': + optional: true + '@rolldown/binding-darwin-arm64@1.0.0-rc.3': optional: true + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.3': optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.9': + optional: true + '@rolldown/binding-freebsd-x64@1.0.0-rc.3': optional: true + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.3': optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.3': optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.3': optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.3': optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-rc.3': optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-rc.3': optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-rc.3': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.3': optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.3': optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + optional: true + '@rolldown/pluginutils@1.0.0-rc.3': {} + '@rolldown/pluginutils@1.0.0-rc.7': {} + + '@rolldown/pluginutils@1.0.0-rc.9': {} + '@rollup/pluginutils@5.1.0(rollup@4.59.0)': dependencies: '@types/estree': 1.0.8 @@ -15314,12 +15581,12 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 4.2.1 - '@tailwindcss/vite@4.2.1(vite@7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@tailwindcss/vite@4.2.1(vite@8.0.0(@types/node@22.19.1)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@tailwindcss/node': 4.2.1 '@tailwindcss/oxide': 4.2.1 tailwindcss: 4.2.1 - vite: 7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.0(@types/node@22.19.1)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) '@tanem/react-nprogress@5.0.63(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: @@ -15705,19 +15972,12 @@ snapshots: '@vercel/ncc@0.38.4': {} - '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@6.0.0(vite@8.0.0(@types/node@22.19.1)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-rc.3 - '@types/babel__core': 7.20.5 - react-refresh: 0.18.0 - vite: 7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color + '@rolldown/pluginutils': 1.0.0-rc.7 + vite: 8.0.0(@types/node@22.19.1)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.18 @@ -15729,9 +15989,9 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/coverage-v8@4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.0.18(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.18 @@ -15743,7 +16003,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) '@vitest/expect@4.0.18': dependencies: @@ -15754,21 +16014,21 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.0.18': dependencies: @@ -18202,36 +18462,69 @@ snapshots: lightningcss-android-arm64@1.31.1: optional: true + lightningcss-android-arm64@1.32.0: + optional: true + lightningcss-darwin-arm64@1.31.1: optional: true + lightningcss-darwin-arm64@1.32.0: + optional: true + lightningcss-darwin-x64@1.31.1: optional: true + lightningcss-darwin-x64@1.32.0: + optional: true + lightningcss-freebsd-x64@1.31.1: optional: true + lightningcss-freebsd-x64@1.32.0: + optional: true + lightningcss-linux-arm-gnueabihf@1.31.1: optional: true + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + lightningcss-linux-arm64-gnu@1.31.1: optional: true + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + lightningcss-linux-arm64-musl@1.31.1: optional: true + lightningcss-linux-arm64-musl@1.32.0: + optional: true + lightningcss-linux-x64-gnu@1.31.1: optional: true + lightningcss-linux-x64-gnu@1.32.0: + optional: true + lightningcss-linux-x64-musl@1.31.1: optional: true + lightningcss-linux-x64-musl@1.32.0: + optional: true + lightningcss-win32-arm64-msvc@1.31.1: optional: true + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + lightningcss-win32-x64-msvc@1.31.1: optional: true + lightningcss-win32-x64-msvc@1.32.0: + optional: true + lightningcss@1.31.1: dependencies: detect-libc: 2.1.2 @@ -18248,6 +18541,22 @@ snapshots: lightningcss-win32-arm64-msvc: 1.31.1 lightningcss-win32-x64-msvc: 1.31.1 + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + 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 + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} @@ -19719,6 +20028,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.8: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postgres-array@2.0.0: {} postgres-bytea@1.0.1: {} @@ -19993,8 +20308,6 @@ snapshots: react-refresh@0.14.2: {} - react-refresh@0.18.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4): dependencies: react: 19.2.4 @@ -20351,14 +20664,35 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.3 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.3 - rollup-plugin-visualizer@6.0.5(rolldown@1.0.0-rc.3)(rollup@4.59.0): + rolldown@1.0.0-rc.9: + dependencies: + '@oxc-project/types': 0.115.0 + '@rolldown/pluginutils': 1.0.0-rc.9 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-x64': 1.0.0-rc.9 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.9 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.9 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.9 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.9 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.9 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.9 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.9 + + rollup-plugin-visualizer@6.0.5(rolldown@1.0.0-rc.9)(rollup@4.59.0): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: - rolldown: 1.0.0-rc.3 + rolldown: 1.0.0-rc.9 rollup: 4.59.0 rollup@4.59.0: @@ -21113,7 +21447,7 @@ snapshots: - utf-8-validate - zod - vite@7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) @@ -21125,12 +21459,12 @@ snapshots: '@types/node': 22.19.1 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.31.1 + lightningcss: 1.32.0 terser: 5.46.0 tsx: 4.21.0 yaml: 2.8.2 - vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) @@ -21142,15 +21476,49 @@ snapshots: '@types/node': 25.3.5 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.31.1 + lightningcss: 1.32.0 + terser: 5.46.0 + tsx: 4.21.0 + yaml: 2.8.2 + + vite@8.0.0(@types/node@22.19.1)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + '@oxc-project/runtime': 0.115.0 + lightningcss: 1.32.0 + picomatch: 4.0.3 + postcss: 8.5.8 + rolldown: 1.0.0-rc.9 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 22.19.1 + esbuild: 0.27.3 + fsevents: 2.3.3 + jiti: 2.6.1 + terser: 5.46.0 + tsx: 4.21.0 + yaml: 2.8.2 + + vite@8.0.0(@types/node@25.3.5)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + '@oxc-project/runtime': 0.115.0 + lightningcss: 1.32.0 + picomatch: 4.0.3 + postcss: 8.5.8 + rolldown: 1.0.0-rc.9 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.3.5 + esbuild: 0.27.3 + fsevents: 2.3.3 + jiti: 2.6.1 terser: 5.46.0 tsx: 4.21.0 yaml: 2.8.2 - vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.18 '@vitest/runner': 4.0.18 '@vitest/snapshot': 4.0.18 @@ -21167,7 +21535,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -21186,10 +21554,10 @@ snapshots: - tsx - yaml - vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.5)(happy-dom@20.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.18 '@vitest/runner': 4.0.18 '@vitest/snapshot': 4.0.18 @@ -21206,7 +21574,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.3.5)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 4d76df44c..35b0f1181 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -24,15 +24,11 @@ minimumReleaseAge: 4320 minimumReleaseAgeExclude: - zudoku - - glob - - pagefind - - "@pagefind/*" - - oxfmt - - "@oxfmt/*" - - tailwind-merge - - tailwindcss - - "@tailwindcss/*" - - lucide-react + - vite + - rolldown + - "@vitejs/plugin-react" + - "@oxc-project/*" + - "@rolldown/*" onlyBuiltDependencies: - esbuild