From 16c8563c97433e5fc0beb0eb7ac14befdef0edb5 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Mon, 6 Apr 2026 14:03:36 +0100 Subject: [PATCH 01/37] Add Vite build config scaffolding alongside webpack Introduce Vite configuration files for building the server and all client bundles (web, apps, editionsCrossword) as the first phase of migrating from webpack to Vite SSR with Rolldown. - vite/vite.config.shared.ts: shared define, resolve, sourcemap settings - vite/vite.config.client.ts: parameterized client build with Preact aliasing, manualChunks, SVG handling, and per-build browser targets - vite/vite.config.server.ts: SSR build targeting Node with CJS output - vite/build.ts: orchestration script (server first, clients in parallel) - vite/browser-targets.ts: ESM port of webpack/browser-targets.js - webpack/bundles.mjs: ESM wrapper for CJS bundles.js (Rollup compat) - makefile: added vite-build and vite-dev targets - debug.ts: CSS import uses ?raw suffix for Vite compatibility Co-Authored-By: Claude Opus 4.6 --- all-vite-changes-02.patch | 13286 ++++++++++++++++++ dotcom-rendering/makefile | 12 +- dotcom-rendering/package.json | 6 + dotcom-rendering/src/client/debug/debug.ts | 2 +- dotcom-rendering/vite/browser-targets.ts | 37 + dotcom-rendering/vite/build.ts | 72 + dotcom-rendering/vite/vite.config.client.ts | 187 + dotcom-rendering/vite/vite.config.server.ts | 59 + dotcom-rendering/vite/vite.config.shared.ts | 36 + dotcom-rendering/webpack/bundles.mjs | 13 + pnpm-lock.yaml | 221 +- 11 files changed, 13886 insertions(+), 45 deletions(-) create mode 100644 all-vite-changes-02.patch create mode 100644 dotcom-rendering/vite/browser-targets.ts create mode 100644 dotcom-rendering/vite/build.ts create mode 100644 dotcom-rendering/vite/vite.config.client.ts create mode 100644 dotcom-rendering/vite/vite.config.server.ts create mode 100644 dotcom-rendering/vite/vite.config.shared.ts create mode 100644 dotcom-rendering/webpack/bundles.mjs diff --git a/all-vite-changes-02.patch b/all-vite-changes-02.patch new file mode 100644 index 00000000000..0b0efdf3d10 --- /dev/null +++ b/all-vite-changes-02.patch @@ -0,0 +1,13286 @@ +From 57953c625157748938636939f97939466d46ccf3 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Mon, 6 Apr 2026 14:03:36 +0100 +Subject: [PATCH 01/17] Add Vite build config scaffolding alongside webpack + +Introduce Vite configuration files for building the server and all +client bundles (web, apps, editionsCrossword) as the first phase of +migrating from webpack to Vite SSR with Rolldown. + +- vite/vite.config.shared.ts: shared define, resolve, sourcemap settings +- vite/vite.config.client.ts: parameterized client build with Preact + aliasing, manualChunks, SVG handling, and per-build browser targets +- vite/vite.config.server.ts: SSR build targeting Node with CJS output +- vite/build.ts: orchestration script (server first, clients in parallel) +- vite/browser-targets.ts: ESM port of webpack/browser-targets.js +- webpack/bundles.mjs: ESM wrapper for CJS bundles.js (Rollup compat) +- makefile: added vite-build and vite-dev targets +- debug.ts: CSS import uses ?raw suffix for Vite compatibility + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/makefile | 12 +- + dotcom-rendering/package.json | 6 + + dotcom-rendering/src/client/debug/debug.ts | 2 +- + dotcom-rendering/vite/browser-targets.ts | 37 ++++ + dotcom-rendering/vite/build.ts | 72 ++++++++ + dotcom-rendering/vite/vite.config.client.ts | 187 ++++++++++++++++++++ + dotcom-rendering/vite/vite.config.server.ts | 59 ++++++ + dotcom-rendering/vite/vite.config.shared.ts | 36 ++++ + dotcom-rendering/webpack/bundles.mjs | 13 ++ + pnpm-lock.yaml | 131 ++++++++++++++ + 10 files changed, 553 insertions(+), 2 deletions(-) + create mode 100644 dotcom-rendering/vite/browser-targets.ts + create mode 100644 dotcom-rendering/vite/build.ts + create mode 100644 dotcom-rendering/vite/vite.config.client.ts + create mode 100644 dotcom-rendering/vite/vite.config.server.ts + create mode 100644 dotcom-rendering/vite/vite.config.shared.ts + create mode 100644 dotcom-rendering/webpack/bundles.mjs + +diff --git a/dotcom-rendering/makefile b/dotcom-rendering/makefile +index 3340b5f0dd..ae2e67fe65 100644 +--- a/dotcom-rendering/makefile ++++ b/dotcom-rendering/makefile +@@ -1,4 +1,4 @@ +-.PHONY: install dev build clean-dist clear ++.PHONY: install dev build clean-dist clear vite-build vite-dev + + # these means you can run the binaries in node_modules + # like with npm scripts +@@ -29,6 +29,16 @@ riffraff-bundle: clean-dist build cdk-synth + $(call log, "creating riffraff bundle") + @node ./scripts/deploy/build-riffraff-bundle.mjs + ++# vite ######################################### ++ ++vite-build: clean-dist install ++ $(call log, "building production bundles with Vite") ++ @NODE_ENV=production node --import tsx vite/build.ts ++ ++vite-dev: clear clean-dist install ++ $(call log, "starting Vite DEV server") ++ @NODE_ENV=development node --import tsx vite/dev-server.ts ++ + # prod ######################################### + + build: clean-dist install +diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json +index ef181caec6..b40ca0245f 100644 +--- a/dotcom-rendering/package.json ++++ b/dotcom-rendering/package.json +@@ -173,5 +173,11 @@ + "webpack-node-externals": "3.0.0", + "webpack-sources": "3.3.3", + "zod": "4.1.12" ++ }, ++ "devDependencies": { ++ "@rollup/plugin-inject": "5.0.5", ++ "rollup-plugin-visualizer": "7.0.1", ++ "vite": "^6.2.6", ++ "vite-plugin-svgr": "5.2.0" + } + } +diff --git a/dotcom-rendering/src/client/debug/debug.ts b/dotcom-rendering/src/client/debug/debug.ts +index 909b39556e..31d7490b56 100644 +--- a/dotcom-rendering/src/client/debug/debug.ts ++++ b/dotcom-rendering/src/client/debug/debug.ts +@@ -1,5 +1,5 @@ + // @ts-expect-error: Cannot find module +-import debugCss from './debug.css'; ++import debugCss from './debug.css?raw'; + + const style = document.createElement('style'); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- We know this will be a string +diff --git a/dotcom-rendering/vite/browser-targets.ts b/dotcom-rendering/vite/browser-targets.ts +new file mode 100644 +index 0000000000..a48e32e3ab +--- /dev/null ++++ b/dotcom-rendering/vite/browser-targets.ts +@@ -0,0 +1,37 @@ ++/** ++ * ES module equivalent of webpack/browser-targets.js ++ * ++ * Derives browser targets from @guardian/browserslist-config and upgrades ++ * iOS < 11 to iOS 11 (required for dynamic import support). ++ */ ++import { createRequire } from 'node:module'; ++ ++const require = createRequire(import.meta.url); ++ ++const getTargetsFromBrowsersList: (opts: { ++ browsers: string[]; ++}) => Record = ++ require('@babel/helper-compilation-targets').default; ++const browserslist: (query: string) => string[] = require('browserslist'); ++ ++const browsers = browserslist('extends @guardian/browserslist-config'); ++const rawTargets: Record = getTargetsFromBrowsersList({ ++ browsers, ++}); ++ ++const upgradeTargets = ( ++ targets: Record, ++): Record => { ++ return Object.fromEntries( ++ Object.entries(targets).map(([browser, version]) => { ++ const major = Number(version.split('.')[0]) || 0; ++ if (browser === 'ios' && major < 11) { ++ return ['ios', '11']; ++ } ++ return [browser, version]; ++ }), ++ ); ++}; ++ ++export const getBrowserTargets = (): Record => ++ upgradeTargets(rawTargets); +diff --git a/dotcom-rendering/vite/build.ts b/dotcom-rendering/vite/build.ts +new file mode 100644 +index 0000000000..e64baa7e3e +--- /dev/null ++++ b/dotcom-rendering/vite/build.ts +@@ -0,0 +1,72 @@ ++/** ++ * Build orchestration script for Vite. ++ * Replaces webpack.config.js's multi-compiler array. ++ * ++ * Runs the server build first, then all client builds in parallel. ++ * ++ * Usage: ++ * NODE_ENV=production node --import tsx vite/build.ts ++ */ ++import { rmSync } from 'node:fs'; ++import { resolve } from 'node:path'; ++import { build } from 'vite'; ++import type { Build } from '../src/lib/assets'; ++import { createClientConfig } from './vite.config.client'; ++import { serverConfig } from './vite.config.server'; ++ ++const PROD = process.env.NODE_ENV === 'production'; ++const BUILD_VARIANT = process.env.BUILD_VARIANT === 'true'; ++ ++function getClientBuilds(): Build[] { ++ // Controls whether the variant bundle is built. ++ // In production, also checks the static BUILD_VARIANT flag from bundles.js. ++ // eslint-disable-next-line @typescript-eslint/no-var-requires -- CJS module ++ const { BUILD_VARIANT: BUILD_VARIANT_SWITCH } = ++ require('../webpack/bundles') as { BUILD_VARIANT: boolean }; ++ ++ return [ ++ 'client.web', ++ ...((PROD && BUILD_VARIANT_SWITCH) || BUILD_VARIANT ++ ? (['client.web.variant'] as const) ++ : []), ++ 'client.apps', ++ 'client.editionsCrossword', ++ ]; ++} ++ ++async function runBuild() { ++ const clientBuilds = getClientBuilds(); ++ const startTime = Date.now(); ++ console.log( ++ `\nπŸ”¨ Building with Vite (${PROD ? 'production' : 'development'})...\n`, ++ ); ++ ++ // Clean dist directory before building (since emptyOutDir is false on all configs) ++ rmSync(resolve(__dirname, '..', 'dist'), { recursive: true, force: true }); ++ ++ // 1. Build server first (client builds may depend on server output in some setups) ++ console.log('πŸ“¦ Building server...'); ++ await build(serverConfig); ++ console.log('βœ… Server build complete\n'); ++ ++ // 2. Build all client variants in parallel ++ console.log( ++ `πŸ“¦ Building ${clientBuilds.length} client bundles in parallel...`, ++ ); ++ await Promise.all( ++ clientBuilds.map(async (buildName) => { ++ console.log(` β†’ ${buildName}`); ++ const config = createClientConfig(buildName); ++ await build(config); ++ console.log(` βœ… ${buildName} complete`); ++ }), ++ ); ++ ++ const elapsed = ((Date.now() - startTime) / 1000).toFixed(1); ++ console.log(`\nπŸŽ‰ All builds complete in ${elapsed}s\n`); ++} ++ ++runBuild().catch((err) => { ++ console.error('Build failed:', err); ++ process.exit(1); ++}); +diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.ts +new file mode 100644 +index 0000000000..06bfc728f6 +--- /dev/null ++++ b/dotcom-rendering/vite/vite.config.client.ts +@@ -0,0 +1,187 @@ ++import inject from '@rollup/plugin-inject'; ++import svgr from 'vite-plugin-svgr'; ++import type { UserConfig } from 'vite'; ++import { mergeConfig } from 'vite'; ++import type { Build } from '../src/lib/assets'; ++import { getBrowserTargets } from './browser-targets'; ++import { sharedConfig } from './vite.config.shared'; ++ ++const DEV = process.env.NODE_ENV === 'development'; ++ ++/** ++ * Maps each build variant to its entry point. ++ */ ++const getEntryIndex = (build: Build): string => { ++ switch (build) { ++ case 'client.editionsCrossword': ++ return './src/client/main.editionsCrossword.tsx'; ++ case 'client.apps': ++ return './src/client/main.apps.ts'; ++ default: ++ return './src/client/main.web.ts'; ++ } ++}; ++ ++/** ++ * Returns esbuild-compatible browser targets for the given build. ++ * ++ * For web builds, we derive targets from @guardian/browserslist-config. ++ * For apps/crossword, we use fixed mobile targets. ++ */ ++const getBuildTarget = (build: Build): string[] => { ++ switch (build) { ++ case 'client.apps': ++ case 'client.editionsCrossword': ++ return ['chrome70', 'safari12']; ++ default: { ++ const targets = getBrowserTargets(); ++ // esbuild only supports: chrome, edge, firefox, safari, ios, node, es* ++ // Filter out unsupported browsers like samsung, opera, etc. ++ const supportedBrowsers = new Set([ ++ 'chrome', ++ 'edge', ++ 'firefox', ++ 'safari', ++ 'ios', ++ 'node', ++ ]); ++ return Object.entries(targets) ++ .filter(([browser]) => supportedBrowsers.has(browser)) ++ .map(([browser, version]) => { ++ const major = String(version).split('.')[0]; ++ return `${browser}${major}`; ++ }); ++ } ++ } ++}; ++ ++/** ++ * Returns external modules for the given build. ++ * ++ * Apps: ophan is provided natively. ++ * Crossword: ophan and commercial are provided externally. ++ */ ++const getExternals = (build: Build): string[] => { ++ if (build === 'client.apps') { ++ return ['@guardian/ophan-tracker-js']; ++ } ++ if (build === 'client.editionsCrossword') { ++ return ['@guardian/ophan-tracker-js', '@guardian/commercial']; ++ } ++ return []; ++}; ++ ++/** ++ * Returns rollup output.globals for externalized modules. ++ */ ++const getGlobals = (build: Build): Record => { ++ const globals: Record = {}; ++ if (build === 'client.apps' || build === 'client.editionsCrossword') { ++ globals['@guardian/ophan-tracker-js'] = 'guardian.ophan'; ++ } ++ if (build === 'client.editionsCrossword') { ++ globals['@guardian/commercial'] = 'guardian.commercial'; ++ } ++ return globals; ++}; ++ ++/** ++ * Generates manual chunk assignments for web builds. ++ * Mirrors the webpack splitChunks.cacheGroups.frameworks config. ++ */ ++const getManualChunks = ( ++ build: Build, ++): ((id: string) => string | undefined) | undefined => { ++ // Apps and crossword builds use inlineDynamicImports (single chunk) ++ if (build === 'client.apps' || build === 'client.editionsCrossword') { ++ return undefined; ++ } ++ ++ return (id: string) => { ++ if ( ++ /node_modules\/(preact|react-is|hoist-non-react-statistics|swr|@emotion|stylis)\//.test( ++ id, ++ ) ++ ) { ++ return 'frameworks'; ++ } ++ return undefined; ++ }; ++}; ++ ++/** ++ * Whether this build should inline all dynamic imports into a single chunk. ++ * Apps and crossword builds produce a single file (no code splitting). ++ */ ++const shouldInlineDynamicImports = (build: Build): boolean => ++ build === 'client.apps' || build === 'client.editionsCrossword'; ++ ++/** ++ * Creates a Vite client config for the given build variant. ++ * ++ * This replaces webpack.config.client.js β€” called once per build variant ++ * (client.web, client.web.variant, client.apps, client.editionsCrossword). ++ */ ++export const createClientConfig = (build: Build): UserConfig => { ++ const isSingleChunk = shouldInlineDynamicImports(build); ++ ++ const clientConfig: UserConfig = { ++ plugins: [ ++ svgr({ ++ svgrOptions: { svgo: false }, ++ }), ++ // Buffer polyfill for apps/crossword builds ++ // Replaces webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }) ++ ...(isSingleChunk ++ ? [ ++ inject({ ++ Buffer: ['buffer', 'Buffer'], ++ }), ++ ] ++ : []), ++ ], ++ resolve: { ++ alias: { ++ // Client builds use Preact for smaller bundle size. ++ // Server builds use real React (not aliased). ++ react: 'preact/compat', ++ 'react-dom/test-utils': 'preact/test-utils', ++ 'react-dom': 'preact/compat', ++ }, ++ }, ++ build: { ++ outDir: 'dist', ++ emptyOutDir: false, ++ target: getBuildTarget(build), ++ manifest: `manifest.${build}.json`, ++ rollupOptions: { ++ input: isSingleChunk ++ ? // Single-chunk builds can only have one entry ++ // (inlineDynamicImports is incompatible with multiple inputs) ++ { index: getEntryIndex(build) } ++ : { ++ index: getEntryIndex(build), ++ debug: './src/client/debug/debug.ts', ++ }, ++ external: getExternals(build), ++ output: { ++ // Naming: [name].[build].[hash].js β€” matches webpack output pattern ++ entryFileNames: (chunk) => { ++ if (chunk.name === 'debug') return 'debug.js'; ++ return DEV ++ ? `[name].${build}.js` ++ : `[name].${build}.[hash].js`; ++ }, ++ chunkFileNames: DEV ++ ? `[name].${build}.js` ++ : `[name].${build}.[hash].js`, ++ globals: getGlobals(build), ++ manualChunks: getManualChunks(build), ++ ...(isSingleChunk ? { inlineDynamicImports: true } : {}), ++ }, ++ }, ++ }, ++ }; ++ ++ return mergeConfig(sharedConfig, clientConfig); ++}; +diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts +new file mode 100644 +index 0000000000..ae3316a258 +--- /dev/null ++++ b/dotcom-rendering/vite/vite.config.server.ts +@@ -0,0 +1,59 @@ ++import svgr from 'vite-plugin-svgr'; ++import type { UserConfig } from 'vite'; ++import { mergeConfig } from 'vite'; ++import { sharedConfig } from './vite.config.shared'; ++ ++const DEV = process.env.NODE_ENV === 'development'; ++ ++/** ++ * Vite SSR build configuration for the Express server bundle. ++ * Replaces webpack.config.server.js. ++ * ++ * Key differences from client config: ++ * - No Preact aliasing (server uses real React for renderToString) ++ * - Outputs CommonJS for Node.js ++ * - Most node_modules are external (not bundled) ++ * - No minification in dev ++ */ ++export const serverConfig: UserConfig = mergeConfig(sharedConfig, { ++ plugins: [ ++ svgr({ ++ svgrOptions: { svgo: false }, ++ }), ++ ], ++ build: { ++ outDir: 'dist', ++ emptyOutDir: false, ++ ssr: true, ++ target: `node${process.versions.node}`, ++ minify: !DEV, ++ sourcemap: true, ++ rollupOptions: { ++ input: { ++ server: './src/server/server.ts', ++ }, ++ output: { ++ format: 'cjs', ++ entryFileNames: '[name].js', ++ chunkFileNames: '[name].js', ++ }, ++ // webpack/bundles.js is CJS with module.exports β€” Rollup can't ++ // resolve named exports from it. Externalize so it's required at runtime. ++ external: [/webpack\/bundles/], ++ }, ++ }, ++ ssr: { ++ // Bundle these packages (they are ESM-only or need to be included). ++ // Mirrors webpack-node-externals allowlist. ++ noExternal: [ ++ // All @guardian scoped packages should be bundled ++ /@guardian\//, ++ // ESM-only package that throws when not bundled ++ 'screenfull', ++ // Valibot is ESM and needs bundling ++ 'valibot', ++ ], ++ // Explicitly external in dev (not needed in prod where they're deployed) ++ external: DEV ? [/@aws-sdk\/.*/] : [], ++ }, ++} satisfies UserConfig); +diff --git a/dotcom-rendering/vite/vite.config.shared.ts b/dotcom-rendering/vite/vite.config.shared.ts +new file mode 100644 +index 0000000000..2a15abccd3 +--- /dev/null ++++ b/dotcom-rendering/vite/vite.config.shared.ts +@@ -0,0 +1,36 @@ ++import { resolve } from 'node:path'; ++import type { UserConfig } from 'vite'; ++ ++const DEV = process.env.NODE_ENV === 'development'; ++ ++/** ++ * Shared Vite configuration applied to both server and client builds. ++ * Replaces the `commonConfigs()` function from webpack.config.js. ++ */ ++export const sharedConfig: UserConfig = { ++ define: { ++ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), ++ 'process.env.HOSTNAME': JSON.stringify(process.env.HOSTNAME), ++ }, ++ build: { ++ sourcemap: DEV ? 'inline' : true, ++ // Rolldown is used automatically when available in Vite 7+ ++ // For Vite 6 with experimental Rolldown, uncomment: ++ // rollupOptions: { experimentalRolldown: true }, ++ }, ++ resolve: { ++ extensions: ['.ts', '.tsx', '.js', '.jsx'], ++ alias: { ++ // webpack/bundles.js is CJS (module.exports) which Rollup can't ++ // resolve named exports from. Redirect to an ESM wrapper. ++ '../../webpack/bundles': resolve( ++ __dirname, ++ '../webpack/bundles.mjs', ++ ), ++ '../../../webpack/bundles': resolve( ++ __dirname, ++ '../webpack/bundles.mjs', ++ ), ++ }, ++ }, ++}; +diff --git a/dotcom-rendering/webpack/bundles.mjs b/dotcom-rendering/webpack/bundles.mjs +new file mode 100644 +index 0000000000..3a7ecc81d9 +--- /dev/null ++++ b/dotcom-rendering/webpack/bundles.mjs +@@ -0,0 +1,13 @@ ++/** ++ * ESM re-export of bundles.js values for Vite/Rollup compatibility. ++ * ++ * These values must be kept in sync with bundles.js. ++ * The original bundles.js uses module.exports (CJS) which Rollup ++ * cannot resolve named exports from. ++ */ ++ ++/** @type {boolean} */ ++export const BUILD_VARIANT = false; ++ ++/** @type {(variant: 'Variant' | 'Control') => string} */ ++export const dcrJavascriptBundle = (variant) => `dcrJavascriptBundle${variant}`; +diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml +index 0fbd91a819..3abdb9930e 100644 +--- a/pnpm-lock.yaml ++++ b/pnpm-lock.yaml +@@ -737,6 +737,19 @@ importers: + zod: + specifier: 4.1.12 + version: 4.1.12 ++ devDependencies: ++ '@rollup/plugin-inject': ++ specifier: 5.0.5 ++ version: 5.0.5(rollup@4.59.0) ++ rollup-plugin-visualizer: ++ specifier: 7.0.1 ++ version: 7.0.1(rollup@4.59.0) ++ vite: ++ specifier: ^6.2.6 ++ version: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) ++ vite-plugin-svgr: ++ specifier: 5.2.0 ++ version: 5.2.0(rollup@4.59.0)(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2)) + + packages: + +@@ -2790,6 +2803,15 @@ packages: + rollup: + optional: true + ++ '@rollup/plugin-inject@5.0.5': ++ resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} ++ engines: {node: '>=14.0.0'} ++ peerDependencies: ++ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 ++ peerDependenciesMeta: ++ rollup: ++ optional: true ++ + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} +@@ -4731,6 +4753,10 @@ packages: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + ++ cliui@9.0.1: ++ resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} ++ engines: {node: '>=20'} ++ + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} +@@ -6394,6 +6420,10 @@ packages: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + ++ is-in-ssh@1.0.0: ++ resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} ++ engines: {node: '>=20'} ++ + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} +@@ -7347,6 +7377,10 @@ packages: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + ++ open@11.0.0: ++ resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} ++ engines: {node: '>=20'} ++ + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true +@@ -7591,6 +7625,10 @@ packages: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + ++ powershell-utils@0.1.0: ++ resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} ++ engines: {node: '>=20'} ++ + preact-render-to-string@6.0.2: + resolution: {integrity: sha512-/dls6xmcFc8PvnCVke5Hu5ll70pZZu+jZuvw3i/ya2CNu6B0ev9F937+oFyzdlNKVp68III89oYMbE6dcmuyRA==} + peerDependencies: +@@ -7907,6 +7945,19 @@ packages: + esbuild: '>=0.18.0' + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + ++ rollup-plugin-visualizer@7.0.1: ++ resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} ++ engines: {node: '>=22'} ++ hasBin: true ++ peerDependencies: ++ rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc ++ rollup: 2.x || 3.x || 4.x ++ peerDependenciesMeta: ++ rolldown: ++ optional: true ++ rollup: ++ optional: true ++ + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} +@@ -8823,6 +8874,11 @@ packages: + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + ++ vite-plugin-svgr@5.2.0: ++ resolution: {integrity: sha512-qj2eAKF8C6PZWemVTvQA0xgQIcP1hHU6Buh7fl6BhvayWwnuxE+z417miKxeDvRWbDrupQ1oK99hfxElopJ3sQ==} ++ peerDependencies: ++ vite: '>=3.0.0' ++ + vite@6.4.0: + resolution: {integrity: sha512-oLnWs9Hak/LOlKjeSpOwD6JMks8BeICEdYMJBf6P4Lac/pO9tKiv/XhXnAM7nNfSkZahjlCZu9sS50zL8fSnsw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} +@@ -9102,6 +9158,10 @@ packages: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + ++ wsl-utils@0.3.1: ++ resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} ++ engines: {node: '>=20'} ++ + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} +@@ -9135,10 +9195,18 @@ packages: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + ++ yargs-parser@22.0.0: ++ resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} ++ engines: {node: ^20.19.0 || ^22.12.0 || >=23} ++ + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + ++ yargs@18.0.0: ++ resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} ++ engines: {node: ^20.19.0 || ^22.12.0 || >=23} ++ + yauzl@3.2.0: + resolution: {integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==} + engines: {node: '>=12'} +@@ -11972,6 +12040,14 @@ snapshots: + optionalDependencies: + rollup: 4.59.0 + ++ '@rollup/plugin-inject@5.0.5(rollup@4.59.0)': ++ dependencies: ++ '@rollup/pluginutils': 5.3.0(rollup@4.59.0) ++ estree-walker: 2.0.2 ++ magic-string: 0.30.21 ++ optionalDependencies: ++ rollup: 4.59.0 ++ + '@rollup/plugin-json@6.1.0(rollup@4.59.0)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) +@@ -14358,6 +14434,12 @@ snapshots: + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + ++ cliui@9.0.1: ++ dependencies: ++ string-width: 7.2.0 ++ strip-ansi: 7.1.2 ++ wrap-ansi: 9.0.2 ++ + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 +@@ -16491,6 +16573,8 @@ snapshots: + dependencies: + is-extglob: 2.1.1 + ++ is-in-ssh@1.0.0: {} ++ + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 +@@ -17729,6 +17813,15 @@ snapshots: + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + ++ open@11.0.0: ++ dependencies: ++ default-browser: 5.5.0 ++ define-lazy-prop: 3.0.0 ++ is-in-ssh: 1.0.0 ++ is-inside-container: 1.0.0 ++ powershell-utils: 0.1.0 ++ wsl-utils: 0.3.1 ++ + opener@1.5.2: {} + + optionator@0.9.3: +@@ -17940,6 +18033,8 @@ snapshots: + picocolors: 1.1.1 + source-map-js: 1.2.1 + ++ powershell-utils@0.1.0: {} ++ + preact-render-to-string@6.0.2(preact@10.15.1): + dependencies: + preact: 10.15.1 +@@ -18328,6 +18423,15 @@ snapshots: + transitivePeerDependencies: + - supports-color + ++ rollup-plugin-visualizer@7.0.1(rollup@4.59.0): ++ dependencies: ++ open: 11.0.0 ++ picomatch: 4.0.4 ++ source-map: 0.7.4 ++ yargs: 18.0.0 ++ optionalDependencies: ++ rollup: 4.59.0 ++ + rollup@4.59.0: + dependencies: + '@types/estree': 1.0.8 +@@ -19487,6 +19591,17 @@ snapshots: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + ++ vite-plugin-svgr@5.2.0(rollup@4.59.0)(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2)): ++ dependencies: ++ '@rollup/pluginutils': 5.3.0(rollup@4.59.0) ++ '@svgr/core': 8.1.0(typescript@5.5.3) ++ '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.3)) ++ vite: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) ++ transitivePeerDependencies: ++ - rollup ++ - supports-color ++ - typescript ++ + vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2): + dependencies: + esbuild: 0.25.5 +@@ -19820,6 +19935,11 @@ snapshots: + dependencies: + is-wsl: 3.1.1 + ++ wsl-utils@0.3.1: ++ dependencies: ++ is-wsl: 3.1.1 ++ powershell-utils: 0.1.0 ++ + xml-name-validator@4.0.0: {} + + xmlchars@2.2.0: {} +@@ -19840,6 +19960,8 @@ snapshots: + + yargs-parser@21.1.1: {} + ++ yargs-parser@22.0.0: {} ++ + yargs@17.7.2: + dependencies: + cliui: 8.0.1 +@@ -19850,6 +19972,15 @@ snapshots: + y18n: 5.0.8 + yargs-parser: 21.1.1 + ++ yargs@18.0.0: ++ dependencies: ++ cliui: 9.0.1 ++ escalade: 3.2.0 ++ get-caller-file: 2.0.5 ++ string-width: 7.2.0 ++ y18n: 5.0.8 ++ yargs-parser: 22.0.0 ++ + yauzl@3.2.0: + dependencies: + buffer-crc32: 0.2.13 +-- +2.50.1 (Apple Git-155) + + +From bf28fb7b96809cbad480dd6f48bb91be82d2eeb9 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Mon, 6 Apr 2026 14:28:56 +0100 +Subject: [PATCH 02/17] Migrate islands to import.meta.glob, remove + webpack-specific modules + +Replace the webpack dynamic import pattern in doHydration.tsx with a +static island registry built via Vite's import.meta.glob. Each island +component is still lazily loaded as its own chunk. + +- Add islandRegistry.ts using import.meta.glob for all *.island.tsx files +- Update doHydration.tsx to look up islands from the registry +- Remove webpackPublicPath.ts, decidePublicPath.ts, dynamicImport.ts +- Strip all webpackMode/webpackChunkName comments from entry points +- Remove guardianPolyfilledImport from window.guardian types +- Swap tsconfig types from webpack-env to vite/client + +Co-Authored-By: Claude Opus 4.6 +--- + .../src/client/decidePublicPath.test.ts | 53 ------------ + .../src/client/decidePublicPath.ts | 13 --- + dotcom-rendering/src/client/dynamicImport.ts | 40 --------- + .../src/client/islands/doHydration.tsx | 22 ++--- + .../src/client/islands/islandRegistry.ts | 31 +++++++ + dotcom-rendering/src/client/main.apps.ts | 49 ++--------- + dotcom-rendering/src/client/main.web.ts | 84 +++++-------------- + .../src/client/sentryLoader/loadSentry.ts | 6 +- + .../client/sentryLoader/sentryLoader.test.ts | 1 - + .../src/client/webpackPublicPath.ts | 7 -- + dotcom-rendering/tsconfig.json | 2 +- + dotcom-rendering/window.guardian.ts | 11 --- + 12 files changed, 76 insertions(+), 243 deletions(-) + delete mode 100644 dotcom-rendering/src/client/decidePublicPath.test.ts + delete mode 100644 dotcom-rendering/src/client/decidePublicPath.ts + delete mode 100644 dotcom-rendering/src/client/dynamicImport.ts + create mode 100644 dotcom-rendering/src/client/islands/islandRegistry.ts + delete mode 100644 dotcom-rendering/src/client/webpackPublicPath.ts + +diff --git a/dotcom-rendering/src/client/decidePublicPath.test.ts b/dotcom-rendering/src/client/decidePublicPath.test.ts +deleted file mode 100644 +index 85ebbf20e3..0000000000 +--- a/dotcom-rendering/src/client/decidePublicPath.test.ts ++++ /dev/null +@@ -1,53 +0,0 @@ +-import { decidePublicPath } from './decidePublicPath'; +- +-const mockHostname = (hostname: string | undefined) => { +- Object.defineProperty(window, 'location', { +- value: { +- hostname, +- }, +- writable: true, +- }); +-}; +- +-const mockFrontendAssetsFullURL = (frontendAssetsFullURL: string) => { +- Object.defineProperty(window, 'guardian', { +- value: { +- config: { +- frontendAssetsFullURL, +- }, +- }, +- writable: true, +- }); +-}; +- +-describe('decidePublicPath', () => { +- beforeEach(() => { +- jest.resetModules(); +- +- mockHostname(undefined); +- +- mockFrontendAssetsFullURL('https://assets.guim.co.uk/'); +- +- process.env = { NODE_ENV: undefined, HOSTNAME: undefined }; +- }); +- +- it('with development flag', () => { +- process.env.NODE_ENV = 'development'; +- expect(decidePublicPath()).toEqual('/assets/'); +- }); +- +- it('with production flag', () => { +- process.env.NODE_ENV = 'production'; +- expect(decidePublicPath()).toEqual('https://assets.guim.co.uk/assets/'); +- }); +- +- it('with production flag and localhost', () => { +- process.env.NODE_ENV = 'production'; +- mockHostname('localhost'); +- expect(decidePublicPath()).toEqual('/assets/'); +- }); +- +- it('with no flag', () => { +- expect(decidePublicPath()).toEqual('https://assets.guim.co.uk/assets/'); +- }); +-}); +diff --git a/dotcom-rendering/src/client/decidePublicPath.ts b/dotcom-rendering/src/client/decidePublicPath.ts +deleted file mode 100644 +index 41bb44db14..0000000000 +--- a/dotcom-rendering/src/client/decidePublicPath.ts ++++ /dev/null +@@ -1,13 +0,0 @@ +-/** +- * Determine the path that webpack should use as base for dynamic imports +- * +- * @returns The webpack public path to use +- */ +-export const decidePublicPath = (): string => { +- const isDev = process.env.NODE_ENV === 'development'; +- const isLocalHost = window.location.hostname === 'localhost'; +- // Use relative path if running locally or in CI +- return isDev || isLocalHost +- ? '/assets/' +- : `${window.guardian.config.frontendAssetsFullURL}assets/`; +-}; +diff --git a/dotcom-rendering/src/client/dynamicImport.ts b/dotcom-rendering/src/client/dynamicImport.ts +deleted file mode 100644 +index b5e25850c4..0000000000 +--- a/dotcom-rendering/src/client/dynamicImport.ts ++++ /dev/null +@@ -1,40 +0,0 @@ +-import dynamicImportPolyfill from 'dynamic-import-polyfill'; +- +-// Provides an import function to use for dynamic imports. **Only works on +-// browsers that cut the mustard (support modules).** +-const initialiseDynamicImport = () => { +- try { +- // eslint-disable-next-line @typescript-eslint/no-implied-eval +- window.guardianPolyfilledImport = new Function( +- 'url', +- `return import(url)`, +- ) as (url: string) => Promise; +- } catch (e) { +- dynamicImportPolyfill.initialize({ +- importFunctionName: 'guardianPolyfilledImport', // must be a direct property of the window +- }); +- } +-}; +- +-// Provides an import function to use for dynamic imports. **Designed for +-// legacy browsers. Dynamic loads a ~4k bundle.** +-const initialiseDynamicImportLegacy = async () => { +- const shimport = await import( +- /* webpackChunkName: "shimport" */ '@guardian/shimport' +- ); +- shimport.initialise(); // note this adds a __shimport__ global +- window.guardianPolyfilledImport = shimport.load; +-}; +- +-export const dynamicImport = (): Promise => { +- window.guardianPolyfilledImport = (url: string) => +- Promise.reject( +- new Error(`import not polyfilled; attempted import(${url})`), +- ); +- +- if (window.guardian.mustardCut) { +- return Promise.resolve(initialiseDynamicImport()); +- } +- +- return initialiseDynamicImportLegacy(); +-}; +diff --git a/dotcom-rendering/src/client/islands/doHydration.tsx b/dotcom-rendering/src/client/islands/doHydration.tsx +index 8732ea875b..e61d810d3c 100644 +--- a/dotcom-rendering/src/client/islands/doHydration.tsx ++++ b/dotcom-rendering/src/client/islands/doHydration.tsx +@@ -7,6 +7,7 @@ import { hydrateRoot } from 'react-dom/client'; + import { ConfigProvider } from '../../components/ConfigContext'; + import { IslandProvider } from '../../components/IslandContext'; + import type { Config } from '../../types/configContext'; ++import { getIslandModule } from './islandRegistry'; + + declare global { + interface DOMStringMap { +@@ -45,11 +46,16 @@ export const doHydration = async ( + + const { endPerformanceMeasure: endImportPerformanceMeasure } = + startPerformanceMeasure('dotcom', name, 'import'); +- await import( +- /* webpackInclude: /\.island\.tsx$/ */ +- /* webpackChunkName: "[request]" */ +- `../../components/${name}.island` +- ) ++ ++ const loadModule = getIslandModule(name); ++ if (!loadModule) { ++ console.error( ++ `🚨 Island module not found: ${name}. Components must live in the root of /components and follow the [MyComponent].island.tsx naming convention 🚨`, ++ ); ++ return; ++ } ++ ++ await loadModule() + .then((module) => { + /** The duration of importing the module for this island */ + const importDuration = endImportPerformanceMeasure(); +@@ -88,11 +94,7 @@ export const doHydration = async ( + }) + .catch((error) => { + element.dataset.islandStatus = undefined; // remove any island status +- if (name && error.message.includes(name)) { +- console.error( +- `🚨 Error importing ${name}. Components must live in the root of /components and follow the [MyComponent].island.tsx naming convention 🚨`, +- ); +- } ++ console.error(`🚨 Error hydrating island: ${name} 🚨`); + throw error; + }); + }; +diff --git a/dotcom-rendering/src/client/islands/islandRegistry.ts b/dotcom-rendering/src/client/islands/islandRegistry.ts +new file mode 100644 +index 0000000000..6e8524d5cb +--- /dev/null ++++ b/dotcom-rendering/src/client/islands/islandRegistry.ts +@@ -0,0 +1,31 @@ ++/** ++ * Static registry of all island components, built at compile time ++ * via Vite's import.meta.glob. ++ * ++ * Each matched file becomes a lazy chunk (eager: false), exactly ++ * matching the previous webpack behaviour where each island was ++ * a separate dynamically-loaded chunk. ++ * ++ * Replaces the webpack magic comments in doHydration.tsx: ++ * import( ++ * /* webpackInclude: /\.island\.tsx$/ *​/ ++ * /* webpackChunkName: "[request]" *​/ ++ * `../../components/${name}.island` ++ * ) ++ */ ++const islandModules = import.meta.glob>( ++ '../../components/*.island.tsx', ++); ++ ++/** ++ * Look up the lazy loader for an island component by name. ++ * ++ * @param name The component name (e.g. "ShareButton" for ShareButton.island.tsx) ++ * @returns A function that returns a Promise of the module, or undefined if not found ++ */ ++export const getIslandModule = ( ++ name: string, ++): (() => Promise>) | undefined => { ++ const key = `../../components/${name}.island.tsx`; ++ return islandModules[key]; ++}; +diff --git a/dotcom-rendering/src/client/main.apps.ts b/dotcom-rendering/src/client/main.apps.ts +index 2e4556346a..c084538f8d 100644 +--- a/dotcom-rendering/src/client/main.apps.ts ++++ b/dotcom-rendering/src/client/main.apps.ts +@@ -1,4 +1,3 @@ +-import './webpackPublicPath'; + import { startup } from './startup'; + + /************************************************************* +@@ -12,19 +11,8 @@ import { startup } from './startup'; + void startup( + 'sentryLoader', + () => +- import(/* webpackMode: "eager" */ './sentryLoader/sentryLoader').then( +- ({ sentryLoader }) => sentryLoader(), +- ), +- { +- priority: 'critical', +- }, +-); +- +-void startup( +- 'dynamicImport', +- () => +- import(/* webpackMode: "eager" */ './dynamicImport').then( +- ({ dynamicImport }) => dynamicImport(), ++ import('./sentryLoader/sentryLoader').then(({ sentryLoader }) => ++ sentryLoader(), + ), + { + priority: 'critical', +@@ -33,10 +21,7 @@ void startup( + + void startup( + 'islands', +- () => +- import(/* webpackMode: "eager" */ './islands/islands').then( +- ({ islands }) => islands(), +- ), ++ () => import('./islands/islands').then(({ islands }) => islands()), + { + priority: 'critical', + }, +@@ -48,47 +33,31 @@ void startup( + * because they are lower priority and do not want to block + * the modules above on loading these. + * +- * We are not assigning chunk name to allow Webpack +- * to optimise chunking based on its algorithm. +- * + *************************************************************/ + + void startup( + 'atomIframe', +- () => +- import( +- /* webpackMode: 'lazy' */ +- './atomIframe' +- ).then(({ atomIframe }) => atomIframe()), ++ () => import('./atomIframe').then(({ atomIframe }) => atomIframe()), + { priority: 'feature' }, + ); + + void startup( + 'embedIframe', +- () => +- import( +- /* webpackMode: 'lazy' */ +- './embedIframe' +- ).then(({ embedIframe }) => embedIframe()), ++ () => import('./embedIframe').then(({ embedIframe }) => embedIframe()), + { priority: 'feature' }, + ); + + void startup( + 'newsletterEmbedIframe', + () => +- import( +- /* webpackMode: 'lazy' */ +- './newsletterEmbedIframe' +- ).then(({ newsletterEmbedIframe }) => newsletterEmbedIframe()), ++ import('./newsletterEmbedIframe').then(({ newsletterEmbedIframe }) => ++ newsletterEmbedIframe(), ++ ), + { priority: 'feature' }, + ); + + void startup( + 'initDiscussion', +- () => +- import( +- /* webpackMode: 'lazy' */ +- './discussion' +- ).then(({ discussion }) => discussion()), ++ () => import('./discussion').then(({ discussion }) => discussion()), + { priority: 'feature' }, + ); +diff --git a/dotcom-rendering/src/client/main.web.ts b/dotcom-rendering/src/client/main.web.ts +index 95a572c124..bb45a394b9 100644 +--- a/dotcom-rendering/src/client/main.web.ts ++++ b/dotcom-rendering/src/client/main.web.ts +@@ -1,4 +1,3 @@ +-import './webpackPublicPath'; + import { adaptSite, shouldAdapt } from './adaptiveSite'; + import { startup } from './startup'; + import { maybeSIndicatorCapiKey } from './userFeatures/cookies/sIndicatorCapiKey'; +@@ -18,10 +17,7 @@ void (async () => { + + void startup( + 'bootCmp', +- () => +- import(/* webpackMode: "eager" */ './bootCmp').then(({ bootCmp }) => +- bootCmp('Web'), +- ), ++ () => import('./bootCmp').then(({ bootCmp }) => bootCmp('Web')), + { + priority: 'critical', + }, +@@ -30,10 +26,8 @@ void (async () => { + void startup( + 'recordInitialPageEvents', + () => +- import( +- /* webpackMode: "eager" */ './ophan/recordInitialPageEvents' +- ).then(({ recordInitialPageEvents }) => +- recordInitialPageEvents('Web'), ++ import('./ophan/recordInitialPageEvents').then( ++ ({ recordInitialPageEvents }) => recordInitialPageEvents('Web'), + ), + { + priority: 'critical', +@@ -43,9 +37,9 @@ void (async () => { + void startup( + 'sentryLoader', + () => +- import( +- /* webpackMode: "eager" */ './sentryLoader/sentryLoader' +- ).then(({ sentryLoader }) => sentryLoader()), ++ import('./sentryLoader/sentryLoader').then(({ sentryLoader }) => ++ sentryLoader(), ++ ), + { + priority: 'critical', + }, +@@ -60,29 +54,15 @@ void (async () => { + void startup( + 'abTesting', + () => +- import(/* webpackMode: 'eager' */ './abTesting').then( +- ({ initWindowABTesting }) => initWindowABTesting(), ++ import('./abTesting').then(({ initWindowABTesting }) => ++ initWindowABTesting(), + ), + { priority: 'critical' }, + ); + +- void startup( +- 'dynamicImport', +- () => +- import(/* webpackMode: "eager" */ './dynamicImport').then( +- ({ dynamicImport }) => dynamicImport(), +- ), +- { +- priority: 'critical', +- }, +- ); +- + void startup( + 'islands', +- () => +- import(/* webpackMode: "eager" */ './islands/islands').then( +- ({ islands }) => islands(), +- ), ++ () => import('./islands/islands').then(({ islands }) => islands()), + { + priority: 'critical', + }, +@@ -91,9 +71,9 @@ void (async () => { + void startup( + 'poorPerformanceMonitoring', + () => +- import( +- /* webpackMode: "eager" */ './poorPerformanceMonitoring' +- ).then(({ recordPoorPerformance }) => recordPoorPerformance('Web')), ++ import('./poorPerformanceMonitoring').then( ++ ({ recordPoorPerformance }) => recordPoorPerformance('Web'), ++ ), + { + priority: 'critical', + }, +@@ -102,9 +82,9 @@ void (async () => { + void startup( + 'userFeatures', + () => +- import( +- /* webpackMode: 'eager' */ './userFeatures/user-features' +- ).then(({ refresh }) => refresh()), ++ import('./userFeatures/user-features').then(({ refresh }) => ++ refresh(), ++ ), + { priority: 'critical' }, + ); + +@@ -114,59 +94,39 @@ void (async () => { + * because they are lower priority and do not want to block + * the modules above on loading these. + * +- * We are not assigning chunk name to allow Webpack +- * to optimise chunking based on its algorithm. +- * + *************************************************************/ + + void startup( + 'atomIframe', +- () => +- import( +- /* webpackMode: 'lazy' */ +- './atomIframe' +- ).then(({ atomIframe }) => atomIframe()), ++ () => import('./atomIframe').then(({ atomIframe }) => atomIframe()), + { priority: 'feature' }, + ); + + void startup( + 'embedIframe', +- () => +- import( +- /* webpackMode: 'lazy' */ +- './embedIframe' +- ).then(({ embedIframe }) => embedIframe()), ++ () => import('./embedIframe').then(({ embedIframe }) => embedIframe()), + { priority: 'feature' }, + ); + + void startup( + 'newsletterEmbedIframe', + () => +- import( +- /* webpackMode: 'lazy' */ +- './newsletterEmbedIframe' +- ).then(({ newsletterEmbedIframe }) => newsletterEmbedIframe()), ++ import('./newsletterEmbedIframe').then( ++ ({ newsletterEmbedIframe }) => newsletterEmbedIframe(), ++ ), + { priority: 'feature' }, + ); + + void startup( + 'initDiscussion', +- () => +- import( +- /* webpackMode: 'lazy' */ +- './discussion' +- ).then(({ discussion }) => discussion()), ++ () => import('./discussion').then(({ discussion }) => discussion()), + { priority: 'feature' }, + ); + + if (maybeSIndicatorCapiKey) { + void startup( + 'sIndicator', +- () => +- import( +- /* webpackMode: 'lazy' */ +- './sIndicator' +- ).then(({ sIndicator }) => sIndicator()), ++ () => import('./sIndicator').then(({ sIndicator }) => sIndicator()), + { priority: 'feature' }, + ); + } +diff --git a/dotcom-rendering/src/client/sentryLoader/loadSentry.ts b/dotcom-rendering/src/client/sentryLoader/loadSentry.ts +index 962b12feb6..53c6fd13e3 100644 +--- a/dotcom-rendering/src/client/sentryLoader/loadSentry.ts ++++ b/dotcom-rendering/src/client/sentryLoader/loadSentry.ts +@@ -1,6 +1,5 @@ + import { isAdBlockInUse } from '@guardian/commercial-core'; + import { log, startPerformanceMeasure } from '@guardian/libs'; +-import '../webpackPublicPath'; + import type { ReportError } from '../../types/sentry'; + + type ReportErrorError = Parameters[0]; +@@ -69,10 +68,7 @@ const loadSentryCreator = () => { + /** + * Dynamically load sentry.ts + */ +- const { reportError } = await import( +- /* webpackChunkName: "lazy" */ +- /* webpackChunkName: "sentry" */ './sentry' +- ); ++ const { reportError } = await import('./sentry'); + + /** + * Replace the lazy loader stub with our custom error reporting function +diff --git a/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts b/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts +index 009bcd8285..45ac8adc57 100644 +--- a/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts ++++ b/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts +@@ -1,6 +1,5 @@ + import { isSentryEnabled } from './sentryLoader'; + +-// Stubbed to prevent parsing of __webpack_public_path__ + jest.mock('./loadSentry', () => ({ loadSentry: jest.fn() })); + + describe('Enable Sentry when it passes loading conditions', () => { +diff --git a/dotcom-rendering/src/client/webpackPublicPath.ts b/dotcom-rendering/src/client/webpackPublicPath.ts +deleted file mode 100644 +index 9e6928b474..0000000000 +--- a/dotcom-rendering/src/client/webpackPublicPath.ts ++++ /dev/null +@@ -1,7 +0,0 @@ +-// allows us to define public path dynamically +-// dynamic imports will use this as the base to find their assets +- +-import { decidePublicPath } from './decidePublicPath'; +- +-// https://webpack.js.org/guides/public-path/#on-the-fly +-__webpack_public_path__ = decidePublicPath(); +diff --git a/dotcom-rendering/tsconfig.json b/dotcom-rendering/tsconfig.json +index 3641bf56c0..fd748a9adb 100644 +--- a/dotcom-rendering/tsconfig.json ++++ b/dotcom-rendering/tsconfig.json +@@ -22,7 +22,7 @@ + "react", + "react-dom", + "@testing-library/jest-dom", +- "webpack-env", ++ "vite/client", + "youtube", + "twitter-for-web", + // This is to fix a "Cannot find namespace 'Chai'" error that arose during +diff --git a/dotcom-rendering/window.guardian.ts b/dotcom-rendering/window.guardian.ts +index 3a48327504..2ddd0642ad 100644 +--- a/dotcom-rendering/window.guardian.ts ++++ b/dotcom-rendering/window.guardian.ts +@@ -40,17 +40,6 @@ declare global { + weeklyArticleCount: WeeklyArticleHistory | undefined; + dailyArticleCount: DailyArticleHistory | undefined; + }; +- /** +- * ES6 module import, possibly polyfilled depending on the current +- * browser. There are three categories: +- * +- * 1. Full support out of the box +- * 2. ES6 module support but not dynamic modules +- * 3. No module support +- * +- * This gives support across all 3 cases. +- */ +- guardianPolyfilledImport: (url: string) => Promise; // can't be nested beyond top level + guCmpHotFix: { + initialised?: boolean; + cmp: CMP; +-- +2.50.1 (Apple Git-155) + + +From 387432cf50fa56e120e0cf4a821cd64f5ab516c0 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Mon, 6 Apr 2026 22:19:59 +0100 +Subject: [PATCH 03/17] Adapt asset manifest and script regex for Vite format + +Vite manifests are keyed by source path with nested entry objects +(unlike webpack's flat key-value format). Update getPathFromManifest +to look up entries by source path for entry points and by name for +shared chunks like frameworks. Update script hash regex from 20 to +8 chars to match Vite's output. + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/src/lib/assets.test.ts | 44 ++++++++------ + dotcom-rendering/src/lib/assets.ts | 78 ++++++++++++++++++++----- + 2 files changed, 91 insertions(+), 31 deletions(-) + +diff --git a/dotcom-rendering/src/lib/assets.test.ts b/dotcom-rendering/src/lib/assets.test.ts +index 2eb138f8b8..65c7db3ee3 100644 +--- a/dotcom-rendering/src/lib/assets.test.ts ++++ b/dotcom-rendering/src/lib/assets.test.ts +@@ -35,56 +35,66 @@ describe('decideAssetOrigin for stage', () => { + + describe('regular expression to match files', () => { + it('should handle CI environment', () => { +- expect('/assets/ophan.client.web.eb74205c979f58659ed7.js').toMatch(WEB); ++ expect('/assets/index.client.web.DKLwwO4p.js').toMatch(WEB); + }); + + it('should handle DEV environment', () => { +- expect('/assets/ophan.client.web.variant.js').toMatch( ++ expect('/assets/index.client.web.variant.js').toMatch( + WEB_VARIANT_SCRIPT, + ); + }); + + it('should handle PROD environment', () => { + expect( +- 'https://assets.guim.co.uk/assets/ophan.client.web.abcdefghijklmnopqrst.js', ++ 'https://assets.guim.co.uk/assets/index.client.web.DKLwwO4p.js', + ).toMatch(WEB); + expect( +- 'https://assets.guim.co.uk/assets/ophan.client.web.variant.abcdefghijklmnopqrst.js', ++ 'https://assets.guim.co.uk/assets/index.client.web.variant.abcdefgh.js', + ).toMatch(WEB_VARIANT_SCRIPT); + expect( +- 'https://assets.guim.co.uk/assets/ophan.client.apps.eb74205c979f58659ed7.js', ++ 'https://assets.guim.co.uk/assets/index.client.apps.DKLwwO4p.js', + ).toMatch(APPS_SCRIPT); + }); + + it('should handle http3 query param', () => { + expect( +- 'https://assets.guim.co.uk/assets/ophan.client.web.eb74205c979f58659ed7.js?http3=true', ++ 'https://assets.guim.co.uk/assets/index.client.web.DKLwwO4p.js?http3=true', + ).toMatch(WEB); + }); + }); + + describe('getPathFromManifest', () => { + beforeEach(() => { +- const assetHash = `{ +- "7305.client.web.js": "7305.client.web.8cdc05567d98ebd9f67e.js", +- "356.client.web.js": "356.client.web.0a1bbdf8c7a5e5826b7c.js" +- }`; +- (readFileSync as jest.Mock).mockReturnValue(assetHash); ++ // Vite manifest format: keyed by source path with nested entry objects ++ const viteManifest = JSON.stringify({ ++ 'src/client/main.web.ts': { ++ file: 'index.client.web.DKLwwO4p.js', ++ name: 'index', ++ src: 'src/client/main.web.ts', ++ isEntry: true, ++ imports: ['_frameworks.client.web.xyz78901.js'], ++ }, ++ _frameworks: { ++ file: 'frameworks.client.web.xyz78901.js', ++ name: 'frameworks', ++ }, ++ }); ++ (readFileSync as jest.Mock).mockReturnValue(viteManifest); + }); + + afterEach(() => { + jest.resetAllMocks(); + }); + +- it('returns correct hashed asset (1)', () => { +- expect(getPathFromManifest('client.web', '7305.client.web.js')).toBe( +- '/assets/7305.client.web.8cdc05567d98ebd9f67e.js', ++ it('returns correct hashed asset for entry point', () => { ++ expect(getPathFromManifest('client.web', 'index.js')).toBe( ++ '/assets/index.client.web.DKLwwO4p.js', + ); + }); + +- it('returns correct hashed asset (2)', () => { +- expect(getPathFromManifest('client.web', '356.client.web.js')).toBe( +- '/assets/356.client.web.0a1bbdf8c7a5e5826b7c.js', ++ it('returns correct hashed asset for frameworks chunk', () => { ++ expect(getPathFromManifest('client.web', 'frameworks.js')).toBe( ++ '/assets/frameworks.client.web.xyz78901.js', + ); + }); + +diff --git a/dotcom-rendering/src/lib/assets.ts b/dotcom-rendering/src/lib/assets.ts +index 3ea97af35b..a413a67b72 100644 +--- a/dotcom-rendering/src/lib/assets.ts ++++ b/dotcom-rendering/src/lib/assets.ts +@@ -5,8 +5,24 @@ import { BUILD_VARIANT, dcrJavascriptBundle } from '../../webpack/bundles'; + import type { ServerSideTests, Switches } from '../types/config'; + import { makeMemoizedFunction } from './memoize'; + +-interface AssetHash { +- [key: string]: string; ++/** ++ * A single entry in a Vite manifest. ++ */ ++interface ViteManifestEntry { ++ file: string; ++ name?: string; ++ src?: string; ++ isEntry?: boolean; ++ isDynamicEntry?: boolean; ++ imports?: string[]; ++ dynamicImports?: string[]; ++} ++ ++/** ++ * The full Vite manifest: keys are source paths or internal chunk IDs. ++ */ ++interface ViteManifest { ++ [key: string]: ViteManifestEntry; + } + + export const BASE_URL_DEV = 'http://localhost:3030/'; +@@ -45,22 +61,23 @@ const isDev = process.env.NODE_ENV === 'development'; + + export const ASSET_ORIGIN = decideAssetOrigin(process.env.GU_STAGE, isDev); + +-const isAssetHash = (manifest: unknown): manifest is AssetHash => ++const isViteManifest = (manifest: unknown): manifest is ViteManifest => + isObject(manifest) && +- Object.entries(manifest).every( +- ([key, value]) => isString(key) && isString(value), ++ Object.values(manifest).every( ++ (entry) => ++ isObject(entry) && isString((entry as ViteManifestEntry).file), + ); + +-const getManifest = makeMemoizedFunction((path: string): AssetHash => { ++const getManifest = makeMemoizedFunction((path: string): ViteManifest => { + try { +- const assetHash: unknown = JSON.parse( ++ const parsed: unknown = JSON.parse( + readFileSync(resolve(__dirname, path), { encoding: 'utf-8' }), + ); +- if (!isAssetHash(assetHash)) { +- throw new Error('Not a valid AssetHash type'); ++ if (!isViteManifest(parsed)) { ++ throw new Error('Not a valid Vite manifest'); + } + +- return assetHash; ++ return parsed; + } catch (e) { + console.error('Could not load manifest in: ', path); + console.error('Some filename lookups will fail'); +@@ -79,6 +96,26 @@ type ManifestPath = `./manifest.${Build}.json`; + const getManifestPath = (build: Build): ManifestPath => + `./manifest.${build}.json`; + ++/** ++ * Maps each build to its entry point source path in the Vite manifest. ++ */ ++const entrySourcePaths: Record = { ++ 'client.web': 'src/client/main.web.ts', ++ 'client.web.variant': 'src/client/main.web.ts', ++ 'client.apps': 'src/client/main.apps.ts', ++ 'client.editionsCrossword': 'src/client/main.editionsCrossword.tsx', ++}; ++ ++/** ++ * Finds a manifest entry by its `name` field. ++ * Used for chunks like "frameworks" that aren't keyed by source path. ++ */ ++const findEntryByName = ( ++ manifest: ViteManifest, ++ name: string, ++): ViteManifestEntry | undefined => ++ Object.values(manifest).find((entry) => entry.name === name); ++ + export const getPathFromManifest = ( + build: Build, + filename: `${string}.js`, +@@ -95,13 +132,26 @@ export const getPathFromManifest = ( + } + + const manifest = getManifest(getManifestPath(build)); +- const filenameFromManifest = manifest[filename]; + +- if (!filenameFromManifest) { ++ // Strip .js extension to get the logical name (e.g. "index", "frameworks") ++ const logicalName = filename.replace(/\.js$/, ''); ++ ++ let entry: ViteManifestEntry | undefined; ++ ++ if (logicalName === 'index') { ++ // Look up the entry point by its source path ++ const sourcePath = entrySourcePaths[build]; ++ entry = manifest[sourcePath]; ++ } else { ++ // For non-entry chunks (e.g. "frameworks"), find by name ++ entry = findEntryByName(manifest, logicalName); ++ } ++ ++ if (!entry) { + throw new Error(`Missing manifest for ${filename}`); + } + +- return `${ASSET_ORIGIN}assets/${filenameFromManifest}`; ++ return `${ASSET_ORIGIN}assets/${entry.file}`; + }; + + /** +@@ -112,7 +162,7 @@ export const getPathFromManifest = ( + * and stripped query parameters. + */ + const getScriptRegex = (build: Build) => +- new RegExp(`assets\\/\\w+\\.${build}\\.(\\w{20}\\.)?js(\\?.*)?$`); ++ new RegExp(`assets\\/\\w+\\.${build}\\.(\\w{8}\\.)?js(\\?.*)?$`); + + export const WEB = getScriptRegex('client.web'); + export const WEB_VARIANT_SCRIPT = getScriptRegex('client.web.variant'); +-- +2.50.1 (Apple Git-155) + + +From 90798a091345280e6ee481dc05f47da95ea821d8 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Mon, 6 Apr 2026 22:28:42 +0100 +Subject: [PATCH 04/17] Finalize Vite server SSR build config + +Simplify server.ts to use named re-export instead of webpack-hot-server-middleware +default export pattern. Add inlineDynamicImports to server config to produce a single +server.js file, preventing chunk collisions with client assets in dist/. Add default +export so server config works with vite build --config CLI. + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/src/server/server.ts | 8 ++------ + dotcom-rendering/vite/vite.config.server.ts | 9 ++++++++- + 2 files changed, 10 insertions(+), 7 deletions(-) + +diff --git a/dotcom-rendering/src/server/server.ts b/dotcom-rendering/src/server/server.ts +index de9ed3bda5..f20a595d2d 100644 +--- a/dotcom-rendering/src/server/server.ts ++++ b/dotcom-rendering/src/server/server.ts +@@ -1,12 +1,8 @@ +-import { devServer } from './server.dev'; + import { prodServer } from './server.prod'; + +-// this export is expected by webpack-hot-server-middleware +-// not used in prod +-// eslint-disable-next-line import/no-default-export -- it is what Webpack wants +-export default devServer; ++// Re-export devServer for use by Vite's ssrLoadModule in dev ++export { devServer } from './server.dev'; + +-// this is the actual production server + if (process.env.NODE_ENV === 'production') { + prodServer(); + } +diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts +index ae3316a258..bed78a62cb 100644 +--- a/dotcom-rendering/vite/vite.config.server.ts ++++ b/dotcom-rendering/vite/vite.config.server.ts +@@ -35,7 +35,10 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { + output: { + format: 'cjs', + entryFileNames: '[name].js', +- chunkFileNames: '[name].js', ++ // Produce a single server.js file (no code splitting), ++ // matching webpack's single-file output. This avoids ++ // server chunks colliding with client assets in dist/. ++ inlineDynamicImports: true, + }, + // webpack/bundles.js is CJS with module.exports β€” Rollup can't + // resolve named exports from it. Externalize so it's required at runtime. +@@ -57,3 +60,7 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { + external: DEV ? [/@aws-sdk\/.*/] : [], + }, + } satisfies UserConfig); ++ ++// Default export for `vite build --config` CLI usage ++// eslint-disable-next-line import/no-default-export -- required by Vite CLI ++export default serverConfig; +-- +2.50.1 (Apple Git-155) + + +From 8f05ffaba0c4ad2224b1fea70beb844afa839241 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Tue, 7 Apr 2026 21:41:40 +0100 +Subject: [PATCH 05/17] Add Vite dev server with SSR middleware and CJS + compatibility + +Replace webpack-dev-server + webpack-hot-server-middleware with Vite's +dev server in middleware mode. Uses vite.ssrLoadModule() for instant +server-side hot reload without full restart. + +Add ssr-cjs-plugin to wrap CJS packages (e.g. @guardian/bridget) with +ESM wrappers for Vite 6's ESM-based SSR module runner. Fix CJS named +imports across the codebase (jsdom, log4js, sanitize-html, +compare-versions, @creditkarma/thrift-server-core) by switching to +default import + destructuring pattern. + +Co-Authored-By: Claude Opus 4.6 +--- + .../src/components/MultiByline.tsx | 4 +- + dotcom-rendering/src/lib/assets.ts | 3 +- + dotcom-rendering/src/lib/domUtils.ts | 4 +- + .../src/lib/thrift/nativeConnection.ts | 6 +- + dotcom-rendering/src/lib/thrift/protocols.ts | 4 +- + .../src/lib/useIsBridgetCompatible.ts | 1 + + dotcom-rendering/src/model/enhance-H2s.ts | 4 +- + .../src/model/enhance-blockquotes.ts | 4 +- + .../src/model/enhance-dividers.ts | 4 +- + dotcom-rendering/src/model/enhance-embeds.ts | 4 +- + dotcom-rendering/src/model/enhance-images.ts | 4 +- + .../src/model/enhance-numbered-lists.ts | 4 +- + .../src/model/enhanceProductElement.ts | 4 +- + .../src/model/enhanceTableOfContents.ts | 4 +- + dotcom-rendering/src/model/sanitise.ts | 4 +- + dotcom-rendering/src/server/lib/logging.ts | 4 +- + dotcom-rendering/vite/dev-server.ts | 121 ++++++++++++++++++ + dotcom-rendering/vite/ssr-cjs-plugin.ts | 78 +++++++++++ + 18 files changed, 245 insertions(+), 16 deletions(-) + create mode 100644 dotcom-rendering/vite/dev-server.ts + create mode 100644 dotcom-rendering/vite/ssr-cjs-plugin.ts + +diff --git a/dotcom-rendering/src/components/MultiByline.tsx b/dotcom-rendering/src/components/MultiByline.tsx +index fdf1b398b7..661d48aa99 100644 +--- a/dotcom-rendering/src/components/MultiByline.tsx ++++ b/dotcom-rendering/src/components/MultiByline.tsx +@@ -12,7 +12,9 @@ import { + textSansItalic28, + textSansItalic34, + } from '@guardian/source/foundations'; +-import sanitise, { defaults } from 'sanitize-html'; ++import sanitise from 'sanitize-html'; ++ ++const { defaults } = sanitise; + import { + ArticleDesign, + ArticleDisplay, +diff --git a/dotcom-rendering/src/lib/assets.ts b/dotcom-rendering/src/lib/assets.ts +index a413a67b72..ba3c932023 100644 +--- a/dotcom-rendering/src/lib/assets.ts ++++ b/dotcom-rendering/src/lib/assets.ts +@@ -65,7 +65,8 @@ const isViteManifest = (manifest: unknown): manifest is ViteManifest => + isObject(manifest) && + Object.values(manifest).every( + (entry) => +- isObject(entry) && isString((entry as ViteManifestEntry).file), ++ isObject(entry) && ++ isString((entry as unknown as ViteManifestEntry).file), + ); + + const getManifest = makeMemoizedFunction((path: string): ViteManifest => { +diff --git a/dotcom-rendering/src/lib/domUtils.ts b/dotcom-rendering/src/lib/domUtils.ts +index 50cf100e1d..e8baf6e9c7 100644 +--- a/dotcom-rendering/src/lib/domUtils.ts ++++ b/dotcom-rendering/src/lib/domUtils.ts +@@ -1,4 +1,6 @@ +-import { JSDOM } from 'jsdom'; ++import jsdom from 'jsdom'; ++ ++const { JSDOM } = jsdom; + + export const parseHtml = (html: string): DocumentFragment => + JSDOM.fragment(html); +diff --git a/dotcom-rendering/src/lib/thrift/nativeConnection.ts b/dotcom-rendering/src/lib/thrift/nativeConnection.ts +index 3b1ab0659f..b526c5a7df 100644 +--- a/dotcom-rendering/src/lib/thrift/nativeConnection.ts ++++ b/dotcom-rendering/src/lib/thrift/nativeConnection.ts +@@ -7,13 +7,15 @@ import type { + TransportType, + TTransport, + } from '@creditkarma/thrift-server-core'; +-import { ++import thriftCore from '@creditkarma/thrift-server-core'; ++ ++const { + getProtocol, + getTransport, + TApplicationException, + TApplicationExceptionType, + ThriftConnection, +-} from '@creditkarma/thrift-server-core'; ++} = thriftCore; + import { TMultiplexedProtocol } from './protocols'; + + declare global { +diff --git a/dotcom-rendering/src/lib/thrift/protocols.ts b/dotcom-rendering/src/lib/thrift/protocols.ts +index 8878b7f445..d7722aa0a7 100644 +--- a/dotcom-rendering/src/lib/thrift/protocols.ts ++++ b/dotcom-rendering/src/lib/thrift/protocols.ts +@@ -9,7 +9,9 @@ import type { + TTransport, + TType, + } from '@creditkarma/thrift-server-core'; +-import { MessageType, TProtocol } from '@creditkarma/thrift-server-core'; ++import thriftCore from '@creditkarma/thrift-server-core'; ++ ++const { MessageType, TProtocol } = thriftCore; + + export abstract class TProtocolDecorator extends TProtocol { + private concreteProtocol: TProtocol; +diff --git a/dotcom-rendering/src/lib/useIsBridgetCompatible.ts b/dotcom-rendering/src/lib/useIsBridgetCompatible.ts +index 028c75793b..acad6af46e 100644 +--- a/dotcom-rendering/src/lib/useIsBridgetCompatible.ts ++++ b/dotcom-rendering/src/lib/useIsBridgetCompatible.ts +@@ -1,4 +1,5 @@ + import { compare } from 'compare-versions'; ++ + import { useEffect, useState } from 'react'; + import { getEnvironmentClient } from './bridgetApi'; + +diff --git a/dotcom-rendering/src/model/enhance-H2s.ts b/dotcom-rendering/src/model/enhance-H2s.ts +index 72ee2e0699..2c70258aac 100644 +--- a/dotcom-rendering/src/model/enhance-H2s.ts ++++ b/dotcom-rendering/src/model/enhance-H2s.ts +@@ -1,4 +1,6 @@ +-import { JSDOM } from 'jsdom'; ++import jsdom from 'jsdom'; ++ ++const { JSDOM } = jsdom; + import type { FEElement } from '../types/content'; + import { isLegacyTableOfContents } from './isLegacyTableOfContents'; + +diff --git a/dotcom-rendering/src/model/enhance-blockquotes.ts b/dotcom-rendering/src/model/enhance-blockquotes.ts +index 86aaca47c4..8bf2d3f5ec 100644 +--- a/dotcom-rendering/src/model/enhance-blockquotes.ts ++++ b/dotcom-rendering/src/model/enhance-blockquotes.ts +@@ -1,4 +1,6 @@ +-import { JSDOM } from 'jsdom'; ++import jsdom from 'jsdom'; ++ ++const { JSDOM } = jsdom; + import { ArticleDesign, type ArticleFormat } from '../lib/articleFormat'; + import type { BlockquoteBlockElement, FEElement } from '../types/content'; + +diff --git a/dotcom-rendering/src/model/enhance-dividers.ts b/dotcom-rendering/src/model/enhance-dividers.ts +index d66a615e17..b6ea977e0f 100644 +--- a/dotcom-rendering/src/model/enhance-dividers.ts ++++ b/dotcom-rendering/src/model/enhance-dividers.ts +@@ -1,4 +1,6 @@ +-import { JSDOM } from 'jsdom'; ++import jsdom from 'jsdom'; ++ ++const { JSDOM } = jsdom; + import type { FEElement } from '../types/content'; + + const isDinkus = (element: FEElement): boolean => { +diff --git a/dotcom-rendering/src/model/enhance-embeds.ts b/dotcom-rendering/src/model/enhance-embeds.ts +index 1f21c83200..c163df5d53 100644 +--- a/dotcom-rendering/src/model/enhance-embeds.ts ++++ b/dotcom-rendering/src/model/enhance-embeds.ts +@@ -1,4 +1,6 @@ +-import { JSDOM } from 'jsdom'; ++import jsdom from 'jsdom'; ++ ++const { JSDOM } = jsdom; + import type { FEElement } from '../types/content'; + + export const enhanceEmbeds = (elements: FEElement[]): FEElement[] => +diff --git a/dotcom-rendering/src/model/enhance-images.ts b/dotcom-rendering/src/model/enhance-images.ts +index 44024de18d..1fc3d341b8 100644 +--- a/dotcom-rendering/src/model/enhance-images.ts ++++ b/dotcom-rendering/src/model/enhance-images.ts +@@ -1,5 +1,7 @@ + import { isUndefined } from '@guardian/libs'; +-import { JSDOM } from 'jsdom'; ++import jsdom from 'jsdom'; ++ ++const { JSDOM } = jsdom; + import { + ArticleDesign, + type ArticleFormat, +diff --git a/dotcom-rendering/src/model/enhance-numbered-lists.ts b/dotcom-rendering/src/model/enhance-numbered-lists.ts +index 1fab92a8d6..c0fc85d7eb 100644 +--- a/dotcom-rendering/src/model/enhance-numbered-lists.ts ++++ b/dotcom-rendering/src/model/enhance-numbered-lists.ts +@@ -1,5 +1,7 @@ + import { isUndefined } from '@guardian/libs'; +-import { JSDOM } from 'jsdom'; ++import jsdom from 'jsdom'; ++ ++const { JSDOM } = jsdom; + import { ArticleDisplay, type ArticleFormat } from '../lib/articleFormat'; + import type { FEElement, StarRating, TextBlockElement } from '../types/content'; + +diff --git a/dotcom-rendering/src/model/enhanceProductElement.ts b/dotcom-rendering/src/model/enhanceProductElement.ts +index 1d0f8f91c2..ecaec36681 100644 +--- a/dotcom-rendering/src/model/enhanceProductElement.ts ++++ b/dotcom-rendering/src/model/enhanceProductElement.ts +@@ -1,4 +1,6 @@ +-import { JSDOM } from 'jsdom'; ++import jsdom from 'jsdom'; ++ ++const { JSDOM } = jsdom; + import type { + FEElement, + ProductBlockElement, +diff --git a/dotcom-rendering/src/model/enhanceTableOfContents.ts b/dotcom-rendering/src/model/enhanceTableOfContents.ts +index 24b6b13446..f6643ff998 100644 +--- a/dotcom-rendering/src/model/enhanceTableOfContents.ts ++++ b/dotcom-rendering/src/model/enhanceTableOfContents.ts +@@ -1,4 +1,6 @@ +-import { JSDOM } from 'jsdom'; ++import jsdom from 'jsdom'; ++ ++const { JSDOM } = jsdom; + import type { Block } from '../types/blocks'; + import type { + NumberedTitleBlockElement, +diff --git a/dotcom-rendering/src/model/sanitise.ts b/dotcom-rendering/src/model/sanitise.ts +index 8bc834d166..57c6c06cc4 100644 +--- a/dotcom-rendering/src/model/sanitise.ts ++++ b/dotcom-rendering/src/model/sanitise.ts +@@ -1,6 +1,8 @@ + import type { Config } from 'dompurify'; + import createDOMPurify from 'dompurify'; +-import { JSDOM } from 'jsdom'; ++import jsdom from 'jsdom'; ++ ++const { JSDOM } = jsdom; + + const { window } = new JSDOM(''); + const DOMPurify = createDOMPurify(window); +diff --git a/dotcom-rendering/src/server/lib/logging.ts b/dotcom-rendering/src/server/lib/logging.ts +index e4616dc03e..8a08f31dd1 100644 +--- a/dotcom-rendering/src/server/lib/logging.ts ++++ b/dotcom-rendering/src/server/lib/logging.ts +@@ -1,7 +1,9 @@ + import path from 'node:path'; + import { isObject } from '@guardian/libs'; + import type { Configuration, Layout, LoggingEvent } from 'log4js'; +-import { addLayout, configure, getLogger, shutdown } from 'log4js'; ++import log4js from 'log4js'; ++ ++const { addLayout, configure, getLogger, shutdown } = log4js; + import { type DCRLoggingStore, loggingStore } from './logging-store'; + + const logName = `dotcom-rendering.log`; +diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts +new file mode 100644 +index 0000000000..a77780c0ec +--- /dev/null ++++ b/dotcom-rendering/vite/dev-server.ts +@@ -0,0 +1,121 @@ ++/** ++ * Vite development server with SSR middleware. ++ * Replaces webpack-dev-server + webpack-hot-server-middleware. ++ * ++ * Usage: ++ * NODE_ENV=development node --import tsx vite/dev-server.ts ++ * ++ * Or via makefile: ++ * make vite-dev ++ */ ++ ++import { readFileSync } from 'node:fs'; ++import { resolve } from 'node:path'; ++import express from 'express'; ++import { createServer as createViteServer, mergeConfig } from 'vite'; ++import svgr from 'vite-plugin-svgr'; ++import { sharedConfig } from './vite.config.shared'; ++import { ssrCjsPlugin } from './ssr-cjs-plugin'; ++ ++const port = 3030; ++const root = process.cwd(); ++ ++async function start() { ++ const app = express(); ++ ++ // CJS packages in noExternal that need ESM wrapping for Vite 6's ++ // SSR module runner. Only packages using require()/module.exports ++ // that are matched by ssr.noExternal need to be listed here. ++ const cjsPackages = ['@guardian/bridget']; ++ ++ // Create Vite server in middleware mode. ++ // Handles client-side module transforms, HMR, and SSR module loading. ++ const devConfig = mergeConfig(sharedConfig, { ++ plugins: [ ++ svgr({ ++ svgrOptions: { svgo: false }, ++ }), ++ ssrCjsPlugin(cjsPackages), ++ ], ++ resolve: { ++ alias: { ++ // Client-side Preact aliasing for browser modules ++ react: 'preact/compat', ++ 'react-dom/test-utils': 'preact/test-utils', ++ 'react-dom': 'preact/compat', ++ }, ++ }, ++ server: { ++ middlewareMode: true, ++ hmr: true, ++ }, ++ appType: 'custom', ++ // Serve client modules from /assets/ to match production asset paths ++ base: '/assets/', ++ }); ++ // SSR config must be set after mergeConfig to avoid being overwritten. ++ devConfig.ssr = { ++ // Bundle ESM-only packages that can't be require()'d by Node. ++ noExternal: [/@guardian\//, 'screenfull', 'valibot'], ++ }; ++ const vite = await createViteServer(devConfig); ++ ++ // Vite's connect middleware handles HMR websocket, module transforms, ++ // and serves client-side files from /assets/ ++ app.use(vite.middlewares); ++ ++ // Parse JSON request bodies (used by POST routes for rendering) ++ app.use(express.json({ limit: '10mb' })); ++ ++ // Serve static files (favicons, etc.) ++ app.use('/static/frontend', express.static(resolve(root, 'src', 'static'))); ++ ++ // Dev landing page with links to test content ++ const devIndexHtml = readFileSync( ++ resolve(root, 'src', 'server', 'dev-index.html'), ++ 'utf-8', ++ ); ++ app.get('/', (_req, res) => { ++ res.type('html').send(devIndexHtml); ++ }); ++ ++ // CORS: allow localhost cross-origin requests for dev ++ app.use((req, res, next) => { ++ const hostname = process.env.HOSTNAME ?? 'localhost'; ++ if (req.hostname === hostname && req.headers.origin) { ++ res.setHeader('Access-Control-Allow-Origin', req.headers.origin); ++ } ++ next(); ++ }); ++ ++ // SSR: load server module on each request via Vite's ssrLoadModule. ++ // This re-evaluates the module when files change, providing instant ++ // server-side hot reload without a full restart. ++ app.use(async (req, res, next) => { ++ try { ++ const { devServer } = (await vite.ssrLoadModule( ++ './src/server/server.ts', ++ )) as { ++ devServer: () => express.Handler; ++ }; ++ devServer()(req, res, next); ++ } catch (e) { ++ // Let Vite fix the stack trace for SSR errors ++ if (e instanceof Error) { ++ vite.ssrFixStacktrace(e); ++ } ++ next(e); ++ } ++ }); ++ ++ app.listen(port, () => { ++ console.log( ++ `\n Vite DEV server running on http://localhost:${port}\n`, ++ ); ++ }); ++} ++ ++start().catch((err) => { ++ console.error('Failed to start dev server:', err); ++ process.exit(1); ++}); +diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.ts b/dotcom-rendering/vite/ssr-cjs-plugin.ts +new file mode 100644 +index 0000000000..b33a492bc2 +--- /dev/null ++++ b/dotcom-rendering/vite/ssr-cjs-plugin.ts +@@ -0,0 +1,78 @@ ++/** ++ * Vite plugin that wraps CJS packages for SSR compatibility. ++ * ++ * Vite 6's SSR module runner evaluates all modules as ESM, ++ * which breaks CJS packages that use `require()` or `module.exports`. ++ * This plugin wraps specified CJS packages with ESM wrappers ++ * using createRequire(). ++ * ++ * Only works for packages in ssr.noExternal (Vite skips plugin ++ * hooks for external packages). ++ */ ++import { createRequire } from 'node:module'; ++import { pathToFileURL } from 'node:url'; ++import type { Plugin } from 'vite'; ++ ++const nodeRequire = createRequire(pathToFileURL(__filename).href); ++ ++/** ++ * Creates a Vite plugin that wraps specified CJS packages ++ * for Vite 6's ESM-based SSR module runner. ++ * ++ * @param packages - Package names or prefixes to wrap (e.g. '@guardian/bridget') ++ */ ++export function ssrCjsPlugin(packages: string[]): Plugin { ++ const PREFIX = '\0cjs-compat:'; ++ ++ function shouldWrap(id: string): boolean { ++ if ( ++ id.startsWith('.') || ++ id.startsWith('/') || ++ id.startsWith('node:') ++ ) { ++ return false; ++ } ++ return packages.some((p) => id === p || id.startsWith(p + '/')); ++ } ++ ++ return { ++ name: 'ssr-cjs-compat', ++ enforce: 'pre', ++ resolveId(id) { ++ if (shouldWrap(id)) { ++ return PREFIX + id; ++ } ++ }, ++ load(id) { ++ if (!id.startsWith(PREFIX)) return; ++ const pkg = id.slice(PREFIX.length); ++ ++ // Introspect the CJS package's exports ++ let exportNames: string[] = []; ++ try { ++ const mod = nodeRequire(pkg) as Record; ++ exportNames = Object.keys(mod).filter( ++ (k) => ++ k !== 'default' && ++ k !== '__esModule' && ++ /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(k), ++ ); ++ } catch { ++ // If require fails, just provide a default export ++ } ++ ++ // Generate an ESM module that re-exports CJS members ++ const lines = [ ++ `import { createRequire } from 'node:module';`, ++ `const __require = createRequire(import.meta.url);`, ++ `const mod = __require('${pkg}');`, ++ `export default mod;`, ++ ...exportNames.map( ++ (name) => `export const ${name} = mod['${name}'];`, ++ ), ++ ]; ++ ++ return lines.join('\n'); ++ }, ++ }; ++} +-- +2.50.1 (Apple Git-155) + + +From c776377d33ce49def4d7a63c287a24acad0f0b8d Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Thu, 9 Apr 2026 22:39:35 +0100 +Subject: [PATCH 06/17] Migrate Storybook to Vite, remove webpack config and + dependencies + +- Replace @storybook/react-webpack5 with @storybook/react-vite +- Convert webpackFinal to viteFinal in .storybook/main.ts +- Remove @storybook/addon-webpack5-compiler-swc +- Remove all webpack magic comments (webpackChunkName, webpackMode) + from dynamic imports across the codebase +- Delete webpack config files (webpack.config.*.js, svg.cjs, .swcrc.json, @types/) +- Remove webpack and related dependencies from package.json: + webpack, webpack-cli, webpack-dev-server, webpack-dev-middleware, + webpack-hot-middleware, webpack-hot-server-middleware, webpack-merge, + webpack-manifest-plugin, webpack-assets-manifest, webpack-messages, + webpack-node-externals, webpack-bundle-analyzer, webpack-sources, + @svgr/webpack, swc-loader, css-loader, to-string-loader, + dynamic-import-polyfill, @guardian/shimport + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/.storybook/main.ts | 157 ++++----------- + dotcom-rendering/.storybook/preview.ts | 2 +- + dotcom-rendering/package.json | 25 +-- + dotcom-rendering/src/client/adaptiveSite.ts | 4 +- + dotcom-rendering/src/client/bootCmp.ts | 4 +- + .../src/client/islands/islandRegistry.ts | 12 +- + dotcom-rendering/src/client/ophan/ophan.ts | 4 +- + .../src/components/LiveBlogEpic.island.tsx | 4 +- + .../components/ReaderRevenueDev.island.tsx | 4 +- + .../gates/alternative-wording-control.tsx | 4 +- + .../alternative-wording-guardian-live.tsx | 12 +- + .../alternative-wording-saturday-edition.tsx | 12 +- + .../SignInGate/gates/fake-social-variant.tsx | 4 +- + .../gates/main-mandatory-variant.tsx | 4 +- + .../SignInGate/gates/main-variant.tsx | 16 +- + .../src/components/SlotBodyEnd/BrazeEpic.tsx | 4 +- + .../SlotBodyEnd/ReaderRevenueEpic.tsx | 4 +- + .../StickyBottomBanner/BrazeBanner.tsx | 4 +- + .../ReaderRevenueBanner.tsx | 6 +- + .../src/components/TopBarSupport.island.tsx | 6 +- + .../src/lib/braze/initialiseBraze.ts | 2 +- + dotcom-rendering/src/lib/thrift/protocols.ts | 4 +- + dotcom-rendering/webpack/.swcrc.json | 18 -- + .../webpack-filter-warnings-plugin/index.d.ts | 10 - + .../@types/webpack-messages/index.d.ts | 20 -- + dotcom-rendering/webpack/svg.cjs | 15 -- + .../webpack/webpack.config.client.js | 184 ------------------ + .../webpack/webpack.config.dev-server.js | 81 -------- + dotcom-rendering/webpack/webpack.config.js | 130 ------------- + .../webpack/webpack.config.server.js | 87 --------- + 30 files changed, 83 insertions(+), 760 deletions(-) + delete mode 100644 dotcom-rendering/webpack/.swcrc.json + delete mode 100644 dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts + delete mode 100644 dotcom-rendering/webpack/@types/webpack-messages/index.d.ts + delete mode 100644 dotcom-rendering/webpack/svg.cjs + delete mode 100644 dotcom-rendering/webpack/webpack.config.client.js + delete mode 100644 dotcom-rendering/webpack/webpack.config.dev-server.js + delete mode 100644 dotcom-rendering/webpack/webpack.config.js + delete mode 100644 dotcom-rendering/webpack/webpack.config.server.js + +diff --git a/dotcom-rendering/.storybook/main.ts b/dotcom-rendering/.storybook/main.ts +index 420f7a2c41..281949a929 100644 +--- a/dotcom-rendering/.storybook/main.ts ++++ b/dotcom-rendering/.storybook/main.ts +@@ -1,22 +1,13 @@ +-import { defineMain } from '@storybook/react-webpack5/node'; ++import { defineMain } from '@storybook/react-vite/node'; + import path from 'node:path'; +-import { createRequire } from 'node:module'; +-import webpack from 'webpack'; +-import { saveStories } from '../scripts/gen-stories/get-stories.mjs'; +-import type { StorybookConfig } from '@storybook/react-webpack5'; +-import { svgr } from '../webpack/svg.cjs'; + import process from 'node:process'; ++import { saveStories } from '../scripts/gen-stories/get-stories.mjs'; ++import type { StorybookConfig } from '@storybook/react-vite'; ++import svgr from 'vite-plugin-svgr'; + + // ESM equivalent of __dirname + const __dirname = import.meta.dirname; + +-// Import CommonJS webpack config in ESM context +-const require = createRequire(import.meta.url); +-const { +- transpileExclude, +- getLoaders, +-} = require('../webpack/webpack.config.client.js'); +- + // Generate dynamic Card and Layout stories + saveStories(); + +@@ -40,41 +31,48 @@ export default defineMain({ + { from: '../src/static', to: '/static/frontend/' }, + ], + +- addons: [ +- '@storybook/addon-webpack5-compiler-swc', +- '@storybook/addon-docs', +- '@storybook/addon-a11y', +- ], ++ addons: ['@storybook/addon-docs', '@storybook/addon-a11y'], + +- webpackFinal: async (config) => { +- // Get project specific webpack options +- config = webpackConfig(config); ++ viteFinal: async (config) => { ++ config.plugins ??= []; ++ config.plugins.push( ++ svgr({ ++ svgrOptions: { svgo: false }, ++ }), ++ ); ++ ++ config.define ??= {}; ++ config.define['process.env'] = JSON.stringify({ ++ SDC_URL: process.env.SDC_URL, ++ HOSTNAME: process.env.HOSTNAME, ++ }); + + config.resolve ??= {}; ++ config.resolve.alias = { ++ ...config.resolve.alias, ++ ++ Buffer: 'buffer', ++ react: 'react', ++ 'react-dom': 'react-dom', ++ ++ // Mock JSDOM for storybook - it relies on native node.js packages ++ jsdom$: path.resolve(__dirname, './mocks/jsdom.ts'), ++ ++ // log4js tries to call "fs" in storybook -- we can ignore it ++ [`${path.resolve(__dirname, '../src/server/lib/logging')}$`]: ++ path.resolve(__dirname, './mocks/log4js.ts'), ++ ++ // Mock BridgetApi for storybook ++ [`${path.resolve(__dirname, '../src/lib/bridgetApi')}$`]: ++ path.resolve(__dirname, './mocks/bridgetApi.ts'), ++ ++ // Mock identity auth frontend to prevent Storybook components from hanging in Pending ++ '@guardian/identity-auth-frontend': path.resolve( ++ __dirname, ++ './mocks/identityAuthFrontend.ts', ++ ), ++ }; + +- // Global options for webpack +- config.resolve.extensions?.push('.ts', '.tsx'); +- +- config.resolve.fallback ??= {}; +- // clean-css will try to import these packages +- config.resolve.fallback['http'] = false; +- config.resolve.fallback['https'] = false; +- config.resolve.fallback['os'] = false; +- +- // Required as otherwise 'process' will not be defined when included on its own (without .env) +- // e.g process?.env?.SOME_VAR +- config.plugins?.push( +- new webpack.DefinePlugin({ +- 'process.env': JSON.stringify({ +- SDC_URL: process.env.SDC_URL, +- HOSTNAME: process.env.HOSTNAME, +- }), +- }), +- // We rely on Buffer for our bridget thrift client +- new webpack.ProvidePlugin({ +- Buffer: ['buffer', 'Buffer'], +- }), +- ); + return config; + }, + +@@ -86,7 +84,7 @@ export default defineMain({ + }), + + framework: { +- name: '@storybook/react-webpack5', ++ name: '@storybook/react-vite', + options: {}, + }, + +@@ -94,72 +92,3 @@ export default defineMain({ + reactDocgen: 'react-docgen', + }, + }); +- +-/** the webpack.Configuration type from Storybook */ +-type Configuration = Parameters< +- NonNullable +->[0]; +- +-const webpackConfig = (config: Configuration) => { +- const rules = config.module?.rules ?? []; +- +- config.resolve ??= {}; +- +- config.resolve.alias = { +- ...config.resolve?.alias, +- +- Buffer: 'buffer', +- react: 'react', +- 'react-dom': 'react-dom', +- +- // Mock JSDOM for storybook - it relies on native node.js packages +- // Allows us to use enhancers in stories for better testing of components & full articles +- jsdom$: path.resolve(__dirname, './mocks/jsdom.ts'), +- +- // log4js tries to call "fs" in storybook -- we can ignore it +- [`${path.resolve(__dirname, '../src/server/lib/logging')}$`]: +- path.resolve(__dirname, './mocks/log4js.ts'), +- +- // Mock BridgetApi for storybook +- [`${path.resolve(__dirname, '../src/lib/bridgetApi')}$`]: path.resolve( +- __dirname, +- './mocks/bridgetApi.ts', +- ), +- +- // Mock identity auth frontend to prevent Storybook components from hanging in Pending +- '@guardian/identity-auth-frontend': path.resolve( +- __dirname, +- './mocks/identityAuthFrontend.ts', +- ), +- }; +- +- const webpackLoaders = getLoaders('client.web'); +- +- // https://swc.rs/docs/usage/swc-loader#with-babel-loader +- if (webpackLoaders[0].loader.startsWith('swc')) { +- webpackLoaders[0].options.parseMap = true; +- } +- +- // Support typescript in Storybook +- // https://storybook.js.org/docs/configurations/typescript-config/ +- rules.push({ +- test: /\.[jt]sx?|mjs$/, +- include: [path.resolve(__dirname, '../')], +- exclude: transpileExclude, +- use: webpackLoaders, +- }); +- +- // modify storybook's file-loader rule to avoid conflicts with our svg +- const fileLoaderRule = rules.find((rule) => { +- return String(rule?.test).includes('svg'); +- }); +- fileLoaderRule && +- typeof fileLoaderRule !== 'string' && +- (fileLoaderRule.exclude = /\.svg$/); +- rules.push(svgr); +- config.resolve.modules = [ +- ...((config && config.resolve && config.resolve.modules) || []), +- ]; +- +- return config; +-}; +diff --git a/dotcom-rendering/.storybook/preview.ts b/dotcom-rendering/.storybook/preview.ts +index 814527d8b2..44a313c476 100644 +--- a/dotcom-rendering/.storybook/preview.ts ++++ b/dotcom-rendering/.storybook/preview.ts +@@ -15,7 +15,7 @@ import { mockFetch } from '../src/lib/mockRESTCalls'; + import { setABTests } from '../src/lib/useAB'; + import { ConfigContextDecorator } from './decorators/configContextDecorator'; + import { sb } from 'storybook/test'; +-import { definePreview } from '@storybook/react-webpack5'; ++import { definePreview } from '@storybook/react-vite'; + import { + globalColourScheme, + globalColourSchemeDecorator, +diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json +index b40ca0245f..2c986ccdb3 100644 +--- a/dotcom-rendering/package.json ++++ b/dotcom-rendering/package.json +@@ -40,7 +40,6 @@ + "@guardian/libs": "31.0.0", + "@guardian/ophan-tracker-js": "2.8.0", + "@guardian/react-crossword": "11.1.0", +- "@guardian/shimport": "1.0.2", + "@guardian/source": "11.3.0", + "@guardian/source-development-kitchen": "18.1.1", + "@guardian/support-dotcom-components": "8.4.2", +@@ -49,9 +48,7 @@ + "@sentry/browser": "10.39.0", + "@storybook/addon-a11y": "10.3.3", + "@storybook/addon-docs": "10.3.3", +- "@storybook/addon-webpack5-compiler-swc": "4.0.3", +- "@storybook/react-webpack5": "10.3.3", +- "@svgr/webpack": "8.1.0", ++ "@storybook/react-vite": "10.3.3", + "@swc/cli": "0.7.8", + "@swc/core": "1.13.5", + "@swc/jest": "0.2.39", +@@ -84,9 +81,6 @@ + "@types/semver": "7.5.6", + "@types/trusted-types": "2.0.7", + "@types/twitter-for-web": "0.0.6", +- "@types/webpack-bundle-analyzer": "4.7.0", +- "@types/webpack-env": "1.18.8", +- "@types/webpack-node-externals": "3.0.4", + "@types/youtube": "0.0.50", + "ajv": "8.18.0", + "ajv-formats": "2.1.1", +@@ -100,9 +94,7 @@ + "compression": "1.7.4", + "constructs": "10.6.0", + "cpy": "11.0.0", +- "css-loader": "7.1.2", + "dompurify": "3.2.4", +- "dynamic-import-polyfill": "0.1.1", + "eslint": "8.57.1", + "eslint-plugin-custom-elements": "0.0.8", + "eslint-plugin-jsx-a11y": "6.7.1", +@@ -145,9 +137,7 @@ + "storybook": "10.3.3", + "stylelint": "16.26.1", + "stylelint-config-recommended": "14.0.0", +- "swc-loader": "0.2.6", + "swr": "1.3.0", +- "to-string-loader": "1.2.0", + "trusted-types": "2.0.0", + "ts-unused-exports": "10.1.0", + "tslib": "2.6.2", +@@ -159,19 +149,6 @@ + "url": "0.11.4", + "valibot": "0.28.1", + "web-vitals": "4.2.3", +- "webpack": "5.104.1", +- "webpack-assets-manifest": "6.3.0", +- "webpack-bundle-analyzer": "4.10.2", +- "webpack-cli": "6.0.1", +- "webpack-dev-middleware": "7.4.5", +- "webpack-dev-server": "5.2.2", +- "webpack-hot-middleware": "2.26.1", +- "webpack-hot-server-middleware": "0.6.1", +- "webpack-manifest-plugin": "6.0.1", +- "webpack-merge": "6.0.1", +- "webpack-messages": "2.0.4", +- "webpack-node-externals": "3.0.0", +- "webpack-sources": "3.3.3", + "zod": "4.1.12" + }, + "devDependencies": { +diff --git a/dotcom-rendering/src/client/adaptiveSite.ts b/dotcom-rendering/src/client/adaptiveSite.ts +index 6f86e9657a..4f6e59aaad 100644 +--- a/dotcom-rendering/src/client/adaptiveSite.ts ++++ b/dotcom-rendering/src/client/adaptiveSite.ts +@@ -30,9 +30,7 @@ export const shouldAdapt = async (): Promise => { + } + + // only evaluate this code if we want to adapt in response to page performance +- const { isPerformingPoorly } = await import( +- /* webpackMode: "eager" */ './poorPerformanceMonitoring' +- ); ++ const { isPerformingPoorly } = await import('./poorPerformanceMonitoring'); + + return isPerformingPoorly(); + }; +diff --git a/dotcom-rendering/src/client/bootCmp.ts b/dotcom-rendering/src/client/bootCmp.ts +index a4f391ca5f..e47a7833b1 100644 +--- a/dotcom-rendering/src/client/bootCmp.ts ++++ b/dotcom-rendering/src/client/bootCmp.ts +@@ -41,9 +41,7 @@ const initialiseCmp = async () => { + * as a separate chunk. @see {PrivacySettingsLink.island.tsx} + */ + const eagerlyImportPrivacySettingsLinkIsland = () => +- import( +- /* webpackMode: 'eager' */ '../components/PrivacySettingsLink.island' +- ); ++ import('../components/PrivacySettingsLink.island'); + + /** + * Keep this file in sync with CONSENT_TIMING in static/src/javascripts/boot.js in frontend +diff --git a/dotcom-rendering/src/client/islands/islandRegistry.ts b/dotcom-rendering/src/client/islands/islandRegistry.ts +index 6e8524d5cb..b2e5af7d6d 100644 +--- a/dotcom-rendering/src/client/islands/islandRegistry.ts ++++ b/dotcom-rendering/src/client/islands/islandRegistry.ts +@@ -2,16 +2,8 @@ + * Static registry of all island components, built at compile time + * via Vite's import.meta.glob. + * +- * Each matched file becomes a lazy chunk (eager: false), exactly +- * matching the previous webpack behaviour where each island was +- * a separate dynamically-loaded chunk. +- * +- * Replaces the webpack magic comments in doHydration.tsx: +- * import( +- * /* webpackInclude: /\.island\.tsx$/ *​/ +- * /* webpackChunkName: "[request]" *​/ +- * `../../components/${name}.island` +- * ) ++ * Each matched file becomes a lazy chunk (eager: false), so each ++ * island is a separate dynamically-loaded chunk. + */ + const islandModules = import.meta.glob>( + '../../components/*.island.tsx', +diff --git a/dotcom-rendering/src/client/ophan/ophan.ts b/dotcom-rendering/src/client/ophan/ophan.ts +index d7259ee1b8..3c72a3305e 100644 +--- a/dotcom-rendering/src/client/ophan/ophan.ts ++++ b/dotcom-rendering/src/client/ophan/ophan.ts +@@ -48,9 +48,7 @@ export const getOphan = async ( + } + + // We've taken '@guardian/ophan-tracker-js' out of the apps client bundle (made it external in webpack) because we don't ever expect this method to be called. Tracking in apps is done natively. +- const { default: ophan } = await import( +- /* webpackMode: "eager" */ '@guardian/ophan-tracker-js' +- ); ++ const { default: ophan } = await import('@guardian/ophan-tracker-js'); + + const record: (typeof ophan)['record'] = (event, callback) => { + ophan.record(event, callback); +diff --git a/dotcom-rendering/src/components/LiveBlogEpic.island.tsx b/dotcom-rendering/src/components/LiveBlogEpic.island.tsx +index 62106de0d7..e16bd30455 100644 +--- a/dotcom-rendering/src/components/LiveBlogEpic.island.tsx ++++ b/dotcom-rendering/src/components/LiveBlogEpic.island.tsx +@@ -41,9 +41,7 @@ const useEpic = ({ name }: { name: string }) => { + const [Epic, setEpic] = useState>(); + + useEffect(() => { +- import( +- /* webpackChunkName: "contributions-liveblog-epic" */ `./marketing/epics/ContributionsLiveblogEpic` +- ) ++ import(`./marketing/epics/ContributionsLiveblogEpic`) + .then((epicModule) => { + setEpic(() => epicModule.ContributionsLiveblogEpic); + }) +diff --git a/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx b/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx +index f5cf94bb4c..319eefa98e 100644 +--- a/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx ++++ b/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx +@@ -11,9 +11,7 @@ export const ReaderRevenueDev = ({ shouldHideReaderRevenue }: Props) => { + const loadAndRun = + (key: K) => + (asExistingSupporter: boolean) => +- import( +- /* webpackChunkName: "readerRevenueDevUtils" */ '../lib/readerRevenueDevUtils' +- ) ++ import('../lib/readerRevenueDevUtils') + .then((utils) => + utils[key]( + asExistingSupporter, +diff --git a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx +index 3cb0b3aba7..8fc31966fb 100644 +--- a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx ++++ b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx +@@ -9,9 +9,7 @@ const SignInGateMain = React.lazy(() => { + 'identity', + 'SignInGateMain', + ); +- return import( +- /* webpackChunkName: "SignInGateMain" */ '../gateDesigns/SignInGateMain' +- ).then((module) => { ++ return import('../gateDesigns/SignInGateMain').then((module) => { + endPerformanceMeasure(); + return { default: module.SignInGateMain }; + }); +diff --git a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx +index 030d649cac..d80b569d31 100644 +--- a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx ++++ b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx +@@ -9,12 +9,12 @@ const SignInGateCustomizableText = React.lazy(() => { + 'identity', + 'SignInGateCustomizableText', + ); +- return import( +- /* webpackChunkName: "SignInGateCustomizableText" */ '../gateDesigns/SignInGateCustomizableText' +- ).then((module) => { +- endPerformanceMeasure(); +- return { default: module.SignInGateCustomizableText }; +- }); ++ return import('../gateDesigns/SignInGateCustomizableText').then( ++ (module) => { ++ endPerformanceMeasure(); ++ return { default: module.SignInGateCustomizableText }; ++ }, ++ ); + }); + + export const signInGateComponent: SignInGateComponent = { +diff --git a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx +index f0a3510d87..3dba5cbe84 100644 +--- a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx ++++ b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx +@@ -9,12 +9,12 @@ const SignInGateCustomizableText = React.lazy(() => { + 'identity', + 'SignInGateCustomizableText', + ); +- return import( +- /* webpackChunkName: "SignInGateCustomizableText" */ '../gateDesigns/SignInGateCustomizableText' +- ).then((module) => { +- endPerformanceMeasure(); +- return { default: module.SignInGateCustomizableText }; +- }); ++ return import('../gateDesigns/SignInGateCustomizableText').then( ++ (module) => { ++ endPerformanceMeasure(); ++ return { default: module.SignInGateCustomizableText }; ++ }, ++ ); + }); + + export const signInGateComponent: SignInGateComponent = { +diff --git a/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx b/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx +index 43bbf6a421..094e562d18 100644 +--- a/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx ++++ b/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx +@@ -10,9 +10,7 @@ const SignInGateFakeSocial = React.lazy(() => { + 'SignInGateFakeSocial', + ); + +- return import( +- /* webpackChunkName: "SignInGateFakeSocial" */ '../gateDesigns/SignInGateFakeSocial' +- ).then((module) => { ++ return import('../gateDesigns/SignInGateFakeSocial').then((module) => { + endPerformanceMeasure(); + return { default: module.SignInGateFakeSocial }; + }); +diff --git a/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx b/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx +index cdc046d69f..18ba15a2d8 100644 +--- a/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx ++++ b/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx +@@ -9,9 +9,7 @@ const SignInGateMain = React.lazy(() => { + 'identity', + 'SignInGateMain', + ); +- return import( +- /* webpackChunkName: "SignInGateMain" */ '../gateDesigns/SignInGateMain' +- ).then((module) => { ++ return import('../gateDesigns/SignInGateMain').then((module) => { + endPerformanceMeasure(); + return { default: module.SignInGateMain }; + }); +diff --git a/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx b/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx +index badaa41499..f3ea9b7343 100644 +--- a/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx ++++ b/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx +@@ -9,9 +9,7 @@ const SignInGateMain = React.lazy(() => { + 'identity', + 'SignInGateMain', + ); +- return import( +- /* webpackChunkName: "SignInGateMain" */ '../gateDesigns/SignInGateMain' +- ).then((module) => { ++ return import('../gateDesigns/SignInGateMain').then((module) => { + endPerformanceMeasure(); + return { default: module.SignInGateMain }; + }); +@@ -22,12 +20,12 @@ const SignInGateMainCheckoutComplete = React.lazy(() => { + 'identity', + 'SignInGateMainCheckoutComplete', + ); +- return import( +- /* webpackChunkName: "SignInGateMainCheckoutComplete" */ '../gateDesigns/SignInGateMainCheckoutComplete' +- ).then((module) => { +- endPerformanceMeasure(); +- return { default: module.SignInGateMainCheckoutComplete }; +- }); ++ return import('../gateDesigns/SignInGateMainCheckoutComplete').then( ++ (module) => { ++ endPerformanceMeasure(); ++ return { default: module.SignInGateMainCheckoutComplete }; ++ }, ++ ); + }); + + /** +diff --git a/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx b/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx +index 6aab3ee4ff..9d4e67201b 100644 +--- a/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx ++++ b/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx +@@ -195,9 +195,7 @@ export const MaybeBrazeEpic = ({ meta, countryCode, idApiUrl }: EpicConfig) => { + useState(); + + useEffect(() => { +- import( +- /* webpackChunkName: "guardian-braze-components-end-of-article" */ '@guardian/braze-components/end-of-article' +- ) ++ import('@guardian/braze-components/end-of-article') + .then((module) => { + setBrazeComponent(() => module.BrazeEndOfArticleComponent); + }) +diff --git a/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx b/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx +index 5c8bc8bb02..e98ca95cde 100644 +--- a/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx ++++ b/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx +@@ -172,9 +172,7 @@ export const ReaderRevenueEpic = ({ props }: ModuleData) => { + 'contributions-epic-module', + ); + +- import( +- /* webpackChunkName: "contributions-epic" */ `../marketing/epics/ContributionsEpic` +- ) ++ import(`../marketing/epics/ContributionsEpic`) + .then((epicModule) => { + endPerformanceMeasure(); + setEpic(() => epicModule.ContributionsEpic); // useState requires functions to be wrapped +diff --git a/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx b/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx +index bfa6a6f34a..8e537426c1 100644 +--- a/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx ++++ b/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx +@@ -187,9 +187,7 @@ export const BrazeBanner = ({ meta, idApiUrl }: Props) => { + useState(); + + useEffect(() => { +- import( +- /* webpackChunkName: "guardian-braze-components-banner" */ '@guardian/braze-components/banner' +- ) ++ import('@guardian/braze-components/banner') + .then((module) => { + setBrazeComponent(() => module.BrazeBannerComponent); + }) +diff --git a/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx b/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx +index 15a83bd012..5cc6028cee 100644 +--- a/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx ++++ b/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx +@@ -316,10 +316,8 @@ export const ReaderRevenueBanner = ({ + + useEffect(() => { + (name === 'SignInPromptBanner' +- ? /* webpackChunkName: "sign-in-prompt-banner" */ +- import(`../marketing/banners/signInPrompt/SignInPromptBanner`) +- : /* webpackChunkName: "designable-banner-v2" */ +- import(`../marketing/banners/designableBanner/v2/Banner`) ++ ? import(`../marketing/banners/signInPrompt/SignInPromptBanner`) ++ : import(`../marketing/banners/designableBanner/v2/Banner`) + ) + .then((bannerModule: { [key: string]: React.ElementType }) => { + setBanner(() => bannerModule[name] ?? null); +diff --git a/dotcom-rendering/src/components/TopBarSupport.island.tsx b/dotcom-rendering/src/components/TopBarSupport.island.tsx +index f1d76407bd..4659198f91 100644 +--- a/dotcom-rendering/src/components/TopBarSupport.island.tsx ++++ b/dotcom-rendering/src/components/TopBarSupport.island.tsx +@@ -106,10 +106,8 @@ const ReaderRevenueLinksRemote = ({ + + return ( + module.name === 'SignInPromptHeader' +- ? /* webpackChunkName: "sign-in-prompt-header" */ +- import('./marketing/header/SignInPromptHeader') +- : /* webpackChunkName: "header" */ +- import('./marketing/header/Header') ++ ? import('./marketing/header/SignInPromptHeader') ++ : import('./marketing/header/Header') + ).then( + (headerModule: { + [key: string]: React.ElementType; +diff --git a/dotcom-rendering/src/lib/braze/initialiseBraze.ts b/dotcom-rendering/src/lib/braze/initialiseBraze.ts +index ab56e38d36..b389b8af08 100644 +--- a/dotcom-rendering/src/lib/braze/initialiseBraze.ts ++++ b/dotcom-rendering/src/lib/braze/initialiseBraze.ts +@@ -16,7 +16,7 @@ const SDK_OPTIONS: braze.InitializationOptions = { + + const initialiseBraze = async (apiKey: string): Promise => { + const importedBraze = (await import( +- /* webpackChunkName: "braze-web-sdk-core" */ '@braze/web-sdk' ++ '@braze/web-sdk' + )) as unknown as typeof braze; + + importedBraze.setLogger((message) => log('tx', message)); +diff --git a/dotcom-rendering/src/lib/thrift/protocols.ts b/dotcom-rendering/src/lib/thrift/protocols.ts +index d7722aa0a7..8878b7f445 100644 +--- a/dotcom-rendering/src/lib/thrift/protocols.ts ++++ b/dotcom-rendering/src/lib/thrift/protocols.ts +@@ -9,9 +9,7 @@ import type { + TTransport, + TType, + } from '@creditkarma/thrift-server-core'; +-import thriftCore from '@creditkarma/thrift-server-core'; +- +-const { MessageType, TProtocol } = thriftCore; ++import { MessageType, TProtocol } from '@creditkarma/thrift-server-core'; + + export abstract class TProtocolDecorator extends TProtocol { + private concreteProtocol: TProtocol; +diff --git a/dotcom-rendering/webpack/.swcrc.json b/dotcom-rendering/webpack/.swcrc.json +deleted file mode 100644 +index 51f3d35ea9..0000000000 +--- a/dotcom-rendering/webpack/.swcrc.json ++++ /dev/null +@@ -1,18 +0,0 @@ +-{ +- "$schema": "http://json.schemastore.org/swcrc", +- "jsc": { +- "parser": { +- "syntax": "typescript", +- "tsx": true, +- "decorators": false, +- "dynamicImport": true +- }, +- "transform": { +- "react": { +- "runtime": "automatic", +- "importSource": "@emotion/react" +- } +- } +- }, +- "sourceMaps": true +-} +diff --git a/dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts b/dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts +deleted file mode 100644 +index f1326bc8cf..0000000000 +--- a/dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts ++++ /dev/null +@@ -1,10 +0,0 @@ +-declare module 'webpack-filter-warnings-plugin' { +- import type { Compiler, WebpackPluginInstance } from 'webpack'; +- +- // eslint-disable-next-line import/no-default-export -- this is how the module exports +- export default class FilterWarningsPlugin implements WebpackPluginInstance { +- constructor(options: { exclude: RegExp }); +- +- apply(compiler: Compiler): void; +- } +-} +diff --git a/dotcom-rendering/webpack/@types/webpack-messages/index.d.ts b/dotcom-rendering/webpack/@types/webpack-messages/index.d.ts +deleted file mode 100644 +index fde4bc76b8..0000000000 +--- a/dotcom-rendering/webpack/@types/webpack-messages/index.d.ts ++++ /dev/null +@@ -1,20 +0,0 @@ +-declare module 'webpack-messages' { +- import type * as webpack from 'webpack'; +- +- type Options = { +- name: string; +- onComplete?: (...args: unknown[]) => void; +- logger?: (msg: string) => void; +- }; +- +- class WebpackMessages implements webpack.WebpackPluginInstance { +- constructor(options: Options); +- +- printError(str: string, arr: string[]): void; +- +- apply(compiler: webpack.Compiler): void; +- } +- +- // eslint-disable-next-line import/no-default-export -- it is how the module is exported +- export default WebpackMessages; +-} +diff --git a/dotcom-rendering/webpack/svg.cjs b/dotcom-rendering/webpack/svg.cjs +deleted file mode 100644 +index 0976f29ade..0000000000 +--- a/dotcom-rendering/webpack/svg.cjs ++++ /dev/null +@@ -1,15 +0,0 @@ +-/** @satisfies {import('webpack').RuleSetRule} */ +-const svgr = { +- test: /\.svg$/, +- use: [ +- { +- loader: '@svgr/webpack', +- options: { +- /** this ensures that we keep the viewBox for imported SVGs */ +- svgo: false, +- }, +- }, +- ], +-}; +- +-module.exports = { svgr }; +diff --git a/dotcom-rendering/webpack/webpack.config.client.js b/dotcom-rendering/webpack/webpack.config.client.js +deleted file mode 100644 +index 69fe9028e6..0000000000 +--- a/dotcom-rendering/webpack/webpack.config.client.js ++++ /dev/null +@@ -1,184 +0,0 @@ +-const webpack = require('webpack'); +-const { WebpackManifestPlugin } = require('webpack-manifest-plugin'); +-const swcConfig = require('./.swcrc.json'); +-const { getBrowserTargets } = require('./browser-targets'); +-const { svgr } = require('./svg.cjs'); +- +-const DEV = process.env.NODE_ENV === 'development'; +- +-/** @param {Record | string[]} targets */ +-const swcLoader = (targets) => [ +- { +- loader: 'swc-loader', +- options: { +- ...swcConfig, +- env: { +- dynamicImport: true, +- targets, +- }, +- }, +- }, +-]; +- +-/** @typedef {import('../src/lib/assets').Build} Build*/ +- +-/** +- * @param {Build} build +- * @returns {string} +- */ +-const generateName = (build) => { +- const chunkhashString = DEV ? '' : '.[chunkhash]'; +- return `[name].${build}${chunkhashString}.js`; +-}; +- +-/** +- * @param {Build} build +- * @returns {string} +- */ +-const getEntryIndex = (build) => { +- switch (build) { +- case 'client.editionsCrossword': +- return './src/client/main.editionsCrossword.tsx'; +- case 'client.apps': +- return './src/client/main.apps.ts'; +- default: +- return './src/client/main.web.ts'; +- } +-}; +- +-/** +- * @param {Build} build +- * @returns {{ loader: string, options: Record}} +- */ +-const getLoaders = (build) => { +- switch (build) { +- case 'client.editionsCrossword': +- case 'client.apps': +- return swcLoader(['android >= 5', 'ios >= 12']); +- case 'client.web.variant': +- case 'client.web': +- return swcLoader(getBrowserTargets()); +- } +-}; +- +-/** +- * @param {{ build: Build }} options +- * @returns {import('webpack').Configuration} +- */ +-module.exports = ({ build }) => ({ +- entry: { +- index: getEntryIndex(build), +- debug: './src/client/debug/debug.ts', +- }, +- optimization: +- // We don't need chunk optimization for apps as we use the 'LimitChunkCountPlugin' to produce just 1 chunk +- build === 'client.apps' || build === 'client.editionsCrossword' +- ? undefined +- : { +- splitChunks: { +- cacheGroups: { +- // our own chunk, which is shared between all bundles +- frameworks: { +- test: /[\\/]node_modules[\\/](preact|react-is|hoist-non-react-statistics|swr|@emotion|stylis)[\\/]/, +- chunks: 'all', +- name: 'frameworks', +- enforce: true, +- }, +- // defining our own chunk above overrides the webpack defaults, +- // so now we restore them +- // https://webpack.js.org/plugins/split-chunks-plugin/#optimizationsplitchunks +- defaultVendors: { +- test: /[\\/]node_modules[\\/]/, +- priority: -10, +- reuseExistingChunk: true, +- }, +- default: { +- minChunks: 2, +- priority: -20, +- reuseExistingChunk: true, +- }, +- }, +- }, +- }, +- output: { +- filename: (data) => { +- // We don't want to hash the debug script so it can be used in bookmarklets +- if (data.chunk.name === 'debug') return `[name].js`; +- return generateName(build); +- }, +- chunkFilename: generateName(build), +- publicPath: '', +- }, +- plugins: [ +- new WebpackManifestPlugin({ +- fileName: `manifest.${build}.json`, +- }), +- ...(build === 'client.apps' || build === 'client.editionsCrossword' +- ? [ +- new webpack.optimize.LimitChunkCountPlugin({ +- maxChunks: 1, +- }), +- new webpack.ProvidePlugin({ +- Buffer: ['buffer', 'Buffer'], +- }), +- ] +- : []), +- ], +- externals: getExternalModules(build), +- module: { +- rules: [ +- { +- test: /\.[jt]sx?|mjs$/, +- exclude: module.exports.transpileExclude, +- use: getLoaders(build), +- }, +- { +- test: /\.css$/, +- use: ['to-string-loader', 'css-loader'], +- }, +- svgr, +- ], +- }, +- resolve: { +- alias: { +- react: 'preact/compat', +- 'react-dom/test-utils': 'preact/test-utils', +- 'react-dom': 'preact/compat', +- }, +- }, +-}); +- +-module.exports.transpileExclude = { +- // Exclude node_modules from transpilation +- and: [/node_modules/], +- // Do not exclude i.e. include +- not: [ +- // Include all @guardian modules +- /@guardian\//, +- // Include the dynamic-import-polyfill +- /dynamic-import-polyfill/, +- /valibot/, +- ], +-}; +- +-module.exports.getLoaders = getLoaders; +- +-/** +- * We are making "@guardian/ophan-tracker-js" external to the apps bundle +- * because we never expect to use it in apps pages. +- * +- * Tracking is done natively. +- * +- * @param {Build} build */ +-const getExternalModules = (build) => { +- if (build === 'client.apps') { +- return { '@guardian/ophan-tracker-js': 'guardian.ophan' }; +- } +- if (build === 'client.editionsCrossword') { +- return { +- '@guardian/ophan-tracker-js': 'guardian.ophan', +- '@guardian/commercial': 'guardian.commercial', +- }; +- } +- return undefined; +-}; +diff --git a/dotcom-rendering/webpack/webpack.config.dev-server.js b/dotcom-rendering/webpack/webpack.config.dev-server.js +deleted file mode 100644 +index d6e90146bf..0000000000 +--- a/dotcom-rendering/webpack/webpack.config.dev-server.js ++++ /dev/null +@@ -1,81 +0,0 @@ +-// @ts-check +-const path = require('node:path'); +-const bodyParser = require('body-parser'); +-const webpackHotServerMiddleware = require('webpack-hot-server-middleware'); +-const { dim, reset, blue, underline } = require('../../scripts/log'); +- +-const port = 3030; +- +-console.log( +- `${dim}DEV server running on${reset} ${blue}${underline}http://localhost:${port}${reset}`, +-); +- +-module.exports = { +- /** @type {import('webpack-dev-server').Configuration} */ +- devServer: { +- compress: false, +- hot: false, +- liveReload: true, +- client: { +- logging: 'warn', +- overlay: true, +- }, +- port, +- static: { +- directory: path.join(__dirname, '..', 'src', 'static'), +- publicPath: '/static/frontend', +- }, +- allowedHosts: ['r.thegulocal.com'], +- devMiddleware: { +- publicPath: '/assets/', +- serverSideRender: true, +- writeToDisk: true, +- headers: (req, res) => { +- // Allow any localhost request from accessing the assets +- if ( +- req.hostname === (process.env.HOSTNAME ?? 'localhost') && +- req.headers.origin +- ) { +- res.setHeader( +- 'Access-Control-Allow-Origin', +- req.headers.origin, +- ); +- } +- }, +- }, +- setupMiddlewares: (middlewares, devServer) => { +- if (!devServer.app) { +- throw new Error('webpack-dev-server is not defined'); +- } +- +- // it turns out webpack dev server is just an express server +- // with webpack-dev-middleware, so here we add some other middlewares +- // of our own +- +- devServer.app.use(bodyParser.json({ limit: '10mb' })); +- +- devServer.app.get('/', (req, res) => { +- res.sendFile( +- path.join( +- __dirname, +- '..', +- 'src', +- 'server', +- 'dev-index.html', +- ), +- ); +- }); +- +- // webpack-hot-server-middleware needs to run after webpack-dev-middleware +- middlewares.push({ +- name: 'server', +- // @ts-expect-error -- it’s a MultiCompiler +- middleware: webpackHotServerMiddleware(devServer.compiler, { +- chunkName: 'server', +- }), +- }); +- +- return middlewares; +- }, +- }, +-}; +diff --git a/dotcom-rendering/webpack/webpack.config.js b/dotcom-rendering/webpack/webpack.config.js +deleted file mode 100644 +index 818352b628..0000000000 +--- a/dotcom-rendering/webpack/webpack.config.js ++++ /dev/null +@@ -1,130 +0,0 @@ +-// @ts-check +-const path = require('node:path'); +-const webpack = require('webpack'); +-const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); +-const { merge } = require('webpack-merge'); +-const WebpackMessages = require('webpack-messages'); +-const { BUILD_VARIANT: BUILD_VARIANT_SWITCH } = require('./bundles'); +- +-const dist = path.resolve(__dirname, '..', 'dist'); +-const PROD = process.env.NODE_ENV === 'production'; +-const DEV = process.env.NODE_ENV === 'development'; +- +-const BUILD_VARIANT = process.env.BUILD_VARIANT === 'true'; +- +-/** @typedef {import('../src/lib/assets').Build} Build */ +- +-/** +- * @param {{ platform: 'server' | Build}} options +- * @returns {import('webpack').Configuration} +- */ +-const commonConfigs = ({ platform }) => ({ +- name: platform, +- mode: DEV ? 'development' : 'production', +- output: { +- path: dist, +- }, +- stats: DEV ? 'errors-only' : 'normal', +- devtool: +- process.env.NODE_ENV === 'production' +- ? 'source-map' +- : 'eval-cheap-module-source-map', +- resolve: { +- extensions: ['.js', '.ts', '.tsx', '.jsx'], +- }, +- ignoreWarnings: [ +- /** +- * Express uses dynamic imports to load template engines. As we're not currently using a template engine in DCR +- * we can ignore this error. +- */ +- { +- module: /..\/node_modules\/express\/lib\/view.js/, +- message: +- /Critical dependency: the request of a dependency is an expression/, +- }, +- /** +- * Log4js uses dynamic imports to load non-core appenders. We're only using 'console' and 'file' appenders in DCR +- * which are specifically imported by log4js without using dynamic imports. +- */ +- { +- module: /..\/node_modules\/log4js\/lib\/appenders\/index.js/, +- message: +- /Critical dependency: the request of a dependency is an expression/, +- }, +- ], +- plugins: [ +- new webpack.DefinePlugin({ +- 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), +- 'process.env.HOSTNAME': JSON.stringify(process.env.HOSTNAME), +- }), +- // Matching modules specified in this regex will not be imported during the webpack build +- // We use this if there are optional dependencies (e.g in jsdom, ws) to remove uneccesary warnings in our builds / console outpouts. +- new webpack.IgnorePlugin({ +- resourceRegExp: /^(canvas|bufferutil|utf-8-validate)$/, +- }), +- ...(DEV +- ? // DEV plugins +- [ +- // @ts-expect-error -- somehow the type declaration isn’t playing nice +- new WebpackMessages({ +- name: platform, +- }), +- ] +- : // PROD plugins +- [ +- new BundleAnalyzerPlugin({ +- reportFilename: path.join( +- dist, +- 'stats', +- `${platform}-bundles.html`, +- ), +- analyzerMode: 'static', +- openAnalyzer: false, +- logLevel: 'warn', +- }), +- new BundleAnalyzerPlugin({ +- reportFilename: path.join( +- dist, +- 'stats', +- `${platform}-bundles.json`, +- ), +- analyzerMode: 'json', +- openAnalyzer: false, +- logLevel: 'warn', +- }), +- ]), +- ], +- infrastructureLogging: { +- level: PROD ? 'info' : 'warn', +- }, +-}); +- +-/** @type {readonly Build[]} */ +-const clientBuilds = [ +- 'client.web', +- ...((PROD && BUILD_VARIANT_SWITCH) || BUILD_VARIANT +- ? /** @type {const} */ (['client.web.variant']) +- : []), +- 'client.apps', +- 'client.editionsCrossword', +-]; +- +-module.exports = [ +- merge( +- commonConfigs({ +- platform: 'server', +- }), +- require(`./webpack.config.server`), +- DEV ? require(`./webpack.config.dev-server`) : {}, +- ), +- ...clientBuilds.map((build) => +- merge( +- commonConfigs({ +- platform: build, +- }), +- require(`./webpack.config.client`)({ +- build, +- }), +- ), +- ), +-]; +diff --git a/dotcom-rendering/webpack/webpack.config.server.js b/dotcom-rendering/webpack/webpack.config.server.js +deleted file mode 100644 +index e6d6c4fc71..0000000000 +--- a/dotcom-rendering/webpack/webpack.config.server.js ++++ /dev/null +@@ -1,87 +0,0 @@ +-// @ts-check +-const nodeExternals = require('webpack-node-externals'); +-const swcConfig = require('./.swcrc.json'); +-const { svgr } = require('./svg.cjs'); +-const { transpileExclude } = require('./webpack.config.client.js'); +- +-const DEV = process.env.NODE_ENV === 'development'; +-const nodeVersion = process.versions.node; +- +-const swcLoader = [ +- { +- loader: 'swc-loader', +- options: { +- ...swcConfig, +- minify: DEV ? false : true, +- env: { +- targets: { +- node: nodeVersion, +- }, +- }, +- }, +- }, +-]; +- +-/** @type {import('webpack').Configuration} */ +-module.exports = { +- entry: { +- server: './src/server/server.ts', +- }, +- output: { +- filename: `[name].js`, +- chunkFilename: `[name].js`, +- libraryTarget: 'commonjs2', +- pathinfo: true, +- publicPath: '', +- }, +- target: 'node', +- externalsPresets: { node: true }, +- optimization: { +- minimize: false, +- runtimeChunk: false, +- }, +- externals: [ +- // https://github.com/liady/webpack-node-externals/issues/105 +- ...(DEV +- ? [ +- nodeExternals({ +- allowlist: [ +- /^@guardian/, +- // this project is ESM-only and throws an error when not bundled +- 'screenfull', +- ], +- additionalModuleDirs: [ +- // Since we use workspaces for the monorepo, node_modules will be co-located +- // both in the '(project-root)/dotcom-rendering/node_modules' directory (default for webpack-node-externals) +- // but also in project root, and any workspaces we link to. +- // We want to make sure all of these are removed from the server build. +- '../node_modules', +- ], +- }), +- ] +- : []), +- // @aws-sdk modules are only used in CODE/PROD, so we don't need to +- // include them in the development bundle +- ({ request }, callback) => { +- return process.env.NODE_ENV === 'development' && +- request?.startsWith('@aws-sdk') +- ? callback(undefined, `commonjs ${request}`) +- : callback(); +- }, +- ({ request }, callback) => { +- return request?.endsWith('manifest.json') +- ? callback(undefined, `commonjs ${request}`) +- : callback(); +- }, +- ], +- module: { +- rules: [ +- { +- test: /(\.tsx|\.js|\.ts)$/, +- exclude: transpileExclude, +- use: swcLoader, +- }, +- svgr, +- ], +- }, +-}; +-- +2.50.1 (Apple Git-155) + + +From fc913771ea4ff95de6f910ea2bb0996b391c400d Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Thu, 9 Apr 2026 22:45:42 +0100 +Subject: [PATCH 07/17] Fix TypeScript errors in Vite migration code + +- ssr-cjs-plugin: add explicit return for resolveId hook +- vite.config.server: use string instead of RegExp for ssr.external +- debug.ts: remove stale @ts-expect-error (Vite provides ?raw types) +- doHydration.tsx: cast module export to React.FunctionComponent + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/src/client/debug/debug.ts | 1 - + dotcom-rendering/src/client/islands/doHydration.tsx | 5 ++++- + dotcom-rendering/vite/ssr-cjs-plugin.ts | 1 + + dotcom-rendering/vite/vite.config.server.ts | 2 +- + 4 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/dotcom-rendering/src/client/debug/debug.ts b/dotcom-rendering/src/client/debug/debug.ts +index 31d7490b56..bd3c6aa43d 100644 +--- a/dotcom-rendering/src/client/debug/debug.ts ++++ b/dotcom-rendering/src/client/debug/debug.ts +@@ -1,4 +1,3 @@ +-// @ts-expect-error: Cannot find module + import debugCss from './debug.css?raw'; + + const style = document.createElement('style'); +diff --git a/dotcom-rendering/src/client/islands/doHydration.tsx b/dotcom-rendering/src/client/islands/doHydration.tsx +index e61d810d3c..6a192c1004 100644 +--- a/dotcom-rendering/src/client/islands/doHydration.tsx ++++ b/dotcom-rendering/src/client/islands/doHydration.tsx +@@ -71,7 +71,10 @@ export const doHydration = async ( + {/* Child islands should not be hydrated separately */} + + {/* The component to hydrate must be a single JSX Element */} +- {createElement(module[name], data)} ++ {createElement( ++ module[name] as React.FunctionComponent, ++ data, ++ )} + + + , +diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.ts b/dotcom-rendering/vite/ssr-cjs-plugin.ts +index b33a492bc2..7f7c3906ff 100644 +--- a/dotcom-rendering/vite/ssr-cjs-plugin.ts ++++ b/dotcom-rendering/vite/ssr-cjs-plugin.ts +@@ -42,6 +42,7 @@ export function ssrCjsPlugin(packages: string[]): Plugin { + if (shouldWrap(id)) { + return PREFIX + id; + } ++ return undefined; + }, + load(id) { + if (!id.startsWith(PREFIX)) return; +diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts +index bed78a62cb..cb971a3bf6 100644 +--- a/dotcom-rendering/vite/vite.config.server.ts ++++ b/dotcom-rendering/vite/vite.config.server.ts +@@ -57,7 +57,7 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { + 'valibot', + ], + // Explicitly external in dev (not needed in prod where they're deployed) +- external: DEV ? [/@aws-sdk\/.*/] : [], ++ external: DEV ? ['@aws-sdk'] : [], + }, + } satisfies UserConfig); + +-- +2.50.1 (Apple Git-155) + + +From c3cc399c06a3a809bb2f4c96a282cd62becd88e9 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Thu, 9 Apr 2026 22:53:08 +0100 +Subject: [PATCH 08/17] Update lockfile for Storybook Vite migration + +Install @storybook/react-vite and remove @storybook/react-webpack5 +and @storybook/addon-webpack5-compiler-swc from lockfile. + +Co-Authored-By: Claude Opus 4.6 +--- + pnpm-lock.yaml | 6243 +++++++++++++----------------------------------- + 1 file changed, 1708 insertions(+), 4535 deletions(-) + +diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml +index 3abdb9930e..95fce14c3a 100644 +--- a/pnpm-lock.yaml ++++ b/pnpm-lock.yaml +@@ -338,9 +338,6 @@ importers: + '@guardian/react-crossword': + specifier: 11.1.0 + version: 11.1.0(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@guardian/libs@31.0.0(@guardian/ophan-tracker-js@2.8.0)(tslib@2.6.2)(typescript@5.5.3))(@guardian/source@11.3.0(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.5.3))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3) +- '@guardian/shimport': +- specifier: 1.0.2 +- version: 1.0.2 + '@guardian/source': + specifier: 11.3.0 + version: 11.3.0(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.5.3) +@@ -364,16 +361,10 @@ importers: + version: 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@storybook/addon-docs': + specifier: 10.3.3 +- version: 10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1) +- '@storybook/addon-webpack5-compiler-swc': +- specifier: 4.0.3 +- version: 4.0.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.104.1) +- '@storybook/react-webpack5': ++ version: 10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) ++ '@storybook/react-vite': + specifier: 10.3.3 +- version: 10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1) +- '@svgr/webpack': +- specifier: 8.1.0 +- version: 8.1.0(typescript@5.5.3) ++ version: 10.3.3(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) + '@swc/cli': + specifier: 0.7.8 + version: 0.7.8(@swc/core@1.13.5)(chokidar@4.0.3) +@@ -470,15 +461,6 @@ importers: + '@types/twitter-for-web': + specifier: 0.0.6 + version: 0.0.6 +- '@types/webpack-bundle-analyzer': +- specifier: 4.7.0 +- version: 4.7.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- '@types/webpack-env': +- specifier: 1.18.8 +- version: 1.18.8 +- '@types/webpack-node-externals': +- specifier: 3.0.4 +- version: 3.0.4(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) + '@types/youtube': + specifier: 0.0.50 + version: 0.0.50 +@@ -518,15 +500,9 @@ importers: + cpy: + specifier: 11.0.0 + version: 11.0.0 +- css-loader: +- specifier: 7.1.2 +- version: 7.1.2(webpack@5.104.1) + dompurify: + specifier: 3.2.4 + version: 3.2.4 +- dynamic-import-polyfill: +- specifier: 0.1.1 +- version: 0.1.1 + eslint: + specifier: 8.57.1 + version: 8.57.1 +@@ -653,15 +629,9 @@ importers: + stylelint-config-recommended: + specifier: 14.0.0 + version: 14.0.0(stylelint@16.26.1(typescript@5.5.3)) +- swc-loader: +- specifier: 0.2.6 +- version: 0.2.6(@swc/core@1.13.5)(webpack@5.104.1) + swr: + specifier: 1.3.0 + version: 1.3.0(react@18.3.1) +- to-string-loader: +- specifier: 1.2.0 +- version: 1.2.0 + trusted-types: + specifier: 2.0.0 + version: 2.0.0 +@@ -695,45 +665,6 @@ importers: + web-vitals: + specifier: 4.2.3 + version: 4.2.3 +- webpack: +- specifier: 5.104.1 +- version: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- webpack-assets-manifest: +- specifier: 6.3.0 +- version: 6.3.0(webpack@5.104.1) +- webpack-bundle-analyzer: +- specifier: 4.10.2 +- version: 4.10.2 +- webpack-cli: +- specifier: 6.0.1 +- version: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) +- webpack-dev-middleware: +- specifier: 7.4.5 +- version: 7.4.5(webpack@5.104.1) +- webpack-dev-server: +- specifier: 5.2.2 +- version: 5.2.2(webpack-cli@6.0.1)(webpack@5.104.1) +- webpack-hot-middleware: +- specifier: 2.26.1 +- version: 2.26.1 +- webpack-hot-server-middleware: +- specifier: 0.6.1 +- version: 0.6.1(webpack@5.104.1) +- webpack-manifest-plugin: +- specifier: 6.0.1 +- version: 6.0.1(webpack@5.104.1) +- webpack-merge: +- specifier: 6.0.1 +- version: 6.0.1 +- webpack-messages: +- specifier: 2.0.4 +- version: 2.0.4 +- webpack-node-externals: +- specifier: 3.0.0 +- version: 3.0.0 +- webpack-sources: +- specifier: 3.3.3 +- version: 3.3.3 + zod: + specifier: 4.1.12 + version: 4.1.12 +@@ -1036,39 +967,14 @@ packages: + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + +- '@babel/helper-annotate-as-pure@7.27.3': +- resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} +- engines: {node: '>=6.9.0'} +- + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + +- '@babel/helper-create-class-features-plugin@7.28.3': +- resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 +- +- '@babel/helper-create-regexp-features-plugin@7.27.1': +- resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 +- +- '@babel/helper-define-polyfill-provider@0.6.5': +- resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} +- peerDependencies: +- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 +- + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + +- '@babel/helper-member-expression-to-functions@7.27.1': +- resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} +- engines: {node: '>=6.9.0'} +- + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} +@@ -1079,30 +985,10 @@ packages: + peerDependencies: + '@babel/core': ^7.0.0 + +- '@babel/helper-optimise-call-expression@7.27.1': +- resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} +- engines: {node: '>=6.9.0'} +- + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + +- '@babel/helper-remap-async-to-generator@7.27.1': +- resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 +- +- '@babel/helper-replace-supers@7.27.1': +- resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 +- +- '@babel/helper-skip-transparent-expression-wrappers@7.27.1': +- resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} +- engines: {node: '>=6.9.0'} +- + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} +@@ -1115,10 +1001,6 @@ packages: + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + +- '@babel/helper-wrap-function@7.28.3': +- resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} +- engines: {node: '>=6.9.0'} +- + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + engines: {node: '>=6.9.0'} +@@ -1128,42 +1010,6 @@ packages: + engines: {node: '>=6.0.0'} + hasBin: true + +- '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': +- resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 +- +- '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': +- resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 +- +- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': +- resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 +- +- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': +- resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.13.0 +- +- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': +- resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 +- +- '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': +- resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 +- + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: +@@ -1179,18 +1025,6 @@ packages: + peerDependencies: + '@babel/core': ^7.0.0-0 + +- '@babel/plugin-syntax-import-assertions@7.27.1': +- resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 +- +- '@babel/plugin-syntax-import-attributes@7.27.1': +- resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 +- + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: +@@ -1249,1907 +1083,1495 @@ packages: + peerDependencies: + '@babel/core': ^7.0.0-0 + +- '@babel/plugin-syntax-unicode-sets-regex@7.18.6': +- resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 +- +- '@babel/plugin-transform-arrow-functions@7.27.1': +- resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} ++ '@babel/runtime@7.28.4': ++ resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 + +- '@babel/plugin-transform-async-generator-functions@7.28.0': +- resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} ++ '@babel/template@7.28.6': ++ resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 + +- '@babel/plugin-transform-async-to-generator@7.27.1': +- resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} ++ '@babel/traverse@7.29.0': ++ resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 + +- '@babel/plugin-transform-block-scoped-functions@7.27.1': +- resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} ++ '@babel/types@7.29.0': ++ resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 + +- '@babel/plugin-transform-block-scoping@7.28.4': +- resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@bcoe/v8-coverage@0.2.3': ++ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + +- '@babel/plugin-transform-class-properties@7.27.1': +- resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@braze/web-sdk@6.5.0': ++ resolution: {integrity: sha512-MdfwZn+tfe7+tR8Ir5468/njQDGhgVB9tBthq7gwSETsjv6Q+Hw2bXiQy3scDcACI2RLqiq+dNXKh6fD+pN4/Q==} + +- '@babel/plugin-transform-class-static-block@7.28.3': +- resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.12.0 ++ '@cacheable/memory@2.0.8': ++ resolution: {integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==} + +- '@babel/plugin-transform-classes@7.28.4': +- resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@cacheable/utils@2.4.0': ++ resolution: {integrity: sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==} + +- '@babel/plugin-transform-computed-properties@7.27.1': +- resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@creditkarma/thrift-server-core@1.0.4': ++ resolution: {integrity: sha512-Jook5uFJqPeM/D0taSdKHeoerZB6HboSDMqBDWhVDJVSKJGWPSMch4GNALRqr8nCekLKMYkdCgj4FAVetnxpGA==} + +- '@babel/plugin-transform-destructuring@7.28.0': +- resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@cspotcode/source-map-support@0.8.1': ++ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} ++ engines: {node: '>=12'} + +- '@babel/plugin-transform-dotall-regex@7.27.1': +- resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} +- engines: {node: '>=6.9.0'} ++ '@csstools/css-parser-algorithms@3.0.5': ++ resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} ++ engines: {node: '>=18'} + peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@csstools/css-tokenizer': ^3.0.4 + +- '@babel/plugin-transform-duplicate-keys@7.27.1': +- resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} +- engines: {node: '>=6.9.0'} ++ '@csstools/css-syntax-patches-for-csstree@1.1.1': ++ resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} + peerDependencies: +- '@babel/core': ^7.0.0-0 ++ css-tree: ^3.2.1 ++ peerDependenciesMeta: ++ css-tree: ++ optional: true + +- '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': +- resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 ++ '@csstools/css-tokenizer@3.0.4': ++ resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} ++ engines: {node: '>=18'} + +- '@babel/plugin-transform-dynamic-import@7.27.1': +- resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} +- engines: {node: '>=6.9.0'} ++ '@csstools/media-query-list-parser@4.0.3': ++ resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} ++ engines: {node: '>=18'} + peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@csstools/css-parser-algorithms': ^3.0.5 ++ '@csstools/css-tokenizer': ^3.0.4 + +- '@babel/plugin-transform-explicit-resource-management@7.28.0': +- resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} +- engines: {node: '>=6.9.0'} ++ '@csstools/selector-specificity@5.0.0': ++ resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} ++ engines: {node: '>=18'} + peerDependencies: +- '@babel/core': ^7.0.0-0 ++ postcss-selector-parser: ^7.0.0 + +- '@babel/plugin-transform-exponentiation-operator@7.27.1': +- resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@dual-bundle/import-meta-resolve@4.2.1': ++ resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} + +- '@babel/plugin-transform-export-namespace-from@7.27.1': +- resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@emotion/babel-plugin@11.13.5': ++ resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + +- '@babel/plugin-transform-for-of@7.27.1': +- resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@emotion/cache@11.14.0': ++ resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + +- '@babel/plugin-transform-function-name@7.27.1': +- resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@emotion/hash@0.9.2': ++ resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + +- '@babel/plugin-transform-json-strings@7.27.1': +- resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@emotion/memoize@0.9.0': ++ resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + +- '@babel/plugin-transform-literals@7.27.1': +- resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} +- engines: {node: '>=6.9.0'} ++ '@emotion/react@11.14.0': ++ resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} + peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@types/react': '*' ++ react: '>=16.8.0' ++ peerDependenciesMeta: ++ '@types/react': ++ optional: true + +- '@babel/plugin-transform-logical-assignment-operators@7.27.1': +- resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@emotion/serialize@1.3.3': ++ resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + +- '@babel/plugin-transform-member-expression-literals@7.27.1': +- resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} +- engines: {node: '>=6.9.0'} ++ '@emotion/server@11.11.0': ++ resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} + peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@emotion/css': ^11.0.0-rc.0 ++ peerDependenciesMeta: ++ '@emotion/css': ++ optional: true + +- '@babel/plugin-transform-modules-amd@7.27.1': +- resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@emotion/sheet@1.4.0': ++ resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + +- '@babel/plugin-transform-modules-commonjs@7.27.1': +- resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@emotion/unitless@0.10.0': ++ resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + +- '@babel/plugin-transform-modules-systemjs@7.27.1': +- resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} +- engines: {node: '>=6.9.0'} ++ '@emotion/use-insertion-effect-with-fallbacks@1.2.0': ++ resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: +- '@babel/core': ^7.0.0-0 ++ react: '>=16.8.0' + +- '@babel/plugin-transform-modules-umd@7.27.1': +- resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@emotion/utils@1.4.2': ++ resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + +- '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': +- resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 ++ '@emotion/weak-memoize@0.4.0': ++ resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + +- '@babel/plugin-transform-new-target@7.27.1': +- resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/aix-ppc64@0.25.5': ++ resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} ++ engines: {node: '>=18'} ++ cpu: [ppc64] ++ os: [aix] + +- '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': +- resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/aix-ppc64@0.27.0': ++ resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} ++ engines: {node: '>=18'} ++ cpu: [ppc64] ++ os: [aix] + +- '@babel/plugin-transform-numeric-separator@7.27.1': +- resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/aix-ppc64@0.27.3': ++ resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} ++ engines: {node: '>=18'} ++ cpu: [ppc64] ++ os: [aix] + +- '@babel/plugin-transform-object-rest-spread@7.28.4': +- resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-arm64@0.18.20': ++ resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} ++ engines: {node: '>=12'} ++ cpu: [arm64] ++ os: [android] + +- '@babel/plugin-transform-object-super@7.27.1': +- resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-arm64@0.25.5': ++ resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [android] + +- '@babel/plugin-transform-optional-catch-binding@7.27.1': +- resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-arm64@0.27.0': ++ resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [android] + +- '@babel/plugin-transform-optional-chaining@7.27.1': +- resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-arm64@0.27.3': ++ resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [android] + +- '@babel/plugin-transform-parameters@7.27.7': +- resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-arm@0.18.20': ++ resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} ++ engines: {node: '>=12'} ++ cpu: [arm] ++ os: [android] + +- '@babel/plugin-transform-private-methods@7.27.1': +- resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-arm@0.25.5': ++ resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} ++ engines: {node: '>=18'} ++ cpu: [arm] ++ os: [android] + +- '@babel/plugin-transform-private-property-in-object@7.27.1': +- resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-arm@0.27.0': ++ resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} ++ engines: {node: '>=18'} ++ cpu: [arm] ++ os: [android] + +- '@babel/plugin-transform-property-literals@7.27.1': +- resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-arm@0.27.3': ++ resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} ++ engines: {node: '>=18'} ++ cpu: [arm] ++ os: [android] + +- '@babel/plugin-transform-react-constant-elements@7.23.3': +- resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-x64@0.18.20': ++ resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} ++ engines: {node: '>=12'} ++ cpu: [x64] ++ os: [android] + +- '@babel/plugin-transform-react-display-name@7.27.1': +- resolution: {integrity: sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-x64@0.25.5': ++ resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} ++ engines: {node: '>=18'} ++ cpu: [x64] ++ os: [android] + +- '@babel/plugin-transform-react-jsx-development@7.27.1': +- resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-x64@0.27.0': ++ resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} ++ engines: {node: '>=18'} ++ cpu: [x64] ++ os: [android] + +- '@babel/plugin-transform-react-jsx@7.27.1': +- resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/android-x64@0.27.3': ++ resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} ++ engines: {node: '>=18'} ++ cpu: [x64] ++ os: [android] + +- '@babel/plugin-transform-react-pure-annotations@7.27.1': +- resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/darwin-arm64@0.18.20': ++ resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} ++ engines: {node: '>=12'} ++ cpu: [arm64] ++ os: [darwin] + +- '@babel/plugin-transform-regenerator@7.28.4': +- resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/darwin-arm64@0.25.5': ++ resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [darwin] + +- '@babel/plugin-transform-regexp-modifiers@7.27.1': +- resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 ++ '@esbuild/darwin-arm64@0.27.0': ++ resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [darwin] + +- '@babel/plugin-transform-reserved-words@7.27.1': +- resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/darwin-arm64@0.27.3': ++ resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [darwin] + +- '@babel/plugin-transform-shorthand-properties@7.27.1': +- resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/darwin-x64@0.18.20': ++ resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} ++ engines: {node: '>=12'} ++ cpu: [x64] ++ os: [darwin] + +- '@babel/plugin-transform-spread@7.27.1': +- resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/darwin-x64@0.25.5': ++ resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} ++ engines: {node: '>=18'} ++ cpu: [x64] ++ os: [darwin] + +- '@babel/plugin-transform-sticky-regex@7.27.1': +- resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/darwin-x64@0.27.0': ++ resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} ++ engines: {node: '>=18'} ++ cpu: [x64] ++ os: [darwin] + +- '@babel/plugin-transform-template-literals@7.27.1': +- resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/darwin-x64@0.27.3': ++ resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} ++ engines: {node: '>=18'} ++ cpu: [x64] ++ os: [darwin] + +- '@babel/plugin-transform-typeof-symbol@7.27.1': +- resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/freebsd-arm64@0.18.20': ++ resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} ++ engines: {node: '>=12'} ++ cpu: [arm64] ++ os: [freebsd] + +- '@babel/plugin-transform-typescript@7.27.1': +- resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/freebsd-arm64@0.25.5': ++ resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [freebsd] + +- '@babel/plugin-transform-unicode-escapes@7.27.1': +- resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/freebsd-arm64@0.27.0': ++ resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [freebsd] + +- '@babel/plugin-transform-unicode-property-regex@7.27.1': +- resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/freebsd-arm64@0.27.3': ++ resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [freebsd] + +- '@babel/plugin-transform-unicode-regex@7.27.1': +- resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/freebsd-x64@0.18.20': ++ resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} ++ engines: {node: '>=12'} ++ cpu: [x64] ++ os: [freebsd] + +- '@babel/plugin-transform-unicode-sets-regex@7.27.1': +- resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0 ++ '@esbuild/freebsd-x64@0.25.5': ++ resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} ++ engines: {node: '>=18'} ++ cpu: [x64] ++ os: [freebsd] + +- '@babel/preset-env@7.28.3': +- resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/freebsd-x64@0.27.0': ++ resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} ++ engines: {node: '>=18'} ++ cpu: [x64] ++ os: [freebsd] + +- '@babel/preset-modules@0.1.6-no-external-plugins': +- resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} +- peerDependencies: +- '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 ++ '@esbuild/freebsd-x64@0.27.3': ++ resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} ++ engines: {node: '>=18'} ++ cpu: [x64] ++ os: [freebsd] + +- '@babel/preset-react@7.27.1': +- resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/linux-arm64@0.18.20': ++ resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} ++ engines: {node: '>=12'} ++ cpu: [arm64] ++ os: [linux] + +- '@babel/preset-typescript@7.27.1': +- resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} +- engines: {node: '>=6.9.0'} +- peerDependencies: +- '@babel/core': ^7.0.0-0 ++ '@esbuild/linux-arm64@0.25.5': ++ resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [linux] + +- '@babel/runtime@7.28.4': +- resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} +- engines: {node: '>=6.9.0'} ++ '@esbuild/linux-arm64@0.27.0': ++ resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [linux] + +- '@babel/template@7.28.6': +- resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} +- engines: {node: '>=6.9.0'} ++ '@esbuild/linux-arm64@0.27.3': ++ resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} ++ engines: {node: '>=18'} ++ cpu: [arm64] ++ os: [linux] + +- '@babel/traverse@7.29.0': +- resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} +- engines: {node: '>=6.9.0'} ++ '@esbuild/linux-arm@0.18.20': ++ resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} ++ engines: {node: '>=12'} ++ cpu: [arm] ++ os: [linux] + +- '@babel/types@7.29.0': +- resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} +- engines: {node: '>=6.9.0'} +- +- '@bcoe/v8-coverage@0.2.3': +- resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} +- +- '@braze/web-sdk@6.5.0': +- resolution: {integrity: sha512-MdfwZn+tfe7+tR8Ir5468/njQDGhgVB9tBthq7gwSETsjv6Q+Hw2bXiQy3scDcACI2RLqiq+dNXKh6fD+pN4/Q==} +- +- '@cacheable/memory@2.0.8': +- resolution: {integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==} +- +- '@cacheable/utils@2.4.0': +- resolution: {integrity: sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==} +- +- '@creditkarma/thrift-server-core@1.0.4': +- resolution: {integrity: sha512-Jook5uFJqPeM/D0taSdKHeoerZB6HboSDMqBDWhVDJVSKJGWPSMch4GNALRqr8nCekLKMYkdCgj4FAVetnxpGA==} ++ '@esbuild/linux-arm@0.25.5': ++ resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} ++ engines: {node: '>=18'} ++ cpu: [arm] ++ os: [linux] + +- '@cspotcode/source-map-support@0.8.1': +- resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} +- engines: {node: '>=12'} ++ '@esbuild/linux-arm@0.27.0': ++ resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} ++ engines: {node: '>=18'} ++ cpu: [arm] ++ os: [linux] + +- '@csstools/css-parser-algorithms@3.0.5': +- resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} ++ '@esbuild/linux-arm@0.27.3': ++ resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + engines: {node: '>=18'} +- peerDependencies: +- '@csstools/css-tokenizer': ^3.0.4 ++ cpu: [arm] ++ os: [linux] + +- '@csstools/css-syntax-patches-for-csstree@1.1.1': +- resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} +- peerDependencies: +- css-tree: ^3.2.1 +- peerDependenciesMeta: +- css-tree: +- optional: true ++ '@esbuild/linux-ia32@0.18.20': ++ resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} ++ engines: {node: '>=12'} ++ cpu: [ia32] ++ os: [linux] + +- '@csstools/css-tokenizer@3.0.4': +- resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} ++ '@esbuild/linux-ia32@0.25.5': ++ resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} ++ cpu: [ia32] ++ os: [linux] + +- '@csstools/media-query-list-parser@4.0.3': +- resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} ++ '@esbuild/linux-ia32@0.27.0': ++ resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} + engines: {node: '>=18'} +- peerDependencies: +- '@csstools/css-parser-algorithms': ^3.0.5 +- '@csstools/css-tokenizer': ^3.0.4 ++ cpu: [ia32] ++ os: [linux] + +- '@csstools/selector-specificity@5.0.0': +- resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} ++ '@esbuild/linux-ia32@0.27.3': ++ resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + engines: {node: '>=18'} +- peerDependencies: +- postcss-selector-parser: ^7.0.0 +- +- '@discoveryjs/json-ext@0.5.7': +- resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} +- engines: {node: '>=10.0.0'} +- +- '@discoveryjs/json-ext@0.6.3': +- resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} +- engines: {node: '>=14.17.0'} +- +- '@dual-bundle/import-meta-resolve@4.2.1': +- resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} +- +- '@emotion/babel-plugin@11.13.5': +- resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} +- +- '@emotion/cache@11.14.0': +- resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} +- +- '@emotion/hash@0.9.2': +- resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} ++ cpu: [ia32] ++ os: [linux] + +- '@emotion/memoize@0.9.0': +- resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} ++ '@esbuild/linux-loong64@0.18.20': ++ resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} ++ engines: {node: '>=12'} ++ cpu: [loong64] ++ os: [linux] + +- '@emotion/react@11.14.0': +- resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} +- peerDependencies: +- '@types/react': '*' +- react: '>=16.8.0' +- peerDependenciesMeta: +- '@types/react': +- optional: true ++ '@esbuild/linux-loong64@0.25.5': ++ resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} ++ engines: {node: '>=18'} ++ cpu: [loong64] ++ os: [linux] + +- '@emotion/serialize@1.3.3': +- resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} ++ '@esbuild/linux-loong64@0.27.0': ++ resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} ++ engines: {node: '>=18'} ++ cpu: [loong64] ++ os: [linux] + +- '@emotion/server@11.11.0': +- resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} +- peerDependencies: +- '@emotion/css': ^11.0.0-rc.0 +- peerDependenciesMeta: +- '@emotion/css': +- optional: true ++ '@esbuild/linux-loong64@0.27.3': ++ resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} ++ engines: {node: '>=18'} ++ cpu: [loong64] ++ os: [linux] + +- '@emotion/sheet@1.4.0': +- resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} ++ '@esbuild/linux-mips64el@0.18.20': ++ resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} ++ engines: {node: '>=12'} ++ cpu: [mips64el] ++ os: [linux] + +- '@emotion/unitless@0.10.0': +- resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} ++ '@esbuild/linux-mips64el@0.25.5': ++ resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} ++ engines: {node: '>=18'} ++ cpu: [mips64el] ++ os: [linux] + +- '@emotion/use-insertion-effect-with-fallbacks@1.2.0': +- resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} +- peerDependencies: +- react: '>=16.8.0' ++ '@esbuild/linux-mips64el@0.27.0': ++ resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} ++ engines: {node: '>=18'} ++ cpu: [mips64el] ++ os: [linux] + +- '@emotion/utils@1.4.2': +- resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} ++ '@esbuild/linux-mips64el@0.27.3': ++ resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} ++ engines: {node: '>=18'} ++ cpu: [mips64el] ++ os: [linux] + +- '@emotion/weak-memoize@0.4.0': +- resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} ++ '@esbuild/linux-ppc64@0.18.20': ++ resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} ++ engines: {node: '>=12'} ++ cpu: [ppc64] ++ os: [linux] + +- '@esbuild/aix-ppc64@0.25.5': +- resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} ++ '@esbuild/linux-ppc64@0.25.5': ++ resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} + cpu: [ppc64] +- os: [aix] ++ os: [linux] + +- '@esbuild/aix-ppc64@0.27.0': +- resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} ++ '@esbuild/linux-ppc64@0.27.0': ++ resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} + engines: {node: '>=18'} + cpu: [ppc64] +- os: [aix] ++ os: [linux] + +- '@esbuild/aix-ppc64@0.27.3': +- resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} ++ '@esbuild/linux-ppc64@0.27.3': ++ resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + engines: {node: '>=18'} + cpu: [ppc64] +- os: [aix] ++ os: [linux] + +- '@esbuild/android-arm64@0.18.20': +- resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} ++ '@esbuild/linux-riscv64@0.18.20': ++ resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} +- cpu: [arm64] +- os: [android] ++ cpu: [riscv64] ++ os: [linux] + +- '@esbuild/android-arm64@0.25.5': +- resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} ++ '@esbuild/linux-riscv64@0.25.5': ++ resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} +- cpu: [arm64] +- os: [android] ++ cpu: [riscv64] ++ os: [linux] + +- '@esbuild/android-arm64@0.27.0': +- resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} ++ '@esbuild/linux-riscv64@0.27.0': ++ resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} + engines: {node: '>=18'} +- cpu: [arm64] +- os: [android] ++ cpu: [riscv64] ++ os: [linux] + +- '@esbuild/android-arm64@0.27.3': +- resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} ++ '@esbuild/linux-riscv64@0.27.3': ++ resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + engines: {node: '>=18'} +- cpu: [arm64] +- os: [android] ++ cpu: [riscv64] ++ os: [linux] + +- '@esbuild/android-arm@0.18.20': +- resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} ++ '@esbuild/linux-s390x@0.18.20': ++ resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} +- cpu: [arm] +- os: [android] ++ cpu: [s390x] ++ os: [linux] + +- '@esbuild/android-arm@0.25.5': +- resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} ++ '@esbuild/linux-s390x@0.25.5': ++ resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} +- cpu: [arm] +- os: [android] ++ cpu: [s390x] ++ os: [linux] + +- '@esbuild/android-arm@0.27.0': +- resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} ++ '@esbuild/linux-s390x@0.27.0': ++ resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} + engines: {node: '>=18'} +- cpu: [arm] +- os: [android] ++ cpu: [s390x] ++ os: [linux] + +- '@esbuild/android-arm@0.27.3': +- resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} ++ '@esbuild/linux-s390x@0.27.3': ++ resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + engines: {node: '>=18'} +- cpu: [arm] +- os: [android] ++ cpu: [s390x] ++ os: [linux] + +- '@esbuild/android-x64@0.18.20': +- resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} ++ '@esbuild/linux-x64@0.18.20': ++ resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] +- os: [android] ++ os: [linux] + +- '@esbuild/android-x64@0.25.5': +- resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} ++ '@esbuild/linux-x64@0.25.5': ++ resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] +- os: [android] ++ os: [linux] + +- '@esbuild/android-x64@0.27.0': +- resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} ++ '@esbuild/linux-x64@0.27.0': ++ resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} + engines: {node: '>=18'} + cpu: [x64] +- os: [android] ++ os: [linux] + +- '@esbuild/android-x64@0.27.3': +- resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} ++ '@esbuild/linux-x64@0.27.3': ++ resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + engines: {node: '>=18'} + cpu: [x64] +- os: [android] +- +- '@esbuild/darwin-arm64@0.18.20': +- resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} +- engines: {node: '>=12'} +- cpu: [arm64] +- os: [darwin] ++ os: [linux] + +- '@esbuild/darwin-arm64@0.25.5': +- resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} ++ '@esbuild/netbsd-arm64@0.25.5': ++ resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] +- os: [darwin] ++ os: [netbsd] + +- '@esbuild/darwin-arm64@0.27.0': +- resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} ++ '@esbuild/netbsd-arm64@0.27.0': ++ resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} + engines: {node: '>=18'} + cpu: [arm64] +- os: [darwin] ++ os: [netbsd] + +- '@esbuild/darwin-arm64@0.27.3': +- resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} ++ '@esbuild/netbsd-arm64@0.27.3': ++ resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + engines: {node: '>=18'} + cpu: [arm64] +- os: [darwin] ++ os: [netbsd] + +- '@esbuild/darwin-x64@0.18.20': +- resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} ++ '@esbuild/netbsd-x64@0.18.20': ++ resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] +- os: [darwin] ++ os: [netbsd] + +- '@esbuild/darwin-x64@0.25.5': +- resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} ++ '@esbuild/netbsd-x64@0.25.5': ++ resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] +- os: [darwin] ++ os: [netbsd] + +- '@esbuild/darwin-x64@0.27.0': +- resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} ++ '@esbuild/netbsd-x64@0.27.0': ++ resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} + engines: {node: '>=18'} + cpu: [x64] +- os: [darwin] ++ os: [netbsd] + +- '@esbuild/darwin-x64@0.27.3': +- resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} ++ '@esbuild/netbsd-x64@0.27.3': ++ resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + engines: {node: '>=18'} + cpu: [x64] +- os: [darwin] +- +- '@esbuild/freebsd-arm64@0.18.20': +- resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} +- engines: {node: '>=12'} +- cpu: [arm64] +- os: [freebsd] ++ os: [netbsd] + +- '@esbuild/freebsd-arm64@0.25.5': +- resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} ++ '@esbuild/openbsd-arm64@0.25.5': ++ resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] +- os: [freebsd] ++ os: [openbsd] + +- '@esbuild/freebsd-arm64@0.27.0': +- resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} ++ '@esbuild/openbsd-arm64@0.27.0': ++ resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} + engines: {node: '>=18'} + cpu: [arm64] +- os: [freebsd] ++ os: [openbsd] + +- '@esbuild/freebsd-arm64@0.27.3': +- resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} ++ '@esbuild/openbsd-arm64@0.27.3': ++ resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + engines: {node: '>=18'} + cpu: [arm64] +- os: [freebsd] ++ os: [openbsd] + +- '@esbuild/freebsd-x64@0.18.20': +- resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} ++ '@esbuild/openbsd-x64@0.18.20': ++ resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] +- os: [freebsd] ++ os: [openbsd] + +- '@esbuild/freebsd-x64@0.25.5': +- resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} ++ '@esbuild/openbsd-x64@0.25.5': ++ resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] +- os: [freebsd] ++ os: [openbsd] + +- '@esbuild/freebsd-x64@0.27.0': +- resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} ++ '@esbuild/openbsd-x64@0.27.0': ++ resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} + engines: {node: '>=18'} + cpu: [x64] +- os: [freebsd] ++ os: [openbsd] + +- '@esbuild/freebsd-x64@0.27.3': +- resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} ++ '@esbuild/openbsd-x64@0.27.3': ++ resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + engines: {node: '>=18'} + cpu: [x64] +- os: [freebsd] ++ os: [openbsd] + +- '@esbuild/linux-arm64@0.18.20': +- resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} +- engines: {node: '>=12'} ++ '@esbuild/openharmony-arm64@0.27.0': ++ resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} ++ engines: {node: '>=18'} + cpu: [arm64] +- os: [linux] ++ os: [openharmony] + +- '@esbuild/linux-arm64@0.25.5': +- resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} ++ '@esbuild/openharmony-arm64@0.27.3': ++ resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + engines: {node: '>=18'} + cpu: [arm64] +- os: [linux] ++ os: [openharmony] + +- '@esbuild/linux-arm64@0.27.0': +- resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} ++ '@esbuild/sunos-x64@0.18.20': ++ resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} ++ engines: {node: '>=12'} ++ cpu: [x64] ++ os: [sunos] ++ ++ '@esbuild/sunos-x64@0.25.5': ++ resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} +- cpu: [arm64] +- os: [linux] ++ cpu: [x64] ++ os: [sunos] + +- '@esbuild/linux-arm64@0.27.3': +- resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} ++ '@esbuild/sunos-x64@0.27.0': ++ resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} + engines: {node: '>=18'} +- cpu: [arm64] +- os: [linux] ++ cpu: [x64] ++ os: [sunos] + +- '@esbuild/linux-arm@0.18.20': +- resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} ++ '@esbuild/sunos-x64@0.27.3': ++ resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} ++ engines: {node: '>=18'} ++ cpu: [x64] ++ os: [sunos] ++ ++ '@esbuild/win32-arm64@0.18.20': ++ resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} +- cpu: [arm] +- os: [linux] ++ cpu: [arm64] ++ os: [win32] + +- '@esbuild/linux-arm@0.25.5': +- resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} ++ '@esbuild/win32-arm64@0.25.5': ++ resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} +- cpu: [arm] +- os: [linux] ++ cpu: [arm64] ++ os: [win32] + +- '@esbuild/linux-arm@0.27.0': +- resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} ++ '@esbuild/win32-arm64@0.27.0': ++ resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} + engines: {node: '>=18'} +- cpu: [arm] +- os: [linux] ++ cpu: [arm64] ++ os: [win32] + +- '@esbuild/linux-arm@0.27.3': +- resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} ++ '@esbuild/win32-arm64@0.27.3': ++ resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + engines: {node: '>=18'} +- cpu: [arm] +- os: [linux] ++ cpu: [arm64] ++ os: [win32] + +- '@esbuild/linux-ia32@0.18.20': +- resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} ++ '@esbuild/win32-ia32@0.18.20': ++ resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] +- os: [linux] ++ os: [win32] + +- '@esbuild/linux-ia32@0.25.5': +- resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} ++ '@esbuild/win32-ia32@0.25.5': ++ resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} + cpu: [ia32] +- os: [linux] ++ os: [win32] + +- '@esbuild/linux-ia32@0.27.0': +- resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} ++ '@esbuild/win32-ia32@0.27.0': ++ resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} + engines: {node: '>=18'} + cpu: [ia32] +- os: [linux] ++ os: [win32] + +- '@esbuild/linux-ia32@0.27.3': +- resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} ++ '@esbuild/win32-ia32@0.27.3': ++ resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + engines: {node: '>=18'} + cpu: [ia32] +- os: [linux] ++ os: [win32] + +- '@esbuild/linux-loong64@0.18.20': +- resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} ++ '@esbuild/win32-x64@0.18.20': ++ resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} +- cpu: [loong64] +- os: [linux] ++ cpu: [x64] ++ os: [win32] + +- '@esbuild/linux-loong64@0.25.5': +- resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} ++ '@esbuild/win32-x64@0.25.5': ++ resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} +- cpu: [loong64] +- os: [linux] ++ cpu: [x64] ++ os: [win32] + +- '@esbuild/linux-loong64@0.27.0': +- resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} ++ '@esbuild/win32-x64@0.27.0': ++ resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} + engines: {node: '>=18'} +- cpu: [loong64] +- os: [linux] ++ cpu: [x64] ++ os: [win32] + +- '@esbuild/linux-loong64@0.27.3': +- resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} ++ '@esbuild/win32-x64@0.27.3': ++ resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + engines: {node: '>=18'} +- cpu: [loong64] +- os: [linux] +- +- '@esbuild/linux-mips64el@0.18.20': +- resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} +- engines: {node: '>=12'} +- cpu: [mips64el] +- os: [linux] ++ cpu: [x64] ++ os: [win32] + +- '@esbuild/linux-mips64el@0.25.5': +- resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} +- engines: {node: '>=18'} +- cpu: [mips64el] +- os: [linux] ++ '@eslint-community/eslint-plugin-eslint-comments@4.4.1': ++ resolution: {integrity: sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==} ++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} ++ peerDependencies: ++ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + +- '@esbuild/linux-mips64el@0.27.0': +- resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} +- engines: {node: '>=18'} +- cpu: [mips64el] +- os: [linux] ++ '@eslint-community/eslint-utils@4.9.1': ++ resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} ++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} ++ peerDependencies: ++ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + +- '@esbuild/linux-mips64el@0.27.3': +- resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} +- engines: {node: '>=18'} +- cpu: [mips64el] +- os: [linux] ++ '@eslint-community/regexpp@4.12.1': ++ resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} ++ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + +- '@esbuild/linux-ppc64@0.18.20': +- resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} +- engines: {node: '>=12'} +- cpu: [ppc64] +- os: [linux] ++ '@eslint/config-array@0.21.1': ++ resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} ++ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + +- '@esbuild/linux-ppc64@0.25.5': +- resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} +- engines: {node: '>=18'} +- cpu: [ppc64] +- os: [linux] ++ '@eslint/config-helpers@0.4.2': ++ resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} ++ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + +- '@esbuild/linux-ppc64@0.27.0': +- resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} +- engines: {node: '>=18'} +- cpu: [ppc64] +- os: [linux] ++ '@eslint/core@0.17.0': ++ resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} ++ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + +- '@esbuild/linux-ppc64@0.27.3': +- resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} +- engines: {node: '>=18'} +- cpu: [ppc64] +- os: [linux] ++ '@eslint/eslintrc@2.1.4': ++ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} ++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + +- '@esbuild/linux-riscv64@0.18.20': +- resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} +- engines: {node: '>=12'} +- cpu: [riscv64] +- os: [linux] ++ '@eslint/eslintrc@3.3.1': ++ resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} ++ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + +- '@esbuild/linux-riscv64@0.25.5': +- resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} +- engines: {node: '>=18'} +- cpu: [riscv64] +- os: [linux] ++ '@eslint/js@8.57.1': ++ resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} ++ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + +- '@esbuild/linux-riscv64@0.27.0': +- resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} +- engines: {node: '>=18'} +- cpu: [riscv64] +- os: [linux] ++ '@eslint/js@9.19.0': ++ resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} ++ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + +- '@esbuild/linux-riscv64@0.27.3': +- resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} +- engines: {node: '>=18'} +- cpu: [riscv64] +- os: [linux] ++ '@eslint/js@9.39.1': ++ resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} ++ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + +- '@esbuild/linux-s390x@0.18.20': +- resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} +- engines: {node: '>=12'} +- cpu: [s390x] +- os: [linux] ++ '@eslint/object-schema@2.1.7': ++ resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} ++ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + +- '@esbuild/linux-s390x@0.25.5': +- resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} +- engines: {node: '>=18'} +- cpu: [s390x] +- os: [linux] ++ '@eslint/plugin-kit@0.4.1': ++ resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} ++ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + +- '@esbuild/linux-s390x@0.27.0': +- resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} +- engines: {node: '>=18'} +- cpu: [s390x] +- os: [linux] ++ '@guardian/ab-core@8.0.0': ++ resolution: {integrity: sha512-I6KV03kROJPnU7FdRbqkmEAzsTDMMK/bgnB7rbL/qht8+hrK9y52ySFSJF5WX0zPX/9MoMRyAgmf+wBWOeogBA==} ++ peerDependencies: ++ tslib: ^2.6.2 ++ typescript: ~5.5.2 ++ peerDependenciesMeta: ++ typescript: ++ optional: true + +- '@esbuild/linux-s390x@0.27.3': +- resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} +- engines: {node: '>=18'} +- cpu: [s390x] +- os: [linux] ++ '@guardian/braze-components@22.2.0': ++ resolution: {integrity: sha512-uSkHd6mBVTAD+BrvJZNt+oSipYHQXBdVt9Pu/VTvkliXHzT8OUsep7ObIWM1lkf3znWbqLDhoXtwS5apX2AEWQ==} ++ engines: {node: ^18.15 || ^20.8} ++ peerDependencies: ++ '@emotion/react': ^11.1.2 ++ '@guardian/libs': ^16.0.0 ++ '@guardian/source': ^9.0.0 ++ react: 17.0.2 || 18.2.0 + +- '@esbuild/linux-x64@0.18.20': +- resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} +- engines: {node: '>=12'} +- cpu: [x64] +- os: [linux] ++ '@guardian/bridget@8.9.0': ++ resolution: {integrity: sha512-OAo45mzxGJeCVhfsle9r0J0tqOWcDL6EyL63324ovAwREC2Joj7zOnuhPPtFLx7pjvUl6qMQzuyIiWppZkFbiA==} + +- '@esbuild/linux-x64@0.25.5': +- resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [linux] ++ '@guardian/browserslist-config@6.1.0': ++ resolution: {integrity: sha512-qM0QxAv6E5IHXny5Okli6AZXEio0mpXzzEzz38qrb4IwO91R6eWVKyihdj0qW2k7TVxMFVOSfNmBZ1H5EiJhgw==} ++ peerDependencies: ++ browserslist: ^4.22.2 ++ tslib: ^2.6.2 + +- '@esbuild/linux-x64@0.27.0': +- resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [linux] ++ '@guardian/cdk@62.6.1': ++ resolution: {integrity: sha512-ZjQ501fQud8ja+TqAp1acvYFf05Qp3wKY1N+hBlsUCu2xbF2FuIDMcqhLcJe3dUb5wOpxC88kXunthVBxBB9ug==} ++ hasBin: true ++ peerDependencies: ++ aws-cdk: ^2.1110.0 ++ aws-cdk-lib: ^2.241.0 ++ constructs: ^10.5.1 + +- '@esbuild/linux-x64@0.27.3': +- resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [linux] ++ '@guardian/commercial-core@32.0.0': ++ resolution: {integrity: sha512-Wz2aPR/P/NFUFeTxmWD4VnHZ3Xgj7kJ8LD+Z4crYFSiqUG207gJWqVw8QcXVqJnz3XpR0J9foJQyG8HD9RdCjg==} ++ peerDependencies: ++ '@guardian/libs': ^30.1.0 + +- '@esbuild/netbsd-arm64@0.25.5': +- resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [netbsd] ++ '@guardian/core-web-vitals@7.0.0': ++ resolution: {integrity: sha512-1JLUQjkLY8SXYJqcy0TiE9/9hCcmyIlmMpRoW8Ygn/qGtyNxG+zzwkwsgtJIP+B0ZjtDqfukra2IV9l7wX5A0g==} ++ peerDependencies: ++ '@guardian/libs': ^18.0.0 ++ tslib: ^2.6.2 ++ typescript: ~5.5.2 ++ web-vitals: ^4.2.1 ++ peerDependenciesMeta: ++ typescript: ++ optional: true + +- '@esbuild/netbsd-arm64@0.27.0': +- resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [netbsd] ++ '@guardian/eslint-config-typescript@12.0.0': ++ resolution: {integrity: sha512-lEqYzdzaFKdA4CEc0pJHj+lytBSYZeao3b+GkcGaqEd6yZWkOpSWMxrQPVgiSt3Qgv7qHM/4C4U7KhLW6ycvEA==} ++ peerDependencies: ++ eslint: ^8.57.0 ++ tslib: ^2.6.2 ++ typescript: ~5.5.2 + +- '@esbuild/netbsd-arm64@0.27.3': +- resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [netbsd] ++ '@guardian/eslint-config@12.0.1': ++ resolution: {integrity: sha512-MS2+FSkcd9RncOZH2vLfZCoRsVywBHNZvit4E48+LRBG5J9mS+fqECoHAorqTKZpRRN/QszUhhs9YgKHn57rIg==} ++ peerDependencies: ++ eslint: ^9.19.0 + +- '@esbuild/netbsd-x64@0.18.20': +- resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} +- engines: {node: '>=12'} +- cpu: [x64] +- os: [netbsd] ++ '@guardian/eslint-config@9.0.0': ++ resolution: {integrity: sha512-fSijwPMzTcMVuuFS7V161B+GtES6KKRxYMYBUVjKv94eLo40XO5LeVEd6AaG8aEItxlMb+mC7ngDbwk4xAZ+Tw==} ++ peerDependencies: ++ eslint: ^8.57.0 ++ tslib: ^2.6.2 + +- '@esbuild/netbsd-x64@0.25.5': +- resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [netbsd] ++ '@guardian/identity-auth-frontend@8.1.0': ++ resolution: {integrity: sha512-2GzIsUBp8uiP+fRsKUpMrqJYSqokUCDo4q9WByi143CN0LRRWj2tVt23Y/+cZxWUuwDfRBxp1qbRnsy4QSMVLQ==} ++ peerDependencies: ++ '@guardian/identity-auth': ^6.0.0 ++ '@guardian/libs': ^21.0.0 ++ tslib: ^2.6.2 ++ typescript: ~5.5.2 ++ peerDependenciesMeta: ++ typescript: ++ optional: true + +- '@esbuild/netbsd-x64@0.27.0': +- resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [netbsd] ++ '@guardian/identity-auth@6.0.1': ++ resolution: {integrity: sha512-x6X7/+0w2ZLYZERUbkO69AjHJ7Jq2IDA5UJP8SrQPhJoTlSxKAl+13w77TcVX75IK7L8KldZscHMfOW1tSnq9g==} ++ peerDependencies: ++ '@guardian/libs': ^21.0.0 ++ tslib: ^2.6.2 ++ typescript: ~5.5.2 ++ peerDependenciesMeta: ++ typescript: ++ optional: true + +- '@esbuild/netbsd-x64@0.27.3': +- resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [netbsd] ++ '@guardian/libs@31.0.0': ++ resolution: {integrity: sha512-AWA2tfQY023E5412FuURsEXgl82MnsklOC2AcSbrOjdmvHbnugCeNiSNHsm6tAkzLZeumRJ+k72b/rhUIMOL0A==} ++ peerDependencies: ++ '@guardian/ophan-tracker-js': ^2.2.10 ++ tslib: ^2.8.1 ++ typescript: ~5.9.3 ++ peerDependenciesMeta: ++ typescript: ++ optional: true + +- '@esbuild/openbsd-arm64@0.25.5': +- resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [openbsd] ++ '@guardian/ophan-tracker-js@2.8.0': ++ resolution: {integrity: sha512-RPoyxPPKaT1em1LZiD1LKsTYzoXBG8Zjs4OzyP5dhEmfoXD99qK48JI4oGUPlq3wOOB0ZT8UrbtbWDKzeMSBHA==} ++ engines: {node: '>=16'} + +- '@esbuild/openbsd-arm64@0.27.0': +- resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [openbsd] ++ '@guardian/prettier@5.0.0': ++ resolution: {integrity: sha512-gJSQuuP7JVDOWQj4EUrwyJTnMt+frLkw0D2sLg70nHn76L3LmH2xTQtYMPUsqyqn37qocDPzgdvBdmATi50zRQ==} ++ peerDependencies: ++ prettier: ^3.0.0 ++ tslib: ^2.5.3 + +- '@esbuild/openbsd-arm64@0.27.3': +- resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [openbsd] ++ '@guardian/react-crossword@11.1.0': ++ resolution: {integrity: sha512-GfkyqCHCajiyuMdK8s/s8TH+LhADTcJeIXFEqbesCYp0wQO/DdTR27tRtaFhKqVRCgzRIKFyxd68HcAy+Z7eBQ==} ++ peerDependencies: ++ '@emotion/react': ^11.11.4 ++ '@guardian/libs': ^26.0.0 ++ '@guardian/source': ^11.0.0 ++ '@types/react': ^18.2.79 ++ react: ^18.2.0 ++ typescript: ~5.5.2 ++ peerDependenciesMeta: ++ '@types/react': ++ optional: true ++ typescript: ++ optional: true + +- '@esbuild/openbsd-x64@0.18.20': +- resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} +- engines: {node: '>=12'} +- cpu: [x64] +- os: [openbsd] ++ '@guardian/source-development-kitchen@18.1.1': ++ resolution: {integrity: sha512-wuMULnVjValyEz6YjrOPt054tXJkutkAbPdeV/KQHoSCSjAJnd0Cp3SZeoVog77HE/iZ0mnKaiVkK+QXpRVtCQ==} ++ peerDependencies: ++ '@emotion/react': ^11.11.4 ++ '@guardian/libs': ^22.0.0 ++ '@guardian/source': ^10.0.0 ++ '@types/react': ^18.2.79 ++ react: ^18.2.0 ++ tslib: ^2.6.2 ++ typescript: ~5.5.2 ++ peerDependenciesMeta: ++ '@emotion/react': ++ optional: true ++ '@types/react': ++ optional: true ++ react: ++ optional: true ++ typescript: ++ optional: true + +- '@esbuild/openbsd-x64@0.25.5': +- resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [openbsd] ++ '@guardian/source@11.3.0': ++ resolution: {integrity: sha512-J8KDoa/dZ926zkx1LdmoGo5i83znqjGDYuyOOc/UBcfH8dKbXDBmi4tvg8Xbl7/C4jSJpgG1JkjRHyzDarcAjg==} ++ peerDependencies: ++ '@emotion/react': ^11.11.4 ++ '@types/react': ^18.2.79 ++ react: ^18.2.0 ++ tslib: ^2.6.2 ++ typescript: ~5.5.2 ++ peerDependenciesMeta: ++ '@emotion/react': ++ optional: true ++ '@types/react': ++ optional: true ++ react: ++ optional: true ++ typescript: ++ optional: true + +- '@esbuild/openbsd-x64@0.27.0': +- resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [openbsd] ++ '@guardian/support-dotcom-components@8.4.2': ++ resolution: {integrity: sha512-vaVnksG7epJK2TO1KvbFm4nE94iHg74qtSYS5hdFVLkk0B0ar5mvfvB9hk5jJaZ5utzNPG1KP3tEqH2SlL9LMA==} ++ peerDependencies: ++ '@guardian/libs': ^22.0.0 ++ '@guardian/ophan-tracker-js': 2.8.0 ++ zod: ^4.1.12 + +- '@esbuild/openbsd-x64@0.27.3': +- resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [openbsd] ++ '@guardian/tsconfig@0.2.0': ++ resolution: {integrity: sha512-RauppalK+cQZDRK6IssVmDSnU/VyqMNuVOxPxhmI03kVRxEdwcmBuRqexHwDbnClVUxW/N9hYLbFNuAb9V/p+A==} + +- '@esbuild/openharmony-arm64@0.27.0': +- resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [openharmony] ++ '@guardian/tsconfig@1.0.1': ++ resolution: {integrity: sha512-PB24nZ6WTBB8aZ9EyxJw1vC5FYkGqwMQ/O5Oogp6P5HCQU5MN0JpUXvpYci7kwV2oXD1Az06UBnLyyVXOVMadQ==} + +- '@esbuild/openharmony-arm64@0.27.3': +- resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [openharmony] ++ '@humanfs/core@0.19.1': ++ resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} ++ engines: {node: '>=18.18.0'} + +- '@esbuild/sunos-x64@0.18.20': +- resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} +- engines: {node: '>=12'} +- cpu: [x64] +- os: [sunos] ++ '@humanfs/node@0.16.7': ++ resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} ++ engines: {node: '>=18.18.0'} + +- '@esbuild/sunos-x64@0.25.5': +- resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [sunos] ++ '@humanwhocodes/config-array@0.13.0': ++ resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} ++ engines: {node: '>=10.10.0'} ++ deprecated: Use @eslint/config-array instead + +- '@esbuild/sunos-x64@0.27.0': +- resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [sunos] ++ '@humanwhocodes/module-importer@1.0.1': ++ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} ++ engines: {node: '>=12.22'} + +- '@esbuild/sunos-x64@0.27.3': +- resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [sunos] ++ '@humanwhocodes/object-schema@2.0.3': ++ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} ++ deprecated: Use @eslint/object-schema instead + +- '@esbuild/win32-arm64@0.18.20': +- resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} +- engines: {node: '>=12'} +- cpu: [arm64] +- os: [win32] ++ '@humanwhocodes/retry@0.4.3': ++ resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} ++ engines: {node: '>=18.18'} + +- '@esbuild/win32-arm64@0.25.5': +- resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [win32] ++ '@istanbuljs/load-nyc-config@1.1.0': ++ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} ++ engines: {node: '>=8'} + +- '@esbuild/win32-arm64@0.27.0': +- resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [win32] ++ '@istanbuljs/schema@0.1.3': ++ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} ++ engines: {node: '>=8'} + +- '@esbuild/win32-arm64@0.27.3': +- resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} +- engines: {node: '>=18'} +- cpu: [arm64] +- os: [win32] ++ '@jest/console@29.7.0': ++ resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@esbuild/win32-ia32@0.18.20': +- resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} +- engines: {node: '>=12'} +- cpu: [ia32] +- os: [win32] ++ '@jest/core@29.7.0': ++ resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ peerDependencies: ++ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 ++ peerDependenciesMeta: ++ node-notifier: ++ optional: true + +- '@esbuild/win32-ia32@0.25.5': +- resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} +- engines: {node: '>=18'} +- cpu: [ia32] +- os: [win32] ++ '@jest/create-cache-key-function@30.2.0': ++ resolution: {integrity: sha512-44F4l4Enf+MirJN8X/NhdGkl71k5rBYiwdVlo4HxOwbu0sHV8QKrGEedb1VUU4K3W7fBKE0HGfbn7eZm0Ti3zg==} ++ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + +- '@esbuild/win32-ia32@0.27.0': +- resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} +- engines: {node: '>=18'} +- cpu: [ia32] +- os: [win32] ++ '@jest/environment@29.7.0': ++ resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@esbuild/win32-ia32@0.27.3': +- resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} +- engines: {node: '>=18'} +- cpu: [ia32] +- os: [win32] ++ '@jest/expect-utils@29.7.0': ++ resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@esbuild/win32-x64@0.18.20': +- resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} +- engines: {node: '>=12'} +- cpu: [x64] +- os: [win32] ++ '@jest/expect@29.7.0': ++ resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@esbuild/win32-x64@0.25.5': +- resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [win32] ++ '@jest/fake-timers@29.7.0': ++ resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@esbuild/win32-x64@0.27.0': +- resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [win32] ++ '@jest/globals@29.7.0': ++ resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@esbuild/win32-x64@0.27.3': +- resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} +- engines: {node: '>=18'} +- cpu: [x64] +- os: [win32] ++ '@jest/pattern@30.0.1': ++ resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} ++ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + +- '@eslint-community/eslint-plugin-eslint-comments@4.4.1': +- resolution: {integrity: sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==} +- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} ++ '@jest/reporters@29.7.0': ++ resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: +- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 ++ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 ++ peerDependenciesMeta: ++ node-notifier: ++ optional: true + +- '@eslint-community/eslint-utils@4.9.1': +- resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} +- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} +- peerDependencies: +- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 +- +- '@eslint-community/regexpp@4.12.1': +- resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} +- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} +- +- '@eslint/config-array@0.21.1': +- resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} +- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} +- +- '@eslint/config-helpers@0.4.2': +- resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} +- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} +- +- '@eslint/core@0.17.0': +- resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} +- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} ++ '@jest/schemas@29.6.3': ++ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@eslint/eslintrc@2.1.4': +- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} +- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} ++ '@jest/schemas@30.0.5': ++ resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} ++ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + +- '@eslint/eslintrc@3.3.1': +- resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} +- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} ++ '@jest/source-map@29.6.3': ++ resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@eslint/js@8.57.1': +- resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} +- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} ++ '@jest/test-result@29.7.0': ++ resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@eslint/js@9.19.0': +- resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} +- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} ++ '@jest/test-sequencer@29.7.0': ++ resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@eslint/js@9.39.1': +- resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} +- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} ++ '@jest/transform@29.7.0': ++ resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@eslint/object-schema@2.1.7': +- resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} +- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} ++ '@jest/types@29.6.3': ++ resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} ++ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + +- '@eslint/plugin-kit@0.4.1': +- resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} +- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} ++ '@jest/types@30.2.0': ++ resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} ++ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + +- '@guardian/ab-core@8.0.0': +- resolution: {integrity: sha512-I6KV03kROJPnU7FdRbqkmEAzsTDMMK/bgnB7rbL/qht8+hrK9y52ySFSJF5WX0zPX/9MoMRyAgmf+wBWOeogBA==} ++ '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4': ++ resolution: {integrity: sha512-6PyZBYKnnVNqOSB0YFly+62R7dmov8segT27A+RVTBVd4iAE6kbW9QBJGlyR2yG4D4ohzhZSTIu7BK1UTtmFFA==} + peerDependencies: +- tslib: ^2.6.2 +- typescript: ~5.5.2 ++ typescript: '>= 4.3.x' ++ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + typescript: + optional: true + +- '@guardian/braze-components@22.2.0': +- resolution: {integrity: sha512-uSkHd6mBVTAD+BrvJZNt+oSipYHQXBdVt9Pu/VTvkliXHzT8OUsep7ObIWM1lkf3znWbqLDhoXtwS5apX2AEWQ==} +- engines: {node: ^18.15 || ^20.8} +- peerDependencies: +- '@emotion/react': ^11.1.2 +- '@guardian/libs': ^16.0.0 +- '@guardian/source': ^9.0.0 +- react: 17.0.2 || 18.2.0 ++ '@jridgewell/gen-mapping@0.3.13': ++ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + +- '@guardian/bridget@8.9.0': +- resolution: {integrity: sha512-OAo45mzxGJeCVhfsle9r0J0tqOWcDL6EyL63324ovAwREC2Joj7zOnuhPPtFLx7pjvUl6qMQzuyIiWppZkFbiA==} ++ '@jridgewell/remapping@2.3.5': ++ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + +- '@guardian/browserslist-config@6.1.0': +- resolution: {integrity: sha512-qM0QxAv6E5IHXny5Okli6AZXEio0mpXzzEzz38qrb4IwO91R6eWVKyihdj0qW2k7TVxMFVOSfNmBZ1H5EiJhgw==} +- peerDependencies: +- browserslist: ^4.22.2 +- tslib: ^2.6.2 ++ '@jridgewell/resolve-uri@3.1.2': ++ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} ++ engines: {node: '>=6.0.0'} + +- '@guardian/cdk@62.6.1': +- resolution: {integrity: sha512-ZjQ501fQud8ja+TqAp1acvYFf05Qp3wKY1N+hBlsUCu2xbF2FuIDMcqhLcJe3dUb5wOpxC88kXunthVBxBB9ug==} +- hasBin: true +- peerDependencies: +- aws-cdk: ^2.1110.0 +- aws-cdk-lib: ^2.241.0 +- constructs: ^10.5.1 ++ '@jridgewell/source-map@0.3.11': ++ resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + +- '@guardian/commercial-core@32.0.0': +- resolution: {integrity: sha512-Wz2aPR/P/NFUFeTxmWD4VnHZ3Xgj7kJ8LD+Z4crYFSiqUG207gJWqVw8QcXVqJnz3XpR0J9foJQyG8HD9RdCjg==} +- peerDependencies: +- '@guardian/libs': ^30.1.0 ++ '@jridgewell/sourcemap-codec@1.5.5': ++ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + +- '@guardian/core-web-vitals@7.0.0': +- resolution: {integrity: sha512-1JLUQjkLY8SXYJqcy0TiE9/9hCcmyIlmMpRoW8Ygn/qGtyNxG+zzwkwsgtJIP+B0ZjtDqfukra2IV9l7wX5A0g==} +- peerDependencies: +- '@guardian/libs': ^18.0.0 +- tslib: ^2.6.2 +- typescript: ~5.5.2 +- web-vitals: ^4.2.1 +- peerDependenciesMeta: +- typescript: +- optional: true ++ '@jridgewell/trace-mapping@0.3.31': ++ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + +- '@guardian/eslint-config-typescript@12.0.0': +- resolution: {integrity: sha512-lEqYzdzaFKdA4CEc0pJHj+lytBSYZeao3b+GkcGaqEd6yZWkOpSWMxrQPVgiSt3Qgv7qHM/4C4U7KhLW6ycvEA==} +- peerDependencies: +- eslint: ^8.57.0 +- tslib: ^2.6.2 +- typescript: ~5.5.2 ++ '@jridgewell/trace-mapping@0.3.9': ++ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + +- '@guardian/eslint-config@12.0.1': +- resolution: {integrity: sha512-MS2+FSkcd9RncOZH2vLfZCoRsVywBHNZvit4E48+LRBG5J9mS+fqECoHAorqTKZpRRN/QszUhhs9YgKHn57rIg==} ++ '@keyv/bigmap@1.3.1': ++ resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} ++ engines: {node: '>= 18'} + peerDependencies: +- eslint: ^9.19.0 ++ keyv: ^5.6.0 + +- '@guardian/eslint-config@9.0.0': +- resolution: {integrity: sha512-fSijwPMzTcMVuuFS7V161B+GtES6KKRxYMYBUVjKv94eLo40XO5LeVEd6AaG8aEItxlMb+mC7ngDbwk4xAZ+Tw==} ++ '@keyv/serialize@1.1.1': ++ resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} ++ ++ '@mdx-js/react@3.1.1': ++ resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} + peerDependencies: +- eslint: ^8.57.0 +- tslib: ^2.6.2 ++ '@types/react': '>=16' ++ react: '>=16' + +- '@guardian/identity-auth-frontend@8.1.0': +- resolution: {integrity: sha512-2GzIsUBp8uiP+fRsKUpMrqJYSqokUCDo4q9WByi143CN0LRRWj2tVt23Y/+cZxWUuwDfRBxp1qbRnsy4QSMVLQ==} ++ '@nodelib/fs.scandir@2.1.5': ++ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} ++ engines: {node: '>= 8'} ++ ++ '@nodelib/fs.stat@2.0.5': ++ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} ++ engines: {node: '>= 8'} ++ ++ '@nodelib/fs.walk@1.2.8': ++ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} ++ engines: {node: '>= 8'} ++ ++ '@nolyfill/is-core-module@1.0.39': ++ resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} ++ engines: {node: '>=12.4.0'} ++ ++ '@okta/jwt-verifier@4.0.2': ++ resolution: {integrity: sha512-sB1FB0EOtkVSG1VDRBgwSyavttORLXaP2Ru28p2SFeo0Wo7iKjHad4poyCMkrxi1hwrLcBJM1ezznrev/tYTIA==} ++ engines: {node: '>=14'} ++ ++ '@playwright/test@1.58.0': ++ resolution: {integrity: sha512-fWza+Lpbj6SkQKCrU6si4iu+fD2dD3gxNHFhUPxsfXBPhnv3rRSQVd0NtBUT9Z/RhF/boCBcuUaMUSTRTopjZg==} ++ engines: {node: '>=18'} ++ hasBin: true ++ ++ '@polka/url@1.0.0-next.29': ++ resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} ++ ++ '@rollup/plugin-commonjs@29.0.0': ++ resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} ++ engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: +- '@guardian/identity-auth': ^6.0.0 +- '@guardian/libs': ^21.0.0 +- tslib: ^2.6.2 +- typescript: ~5.5.2 ++ rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: +- typescript: ++ rollup: + optional: true + +- '@guardian/identity-auth@6.0.1': +- resolution: {integrity: sha512-x6X7/+0w2ZLYZERUbkO69AjHJ7Jq2IDA5UJP8SrQPhJoTlSxKAl+13w77TcVX75IK7L8KldZscHMfOW1tSnq9g==} ++ '@rollup/plugin-inject@5.0.5': ++ resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} ++ engines: {node: '>=14.0.0'} + peerDependencies: +- '@guardian/libs': ^21.0.0 +- tslib: ^2.6.2 +- typescript: ~5.5.2 ++ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: +- typescript: ++ rollup: + optional: true + +- '@guardian/libs@31.0.0': +- resolution: {integrity: sha512-AWA2tfQY023E5412FuURsEXgl82MnsklOC2AcSbrOjdmvHbnugCeNiSNHsm6tAkzLZeumRJ+k72b/rhUIMOL0A==} ++ '@rollup/plugin-json@6.1.0': ++ resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} ++ engines: {node: '>=14.0.0'} + peerDependencies: +- '@guardian/ophan-tracker-js': ^2.2.10 +- tslib: ^2.8.1 +- typescript: ~5.9.3 ++ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: +- typescript: ++ rollup: + optional: true + +- '@guardian/ophan-tracker-js@2.8.0': +- resolution: {integrity: sha512-RPoyxPPKaT1em1LZiD1LKsTYzoXBG8Zjs4OzyP5dhEmfoXD99qK48JI4oGUPlq3wOOB0ZT8UrbtbWDKzeMSBHA==} +- engines: {node: '>=16'} +- +- '@guardian/prettier@5.0.0': +- resolution: {integrity: sha512-gJSQuuP7JVDOWQj4EUrwyJTnMt+frLkw0D2sLg70nHn76L3LmH2xTQtYMPUsqyqn37qocDPzgdvBdmATi50zRQ==} +- peerDependencies: +- prettier: ^3.0.0 +- tslib: ^2.5.3 +- +- '@guardian/react-crossword@11.1.0': +- resolution: {integrity: sha512-GfkyqCHCajiyuMdK8s/s8TH+LhADTcJeIXFEqbesCYp0wQO/DdTR27tRtaFhKqVRCgzRIKFyxd68HcAy+Z7eBQ==} ++ '@rollup/plugin-node-resolve@16.0.3': ++ resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} ++ engines: {node: '>=14.0.0'} + peerDependencies: +- '@emotion/react': ^11.11.4 +- '@guardian/libs': ^26.0.0 +- '@guardian/source': ^11.0.0 +- '@types/react': ^18.2.79 +- react: ^18.2.0 +- typescript: ~5.5.2 ++ rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: +- '@types/react': +- optional: true +- typescript: ++ rollup: + optional: true + +- '@guardian/shimport@1.0.2': +- resolution: {integrity: sha512-o35TxvMFfpQTGL6flW0ggIfU4tPlXp0PqY9vPL2Fx+68qy+s+uX4T0+dN3+JeoBad9QrRZoHfZPALvZlrRWfHw==} +- +- '@guardian/source-development-kitchen@18.1.1': +- resolution: {integrity: sha512-wuMULnVjValyEz6YjrOPt054tXJkutkAbPdeV/KQHoSCSjAJnd0Cp3SZeoVog77HE/iZ0mnKaiVkK+QXpRVtCQ==} ++ '@rollup/pluginutils@5.3.0': ++ resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} ++ engines: {node: '>=14.0.0'} + peerDependencies: +- '@emotion/react': ^11.11.4 +- '@guardian/libs': ^22.0.0 +- '@guardian/source': ^10.0.0 +- '@types/react': ^18.2.79 +- react: ^18.2.0 +- tslib: ^2.6.2 +- typescript: ~5.5.2 ++ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: +- '@emotion/react': +- optional: true +- '@types/react': +- optional: true +- react: +- optional: true +- typescript: ++ rollup: + optional: true + +- '@guardian/source@11.3.0': +- resolution: {integrity: sha512-J8KDoa/dZ926zkx1LdmoGo5i83znqjGDYuyOOc/UBcfH8dKbXDBmi4tvg8Xbl7/C4jSJpgG1JkjRHyzDarcAjg==} +- peerDependencies: +- '@emotion/react': ^11.11.4 +- '@types/react': ^18.2.79 +- react: ^18.2.0 +- tslib: ^2.6.2 +- typescript: ~5.5.2 +- peerDependenciesMeta: +- '@emotion/react': +- optional: true +- '@types/react': +- optional: true +- react: +- optional: true +- typescript: +- optional: true ++ '@rollup/rollup-android-arm-eabi@4.59.0': ++ resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} ++ cpu: [arm] ++ os: [android] + +- '@guardian/support-dotcom-components@8.4.2': +- resolution: {integrity: sha512-vaVnksG7epJK2TO1KvbFm4nE94iHg74qtSYS5hdFVLkk0B0ar5mvfvB9hk5jJaZ5utzNPG1KP3tEqH2SlL9LMA==} +- peerDependencies: +- '@guardian/libs': ^22.0.0 +- '@guardian/ophan-tracker-js': 2.8.0 +- zod: ^4.1.12 ++ '@rollup/rollup-android-arm64@4.59.0': ++ resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} ++ cpu: [arm64] ++ os: [android] + +- '@guardian/tsconfig@0.2.0': +- resolution: {integrity: sha512-RauppalK+cQZDRK6IssVmDSnU/VyqMNuVOxPxhmI03kVRxEdwcmBuRqexHwDbnClVUxW/N9hYLbFNuAb9V/p+A==} ++ '@rollup/rollup-darwin-arm64@4.59.0': ++ resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} ++ cpu: [arm64] ++ os: [darwin] + +- '@guardian/tsconfig@1.0.1': +- resolution: {integrity: sha512-PB24nZ6WTBB8aZ9EyxJw1vC5FYkGqwMQ/O5Oogp6P5HCQU5MN0JpUXvpYci7kwV2oXD1Az06UBnLyyVXOVMadQ==} ++ '@rollup/rollup-darwin-x64@4.59.0': ++ resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} ++ cpu: [x64] ++ os: [darwin] + +- '@humanfs/core@0.19.1': +- resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} +- engines: {node: '>=18.18.0'} ++ '@rollup/rollup-freebsd-arm64@4.59.0': ++ resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} ++ cpu: [arm64] ++ os: [freebsd] + +- '@humanfs/node@0.16.7': +- resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} +- engines: {node: '>=18.18.0'} ++ '@rollup/rollup-freebsd-x64@4.59.0': ++ resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} ++ cpu: [x64] ++ os: [freebsd] + +- '@humanwhocodes/config-array@0.13.0': +- resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} +- engines: {node: '>=10.10.0'} +- deprecated: Use @eslint/config-array instead ++ '@rollup/rollup-linux-arm-gnueabihf@4.59.0': ++ resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} ++ cpu: [arm] ++ os: [linux] + +- '@humanwhocodes/module-importer@1.0.1': +- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} +- engines: {node: '>=12.22'} ++ '@rollup/rollup-linux-arm-musleabihf@4.59.0': ++ resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} ++ cpu: [arm] ++ os: [linux] + +- '@humanwhocodes/object-schema@2.0.3': +- resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} +- deprecated: Use @eslint/object-schema instead ++ '@rollup/rollup-linux-arm64-gnu@4.59.0': ++ resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} ++ cpu: [arm64] ++ os: [linux] + +- '@humanwhocodes/retry@0.4.3': +- resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} +- engines: {node: '>=18.18'} ++ '@rollup/rollup-linux-arm64-musl@4.59.0': ++ resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} ++ cpu: [arm64] ++ os: [linux] + +- '@istanbuljs/load-nyc-config@1.1.0': +- resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} +- engines: {node: '>=8'} ++ '@rollup/rollup-linux-loong64-gnu@4.59.0': ++ resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} ++ cpu: [loong64] ++ os: [linux] + +- '@istanbuljs/schema@0.1.3': +- resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} +- engines: {node: '>=8'} ++ '@rollup/rollup-linux-loong64-musl@4.59.0': ++ resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} ++ cpu: [loong64] ++ os: [linux] + +- '@jest/console@29.7.0': +- resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@rollup/rollup-linux-ppc64-gnu@4.59.0': ++ resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} ++ cpu: [ppc64] ++ os: [linux] + +- '@jest/core@29.7.0': +- resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} +- peerDependencies: +- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 +- peerDependenciesMeta: +- node-notifier: +- optional: true ++ '@rollup/rollup-linux-ppc64-musl@4.59.0': ++ resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} ++ cpu: [ppc64] ++ os: [linux] + +- '@jest/create-cache-key-function@30.2.0': +- resolution: {integrity: sha512-44F4l4Enf+MirJN8X/NhdGkl71k5rBYiwdVlo4HxOwbu0sHV8QKrGEedb1VUU4K3W7fBKE0HGfbn7eZm0Ti3zg==} +- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} ++ '@rollup/rollup-linux-riscv64-gnu@4.59.0': ++ resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} ++ cpu: [riscv64] ++ os: [linux] + +- '@jest/environment@29.7.0': +- resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@rollup/rollup-linux-riscv64-musl@4.59.0': ++ resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} ++ cpu: [riscv64] ++ os: [linux] + +- '@jest/expect-utils@29.7.0': +- resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@rollup/rollup-linux-s390x-gnu@4.59.0': ++ resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} ++ cpu: [s390x] ++ os: [linux] + +- '@jest/expect@29.7.0': +- resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@rollup/rollup-linux-x64-gnu@4.59.0': ++ resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} ++ cpu: [x64] ++ os: [linux] + +- '@jest/fake-timers@29.7.0': +- resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@rollup/rollup-linux-x64-musl@4.59.0': ++ resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} ++ cpu: [x64] ++ os: [linux] + +- '@jest/globals@29.7.0': +- resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@rollup/rollup-openbsd-x64@4.59.0': ++ resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} ++ cpu: [x64] ++ os: [openbsd] + +- '@jest/pattern@30.0.1': +- resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} +- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} ++ '@rollup/rollup-openharmony-arm64@4.59.0': ++ resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} ++ cpu: [arm64] ++ os: [openharmony] + +- '@jest/reporters@29.7.0': +- resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} +- peerDependencies: +- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 +- peerDependenciesMeta: +- node-notifier: +- optional: true ++ '@rollup/rollup-win32-arm64-msvc@4.59.0': ++ resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} ++ cpu: [arm64] ++ os: [win32] + +- '@jest/schemas@29.6.3': +- resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@rollup/rollup-win32-ia32-msvc@4.59.0': ++ resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} ++ cpu: [ia32] ++ os: [win32] + +- '@jest/schemas@30.0.5': +- resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} +- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} ++ '@rollup/rollup-win32-x64-gnu@4.59.0': ++ resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} ++ cpu: [x64] ++ os: [win32] + +- '@jest/source-map@29.6.3': +- resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@rollup/rollup-win32-x64-msvc@4.59.0': ++ resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} ++ cpu: [x64] ++ os: [win32] + +- '@jest/test-result@29.7.0': +- resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@sec-ant/readable-stream@0.4.1': ++ resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + +- '@jest/test-sequencer@29.7.0': +- resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@sentry-internal/browser-utils@10.39.0': ++ resolution: {integrity: sha512-W6WODonMGiI13Az5P7jd/m2lj/JpIyuVKg7wE4X+YdlMehLspAv6I7gRE4OBSumS14ZjdaYDpD/lwtnBwKAzcA==} ++ engines: {node: '>=18'} + +- '@jest/transform@29.7.0': +- resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@sentry-internal/feedback@10.39.0': ++ resolution: {integrity: sha512-cRXmmDeOr5FzVsBNRLU4WDEuC3fhuD0XV362EWl4DI3XBGao8ukaueKcLIKic5WZx6uXimjWw/UJmDLgxeCqkg==} ++ engines: {node: '>=18'} + +- '@jest/types@29.6.3': +- resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} +- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} ++ '@sentry-internal/replay-canvas@10.39.0': ++ resolution: {integrity: sha512-TTiX0XWCcqTqFGJjEZYObk93j/sJmXcqPzcu0cN2mIkKnnaHDY3w74SHZCshKqIr0AOQdt1HDNa36s3TCdt0Jw==} ++ engines: {node: '>=18'} + +- '@jest/types@30.2.0': +- resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} +- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} ++ '@sentry-internal/replay@10.39.0': ++ resolution: {integrity: sha512-obZoYOrUfxIYBHkmtPpItRdE38VuzF1VIxSgZ8Mbtq/9UvCWh+eOaVWU2stN/cVu1KYuYX0nQwBvdN28L6y/JA==} ++ engines: {node: '>=18'} + +- '@jridgewell/gen-mapping@0.3.13': +- resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} ++ '@sentry/browser@10.39.0': ++ resolution: {integrity: sha512-I50W/1PDJWyqgNrGufGhBYCmmO3Bb159nx2Ut2bKoVveTfgH/hLEtDyW0kHo8Fu454mW+ukyXfU4L4s+kB9aaw==} ++ engines: {node: '>=18'} + +- '@jridgewell/remapping@2.3.5': +- resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} ++ '@sentry/core@10.39.0': ++ resolution: {integrity: sha512-xCLip2mBwCdRrvXHtVEULX0NffUTYZZBhEUGht0WFL+GNdNQ7gmBOGOczhZlrf2hgFFtDO0fs1xiP9bqq5orEQ==} ++ engines: {node: '>=18'} + +- '@jridgewell/resolve-uri@3.1.2': +- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} +- engines: {node: '>=6.0.0'} ++ '@sinclair/typebox@0.27.8': ++ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + +- '@jridgewell/source-map@0.3.11': +- resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} ++ '@sinclair/typebox@0.34.41': ++ resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} + +- '@jridgewell/sourcemap-codec@1.5.5': +- resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} ++ '@sindresorhus/is@5.6.0': ++ resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} ++ engines: {node: '>=14.16'} + +- '@jridgewell/trace-mapping@0.3.31': +- resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} ++ '@sinonjs/commons@3.0.0': ++ resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + +- '@jridgewell/trace-mapping@0.3.9': +- resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} +- +- '@jsonjoy.com/base64@1.1.2': +- resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} +- engines: {node: '>=10.0'} +- peerDependencies: +- tslib: '2' +- +- '@jsonjoy.com/buffers@1.2.1': +- resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} +- engines: {node: '>=10.0'} +- peerDependencies: +- tslib: '2' ++ '@sinonjs/fake-timers@10.3.0': ++ resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + +- '@jsonjoy.com/codegen@1.0.0': +- resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} +- engines: {node: '>=10.0'} +- peerDependencies: +- tslib: '2' ++ '@smithy/abort-controller@4.2.12': ++ resolution: {integrity: sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==} ++ engines: {node: '>=18.0.0'} + +- '@jsonjoy.com/json-pack@1.21.0': +- resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} +- engines: {node: '>=10.0'} +- peerDependencies: +- tslib: '2' ++ '@smithy/chunked-blob-reader-native@4.2.1': ++ resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} ++ engines: {node: '>=18.0.0'} + +- '@jsonjoy.com/json-pointer@1.0.2': +- resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} +- engines: {node: '>=10.0'} +- peerDependencies: +- tslib: '2' ++ '@smithy/chunked-blob-reader@5.2.0': ++ resolution: {integrity: sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==} ++ engines: {node: '>=18.0.0'} + +- '@jsonjoy.com/util@1.9.0': +- resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} +- engines: {node: '>=10.0'} +- peerDependencies: +- tslib: '2' ++ '@smithy/config-resolver@4.4.13': ++ resolution: {integrity: sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==} ++ engines: {node: '>=18.0.0'} + +- '@keyv/bigmap@1.3.1': +- resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} +- engines: {node: '>= 18'} +- peerDependencies: +- keyv: ^5.6.0 ++ '@smithy/core@3.23.12': ++ resolution: {integrity: sha512-o9VycsYNtgC+Dy3I0yrwCqv9CWicDnke0L7EVOrZtJpjb2t0EjaEofmMrYc0T1Kn3yk32zm6cspxF9u9Bj7e5w==} ++ engines: {node: '>=18.0.0'} + +- '@keyv/serialize@1.1.1': +- resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} ++ '@smithy/credential-provider-imds@4.2.12': ++ resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==} ++ engines: {node: '>=18.0.0'} + +- '@leichtgewicht/ip-codec@2.0.5': +- resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} ++ '@smithy/eventstream-codec@4.2.8': ++ resolution: {integrity: sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==} ++ engines: {node: '>=18.0.0'} + +- '@mdx-js/react@3.1.1': +- resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} +- peerDependencies: +- '@types/react': '>=16' +- react: '>=16' ++ '@smithy/eventstream-serde-browser@4.2.8': ++ resolution: {integrity: sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==} ++ engines: {node: '>=18.0.0'} + +- '@nodelib/fs.scandir@2.1.5': +- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} +- engines: {node: '>= 8'} ++ '@smithy/eventstream-serde-config-resolver@4.3.8': ++ resolution: {integrity: sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==} ++ engines: {node: '>=18.0.0'} + +- '@nodelib/fs.stat@2.0.5': +- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} +- engines: {node: '>= 8'} ++ '@smithy/eventstream-serde-node@4.2.8': ++ resolution: {integrity: sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==} ++ engines: {node: '>=18.0.0'} + +- '@nodelib/fs.walk@1.2.8': +- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} +- engines: {node: '>= 8'} ++ '@smithy/eventstream-serde-universal@4.2.8': ++ resolution: {integrity: sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==} ++ engines: {node: '>=18.0.0'} + +- '@nolyfill/is-core-module@1.0.39': +- resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} +- engines: {node: '>=12.4.0'} ++ '@smithy/fetch-http-handler@5.3.15': ++ resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==} ++ engines: {node: '>=18.0.0'} + +- '@okta/jwt-verifier@4.0.2': +- resolution: {integrity: sha512-sB1FB0EOtkVSG1VDRBgwSyavttORLXaP2Ru28p2SFeo0Wo7iKjHad4poyCMkrxi1hwrLcBJM1ezznrev/tYTIA==} +- engines: {node: '>=14'} ++ '@smithy/hash-blob-browser@4.2.9': ++ resolution: {integrity: sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==} ++ engines: {node: '>=18.0.0'} + +- '@playwright/test@1.58.0': +- resolution: {integrity: sha512-fWza+Lpbj6SkQKCrU6si4iu+fD2dD3gxNHFhUPxsfXBPhnv3rRSQVd0NtBUT9Z/RhF/boCBcuUaMUSTRTopjZg==} +- engines: {node: '>=18'} +- hasBin: true ++ '@smithy/hash-node@4.2.12': ++ resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==} ++ engines: {node: '>=18.0.0'} + +- '@polka/url@1.0.0-next.29': +- resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} ++ '@smithy/hash-stream-node@4.2.8': ++ resolution: {integrity: sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/plugin-commonjs@29.0.0': +- resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} +- engines: {node: '>=16.0.0 || 14 >= 14.17'} +- peerDependencies: +- rollup: ^2.68.0||^3.0.0||^4.0.0 +- peerDependenciesMeta: +- rollup: +- optional: true ++ '@smithy/invalid-dependency@4.2.12': ++ resolution: {integrity: sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/plugin-inject@5.0.5': +- resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} ++ '@smithy/is-array-buffer@2.2.0': ++ resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} +- peerDependencies: +- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 +- peerDependenciesMeta: +- rollup: +- optional: true + +- '@rollup/plugin-json@6.1.0': +- resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} +- engines: {node: '>=14.0.0'} +- peerDependencies: +- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 +- peerDependenciesMeta: +- rollup: +- optional: true ++ '@smithy/is-array-buffer@4.2.2': ++ resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/plugin-node-resolve@16.0.3': +- resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} +- engines: {node: '>=14.0.0'} +- peerDependencies: +- rollup: ^2.78.0||^3.0.0||^4.0.0 +- peerDependenciesMeta: +- rollup: +- optional: true ++ '@smithy/md5-js@4.2.8': ++ resolution: {integrity: sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/pluginutils@5.3.0': +- resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} +- engines: {node: '>=14.0.0'} +- peerDependencies: +- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 +- peerDependenciesMeta: +- rollup: +- optional: true ++ '@smithy/middleware-compression@4.3.32': ++ resolution: {integrity: sha512-k2juJHA58gqAgnEshBW4b+CqCEaYEGSr6Hms4YIsDdUCHSbFy/JWDWEaNpjNDrlt9h/QuoRycTp1gTXJ1vdpdg==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-android-arm-eabi@4.59.0': +- resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} +- cpu: [arm] +- os: [android] ++ '@smithy/middleware-content-length@4.2.12': ++ resolution: {integrity: sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-android-arm64@4.59.0': +- resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} +- cpu: [arm64] +- os: [android] ++ '@smithy/middleware-endpoint@4.4.27': ++ resolution: {integrity: sha512-T3TFfUgXQlpcg+UdzcAISdZpj4Z+XECZ/cefgA6wLBd6V4lRi0svN2hBouN/be9dXQ31X4sLWz3fAQDf+nt6BA==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-darwin-arm64@4.59.0': +- resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} +- cpu: [arm64] +- os: [darwin] ++ '@smithy/middleware-retry@4.4.44': ++ resolution: {integrity: sha512-Y1Rav7m5CFRPQyM4CI0koD/bXjyjJu3EQxZZhtLGD88WIrBrQ7kqXM96ncd6rYnojwOo/u9MXu57JrEvu/nLrA==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-darwin-x64@4.59.0': +- resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} +- cpu: [x64] +- os: [darwin] ++ '@smithy/middleware-serde@4.2.15': ++ resolution: {integrity: sha512-ExYhcltZSli0pgAKOpQQe1DLFBLryeZ22605y/YS+mQpdNWekum9Ujb/jMKfJKgjtz1AZldtwA/wCYuKJgjjlg==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-freebsd-arm64@4.59.0': +- resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} +- cpu: [arm64] +- os: [freebsd] ++ '@smithy/middleware-stack@4.2.12': ++ resolution: {integrity: sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-freebsd-x64@4.59.0': +- resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} +- cpu: [x64] +- os: [freebsd] ++ '@smithy/node-config-provider@4.3.12': ++ resolution: {integrity: sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-linux-arm-gnueabihf@4.59.0': +- resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} +- cpu: [arm] +- os: [linux] ++ '@smithy/node-http-handler@4.5.0': ++ resolution: {integrity: sha512-Rnq9vQWiR1+/I6NZZMNzJHV6pZYyEHt2ZnuV3MG8z2NNenC4i/8Kzttz7CjZiHSmsN5frhXhg17z3Zqjjhmz1A==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-linux-arm-musleabihf@4.59.0': +- resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} +- cpu: [arm] +- os: [linux] ++ '@smithy/property-provider@4.2.12': ++ resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-linux-arm64-gnu@4.59.0': +- resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} +- cpu: [arm64] +- os: [linux] ++ '@smithy/protocol-http@5.3.12': ++ resolution: {integrity: sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-linux-arm64-musl@4.59.0': +- resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} +- cpu: [arm64] +- os: [linux] ++ '@smithy/querystring-builder@4.2.12': ++ resolution: {integrity: sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-linux-loong64-gnu@4.59.0': +- resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} +- cpu: [loong64] +- os: [linux] ++ '@smithy/querystring-parser@4.2.12': ++ resolution: {integrity: sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-linux-loong64-musl@4.59.0': +- resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} +- cpu: [loong64] +- os: [linux] ++ '@smithy/service-error-classification@4.2.12': ++ resolution: {integrity: sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-linux-ppc64-gnu@4.59.0': +- resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} +- cpu: [ppc64] +- os: [linux] ++ '@smithy/shared-ini-file-loader@4.4.7': ++ resolution: {integrity: sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-linux-ppc64-musl@4.59.0': +- resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} +- cpu: [ppc64] +- os: [linux] ++ '@smithy/signature-v4@5.3.12': ++ resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-linux-riscv64-gnu@4.59.0': +- resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} +- cpu: [riscv64] +- os: [linux] ++ '@smithy/smithy-client@4.12.7': ++ resolution: {integrity: sha512-q3gqnwml60G44FECaEEsdQMplYhDMZYCtYhMCzadCnRnnHIobZJjegmdoUo6ieLQlPUzvrMdIJUpx6DoPmzANQ==} ++ engines: {node: '>=18.0.0'} + +- '@rollup/rollup-linux-riscv64-musl@4.59.0': +- resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} +- cpu: [riscv64] +- os: [linux] +- +- '@rollup/rollup-linux-s390x-gnu@4.59.0': +- resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} +- cpu: [s390x] +- os: [linux] +- +- '@rollup/rollup-linux-x64-gnu@4.59.0': +- resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} +- cpu: [x64] +- os: [linux] +- +- '@rollup/rollup-linux-x64-musl@4.59.0': +- resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} +- cpu: [x64] +- os: [linux] +- +- '@rollup/rollup-openbsd-x64@4.59.0': +- resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} +- cpu: [x64] +- os: [openbsd] +- +- '@rollup/rollup-openharmony-arm64@4.59.0': +- resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} +- cpu: [arm64] +- os: [openharmony] +- +- '@rollup/rollup-win32-arm64-msvc@4.59.0': +- resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} +- cpu: [arm64] +- os: [win32] +- +- '@rollup/rollup-win32-ia32-msvc@4.59.0': +- resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} +- cpu: [ia32] +- os: [win32] +- +- '@rollup/rollup-win32-x64-gnu@4.59.0': +- resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} +- cpu: [x64] +- os: [win32] +- +- '@rollup/rollup-win32-x64-msvc@4.59.0': +- resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} +- cpu: [x64] +- os: [win32] +- +- '@sec-ant/readable-stream@0.4.1': +- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} +- +- '@sentry-internal/browser-utils@10.39.0': +- resolution: {integrity: sha512-W6WODonMGiI13Az5P7jd/m2lj/JpIyuVKg7wE4X+YdlMehLspAv6I7gRE4OBSumS14ZjdaYDpD/lwtnBwKAzcA==} +- engines: {node: '>=18'} +- +- '@sentry-internal/feedback@10.39.0': +- resolution: {integrity: sha512-cRXmmDeOr5FzVsBNRLU4WDEuC3fhuD0XV362EWl4DI3XBGao8ukaueKcLIKic5WZx6uXimjWw/UJmDLgxeCqkg==} +- engines: {node: '>=18'} +- +- '@sentry-internal/replay-canvas@10.39.0': +- resolution: {integrity: sha512-TTiX0XWCcqTqFGJjEZYObk93j/sJmXcqPzcu0cN2mIkKnnaHDY3w74SHZCshKqIr0AOQdt1HDNa36s3TCdt0Jw==} +- engines: {node: '>=18'} +- +- '@sentry-internal/replay@10.39.0': +- resolution: {integrity: sha512-obZoYOrUfxIYBHkmtPpItRdE38VuzF1VIxSgZ8Mbtq/9UvCWh+eOaVWU2stN/cVu1KYuYX0nQwBvdN28L6y/JA==} +- engines: {node: '>=18'} +- +- '@sentry/browser@10.39.0': +- resolution: {integrity: sha512-I50W/1PDJWyqgNrGufGhBYCmmO3Bb159nx2Ut2bKoVveTfgH/hLEtDyW0kHo8Fu454mW+ukyXfU4L4s+kB9aaw==} +- engines: {node: '>=18'} +- +- '@sentry/core@10.39.0': +- resolution: {integrity: sha512-xCLip2mBwCdRrvXHtVEULX0NffUTYZZBhEUGht0WFL+GNdNQ7gmBOGOczhZlrf2hgFFtDO0fs1xiP9bqq5orEQ==} +- engines: {node: '>=18'} +- +- '@sinclair/typebox@0.27.8': +- resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} +- +- '@sinclair/typebox@0.34.41': +- resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} +- +- '@sindresorhus/is@5.6.0': +- resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} +- engines: {node: '>=14.16'} +- +- '@sinonjs/commons@3.0.0': +- resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} +- +- '@sinonjs/fake-timers@10.3.0': +- resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} +- +- '@smithy/abort-controller@4.2.12': +- resolution: {integrity: sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/chunked-blob-reader-native@4.2.1': +- resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/chunked-blob-reader@5.2.0': +- resolution: {integrity: sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/config-resolver@4.4.13': +- resolution: {integrity: sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/core@3.23.12': +- resolution: {integrity: sha512-o9VycsYNtgC+Dy3I0yrwCqv9CWicDnke0L7EVOrZtJpjb2t0EjaEofmMrYc0T1Kn3yk32zm6cspxF9u9Bj7e5w==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/credential-provider-imds@4.2.12': +- resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/eventstream-codec@4.2.8': +- resolution: {integrity: sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/eventstream-serde-browser@4.2.8': +- resolution: {integrity: sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/eventstream-serde-config-resolver@4.3.8': +- resolution: {integrity: sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/eventstream-serde-node@4.2.8': +- resolution: {integrity: sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/eventstream-serde-universal@4.2.8': +- resolution: {integrity: sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/fetch-http-handler@5.3.15': +- resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/hash-blob-browser@4.2.9': +- resolution: {integrity: sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/hash-node@4.2.12': +- resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/hash-stream-node@4.2.8': +- resolution: {integrity: sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/invalid-dependency@4.2.12': +- resolution: {integrity: sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/is-array-buffer@2.2.0': +- resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} +- engines: {node: '>=14.0.0'} +- +- '@smithy/is-array-buffer@4.2.2': +- resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/md5-js@4.2.8': +- resolution: {integrity: sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/middleware-compression@4.3.32': +- resolution: {integrity: sha512-k2juJHA58gqAgnEshBW4b+CqCEaYEGSr6Hms4YIsDdUCHSbFy/JWDWEaNpjNDrlt9h/QuoRycTp1gTXJ1vdpdg==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/middleware-content-length@4.2.12': +- resolution: {integrity: sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/middleware-endpoint@4.4.27': +- resolution: {integrity: sha512-T3TFfUgXQlpcg+UdzcAISdZpj4Z+XECZ/cefgA6wLBd6V4lRi0svN2hBouN/be9dXQ31X4sLWz3fAQDf+nt6BA==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/middleware-retry@4.4.44': +- resolution: {integrity: sha512-Y1Rav7m5CFRPQyM4CI0koD/bXjyjJu3EQxZZhtLGD88WIrBrQ7kqXM96ncd6rYnojwOo/u9MXu57JrEvu/nLrA==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/middleware-serde@4.2.15': +- resolution: {integrity: sha512-ExYhcltZSli0pgAKOpQQe1DLFBLryeZ22605y/YS+mQpdNWekum9Ujb/jMKfJKgjtz1AZldtwA/wCYuKJgjjlg==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/middleware-stack@4.2.12': +- resolution: {integrity: sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/node-config-provider@4.3.12': +- resolution: {integrity: sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/node-http-handler@4.5.0': +- resolution: {integrity: sha512-Rnq9vQWiR1+/I6NZZMNzJHV6pZYyEHt2ZnuV3MG8z2NNenC4i/8Kzttz7CjZiHSmsN5frhXhg17z3Zqjjhmz1A==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/property-provider@4.2.12': +- resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/protocol-http@5.3.12': +- resolution: {integrity: sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/querystring-builder@4.2.12': +- resolution: {integrity: sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/querystring-parser@4.2.12': +- resolution: {integrity: sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/service-error-classification@4.2.12': +- resolution: {integrity: sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/shared-ini-file-loader@4.4.7': +- resolution: {integrity: sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/signature-v4@5.3.12': +- resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/smithy-client@4.12.7': +- resolution: {integrity: sha512-q3gqnwml60G44FECaEEsdQMplYhDMZYCtYhMCzadCnRnnHIobZJjegmdoUo6ieLQlPUzvrMdIJUpx6DoPmzANQ==} +- engines: {node: '>=18.0.0'} +- +- '@smithy/types@4.13.1': +- resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==} +- engines: {node: '>=18.0.0'} ++ '@smithy/types@4.13.1': ++ resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==} ++ engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.2.12': + resolution: {integrity: sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==} +@@ -3240,25 +2662,11 @@ packages: + peerDependencies: + storybook: ^10.3.3 + +- '@storybook/addon-webpack5-compiler-swc@4.0.3': +- resolution: {integrity: sha512-REJZBArIBcqzxmhQY9R1br9hjfcFYdl4FeWD/okx1eRwPZkl49aUhTYqZPrA+MWXfKJkuuNQ5vnfSoR0c9HyvA==} +- engines: {node: '>=18'} +- peerDependencies: +- storybook: ^9.0.0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 || ^10.4.0-0 +- +- '@storybook/builder-webpack5@10.3.3': +- resolution: {integrity: sha512-A7hop0VXG/06EZ7l2WIuhsrnpiV6NOOcOiVqjYDLplbVelkiiL98LTL+Om87u0n32sAfXWgFk2jIhSc3bbXlsQ==} +- peerDependencies: +- storybook: ^10.3.3 +- typescript: '*' +- peerDependenciesMeta: +- typescript: +- optional: true +- +- '@storybook/core-webpack@10.3.3': +- resolution: {integrity: sha512-ESRM2k9m1V0qXaqEM+bvtCjv9+gYVE3PMuoNZMyIYNdGA4Pdc2PvQsUrKQNVByVbEGwjt+h0RE6b20bnBkdYsg==} ++ '@storybook/builder-vite@10.3.3': ++ resolution: {integrity: sha512-awspKCTZvXyeV3KabL0id62mFbxR5u/5yyGQultwCiSb2/yVgBfip2MAqLyS850pvTiB6QFVM9deOyd2/G/bEA==} + peerDependencies: + storybook: ^10.3.3 ++ vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@storybook/csf-plugin@10.3.3': + resolution: {integrity: sha512-Utlh7zubm+4iOzBBfzLW4F4vD99UBtl2Do4edlzK2F7krQIcFvR2ontjAE8S1FQVLZAC3WHalCOS+Ch8zf3knA==} +@@ -3290,23 +2698,6 @@ packages: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + +- '@storybook/preset-react-webpack@10.3.3': +- resolution: {integrity: sha512-R8WeGUo062VpIx+i+5/Cv8dVGM+YSgCGZ0STPANijmOHATvfWpslTAIjMkq0me/BoDT5zxzCnYvAyRrBcjOW8A==} +- peerDependencies: +- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 +- react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 +- storybook: ^10.3.3 +- typescript: '*' +- peerDependenciesMeta: +- typescript: +- optional: true +- +- '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0': +- resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} +- peerDependencies: +- typescript: '>= 4.x' +- webpack: '>= 4' +- + '@storybook/react-dom-shim@10.3.3': + resolution: {integrity: sha512-lkhuh4G3UTreU9M3Iz5Dt32c6U+l/4XuvqLtbe1sDHENZH6aPj7y0b5FwnfHyvuTvYRhtbo29xZrF5Bp9kCC0w==} + peerDependencies: +@@ -3314,16 +2705,13 @@ packages: + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^10.3.3 + +- '@storybook/react-webpack5@10.3.3': +- resolution: {integrity: sha512-+x5/KrLmgv7VnWfzKxh0xftnDIjogiVksNuaLJAl4TRuY7/OsrlJBUckQ+ovMXTZpaAini6+7IVoilrzmdl4cA==} ++ '@storybook/react-vite@10.3.3': ++ resolution: {integrity: sha512-qHdlBe1hjqFAGXa8JL7bWTLbP/gDqXbWDm+SYCB646NHh5yvVDkZLwigP5Y+UL7M2ASfqFtosnroUK9tcCM2dw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^10.3.3 +- typescript: '>= 4.9.x' +- peerDependenciesMeta: +- typescript: +- optional: true ++ vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@storybook/react@10.3.3': + resolution: {integrity: sha512-cGG5TbR8Tdx9zwlpsWyBEfWrejm5iWdYF26EwIhwuKq9GFUTAVrQzo0Rs7Tqc3ZyVhRS/YfsRiWSEH+zmq2JiQ==} +@@ -3485,16 +2873,6 @@ packages: + peerDependencies: + '@svgr/core': '*' + +- '@svgr/plugin-svgo@8.1.0': +- resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} +- engines: {node: '>=14'} +- peerDependencies: +- '@svgr/core': '*' +- +- '@svgr/webpack@8.1.0': +- resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} +- engines: {node: '>=14'} +- + '@swc/cli@0.7.8': + resolution: {integrity: sha512-27Ov4rm0s2C6LLX+NDXfDVB69LGs8K94sXtFhgeUyQ4DBywZuCgTBu2loCNHRr8JhT9DeQvJM5j9FAu/THbo4w==} + engines: {node: '>= 16.14.0'} +@@ -3660,9 +3038,6 @@ packages: + '@types/body-parser@1.19.2': + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + +- '@types/bonjour@3.5.13': +- resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} +- + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + +@@ -3672,9 +3047,6 @@ packages: + '@types/compression@1.7.5': + resolution: {integrity: sha512-AAQvK5pxMpaT+nDvhHrsBhLSYG5yQdtkaJE1WYieSNY2mVFKAgmU4ks65rkZD5oqnGCFLyQpUr1CqI4DmUMyDg==} + +- '@types/connect-history-api-fallback@1.5.4': +- resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} +- + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + +@@ -3723,9 +3095,6 @@ packages: + '@types/he@1.2.0': + resolution: {integrity: sha512-uH2smqTN4uGReAiKedIVzoLUAXIYLBTbSofhx3hbNqj74Ua6KqFsLYszduTrLCMEAEAozF73DbGi/SC1bzQq4g==} + +- '@types/html-minifier-terser@6.1.0': +- resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} +- + '@types/html-minifier-terser@7.0.2': + resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==} + +@@ -3735,9 +3104,6 @@ packages: + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + +- '@types/http-proxy@1.17.16': +- resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} +- + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + +@@ -3789,9 +3155,6 @@ packages: + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + +- '@types/node-forge@1.3.14': +- resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} +- + '@types/node@15.14.9': + resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} + +@@ -3841,9 +3204,6 @@ packages: + '@types/resolve@1.20.6': + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + +- '@types/retry@0.12.2': +- resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} +- + '@types/sanitize-html@2.11.0': + resolution: {integrity: sha512-7oxPGNQHXLHE48r/r/qjn7q0hlrs3kL7oZnGj0Wf/h9tj/6ibFyRkNbsDxaBBZ4XUZ0Dx5LGCyDJ04ytSofacQ==} + +@@ -3853,27 +3213,18 @@ packages: + '@types/semver@7.5.6': + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + +- '@types/semver@7.7.1': +- resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} +- + '@types/send@0.17.5': + resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} + +- '@types/serve-index@1.9.4': +- resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} +- + '@types/serve-static@1.15.9': + resolution: {integrity: sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==} + + '@types/serve-static@2.2.0': + resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} + +- '@types/sockjs@0.3.36': +- resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} +- + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + +@@ -3889,18 +3240,6 @@ packages: + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + +- '@types/webpack-bundle-analyzer@4.7.0': +- resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} +- +- '@types/webpack-env@1.18.8': +- resolution: {integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==} +- +- '@types/webpack-node-externals@3.0.4': +- resolution: {integrity: sha512-8Z3/edqxE3RRlOJwKSgOFxLZRt/i1qFlv/Bi308ZUKo9jh8oGngd9r8GR0ZNKW5AEJq8QNQE3b17CwghTjQ0Uw==} +- +- '@types/ws@8.18.1': +- resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} +- + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + +@@ -4144,31 +3483,6 @@ packages: + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + +- '@webpack-cli/configtest@3.0.1': +- resolution: {integrity: sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==} +- engines: {node: '>=18.12.0'} +- peerDependencies: +- webpack: ^5.82.0 +- webpack-cli: 6.x.x +- +- '@webpack-cli/info@3.0.1': +- resolution: {integrity: sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==} +- engines: {node: '>=18.12.0'} +- peerDependencies: +- webpack: ^5.82.0 +- webpack-cli: 6.x.x +- +- '@webpack-cli/serve@3.0.1': +- resolution: {integrity: sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==} +- engines: {node: '>=18.12.0'} +- peerDependencies: +- webpack: ^5.82.0 +- webpack-cli: 6.x.x +- webpack-dev-server: '*' +- peerDependenciesMeta: +- webpack-dev-server: +- optional: true +- + '@xhmikosr/archive-type@7.0.0': + resolution: {integrity: sha512-sIm84ZneCOJuiy3PpWR5bxkx3HaNt1pqaN+vncUBZIlPZCq8ASZH+hBVdu5H8znR7qYC6sKwx+ie2Q7qztJTxA==} + engines: {node: ^14.14.0 || >=16.0.0} +@@ -4266,11 +3580,6 @@ packages: + ajv: + optional: true + +- ajv-keywords@3.5.2: +- resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} +- peerDependencies: +- ajv: ^6.9.1 +- + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: +@@ -4290,11 +3599,6 @@ packages: + resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} + engines: {node: '>=14.16'} + +- ansi-html-community@0.0.8: +- resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} +- engines: {'0': node >= 0.8.0} +- hasBin: true +- + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} +@@ -4470,21 +3774,6 @@ packages: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + +- babel-plugin-polyfill-corejs2@0.4.14: +- resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} +- peerDependencies: +- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 +- +- babel-plugin-polyfill-corejs3@0.13.0: +- resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} +- peerDependencies: +- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 +- +- babel-plugin-polyfill-regenerator@0.6.5: +- resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} +- peerDependencies: +- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 +- + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: +@@ -4524,12 +3813,6 @@ packages: + resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + hasBin: true + +- batch@0.6.1: +- resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} +- +- big.js@5.2.2: +- resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} +- + bin-version-check@5.1.0: + resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==} + engines: {node: '>=12'} +@@ -4538,10 +3821,6 @@ packages: + resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} + engines: {node: '>=12'} + +- binary-extensions@2.3.0: +- resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} +- engines: {node: '>=8'} +- + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} +@@ -4550,12 +3829,6 @@ packages: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} + engines: {node: '>=18'} + +- bonjour-service@1.3.0: +- resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} +- +- boolbase@1.0.0: +- resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} +- + bowser@2.12.1: + resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} + +@@ -4658,10 +3931,6 @@ packages: + caniuse-lite@1.0.30001769: + resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} + +- case-sensitive-paths-webpack-plugin@2.4.0: +- resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} +- engines: {node: '>=4'} +- + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + +@@ -4698,10 +3967,6 @@ packages: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} + engines: {node: '>= 16'} + +- chokidar@3.6.0: +- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} +- engines: {node: '>= 8.10.0'} +- + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} +@@ -4757,10 +4022,6 @@ packages: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + +- clone-deep@4.0.1: +- resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} +- engines: {node: '>=6'} +- + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} +@@ -4810,10 +4071,6 @@ packages: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + +- commander@12.1.0: +- resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} +- engines: {node: '>=18'} +- + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + +@@ -4821,10 +4078,6 @@ packages: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + +- commander@7.2.0: +- resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} +- engines: {node: '>= 10'} +- + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} +@@ -4850,14 +4103,6 @@ packages: + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + +- connect-history-api-fallback@2.0.0: +- resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} +- engines: {node: '>=0.8'} +- +- console-clear@1.1.1: +- resolution: {integrity: sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==} +- engines: {node: '>=4'} +- + constructs@10.6.0: + resolution: {integrity: sha512-TxHOnBO5zMo/G76ykzGF/wMpEHu257TbWiIxP9K0Yv/+t70UzgBQiTqjkAsWOPC6jW91DzJI0+ehQV6xDRNBuQ==} + +@@ -4898,9 +4143,6 @@ packages: + resolution: {integrity: sha512-mFsNh/DIANLqFt5VHZoGirdg7bK5+oTWlhnGu6tgRhzBlnEKWaPX2xrFaLltii/6rmhqFMJqffUgknuRdpYlHw==} + engines: {node: '>=18'} + +- core-js-compat@3.46.0: +- resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} +- + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + +@@ -4950,40 +4192,10 @@ packages: + resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} + engines: {node: '>=12'} + +- css-loader@7.1.2: +- resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} +- engines: {node: '>= 18.12.0'} +- peerDependencies: +- '@rspack/core': 0.x || 1.x +- webpack: ^5.27.0 +- peerDependenciesMeta: +- '@rspack/core': +- optional: true +- webpack: +- optional: true +- +- css-select@4.3.0: +- resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} +- +- css-select@5.1.0: +- resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} +- +- css-tree@2.2.1: +- resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} +- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} +- +- css-tree@2.3.1: +- resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} +- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} +- + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + +- css-what@6.2.2: +- resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} +- engines: {node: '>= 6'} +- + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + +@@ -4992,10 +4204,6 @@ packages: + engines: {node: '>=4'} + hasBin: true + +- csso@5.0.5: +- resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} +- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} +- + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + +@@ -5048,9 +4256,6 @@ packages: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + +- debounce@1.2.1: +- resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} +- + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: +@@ -5099,9 +4304,6 @@ packages: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + +- dedent@0.7.0: +- resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} +- + dedent@1.6.0: + resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + peerDependencies: +@@ -5153,10 +4355,6 @@ packages: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + +- depd@1.1.2: +- resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} +- engines: {node: '>= 0.6'} +- + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} +@@ -5173,9 +4371,6 @@ packages: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + +- detect-node@2.1.0: +- resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} +- + devalue@5.6.3: + resolution: {integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==} + +@@ -5194,10 +4389,6 @@ packages: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + +- dns-packet@5.6.1: +- resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} +- engines: {node: '>=6'} +- + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} +@@ -5212,12 +4403,6 @@ packages: + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + +- dom-converter@0.2.0: +- resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} +- +- dom-serializer@1.4.1: +- resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} +- + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + +@@ -5229,10 +4414,6 @@ packages: + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + +- domhandler@4.3.1: +- resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} +- engines: {node: '>= 4'} +- + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} +@@ -5240,9 +4421,6 @@ packages: + dompurify@3.2.4: + resolution: {integrity: sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==} + +- domutils@2.8.0: +- resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} +- + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + +@@ -5256,12 +4434,6 @@ packages: + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + +- duplexer@0.1.2: +- resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} +- +- dynamic-import-polyfill@0.1.1: +- resolution: {integrity: sha512-m953zv0w5oDagTItWm6Auhmk/pY7EiejaqiVbnzSS3HIjh1FCUeK7WzuaVtWPNs58A+/xpIE+/dVk6pKsrua8g==} +- + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + +@@ -5284,24 +4456,18 @@ packages: + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + +- emojis-list@3.0.0: +- resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} +- engines: {node: '>= 4'} ++ empathic@2.0.0: ++ resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} ++ engines: {node: '>=14'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + +- endent@2.1.0: +- resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} +- + enhanced-resolve@5.19.0: + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} + engines: {node: '>=10.13.0'} + +- entities@2.2.0: +- resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} +- + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} +@@ -5310,11 +4476,6 @@ packages: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + +- envinfo@7.14.0: +- resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} +- engines: {node: '>=4'} +- hasBin: true +- + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + +@@ -5657,9 +4818,6 @@ packages: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + +- eventemitter3@4.0.7: +- resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} +- + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + +@@ -5712,9 +4870,6 @@ packages: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + +- fast-json-parse@1.0.3: +- resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} +- + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + +@@ -5738,10 +4893,6 @@ packages: + fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + +- faye-websocket@0.11.4: +- resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} +- engines: {node: '>=0.8.0'} +- + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + +@@ -5796,10 +4947,6 @@ packages: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} + +- find-cache-dir@3.3.2: +- resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} +- engines: {node: '>=8'} +- + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + +@@ -5833,33 +4980,13 @@ packages: + flat-cache@6.1.21: + resolution: {integrity: sha512-2u7cJfSf7Th7NxEk/VzQjnPoglok2YCsevS7TSbJjcDQWJPbqUUnSYtriHSvtnq+fRZHy1s0ugk4ApnQyhPGoQ==} + +- flat@5.0.2: +- resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} +- hasBin: true +- + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + +- follow-redirects@1.15.11: +- resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} +- engines: {node: '>=4.0'} +- peerDependencies: +- debug: '*' +- peerDependenciesMeta: +- debug: +- optional: true +- + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + +- fork-ts-checker-webpack-plugin@9.1.0: +- resolution: {integrity: sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==} +- engines: {node: '>=14.21.3'} +- peerDependencies: +- typescript: '>3.6.0' +- webpack: ^5.11.0 +- + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} +@@ -5892,9 +5019,6 @@ packages: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + +- fs-monkey@1.1.0: +- resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} +- + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + +@@ -5982,15 +5106,13 @@ packages: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + +- glob-to-regex.js@1.2.0: +- resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} +- engines: {node: '>=10.0'} +- peerDependencies: +- tslib: '2' +- + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + ++ glob@13.0.6: ++ resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} ++ engines: {node: 18 || 20 || >=22} ++ + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me +@@ -6044,13 +5166,6 @@ packages: + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + +- gzip-size@6.0.0: +- resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} +- engines: {node: '>=10'} +- +- handle-thing@2.0.1: +- resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} +- + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} +@@ -6140,24 +5255,13 @@ packages: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + +- hpack.js@2.1.6: +- resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} +- + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + +- html-entities@2.4.0: +- resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} +- + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + +- html-minifier-terser@6.1.0: +- resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} +- engines: {node: '>=12'} +- hasBin: true +- + html-minifier-terser@7.2.0: + resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} + engines: {node: ^14.13.1 || >=16.0.0} +@@ -6174,58 +5278,20 @@ packages: + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + +- html-webpack-plugin@5.6.6: +- resolution: {integrity: sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==} +- engines: {node: '>=10.13.0'} +- peerDependencies: +- '@rspack/core': 0.x || 1.x +- webpack: ^5.20.0 +- peerDependenciesMeta: +- '@rspack/core': +- optional: true +- webpack: +- optional: true +- +- htmlparser2@6.1.0: +- resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} +- + htmlparser2@8.0.1: + resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + +- http-deceiver@1.2.7: +- resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} +- +- http-errors@1.6.3: +- resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} +- engines: {node: '>= 0.6'} +- + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + +- http-parser-js@0.5.10: +- resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} +- + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + +- http-proxy-middleware@2.0.9: +- resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} +- engines: {node: '>=12.0.0'} +- peerDependencies: +- '@types/express': ^4.17.13 +- peerDependenciesMeta: +- '@types/express': +- optional: true +- +- http-proxy@1.18.1: +- resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} +- engines: {node: '>=8.0.0'} +- + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} +@@ -6247,10 +5313,6 @@ packages: + engines: {node: '>=18'} + hasBin: true + +- hyperdyperid@1.2.0: +- resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} +- engines: {node: '>=10.18'} +- + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} +@@ -6263,12 +5325,6 @@ packages: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + +- icss-utils@5.1.0: +- resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} +- engines: {node: ^10 || ^12 || >= 14} +- peerDependencies: +- postcss: ^8.1.0 +- + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + +@@ -6309,9 +5365,6 @@ packages: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + +- inherits@2.0.3: +- resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} +- + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + +@@ -6325,18 +5378,10 @@ packages: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + +- interpret@3.1.1: +- resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} +- engines: {node: '>=10.13.0'} +- + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + +- ipaddr.js@2.2.0: +- resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} +- engines: {node: '>= 10'} +- + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} +@@ -6352,10 +5397,6 @@ packages: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + +- is-binary-path@2.1.0: +- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} +- engines: {node: '>=8'} +- + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} +@@ -6443,10 +5484,6 @@ packages: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + +- is-network-error@1.3.0: +- resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} +- engines: {node: '>=16'} +- + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} +@@ -6463,18 +5500,10 @@ packages: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + +- is-plain-obj@3.0.0: +- resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} +- engines: {node: '>=10'} +- + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + +- is-plain-object@2.0.4: +- resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} +- engines: {node: '>=0.10.0'} +- + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} +@@ -6558,10 +5587,6 @@ packages: + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + +- isobject@3.0.1: +- resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} +- engines: {node: '>=0.10.0'} +- + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} +@@ -6856,9 +5881,6 @@ packages: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + +- launch-editor@2.11.1: +- resolution: {integrity: sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==} +- + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} +@@ -6890,10 +5912,6 @@ packages: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} + engines: {node: '>=6.11.5'} + +- loader-utils@1.4.2: +- resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} +- engines: {node: '>=4.0.0'} +- + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + +@@ -6905,9 +5923,6 @@ packages: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + +- lockfile@1.0.4: +- resolution: {integrity: sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==} +- + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + +@@ -6951,6 +5966,10 @@ packages: + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + ++ lru-cache@11.3.3: ++ resolution: {integrity: sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ==} ++ engines: {node: 20 || >=22} ++ + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + +@@ -6968,10 +5987,6 @@ packages: + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + +- make-dir@3.1.0: +- resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} +- engines: {node: '>=8'} +- + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} +@@ -6998,12 +6013,6 @@ packages: + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + +- mdn-data@2.0.28: +- resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} +- +- mdn-data@2.0.30: +- resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} +- + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + +@@ -7015,13 +6024,6 @@ packages: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + +- memfs@3.5.3: +- resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} +- engines: {node: '>= 4.0.0'} +- +- memfs@4.49.0: +- resolution: {integrity: sha512-L9uC9vGuc4xFybbdOpRLoOAOq1YEBBsocCs5NVW32DfU+CZWWIn3OVF+lB8Gp4ttBVSMazwrTrjv8ussX/e3VQ==} +- + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} +@@ -7160,9 +6162,6 @@ packages: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + +- minimalistic-assert@1.0.1: +- resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} +- + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} +@@ -7177,6 +6176,10 @@ packages: + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + ++ minipass@7.1.3: ++ resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} ++ engines: {node: '>=16 || 14 >=14.17'} ++ + mnemonist@0.38.3: + resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} + +@@ -7187,10 +6190,6 @@ packages: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + +- mrmime@1.0.1: +- resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} +- engines: {node: '>=10'} +- + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} +@@ -7204,10 +6203,6 @@ packages: + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + +- multicast-dns@7.2.5: +- resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} +- hasBin: true +- + multipipe@1.0.2: + resolution: {integrity: sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==} + +@@ -7245,9 +6240,6 @@ packages: + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + +- node-abort-controller@3.1.1: +- resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} +- + node-addon-api@3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + +@@ -7260,10 +6252,6 @@ packages: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + +- node-forge@1.4.0: +- resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} +- engines: {node: '>= 6.13.0'} +- + node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true +@@ -7297,9 +6285,6 @@ packages: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + +- nth-check@2.1.1: +- resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} +- + nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + +@@ -7341,15 +6326,9 @@ packages: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + +- objectorarray@1.0.5: +- resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} +- + obliterator@1.6.1: + resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} + +- obuf@1.1.2: +- resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} +- + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} +@@ -7381,10 +6360,6 @@ packages: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + +- opener@1.5.2: +- resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} +- hasBin: true +- + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} +@@ -7429,10 +6404,6 @@ packages: + resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} + engines: {node: '>=16'} + +- p-retry@6.2.1: +- resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} +- engines: {node: '>=16.17'} +- + p-timeout@6.1.2: + resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} + engines: {node: '>=14.16'} +@@ -7502,6 +6473,10 @@ packages: + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + ++ path-scurry@2.0.2: ++ resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} ++ engines: {node: 18 || 20 || >=22} ++ + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} + +@@ -7571,30 +6546,6 @@ packages: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + +- postcss-modules-extract-imports@3.1.0: +- resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} +- engines: {node: ^10 || ^12 || >= 14} +- peerDependencies: +- postcss: ^8.1.0 +- +- postcss-modules-local-by-default@4.0.5: +- resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} +- engines: {node: ^10 || ^12 || >= 14} +- peerDependencies: +- postcss: ^8.1.0 +- +- postcss-modules-scope@3.2.0: +- resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} +- engines: {node: ^10 || ^12 || >= 14} +- peerDependencies: +- postcss: ^8.1.0 +- +- postcss-modules-values@4.0.0: +- resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} +- engines: {node: ^10 || ^12 || >= 14} +- peerDependencies: +- postcss: ^8.1.0 +- + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + +@@ -7604,10 +6555,6 @@ packages: + peerDependencies: + postcss: ^8.4.31 + +- postcss-selector-parser@6.1.2: +- resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} +- engines: {node: '>=4'} +- + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + engines: {node: '>=4'} +@@ -7646,9 +6593,6 @@ packages: + engines: {node: '>=14'} + hasBin: true + +- pretty-error@4.0.0: +- resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} +- + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} +@@ -7739,10 +6683,6 @@ packages: + peerDependencies: + typescript: '>= 4.3.x' + +- react-docgen@7.1.1: +- resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} +- engines: {node: '>=16.14.0'} +- + react-docgen@8.0.2: + resolution: {integrity: sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA==} + engines: {node: ^20.9.0 || >=22} +@@ -7792,14 +6732,6 @@ packages: + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + +- readable-stream@3.6.2: +- resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} +- engines: {node: '>= 6'} +- +- readdirp@3.6.0: +- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} +- engines: {node: '>=8.10.0'} +- + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} +@@ -7808,10 +6740,6 @@ packages: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + +- rechoir@0.8.0: +- resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} +- engines: {node: '>= 10.13.0'} +- + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} +@@ -7820,13 +6748,6 @@ packages: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + +- regenerate-unicode-properties@10.2.2: +- resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} +- engines: {node: '>=4'} +- +- regenerate@1.4.2: +- resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} +- + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true +@@ -7835,21 +6756,10 @@ packages: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + +- regexpu-core@6.4.0: +- resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} +- engines: {node: '>=4'} +- +- regjsgen@0.8.0: +- resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} +- + regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + +- regjsparser@0.13.0: +- resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} +- hasBin: true +- + rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + +@@ -7869,9 +6779,6 @@ packages: + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + +- renderkid@3.0.0: +- resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} +- + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} +@@ -7922,10 +6829,6 @@ packages: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + +- retry@0.13.1: +- resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} +- engines: {node: '>= 4'} +- + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} +@@ -8009,10 +6912,6 @@ packages: + sanitize-html@2.13.0: + resolution: {integrity: sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==} + +- sax@1.6.0: +- resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} +- engines: {node: '>=11.0.0'} +- + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} +@@ -8020,10 +6919,6 @@ packages: + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + +- schema-utils@3.3.0: +- resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} +- engines: {node: '>= 10.13.0'} +- + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} + engines: {node: '>= 10.13.0'} +@@ -8039,13 +6934,6 @@ packages: + resolution: {integrity: sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==} + hasBin: true + +- select-hose@2.0.0: +- resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} +- +- selfsigned@2.4.1: +- resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} +- engines: {node: '>=10'} +- + semver-regex@4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} +@@ -8080,10 +6968,6 @@ packages: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} + +- serve-index@1.9.1: +- resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} +- engines: {node: '>= 0.8.0'} +- + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} +@@ -8107,16 +6991,9 @@ packages: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + +- setprototypeof@1.1.0: +- resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} +- + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + +- shallow-clone@3.0.1: +- resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} +- engines: {node: '>=8'} +- + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} +@@ -8125,10 +7002,6 @@ packages: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + +- shell-quote@1.8.3: +- resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} +- engines: {node: '>= 0.4'} +- + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} +@@ -8152,10 +7025,6 @@ packages: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + +- sirv@2.0.3: +- resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} +- engines: {node: '>= 10'} +- + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} +@@ -8186,9 +7055,6 @@ packages: + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + +- sockjs@0.3.24: +- resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} +- + sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} +@@ -8234,13 +7100,6 @@ packages: + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} + +- spdy-transport@3.0.0: +- resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} +- +- spdy@4.0.2: +- resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} +- engines: {node: '>=6.0.0'} +- + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + +@@ -8251,10 +7110,6 @@ packages: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + +- statuses@1.5.0: +- resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} +- engines: {node: '>= 0.6'} +- + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} +@@ -8324,9 +7179,6 @@ packages: + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + +- string_decoder@1.3.0: +- resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} +- + stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + +@@ -8376,12 +7228,6 @@ packages: + resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==} + engines: {node: '>=16'} + +- style-loader@4.0.0: +- resolution: {integrity: sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==} +- engines: {node: '>= 18.12.0'} +- peerDependencies: +- webpack: ^5.27.0 +- + stylelint-config-recommended@14.0.0: + resolution: {integrity: sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==} + engines: {node: '>=18.12.0'} +@@ -8438,17 +7284,6 @@ packages: + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + +- svgo@3.3.3: +- resolution: {integrity: sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==} +- engines: {node: '>=14.0.0'} +- hasBin: true +- +- swc-loader@0.2.6: +- resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} +- peerDependencies: +- '@swc/core': ^1.2.147 +- webpack: '>=2' +- + swr@1.3.0: + resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==} + peerDependencies: +@@ -8499,21 +7334,12 @@ packages: + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + +- thingies@2.5.0: +- resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} +- engines: {node: '>=10.18'} +- peerDependencies: +- tslib: ^2 +- + through2@0.4.2: + resolution: {integrity: sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + +- thunky@1.1.0: +- resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} +- + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + +@@ -8536,9 +7362,6 @@ packages: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + +- to-string-loader@1.2.0: +- resolution: {integrity: sha512-KsWUL8FccgBW9FPFm4vYoQbOOcO5m6hKOGYoXjbseD9/4Ft+ravXN5jolQ9kTKYcK4zPt1j+khx97GPGnVoi6A==} +- + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} +@@ -8566,12 +7389,6 @@ packages: + traverse-chain@0.1.0: + resolution: {integrity: sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==} + +- tree-dump@1.1.0: +- resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} +- engines: {node: '>=10.0'} +- peerDependencies: +- tslib: '2' +- + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + +@@ -8744,25 +7561,9 @@ packages: + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + +- unicode-canonical-property-names-ecmascript@2.0.1: +- resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} +- engines: {node: '>=4'} +- +- unicode-match-property-ecmascript@2.0.0: +- resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} +- engines: {node: '>=4'} +- +- unicode-match-property-value-ecmascript@2.2.1: +- resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} +- engines: {node: '>=4'} +- +- unicode-property-aliases-ecmascript@2.2.0: +- resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} +- engines: {node: '>=4'} +- +- unicorn-magic@0.1.0: +- resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} +- engines: {node: '>=18'} ++ unicorn-magic@0.1.0: ++ resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} ++ engines: {node: '>=18'} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} +@@ -8837,9 +7638,6 @@ packages: + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + +- utila@0.4.0: +- resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} +- + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} +@@ -8938,9 +7736,6 @@ packages: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} + engines: {node: '>=10.13.0'} + +- wbuf@1.7.3: +- resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} +- + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + +@@ -8955,92 +7750,6 @@ packages: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + +- webpack-assets-manifest@6.3.0: +- resolution: {integrity: sha512-UcjiDm66jLTchxcXnvUDLg8Eoje8wsbjiA30RPymfLhi9UIVH1xA6pmqw5DLHVelr8hlzkeE74ofOrQNMwNX5A==} +- engines: {node: '>=20.10.0'} +- peerDependencies: +- webpack: ^5.61.0 +- +- webpack-bundle-analyzer@4.10.2: +- resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} +- engines: {node: '>= 10.13.0'} +- hasBin: true +- +- webpack-cli@6.0.1: +- resolution: {integrity: sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==} +- engines: {node: '>=18.12.0'} +- hasBin: true +- peerDependencies: +- webpack: ^5.82.0 +- webpack-bundle-analyzer: '*' +- webpack-dev-server: '*' +- peerDependenciesMeta: +- webpack-bundle-analyzer: +- optional: true +- webpack-dev-server: +- optional: true +- +- webpack-dev-middleware@6.1.3: +- resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==} +- engines: {node: '>= 14.15.0'} +- peerDependencies: +- webpack: ^5.0.0 +- peerDependenciesMeta: +- webpack: +- optional: true +- +- webpack-dev-middleware@7.4.5: +- resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} +- engines: {node: '>= 18.12.0'} +- peerDependencies: +- webpack: ^5.0.0 +- peerDependenciesMeta: +- webpack: +- optional: true +- +- webpack-dev-server@5.2.2: +- resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} +- engines: {node: '>= 18.12.0'} +- hasBin: true +- peerDependencies: +- webpack: ^5.0.0 +- webpack-cli: '*' +- peerDependenciesMeta: +- webpack: +- optional: true +- webpack-cli: +- optional: true +- +- webpack-format-messages@2.0.6: +- resolution: {integrity: sha512-JOUviZSCupGTf6uJjrxKMEyOawWws566e3phwSyuWBsQxuBU6Gm4QV5wdU8UfkPIhWyhAqSGKeq8fNE9Q4rs9Q==} +- engines: {node: '>=6'} +- +- webpack-hot-middleware@2.26.1: +- resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} +- +- webpack-hot-server-middleware@0.6.1: +- resolution: {integrity: sha512-YOKwdS0hnmADsNCsReGkMOBkoz2YVrQZvnVcViM2TDXlK9NnaOGXmnrLFjzwsHFa0/iuJy/QJFEoMxzk8R1Mgg==} +- peerDependencies: +- webpack: '*' +- +- webpack-manifest-plugin@6.0.1: +- resolution: {integrity: sha512-R0p/8/IJVY5hIhQtkeWUQugalVpIwojc09eb14zGq+oiZOCmN5paAz2NBJfd+6v9eBbxAS3YMjc2ov8UMlCDLQ==} +- engines: {node: '>=20.19.0'} +- peerDependencies: +- webpack: ^5.75.0 +- +- webpack-merge@6.0.1: +- resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} +- engines: {node: '>=18.0.0'} +- +- webpack-messages@2.0.4: +- resolution: {integrity: sha512-flG9VZRIKJd+ibJdtG55cp8+CglmEvGQ6uyLLwAxKudO2ws5czl0Giy8wltRCNIx+qNF76hh9UEQNZzkUHnDKw==} +- engines: {node: '>=6'} +- +- webpack-node-externals@3.0.0: +- resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} +- engines: {node: '>=6'} +- + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + engines: {node: '>=10.13.0'} +@@ -9058,14 +7767,6 @@ packages: + webpack-cli: + optional: true + +- websocket-driver@0.7.4: +- resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} +- engines: {node: '>=0.8.0'} +- +- websocket-extensions@0.1.4: +- resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} +- engines: {node: '>=0.8.0'} +- + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} +@@ -9108,9 +7809,6 @@ packages: + engines: {node: '>= 8'} + hasBin: true + +- wildcard@2.0.1: +- resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} +- + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} +@@ -9130,18 +7828,6 @@ packages: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + +- ws@7.5.10: +- resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} +- engines: {node: '>=8.3.0'} +- peerDependencies: +- bufferutil: ^4.0.1 +- utf-8-validate: ^5.0.2 +- peerDependenciesMeta: +- bufferutil: +- optional: true +- utf-8-validate: +- optional: true +- + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + engines: {node: '>=10.0.0'} +@@ -9731,1262 +8417,644 @@ snapshots: + tslib: 2.6.2 + + '@aws-sdk/credential-provider-cognito-identity@3.972.16': +- dependencies: +- '@aws-sdk/nested-clients': 3.996.13 +- '@aws-sdk/types': 3.973.6 +- '@smithy/property-provider': 4.2.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/credential-provider-env@3.972.21': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/types': 3.973.6 +- '@smithy/property-provider': 4.2.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/credential-provider-http@3.972.23': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/types': 3.973.6 +- '@smithy/fetch-http-handler': 5.3.15 +- '@smithy/node-http-handler': 4.5.0 +- '@smithy/property-provider': 4.2.12 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/smithy-client': 4.12.7 +- '@smithy/types': 4.13.1 +- '@smithy/util-stream': 4.5.20 +- tslib: 2.6.2 +- +- '@aws-sdk/credential-provider-ini@3.972.23': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/credential-provider-env': 3.972.21 +- '@aws-sdk/credential-provider-http': 3.972.23 +- '@aws-sdk/credential-provider-login': 3.972.23 +- '@aws-sdk/credential-provider-process': 3.972.21 +- '@aws-sdk/credential-provider-sso': 3.972.23 +- '@aws-sdk/credential-provider-web-identity': 3.972.23 +- '@aws-sdk/nested-clients': 3.996.13 +- '@aws-sdk/types': 3.973.6 +- '@smithy/credential-provider-imds': 4.2.12 +- '@smithy/property-provider': 4.2.12 +- '@smithy/shared-ini-file-loader': 4.4.7 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/credential-provider-login@3.972.23': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/nested-clients': 3.996.13 +- '@aws-sdk/types': 3.973.6 +- '@smithy/property-provider': 4.2.12 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/shared-ini-file-loader': 4.4.7 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/credential-provider-node@3.972.24': +- dependencies: +- '@aws-sdk/credential-provider-env': 3.972.21 +- '@aws-sdk/credential-provider-http': 3.972.23 +- '@aws-sdk/credential-provider-ini': 3.972.23 +- '@aws-sdk/credential-provider-process': 3.972.21 +- '@aws-sdk/credential-provider-sso': 3.972.23 +- '@aws-sdk/credential-provider-web-identity': 3.972.23 +- '@aws-sdk/types': 3.973.6 +- '@smithy/credential-provider-imds': 4.2.12 +- '@smithy/property-provider': 4.2.12 +- '@smithy/shared-ini-file-loader': 4.4.7 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/credential-provider-process@3.972.21': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/types': 3.973.6 +- '@smithy/property-provider': 4.2.12 +- '@smithy/shared-ini-file-loader': 4.4.7 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/credential-provider-sso@3.972.23': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/nested-clients': 3.996.13 +- '@aws-sdk/token-providers': 3.1014.0 +- '@aws-sdk/types': 3.973.6 +- '@smithy/property-provider': 4.2.12 +- '@smithy/shared-ini-file-loader': 4.4.7 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/credential-provider-web-identity@3.972.23': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/nested-clients': 3.996.13 +- '@aws-sdk/types': 3.973.6 +- '@smithy/property-provider': 4.2.12 +- '@smithy/shared-ini-file-loader': 4.4.7 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/credential-providers@3.1014.0': +- dependencies: +- '@aws-sdk/client-cognito-identity': 3.1014.0 +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/credential-provider-cognito-identity': 3.972.16 +- '@aws-sdk/credential-provider-env': 3.972.21 +- '@aws-sdk/credential-provider-http': 3.972.23 +- '@aws-sdk/credential-provider-ini': 3.972.23 +- '@aws-sdk/credential-provider-login': 3.972.23 +- '@aws-sdk/credential-provider-node': 3.972.24 +- '@aws-sdk/credential-provider-process': 3.972.21 +- '@aws-sdk/credential-provider-sso': 3.972.23 +- '@aws-sdk/credential-provider-web-identity': 3.972.23 +- '@aws-sdk/nested-clients': 3.996.13 +- '@aws-sdk/types': 3.973.6 +- '@smithy/config-resolver': 4.4.13 +- '@smithy/core': 3.23.12 +- '@smithy/credential-provider-imds': 4.2.12 +- '@smithy/node-config-provider': 4.3.12 +- '@smithy/property-provider': 4.2.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/credential-providers@3.995.0': +- dependencies: +- '@aws-sdk/client-cognito-identity': 3.995.0 +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/credential-provider-cognito-identity': 3.972.16 +- '@aws-sdk/credential-provider-env': 3.972.21 +- '@aws-sdk/credential-provider-http': 3.972.23 +- '@aws-sdk/credential-provider-ini': 3.972.23 +- '@aws-sdk/credential-provider-login': 3.972.23 +- '@aws-sdk/credential-provider-node': 3.972.24 +- '@aws-sdk/credential-provider-process': 3.972.21 +- '@aws-sdk/credential-provider-sso': 3.972.23 +- '@aws-sdk/credential-provider-web-identity': 3.972.23 +- '@aws-sdk/nested-clients': 3.995.0 +- '@aws-sdk/types': 3.973.6 +- '@smithy/config-resolver': 4.4.13 +- '@smithy/core': 3.23.12 +- '@smithy/credential-provider-imds': 4.2.12 +- '@smithy/node-config-provider': 4.3.12 +- '@smithy/property-provider': 4.2.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/dynamodb-codec@3.972.13': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@smithy/core': 3.23.12 +- '@smithy/smithy-client': 4.12.7 +- '@smithy/types': 4.13.1 +- '@smithy/util-base64': 4.3.2 +- tslib: 2.6.2 +- +- '@aws-sdk/endpoint-cache@3.972.2': +- dependencies: +- mnemonist: 0.38.3 +- tslib: 2.6.2 +- +- '@aws-sdk/lib-dynamodb@3.996.0(@aws-sdk/client-dynamodb@3.996.0)': +- dependencies: +- '@aws-sdk/client-dynamodb': 3.996.0 +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/util-dynamodb': 3.996.0(@aws-sdk/client-dynamodb@3.996.0) +- '@smithy/core': 3.23.12 +- '@smithy/smithy-client': 4.12.7 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-bucket-endpoint@3.972.3': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@aws-sdk/util-arn-parser': 3.972.2 +- '@smithy/node-config-provider': 4.3.12 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/types': 4.13.1 +- '@smithy/util-config-provider': 4.2.2 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-endpoint-discovery@3.972.3': +- dependencies: +- '@aws-sdk/endpoint-cache': 3.972.2 +- '@aws-sdk/types': 3.973.6 +- '@smithy/node-config-provider': 4.3.12 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-expect-continue@3.972.3': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-flexible-checksums@3.972.9': +- dependencies: +- '@aws-crypto/crc32': 5.2.0 +- '@aws-crypto/crc32c': 5.2.0 +- '@aws-crypto/util': 5.2.0 +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/crc64-nvme': 3.972.0 +- '@aws-sdk/types': 3.973.6 +- '@smithy/is-array-buffer': 4.2.2 +- '@smithy/node-config-provider': 4.3.12 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/types': 4.13.1 +- '@smithy/util-middleware': 4.2.12 +- '@smithy/util-stream': 4.5.20 +- '@smithy/util-utf8': 4.2.2 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-host-header@3.972.8': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-location-constraint@3.972.3': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-logger@3.972.8': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-recursion-detection@3.972.8': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@aws/lambda-invoke-store': 0.2.2 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-sdk-ec2@3.972.17': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@aws-sdk/util-format-url': 3.972.8 +- '@smithy/middleware-endpoint': 4.4.27 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/signature-v4': 5.3.12 +- '@smithy/smithy-client': 4.12.7 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-sdk-s3@3.972.11': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/types': 3.973.6 +- '@aws-sdk/util-arn-parser': 3.972.2 +- '@smithy/core': 3.23.12 +- '@smithy/node-config-provider': 4.3.12 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/signature-v4': 5.3.12 +- '@smithy/smithy-client': 4.12.7 +- '@smithy/types': 4.13.1 +- '@smithy/util-config-provider': 4.2.2 +- '@smithy/util-middleware': 4.2.12 +- '@smithy/util-stream': 4.5.20 +- '@smithy/util-utf8': 4.2.2 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-ssec@3.972.3': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/middleware-user-agent@3.972.24': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/types': 3.973.6 +- '@aws-sdk/util-endpoints': 3.996.5 +- '@smithy/core': 3.23.12 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/types': 4.13.1 +- '@smithy/util-retry': 4.2.12 +- tslib: 2.6.2 +- +- '@aws-sdk/nested-clients@3.995.0': +- dependencies: +- '@aws-crypto/sha256-browser': 5.2.0 +- '@aws-crypto/sha256-js': 5.2.0 +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/middleware-host-header': 3.972.8 +- '@aws-sdk/middleware-logger': 3.972.8 +- '@aws-sdk/middleware-recursion-detection': 3.972.8 +- '@aws-sdk/middleware-user-agent': 3.972.24 +- '@aws-sdk/region-config-resolver': 3.972.9 +- '@aws-sdk/types': 3.973.6 +- '@aws-sdk/util-endpoints': 3.995.0 +- '@aws-sdk/util-user-agent-browser': 3.972.8 +- '@aws-sdk/util-user-agent-node': 3.973.10 +- '@smithy/config-resolver': 4.4.13 +- '@smithy/core': 3.23.12 +- '@smithy/fetch-http-handler': 5.3.15 +- '@smithy/hash-node': 4.2.12 +- '@smithy/invalid-dependency': 4.2.12 +- '@smithy/middleware-content-length': 4.2.12 +- '@smithy/middleware-endpoint': 4.4.27 +- '@smithy/middleware-retry': 4.4.44 +- '@smithy/middleware-serde': 4.2.15 +- '@smithy/middleware-stack': 4.2.12 +- '@smithy/node-config-provider': 4.3.12 +- '@smithy/node-http-handler': 4.5.0 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/smithy-client': 4.12.7 +- '@smithy/types': 4.13.1 +- '@smithy/url-parser': 4.2.12 +- '@smithy/util-base64': 4.3.2 +- '@smithy/util-body-length-browser': 4.2.2 +- '@smithy/util-body-length-node': 4.2.3 +- '@smithy/util-defaults-mode-browser': 4.3.43 +- '@smithy/util-defaults-mode-node': 4.2.47 +- '@smithy/util-endpoints': 3.3.3 +- '@smithy/util-middleware': 4.2.12 +- '@smithy/util-retry': 4.2.12 +- '@smithy/util-utf8': 4.2.2 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/nested-clients@3.996.13': +- dependencies: +- '@aws-crypto/sha256-browser': 5.2.0 +- '@aws-crypto/sha256-js': 5.2.0 +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/middleware-host-header': 3.972.8 +- '@aws-sdk/middleware-logger': 3.972.8 +- '@aws-sdk/middleware-recursion-detection': 3.972.8 +- '@aws-sdk/middleware-user-agent': 3.972.24 +- '@aws-sdk/region-config-resolver': 3.972.9 +- '@aws-sdk/types': 3.973.6 +- '@aws-sdk/util-endpoints': 3.996.5 +- '@aws-sdk/util-user-agent-browser': 3.972.8 +- '@aws-sdk/util-user-agent-node': 3.973.10 +- '@smithy/config-resolver': 4.4.13 +- '@smithy/core': 3.23.12 +- '@smithy/fetch-http-handler': 5.3.15 +- '@smithy/hash-node': 4.2.12 +- '@smithy/invalid-dependency': 4.2.12 +- '@smithy/middleware-content-length': 4.2.12 +- '@smithy/middleware-endpoint': 4.4.27 +- '@smithy/middleware-retry': 4.4.44 +- '@smithy/middleware-serde': 4.2.15 +- '@smithy/middleware-stack': 4.2.12 +- '@smithy/node-config-provider': 4.3.12 +- '@smithy/node-http-handler': 4.5.0 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/smithy-client': 4.12.7 +- '@smithy/types': 4.13.1 +- '@smithy/url-parser': 4.2.12 +- '@smithy/util-base64': 4.3.2 +- '@smithy/util-body-length-browser': 4.2.2 +- '@smithy/util-body-length-node': 4.2.3 +- '@smithy/util-defaults-mode-browser': 4.3.43 +- '@smithy/util-defaults-mode-node': 4.2.47 +- '@smithy/util-endpoints': 3.3.3 +- '@smithy/util-middleware': 4.2.12 +- '@smithy/util-retry': 4.2.12 +- '@smithy/util-utf8': 4.2.2 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/region-config-resolver@3.972.9': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/config-resolver': 4.4.13 +- '@smithy/node-config-provider': 4.3.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/signature-v4-multi-region@3.995.0': +- dependencies: +- '@aws-sdk/middleware-sdk-s3': 3.972.11 +- '@aws-sdk/types': 3.973.6 +- '@smithy/protocol-http': 5.3.12 +- '@smithy/signature-v4': 5.3.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/token-providers@3.1014.0': +- dependencies: +- '@aws-sdk/core': 3.973.23 +- '@aws-sdk/nested-clients': 3.996.13 +- '@aws-sdk/types': 3.973.6 +- '@smithy/property-provider': 4.2.12 +- '@smithy/shared-ini-file-loader': 4.4.7 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- transitivePeerDependencies: +- - aws-crt +- +- '@aws-sdk/types@3.973.6': +- dependencies: +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/util-arn-parser@3.972.2': +- dependencies: +- tslib: 2.6.2 +- +- '@aws-sdk/util-dynamodb@3.996.0(@aws-sdk/client-dynamodb@3.996.0)': +- dependencies: +- '@aws-sdk/client-dynamodb': 3.996.0 +- tslib: 2.6.2 +- +- '@aws-sdk/util-endpoints@3.995.0': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/types': 4.13.1 +- '@smithy/url-parser': 4.2.12 +- '@smithy/util-endpoints': 3.3.3 +- tslib: 2.6.2 +- +- '@aws-sdk/util-endpoints@3.996.0': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/types': 4.13.1 +- '@smithy/url-parser': 4.2.12 +- '@smithy/util-endpoints': 3.3.3 +- tslib: 2.6.2 +- +- '@aws-sdk/util-endpoints@3.996.5': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/types': 4.13.1 +- '@smithy/url-parser': 4.2.12 +- '@smithy/util-endpoints': 3.3.3 +- tslib: 2.6.2 +- +- '@aws-sdk/util-format-url@3.972.8': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/querystring-builder': 4.2.12 +- '@smithy/types': 4.13.1 +- tslib: 2.6.2 +- +- '@aws-sdk/util-locate-window@3.465.0': +- dependencies: +- tslib: 2.6.2 +- +- '@aws-sdk/util-user-agent-browser@3.972.8': +- dependencies: +- '@aws-sdk/types': 3.973.6 +- '@smithy/types': 4.13.1 +- bowser: 2.12.1 +- tslib: 2.6.2 +- +- '@aws-sdk/util-user-agent-node@3.973.10': +- dependencies: +- '@aws-sdk/middleware-user-agent': 3.972.24 +- '@aws-sdk/types': 3.973.6 +- '@smithy/node-config-provider': 4.3.12 +- '@smithy/types': 4.13.1 +- '@smithy/util-config-provider': 4.2.2 +- tslib: 2.6.2 +- +- '@aws-sdk/xml-builder@3.972.15': +- dependencies: +- '@smithy/types': 4.13.1 +- fast-xml-parser: 5.5.8 +- tslib: 2.6.2 +- +- '@aws/lambda-invoke-store@0.2.2': {} +- +- '@babel/code-frame@7.29.0': +- dependencies: +- '@babel/helper-validator-identifier': 7.28.5 +- js-tokens: 4.0.0 +- picocolors: 1.1.1 +- +- '@babel/compat-data@7.28.6': {} +- +- '@babel/core@7.29.0': +- dependencies: +- '@babel/code-frame': 7.29.0 +- '@babel/generator': 7.29.1 +- '@babel/helper-compilation-targets': 7.28.6 +- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) +- '@babel/helpers': 7.28.6 +- '@babel/parser': 7.29.0 +- '@babel/template': 7.28.6 +- '@babel/traverse': 7.29.0 +- '@babel/types': 7.29.0 +- '@jridgewell/remapping': 2.3.5 +- convert-source-map: 2.0.0 +- debug: 4.4.3 +- gensync: 1.0.0-beta.2 +- json5: 2.2.3 +- semver: 6.3.1 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/generator@7.29.1': +- dependencies: +- '@babel/parser': 7.29.0 +- '@babel/types': 7.29.0 +- '@jridgewell/gen-mapping': 0.3.13 +- '@jridgewell/trace-mapping': 0.3.31 +- jsesc: 3.1.0 +- +- '@babel/helper-annotate-as-pure@7.27.3': +- dependencies: +- '@babel/types': 7.29.0 +- +- '@babel/helper-compilation-targets@7.28.6': +- dependencies: +- '@babel/compat-data': 7.28.6 +- '@babel/helper-validator-option': 7.27.1 +- browserslist: 4.24.4 +- lru-cache: 5.1.1 +- semver: 6.3.1 +- +- '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-annotate-as-pure': 7.27.3 +- '@babel/helper-member-expression-to-functions': 7.27.1 +- '@babel/helper-optimise-call-expression': 7.27.1 +- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0) +- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 +- '@babel/traverse': 7.29.0 +- semver: 6.3.1 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-annotate-as-pure': 7.27.3 +- regexpu-core: 6.4.0 +- semver: 6.3.1 +- +- '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-compilation-targets': 7.28.6 +- '@babel/helper-plugin-utils': 7.27.1 +- debug: 4.4.3 +- lodash.debounce: 4.0.8 +- resolve: 1.22.11 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/helper-globals@7.28.0': {} +- +- '@babel/helper-member-expression-to-functions@7.27.1': +- dependencies: +- '@babel/traverse': 7.29.0 +- '@babel/types': 7.29.0 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/helper-module-imports@7.28.6': +- dependencies: +- '@babel/traverse': 7.29.0 +- '@babel/types': 7.29.0 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-module-imports': 7.28.6 +- '@babel/helper-validator-identifier': 7.28.5 +- '@babel/traverse': 7.29.0 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/helper-optimise-call-expression@7.27.1': +- dependencies: +- '@babel/types': 7.29.0 +- +- '@babel/helper-plugin-utils@7.27.1': {} +- +- '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-annotate-as-pure': 7.27.3 +- '@babel/helper-wrap-function': 7.28.3 +- '@babel/traverse': 7.29.0 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/helper-replace-supers@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-member-expression-to-functions': 7.27.1 +- '@babel/helper-optimise-call-expression': 7.27.1 +- '@babel/traverse': 7.29.0 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/helper-skip-transparent-expression-wrappers@7.27.1': +- dependencies: +- '@babel/traverse': 7.29.0 +- '@babel/types': 7.29.0 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/helper-string-parser@7.27.1': {} +- +- '@babel/helper-validator-identifier@7.28.5': {} +- +- '@babel/helper-validator-option@7.27.1': {} +- +- '@babel/helper-wrap-function@7.28.3': +- dependencies: +- '@babel/template': 7.28.6 +- '@babel/traverse': 7.29.0 +- '@babel/types': 7.29.0 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/helpers@7.28.6': +- dependencies: +- '@babel/template': 7.28.6 +- '@babel/types': 7.29.0 +- +- '@babel/parser@7.29.0': +- dependencies: +- '@babel/types': 7.29.0 +- +- '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/traverse': 7.29.0 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 +- '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.29.0) +- transitivePeerDependencies: +- - supports-color +- +- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/traverse': 7.29.0 +- transitivePeerDependencies: +- - supports-color +- +- '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- +- '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- +- '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ dependencies: ++ '@aws-sdk/nested-clients': 3.996.13 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 ++ transitivePeerDependencies: ++ - aws-crt + +- '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': ++ '@aws-sdk/credential-provider-env@3.972.21': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': ++ '@aws-sdk/credential-provider-http@3.972.23': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/fetch-http-handler': 5.3.15 ++ '@smithy/node-http-handler': 4.5.0 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/smithy-client': 4.12.7 ++ '@smithy/types': 4.13.1 ++ '@smithy/util-stream': 4.5.20 ++ tslib: 2.6.2 + +- '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': ++ '@aws-sdk/credential-provider-ini@3.972.23': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/credential-provider-env': 3.972.21 ++ '@aws-sdk/credential-provider-http': 3.972.23 ++ '@aws-sdk/credential-provider-login': 3.972.23 ++ '@aws-sdk/credential-provider-process': 3.972.21 ++ '@aws-sdk/credential-provider-sso': 3.972.23 ++ '@aws-sdk/credential-provider-web-identity': 3.972.23 ++ '@aws-sdk/nested-clients': 3.996.13 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/credential-provider-imds': 4.2.12 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/shared-ini-file-loader': 4.4.7 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 ++ transitivePeerDependencies: ++ - aws-crt + +- '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': ++ '@aws-sdk/credential-provider-login@3.972.23': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/nested-clients': 3.996.13 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/shared-ini-file-loader': 4.4.7 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 ++ transitivePeerDependencies: ++ - aws-crt + +- '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': ++ '@aws-sdk/credential-provider-node@3.972.24': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/credential-provider-env': 3.972.21 ++ '@aws-sdk/credential-provider-http': 3.972.23 ++ '@aws-sdk/credential-provider-ini': 3.972.23 ++ '@aws-sdk/credential-provider-process': 3.972.21 ++ '@aws-sdk/credential-provider-sso': 3.972.23 ++ '@aws-sdk/credential-provider-web-identity': 3.972.23 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/credential-provider-imds': 4.2.12 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/shared-ini-file-loader': 4.4.7 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 ++ transitivePeerDependencies: ++ - aws-crt + +- '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/credential-provider-process@3.972.21': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/shared-ini-file-loader': 4.4.7 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': ++ '@aws-sdk/credential-provider-sso@3.972.23': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/nested-clients': 3.996.13 ++ '@aws-sdk/token-providers': 3.1014.0 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/shared-ini-file-loader': 4.4.7 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 ++ transitivePeerDependencies: ++ - aws-crt + +- '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/credential-provider-web-identity@3.972.23': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/nested-clients': 3.996.13 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/shared-ini-file-loader': 4.4.7 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 ++ transitivePeerDependencies: ++ - aws-crt + +- '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.29.0)': ++ '@aws-sdk/credential-providers@3.1014.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) +- '@babel/traverse': 7.29.0 ++ '@aws-sdk/client-cognito-identity': 3.1014.0 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/credential-provider-cognito-identity': 3.972.16 ++ '@aws-sdk/credential-provider-env': 3.972.21 ++ '@aws-sdk/credential-provider-http': 3.972.23 ++ '@aws-sdk/credential-provider-ini': 3.972.23 ++ '@aws-sdk/credential-provider-login': 3.972.23 ++ '@aws-sdk/credential-provider-node': 3.972.24 ++ '@aws-sdk/credential-provider-process': 3.972.21 ++ '@aws-sdk/credential-provider-sso': 3.972.23 ++ '@aws-sdk/credential-provider-web-identity': 3.972.23 ++ '@aws-sdk/nested-clients': 3.996.13 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/config-resolver': 4.4.13 ++ '@smithy/core': 3.23.12 ++ '@smithy/credential-provider-imds': 4.2.12 ++ '@smithy/node-config-provider': 4.3.12 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + transitivePeerDependencies: +- - supports-color ++ - aws-crt + +- '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/credential-providers@3.995.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-module-imports': 7.28.6 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) ++ '@aws-sdk/client-cognito-identity': 3.995.0 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/credential-provider-cognito-identity': 3.972.16 ++ '@aws-sdk/credential-provider-env': 3.972.21 ++ '@aws-sdk/credential-provider-http': 3.972.23 ++ '@aws-sdk/credential-provider-ini': 3.972.23 ++ '@aws-sdk/credential-provider-login': 3.972.23 ++ '@aws-sdk/credential-provider-node': 3.972.24 ++ '@aws-sdk/credential-provider-process': 3.972.21 ++ '@aws-sdk/credential-provider-sso': 3.972.23 ++ '@aws-sdk/credential-provider-web-identity': 3.972.23 ++ '@aws-sdk/nested-clients': 3.995.0 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/config-resolver': 4.4.13 ++ '@smithy/core': 3.23.12 ++ '@smithy/credential-provider-imds': 4.2.12 ++ '@smithy/node-config-provider': 4.3.12 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + transitivePeerDependencies: +- - supports-color ++ - aws-crt + +- '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/dynamodb-codec@3.972.13': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/core': 3.973.23 ++ '@smithy/core': 3.23.12 ++ '@smithy/smithy-client': 4.12.7 ++ '@smithy/types': 4.13.1 ++ '@smithy/util-base64': 4.3.2 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.29.0)': ++ '@aws-sdk/endpoint-cache@3.972.2': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ mnemonist: 0.38.3 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/lib-dynamodb@3.996.0(@aws-sdk/client-dynamodb@3.996.0)': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 +- transitivePeerDependencies: +- - supports-color ++ '@aws-sdk/client-dynamodb': 3.996.0 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/util-dynamodb': 3.996.0(@aws-sdk/client-dynamodb@3.996.0) ++ '@smithy/core': 3.23.12 ++ '@smithy/smithy-client': 4.12.7 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-bucket-endpoint@3.972.3': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 +- transitivePeerDependencies: +- - supports-color ++ '@aws-sdk/types': 3.973.6 ++ '@aws-sdk/util-arn-parser': 3.972.2 ++ '@smithy/node-config-provider': 4.3.12 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/types': 4.13.1 ++ '@smithy/util-config-provider': 4.2.2 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-classes@7.28.4(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-endpoint-discovery@3.972.3': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-annotate-as-pure': 7.27.3 +- '@babel/helper-compilation-targets': 7.28.6 +- '@babel/helper-globals': 7.28.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0) +- '@babel/traverse': 7.29.0 +- transitivePeerDependencies: +- - supports-color ++ '@aws-sdk/endpoint-cache': 3.972.2 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/node-config-provider': 4.3.12 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-expect-continue@3.972.3': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/template': 7.28.6 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-flexible-checksums@3.972.9': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/traverse': 7.29.0 +- transitivePeerDependencies: +- - supports-color ++ '@aws-crypto/crc32': 5.2.0 ++ '@aws-crypto/crc32c': 5.2.0 ++ '@aws-crypto/util': 5.2.0 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/crc64-nvme': 3.972.0 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/is-array-buffer': 4.2.2 ++ '@smithy/node-config-provider': 4.3.12 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/types': 4.13.1 ++ '@smithy/util-middleware': 4.2.12 ++ '@smithy/util-stream': 4.5.20 ++ '@smithy/util-utf8': 4.2.2 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-host-header@3.972.8': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-location-constraint@3.972.3': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-logger@3.972.8': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-recursion-detection@3.972.8': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/types': 3.973.6 ++ '@aws/lambda-invoke-store': 0.2.2 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-sdk-ec2@3.972.17': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.29.0) +- transitivePeerDependencies: +- - supports-color ++ '@aws-sdk/types': 3.973.6 ++ '@aws-sdk/util-format-url': 3.972.8 ++ '@smithy/middleware-endpoint': 4.4.27 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/signature-v4': 5.3.12 ++ '@smithy/smithy-client': 4.12.7 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-sdk-s3@3.972.11': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/types': 3.973.6 ++ '@aws-sdk/util-arn-parser': 3.972.2 ++ '@smithy/core': 3.23.12 ++ '@smithy/node-config-provider': 4.3.12 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/signature-v4': 5.3.12 ++ '@smithy/smithy-client': 4.12.7 ++ '@smithy/types': 4.13.1 ++ '@smithy/util-config-provider': 4.2.2 ++ '@smithy/util-middleware': 4.2.12 ++ '@smithy/util-stream': 4.5.20 ++ '@smithy/util-utf8': 4.2.2 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-ssec@3.972.3': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/middleware-user-agent@3.972.24': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 +- transitivePeerDependencies: +- - supports-color ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/types': 3.973.6 ++ '@aws-sdk/util-endpoints': 3.996.5 ++ '@smithy/core': 3.23.12 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/types': 4.13.1 ++ '@smithy/util-retry': 4.2.12 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/nested-clients@3.995.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-compilation-targets': 7.28.6 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/traverse': 7.29.0 ++ '@aws-crypto/sha256-browser': 5.2.0 ++ '@aws-crypto/sha256-js': 5.2.0 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/middleware-host-header': 3.972.8 ++ '@aws-sdk/middleware-logger': 3.972.8 ++ '@aws-sdk/middleware-recursion-detection': 3.972.8 ++ '@aws-sdk/middleware-user-agent': 3.972.24 ++ '@aws-sdk/region-config-resolver': 3.972.9 ++ '@aws-sdk/types': 3.973.6 ++ '@aws-sdk/util-endpoints': 3.995.0 ++ '@aws-sdk/util-user-agent-browser': 3.972.8 ++ '@aws-sdk/util-user-agent-node': 3.973.10 ++ '@smithy/config-resolver': 4.4.13 ++ '@smithy/core': 3.23.12 ++ '@smithy/fetch-http-handler': 5.3.15 ++ '@smithy/hash-node': 4.2.12 ++ '@smithy/invalid-dependency': 4.2.12 ++ '@smithy/middleware-content-length': 4.2.12 ++ '@smithy/middleware-endpoint': 4.4.27 ++ '@smithy/middleware-retry': 4.4.44 ++ '@smithy/middleware-serde': 4.2.15 ++ '@smithy/middleware-stack': 4.2.12 ++ '@smithy/node-config-provider': 4.3.12 ++ '@smithy/node-http-handler': 4.5.0 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/smithy-client': 4.12.7 ++ '@smithy/types': 4.13.1 ++ '@smithy/url-parser': 4.2.12 ++ '@smithy/util-base64': 4.3.2 ++ '@smithy/util-body-length-browser': 4.2.2 ++ '@smithy/util-body-length-node': 4.2.3 ++ '@smithy/util-defaults-mode-browser': 4.3.43 ++ '@smithy/util-defaults-mode-node': 4.2.47 ++ '@smithy/util-endpoints': 3.3.3 ++ '@smithy/util-middleware': 4.2.12 ++ '@smithy/util-retry': 4.2.12 ++ '@smithy/util-utf8': 4.2.2 ++ tslib: 2.6.2 + transitivePeerDependencies: +- - supports-color +- +- '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ - aws-crt + +- '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/nested-clients@3.996.13': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-crypto/sha256-browser': 5.2.0 ++ '@aws-crypto/sha256-js': 5.2.0 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/middleware-host-header': 3.972.8 ++ '@aws-sdk/middleware-logger': 3.972.8 ++ '@aws-sdk/middleware-recursion-detection': 3.972.8 ++ '@aws-sdk/middleware-user-agent': 3.972.24 ++ '@aws-sdk/region-config-resolver': 3.972.9 ++ '@aws-sdk/types': 3.973.6 ++ '@aws-sdk/util-endpoints': 3.996.5 ++ '@aws-sdk/util-user-agent-browser': 3.972.8 ++ '@aws-sdk/util-user-agent-node': 3.973.10 ++ '@smithy/config-resolver': 4.4.13 ++ '@smithy/core': 3.23.12 ++ '@smithy/fetch-http-handler': 5.3.15 ++ '@smithy/hash-node': 4.2.12 ++ '@smithy/invalid-dependency': 4.2.12 ++ '@smithy/middleware-content-length': 4.2.12 ++ '@smithy/middleware-endpoint': 4.4.27 ++ '@smithy/middleware-retry': 4.4.44 ++ '@smithy/middleware-serde': 4.2.15 ++ '@smithy/middleware-stack': 4.2.12 ++ '@smithy/node-config-provider': 4.3.12 ++ '@smithy/node-http-handler': 4.5.0 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/smithy-client': 4.12.7 ++ '@smithy/types': 4.13.1 ++ '@smithy/url-parser': 4.2.12 ++ '@smithy/util-base64': 4.3.2 ++ '@smithy/util-body-length-browser': 4.2.2 ++ '@smithy/util-body-length-node': 4.2.3 ++ '@smithy/util-defaults-mode-browser': 4.3.43 ++ '@smithy/util-defaults-mode-node': 4.2.47 ++ '@smithy/util-endpoints': 3.3.3 ++ '@smithy/util-middleware': 4.2.12 ++ '@smithy/util-retry': 4.2.12 ++ '@smithy/util-utf8': 4.2.2 ++ tslib: 2.6.2 ++ transitivePeerDependencies: ++ - aws-crt + +- '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/region-config-resolver@3.972.9': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/config-resolver': 4.4.13 ++ '@smithy/node-config-provider': 4.3.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/signature-v4-multi-region@3.995.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/middleware-sdk-s3': 3.972.11 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/protocol-http': 5.3.12 ++ '@smithy/signature-v4': 5.3.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/token-providers@3.1014.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/core': 3.973.23 ++ '@aws-sdk/nested-clients': 3.996.13 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/property-provider': 4.2.12 ++ '@smithy/shared-ini-file-loader': 4.4.7 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + transitivePeerDependencies: +- - supports-color ++ - aws-crt + +- '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/types@3.973.6': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 +- transitivePeerDependencies: +- - supports-color ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/util-arn-parser@3.972.2': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-validator-identifier': 7.28.5 +- '@babel/traverse': 7.29.0 +- transitivePeerDependencies: +- - supports-color ++ tslib: 2.6.2 + +- '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/util-dynamodb@3.996.0(@aws-sdk/client-dynamodb@3.996.0)': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 +- transitivePeerDependencies: +- - supports-color ++ '@aws-sdk/client-dynamodb': 3.996.0 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/util-endpoints@3.995.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/types': 4.13.1 ++ '@smithy/url-parser': 4.2.12 ++ '@smithy/util-endpoints': 3.3.3 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/util-endpoints@3.996.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/types': 4.13.1 ++ '@smithy/url-parser': 4.2.12 ++ '@smithy/util-endpoints': 3.3.3 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/util-endpoints@3.996.5': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/types': 4.13.1 ++ '@smithy/url-parser': 4.2.12 ++ '@smithy/util-endpoints': 3.3.3 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/util-format-url@3.972.8': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/querystring-builder': 4.2.12 ++ '@smithy/types': 4.13.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.29.0)': ++ '@aws-sdk/util-locate-window@3.465.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-compilation-targets': 7.28.6 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.29.0) +- '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) +- '@babel/traverse': 7.29.0 +- transitivePeerDependencies: +- - supports-color ++ tslib: 2.6.2 + +- '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/util-user-agent-browser@3.972.8': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0) +- transitivePeerDependencies: +- - supports-color ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/types': 4.13.1 ++ bowser: 2.12.1 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/util-user-agent-node@3.973.10': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws-sdk/middleware-user-agent': 3.972.24 ++ '@aws-sdk/types': 3.973.6 ++ '@smithy/node-config-provider': 4.3.12 ++ '@smithy/types': 4.13.1 ++ '@smithy/util-config-provider': 4.2.2 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.29.0)': ++ '@aws-sdk/xml-builder@3.972.15': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 +- transitivePeerDependencies: +- - supports-color ++ '@smithy/types': 4.13.1 ++ fast-xml-parser: 5.5.8 ++ tslib: 2.6.2 + +- '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@aws/lambda-invoke-store@0.2.2': {} + +- '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.29.0)': ++ '@babel/code-frame@7.29.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 +- transitivePeerDependencies: +- - supports-color ++ '@babel/helper-validator-identifier': 7.28.5 ++ js-tokens: 4.0.0 ++ picocolors: 1.1.1 ++ ++ '@babel/compat-data@7.28.6': {} + +- '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.29.0)': ++ '@babel/core@7.29.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-annotate-as-pure': 7.27.3 +- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 ++ '@babel/code-frame': 7.29.0 ++ '@babel/generator': 7.29.1 ++ '@babel/helper-compilation-targets': 7.28.6 ++ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) ++ '@babel/helpers': 7.28.6 ++ '@babel/parser': 7.29.0 ++ '@babel/template': 7.28.6 ++ '@babel/traverse': 7.29.0 ++ '@babel/types': 7.29.0 ++ '@jridgewell/remapping': 2.3.5 ++ convert-source-map: 2.0.0 ++ debug: 4.4.3 ++ gensync: 1.0.0-beta.2 ++ json5: 2.2.3 ++ semver: 6.3.1 + transitivePeerDependencies: + - supports-color + +- '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': ++ '@babel/generator@7.29.1': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@babel/parser': 7.29.0 ++ '@babel/types': 7.29.0 ++ '@jridgewell/gen-mapping': 0.3.13 ++ '@jridgewell/trace-mapping': 0.3.31 ++ jsesc: 3.1.0 + +- '@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.29.0)': ++ '@babel/helper-compilation-targets@7.28.6': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@babel/compat-data': 7.28.6 ++ '@babel/helper-validator-option': 7.27.1 ++ browserslist: 4.24.4 ++ lru-cache: 5.1.1 ++ semver: 6.3.1 + +- '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@babel/helper-globals@7.28.0': {} + +- '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': ++ '@babel/helper-module-imports@7.28.6': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.0) ++ '@babel/traverse': 7.29.0 ++ '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + +- '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.29.0)': ++ '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 +- '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.28.6 +- '@babel/helper-plugin-utils': 7.27.1 +- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) +- '@babel/types': 7.29.0 ++ '@babel/helper-validator-identifier': 7.28.5 ++ '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + +- '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-annotate-as-pure': 7.27.3 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@babel/helper-plugin-utils@7.27.1': {} + +- '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.29.0)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@babel/helper-string-parser@7.27.1': {} + +- '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.29.0)': ++ '@babel/helper-validator-identifier@7.28.5': {} ++ ++ '@babel/helper-validator-option@7.27.1': {} ++ ++ '@babel/helpers@7.28.6': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) +- '@babel/helper-plugin-utils': 7.27.1 ++ '@babel/template': 7.28.6 ++ '@babel/types': 7.29.0 + +- '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': ++ '@babel/parser@7.29.0': + dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-plugin-utils': 7.27.1 ++ '@babel/types': 7.29.0 + +- '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.27.1 + +- '@babel/plugin-transform-spread@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 +- transitivePeerDependencies: +- - supports-color + +- '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.27.1 + +- '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.27.1 + +- '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.27.1 + +- '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 +- '@babel/helper-annotate-as-pure': 7.27.3 +- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 +- '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.0) +- transitivePeerDependencies: +- - supports-color + +- '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.27.1 + +- '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 +- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.27.1 + +- '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 +- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.27.1 + +- '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 +- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.27.1 + +- '@babel/preset-env@7.28.3(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': + dependencies: +- '@babel/compat-data': 7.28.6 + '@babel/core': 7.29.0 +- '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-validator-option': 7.27.1 +- '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.29.0) +- '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) +- '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) +- '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.29.0) +- '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.29.0) +- '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.29.0) +- '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.29.0) +- '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.29.0) +- '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.29.0) +- '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.29.0) +- '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) +- '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.29.0) +- '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.29.0) +- '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) +- babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.29.0) +- babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) +- babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.29.0) +- core-js-compat: 3.46.0 +- semver: 6.3.1 +- transitivePeerDependencies: +- - supports-color + +- '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.27.1 +- '@babel/types': 7.29.0 +- esutils: 2.0.3 + +- '@babel/preset-react@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-validator-option': 7.27.1 +- '@babel/plugin-transform-react-display-name': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0) +- transitivePeerDependencies: +- - supports-color + +- '@babel/preset-typescript@7.27.1(@babel/core@7.29.0)': ++ '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.27.1 +- '@babel/helper-validator-option': 7.27.1 +- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.29.0) +- '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.29.0) +- transitivePeerDependencies: +- - supports-color + + '@babel/runtime@7.28.4': {} + +@@ -11057,10 +9125,6 @@ snapshots: + dependencies: + postcss-selector-parser: 7.1.1 + +- '@discoveryjs/json-ext@0.5.7': {} +- +- '@discoveryjs/json-ext@0.6.3': {} +- + '@dual-bundle/import-meta-resolve@4.2.1': {} + + '@emotion/babel-plugin@11.13.5': +@@ -11650,10 +9714,6 @@ snapshots: + transitivePeerDependencies: + - react-dom + +- '@guardian/shimport@1.0.2': +- dependencies: +- tslib: 2.6.2 +- + '@guardian/source-development-kitchen@18.1.1(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@guardian/libs@31.0.0(@guardian/ophan-tracker-js@2.8.0)(tslib@2.6.2)(typescript@5.5.3))(@guardian/source@11.3.0(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.5.3))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.5.3)': + dependencies: + '@guardian/libs': 31.0.0(@guardian/ophan-tracker-js@2.8.0)(tslib@2.6.2)(typescript@5.5.3) +@@ -11920,6 +9980,14 @@ snapshots: + '@types/yargs': 17.0.33 + chalk: 4.1.2 + ++ '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))': ++ dependencies: ++ glob: 13.0.6 ++ react-docgen-typescript: 2.4.0(typescript@5.5.3) ++ vite: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) ++ optionalDependencies: ++ typescript: 5.5.3 ++ + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 +@@ -11949,42 +10017,6 @@ snapshots: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + +- '@jsonjoy.com/base64@1.1.2(tslib@2.6.2)': +- dependencies: +- tslib: 2.6.2 +- +- '@jsonjoy.com/buffers@1.2.1(tslib@2.6.2)': +- dependencies: +- tslib: 2.6.2 +- +- '@jsonjoy.com/codegen@1.0.0(tslib@2.6.2)': +- dependencies: +- tslib: 2.6.2 +- +- '@jsonjoy.com/json-pack@1.21.0(tslib@2.6.2)': +- dependencies: +- '@jsonjoy.com/base64': 1.1.2(tslib@2.6.2) +- '@jsonjoy.com/buffers': 1.2.1(tslib@2.6.2) +- '@jsonjoy.com/codegen': 1.0.0(tslib@2.6.2) +- '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.6.2) +- '@jsonjoy.com/util': 1.9.0(tslib@2.6.2) +- hyperdyperid: 1.2.0 +- thingies: 2.5.0(tslib@2.6.2) +- tree-dump: 1.1.0(tslib@2.6.2) +- tslib: 2.6.2 +- +- '@jsonjoy.com/json-pointer@1.0.2(tslib@2.6.2)': +- dependencies: +- '@jsonjoy.com/codegen': 1.0.0(tslib@2.6.2) +- '@jsonjoy.com/util': 1.9.0(tslib@2.6.2) +- tslib: 2.6.2 +- +- '@jsonjoy.com/util@1.9.0(tslib@2.6.2)': +- dependencies: +- '@jsonjoy.com/buffers': 1.2.1(tslib@2.6.2) +- '@jsonjoy.com/codegen': 1.0.0(tslib@2.6.2) +- tslib: 2.6.2 +- + '@keyv/bigmap@1.3.1(keyv@5.6.0)': + dependencies: + hashery: 1.5.1 +@@ -11993,8 +10025,6 @@ snapshots: + + '@keyv/serialize@1.1.1': {} + +- '@leichtgewicht/ip-codec@2.0.5': {} +- + '@mdx-js/react@3.1.1(@types/react@18.3.1)(react@18.3.1)': + dependencies: + '@types/mdx': 2.0.13 +@@ -12551,10 +10581,10 @@ snapshots: + axe-core: 4.11.1 + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + +- '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1)': ++ '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3))': + dependencies: + '@mdx-js/react': 3.1.1(@types/react@18.3.1)(react@18.3.1) +- '@storybook/csf-plugin': 10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1) ++ '@storybook/csf-plugin': 10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) + '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/react-dom-shim': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + react: 18.3.1 +@@ -12568,48 +10598,18 @@ snapshots: + - vite + - webpack + +- '@storybook/addon-webpack5-compiler-swc@4.0.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.104.1)': +- dependencies: +- '@swc/core': 1.13.5 +- storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) +- swc-loader: 0.2.6(@swc/core@1.13.5)(webpack@5.104.1) +- transitivePeerDependencies: +- - '@swc/helpers' +- - webpack +- +- '@storybook/builder-webpack5@10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1)': ++ '@storybook/builder-vite@10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3))': + dependencies: +- '@storybook/core-webpack': 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) +- case-sensitive-paths-webpack-plugin: 2.4.0 +- cjs-module-lexer: 1.4.3 +- css-loader: 7.1.2(webpack@5.104.1) +- es-module-lexer: 1.7.0 +- fork-ts-checker-webpack-plugin: 9.1.0(typescript@5.5.3)(webpack@5.104.1) +- html-webpack-plugin: 5.6.6(webpack@5.104.1) +- magic-string: 0.30.21 ++ '@storybook/csf-plugin': 10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) +- style-loader: 4.0.0(webpack@5.104.1) +- terser-webpack-plugin: 5.4.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack@5.104.1) + ts-dedent: 2.2.0 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- webpack-dev-middleware: 6.1.3(webpack@5.104.1) +- webpack-hot-middleware: 2.26.1 +- webpack-virtual-modules: 0.6.2 +- optionalDependencies: +- typescript: 5.5.3 ++ vite: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) + transitivePeerDependencies: +- - '@rspack/core' +- - '@swc/core' + - esbuild +- - uglify-js +- - webpack-cli +- +- '@storybook/core-webpack@10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': +- dependencies: +- storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) +- ts-dedent: 2.2.0 ++ - rollup ++ - webpack + +- '@storybook/csf-plugin@10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1)': ++ '@storybook/csf-plugin@10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3))': + dependencies: + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + unplugin: 2.3.11 +@@ -12617,7 +10617,7 @@ snapshots: + esbuild: 0.27.3 + rollup: 4.59.0 + vite: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) ++ webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3) + + '@storybook/csf@0.1.13': + dependencies: +@@ -12630,66 +10630,33 @@ snapshots: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + +- '@storybook/preset-react-webpack@10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1)': +- dependencies: +- '@storybook/core-webpack': 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) +- '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.5.3)(webpack@5.104.1) +- '@types/semver': 7.7.1 +- magic-string: 0.30.21 +- react: 18.3.1 +- react-docgen: 7.1.1 +- react-dom: 18.3.1(react@18.3.1) +- resolve: 1.22.11 +- semver: 7.7.4 +- storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) +- tsconfig-paths: 4.2.0 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- optionalDependencies: +- typescript: 5.5.3 +- transitivePeerDependencies: +- - '@swc/core' +- - esbuild +- - supports-color +- - uglify-js +- - webpack-cli +- +- '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.5.3)(webpack@5.104.1)': +- dependencies: +- debug: 4.4.3 +- endent: 2.1.0 +- find-cache-dir: 3.3.2 +- flat-cache: 3.2.0 +- micromatch: 4.0.8 +- react-docgen-typescript: 2.4.0(typescript@5.5.3) +- tslib: 2.6.2 +- typescript: 5.5.3 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- transitivePeerDependencies: +- - supports-color +- + '@storybook/react-dom-shim@10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + +- '@storybook/react-webpack5@10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1)': ++ '@storybook/react-vite@10.3.3(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3))': + dependencies: +- '@storybook/builder-webpack5': 10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1) +- '@storybook/preset-react-webpack': 10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1) ++ '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2)) ++ '@rollup/pluginutils': 5.3.0(rollup@4.59.0) ++ '@storybook/builder-vite': 10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) + '@storybook/react': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3) ++ empathic: 2.0.0 ++ magic-string: 0.30.21 + react: 18.3.1 ++ react-docgen: 8.0.2 + react-dom: 18.3.1(react@18.3.1) ++ resolve: 1.22.11 + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) +- optionalDependencies: +- typescript: 5.5.3 ++ tsconfig-paths: 4.2.0 ++ vite: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) + transitivePeerDependencies: +- - '@rspack/core' +- - '@swc/core' + - esbuild ++ - rollup + - supports-color +- - uglify-js +- - webpack-cli ++ - typescript ++ - webpack + + '@storybook/react@10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)': + dependencies: +@@ -12888,29 +10855,6 @@ snapshots: + transitivePeerDependencies: + - supports-color + +- '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.5.3))(typescript@5.5.3)': +- dependencies: +- '@svgr/core': 8.1.0(typescript@5.5.3) +- cosmiconfig: 8.3.6(typescript@5.5.3) +- deepmerge: 4.3.1 +- svgo: 3.3.3 +- transitivePeerDependencies: +- - typescript +- +- '@svgr/webpack@8.1.0(typescript@5.5.3)': +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.29.0) +- '@babel/preset-env': 7.28.3(@babel/core@7.29.0) +- '@babel/preset-react': 7.27.1(@babel/core@7.29.0) +- '@babel/preset-typescript': 7.27.1(@babel/core@7.29.0) +- '@svgr/core': 8.1.0(typescript@5.5.3) +- '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.3)) +- '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.5.3))(typescript@5.5.3) +- transitivePeerDependencies: +- - supports-color +- - typescript +- + '@swc/cli@0.7.8(@swc/core@1.13.5)(chokidar@4.0.3)': + dependencies: + '@swc/core': 1.13.5 +@@ -13067,10 +11011,6 @@ snapshots: + '@types/connect': 3.4.38 + '@types/node': 22.17.0 + +- '@types/bonjour@3.5.13': +- dependencies: +- '@types/node': 22.17.0 +- + '@types/chai@5.2.2': + dependencies: + '@types/deep-eql': 4.0.2 +@@ -13082,12 +11022,7 @@ snapshots: + + '@types/compression@1.7.5': + dependencies: +- '@types/express': 5.0.6 +- +- '@types/connect-history-api-fallback@1.5.4': +- dependencies: +- '@types/express-serve-static-core': 5.1.1 +- '@types/node': 22.17.0 ++ '@types/express': 5.0.6 + + '@types/connect@3.4.38': + dependencies: +@@ -13111,6 +11046,7 @@ snapshots: + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 ++ optional: true + + '@types/eslint@9.6.1': + dependencies: +@@ -13156,18 +11092,12 @@ snapshots: + + '@types/he@1.2.0': {} + +- '@types/html-minifier-terser@6.1.0': {} +- + '@types/html-minifier-terser@7.0.2': {} + + '@types/http-cache-semantics@4.0.4': {} + + '@types/http-errors@2.0.5': {} + +- '@types/http-proxy@1.17.16': +- dependencies: +- '@types/node': 22.17.0 +- + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': +@@ -13226,10 +11156,6 @@ snapshots: + + '@types/ms@0.7.34': {} + +- '@types/node-forge@1.3.14': +- dependencies: +- '@types/node': 22.17.0 +- + '@types/node@15.14.9': {} + + '@types/node@16.18.68': {} +@@ -13275,8 +11201,6 @@ snapshots: + + '@types/resolve@1.20.6': {} + +- '@types/retry@0.12.2': {} +- + '@types/sanitize-html@2.11.0': + dependencies: + htmlparser2: 8.0.1 +@@ -13285,8 +11209,6 @@ snapshots: + + '@types/semver@7.5.6': {} + +- '@types/semver@7.7.1': {} +- + '@types/send@0.17.5': + dependencies: + '@types/mime': 1.3.5 +@@ -13296,10 +11218,6 @@ snapshots: + dependencies: + '@types/node': 22.17.0 + +- '@types/serve-index@1.9.4': +- dependencies: +- '@types/express': 5.0.6 +- + '@types/serve-static@1.15.9': + dependencies: + '@types/http-errors': 2.0.5 +@@ -13311,10 +11229,6 @@ snapshots: + '@types/http-errors': 2.0.5 + '@types/node': 22.17.0 + +- '@types/sockjs@0.3.36': +- dependencies: +- '@types/node': 22.17.0 +- + '@types/stack-utils@2.0.3': {} + + '@types/tough-cookie@4.0.2': {} +@@ -13325,33 +11239,6 @@ snapshots: + + '@types/unist@3.0.3': {} + +- '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1)': +- dependencies: +- '@types/node': 22.17.0 +- tapable: 2.3.0 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- transitivePeerDependencies: +- - '@swc/core' +- - esbuild +- - uglify-js +- - webpack-cli +- +- '@types/webpack-env@1.18.8': {} +- +- '@types/webpack-node-externals@3.0.4(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1)': +- dependencies: +- '@types/node': 22.17.0 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- transitivePeerDependencies: +- - '@swc/core' +- - esbuild +- - uglify-js +- - webpack-cli +- +- '@types/ws@8.18.1': +- dependencies: +- '@types/node': 22.17.0 +- + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': +@@ -13685,20 +11572,26 @@ snapshots: + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 ++ optional: true + +- '@webassemblyjs/floating-point-hex-parser@1.13.2': {} ++ '@webassemblyjs/floating-point-hex-parser@1.13.2': ++ optional: true + +- '@webassemblyjs/helper-api-error@1.13.2': {} ++ '@webassemblyjs/helper-api-error@1.13.2': ++ optional: true + +- '@webassemblyjs/helper-buffer@1.14.1': {} ++ '@webassemblyjs/helper-buffer@1.14.1': ++ optional: true + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 ++ optional: true + +- '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} ++ '@webassemblyjs/helper-wasm-bytecode@1.13.2': ++ optional: true + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: +@@ -13706,16 +11599,20 @@ snapshots: + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 ++ optional: true + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 ++ optional: true + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 ++ optional: true + +- '@webassemblyjs/utf8@1.13.2': {} ++ '@webassemblyjs/utf8@1.13.2': ++ optional: true + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: +@@ -13727,6 +11624,7 @@ snapshots: + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 ++ optional: true + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: +@@ -13735,6 +11633,7 @@ snapshots: + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 ++ optional: true + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: +@@ -13742,6 +11641,7 @@ snapshots: + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 ++ optional: true + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: +@@ -13751,28 +11651,13 @@ snapshots: + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 ++ optional: true + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 +- +- '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.104.1)': +- dependencies: +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) +- +- '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.104.1)': +- dependencies: +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) +- +- '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.104.1)': +- dependencies: +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) +- optionalDependencies: +- webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.104.1) ++ optional: true + + '@xhmikosr/archive-type@7.0.0': + dependencies: +@@ -13854,9 +11739,11 @@ snapshots: + dependencies: + arch: 3.0.0 + +- '@xtuc/ieee754@1.2.0': {} ++ '@xtuc/ieee754@1.2.0': ++ optional: true + +- '@xtuc/long@4.2.2': {} ++ '@xtuc/long@4.2.2': ++ optional: true + + abab@2.0.6: {} + +@@ -13878,6 +11765,7 @@ snapshots: + acorn-import-phases@1.0.4(acorn@8.16.0): + dependencies: + acorn: 8.16.0 ++ optional: true + + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: +@@ -13902,14 +11790,11 @@ snapshots: + optionalDependencies: + ajv: 8.18.0 + +- ajv-keywords@3.5.2(ajv@6.14.0): +- dependencies: +- ajv: 6.14.0 +- + ajv-keywords@5.1.0(ajv@8.18.0): + dependencies: + ajv: 8.18.0 + fast-deep-equal: 3.1.3 ++ optional: true + + ajv@6.14.0: + dependencies: +@@ -13931,8 +11816,6 @@ snapshots: + + ansi-escapes@6.2.1: {} + +- ansi-html-community@0.0.8: {} +- + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} +@@ -14118,30 +12001,6 @@ snapshots: + cosmiconfig: 7.1.0 + resolve: 1.22.11 + +- babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.29.0): +- dependencies: +- '@babel/compat-data': 7.28.6 +- '@babel/core': 7.29.0 +- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.29.0) +- semver: 6.3.1 +- transitivePeerDependencies: +- - supports-color +- +- babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.29.0) +- core-js-compat: 3.46.0 +- transitivePeerDependencies: +- - supports-color +- +- babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.29.0): +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.29.0) +- transitivePeerDependencies: +- - supports-color +- + babel-preset-current-node-syntax@1.0.1(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 +@@ -14177,11 +12036,8 @@ snapshots: + + base64-js@1.5.1: {} + +- baseline-browser-mapping@2.9.19: {} +- +- batch@0.6.1: {} +- +- big.js@5.2.2: {} ++ baseline-browser-mapping@2.9.19: ++ optional: true + + bin-version-check@5.1.0: + dependencies: +@@ -14194,8 +12050,6 @@ snapshots: + execa: 5.1.1 + find-versions: 5.1.0 + +- binary-extensions@2.3.0: {} +- + body-parser@1.20.4: + dependencies: + bytes: 3.1.2 +@@ -14227,13 +12081,6 @@ snapshots: + transitivePeerDependencies: + - supports-color + +- bonjour-service@1.3.0: +- dependencies: +- fast-deep-equal: 3.1.3 +- multicast-dns: 7.2.5 +- +- boolbase@1.0.0: {} +- + bowser@2.12.1: {} + + brace-expansion@1.1.12: +@@ -14267,6 +12114,7 @@ snapshots: + electron-to-chromium: 1.5.286 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) ++ optional: true + + bser@2.1.1: + dependencies: +@@ -14348,8 +12196,6 @@ snapshots: + + caniuse-lite@1.0.30001769: {} + +- case-sensitive-paths-webpack-plugin@2.4.0: {} +- + ccount@2.0.1: {} + + chai@5.3.3: +@@ -14383,25 +12229,14 @@ snapshots: + + check-error@2.1.3: {} + +- chokidar@3.6.0: +- dependencies: +- anymatch: 3.1.3 +- braces: 3.0.3 +- glob-parent: 5.1.2 +- is-binary-path: 2.1.0 +- is-glob: 4.0.3 +- normalize-path: 3.0.0 +- readdirp: 3.6.0 +- optionalDependencies: +- fsevents: 2.3.3 +- + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chromatic@13.3.4: {} + +- chrome-trace-event@1.0.4: {} ++ chrome-trace-event@1.0.4: ++ optional: true + + ci-info@3.9.0: {} + +@@ -14440,12 +12275,6 @@ snapshots: + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 + +- clone-deep@4.0.1: +- dependencies: +- is-plain-object: 2.0.4 +- kind-of: 6.0.3 +- shallow-clone: 3.0.1 +- + clsx@2.1.1: {} + + co@4.6.0: {} +@@ -14484,14 +12313,10 @@ snapshots: + + commander@11.1.0: {} + +- commander@12.1.0: {} +- + commander@2.20.3: {} + + commander@6.2.1: {} + +- commander@7.2.0: {} +- + commander@8.3.0: {} + + commondir@1.0.1: {} +@@ -14528,10 +12353,6 @@ snapshots: + + concat-map@0.0.1: {} + +- connect-history-api-fallback@2.0.0: {} +- +- console-clear@1.1.1: {} +- + constructs@10.6.0: {} + + content-disposition@0.5.4: +@@ -14559,10 +12380,6 @@ snapshots: + graceful-fs: 4.2.11 + p-event: 6.0.1 + +- core-js-compat@3.46.0: +- dependencies: +- browserslist: 4.28.1 +- + core-util-is@1.0.3: {} + + cors@2.8.5: +@@ -14630,60 +12447,15 @@ snapshots: + + css-functions-list@3.3.3: {} + +- css-loader@7.1.2(webpack@5.104.1): +- dependencies: +- icss-utils: 5.1.0(postcss@8.5.6) +- postcss: 8.5.6 +- postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) +- postcss-modules-local-by-default: 4.0.5(postcss@8.5.6) +- postcss-modules-scope: 3.2.0(postcss@8.5.6) +- postcss-modules-values: 4.0.0(postcss@8.5.6) +- postcss-value-parser: 4.2.0 +- semver: 7.5.4 +- optionalDependencies: +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- +- css-select@4.3.0: +- dependencies: +- boolbase: 1.0.0 +- css-what: 6.2.2 +- domhandler: 4.3.1 +- domutils: 2.8.0 +- nth-check: 2.1.1 +- +- css-select@5.1.0: +- dependencies: +- boolbase: 1.0.0 +- css-what: 6.2.2 +- domhandler: 5.0.3 +- domutils: 3.1.0 +- nth-check: 2.1.1 +- +- css-tree@2.2.1: +- dependencies: +- mdn-data: 2.0.28 +- source-map-js: 1.2.1 +- +- css-tree@2.3.1: +- dependencies: +- mdn-data: 2.0.30 +- source-map-js: 1.2.1 +- + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + +- css-what@6.2.2: {} +- + css.escape@1.5.1: {} + + cssesc@3.0.0: {} + +- csso@5.0.5: +- dependencies: +- css-tree: 2.2.1 +- + cssom@0.3.8: {} + + cssom@0.5.0: {} +@@ -14738,8 +12510,6 @@ snapshots: + + date-format@4.0.14: {} + +- debounce@1.2.1: {} +- + debug@2.6.9: + dependencies: + ms: 2.0.0 +@@ -14768,8 +12538,6 @@ snapshots: + dependencies: + mimic-response: 3.1.0 + +- dedent@0.7.0: {} +- + dedent@1.6.0(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 +@@ -14807,8 +12575,6 @@ snapshots: + + delayed-stream@1.0.0: {} + +- depd@1.1.2: {} +- + depd@2.0.0: {} + + dequal@2.0.3: {} +@@ -14817,8 +12583,6 @@ snapshots: + + detect-newline@3.1.0: {} + +- detect-node@2.1.0: {} +- + devalue@5.6.3: {} + + devlop@1.1.0: +@@ -14833,10 +12597,6 @@ snapshots: + dependencies: + path-type: 4.0.0 + +- dns-packet@5.6.1: +- dependencies: +- '@leichtgewicht/ip-codec': 2.0.5 +- + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 +@@ -14849,16 +12609,6 @@ snapshots: + + dom-accessibility-api@0.6.3: {} + +- dom-converter@0.2.0: +- dependencies: +- utila: 0.4.0 +- +- dom-serializer@1.4.1: +- dependencies: +- domelementtype: 2.3.0 +- domhandler: 4.3.1 +- entities: 2.2.0 +- + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 +@@ -14871,10 +12621,6 @@ snapshots: + dependencies: + webidl-conversions: 7.0.0 + +- domhandler@4.3.1: +- dependencies: +- domelementtype: 2.3.0 +- + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 +@@ -14883,12 +12629,6 @@ snapshots: + optionalDependencies: + '@types/trusted-types': 2.0.7 + +- domutils@2.8.0: +- dependencies: +- dom-serializer: 1.4.1 +- domelementtype: 2.3.0 +- domhandler: 4.3.1 +- + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 +@@ -14910,10 +12650,6 @@ snapshots: + dependencies: + readable-stream: 2.3.8 + +- duplexer@0.1.2: {} +- +- dynamic-import-polyfill@0.1.1: {} +- + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 +@@ -14930,29 +12666,19 @@ snapshots: + + emoji-regex@9.2.2: {} + +- emojis-list@3.0.0: {} ++ empathic@2.0.0: {} + + encodeurl@2.0.0: {} + +- endent@2.1.0: +- dependencies: +- dedent: 0.7.0 +- fast-json-parse: 1.0.3 +- objectorarray: 1.0.5 +- + enhanced-resolve@5.19.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + +- entities@2.2.0: {} +- + entities@4.5.0: {} + + env-paths@2.2.1: {} + +- envinfo@7.14.0: {} +- + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 +@@ -15039,7 +12765,8 @@ snapshots: + + es-module-lexer@1.7.0: {} + +- es-module-lexer@2.0.0: {} ++ es-module-lexer@2.0.0: ++ optional: true + + es-object-atoms@1.1.1: + dependencies: +@@ -15653,11 +13380,10 @@ snapshots: + + etag@1.8.1: {} + +- eventemitter3@4.0.7: {} +- + eventemitter3@5.0.1: {} + +- events@3.3.0: {} ++ events@3.3.0: ++ optional: true + + execa@5.1.1: + dependencies: +@@ -15785,8 +13511,6 @@ snapshots: + merge2: 1.4.1 + micromatch: 4.0.8 + +- fast-json-parse@1.0.3: {} +- + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} +@@ -15809,10 +13533,6 @@ snapshots: + dependencies: + reusify: 1.0.4 + +- faye-websocket@0.11.4: +- dependencies: +- websocket-driver: 0.7.4 +- + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 +@@ -15880,12 +13600,6 @@ snapshots: + transitivePeerDependencies: + - supports-color + +- find-cache-dir@3.3.2: +- dependencies: +- commondir: 1.0.1 +- make-dir: 3.1.0 +- pkg-dir: 4.2.0 +- + find-root@1.1.0: {} + + find-up-simple@1.0.1: {} +@@ -15925,33 +13639,12 @@ snapshots: + flatted: 3.4.2 + hookified: 1.15.1 + +- flat@5.0.2: {} +- + flatted@3.4.2: {} + +- follow-redirects@1.15.11: {} +- + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + +- fork-ts-checker-webpack-plugin@9.1.0(typescript@5.5.3)(webpack@5.104.1): +- dependencies: +- '@babel/code-frame': 7.29.0 +- chalk: 4.1.2 +- chokidar: 4.0.3 +- cosmiconfig: 8.3.6(typescript@5.5.3) +- deepmerge: 4.3.1 +- fs-extra: 10.1.0 +- memfs: 3.5.3 +- minimatch: 3.1.5 +- node-abort-controller: 3.1.1 +- schema-utils: 3.3.0 +- semver: 7.5.4 +- tapable: 2.3.0 +- typescript: 5.5.3 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- + form-data-encoder@2.1.4: {} + + form-data@4.0.4: +@@ -15984,8 +13677,6 @@ snapshots: + jsonfile: 4.0.0 + universalify: 0.1.2 + +- fs-monkey@1.1.0: {} +- + fs.realpath@1.0.0: {} + + fsevents@2.3.2: +@@ -16073,11 +13764,14 @@ snapshots: + dependencies: + is-glob: 4.0.3 + +- glob-to-regex.js@1.2.0(tslib@2.6.2): +- dependencies: +- tslib: 2.6.2 ++ glob-to-regexp@0.4.1: ++ optional: true + +- glob-to-regexp@0.4.1: {} ++ glob@13.0.6: ++ dependencies: ++ minimatch: 10.2.4 ++ minipass: 7.1.3 ++ path-scurry: 2.0.2 + + glob@7.2.3: + dependencies: +@@ -16150,12 +13844,6 @@ snapshots: + + graphemer@1.4.0: {} + +- gzip-size@6.0.0: +- dependencies: +- duplexer: 0.1.2 +- +- handle-thing@2.0.1: {} +- + has-bigints@1.1.0: {} + + has-flag@3.0.0: {} +@@ -16282,31 +13970,12 @@ snapshots: + dependencies: + lru-cache: 10.4.3 + +- hpack.js@2.1.6: +- dependencies: +- inherits: 2.0.4 +- obuf: 1.1.2 +- readable-stream: 2.3.8 +- wbuf: 1.7.3 +- + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + +- html-entities@2.4.0: {} +- + html-escaper@2.0.2: {} + +- html-minifier-terser@6.1.0: +- dependencies: +- camel-case: 4.1.2 +- clean-css: 5.3.3 +- commander: 8.3.0 +- he: 1.2.0 +- param-case: 3.0.4 +- relateurl: 0.2.7 +- terser: 5.46.0 +- + html-minifier-terser@7.2.0: + dependencies: + camel-case: 4.1.2 +@@ -16329,23 +13998,6 @@ snapshots: + + html-void-elements@3.0.0: {} + +- html-webpack-plugin@5.6.6(webpack@5.104.1): +- dependencies: +- '@types/html-minifier-terser': 6.1.0 +- html-minifier-terser: 6.1.0 +- lodash: 4.17.23 +- pretty-error: 4.0.0 +- tapable: 2.3.0 +- optionalDependencies: +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- +- htmlparser2@6.1.0: +- dependencies: +- domelementtype: 2.3.0 +- domhandler: 4.3.1 +- domutils: 2.8.0 +- entities: 2.2.0 +- + htmlparser2@8.0.1: + dependencies: + domelementtype: 2.3.0 +@@ -16355,15 +14007,6 @@ snapshots: + + http-cache-semantics@4.1.1: {} + +- http-deceiver@1.2.7: {} +- +- http-errors@1.6.3: +- dependencies: +- depd: 1.1.2 +- inherits: 2.0.3 +- setprototypeof: 1.1.0 +- statuses: 1.5.0 +- + http-errors@2.0.1: + dependencies: + depd: 2.0.0 +@@ -16372,8 +14015,6 @@ snapshots: + statuses: 2.0.2 + toidentifier: 1.0.1 + +- http-parser-js@0.5.10: {} +- + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 +@@ -16382,26 +14023,6 @@ snapshots: + transitivePeerDependencies: + - supports-color + +- http-proxy-middleware@2.0.9(@types/express@4.17.25): +- dependencies: +- '@types/http-proxy': 1.17.16 +- http-proxy: 1.18.1 +- is-glob: 4.0.3 +- is-plain-obj: 3.0.0 +- micromatch: 4.0.8 +- optionalDependencies: +- '@types/express': 4.17.25 +- transitivePeerDependencies: +- - debug +- +- http-proxy@1.18.1: +- dependencies: +- eventemitter3: 4.0.7 +- follow-redirects: 1.15.11 +- requires-port: 1.0.0 +- transitivePeerDependencies: +- - debug +- + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 +@@ -16420,8 +14041,6 @@ snapshots: + + husky@9.1.7: {} + +- hyperdyperid@1.2.0: {} +- + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 +@@ -16434,10 +14053,6 @@ snapshots: + dependencies: + safer-buffer: 2.1.2 + +- icss-utils@5.1.0(postcss@8.5.6): +- dependencies: +- postcss: 8.5.6 +- + ieee754@1.2.1: {} + + ignore@5.3.2: {} +@@ -16467,8 +14082,6 @@ snapshots: + once: 1.4.0 + wrappy: 1.0.2 + +- inherits@2.0.3: {} +- + inherits@2.0.4: {} + + ini@1.3.8: {} +@@ -16483,12 +14096,8 @@ snapshots: + hasown: 2.0.2 + side-channel: 1.1.0 + +- interpret@3.1.1: {} +- + ipaddr.js@1.9.1: {} + +- ipaddr.js@2.2.0: {} +- + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 +@@ -16509,10 +14118,6 @@ snapshots: + dependencies: + has-bigints: 1.1.0 + +- is-binary-path@2.1.0: +- dependencies: +- binary-extensions: 2.3.0 +- + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 +@@ -16587,8 +14192,6 @@ snapshots: + + is-negative-zero@2.0.3: {} + +- is-network-error@1.3.0: {} +- + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 +@@ -16600,14 +14203,8 @@ snapshots: + + is-plain-obj@1.1.0: {} + +- is-plain-obj@3.0.0: {} +- + is-plain-obj@4.1.0: {} + +- is-plain-object@2.0.4: +- dependencies: +- isobject: 3.0.1 +- + is-plain-object@5.0.0: {} + + is-potential-custom-element-name@1.0.1: {} +@@ -16683,8 +14280,6 @@ snapshots: + + isexe@2.0.0: {} + +- isobject@3.0.1: {} +- + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: +@@ -17047,6 +14642,7 @@ snapshots: + '@types/node': 22.17.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 ++ optional: true + + jest-worker@29.7.0: + dependencies: +@@ -17221,12 +14817,7 @@ snapshots: + + language-tags@1.0.9: + dependencies: +- language-subtag-registry: 0.3.22 +- +- launch-editor@2.11.1: +- dependencies: +- picocolors: 1.1.1 +- shell-quote: 1.8.3 ++ language-subtag-registry: 0.3.22 + + leven@3.1.0: {} + +@@ -17265,13 +14856,8 @@ snapshots: + rfdc: 1.3.0 + wrap-ansi: 9.0.2 + +- loader-runner@4.3.1: {} +- +- loader-utils@1.4.2: +- dependencies: +- big.js: 5.2.2 +- emojis-list: 3.0.0 +- json5: 1.0.2 ++ loader-runner@4.3.1: ++ optional: true + + locate-character@3.0.0: {} + +@@ -17283,10 +14869,6 @@ snapshots: + dependencies: + p-locate: 5.0.0 + +- lockfile@1.0.4: +- dependencies: +- signal-exit: 3.0.7 +- + lodash.clonedeep@4.5.0: {} + + lodash.debounce@4.0.8: {} +@@ -17331,6 +14913,8 @@ snapshots: + + lru-cache@10.4.3: {} + ++ lru-cache@11.3.3: {} ++ + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 +@@ -17350,10 +14934,6 @@ snapshots: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + +- make-dir@3.1.0: +- dependencies: +- semver: 6.3.1 +- + make-dir@4.0.0: + dependencies: + semver: 7.5.4 +@@ -17401,29 +14981,12 @@ snapshots: + dependencies: + '@types/mdast': 4.0.4 + +- mdn-data@2.0.28: {} +- +- mdn-data@2.0.30: {} +- + mdn-data@2.27.1: {} + + media-typer@0.3.0: {} + + media-typer@1.1.0: {} + +- memfs@3.5.3: +- dependencies: +- fs-monkey: 1.1.0 +- +- memfs@4.49.0: +- dependencies: +- '@jsonjoy.com/json-pack': 1.21.0(tslib@2.6.2) +- '@jsonjoy.com/util': 1.9.0(tslib@2.6.2) +- glob-to-regex.js: 1.2.0(tslib@2.6.2) +- thingies: 2.5.0(tslib@2.6.2) +- tree-dump: 1.1.0(tslib@2.6.2) +- tslib: 2.6.2 +- + meow@13.2.0: {} + + merge-descriptors@1.0.3: {} +@@ -17605,8 +15168,6 @@ snapshots: + + mini-svg-data-uri@1.4.4: {} + +- minimalistic-assert@1.0.1: {} +- + minimatch@10.2.4: + dependencies: + brace-expansion: 5.0.3 +@@ -17621,6 +15182,8 @@ snapshots: + + minimist@1.2.8: {} + ++ minipass@7.1.3: {} ++ + mnemonist@0.38.3: + dependencies: + obliterator: 1.6.1 +@@ -17629,8 +15192,6 @@ snapshots: + + mri@1.2.0: {} + +- mrmime@1.0.1: {} +- + mrmime@2.0.1: {} + + ms@2.0.0: {} +@@ -17639,11 +15200,6 @@ snapshots: + + ms@2.1.3: {} + +- multicast-dns@7.2.5: +- dependencies: +- dns-packet: 5.6.1 +- thunky: 1.1.0 +- + multipipe@1.0.2: + dependencies: + duplexer2: 0.1.4 +@@ -17659,7 +15215,8 @@ snapshots: + + negotiator@1.0.0: {} + +- neo-async@2.6.2: {} ++ neo-async@2.6.2: ++ optional: true + + nice-napi@1.0.2: + dependencies: +@@ -17678,8 +15235,6 @@ snapshots: + lower-case: 2.0.2 + tslib: 2.6.2 + +- node-abort-controller@3.1.1: {} +- + node-addon-api@3.2.1: + optional: true + +@@ -17691,8 +15246,6 @@ snapshots: + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + +- node-forge@1.4.0: {} +- + node-gyp-build@4.8.0: + optional: true + +@@ -17725,10 +15278,6 @@ snapshots: + dependencies: + path-key: 4.0.0 + +- nth-check@2.1.1: +- dependencies: +- boolbase: 1.0.0 +- + nwsapi@2.2.7: {} + + object-assign@4.1.1: {} +@@ -17780,12 +15329,8 @@ snapshots: + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + +- objectorarray@1.0.5: {} +- + obliterator@1.6.1: {} + +- obuf@1.1.2: {} +- + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 +@@ -17822,8 +15367,6 @@ snapshots: + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 + +- opener@1.5.2: {} +- + optionator@0.9.3: + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 +@@ -17871,12 +15414,6 @@ snapshots: + + p-map@6.0.0: {} + +- p-retry@6.2.1: +- dependencies: +- '@types/retry': 0.12.2 +- is-network-error: 1.3.0 +- retry: 0.13.1 +- + p-timeout@6.1.2: {} + + p-try@2.2.0: {} +@@ -17939,6 +15476,11 @@ snapshots: + + path-parse@1.0.7: {} + ++ path-scurry@2.0.2: ++ dependencies: ++ lru-cache: 11.3.3 ++ minipass: 7.1.3 ++ + path-to-regexp@0.1.13: {} + + path-to-regexp@8.4.1: {} +@@ -17983,38 +15525,12 @@ snapshots: + + possible-typed-array-names@1.1.0: {} + +- postcss-modules-extract-imports@3.1.0(postcss@8.5.6): +- dependencies: +- postcss: 8.5.6 +- +- postcss-modules-local-by-default@4.0.5(postcss@8.5.6): +- dependencies: +- icss-utils: 5.1.0(postcss@8.5.6) +- postcss: 8.5.6 +- postcss-selector-parser: 6.1.2 +- postcss-value-parser: 4.2.0 +- +- postcss-modules-scope@3.2.0(postcss@8.5.6): +- dependencies: +- postcss: 8.5.6 +- postcss-selector-parser: 6.1.2 +- +- postcss-modules-values@4.0.0(postcss@8.5.6): +- dependencies: +- icss-utils: 5.1.0(postcss@8.5.6) +- postcss: 8.5.6 +- + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + +- postcss-selector-parser@6.1.2: +- dependencies: +- cssesc: 3.0.0 +- util-deprecate: 1.0.2 +- + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 +@@ -18046,11 +15562,6 @@ snapshots: + + prettier@3.0.3: {} + +- pretty-error@4.0.0: +- dependencies: +- lodash: 4.17.23 +- renderkid: 3.0.0 +- + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 +@@ -18139,21 +15650,6 @@ snapshots: + dependencies: + typescript: 5.5.3 + +- react-docgen@7.1.1: +- dependencies: +- '@babel/core': 7.29.0 +- '@babel/traverse': 7.29.0 +- '@babel/types': 7.29.0 +- '@types/babel__core': 7.20.5 +- '@types/babel__traverse': 7.28.0 +- '@types/doctrine': 0.0.9 +- '@types/resolve': 1.20.6 +- doctrine: 3.0.0 +- resolve: 1.22.11 +- strip-indent: 4.1.1 +- transitivePeerDependencies: +- - supports-color +- + react-docgen@8.0.2: + dependencies: + '@babel/core': 7.29.0 +@@ -18235,16 +15731,6 @@ snapshots: + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + +- readable-stream@3.6.2: +- dependencies: +- inherits: 2.0.4 +- string_decoder: 1.3.0 +- util-deprecate: 1.0.2 +- +- readdirp@3.6.0: +- dependencies: +- picomatch: 2.3.2 +- + readdirp@4.1.2: {} + + recast@0.23.11: +@@ -18255,10 +15741,6 @@ snapshots: + tiny-invariant: 1.3.3 + tslib: 2.6.2 + +- rechoir@0.8.0: +- dependencies: +- resolve: 1.22.11 +- + redent@3.0.0: + dependencies: + indent-string: 4.0.0 +@@ -18275,12 +15757,6 @@ snapshots: + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + +- regenerate-unicode-properties@10.2.2: +- dependencies: +- regenerate: 1.4.2 +- +- regenerate@1.4.2: {} +- + regexp-tree@0.1.27: {} + + regexp.prototype.flags@1.5.4: +@@ -18292,25 +15768,10 @@ snapshots: + gopd: 1.2.0 + set-function-name: 2.0.2 + +- regexpu-core@6.4.0: +- dependencies: +- regenerate: 1.4.2 +- regenerate-unicode-properties: 10.2.2 +- regjsgen: 0.8.0 +- regjsparser: 0.13.0 +- unicode-match-property-ecmascript: 2.0.0 +- unicode-match-property-value-ecmascript: 2.2.1 +- +- regjsgen@0.8.0: {} +- + regjsparser@0.10.0: + dependencies: + jsesc: 0.5.0 + +- regjsparser@0.13.0: +- dependencies: +- jsesc: 3.1.0 +- + rehype-autolink-headings@7.1.0: + dependencies: + '@types/hast': 3.0.4 +@@ -18353,14 +15814,6 @@ snapshots: + unified: 11.0.5 + vfile: 6.0.3 + +- renderkid@3.0.0: +- dependencies: +- css-select: 4.3.0 +- dom-converter: 0.2.0 +- htmlparser2: 6.1.0 +- lodash: 4.17.23 +- strip-ansi: 6.0.1 +- + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} +@@ -18402,8 +15855,6 @@ snapshots: + onetime: 5.1.2 + signal-exit: 3.0.7 + +- retry@0.13.1: {} +- + reusify@1.0.4: {} + + rfdc@1.3.0: {} +@@ -18521,8 +15972,6 @@ snapshots: + parse-srcset: 1.0.2 + postcss: 8.5.6 + +- sax@1.6.0: {} +- + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 +@@ -18531,18 +15980,13 @@ snapshots: + dependencies: + loose-envify: 1.4.0 + +- schema-utils@3.3.0: +- dependencies: +- '@types/json-schema': 7.0.15 +- ajv: 6.14.0 +- ajv-keywords: 3.5.2(ajv@6.14.0) +- + schema-utils@4.3.3: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) + ajv-keywords: 5.1.0(ajv@8.18.0) ++ optional: true + + screenfull@6.0.2: {} + +@@ -18552,13 +15996,6 @@ snapshots: + dependencies: + commander: 6.2.1 + +- select-hose@2.0.0: {} +- +- selfsigned@2.4.1: +- dependencies: +- '@types/node-forge': 1.3.14 +- node-forge: 1.4.0 +- + semver-regex@4.0.5: {} + + semver-truncate@3.0.0: +@@ -18609,18 +16046,6 @@ snapshots: + transitivePeerDependencies: + - supports-color + +- serve-index@1.9.1: +- dependencies: +- accepts: 1.3.8 +- batch: 0.6.1 +- debug: 2.6.9 +- escape-html: 1.0.3 +- http-errors: 1.6.3 +- mime-types: 2.1.35 +- parseurl: 1.3.3 +- transitivePeerDependencies: +- - supports-color +- + serve-static@1.16.3: + dependencies: + encodeurl: 2.0.0 +@@ -18663,22 +16088,14 @@ snapshots: + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + +- setprototypeof@1.1.0: {} +- + setprototypeof@1.2.0: {} + +- shallow-clone@3.0.1: +- dependencies: +- kind-of: 6.0.3 +- + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + +- shell-quote@1.8.3: {} +- + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 +@@ -18711,12 +16128,6 @@ snapshots: + + signal-exit@4.1.0: {} + +- sirv@2.0.3: +- dependencies: +- '@polka/url': 1.0.0-next.29 +- mrmime: 1.0.1 +- totalist: 3.0.1 +- + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 +@@ -18750,12 +16161,6 @@ snapshots: + dot-case: 3.0.4 + tslib: 2.6.2 + +- sockjs@0.3.24: +- dependencies: +- faye-websocket: 0.11.4 +- uuid: 8.3.2 +- websocket-driver: 0.7.4 +- + sort-keys-length@1.0.1: + dependencies: + sort-keys: 1.1.2 +@@ -18798,27 +16203,6 @@ snapshots: + + spdx-license-ids@3.0.23: {} + +- spdy-transport@3.0.0: +- dependencies: +- debug: 4.4.3 +- detect-node: 2.1.0 +- hpack.js: 2.1.6 +- obuf: 1.1.2 +- readable-stream: 3.6.2 +- wbuf: 1.7.3 +- transitivePeerDependencies: +- - supports-color +- +- spdy@4.0.2: +- dependencies: +- debug: 4.4.3 +- handle-thing: 2.0.1 +- http-deceiver: 1.2.7 +- select-hose: 2.0.0 +- spdy-transport: 3.0.0 +- transitivePeerDependencies: +- - supports-color +- + sprintf-js@1.0.3: {} + + stable-hash@0.0.4: {} +@@ -18827,8 +16211,6 @@ snapshots: + dependencies: + escape-string-regexp: 2.0.0 + +- statuses@1.5.0: {} +- + statuses@2.0.2: {} + + stop-iteration-iterator@1.1.0: +@@ -18952,10 +16334,6 @@ snapshots: + dependencies: + safe-buffer: 5.1.2 + +- string_decoder@1.3.0: +- dependencies: +- safe-buffer: 5.2.1 +- + stringify-entities@4.0.3: + dependencies: + character-entities-html4: 2.1.0 +@@ -18997,10 +16375,6 @@ snapshots: + '@tokenizer/token': 0.3.0 + peek-readable: 5.3.1 + +- style-loader@4.0.0(webpack@5.104.1): +- dependencies: +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- + stylelint-config-recommended@14.0.0(stylelint@16.26.1(typescript@5.5.3)): + dependencies: + stylelint: 16.26.1(typescript@5.5.3) +@@ -19108,22 +16482,6 @@ snapshots: + + svg-tags@1.0.0: {} + +- svgo@3.3.3: +- dependencies: +- commander: 7.2.0 +- css-select: 5.1.0 +- css-tree: 2.3.1 +- css-what: 6.2.2 +- csso: 5.0.5 +- picocolors: 1.1.1 +- sax: 1.6.0 +- +- swc-loader@0.2.6(@swc/core@1.13.5)(webpack@5.104.1): +- dependencies: +- '@swc/core': 1.13.5 +- '@swc/counter': 0.1.3 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- + swr@1.3.0(react@18.3.1): + dependencies: + react: 18.3.1 +@@ -19148,16 +16506,17 @@ snapshots: + transitivePeerDependencies: + - bare-abort-controller + +- terser-webpack-plugin@5.4.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack@5.104.1): ++ terser-webpack-plugin@5.4.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + terser: 5.46.0 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) ++ webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3) + optionalDependencies: + '@swc/core': 1.13.5 + esbuild: 0.27.3 ++ optional: true + + terser@5.46.0: + dependencies: +@@ -19178,10 +16537,6 @@ snapshots: + + text-table@0.2.0: {} + +- thingies@2.5.0(tslib@2.6.2): +- dependencies: +- tslib: 2.6.2 +- + through2@0.4.2: + dependencies: + readable-stream: 1.0.34 +@@ -19189,8 +16544,6 @@ snapshots: + + through@2.3.8: {} + +- thunky@1.1.0: {} +- + tiny-invariant@1.3.3: {} + + tinyglobby@0.2.15: +@@ -19208,10 +16561,6 @@ snapshots: + dependencies: + is-number: 7.0.0 + +- to-string-loader@1.2.0: +- dependencies: +- loader-utils: 1.4.2 +- + toidentifier@1.0.1: {} + + token-types@6.0.0: +@@ -19238,10 +16587,6 @@ snapshots: + + traverse-chain@0.1.0: {} + +- tree-dump@1.1.0(tslib@2.6.2): +- dependencies: +- tslib: 2.6.2 +- + trim-lines@3.0.1: {} + + trough@2.1.0: {} +@@ -19450,17 +16795,6 @@ snapshots: + + undici-types@6.21.0: {} + +- unicode-canonical-property-names-ecmascript@2.0.1: {} +- +- unicode-match-property-ecmascript@2.0.0: +- dependencies: +- unicode-canonical-property-names-ecmascript: 2.0.1 +- unicode-property-aliases-ecmascript: 2.2.0 +- +- unicode-match-property-value-ecmascript@2.2.1: {} +- +- unicode-property-aliases-ecmascript@2.2.0: {} +- + unicorn-magic@0.1.0: {} + + unified@11.0.5: +@@ -19527,6 +16861,7 @@ snapshots: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 ++ optional: true + + uri-js@4.4.1: + dependencies: +@@ -19553,8 +16888,6 @@ snapshots: + + util-deprecate@1.0.2: {} + +- utila@0.4.0: {} +- + utils-merge@1.0.1: {} + + uuid@8.3.2: {} +@@ -19632,10 +16965,7 @@ snapshots: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 +- +- wbuf@1.7.3: +- dependencies: +- minimalistic-assert: 1.0.1 ++ optional: true + + web-namespaces@2.0.1: {} + +@@ -19645,156 +16975,12 @@ snapshots: + + webidl-conversions@7.0.0: {} + +- webpack-assets-manifest@6.3.0(webpack@5.104.1): +- dependencies: +- deepmerge: 4.3.1 +- lockfile: 1.0.4 +- schema-utils: 4.3.3 +- tapable: 2.3.0 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- +- webpack-bundle-analyzer@4.10.2: +- dependencies: +- '@discoveryjs/json-ext': 0.5.7 +- acorn: 8.16.0 +- acorn-walk: 8.3.1 +- commander: 7.2.0 +- debounce: 1.2.1 +- escape-string-regexp: 4.0.0 +- gzip-size: 6.0.0 +- html-escaper: 2.0.2 +- opener: 1.5.2 +- picocolors: 1.1.1 +- sirv: 2.0.3 +- ws: 7.5.10 +- transitivePeerDependencies: +- - bufferutil +- - utf-8-validate +- +- webpack-cli@6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1): +- dependencies: +- '@discoveryjs/json-ext': 0.6.3 +- '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.104.1) +- '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.104.1) +- '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.104.1) +- colorette: 2.0.20 +- commander: 12.1.0 +- cross-spawn: 7.0.6 +- envinfo: 7.14.0 +- fastest-levenshtein: 1.0.16 +- import-local: 3.2.0 +- interpret: 3.1.1 +- rechoir: 0.8.0 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- webpack-merge: 6.0.1 +- optionalDependencies: +- webpack-bundle-analyzer: 4.10.2 +- webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.104.1) +- +- webpack-dev-middleware@6.1.3(webpack@5.104.1): +- dependencies: +- colorette: 2.0.20 +- memfs: 3.5.3 +- mime-types: 2.1.35 +- range-parser: 1.2.1 +- schema-utils: 4.3.3 +- optionalDependencies: +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- +- webpack-dev-middleware@7.4.5(webpack@5.104.1): +- dependencies: +- colorette: 2.0.20 +- memfs: 4.49.0 +- mime-types: 3.0.2 +- on-finished: 2.4.1 +- range-parser: 1.2.1 +- schema-utils: 4.3.3 +- optionalDependencies: +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- +- webpack-dev-server@5.2.2(webpack-cli@6.0.1)(webpack@5.104.1): +- dependencies: +- '@types/bonjour': 3.5.13 +- '@types/connect-history-api-fallback': 1.5.4 +- '@types/express': 4.17.25 +- '@types/express-serve-static-core': 4.19.7 +- '@types/serve-index': 1.9.4 +- '@types/serve-static': 1.15.9 +- '@types/sockjs': 0.3.36 +- '@types/ws': 8.18.1 +- ansi-html-community: 0.0.8 +- bonjour-service: 1.3.0 +- chokidar: 3.6.0 +- colorette: 2.0.20 +- compression: 1.7.4 +- connect-history-api-fallback: 2.0.0 +- express: 4.22.1 +- graceful-fs: 4.2.11 +- http-proxy-middleware: 2.0.9(@types/express@4.17.25) +- ipaddr.js: 2.2.0 +- launch-editor: 2.11.1 +- open: 10.2.0 +- p-retry: 6.2.1 +- schema-utils: 4.3.3 +- selfsigned: 2.4.1 +- serve-index: 1.9.1 +- sockjs: 0.3.24 +- spdy: 4.0.2 +- webpack-dev-middleware: 7.4.5(webpack@5.104.1) +- ws: 8.19.0 +- optionalDependencies: +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) +- transitivePeerDependencies: +- - bufferutil +- - debug +- - supports-color +- - utf-8-validate +- +- webpack-format-messages@2.0.6: +- dependencies: +- kleur: 3.0.3 +- +- webpack-hot-middleware@2.26.1: +- dependencies: +- ansi-html-community: 0.0.8 +- html-entities: 2.4.0 +- strip-ansi: 6.0.1 +- +- webpack-hot-server-middleware@0.6.1(webpack@5.104.1): +- dependencies: +- debug: 3.2.7 +- require-from-string: 2.0.2 +- source-map-support: 0.5.21 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- transitivePeerDependencies: +- - supports-color +- +- webpack-manifest-plugin@6.0.1(webpack@5.104.1): +- dependencies: +- tapable: 2.3.0 +- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) +- webpack-sources: 3.3.3 +- +- webpack-merge@6.0.1: +- dependencies: +- clone-deep: 4.0.1 +- flat: 5.0.2 +- wildcard: 2.0.1 +- +- webpack-messages@2.0.4: +- dependencies: +- console-clear: 1.1.1 +- kleur: 3.0.3 +- webpack-format-messages: 2.0.6 +- +- webpack-node-externals@3.0.0: {} +- +- webpack-sources@3.3.3: {} ++ webpack-sources@3.3.3: ++ optional: true + + webpack-virtual-modules@0.6.2: {} + +- webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1): ++ webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 +@@ -19818,23 +17004,14 @@ snapshots: + neo-async: 2.6.2 + schema-utils: 4.3.3 + tapable: 2.3.0 +- terser-webpack-plugin: 5.4.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack@5.104.1) ++ terser-webpack-plugin: 5.4.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) + watchpack: 2.5.1 + webpack-sources: 3.3.3 +- optionalDependencies: +- webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js +- +- websocket-driver@0.7.4: +- dependencies: +- http-parser-js: 0.5.10 +- safe-buffer: 5.2.1 +- websocket-extensions: 0.1.4 +- +- websocket-extensions@0.1.4: {} ++ optional: true + + whatwg-encoding@2.0.0: + dependencies: +@@ -19901,8 +17078,6 @@ snapshots: + dependencies: + isexe: 2.0.0 + +- wildcard@2.0.1: {} +- + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 +@@ -19927,8 +17102,6 @@ snapshots: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + +- ws@7.5.10: {} +- + ws@8.19.0: {} + + wsl-utils@0.1.0: +-- +2.50.1 (Apple Git-155) + + +From 833a07b8d277fedba09dbe2e59e5da65492c9388 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Thu, 9 Apr 2026 23:03:08 +0100 +Subject: [PATCH 09/17] Enable skipLibCheck to suppress upstream type errors in + node_modules + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/tsconfig.json | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/dotcom-rendering/tsconfig.json b/dotcom-rendering/tsconfig.json +index fd748a9adb..175d3739f7 100644 +--- a/dotcom-rendering/tsconfig.json ++++ b/dotcom-rendering/tsconfig.json +@@ -9,6 +9,7 @@ + "lib": ["esnext", "es2015", "dom"], + "moduleResolution": "bundler", + "noEmit": true, ++ "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + "paths": { +-- +2.50.1 (Apple Git-155) + + +From f646dbf5890a9480a82b52ab36a9de7ffd82ea82 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Thu, 9 Apr 2026 23:22:16 +0100 +Subject: [PATCH 10/17] Add AMD require type for curl.js loader in + InteractiveBlockComponent + +Previously typed incidentally by @types/webpack-env which was removed. + +Co-Authored-By: Claude Opus 4.6 +--- + .../src/components/InteractiveBlockComponent.island.tsx | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx b/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx +index ab5cc104ae..d431524a77 100644 +--- a/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx ++++ b/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx +@@ -1,3 +1,10 @@ ++// AMD require provided by curl.js loader for legacy interactives ++declare global { ++ interface Window { ++ require(modules: string[], callback: (...args: never[]) => void): void; ++ } ++} ++ + import { css } from '@emotion/react'; + import type { SerializedStyles } from '@emotion/react'; + import { getErrorMessage, isUndefined, log } from '@guardian/libs'; +-- +2.50.1 (Apple Git-155) + + +From 6e603c8b36b9f2b92b0f3e52f8a17758c6cda49a Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Thu, 9 Apr 2026 23:28:35 +0100 +Subject: [PATCH 11/17] Fix Jest config for Vite migration + +- Move .swcrc.json from webpack/ to .swcrc.jest.json (Jest-only concern) +- Add Jest mock for islandRegistry.ts (import.meta.glob unsupported) +- Revert nativeConnection.ts to named imports (client-side, not SSR) + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/.swcrc.jest.json | 18 ++++++++++++++++++ + dotcom-rendering/__mocks__/islandRegistry.ts | 9 +++++++++ + dotcom-rendering/jest.config.js | 3 ++- + .../src/lib/thrift/nativeConnection.ts | 6 ++---- + 4 files changed, 31 insertions(+), 5 deletions(-) + create mode 100644 dotcom-rendering/.swcrc.jest.json + create mode 100644 dotcom-rendering/__mocks__/islandRegistry.ts + +diff --git a/dotcom-rendering/.swcrc.jest.json b/dotcom-rendering/.swcrc.jest.json +new file mode 100644 +index 0000000000..51f3d35ea9 +--- /dev/null ++++ b/dotcom-rendering/.swcrc.jest.json +@@ -0,0 +1,18 @@ ++{ ++ "$schema": "http://json.schemastore.org/swcrc", ++ "jsc": { ++ "parser": { ++ "syntax": "typescript", ++ "tsx": true, ++ "decorators": false, ++ "dynamicImport": true ++ }, ++ "transform": { ++ "react": { ++ "runtime": "automatic", ++ "importSource": "@emotion/react" ++ } ++ } ++ }, ++ "sourceMaps": true ++} +diff --git a/dotcom-rendering/__mocks__/islandRegistry.ts b/dotcom-rendering/__mocks__/islandRegistry.ts +new file mode 100644 +index 0000000000..7034f4e74d +--- /dev/null ++++ b/dotcom-rendering/__mocks__/islandRegistry.ts +@@ -0,0 +1,9 @@ ++/** ++ * Jest mock for islandRegistry.ts which uses import.meta.glob ++ * (not supported by Jest/SWC). ++ */ ++export const getIslandModule = ( ++ _name: string, ++): (() => Promise>) | undefined => { ++ return undefined; ++}; +diff --git a/dotcom-rendering/jest.config.js b/dotcom-rendering/jest.config.js +index e282699b5c..8927bcb13e 100644 +--- a/dotcom-rendering/jest.config.js ++++ b/dotcom-rendering/jest.config.js +@@ -1,4 +1,4 @@ +-const swcConfig = require('./webpack/.swcrc.json'); ++const swcConfig = require('./.swcrc.jest.json'); + + const esModules = [ + '@guardian/', +@@ -21,6 +21,7 @@ module.exports = { + moduleNameMapper: { + '^svgs/(.*)$': '/__mocks__/svgMock.tsx', + '^(.*)\\.svg$': '/__mocks__/svgMock.tsx', ++ '(.*)/islandRegistry': '/__mocks__/islandRegistry.ts', + }, + transformIgnorePatterns: [`/node_modules/.pnpm/(?!${esModules})`], + collectCoverageFrom: ['src/**/*.{ts,tsx}'], +diff --git a/dotcom-rendering/src/lib/thrift/nativeConnection.ts b/dotcom-rendering/src/lib/thrift/nativeConnection.ts +index b526c5a7df..3b1ab0659f 100644 +--- a/dotcom-rendering/src/lib/thrift/nativeConnection.ts ++++ b/dotcom-rendering/src/lib/thrift/nativeConnection.ts +@@ -7,15 +7,13 @@ import type { + TransportType, + TTransport, + } from '@creditkarma/thrift-server-core'; +-import thriftCore from '@creditkarma/thrift-server-core'; +- +-const { ++import { + getProtocol, + getTransport, + TApplicationException, + TApplicationExceptionType, + ThriftConnection, +-} = thriftCore; ++} from '@creditkarma/thrift-server-core'; + import { TMultiplexedProtocol } from './protocols'; + + declare global { +-- +2.50.1 (Apple Git-155) + + +From a2ceaae1793492ad759abb9326dd0263fee79a92 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Sat, 11 Apr 2026 16:53:52 +0100 +Subject: [PATCH 12/17] Fix Vite dev server asset loading and remove + frameworks.js + +Dev mode now serves modules by source path (e.g. /assets/src/client/main.web.ts) +matching how Vite's dev server resolves modules. Removes explicit frameworks.js +script tags since ES module imports auto-resolve chunk dependencies. Adds +@vite/client script injection for HMR support in dev mode. + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/src/lib/assets.test.ts | 28 ++++----- + dotcom-rendering/src/lib/assets.ts | 62 ++++++++----------- + ...render.allEditorialNewslettersPage.web.tsx | 1 - + .../src/server/render.article.web.tsx | 1 - + .../src/server/render.front.web.tsx | 2 - + .../src/server/render.sportDataPage.web.tsx | 1 - + 6 files changed, 39 insertions(+), 56 deletions(-) + +diff --git a/dotcom-rendering/src/lib/assets.test.ts b/dotcom-rendering/src/lib/assets.test.ts +index 65c7db3ee3..8d28df4a44 100644 +--- a/dotcom-rendering/src/lib/assets.test.ts ++++ b/dotcom-rendering/src/lib/assets.test.ts +@@ -44,6 +44,15 @@ describe('regular expression to match files', () => { + ); + }); + ++ it('should match dev source paths', () => { ++ expect('http://localhost:3030/assets/src/client/main.web.ts').toMatch( ++ WEB, ++ ); ++ expect('http://localhost:3030/assets/src/client/main.apps.ts').toMatch( ++ APPS_SCRIPT, ++ ); ++ }); ++ + it('should handle PROD environment', () => { + expect( + 'https://assets.guim.co.uk/assets/index.client.web.DKLwwO4p.js', +@@ -72,11 +81,6 @@ describe('getPathFromManifest', () => { + name: 'index', + src: 'src/client/main.web.ts', + isEntry: true, +- imports: ['_frameworks.client.web.xyz78901.js'], +- }, +- _frameworks: { +- file: 'frameworks.client.web.xyz78901.js', +- name: 'frameworks', + }, + }); + (readFileSync as jest.Mock).mockReturnValue(viteManifest); +@@ -92,15 +96,11 @@ describe('getPathFromManifest', () => { + ); + }); + +- it('returns correct hashed asset for frameworks chunk', () => { +- expect(getPathFromManifest('client.web', 'frameworks.js')).toBe( +- '/assets/frameworks.client.web.xyz78901.js', +- ); +- }); +- +- it('throws an error when the hashed asset cant be found', () => { +- expect(() => getPathFromManifest('client.web', 'foo.bar.js')).toThrow( +- 'Missing manifest for foo.bar.js', ++ it('throws an error when the manifest entry is missing', () => { ++ // Use client.apps (not cached by previous test) with an empty manifest ++ (readFileSync as jest.Mock).mockReturnValue(JSON.stringify({})); ++ expect(() => getPathFromManifest('client.apps', 'index.js')).toThrow( ++ 'Missing manifest for index.js', + ); + }); + }); +diff --git a/dotcom-rendering/src/lib/assets.ts b/dotcom-rendering/src/lib/assets.ts +index ba3c932023..d1b9e57b32 100644 +--- a/dotcom-rendering/src/lib/assets.ts ++++ b/dotcom-rendering/src/lib/assets.ts +@@ -107,16 +107,6 @@ const entrySourcePaths: Record = { + 'client.editionsCrossword': 'src/client/main.editionsCrossword.tsx', + }; + +-/** +- * Finds a manifest entry by its `name` field. +- * Used for chunks like "frameworks" that aren't keyed by source path. +- */ +-const findEntryByName = ( +- manifest: ViteManifest, +- name: string, +-): ViteManifestEntry | undefined => +- Object.values(manifest).find((entry) => entry.name === name); +- + export const getPathFromManifest = ( + build: Build, + filename: `${string}.js`, +@@ -126,27 +116,14 @@ export const getPathFromManifest = ( + } + + if (isDev) { +- return `${ASSET_ORIGIN}assets/${filename.replace( +- '.js', +- `.${build}.js`, +- )}`; ++ // In dev, Vite serves modules by source path, not built filenames ++ const sourcePath = entrySourcePaths[build]; ++ return `${ASSET_ORIGIN}assets/${sourcePath}`; + } + + const manifest = getManifest(getManifestPath(build)); +- +- // Strip .js extension to get the logical name (e.g. "index", "frameworks") +- const logicalName = filename.replace(/\.js$/, ''); +- +- let entry: ViteManifestEntry | undefined; +- +- if (logicalName === 'index') { +- // Look up the entry point by its source path +- const sourcePath = entrySourcePaths[build]; +- entry = manifest[sourcePath]; +- } else { +- // For non-entry chunks (e.g. "frameworks"), find by name +- entry = findEntryByName(manifest, logicalName); +- } ++ const sourcePath = entrySourcePaths[build]; ++ const entry = manifest[sourcePath]; + + if (!entry) { + throw new Error(`Missing manifest for ${filename}`); +@@ -156,14 +133,16 @@ export const getPathFromManifest = ( + }; + + /** +- * To ensure this only applies to guardian scripts, +- * we check that it is served from an asset/ directory +- * and that it ends with the bundle type and extension, +- * with an optional hash for local development +- * and stripped query parameters. ++ * Matches Guardian script URLs in both dev and prod: ++ * Prod: assets/index.client.web.DKLwwO4p.js ++ * Dev: assets/src/client/main.web.ts + */ +-const getScriptRegex = (build: Build) => +- new RegExp(`assets\\/\\w+\\.${build}\\.(\\w{8}\\.)?js(\\?.*)?$`); ++const getScriptRegex = (build: Build) => { ++ const prodPattern = `assets\\/\\w+\\.${build}\\.(\\w{8}\\.)?js(\\?.*)?$`; ++ const sourcePath = entrySourcePaths[build]; ++ const devPattern = sourcePath.replace(/[/.]/g, '\\$&'); ++ return new RegExp(`(${prodPattern})|(${devPattern})`); ++}; + + export const WEB = getScriptRegex('client.web'); + export const WEB_VARIANT_SCRIPT = getScriptRegex('client.web.variant'); +@@ -172,8 +151,8 @@ export const EDITIONS_CROSSWORD_SCRIPT = getScriptRegex( + 'client.editionsCrossword', + ); + +-export const generateScriptTags = (scripts: string[]): string[] => +- scripts.filter(isString).map((script) => { ++export const generateScriptTags = (scripts: string[]): string[] => { ++ const tags = scripts.filter(isString).map((script) => { + if ( + script.match(WEB) ?? + script.match(WEB_VARIANT_SCRIPT) ?? +@@ -189,6 +168,15 @@ export const generateScriptTags = (scripts: string[]): string[] => + ].join('\n'); + }); + ++ if (isDev) { ++ tags.unshift( ++ ``, ++ ); ++ } ++ ++ return tags; ++}; ++ + export const getModulesBuild = ({ + tests, + }: { +diff --git a/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx b/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx +index bf9637ba9f..037aa80188 100644 +--- a/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx ++++ b/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx +@@ -59,7 +59,6 @@ export const renderEditorialNewslettersPage = ({ + */ + const prefetchScripts = [ + polyfillIO, +- getPathFromManifest(build, 'frameworks.js'), + getPathFromManifest(build, 'index.js'), + process.env.COMMERCIAL_BUNDLE_URL ?? + newslettersPage.config.commercialBundleUrl, +diff --git a/dotcom-rendering/src/server/render.article.web.tsx b/dotcom-rendering/src/server/render.article.web.tsx +index bf1fb3b18d..3c9af65bcf 100644 +--- a/dotcom-rendering/src/server/render.article.web.tsx ++++ b/dotcom-rendering/src/server/render.article.web.tsx +@@ -106,7 +106,6 @@ export const renderHtml = ({ + */ + const prefetchScripts = [ + polyfillIO, +- getPathFromManifest(build, 'frameworks.js'), + getPathFromManifest(build, 'index.js'), + process.env.COMMERCIAL_BUNDLE_URL ?? + frontendData.config.commercialBundleUrl, +diff --git a/dotcom-rendering/src/server/render.front.web.tsx b/dotcom-rendering/src/server/render.front.web.tsx +index de7a0aae80..1858029f34 100644 +--- a/dotcom-rendering/src/server/render.front.web.tsx ++++ b/dotcom-rendering/src/server/render.front.web.tsx +@@ -114,7 +114,6 @@ export const renderFront = ({ + */ + const prefetchScripts = [ + polyfillIO, +- getPathFromManifest(build, 'frameworks.js'), + getPathFromManifest(build, 'index.js'), + process.env.COMMERCIAL_BUNDLE_URL ?? front.config.commercialBundleUrl, + ].filter(isString); +@@ -215,7 +214,6 @@ export const renderTagPage = ({ + */ + const prefetchScripts = [ + polyfillIO, +- getPathFromManifest(build, 'frameworks.js'), + getPathFromManifest(build, 'index.js'), + process.env.COMMERCIAL_BUNDLE_URL ?? tagPage.config.commercialBundleUrl, + ].filter(isString); +diff --git a/dotcom-rendering/src/server/render.sportDataPage.web.tsx b/dotcom-rendering/src/server/render.sportDataPage.web.tsx +index 034a9bdbdb..0f97bec39f 100644 +--- a/dotcom-rendering/src/server/render.sportDataPage.web.tsx ++++ b/dotcom-rendering/src/server/render.sportDataPage.web.tsx +@@ -142,7 +142,6 @@ export const renderSportPage = ({ sportData, nav }: Props) => { + */ + const prefetchScripts = [ + polyfillIO, +- getPathFromManifest(build, 'frameworks.js'), + getPathFromManifest(build, 'index.js'), + process.env.COMMERCIAL_BUNDLE_URL ?? + sportData.config.commercialBundleUrl, +-- +2.50.1 (Apple Git-155) + + +From 23d7deed9c6e3e5725c1a010bfb3d2c3719d5c3d Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Sat, 11 Apr 2026 17:06:20 +0100 +Subject: [PATCH 13/17] Remove Preact aliases, use React for all builds + +Preact aliases in the dev server config were leaking into SSR module +resolution, causing renderToString to use preact-render-to-string +instead of react-dom/server, which resulted in empty HTML output. +Remove Preact aliases from both dev and prod client configs to use +vanilla React everywhere. + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/vite/dev-server.ts | 8 -------- + dotcom-rendering/vite/vite.config.client.ts | 12 ++---------- + 2 files changed, 2 insertions(+), 18 deletions(-) + +diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts +index a77780c0ec..60d8abb4f7 100644 +--- a/dotcom-rendering/vite/dev-server.ts ++++ b/dotcom-rendering/vite/dev-server.ts +@@ -37,14 +37,6 @@ async function start() { + }), + ssrCjsPlugin(cjsPackages), + ], +- resolve: { +- alias: { +- // Client-side Preact aliasing for browser modules +- react: 'preact/compat', +- 'react-dom/test-utils': 'preact/test-utils', +- 'react-dom': 'preact/compat', +- }, +- }, + server: { + middlewareMode: true, + hmr: true, +diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.ts +index 06bfc728f6..e0499a56d0 100644 +--- a/dotcom-rendering/vite/vite.config.client.ts ++++ b/dotcom-rendering/vite/vite.config.client.ts +@@ -99,7 +99,7 @@ const getManualChunks = ( + + return (id: string) => { + if ( +- /node_modules\/(preact|react-is|hoist-non-react-statistics|swr|@emotion|stylis)\//.test( ++ /node_modules\/(react|react-dom|react-is|hoist-non-react-statistics|swr|@emotion|stylis)\//.test( + id, + ) + ) { +@@ -140,15 +140,7 @@ export const createClientConfig = (build: Build): UserConfig => { + ] + : []), + ], +- resolve: { +- alias: { +- // Client builds use Preact for smaller bundle size. +- // Server builds use real React (not aliased). +- react: 'preact/compat', +- 'react-dom/test-utils': 'preact/test-utils', +- 'react-dom': 'preact/compat', +- }, +- }, ++ resolve: {}, + build: { + outDir: 'dist', + emptyOutDir: false, +-- +2.50.1 (Apple Git-155) + + +From f23e3e3e1a00170682198ae00cba15fa2cd89047 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Sat, 11 Apr 2026 17:43:01 +0100 +Subject: [PATCH 14/17] Fix SVG imports to return React components instead of + URLs + +vite-plugin-svgr defaults to only processing *.svg?react imports. +Add include: '**/*.svg' so all SVG imports are transformed into +React components, matching the previous @svgr/webpack behavior. + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/vite/dev-server.ts | 1 + + dotcom-rendering/vite/vite.config.client.ts | 1 + + dotcom-rendering/vite/vite.config.server.ts | 1 + + 3 files changed, 3 insertions(+) + +diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts +index 60d8abb4f7..b6729c834c 100644 +--- a/dotcom-rendering/vite/dev-server.ts ++++ b/dotcom-rendering/vite/dev-server.ts +@@ -33,6 +33,7 @@ async function start() { + const devConfig = mergeConfig(sharedConfig, { + plugins: [ + svgr({ ++ include: '**/*.svg', + svgrOptions: { svgo: false }, + }), + ssrCjsPlugin(cjsPackages), +diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.ts +index e0499a56d0..602aa15f89 100644 +--- a/dotcom-rendering/vite/vite.config.client.ts ++++ b/dotcom-rendering/vite/vite.config.client.ts +@@ -128,6 +128,7 @@ export const createClientConfig = (build: Build): UserConfig => { + const clientConfig: UserConfig = { + plugins: [ + svgr({ ++ include: '**/*.svg', + svgrOptions: { svgo: false }, + }), + // Buffer polyfill for apps/crossword builds +diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts +index cb971a3bf6..aecbb82dac 100644 +--- a/dotcom-rendering/vite/vite.config.server.ts ++++ b/dotcom-rendering/vite/vite.config.server.ts +@@ -18,6 +18,7 @@ const DEV = process.env.NODE_ENV === 'development'; + export const serverConfig: UserConfig = mergeConfig(sharedConfig, { + plugins: [ + svgr({ ++ include: '**/*.svg', + svgrOptions: { svgo: false }, + }), + ], +-- +2.50.1 (Apple Git-155) + + +From b94891dca9071bbb4a524f58b41dd0f41ef5ad72 Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Sat, 11 Apr 2026 23:48:17 +0100 +Subject: [PATCH 15/17] Fix ssrCjsPlugin leaking Node APIs into client bundles +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The plugin was wrapping CJS packages with createRequire() for both SSR +and client requests. Now it only applies for SSR (checking options.ssr), +and @guardian/bridget is added to optimizeDeps.include so Vite's +built-in pre-bundling handles CJSβ†’ESM conversion for client-side. + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/vite/dev-server.ts | 8 ++++++++ + dotcom-rendering/vite/ssr-cjs-plugin.ts | 4 ++-- + 2 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts +index b6729c834c..8ab09ee150 100644 +--- a/dotcom-rendering/vite/dev-server.ts ++++ b/dotcom-rendering/vite/dev-server.ts +@@ -45,6 +45,14 @@ async function start() { + appType: 'custom', + // Serve client modules from /assets/ to match production asset paths + base: '/assets/', ++ // Pre-bundle CJS packages for client-side use (the ssrCjsPlugin ++ // only wraps them for SSR; client needs Vite's built-in CJSβ†’ESM). ++ optimizeDeps: { ++ include: [ ++ '@guardian/bridget', ++ '@guardian/bridget/SignInScreenReason', ++ ], ++ }, + }); + // SSR config must be set after mergeConfig to avoid being overwritten. + devConfig.ssr = { +diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.ts b/dotcom-rendering/vite/ssr-cjs-plugin.ts +index 7f7c3906ff..22d4f3063c 100644 +--- a/dotcom-rendering/vite/ssr-cjs-plugin.ts ++++ b/dotcom-rendering/vite/ssr-cjs-plugin.ts +@@ -38,8 +38,8 @@ export function ssrCjsPlugin(packages: string[]): Plugin { + return { + name: 'ssr-cjs-compat', + enforce: 'pre', +- resolveId(id) { +- if (shouldWrap(id)) { ++ resolveId(id, _importer, options) { ++ if (options?.ssr && shouldWrap(id)) { + return PREFIX + id; + } + return undefined; +-- +2.50.1 (Apple Git-155) + + +From ea6cb25ba144a4c2e5fbe162ea57d82712693f3c Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Sun, 12 Apr 2026 00:06:59 +0100 +Subject: [PATCH 16/17] Fix HMR WebSocket by attaching to Express HTTP server + +Vite in middleware mode was starting its HMR WebSocket on a separate +port (24678), so the browser couldn't connect. Pass the Express HTTP +server to Vite's hmr config so the WebSocket shares port 3030, and +file changes trigger full page reloads as expected for SSR. + +Co-Authored-By: Claude Opus 4.6 +--- + dotcom-rendering/vite/dev-server.ts | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts +index 8ab09ee150..ece222646a 100644 +--- a/dotcom-rendering/vite/dev-server.ts ++++ b/dotcom-rendering/vite/dev-server.ts +@@ -10,6 +10,7 @@ + */ + + import { readFileSync } from 'node:fs'; ++import { createServer as createHttpServer } from 'node:http'; + import { resolve } from 'node:path'; + import express from 'express'; + import { createServer as createViteServer, mergeConfig } from 'vite'; +@@ -22,6 +23,7 @@ const root = process.cwd(); + + async function start() { + const app = express(); ++ const httpServer = createHttpServer(app); + + // CJS packages in noExternal that need ESM wrapping for Vite 6's + // SSR module runner. Only packages using require()/module.exports +@@ -40,7 +42,9 @@ async function start() { + ], + server: { + middlewareMode: true, +- hmr: true, ++ hmr: { ++ server: httpServer, ++ }, + }, + appType: 'custom', + // Serve client modules from /assets/ to match production asset paths +@@ -109,7 +113,7 @@ async function start() { + } + }); + +- app.listen(port, () => { ++ httpServer.listen(port, () => { + console.log( + `\n Vite DEV server running on http://localhost:${port}\n`, + ); +-- +2.50.1 (Apple Git-155) + + +From 1cb39f296c13c90ecec0010fb604166e9816743f Mon Sep 17 00:00:00 2001 +From: Ravi <7014230+arelra@users.noreply.github.com> +Date: Tue, 14 Apr 2026 23:41:02 +0100 +Subject: [PATCH 17/17] Restore ES6 named imports for CJS deps via ssrCjsPlugin + +Route jsdom, log4js, sanitize-html, compare-versions, and +@creditkarma/thrift-server-core through Vite's SSR pipeline via +ssr.noExternal + ssrCjsPlugin so source code can use idiomatic +`import { X } from 'pkg'` instead of default-import + destructure. + +Centralise the CJS package list in vite/cjs-packages.ts and wire it +into both the dev server and the production server build (the plugin +was previously missing from vite.config.server.ts). + +Co-Authored-By: Claude Opus 4.6 +--- + .../src/components/MultiByline.tsx | 4 +-- + dotcom-rendering/src/lib/domUtils.ts | 4 +-- + dotcom-rendering/src/model/enhance-H2s.ts | 4 +-- + .../src/model/enhance-blockquotes.ts | 4 +-- + .../src/model/enhance-dividers.ts | 4 +-- + dotcom-rendering/src/model/enhance-embeds.ts | 4 +-- + dotcom-rendering/src/model/enhance-images.ts | 4 +-- + .../src/model/enhance-numbered-lists.ts | 4 +-- + .../src/model/enhanceProductElement.ts | 4 +-- + .../src/model/enhanceTableOfContents.ts | 4 +-- + dotcom-rendering/src/model/sanitise.ts | 4 +-- + dotcom-rendering/src/server/lib/logging.ts | 4 +-- + dotcom-rendering/vite/cjs-packages.ts | 25 +++++++++++++++++++ + dotcom-rendering/vite/dev-server.ts | 14 +++++------ + dotcom-rendering/vite/vite.config.server.ts | 9 +++++++ + 15 files changed, 52 insertions(+), 44 deletions(-) + create mode 100644 dotcom-rendering/vite/cjs-packages.ts + +diff --git a/dotcom-rendering/src/components/MultiByline.tsx b/dotcom-rendering/src/components/MultiByline.tsx +index 661d48aa99..fdf1b398b7 100644 +--- a/dotcom-rendering/src/components/MultiByline.tsx ++++ b/dotcom-rendering/src/components/MultiByline.tsx +@@ -12,9 +12,7 @@ import { + textSansItalic28, + textSansItalic34, + } from '@guardian/source/foundations'; +-import sanitise from 'sanitize-html'; +- +-const { defaults } = sanitise; ++import sanitise, { defaults } from 'sanitize-html'; + import { + ArticleDesign, + ArticleDisplay, +diff --git a/dotcom-rendering/src/lib/domUtils.ts b/dotcom-rendering/src/lib/domUtils.ts +index e8baf6e9c7..50cf100e1d 100644 +--- a/dotcom-rendering/src/lib/domUtils.ts ++++ b/dotcom-rendering/src/lib/domUtils.ts +@@ -1,6 +1,4 @@ +-import jsdom from 'jsdom'; +- +-const { JSDOM } = jsdom; ++import { JSDOM } from 'jsdom'; + + export const parseHtml = (html: string): DocumentFragment => + JSDOM.fragment(html); +diff --git a/dotcom-rendering/src/model/enhance-H2s.ts b/dotcom-rendering/src/model/enhance-H2s.ts +index 2c70258aac..72ee2e0699 100644 +--- a/dotcom-rendering/src/model/enhance-H2s.ts ++++ b/dotcom-rendering/src/model/enhance-H2s.ts +@@ -1,6 +1,4 @@ +-import jsdom from 'jsdom'; +- +-const { JSDOM } = jsdom; ++import { JSDOM } from 'jsdom'; + import type { FEElement } from '../types/content'; + import { isLegacyTableOfContents } from './isLegacyTableOfContents'; + +diff --git a/dotcom-rendering/src/model/enhance-blockquotes.ts b/dotcom-rendering/src/model/enhance-blockquotes.ts +index 8bf2d3f5ec..86aaca47c4 100644 +--- a/dotcom-rendering/src/model/enhance-blockquotes.ts ++++ b/dotcom-rendering/src/model/enhance-blockquotes.ts +@@ -1,6 +1,4 @@ +-import jsdom from 'jsdom'; +- +-const { JSDOM } = jsdom; ++import { JSDOM } from 'jsdom'; + import { ArticleDesign, type ArticleFormat } from '../lib/articleFormat'; + import type { BlockquoteBlockElement, FEElement } from '../types/content'; + +diff --git a/dotcom-rendering/src/model/enhance-dividers.ts b/dotcom-rendering/src/model/enhance-dividers.ts +index b6ea977e0f..d66a615e17 100644 +--- a/dotcom-rendering/src/model/enhance-dividers.ts ++++ b/dotcom-rendering/src/model/enhance-dividers.ts +@@ -1,6 +1,4 @@ +-import jsdom from 'jsdom'; +- +-const { JSDOM } = jsdom; ++import { JSDOM } from 'jsdom'; + import type { FEElement } from '../types/content'; + + const isDinkus = (element: FEElement): boolean => { +diff --git a/dotcom-rendering/src/model/enhance-embeds.ts b/dotcom-rendering/src/model/enhance-embeds.ts +index c163df5d53..1f21c83200 100644 +--- a/dotcom-rendering/src/model/enhance-embeds.ts ++++ b/dotcom-rendering/src/model/enhance-embeds.ts +@@ -1,6 +1,4 @@ +-import jsdom from 'jsdom'; +- +-const { JSDOM } = jsdom; ++import { JSDOM } from 'jsdom'; + import type { FEElement } from '../types/content'; + + export const enhanceEmbeds = (elements: FEElement[]): FEElement[] => +diff --git a/dotcom-rendering/src/model/enhance-images.ts b/dotcom-rendering/src/model/enhance-images.ts +index 1fc3d341b8..44024de18d 100644 +--- a/dotcom-rendering/src/model/enhance-images.ts ++++ b/dotcom-rendering/src/model/enhance-images.ts +@@ -1,7 +1,5 @@ + import { isUndefined } from '@guardian/libs'; +-import jsdom from 'jsdom'; +- +-const { JSDOM } = jsdom; ++import { JSDOM } from 'jsdom'; + import { + ArticleDesign, + type ArticleFormat, +diff --git a/dotcom-rendering/src/model/enhance-numbered-lists.ts b/dotcom-rendering/src/model/enhance-numbered-lists.ts +index c0fc85d7eb..1fab92a8d6 100644 +--- a/dotcom-rendering/src/model/enhance-numbered-lists.ts ++++ b/dotcom-rendering/src/model/enhance-numbered-lists.ts +@@ -1,7 +1,5 @@ + import { isUndefined } from '@guardian/libs'; +-import jsdom from 'jsdom'; +- +-const { JSDOM } = jsdom; ++import { JSDOM } from 'jsdom'; + import { ArticleDisplay, type ArticleFormat } from '../lib/articleFormat'; + import type { FEElement, StarRating, TextBlockElement } from '../types/content'; + +diff --git a/dotcom-rendering/src/model/enhanceProductElement.ts b/dotcom-rendering/src/model/enhanceProductElement.ts +index ecaec36681..1d0f8f91c2 100644 +--- a/dotcom-rendering/src/model/enhanceProductElement.ts ++++ b/dotcom-rendering/src/model/enhanceProductElement.ts +@@ -1,6 +1,4 @@ +-import jsdom from 'jsdom'; +- +-const { JSDOM } = jsdom; ++import { JSDOM } from 'jsdom'; + import type { + FEElement, + ProductBlockElement, +diff --git a/dotcom-rendering/src/model/enhanceTableOfContents.ts b/dotcom-rendering/src/model/enhanceTableOfContents.ts +index f6643ff998..24b6b13446 100644 +--- a/dotcom-rendering/src/model/enhanceTableOfContents.ts ++++ b/dotcom-rendering/src/model/enhanceTableOfContents.ts +@@ -1,6 +1,4 @@ +-import jsdom from 'jsdom'; +- +-const { JSDOM } = jsdom; ++import { JSDOM } from 'jsdom'; + import type { Block } from '../types/blocks'; + import type { + NumberedTitleBlockElement, +diff --git a/dotcom-rendering/src/model/sanitise.ts b/dotcom-rendering/src/model/sanitise.ts +index 57c6c06cc4..8bc834d166 100644 +--- a/dotcom-rendering/src/model/sanitise.ts ++++ b/dotcom-rendering/src/model/sanitise.ts +@@ -1,8 +1,6 @@ + import type { Config } from 'dompurify'; + import createDOMPurify from 'dompurify'; +-import jsdom from 'jsdom'; +- +-const { JSDOM } = jsdom; ++import { JSDOM } from 'jsdom'; + + const { window } = new JSDOM(''); + const DOMPurify = createDOMPurify(window); +diff --git a/dotcom-rendering/src/server/lib/logging.ts b/dotcom-rendering/src/server/lib/logging.ts +index 8a08f31dd1..e4616dc03e 100644 +--- a/dotcom-rendering/src/server/lib/logging.ts ++++ b/dotcom-rendering/src/server/lib/logging.ts +@@ -1,9 +1,7 @@ + import path from 'node:path'; + import { isObject } from '@guardian/libs'; + import type { Configuration, Layout, LoggingEvent } from 'log4js'; +-import log4js from 'log4js'; +- +-const { addLayout, configure, getLogger, shutdown } = log4js; ++import { addLayout, configure, getLogger, shutdown } from 'log4js'; + import { type DCRLoggingStore, loggingStore } from './logging-store'; + + const logName = `dotcom-rendering.log`; +diff --git a/dotcom-rendering/vite/cjs-packages.ts b/dotcom-rendering/vite/cjs-packages.ts +new file mode 100644 +index 0000000000..d0f1daf406 +--- /dev/null ++++ b/dotcom-rendering/vite/cjs-packages.ts +@@ -0,0 +1,25 @@ ++/** ++ * CJS dependencies that need to be pulled through Vite's SSR pipeline ++ * and wrapped as ESM by `ssr-cjs-plugin.ts`. ++ * ++ * Vite 6's SSR module runner evaluates modules as strict ESM, which means ++ * `import { X } from 'pkg'` fails for CJS packages unless we synthesise real ++ * ESM named exports for them. Listing a package here: ++ * 1. Adds it to `ssr.noExternal` so Vite processes it (instead of leaving ++ * it for Node's loader). ++ * 2. Causes `ssrCjsPlugin` to load it via `createRequire()` and emit a ++ * shim with proper ESM named exports. ++ * ++ * If a new dependency breaks at runtime with ++ * "SyntaxError: Named export 'X' not found. The requested module is a CommonJS module..." ++ * add it here. Contributors should never need to switch to default-import + ++ * destructure patterns in source code. ++ */ ++export const cjsPackages = [ ++ '@guardian/bridget', ++ 'jsdom', ++ 'log4js', ++ 'sanitize-html', ++ 'compare-versions', ++ '@creditkarma/thrift-server-core', ++] as const; +diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts +index ece222646a..c39825047c 100644 +--- a/dotcom-rendering/vite/dev-server.ts ++++ b/dotcom-rendering/vite/dev-server.ts +@@ -15,6 +15,7 @@ import { resolve } from 'node:path'; + import express from 'express'; + import { createServer as createViteServer, mergeConfig } from 'vite'; + import svgr from 'vite-plugin-svgr'; ++import { cjsPackages } from './cjs-packages'; + import { sharedConfig } from './vite.config.shared'; + import { ssrCjsPlugin } from './ssr-cjs-plugin'; + +@@ -25,11 +26,6 @@ async function start() { + const app = express(); + const httpServer = createHttpServer(app); + +- // CJS packages in noExternal that need ESM wrapping for Vite 6's +- // SSR module runner. Only packages using require()/module.exports +- // that are matched by ssr.noExternal need to be listed here. +- const cjsPackages = ['@guardian/bridget']; +- + // Create Vite server in middleware mode. + // Handles client-side module transforms, HMR, and SSR module loading. + const devConfig = mergeConfig(sharedConfig, { +@@ -38,7 +34,7 @@ async function start() { + include: '**/*.svg', + svgrOptions: { svgo: false }, + }), +- ssrCjsPlugin(cjsPackages), ++ ssrCjsPlugin([...cjsPackages]), + ], + server: { + middlewareMode: true, +@@ -60,8 +56,10 @@ async function start() { + }); + // SSR config must be set after mergeConfig to avoid being overwritten. + devConfig.ssr = { +- // Bundle ESM-only packages that can't be require()'d by Node. +- noExternal: [/@guardian\//, 'screenfull', 'valibot'], ++ // Bundle ESM-only packages that can't be require()'d by Node, plus ++ // CJS packages that we want to expose via ESM named imports ++ // (see cjs-packages.ts). ++ noExternal: [/@guardian\//, 'screenfull', 'valibot', ...cjsPackages], + }; + const vite = await createViteServer(devConfig); + +diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts +index aecbb82dac..13196fb82f 100644 +--- a/dotcom-rendering/vite/vite.config.server.ts ++++ b/dotcom-rendering/vite/vite.config.server.ts +@@ -1,6 +1,8 @@ + import svgr from 'vite-plugin-svgr'; + import type { UserConfig } from 'vite'; + import { mergeConfig } from 'vite'; ++import { cjsPackages } from './cjs-packages'; ++import { ssrCjsPlugin } from './ssr-cjs-plugin'; + import { sharedConfig } from './vite.config.shared'; + + const DEV = process.env.NODE_ENV === 'development'; +@@ -21,6 +23,9 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { + include: '**/*.svg', + svgrOptions: { svgo: false }, + }), ++ // Wrap CJS deps with ESM shims so `import { X } from 'pkg'` works ++ // under Vite's SSR pipeline. Only fires for ids in `ssr.noExternal`. ++ ssrCjsPlugin([...cjsPackages]), + ], + build: { + outDir: 'dist', +@@ -56,6 +61,10 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { + 'screenfull', + // Valibot is ESM and needs bundling + 'valibot', ++ // CJS deps wrapped by ssrCjsPlugin so source code can use ++ // `import { X } from 'pkg'` instead of default-import + ++ // destructure (see vite/cjs-packages.ts). ++ ...cjsPackages, + ], + // Explicitly external in dev (not needed in prod where they're deployed) + external: DEV ? ['@aws-sdk'] : [], +-- +2.50.1 (Apple Git-155) + diff --git a/dotcom-rendering/makefile b/dotcom-rendering/makefile index c1cbe880f06..91e17901624 100644 --- a/dotcom-rendering/makefile +++ b/dotcom-rendering/makefile @@ -1,4 +1,4 @@ -.PHONY: install dev build clean-dist clear +.PHONY: install dev build clean-dist clear vite-build vite-dev # these means you can run the binaries in node_modules # like with npm scripts @@ -29,6 +29,16 @@ riffraff-bundle: clean-dist build cdk-synth $(call log, "creating riffraff bundle") @node ./scripts/deploy/build-riffraff-bundle.mjs +# vite ######################################### + +vite-build: clean-dist install + $(call log, "building production bundles with Vite") + @NODE_ENV=production node --import tsx vite/build.ts + +vite-dev: clear clean-dist install + $(call log, "starting Vite DEV server") + @NODE_ENV=development node --import tsx vite/dev-server.ts + # prod ######################################### build: clean-dist install diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json index 307b1a0227b..195bbf0aa55 100644 --- a/dotcom-rendering/package.json +++ b/dotcom-rendering/package.json @@ -176,5 +176,11 @@ "webpack-node-externals": "3.0.0", "webpack-sources": "3.5.1", "zod": "4.1.12" + }, + "devDependencies": { + "@rollup/plugin-inject": "5.0.5", + "rollup-plugin-visualizer": "7.0.1", + "vite": "^6.2.6", + "vite-plugin-svgr": "5.2.0" } } diff --git a/dotcom-rendering/src/client/debug/debug.ts b/dotcom-rendering/src/client/debug/debug.ts index 909b39556eb..31d7490b563 100644 --- a/dotcom-rendering/src/client/debug/debug.ts +++ b/dotcom-rendering/src/client/debug/debug.ts @@ -1,5 +1,5 @@ // @ts-expect-error: Cannot find module -import debugCss from './debug.css'; +import debugCss from './debug.css?raw'; const style = document.createElement('style'); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- We know this will be a string diff --git a/dotcom-rendering/vite/browser-targets.ts b/dotcom-rendering/vite/browser-targets.ts new file mode 100644 index 00000000000..a48e32e3abd --- /dev/null +++ b/dotcom-rendering/vite/browser-targets.ts @@ -0,0 +1,37 @@ +/** + * ES module equivalent of webpack/browser-targets.js + * + * Derives browser targets from @guardian/browserslist-config and upgrades + * iOS < 11 to iOS 11 (required for dynamic import support). + */ +import { createRequire } from 'node:module'; + +const require = createRequire(import.meta.url); + +const getTargetsFromBrowsersList: (opts: { + browsers: string[]; +}) => Record = + require('@babel/helper-compilation-targets').default; +const browserslist: (query: string) => string[] = require('browserslist'); + +const browsers = browserslist('extends @guardian/browserslist-config'); +const rawTargets: Record = getTargetsFromBrowsersList({ + browsers, +}); + +const upgradeTargets = ( + targets: Record, +): Record => { + return Object.fromEntries( + Object.entries(targets).map(([browser, version]) => { + const major = Number(version.split('.')[0]) || 0; + if (browser === 'ios' && major < 11) { + return ['ios', '11']; + } + return [browser, version]; + }), + ); +}; + +export const getBrowserTargets = (): Record => + upgradeTargets(rawTargets); diff --git a/dotcom-rendering/vite/build.ts b/dotcom-rendering/vite/build.ts new file mode 100644 index 00000000000..e64baa7e3ef --- /dev/null +++ b/dotcom-rendering/vite/build.ts @@ -0,0 +1,72 @@ +/** + * Build orchestration script for Vite. + * Replaces webpack.config.js's multi-compiler array. + * + * Runs the server build first, then all client builds in parallel. + * + * Usage: + * NODE_ENV=production node --import tsx vite/build.ts + */ +import { rmSync } from 'node:fs'; +import { resolve } from 'node:path'; +import { build } from 'vite'; +import type { Build } from '../src/lib/assets'; +import { createClientConfig } from './vite.config.client'; +import { serverConfig } from './vite.config.server'; + +const PROD = process.env.NODE_ENV === 'production'; +const BUILD_VARIANT = process.env.BUILD_VARIANT === 'true'; + +function getClientBuilds(): Build[] { + // Controls whether the variant bundle is built. + // In production, also checks the static BUILD_VARIANT flag from bundles.js. + // eslint-disable-next-line @typescript-eslint/no-var-requires -- CJS module + const { BUILD_VARIANT: BUILD_VARIANT_SWITCH } = + require('../webpack/bundles') as { BUILD_VARIANT: boolean }; + + return [ + 'client.web', + ...((PROD && BUILD_VARIANT_SWITCH) || BUILD_VARIANT + ? (['client.web.variant'] as const) + : []), + 'client.apps', + 'client.editionsCrossword', + ]; +} + +async function runBuild() { + const clientBuilds = getClientBuilds(); + const startTime = Date.now(); + console.log( + `\nπŸ”¨ Building with Vite (${PROD ? 'production' : 'development'})...\n`, + ); + + // Clean dist directory before building (since emptyOutDir is false on all configs) + rmSync(resolve(__dirname, '..', 'dist'), { recursive: true, force: true }); + + // 1. Build server first (client builds may depend on server output in some setups) + console.log('πŸ“¦ Building server...'); + await build(serverConfig); + console.log('βœ… Server build complete\n'); + + // 2. Build all client variants in parallel + console.log( + `πŸ“¦ Building ${clientBuilds.length} client bundles in parallel...`, + ); + await Promise.all( + clientBuilds.map(async (buildName) => { + console.log(` β†’ ${buildName}`); + const config = createClientConfig(buildName); + await build(config); + console.log(` βœ… ${buildName} complete`); + }), + ); + + const elapsed = ((Date.now() - startTime) / 1000).toFixed(1); + console.log(`\nπŸŽ‰ All builds complete in ${elapsed}s\n`); +} + +runBuild().catch((err) => { + console.error('Build failed:', err); + process.exit(1); +}); diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.ts new file mode 100644 index 00000000000..06bfc728f67 --- /dev/null +++ b/dotcom-rendering/vite/vite.config.client.ts @@ -0,0 +1,187 @@ +import inject from '@rollup/plugin-inject'; +import svgr from 'vite-plugin-svgr'; +import type { UserConfig } from 'vite'; +import { mergeConfig } from 'vite'; +import type { Build } from '../src/lib/assets'; +import { getBrowserTargets } from './browser-targets'; +import { sharedConfig } from './vite.config.shared'; + +const DEV = process.env.NODE_ENV === 'development'; + +/** + * Maps each build variant to its entry point. + */ +const getEntryIndex = (build: Build): string => { + switch (build) { + case 'client.editionsCrossword': + return './src/client/main.editionsCrossword.tsx'; + case 'client.apps': + return './src/client/main.apps.ts'; + default: + return './src/client/main.web.ts'; + } +}; + +/** + * Returns esbuild-compatible browser targets for the given build. + * + * For web builds, we derive targets from @guardian/browserslist-config. + * For apps/crossword, we use fixed mobile targets. + */ +const getBuildTarget = (build: Build): string[] => { + switch (build) { + case 'client.apps': + case 'client.editionsCrossword': + return ['chrome70', 'safari12']; + default: { + const targets = getBrowserTargets(); + // esbuild only supports: chrome, edge, firefox, safari, ios, node, es* + // Filter out unsupported browsers like samsung, opera, etc. + const supportedBrowsers = new Set([ + 'chrome', + 'edge', + 'firefox', + 'safari', + 'ios', + 'node', + ]); + return Object.entries(targets) + .filter(([browser]) => supportedBrowsers.has(browser)) + .map(([browser, version]) => { + const major = String(version).split('.')[0]; + return `${browser}${major}`; + }); + } + } +}; + +/** + * Returns external modules for the given build. + * + * Apps: ophan is provided natively. + * Crossword: ophan and commercial are provided externally. + */ +const getExternals = (build: Build): string[] => { + if (build === 'client.apps') { + return ['@guardian/ophan-tracker-js']; + } + if (build === 'client.editionsCrossword') { + return ['@guardian/ophan-tracker-js', '@guardian/commercial']; + } + return []; +}; + +/** + * Returns rollup output.globals for externalized modules. + */ +const getGlobals = (build: Build): Record => { + const globals: Record = {}; + if (build === 'client.apps' || build === 'client.editionsCrossword') { + globals['@guardian/ophan-tracker-js'] = 'guardian.ophan'; + } + if (build === 'client.editionsCrossword') { + globals['@guardian/commercial'] = 'guardian.commercial'; + } + return globals; +}; + +/** + * Generates manual chunk assignments for web builds. + * Mirrors the webpack splitChunks.cacheGroups.frameworks config. + */ +const getManualChunks = ( + build: Build, +): ((id: string) => string | undefined) | undefined => { + // Apps and crossword builds use inlineDynamicImports (single chunk) + if (build === 'client.apps' || build === 'client.editionsCrossword') { + return undefined; + } + + return (id: string) => { + if ( + /node_modules\/(preact|react-is|hoist-non-react-statistics|swr|@emotion|stylis)\//.test( + id, + ) + ) { + return 'frameworks'; + } + return undefined; + }; +}; + +/** + * Whether this build should inline all dynamic imports into a single chunk. + * Apps and crossword builds produce a single file (no code splitting). + */ +const shouldInlineDynamicImports = (build: Build): boolean => + build === 'client.apps' || build === 'client.editionsCrossword'; + +/** + * Creates a Vite client config for the given build variant. + * + * This replaces webpack.config.client.js β€” called once per build variant + * (client.web, client.web.variant, client.apps, client.editionsCrossword). + */ +export const createClientConfig = (build: Build): UserConfig => { + const isSingleChunk = shouldInlineDynamicImports(build); + + const clientConfig: UserConfig = { + plugins: [ + svgr({ + svgrOptions: { svgo: false }, + }), + // Buffer polyfill for apps/crossword builds + // Replaces webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }) + ...(isSingleChunk + ? [ + inject({ + Buffer: ['buffer', 'Buffer'], + }), + ] + : []), + ], + resolve: { + alias: { + // Client builds use Preact for smaller bundle size. + // Server builds use real React (not aliased). + react: 'preact/compat', + 'react-dom/test-utils': 'preact/test-utils', + 'react-dom': 'preact/compat', + }, + }, + build: { + outDir: 'dist', + emptyOutDir: false, + target: getBuildTarget(build), + manifest: `manifest.${build}.json`, + rollupOptions: { + input: isSingleChunk + ? // Single-chunk builds can only have one entry + // (inlineDynamicImports is incompatible with multiple inputs) + { index: getEntryIndex(build) } + : { + index: getEntryIndex(build), + debug: './src/client/debug/debug.ts', + }, + external: getExternals(build), + output: { + // Naming: [name].[build].[hash].js β€” matches webpack output pattern + entryFileNames: (chunk) => { + if (chunk.name === 'debug') return 'debug.js'; + return DEV + ? `[name].${build}.js` + : `[name].${build}.[hash].js`; + }, + chunkFileNames: DEV + ? `[name].${build}.js` + : `[name].${build}.[hash].js`, + globals: getGlobals(build), + manualChunks: getManualChunks(build), + ...(isSingleChunk ? { inlineDynamicImports: true } : {}), + }, + }, + }, + }; + + return mergeConfig(sharedConfig, clientConfig); +}; diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts new file mode 100644 index 00000000000..ae3316a258b --- /dev/null +++ b/dotcom-rendering/vite/vite.config.server.ts @@ -0,0 +1,59 @@ +import svgr from 'vite-plugin-svgr'; +import type { UserConfig } from 'vite'; +import { mergeConfig } from 'vite'; +import { sharedConfig } from './vite.config.shared'; + +const DEV = process.env.NODE_ENV === 'development'; + +/** + * Vite SSR build configuration for the Express server bundle. + * Replaces webpack.config.server.js. + * + * Key differences from client config: + * - No Preact aliasing (server uses real React for renderToString) + * - Outputs CommonJS for Node.js + * - Most node_modules are external (not bundled) + * - No minification in dev + */ +export const serverConfig: UserConfig = mergeConfig(sharedConfig, { + plugins: [ + svgr({ + svgrOptions: { svgo: false }, + }), + ], + build: { + outDir: 'dist', + emptyOutDir: false, + ssr: true, + target: `node${process.versions.node}`, + minify: !DEV, + sourcemap: true, + rollupOptions: { + input: { + server: './src/server/server.ts', + }, + output: { + format: 'cjs', + entryFileNames: '[name].js', + chunkFileNames: '[name].js', + }, + // webpack/bundles.js is CJS with module.exports β€” Rollup can't + // resolve named exports from it. Externalize so it's required at runtime. + external: [/webpack\/bundles/], + }, + }, + ssr: { + // Bundle these packages (they are ESM-only or need to be included). + // Mirrors webpack-node-externals allowlist. + noExternal: [ + // All @guardian scoped packages should be bundled + /@guardian\//, + // ESM-only package that throws when not bundled + 'screenfull', + // Valibot is ESM and needs bundling + 'valibot', + ], + // Explicitly external in dev (not needed in prod where they're deployed) + external: DEV ? [/@aws-sdk\/.*/] : [], + }, +} satisfies UserConfig); diff --git a/dotcom-rendering/vite/vite.config.shared.ts b/dotcom-rendering/vite/vite.config.shared.ts new file mode 100644 index 00000000000..2a15abccd33 --- /dev/null +++ b/dotcom-rendering/vite/vite.config.shared.ts @@ -0,0 +1,36 @@ +import { resolve } from 'node:path'; +import type { UserConfig } from 'vite'; + +const DEV = process.env.NODE_ENV === 'development'; + +/** + * Shared Vite configuration applied to both server and client builds. + * Replaces the `commonConfigs()` function from webpack.config.js. + */ +export const sharedConfig: UserConfig = { + define: { + 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), + 'process.env.HOSTNAME': JSON.stringify(process.env.HOSTNAME), + }, + build: { + sourcemap: DEV ? 'inline' : true, + // Rolldown is used automatically when available in Vite 7+ + // For Vite 6 with experimental Rolldown, uncomment: + // rollupOptions: { experimentalRolldown: true }, + }, + resolve: { + extensions: ['.ts', '.tsx', '.js', '.jsx'], + alias: { + // webpack/bundles.js is CJS (module.exports) which Rollup can't + // resolve named exports from. Redirect to an ESM wrapper. + '../../webpack/bundles': resolve( + __dirname, + '../webpack/bundles.mjs', + ), + '../../../webpack/bundles': resolve( + __dirname, + '../webpack/bundles.mjs', + ), + }, + }, +}; diff --git a/dotcom-rendering/webpack/bundles.mjs b/dotcom-rendering/webpack/bundles.mjs new file mode 100644 index 00000000000..3a7ecc81d99 --- /dev/null +++ b/dotcom-rendering/webpack/bundles.mjs @@ -0,0 +1,13 @@ +/** + * ESM re-export of bundles.js values for Vite/Rollup compatibility. + * + * These values must be kept in sync with bundles.js. + * The original bundles.js uses module.exports (CJS) which Rollup + * cannot resolve named exports from. + */ + +/** @type {boolean} */ +export const BUILD_VARIANT = false; + +/** @type {(variant: 'Variant' | 'Control') => string} */ +export const dcrJavascriptBundle = (variant) => `dcrJavascriptBundle${variant}`; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cc8d1c4a824..16a06c18283 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -240,7 +240,7 @@ importers: version: 6.0.3 vite: specifier: 6.4.3 - version: 6.4.3(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) + version: 6.4.3(@types/node@24.12.4)(terser@5.49.0) ab-testing/notification-lambda: dependencies: @@ -379,7 +379,7 @@ importers: version: 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/addon-docs': specifier: 10.3.3 - version: 10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4) + version: 10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4) '@storybook/addon-webpack5-compiler-swc': specifier: 4.0.3 version: 4.0.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.108.4) @@ -758,6 +758,19 @@ importers: zod: specifier: 4.1.12 version: 4.1.12 + devDependencies: + '@rollup/plugin-inject': + specifier: 5.0.5 + version: 5.0.5(rollup@4.62.0) + rollup-plugin-visualizer: + specifier: 7.0.1 + version: 7.0.1(rollup@4.62.0) + vite: + specifier: ^6.2.6 + version: 6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) + vite-plugin-svgr: + specifier: 5.2.0 + version: 5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2)) packages: @@ -3137,6 +3150,15 @@ packages: rollup: optional: true + '@rollup/plugin-inject@5.0.5': + resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-json@6.1.0': resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} @@ -4996,10 +5018,6 @@ packages: brace-expansion@2.1.1: resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} - brace-expansion@5.0.3: - resolution: {integrity: sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==} - engines: {node: 18 || 20 || >=22} - brace-expansion@5.0.6: resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} engines: {node: 18 || 20 || >=22} @@ -5203,6 +5221,10 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -6436,10 +6458,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hasown@2.0.3: - resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} - engines: {node: '>= 0.4'} - hasown@2.0.4: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} @@ -8323,6 +8341,19 @@ packages: esbuild: '>=0.18.0' rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + rollup-plugin-visualizer@7.0.1: + resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} + engines: {node: '>=22'} + hasBin: true + peerDependencies: + rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + rollup@4.59.0: resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8433,11 +8464,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.8.1: - resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} - engines: {node: '>=10'} - hasBin: true - semver@7.8.5: resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} @@ -9261,6 +9287,51 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vite-plugin-svgr@5.2.0: + resolution: {integrity: sha512-qj2eAKF8C6PZWemVTvQA0xgQIcP1hHU6Buh7fl6BhvayWwnuxE+z417miKxeDvRWbDrupQ1oK99hfxElopJ3sQ==} + peerDependencies: + vite: '>=3.0.0' + + vite@6.4.0: + resolution: {integrity: sha512-oLnWs9Hak/LOlKjeSpOwD6JMks8BeICEdYMJBf6P4Lac/pO9tKiv/XhXnAM7nNfSkZahjlCZu9sS50zL8fSnsw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vite@6.4.3: resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -9586,10 +9657,18 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yauzl@3.4.0: resolution: {integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==} engines: {node: '>=12'} @@ -12635,6 +12714,14 @@ snapshots: optionalDependencies: rollup: 4.59.0 + '@rollup/plugin-inject@5.0.5(rollup@4.62.0)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.62.0) + estree-walker: 2.0.2 + magic-string: 0.30.21 + optionalDependencies: + rollup: 4.62.0 + '@rollup/plugin-json@6.1.0(rollup@4.59.0)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.59.0) @@ -12659,6 +12746,14 @@ snapshots: optionalDependencies: rollup: 4.59.0 + '@rollup/pluginutils@5.3.0(rollup@4.62.0)': + dependencies: + '@types/estree': 1.0.9 + estree-walker: 2.0.2 + picomatch: 4.0.4 + optionalDependencies: + rollup: 4.62.0 + '@rollup/rollup-android-arm-eabi@4.59.0': optional: true @@ -13249,10 +13344,10 @@ snapshots: axe-core: 4.11.1 storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4)': + '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4)': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.1)(react@18.3.1) - '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4) + '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4) '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -13316,14 +13411,14 @@ snapshots: storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 - '@storybook/csf-plugin@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4)': + '@storybook/csf-plugin@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4)': dependencies: storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: esbuild: 0.28.1 rollup: 4.62.0 - vite: 6.4.3(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) + vite: 6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) '@storybook/global@5.0.0': {} @@ -13468,7 +13563,7 @@ snapshots: set-cookie-parser: 3.1.0 sirv: 3.0.2 svelte: 5.56.3(@typescript-eslint/types@8.59.2) - vite: 6.4.3(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) + vite: 6.4.3(@types/node@24.12.4)(terser@5.49.0) optionalDependencies: typescript: 6.0.3 @@ -13480,7 +13575,7 @@ snapshots: magic-string: 0.30.21 obug: 2.1.2 svelte: 5.56.3(@typescript-eslint/types@8.59.2) - vite: 6.4.3(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) + vite: 6.4.3(@types/node@24.12.4)(terser@5.49.0) vitefu: 1.1.3(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)) '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.0)': @@ -14385,9 +14480,9 @@ snapshots: dependencies: acorn: 8.17.0 - acorn-jsx@5.3.2(acorn@8.16.0): + acorn-jsx@5.3.2(acorn@8.17.0): dependencies: - acorn: 8.16.0 + acorn: 8.17.0 acorn-walk@8.3.5: dependencies: @@ -14742,10 +14837,6 @@ snapshots: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.3: - dependencies: - balanced-match: 4.0.4 - brace-expansion@5.0.6: dependencies: balanced-match: 4.0.4 @@ -14935,6 +15026,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 + clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 @@ -15734,8 +15831,8 @@ snapshots: eslint: 9.39.1 eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 - minimatch: 10.2.4 - semver: 7.8.1 + minimatch: 10.2.5 + semver: 7.8.5 stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: @@ -15911,8 +16008,8 @@ snapshots: espree@10.4.0: dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} @@ -16268,7 +16365,7 @@ snapshots: call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 - hasown: 2.0.3 + hasown: 2.0.4 is-callable: 1.2.7 functions-have-names@1.2.3: {} @@ -16443,10 +16540,6 @@ snapshots: dependencies: function-bind: 1.1.2 - hasown@2.0.3: - dependencies: - function-bind: 1.1.2 - hasown@2.0.4: dependencies: function-bind: 1.1.2 @@ -16791,7 +16884,7 @@ snapshots: is-core-module@2.16.2: dependencies: - hasown: 2.0.3 + hasown: 2.0.4 is-data-view@1.0.2: dependencies: @@ -17838,7 +17931,7 @@ snapshots: minimatch@10.2.4: dependencies: - brace-expansion: 5.0.3 + brace-expansion: 5.0.6 minimatch@10.2.5: dependencies: @@ -17911,7 +18004,7 @@ snapshots: no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.8.1 node-abort-controller@3.1.1: {} @@ -18682,6 +18775,15 @@ snapshots: transitivePeerDependencies: - supports-color + rollup-plugin-visualizer@7.0.1(rollup@4.62.0): + dependencies: + open: 11.0.0 + picomatch: 4.0.4 + source-map: 0.7.4 + yargs: 18.0.0 + optionalDependencies: + rollup: 4.62.0 + rollup@4.59.0: dependencies: '@types/estree': 1.0.8 @@ -18851,8 +18953,6 @@ snapshots: semver@7.7.4: {} - semver@7.8.1: {} - semver@7.8.5: {} send@1.2.1: @@ -19872,7 +19972,18 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2): + vite-plugin-svgr@5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2)): + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.62.0) + '@svgr/core': 8.1.0(typescript@6.0.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@6.0.3)) + vite: 6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) + transitivePeerDependencies: + - rollup + - supports-color + - typescript + + vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -19886,9 +19997,22 @@ snapshots: terser: 5.49.0 tsx: 4.6.2 + vite@6.4.3(@types/node@24.12.4)(terser@5.49.0): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 + rollup: 4.62.0 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.12.4 + fsevents: 2.3.3 + terser: 5.49.0 + vitefu@1.1.3(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)): optionalDependencies: - vite: 6.4.3(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) + vite: 6.4.3(@types/node@24.12.4)(terser@5.49.0) w3c-xmlserializer@4.0.0: dependencies: @@ -20231,6 +20355,8 @@ snapshots: yargs-parser@21.1.1: {} + yargs-parser@22.0.0: {} + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -20241,6 +20367,15 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yargs@18.0.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 7.2.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + yauzl@3.4.0: dependencies: pend: 1.2.0 From 0d23ad0f00e27511c1bb86b6f1f8877445e15d11 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Mon, 6 Apr 2026 14:28:56 +0100 Subject: [PATCH 02/37] Migrate islands to import.meta.glob, remove webpack-specific modules Replace the webpack dynamic import pattern in doHydration.tsx with a static island registry built via Vite's import.meta.glob. Each island component is still lazily loaded as its own chunk. - Add islandRegistry.ts using import.meta.glob for all *.island.tsx files - Update doHydration.tsx to look up islands from the registry - Remove webpackPublicPath.ts, decidePublicPath.ts, dynamicImport.ts - Strip all webpackMode/webpackChunkName comments from entry points - Remove guardianPolyfilledImport from window.guardian types - Swap tsconfig types from webpack-env to vite/client Co-Authored-By: Claude Opus 4.6 --- .../src/client/decidePublicPath.test.ts | 53 ------------ .../src/client/decidePublicPath.ts | 13 --- dotcom-rendering/src/client/dynamicImport.ts | 40 --------- .../src/client/islands/doHydration.tsx | 22 ++--- .../src/client/islands/islandRegistry.ts | 31 +++++++ dotcom-rendering/src/client/main.apps.ts | 49 ++--------- dotcom-rendering/src/client/main.web.ts | 84 +++++-------------- .../src/client/sentryLoader/loadSentry.ts | 6 +- .../client/sentryLoader/sentryLoader.test.ts | 1 - .../src/client/webpackPublicPath.ts | 7 -- dotcom-rendering/tsconfig.json | 2 +- dotcom-rendering/window.guardian.ts | 11 --- 12 files changed, 76 insertions(+), 243 deletions(-) delete mode 100644 dotcom-rendering/src/client/decidePublicPath.test.ts delete mode 100644 dotcom-rendering/src/client/decidePublicPath.ts delete mode 100644 dotcom-rendering/src/client/dynamicImport.ts create mode 100644 dotcom-rendering/src/client/islands/islandRegistry.ts delete mode 100644 dotcom-rendering/src/client/webpackPublicPath.ts diff --git a/dotcom-rendering/src/client/decidePublicPath.test.ts b/dotcom-rendering/src/client/decidePublicPath.test.ts deleted file mode 100644 index 85ebbf20e3c..00000000000 --- a/dotcom-rendering/src/client/decidePublicPath.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { decidePublicPath } from './decidePublicPath'; - -const mockHostname = (hostname: string | undefined) => { - Object.defineProperty(window, 'location', { - value: { - hostname, - }, - writable: true, - }); -}; - -const mockFrontendAssetsFullURL = (frontendAssetsFullURL: string) => { - Object.defineProperty(window, 'guardian', { - value: { - config: { - frontendAssetsFullURL, - }, - }, - writable: true, - }); -}; - -describe('decidePublicPath', () => { - beforeEach(() => { - jest.resetModules(); - - mockHostname(undefined); - - mockFrontendAssetsFullURL('https://assets.guim.co.uk/'); - - process.env = { NODE_ENV: undefined, HOSTNAME: undefined }; - }); - - it('with development flag', () => { - process.env.NODE_ENV = 'development'; - expect(decidePublicPath()).toEqual('/assets/'); - }); - - it('with production flag', () => { - process.env.NODE_ENV = 'production'; - expect(decidePublicPath()).toEqual('https://assets.guim.co.uk/assets/'); - }); - - it('with production flag and localhost', () => { - process.env.NODE_ENV = 'production'; - mockHostname('localhost'); - expect(decidePublicPath()).toEqual('/assets/'); - }); - - it('with no flag', () => { - expect(decidePublicPath()).toEqual('https://assets.guim.co.uk/assets/'); - }); -}); diff --git a/dotcom-rendering/src/client/decidePublicPath.ts b/dotcom-rendering/src/client/decidePublicPath.ts deleted file mode 100644 index 41bb44db145..00000000000 --- a/dotcom-rendering/src/client/decidePublicPath.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Determine the path that webpack should use as base for dynamic imports - * - * @returns The webpack public path to use - */ -export const decidePublicPath = (): string => { - const isDev = process.env.NODE_ENV === 'development'; - const isLocalHost = window.location.hostname === 'localhost'; - // Use relative path if running locally or in CI - return isDev || isLocalHost - ? '/assets/' - : `${window.guardian.config.frontendAssetsFullURL}assets/`; -}; diff --git a/dotcom-rendering/src/client/dynamicImport.ts b/dotcom-rendering/src/client/dynamicImport.ts deleted file mode 100644 index b5e25850c4b..00000000000 --- a/dotcom-rendering/src/client/dynamicImport.ts +++ /dev/null @@ -1,40 +0,0 @@ -import dynamicImportPolyfill from 'dynamic-import-polyfill'; - -// Provides an import function to use for dynamic imports. **Only works on -// browsers that cut the mustard (support modules).** -const initialiseDynamicImport = () => { - try { - // eslint-disable-next-line @typescript-eslint/no-implied-eval - window.guardianPolyfilledImport = new Function( - 'url', - `return import(url)`, - ) as (url: string) => Promise; - } catch (e) { - dynamicImportPolyfill.initialize({ - importFunctionName: 'guardianPolyfilledImport', // must be a direct property of the window - }); - } -}; - -// Provides an import function to use for dynamic imports. **Designed for -// legacy browsers. Dynamic loads a ~4k bundle.** -const initialiseDynamicImportLegacy = async () => { - const shimport = await import( - /* webpackChunkName: "shimport" */ '@guardian/shimport' - ); - shimport.initialise(); // note this adds a __shimport__ global - window.guardianPolyfilledImport = shimport.load; -}; - -export const dynamicImport = (): Promise => { - window.guardianPolyfilledImport = (url: string) => - Promise.reject( - new Error(`import not polyfilled; attempted import(${url})`), - ); - - if (window.guardian.mustardCut) { - return Promise.resolve(initialiseDynamicImport()); - } - - return initialiseDynamicImportLegacy(); -}; diff --git a/dotcom-rendering/src/client/islands/doHydration.tsx b/dotcom-rendering/src/client/islands/doHydration.tsx index 5fb17da2515..522999257e0 100644 --- a/dotcom-rendering/src/client/islands/doHydration.tsx +++ b/dotcom-rendering/src/client/islands/doHydration.tsx @@ -7,6 +7,7 @@ import { hydrateRoot } from 'react-dom/client'; import { ConfigProvider } from '../../components/ConfigContext'; import { IslandProvider } from '../../components/IslandContext'; import type { Config } from '../../types/configContext'; +import { getIslandModule } from './islandRegistry'; declare global { interface DOMStringMap { @@ -48,11 +49,16 @@ export const doHydration = async ( const { endPerformanceMeasure: endImportPerformanceMeasure } = startPerformanceMeasure('dotcom', name, 'import'); - await import( - /* webpackInclude: /\.island\.tsx$/ */ - /* webpackChunkName: "[request]" */ - `../../components/${name}.island` - ) + + const loadModule = getIslandModule(name); + if (!loadModule) { + console.error( + `🚨 Island module not found: ${name}. Components must live in the root of /components and follow the [MyComponent].island.tsx naming convention 🚨`, + ); + return; + } + + await loadModule() .then((module) => { /** The duration of importing the module for this island */ const importDuration = endImportPerformanceMeasure(); @@ -93,11 +99,7 @@ export const doHydration = async ( }) .catch((error) => { element.dataset.islandStatus = undefined; // remove any island status - if (name && error.message.includes(name)) { - console.error( - `🚨 Error importing ${name}. Components must live in the root of /components and follow the [MyComponent].island.tsx naming convention 🚨`, - ); - } + console.error(`🚨 Error hydrating island: ${name} 🚨`); throw error; }); }; diff --git a/dotcom-rendering/src/client/islands/islandRegistry.ts b/dotcom-rendering/src/client/islands/islandRegistry.ts new file mode 100644 index 00000000000..6e8524d5cb2 --- /dev/null +++ b/dotcom-rendering/src/client/islands/islandRegistry.ts @@ -0,0 +1,31 @@ +/** + * Static registry of all island components, built at compile time + * via Vite's import.meta.glob. + * + * Each matched file becomes a lazy chunk (eager: false), exactly + * matching the previous webpack behaviour where each island was + * a separate dynamically-loaded chunk. + * + * Replaces the webpack magic comments in doHydration.tsx: + * import( + * /* webpackInclude: /\.island\.tsx$/ *​/ + * /* webpackChunkName: "[request]" *​/ + * `../../components/${name}.island` + * ) + */ +const islandModules = import.meta.glob>( + '../../components/*.island.tsx', +); + +/** + * Look up the lazy loader for an island component by name. + * + * @param name The component name (e.g. "ShareButton" for ShareButton.island.tsx) + * @returns A function that returns a Promise of the module, or undefined if not found + */ +export const getIslandModule = ( + name: string, +): (() => Promise>) | undefined => { + const key = `../../components/${name}.island.tsx`; + return islandModules[key]; +}; diff --git a/dotcom-rendering/src/client/main.apps.ts b/dotcom-rendering/src/client/main.apps.ts index 2e4556346a4..c084538f8da 100644 --- a/dotcom-rendering/src/client/main.apps.ts +++ b/dotcom-rendering/src/client/main.apps.ts @@ -1,4 +1,3 @@ -import './webpackPublicPath'; import { startup } from './startup'; /************************************************************* @@ -12,19 +11,8 @@ import { startup } from './startup'; void startup( 'sentryLoader', () => - import(/* webpackMode: "eager" */ './sentryLoader/sentryLoader').then( - ({ sentryLoader }) => sentryLoader(), - ), - { - priority: 'critical', - }, -); - -void startup( - 'dynamicImport', - () => - import(/* webpackMode: "eager" */ './dynamicImport').then( - ({ dynamicImport }) => dynamicImport(), + import('./sentryLoader/sentryLoader').then(({ sentryLoader }) => + sentryLoader(), ), { priority: 'critical', @@ -33,10 +21,7 @@ void startup( void startup( 'islands', - () => - import(/* webpackMode: "eager" */ './islands/islands').then( - ({ islands }) => islands(), - ), + () => import('./islands/islands').then(({ islands }) => islands()), { priority: 'critical', }, @@ -48,47 +33,31 @@ void startup( * because they are lower priority and do not want to block * the modules above on loading these. * - * We are not assigning chunk name to allow Webpack - * to optimise chunking based on its algorithm. - * *************************************************************/ void startup( 'atomIframe', - () => - import( - /* webpackMode: 'lazy' */ - './atomIframe' - ).then(({ atomIframe }) => atomIframe()), + () => import('./atomIframe').then(({ atomIframe }) => atomIframe()), { priority: 'feature' }, ); void startup( 'embedIframe', - () => - import( - /* webpackMode: 'lazy' */ - './embedIframe' - ).then(({ embedIframe }) => embedIframe()), + () => import('./embedIframe').then(({ embedIframe }) => embedIframe()), { priority: 'feature' }, ); void startup( 'newsletterEmbedIframe', () => - import( - /* webpackMode: 'lazy' */ - './newsletterEmbedIframe' - ).then(({ newsletterEmbedIframe }) => newsletterEmbedIframe()), + import('./newsletterEmbedIframe').then(({ newsletterEmbedIframe }) => + newsletterEmbedIframe(), + ), { priority: 'feature' }, ); void startup( 'initDiscussion', - () => - import( - /* webpackMode: 'lazy' */ - './discussion' - ).then(({ discussion }) => discussion()), + () => import('./discussion').then(({ discussion }) => discussion()), { priority: 'feature' }, ); diff --git a/dotcom-rendering/src/client/main.web.ts b/dotcom-rendering/src/client/main.web.ts index 95a572c1246..bb45a394b95 100644 --- a/dotcom-rendering/src/client/main.web.ts +++ b/dotcom-rendering/src/client/main.web.ts @@ -1,4 +1,3 @@ -import './webpackPublicPath'; import { adaptSite, shouldAdapt } from './adaptiveSite'; import { startup } from './startup'; import { maybeSIndicatorCapiKey } from './userFeatures/cookies/sIndicatorCapiKey'; @@ -18,10 +17,7 @@ void (async () => { void startup( 'bootCmp', - () => - import(/* webpackMode: "eager" */ './bootCmp').then(({ bootCmp }) => - bootCmp('Web'), - ), + () => import('./bootCmp').then(({ bootCmp }) => bootCmp('Web')), { priority: 'critical', }, @@ -30,10 +26,8 @@ void (async () => { void startup( 'recordInitialPageEvents', () => - import( - /* webpackMode: "eager" */ './ophan/recordInitialPageEvents' - ).then(({ recordInitialPageEvents }) => - recordInitialPageEvents('Web'), + import('./ophan/recordInitialPageEvents').then( + ({ recordInitialPageEvents }) => recordInitialPageEvents('Web'), ), { priority: 'critical', @@ -43,9 +37,9 @@ void (async () => { void startup( 'sentryLoader', () => - import( - /* webpackMode: "eager" */ './sentryLoader/sentryLoader' - ).then(({ sentryLoader }) => sentryLoader()), + import('./sentryLoader/sentryLoader').then(({ sentryLoader }) => + sentryLoader(), + ), { priority: 'critical', }, @@ -60,29 +54,15 @@ void (async () => { void startup( 'abTesting', () => - import(/* webpackMode: 'eager' */ './abTesting').then( - ({ initWindowABTesting }) => initWindowABTesting(), + import('./abTesting').then(({ initWindowABTesting }) => + initWindowABTesting(), ), { priority: 'critical' }, ); - void startup( - 'dynamicImport', - () => - import(/* webpackMode: "eager" */ './dynamicImport').then( - ({ dynamicImport }) => dynamicImport(), - ), - { - priority: 'critical', - }, - ); - void startup( 'islands', - () => - import(/* webpackMode: "eager" */ './islands/islands').then( - ({ islands }) => islands(), - ), + () => import('./islands/islands').then(({ islands }) => islands()), { priority: 'critical', }, @@ -91,9 +71,9 @@ void (async () => { void startup( 'poorPerformanceMonitoring', () => - import( - /* webpackMode: "eager" */ './poorPerformanceMonitoring' - ).then(({ recordPoorPerformance }) => recordPoorPerformance('Web')), + import('./poorPerformanceMonitoring').then( + ({ recordPoorPerformance }) => recordPoorPerformance('Web'), + ), { priority: 'critical', }, @@ -102,9 +82,9 @@ void (async () => { void startup( 'userFeatures', () => - import( - /* webpackMode: 'eager' */ './userFeatures/user-features' - ).then(({ refresh }) => refresh()), + import('./userFeatures/user-features').then(({ refresh }) => + refresh(), + ), { priority: 'critical' }, ); @@ -114,59 +94,39 @@ void (async () => { * because they are lower priority and do not want to block * the modules above on loading these. * - * We are not assigning chunk name to allow Webpack - * to optimise chunking based on its algorithm. - * *************************************************************/ void startup( 'atomIframe', - () => - import( - /* webpackMode: 'lazy' */ - './atomIframe' - ).then(({ atomIframe }) => atomIframe()), + () => import('./atomIframe').then(({ atomIframe }) => atomIframe()), { priority: 'feature' }, ); void startup( 'embedIframe', - () => - import( - /* webpackMode: 'lazy' */ - './embedIframe' - ).then(({ embedIframe }) => embedIframe()), + () => import('./embedIframe').then(({ embedIframe }) => embedIframe()), { priority: 'feature' }, ); void startup( 'newsletterEmbedIframe', () => - import( - /* webpackMode: 'lazy' */ - './newsletterEmbedIframe' - ).then(({ newsletterEmbedIframe }) => newsletterEmbedIframe()), + import('./newsletterEmbedIframe').then( + ({ newsletterEmbedIframe }) => newsletterEmbedIframe(), + ), { priority: 'feature' }, ); void startup( 'initDiscussion', - () => - import( - /* webpackMode: 'lazy' */ - './discussion' - ).then(({ discussion }) => discussion()), + () => import('./discussion').then(({ discussion }) => discussion()), { priority: 'feature' }, ); if (maybeSIndicatorCapiKey) { void startup( 'sIndicator', - () => - import( - /* webpackMode: 'lazy' */ - './sIndicator' - ).then(({ sIndicator }) => sIndicator()), + () => import('./sIndicator').then(({ sIndicator }) => sIndicator()), { priority: 'feature' }, ); } diff --git a/dotcom-rendering/src/client/sentryLoader/loadSentry.ts b/dotcom-rendering/src/client/sentryLoader/loadSentry.ts index 962b12feb62..53c6fd13e38 100644 --- a/dotcom-rendering/src/client/sentryLoader/loadSentry.ts +++ b/dotcom-rendering/src/client/sentryLoader/loadSentry.ts @@ -1,6 +1,5 @@ import { isAdBlockInUse } from '@guardian/commercial-core'; import { log, startPerformanceMeasure } from '@guardian/libs'; -import '../webpackPublicPath'; import type { ReportError } from '../../types/sentry'; type ReportErrorError = Parameters[0]; @@ -69,10 +68,7 @@ const loadSentryCreator = () => { /** * Dynamically load sentry.ts */ - const { reportError } = await import( - /* webpackChunkName: "lazy" */ - /* webpackChunkName: "sentry" */ './sentry' - ); + const { reportError } = await import('./sentry'); /** * Replace the lazy loader stub with our custom error reporting function diff --git a/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts b/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts index 009bcd8285c..45ac8adc57d 100644 --- a/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts +++ b/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts @@ -1,6 +1,5 @@ import { isSentryEnabled } from './sentryLoader'; -// Stubbed to prevent parsing of __webpack_public_path__ jest.mock('./loadSentry', () => ({ loadSentry: jest.fn() })); describe('Enable Sentry when it passes loading conditions', () => { diff --git a/dotcom-rendering/src/client/webpackPublicPath.ts b/dotcom-rendering/src/client/webpackPublicPath.ts deleted file mode 100644 index 9e6928b474d..00000000000 --- a/dotcom-rendering/src/client/webpackPublicPath.ts +++ /dev/null @@ -1,7 +0,0 @@ -// allows us to define public path dynamically -// dynamic imports will use this as the base to find their assets - -import { decidePublicPath } from './decidePublicPath'; - -// https://webpack.js.org/guides/public-path/#on-the-fly -__webpack_public_path__ = decidePublicPath(); diff --git a/dotcom-rendering/tsconfig.json b/dotcom-rendering/tsconfig.json index b8f13b02b4b..84d16528121 100644 --- a/dotcom-rendering/tsconfig.json +++ b/dotcom-rendering/tsconfig.json @@ -18,7 +18,7 @@ "react", "react-dom", "@testing-library/jest-dom", - "webpack-env", + "vite/client", "youtube", "twitter-for-web", // This is to fix a "Cannot find namespace 'Chai'" error that arose during diff --git a/dotcom-rendering/window.guardian.ts b/dotcom-rendering/window.guardian.ts index 8934a44ad22..51487ba2868 100644 --- a/dotcom-rendering/window.guardian.ts +++ b/dotcom-rendering/window.guardian.ts @@ -40,17 +40,6 @@ declare global { weeklyArticleCount: WeeklyArticleHistory | undefined; dailyArticleCount: DailyArticleHistory | undefined; }; - /** - * ES6 module import, possibly polyfilled depending on the current - * browser. There are three categories: - * - * 1. Full support out of the box - * 2. ES6 module support but not dynamic modules - * 3. No module support - * - * This gives support across all 3 cases. - */ - guardianPolyfilledImport: (url: string) => Promise; // can't be nested beyond top level guCmpHotFix: { initialised?: boolean; cmp: CMP; From 5ca79ab5e5b4782f2ffae5eaab4aa12d597d651f Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Mon, 6 Apr 2026 22:19:59 +0100 Subject: [PATCH 03/37] Adapt asset manifest and script regex for Vite format Vite manifests are keyed by source path with nested entry objects (unlike webpack's flat key-value format). Update getPathFromManifest to look up entries by source path for entry points and by name for shared chunks like frameworks. Update script hash regex from 20 to 8 chars to match Vite's output. Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/src/lib/assets.test.ts | 44 ++++++++------ dotcom-rendering/src/lib/assets.ts | 78 ++++++++++++++++++++----- 2 files changed, 91 insertions(+), 31 deletions(-) diff --git a/dotcom-rendering/src/lib/assets.test.ts b/dotcom-rendering/src/lib/assets.test.ts index a5bcfe5666d..3a3817266fd 100644 --- a/dotcom-rendering/src/lib/assets.test.ts +++ b/dotcom-rendering/src/lib/assets.test.ts @@ -35,56 +35,66 @@ describe('decideAssetOrigin for stage', () => { describe('regular expression to match files', () => { it('should handle CI environment', () => { - expect('/assets/ophan.client.web.eb74205c979f58659ed7.js').toMatch(WEB); + expect('/assets/index.client.web.DKLwwO4p.js').toMatch(WEB); }); it('should handle DEV environment', () => { - expect('/assets/ophan.client.web.variant.js').toMatch( + expect('/assets/index.client.web.variant.js').toMatch( WEB_VARIANT_SCRIPT, ); }); it('should handle PROD environment', () => { expect( - 'https://assets.guim.co.uk/assets/ophan.client.web.abcdefghijklmnopqrst.js', + 'https://assets.guim.co.uk/assets/index.client.web.DKLwwO4p.js', ).toMatch(WEB); expect( - 'https://assets.guim.co.uk/assets/ophan.client.web.variant.abcdefghijklmnopqrst.js', + 'https://assets.guim.co.uk/assets/index.client.web.variant.abcdefgh.js', ).toMatch(WEB_VARIANT_SCRIPT); expect( - 'https://assets.guim.co.uk/assets/ophan.client.apps.eb74205c979f58659ed7.js', + 'https://assets.guim.co.uk/assets/index.client.apps.DKLwwO4p.js', ).toMatch(APPS_SCRIPT); }); it('should handle http3 query param', () => { expect( - 'https://assets.guim.co.uk/assets/ophan.client.web.eb74205c979f58659ed7.js?http3=true', + 'https://assets.guim.co.uk/assets/index.client.web.DKLwwO4p.js?http3=true', ).toMatch(WEB); }); }); describe('getPathFromManifest', () => { beforeEach(() => { - const assetHash = `{ - "7305.client.web.js": "7305.client.web.8cdc05567d98ebd9f67e.js", - "356.client.web.js": "356.client.web.0a1bbdf8c7a5e5826b7c.js" - }`; - (readFileSync as jest.Mock).mockReturnValue(assetHash); + // Vite manifest format: keyed by source path with nested entry objects + const viteManifest = JSON.stringify({ + 'src/client/main.web.ts': { + file: 'index.client.web.DKLwwO4p.js', + name: 'index', + src: 'src/client/main.web.ts', + isEntry: true, + imports: ['_frameworks.client.web.xyz78901.js'], + }, + _frameworks: { + file: 'frameworks.client.web.xyz78901.js', + name: 'frameworks', + }, + }); + (readFileSync as jest.Mock).mockReturnValue(viteManifest); }); afterEach(() => { jest.resetAllMocks(); }); - it('returns correct hashed asset (1)', () => { - expect(getPathFromManifest('client.web', '7305.client.web.js')).toBe( - '/assets/7305.client.web.8cdc05567d98ebd9f67e.js', + it('returns correct hashed asset for entry point', () => { + expect(getPathFromManifest('client.web', 'index.js')).toBe( + '/assets/index.client.web.DKLwwO4p.js', ); }); - it('returns correct hashed asset (2)', () => { - expect(getPathFromManifest('client.web', '356.client.web.js')).toBe( - '/assets/356.client.web.0a1bbdf8c7a5e5826b7c.js', + it('returns correct hashed asset for frameworks chunk', () => { + expect(getPathFromManifest('client.web', 'frameworks.js')).toBe( + '/assets/frameworks.client.web.xyz78901.js', ); }); diff --git a/dotcom-rendering/src/lib/assets.ts b/dotcom-rendering/src/lib/assets.ts index 420219a3a24..d2244934317 100644 --- a/dotcom-rendering/src/lib/assets.ts +++ b/dotcom-rendering/src/lib/assets.ts @@ -4,8 +4,24 @@ import { isObject, isString } from '@guardian/libs'; import { BUILD_VARIANT } from '../../webpack/bundles'; import { makeMemoizedFunction } from './memoize'; -interface AssetHash { - [key: string]: string; +/** + * A single entry in a Vite manifest. + */ +interface ViteManifestEntry { + file: string; + name?: string; + src?: string; + isEntry?: boolean; + isDynamicEntry?: boolean; + imports?: string[]; + dynamicImports?: string[]; +} + +/** + * The full Vite manifest: keys are source paths or internal chunk IDs. + */ +interface ViteManifest { + [key: string]: ViteManifestEntry; } export const BASE_URL_DEV = 'http://localhost:3030/'; @@ -44,22 +60,23 @@ const isDev = process.env.NODE_ENV === 'development'; export const ASSET_ORIGIN = decideAssetOrigin(process.env.GU_STAGE, isDev); -const isAssetHash = (manifest: unknown): manifest is AssetHash => +const isViteManifest = (manifest: unknown): manifest is ViteManifest => isObject(manifest) && - Object.entries(manifest).every( - ([key, value]) => isString(key) && isString(value), + Object.values(manifest).every( + (entry) => + isObject(entry) && isString((entry as ViteManifestEntry).file), ); -const getManifest = makeMemoizedFunction((path: string): AssetHash => { +const getManifest = makeMemoizedFunction((path: string): ViteManifest => { try { - const assetHash: unknown = JSON.parse( + const parsed: unknown = JSON.parse( readFileSync(resolve(__dirname, path), { encoding: 'utf-8' }), ); - if (!isAssetHash(assetHash)) { - throw new Error('Not a valid AssetHash type'); + if (!isViteManifest(parsed)) { + throw new Error('Not a valid Vite manifest'); } - return assetHash; + return parsed; } catch (e) { console.error('Could not load manifest in: ', path); console.error('Some filename lookups will fail'); @@ -78,6 +95,26 @@ type ManifestPath = `./manifest.${Build}.json`; const getManifestPath = (build: Build): ManifestPath => `./manifest.${build}.json`; +/** + * Maps each build to its entry point source path in the Vite manifest. + */ +const entrySourcePaths: Record = { + 'client.web': 'src/client/main.web.ts', + 'client.web.variant': 'src/client/main.web.ts', + 'client.apps': 'src/client/main.apps.ts', + 'client.editionsCrossword': 'src/client/main.editionsCrossword.tsx', +}; + +/** + * Finds a manifest entry by its `name` field. + * Used for chunks like "frameworks" that aren't keyed by source path. + */ +const findEntryByName = ( + manifest: ViteManifest, + name: string, +): ViteManifestEntry | undefined => + Object.values(manifest).find((entry) => entry.name === name); + export const getPathFromManifest = ( build: Build, filename: `${string}.js`, @@ -94,13 +131,26 @@ export const getPathFromManifest = ( } const manifest = getManifest(getManifestPath(build)); - const filenameFromManifest = manifest[filename]; - if (!filenameFromManifest) { + // Strip .js extension to get the logical name (e.g. "index", "frameworks") + const logicalName = filename.replace(/\.js$/, ''); + + let entry: ViteManifestEntry | undefined; + + if (logicalName === 'index') { + // Look up the entry point by its source path + const sourcePath = entrySourcePaths[build]; + entry = manifest[sourcePath]; + } else { + // For non-entry chunks (e.g. "frameworks"), find by name + entry = findEntryByName(manifest, logicalName); + } + + if (!entry) { throw new Error(`Missing manifest for ${filename}`); } - return `${ASSET_ORIGIN}assets/${filenameFromManifest}`; + return `${ASSET_ORIGIN}assets/${entry.file}`; }; /** @@ -111,7 +161,7 @@ export const getPathFromManifest = ( * and stripped query parameters. */ const getScriptRegex = (build: Build) => - new RegExp(`assets\\/\\w+\\.${build}\\.(\\w{20}\\.)?js(\\?.*)?$`); + new RegExp(`assets\\/\\w+\\.${build}\\.(\\w{8}\\.)?js(\\?.*)?$`); export const WEB = getScriptRegex('client.web'); export const WEB_VARIANT_SCRIPT = getScriptRegex('client.web.variant'); From 81863d57b14cce45f31e40dbb03472e37cdf1479 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Mon, 6 Apr 2026 22:28:42 +0100 Subject: [PATCH 04/37] Finalize Vite server SSR build config Simplify server.ts to use named re-export instead of webpack-hot-server-middleware default export pattern. Add inlineDynamicImports to server config to produce a single server.js file, preventing chunk collisions with client assets in dist/. Add default export so server config works with vite build --config CLI. Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/src/server/server.ts | 8 ++------ dotcom-rendering/vite/vite.config.server.ts | 9 ++++++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/dotcom-rendering/src/server/server.ts b/dotcom-rendering/src/server/server.ts index 9360ff1db39..f20a595d2d1 100644 --- a/dotcom-rendering/src/server/server.ts +++ b/dotcom-rendering/src/server/server.ts @@ -1,12 +1,8 @@ -import { devServer } from './server.dev'; import { prodServer } from './server.prod'; -// this export is expected by webpack-hot-server-middleware -// not used in prod +// Re-export devServer for use by Vite's ssrLoadModule in dev +export { devServer } from './server.dev'; -export default devServer; - -// this is the actual production server if (process.env.NODE_ENV === 'production') { prodServer(); } diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts index ae3316a258b..bed78a62cb3 100644 --- a/dotcom-rendering/vite/vite.config.server.ts +++ b/dotcom-rendering/vite/vite.config.server.ts @@ -35,7 +35,10 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { output: { format: 'cjs', entryFileNames: '[name].js', - chunkFileNames: '[name].js', + // Produce a single server.js file (no code splitting), + // matching webpack's single-file output. This avoids + // server chunks colliding with client assets in dist/. + inlineDynamicImports: true, }, // webpack/bundles.js is CJS with module.exports β€” Rollup can't // resolve named exports from it. Externalize so it's required at runtime. @@ -57,3 +60,7 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { external: DEV ? [/@aws-sdk\/.*/] : [], }, } satisfies UserConfig); + +// Default export for `vite build --config` CLI usage +// eslint-disable-next-line import/no-default-export -- required by Vite CLI +export default serverConfig; From 5a78a5871fb9775edf756c35a6e61e42baff9a07 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Tue, 7 Apr 2026 21:41:40 +0100 Subject: [PATCH 05/37] Add Vite dev server with SSR middleware and CJS compatibility Replace webpack-dev-server + webpack-hot-server-middleware with Vite's dev server in middleware mode. Uses vite.ssrLoadModule() for instant server-side hot reload without full restart. Add ssr-cjs-plugin to wrap CJS packages (e.g. @guardian/bridget) with ESM wrappers for Vite 6's ESM-based SSR module runner. Fix CJS named imports across the codebase (jsdom, log4js, sanitize-html, compare-versions, @creditkarma/thrift-server-core) by switching to default import + destructuring pattern. Co-Authored-By: Claude Opus 4.6 --- .../src/components/MultiByline.tsx | 4 +- dotcom-rendering/src/lib/assets.ts | 3 +- dotcom-rendering/src/lib/domUtils.ts | 4 +- .../src/lib/thrift/nativeConnection.ts | 6 +- dotcom-rendering/src/lib/thrift/protocols.ts | 4 +- .../src/lib/useIsBridgetCompatible.ts | 1 + dotcom-rendering/src/model/enhance-H2s.ts | 4 +- .../src/model/enhance-blockquotes.ts | 4 +- .../src/model/enhance-dividers.ts | 4 +- dotcom-rendering/src/model/enhance-embeds.ts | 4 +- dotcom-rendering/src/model/enhance-images.ts | 4 +- .../src/model/enhance-numbered-lists.ts | 4 +- .../src/model/enhanceProductElement.ts | 4 +- .../src/model/enhanceTableOfContents.ts | 4 +- dotcom-rendering/src/model/sanitise.ts | 4 +- dotcom-rendering/src/server/lib/logging.ts | 4 +- dotcom-rendering/vite/dev-server.ts | 121 ++++++++++++++++++ dotcom-rendering/vite/ssr-cjs-plugin.ts | 78 +++++++++++ 18 files changed, 245 insertions(+), 16 deletions(-) create mode 100644 dotcom-rendering/vite/dev-server.ts create mode 100644 dotcom-rendering/vite/ssr-cjs-plugin.ts diff --git a/dotcom-rendering/src/components/MultiByline.tsx b/dotcom-rendering/src/components/MultiByline.tsx index ac19f51a8a5..835f13d2aac 100644 --- a/dotcom-rendering/src/components/MultiByline.tsx +++ b/dotcom-rendering/src/components/MultiByline.tsx @@ -12,7 +12,9 @@ import { textSansItalic28, textSansItalic34, } from '@guardian/source/foundations'; -import sanitise, { defaults } from 'sanitize-html'; +import sanitise from 'sanitize-html'; + +const { defaults } = sanitise; import { ArticleDesign, ArticleDisplay, diff --git a/dotcom-rendering/src/lib/assets.ts b/dotcom-rendering/src/lib/assets.ts index d2244934317..ffcbebf8d58 100644 --- a/dotcom-rendering/src/lib/assets.ts +++ b/dotcom-rendering/src/lib/assets.ts @@ -64,7 +64,8 @@ const isViteManifest = (manifest: unknown): manifest is ViteManifest => isObject(manifest) && Object.values(manifest).every( (entry) => - isObject(entry) && isString((entry as ViteManifestEntry).file), + isObject(entry) && + isString((entry as unknown as ViteManifestEntry).file), ); const getManifest = makeMemoizedFunction((path: string): ViteManifest => { diff --git a/dotcom-rendering/src/lib/domUtils.ts b/dotcom-rendering/src/lib/domUtils.ts index 50cf100e1d5..e8baf6e9c71 100644 --- a/dotcom-rendering/src/lib/domUtils.ts +++ b/dotcom-rendering/src/lib/domUtils.ts @@ -1,4 +1,6 @@ -import { JSDOM } from 'jsdom'; +import jsdom from 'jsdom'; + +const { JSDOM } = jsdom; export const parseHtml = (html: string): DocumentFragment => JSDOM.fragment(html); diff --git a/dotcom-rendering/src/lib/thrift/nativeConnection.ts b/dotcom-rendering/src/lib/thrift/nativeConnection.ts index 3b1ab0659f5..b526c5a7df1 100644 --- a/dotcom-rendering/src/lib/thrift/nativeConnection.ts +++ b/dotcom-rendering/src/lib/thrift/nativeConnection.ts @@ -7,13 +7,15 @@ import type { TransportType, TTransport, } from '@creditkarma/thrift-server-core'; -import { +import thriftCore from '@creditkarma/thrift-server-core'; + +const { getProtocol, getTransport, TApplicationException, TApplicationExceptionType, ThriftConnection, -} from '@creditkarma/thrift-server-core'; +} = thriftCore; import { TMultiplexedProtocol } from './protocols'; declare global { diff --git a/dotcom-rendering/src/lib/thrift/protocols.ts b/dotcom-rendering/src/lib/thrift/protocols.ts index 8878b7f4458..d7722aa0a73 100644 --- a/dotcom-rendering/src/lib/thrift/protocols.ts +++ b/dotcom-rendering/src/lib/thrift/protocols.ts @@ -9,7 +9,9 @@ import type { TTransport, TType, } from '@creditkarma/thrift-server-core'; -import { MessageType, TProtocol } from '@creditkarma/thrift-server-core'; +import thriftCore from '@creditkarma/thrift-server-core'; + +const { MessageType, TProtocol } = thriftCore; export abstract class TProtocolDecorator extends TProtocol { private concreteProtocol: TProtocol; diff --git a/dotcom-rendering/src/lib/useIsBridgetCompatible.ts b/dotcom-rendering/src/lib/useIsBridgetCompatible.ts index 3ff8419a760..1f18cfcfc7c 100644 --- a/dotcom-rendering/src/lib/useIsBridgetCompatible.ts +++ b/dotcom-rendering/src/lib/useIsBridgetCompatible.ts @@ -1,4 +1,5 @@ import { compare } from 'compare-versions'; + import { useEffect, useState } from 'react'; import { type EnvironmentClient, getEnvironmentClient } from './bridgetApi'; diff --git a/dotcom-rendering/src/model/enhance-H2s.ts b/dotcom-rendering/src/model/enhance-H2s.ts index 72ee2e0699a..2c70258aac7 100644 --- a/dotcom-rendering/src/model/enhance-H2s.ts +++ b/dotcom-rendering/src/model/enhance-H2s.ts @@ -1,4 +1,6 @@ -import { JSDOM } from 'jsdom'; +import jsdom from 'jsdom'; + +const { JSDOM } = jsdom; import type { FEElement } from '../types/content'; import { isLegacyTableOfContents } from './isLegacyTableOfContents'; diff --git a/dotcom-rendering/src/model/enhance-blockquotes.ts b/dotcom-rendering/src/model/enhance-blockquotes.ts index 86aaca47c4e..8bf2d3f5eca 100644 --- a/dotcom-rendering/src/model/enhance-blockquotes.ts +++ b/dotcom-rendering/src/model/enhance-blockquotes.ts @@ -1,4 +1,6 @@ -import { JSDOM } from 'jsdom'; +import jsdom from 'jsdom'; + +const { JSDOM } = jsdom; import { ArticleDesign, type ArticleFormat } from '../lib/articleFormat'; import type { BlockquoteBlockElement, FEElement } from '../types/content'; diff --git a/dotcom-rendering/src/model/enhance-dividers.ts b/dotcom-rendering/src/model/enhance-dividers.ts index d66a615e175..b6ea977e0f7 100644 --- a/dotcom-rendering/src/model/enhance-dividers.ts +++ b/dotcom-rendering/src/model/enhance-dividers.ts @@ -1,4 +1,6 @@ -import { JSDOM } from 'jsdom'; +import jsdom from 'jsdom'; + +const { JSDOM } = jsdom; import type { FEElement } from '../types/content'; const isDinkus = (element: FEElement): boolean => { diff --git a/dotcom-rendering/src/model/enhance-embeds.ts b/dotcom-rendering/src/model/enhance-embeds.ts index 1f21c832007..c163df5d531 100644 --- a/dotcom-rendering/src/model/enhance-embeds.ts +++ b/dotcom-rendering/src/model/enhance-embeds.ts @@ -1,4 +1,6 @@ -import { JSDOM } from 'jsdom'; +import jsdom from 'jsdom'; + +const { JSDOM } = jsdom; import type { FEElement } from '../types/content'; export const enhanceEmbeds = (elements: FEElement[]): FEElement[] => diff --git a/dotcom-rendering/src/model/enhance-images.ts b/dotcom-rendering/src/model/enhance-images.ts index 44024de18db..1fc3d341b8f 100644 --- a/dotcom-rendering/src/model/enhance-images.ts +++ b/dotcom-rendering/src/model/enhance-images.ts @@ -1,5 +1,7 @@ import { isUndefined } from '@guardian/libs'; -import { JSDOM } from 'jsdom'; +import jsdom from 'jsdom'; + +const { JSDOM } = jsdom; import { ArticleDesign, type ArticleFormat, diff --git a/dotcom-rendering/src/model/enhance-numbered-lists.ts b/dotcom-rendering/src/model/enhance-numbered-lists.ts index 1fab92a8d6d..c0fc85d7eb7 100644 --- a/dotcom-rendering/src/model/enhance-numbered-lists.ts +++ b/dotcom-rendering/src/model/enhance-numbered-lists.ts @@ -1,5 +1,7 @@ import { isUndefined } from '@guardian/libs'; -import { JSDOM } from 'jsdom'; +import jsdom from 'jsdom'; + +const { JSDOM } = jsdom; import { ArticleDisplay, type ArticleFormat } from '../lib/articleFormat'; import type { FEElement, StarRating, TextBlockElement } from '../types/content'; diff --git a/dotcom-rendering/src/model/enhanceProductElement.ts b/dotcom-rendering/src/model/enhanceProductElement.ts index 1d0f8f91c29..ecaec36681f 100644 --- a/dotcom-rendering/src/model/enhanceProductElement.ts +++ b/dotcom-rendering/src/model/enhanceProductElement.ts @@ -1,4 +1,6 @@ -import { JSDOM } from 'jsdom'; +import jsdom from 'jsdom'; + +const { JSDOM } = jsdom; import type { FEElement, ProductBlockElement, diff --git a/dotcom-rendering/src/model/enhanceTableOfContents.ts b/dotcom-rendering/src/model/enhanceTableOfContents.ts index 24b6b13446b..f6643ff9986 100644 --- a/dotcom-rendering/src/model/enhanceTableOfContents.ts +++ b/dotcom-rendering/src/model/enhanceTableOfContents.ts @@ -1,4 +1,6 @@ -import { JSDOM } from 'jsdom'; +import jsdom from 'jsdom'; + +const { JSDOM } = jsdom; import type { Block } from '../types/blocks'; import type { NumberedTitleBlockElement, diff --git a/dotcom-rendering/src/model/sanitise.ts b/dotcom-rendering/src/model/sanitise.ts index 8bc834d1668..57c6c06cc47 100644 --- a/dotcom-rendering/src/model/sanitise.ts +++ b/dotcom-rendering/src/model/sanitise.ts @@ -1,6 +1,8 @@ import type { Config } from 'dompurify'; import createDOMPurify from 'dompurify'; -import { JSDOM } from 'jsdom'; +import jsdom from 'jsdom'; + +const { JSDOM } = jsdom; const { window } = new JSDOM(''); const DOMPurify = createDOMPurify(window); diff --git a/dotcom-rendering/src/server/lib/logging.ts b/dotcom-rendering/src/server/lib/logging.ts index 899cfb07689..d68170ef40a 100644 --- a/dotcom-rendering/src/server/lib/logging.ts +++ b/dotcom-rendering/src/server/lib/logging.ts @@ -1,7 +1,9 @@ import path from 'node:path'; import { isObject } from '@guardian/libs'; import type { Configuration, Layout, LoggingEvent } from 'log4js'; -import { addLayout, configure, getLogger, shutdown } from 'log4js'; +import log4js from 'log4js'; + +const { addLayout, configure, getLogger, shutdown } = log4js; import { type DCRLoggingStore, loggingStore } from './logging-store'; type LogFields = Partial & diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts new file mode 100644 index 00000000000..a77780c0ec8 --- /dev/null +++ b/dotcom-rendering/vite/dev-server.ts @@ -0,0 +1,121 @@ +/** + * Vite development server with SSR middleware. + * Replaces webpack-dev-server + webpack-hot-server-middleware. + * + * Usage: + * NODE_ENV=development node --import tsx vite/dev-server.ts + * + * Or via makefile: + * make vite-dev + */ + +import { readFileSync } from 'node:fs'; +import { resolve } from 'node:path'; +import express from 'express'; +import { createServer as createViteServer, mergeConfig } from 'vite'; +import svgr from 'vite-plugin-svgr'; +import { sharedConfig } from './vite.config.shared'; +import { ssrCjsPlugin } from './ssr-cjs-plugin'; + +const port = 3030; +const root = process.cwd(); + +async function start() { + const app = express(); + + // CJS packages in noExternal that need ESM wrapping for Vite 6's + // SSR module runner. Only packages using require()/module.exports + // that are matched by ssr.noExternal need to be listed here. + const cjsPackages = ['@guardian/bridget']; + + // Create Vite server in middleware mode. + // Handles client-side module transforms, HMR, and SSR module loading. + const devConfig = mergeConfig(sharedConfig, { + plugins: [ + svgr({ + svgrOptions: { svgo: false }, + }), + ssrCjsPlugin(cjsPackages), + ], + resolve: { + alias: { + // Client-side Preact aliasing for browser modules + react: 'preact/compat', + 'react-dom/test-utils': 'preact/test-utils', + 'react-dom': 'preact/compat', + }, + }, + server: { + middlewareMode: true, + hmr: true, + }, + appType: 'custom', + // Serve client modules from /assets/ to match production asset paths + base: '/assets/', + }); + // SSR config must be set after mergeConfig to avoid being overwritten. + devConfig.ssr = { + // Bundle ESM-only packages that can't be require()'d by Node. + noExternal: [/@guardian\//, 'screenfull', 'valibot'], + }; + const vite = await createViteServer(devConfig); + + // Vite's connect middleware handles HMR websocket, module transforms, + // and serves client-side files from /assets/ + app.use(vite.middlewares); + + // Parse JSON request bodies (used by POST routes for rendering) + app.use(express.json({ limit: '10mb' })); + + // Serve static files (favicons, etc.) + app.use('/static/frontend', express.static(resolve(root, 'src', 'static'))); + + // Dev landing page with links to test content + const devIndexHtml = readFileSync( + resolve(root, 'src', 'server', 'dev-index.html'), + 'utf-8', + ); + app.get('/', (_req, res) => { + res.type('html').send(devIndexHtml); + }); + + // CORS: allow localhost cross-origin requests for dev + app.use((req, res, next) => { + const hostname = process.env.HOSTNAME ?? 'localhost'; + if (req.hostname === hostname && req.headers.origin) { + res.setHeader('Access-Control-Allow-Origin', req.headers.origin); + } + next(); + }); + + // SSR: load server module on each request via Vite's ssrLoadModule. + // This re-evaluates the module when files change, providing instant + // server-side hot reload without a full restart. + app.use(async (req, res, next) => { + try { + const { devServer } = (await vite.ssrLoadModule( + './src/server/server.ts', + )) as { + devServer: () => express.Handler; + }; + devServer()(req, res, next); + } catch (e) { + // Let Vite fix the stack trace for SSR errors + if (e instanceof Error) { + vite.ssrFixStacktrace(e); + } + next(e); + } + }); + + app.listen(port, () => { + console.log( + `\n Vite DEV server running on http://localhost:${port}\n`, + ); + }); +} + +start().catch((err) => { + console.error('Failed to start dev server:', err); + process.exit(1); +}); diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.ts b/dotcom-rendering/vite/ssr-cjs-plugin.ts new file mode 100644 index 00000000000..b33a492bc25 --- /dev/null +++ b/dotcom-rendering/vite/ssr-cjs-plugin.ts @@ -0,0 +1,78 @@ +/** + * Vite plugin that wraps CJS packages for SSR compatibility. + * + * Vite 6's SSR module runner evaluates all modules as ESM, + * which breaks CJS packages that use `require()` or `module.exports`. + * This plugin wraps specified CJS packages with ESM wrappers + * using createRequire(). + * + * Only works for packages in ssr.noExternal (Vite skips plugin + * hooks for external packages). + */ +import { createRequire } from 'node:module'; +import { pathToFileURL } from 'node:url'; +import type { Plugin } from 'vite'; + +const nodeRequire = createRequire(pathToFileURL(__filename).href); + +/** + * Creates a Vite plugin that wraps specified CJS packages + * for Vite 6's ESM-based SSR module runner. + * + * @param packages - Package names or prefixes to wrap (e.g. '@guardian/bridget') + */ +export function ssrCjsPlugin(packages: string[]): Plugin { + const PREFIX = '\0cjs-compat:'; + + function shouldWrap(id: string): boolean { + if ( + id.startsWith('.') || + id.startsWith('/') || + id.startsWith('node:') + ) { + return false; + } + return packages.some((p) => id === p || id.startsWith(p + '/')); + } + + return { + name: 'ssr-cjs-compat', + enforce: 'pre', + resolveId(id) { + if (shouldWrap(id)) { + return PREFIX + id; + } + }, + load(id) { + if (!id.startsWith(PREFIX)) return; + const pkg = id.slice(PREFIX.length); + + // Introspect the CJS package's exports + let exportNames: string[] = []; + try { + const mod = nodeRequire(pkg) as Record; + exportNames = Object.keys(mod).filter( + (k) => + k !== 'default' && + k !== '__esModule' && + /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(k), + ); + } catch { + // If require fails, just provide a default export + } + + // Generate an ESM module that re-exports CJS members + const lines = [ + `import { createRequire } from 'node:module';`, + `const __require = createRequire(import.meta.url);`, + `const mod = __require('${pkg}');`, + `export default mod;`, + ...exportNames.map( + (name) => `export const ${name} = mod['${name}'];`, + ), + ]; + + return lines.join('\n'); + }, + }; +} From 07916907693bcbeffcd33462d4f30c77fe3cc022 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 9 Apr 2026 22:39:35 +0100 Subject: [PATCH 06/37] Migrate Storybook to Vite, remove webpack config and dependencies - Replace @storybook/react-webpack5 with @storybook/react-vite - Convert webpackFinal to viteFinal in .storybook/main.ts - Remove @storybook/addon-webpack5-compiler-swc - Remove all webpack magic comments (webpackChunkName, webpackMode) from dynamic imports across the codebase - Delete webpack config files (webpack.config.*.js, svg.cjs, .swcrc.json, @types/) - Remove webpack and related dependencies from package.json: webpack, webpack-cli, webpack-dev-server, webpack-dev-middleware, webpack-hot-middleware, webpack-hot-server-middleware, webpack-merge, webpack-manifest-plugin, webpack-assets-manifest, webpack-messages, webpack-node-externals, webpack-bundle-analyzer, webpack-sources, @svgr/webpack, swc-loader, css-loader, to-string-loader, dynamic-import-polyfill, @guardian/shimport Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/.storybook/main.ts | 67 +- dotcom-rendering/.storybook/preview.ts | 5 + dotcom-rendering/package.json | 21 +- dotcom-rendering/src/client/adaptiveSite.ts | 4 +- dotcom-rendering/src/client/bootCmp.ts | 4 +- .../src/client/islands/islandRegistry.ts | 12 +- dotcom-rendering/src/client/ophan/ophan.ts | 4 +- .../src/components/LiveBlogEpic.island.tsx | 4 +- .../components/ReaderRevenueDev.island.tsx | 4 +- .../gates/alternative-wording-control.tsx | 4 +- .../alternative-wording-guardian-live.tsx | 12 +- .../alternative-wording-saturday-edition.tsx | 12 +- .../SignInGate/gates/fake-social-variant.tsx | 4 +- .../gates/main-mandatory-variant.tsx | 4 +- .../SignInGate/gates/main-variant.tsx | 16 +- .../src/components/SlotBodyEnd/BrazeEpic.tsx | 4 +- .../SlotBodyEnd/ReaderRevenueEpic.tsx | 4 +- .../StickyBottomBanner/BrazeBanner.tsx | 4 +- .../ReaderRevenueBanner.tsx | 6 +- .../src/components/TopBarSupport.island.tsx | 6 +- .../src/lib/braze/initialiseBraze.ts | 2 +- dotcom-rendering/src/lib/thrift/protocols.ts | 4 +- dotcom-rendering/webpack/.swcrc.json | 21 - .../webpack-filter-warnings-plugin/index.d.ts | 9 - .../@types/webpack-messages/index.d.ts | 19 - dotcom-rendering/webpack/svg.cjs | 15 - .../webpack/webpack.config.client.js | 186 - .../webpack/webpack.config.dev-server.js | 81 - dotcom-rendering/webpack/webpack.config.js | 134 - .../webpack/webpack.config.server.js | 92 - pnpm-lock.yaml | 5080 +++-------------- 31 files changed, 964 insertions(+), 4880 deletions(-) delete mode 100644 dotcom-rendering/webpack/.swcrc.json delete mode 100644 dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts delete mode 100644 dotcom-rendering/webpack/@types/webpack-messages/index.d.ts delete mode 100644 dotcom-rendering/webpack/svg.cjs delete mode 100644 dotcom-rendering/webpack/webpack.config.client.js delete mode 100644 dotcom-rendering/webpack/webpack.config.dev-server.js delete mode 100644 dotcom-rendering/webpack/webpack.config.js delete mode 100644 dotcom-rendering/webpack/webpack.config.server.js diff --git a/dotcom-rendering/.storybook/main.ts b/dotcom-rendering/.storybook/main.ts index f3cd4cd4c47..5954d60ec7d 100644 --- a/dotcom-rendering/.storybook/main.ts +++ b/dotcom-rendering/.storybook/main.ts @@ -1,3 +1,4 @@ +<<<<<<< HEAD import { createRequire } from 'node:module'; import path from 'node:path'; import process from 'node:process'; @@ -12,6 +13,17 @@ const { transpileExclude, getLoaders, } = require('../webpack/webpack.config.client.js'); +======= +import { defineMain } from '@storybook/react-vite/node'; +import path from 'node:path'; +import process from 'node:process'; +import { saveStories } from '../scripts/gen-stories/get-stories.mjs'; +import type { StorybookConfig } from '@storybook/react-vite'; +import svgr from 'vite-plugin-svgr'; + +// ESM equivalent of __dirname +const __dirname = import.meta.dirname; +>>>>>>> 1dfe0367f7 (Migrate Storybook to Vite, remove webpack config and dependencies) // Generate dynamic Card and Layout stories saveStories(); @@ -36,12 +48,9 @@ export default defineMain({ { from: '../src/static', to: '/static/frontend/' }, ], - addons: [ - '@storybook/addon-webpack5-compiler-swc', - '@storybook/addon-docs', - '@storybook/addon-a11y', - ], + addons: ['@storybook/addon-docs', '@storybook/addon-a11y'], +<<<<<<< HEAD webpackFinal: async (config) => { // Get project specific webpack options const newConfig = webpackConfig(config); @@ -72,6 +81,49 @@ export default defineMain({ }), ); return newConfig; +======= + viteFinal: async (config) => { + config.plugins ??= []; + config.plugins.push( + svgr({ + svgrOptions: { svgo: false }, + }), + ); + + config.define ??= {}; + config.define['process.env'] = JSON.stringify({ + SDC_URL: process.env.SDC_URL, + HOSTNAME: process.env.HOSTNAME, + }); + + config.resolve ??= {}; + config.resolve.alias = { + ...config.resolve.alias, + + Buffer: 'buffer', + react: 'react', + 'react-dom': 'react-dom', + + // Mock JSDOM for storybook - it relies on native node.js packages + jsdom$: path.resolve(__dirname, './mocks/jsdom.ts'), + + // log4js tries to call "fs" in storybook -- we can ignore it + [`${path.resolve(__dirname, '../src/server/lib/logging')}$`]: + path.resolve(__dirname, './mocks/log4js.ts'), + + // Mock BridgetApi for storybook + [`${path.resolve(__dirname, '../src/lib/bridgetApi')}$`]: + path.resolve(__dirname, './mocks/bridgetApi.ts'), + + // Mock identity auth frontend to prevent Storybook components from hanging in Pending + '@guardian/identity-auth-frontend': path.resolve( + __dirname, + './mocks/identityAuthFrontend.ts', + ), + }; + + return config; +>>>>>>> 1dfe0367f7 (Migrate Storybook to Vite, remove webpack config and dependencies) }, env: (config) => ({ @@ -85,7 +137,7 @@ export default defineMain({ }, framework: { - name: '@storybook/react-webpack5', + name: '@storybook/react-vite', options: {}, }, @@ -93,6 +145,7 @@ export default defineMain({ reactDocgen: 'react-docgen', }, }); +<<<<<<< HEAD /** the webpack.Configuration type from Storybook */ type Configuration = Parameters< @@ -158,3 +211,5 @@ const webpackConfig = (config: Configuration) => { return config; }; +======= +>>>>>>> 1dfe0367f7 (Migrate Storybook to Vite, remove webpack config and dependencies) diff --git a/dotcom-rendering/.storybook/preview.ts b/dotcom-rendering/.storybook/preview.ts index 7761e00c4b1..75d339c98db 100644 --- a/dotcom-rendering/.storybook/preview.ts +++ b/dotcom-rendering/.storybook/preview.ts @@ -14,6 +14,11 @@ import { mockFetch } from '../src/lib/mockRESTCalls'; import { ABTests } from '../src/experiments/lib/ab-tests'; import { setABTests } from '../src/lib/useAB'; import { ConfigContextDecorator } from './decorators/configContextDecorator'; +<<<<<<< HEAD +======= +import { sb } from 'storybook/test'; +import { definePreview } from '@storybook/react-vite'; +>>>>>>> 1dfe0367f7 (Migrate Storybook to Vite, remove webpack config and dependencies) import { globalColourScheme, globalColourSchemeDecorator, diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json index 195bbf0aa55..22ba1ba6e50 100644 --- a/dotcom-rendering/package.json +++ b/dotcom-rendering/package.json @@ -41,7 +41,6 @@ "@guardian/libs": "32.0.0", "@guardian/ophan-tracker-js": "4.0.2", "@guardian/react-crossword": "19.0.1", - "@guardian/shimport": "1.0.2", "@guardian/source": "12.2.1", "@guardian/source-development-kitchen": "28.1.0", "@guardian/support-dotcom-components": "10.0.1", @@ -50,9 +49,7 @@ "@sentry/browser": "10.52.0", "@storybook/addon-a11y": "10.3.3", "@storybook/addon-docs": "10.3.3", - "@storybook/addon-webpack5-compiler-swc": "4.0.3", - "@storybook/react-webpack5": "10.3.3", - "@svgr/webpack": "8.1.0", + "@storybook/react-vite": "10.3.3", "@swc/cli": "0.8.1", "@swc/core": "1.15.41", "@swc/jest": "0.2.39", @@ -86,9 +83,6 @@ "@types/semver": "7.5.6", "@types/trusted-types": "2.0.7", "@types/twitter-for-web": "0.0.6", - "@types/webpack-bundle-analyzer": "4.7.0", - "@types/webpack-env": "1.18.8", - "@types/webpack-node-externals": "3.0.4", "@types/youtube": "0.0.50", "@typescript-eslint/eslint-plugin": "8.57.1", "ajv": "8.18.0", @@ -149,9 +143,7 @@ "storybook": "10.3.3", "stylelint": "16.26.1", "stylelint-config-recommended": "14.0.0", - "swc-loader": "0.2.7", "swr": "1.3.0", - "to-string-loader": "1.2.0", "trusted-types": "2.0.0", "ts-unused-exports": "10.1.0", "tslib": "catalog:", @@ -164,17 +156,6 @@ "url": "0.11.4", "valibot": "0.28.1", "web-vitals": "4.2.3", - "webpack": "5.108.4", - "webpack-assets-manifest": "6.5.2", - "webpack-bundle-analyzer": "5.3.0", - "webpack-cli": "7.2.1", - "webpack-dev-server": "6.0.0", - "webpack-hot-server-middleware": "0.6.1", - "webpack-manifest-plugin": "6.0.1", - "webpack-merge": "6.0.1", - "webpack-messages": "2.0.4", - "webpack-node-externals": "3.0.0", - "webpack-sources": "3.5.1", "zod": "4.1.12" }, "devDependencies": { diff --git a/dotcom-rendering/src/client/adaptiveSite.ts b/dotcom-rendering/src/client/adaptiveSite.ts index 307fb52a07d..fa713c953a6 100644 --- a/dotcom-rendering/src/client/adaptiveSite.ts +++ b/dotcom-rendering/src/client/adaptiveSite.ts @@ -17,9 +17,7 @@ export const shouldAdapt = async (): Promise => { if (window.location.host !== 'www.theguardian.com') return false; // only evaluate this code if we want to adapt in response to page performance - const { isPerformingPoorly } = await import( - /* webpackMode: "eager" */ './poorPerformanceMonitoring' - ); + const { isPerformingPoorly } = await import('./poorPerformanceMonitoring'); return isPerformingPoorly(); }; diff --git a/dotcom-rendering/src/client/bootCmp.ts b/dotcom-rendering/src/client/bootCmp.ts index 62410b5a985..3a3f925234e 100644 --- a/dotcom-rendering/src/client/bootCmp.ts +++ b/dotcom-rendering/src/client/bootCmp.ts @@ -45,9 +45,7 @@ const initialiseCmp = async () => { * as a separate chunk. @see {PrivacySettingsLink.island.tsx} */ const eagerlyImportPrivacySettingsLinkIsland = () => - import( - /* webpackMode: 'eager' */ '../components/PrivacySettingsLink.island' - ); + import('../components/PrivacySettingsLink.island'); /** * Keep this file in sync with CONSENT_TIMING in static/src/javascripts/boot.js in frontend diff --git a/dotcom-rendering/src/client/islands/islandRegistry.ts b/dotcom-rendering/src/client/islands/islandRegistry.ts index 6e8524d5cb2..b2e5af7d6d2 100644 --- a/dotcom-rendering/src/client/islands/islandRegistry.ts +++ b/dotcom-rendering/src/client/islands/islandRegistry.ts @@ -2,16 +2,8 @@ * Static registry of all island components, built at compile time * via Vite's import.meta.glob. * - * Each matched file becomes a lazy chunk (eager: false), exactly - * matching the previous webpack behaviour where each island was - * a separate dynamically-loaded chunk. - * - * Replaces the webpack magic comments in doHydration.tsx: - * import( - * /* webpackInclude: /\.island\.tsx$/ *​/ - * /* webpackChunkName: "[request]" *​/ - * `../../components/${name}.island` - * ) + * Each matched file becomes a lazy chunk (eager: false), so each + * island is a separate dynamically-loaded chunk. */ const islandModules = import.meta.glob>( '../../components/*.island.tsx', diff --git a/dotcom-rendering/src/client/ophan/ophan.ts b/dotcom-rendering/src/client/ophan/ophan.ts index d7259ee1b8b..3c72a3305e1 100644 --- a/dotcom-rendering/src/client/ophan/ophan.ts +++ b/dotcom-rendering/src/client/ophan/ophan.ts @@ -48,9 +48,7 @@ export const getOphan = async ( } // We've taken '@guardian/ophan-tracker-js' out of the apps client bundle (made it external in webpack) because we don't ever expect this method to be called. Tracking in apps is done natively. - const { default: ophan } = await import( - /* webpackMode: "eager" */ '@guardian/ophan-tracker-js' - ); + const { default: ophan } = await import('@guardian/ophan-tracker-js'); const record: (typeof ophan)['record'] = (event, callback) => { ophan.record(event, callback); diff --git a/dotcom-rendering/src/components/LiveBlogEpic.island.tsx b/dotcom-rendering/src/components/LiveBlogEpic.island.tsx index 708bbbf4035..4b842cda5c7 100644 --- a/dotcom-rendering/src/components/LiveBlogEpic.island.tsx +++ b/dotcom-rendering/src/components/LiveBlogEpic.island.tsx @@ -43,9 +43,7 @@ const useEpic = ({ name }: { name: string }) => { const [Epic, setEpic] = useState>(); useEffect(() => { - import( - /* webpackChunkName: "contributions-liveblog-epic" */ `./marketing/epics/ContributionsLiveblogEpic` - ) + import(`./marketing/epics/ContributionsLiveblogEpic`) .then((epicModule) => { setEpic(() => epicModule.ContributionsLiveblogEpic); }) diff --git a/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx b/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx index 80e0fc6aa77..2d253f6f6db 100644 --- a/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx +++ b/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx @@ -11,9 +11,7 @@ export const ReaderRevenueDev = ({ shouldHideReaderRevenue }: Props) => { const loadAndRun = (key: K) => (asExistingSupporter: boolean) => - import( - /* webpackChunkName: "readerRevenueDevUtils" */ '../lib/readerRevenueDevUtils' - ) + import('../lib/readerRevenueDevUtils') .then((utils) => utils[key]( asExistingSupporter, diff --git a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx index 3cb0b3aba7b..8fc31966fbb 100644 --- a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx +++ b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx @@ -9,9 +9,7 @@ const SignInGateMain = React.lazy(() => { 'identity', 'SignInGateMain', ); - return import( - /* webpackChunkName: "SignInGateMain" */ '../gateDesigns/SignInGateMain' - ).then((module) => { + return import('../gateDesigns/SignInGateMain').then((module) => { endPerformanceMeasure(); return { default: module.SignInGateMain }; }); diff --git a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx index 030d649cacc..d80b569d31a 100644 --- a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx +++ b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx @@ -9,12 +9,12 @@ const SignInGateCustomizableText = React.lazy(() => { 'identity', 'SignInGateCustomizableText', ); - return import( - /* webpackChunkName: "SignInGateCustomizableText" */ '../gateDesigns/SignInGateCustomizableText' - ).then((module) => { - endPerformanceMeasure(); - return { default: module.SignInGateCustomizableText }; - }); + return import('../gateDesigns/SignInGateCustomizableText').then( + (module) => { + endPerformanceMeasure(); + return { default: module.SignInGateCustomizableText }; + }, + ); }); export const signInGateComponent: SignInGateComponent = { diff --git a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx index f0a3510d878..3dba5cbe84c 100644 --- a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx +++ b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx @@ -9,12 +9,12 @@ const SignInGateCustomizableText = React.lazy(() => { 'identity', 'SignInGateCustomizableText', ); - return import( - /* webpackChunkName: "SignInGateCustomizableText" */ '../gateDesigns/SignInGateCustomizableText' - ).then((module) => { - endPerformanceMeasure(); - return { default: module.SignInGateCustomizableText }; - }); + return import('../gateDesigns/SignInGateCustomizableText').then( + (module) => { + endPerformanceMeasure(); + return { default: module.SignInGateCustomizableText }; + }, + ); }); export const signInGateComponent: SignInGateComponent = { diff --git a/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx b/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx index 43bbf6a4218..094e562d187 100644 --- a/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx +++ b/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx @@ -10,9 +10,7 @@ const SignInGateFakeSocial = React.lazy(() => { 'SignInGateFakeSocial', ); - return import( - /* webpackChunkName: "SignInGateFakeSocial" */ '../gateDesigns/SignInGateFakeSocial' - ).then((module) => { + return import('../gateDesigns/SignInGateFakeSocial').then((module) => { endPerformanceMeasure(); return { default: module.SignInGateFakeSocial }; }); diff --git a/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx b/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx index cdc046d69f1..18ba15a2d88 100644 --- a/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx +++ b/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx @@ -9,9 +9,7 @@ const SignInGateMain = React.lazy(() => { 'identity', 'SignInGateMain', ); - return import( - /* webpackChunkName: "SignInGateMain" */ '../gateDesigns/SignInGateMain' - ).then((module) => { + return import('../gateDesigns/SignInGateMain').then((module) => { endPerformanceMeasure(); return { default: module.SignInGateMain }; }); diff --git a/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx b/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx index badaa41499c..f3ea9b73439 100644 --- a/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx +++ b/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx @@ -9,9 +9,7 @@ const SignInGateMain = React.lazy(() => { 'identity', 'SignInGateMain', ); - return import( - /* webpackChunkName: "SignInGateMain" */ '../gateDesigns/SignInGateMain' - ).then((module) => { + return import('../gateDesigns/SignInGateMain').then((module) => { endPerformanceMeasure(); return { default: module.SignInGateMain }; }); @@ -22,12 +20,12 @@ const SignInGateMainCheckoutComplete = React.lazy(() => { 'identity', 'SignInGateMainCheckoutComplete', ); - return import( - /* webpackChunkName: "SignInGateMainCheckoutComplete" */ '../gateDesigns/SignInGateMainCheckoutComplete' - ).then((module) => { - endPerformanceMeasure(); - return { default: module.SignInGateMainCheckoutComplete }; - }); + return import('../gateDesigns/SignInGateMainCheckoutComplete').then( + (module) => { + endPerformanceMeasure(); + return { default: module.SignInGateMainCheckoutComplete }; + }, + ); }); /** diff --git a/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx b/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx index 866f37a1d9c..ea30bafcb31 100644 --- a/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx +++ b/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx @@ -197,9 +197,7 @@ export const MaybeBrazeEpic = ({ meta, countryCode, idApiUrl }: EpicConfig) => { useState(); useEffect(() => { - import( - /* webpackChunkName: "guardian-braze-components-end-of-article" */ '@guardian/braze-components/end-of-article' - ) + import('@guardian/braze-components/end-of-article') .then((module) => { setBrazeComponent(() => module.BrazeEndOfArticleComponent); }) diff --git a/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx b/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx index 4e06b494212..daca4d2288f 100644 --- a/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx +++ b/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx @@ -188,9 +188,7 @@ export const ReaderRevenueEpic = ({ props }: ModuleData) => { 'contributions-epic-module', ); - import( - /* webpackChunkName: "contributions-epic" */ `../marketing/epics/ContributionsEpic` - ) + import(`../marketing/epics/ContributionsEpic`) .then((epicModule) => { endPerformanceMeasure(); setEpic(() => epicModule.ContributionsEpic); // useState requires functions to be wrapped diff --git a/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx b/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx index e136765d883..4d07c524da1 100644 --- a/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx +++ b/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx @@ -189,9 +189,7 @@ export const BrazeBanner = ({ meta, idApiUrl }: Props) => { useState(); useEffect(() => { - import( - /* webpackChunkName: "guardian-braze-components-banner" */ '@guardian/braze-components/banner' - ) + import('@guardian/braze-components/banner') .then((module) => { setBrazeComponent(() => module.BrazeBannerComponent); }) diff --git a/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx b/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx index 3a7cf32b508..a6f8d644045 100644 --- a/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx +++ b/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx @@ -334,10 +334,8 @@ export const ReaderRevenueBanner = ({ useEffect(() => { (name === 'SignInPromptBanner' - ? /* webpackChunkName: "sign-in-prompt-banner" */ - import(`../marketing/banners/signInPrompt/SignInPromptBanner`) - : /* webpackChunkName: "designable-banner" */ - import(`../marketing/banners/designableBanner/Banner`) + ? import(`../marketing/banners/signInPrompt/SignInPromptBanner`) + : import(`../marketing/banners/designableBanner/Banner`) ) .then((bannerModule: Record) => { setBanner(() => bannerModule[name] ?? null); diff --git a/dotcom-rendering/src/components/TopBarSupport.island.tsx b/dotcom-rendering/src/components/TopBarSupport.island.tsx index 80f334ad891..9e2f62585ae 100644 --- a/dotcom-rendering/src/components/TopBarSupport.island.tsx +++ b/dotcom-rendering/src/components/TopBarSupport.island.tsx @@ -118,10 +118,8 @@ const ReaderRevenueLinksRemote = ({ return ( module.name === 'SignInPromptHeader' - ? /* webpackChunkName: "sign-in-prompt-header" */ - import('./marketing/header/SignInPromptHeader') - : /* webpackChunkName: "header" */ - import('./marketing/header/Header') + ? import('./marketing/header/SignInPromptHeader') + : import('./marketing/header/Header') ).then( ( headerModule: Record< diff --git a/dotcom-rendering/src/lib/braze/initialiseBraze.ts b/dotcom-rendering/src/lib/braze/initialiseBraze.ts index ab56e38d366..b389b8af08e 100644 --- a/dotcom-rendering/src/lib/braze/initialiseBraze.ts +++ b/dotcom-rendering/src/lib/braze/initialiseBraze.ts @@ -16,7 +16,7 @@ const SDK_OPTIONS: braze.InitializationOptions = { const initialiseBraze = async (apiKey: string): Promise => { const importedBraze = (await import( - /* webpackChunkName: "braze-web-sdk-core" */ '@braze/web-sdk' + '@braze/web-sdk' )) as unknown as typeof braze; importedBraze.setLogger((message) => log('tx', message)); diff --git a/dotcom-rendering/src/lib/thrift/protocols.ts b/dotcom-rendering/src/lib/thrift/protocols.ts index d7722aa0a73..8878b7f4458 100644 --- a/dotcom-rendering/src/lib/thrift/protocols.ts +++ b/dotcom-rendering/src/lib/thrift/protocols.ts @@ -9,9 +9,7 @@ import type { TTransport, TType, } from '@creditkarma/thrift-server-core'; -import thriftCore from '@creditkarma/thrift-server-core'; - -const { MessageType, TProtocol } = thriftCore; +import { MessageType, TProtocol } from '@creditkarma/thrift-server-core'; export abstract class TProtocolDecorator extends TProtocol { private concreteProtocol: TProtocol; diff --git a/dotcom-rendering/webpack/.swcrc.json b/dotcom-rendering/webpack/.swcrc.json deleted file mode 100644 index 490d70a5893..00000000000 --- a/dotcom-rendering/webpack/.swcrc.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/swcrc", - "jsc": { - "parser": { - "syntax": "typescript", - "tsx": true, - "decorators": false, - "dynamicImport": true - }, - "transform": { - "react": { - "runtime": "automatic", - "importSource": "@emotion/react" - } - }, - "experimental": { - "plugins": [["@swc/plugin-emotion", {}]] - } - }, - "sourceMaps": true -} diff --git a/dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts b/dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts deleted file mode 100644 index af3e405cadd..00000000000 --- a/dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare module 'webpack-filter-warnings-plugin' { - import type { Compiler, WebpackPluginInstance } from 'webpack'; - - export default class FilterWarningsPlugin implements WebpackPluginInstance { - constructor(options: { exclude: RegExp }); - - apply(compiler: Compiler): void; - } -} diff --git a/dotcom-rendering/webpack/@types/webpack-messages/index.d.ts b/dotcom-rendering/webpack/@types/webpack-messages/index.d.ts deleted file mode 100644 index 6c3cb0a2112..00000000000 --- a/dotcom-rendering/webpack/@types/webpack-messages/index.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -declare module 'webpack-messages' { - import type * as webpack from 'webpack'; - - type Options = { - name: string; - onComplete?: (...args: unknown[]) => void; - logger?: (msg: string) => void; - }; - - class WebpackMessages implements webpack.WebpackPluginInstance { - constructor(options: Options); - - printError(str: string, arr: string[]): void; - - apply(compiler: webpack.Compiler): void; - } - - export default WebpackMessages; -} diff --git a/dotcom-rendering/webpack/svg.cjs b/dotcom-rendering/webpack/svg.cjs deleted file mode 100644 index 0976f29ade1..00000000000 --- a/dotcom-rendering/webpack/svg.cjs +++ /dev/null @@ -1,15 +0,0 @@ -/** @satisfies {import('webpack').RuleSetRule} */ -const svgr = { - test: /\.svg$/, - use: [ - { - loader: '@svgr/webpack', - options: { - /** this ensures that we keep the viewBox for imported SVGs */ - svgo: false, - }, - }, - ], -}; - -module.exports = { svgr }; diff --git a/dotcom-rendering/webpack/webpack.config.client.js b/dotcom-rendering/webpack/webpack.config.client.js deleted file mode 100644 index 056f5697e01..00000000000 --- a/dotcom-rendering/webpack/webpack.config.client.js +++ /dev/null @@ -1,186 +0,0 @@ -const webpack = require('webpack'); -const { WebpackManifestPlugin } = require('webpack-manifest-plugin'); -const swcConfig = require('./.swcrc.json'); -const { getBrowserTargets } = require('./browser-targets'); -const { svgr } = require('./svg.cjs'); - -const DEV = process.env.NODE_ENV === 'development'; - -/** @param {Record | string[]} targets */ -const swcLoader = (targets) => [ - { - loader: 'swc-loader', - options: { - ...swcConfig, - env: { - dynamicImport: true, - targets, - }, - }, - }, -]; - -/** @typedef {import('../src/lib/assets').Build} Build*/ - -/** - * @param {Build} build - * @returns {string} - */ -const generateName = (build) => { - const chunkhashString = DEV ? '' : '.[chunkhash]'; - return `[name].${build}${chunkhashString}.js`; -}; - -/** - * @param {Build} build - * @returns {string} - */ -const getEntryIndex = (build) => { - switch (build) { - case 'client.editionsCrossword': - return './src/client/main.editionsCrossword.tsx'; - case 'client.apps': - return './src/client/main.apps.ts'; - default: - return './src/client/main.web.ts'; - } -}; - -/** - * @param {Build} build - * @returns {{ loader: string, options: Record}} - */ -const getLoaders = (build) => { - switch (build) { - case 'client.editionsCrossword': - case 'client.apps': - return swcLoader(['android >= 5', 'ios >= 12']); - case 'client.web.variant': - case 'client.web': - return swcLoader(getBrowserTargets()); - } -}; - -/** - * @param {{ build: Build }} options - * @returns {import('webpack').Configuration} - */ -module.exports = ({ build }) => ({ - entry: { - index: getEntryIndex(build), - debug: './src/client/debug/debug.ts', - }, - optimization: - // We don't need chunk optimization for apps as we use the 'LimitChunkCountPlugin' to produce just 1 chunk - build === 'client.apps' || build === 'client.editionsCrossword' - ? undefined - : { - splitChunks: { - cacheGroups: { - // our own chunk, which is shared between all bundles - frameworks: { - test: /[\\/]node_modules[\\/](preact|react-is|hoist-non-react-statistics|swr|@emotion|stylis)[\\/]/, - chunks: 'all', - name: 'frameworks', - enforce: true, - }, - // defining our own chunk above overrides the webpack defaults, - // so now we restore them - // https://webpack.js.org/plugins/split-chunks-plugin/#optimizationsplitchunks - defaultVendors: { - test: /[\\/]node_modules[\\/]/, - priority: -10, - reuseExistingChunk: true, - }, - default: { - minChunks: 2, - priority: -20, - reuseExistingChunk: true, - }, - }, - }, - }, - output: { - filename: (data) => { - // We don't want to hash the debug script so it can be used in bookmarklets - if (data.chunk.name === 'debug') { - return `[name].js`; - } - return generateName(build); - }, - chunkFilename: generateName(build), - publicPath: '', - }, - plugins: [ - new WebpackManifestPlugin({ - fileName: `manifest.${build}.json`, - }), - ...(build === 'client.apps' || build === 'client.editionsCrossword' - ? [ - new webpack.optimize.LimitChunkCountPlugin({ - maxChunks: 1, - }), - new webpack.ProvidePlugin({ - Buffer: ['buffer', 'Buffer'], - }), - ] - : []), - ], - externals: getExternalModules(build), - module: { - rules: [ - { - test: /\.[jt]sx?|mjs$/, - exclude: module.exports.transpileExclude, - use: getLoaders(build), - }, - { - test: /\.css$/, - use: ['to-string-loader', 'css-loader'], - }, - svgr, - ], - }, - resolve: { - alias: { - react: 'preact/compat', - 'react-dom/test-utils': 'preact/test-utils', - 'react-dom': 'preact/compat', - }, - }, -}); - -module.exports.transpileExclude = { - // Exclude node_modules from transpilation - and: [/node_modules/], - // Do not exclude i.e. include - not: [ - // Include all @guardian modules - /@guardian\//, - // Include the dynamic-import-polyfill - /dynamic-import-polyfill/, - /valibot/, - ], -}; - -module.exports.getLoaders = getLoaders; - -/** - * We are making "@guardian/ophan-tracker-js" external to the apps bundle - * because we never expect to use it in apps pages. - * - * Tracking is done natively. - * - * @param {Build} build */ -const getExternalModules = (build) => { - if (build === 'client.apps') { - return { '@guardian/ophan-tracker-js': 'guardian.ophan' }; - } - if (build === 'client.editionsCrossword') { - return { - '@guardian/ophan-tracker-js': 'guardian.ophan', - '@guardian/commercial': 'guardian.commercial', - }; - } - return undefined; -}; diff --git a/dotcom-rendering/webpack/webpack.config.dev-server.js b/dotcom-rendering/webpack/webpack.config.dev-server.js deleted file mode 100644 index d6e90146bfa..00000000000 --- a/dotcom-rendering/webpack/webpack.config.dev-server.js +++ /dev/null @@ -1,81 +0,0 @@ -// @ts-check -const path = require('node:path'); -const bodyParser = require('body-parser'); -const webpackHotServerMiddleware = require('webpack-hot-server-middleware'); -const { dim, reset, blue, underline } = require('../../scripts/log'); - -const port = 3030; - -console.log( - `${dim}DEV server running on${reset} ${blue}${underline}http://localhost:${port}${reset}`, -); - -module.exports = { - /** @type {import('webpack-dev-server').Configuration} */ - devServer: { - compress: false, - hot: false, - liveReload: true, - client: { - logging: 'warn', - overlay: true, - }, - port, - static: { - directory: path.join(__dirname, '..', 'src', 'static'), - publicPath: '/static/frontend', - }, - allowedHosts: ['r.thegulocal.com'], - devMiddleware: { - publicPath: '/assets/', - serverSideRender: true, - writeToDisk: true, - headers: (req, res) => { - // Allow any localhost request from accessing the assets - if ( - req.hostname === (process.env.HOSTNAME ?? 'localhost') && - req.headers.origin - ) { - res.setHeader( - 'Access-Control-Allow-Origin', - req.headers.origin, - ); - } - }, - }, - setupMiddlewares: (middlewares, devServer) => { - if (!devServer.app) { - throw new Error('webpack-dev-server is not defined'); - } - - // it turns out webpack dev server is just an express server - // with webpack-dev-middleware, so here we add some other middlewares - // of our own - - devServer.app.use(bodyParser.json({ limit: '10mb' })); - - devServer.app.get('/', (req, res) => { - res.sendFile( - path.join( - __dirname, - '..', - 'src', - 'server', - 'dev-index.html', - ), - ); - }); - - // webpack-hot-server-middleware needs to run after webpack-dev-middleware - middlewares.push({ - name: 'server', - // @ts-expect-error -- it’s a MultiCompiler - middleware: webpackHotServerMiddleware(devServer.compiler, { - chunkName: 'server', - }), - }); - - return middlewares; - }, - }, -}; diff --git a/dotcom-rendering/webpack/webpack.config.js b/dotcom-rendering/webpack/webpack.config.js deleted file mode 100644 index f4a89198a5c..00000000000 --- a/dotcom-rendering/webpack/webpack.config.js +++ /dev/null @@ -1,134 +0,0 @@ -// @ts-check -const path = require('node:path'); -const webpack = require('webpack'); -const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); -const { merge } = require('webpack-merge'); -const WebpackMessages = require('webpack-messages'); -const { BUILD_VARIANT: BUILD_VARIANT_SWITCH } = require('./bundles'); - -const dist = path.resolve(__dirname, '..', 'dist'); -const PROD = process.env.NODE_ENV === 'production'; -const DEV = process.env.NODE_ENV === 'development'; - -const BUILD_VARIANT = process.env.BUILD_VARIANT === 'true'; - -/** @typedef {import('../src/lib/assets').Build} Build */ - -/** - * @param {{ platform: 'server' | Build}} options - * @returns {import('webpack').Configuration} - */ -const commonConfigs = ({ platform }) => ({ - name: platform, - mode: DEV ? 'development' : 'production', - output: { - path: dist, - }, - stats: DEV ? 'errors-only' : 'normal', - devtool: - process.env.NODE_ENV === 'production' - ? 'source-map' - : 'eval-cheap-module-source-map', - resolve: { - extensions: ['.js', '.ts', '.tsx', '.jsx'], - alias: { - // css-tree wasn't bundling properly due to CJS build's createRequire so this points imports to the esm dist - 'css-tree': require.resolve('css-tree/dist/csstree.esm'), - }, - }, - ignoreWarnings: [ - /** - * Express uses dynamic imports to load template engines. As we're not currently using a template engine in DCR - * we can ignore this error. - */ - { - module: /..\/node_modules\/express\/lib\/view.js/, - message: - /Critical dependency: the request of a dependency is an expression/, - }, - /** - * Log4js uses dynamic imports to load non-core appenders. We're only using 'console' and 'file' appenders in DCR - * which are specifically imported by log4js without using dynamic imports. - */ - { - module: /..\/node_modules\/log4js\/lib\/appenders\/index.js/, - message: - /Critical dependency: the request of a dependency is an expression/, - }, - ], - plugins: [ - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), - 'process.env.HOSTNAME': JSON.stringify(process.env.HOSTNAME), - }), - // Matching modules specified in this regex will not be imported during the webpack build - // We use this if there are optional dependencies (e.g in jsdom, ws) to remove uneccesary warnings in our builds / console outpouts. - new webpack.IgnorePlugin({ - resourceRegExp: /^(canvas|bufferutil|utf-8-validate)$/, - }), - ...(DEV - ? // DEV plugins - [ - // @ts-expect-error -- somehow the type declaration isn’t playing nice - new WebpackMessages({ - name: platform, - }), - ] - : // PROD plugins - [ - new BundleAnalyzerPlugin({ - reportFilename: path.join( - dist, - 'stats', - `${platform}-bundles.html`, - ), - analyzerMode: 'static', - openAnalyzer: false, - logLevel: 'warn', - }), - new BundleAnalyzerPlugin({ - reportFilename: path.join( - dist, - 'stats', - `${platform}-bundles.json`, - ), - analyzerMode: 'json', - openAnalyzer: false, - logLevel: 'warn', - }), - ]), - ], - infrastructureLogging: { - level: PROD ? 'info' : 'warn', - }, -}); - -/** @type {readonly Build[]} */ -const clientBuilds = [ - 'client.web', - ...((PROD && BUILD_VARIANT_SWITCH) || BUILD_VARIANT - ? /** @type {const} */ (['client.web.variant']) - : []), - 'client.apps', - 'client.editionsCrossword', -]; - -module.exports = [ - merge( - commonConfigs({ - platform: 'server', - }), - require(`./webpack.config.server`), - DEV ? require(`./webpack.config.dev-server`) : {}, - ), - ...clientBuilds.map((build) => - merge( - commonConfigs({ - platform: build, - }), - require(`./webpack.config.client`)({ - build, - }), - ), - ), -]; diff --git a/dotcom-rendering/webpack/webpack.config.server.js b/dotcom-rendering/webpack/webpack.config.server.js deleted file mode 100644 index bb3282477b8..00000000000 --- a/dotcom-rendering/webpack/webpack.config.server.js +++ /dev/null @@ -1,92 +0,0 @@ -// @ts-check -const path = require('path'); -const nodeExternals = require('webpack-node-externals'); -const swcConfig = require('./.swcrc.json'); -const { svgr } = require('./svg.cjs'); -const { transpileExclude } = require('./webpack.config.client.js'); - -const DEV = process.env.NODE_ENV === 'development'; -const nodeVersion = process.versions.node; - -const swcLoader = [ - { - loader: 'swc-loader', - options: { - ...swcConfig, - minify: DEV ? false : true, - env: { - targets: { - node: nodeVersion, - }, - }, - }, - }, -]; - -/** @type {import('webpack').Configuration} */ -module.exports = { - entry: { - server: './src/server/server.ts', - }, - output: { - filename: `[name].js`, - chunkFilename: `[name].js`, - libraryTarget: 'commonjs2', - pathinfo: true, - publicPath: '', - }, - target: 'node', - externalsPresets: { node: true }, - optimization: { - minimize: false, - runtimeChunk: false, - }, - externals: [ - // https://github.com/liady/webpack-node-externals/issues/105 - ...(DEV - ? [ - nodeExternals({ - allowlist: [ - /^@guardian/, - // this project is ESM-only and throws an error when not bundled - 'screenfull', - ], - additionalModuleDirs: [ - // Since we use workspaces for the monorepo, node_modules will be co-located - // both in the '(project-root)/dotcom-rendering/node_modules' directory (default for webpack-node-externals) - // but also in project root, and any workspaces we link to. - // We want to make sure all of these are removed from the server build. - '../node_modules', - ], - }), - ] - : []), - // @aws-sdk modules are only used in CODE/PROD, so we don't need to - // include them in the development bundle - ({ request }, callback) => { - return process.env.NODE_ENV === 'development' && - request?.startsWith('@aws-sdk') - ? callback(undefined, `commonjs ${request}`) - : callback(); - }, - ({ request }, callback) => { - return request?.endsWith('manifest.json') - ? callback(undefined, `commonjs ${request}`) - : callback(); - }, - ], - module: { - rules: [ - { - test: /(\.tsx|\.js|\.ts)$/, - exclude: transpileExclude, - use: swcLoader, - }, - svgr, - { - test: /jsdom.*computed-style\.js$/, - use: [path.resolve(__dirname, './jsdom-patch.js')], - }, - ], - }, -}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 16a06c18283..c11eec48d90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -219,16 +219,16 @@ importers: version: link:../config '@sveltejs/adapter-auto': specifier: 7.0.1 - version: 7.0.1(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0))) + version: 7.0.1(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0))) '@sveltejs/adapter-static': specifier: 3.0.10 - version: 3.0.10(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0))) + version: 3.0.10(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0))) '@sveltejs/kit': specifier: 2.60.1 - version: 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)) + version: 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) '@sveltejs/vite-plugin-svelte': specifier: 7.1.2 - version: 7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)) + version: 7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) svelte: specifier: 5.56.3 version: 5.56.3(@typescript-eslint/types@8.59.2) @@ -240,7 +240,7 @@ importers: version: 6.0.3 vite: specifier: 6.4.3 - version: 6.4.3(@types/node@24.12.4)(terser@5.49.0) + version: 6.4.3(@types/node@24.12.4)(terser@5.46.0) ab-testing/notification-lambda: dependencies: @@ -353,9 +353,6 @@ importers: '@guardian/react-crossword': specifier: 19.0.1 version: 19.0.1(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@guardian/libs@32.0.0(@guardian/ophan-tracker-js@4.0.2)(tslib@2.6.2)(typescript@6.0.3))(@guardian/source@12.2.1(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@6.0.3))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@6.0.3) - '@guardian/shimport': - specifier: 1.0.2 - version: 1.0.2 '@guardian/source': specifier: 12.2.1 version: 12.2.1(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@6.0.3) @@ -379,19 +376,13 @@ importers: version: 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/addon-docs': specifier: 10.3.3 - version: 10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4) - '@storybook/addon-webpack5-compiler-swc': - specifier: 4.0.3 - version: 4.0.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.108.4) - '@storybook/react-webpack5': + version: 10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + '@storybook/react-vite': specifier: 10.3.3 - version: 10.3.3(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(webpack-cli@7.2.1) - '@svgr/webpack': - specifier: 8.1.0 - version: 8.1.0(typescript@6.0.3) + version: 10.3.3(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) '@swc/cli': specifier: 0.8.1 - version: 0.8.1(@swc/core@1.15.41)(chokidar@5.0.0) + version: 0.8.1(@swc/core@1.15.41) '@swc/core': specifier: 1.15.41 version: 1.15.41 @@ -488,15 +479,6 @@ importers: '@types/twitter-for-web': specifier: 0.0.6 version: 0.0.6 - '@types/webpack-bundle-analyzer': - specifier: 4.7.0 - version: 4.7.0(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - '@types/webpack-env': - specifier: 1.18.8 - version: 1.18.8 - '@types/webpack-node-externals': - specifier: 3.0.4 - version: 3.0.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) '@types/youtube': specifier: 0.0.50 version: 0.0.50 @@ -541,7 +523,7 @@ importers: version: 11.0.0 css-loader: specifier: 7.1.4 - version: 7.1.4(webpack@5.108.4) + version: 7.1.4 dompurify: specifier: 3.4.7 version: 3.4.7 @@ -677,15 +659,9 @@ importers: stylelint-config-recommended: specifier: 14.0.0 version: 14.0.0(stylelint@16.26.1(typescript@6.0.3)) - swc-loader: - specifier: 0.2.7 - version: 0.2.7(@swc/core@1.15.41)(webpack@5.108.4) swr: specifier: 1.3.0 version: 1.3.0(react@18.3.1) - to-string-loader: - specifier: 1.2.0 - version: 1.2.0 trusted-types: specifier: 2.0.0 version: 2.0.0 @@ -722,39 +698,6 @@ importers: web-vitals: specifier: 4.2.3 version: 4.2.3 - webpack: - specifier: 5.108.4 - version: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - webpack-assets-manifest: - specifier: 6.5.2 - version: 6.5.2(webpack@5.108.4) - webpack-bundle-analyzer: - specifier: 5.3.0 - version: 5.3.0 - webpack-cli: - specifier: 7.2.1 - version: 7.2.1(js-yaml@4.1.1)(json5@2.2.3)(webpack-bundle-analyzer@5.3.0)(webpack-dev-server@6.0.0)(webpack@5.108.4) - webpack-dev-server: - specifier: 6.0.0 - version: 6.0.0(tslib@2.6.2)(webpack-cli@7.2.1)(webpack@5.108.4) - webpack-hot-server-middleware: - specifier: 0.6.1 - version: 0.6.1(webpack@5.108.4) - webpack-manifest-plugin: - specifier: 6.0.1 - version: 6.0.1(webpack@5.108.4) - webpack-merge: - specifier: 6.0.1 - version: 6.0.1 - webpack-messages: - specifier: 2.0.4 - version: 2.0.4 - webpack-node-externals: - specifier: 3.0.0 - version: 3.0.0 - webpack-sources: - specifier: 3.5.1 - version: 3.5.1 zod: specifier: 4.1.12 version: 4.1.12 @@ -767,10 +710,10 @@ importers: version: 7.0.1(rollup@4.62.0) vite: specifier: ^6.2.6 - version: 6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) + version: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) vite-plugin-svgr: specifier: 5.2.0 - version: 5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2)) + version: 5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) packages: @@ -1096,39 +1039,14 @@ packages: resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.27.3': - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.29.7': resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.28.3': - resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.27.1': - resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.6.5': - resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.28.6': resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} @@ -1139,34 +1057,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.27.1': - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} - engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.28.6': - resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.27.1': - resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -1179,10 +1073,6 @@ packages: resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.28.3': - resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.6': resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} @@ -1192,42 +1082,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': - resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': - resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': - resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': - resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': - resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -1243,18 +1097,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.27.1': - resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -1313,815 +1155,436 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.27.1': - resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.28.0': - resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.27.1': - resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.27.1': - resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@babel/plugin-transform-block-scoping@7.28.4': - resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@borewit/text-codec@0.2.2': + resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==} - '@babel/plugin-transform-class-properties@7.27.1': - resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true - '@babel/plugin-transform-class-static-block@7.28.3': - resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 + '@braze/web-sdk@6.5.0': + resolution: {integrity: sha512-MdfwZn+tfe7+tR8Ir5468/njQDGhgVB9tBthq7gwSETsjv6Q+Hw2bXiQy3scDcACI2RLqiq+dNXKh6fD+pN4/Q==} - '@babel/plugin-transform-classes@7.28.4': - resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@cacheable/memory@2.0.8': + resolution: {integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==} - '@babel/plugin-transform-computed-properties@7.27.1': - resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@cacheable/utils@2.4.0': + resolution: {integrity: sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==} - '@babel/plugin-transform-destructuring@7.28.0': - resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@creditkarma/thrift-server-core@1.0.4': + resolution: {integrity: sha512-Jook5uFJqPeM/D0taSdKHeoerZB6HboSDMqBDWhVDJVSKJGWPSMch4GNALRqr8nCekLKMYkdCgj4FAVetnxpGA==} - '@babel/plugin-transform-dotall-regex@7.27.1': - resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} - '@babel/plugin-transform-duplicate-keys@7.27.1': - resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} - engines: {node: '>=6.9.0'} + '@csstools/css-calc@3.2.1': + resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} + engines: {node: '>=20.19.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@babel/plugin-transform-dynamic-import@7.27.1': - resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} - engines: {node: '>=6.9.0'} + '@csstools/css-color-parser@4.1.4': + resolution: {integrity: sha512-yI8kNhHiOrLb8Rlulsk07DeQz0PwyT69FX9dkz5rAp7p9RUwFKEXnZpBGzURiLHgi66YqIWxOHn1nij8Lrg27Q==} + engines: {node: '>=20.19.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@babel/plugin-transform-explicit-resource-management@7.28.0': - resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} - engines: {node: '>=6.9.0'} + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@csstools/css-tokenizer': ^3.0.4 - '@babel/plugin-transform-exponentiation-operator@7.27.1': - resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} - engines: {node: '>=6.9.0'} + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@csstools/css-tokenizer': ^4.0.0 - '@babel/plugin-transform-export-namespace-from@7.27.1': - resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} - engines: {node: '>=6.9.0'} + '@csstools/css-syntax-patches-for-csstree@1.1.1': + resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} peerDependencies: - '@babel/core': ^7.0.0-0 + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true - '@babel/plugin-transform-for-of@7.27.1': - resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} - engines: {node: '>=6.9.0'} + '@csstools/css-syntax-patches-for-csstree@1.1.5': + resolution: {integrity: sha512-oNjBvzLq2GPZtJphCjLqXow/cHySHSgtxvKZb7OqSZ/xHgw6NWNhfad+6AB9cLeVm6eA9d/qMll3JdEHjy6M+A==} peerDependencies: - '@babel/core': ^7.0.0-0 + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true - '@babel/plugin-transform-function-name@7.27.1': - resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} - '@babel/plugin-transform-json-strings@7.27.1': - resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} - '@babel/plugin-transform-literals@7.27.1': - resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} - engines: {node: '>=6.9.0'} + '@csstools/media-query-list-parser@4.0.3': + resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} + engines: {node: '>=18'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@babel/plugin-transform-logical-assignment-operators@7.27.1': - resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} - engines: {node: '>=6.9.0'} + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} peerDependencies: - '@babel/core': ^7.0.0-0 + postcss-selector-parser: ^7.0.0 - '@babel/plugin-transform-member-expression-literals@7.27.1': - resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@dual-bundle/import-meta-resolve@4.2.1': + resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} - '@babel/plugin-transform-modules-amd@7.27.1': - resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - '@babel/plugin-transform-modules-commonjs@7.27.1': - resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - '@babel/plugin-transform-modules-systemjs@7.29.4': - resolution: {integrity: sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - '@babel/plugin-transform-modules-umd@7.27.1': - resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} - '@babel/plugin-transform-new-target@7.27.1': - resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': - resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - '@babel/plugin-transform-numeric-separator@7.27.1': - resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} - engines: {node: '>=6.9.0'} + '@emotion/react@11.14.0': + resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true - '@babel/plugin-transform-object-rest-spread@7.28.4': - resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} - '@babel/plugin-transform-object-super@7.27.1': - resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} - engines: {node: '>=6.9.0'} + '@emotion/server@11.11.0': + resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.27.1': - resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/css': ^11.0.0-rc.0 + peerDependenciesMeta: + '@emotion/css': + optional: true - '@babel/plugin-transform-optional-chaining@7.27.1': - resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - '@babel/plugin-transform-parameters@7.27.7': - resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} - '@babel/plugin-transform-private-methods@7.27.1': - resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} - engines: {node: '>=6.9.0'} + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=16.8.0' - '@babel/plugin-transform-private-property-in-object@7.27.1': - resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} - '@babel/plugin-transform-property-literals@7.27.1': - resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - '@babel/plugin-transform-react-constant-elements@7.23.3': - resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] - '@babel/plugin-transform-react-display-name@7.27.1': - resolution: {integrity: sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] - '@babel/plugin-transform-react-jsx-development@7.27.1': - resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] - '@babel/plugin-transform-react-jsx@7.27.1': - resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] - '@babel/plugin-transform-react-pure-annotations@7.27.1': - resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] - '@babel/plugin-transform-regenerator@7.28.4': - resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] - '@babel/plugin-transform-regexp-modifiers@7.27.1': - resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] - '@babel/plugin-transform-reserved-words@7.27.1': - resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] - '@babel/plugin-transform-shorthand-properties@7.27.1': - resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] - '@babel/plugin-transform-spread@7.27.1': - resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] - '@babel/plugin-transform-sticky-regex@7.27.1': - resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] - '@babel/plugin-transform-template-literals@7.27.1': - resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] - '@babel/plugin-transform-typeof-symbol@7.27.1': - resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] - '@babel/plugin-transform-typescript@7.27.1': - resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] - '@babel/plugin-transform-unicode-escapes@7.27.1': - resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] - '@babel/plugin-transform-unicode-property-regex@7.27.1': - resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] - '@babel/plugin-transform-unicode-regex@7.27.1': - resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] - '@babel/plugin-transform-unicode-sets-regex@7.27.1': - resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] - '@babel/preset-env@7.28.3': - resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] - '@babel/preset-react@7.27.1': - resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] - '@babel/preset-typescript@7.27.1': - resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} - engines: {node: '>=6.9.0'} + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] - '@babel/template@7.28.6': - resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} - engines: {node: '>=6.9.0'} + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] - '@babel/traverse@7.29.0': - resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} - engines: {node: '>=6.9.0'} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} - engines: {node: '>=6.9.0'} + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] - '@borewit/text-codec@0.2.2': - resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==} + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] - '@bramus/specificity@2.4.2': - resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} - hasBin: true - - '@braze/web-sdk@6.5.0': - resolution: {integrity: sha512-MdfwZn+tfe7+tR8Ir5468/njQDGhgVB9tBthq7gwSETsjv6Q+Hw2bXiQy3scDcACI2RLqiq+dNXKh6fD+pN4/Q==} - - '@cacheable/memory@2.0.8': - resolution: {integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==} - - '@cacheable/utils@2.4.0': - resolution: {integrity: sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==} - - '@creditkarma/thrift-server-core@1.0.4': - resolution: {integrity: sha512-Jook5uFJqPeM/D0taSdKHeoerZB6HboSDMqBDWhVDJVSKJGWPSMch4GNALRqr8nCekLKMYkdCgj4FAVetnxpGA==} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@csstools/color-helpers@6.0.2': - resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} - engines: {node: '>=20.19.0'} - - '@csstools/css-calc@3.2.1': - resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@csstools/css-parser-algorithms': ^4.0.0 - '@csstools/css-tokenizer': ^4.0.0 - - '@csstools/css-color-parser@4.1.4': - resolution: {integrity: sha512-yI8kNhHiOrLb8Rlulsk07DeQz0PwyT69FX9dkz5rAp7p9RUwFKEXnZpBGzURiLHgi66YqIWxOHn1nij8Lrg27Q==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@csstools/css-parser-algorithms': ^4.0.0 - '@csstools/css-tokenizer': ^4.0.0 - - '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 - - '@csstools/css-parser-algorithms@4.0.0': - resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@csstools/css-tokenizer': ^4.0.0 - - '@csstools/css-syntax-patches-for-csstree@1.1.1': - resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} - peerDependencies: - css-tree: ^3.2.1 - peerDependenciesMeta: - css-tree: - optional: true - - '@csstools/css-syntax-patches-for-csstree@1.1.5': - resolution: {integrity: sha512-oNjBvzLq2GPZtJphCjLqXow/cHySHSgtxvKZb7OqSZ/xHgw6NWNhfad+6AB9cLeVm6eA9d/qMll3JdEHjy6M+A==} - peerDependencies: - css-tree: ^3.2.1 - peerDependenciesMeta: - css-tree: - optional: true - - '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} - - '@csstools/css-tokenizer@4.0.0': - resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} - engines: {node: '>=20.19.0'} - - '@csstools/media-query-list-parser@4.0.3': - resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 - - '@csstools/selector-specificity@5.0.0': - resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} - engines: {node: '>=18'} - peerDependencies: - postcss-selector-parser: ^7.0.0 - - '@discoveryjs/json-ext@0.6.3': - resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} - engines: {node: '>=14.17.0'} - - '@discoveryjs/json-ext@1.1.0': - resolution: {integrity: sha512-Xc3VhU02wqZ1HvHRJUwL09HkZSTvidqY5Ya0NXBSYOxAp+Ln9dcJr9fySI+CkONzP3PekQo9WdzCv0PGER/mOA==} - engines: {node: '>=14.17.0'} - - '@dual-bundle/import-meta-resolve@4.2.1': - resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} - - '@emnapi/core@1.10.0': - resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - - '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - - '@emotion/babel-plugin@11.13.5': - resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} - - '@emotion/cache@11.14.0': - resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} - - '@emotion/hash@0.9.2': - resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - - '@emotion/memoize@0.9.0': - resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - - '@emotion/react@11.14.0': - resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/serialize@1.3.3': - resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} - - '@emotion/server@11.11.0': - resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} - peerDependencies: - '@emotion/css': ^11.0.0-rc.0 - peerDependenciesMeta: - '@emotion/css': - optional: true - - '@emotion/sheet@1.4.0': - resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - - '@emotion/unitless@0.10.0': - resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0': - resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} - peerDependencies: - react: '>=16.8.0' - - '@emotion/utils@1.4.2': - resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} - - '@emotion/weak-memoize@0.4.0': - resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] + cpu: [x64] + os: [freebsd] - '@esbuild/aix-ppc64@0.27.3': - resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] + cpu: [x64] + os: [freebsd] - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] + cpu: [x64] + os: [freebsd] - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] - os: [android] + os: [linux] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] - os: [android] + os: [linux] - '@esbuild/android-arm64@0.27.3': - resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} engines: {node: '>=18'} cpu: [arm64] - os: [android] + os: [linux] - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} engines: {node: '>=18'} cpu: [arm64] - os: [android] + os: [linux] - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] - os: [android] + os: [linux] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] - os: [android] + os: [linux] - '@esbuild/android-arm@0.27.3': - resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} engines: {node: '>=18'} cpu: [arm] - os: [android] + os: [linux] - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} engines: {node: '>=18'} cpu: [arm] - os: [android] + os: [linux] - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} - cpu: [x64] - os: [android] + cpu: [ia32] + os: [linux] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} - cpu: [x64] - os: [android] + cpu: [ia32] + os: [linux] - '@esbuild/android-x64@0.27.3': - resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} engines: {node: '>=18'} - cpu: [x64] - os: [android] + cpu: [ia32] + os: [linux] - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} engines: {node: '>=18'} - cpu: [x64] - os: [android] + cpu: [ia32] + os: [linux] - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.27.3': - resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.27.3': - resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.27.3': - resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.27.3': - resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.27.3': - resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.27.3': - resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.27.3': - resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2633,9 +2096,6 @@ packages: typescript: optional: true - '@guardian/shimport@1.0.2': - resolution: {integrity: sha512-o35TxvMFfpQTGL6flW0ggIfU4tPlXp0PqY9vPL2Fx+68qy+s+uX4T0+dN3+JeoBad9QrRZoHfZPALvZlrRWfHw==} - '@guardian/source-development-kitchen@28.1.0': resolution: {integrity: sha512-Rh8xDIvQXNVD3j71wn3D4tYgUf0bIAD+K9n2WYsMUA5x2sXzYMimZ29NcFbq0tket+5CNM4Hae3cBN7MpmEZpQ==} peerDependencies: @@ -2794,6 +2254,15 @@ packages: resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4': + resolution: {integrity: sha512-6PyZBYKnnVNqOSB0YFly+62R7dmov8segT27A+RVTBVd4iAE6kbW9QBJGlyR2yG4D4ohzhZSTIu7BK1UTtmFFA==} + peerDependencies: + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + typescript: + optional: true + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -2816,126 +2285,6 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@jsonjoy.com/base64@1.1.2': - resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/base64@17.67.0': - resolution: {integrity: sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/buffers@1.2.1': - resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/buffers@17.67.0': - resolution: {integrity: sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/codegen@1.0.0': - resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/codegen@17.67.0': - resolution: {integrity: sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/fs-core@4.64.0': - resolution: {integrity: sha512-zs2TAq7Six5jgMuoMNjpspAvOP3mhtgq/k1UyQodEzCtQi/N83y2/y+zcvnZSGp/Rxq96DBN+bValOBQAyn/ew==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/fs-fsa@4.64.0': - resolution: {integrity: sha512-nMWOVbkLFyEgmXZih3wyvxA9XpgyyqyfrINMHvEFqhi7uqfRl7c9ERJt6yX7vgMPrB9Uo+OJO+Spa0cFzPD01w==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/fs-node-builtins@4.64.0': - resolution: {integrity: sha512-/o7WRFhUWaM/fOrslwLZGnzn4RmRILykn+lAL+mNObqqRNw+CQSiij6hpCeZ+C7buhdoVo7go/OYqzaSUfDYmA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/fs-node-to-fsa@4.64.0': - resolution: {integrity: sha512-WDD9WVs0hb7UAEKTgZW2f66WDrbj7gIIWwpP3spbLyXa0rghtUaFTB8L4gdR3ZCWwiKIsj38/CNijpVmpnuPUw==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/fs-node-utils@4.64.0': - resolution: {integrity: sha512-k5Indsx9hWW9xSF7Y6oSKKwtCUNhzZxadub3owhIlitc+iMRVlPPdX2duTKQWBL3qNWpXya8jykgaaWpheeS4w==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/fs-node@4.64.0': - resolution: {integrity: sha512-dO+NNkODbUli4uV42bcNrrLvq5rE7SNpdZ5TNd0dtbLsAaNK3MDiIC9lUi+brboGoIjW6vd2fB1qao60nrk5xA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/fs-print@4.64.0': - resolution: {integrity: sha512-PHZFccchvkhWrwPWHjmVAhbC3vSHCtyZvlZfJJ3ho2bnzl450hXri6/8e6pbkWdH+SkmLXNml0sV8e5HDAfxKw==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/fs-snapshot@4.64.0': - resolution: {integrity: sha512-oM7UDeL83q6NBzzsfKAsYKXKVXlykKFqqOLh4xZZKAzzROTlInkPbc6LTDGThEOnPiFiUzA7tYziHG9xavd76Q==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pack@1.21.0': - resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pack@17.67.0': - resolution: {integrity: sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pointer@1.0.2': - resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pointer@17.67.0': - resolution: {integrity: sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/util@1.9.0': - resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/util@17.67.0': - resolution: {integrity: sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - '@keyv/bigmap@1.3.1': resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} engines: {node: '>= 18'} @@ -2945,9 +2294,6 @@ packages: '@keyv/serialize@1.1.1': resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} - '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@mdx-js/react@3.1.1': resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} peerDependencies: @@ -3070,10 +2416,6 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@noble/hashes@1.4.0': - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - '@nodable/entities@2.1.0': resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==} @@ -3092,43 +2434,6 @@ packages: '@package-json/types@0.0.12': resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} - '@peculiar/asn1-cms@2.8.0': - resolution: {integrity: sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA==} - - '@peculiar/asn1-csr@2.8.0': - resolution: {integrity: sha512-akbF8+uvleHs8sejNPQxwmVFuInAg6FMNHOwMILXfP518YfFJwdR3jr6oNUPOaEJfuEhn/vkNOCIT6ASUd4mbg==} - - '@peculiar/asn1-ecc@2.8.0': - resolution: {integrity: sha512-ohwlk+u9Rv2NOAY1c6MfHj45ATVF8R1DUN/WCgABiRtLi2ZftlZWZX7KvpAbU8v9xPcmoILfELeEABj/rn18AQ==} - - '@peculiar/asn1-pfx@2.8.0': - resolution: {integrity: sha512-5yof1ytoB++RQtaFbqSUJ8pxDJtZT6vbVqZ8XoJ61ph7UjNVvfFwAilnCodqkNsAodpy13gDhoxZXw00pghnyg==} - - '@peculiar/asn1-pkcs8@2.8.0': - resolution: {integrity: sha512-qAKXtLpBEw9LqhKpjw3ajZSXlBur+ipW+y2ivVBQAG6F6qRx94yO+1ZR4mvw+YaCfKSaOzLeYEzsPaBp4SJELA==} - - '@peculiar/asn1-pkcs9@2.8.0': - resolution: {integrity: sha512-b5nDWCnkV60+cQ141D6sVVwK9nz64R5n3zSVnklGd+ECdkW2Ol3U1a6yYFlalpSOaD557yuJB64A+q42jG7lUQ==} - - '@peculiar/asn1-rsa@2.8.0': - resolution: {integrity: sha512-zHEUlCqB2mk7x2lxDwHHJy7hWZOPdGHVlsmITWKB5/PbQo61atbu9PJ/0r9dQNMwFzbKPXZ8uK8/91eUhRznSg==} - - '@peculiar/asn1-schema@2.8.0': - resolution: {integrity: sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q==} - - '@peculiar/asn1-x509-attr@2.8.0': - resolution: {integrity: sha512-tHjkfS/qhMnmrlB2J9NhflQlQ7In3khO3CfmVrriOlpTeErY9ZIKOso1hQ5JQiyrJ7ShvqVPk7E5fQmbclkSKA==} - - '@peculiar/asn1-x509@2.8.0': - resolution: {integrity: sha512-N0CMuhWUzsWEVq6F1q9X6+VKUnWzSW+cSVg+aPaGGwDdbFoFWTYgin5MHwXgpWd6y9COMBxnfy/Qc+Xc7F0Zwg==} - - '@peculiar/utils@2.0.3': - resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==} - - '@peculiar/x509@1.14.3': - resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} - engines: {node: '>=20.0.0'} - '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -3766,25 +3071,11 @@ packages: peerDependencies: storybook: ^10.3.3 - '@storybook/addon-webpack5-compiler-swc@4.0.3': - resolution: {integrity: sha512-REJZBArIBcqzxmhQY9R1br9hjfcFYdl4FeWD/okx1eRwPZkl49aUhTYqZPrA+MWXfKJkuuNQ5vnfSoR0c9HyvA==} - engines: {node: '>=18'} - peerDependencies: - storybook: ^9.0.0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 || ^10.4.0-0 - - '@storybook/builder-webpack5@10.3.3': - resolution: {integrity: sha512-A7hop0VXG/06EZ7l2WIuhsrnpiV6NOOcOiVqjYDLplbVelkiiL98LTL+Om87u0n32sAfXWgFk2jIhSc3bbXlsQ==} - peerDependencies: - storybook: ^10.3.3 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/core-webpack@10.3.3': - resolution: {integrity: sha512-ESRM2k9m1V0qXaqEM+bvtCjv9+gYVE3PMuoNZMyIYNdGA4Pdc2PvQsUrKQNVByVbEGwjt+h0RE6b20bnBkdYsg==} + '@storybook/builder-vite@10.3.3': + resolution: {integrity: sha512-awspKCTZvXyeV3KabL0id62mFbxR5u/5yyGQultwCiSb2/yVgBfip2MAqLyS850pvTiB6QFVM9deOyd2/G/bEA==} peerDependencies: storybook: ^10.3.3 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 '@storybook/csf-plugin@10.3.3': resolution: {integrity: sha512-Utlh7zubm+4iOzBBfzLW4F4vD99UBtl2Do4edlzK2F7krQIcFvR2ontjAE8S1FQVLZAC3WHalCOS+Ch8zf3knA==} @@ -3813,23 +3104,6 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@storybook/preset-react-webpack@10.3.3': - resolution: {integrity: sha512-R8WeGUo062VpIx+i+5/Cv8dVGM+YSgCGZ0STPANijmOHATvfWpslTAIjMkq0me/BoDT5zxzCnYvAyRrBcjOW8A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.3.3 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0': - resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} - peerDependencies: - typescript: '>= 4.x' - webpack: '>= 4' - '@storybook/react-dom-shim@10.3.3': resolution: {integrity: sha512-lkhuh4G3UTreU9M3Iz5Dt32c6U+l/4XuvqLtbe1sDHENZH6aPj7y0b5FwnfHyvuTvYRhtbo29xZrF5Bp9kCC0w==} peerDependencies: @@ -3837,16 +3111,13 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 storybook: ^10.3.3 - '@storybook/react-webpack5@10.3.3': - resolution: {integrity: sha512-+x5/KrLmgv7VnWfzKxh0xftnDIjogiVksNuaLJAl4TRuY7/OsrlJBUckQ+ovMXTZpaAini6+7IVoilrzmdl4cA==} + '@storybook/react-vite@10.3.3': + resolution: {integrity: sha512-qHdlBe1hjqFAGXa8JL7bWTLbP/gDqXbWDm+SYCB646NHh5yvVDkZLwigP5Y+UL7M2ASfqFtosnroUK9tcCM2dw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 storybook: ^10.3.3 - typescript: '>= 4.9.x' - peerDependenciesMeta: - typescript: - optional: true + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 '@storybook/react@10.3.3': resolution: {integrity: sha512-cGG5TbR8Tdx9zwlpsWyBEfWrejm5iWdYF26EwIhwuKq9GFUTAVrQzo0Rs7Tqc3ZyVhRS/YfsRiWSEH+zmq2JiQ==} @@ -3980,16 +3251,6 @@ packages: peerDependencies: '@svgr/core': '*' - '@svgr/plugin-svgo@8.1.0': - resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} - engines: {node: '>=14'} - peerDependencies: - '@svgr/core': '*' - - '@svgr/webpack@8.1.0': - resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} - engines: {node: '>=14'} - '@swc/cli@0.8.1': resolution: {integrity: sha512-L+ACCGHCiS0VqHVep/INLVnvRvJ2XooQFLZq4L8snhxw1jsqz+XRcY313UsyPVturPPE1shW3jic7rt3qEQTSQ==} engines: {node: '>= 20.19.0'} @@ -4179,9 +3440,6 @@ packages: '@types/body-parser@1.19.2': resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} - '@types/bonjour@3.5.13': - resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} @@ -4191,9 +3449,6 @@ packages: '@types/compression@1.7.5': resolution: {integrity: sha512-AAQvK5pxMpaT+nDvhHrsBhLSYG5yQdtkaJE1WYieSNY2mVFKAgmU4ks65rkZD5oqnGCFLyQpUr1CqI4DmUMyDg==} - '@types/connect-history-api-fallback@1.5.4': - resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -4222,9 +3477,6 @@ packages: '@types/express-serve-static-core@5.1.1': resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==} - '@types/express-serve-static-core@5.1.2': - resolution: {integrity: sha512-d3KvEXBSo/lOAMc2u6fkyDHBvetBHeqD7wm/AcXfLpSOQwlmG9D/aQ0SFswVjv05p7ullQS7Mjohj6/VdbZuTg==} - '@types/express@5.0.6': resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==} @@ -4237,9 +3489,6 @@ packages: '@types/he@1.2.0': resolution: {integrity: sha512-uH2smqTN4uGReAiKedIVzoLUAXIYLBTbSofhx3hbNqj74Ua6KqFsLYszduTrLCMEAEAozF73DbGi/SC1bzQq4g==} - '@types/html-minifier-terser@6.1.0': - resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - '@types/html-minifier-terser@7.0.2': resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==} @@ -4349,15 +3598,9 @@ packages: '@types/semver@7.5.6': resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} - '@types/semver@7.7.1': - resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/send@1.2.1': resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} - '@types/serve-index@1.9.4': - resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@2.2.0': resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} @@ -4376,18 +3619,6 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/webpack-bundle-analyzer@4.7.0': - resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} - - '@types/webpack-env@1.18.8': - resolution: {integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==} - - '@types/webpack-node-externals@3.0.4': - resolution: {integrity: sha512-8Z3/edqxE3RRlOJwKSgOFxLZRt/i1qFlv/Bi308ZUKo9jh8oGngd9r8GR0ZNKW5AEJq8QNQE3b17CwghTjQ0Uw==} - - '@types/ws@8.18.1': - resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -4579,51 +3810,6 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - '@xhmikosr/archive-type@8.1.0': resolution: {integrity: sha512-EXOjEbnZFE5c/nFMf4FOrEURVanzHpnkPYmnmr78u02/8hAhE0FMq8p9TK1IM0/bFr5VcyBUY0gfLm8f7dKy+Q==} engines: {node: '>=20'} @@ -4664,12 +3850,6 @@ packages: resolution: {integrity: sha512-y5ArHvQ7BVule/+L9yE2nYMhceiJhgsqo58lOfnisQ7bg+Kjfmkgr7JBuVFiTkl+ErdShpp829QstZQyLugl8g==} engines: {node: '>=20'} - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} deprecated: Use your platform's native atob() and btoa() methods instead @@ -4685,12 +3865,6 @@ packages: acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - acorn-import-phases@1.0.4: - resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} - engines: {node: '>=10.13.0'} - peerDependencies: - acorn: ^8.14.0 - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -4726,16 +3900,6 @@ packages: ajv: optional: true - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} @@ -4750,11 +3914,6 @@ packages: resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} engines: {node: '>=14.16'} - ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -4835,10 +3994,6 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} - asn1js@3.0.10: - resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} - engines: {node: '>=12.0.0'} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -4923,21 +4078,6 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} - babel-plugin-polyfill-corejs2@0.4.14: - resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.5: - resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-preset-current-node-syntax@1.0.1: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -4978,15 +4118,9 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - binary-version-check@6.1.0: resolution: {integrity: sha512-REKdLKmuViV2WrtWXvNSiPX04KbIjfUV3Cy8batUeOg+FtmowavzJorfFhWq95cVJzINnL/44ixP26TrdJZACA==} engines: {node: '>=18'} @@ -5003,12 +4137,6 @@ packages: resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} - bonjour-service@1.4.2: - resolution: {integrity: sha512-lMskhnsW70yWHr4PhPeh2rvaIkLSaDpp+nmtbXBZaNKTXwxL73QOkW6HhbzqTImXjevn9TreGT4GACGBCGP9nQ==} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - bowser@2.12.1: resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} @@ -5071,10 +4199,6 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - bytestreamjs@2.0.1: - resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} - engines: {node: '>=6.0.0'} - cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -5119,10 +4243,6 @@ packages: caniuse-lite@1.0.30001803: resolution: {integrity: sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==} - case-sensitive-paths-webpack-plugin@2.4.0: - resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} - engines: {node: '>=4'} - ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -5166,10 +4286,6 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chokidar@5.0.0: - resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} - engines: {node: '>= 20.19.0'} - chromatic@16.1.0: resolution: {integrity: sha512-7xyOUXe8jfY6c+g9S/U/cbvzVXMjdhh9cVZYvDp8dDGonjiKSbWO1dzWApdYHIiF2xj29pvWQB7N5LT6967IDw==} hasBin: true @@ -5182,10 +4298,6 @@ packages: '@chromatic-com/playwright': optional: true - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -5225,10 +4337,6 @@ packages: resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} engines: {node: '>=20'} - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -5278,10 +4386,6 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} - commander@14.0.3: - resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} - engines: {node: '>=20'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -5289,10 +4393,6 @@ packages: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} @@ -5315,21 +4415,9 @@ packages: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} engines: {node: '>= 0.8.0'} - compression@1.8.1: - resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} - engines: {node: '>= 0.8.0'} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} - - console-clear@1.1.1: - resolution: {integrity: sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==} - engines: {node: '>=4'} - constructs@10.6.0: resolution: {integrity: sha512-TxHOnBO5zMo/G76ykzGF/wMpEHu257TbWiIxP9K0Yv/+t70UzgBQiTqjkAsWOPC6jW91DzJI0+ehQV6xDRNBuQ==} @@ -5371,9 +4459,6 @@ packages: resolution: {integrity: sha512-mFsNh/DIANLqFt5VHZoGirdg7bK5+oTWlhnGu6tgRhzBlnEKWaPX2xrFaLltii/6rmhqFMJqffUgknuRdpYlHw==} engines: {node: '>=18'} - core-js-compat@3.46.0: - resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} - core-js-compat@3.49.0: resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} @@ -5434,28 +4519,10 @@ packages: webpack: optional: true - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-tree@3.2.1: resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} - css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} @@ -5464,10 +4531,6 @@ packages: engines: {node: '>=4'} hasBin: true - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -5523,14 +4586,6 @@ packages: supports-color: optional: true - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -5563,9 +4618,6 @@ packages: resolution: {integrity: sha512-oj7KWToJuuxlPr7VV0vabvxEIiqNMo+q0NueIiL3XhtwC6FVOX7Hr1c0C4eD0bmf7Zr+S/dSf2xvkH3Ad6sU3Q==} engines: {node: '>=20'} - dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dedent@1.6.0: resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} peerDependencies: @@ -5609,10 +4661,6 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -5647,10 +4695,6 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -5665,12 +4709,6 @@ packages: dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -5682,10 +4720,6 @@ packages: engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} @@ -5693,12 +4727,6 @@ packages: dompurify@3.4.7: resolution: {integrity: sha512-2jBxDJY4RR06tQNy4w5FlFH7kfxsQZlufd0sbv+chfHCxeJwrFw2baUDsSwvBISD4K4RDbd0PTfy3uNXsR6siA==} - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} @@ -5737,24 +4765,14 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} + empathic@2.0.1: + resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} + engines: {node: '>=14'} encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - endent@2.1.0: - resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} - - enhanced-resolve@5.24.2: - resolution: {integrity: sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==} - engines: {node: '>=10.13.0'} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -5771,11 +4789,6 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - envinfo@7.21.0: - resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==} - engines: {node: '>=4'} - hasBin: true - error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} @@ -5798,9 +4811,6 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - es-module-lexer@2.3.0: - resolution: {integrity: sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==} - es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -5967,10 +4977,6 @@ packages: peerDependencies: eslint: '>=9.38.0' - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6029,10 +5035,6 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -6054,10 +5056,6 @@ packages: events-universal@1.0.1: resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -6106,9 +5104,6 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} - fast-json-parse@1.0.3: - resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} - fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -6186,10 +5181,6 @@ packages: resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} - find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} @@ -6212,10 +5203,6 @@ packages: find@0.3.0: resolution: {integrity: sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -6223,10 +5210,6 @@ packages: flat-cache@6.1.21: resolution: {integrity: sha512-2u7cJfSf7Th7NxEk/VzQjnPoglok2YCsevS7TSbJjcDQWJPbqUUnSYtriHSvtnq+fRZHy1s0ugk4ApnQyhPGoQ==} - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} @@ -6234,13 +5217,6 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - fork-ts-checker-webpack-plugin@9.1.0: - resolution: {integrity: sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==} - engines: {node: '>=14.21.3'} - peerDependencies: - typescript: '>3.6.0' - webpack: ^5.11.0 - form-data-encoder@4.1.0: resolution: {integrity: sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==} engines: {node: '>= 18'} @@ -6269,9 +5245,6 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} - fs-monkey@1.1.0: - resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -6363,11 +5336,9 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regex.js@1.2.0: - resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -6526,20 +5497,9 @@ packages: resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - html-entities@2.4.0: - resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - html-escaper@3.0.3: - resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} - - html-minifier-terser@6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} - hasBin: true - html-minifier-terser@7.2.0: resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} engines: {node: ^14.13.1 || >=16.0.0} @@ -6556,31 +5516,12 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - html-webpack-plugin@5.6.6: - resolution: {integrity: sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==} - engines: {node: '>=10.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.20.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - htmlparser2@10.1.0: resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} - htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} - http-errors@2.0.1: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} @@ -6589,10 +5530,6 @@ packages: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} - http-proxy-middleware@4.2.0: - resolution: {integrity: sha512-ZA+oNOoM+GLoFTIzhkJptVQov73Srep2LBqhF8hG8CIPKO3nam1jonXVQ/QUH8RbwsmaaVz2SOJdzBNBHNtKbw==} - engines: {node: ^22.15.0 || ^24.0.0 || >=26.0.0} - http2-wrapper@2.2.1: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} @@ -6601,9 +5538,6 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - httpxy@0.5.4: - resolution: {integrity: sha512-URfeibL0kTH6VuIxxaJDXWQWEk8fKr+9L8MGv6CuAiNy0fGnoVhWbXBvJR1mkdsvCDUxvhX9cW60k2AhtH5s6w==} - human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -6621,10 +5555,6 @@ packages: engines: {node: '>=18'} hasBin: true - hyperdyperid@1.2.0: - resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} - engines: {node: '>=10.18'} - iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -6696,18 +5626,10 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - interpret@3.1.1: - resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} - engines: {node: '>=10.13.0'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - ipaddr.js@2.4.0: - resolution: {integrity: sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==} - engines: {node: '>= 10'} - is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -6814,10 +5736,6 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - is-network-error@1.3.2: - resolution: {integrity: sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==} - engines: {node: '>=16'} - is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -6834,10 +5752,6 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} @@ -6929,10 +5843,6 @@ packages: resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} engines: {node: '>=20'} - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -7089,10 +5999,6 @@ packages: resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - jest-worker@29.7.0: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7210,9 +6116,6 @@ packages: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} - launch-editor@2.14.1: - resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==} - launder@1.7.1: resolution: {integrity: sha512-mU6WRz5EusL9ZZuiZ5SO4Y6C0P9PAUR9iwdb6bzj4KDihm28DiHFw+/yk9DBH4f+Pv1wuzQ4e2jV3oQ7mkIqvw==} @@ -7240,14 +6143,6 @@ packages: resolution: {integrity: sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==} engines: {node: '>=18.0.0'} - loader-runner@4.3.2: - resolution: {integrity: sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==} - engines: {node: '>=6.11.5'} - - loader-utils@1.4.2: - resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} - engines: {node: '>=4.0.0'} - locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -7315,10 +6210,6 @@ packages: resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==} engines: {node: '>=18'} - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -7345,12 +6236,6 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} @@ -7362,15 +6247,6 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - - memfs@4.64.0: - resolution: {integrity: sha512-Kw72fgY7Wn+sD8KmtNWSafl1dz0UvAsE/PHs3YVfLiaZuA3HxNm9sRLqAu0ATiBGJvME1PxZXbBZPv5GycDeAw==} - peerDependencies: - tslib: '2' - meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} @@ -7511,48 +6387,9 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minimizer-webpack-plugin@5.6.1: - resolution: {integrity: sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@minify-html/node': '*' - '@swc/core': '*' - '@swc/css': '*' - '@swc/html': '*' - clean-css: '*' - cssnano: '*' - csso: '*' - esbuild: '*' - html-minifier-terser: '*' - lightningcss: '*' - postcss: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@minify-html/node': - optional: true - '@swc/core': - optional: true - '@swc/css': - optional: true - '@swc/html': - optional: true - clean-css: - optional: true - cssnano: - optional: true - csso: - optional: true - esbuild: - optional: true - html-minifier-terser: - optional: true - lightningcss: - optional: true - postcss: - optional: true - uglify-js: - optional: true + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} mockdate@3.0.5: resolution: {integrity: sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==} @@ -7574,10 +6411,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - multicast-dns@7.2.5: - resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} - hasBin: true - multipipe@1.0.2: resolution: {integrity: sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==} @@ -7608,23 +6441,13 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -7671,9 +6494,6 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nwsapi@2.2.23: resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} @@ -7708,9 +6528,6 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - objectorarray@1.0.5: - resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} - obug@2.1.2: resolution: {integrity: sha512-AWGB9WFcRXOQs48Z/udjI5ZcZMHXwX8XPByNpOydgcGsDLIzjGizhoMWJyKAWze7AVW/2W1i+/gPX4YtKe5cyg==} engines: {node: '>=12.20.0'} @@ -7723,10 +6540,6 @@ packages: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} - on-headers@1.1.0: - resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} - engines: {node: '>= 0.8'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -7746,10 +6559,6 @@ packages: resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} engines: {node: '>=20'} - opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -7794,10 +6603,6 @@ packages: resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} engines: {node: '>=16'} - p-retry@8.0.0: - resolution: {integrity: sha512-kFVqH1HxOHp8LupNsOys7bSV09VYTRLxarH/mokO4Rqhk6wGi70E0jh4VzvVGXfEVNggHoHLAMWsQqHyU1Ey9A==} - engines: {node: '>=22'} - p-timeout@6.1.2: resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} engines: {node: '>=14.16'} @@ -7878,6 +6683,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + path-to-regexp@8.4.1: resolution: {integrity: sha512-fvU78fIjZ+SBM9YwCknCvKOUKkLVqtWDVctl0s7xIqfmfb38t2TT4ZU2gHm+Z8xGwgW+QWEU3oQSAzIbo89Ggw==} @@ -7922,10 +6731,6 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkijs@3.4.0: - resolution: {integrity: sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==} - engines: {node: '>=16.0.0'} - playwright-core@1.60.0: resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} engines: {node: '>=18'} @@ -8035,9 +6840,6 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-error@4.0.0: - resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -8063,9 +6865,6 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - proper-lockfile@4.1.2: - resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - property-information@6.4.0: resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} @@ -8089,13 +6888,6 @@ packages: pure-rand@6.0.4: resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} - pvtsutils@1.3.6: - resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} - - pvutils@1.1.5: - resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} - engines: {node: '>=16.0.0'} - qified@0.9.0: resolution: {integrity: sha512-4q61YgkHbY6gmwkqm0BsxyLDO3UYdrdiJTJ7JiaZb3xpW1duxn135SB7KqUEkCiuu5O4W+TtwEWP2VjmSRanvA==} engines: {node: '>=20'} @@ -8118,10 +6910,6 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - range-parser@1.3.0: - resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==} - engines: {node: '>= 0.6'} - raw-body@2.5.3: resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} @@ -8140,10 +6928,6 @@ packages: peerDependencies: typescript: '>= 4.3.x' - react-docgen@7.1.1: - resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} - engines: {node: '>=16.14.0'} - react-docgen@8.0.2: resolution: {integrity: sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA==} engines: {node: ^20.9.0 || >=22} @@ -8197,36 +6981,18 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} - readdirp@5.0.0: - resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} - engines: {node: '>= 20.19.0'} - recast@0.23.11: resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} - rechoir@0.8.0: - resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} - engines: {node: '>= 10.13.0'} - redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - reflect-metadata@0.2.2: - resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} - regenerate-unicode-properties@10.2.2: - resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -8235,13 +7001,6 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - regexpu-core@6.4.0: - resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} - engines: {node: '>=4'} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.13.0: resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true @@ -8265,9 +7024,6 @@ packages: remark-rehype@11.1.2: resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - renderkid@3.0.0: - resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -8318,10 +7074,6 @@ packages: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -8329,11 +7081,6 @@ packages: rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rollup-plugin-esbuild@6.2.1: resolution: {integrity: sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==} engines: {node: '>=14.18.0'} @@ -8386,9 +7133,6 @@ packages: safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-push-apply@1.0.0: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} @@ -8407,10 +7151,6 @@ packages: sanitize-html@2.17.4: resolution: {integrity: sha512-2HW7v2ol/uAM7sX4hbD8Z59OGWmAPrvjL8E71UWlBcj6m+kcF6ilQBLny+cIgY214QJeJT5tQuxKKqX0SQqjGQ==} - sax@1.6.0: - resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} - engines: {node: '>=11.0.0'} - saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -8418,14 +7158,6 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - - schema-utils@4.3.3: - resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} - engines: {node: '>= 10.13.0'} - screenfull@6.0.2: resolution: {integrity: sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw==} engines: {node: ^14.13.1 || >=16.0.0} @@ -8434,10 +7166,6 @@ packages: resolution: {integrity: sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==} hasBin: true - selfsigned@5.5.0: - resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} - engines: {node: '>=18'} - semver-regex@4.0.5: resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} engines: {node: '>=12'} @@ -8473,10 +7201,6 @@ packages: resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} engines: {node: '>= 18'} - serve-index@1.9.2: - resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} - engines: {node: '>= 0.8.0'} - serve-static@2.2.1: resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} engines: {node: '>= 18'} @@ -8499,10 +7223,6 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -8511,10 +7231,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.9.0: - resolution: {integrity: sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==} - engines: {node: '>= 0.4'} - side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -8624,10 +7340,6 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -8753,12 +7465,6 @@ packages: resolution: {integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==} engines: {node: '>=18'} - style-loader@4.0.0: - resolution: {integrity: sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - webpack: ^5.27.0 - stylelint-config-recommended@14.0.0: resolution: {integrity: sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==} engines: {node: '>=18.12.0'} @@ -8819,17 +7525,6 @@ packages: svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} - svgo@3.3.3: - resolution: {integrity: sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==} - engines: {node: '>=14.0.0'} - hasBin: true - - swc-loader@0.2.7: - resolution: {integrity: sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w==} - peerDependencies: - '@swc/core': ^1.2.147 - webpack: '>=2' - swr@1.3.0: resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==} peerDependencies: @@ -8854,43 +7549,14 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tapable@2.3.0: - resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} - engines: {node: '>=6'} - - tapable@2.3.3: - resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} - engines: {node: '>=6'} - tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - terser-webpack-plugin@5.4.0: - resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - terser@5.46.0: resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true - terser@5.49.0: - resolution: {integrity: sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==} - engines: {node: '>=10'} - hasBin: true - test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -8898,21 +7564,12 @@ packages: text-decoder@1.2.7: resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} - thingies@2.6.0: - resolution: {integrity: sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==} - engines: {node: '>=10.18'} - peerDependencies: - tslib: ^2 - through2@0.4.2: resolution: {integrity: sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==} through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - time-span@5.1.0: resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} engines: {node: '>=12'} @@ -8950,9 +7607,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - to-string-loader@1.2.0: - resolution: {integrity: sha512-KsWUL8FccgBW9FPFm4vYoQbOOcO5m6hKOGYoXjbseD9/4Ft+ravXN5jolQ9kTKYcK4zPt1j+khx97GPGnVoi6A==} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -8984,12 +7638,6 @@ packages: traverse-chain@0.1.0: resolution: {integrity: sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==} - tree-dump@1.1.0: - resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -9036,9 +7684,6 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -9050,10 +7695,6 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - tsyringe@4.10.0: - resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} - engines: {node: '>= 6.0.0'} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -9158,22 +7799,6 @@ packages: resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} engines: {node: '>=20.18.1'} - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.2.1: - resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.2.0: - resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} - engines: {node: '>=4'} - unicorn-magic@0.3.0: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} @@ -9258,9 +7883,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -9391,10 +8013,6 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - watchpack@2.5.2: - resolution: {integrity: sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==} - engines: {node: '>=10.13.0'} - web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -9416,118 +8034,9 @@ packages: resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} - webpack-assets-manifest@6.5.2: - resolution: {integrity: sha512-UNi1LmOJUEsLpAYTV21ftp5HYsxePvhIEvAIij84I3wBCYDOman3tevsglxfC+F+GFWEDhFkwrvIzbvXqTYqrw==} - engines: {node: '>=20.10.0'} - peerDependencies: - webpack: ^5.61.0 - - webpack-bundle-analyzer@5.3.0: - resolution: {integrity: sha512-PEhAoqiJ+47d0uLMx/+zo5XOvaU+Vk6N2ZLht7H3n09QLy/fhyvqGNwjdRUHJDgMN8crBR2ZwVHkIswT3Xuawg==} - engines: {node: '>= 20.9.0'} - hasBin: true - - webpack-cli@7.2.1: - resolution: {integrity: sha512-YwSGbcZdfz12DM8JIseVPr3oBb09IgVCVc4vY3oDvZnI/mALTGPAP1QiqOi4/bBLSJrRHaqDIXeHcNA0+G38aw==} - engines: {node: '>=20.9.0'} - hasBin: true - peerDependencies: - js-yaml: ^4.0.0 || ^5.0.0 - json5: ^2.2.3 - toml: ^3.0.0 || ^4.0.0 - webpack: ^5.101.0 - webpack-bundle-analyzer: ^4.0.0 || ^5.0.0 - webpack-dev-server: ^5.0.0 || ^6.0.0 - peerDependenciesMeta: - js-yaml: - optional: true - json5: - optional: true - toml: - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - - webpack-dev-middleware@6.1.3: - resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==} - engines: {node: '>= 14.15.0'} - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true - - webpack-dev-middleware@8.0.3: - resolution: {integrity: sha512-zWrde9VZDiRaFuWsjHO40wm9LxxtXEk8DdzFXdU7eU5ZpiANnZZDBbZgN3guxbEoKqUHd9YupBmynyioz42nkA==} - engines: {node: '>= 20.9.0'} - peerDependencies: - webpack: ^5.101.0 - peerDependenciesMeta: - webpack: - optional: true - - webpack-dev-server@6.0.0: - resolution: {integrity: sha512-q9SD4ItOGhZLeU6EGT10caDZdHjF50Pz1DtkRZZOPsfluMXOkacWKKOtSBSLVkPqKiF67eFUC0rI88U/tSFPEw==} - engines: {node: '>= 22.15.0'} - hasBin: true - peerDependencies: - webpack: ^5.101.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - - webpack-format-messages@2.0.6: - resolution: {integrity: sha512-JOUviZSCupGTf6uJjrxKMEyOawWws566e3phwSyuWBsQxuBU6Gm4QV5wdU8UfkPIhWyhAqSGKeq8fNE9Q4rs9Q==} - engines: {node: '>=6'} - - webpack-hot-middleware@2.26.1: - resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} - - webpack-hot-server-middleware@0.6.1: - resolution: {integrity: sha512-YOKwdS0hnmADsNCsReGkMOBkoz2YVrQZvnVcViM2TDXlK9NnaOGXmnrLFjzwsHFa0/iuJy/QJFEoMxzk8R1Mgg==} - peerDependencies: - webpack: '*' - - webpack-manifest-plugin@6.0.1: - resolution: {integrity: sha512-R0p/8/IJVY5hIhQtkeWUQugalVpIwojc09eb14zGq+oiZOCmN5paAz2NBJfd+6v9eBbxAS3YMjc2ov8UMlCDLQ==} - engines: {node: '>=20.19.0'} - peerDependencies: - webpack: ^5.75.0 - - webpack-merge@6.0.1: - resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} - engines: {node: '>=18.0.0'} - - webpack-messages@2.0.4: - resolution: {integrity: sha512-flG9VZRIKJd+ibJdtG55cp8+CglmEvGQ6uyLLwAxKudO2ws5czl0Giy8wltRCNIx+qNF76hh9UEQNZzkUHnDKw==} - engines: {node: '>=6'} - - webpack-node-externals@3.0.0: - resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} - engines: {node: '>=6'} - - webpack-sources@3.5.1: - resolution: {integrity: sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==} - engines: {node: '>=10.13.0'} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.108.4: - resolution: {integrity: sha512-yur8LyJoeiWh47dErD+Ok7vlbmDsJ3UbbRPAoxbGJ54WpE2y5yVo5G/inUzujnYgw3tPmBRdn+G7PoxXaYC33w==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -9574,9 +8083,6 @@ packages: engines: {node: '>= 8'} hasBin: true - wildcard@2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -10194,1234 +8700,614 @@ snapshots: '@smithy/types': 4.14.2 tslib: 2.8.1 transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-login@3.972.43': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/nested-clients': 3.997.11 - '@aws-sdk/types': 3.973.9 - '@smithy/core': 3.24.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-node@3.972.24': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.21 - '@aws-sdk/credential-provider-http': 3.972.23 - '@aws-sdk/credential-provider-ini': 3.972.23 - '@aws-sdk/credential-provider-process': 3.972.21 - '@aws-sdk/credential-provider-sso': 3.972.23 - '@aws-sdk/credential-provider-web-identity': 3.972.23 - '@aws-sdk/types': 3.973.9 - '@smithy/credential-provider-imds': 4.2.12 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-node@3.972.44': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.39 - '@aws-sdk/credential-provider-http': 3.972.41 - '@aws-sdk/credential-provider-ini': 3.972.43 - '@aws-sdk/credential-provider-process': 3.972.39 - '@aws-sdk/credential-provider-sso': 3.972.43 - '@aws-sdk/credential-provider-web-identity': 3.972.43 - '@aws-sdk/types': 3.973.9 - '@smithy/core': 3.24.4 - '@smithy/credential-provider-imds': 4.3.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-process@3.972.21': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/types': 3.973.9 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-process@3.972.39': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/types': 3.973.9 - '@smithy/core': 3.24.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-sso@3.972.23': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/nested-clients': 3.996.13 - '@aws-sdk/token-providers': 3.1014.0 - '@aws-sdk/types': 3.973.9 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-sso@3.972.43': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/nested-clients': 3.997.11 - '@aws-sdk/token-providers': 3.1052.0 - '@aws-sdk/types': 3.973.9 - '@smithy/core': 3.24.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-web-identity@3.972.23': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/nested-clients': 3.996.13 - '@aws-sdk/types': 3.973.9 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-web-identity@3.972.43': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/nested-clients': 3.997.11 - '@aws-sdk/types': 3.973.9 - '@smithy/core': 3.24.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/credential-providers@3.1053.0': - dependencies: - '@aws-sdk/client-cognito-identity': 3.1053.0 - '@aws-sdk/core': 3.974.13 - '@aws-sdk/credential-provider-cognito-identity': 3.972.36 - '@aws-sdk/credential-provider-env': 3.972.39 - '@aws-sdk/credential-provider-http': 3.972.41 - '@aws-sdk/credential-provider-ini': 3.972.43 - '@aws-sdk/credential-provider-login': 3.972.43 - '@aws-sdk/credential-provider-node': 3.972.44 - '@aws-sdk/credential-provider-process': 3.972.39 - '@aws-sdk/credential-provider-sso': 3.972.43 - '@aws-sdk/credential-provider-web-identity': 3.972.43 - '@aws-sdk/nested-clients': 3.997.11 - '@aws-sdk/types': 3.973.9 - '@smithy/core': 3.24.4 - '@smithy/credential-provider-imds': 4.3.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/credential-providers@3.995.0': - dependencies: - '@aws-sdk/client-cognito-identity': 3.995.0 - '@aws-sdk/core': 3.973.23 - '@aws-sdk/credential-provider-cognito-identity': 3.972.16 - '@aws-sdk/credential-provider-env': 3.972.21 - '@aws-sdk/credential-provider-http': 3.972.23 - '@aws-sdk/credential-provider-ini': 3.972.23 - '@aws-sdk/credential-provider-login': 3.972.23 - '@aws-sdk/credential-provider-node': 3.972.24 - '@aws-sdk/credential-provider-process': 3.972.21 - '@aws-sdk/credential-provider-sso': 3.972.23 - '@aws-sdk/credential-provider-web-identity': 3.972.23 - '@aws-sdk/nested-clients': 3.995.0 - '@aws-sdk/types': 3.973.6 - '@smithy/config-resolver': 4.4.13 - '@smithy/core': 3.23.12 - '@smithy/credential-provider-imds': 4.2.12 - '@smithy/node-config-provider': 4.3.12 - '@smithy/property-provider': 4.2.12 - '@smithy/types': 4.13.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/middleware-bucket-endpoint@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.9 - '@aws-sdk/util-arn-parser': 3.972.2 - '@smithy/node-config-provider': 4.3.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.14.2 - '@smithy/util-config-provider': 4.2.2 - tslib: 2.8.1 - - '@aws-sdk/middleware-expect-continue@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.9 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/middleware-flexible-checksums@3.972.9': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@aws-crypto/crc32c': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.974.13 - '@aws-sdk/crc64-nvme': 3.972.0 - '@aws-sdk/types': 3.973.9 - '@smithy/is-array-buffer': 4.2.2 - '@smithy/node-config-provider': 4.3.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.14.2 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-stream': 4.5.20 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 - - '@aws-sdk/middleware-host-header@3.972.8': - dependencies: - '@aws-sdk/types': 3.973.9 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/middleware-location-constraint@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.9 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/middleware-logger@3.972.8': - dependencies: - '@aws-sdk/types': 3.973.9 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/middleware-recursion-detection@3.972.8': - dependencies: - '@aws-sdk/types': 3.973.9 - '@aws/lambda-invoke-store': 0.2.2 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/middleware-sdk-ec2@3.972.27': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/types': 3.973.9 - '@smithy/core': 3.24.4 - '@smithy/signature-v4': 5.4.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/middleware-sdk-s3@3.972.11': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/types': 3.973.9 - '@aws-sdk/util-arn-parser': 3.972.2 - '@smithy/core': 3.24.4 - '@smithy/node-config-provider': 4.3.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/signature-v4': 5.4.4 - '@smithy/smithy-client': 4.12.7 - '@smithy/types': 4.14.2 - '@smithy/util-config-provider': 4.2.2 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-stream': 4.5.20 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 - - '@aws-sdk/middleware-ssec@3.972.3': - dependencies: - '@aws-sdk/types': 3.973.9 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/middleware-user-agent@3.972.24': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/types': 3.973.9 - '@aws-sdk/util-endpoints': 3.996.5 - '@smithy/core': 3.24.4 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.14.2 - '@smithy/util-retry': 4.2.12 - tslib: 2.8.1 - - '@aws-sdk/nested-clients@3.995.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.13 - '@aws-sdk/middleware-host-header': 3.972.8 - '@aws-sdk/middleware-logger': 3.972.8 - '@aws-sdk/middleware-recursion-detection': 3.972.8 - '@aws-sdk/middleware-user-agent': 3.972.24 - '@aws-sdk/region-config-resolver': 3.972.9 - '@aws-sdk/types': 3.973.9 - '@aws-sdk/util-endpoints': 3.995.0 - '@aws-sdk/util-user-agent-browser': 3.972.8 - '@aws-sdk/util-user-agent-node': 3.973.10 - '@smithy/config-resolver': 4.4.13 - '@smithy/core': 3.24.4 - '@smithy/fetch-http-handler': 5.4.4 - '@smithy/hash-node': 4.2.12 - '@smithy/invalid-dependency': 4.2.12 - '@smithy/middleware-content-length': 4.2.12 - '@smithy/middleware-endpoint': 4.4.27 - '@smithy/middleware-retry': 4.4.44 - '@smithy/middleware-serde': 4.2.15 - '@smithy/middleware-stack': 4.2.12 - '@smithy/node-config-provider': 4.3.12 - '@smithy/node-http-handler': 4.7.4 - '@smithy/protocol-http': 5.3.12 - '@smithy/smithy-client': 4.12.7 - '@smithy/types': 4.14.2 - '@smithy/url-parser': 4.2.12 - '@smithy/util-base64': 4.3.2 - '@smithy/util-body-length-browser': 4.2.2 - '@smithy/util-body-length-node': 4.2.3 - '@smithy/util-defaults-mode-browser': 4.3.43 - '@smithy/util-defaults-mode-node': 4.2.47 - '@smithy/util-endpoints': 3.3.3 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-retry': 4.2.12 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/nested-clients@3.996.13': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.13 - '@aws-sdk/middleware-host-header': 3.972.8 - '@aws-sdk/middleware-logger': 3.972.8 - '@aws-sdk/middleware-recursion-detection': 3.972.8 - '@aws-sdk/middleware-user-agent': 3.972.24 - '@aws-sdk/region-config-resolver': 3.972.9 - '@aws-sdk/types': 3.973.9 - '@aws-sdk/util-endpoints': 3.996.5 - '@aws-sdk/util-user-agent-browser': 3.972.8 - '@aws-sdk/util-user-agent-node': 3.973.10 - '@smithy/config-resolver': 4.4.13 - '@smithy/core': 3.24.4 - '@smithy/fetch-http-handler': 5.4.4 - '@smithy/hash-node': 4.2.12 - '@smithy/invalid-dependency': 4.2.12 - '@smithy/middleware-content-length': 4.2.12 - '@smithy/middleware-endpoint': 4.4.27 - '@smithy/middleware-retry': 4.4.44 - '@smithy/middleware-serde': 4.2.15 - '@smithy/middleware-stack': 4.2.12 - '@smithy/node-config-provider': 4.3.12 - '@smithy/node-http-handler': 4.7.4 - '@smithy/protocol-http': 5.3.12 - '@smithy/smithy-client': 4.12.7 - '@smithy/types': 4.14.2 - '@smithy/url-parser': 4.2.12 - '@smithy/util-base64': 4.3.2 - '@smithy/util-body-length-browser': 4.2.2 - '@smithy/util-body-length-node': 4.2.3 - '@smithy/util-defaults-mode-browser': 4.3.43 - '@smithy/util-defaults-mode-node': 4.2.47 - '@smithy/util-endpoints': 3.3.3 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-retry': 4.2.12 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/nested-clients@3.997.11': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.13 - '@aws-sdk/signature-v4-multi-region': 3.996.28 - '@aws-sdk/types': 3.973.9 - '@smithy/core': 3.24.4 - '@smithy/fetch-http-handler': 5.4.4 - '@smithy/node-http-handler': 4.7.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/region-config-resolver@3.972.9': - dependencies: - '@aws-sdk/types': 3.973.9 - '@smithy/config-resolver': 4.4.13 - '@smithy/node-config-provider': 4.3.12 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/signature-v4-multi-region@3.995.0': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.11 - '@aws-sdk/types': 3.973.9 - '@smithy/protocol-http': 5.3.12 - '@smithy/signature-v4': 5.4.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/signature-v4-multi-region@3.996.28': - dependencies: - '@aws-sdk/types': 3.973.9 - '@smithy/core': 3.24.4 - '@smithy/signature-v4': 5.4.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/token-providers@3.1014.0': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/nested-clients': 3.997.11 - '@aws-sdk/types': 3.973.9 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/token-providers@3.1052.0': - dependencies: - '@aws-sdk/core': 3.974.13 - '@aws-sdk/nested-clients': 3.997.11 - '@aws-sdk/types': 3.973.9 - '@smithy/core': 3.24.4 - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/types@3.973.6': - dependencies: - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/types@3.973.9': - dependencies: - '@smithy/types': 4.14.2 - tslib: 2.8.1 - - '@aws-sdk/util-arn-parser@3.972.2': - dependencies: - tslib: 2.8.1 - - '@aws-sdk/util-endpoints@3.995.0': - dependencies: - '@aws-sdk/types': 3.973.9 - '@smithy/types': 4.14.2 - '@smithy/url-parser': 4.2.12 - '@smithy/util-endpoints': 3.3.3 - tslib: 2.8.1 - - '@aws-sdk/util-endpoints@3.996.5': - dependencies: - '@aws-sdk/types': 3.973.9 - '@smithy/types': 4.14.2 - '@smithy/url-parser': 4.2.12 - '@smithy/util-endpoints': 3.3.3 - tslib: 2.8.1 - - '@aws-sdk/util-locate-window@3.465.0': - dependencies: - tslib: 2.8.1 - - '@aws-sdk/util-user-agent-browser@3.972.8': - dependencies: - '@aws-sdk/types': 3.973.9 - '@smithy/types': 4.14.2 - bowser: 2.12.1 - tslib: 2.8.1 - - '@aws-sdk/util-user-agent-node@3.973.10': - dependencies: - '@aws-sdk/middleware-user-agent': 3.972.24 - '@aws-sdk/types': 3.973.9 - '@smithy/node-config-provider': 4.3.12 - '@smithy/types': 4.14.2 - '@smithy/util-config-provider': 4.2.2 - tslib: 2.8.1 - - '@aws-sdk/xml-builder@3.972.15': - dependencies: - '@smithy/types': 4.14.2 - fast-xml-parser: 5.5.8 - tslib: 2.8.1 - - '@aws-sdk/xml-builder@3.972.25': - dependencies: - '@nodable/entities': 2.1.0 - '@smithy/types': 4.14.2 - fast-xml-parser: 5.7.3 - tslib: 2.8.1 - - '@aws/lambda-invoke-store@0.2.2': {} - - '@babel/code-frame@7.29.0': - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.29.7': {} - - '@babel/core@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.29.1': - dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/helper-annotate-as-pure@7.27.3': - dependencies: - '@babel/types': 7.29.0 - - '@babel/helper-compilation-targets@7.29.7': - dependencies: - '@babel/compat-data': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.4.0 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.3 - lodash.debounce: 4.0.8 - resolve: 1.22.12 - transitivePeerDependencies: - - supports-color - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-member-expression-to-functions@7.27.1': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.28.6': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.27.1': - dependencies: - '@babel/types': 7.29.0 - - '@babel/helper-plugin-utils@7.27.1': {} - - '@babel/helper-plugin-utils@7.28.6': {} - - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.28.5': {} - - '@babel/helper-validator-option@7.29.7': {} - - '@babel/helper-wrap-function@7.28.3': - dependencies: - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.28.6': - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - - '@babel/parser@7.29.0': - dependencies: - '@babel/types': 7.29.0 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + - aws-crt - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': + '@aws-sdk/credential-provider-login@3.972.43': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': + '@aws-sdk/credential-provider-node@3.972.24': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/credential-provider-env': 3.972.21 + '@aws-sdk/credential-provider-http': 3.972.23 + '@aws-sdk/credential-provider-ini': 3.972.23 + '@aws-sdk/credential-provider-process': 3.972.21 + '@aws-sdk/credential-provider-sso': 3.972.23 + '@aws-sdk/credential-provider-web-identity': 3.972.23 + '@aws-sdk/types': 3.973.9 + '@smithy/credential-provider-imds': 4.2.12 + '@smithy/property-provider': 4.2.12 + '@smithy/shared-ini-file-loader': 4.4.7 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/credential-provider-node@3.972.44': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/credential-provider-env': 3.972.39 + '@aws-sdk/credential-provider-http': 3.972.41 + '@aws-sdk/credential-provider-ini': 3.972.43 + '@aws-sdk/credential-provider-process': 3.972.39 + '@aws-sdk/credential-provider-sso': 3.972.43 + '@aws-sdk/credential-provider-web-identity': 3.972.43 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/credential-provider-imds': 4.3.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': + '@aws-sdk/credential-provider-process@3.972.21': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/types': 3.973.9 + '@smithy/property-provider': 4.2.12 + '@smithy/shared-ini-file-loader': 4.4.7 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/credential-provider-process@3.972.39': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.29.0)': + '@aws-sdk/credential-provider-sso@3.972.23': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.996.13 + '@aws-sdk/token-providers': 3.1014.0 + '@aws-sdk/types': 3.973.9 + '@smithy/property-provider': 4.2.12 + '@smithy/shared-ini-file-loader': 4.4.7 + '@smithy/types': 4.14.2 + tslib: 2.8.1 transitivePeerDependencies: - - supports-color + - aws-crt - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/credential-provider-sso@3.972.43': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/token-providers': 3.1052.0 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-web-identity@3.972.23': + dependencies: + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.996.13 + '@aws-sdk/types': 3.973.9 + '@smithy/property-provider': 4.2.12 + '@smithy/shared-ini-file-loader': 4.4.7 + '@smithy/types': 4.14.2 + tslib: 2.8.1 transitivePeerDependencies: - - supports-color + - aws-crt - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/credential-provider-web-identity@3.972.43': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.29.0)': + '@aws-sdk/credential-providers@3.1053.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/client-cognito-identity': 3.1053.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/credential-provider-cognito-identity': 3.972.36 + '@aws-sdk/credential-provider-env': 3.972.39 + '@aws-sdk/credential-provider-http': 3.972.41 + '@aws-sdk/credential-provider-ini': 3.972.43 + '@aws-sdk/credential-provider-login': 3.972.43 + '@aws-sdk/credential-provider-node': 3.972.44 + '@aws-sdk/credential-provider-process': 3.972.39 + '@aws-sdk/credential-provider-sso': 3.972.43 + '@aws-sdk/credential-provider-web-identity': 3.972.43 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/credential-provider-imds': 4.3.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/credential-providers@3.995.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/client-cognito-identity': 3.995.0 + '@aws-sdk/core': 3.973.23 + '@aws-sdk/credential-provider-cognito-identity': 3.972.16 + '@aws-sdk/credential-provider-env': 3.972.21 + '@aws-sdk/credential-provider-http': 3.972.23 + '@aws-sdk/credential-provider-ini': 3.972.23 + '@aws-sdk/credential-provider-login': 3.972.23 + '@aws-sdk/credential-provider-node': 3.972.24 + '@aws-sdk/credential-provider-process': 3.972.21 + '@aws-sdk/credential-provider-sso': 3.972.23 + '@aws-sdk/credential-provider-web-identity': 3.972.23 + '@aws-sdk/nested-clients': 3.995.0 + '@aws-sdk/types': 3.973.6 + '@smithy/config-resolver': 4.4.13 + '@smithy/core': 3.23.12 + '@smithy/credential-provider-imds': 4.2.12 + '@smithy/node-config-provider': 4.3.12 + '@smithy/property-provider': 4.2.12 + '@smithy/types': 4.13.1 + tslib: 2.8.1 transitivePeerDependencies: - - supports-color + - aws-crt - '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.29.0)': + '@aws-sdk/middleware-bucket-endpoint@3.972.3': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color + '@aws-sdk/types': 3.973.9 + '@aws-sdk/util-arn-parser': 3.972.2 + '@smithy/node-config-provider': 4.3.12 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.14.2 + '@smithy/util-config-provider': 4.2.2 + tslib: 2.8.1 - '@babel/plugin-transform-classes@7.28.4(@babel/core@7.29.0)': + '@aws-sdk/middleware-expect-continue@3.972.3': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@aws-sdk/types': 3.973.9 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/middleware-flexible-checksums@3.972.9': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.28.6 + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/crc64-nvme': 3.972.0 + '@aws-sdk/types': 3.973.9 + '@smithy/is-array-buffer': 4.2.2 + '@smithy/node-config-provider': 4.3.12 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.14.2 + '@smithy/util-middleware': 4.2.12 + '@smithy/util-stream': 4.5.20 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 - '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.29.0)': + '@aws-sdk/middleware-host-header@3.972.8': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@aws-sdk/types': 3.973.9 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/middleware-location-constraint@3.972.3': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/types': 3.973.9 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/middleware-logger@3.972.8': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/types': 3.973.9 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/middleware-recursion-detection@3.972.8': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/types': 3.973.9 + '@aws/lambda-invoke-store': 0.2.2 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/middleware-sdk-ec2@3.972.27': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/signature-v4': 5.4.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.29.0)': + '@aws-sdk/middleware-sdk-s3@3.972.11': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color + '@aws-sdk/core': 3.974.13 + '@aws-sdk/types': 3.973.9 + '@aws-sdk/util-arn-parser': 3.972.2 + '@smithy/core': 3.24.4 + '@smithy/node-config-provider': 4.3.12 + '@smithy/protocol-http': 5.3.12 + '@smithy/signature-v4': 5.4.4 + '@smithy/smithy-client': 4.12.7 + '@smithy/types': 4.14.2 + '@smithy/util-config-provider': 4.2.2 + '@smithy/util-middleware': 4.2.12 + '@smithy/util-stream': 4.5.20 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/middleware-ssec@3.972.3': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/types': 3.973.9 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/middleware-user-agent@3.972.24': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/types': 3.973.9 + '@aws-sdk/util-endpoints': 3.996.5 + '@smithy/core': 3.24.4 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.14.2 + '@smithy/util-retry': 4.2.12 + tslib: 2.8.1 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/nested-clients@3.995.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/middleware-host-header': 3.972.8 + '@aws-sdk/middleware-logger': 3.972.8 + '@aws-sdk/middleware-recursion-detection': 3.972.8 + '@aws-sdk/middleware-user-agent': 3.972.24 + '@aws-sdk/region-config-resolver': 3.972.9 + '@aws-sdk/types': 3.973.9 + '@aws-sdk/util-endpoints': 3.995.0 + '@aws-sdk/util-user-agent-browser': 3.972.8 + '@aws-sdk/util-user-agent-node': 3.973.10 + '@smithy/config-resolver': 4.4.13 + '@smithy/core': 3.24.4 + '@smithy/fetch-http-handler': 5.4.4 + '@smithy/hash-node': 4.2.12 + '@smithy/invalid-dependency': 4.2.12 + '@smithy/middleware-content-length': 4.2.12 + '@smithy/middleware-endpoint': 4.4.27 + '@smithy/middleware-retry': 4.4.44 + '@smithy/middleware-serde': 4.2.15 + '@smithy/middleware-stack': 4.2.12 + '@smithy/node-config-provider': 4.3.12 + '@smithy/node-http-handler': 4.7.4 + '@smithy/protocol-http': 5.3.12 + '@smithy/smithy-client': 4.12.7 + '@smithy/types': 4.14.2 + '@smithy/url-parser': 4.2.12 + '@smithy/util-base64': 4.3.2 + '@smithy/util-body-length-browser': 4.2.2 + '@smithy/util-body-length-node': 4.2.3 + '@smithy/util-defaults-mode-browser': 4.3.43 + '@smithy/util-defaults-mode-node': 4.2.47 + '@smithy/util-endpoints': 3.3.3 + '@smithy/util-middleware': 4.2.12 + '@smithy/util-retry': 4.2.12 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 transitivePeerDependencies: - - supports-color + - aws-crt - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/nested-clients@3.996.13': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.29.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/middleware-host-header': 3.972.8 + '@aws-sdk/middleware-logger': 3.972.8 + '@aws-sdk/middleware-recursion-detection': 3.972.8 + '@aws-sdk/middleware-user-agent': 3.972.24 + '@aws-sdk/region-config-resolver': 3.972.9 + '@aws-sdk/types': 3.973.9 + '@aws-sdk/util-endpoints': 3.996.5 + '@aws-sdk/util-user-agent-browser': 3.972.8 + '@aws-sdk/util-user-agent-node': 3.973.10 + '@smithy/config-resolver': 4.4.13 + '@smithy/core': 3.24.4 + '@smithy/fetch-http-handler': 5.4.4 + '@smithy/hash-node': 4.2.12 + '@smithy/invalid-dependency': 4.2.12 + '@smithy/middleware-content-length': 4.2.12 + '@smithy/middleware-endpoint': 4.4.27 + '@smithy/middleware-retry': 4.4.44 + '@smithy/middleware-serde': 4.2.15 + '@smithy/middleware-stack': 4.2.12 + '@smithy/node-config-provider': 4.3.12 + '@smithy/node-http-handler': 4.7.4 + '@smithy/protocol-http': 5.3.12 + '@smithy/smithy-client': 4.12.7 + '@smithy/types': 4.14.2 + '@smithy/url-parser': 4.2.12 + '@smithy/util-base64': 4.3.2 + '@smithy/util-body-length-browser': 4.2.2 + '@smithy/util-body-length-node': 4.2.3 + '@smithy/util-defaults-mode-browser': 4.3.43 + '@smithy/util-defaults-mode-node': 4.2.47 + '@smithy/util-endpoints': 3.3.3 + '@smithy/util-middleware': 4.2.12 + '@smithy/util-retry': 4.2.12 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 transitivePeerDependencies: - - supports-color + - aws-crt - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/nested-clients@3.997.11': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/signature-v4-multi-region': 3.996.28 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/fetch-http-handler': 5.4.4 + '@smithy/node-http-handler': 4.7.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/region-config-resolver@3.972.9': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/types': 3.973.9 + '@smithy/config-resolver': 4.4.13 + '@smithy/node-config-provider': 4.3.12 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/signature-v4-multi-region@3.995.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/middleware-sdk-s3': 3.972.11 + '@aws-sdk/types': 3.973.9 + '@smithy/protocol-http': 5.3.12 + '@smithy/signature-v4': 5.4.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/signature-v4-multi-region@3.996.28': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/signature-v4': 5.4.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/token-providers@3.1014.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/types': 3.973.9 + '@smithy/property-provider': 4.2.12 + '@smithy/shared-ini-file-loader': 4.4.7 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/token-providers@3.1052.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.29.0)': + '@aws-sdk/types@3.973.6': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/types@3.973.9': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color + '@smithy/types': 4.14.2 + tslib: 2.8.1 - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/util-arn-parser@3.972.2': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 + tslib: 2.8.1 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/util-endpoints@3.995.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/types': 3.973.9 + '@smithy/types': 4.14.2 + '@smithy/url-parser': 4.2.12 + '@smithy/util-endpoints': 3.3.3 + tslib: 2.8.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/util-endpoints@3.996.5': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws-sdk/types': 3.973.9 + '@smithy/types': 4.14.2 + '@smithy/url-parser': 4.2.12 + '@smithy/util-endpoints': 3.3.3 + tslib: 2.8.1 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/util-locate-window@3.465.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + tslib: 2.8.1 - '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.29.0)': + '@aws-sdk/util-user-agent-browser@3.972.8': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color + '@aws-sdk/types': 3.973.9 + '@smithy/types': 4.14.2 + bowser: 2.12.1 + tslib: 2.8.1 - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/util-user-agent-node@3.973.10': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color + '@aws-sdk/middleware-user-agent': 3.972.24 + '@aws-sdk/types': 3.973.9 + '@smithy/node-config-provider': 4.3.12 + '@smithy/types': 4.14.2 + '@smithy/util-config-provider': 4.2.2 + tslib: 2.8.1 - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/xml-builder@3.972.15': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@smithy/types': 4.14.2 + fast-xml-parser: 5.5.8 + tslib: 2.8.1 - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.29.0)': + '@aws-sdk/xml-builder@3.972.25': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color + '@nodable/entities': 2.1.0 + '@smithy/types': 4.14.2 + fast-xml-parser: 5.7.3 + tslib: 2.8.1 - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@aws/lambda-invoke-store@0.2.2': {} - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.29.0)': + '@babel/code-frame@7.29.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.29.0)': + '@babel/core@7.29.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': + '@babel/generator@7.29.1': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 - '@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.29.0)': + '@babel/helper-compilation-targets@7.29.7': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 - '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-globals@7.28.0': {} - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.29.0)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) - '@babel/types': 7.29.0 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils@7.27.1': {} - '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-string-parser@7.27.1': {} - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.29.0)': + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.28.6': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': + '@babel/parser@7.29.0': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.29.0 - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.28.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/compat-data': 7.29.7 '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.29.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.29.0) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.29.0) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.29.0) - '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.29.0) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.29.0) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.29.0) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-systemjs': 7.29.4(@babel/core@7.29.0) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.29.0) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.29.0) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.29.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.29.0) - core-js-compat: 3.46.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.29.0 - esutils: 2.0.3 - '@babel/preset-react@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-transform-react-display-name': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - '@babel/preset-typescript@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color '@babel/runtime@7.28.4': {} @@ -11522,10 +9408,6 @@ snapshots: dependencies: postcss-selector-parser: 7.1.1 - '@discoveryjs/json-ext@0.6.3': {} - - '@discoveryjs/json-ext@1.1.0': {} - '@dual-bundle/import-meta-resolve@4.2.1': {} '@emnapi/core@1.10.0': @@ -12086,10 +9968,6 @@ snapshots: transitivePeerDependencies: - react-dom - '@guardian/shimport@1.0.2': - dependencies: - tslib: 2.8.1 - '@guardian/source-development-kitchen@28.1.0(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@guardian/libs@32.0.0(@guardian/ophan-tracker-js@4.0.2)(tslib@2.6.2)(typescript@6.0.3))(@guardian/source@12.2.1(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@6.0.3))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@6.0.3)': dependencies: '@guardian/libs': 32.0.0(@guardian/ophan-tracker-js@4.0.2)(tslib@2.6.2)(typescript@6.0.3) @@ -12330,6 +10208,14 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + dependencies: + glob: 13.0.6 + react-docgen-typescript: 2.4.0(typescript@6.0.3) + vite: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + optionalDependencies: + typescript: 6.0.3 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -12359,134 +10245,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@jsonjoy.com/base64@1.1.2(tslib@2.6.2)': - dependencies: - tslib: 2.6.2 - - '@jsonjoy.com/base64@17.67.0(tslib@2.6.2)': - dependencies: - tslib: 2.6.2 - - '@jsonjoy.com/buffers@1.2.1(tslib@2.6.2)': - dependencies: - tslib: 2.6.2 - - '@jsonjoy.com/buffers@17.67.0(tslib@2.6.2)': - dependencies: - tslib: 2.6.2 - - '@jsonjoy.com/codegen@1.0.0(tslib@2.6.2)': - dependencies: - tslib: 2.6.2 - - '@jsonjoy.com/codegen@17.67.0(tslib@2.6.2)': - dependencies: - tslib: 2.6.2 - - '@jsonjoy.com/fs-core@4.64.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/fs-node-builtins': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.64.0(tslib@2.6.2) - thingies: 2.6.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/fs-fsa@4.64.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/fs-core': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-builtins': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.64.0(tslib@2.6.2) - thingies: 2.6.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/fs-node-builtins@4.64.0(tslib@2.6.2)': - dependencies: - tslib: 2.6.2 - - '@jsonjoy.com/fs-node-to-fsa@4.64.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/fs-fsa': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-builtins': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.64.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/fs-node-utils@4.64.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/fs-node-builtins': 4.64.0(tslib@2.6.2) - glob-to-regex.js: 1.2.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/fs-node@4.64.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/fs-core': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-builtins': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-print': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-snapshot': 4.64.0(tslib@2.6.2) - glob-to-regex.js: 1.2.0(tslib@2.6.2) - thingies: 2.6.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/fs-print@4.64.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/fs-node-utils': 4.64.0(tslib@2.6.2) - tree-dump: 1.1.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/fs-snapshot@4.64.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/buffers': 17.67.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/json-pack': 17.67.0(tslib@2.6.2) - '@jsonjoy.com/util': 17.67.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/json-pack@1.21.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.6.2) - '@jsonjoy.com/buffers': 1.2.1(tslib@2.6.2) - '@jsonjoy.com/codegen': 1.0.0(tslib@2.6.2) - '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.6.2) - '@jsonjoy.com/util': 1.9.0(tslib@2.6.2) - hyperdyperid: 1.2.0 - thingies: 2.6.0(tslib@2.6.2) - tree-dump: 1.1.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/json-pack@17.67.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/base64': 17.67.0(tslib@2.6.2) - '@jsonjoy.com/buffers': 17.67.0(tslib@2.6.2) - '@jsonjoy.com/codegen': 17.67.0(tslib@2.6.2) - '@jsonjoy.com/json-pointer': 17.67.0(tslib@2.6.2) - '@jsonjoy.com/util': 17.67.0(tslib@2.6.2) - hyperdyperid: 1.2.0 - thingies: 2.6.0(tslib@2.6.2) - tree-dump: 1.1.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/json-pointer@1.0.2(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/codegen': 1.0.0(tslib@2.6.2) - '@jsonjoy.com/util': 1.9.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/json-pointer@17.67.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/util': 17.67.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/util@1.9.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/buffers': 1.2.1(tslib@2.6.2) - '@jsonjoy.com/codegen': 1.0.0(tslib@2.6.2) - tslib: 2.6.2 - - '@jsonjoy.com/util@17.67.0(tslib@2.6.2)': - dependencies: - '@jsonjoy.com/buffers': 17.67.0(tslib@2.6.2) - '@jsonjoy.com/codegen': 17.67.0(tslib@2.6.2) - tslib: 2.6.2 - '@keyv/bigmap@1.3.1(keyv@5.6.0)': dependencies: hashery: 1.5.1 @@ -12495,8 +10253,6 @@ snapshots: '@keyv/serialize@1.1.1': {} - '@leichtgewicht/ip-codec@2.0.5': {} - '@mdx-js/react@3.1.1(@types/react@18.3.1)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 @@ -12582,8 +10338,6 @@ snapshots: '@tybys/wasm-util': 0.10.2 optional: true - '@noble/hashes@1.4.0': {} - '@nodable/entities@2.1.0': {} '@nodelib/fs.scandir@2.1.5': @@ -12600,100 +10354,6 @@ snapshots: '@package-json/types@0.0.12': {} - '@peculiar/asn1-cms@2.8.0': - dependencies: - '@peculiar/asn1-schema': 2.8.0 - '@peculiar/asn1-x509': 2.8.0 - '@peculiar/asn1-x509-attr': 2.8.0 - asn1js: 3.0.10 - tslib: 2.8.1 - - '@peculiar/asn1-csr@2.8.0': - dependencies: - '@peculiar/asn1-schema': 2.8.0 - '@peculiar/asn1-x509': 2.8.0 - asn1js: 3.0.10 - tslib: 2.8.1 - - '@peculiar/asn1-ecc@2.8.0': - dependencies: - '@peculiar/asn1-schema': 2.8.0 - '@peculiar/asn1-x509': 2.8.0 - asn1js: 3.0.10 - tslib: 2.8.1 - - '@peculiar/asn1-pfx@2.8.0': - dependencies: - '@peculiar/asn1-cms': 2.8.0 - '@peculiar/asn1-pkcs8': 2.8.0 - '@peculiar/asn1-rsa': 2.8.0 - '@peculiar/asn1-schema': 2.8.0 - asn1js: 3.0.10 - tslib: 2.8.1 - - '@peculiar/asn1-pkcs8@2.8.0': - dependencies: - '@peculiar/asn1-schema': 2.8.0 - '@peculiar/asn1-x509': 2.8.0 - asn1js: 3.0.10 - tslib: 2.8.1 - - '@peculiar/asn1-pkcs9@2.8.0': - dependencies: - '@peculiar/asn1-cms': 2.8.0 - '@peculiar/asn1-pfx': 2.8.0 - '@peculiar/asn1-pkcs8': 2.8.0 - '@peculiar/asn1-schema': 2.8.0 - '@peculiar/asn1-x509': 2.8.0 - '@peculiar/asn1-x509-attr': 2.8.0 - asn1js: 3.0.10 - tslib: 2.8.1 - - '@peculiar/asn1-rsa@2.8.0': - dependencies: - '@peculiar/asn1-schema': 2.8.0 - '@peculiar/asn1-x509': 2.8.0 - asn1js: 3.0.10 - tslib: 2.8.1 - - '@peculiar/asn1-schema@2.8.0': - dependencies: - '@peculiar/utils': 2.0.3 - asn1js: 3.0.10 - tslib: 2.8.1 - - '@peculiar/asn1-x509-attr@2.8.0': - dependencies: - '@peculiar/asn1-schema': 2.8.0 - '@peculiar/asn1-x509': 2.8.0 - asn1js: 3.0.10 - tslib: 2.8.1 - - '@peculiar/asn1-x509@2.8.0': - dependencies: - '@peculiar/asn1-schema': 2.8.0 - '@peculiar/utils': 2.0.3 - asn1js: 3.0.10 - tslib: 2.8.1 - - '@peculiar/utils@2.0.3': - dependencies: - tslib: 2.8.1 - - '@peculiar/x509@1.14.3': - dependencies: - '@peculiar/asn1-cms': 2.8.0 - '@peculiar/asn1-csr': 2.8.0 - '@peculiar/asn1-ecc': 2.8.0 - '@peculiar/asn1-pkcs9': 2.8.0 - '@peculiar/asn1-rsa': 2.8.0 - '@peculiar/asn1-schema': 2.8.0 - '@peculiar/asn1-x509': 2.8.0 - pvtsutils: 1.3.6 - reflect-metadata: 0.2.2 - tslib: 2.8.1 - tsyringe: 4.10.0 - '@pkgr/core@0.2.9': {} '@playwright/test@1.60.0': @@ -13344,10 +11004,10 @@ snapshots: axe-core: 4.11.1 storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4)': + '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.1)(react@18.3.1) - '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4) + '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -13361,118 +11021,32 @@ snapshots: - vite - webpack - '@storybook/addon-webpack5-compiler-swc@4.0.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.108.4)': - dependencies: - '@swc/core': 1.15.41 - storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - swc-loader: 0.2.7(@swc/core@1.15.41)(webpack@5.108.4) - transitivePeerDependencies: - - '@swc/helpers' - - webpack - - '@storybook/builder-webpack5@10.3.3(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(webpack-cli@7.2.1)': + '@storybook/builder-vite@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': dependencies: - '@storybook/core-webpack': 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - case-sensitive-paths-webpack-plugin: 2.4.0 - cjs-module-lexer: 1.4.3 - css-loader: 7.1.4(webpack@5.108.4) - es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 9.1.0(typescript@6.0.3)(webpack@5.108.4) - html-webpack-plugin: 5.6.6(webpack@5.108.4) - magic-string: 0.30.21 + '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - style-loader: 4.0.0(webpack@5.108.4) - terser-webpack-plugin: 5.4.0(@swc/core@1.15.41)(esbuild@0.28.1)(webpack@5.108.4) ts-dedent: 2.2.0 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - webpack-dev-middleware: 6.1.3(webpack@5.108.4) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.6.2 - optionalDependencies: - typescript: 6.0.3 + vite: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - - '@minify-html/node' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@swc/html' - - clean-css - - cssnano - - csso - esbuild - - html-minifier-terser - - lightningcss - - postcss - - uglify-js - - webpack-cli - - '@storybook/core-webpack@10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': - dependencies: - storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - ts-dedent: 2.2.0 + - rollup + - webpack - '@storybook/csf-plugin@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2))(webpack@5.108.4)': + '@storybook/csf-plugin@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': dependencies: storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: esbuild: 0.28.1 rollup: 4.62.0 - vite: 6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) + vite: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) '@storybook/global@5.0.0': {} '@storybook/icons@2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@storybook/preset-react-webpack@10.3.3(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(webpack-cli@7.2.1)': - dependencies: - '@storybook/core-webpack': 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@6.0.3)(webpack@5.108.4) - '@types/semver': 7.7.1 - magic-string: 0.30.21 - react: 18.3.1 - react-docgen: 7.1.1 - react-dom: 18.3.1(react@18.3.1) - resolve: 1.22.12 - semver: 7.8.5 - storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - tsconfig-paths: 4.2.0 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - optionalDependencies: - typescript: 6.0.3 - transitivePeerDependencies: - - '@minify-html/node' - - '@swc/core' - - '@swc/css' - - '@swc/html' - - clean-css - - cssnano - - csso - - esbuild - - html-minifier-terser - - lightningcss - - postcss - - supports-color - - uglify-js - - webpack-cli - - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@6.0.3)(webpack@5.108.4)': - dependencies: - debug: 4.4.3 - endent: 2.1.0 - find-cache-dir: 3.3.2 - flat-cache: 3.2.0 - micromatch: 4.0.8 - react-docgen-typescript: 2.4.0(typescript@6.0.3) - tslib: 2.8.1 - typescript: 6.0.3 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - transitivePeerDependencies: - - supports-color + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) '@storybook/react-dom-shim@10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: @@ -13480,32 +11054,27 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-webpack5@10.3.3(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(webpack-cli@7.2.1)': + '@storybook/react-vite@10.3.3(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': dependencies: - '@storybook/builder-webpack5': 10.3.3(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(webpack-cli@7.2.1) - '@storybook/preset-react-webpack': 10.3.3(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(webpack-cli@7.2.1) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + '@rollup/pluginutils': 5.3.0(rollup@4.62.0) + '@storybook/builder-vite': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) '@storybook/react': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3) + empathic: 2.0.1 + magic-string: 0.30.21 react: 18.3.1 + react-docgen: 8.0.2 react-dom: 18.3.1(react@18.3.1) + resolve: 1.22.12 storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - optionalDependencies: - typescript: 6.0.3 + tsconfig-paths: 4.2.0 + vite: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - - '@minify-html/node' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@swc/html' - - clean-css - - cssnano - - csso - esbuild - - html-minifier-terser - - lightningcss - - postcss + - rollup - supports-color - - uglify-js - - webpack-cli + - typescript + - webpack '@storybook/react@10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)': dependencies: @@ -13539,19 +11108,19 @@ snapshots: dependencies: acorn: 8.16.0 - '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)))': + '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))': dependencies: - '@sveltejs/kit': 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)) + '@sveltejs/kit': 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) - '@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)))': + '@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))': dependencies: - '@sveltejs/kit': 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)) + '@sveltejs/kit': 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) - '@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0))': + '@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0) - '@sveltejs/vite-plugin-svelte': 7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)) + '@sveltejs/vite-plugin-svelte': 7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) '@types/cookie': 0.6.0 acorn: 8.16.0 cookie: 0.6.0 @@ -13563,20 +11132,20 @@ snapshots: set-cookie-parser: 3.1.0 sirv: 3.0.2 svelte: 5.56.3(@typescript-eslint/types@8.59.2) - vite: 6.4.3(@types/node@24.12.4)(terser@5.49.0) + vite: 6.4.3(@types/node@24.12.4)(terser@5.46.0) optionalDependencies: typescript: 6.0.3 '@sveltejs/load-config@0.1.1': {} - '@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0))': + '@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0))': dependencies: deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.2 svelte: 5.56.3(@typescript-eslint/types@8.59.2) - vite: 6.4.3(@types/node@24.12.4)(terser@5.49.0) - vitefu: 1.1.3(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)) + vite: 6.4.3(@types/node@24.12.4)(terser@5.46.0) + vitefu: 1.1.3(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.0)': dependencies: @@ -13648,30 +11217,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@6.0.3))(typescript@6.0.3)': - dependencies: - '@svgr/core': 8.1.0(typescript@6.0.3) - cosmiconfig: 8.3.6(typescript@6.0.3) - deepmerge: 4.3.1 - svgo: 3.3.3 - transitivePeerDependencies: - - typescript - - '@svgr/webpack@8.1.0(typescript@6.0.3)': - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.29.0) - '@babel/preset-env': 7.28.3(@babel/core@7.29.0) - '@babel/preset-react': 7.27.1(@babel/core@7.29.0) - '@babel/preset-typescript': 7.27.1(@babel/core@7.29.0) - '@svgr/core': 8.1.0(typescript@6.0.3) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@6.0.3)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@6.0.3))(typescript@6.0.3) - transitivePeerDependencies: - - supports-color - - typescript - - '@swc/cli@0.8.1(@swc/core@1.15.41)(chokidar@5.0.0)': + '@swc/cli@0.8.1(@swc/core@1.15.41)': dependencies: '@swc/core': 1.15.41 '@swc/counter': 0.1.3 @@ -13683,8 +11229,6 @@ snapshots: slash: 3.0.0 source-map: 0.7.4 tinyglobby: 0.2.17 - optionalDependencies: - chokidar: 5.0.0 transitivePeerDependencies: - bare-abort-controller - react-native-b4a @@ -13849,10 +11393,6 @@ snapshots: '@types/connect': 3.4.38 '@types/node': 24.12.4 - '@types/bonjour@3.5.13': - dependencies: - '@types/node': 24.12.4 - '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 @@ -13866,11 +11406,6 @@ snapshots: dependencies: '@types/express': 5.0.6 - '@types/connect-history-api-fallback@1.5.4': - dependencies: - '@types/express-serve-static-core': 5.1.2 - '@types/node': 24.12.4 - '@types/connect@3.4.38': dependencies: '@types/node': 24.12.4 @@ -13900,13 +11435,6 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 1.2.1 - '@types/express-serve-static-core@5.1.2': - dependencies: - '@types/node': 24.12.4 - '@types/qs': 6.9.15 - '@types/range-parser': 1.2.7 - '@types/send': 1.2.1 - '@types/express@5.0.6': dependencies: '@types/body-parser': 1.19.2 @@ -13923,8 +11451,6 @@ snapshots: '@types/he@1.2.0': {} - '@types/html-minifier-terser@6.1.0': {} - '@types/html-minifier-terser@7.0.2': {} '@types/http-cache-semantics@4.2.0': {} @@ -14033,16 +11559,10 @@ snapshots: '@types/semver@7.5.6': {} - '@types/semver@7.7.1': {} - '@types/send@1.2.1': dependencies: '@types/node': 24.12.4 - '@types/serve-index@1.9.4': - dependencies: - '@types/express': 5.0.6 - '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 @@ -14058,51 +11578,6 @@ snapshots: '@types/unist@3.0.3': {} - '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1)': - dependencies: - '@types/node': 24.12.4 - tapable: 2.3.0 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - transitivePeerDependencies: - - '@minify-html/node' - - '@swc/core' - - '@swc/css' - - '@swc/html' - - clean-css - - cssnano - - csso - - esbuild - - html-minifier-terser - - lightningcss - - postcss - - uglify-js - - webpack-cli - - '@types/webpack-env@1.18.8': {} - - '@types/webpack-node-externals@3.0.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1)': - dependencies: - '@types/node': 24.12.4 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - transitivePeerDependencies: - - '@minify-html/node' - - '@swc/core' - - '@swc/css' - - '@swc/html' - - clean-css - - cssnano - - csso - - esbuild - - html-minifier-terser - - lightningcss - - postcss - - uglify-js - - webpack-cli - - '@types/ws@8.18.1': - dependencies: - '@types/node': 24.12.4 - '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.33': @@ -14287,82 +11762,6 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - - '@webassemblyjs/helper-api-error@1.13.2': {} - - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 - '@xhmikosr/archive-type@8.1.0': dependencies: file-type: 21.3.4 @@ -14455,10 +11854,6 @@ snapshots: dependencies: system-architecture: 1.0.0 - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - abab@2.0.6: {} accepts@1.3.8: @@ -14476,10 +11871,6 @@ snapshots: acorn: 8.17.0 acorn-walk: 8.3.5 - acorn-import-phases@1.0.4(acorn@8.17.0): - dependencies: - acorn: 8.17.0 - acorn-jsx@5.3.2(acorn@8.17.0): dependencies: acorn: 8.17.0 @@ -14507,15 +11898,6 @@ snapshots: optionalDependencies: ajv: 8.18.0 - ajv-keywords@3.5.2(ajv@6.15.0): - dependencies: - ajv: 6.15.0 - - ajv-keywords@5.1.0(ajv@8.18.0): - dependencies: - ajv: 8.18.0 - fast-deep-equal: 3.1.3 - ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 @@ -14536,8 +11918,6 @@ snapshots: ansi-escapes@6.2.1: {} - ansi-html-community@0.0.8: {} - ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} @@ -14634,12 +12014,6 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 - asn1js@3.0.10: - dependencies: - pvtsutils: 1.3.6 - pvutils: 1.1.5 - tslib: 2.8.1 - assertion-error@2.0.1: {} ast-types-flow@0.0.8: {} @@ -14709,30 +12083,6 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.12 - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.29.0): - dependencies: - '@babel/compat-data': 7.29.7 - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.29.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.29.0) - core-js-compat: 3.46.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - babel-preset-current-node-syntax@1.0.1(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 @@ -14769,14 +12119,10 @@ snapshots: baseline-browser-mapping@2.10.42: {} - batch@0.6.1: {} - bidi-js@1.0.3: dependencies: require-from-string: 2.0.2 - big.js@5.2.2: {} - binary-version-check@6.1.0: dependencies: binary-version: 7.1.0 @@ -14819,13 +12165,6 @@ snapshots: transitivePeerDependencies: - supports-color - bonjour-service@1.4.2: - dependencies: - fast-deep-equal: 3.1.3 - multicast-dns: 7.2.5 - - boolbase@1.0.0: {} - bowser@2.12.1: {} brace-expansion@1.1.12: @@ -14890,8 +12229,6 @@ snapshots: bytes@3.1.2: {} - bytestreamjs@2.0.1: {} - cacheable-lookup@7.0.0: {} cacheable-request@13.0.19: @@ -14944,8 +12281,6 @@ snapshots: caniuse-lite@1.0.30001803: {} - case-sensitive-paths-webpack-plugin@2.4.0: {} - ccount@2.0.1: {} chai@5.3.3: @@ -14985,14 +12320,8 @@ snapshots: dependencies: readdirp: 4.1.2 - chokidar@5.0.0: - dependencies: - readdirp: 5.0.0 - chromatic@16.1.0: {} - chrome-trace-event@1.0.4: {} - ci-info@3.9.0: {} ci-info@4.4.0: {} @@ -15032,12 +12361,6 @@ snapshots: strip-ansi: 7.1.2 wrap-ansi: 9.0.2 - clone-deep@4.0.1: - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - clsx@2.1.1: {} co@4.6.0: {} @@ -15076,14 +12399,10 @@ snapshots: commander@11.1.0: {} - commander@14.0.3: {} - commander@2.20.3: {} commander@6.2.1: {} - commander@7.2.0: {} - commander@8.3.0: {} comment-parser@1.4.6: {} @@ -15108,24 +12427,8 @@ snapshots: transitivePeerDependencies: - supports-color - compression@1.8.1: - dependencies: - bytes: 3.1.2 - compressible: 2.0.18 - debug: 2.6.9 - negotiator: 0.6.4 - on-headers: 1.1.0 - safe-buffer: 5.2.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - concat-map@0.0.1: {} - connect-history-api-fallback@2.0.0: {} - - console-clear@1.1.1: {} - constructs@10.6.0: {} content-disposition@1.0.1: {} @@ -15151,10 +12454,6 @@ snapshots: graceful-fs: 4.2.11 p-event: 6.0.1 - core-js-compat@3.46.0: - dependencies: - browserslist: 4.28.5 - core-js-compat@3.49.0: dependencies: browserslist: 4.28.5 @@ -15221,7 +12520,7 @@ snapshots: css-functions-list@3.3.3: {} - css-loader@7.1.4(webpack@5.108.4): + css-loader@7.1.4: dependencies: icss-utils: 5.1.0(postcss@8.5.16) postcss: 8.5.16 @@ -15231,50 +12530,16 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.5.16) postcss-value-parser: 4.2.0 semver: 7.8.5 - optionalDependencies: - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - - css-select@4.3.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.2.2 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.2.2 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - - css-tree@2.2.1: - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.1 - - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 css-tree@3.2.1: dependencies: mdn-data: 2.27.1 source-map-js: 1.2.1 - css-what@6.2.2: {} - css.escape@1.5.1: {} cssesc@3.0.0: {} - csso@5.0.5: - dependencies: - css-tree: 2.2.1 - cssom@0.3.8: {} cssom@0.5.0: {} @@ -15328,10 +12593,6 @@ snapshots: dependencies: ms: 2.0.0 - debug@3.2.7: - dependencies: - ms: 2.1.3 - debug@4.3.4: dependencies: ms: 2.1.2 @@ -15352,8 +12613,6 @@ snapshots: dependencies: mimic-response: 4.0.0 - dedent@0.7.0: {} - dedent@1.6.0(babel-plugin-macros@3.1.0): optionalDependencies: babel-plugin-macros: 3.1.0 @@ -15387,8 +12646,6 @@ snapshots: delayed-stream@1.0.0: {} - depd@1.1.2: {} - depd@2.0.0: {} dequal@2.0.3: {} @@ -15411,10 +12668,6 @@ snapshots: dependencies: path-type: 4.0.0 - dns-packet@5.6.1: - dependencies: - '@leichtgewicht/ip-codec': 2.0.5 - doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -15427,16 +12680,6 @@ snapshots: dom-accessibility-api@0.6.3: {} - dom-converter@0.2.0: - dependencies: - utila: 0.4.0 - - dom-serializer@1.4.1: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -15449,10 +12692,6 @@ snapshots: dependencies: webidl-conversions: 7.0.0 - domhandler@4.3.1: - dependencies: - domelementtype: 2.3.0 - domhandler@5.0.3: dependencies: domelementtype: 2.3.0 @@ -15461,18 +12700,6 @@ snapshots: optionalDependencies: '@types/trusted-types': 2.0.7 - domutils@2.8.0: - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - - domutils@3.1.0: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils@3.2.2: dependencies: dom-serializer: 2.0.0 @@ -15510,23 +12737,10 @@ snapshots: emoji-regex@9.2.2: {} - emojis-list@3.0.0: {} + empathic@2.0.1: {} encodeurl@2.0.0: {} - endent@2.1.0: - dependencies: - dedent: 0.7.0 - fast-json-parse: 1.0.3 - objectorarray: 1.0.5 - - enhanced-resolve@5.24.2: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.3 - - entities@2.2.0: {} - entities@4.5.0: {} entities@7.0.1: {} @@ -15535,8 +12749,6 @@ snapshots: env-paths@2.2.1: {} - envinfo@7.21.0: {} - error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -15623,8 +12835,6 @@ snapshots: es-module-lexer@1.7.0: {} - es-module-lexer@2.3.0: {} - es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -15944,11 +13154,6 @@ snapshots: semver: 7.7.4 strip-indent: 4.1.1 - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 @@ -16028,8 +13233,6 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} estree-walker@2.0.2: {} @@ -16046,8 +13249,6 @@ snapshots: transitivePeerDependencies: - bare-abort-controller - events@3.3.0: {} - execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -16155,8 +13356,6 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-json-parse@1.0.3: {} - fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} @@ -16244,12 +13443,6 @@ snapshots: transitivePeerDependencies: - supports-color - find-cache-dir@3.3.2: - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - find-root@1.1.0: {} find-up-simple@1.0.1: {} @@ -16273,12 +13466,6 @@ snapshots: dependencies: traverse-chain: 0.1.0 - flat-cache@3.2.0: - dependencies: - flatted: 3.4.2 - keyv: 4.5.4 - rimraf: 3.0.2 - flat-cache@4.0.1: dependencies: flatted: 3.4.2 @@ -16290,31 +13477,12 @@ snapshots: flatted: 3.4.2 hookified: 1.15.1 - flat@5.0.2: {} - flatted@3.4.2: {} for-each@0.3.5: dependencies: is-callable: 1.2.7 - fork-ts-checker-webpack-plugin@9.1.0(typescript@6.0.3)(webpack@5.108.4): - dependencies: - '@babel/code-frame': 7.29.0 - chalk: 4.1.2 - chokidar: 4.0.3 - cosmiconfig: 8.3.6(typescript@6.0.3) - deepmerge: 4.3.1 - fs-extra: 10.1.0 - memfs: 3.5.3 - minimatch: 3.1.5 - node-abort-controller: 3.1.1 - schema-utils: 3.3.0 - semver: 7.5.4 - tapable: 2.3.3 - typescript: 6.0.3 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - form-data-encoder@4.1.0: {} form-data@4.0.6: @@ -16345,8 +13513,6 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 - fs-monkey@1.1.0: {} - fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -16436,9 +13602,11 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regex.js@1.2.0(tslib@2.6.2): + glob@13.0.6: dependencies: - tslib: 2.6.2 + minimatch: 10.2.5 + minipass: 7.1.3 + path-scurry: 2.0.2 glob@7.2.3: dependencies: @@ -16656,22 +13824,8 @@ snapshots: transitivePeerDependencies: - '@noble/hashes' - html-entities@2.4.0: {} - html-escaper@2.0.2: {} - html-escaper@3.0.3: {} - - html-minifier-terser@6.1.0: - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 8.3.0 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.49.0 - html-minifier-terser@7.2.0: dependencies: camel-case: 4.1.2 @@ -16694,16 +13848,6 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.6(webpack@5.108.4): - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 - lodash: 4.18.1 - pretty-error: 4.0.0 - tapable: 2.3.3 - optionalDependencies: - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - htmlparser2@10.1.0: dependencies: domelementtype: 2.3.0 @@ -16711,46 +13855,21 @@ snapshots: domutils: 3.2.2 entities: 7.0.1 - htmlparser2@6.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - http-cache-semantics@4.2.0: {} - http-errors@1.8.1: - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 1.5.0 - toidentifier: 1.0.1 - http-errors@2.0.1: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 2.0.2 - toidentifier: 1.0.1 - - http-proxy-agent@5.0.0: - dependencies: - '@tootallnate/once': 2.0.1 - agent-base: 6.0.2 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color + toidentifier: 1.0.1 - http-proxy-middleware@4.2.0: + http-proxy-agent@5.0.0: dependencies: + '@tootallnate/once': 2.0.1 + agent-base: 6.0.2 debug: 4.4.3 - httpxy: 0.5.4 - is-glob: 4.0.3 - is-plain-obj: 4.1.0 - micromatch: 4.0.8 transitivePeerDependencies: - supports-color @@ -16766,8 +13885,6 @@ snapshots: transitivePeerDependencies: - supports-color - httpxy@0.5.4: {} - human-signals@2.1.0: {} human-signals@5.0.0: {} @@ -16776,8 +13893,6 @@ snapshots: husky@9.1.7: {} - hyperdyperid@1.2.0: {} - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -16837,12 +13952,8 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 - interpret@3.1.1: {} - ipaddr.js@1.9.1: {} - ipaddr.js@2.4.0: {} - is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -16941,8 +14052,6 @@ snapshots: is-negative-zero@2.0.3: {} - is-network-error@1.3.2: {} - is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -16954,10 +14063,6 @@ snapshots: is-plain-obj@4.1.0: {} - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - is-plain-object@5.0.0: {} is-potential-custom-element-name@1.0.1: {} @@ -17037,8 +14142,6 @@ snapshots: isexe@4.0.0: {} - isobject@3.0.1: {} - istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@5.2.1: @@ -17396,12 +14499,6 @@ snapshots: jest-util: 29.7.0 string-length: 4.0.2 - jest-worker@27.5.1: - dependencies: - '@types/node': 24.12.4 - merge-stream: 2.0.0 - supports-color: 8.1.1 - jest-worker@29.7.0: dependencies: '@types/node': 24.12.4 @@ -17552,11 +14649,6 @@ snapshots: dependencies: language-subtag-registry: 0.3.22 - launch-editor@2.14.1: - dependencies: - picocolors: 1.1.1 - shell-quote: 1.9.0 - launder@1.7.1: dependencies: dayjs: 1.11.20 @@ -17596,14 +14688,6 @@ snapshots: rfdc: 1.3.0 wrap-ansi: 9.0.2 - loader-runner@4.3.2: {} - - loader-utils@1.4.2: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 1.0.2 - locate-character@3.0.0: {} locate-path@5.0.0: @@ -17674,10 +14758,6 @@ snapshots: type-fest: 4.41.0 web-worker: 1.5.0 - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - make-dir@4.0.0: dependencies: semver: 7.5.4 @@ -17725,37 +14805,12 @@ snapshots: dependencies: '@types/mdast': 4.0.4 - mdn-data@2.0.28: {} - - mdn-data@2.0.30: {} - mdn-data@2.27.1: {} media-typer@0.3.0: {} media-typer@1.1.0: {} - memfs@3.5.3: - dependencies: - fs-monkey: 1.1.0 - - memfs@4.64.0(tslib@2.6.2): - dependencies: - '@jsonjoy.com/fs-core': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-fsa': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-builtins': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-to-fsa': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-print': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/fs-snapshot': 4.64.0(tslib@2.6.2) - '@jsonjoy.com/json-pack': 1.21.0(tslib@2.6.2) - '@jsonjoy.com/util': 1.9.0(tslib@2.6.2) - glob-to-regex.js: 1.2.0(tslib@2.6.2) - thingies: 2.6.0(tslib@2.6.2) - tree-dump: 1.1.0(tslib@2.6.2) - tslib: 2.6.2 - meow@13.2.0: {} merge-descriptors@2.0.0: {} @@ -17947,19 +15002,7 @@ snapshots: minimist@1.2.8: {} - minimizer-webpack-plugin@5.6.1(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.108.4): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - terser: 5.49.0 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - optionalDependencies: - '@swc/core': 1.15.41 - clean-css: 5.3.3 - esbuild: 0.28.1 - html-minifier-terser: 7.2.0 - postcss: 8.5.16 + minipass@7.1.3: {} mockdate@3.0.5: {} @@ -17973,11 +15016,6 @@ snapshots: ms@2.1.3: {} - multicast-dns@7.2.5: - dependencies: - dns-packet: 5.6.1 - thunky: 1.1.0 - multipipe@1.0.2: dependencies: duplexer2: 0.1.4 @@ -17995,19 +15033,13 @@ snapshots: negotiator@0.6.3: {} - negotiator@0.6.4: {} - negotiator@1.0.0: {} - neo-async@2.6.2: {} - no-case@3.0.4: dependencies: lower-case: 2.0.2 tslib: 2.8.1 - node-abort-controller@3.1.1: {} - node-domexception@1.0.0: {} node-fetch@3.3.2: @@ -18052,10 +15084,6 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - nwsapi@2.2.23: {} object-assign@4.1.1: {} @@ -18096,8 +15124,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - objectorarray@1.0.5: {} - obug@2.1.2: {} on-finished@2.4.1: @@ -18106,8 +15132,6 @@ snapshots: on-headers@1.0.2: {} - on-headers@1.1.0: {} - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -18136,8 +15160,6 @@ snapshots: powershell-utils: 0.1.0 wsl-utils: 0.3.1 - opener@1.5.2: {} - optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 @@ -18185,10 +15207,6 @@ snapshots: p-map@6.0.0: {} - p-retry@8.0.0: - dependencies: - is-network-error: 1.3.2 - p-timeout@6.1.2: {} p-try@2.2.0: {} @@ -18259,6 +15277,11 @@ snapshots: path-parse@1.0.7: {} + path-scurry@2.0.2: + dependencies: + lru-cache: 11.5.1 + minipass: 7.1.3 + path-to-regexp@8.4.1: {} path-type@4.0.0: {} @@ -18287,15 +15310,6 @@ snapshots: dependencies: find-up: 4.1.0 - pkijs@3.4.0: - dependencies: - '@noble/hashes': 1.4.0 - asn1js: 3.0.10 - bytestreamjs: 2.0.1 - pvtsutils: 1.3.6 - pvutils: 1.1.5 - tslib: 2.8.1 - playwright-core@1.60.0: {} playwright@1.60.0: @@ -18393,11 +15407,6 @@ snapshots: prettier@3.8.3: {} - pretty-error@4.0.0: - dependencies: - lodash: 4.18.1 - renderkid: 3.0.0 - pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -18429,12 +15438,6 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 - proper-lockfile@4.1.2: - dependencies: - graceful-fs: 4.2.11 - retry: 0.12.0 - signal-exit: 3.0.7 - property-information@6.4.0: {} protocols@2.0.2: {} @@ -18452,12 +15455,6 @@ snapshots: pure-rand@6.0.4: {} - pvtsutils@1.3.6: - dependencies: - tslib: 2.8.1 - - pvutils@1.1.5: {} - qified@0.9.0: dependencies: hookified: 2.1.0 @@ -18474,8 +15471,6 @@ snapshots: range-parser@1.2.1: {} - range-parser@1.3.0: {} - raw-body@2.5.3: dependencies: bytes: 3.1.2 @@ -18500,21 +15495,6 @@ snapshots: dependencies: typescript: 6.0.3 - react-docgen@7.1.1: - dependencies: - '@babel/core': 7.29.0 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.28.0 - '@types/doctrine': 0.0.9 - '@types/resolve': 1.20.6 - doctrine: 3.0.0 - resolve: 1.22.12 - strip-indent: 4.1.1 - transitivePeerDependencies: - - supports-color - react-docgen@8.0.2: dependencies: '@babel/core': 7.29.0 @@ -18598,8 +15578,6 @@ snapshots: readdirp@4.1.2: {} - readdirp@5.0.0: {} - recast@0.23.11: dependencies: ast-types: 0.16.1 @@ -18608,17 +15586,11 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.8.1 - rechoir@0.8.0: - dependencies: - resolve: 1.22.12 - redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - reflect-metadata@0.2.2: {} - reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -18630,12 +15602,6 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 - regenerate-unicode-properties@10.2.2: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - regexp-tree@0.1.27: {} regexp.prototype.flags@1.5.4: @@ -18647,17 +15613,6 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - regexpu-core@6.4.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.2 - regjsgen: 0.8.0 - regjsparser: 0.13.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.1 - - regjsgen@0.8.0: {} - regjsparser@0.13.0: dependencies: jsesc: 3.1.0 @@ -18704,14 +15659,6 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 - renderkid@3.0.0: - dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.18.1 - strip-ansi: 6.0.1 - require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -18754,16 +15701,10 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - retry@0.12.0: {} - reusify@1.0.4: {} rfdc@1.3.0: {} - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rollup-plugin-esbuild@6.2.1(esbuild@0.28.1)(rollup@4.59.0): dependencies: debug: 4.4.3 @@ -18876,8 +15817,6 @@ snapshots: safe-buffer@5.1.2: {} - safe-buffer@5.2.1: {} - safe-push-apply@1.0.0: dependencies: es-errors: 1.3.0 @@ -18903,8 +15842,6 @@ snapshots: parse-srcset: 1.0.2 postcss: 8.5.9 - sax@1.6.0: {} - saxes@6.0.0: dependencies: xmlchars: 2.2.0 @@ -18913,30 +15850,12 @@ snapshots: dependencies: loose-envify: 1.4.0 - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.15.0 - ajv-keywords: 3.5.2(ajv@6.15.0) - - schema-utils@4.3.3: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) - ajv-keywords: 5.1.0(ajv@8.18.0) - screenfull@6.0.2: {} seek-bzip@2.0.0: dependencies: commander: 6.2.1 - selfsigned@5.5.0: - dependencies: - '@peculiar/x509': 1.14.3 - pkijs: 3.4.0 - semver-regex@4.0.5: {} semver-truncate@3.0.0: @@ -18971,18 +15890,6 @@ snapshots: transitivePeerDependencies: - supports-color - serve-index@1.9.2: - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9 - escape-html: 1.0.3 - http-errors: 1.8.1 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color - serve-static@2.2.1: dependencies: encodeurl: 2.0.0 @@ -19018,18 +15925,12 @@ snapshots: setprototypeof@1.2.0: {} - shallow-clone@3.0.1: - dependencies: - kind-of: 6.0.3 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 shebang-regex@3.0.0: {} - shell-quote@1.9.0: {} - side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -19145,8 +16046,6 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 - statuses@1.5.0: {} - statuses@2.0.2: {} stop-iteration-iterator@1.1.0: @@ -19313,10 +16212,6 @@ snapshots: dependencies: '@tokenizer/token': 0.3.0 - style-loader@4.0.0(webpack@5.108.4): - dependencies: - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - stylelint-config-recommended@14.0.0(stylelint@16.26.1(typescript@6.0.3)): dependencies: stylelint: 16.26.1(typescript@6.0.3) @@ -19433,22 +16328,6 @@ snapshots: svg-tags@1.0.0: {} - svgo@3.3.3: - dependencies: - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.2.2 - csso: 5.0.5 - picocolors: 1.1.1 - sax: 1.6.0 - - swc-loader@0.2.7(@swc/core@1.15.41)(webpack@5.108.4): - dependencies: - '@swc/core': 1.15.41 - '@swc/counter': 0.1.3 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - swr@1.3.0(react@18.3.1): dependencies: react: 18.3.1 @@ -19471,10 +16350,6 @@ snapshots: tagged-tag@1.0.0: {} - tapable@2.3.0: {} - - tapable@2.3.3: {} - tar-stream@3.1.7: dependencies: b4a: 1.8.1 @@ -19484,17 +16359,6 @@ snapshots: - bare-abort-controller - react-native-b4a - terser-webpack-plugin@5.4.0(@swc/core@1.15.41)(esbuild@0.28.1)(webpack@5.108.4): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - terser: 5.49.0 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - optionalDependencies: - '@swc/core': 1.15.41 - esbuild: 0.28.1 - terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 @@ -19502,13 +16366,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - terser@5.49.0: - dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.17.0 - commander: 2.20.3 - source-map-support: 0.5.21 - test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -19521,10 +16378,6 @@ snapshots: transitivePeerDependencies: - react-native-b4a - thingies@2.6.0(tslib@2.6.2): - dependencies: - tslib: 2.6.2 - through2@0.4.2: dependencies: readable-stream: 1.0.34 @@ -19532,8 +16385,6 @@ snapshots: through@2.3.8: {} - thunky@1.1.0: {} - time-span@5.1.0: dependencies: convert-hrtime: 5.0.0 @@ -19566,10 +16417,6 @@ snapshots: dependencies: is-number: 7.0.0 - to-string-loader@1.2.0: - dependencies: - loader-utils: 1.4.2 - toidentifier@1.0.1: {} token-types@6.1.2: @@ -19601,10 +16448,6 @@ snapshots: traverse-chain@0.1.0: {} - tree-dump@1.1.0(tslib@2.6.2): - dependencies: - tslib: 2.6.2 - trim-lines@3.0.1: {} trough@2.1.0: {} @@ -19677,8 +16520,6 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@1.14.1: {} - tslib@2.6.2: {} tslib@2.8.1: {} @@ -19690,10 +16531,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - tsyringe@4.10.0: - dependencies: - tslib: 1.14.1 - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -19809,17 +16646,6 @@ snapshots: undici@7.28.0: {} - unicode-canonical-property-names-ecmascript@2.0.1: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.2.0 - - unicode-match-property-value-ecmascript@2.2.1: {} - - unicode-property-aliases-ecmascript@2.2.0: {} - unicorn-magic@0.3.0: {} unicorn-magic@0.4.0: {} @@ -19938,8 +16764,6 @@ snapshots: util-deprecate@1.0.2: {} - utila@0.4.0: {} - v8-compile-cache-lib@3.0.1: {} v8-to-istanbul@9.2.0: @@ -19972,18 +16796,18 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-plugin-svgr@5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2)): + vite-plugin-svgr@5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.62.0) '@svgr/core': 8.1.0(typescript@6.0.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@6.0.3)) - vite: 6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2) + vite: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - rollup - supports-color - typescript - vite@6.4.0(@types/node@24.12.4)(terser@5.49.0)(tsx@4.6.2): + vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -19994,10 +16818,10 @@ snapshots: optionalDependencies: '@types/node': 24.12.4 fsevents: 2.3.3 - terser: 5.49.0 + terser: 5.46.0 tsx: 4.6.2 - vite@6.4.3(@types/node@24.12.4)(terser@5.49.0): + vite@6.4.3(@types/node@24.12.4)(terser@5.46.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -20008,11 +16832,11 @@ snapshots: optionalDependencies: '@types/node': 24.12.4 fsevents: 2.3.3 - terser: 5.49.0 + terser: 5.46.0 - vitefu@1.1.3(vite@6.4.3(@types/node@24.12.4)(terser@5.49.0)): + vitefu@1.1.3(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)): optionalDependencies: - vite: 6.4.3(@types/node@24.12.4)(terser@5.49.0) + vite: 6.4.3(@types/node@24.12.4)(terser@5.46.0) w3c-xmlserializer@4.0.0: dependencies: @@ -20026,10 +16850,6 @@ snapshots: dependencies: makeerror: 1.0.12 - watchpack@2.5.2: - dependencies: - graceful-fs: 4.2.11 - web-namespaces@2.0.1: {} web-streams-polyfill@3.3.3: {} @@ -20042,188 +16862,8 @@ snapshots: webidl-conversions@8.0.1: {} - webpack-assets-manifest@6.5.2(webpack@5.108.4): - dependencies: - deepmerge: 4.3.1 - proper-lockfile: 4.1.2 - schema-utils: 4.3.3 - tapable: 2.3.3 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - - webpack-bundle-analyzer@5.3.0: - dependencies: - '@discoveryjs/json-ext': 0.6.3 - acorn: 8.17.0 - acorn-walk: 8.3.5 - commander: 14.0.3 - escape-string-regexp: 5.0.0 - html-escaper: 3.0.3 - opener: 1.5.2 - picocolors: 1.1.1 - sirv: 3.0.2 - ws: 8.21.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - webpack-cli@7.2.1(js-yaml@4.1.1)(json5@2.2.3)(webpack-bundle-analyzer@5.3.0)(webpack-dev-server@6.0.0)(webpack@5.108.4): - dependencies: - '@discoveryjs/json-ext': 1.1.0 - commander: 14.0.3 - cross-spawn: 7.0.6 - envinfo: 7.21.0 - import-local: 3.2.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - webpack-merge: 6.0.1 - optionalDependencies: - js-yaml: 4.1.1 - json5: 2.2.3 - webpack-bundle-analyzer: 5.3.0 - webpack-dev-server: 6.0.0(tslib@2.6.2)(webpack-cli@7.2.1)(webpack@5.108.4) - - webpack-dev-middleware@6.1.3(webpack@5.108.4): - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.3.0 - schema-utils: 4.3.3 - optionalDependencies: - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - - webpack-dev-middleware@8.0.3(tslib@2.6.2)(webpack@5.108.4): - dependencies: - memfs: 4.64.0(tslib@2.6.2) - mime-types: 3.0.2 - on-finished: 2.4.1 - range-parser: 1.3.0 - schema-utils: 4.3.3 - optionalDependencies: - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - transitivePeerDependencies: - - tslib - - webpack-dev-server@6.0.0(tslib@2.6.2)(webpack-cli@7.2.1)(webpack@5.108.4): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 5.0.6 - '@types/express-serve-static-core': 5.1.2 - '@types/serve-index': 1.9.4 - '@types/serve-static': 2.2.0 - '@types/ws': 8.18.1 - ansi-html-community: 0.0.8 - bonjour-service: 1.4.2 - chokidar: 5.0.0 - compression: 1.8.1 - connect-history-api-fallback: 2.0.0 - express: 5.2.1 - graceful-fs: 4.2.11 - http-proxy-middleware: 4.2.0 - ipaddr.js: 2.4.0 - launch-editor: 2.14.1 - open: 11.0.0 - p-retry: 8.0.0 - schema-utils: 4.3.3 - selfsigned: 5.5.0 - serve-index: 1.9.2 - tinyglobby: 0.2.17 - webpack-dev-middleware: 8.0.3(tslib@2.6.2)(webpack@5.108.4) - ws: 8.21.0 - optionalDependencies: - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - webpack-cli: 7.2.1(js-yaml@4.1.1)(json5@2.2.3)(webpack-bundle-analyzer@5.3.0)(webpack-dev-server@6.0.0)(webpack@5.108.4) - transitivePeerDependencies: - - bufferutil - - supports-color - - tslib - - utf-8-validate - - webpack-format-messages@2.0.6: - dependencies: - kleur: 3.0.3 - - webpack-hot-middleware@2.26.1: - dependencies: - ansi-html-community: 0.0.8 - html-entities: 2.4.0 - strip-ansi: 6.0.1 - - webpack-hot-server-middleware@0.6.1(webpack@5.108.4): - dependencies: - debug: 3.2.7 - require-from-string: 2.0.2 - source-map-support: 0.5.21 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - transitivePeerDependencies: - - supports-color - - webpack-manifest-plugin@6.0.1(webpack@5.108.4): - dependencies: - tapable: 2.3.0 - webpack: 5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1) - webpack-sources: 3.5.1 - - webpack-merge@6.0.1: - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - - webpack-messages@2.0.4: - dependencies: - console-clear: 1.1.1 - kleur: 3.0.3 - webpack-format-messages: 2.0.6 - - webpack-node-externals@3.0.0: {} - - webpack-sources@3.5.1: {} - webpack-virtual-modules@0.6.2: {} - webpack@5.108.4(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack-cli@7.2.1): - dependencies: - '@types/estree': 1.0.9 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.17.0 - acorn-import-phases: 1.0.4(acorn@8.17.0) - browserslist: 4.28.5 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.24.2 - es-module-lexer: 2.3.0 - eslint-scope: 5.1.1 - events: 3.3.0 - graceful-fs: 4.2.11 - loader-runner: 4.3.2 - mime-db: 1.54.0 - minimizer-webpack-plugin: 5.6.1(@swc/core@1.15.41)(clean-css@5.3.3)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.108.4) - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.3 - watchpack: 2.5.2 - webpack-sources: 3.5.1 - optionalDependencies: - webpack-cli: 7.2.1(js-yaml@4.1.1)(json5@2.2.3)(webpack-bundle-analyzer@5.3.0)(webpack-dev-server@6.0.0)(webpack@5.108.4) - transitivePeerDependencies: - - '@minify-html/node' - - '@swc/core' - - '@swc/css' - - '@swc/html' - - clean-css - - cssnano - - csso - - esbuild - - html-minifier-terser - - lightningcss - - postcss - - uglify-js - whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 @@ -20294,8 +16934,6 @@ snapshots: dependencies: isexe: 2.0.0 - wildcard@2.0.1: {} - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 From 63c112709fa799aed5b36ab79b4cab0a8c16b36f Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 9 Apr 2026 22:45:42 +0100 Subject: [PATCH 07/37] Fix TypeScript errors in Vite migration code - ssr-cjs-plugin: add explicit return for resolveId hook - vite.config.server: use string instead of RegExp for ssr.external - debug.ts: remove stale @ts-expect-error (Vite provides ?raw types) - doHydration.tsx: cast module export to React.FunctionComponent Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/src/client/debug/debug.ts | 1 - dotcom-rendering/src/client/islands/doHydration.tsx | 5 ++++- dotcom-rendering/vite/ssr-cjs-plugin.ts | 1 + dotcom-rendering/vite/vite.config.server.ts | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dotcom-rendering/src/client/debug/debug.ts b/dotcom-rendering/src/client/debug/debug.ts index 31d7490b563..bd3c6aa43dc 100644 --- a/dotcom-rendering/src/client/debug/debug.ts +++ b/dotcom-rendering/src/client/debug/debug.ts @@ -1,4 +1,3 @@ -// @ts-expect-error: Cannot find module import debugCss from './debug.css?raw'; const style = document.createElement('style'); diff --git a/dotcom-rendering/src/client/islands/doHydration.tsx b/dotcom-rendering/src/client/islands/doHydration.tsx index 522999257e0..9501cffdd9f 100644 --- a/dotcom-rendering/src/client/islands/doHydration.tsx +++ b/dotcom-rendering/src/client/islands/doHydration.tsx @@ -74,7 +74,10 @@ export const doHydration = async ( {/* Child islands should not be hydrated separately */} {/* The component to hydrate must be a single JSX Element */} - {createElement(module[name], data)} + {createElement( + module[name] as React.FunctionComponent, + data, + )} , diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.ts b/dotcom-rendering/vite/ssr-cjs-plugin.ts index b33a492bc25..7f7c3906ffc 100644 --- a/dotcom-rendering/vite/ssr-cjs-plugin.ts +++ b/dotcom-rendering/vite/ssr-cjs-plugin.ts @@ -42,6 +42,7 @@ export function ssrCjsPlugin(packages: string[]): Plugin { if (shouldWrap(id)) { return PREFIX + id; } + return undefined; }, load(id) { if (!id.startsWith(PREFIX)) return; diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts index bed78a62cb3..cb971a3bf60 100644 --- a/dotcom-rendering/vite/vite.config.server.ts +++ b/dotcom-rendering/vite/vite.config.server.ts @@ -57,7 +57,7 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { 'valibot', ], // Explicitly external in dev (not needed in prod where they're deployed) - external: DEV ? [/@aws-sdk\/.*/] : [], + external: DEV ? ['@aws-sdk'] : [], }, } satisfies UserConfig); From 4ba9cbf03ae43a3f2f39974210e648b0e9088cc8 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 9 Apr 2026 22:53:08 +0100 Subject: [PATCH 08/37] Update lockfile for Storybook Vite migration Install @storybook/react-vite and remove @storybook/react-webpack5 and @storybook/addon-webpack5-compiler-swc from lockfile. Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/package.json | 2 - pnpm-lock.yaml | 98 ----------------------------------- 2 files changed, 100 deletions(-) diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json index 22ba1ba6e50..2a416157eeb 100644 --- a/dotcom-rendering/package.json +++ b/dotcom-rendering/package.json @@ -97,9 +97,7 @@ "compression": "1.7.4", "constructs": "catalog:", "cpy": "11.0.0", - "css-loader": "7.1.4", "dompurify": "3.4.7", - "dynamic-import-polyfill": "0.1.1", "eslint": "catalog:", "eslint-config-prettier": "10.1.8", "eslint-import-resolver-typescript": "4.4.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c11eec48d90..0ba471dd41b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -521,15 +521,9 @@ importers: cpy: specifier: 11.0.0 version: 11.0.0 - css-loader: - specifier: 7.1.4 - version: 7.1.4 dompurify: specifier: 3.4.7 version: 3.4.7 - dynamic-import-polyfill: - specifier: 0.1.1 - version: 0.1.1 eslint: specifier: 'catalog:' version: 9.39.1 @@ -4507,18 +4501,6 @@ packages: resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} engines: {node: '>=12'} - css-loader@7.1.4: - resolution: {integrity: sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 - webpack: ^5.27.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - css-tree@3.2.1: resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -4740,9 +4722,6 @@ packages: duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - dynamic-import-polyfill@0.1.1: - resolution: {integrity: sha512-m953zv0w5oDagTItWm6Auhmk/pY7EiejaqiVbnzSS3HIjh1FCUeK7WzuaVtWPNs58A+/xpIE+/dVk6pKsrua8g==} - ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -5567,12 +5546,6 @@ packages: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -6749,30 +6722,6 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss-modules-extract-imports@3.1.0: - resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-local-by-default@4.2.0: - resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-scope@3.2.1: - resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - postcss-resolve-nested-selector@0.1.6: resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} @@ -6786,10 +6735,6 @@ packages: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} - postcss-selector-parser@7.1.4: - resolution: {integrity: sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==} - engines: {node: '>=4'} - postcss-styled-syntax@0.7.1: resolution: {integrity: sha512-V5Iy8JztqXOKnTojdytF8IJ3zDXyVR927XftBPinJa3TnKdChGvGzUNEYlNuDtR+iqpuFkwJMgZdaJarYfGFCg==} engines: {node: '>=14.17'} @@ -12520,17 +12465,6 @@ snapshots: css-functions-list@3.3.3: {} - css-loader@7.1.4: - dependencies: - icss-utils: 5.1.0(postcss@8.5.16) - postcss: 8.5.16 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.16) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.16) - postcss-modules-scope: 3.2.1(postcss@8.5.16) - postcss-modules-values: 4.0.0(postcss@8.5.16) - postcss-value-parser: 4.2.0 - semver: 7.8.5 - css-tree@3.2.1: dependencies: mdn-data: 2.27.1 @@ -12721,8 +12655,6 @@ snapshots: dependencies: readable-stream: 2.3.8 - dynamic-import-polyfill@0.1.1: {} - ee-first@1.1.1: {} electron-to-chromium@1.5.286: {} @@ -13905,10 +13837,6 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.16): - dependencies: - postcss: 8.5.16 - ieee754@1.2.1: {} ignore@5.3.2: {} @@ -15322,27 +15250,6 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-modules-extract-imports@3.1.0(postcss@8.5.16): - dependencies: - postcss: 8.5.16 - - postcss-modules-local-by-default@4.2.0(postcss@8.5.16): - dependencies: - icss-utils: 5.1.0(postcss@8.5.16) - postcss: 8.5.16 - postcss-selector-parser: 7.1.4 - postcss-value-parser: 4.2.0 - - postcss-modules-scope@3.2.1(postcss@8.5.16): - dependencies: - postcss: 8.5.16 - postcss-selector-parser: 7.1.4 - - postcss-modules-values@4.0.0(postcss@8.5.16): - dependencies: - icss-utils: 5.1.0(postcss@8.5.16) - postcss: 8.5.16 - postcss-resolve-nested-selector@0.1.6: {} postcss-safe-parser@7.0.1(postcss@8.5.6): @@ -15354,11 +15261,6 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.1.4: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-styled-syntax@0.7.1(postcss@8.5.16): dependencies: postcss: 8.5.16 From 49cc38e5d8089232dc7404557e5023bbba2cec42 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 9 Apr 2026 23:03:08 +0100 Subject: [PATCH 09/37] Enable skipLibCheck to suppress upstream type errors in node_modules Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/dotcom-rendering/tsconfig.json b/dotcom-rendering/tsconfig.json index 84d16528121..56ea84b0836 100644 --- a/dotcom-rendering/tsconfig.json +++ b/dotcom-rendering/tsconfig.json @@ -9,6 +9,7 @@ "lib": ["esnext", "es2015", "dom"], "moduleResolution": "bundler", "noEmit": true, + "skipLibCheck": true, "noFallthroughCasesInSwitch": true, "noUncheckedIndexedAccess": true, "preserveConstEnums": true, From b75a5028ac4fd677233c241890fd4fc818aa5a7b Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 9 Apr 2026 23:22:16 +0100 Subject: [PATCH 10/37] Add AMD require type for curl.js loader in InteractiveBlockComponent Previously typed incidentally by @types/webpack-env which was removed. Co-Authored-By: Claude Opus 4.6 --- .../src/components/InteractiveBlockComponent.island.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx b/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx index 319856c95fb..eec55b22870 100644 --- a/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx +++ b/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx @@ -1,3 +1,10 @@ +// AMD require provided by curl.js loader for legacy interactives +declare global { + interface Window { + require(modules: string[], callback: (...args: never[]) => void): void; + } +} + import { css } from '@emotion/react'; import type { SerializedStyles } from '@emotion/react'; import { getErrorMessage, isUndefined, log } from '@guardian/libs'; From 80fa33a08db89ee90c1bd1ebc472d3714d77c055 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 9 Apr 2026 23:28:35 +0100 Subject: [PATCH 11/37] Fix Jest config for Vite migration - Move .swcrc.json from webpack/ to .swcrc.jest.json (Jest-only concern) - Add Jest mock for islandRegistry.ts (import.meta.glob unsupported) - Revert nativeConnection.ts to named imports (client-side, not SSR) Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/.swcrc.jest.json | 18 ++++++++++++++++++ dotcom-rendering/__mocks__/islandRegistry.ts | 9 +++++++++ dotcom-rendering/jest.config.js | 3 ++- .../src/lib/thrift/nativeConnection.ts | 6 ++---- 4 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 dotcom-rendering/.swcrc.jest.json create mode 100644 dotcom-rendering/__mocks__/islandRegistry.ts diff --git a/dotcom-rendering/.swcrc.jest.json b/dotcom-rendering/.swcrc.jest.json new file mode 100644 index 00000000000..51f3d35ea92 --- /dev/null +++ b/dotcom-rendering/.swcrc.jest.json @@ -0,0 +1,18 @@ +{ + "$schema": "http://json.schemastore.org/swcrc", + "jsc": { + "parser": { + "syntax": "typescript", + "tsx": true, + "decorators": false, + "dynamicImport": true + }, + "transform": { + "react": { + "runtime": "automatic", + "importSource": "@emotion/react" + } + } + }, + "sourceMaps": true +} diff --git a/dotcom-rendering/__mocks__/islandRegistry.ts b/dotcom-rendering/__mocks__/islandRegistry.ts new file mode 100644 index 00000000000..7034f4e74d1 --- /dev/null +++ b/dotcom-rendering/__mocks__/islandRegistry.ts @@ -0,0 +1,9 @@ +/** + * Jest mock for islandRegistry.ts which uses import.meta.glob + * (not supported by Jest/SWC). + */ +export const getIslandModule = ( + _name: string, +): (() => Promise>) | undefined => { + return undefined; +}; diff --git a/dotcom-rendering/jest.config.js b/dotcom-rendering/jest.config.js index 5257a547f9c..a751fd4be5f 100644 --- a/dotcom-rendering/jest.config.js +++ b/dotcom-rendering/jest.config.js @@ -1,4 +1,4 @@ -const swcConfig = require('./webpack/.swcrc.json'); +const swcConfig = require('./.swcrc.jest.json'); const esModules = [ '@guardian/', @@ -27,6 +27,7 @@ module.exports = { moduleNameMapper: { '^svgs/(.*)$': '/__mocks__/svgMock.tsx', '^(.*)\\.svg$': '/__mocks__/svgMock.tsx', + '(.*)/islandRegistry': '/__mocks__/islandRegistry.ts', }, transformIgnorePatterns: [`/node_modules/.pnpm/(?!${esModules})`], collectCoverageFrom: ['src/**/*.{ts,tsx}'], diff --git a/dotcom-rendering/src/lib/thrift/nativeConnection.ts b/dotcom-rendering/src/lib/thrift/nativeConnection.ts index b526c5a7df1..3b1ab0659f5 100644 --- a/dotcom-rendering/src/lib/thrift/nativeConnection.ts +++ b/dotcom-rendering/src/lib/thrift/nativeConnection.ts @@ -7,15 +7,13 @@ import type { TransportType, TTransport, } from '@creditkarma/thrift-server-core'; -import thriftCore from '@creditkarma/thrift-server-core'; - -const { +import { getProtocol, getTransport, TApplicationException, TApplicationExceptionType, ThriftConnection, -} = thriftCore; +} from '@creditkarma/thrift-server-core'; import { TMultiplexedProtocol } from './protocols'; declare global { From 81ea836d643cf6ddcb13bd53cc0723009cbdfbc5 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Sat, 11 Apr 2026 16:53:52 +0100 Subject: [PATCH 12/37] Fix Vite dev server asset loading and remove frameworks.js Dev mode now serves modules by source path (e.g. /assets/src/client/main.web.ts) matching how Vite's dev server resolves modules. Removes explicit frameworks.js script tags since ES module imports auto-resolve chunk dependencies. Adds @vite/client script injection for HMR support in dev mode. Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/src/lib/assets.test.ts | 28 ++++----- dotcom-rendering/src/lib/assets.ts | 62 ++++++++----------- ...render.allEditorialNewslettersPage.web.tsx | 1 - .../src/server/render.article.web.tsx | 1 - .../src/server/render.front.web.tsx | 2 - .../src/server/render.sportDataPage.web.tsx | 1 - 6 files changed, 39 insertions(+), 56 deletions(-) diff --git a/dotcom-rendering/src/lib/assets.test.ts b/dotcom-rendering/src/lib/assets.test.ts index 3a3817266fd..cfe033183e4 100644 --- a/dotcom-rendering/src/lib/assets.test.ts +++ b/dotcom-rendering/src/lib/assets.test.ts @@ -44,6 +44,15 @@ describe('regular expression to match files', () => { ); }); + it('should match dev source paths', () => { + expect('http://localhost:3030/assets/src/client/main.web.ts').toMatch( + WEB, + ); + expect('http://localhost:3030/assets/src/client/main.apps.ts').toMatch( + APPS_SCRIPT, + ); + }); + it('should handle PROD environment', () => { expect( 'https://assets.guim.co.uk/assets/index.client.web.DKLwwO4p.js', @@ -72,11 +81,6 @@ describe('getPathFromManifest', () => { name: 'index', src: 'src/client/main.web.ts', isEntry: true, - imports: ['_frameworks.client.web.xyz78901.js'], - }, - _frameworks: { - file: 'frameworks.client.web.xyz78901.js', - name: 'frameworks', }, }); (readFileSync as jest.Mock).mockReturnValue(viteManifest); @@ -92,15 +96,11 @@ describe('getPathFromManifest', () => { ); }); - it('returns correct hashed asset for frameworks chunk', () => { - expect(getPathFromManifest('client.web', 'frameworks.js')).toBe( - '/assets/frameworks.client.web.xyz78901.js', - ); - }); - - it('throws an error when the hashed asset cant be found', () => { - expect(() => getPathFromManifest('client.web', 'foo.bar.js')).toThrow( - 'Missing manifest for foo.bar.js', + it('throws an error when the manifest entry is missing', () => { + // Use client.apps (not cached by previous test) with an empty manifest + (readFileSync as jest.Mock).mockReturnValue(JSON.stringify({})); + expect(() => getPathFromManifest('client.apps', 'index.js')).toThrow( + 'Missing manifest for index.js', ); }); }); diff --git a/dotcom-rendering/src/lib/assets.ts b/dotcom-rendering/src/lib/assets.ts index ffcbebf8d58..1b287a03d2f 100644 --- a/dotcom-rendering/src/lib/assets.ts +++ b/dotcom-rendering/src/lib/assets.ts @@ -106,16 +106,6 @@ const entrySourcePaths: Record = { 'client.editionsCrossword': 'src/client/main.editionsCrossword.tsx', }; -/** - * Finds a manifest entry by its `name` field. - * Used for chunks like "frameworks" that aren't keyed by source path. - */ -const findEntryByName = ( - manifest: ViteManifest, - name: string, -): ViteManifestEntry | undefined => - Object.values(manifest).find((entry) => entry.name === name); - export const getPathFromManifest = ( build: Build, filename: `${string}.js`, @@ -125,27 +115,14 @@ export const getPathFromManifest = ( } if (isDev) { - return `${ASSET_ORIGIN}assets/${filename.replace( - '.js', - `.${build}.js`, - )}`; + // In dev, Vite serves modules by source path, not built filenames + const sourcePath = entrySourcePaths[build]; + return `${ASSET_ORIGIN}assets/${sourcePath}`; } const manifest = getManifest(getManifestPath(build)); - - // Strip .js extension to get the logical name (e.g. "index", "frameworks") - const logicalName = filename.replace(/\.js$/, ''); - - let entry: ViteManifestEntry | undefined; - - if (logicalName === 'index') { - // Look up the entry point by its source path - const sourcePath = entrySourcePaths[build]; - entry = manifest[sourcePath]; - } else { - // For non-entry chunks (e.g. "frameworks"), find by name - entry = findEntryByName(manifest, logicalName); - } + const sourcePath = entrySourcePaths[build]; + const entry = manifest[sourcePath]; if (!entry) { throw new Error(`Missing manifest for ${filename}`); @@ -155,14 +132,16 @@ export const getPathFromManifest = ( }; /** - * To ensure this only applies to guardian scripts, - * we check that it is served from an asset/ directory - * and that it ends with the bundle type and extension, - * with an optional hash for local development - * and stripped query parameters. + * Matches Guardian script URLs in both dev and prod: + * Prod: assets/index.client.web.DKLwwO4p.js + * Dev: assets/src/client/main.web.ts */ -const getScriptRegex = (build: Build) => - new RegExp(`assets\\/\\w+\\.${build}\\.(\\w{8}\\.)?js(\\?.*)?$`); +const getScriptRegex = (build: Build) => { + const prodPattern = `assets\\/\\w+\\.${build}\\.(\\w{8}\\.)?js(\\?.*)?$`; + const sourcePath = entrySourcePaths[build]; + const devPattern = sourcePath.replace(/[/.]/g, '\\$&'); + return new RegExp(`(${prodPattern})|(${devPattern})`); +}; export const WEB = getScriptRegex('client.web'); export const WEB_VARIANT_SCRIPT = getScriptRegex('client.web.variant'); @@ -171,8 +150,8 @@ export const EDITIONS_CROSSWORD_SCRIPT = getScriptRegex( 'client.editionsCrossword', ); -export const generateScriptTags = (scripts: string[]): string[] => - scripts.filter(isString).map((script) => { +export const generateScriptTags = (scripts: string[]): string[] => { + const tags = scripts.filter(isString).map((script) => { if ( script.match(WEB) ?? script.match(WEB_VARIANT_SCRIPT) ?? @@ -188,6 +167,15 @@ export const generateScriptTags = (scripts: string[]): string[] => ].join('\n'); }); + if (isDev) { + tags.unshift( + ``, + ); + } + + return tags; +}; + export const getModulesBuild = (): Extract => { if (BUILD_VARIANT) { return 'client.web.variant'; diff --git a/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx b/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx index 2ae158ca3ba..89ea7eb5aa7 100644 --- a/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx +++ b/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx @@ -56,7 +56,6 @@ export const renderEditorialNewslettersPage = ({ */ const prefetchScripts = [ polyfillIO, - getPathFromManifest(build, 'frameworks.js'), getPathFromManifest(build, 'index.js'), process.env.COMMERCIAL_BUNDLE_URL ?? newslettersPage.config.commercialBundleUrl, diff --git a/dotcom-rendering/src/server/render.article.web.tsx b/dotcom-rendering/src/server/render.article.web.tsx index 8fb5bc99ff1..2f8068b777c 100644 --- a/dotcom-rendering/src/server/render.article.web.tsx +++ b/dotcom-rendering/src/server/render.article.web.tsx @@ -113,7 +113,6 @@ export const renderArticle = ({ */ const prefetchScripts = [ polyfillIO, - getPathFromManifest(build, 'frameworks.js'), getPathFromManifest(build, 'index.js'), process.env.COMMERCIAL_BUNDLE_URL ?? frontendData.config.commercialBundleUrl, diff --git a/dotcom-rendering/src/server/render.front.web.tsx b/dotcom-rendering/src/server/render.front.web.tsx index d4256aa834f..28d7475a033 100644 --- a/dotcom-rendering/src/server/render.front.web.tsx +++ b/dotcom-rendering/src/server/render.front.web.tsx @@ -111,7 +111,6 @@ export const renderFront = ({ */ const prefetchScripts = [ polyfillIO, - getPathFromManifest(build, 'frameworks.js'), getPathFromManifest(build, 'index.js'), process.env.COMMERCIAL_BUNDLE_URL ?? front.config.commercialBundleUrl, ].filter(isString); @@ -208,7 +207,6 @@ export const renderTagPage = ({ */ const prefetchScripts = [ polyfillIO, - getPathFromManifest(build, 'frameworks.js'), getPathFromManifest(build, 'index.js'), process.env.COMMERCIAL_BUNDLE_URL ?? tagPage.config.commercialBundleUrl, ].filter(isString); diff --git a/dotcom-rendering/src/server/render.sportDataPage.web.tsx b/dotcom-rendering/src/server/render.sportDataPage.web.tsx index ca8beed7d47..5a76ebfc83b 100644 --- a/dotcom-rendering/src/server/render.sportDataPage.web.tsx +++ b/dotcom-rendering/src/server/render.sportDataPage.web.tsx @@ -139,7 +139,6 @@ export const renderSportPage = ({ sportData, nav }: Props) => { */ const prefetchScripts = [ polyfillIO, - getPathFromManifest(build, 'frameworks.js'), getPathFromManifest(build, 'index.js'), process.env.COMMERCIAL_BUNDLE_URL ?? sportData.config.commercialBundleUrl, From 521a3ba409a8167744bd3bcedb4dab662d18be02 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Sat, 11 Apr 2026 17:06:20 +0100 Subject: [PATCH 13/37] Remove Preact aliases, use React for all builds Preact aliases in the dev server config were leaking into SSR module resolution, causing renderToString to use preact-render-to-string instead of react-dom/server, which resulted in empty HTML output. Remove Preact aliases from both dev and prod client configs to use vanilla React everywhere. Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/vite/dev-server.ts | 8 -------- dotcom-rendering/vite/vite.config.client.ts | 12 ++---------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts index a77780c0ec8..60d8abb4f76 100644 --- a/dotcom-rendering/vite/dev-server.ts +++ b/dotcom-rendering/vite/dev-server.ts @@ -37,14 +37,6 @@ async function start() { }), ssrCjsPlugin(cjsPackages), ], - resolve: { - alias: { - // Client-side Preact aliasing for browser modules - react: 'preact/compat', - 'react-dom/test-utils': 'preact/test-utils', - 'react-dom': 'preact/compat', - }, - }, server: { middlewareMode: true, hmr: true, diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.ts index 06bfc728f67..e0499a56d0a 100644 --- a/dotcom-rendering/vite/vite.config.client.ts +++ b/dotcom-rendering/vite/vite.config.client.ts @@ -99,7 +99,7 @@ const getManualChunks = ( return (id: string) => { if ( - /node_modules\/(preact|react-is|hoist-non-react-statistics|swr|@emotion|stylis)\//.test( + /node_modules\/(react|react-dom|react-is|hoist-non-react-statistics|swr|@emotion|stylis)\//.test( id, ) ) { @@ -140,15 +140,7 @@ export const createClientConfig = (build: Build): UserConfig => { ] : []), ], - resolve: { - alias: { - // Client builds use Preact for smaller bundle size. - // Server builds use real React (not aliased). - react: 'preact/compat', - 'react-dom/test-utils': 'preact/test-utils', - 'react-dom': 'preact/compat', - }, - }, + resolve: {}, build: { outDir: 'dist', emptyOutDir: false, From 45c4d7939c0eadc05a29a8dbd05fc04dd91c71b9 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Sat, 11 Apr 2026 17:43:01 +0100 Subject: [PATCH 14/37] Fix SVG imports to return React components instead of URLs vite-plugin-svgr defaults to only processing *.svg?react imports. Add include: '**/*.svg' so all SVG imports are transformed into React components, matching the previous @svgr/webpack behavior. Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/vite/dev-server.ts | 1 + dotcom-rendering/vite/vite.config.client.ts | 1 + dotcom-rendering/vite/vite.config.server.ts | 1 + 3 files changed, 3 insertions(+) diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts index 60d8abb4f76..b6729c834c5 100644 --- a/dotcom-rendering/vite/dev-server.ts +++ b/dotcom-rendering/vite/dev-server.ts @@ -33,6 +33,7 @@ async function start() { const devConfig = mergeConfig(sharedConfig, { plugins: [ svgr({ + include: '**/*.svg', svgrOptions: { svgo: false }, }), ssrCjsPlugin(cjsPackages), diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.ts index e0499a56d0a..602aa15f89f 100644 --- a/dotcom-rendering/vite/vite.config.client.ts +++ b/dotcom-rendering/vite/vite.config.client.ts @@ -128,6 +128,7 @@ export const createClientConfig = (build: Build): UserConfig => { const clientConfig: UserConfig = { plugins: [ svgr({ + include: '**/*.svg', svgrOptions: { svgo: false }, }), // Buffer polyfill for apps/crossword builds diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts index cb971a3bf60..aecbb82dac8 100644 --- a/dotcom-rendering/vite/vite.config.server.ts +++ b/dotcom-rendering/vite/vite.config.server.ts @@ -18,6 +18,7 @@ const DEV = process.env.NODE_ENV === 'development'; export const serverConfig: UserConfig = mergeConfig(sharedConfig, { plugins: [ svgr({ + include: '**/*.svg', svgrOptions: { svgo: false }, }), ], From 58b1916a7eb753a61aa21893a6f20383fe3e143b Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Sat, 11 Apr 2026 23:48:17 +0100 Subject: [PATCH 15/37] Fix ssrCjsPlugin leaking Node APIs into client bundles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The plugin was wrapping CJS packages with createRequire() for both SSR and client requests. Now it only applies for SSR (checking options.ssr), and @guardian/bridget is added to optimizeDeps.include so Vite's built-in pre-bundling handles CJSβ†’ESM conversion for client-side. Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/vite/dev-server.ts | 8 ++++++++ dotcom-rendering/vite/ssr-cjs-plugin.ts | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts index b6729c834c5..8ab09ee150c 100644 --- a/dotcom-rendering/vite/dev-server.ts +++ b/dotcom-rendering/vite/dev-server.ts @@ -45,6 +45,14 @@ async function start() { appType: 'custom', // Serve client modules from /assets/ to match production asset paths base: '/assets/', + // Pre-bundle CJS packages for client-side use (the ssrCjsPlugin + // only wraps them for SSR; client needs Vite's built-in CJSβ†’ESM). + optimizeDeps: { + include: [ + '@guardian/bridget', + '@guardian/bridget/SignInScreenReason', + ], + }, }); // SSR config must be set after mergeConfig to avoid being overwritten. devConfig.ssr = { diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.ts b/dotcom-rendering/vite/ssr-cjs-plugin.ts index 7f7c3906ffc..22d4f3063cc 100644 --- a/dotcom-rendering/vite/ssr-cjs-plugin.ts +++ b/dotcom-rendering/vite/ssr-cjs-plugin.ts @@ -38,8 +38,8 @@ export function ssrCjsPlugin(packages: string[]): Plugin { return { name: 'ssr-cjs-compat', enforce: 'pre', - resolveId(id) { - if (shouldWrap(id)) { + resolveId(id, _importer, options) { + if (options?.ssr && shouldWrap(id)) { return PREFIX + id; } return undefined; From 90423afc1ee88e9d47e295a16379b09f8a535d61 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Sun, 12 Apr 2026 00:06:59 +0100 Subject: [PATCH 16/37] Fix HMR WebSocket by attaching to Express HTTP server Vite in middleware mode was starting its HMR WebSocket on a separate port (24678), so the browser couldn't connect. Pass the Express HTTP server to Vite's hmr config so the WebSocket shares port 3030, and file changes trigger full page reloads as expected for SSR. Co-Authored-By: Claude Opus 4.6 --- dotcom-rendering/vite/dev-server.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts index 8ab09ee150c..ece222646a6 100644 --- a/dotcom-rendering/vite/dev-server.ts +++ b/dotcom-rendering/vite/dev-server.ts @@ -10,6 +10,7 @@ */ import { readFileSync } from 'node:fs'; +import { createServer as createHttpServer } from 'node:http'; import { resolve } from 'node:path'; import express from 'express'; import { createServer as createViteServer, mergeConfig } from 'vite'; @@ -22,6 +23,7 @@ const root = process.cwd(); async function start() { const app = express(); + const httpServer = createHttpServer(app); // CJS packages in noExternal that need ESM wrapping for Vite 6's // SSR module runner. Only packages using require()/module.exports @@ -40,7 +42,9 @@ async function start() { ], server: { middlewareMode: true, - hmr: true, + hmr: { + server: httpServer, + }, }, appType: 'custom', // Serve client modules from /assets/ to match production asset paths @@ -109,7 +113,7 @@ async function start() { } }); - app.listen(port, () => { + httpServer.listen(port, () => { console.log( `\n Vite DEV server running on http://localhost:${port}\n`, ); From 1ee52eaaef5eed86e4af59ba644b718985ce3d02 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Tue, 14 Apr 2026 23:41:02 +0100 Subject: [PATCH 17/37] Restore ES6 named imports for CJS deps via ssrCjsPlugin Route jsdom, log4js, sanitize-html, compare-versions, and @creditkarma/thrift-server-core through Vite's SSR pipeline via ssr.noExternal + ssrCjsPlugin so source code can use idiomatic `import { X } from 'pkg'` instead of default-import + destructure. Centralise the CJS package list in vite/cjs-packages.ts and wire it into both the dev server and the production server build (the plugin was previously missing from vite.config.server.ts). Co-Authored-By: Claude Opus 4.6 --- .../src/components/MultiByline.tsx | 4 +-- dotcom-rendering/src/lib/domUtils.ts | 4 +-- dotcom-rendering/src/model/enhance-H2s.ts | 4 +-- .../src/model/enhance-blockquotes.ts | 4 +-- .../src/model/enhance-dividers.ts | 4 +-- dotcom-rendering/src/model/enhance-embeds.ts | 4 +-- dotcom-rendering/src/model/enhance-images.ts | 4 +-- .../src/model/enhance-numbered-lists.ts | 4 +-- .../src/model/enhanceProductElement.ts | 4 +-- .../src/model/enhanceTableOfContents.ts | 4 +-- dotcom-rendering/src/model/sanitise.ts | 4 +-- dotcom-rendering/src/server/lib/logging.ts | 4 +-- dotcom-rendering/vite/cjs-packages.ts | 25 +++++++++++++++++++ dotcom-rendering/vite/dev-server.ts | 14 +++++------ dotcom-rendering/vite/vite.config.server.ts | 9 +++++++ 15 files changed, 52 insertions(+), 44 deletions(-) create mode 100644 dotcom-rendering/vite/cjs-packages.ts diff --git a/dotcom-rendering/src/components/MultiByline.tsx b/dotcom-rendering/src/components/MultiByline.tsx index 835f13d2aac..ac19f51a8a5 100644 --- a/dotcom-rendering/src/components/MultiByline.tsx +++ b/dotcom-rendering/src/components/MultiByline.tsx @@ -12,9 +12,7 @@ import { textSansItalic28, textSansItalic34, } from '@guardian/source/foundations'; -import sanitise from 'sanitize-html'; - -const { defaults } = sanitise; +import sanitise, { defaults } from 'sanitize-html'; import { ArticleDesign, ArticleDisplay, diff --git a/dotcom-rendering/src/lib/domUtils.ts b/dotcom-rendering/src/lib/domUtils.ts index e8baf6e9c71..50cf100e1d5 100644 --- a/dotcom-rendering/src/lib/domUtils.ts +++ b/dotcom-rendering/src/lib/domUtils.ts @@ -1,6 +1,4 @@ -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; export const parseHtml = (html: string): DocumentFragment => JSDOM.fragment(html); diff --git a/dotcom-rendering/src/model/enhance-H2s.ts b/dotcom-rendering/src/model/enhance-H2s.ts index 2c70258aac7..72ee2e0699a 100644 --- a/dotcom-rendering/src/model/enhance-H2s.ts +++ b/dotcom-rendering/src/model/enhance-H2s.ts @@ -1,6 +1,4 @@ -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; import type { FEElement } from '../types/content'; import { isLegacyTableOfContents } from './isLegacyTableOfContents'; diff --git a/dotcom-rendering/src/model/enhance-blockquotes.ts b/dotcom-rendering/src/model/enhance-blockquotes.ts index 8bf2d3f5eca..86aaca47c4e 100644 --- a/dotcom-rendering/src/model/enhance-blockquotes.ts +++ b/dotcom-rendering/src/model/enhance-blockquotes.ts @@ -1,6 +1,4 @@ -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; import { ArticleDesign, type ArticleFormat } from '../lib/articleFormat'; import type { BlockquoteBlockElement, FEElement } from '../types/content'; diff --git a/dotcom-rendering/src/model/enhance-dividers.ts b/dotcom-rendering/src/model/enhance-dividers.ts index b6ea977e0f7..d66a615e175 100644 --- a/dotcom-rendering/src/model/enhance-dividers.ts +++ b/dotcom-rendering/src/model/enhance-dividers.ts @@ -1,6 +1,4 @@ -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; import type { FEElement } from '../types/content'; const isDinkus = (element: FEElement): boolean => { diff --git a/dotcom-rendering/src/model/enhance-embeds.ts b/dotcom-rendering/src/model/enhance-embeds.ts index c163df5d531..1f21c832007 100644 --- a/dotcom-rendering/src/model/enhance-embeds.ts +++ b/dotcom-rendering/src/model/enhance-embeds.ts @@ -1,6 +1,4 @@ -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; import type { FEElement } from '../types/content'; export const enhanceEmbeds = (elements: FEElement[]): FEElement[] => diff --git a/dotcom-rendering/src/model/enhance-images.ts b/dotcom-rendering/src/model/enhance-images.ts index 1fc3d341b8f..44024de18db 100644 --- a/dotcom-rendering/src/model/enhance-images.ts +++ b/dotcom-rendering/src/model/enhance-images.ts @@ -1,7 +1,5 @@ import { isUndefined } from '@guardian/libs'; -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; import { ArticleDesign, type ArticleFormat, diff --git a/dotcom-rendering/src/model/enhance-numbered-lists.ts b/dotcom-rendering/src/model/enhance-numbered-lists.ts index c0fc85d7eb7..1fab92a8d6d 100644 --- a/dotcom-rendering/src/model/enhance-numbered-lists.ts +++ b/dotcom-rendering/src/model/enhance-numbered-lists.ts @@ -1,7 +1,5 @@ import { isUndefined } from '@guardian/libs'; -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; import { ArticleDisplay, type ArticleFormat } from '../lib/articleFormat'; import type { FEElement, StarRating, TextBlockElement } from '../types/content'; diff --git a/dotcom-rendering/src/model/enhanceProductElement.ts b/dotcom-rendering/src/model/enhanceProductElement.ts index ecaec36681f..1d0f8f91c29 100644 --- a/dotcom-rendering/src/model/enhanceProductElement.ts +++ b/dotcom-rendering/src/model/enhanceProductElement.ts @@ -1,6 +1,4 @@ -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; import type { FEElement, ProductBlockElement, diff --git a/dotcom-rendering/src/model/enhanceTableOfContents.ts b/dotcom-rendering/src/model/enhanceTableOfContents.ts index f6643ff9986..24b6b13446b 100644 --- a/dotcom-rendering/src/model/enhanceTableOfContents.ts +++ b/dotcom-rendering/src/model/enhanceTableOfContents.ts @@ -1,6 +1,4 @@ -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; import type { Block } from '../types/blocks'; import type { NumberedTitleBlockElement, diff --git a/dotcom-rendering/src/model/sanitise.ts b/dotcom-rendering/src/model/sanitise.ts index 57c6c06cc47..8bc834d1668 100644 --- a/dotcom-rendering/src/model/sanitise.ts +++ b/dotcom-rendering/src/model/sanitise.ts @@ -1,8 +1,6 @@ import type { Config } from 'dompurify'; import createDOMPurify from 'dompurify'; -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; const { window } = new JSDOM(''); const DOMPurify = createDOMPurify(window); diff --git a/dotcom-rendering/src/server/lib/logging.ts b/dotcom-rendering/src/server/lib/logging.ts index d68170ef40a..899cfb07689 100644 --- a/dotcom-rendering/src/server/lib/logging.ts +++ b/dotcom-rendering/src/server/lib/logging.ts @@ -1,9 +1,7 @@ import path from 'node:path'; import { isObject } from '@guardian/libs'; import type { Configuration, Layout, LoggingEvent } from 'log4js'; -import log4js from 'log4js'; - -const { addLayout, configure, getLogger, shutdown } = log4js; +import { addLayout, configure, getLogger, shutdown } from 'log4js'; import { type DCRLoggingStore, loggingStore } from './logging-store'; type LogFields = Partial & diff --git a/dotcom-rendering/vite/cjs-packages.ts b/dotcom-rendering/vite/cjs-packages.ts new file mode 100644 index 00000000000..d0f1daf406f --- /dev/null +++ b/dotcom-rendering/vite/cjs-packages.ts @@ -0,0 +1,25 @@ +/** + * CJS dependencies that need to be pulled through Vite's SSR pipeline + * and wrapped as ESM by `ssr-cjs-plugin.ts`. + * + * Vite 6's SSR module runner evaluates modules as strict ESM, which means + * `import { X } from 'pkg'` fails for CJS packages unless we synthesise real + * ESM named exports for them. Listing a package here: + * 1. Adds it to `ssr.noExternal` so Vite processes it (instead of leaving + * it for Node's loader). + * 2. Causes `ssrCjsPlugin` to load it via `createRequire()` and emit a + * shim with proper ESM named exports. + * + * If a new dependency breaks at runtime with + * "SyntaxError: Named export 'X' not found. The requested module is a CommonJS module..." + * add it here. Contributors should never need to switch to default-import + + * destructure patterns in source code. + */ +export const cjsPackages = [ + '@guardian/bridget', + 'jsdom', + 'log4js', + 'sanitize-html', + 'compare-versions', + '@creditkarma/thrift-server-core', +] as const; diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts index ece222646a6..c39825047cb 100644 --- a/dotcom-rendering/vite/dev-server.ts +++ b/dotcom-rendering/vite/dev-server.ts @@ -15,6 +15,7 @@ import { resolve } from 'node:path'; import express from 'express'; import { createServer as createViteServer, mergeConfig } from 'vite'; import svgr from 'vite-plugin-svgr'; +import { cjsPackages } from './cjs-packages'; import { sharedConfig } from './vite.config.shared'; import { ssrCjsPlugin } from './ssr-cjs-plugin'; @@ -25,11 +26,6 @@ async function start() { const app = express(); const httpServer = createHttpServer(app); - // CJS packages in noExternal that need ESM wrapping for Vite 6's - // SSR module runner. Only packages using require()/module.exports - // that are matched by ssr.noExternal need to be listed here. - const cjsPackages = ['@guardian/bridget']; - // Create Vite server in middleware mode. // Handles client-side module transforms, HMR, and SSR module loading. const devConfig = mergeConfig(sharedConfig, { @@ -38,7 +34,7 @@ async function start() { include: '**/*.svg', svgrOptions: { svgo: false }, }), - ssrCjsPlugin(cjsPackages), + ssrCjsPlugin([...cjsPackages]), ], server: { middlewareMode: true, @@ -60,8 +56,10 @@ async function start() { }); // SSR config must be set after mergeConfig to avoid being overwritten. devConfig.ssr = { - // Bundle ESM-only packages that can't be require()'d by Node. - noExternal: [/@guardian\//, 'screenfull', 'valibot'], + // Bundle ESM-only packages that can't be require()'d by Node, plus + // CJS packages that we want to expose via ESM named imports + // (see cjs-packages.ts). + noExternal: [/@guardian\//, 'screenfull', 'valibot', ...cjsPackages], }; const vite = await createViteServer(devConfig); diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts index aecbb82dac8..13196fb82fe 100644 --- a/dotcom-rendering/vite/vite.config.server.ts +++ b/dotcom-rendering/vite/vite.config.server.ts @@ -1,6 +1,8 @@ import svgr from 'vite-plugin-svgr'; import type { UserConfig } from 'vite'; import { mergeConfig } from 'vite'; +import { cjsPackages } from './cjs-packages'; +import { ssrCjsPlugin } from './ssr-cjs-plugin'; import { sharedConfig } from './vite.config.shared'; const DEV = process.env.NODE_ENV === 'development'; @@ -21,6 +23,9 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { include: '**/*.svg', svgrOptions: { svgo: false }, }), + // Wrap CJS deps with ESM shims so `import { X } from 'pkg'` works + // under Vite's SSR pipeline. Only fires for ids in `ssr.noExternal`. + ssrCjsPlugin([...cjsPackages]), ], build: { outDir: 'dist', @@ -56,6 +61,10 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { 'screenfull', // Valibot is ESM and needs bundling 'valibot', + // CJS deps wrapped by ssrCjsPlugin so source code can use + // `import { X } from 'pkg'` instead of default-import + + // destructure (see vite/cjs-packages.ts). + ...cjsPackages, ], // Explicitly external in dev (not needed in prod where they're deployed) external: DEV ? ['@aws-sdk'] : [], From 430017b4053c640b59844eedd27f9d5f9c0c0d2d Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:41:40 +0100 Subject: [PATCH 18/37] Replace @storybook/react-webpack with @storybook/react-vite --- .../.storybook/decorators/configContextDecorator.tsx | 4 ++-- dotcom-rendering/.storybook/decorators/gridDecorators.tsx | 2 +- .../.storybook/decorators/splitThemeDecorator.tsx | 4 ++-- dotcom-rendering/.storybook/decorators/themeDecorator.tsx | 2 +- dotcom-rendering/.storybook/preview.ts | 5 ----- dotcom-rendering/.storybook/toolbar/globalColourScheme.ts | 6 +++--- dotcom-rendering/src/WritingStories.mdx | 2 +- dotcom-rendering/src/components/AdSlot.apps.stories.tsx | 2 +- dotcom-rendering/src/components/AdSlot.web.stories.tsx | 2 +- .../src/components/AppsAudioPlayButton.stories.tsx | 2 +- dotcom-rendering/src/components/ArticleHeadline.stories.tsx | 2 +- .../AuthProviderButtons/AuthProviderButtons.stories.tsx | 2 +- .../src/components/BlockquoteBlockComponent.stories.tsx | 2 +- .../src/components/Button/EditorialButton.stories.tsx | 2 +- .../src/components/Button/EditorialLinkButton.stories.tsx | 2 +- .../src/components/Button/ProductLinkButton.stories.tsx | 2 +- .../src/components/CalloutBlockComponent.stories.tsx | 2 +- .../src/components/CalloutEmbedBlockComponent.stories.tsx | 2 +- dotcom-rendering/src/components/CardHeadline.stories.tsx | 2 +- dotcom-rendering/src/components/Carousel.stories.tsx | 2 +- dotcom-rendering/src/components/ClickToView.stories.tsx | 2 +- .../CricketMatchHeader/CricketMatchHeader.stories.tsx | 2 +- dotcom-rendering/src/components/DateTime.stories.tsx | 2 +- dotcom-rendering/src/components/Discussion.stories.tsx | 2 +- .../src/components/ElectionTrackers/ChangeBars.stories.tsx | 2 +- .../components/ElectionTrackers/StackedProgress.stories.tsx | 2 +- .../ElectionTrackers/ValuesWithChange.stories.tsx | 2 +- .../src/components/ElectionTrackers/Versus.stories.tsx | 2 +- .../src/components/EmailSignUpWrapper.stories.tsx | 2 +- .../src/components/FeastContextualNudge.stories.tsx | 2 +- dotcom-rendering/src/components/FeatureCard.stories.tsx | 2 +- dotcom-rendering/src/components/FlexibleGeneral.stories.tsx | 2 +- dotcom-rendering/src/components/FlexibleSpecial.stories.tsx | 2 +- .../src/components/FootballMatchStat.stories.tsx | 2 +- .../src/components/FootballMatchesPage.stories.tsx | 2 +- .../src/components/FootballTableList.stories.tsx | 2 +- .../src/components/FootballTablesPage.stories.tsx | 2 +- dotcom-rendering/src/components/FrontSection.stories.tsx | 2 +- dotcom-rendering/src/components/HeadlineByline.stories.tsx | 2 +- .../components/InformationBox/InformationBox.stories.tsx | 2 +- .../src/components/InteractiveBlockComponent.stories.tsx | 2 +- dotcom-rendering/src/components/Kicker.stories.tsx | 2 +- .../src/components/LabsSectionHeader.stories.tsx | 2 +- dotcom-rendering/src/components/Lightbox.stories.tsx | 2 +- .../src/components/LinkBlockComponent.stories.tsx | 2 +- dotcom-rendering/src/components/LinkHeadline.stories.tsx | 2 +- .../src/components/Masthead/HighlightsCard.stories.tsx | 2 +- .../src/components/Masthead/Masthead.stories.tsx | 2 +- .../Newsletter/HighlightsNewsletterCard.stories.tsx | 2 +- .../Newsletter/HighlightsNewsletterSignupModal.stories.tsx | 2 +- .../Masthead/Titlepiece/EditionDropdown.stories.tsx | 2 +- .../src/components/Masthead/Titlepiece/Pillars.stories.tsx | 2 +- .../src/components/MostViewedFooterLayout.stories.tsx | 2 +- dotcom-rendering/src/components/MostViewedRight.stories.tsx | 2 +- .../src/components/NotificationsToggle.stories.tsx | 2 +- dotcom-rendering/src/components/PinnedPost.stories.tsx | 2 +- .../src/components/ScrollableFeature.stories.tsx | 2 +- .../src/components/ScrollableMedium.stories.tsx | 2 +- dotcom-rendering/src/components/ScrollableSmall.stories.tsx | 2 +- dotcom-rendering/src/components/SelfHostedVideo.stories.tsx | 2 +- .../src/components/SlideshowCarousel.stories.tsx | 2 +- dotcom-rendering/src/components/Standfirst.stories.tsx | 2 +- .../src/components/StarRating/StarRating.stories.tsx | 2 +- .../src/components/StarRatingBlockComponent.stories.tsx | 2 +- .../src/components/StaticFeatureTwo.stories.tsx | 2 +- .../src/components/StaticMediumFour.stories.tsx | 2 +- .../src/components/SubheadingBlockComponent.stories.tsx | 2 +- .../src/components/TableBlockComponent.stories.tsx | 2 +- dotcom-rendering/src/components/TableOfContents.stories.tsx | 2 +- dotcom-rendering/src/components/Terms/Terms.stories.tsx | 2 +- .../src/components/ThemedLink/ThemedLink.stories.tsx | 2 +- dotcom-rendering/src/components/Titlepiece.stories.tsx | 2 +- dotcom-rendering/src/components/TopBar.stories.tsx | 2 +- .../src/components/YoutubeAtom/YoutubeAtom.stories.tsx | 2 +- .../designableBanner/stories/DesignableBanner.stories.tsx | 2 +- .../marketing/epics/ContributionsEpic.stories.tsx | 2 +- .../marketing/epics/ContributionsLiveblogEpic.stories.tsx | 2 +- .../src/components/marketing/gutters/GutterAsk.stories.tsx | 2 +- .../src/components/marketing/header/Header.stories.tsx | 2 +- .../components/marketing/header/common/HeaderDecorator.tsx | 2 +- .../marketing/shared/ThreeTierChoiceCards.stories.tsx | 2 +- dotcom-rendering/src/layouts/AudioLayout.stories.tsx | 2 +- dotcom-rendering/src/layouts/DecideLayout.stories.tsx | 2 +- dotcom-rendering/src/layouts/GalleryLayout.stories.tsx | 2 +- .../src/layouts/SportDataPageLayout.stories.tsx | 2 +- 85 files changed, 88 insertions(+), 93 deletions(-) diff --git a/dotcom-rendering/.storybook/decorators/configContextDecorator.tsx b/dotcom-rendering/.storybook/decorators/configContextDecorator.tsx index 80cfe4d8d84..90b7e28454c 100644 --- a/dotcom-rendering/.storybook/decorators/configContextDecorator.tsx +++ b/dotcom-rendering/.storybook/decorators/configContextDecorator.tsx @@ -1,6 +1,6 @@ -import type { Decorator } from '@storybook/react-webpack5'; import { ConfigProvider } from '../../src/components/ConfigContext'; -import type { Config } from '../../src/types/configContext'; +import type { Decorator } from '@storybook/react-vite'; +import { Config } from '../../src/types/configContext'; const defaultConfig = { renderingTarget: 'Web', diff --git a/dotcom-rendering/.storybook/decorators/gridDecorators.tsx b/dotcom-rendering/.storybook/decorators/gridDecorators.tsx index e1160fcc140..13715a3db40 100644 --- a/dotcom-rendering/.storybook/decorators/gridDecorators.tsx +++ b/dotcom-rendering/.storybook/decorators/gridDecorators.tsx @@ -1,6 +1,6 @@ import { css } from '@emotion/react'; import { from } from '@guardian/source/foundations'; -import type { Decorator } from '@storybook/react-webpack5'; +import type { Decorator } from '@storybook/react-vite'; import { grid } from '../../src/grid'; /** diff --git a/dotcom-rendering/.storybook/decorators/splitThemeDecorator.tsx b/dotcom-rendering/.storybook/decorators/splitThemeDecorator.tsx index 6a8f140d0e4..4a4977aa800 100644 --- a/dotcom-rendering/.storybook/decorators/splitThemeDecorator.tsx +++ b/dotcom-rendering/.storybook/decorators/splitThemeDecorator.tsx @@ -6,7 +6,8 @@ import { textSans17, textSansBold20, } from '@guardian/source/foundations'; -import type { Decorator } from '@storybook/react-webpack5'; +import { Decorator } from '@storybook/react-vite'; +import { storybookPaletteDeclarations as paletteDeclarations } from '../mocks/paletteDeclarations'; import type { ReactNode } from 'react'; import { ArticleDesign, @@ -15,7 +16,6 @@ import { Pillar, } from '../../src/lib/articleFormat'; import type { ArticleFormat } from '../../src/lib/articleFormat'; -import { storybookPaletteDeclarations as paletteDeclarations } from '../mocks/paletteDeclarations'; interface Orientation { orientation?: 'horizontal' | 'vertical'; diff --git a/dotcom-rendering/.storybook/decorators/themeDecorator.tsx b/dotcom-rendering/.storybook/decorators/themeDecorator.tsx index ed68aedbf86..513760132b1 100644 --- a/dotcom-rendering/.storybook/decorators/themeDecorator.tsx +++ b/dotcom-rendering/.storybook/decorators/themeDecorator.tsx @@ -10,7 +10,7 @@ import { type Decorator, type StoryContext, type StrictArgs, -} from '@storybook/react-webpack5'; +} from '@storybook/react-vite'; import type { CSSProperties } from 'react'; import type { ArticleFormat } from '../../src/lib/articleFormat'; import { storybookPaletteDeclarations as paletteDeclarations } from '../mocks/paletteDeclarations'; diff --git a/dotcom-rendering/.storybook/preview.ts b/dotcom-rendering/.storybook/preview.ts index 75d339c98db..982eb4b88cd 100644 --- a/dotcom-rendering/.storybook/preview.ts +++ b/dotcom-rendering/.storybook/preview.ts @@ -3,7 +3,6 @@ import { resets } from '@guardian/source/foundations'; import { palette as sourcePalette } from '@guardian/source/foundations'; import addonA11y from '@storybook/addon-a11y'; import addonDocs from '@storybook/addon-docs'; -import { definePreview } from '@storybook/react-webpack5'; import isChromatic from 'chromatic/isChromatic'; import MockDate from 'mockdate'; import { sb } from 'storybook/test'; @@ -14,11 +13,7 @@ import { mockFetch } from '../src/lib/mockRESTCalls'; import { ABTests } from '../src/experiments/lib/ab-tests'; import { setABTests } from '../src/lib/useAB'; import { ConfigContextDecorator } from './decorators/configContextDecorator'; -<<<<<<< HEAD -======= -import { sb } from 'storybook/test'; import { definePreview } from '@storybook/react-vite'; ->>>>>>> 1dfe0367f7 (Migrate Storybook to Vite, remove webpack config and dependencies) import { globalColourScheme, globalColourSchemeDecorator, diff --git a/dotcom-rendering/.storybook/toolbar/globalColourScheme.ts b/dotcom-rendering/.storybook/toolbar/globalColourScheme.ts index 9ddd3a0e2bf..e835f084f52 100644 --- a/dotcom-rendering/.storybook/toolbar/globalColourScheme.ts +++ b/dotcom-rendering/.storybook/toolbar/globalColourScheme.ts @@ -1,12 +1,12 @@ -import type { Decorator, Preview } from '@storybook/react-webpack5'; +import type { Decorator, Preview } from '@storybook/react-vite'; +import { lightDecorator, darkDecorator } from '../decorators/themeDecorator'; +import { splitTheme } from '../decorators/splitThemeDecorator'; import { ArticleDesign, ArticleDisplay, type ArticleFormat, Pillar, } from '../../src/lib/articleFormat'; -import { splitTheme } from '../decorators/splitThemeDecorator'; -import { darkDecorator, lightDecorator } from '../decorators/themeDecorator'; const defaultFormat: ArticleFormat = { display: ArticleDisplay.Standard, diff --git a/dotcom-rendering/src/WritingStories.mdx b/dotcom-rendering/src/WritingStories.mdx index d5bf165d0ba..93b1e65e8d7 100644 --- a/dotcom-rendering/src/WritingStories.mdx +++ b/dotcom-rendering/src/WritingStories.mdx @@ -9,7 +9,7 @@ If you're not familiar with the concept of stories, see the [Storybook docs](htt We recommend using Storybook's [Component Story Format](https://storybook.js.org/docs/9/api/csf/index) version 3 (CSFv3) to write stories. The [documentation](https://storybook.js.org/docs/9/writing-stories) covers this in detail, but in brief it means that your stories file should look something like this: diff --git a/dotcom-rendering/src/components/TableOfContents.stories.tsx b/dotcom-rendering/src/components/TableOfContents.stories.tsx index 7d892e082ed..f6c760591e8 100644 --- a/dotcom-rendering/src/components/TableOfContents.stories.tsx +++ b/dotcom-rendering/src/components/TableOfContents.stories.tsx @@ -1,5 +1,5 @@ import { css } from '@emotion/react'; -import type { StoryObj } from '@storybook/react-webpack5'; +import type { StoryObj } from '@storybook/react-vite'; import { splitTheme } from '../../.storybook/decorators/splitThemeDecorator'; import { ArticleDesign, diff --git a/dotcom-rendering/src/components/Terms/Terms.stories.tsx b/dotcom-rendering/src/components/Terms/Terms.stories.tsx index e42adcc3e76..3860c311ed3 100644 --- a/dotcom-rendering/src/components/Terms/Terms.stories.tsx +++ b/dotcom-rendering/src/components/Terms/Terms.stories.tsx @@ -3,7 +3,7 @@ * This file was migrated from: * https://github.com/guardian/gateway/blob/b980d008f91bd1abb108e50de9cdd1c364f37f4d/src/client/components/Terms.stories.tsx */ -import type { Meta } from '@storybook/react-webpack5'; +import type { Meta } from '@storybook/react-vite'; import { InformationBox } from '../InformationBox/InformationBox'; import { GuardianTerms, JobsTerms, RecaptchaTerms } from './Terms'; diff --git a/dotcom-rendering/src/components/ThemedLink/ThemedLink.stories.tsx b/dotcom-rendering/src/components/ThemedLink/ThemedLink.stories.tsx index 5254180b42f..46936d450f5 100644 --- a/dotcom-rendering/src/components/ThemedLink/ThemedLink.stories.tsx +++ b/dotcom-rendering/src/components/ThemedLink/ThemedLink.stories.tsx @@ -3,7 +3,7 @@ * This file was migrated from: * https://github.com/guardian/gateway/blob/b980d008f91bd1abb108e50de9cdd1c364f37f4d/src/client/components/ThemedLink.stories.tsx */ -import type { Meta } from '@storybook/react-webpack5'; +import type { Meta } from '@storybook/react-vite'; import { ThemedLink } from './ThemedLink'; export default { diff --git a/dotcom-rendering/src/components/Titlepiece.stories.tsx b/dotcom-rendering/src/components/Titlepiece.stories.tsx index 2f6bf9b6b6d..2486c488110 100644 --- a/dotcom-rendering/src/components/Titlepiece.stories.tsx +++ b/dotcom-rendering/src/components/Titlepiece.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react-webpack5'; +import type { Meta, StoryObj } from '@storybook/react-vite'; import { nav } from './Masthead/Titlepiece/Nav.mock'; import { Titlepiece } from './Titlepiece.island'; diff --git a/dotcom-rendering/src/components/TopBar.stories.tsx b/dotcom-rendering/src/components/TopBar.stories.tsx index 343795c35f5..804601a242d 100644 --- a/dotcom-rendering/src/components/TopBar.stories.tsx +++ b/dotcom-rendering/src/components/TopBar.stories.tsx @@ -1,5 +1,5 @@ import type { AccessToken, IDToken } from '@guardian/identity-auth'; -import type { Meta } from '@storybook/react-webpack5'; +import type { Meta } from '@storybook/react-vite'; import { contributionsHeaderResponse, contributionsSignInPromptHeaderResponse, diff --git a/dotcom-rendering/src/components/YoutubeAtom/YoutubeAtom.stories.tsx b/dotcom-rendering/src/components/YoutubeAtom/YoutubeAtom.stories.tsx index bc11eceb400..7344ac1b32d 100644 --- a/dotcom-rendering/src/components/YoutubeAtom/YoutubeAtom.stories.tsx +++ b/dotcom-rendering/src/components/YoutubeAtom/YoutubeAtom.stories.tsx @@ -1,6 +1,6 @@ import { css } from '@emotion/react'; import type { ConsentState } from '@guardian/consent-manager'; -import type { Decorator, Meta, StoryObj } from '@storybook/react-webpack5'; +import type { Decorator, Meta, StoryObj } from '@storybook/react-vite'; import { useState } from 'react'; import { ArticleDesign, ArticleDisplay, Pillar } from '../../lib/articleFormat'; import type { AdTargeting } from '../../types/commercial'; diff --git a/dotcom-rendering/src/components/marketing/banners/designableBanner/stories/DesignableBanner.stories.tsx b/dotcom-rendering/src/components/marketing/banners/designableBanner/stories/DesignableBanner.stories.tsx index 67455f989c2..94b96e7a280 100644 --- a/dotcom-rendering/src/components/marketing/banners/designableBanner/stories/DesignableBanner.stories.tsx +++ b/dotcom-rendering/src/components/marketing/banners/designableBanner/stories/DesignableBanner.stories.tsx @@ -1,5 +1,5 @@ import { SecondaryCtaType } from '@guardian/support-dotcom-components'; -import type { Meta, StoryObj } from '@storybook/react-webpack5'; +import type { Meta, StoryObj } from '@storybook/react-vite'; import lzstring from 'lz-string'; import { choiceCardsSettings } from '../../../lib/storybook'; import { design, stringToHexColour, tracking } from '../../utils/storybook'; diff --git a/dotcom-rendering/src/components/marketing/epics/ContributionsEpic.stories.tsx b/dotcom-rendering/src/components/marketing/epics/ContributionsEpic.stories.tsx index c7b0c4a954a..fb3ef998ef9 100644 --- a/dotcom-rendering/src/components/marketing/epics/ContributionsEpic.stories.tsx +++ b/dotcom-rendering/src/components/marketing/epics/ContributionsEpic.stories.tsx @@ -5,7 +5,7 @@ */ import { css } from '@emotion/react'; import { SecondaryCtaType } from '@guardian/support-dotcom-components'; -import type { Meta, StoryObj } from '@storybook/react-webpack5'; +import type { Meta, StoryObj } from '@storybook/react-vite'; import lzstring from 'lz-string'; import type React from 'react'; import { diff --git a/dotcom-rendering/src/components/marketing/epics/ContributionsLiveblogEpic.stories.tsx b/dotcom-rendering/src/components/marketing/epics/ContributionsLiveblogEpic.stories.tsx index 15224c179a9..4665b242dd2 100644 --- a/dotcom-rendering/src/components/marketing/epics/ContributionsLiveblogEpic.stories.tsx +++ b/dotcom-rendering/src/components/marketing/epics/ContributionsLiveblogEpic.stories.tsx @@ -4,7 +4,7 @@ * https://github.com/guardian/support-dotcom-components/blob/9c3eae7cb0b159db4a1c40679d6b37710b0bb937/packages/modules/src/modules/epics/ContributionsLiveblogEpic.stories.tsx */ import { SecondaryCtaType } from '@guardian/support-dotcom-components'; -import type { Meta, StoryObj } from '@storybook/react-webpack5'; +import type { Meta, StoryObj } from '@storybook/react-vite'; import lzstring from 'lz-string'; import type React from 'react'; import { choiceCardsSettings } from '../lib/storybook'; diff --git a/dotcom-rendering/src/components/marketing/gutters/GutterAsk.stories.tsx b/dotcom-rendering/src/components/marketing/gutters/GutterAsk.stories.tsx index 0b8da380b18..647e408bb59 100644 --- a/dotcom-rendering/src/components/marketing/gutters/GutterAsk.stories.tsx +++ b/dotcom-rendering/src/components/marketing/gutters/GutterAsk.stories.tsx @@ -1,6 +1,6 @@ import { css } from '@emotion/react'; import { space } from '@guardian/source/foundations'; -import type { Meta, StoryObj } from '@storybook/react-webpack5'; +import type { Meta, StoryObj } from '@storybook/react-vite'; import lzstring from 'lz-string'; import { GutterAsk } from './GutterAsk'; import { props } from './utils/storybook'; diff --git a/dotcom-rendering/src/components/marketing/header/Header.stories.tsx b/dotcom-rendering/src/components/marketing/header/Header.stories.tsx index 082d5e3bf21..d81050fc058 100644 --- a/dotcom-rendering/src/components/marketing/header/Header.stories.tsx +++ b/dotcom-rendering/src/components/marketing/header/Header.stories.tsx @@ -3,7 +3,7 @@ * This file was migrated from: * https://github.com/guardian/support-dotcom-components/blob/4925ef1e0ced5d221f1122afe79f93bd7448e0e5/packages/modules/src/modules/headers/Header.stories.tsx */ -import type { Meta } from '@storybook/react-webpack5'; +import type { Meta } from '@storybook/react-vite'; import { HeaderDecorator } from './common/HeaderDecorator'; import { HeaderUnvalidated as Header } from './Header'; diff --git a/dotcom-rendering/src/components/marketing/header/common/HeaderDecorator.tsx b/dotcom-rendering/src/components/marketing/header/common/HeaderDecorator.tsx index ba1d0ed745d..981ec6ca7c5 100644 --- a/dotcom-rendering/src/components/marketing/header/common/HeaderDecorator.tsx +++ b/dotcom-rendering/src/components/marketing/header/common/HeaderDecorator.tsx @@ -5,7 +5,7 @@ */ import { css } from '@emotion/react'; import { from, space } from '@guardian/source/foundations'; -import type { Decorator } from '@storybook/react-webpack5'; +import type { Decorator } from '@storybook/react-vite'; import { palette as themePalette } from '../../../../palette'; const topBarStyles = css` diff --git a/dotcom-rendering/src/components/marketing/shared/ThreeTierChoiceCards.stories.tsx b/dotcom-rendering/src/components/marketing/shared/ThreeTierChoiceCards.stories.tsx index 6f50e1eef03..69d147ff086 100644 --- a/dotcom-rendering/src/components/marketing/shared/ThreeTierChoiceCards.stories.tsx +++ b/dotcom-rendering/src/components/marketing/shared/ThreeTierChoiceCards.stories.tsx @@ -1,6 +1,6 @@ import { palette } from '@guardian/source/foundations'; import type { ChoiceCard } from '@guardian/support-dotcom-components/dist/shared/types/props/choiceCards'; -import type { Meta, StoryObj } from '@storybook/react-webpack5'; +import type { Meta, StoryObj } from '@storybook/react-vite'; import { useState } from 'react'; import { choiceCardsSettings, diff --git a/dotcom-rendering/src/layouts/AudioLayout.stories.tsx b/dotcom-rendering/src/layouts/AudioLayout.stories.tsx index 9227a2e43d9..af3b761504f 100644 --- a/dotcom-rendering/src/layouts/AudioLayout.stories.tsx +++ b/dotcom-rendering/src/layouts/AudioLayout.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react-webpack5'; +import type { Meta, StoryObj } from '@storybook/react-vite'; import { allModes } from '../../.storybook/modes'; import { Audio as AudioFixture } from '../../fixtures/generated/fe-articles/Audio'; import { ArticleDesign } from '../lib/articleFormat'; diff --git a/dotcom-rendering/src/layouts/DecideLayout.stories.tsx b/dotcom-rendering/src/layouts/DecideLayout.stories.tsx index dfcd63a9eb1..8fdd679509d 100644 --- a/dotcom-rendering/src/layouts/DecideLayout.stories.tsx +++ b/dotcom-rendering/src/layouts/DecideLayout.stories.tsx @@ -1,6 +1,6 @@ import { isObject } from '@guardian/libs'; import { breakpoints } from '@guardian/source/foundations'; -import type { Decorator, StoryObj } from '@storybook/react-webpack5'; +import type { Decorator, StoryObj } from '@storybook/react-vite'; import { useEffect } from 'react'; import { mocked } from 'storybook/test'; import { colourSchemeDecorator } from '../../.storybook/decorators/themeDecorator'; diff --git a/dotcom-rendering/src/layouts/GalleryLayout.stories.tsx b/dotcom-rendering/src/layouts/GalleryLayout.stories.tsx index caa8da917f4..a5bedc1d686 100644 --- a/dotcom-rendering/src/layouts/GalleryLayout.stories.tsx +++ b/dotcom-rendering/src/layouts/GalleryLayout.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react-webpack5'; +import type { Meta, StoryObj } from '@storybook/react-vite'; import { allModes } from '../../.storybook/modes'; import { Gallery as GalleryFixture } from '../../fixtures/generated/fe-articles/Gallery'; import { storyPackage } from '../../fixtures/generated/story-package'; diff --git a/dotcom-rendering/src/layouts/SportDataPageLayout.stories.tsx b/dotcom-rendering/src/layouts/SportDataPageLayout.stories.tsx index 197b61d725f..4d79880a016 100644 --- a/dotcom-rendering/src/layouts/SportDataPageLayout.stories.tsx +++ b/dotcom-rendering/src/layouts/SportDataPageLayout.stories.tsx @@ -1,4 +1,4 @@ -import type { StoryObj } from '@storybook/react-webpack5'; +import type { StoryObj } from '@storybook/react-vite'; import { footballData } from '../../fixtures/generated/football-live'; import { initialDays, regions } from '../../fixtures/manual/footballData'; import { CricketScorecard } from '../components/CricketScorecard.stories'; From bdc172b5780428d28bf320638ea19aaa6bec4fe3 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:42:50 +0100 Subject: [PATCH 19/37] Fix vite.config.client TS error - TODO --- dotcom-rendering/vite/vite.config.client.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.ts index 602aa15f89f..d33d17d1e28 100644 --- a/dotcom-rendering/vite/vite.config.client.ts +++ b/dotcom-rendering/vite/vite.config.client.ts @@ -1,7 +1,7 @@ import inject from '@rollup/plugin-inject'; -import svgr from 'vite-plugin-svgr'; -import type { UserConfig } from 'vite'; +import type { PluginOption, UserConfig } from 'vite'; import { mergeConfig } from 'vite'; +import svgr from 'vite-plugin-svgr'; import type { Build } from '../src/lib/assets'; import { getBrowserTargets } from './browser-targets'; import { sharedConfig } from './vite.config.shared'; @@ -137,7 +137,7 @@ export const createClientConfig = (build: Build): UserConfig => { ? [ inject({ Buffer: ['buffer', 'Buffer'], - }), + }) as PluginOption, ] : []), ], From 5c47dc92977f5d7207930036e42ed09937f28d69 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:47:15 +0100 Subject: [PATCH 20/37] Replace webpack makefile tasks with vite --- all-vite-changes-02.patch | 13286 -------------------------- dotcom-rendering/makefile | 24 +- dotcom-rendering/vite/dev-server.ts | 4 +- 3 files changed, 9 insertions(+), 13305 deletions(-) delete mode 100644 all-vite-changes-02.patch diff --git a/all-vite-changes-02.patch b/all-vite-changes-02.patch deleted file mode 100644 index 0b0efdf3d10..00000000000 --- a/all-vite-changes-02.patch +++ /dev/null @@ -1,13286 +0,0 @@ -From 57953c625157748938636939f97939466d46ccf3 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Mon, 6 Apr 2026 14:03:36 +0100 -Subject: [PATCH 01/17] Add Vite build config scaffolding alongside webpack - -Introduce Vite configuration files for building the server and all -client bundles (web, apps, editionsCrossword) as the first phase of -migrating from webpack to Vite SSR with Rolldown. - -- vite/vite.config.shared.ts: shared define, resolve, sourcemap settings -- vite/vite.config.client.ts: parameterized client build with Preact - aliasing, manualChunks, SVG handling, and per-build browser targets -- vite/vite.config.server.ts: SSR build targeting Node with CJS output -- vite/build.ts: orchestration script (server first, clients in parallel) -- vite/browser-targets.ts: ESM port of webpack/browser-targets.js -- webpack/bundles.mjs: ESM wrapper for CJS bundles.js (Rollup compat) -- makefile: added vite-build and vite-dev targets -- debug.ts: CSS import uses ?raw suffix for Vite compatibility - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/makefile | 12 +- - dotcom-rendering/package.json | 6 + - dotcom-rendering/src/client/debug/debug.ts | 2 +- - dotcom-rendering/vite/browser-targets.ts | 37 ++++ - dotcom-rendering/vite/build.ts | 72 ++++++++ - dotcom-rendering/vite/vite.config.client.ts | 187 ++++++++++++++++++++ - dotcom-rendering/vite/vite.config.server.ts | 59 ++++++ - dotcom-rendering/vite/vite.config.shared.ts | 36 ++++ - dotcom-rendering/webpack/bundles.mjs | 13 ++ - pnpm-lock.yaml | 131 ++++++++++++++ - 10 files changed, 553 insertions(+), 2 deletions(-) - create mode 100644 dotcom-rendering/vite/browser-targets.ts - create mode 100644 dotcom-rendering/vite/build.ts - create mode 100644 dotcom-rendering/vite/vite.config.client.ts - create mode 100644 dotcom-rendering/vite/vite.config.server.ts - create mode 100644 dotcom-rendering/vite/vite.config.shared.ts - create mode 100644 dotcom-rendering/webpack/bundles.mjs - -diff --git a/dotcom-rendering/makefile b/dotcom-rendering/makefile -index 3340b5f0dd..ae2e67fe65 100644 ---- a/dotcom-rendering/makefile -+++ b/dotcom-rendering/makefile -@@ -1,4 +1,4 @@ --.PHONY: install dev build clean-dist clear -+.PHONY: install dev build clean-dist clear vite-build vite-dev - - # these means you can run the binaries in node_modules - # like with npm scripts -@@ -29,6 +29,16 @@ riffraff-bundle: clean-dist build cdk-synth - $(call log, "creating riffraff bundle") - @node ./scripts/deploy/build-riffraff-bundle.mjs - -+# vite ######################################### -+ -+vite-build: clean-dist install -+ $(call log, "building production bundles with Vite") -+ @NODE_ENV=production node --import tsx vite/build.ts -+ -+vite-dev: clear clean-dist install -+ $(call log, "starting Vite DEV server") -+ @NODE_ENV=development node --import tsx vite/dev-server.ts -+ - # prod ######################################### - - build: clean-dist install -diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json -index ef181caec6..b40ca0245f 100644 ---- a/dotcom-rendering/package.json -+++ b/dotcom-rendering/package.json -@@ -173,5 +173,11 @@ - "webpack-node-externals": "3.0.0", - "webpack-sources": "3.3.3", - "zod": "4.1.12" -+ }, -+ "devDependencies": { -+ "@rollup/plugin-inject": "5.0.5", -+ "rollup-plugin-visualizer": "7.0.1", -+ "vite": "^6.2.6", -+ "vite-plugin-svgr": "5.2.0" - } - } -diff --git a/dotcom-rendering/src/client/debug/debug.ts b/dotcom-rendering/src/client/debug/debug.ts -index 909b39556e..31d7490b56 100644 ---- a/dotcom-rendering/src/client/debug/debug.ts -+++ b/dotcom-rendering/src/client/debug/debug.ts -@@ -1,5 +1,5 @@ - // @ts-expect-error: Cannot find module --import debugCss from './debug.css'; -+import debugCss from './debug.css?raw'; - - const style = document.createElement('style'); - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- We know this will be a string -diff --git a/dotcom-rendering/vite/browser-targets.ts b/dotcom-rendering/vite/browser-targets.ts -new file mode 100644 -index 0000000000..a48e32e3ab ---- /dev/null -+++ b/dotcom-rendering/vite/browser-targets.ts -@@ -0,0 +1,37 @@ -+/** -+ * ES module equivalent of webpack/browser-targets.js -+ * -+ * Derives browser targets from @guardian/browserslist-config and upgrades -+ * iOS < 11 to iOS 11 (required for dynamic import support). -+ */ -+import { createRequire } from 'node:module'; -+ -+const require = createRequire(import.meta.url); -+ -+const getTargetsFromBrowsersList: (opts: { -+ browsers: string[]; -+}) => Record = -+ require('@babel/helper-compilation-targets').default; -+const browserslist: (query: string) => string[] = require('browserslist'); -+ -+const browsers = browserslist('extends @guardian/browserslist-config'); -+const rawTargets: Record = getTargetsFromBrowsersList({ -+ browsers, -+}); -+ -+const upgradeTargets = ( -+ targets: Record, -+): Record => { -+ return Object.fromEntries( -+ Object.entries(targets).map(([browser, version]) => { -+ const major = Number(version.split('.')[0]) || 0; -+ if (browser === 'ios' && major < 11) { -+ return ['ios', '11']; -+ } -+ return [browser, version]; -+ }), -+ ); -+}; -+ -+export const getBrowserTargets = (): Record => -+ upgradeTargets(rawTargets); -diff --git a/dotcom-rendering/vite/build.ts b/dotcom-rendering/vite/build.ts -new file mode 100644 -index 0000000000..e64baa7e3e ---- /dev/null -+++ b/dotcom-rendering/vite/build.ts -@@ -0,0 +1,72 @@ -+/** -+ * Build orchestration script for Vite. -+ * Replaces webpack.config.js's multi-compiler array. -+ * -+ * Runs the server build first, then all client builds in parallel. -+ * -+ * Usage: -+ * NODE_ENV=production node --import tsx vite/build.ts -+ */ -+import { rmSync } from 'node:fs'; -+import { resolve } from 'node:path'; -+import { build } from 'vite'; -+import type { Build } from '../src/lib/assets'; -+import { createClientConfig } from './vite.config.client'; -+import { serverConfig } from './vite.config.server'; -+ -+const PROD = process.env.NODE_ENV === 'production'; -+const BUILD_VARIANT = process.env.BUILD_VARIANT === 'true'; -+ -+function getClientBuilds(): Build[] { -+ // Controls whether the variant bundle is built. -+ // In production, also checks the static BUILD_VARIANT flag from bundles.js. -+ // eslint-disable-next-line @typescript-eslint/no-var-requires -- CJS module -+ const { BUILD_VARIANT: BUILD_VARIANT_SWITCH } = -+ require('../webpack/bundles') as { BUILD_VARIANT: boolean }; -+ -+ return [ -+ 'client.web', -+ ...((PROD && BUILD_VARIANT_SWITCH) || BUILD_VARIANT -+ ? (['client.web.variant'] as const) -+ : []), -+ 'client.apps', -+ 'client.editionsCrossword', -+ ]; -+} -+ -+async function runBuild() { -+ const clientBuilds = getClientBuilds(); -+ const startTime = Date.now(); -+ console.log( -+ `\nπŸ”¨ Building with Vite (${PROD ? 'production' : 'development'})...\n`, -+ ); -+ -+ // Clean dist directory before building (since emptyOutDir is false on all configs) -+ rmSync(resolve(__dirname, '..', 'dist'), { recursive: true, force: true }); -+ -+ // 1. Build server first (client builds may depend on server output in some setups) -+ console.log('πŸ“¦ Building server...'); -+ await build(serverConfig); -+ console.log('βœ… Server build complete\n'); -+ -+ // 2. Build all client variants in parallel -+ console.log( -+ `πŸ“¦ Building ${clientBuilds.length} client bundles in parallel...`, -+ ); -+ await Promise.all( -+ clientBuilds.map(async (buildName) => { -+ console.log(` β†’ ${buildName}`); -+ const config = createClientConfig(buildName); -+ await build(config); -+ console.log(` βœ… ${buildName} complete`); -+ }), -+ ); -+ -+ const elapsed = ((Date.now() - startTime) / 1000).toFixed(1); -+ console.log(`\nπŸŽ‰ All builds complete in ${elapsed}s\n`); -+} -+ -+runBuild().catch((err) => { -+ console.error('Build failed:', err); -+ process.exit(1); -+}); -diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.ts -new file mode 100644 -index 0000000000..06bfc728f6 ---- /dev/null -+++ b/dotcom-rendering/vite/vite.config.client.ts -@@ -0,0 +1,187 @@ -+import inject from '@rollup/plugin-inject'; -+import svgr from 'vite-plugin-svgr'; -+import type { UserConfig } from 'vite'; -+import { mergeConfig } from 'vite'; -+import type { Build } from '../src/lib/assets'; -+import { getBrowserTargets } from './browser-targets'; -+import { sharedConfig } from './vite.config.shared'; -+ -+const DEV = process.env.NODE_ENV === 'development'; -+ -+/** -+ * Maps each build variant to its entry point. -+ */ -+const getEntryIndex = (build: Build): string => { -+ switch (build) { -+ case 'client.editionsCrossword': -+ return './src/client/main.editionsCrossword.tsx'; -+ case 'client.apps': -+ return './src/client/main.apps.ts'; -+ default: -+ return './src/client/main.web.ts'; -+ } -+}; -+ -+/** -+ * Returns esbuild-compatible browser targets for the given build. -+ * -+ * For web builds, we derive targets from @guardian/browserslist-config. -+ * For apps/crossword, we use fixed mobile targets. -+ */ -+const getBuildTarget = (build: Build): string[] => { -+ switch (build) { -+ case 'client.apps': -+ case 'client.editionsCrossword': -+ return ['chrome70', 'safari12']; -+ default: { -+ const targets = getBrowserTargets(); -+ // esbuild only supports: chrome, edge, firefox, safari, ios, node, es* -+ // Filter out unsupported browsers like samsung, opera, etc. -+ const supportedBrowsers = new Set([ -+ 'chrome', -+ 'edge', -+ 'firefox', -+ 'safari', -+ 'ios', -+ 'node', -+ ]); -+ return Object.entries(targets) -+ .filter(([browser]) => supportedBrowsers.has(browser)) -+ .map(([browser, version]) => { -+ const major = String(version).split('.')[0]; -+ return `${browser}${major}`; -+ }); -+ } -+ } -+}; -+ -+/** -+ * Returns external modules for the given build. -+ * -+ * Apps: ophan is provided natively. -+ * Crossword: ophan and commercial are provided externally. -+ */ -+const getExternals = (build: Build): string[] => { -+ if (build === 'client.apps') { -+ return ['@guardian/ophan-tracker-js']; -+ } -+ if (build === 'client.editionsCrossword') { -+ return ['@guardian/ophan-tracker-js', '@guardian/commercial']; -+ } -+ return []; -+}; -+ -+/** -+ * Returns rollup output.globals for externalized modules. -+ */ -+const getGlobals = (build: Build): Record => { -+ const globals: Record = {}; -+ if (build === 'client.apps' || build === 'client.editionsCrossword') { -+ globals['@guardian/ophan-tracker-js'] = 'guardian.ophan'; -+ } -+ if (build === 'client.editionsCrossword') { -+ globals['@guardian/commercial'] = 'guardian.commercial'; -+ } -+ return globals; -+}; -+ -+/** -+ * Generates manual chunk assignments for web builds. -+ * Mirrors the webpack splitChunks.cacheGroups.frameworks config. -+ */ -+const getManualChunks = ( -+ build: Build, -+): ((id: string) => string | undefined) | undefined => { -+ // Apps and crossword builds use inlineDynamicImports (single chunk) -+ if (build === 'client.apps' || build === 'client.editionsCrossword') { -+ return undefined; -+ } -+ -+ return (id: string) => { -+ if ( -+ /node_modules\/(preact|react-is|hoist-non-react-statistics|swr|@emotion|stylis)\//.test( -+ id, -+ ) -+ ) { -+ return 'frameworks'; -+ } -+ return undefined; -+ }; -+}; -+ -+/** -+ * Whether this build should inline all dynamic imports into a single chunk. -+ * Apps and crossword builds produce a single file (no code splitting). -+ */ -+const shouldInlineDynamicImports = (build: Build): boolean => -+ build === 'client.apps' || build === 'client.editionsCrossword'; -+ -+/** -+ * Creates a Vite client config for the given build variant. -+ * -+ * This replaces webpack.config.client.js β€” called once per build variant -+ * (client.web, client.web.variant, client.apps, client.editionsCrossword). -+ */ -+export const createClientConfig = (build: Build): UserConfig => { -+ const isSingleChunk = shouldInlineDynamicImports(build); -+ -+ const clientConfig: UserConfig = { -+ plugins: [ -+ svgr({ -+ svgrOptions: { svgo: false }, -+ }), -+ // Buffer polyfill for apps/crossword builds -+ // Replaces webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }) -+ ...(isSingleChunk -+ ? [ -+ inject({ -+ Buffer: ['buffer', 'Buffer'], -+ }), -+ ] -+ : []), -+ ], -+ resolve: { -+ alias: { -+ // Client builds use Preact for smaller bundle size. -+ // Server builds use real React (not aliased). -+ react: 'preact/compat', -+ 'react-dom/test-utils': 'preact/test-utils', -+ 'react-dom': 'preact/compat', -+ }, -+ }, -+ build: { -+ outDir: 'dist', -+ emptyOutDir: false, -+ target: getBuildTarget(build), -+ manifest: `manifest.${build}.json`, -+ rollupOptions: { -+ input: isSingleChunk -+ ? // Single-chunk builds can only have one entry -+ // (inlineDynamicImports is incompatible with multiple inputs) -+ { index: getEntryIndex(build) } -+ : { -+ index: getEntryIndex(build), -+ debug: './src/client/debug/debug.ts', -+ }, -+ external: getExternals(build), -+ output: { -+ // Naming: [name].[build].[hash].js β€” matches webpack output pattern -+ entryFileNames: (chunk) => { -+ if (chunk.name === 'debug') return 'debug.js'; -+ return DEV -+ ? `[name].${build}.js` -+ : `[name].${build}.[hash].js`; -+ }, -+ chunkFileNames: DEV -+ ? `[name].${build}.js` -+ : `[name].${build}.[hash].js`, -+ globals: getGlobals(build), -+ manualChunks: getManualChunks(build), -+ ...(isSingleChunk ? { inlineDynamicImports: true } : {}), -+ }, -+ }, -+ }, -+ }; -+ -+ return mergeConfig(sharedConfig, clientConfig); -+}; -diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts -new file mode 100644 -index 0000000000..ae3316a258 ---- /dev/null -+++ b/dotcom-rendering/vite/vite.config.server.ts -@@ -0,0 +1,59 @@ -+import svgr from 'vite-plugin-svgr'; -+import type { UserConfig } from 'vite'; -+import { mergeConfig } from 'vite'; -+import { sharedConfig } from './vite.config.shared'; -+ -+const DEV = process.env.NODE_ENV === 'development'; -+ -+/** -+ * Vite SSR build configuration for the Express server bundle. -+ * Replaces webpack.config.server.js. -+ * -+ * Key differences from client config: -+ * - No Preact aliasing (server uses real React for renderToString) -+ * - Outputs CommonJS for Node.js -+ * - Most node_modules are external (not bundled) -+ * - No minification in dev -+ */ -+export const serverConfig: UserConfig = mergeConfig(sharedConfig, { -+ plugins: [ -+ svgr({ -+ svgrOptions: { svgo: false }, -+ }), -+ ], -+ build: { -+ outDir: 'dist', -+ emptyOutDir: false, -+ ssr: true, -+ target: `node${process.versions.node}`, -+ minify: !DEV, -+ sourcemap: true, -+ rollupOptions: { -+ input: { -+ server: './src/server/server.ts', -+ }, -+ output: { -+ format: 'cjs', -+ entryFileNames: '[name].js', -+ chunkFileNames: '[name].js', -+ }, -+ // webpack/bundles.js is CJS with module.exports β€” Rollup can't -+ // resolve named exports from it. Externalize so it's required at runtime. -+ external: [/webpack\/bundles/], -+ }, -+ }, -+ ssr: { -+ // Bundle these packages (they are ESM-only or need to be included). -+ // Mirrors webpack-node-externals allowlist. -+ noExternal: [ -+ // All @guardian scoped packages should be bundled -+ /@guardian\//, -+ // ESM-only package that throws when not bundled -+ 'screenfull', -+ // Valibot is ESM and needs bundling -+ 'valibot', -+ ], -+ // Explicitly external in dev (not needed in prod where they're deployed) -+ external: DEV ? [/@aws-sdk\/.*/] : [], -+ }, -+} satisfies UserConfig); -diff --git a/dotcom-rendering/vite/vite.config.shared.ts b/dotcom-rendering/vite/vite.config.shared.ts -new file mode 100644 -index 0000000000..2a15abccd3 ---- /dev/null -+++ b/dotcom-rendering/vite/vite.config.shared.ts -@@ -0,0 +1,36 @@ -+import { resolve } from 'node:path'; -+import type { UserConfig } from 'vite'; -+ -+const DEV = process.env.NODE_ENV === 'development'; -+ -+/** -+ * Shared Vite configuration applied to both server and client builds. -+ * Replaces the `commonConfigs()` function from webpack.config.js. -+ */ -+export const sharedConfig: UserConfig = { -+ define: { -+ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), -+ 'process.env.HOSTNAME': JSON.stringify(process.env.HOSTNAME), -+ }, -+ build: { -+ sourcemap: DEV ? 'inline' : true, -+ // Rolldown is used automatically when available in Vite 7+ -+ // For Vite 6 with experimental Rolldown, uncomment: -+ // rollupOptions: { experimentalRolldown: true }, -+ }, -+ resolve: { -+ extensions: ['.ts', '.tsx', '.js', '.jsx'], -+ alias: { -+ // webpack/bundles.js is CJS (module.exports) which Rollup can't -+ // resolve named exports from. Redirect to an ESM wrapper. -+ '../../webpack/bundles': resolve( -+ __dirname, -+ '../webpack/bundles.mjs', -+ ), -+ '../../../webpack/bundles': resolve( -+ __dirname, -+ '../webpack/bundles.mjs', -+ ), -+ }, -+ }, -+}; -diff --git a/dotcom-rendering/webpack/bundles.mjs b/dotcom-rendering/webpack/bundles.mjs -new file mode 100644 -index 0000000000..3a7ecc81d9 ---- /dev/null -+++ b/dotcom-rendering/webpack/bundles.mjs -@@ -0,0 +1,13 @@ -+/** -+ * ESM re-export of bundles.js values for Vite/Rollup compatibility. -+ * -+ * These values must be kept in sync with bundles.js. -+ * The original bundles.js uses module.exports (CJS) which Rollup -+ * cannot resolve named exports from. -+ */ -+ -+/** @type {boolean} */ -+export const BUILD_VARIANT = false; -+ -+/** @type {(variant: 'Variant' | 'Control') => string} */ -+export const dcrJavascriptBundle = (variant) => `dcrJavascriptBundle${variant}`; -diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml -index 0fbd91a819..3abdb9930e 100644 ---- a/pnpm-lock.yaml -+++ b/pnpm-lock.yaml -@@ -737,6 +737,19 @@ importers: - zod: - specifier: 4.1.12 - version: 4.1.12 -+ devDependencies: -+ '@rollup/plugin-inject': -+ specifier: 5.0.5 -+ version: 5.0.5(rollup@4.59.0) -+ rollup-plugin-visualizer: -+ specifier: 7.0.1 -+ version: 7.0.1(rollup@4.59.0) -+ vite: -+ specifier: ^6.2.6 -+ version: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) -+ vite-plugin-svgr: -+ specifier: 5.2.0 -+ version: 5.2.0(rollup@4.59.0)(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2)) - - packages: - -@@ -2790,6 +2803,15 @@ packages: - rollup: - optional: true - -+ '@rollup/plugin-inject@5.0.5': -+ resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} -+ engines: {node: '>=14.0.0'} -+ peerDependencies: -+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 -+ peerDependenciesMeta: -+ rollup: -+ optional: true -+ - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} -@@ -4731,6 +4753,10 @@ packages: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - -+ cliui@9.0.1: -+ resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} -+ engines: {node: '>=20'} -+ - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} -@@ -6394,6 +6420,10 @@ packages: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - -+ is-in-ssh@1.0.0: -+ resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} -+ engines: {node: '>=20'} -+ - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} -@@ -7347,6 +7377,10 @@ packages: - resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} - engines: {node: '>=18'} - -+ open@11.0.0: -+ resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} -+ engines: {node: '>=20'} -+ - opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true -@@ -7591,6 +7625,10 @@ packages: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} - -+ powershell-utils@0.1.0: -+ resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} -+ engines: {node: '>=20'} -+ - preact-render-to-string@6.0.2: - resolution: {integrity: sha512-/dls6xmcFc8PvnCVke5Hu5ll70pZZu+jZuvw3i/ya2CNu6B0ev9F937+oFyzdlNKVp68III89oYMbE6dcmuyRA==} - peerDependencies: -@@ -7907,6 +7945,19 @@ packages: - esbuild: '>=0.18.0' - rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - -+ rollup-plugin-visualizer@7.0.1: -+ resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} -+ engines: {node: '>=22'} -+ hasBin: true -+ peerDependencies: -+ rolldown: 1.x || ^1.0.0-beta || ^1.0.0-rc -+ rollup: 2.x || 3.x || 4.x -+ peerDependenciesMeta: -+ rolldown: -+ optional: true -+ rollup: -+ optional: true -+ - rollup@4.59.0: - resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} -@@ -8823,6 +8874,11 @@ packages: - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - -+ vite-plugin-svgr@5.2.0: -+ resolution: {integrity: sha512-qj2eAKF8C6PZWemVTvQA0xgQIcP1hHU6Buh7fl6BhvayWwnuxE+z417miKxeDvRWbDrupQ1oK99hfxElopJ3sQ==} -+ peerDependencies: -+ vite: '>=3.0.0' -+ - vite@6.4.0: - resolution: {integrity: sha512-oLnWs9Hak/LOlKjeSpOwD6JMks8BeICEdYMJBf6P4Lac/pO9tKiv/XhXnAM7nNfSkZahjlCZu9sS50zL8fSnsw==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} -@@ -9102,6 +9158,10 @@ packages: - resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} - engines: {node: '>=18'} - -+ wsl-utils@0.3.1: -+ resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} -+ engines: {node: '>=20'} -+ - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} -@@ -9135,10 +9195,18 @@ packages: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - -+ yargs-parser@22.0.0: -+ resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} -+ engines: {node: ^20.19.0 || ^22.12.0 || >=23} -+ - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - -+ yargs@18.0.0: -+ resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} -+ engines: {node: ^20.19.0 || ^22.12.0 || >=23} -+ - yauzl@3.2.0: - resolution: {integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==} - engines: {node: '>=12'} -@@ -11972,6 +12040,14 @@ snapshots: - optionalDependencies: - rollup: 4.59.0 - -+ '@rollup/plugin-inject@5.0.5(rollup@4.59.0)': -+ dependencies: -+ '@rollup/pluginutils': 5.3.0(rollup@4.59.0) -+ estree-walker: 2.0.2 -+ magic-string: 0.30.21 -+ optionalDependencies: -+ rollup: 4.59.0 -+ - '@rollup/plugin-json@6.1.0(rollup@4.59.0)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) -@@ -14358,6 +14434,12 @@ snapshots: - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - -+ cliui@9.0.1: -+ dependencies: -+ string-width: 7.2.0 -+ strip-ansi: 7.1.2 -+ wrap-ansi: 9.0.2 -+ - clone-deep@4.0.1: - dependencies: - is-plain-object: 2.0.4 -@@ -16491,6 +16573,8 @@ snapshots: - dependencies: - is-extglob: 2.1.1 - -+ is-in-ssh@1.0.0: {} -+ - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 -@@ -17729,6 +17813,15 @@ snapshots: - is-inside-container: 1.0.0 - wsl-utils: 0.1.0 - -+ open@11.0.0: -+ dependencies: -+ default-browser: 5.5.0 -+ define-lazy-prop: 3.0.0 -+ is-in-ssh: 1.0.0 -+ is-inside-container: 1.0.0 -+ powershell-utils: 0.1.0 -+ wsl-utils: 0.3.1 -+ - opener@1.5.2: {} - - optionator@0.9.3: -@@ -17940,6 +18033,8 @@ snapshots: - picocolors: 1.1.1 - source-map-js: 1.2.1 - -+ powershell-utils@0.1.0: {} -+ - preact-render-to-string@6.0.2(preact@10.15.1): - dependencies: - preact: 10.15.1 -@@ -18328,6 +18423,15 @@ snapshots: - transitivePeerDependencies: - - supports-color - -+ rollup-plugin-visualizer@7.0.1(rollup@4.59.0): -+ dependencies: -+ open: 11.0.0 -+ picomatch: 4.0.4 -+ source-map: 0.7.4 -+ yargs: 18.0.0 -+ optionalDependencies: -+ rollup: 4.59.0 -+ - rollup@4.59.0: - dependencies: - '@types/estree': 1.0.8 -@@ -19487,6 +19591,17 @@ snapshots: - '@types/unist': 3.0.3 - vfile-message: 4.0.2 - -+ vite-plugin-svgr@5.2.0(rollup@4.59.0)(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2)): -+ dependencies: -+ '@rollup/pluginutils': 5.3.0(rollup@4.59.0) -+ '@svgr/core': 8.1.0(typescript@5.5.3) -+ '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.3)) -+ vite: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) -+ transitivePeerDependencies: -+ - rollup -+ - supports-color -+ - typescript -+ - vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2): - dependencies: - esbuild: 0.25.5 -@@ -19820,6 +19935,11 @@ snapshots: - dependencies: - is-wsl: 3.1.1 - -+ wsl-utils@0.3.1: -+ dependencies: -+ is-wsl: 3.1.1 -+ powershell-utils: 0.1.0 -+ - xml-name-validator@4.0.0: {} - - xmlchars@2.2.0: {} -@@ -19840,6 +19960,8 @@ snapshots: - - yargs-parser@21.1.1: {} - -+ yargs-parser@22.0.0: {} -+ - yargs@17.7.2: - dependencies: - cliui: 8.0.1 -@@ -19850,6 +19972,15 @@ snapshots: - y18n: 5.0.8 - yargs-parser: 21.1.1 - -+ yargs@18.0.0: -+ dependencies: -+ cliui: 9.0.1 -+ escalade: 3.2.0 -+ get-caller-file: 2.0.5 -+ string-width: 7.2.0 -+ y18n: 5.0.8 -+ yargs-parser: 22.0.0 -+ - yauzl@3.2.0: - dependencies: - buffer-crc32: 0.2.13 --- -2.50.1 (Apple Git-155) - - -From bf28fb7b96809cbad480dd6f48bb91be82d2eeb9 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Mon, 6 Apr 2026 14:28:56 +0100 -Subject: [PATCH 02/17] Migrate islands to import.meta.glob, remove - webpack-specific modules - -Replace the webpack dynamic import pattern in doHydration.tsx with a -static island registry built via Vite's import.meta.glob. Each island -component is still lazily loaded as its own chunk. - -- Add islandRegistry.ts using import.meta.glob for all *.island.tsx files -- Update doHydration.tsx to look up islands from the registry -- Remove webpackPublicPath.ts, decidePublicPath.ts, dynamicImport.ts -- Strip all webpackMode/webpackChunkName comments from entry points -- Remove guardianPolyfilledImport from window.guardian types -- Swap tsconfig types from webpack-env to vite/client - -Co-Authored-By: Claude Opus 4.6 ---- - .../src/client/decidePublicPath.test.ts | 53 ------------ - .../src/client/decidePublicPath.ts | 13 --- - dotcom-rendering/src/client/dynamicImport.ts | 40 --------- - .../src/client/islands/doHydration.tsx | 22 ++--- - .../src/client/islands/islandRegistry.ts | 31 +++++++ - dotcom-rendering/src/client/main.apps.ts | 49 ++--------- - dotcom-rendering/src/client/main.web.ts | 84 +++++-------------- - .../src/client/sentryLoader/loadSentry.ts | 6 +- - .../client/sentryLoader/sentryLoader.test.ts | 1 - - .../src/client/webpackPublicPath.ts | 7 -- - dotcom-rendering/tsconfig.json | 2 +- - dotcom-rendering/window.guardian.ts | 11 --- - 12 files changed, 76 insertions(+), 243 deletions(-) - delete mode 100644 dotcom-rendering/src/client/decidePublicPath.test.ts - delete mode 100644 dotcom-rendering/src/client/decidePublicPath.ts - delete mode 100644 dotcom-rendering/src/client/dynamicImport.ts - create mode 100644 dotcom-rendering/src/client/islands/islandRegistry.ts - delete mode 100644 dotcom-rendering/src/client/webpackPublicPath.ts - -diff --git a/dotcom-rendering/src/client/decidePublicPath.test.ts b/dotcom-rendering/src/client/decidePublicPath.test.ts -deleted file mode 100644 -index 85ebbf20e3..0000000000 ---- a/dotcom-rendering/src/client/decidePublicPath.test.ts -+++ /dev/null -@@ -1,53 +0,0 @@ --import { decidePublicPath } from './decidePublicPath'; -- --const mockHostname = (hostname: string | undefined) => { -- Object.defineProperty(window, 'location', { -- value: { -- hostname, -- }, -- writable: true, -- }); --}; -- --const mockFrontendAssetsFullURL = (frontendAssetsFullURL: string) => { -- Object.defineProperty(window, 'guardian', { -- value: { -- config: { -- frontendAssetsFullURL, -- }, -- }, -- writable: true, -- }); --}; -- --describe('decidePublicPath', () => { -- beforeEach(() => { -- jest.resetModules(); -- -- mockHostname(undefined); -- -- mockFrontendAssetsFullURL('https://assets.guim.co.uk/'); -- -- process.env = { NODE_ENV: undefined, HOSTNAME: undefined }; -- }); -- -- it('with development flag', () => { -- process.env.NODE_ENV = 'development'; -- expect(decidePublicPath()).toEqual('/assets/'); -- }); -- -- it('with production flag', () => { -- process.env.NODE_ENV = 'production'; -- expect(decidePublicPath()).toEqual('https://assets.guim.co.uk/assets/'); -- }); -- -- it('with production flag and localhost', () => { -- process.env.NODE_ENV = 'production'; -- mockHostname('localhost'); -- expect(decidePublicPath()).toEqual('/assets/'); -- }); -- -- it('with no flag', () => { -- expect(decidePublicPath()).toEqual('https://assets.guim.co.uk/assets/'); -- }); --}); -diff --git a/dotcom-rendering/src/client/decidePublicPath.ts b/dotcom-rendering/src/client/decidePublicPath.ts -deleted file mode 100644 -index 41bb44db14..0000000000 ---- a/dotcom-rendering/src/client/decidePublicPath.ts -+++ /dev/null -@@ -1,13 +0,0 @@ --/** -- * Determine the path that webpack should use as base for dynamic imports -- * -- * @returns The webpack public path to use -- */ --export const decidePublicPath = (): string => { -- const isDev = process.env.NODE_ENV === 'development'; -- const isLocalHost = window.location.hostname === 'localhost'; -- // Use relative path if running locally or in CI -- return isDev || isLocalHost -- ? '/assets/' -- : `${window.guardian.config.frontendAssetsFullURL}assets/`; --}; -diff --git a/dotcom-rendering/src/client/dynamicImport.ts b/dotcom-rendering/src/client/dynamicImport.ts -deleted file mode 100644 -index b5e25850c4..0000000000 ---- a/dotcom-rendering/src/client/dynamicImport.ts -+++ /dev/null -@@ -1,40 +0,0 @@ --import dynamicImportPolyfill from 'dynamic-import-polyfill'; -- --// Provides an import function to use for dynamic imports. **Only works on --// browsers that cut the mustard (support modules).** --const initialiseDynamicImport = () => { -- try { -- // eslint-disable-next-line @typescript-eslint/no-implied-eval -- window.guardianPolyfilledImport = new Function( -- 'url', -- `return import(url)`, -- ) as (url: string) => Promise; -- } catch (e) { -- dynamicImportPolyfill.initialize({ -- importFunctionName: 'guardianPolyfilledImport', // must be a direct property of the window -- }); -- } --}; -- --// Provides an import function to use for dynamic imports. **Designed for --// legacy browsers. Dynamic loads a ~4k bundle.** --const initialiseDynamicImportLegacy = async () => { -- const shimport = await import( -- /* webpackChunkName: "shimport" */ '@guardian/shimport' -- ); -- shimport.initialise(); // note this adds a __shimport__ global -- window.guardianPolyfilledImport = shimport.load; --}; -- --export const dynamicImport = (): Promise => { -- window.guardianPolyfilledImport = (url: string) => -- Promise.reject( -- new Error(`import not polyfilled; attempted import(${url})`), -- ); -- -- if (window.guardian.mustardCut) { -- return Promise.resolve(initialiseDynamicImport()); -- } -- -- return initialiseDynamicImportLegacy(); --}; -diff --git a/dotcom-rendering/src/client/islands/doHydration.tsx b/dotcom-rendering/src/client/islands/doHydration.tsx -index 8732ea875b..e61d810d3c 100644 ---- a/dotcom-rendering/src/client/islands/doHydration.tsx -+++ b/dotcom-rendering/src/client/islands/doHydration.tsx -@@ -7,6 +7,7 @@ import { hydrateRoot } from 'react-dom/client'; - import { ConfigProvider } from '../../components/ConfigContext'; - import { IslandProvider } from '../../components/IslandContext'; - import type { Config } from '../../types/configContext'; -+import { getIslandModule } from './islandRegistry'; - - declare global { - interface DOMStringMap { -@@ -45,11 +46,16 @@ export const doHydration = async ( - - const { endPerformanceMeasure: endImportPerformanceMeasure } = - startPerformanceMeasure('dotcom', name, 'import'); -- await import( -- /* webpackInclude: /\.island\.tsx$/ */ -- /* webpackChunkName: "[request]" */ -- `../../components/${name}.island` -- ) -+ -+ const loadModule = getIslandModule(name); -+ if (!loadModule) { -+ console.error( -+ `🚨 Island module not found: ${name}. Components must live in the root of /components and follow the [MyComponent].island.tsx naming convention 🚨`, -+ ); -+ return; -+ } -+ -+ await loadModule() - .then((module) => { - /** The duration of importing the module for this island */ - const importDuration = endImportPerformanceMeasure(); -@@ -88,11 +94,7 @@ export const doHydration = async ( - }) - .catch((error) => { - element.dataset.islandStatus = undefined; // remove any island status -- if (name && error.message.includes(name)) { -- console.error( -- `🚨 Error importing ${name}. Components must live in the root of /components and follow the [MyComponent].island.tsx naming convention 🚨`, -- ); -- } -+ console.error(`🚨 Error hydrating island: ${name} 🚨`); - throw error; - }); - }; -diff --git a/dotcom-rendering/src/client/islands/islandRegistry.ts b/dotcom-rendering/src/client/islands/islandRegistry.ts -new file mode 100644 -index 0000000000..6e8524d5cb ---- /dev/null -+++ b/dotcom-rendering/src/client/islands/islandRegistry.ts -@@ -0,0 +1,31 @@ -+/** -+ * Static registry of all island components, built at compile time -+ * via Vite's import.meta.glob. -+ * -+ * Each matched file becomes a lazy chunk (eager: false), exactly -+ * matching the previous webpack behaviour where each island was -+ * a separate dynamically-loaded chunk. -+ * -+ * Replaces the webpack magic comments in doHydration.tsx: -+ * import( -+ * /* webpackInclude: /\.island\.tsx$/ *​/ -+ * /* webpackChunkName: "[request]" *​/ -+ * `../../components/${name}.island` -+ * ) -+ */ -+const islandModules = import.meta.glob>( -+ '../../components/*.island.tsx', -+); -+ -+/** -+ * Look up the lazy loader for an island component by name. -+ * -+ * @param name The component name (e.g. "ShareButton" for ShareButton.island.tsx) -+ * @returns A function that returns a Promise of the module, or undefined if not found -+ */ -+export const getIslandModule = ( -+ name: string, -+): (() => Promise>) | undefined => { -+ const key = `../../components/${name}.island.tsx`; -+ return islandModules[key]; -+}; -diff --git a/dotcom-rendering/src/client/main.apps.ts b/dotcom-rendering/src/client/main.apps.ts -index 2e4556346a..c084538f8d 100644 ---- a/dotcom-rendering/src/client/main.apps.ts -+++ b/dotcom-rendering/src/client/main.apps.ts -@@ -1,4 +1,3 @@ --import './webpackPublicPath'; - import { startup } from './startup'; - - /************************************************************* -@@ -12,19 +11,8 @@ import { startup } from './startup'; - void startup( - 'sentryLoader', - () => -- import(/* webpackMode: "eager" */ './sentryLoader/sentryLoader').then( -- ({ sentryLoader }) => sentryLoader(), -- ), -- { -- priority: 'critical', -- }, --); -- --void startup( -- 'dynamicImport', -- () => -- import(/* webpackMode: "eager" */ './dynamicImport').then( -- ({ dynamicImport }) => dynamicImport(), -+ import('./sentryLoader/sentryLoader').then(({ sentryLoader }) => -+ sentryLoader(), - ), - { - priority: 'critical', -@@ -33,10 +21,7 @@ void startup( - - void startup( - 'islands', -- () => -- import(/* webpackMode: "eager" */ './islands/islands').then( -- ({ islands }) => islands(), -- ), -+ () => import('./islands/islands').then(({ islands }) => islands()), - { - priority: 'critical', - }, -@@ -48,47 +33,31 @@ void startup( - * because they are lower priority and do not want to block - * the modules above on loading these. - * -- * We are not assigning chunk name to allow Webpack -- * to optimise chunking based on its algorithm. -- * - *************************************************************/ - - void startup( - 'atomIframe', -- () => -- import( -- /* webpackMode: 'lazy' */ -- './atomIframe' -- ).then(({ atomIframe }) => atomIframe()), -+ () => import('./atomIframe').then(({ atomIframe }) => atomIframe()), - { priority: 'feature' }, - ); - - void startup( - 'embedIframe', -- () => -- import( -- /* webpackMode: 'lazy' */ -- './embedIframe' -- ).then(({ embedIframe }) => embedIframe()), -+ () => import('./embedIframe').then(({ embedIframe }) => embedIframe()), - { priority: 'feature' }, - ); - - void startup( - 'newsletterEmbedIframe', - () => -- import( -- /* webpackMode: 'lazy' */ -- './newsletterEmbedIframe' -- ).then(({ newsletterEmbedIframe }) => newsletterEmbedIframe()), -+ import('./newsletterEmbedIframe').then(({ newsletterEmbedIframe }) => -+ newsletterEmbedIframe(), -+ ), - { priority: 'feature' }, - ); - - void startup( - 'initDiscussion', -- () => -- import( -- /* webpackMode: 'lazy' */ -- './discussion' -- ).then(({ discussion }) => discussion()), -+ () => import('./discussion').then(({ discussion }) => discussion()), - { priority: 'feature' }, - ); -diff --git a/dotcom-rendering/src/client/main.web.ts b/dotcom-rendering/src/client/main.web.ts -index 95a572c124..bb45a394b9 100644 ---- a/dotcom-rendering/src/client/main.web.ts -+++ b/dotcom-rendering/src/client/main.web.ts -@@ -1,4 +1,3 @@ --import './webpackPublicPath'; - import { adaptSite, shouldAdapt } from './adaptiveSite'; - import { startup } from './startup'; - import { maybeSIndicatorCapiKey } from './userFeatures/cookies/sIndicatorCapiKey'; -@@ -18,10 +17,7 @@ void (async () => { - - void startup( - 'bootCmp', -- () => -- import(/* webpackMode: "eager" */ './bootCmp').then(({ bootCmp }) => -- bootCmp('Web'), -- ), -+ () => import('./bootCmp').then(({ bootCmp }) => bootCmp('Web')), - { - priority: 'critical', - }, -@@ -30,10 +26,8 @@ void (async () => { - void startup( - 'recordInitialPageEvents', - () => -- import( -- /* webpackMode: "eager" */ './ophan/recordInitialPageEvents' -- ).then(({ recordInitialPageEvents }) => -- recordInitialPageEvents('Web'), -+ import('./ophan/recordInitialPageEvents').then( -+ ({ recordInitialPageEvents }) => recordInitialPageEvents('Web'), - ), - { - priority: 'critical', -@@ -43,9 +37,9 @@ void (async () => { - void startup( - 'sentryLoader', - () => -- import( -- /* webpackMode: "eager" */ './sentryLoader/sentryLoader' -- ).then(({ sentryLoader }) => sentryLoader()), -+ import('./sentryLoader/sentryLoader').then(({ sentryLoader }) => -+ sentryLoader(), -+ ), - { - priority: 'critical', - }, -@@ -60,29 +54,15 @@ void (async () => { - void startup( - 'abTesting', - () => -- import(/* webpackMode: 'eager' */ './abTesting').then( -- ({ initWindowABTesting }) => initWindowABTesting(), -+ import('./abTesting').then(({ initWindowABTesting }) => -+ initWindowABTesting(), - ), - { priority: 'critical' }, - ); - -- void startup( -- 'dynamicImport', -- () => -- import(/* webpackMode: "eager" */ './dynamicImport').then( -- ({ dynamicImport }) => dynamicImport(), -- ), -- { -- priority: 'critical', -- }, -- ); -- - void startup( - 'islands', -- () => -- import(/* webpackMode: "eager" */ './islands/islands').then( -- ({ islands }) => islands(), -- ), -+ () => import('./islands/islands').then(({ islands }) => islands()), - { - priority: 'critical', - }, -@@ -91,9 +71,9 @@ void (async () => { - void startup( - 'poorPerformanceMonitoring', - () => -- import( -- /* webpackMode: "eager" */ './poorPerformanceMonitoring' -- ).then(({ recordPoorPerformance }) => recordPoorPerformance('Web')), -+ import('./poorPerformanceMonitoring').then( -+ ({ recordPoorPerformance }) => recordPoorPerformance('Web'), -+ ), - { - priority: 'critical', - }, -@@ -102,9 +82,9 @@ void (async () => { - void startup( - 'userFeatures', - () => -- import( -- /* webpackMode: 'eager' */ './userFeatures/user-features' -- ).then(({ refresh }) => refresh()), -+ import('./userFeatures/user-features').then(({ refresh }) => -+ refresh(), -+ ), - { priority: 'critical' }, - ); - -@@ -114,59 +94,39 @@ void (async () => { - * because they are lower priority and do not want to block - * the modules above on loading these. - * -- * We are not assigning chunk name to allow Webpack -- * to optimise chunking based on its algorithm. -- * - *************************************************************/ - - void startup( - 'atomIframe', -- () => -- import( -- /* webpackMode: 'lazy' */ -- './atomIframe' -- ).then(({ atomIframe }) => atomIframe()), -+ () => import('./atomIframe').then(({ atomIframe }) => atomIframe()), - { priority: 'feature' }, - ); - - void startup( - 'embedIframe', -- () => -- import( -- /* webpackMode: 'lazy' */ -- './embedIframe' -- ).then(({ embedIframe }) => embedIframe()), -+ () => import('./embedIframe').then(({ embedIframe }) => embedIframe()), - { priority: 'feature' }, - ); - - void startup( - 'newsletterEmbedIframe', - () => -- import( -- /* webpackMode: 'lazy' */ -- './newsletterEmbedIframe' -- ).then(({ newsletterEmbedIframe }) => newsletterEmbedIframe()), -+ import('./newsletterEmbedIframe').then( -+ ({ newsletterEmbedIframe }) => newsletterEmbedIframe(), -+ ), - { priority: 'feature' }, - ); - - void startup( - 'initDiscussion', -- () => -- import( -- /* webpackMode: 'lazy' */ -- './discussion' -- ).then(({ discussion }) => discussion()), -+ () => import('./discussion').then(({ discussion }) => discussion()), - { priority: 'feature' }, - ); - - if (maybeSIndicatorCapiKey) { - void startup( - 'sIndicator', -- () => -- import( -- /* webpackMode: 'lazy' */ -- './sIndicator' -- ).then(({ sIndicator }) => sIndicator()), -+ () => import('./sIndicator').then(({ sIndicator }) => sIndicator()), - { priority: 'feature' }, - ); - } -diff --git a/dotcom-rendering/src/client/sentryLoader/loadSentry.ts b/dotcom-rendering/src/client/sentryLoader/loadSentry.ts -index 962b12feb6..53c6fd13e3 100644 ---- a/dotcom-rendering/src/client/sentryLoader/loadSentry.ts -+++ b/dotcom-rendering/src/client/sentryLoader/loadSentry.ts -@@ -1,6 +1,5 @@ - import { isAdBlockInUse } from '@guardian/commercial-core'; - import { log, startPerformanceMeasure } from '@guardian/libs'; --import '../webpackPublicPath'; - import type { ReportError } from '../../types/sentry'; - - type ReportErrorError = Parameters[0]; -@@ -69,10 +68,7 @@ const loadSentryCreator = () => { - /** - * Dynamically load sentry.ts - */ -- const { reportError } = await import( -- /* webpackChunkName: "lazy" */ -- /* webpackChunkName: "sentry" */ './sentry' -- ); -+ const { reportError } = await import('./sentry'); - - /** - * Replace the lazy loader stub with our custom error reporting function -diff --git a/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts b/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts -index 009bcd8285..45ac8adc57 100644 ---- a/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts -+++ b/dotcom-rendering/src/client/sentryLoader/sentryLoader.test.ts -@@ -1,6 +1,5 @@ - import { isSentryEnabled } from './sentryLoader'; - --// Stubbed to prevent parsing of __webpack_public_path__ - jest.mock('./loadSentry', () => ({ loadSentry: jest.fn() })); - - describe('Enable Sentry when it passes loading conditions', () => { -diff --git a/dotcom-rendering/src/client/webpackPublicPath.ts b/dotcom-rendering/src/client/webpackPublicPath.ts -deleted file mode 100644 -index 9e6928b474..0000000000 ---- a/dotcom-rendering/src/client/webpackPublicPath.ts -+++ /dev/null -@@ -1,7 +0,0 @@ --// allows us to define public path dynamically --// dynamic imports will use this as the base to find their assets -- --import { decidePublicPath } from './decidePublicPath'; -- --// https://webpack.js.org/guides/public-path/#on-the-fly --__webpack_public_path__ = decidePublicPath(); -diff --git a/dotcom-rendering/tsconfig.json b/dotcom-rendering/tsconfig.json -index 3641bf56c0..fd748a9adb 100644 ---- a/dotcom-rendering/tsconfig.json -+++ b/dotcom-rendering/tsconfig.json -@@ -22,7 +22,7 @@ - "react", - "react-dom", - "@testing-library/jest-dom", -- "webpack-env", -+ "vite/client", - "youtube", - "twitter-for-web", - // This is to fix a "Cannot find namespace 'Chai'" error that arose during -diff --git a/dotcom-rendering/window.guardian.ts b/dotcom-rendering/window.guardian.ts -index 3a48327504..2ddd0642ad 100644 ---- a/dotcom-rendering/window.guardian.ts -+++ b/dotcom-rendering/window.guardian.ts -@@ -40,17 +40,6 @@ declare global { - weeklyArticleCount: WeeklyArticleHistory | undefined; - dailyArticleCount: DailyArticleHistory | undefined; - }; -- /** -- * ES6 module import, possibly polyfilled depending on the current -- * browser. There are three categories: -- * -- * 1. Full support out of the box -- * 2. ES6 module support but not dynamic modules -- * 3. No module support -- * -- * This gives support across all 3 cases. -- */ -- guardianPolyfilledImport: (url: string) => Promise; // can't be nested beyond top level - guCmpHotFix: { - initialised?: boolean; - cmp: CMP; --- -2.50.1 (Apple Git-155) - - -From 387432cf50fa56e120e0cf4a821cd64f5ab516c0 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Mon, 6 Apr 2026 22:19:59 +0100 -Subject: [PATCH 03/17] Adapt asset manifest and script regex for Vite format - -Vite manifests are keyed by source path with nested entry objects -(unlike webpack's flat key-value format). Update getPathFromManifest -to look up entries by source path for entry points and by name for -shared chunks like frameworks. Update script hash regex from 20 to -8 chars to match Vite's output. - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/src/lib/assets.test.ts | 44 ++++++++------ - dotcom-rendering/src/lib/assets.ts | 78 ++++++++++++++++++++----- - 2 files changed, 91 insertions(+), 31 deletions(-) - -diff --git a/dotcom-rendering/src/lib/assets.test.ts b/dotcom-rendering/src/lib/assets.test.ts -index 2eb138f8b8..65c7db3ee3 100644 ---- a/dotcom-rendering/src/lib/assets.test.ts -+++ b/dotcom-rendering/src/lib/assets.test.ts -@@ -35,56 +35,66 @@ describe('decideAssetOrigin for stage', () => { - - describe('regular expression to match files', () => { - it('should handle CI environment', () => { -- expect('/assets/ophan.client.web.eb74205c979f58659ed7.js').toMatch(WEB); -+ expect('/assets/index.client.web.DKLwwO4p.js').toMatch(WEB); - }); - - it('should handle DEV environment', () => { -- expect('/assets/ophan.client.web.variant.js').toMatch( -+ expect('/assets/index.client.web.variant.js').toMatch( - WEB_VARIANT_SCRIPT, - ); - }); - - it('should handle PROD environment', () => { - expect( -- 'https://assets.guim.co.uk/assets/ophan.client.web.abcdefghijklmnopqrst.js', -+ 'https://assets.guim.co.uk/assets/index.client.web.DKLwwO4p.js', - ).toMatch(WEB); - expect( -- 'https://assets.guim.co.uk/assets/ophan.client.web.variant.abcdefghijklmnopqrst.js', -+ 'https://assets.guim.co.uk/assets/index.client.web.variant.abcdefgh.js', - ).toMatch(WEB_VARIANT_SCRIPT); - expect( -- 'https://assets.guim.co.uk/assets/ophan.client.apps.eb74205c979f58659ed7.js', -+ 'https://assets.guim.co.uk/assets/index.client.apps.DKLwwO4p.js', - ).toMatch(APPS_SCRIPT); - }); - - it('should handle http3 query param', () => { - expect( -- 'https://assets.guim.co.uk/assets/ophan.client.web.eb74205c979f58659ed7.js?http3=true', -+ 'https://assets.guim.co.uk/assets/index.client.web.DKLwwO4p.js?http3=true', - ).toMatch(WEB); - }); - }); - - describe('getPathFromManifest', () => { - beforeEach(() => { -- const assetHash = `{ -- "7305.client.web.js": "7305.client.web.8cdc05567d98ebd9f67e.js", -- "356.client.web.js": "356.client.web.0a1bbdf8c7a5e5826b7c.js" -- }`; -- (readFileSync as jest.Mock).mockReturnValue(assetHash); -+ // Vite manifest format: keyed by source path with nested entry objects -+ const viteManifest = JSON.stringify({ -+ 'src/client/main.web.ts': { -+ file: 'index.client.web.DKLwwO4p.js', -+ name: 'index', -+ src: 'src/client/main.web.ts', -+ isEntry: true, -+ imports: ['_frameworks.client.web.xyz78901.js'], -+ }, -+ _frameworks: { -+ file: 'frameworks.client.web.xyz78901.js', -+ name: 'frameworks', -+ }, -+ }); -+ (readFileSync as jest.Mock).mockReturnValue(viteManifest); - }); - - afterEach(() => { - jest.resetAllMocks(); - }); - -- it('returns correct hashed asset (1)', () => { -- expect(getPathFromManifest('client.web', '7305.client.web.js')).toBe( -- '/assets/7305.client.web.8cdc05567d98ebd9f67e.js', -+ it('returns correct hashed asset for entry point', () => { -+ expect(getPathFromManifest('client.web', 'index.js')).toBe( -+ '/assets/index.client.web.DKLwwO4p.js', - ); - }); - -- it('returns correct hashed asset (2)', () => { -- expect(getPathFromManifest('client.web', '356.client.web.js')).toBe( -- '/assets/356.client.web.0a1bbdf8c7a5e5826b7c.js', -+ it('returns correct hashed asset for frameworks chunk', () => { -+ expect(getPathFromManifest('client.web', 'frameworks.js')).toBe( -+ '/assets/frameworks.client.web.xyz78901.js', - ); - }); - -diff --git a/dotcom-rendering/src/lib/assets.ts b/dotcom-rendering/src/lib/assets.ts -index 3ea97af35b..a413a67b72 100644 ---- a/dotcom-rendering/src/lib/assets.ts -+++ b/dotcom-rendering/src/lib/assets.ts -@@ -5,8 +5,24 @@ import { BUILD_VARIANT, dcrJavascriptBundle } from '../../webpack/bundles'; - import type { ServerSideTests, Switches } from '../types/config'; - import { makeMemoizedFunction } from './memoize'; - --interface AssetHash { -- [key: string]: string; -+/** -+ * A single entry in a Vite manifest. -+ */ -+interface ViteManifestEntry { -+ file: string; -+ name?: string; -+ src?: string; -+ isEntry?: boolean; -+ isDynamicEntry?: boolean; -+ imports?: string[]; -+ dynamicImports?: string[]; -+} -+ -+/** -+ * The full Vite manifest: keys are source paths or internal chunk IDs. -+ */ -+interface ViteManifest { -+ [key: string]: ViteManifestEntry; - } - - export const BASE_URL_DEV = 'http://localhost:3030/'; -@@ -45,22 +61,23 @@ const isDev = process.env.NODE_ENV === 'development'; - - export const ASSET_ORIGIN = decideAssetOrigin(process.env.GU_STAGE, isDev); - --const isAssetHash = (manifest: unknown): manifest is AssetHash => -+const isViteManifest = (manifest: unknown): manifest is ViteManifest => - isObject(manifest) && -- Object.entries(manifest).every( -- ([key, value]) => isString(key) && isString(value), -+ Object.values(manifest).every( -+ (entry) => -+ isObject(entry) && isString((entry as ViteManifestEntry).file), - ); - --const getManifest = makeMemoizedFunction((path: string): AssetHash => { -+const getManifest = makeMemoizedFunction((path: string): ViteManifest => { - try { -- const assetHash: unknown = JSON.parse( -+ const parsed: unknown = JSON.parse( - readFileSync(resolve(__dirname, path), { encoding: 'utf-8' }), - ); -- if (!isAssetHash(assetHash)) { -- throw new Error('Not a valid AssetHash type'); -+ if (!isViteManifest(parsed)) { -+ throw new Error('Not a valid Vite manifest'); - } - -- return assetHash; -+ return parsed; - } catch (e) { - console.error('Could not load manifest in: ', path); - console.error('Some filename lookups will fail'); -@@ -79,6 +96,26 @@ type ManifestPath = `./manifest.${Build}.json`; - const getManifestPath = (build: Build): ManifestPath => - `./manifest.${build}.json`; - -+/** -+ * Maps each build to its entry point source path in the Vite manifest. -+ */ -+const entrySourcePaths: Record = { -+ 'client.web': 'src/client/main.web.ts', -+ 'client.web.variant': 'src/client/main.web.ts', -+ 'client.apps': 'src/client/main.apps.ts', -+ 'client.editionsCrossword': 'src/client/main.editionsCrossword.tsx', -+}; -+ -+/** -+ * Finds a manifest entry by its `name` field. -+ * Used for chunks like "frameworks" that aren't keyed by source path. -+ */ -+const findEntryByName = ( -+ manifest: ViteManifest, -+ name: string, -+): ViteManifestEntry | undefined => -+ Object.values(manifest).find((entry) => entry.name === name); -+ - export const getPathFromManifest = ( - build: Build, - filename: `${string}.js`, -@@ -95,13 +132,26 @@ export const getPathFromManifest = ( - } - - const manifest = getManifest(getManifestPath(build)); -- const filenameFromManifest = manifest[filename]; - -- if (!filenameFromManifest) { -+ // Strip .js extension to get the logical name (e.g. "index", "frameworks") -+ const logicalName = filename.replace(/\.js$/, ''); -+ -+ let entry: ViteManifestEntry | undefined; -+ -+ if (logicalName === 'index') { -+ // Look up the entry point by its source path -+ const sourcePath = entrySourcePaths[build]; -+ entry = manifest[sourcePath]; -+ } else { -+ // For non-entry chunks (e.g. "frameworks"), find by name -+ entry = findEntryByName(manifest, logicalName); -+ } -+ -+ if (!entry) { - throw new Error(`Missing manifest for ${filename}`); - } - -- return `${ASSET_ORIGIN}assets/${filenameFromManifest}`; -+ return `${ASSET_ORIGIN}assets/${entry.file}`; - }; - - /** -@@ -112,7 +162,7 @@ export const getPathFromManifest = ( - * and stripped query parameters. - */ - const getScriptRegex = (build: Build) => -- new RegExp(`assets\\/\\w+\\.${build}\\.(\\w{20}\\.)?js(\\?.*)?$`); -+ new RegExp(`assets\\/\\w+\\.${build}\\.(\\w{8}\\.)?js(\\?.*)?$`); - - export const WEB = getScriptRegex('client.web'); - export const WEB_VARIANT_SCRIPT = getScriptRegex('client.web.variant'); --- -2.50.1 (Apple Git-155) - - -From 90798a091345280e6ee481dc05f47da95ea821d8 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Mon, 6 Apr 2026 22:28:42 +0100 -Subject: [PATCH 04/17] Finalize Vite server SSR build config - -Simplify server.ts to use named re-export instead of webpack-hot-server-middleware -default export pattern. Add inlineDynamicImports to server config to produce a single -server.js file, preventing chunk collisions with client assets in dist/. Add default -export so server config works with vite build --config CLI. - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/src/server/server.ts | 8 ++------ - dotcom-rendering/vite/vite.config.server.ts | 9 ++++++++- - 2 files changed, 10 insertions(+), 7 deletions(-) - -diff --git a/dotcom-rendering/src/server/server.ts b/dotcom-rendering/src/server/server.ts -index de9ed3bda5..f20a595d2d 100644 ---- a/dotcom-rendering/src/server/server.ts -+++ b/dotcom-rendering/src/server/server.ts -@@ -1,12 +1,8 @@ --import { devServer } from './server.dev'; - import { prodServer } from './server.prod'; - --// this export is expected by webpack-hot-server-middleware --// not used in prod --// eslint-disable-next-line import/no-default-export -- it is what Webpack wants --export default devServer; -+// Re-export devServer for use by Vite's ssrLoadModule in dev -+export { devServer } from './server.dev'; - --// this is the actual production server - if (process.env.NODE_ENV === 'production') { - prodServer(); - } -diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts -index ae3316a258..bed78a62cb 100644 ---- a/dotcom-rendering/vite/vite.config.server.ts -+++ b/dotcom-rendering/vite/vite.config.server.ts -@@ -35,7 +35,10 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { - output: { - format: 'cjs', - entryFileNames: '[name].js', -- chunkFileNames: '[name].js', -+ // Produce a single server.js file (no code splitting), -+ // matching webpack's single-file output. This avoids -+ // server chunks colliding with client assets in dist/. -+ inlineDynamicImports: true, - }, - // webpack/bundles.js is CJS with module.exports β€” Rollup can't - // resolve named exports from it. Externalize so it's required at runtime. -@@ -57,3 +60,7 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { - external: DEV ? [/@aws-sdk\/.*/] : [], - }, - } satisfies UserConfig); -+ -+// Default export for `vite build --config` CLI usage -+// eslint-disable-next-line import/no-default-export -- required by Vite CLI -+export default serverConfig; --- -2.50.1 (Apple Git-155) - - -From 8f05ffaba0c4ad2224b1fea70beb844afa839241 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Tue, 7 Apr 2026 21:41:40 +0100 -Subject: [PATCH 05/17] Add Vite dev server with SSR middleware and CJS - compatibility - -Replace webpack-dev-server + webpack-hot-server-middleware with Vite's -dev server in middleware mode. Uses vite.ssrLoadModule() for instant -server-side hot reload without full restart. - -Add ssr-cjs-plugin to wrap CJS packages (e.g. @guardian/bridget) with -ESM wrappers for Vite 6's ESM-based SSR module runner. Fix CJS named -imports across the codebase (jsdom, log4js, sanitize-html, -compare-versions, @creditkarma/thrift-server-core) by switching to -default import + destructuring pattern. - -Co-Authored-By: Claude Opus 4.6 ---- - .../src/components/MultiByline.tsx | 4 +- - dotcom-rendering/src/lib/assets.ts | 3 +- - dotcom-rendering/src/lib/domUtils.ts | 4 +- - .../src/lib/thrift/nativeConnection.ts | 6 +- - dotcom-rendering/src/lib/thrift/protocols.ts | 4 +- - .../src/lib/useIsBridgetCompatible.ts | 1 + - dotcom-rendering/src/model/enhance-H2s.ts | 4 +- - .../src/model/enhance-blockquotes.ts | 4 +- - .../src/model/enhance-dividers.ts | 4 +- - dotcom-rendering/src/model/enhance-embeds.ts | 4 +- - dotcom-rendering/src/model/enhance-images.ts | 4 +- - .../src/model/enhance-numbered-lists.ts | 4 +- - .../src/model/enhanceProductElement.ts | 4 +- - .../src/model/enhanceTableOfContents.ts | 4 +- - dotcom-rendering/src/model/sanitise.ts | 4 +- - dotcom-rendering/src/server/lib/logging.ts | 4 +- - dotcom-rendering/vite/dev-server.ts | 121 ++++++++++++++++++ - dotcom-rendering/vite/ssr-cjs-plugin.ts | 78 +++++++++++ - 18 files changed, 245 insertions(+), 16 deletions(-) - create mode 100644 dotcom-rendering/vite/dev-server.ts - create mode 100644 dotcom-rendering/vite/ssr-cjs-plugin.ts - -diff --git a/dotcom-rendering/src/components/MultiByline.tsx b/dotcom-rendering/src/components/MultiByline.tsx -index fdf1b398b7..661d48aa99 100644 ---- a/dotcom-rendering/src/components/MultiByline.tsx -+++ b/dotcom-rendering/src/components/MultiByline.tsx -@@ -12,7 +12,9 @@ import { - textSansItalic28, - textSansItalic34, - } from '@guardian/source/foundations'; --import sanitise, { defaults } from 'sanitize-html'; -+import sanitise from 'sanitize-html'; -+ -+const { defaults } = sanitise; - import { - ArticleDesign, - ArticleDisplay, -diff --git a/dotcom-rendering/src/lib/assets.ts b/dotcom-rendering/src/lib/assets.ts -index a413a67b72..ba3c932023 100644 ---- a/dotcom-rendering/src/lib/assets.ts -+++ b/dotcom-rendering/src/lib/assets.ts -@@ -65,7 +65,8 @@ const isViteManifest = (manifest: unknown): manifest is ViteManifest => - isObject(manifest) && - Object.values(manifest).every( - (entry) => -- isObject(entry) && isString((entry as ViteManifestEntry).file), -+ isObject(entry) && -+ isString((entry as unknown as ViteManifestEntry).file), - ); - - const getManifest = makeMemoizedFunction((path: string): ViteManifest => { -diff --git a/dotcom-rendering/src/lib/domUtils.ts b/dotcom-rendering/src/lib/domUtils.ts -index 50cf100e1d..e8baf6e9c7 100644 ---- a/dotcom-rendering/src/lib/domUtils.ts -+++ b/dotcom-rendering/src/lib/domUtils.ts -@@ -1,4 +1,6 @@ --import { JSDOM } from 'jsdom'; -+import jsdom from 'jsdom'; -+ -+const { JSDOM } = jsdom; - - export const parseHtml = (html: string): DocumentFragment => - JSDOM.fragment(html); -diff --git a/dotcom-rendering/src/lib/thrift/nativeConnection.ts b/dotcom-rendering/src/lib/thrift/nativeConnection.ts -index 3b1ab0659f..b526c5a7df 100644 ---- a/dotcom-rendering/src/lib/thrift/nativeConnection.ts -+++ b/dotcom-rendering/src/lib/thrift/nativeConnection.ts -@@ -7,13 +7,15 @@ import type { - TransportType, - TTransport, - } from '@creditkarma/thrift-server-core'; --import { -+import thriftCore from '@creditkarma/thrift-server-core'; -+ -+const { - getProtocol, - getTransport, - TApplicationException, - TApplicationExceptionType, - ThriftConnection, --} from '@creditkarma/thrift-server-core'; -+} = thriftCore; - import { TMultiplexedProtocol } from './protocols'; - - declare global { -diff --git a/dotcom-rendering/src/lib/thrift/protocols.ts b/dotcom-rendering/src/lib/thrift/protocols.ts -index 8878b7f445..d7722aa0a7 100644 ---- a/dotcom-rendering/src/lib/thrift/protocols.ts -+++ b/dotcom-rendering/src/lib/thrift/protocols.ts -@@ -9,7 +9,9 @@ import type { - TTransport, - TType, - } from '@creditkarma/thrift-server-core'; --import { MessageType, TProtocol } from '@creditkarma/thrift-server-core'; -+import thriftCore from '@creditkarma/thrift-server-core'; -+ -+const { MessageType, TProtocol } = thriftCore; - - export abstract class TProtocolDecorator extends TProtocol { - private concreteProtocol: TProtocol; -diff --git a/dotcom-rendering/src/lib/useIsBridgetCompatible.ts b/dotcom-rendering/src/lib/useIsBridgetCompatible.ts -index 028c75793b..acad6af46e 100644 ---- a/dotcom-rendering/src/lib/useIsBridgetCompatible.ts -+++ b/dotcom-rendering/src/lib/useIsBridgetCompatible.ts -@@ -1,4 +1,5 @@ - import { compare } from 'compare-versions'; -+ - import { useEffect, useState } from 'react'; - import { getEnvironmentClient } from './bridgetApi'; - -diff --git a/dotcom-rendering/src/model/enhance-H2s.ts b/dotcom-rendering/src/model/enhance-H2s.ts -index 72ee2e0699..2c70258aac 100644 ---- a/dotcom-rendering/src/model/enhance-H2s.ts -+++ b/dotcom-rendering/src/model/enhance-H2s.ts -@@ -1,4 +1,6 @@ --import { JSDOM } from 'jsdom'; -+import jsdom from 'jsdom'; -+ -+const { JSDOM } = jsdom; - import type { FEElement } from '../types/content'; - import { isLegacyTableOfContents } from './isLegacyTableOfContents'; - -diff --git a/dotcom-rendering/src/model/enhance-blockquotes.ts b/dotcom-rendering/src/model/enhance-blockquotes.ts -index 86aaca47c4..8bf2d3f5ec 100644 ---- a/dotcom-rendering/src/model/enhance-blockquotes.ts -+++ b/dotcom-rendering/src/model/enhance-blockquotes.ts -@@ -1,4 +1,6 @@ --import { JSDOM } from 'jsdom'; -+import jsdom from 'jsdom'; -+ -+const { JSDOM } = jsdom; - import { ArticleDesign, type ArticleFormat } from '../lib/articleFormat'; - import type { BlockquoteBlockElement, FEElement } from '../types/content'; - -diff --git a/dotcom-rendering/src/model/enhance-dividers.ts b/dotcom-rendering/src/model/enhance-dividers.ts -index d66a615e17..b6ea977e0f 100644 ---- a/dotcom-rendering/src/model/enhance-dividers.ts -+++ b/dotcom-rendering/src/model/enhance-dividers.ts -@@ -1,4 +1,6 @@ --import { JSDOM } from 'jsdom'; -+import jsdom from 'jsdom'; -+ -+const { JSDOM } = jsdom; - import type { FEElement } from '../types/content'; - - const isDinkus = (element: FEElement): boolean => { -diff --git a/dotcom-rendering/src/model/enhance-embeds.ts b/dotcom-rendering/src/model/enhance-embeds.ts -index 1f21c83200..c163df5d53 100644 ---- a/dotcom-rendering/src/model/enhance-embeds.ts -+++ b/dotcom-rendering/src/model/enhance-embeds.ts -@@ -1,4 +1,6 @@ --import { JSDOM } from 'jsdom'; -+import jsdom from 'jsdom'; -+ -+const { JSDOM } = jsdom; - import type { FEElement } from '../types/content'; - - export const enhanceEmbeds = (elements: FEElement[]): FEElement[] => -diff --git a/dotcom-rendering/src/model/enhance-images.ts b/dotcom-rendering/src/model/enhance-images.ts -index 44024de18d..1fc3d341b8 100644 ---- a/dotcom-rendering/src/model/enhance-images.ts -+++ b/dotcom-rendering/src/model/enhance-images.ts -@@ -1,5 +1,7 @@ - import { isUndefined } from '@guardian/libs'; --import { JSDOM } from 'jsdom'; -+import jsdom from 'jsdom'; -+ -+const { JSDOM } = jsdom; - import { - ArticleDesign, - type ArticleFormat, -diff --git a/dotcom-rendering/src/model/enhance-numbered-lists.ts b/dotcom-rendering/src/model/enhance-numbered-lists.ts -index 1fab92a8d6..c0fc85d7eb 100644 ---- a/dotcom-rendering/src/model/enhance-numbered-lists.ts -+++ b/dotcom-rendering/src/model/enhance-numbered-lists.ts -@@ -1,5 +1,7 @@ - import { isUndefined } from '@guardian/libs'; --import { JSDOM } from 'jsdom'; -+import jsdom from 'jsdom'; -+ -+const { JSDOM } = jsdom; - import { ArticleDisplay, type ArticleFormat } from '../lib/articleFormat'; - import type { FEElement, StarRating, TextBlockElement } from '../types/content'; - -diff --git a/dotcom-rendering/src/model/enhanceProductElement.ts b/dotcom-rendering/src/model/enhanceProductElement.ts -index 1d0f8f91c2..ecaec36681 100644 ---- a/dotcom-rendering/src/model/enhanceProductElement.ts -+++ b/dotcom-rendering/src/model/enhanceProductElement.ts -@@ -1,4 +1,6 @@ --import { JSDOM } from 'jsdom'; -+import jsdom from 'jsdom'; -+ -+const { JSDOM } = jsdom; - import type { - FEElement, - ProductBlockElement, -diff --git a/dotcom-rendering/src/model/enhanceTableOfContents.ts b/dotcom-rendering/src/model/enhanceTableOfContents.ts -index 24b6b13446..f6643ff998 100644 ---- a/dotcom-rendering/src/model/enhanceTableOfContents.ts -+++ b/dotcom-rendering/src/model/enhanceTableOfContents.ts -@@ -1,4 +1,6 @@ --import { JSDOM } from 'jsdom'; -+import jsdom from 'jsdom'; -+ -+const { JSDOM } = jsdom; - import type { Block } from '../types/blocks'; - import type { - NumberedTitleBlockElement, -diff --git a/dotcom-rendering/src/model/sanitise.ts b/dotcom-rendering/src/model/sanitise.ts -index 8bc834d166..57c6c06cc4 100644 ---- a/dotcom-rendering/src/model/sanitise.ts -+++ b/dotcom-rendering/src/model/sanitise.ts -@@ -1,6 +1,8 @@ - import type { Config } from 'dompurify'; - import createDOMPurify from 'dompurify'; --import { JSDOM } from 'jsdom'; -+import jsdom from 'jsdom'; -+ -+const { JSDOM } = jsdom; - - const { window } = new JSDOM(''); - const DOMPurify = createDOMPurify(window); -diff --git a/dotcom-rendering/src/server/lib/logging.ts b/dotcom-rendering/src/server/lib/logging.ts -index e4616dc03e..8a08f31dd1 100644 ---- a/dotcom-rendering/src/server/lib/logging.ts -+++ b/dotcom-rendering/src/server/lib/logging.ts -@@ -1,7 +1,9 @@ - import path from 'node:path'; - import { isObject } from '@guardian/libs'; - import type { Configuration, Layout, LoggingEvent } from 'log4js'; --import { addLayout, configure, getLogger, shutdown } from 'log4js'; -+import log4js from 'log4js'; -+ -+const { addLayout, configure, getLogger, shutdown } = log4js; - import { type DCRLoggingStore, loggingStore } from './logging-store'; - - const logName = `dotcom-rendering.log`; -diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts -new file mode 100644 -index 0000000000..a77780c0ec ---- /dev/null -+++ b/dotcom-rendering/vite/dev-server.ts -@@ -0,0 +1,121 @@ -+/** -+ * Vite development server with SSR middleware. -+ * Replaces webpack-dev-server + webpack-hot-server-middleware. -+ * -+ * Usage: -+ * NODE_ENV=development node --import tsx vite/dev-server.ts -+ * -+ * Or via makefile: -+ * make vite-dev -+ */ -+ -+import { readFileSync } from 'node:fs'; -+import { resolve } from 'node:path'; -+import express from 'express'; -+import { createServer as createViteServer, mergeConfig } from 'vite'; -+import svgr from 'vite-plugin-svgr'; -+import { sharedConfig } from './vite.config.shared'; -+import { ssrCjsPlugin } from './ssr-cjs-plugin'; -+ -+const port = 3030; -+const root = process.cwd(); -+ -+async function start() { -+ const app = express(); -+ -+ // CJS packages in noExternal that need ESM wrapping for Vite 6's -+ // SSR module runner. Only packages using require()/module.exports -+ // that are matched by ssr.noExternal need to be listed here. -+ const cjsPackages = ['@guardian/bridget']; -+ -+ // Create Vite server in middleware mode. -+ // Handles client-side module transforms, HMR, and SSR module loading. -+ const devConfig = mergeConfig(sharedConfig, { -+ plugins: [ -+ svgr({ -+ svgrOptions: { svgo: false }, -+ }), -+ ssrCjsPlugin(cjsPackages), -+ ], -+ resolve: { -+ alias: { -+ // Client-side Preact aliasing for browser modules -+ react: 'preact/compat', -+ 'react-dom/test-utils': 'preact/test-utils', -+ 'react-dom': 'preact/compat', -+ }, -+ }, -+ server: { -+ middlewareMode: true, -+ hmr: true, -+ }, -+ appType: 'custom', -+ // Serve client modules from /assets/ to match production asset paths -+ base: '/assets/', -+ }); -+ // SSR config must be set after mergeConfig to avoid being overwritten. -+ devConfig.ssr = { -+ // Bundle ESM-only packages that can't be require()'d by Node. -+ noExternal: [/@guardian\//, 'screenfull', 'valibot'], -+ }; -+ const vite = await createViteServer(devConfig); -+ -+ // Vite's connect middleware handles HMR websocket, module transforms, -+ // and serves client-side files from /assets/ -+ app.use(vite.middlewares); -+ -+ // Parse JSON request bodies (used by POST routes for rendering) -+ app.use(express.json({ limit: '10mb' })); -+ -+ // Serve static files (favicons, etc.) -+ app.use('/static/frontend', express.static(resolve(root, 'src', 'static'))); -+ -+ // Dev landing page with links to test content -+ const devIndexHtml = readFileSync( -+ resolve(root, 'src', 'server', 'dev-index.html'), -+ 'utf-8', -+ ); -+ app.get('/', (_req, res) => { -+ res.type('html').send(devIndexHtml); -+ }); -+ -+ // CORS: allow localhost cross-origin requests for dev -+ app.use((req, res, next) => { -+ const hostname = process.env.HOSTNAME ?? 'localhost'; -+ if (req.hostname === hostname && req.headers.origin) { -+ res.setHeader('Access-Control-Allow-Origin', req.headers.origin); -+ } -+ next(); -+ }); -+ -+ // SSR: load server module on each request via Vite's ssrLoadModule. -+ // This re-evaluates the module when files change, providing instant -+ // server-side hot reload without a full restart. -+ app.use(async (req, res, next) => { -+ try { -+ const { devServer } = (await vite.ssrLoadModule( -+ './src/server/server.ts', -+ )) as { -+ devServer: () => express.Handler; -+ }; -+ devServer()(req, res, next); -+ } catch (e) { -+ // Let Vite fix the stack trace for SSR errors -+ if (e instanceof Error) { -+ vite.ssrFixStacktrace(e); -+ } -+ next(e); -+ } -+ }); -+ -+ app.listen(port, () => { -+ console.log( -+ `\n Vite DEV server running on http://localhost:${port}\n`, -+ ); -+ }); -+} -+ -+start().catch((err) => { -+ console.error('Failed to start dev server:', err); -+ process.exit(1); -+}); -diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.ts b/dotcom-rendering/vite/ssr-cjs-plugin.ts -new file mode 100644 -index 0000000000..b33a492bc2 ---- /dev/null -+++ b/dotcom-rendering/vite/ssr-cjs-plugin.ts -@@ -0,0 +1,78 @@ -+/** -+ * Vite plugin that wraps CJS packages for SSR compatibility. -+ * -+ * Vite 6's SSR module runner evaluates all modules as ESM, -+ * which breaks CJS packages that use `require()` or `module.exports`. -+ * This plugin wraps specified CJS packages with ESM wrappers -+ * using createRequire(). -+ * -+ * Only works for packages in ssr.noExternal (Vite skips plugin -+ * hooks for external packages). -+ */ -+import { createRequire } from 'node:module'; -+import { pathToFileURL } from 'node:url'; -+import type { Plugin } from 'vite'; -+ -+const nodeRequire = createRequire(pathToFileURL(__filename).href); -+ -+/** -+ * Creates a Vite plugin that wraps specified CJS packages -+ * for Vite 6's ESM-based SSR module runner. -+ * -+ * @param packages - Package names or prefixes to wrap (e.g. '@guardian/bridget') -+ */ -+export function ssrCjsPlugin(packages: string[]): Plugin { -+ const PREFIX = '\0cjs-compat:'; -+ -+ function shouldWrap(id: string): boolean { -+ if ( -+ id.startsWith('.') || -+ id.startsWith('/') || -+ id.startsWith('node:') -+ ) { -+ return false; -+ } -+ return packages.some((p) => id === p || id.startsWith(p + '/')); -+ } -+ -+ return { -+ name: 'ssr-cjs-compat', -+ enforce: 'pre', -+ resolveId(id) { -+ if (shouldWrap(id)) { -+ return PREFIX + id; -+ } -+ }, -+ load(id) { -+ if (!id.startsWith(PREFIX)) return; -+ const pkg = id.slice(PREFIX.length); -+ -+ // Introspect the CJS package's exports -+ let exportNames: string[] = []; -+ try { -+ const mod = nodeRequire(pkg) as Record; -+ exportNames = Object.keys(mod).filter( -+ (k) => -+ k !== 'default' && -+ k !== '__esModule' && -+ /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(k), -+ ); -+ } catch { -+ // If require fails, just provide a default export -+ } -+ -+ // Generate an ESM module that re-exports CJS members -+ const lines = [ -+ `import { createRequire } from 'node:module';`, -+ `const __require = createRequire(import.meta.url);`, -+ `const mod = __require('${pkg}');`, -+ `export default mod;`, -+ ...exportNames.map( -+ (name) => `export const ${name} = mod['${name}'];`, -+ ), -+ ]; -+ -+ return lines.join('\n'); -+ }, -+ }; -+} --- -2.50.1 (Apple Git-155) - - -From c776377d33ce49def4d7a63c287a24acad0f0b8d Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Thu, 9 Apr 2026 22:39:35 +0100 -Subject: [PATCH 06/17] Migrate Storybook to Vite, remove webpack config and - dependencies - -- Replace @storybook/react-webpack5 with @storybook/react-vite -- Convert webpackFinal to viteFinal in .storybook/main.ts -- Remove @storybook/addon-webpack5-compiler-swc -- Remove all webpack magic comments (webpackChunkName, webpackMode) - from dynamic imports across the codebase -- Delete webpack config files (webpack.config.*.js, svg.cjs, .swcrc.json, @types/) -- Remove webpack and related dependencies from package.json: - webpack, webpack-cli, webpack-dev-server, webpack-dev-middleware, - webpack-hot-middleware, webpack-hot-server-middleware, webpack-merge, - webpack-manifest-plugin, webpack-assets-manifest, webpack-messages, - webpack-node-externals, webpack-bundle-analyzer, webpack-sources, - @svgr/webpack, swc-loader, css-loader, to-string-loader, - dynamic-import-polyfill, @guardian/shimport - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/.storybook/main.ts | 157 ++++----------- - dotcom-rendering/.storybook/preview.ts | 2 +- - dotcom-rendering/package.json | 25 +-- - dotcom-rendering/src/client/adaptiveSite.ts | 4 +- - dotcom-rendering/src/client/bootCmp.ts | 4 +- - .../src/client/islands/islandRegistry.ts | 12 +- - dotcom-rendering/src/client/ophan/ophan.ts | 4 +- - .../src/components/LiveBlogEpic.island.tsx | 4 +- - .../components/ReaderRevenueDev.island.tsx | 4 +- - .../gates/alternative-wording-control.tsx | 4 +- - .../alternative-wording-guardian-live.tsx | 12 +- - .../alternative-wording-saturday-edition.tsx | 12 +- - .../SignInGate/gates/fake-social-variant.tsx | 4 +- - .../gates/main-mandatory-variant.tsx | 4 +- - .../SignInGate/gates/main-variant.tsx | 16 +- - .../src/components/SlotBodyEnd/BrazeEpic.tsx | 4 +- - .../SlotBodyEnd/ReaderRevenueEpic.tsx | 4 +- - .../StickyBottomBanner/BrazeBanner.tsx | 4 +- - .../ReaderRevenueBanner.tsx | 6 +- - .../src/components/TopBarSupport.island.tsx | 6 +- - .../src/lib/braze/initialiseBraze.ts | 2 +- - dotcom-rendering/src/lib/thrift/protocols.ts | 4 +- - dotcom-rendering/webpack/.swcrc.json | 18 -- - .../webpack-filter-warnings-plugin/index.d.ts | 10 - - .../@types/webpack-messages/index.d.ts | 20 -- - dotcom-rendering/webpack/svg.cjs | 15 -- - .../webpack/webpack.config.client.js | 184 ------------------ - .../webpack/webpack.config.dev-server.js | 81 -------- - dotcom-rendering/webpack/webpack.config.js | 130 ------------- - .../webpack/webpack.config.server.js | 87 --------- - 30 files changed, 83 insertions(+), 760 deletions(-) - delete mode 100644 dotcom-rendering/webpack/.swcrc.json - delete mode 100644 dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts - delete mode 100644 dotcom-rendering/webpack/@types/webpack-messages/index.d.ts - delete mode 100644 dotcom-rendering/webpack/svg.cjs - delete mode 100644 dotcom-rendering/webpack/webpack.config.client.js - delete mode 100644 dotcom-rendering/webpack/webpack.config.dev-server.js - delete mode 100644 dotcom-rendering/webpack/webpack.config.js - delete mode 100644 dotcom-rendering/webpack/webpack.config.server.js - -diff --git a/dotcom-rendering/.storybook/main.ts b/dotcom-rendering/.storybook/main.ts -index 420f7a2c41..281949a929 100644 ---- a/dotcom-rendering/.storybook/main.ts -+++ b/dotcom-rendering/.storybook/main.ts -@@ -1,22 +1,13 @@ --import { defineMain } from '@storybook/react-webpack5/node'; -+import { defineMain } from '@storybook/react-vite/node'; - import path from 'node:path'; --import { createRequire } from 'node:module'; --import webpack from 'webpack'; --import { saveStories } from '../scripts/gen-stories/get-stories.mjs'; --import type { StorybookConfig } from '@storybook/react-webpack5'; --import { svgr } from '../webpack/svg.cjs'; - import process from 'node:process'; -+import { saveStories } from '../scripts/gen-stories/get-stories.mjs'; -+import type { StorybookConfig } from '@storybook/react-vite'; -+import svgr from 'vite-plugin-svgr'; - - // ESM equivalent of __dirname - const __dirname = import.meta.dirname; - --// Import CommonJS webpack config in ESM context --const require = createRequire(import.meta.url); --const { -- transpileExclude, -- getLoaders, --} = require('../webpack/webpack.config.client.js'); -- - // Generate dynamic Card and Layout stories - saveStories(); - -@@ -40,41 +31,48 @@ export default defineMain({ - { from: '../src/static', to: '/static/frontend/' }, - ], - -- addons: [ -- '@storybook/addon-webpack5-compiler-swc', -- '@storybook/addon-docs', -- '@storybook/addon-a11y', -- ], -+ addons: ['@storybook/addon-docs', '@storybook/addon-a11y'], - -- webpackFinal: async (config) => { -- // Get project specific webpack options -- config = webpackConfig(config); -+ viteFinal: async (config) => { -+ config.plugins ??= []; -+ config.plugins.push( -+ svgr({ -+ svgrOptions: { svgo: false }, -+ }), -+ ); -+ -+ config.define ??= {}; -+ config.define['process.env'] = JSON.stringify({ -+ SDC_URL: process.env.SDC_URL, -+ HOSTNAME: process.env.HOSTNAME, -+ }); - - config.resolve ??= {}; -+ config.resolve.alias = { -+ ...config.resolve.alias, -+ -+ Buffer: 'buffer', -+ react: 'react', -+ 'react-dom': 'react-dom', -+ -+ // Mock JSDOM for storybook - it relies on native node.js packages -+ jsdom$: path.resolve(__dirname, './mocks/jsdom.ts'), -+ -+ // log4js tries to call "fs" in storybook -- we can ignore it -+ [`${path.resolve(__dirname, '../src/server/lib/logging')}$`]: -+ path.resolve(__dirname, './mocks/log4js.ts'), -+ -+ // Mock BridgetApi for storybook -+ [`${path.resolve(__dirname, '../src/lib/bridgetApi')}$`]: -+ path.resolve(__dirname, './mocks/bridgetApi.ts'), -+ -+ // Mock identity auth frontend to prevent Storybook components from hanging in Pending -+ '@guardian/identity-auth-frontend': path.resolve( -+ __dirname, -+ './mocks/identityAuthFrontend.ts', -+ ), -+ }; - -- // Global options for webpack -- config.resolve.extensions?.push('.ts', '.tsx'); -- -- config.resolve.fallback ??= {}; -- // clean-css will try to import these packages -- config.resolve.fallback['http'] = false; -- config.resolve.fallback['https'] = false; -- config.resolve.fallback['os'] = false; -- -- // Required as otherwise 'process' will not be defined when included on its own (without .env) -- // e.g process?.env?.SOME_VAR -- config.plugins?.push( -- new webpack.DefinePlugin({ -- 'process.env': JSON.stringify({ -- SDC_URL: process.env.SDC_URL, -- HOSTNAME: process.env.HOSTNAME, -- }), -- }), -- // We rely on Buffer for our bridget thrift client -- new webpack.ProvidePlugin({ -- Buffer: ['buffer', 'Buffer'], -- }), -- ); - return config; - }, - -@@ -86,7 +84,7 @@ export default defineMain({ - }), - - framework: { -- name: '@storybook/react-webpack5', -+ name: '@storybook/react-vite', - options: {}, - }, - -@@ -94,72 +92,3 @@ export default defineMain({ - reactDocgen: 'react-docgen', - }, - }); -- --/** the webpack.Configuration type from Storybook */ --type Configuration = Parameters< -- NonNullable -->[0]; -- --const webpackConfig = (config: Configuration) => { -- const rules = config.module?.rules ?? []; -- -- config.resolve ??= {}; -- -- config.resolve.alias = { -- ...config.resolve?.alias, -- -- Buffer: 'buffer', -- react: 'react', -- 'react-dom': 'react-dom', -- -- // Mock JSDOM for storybook - it relies on native node.js packages -- // Allows us to use enhancers in stories for better testing of components & full articles -- jsdom$: path.resolve(__dirname, './mocks/jsdom.ts'), -- -- // log4js tries to call "fs" in storybook -- we can ignore it -- [`${path.resolve(__dirname, '../src/server/lib/logging')}$`]: -- path.resolve(__dirname, './mocks/log4js.ts'), -- -- // Mock BridgetApi for storybook -- [`${path.resolve(__dirname, '../src/lib/bridgetApi')}$`]: path.resolve( -- __dirname, -- './mocks/bridgetApi.ts', -- ), -- -- // Mock identity auth frontend to prevent Storybook components from hanging in Pending -- '@guardian/identity-auth-frontend': path.resolve( -- __dirname, -- './mocks/identityAuthFrontend.ts', -- ), -- }; -- -- const webpackLoaders = getLoaders('client.web'); -- -- // https://swc.rs/docs/usage/swc-loader#with-babel-loader -- if (webpackLoaders[0].loader.startsWith('swc')) { -- webpackLoaders[0].options.parseMap = true; -- } -- -- // Support typescript in Storybook -- // https://storybook.js.org/docs/configurations/typescript-config/ -- rules.push({ -- test: /\.[jt]sx?|mjs$/, -- include: [path.resolve(__dirname, '../')], -- exclude: transpileExclude, -- use: webpackLoaders, -- }); -- -- // modify storybook's file-loader rule to avoid conflicts with our svg -- const fileLoaderRule = rules.find((rule) => { -- return String(rule?.test).includes('svg'); -- }); -- fileLoaderRule && -- typeof fileLoaderRule !== 'string' && -- (fileLoaderRule.exclude = /\.svg$/); -- rules.push(svgr); -- config.resolve.modules = [ -- ...((config && config.resolve && config.resolve.modules) || []), -- ]; -- -- return config; --}; -diff --git a/dotcom-rendering/.storybook/preview.ts b/dotcom-rendering/.storybook/preview.ts -index 814527d8b2..44a313c476 100644 ---- a/dotcom-rendering/.storybook/preview.ts -+++ b/dotcom-rendering/.storybook/preview.ts -@@ -15,7 +15,7 @@ import { mockFetch } from '../src/lib/mockRESTCalls'; - import { setABTests } from '../src/lib/useAB'; - import { ConfigContextDecorator } from './decorators/configContextDecorator'; - import { sb } from 'storybook/test'; --import { definePreview } from '@storybook/react-webpack5'; -+import { definePreview } from '@storybook/react-vite'; - import { - globalColourScheme, - globalColourSchemeDecorator, -diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json -index b40ca0245f..2c986ccdb3 100644 ---- a/dotcom-rendering/package.json -+++ b/dotcom-rendering/package.json -@@ -40,7 +40,6 @@ - "@guardian/libs": "31.0.0", - "@guardian/ophan-tracker-js": "2.8.0", - "@guardian/react-crossword": "11.1.0", -- "@guardian/shimport": "1.0.2", - "@guardian/source": "11.3.0", - "@guardian/source-development-kitchen": "18.1.1", - "@guardian/support-dotcom-components": "8.4.2", -@@ -49,9 +48,7 @@ - "@sentry/browser": "10.39.0", - "@storybook/addon-a11y": "10.3.3", - "@storybook/addon-docs": "10.3.3", -- "@storybook/addon-webpack5-compiler-swc": "4.0.3", -- "@storybook/react-webpack5": "10.3.3", -- "@svgr/webpack": "8.1.0", -+ "@storybook/react-vite": "10.3.3", - "@swc/cli": "0.7.8", - "@swc/core": "1.13.5", - "@swc/jest": "0.2.39", -@@ -84,9 +81,6 @@ - "@types/semver": "7.5.6", - "@types/trusted-types": "2.0.7", - "@types/twitter-for-web": "0.0.6", -- "@types/webpack-bundle-analyzer": "4.7.0", -- "@types/webpack-env": "1.18.8", -- "@types/webpack-node-externals": "3.0.4", - "@types/youtube": "0.0.50", - "ajv": "8.18.0", - "ajv-formats": "2.1.1", -@@ -100,9 +94,7 @@ - "compression": "1.7.4", - "constructs": "10.6.0", - "cpy": "11.0.0", -- "css-loader": "7.1.2", - "dompurify": "3.2.4", -- "dynamic-import-polyfill": "0.1.1", - "eslint": "8.57.1", - "eslint-plugin-custom-elements": "0.0.8", - "eslint-plugin-jsx-a11y": "6.7.1", -@@ -145,9 +137,7 @@ - "storybook": "10.3.3", - "stylelint": "16.26.1", - "stylelint-config-recommended": "14.0.0", -- "swc-loader": "0.2.6", - "swr": "1.3.0", -- "to-string-loader": "1.2.0", - "trusted-types": "2.0.0", - "ts-unused-exports": "10.1.0", - "tslib": "2.6.2", -@@ -159,19 +149,6 @@ - "url": "0.11.4", - "valibot": "0.28.1", - "web-vitals": "4.2.3", -- "webpack": "5.104.1", -- "webpack-assets-manifest": "6.3.0", -- "webpack-bundle-analyzer": "4.10.2", -- "webpack-cli": "6.0.1", -- "webpack-dev-middleware": "7.4.5", -- "webpack-dev-server": "5.2.2", -- "webpack-hot-middleware": "2.26.1", -- "webpack-hot-server-middleware": "0.6.1", -- "webpack-manifest-plugin": "6.0.1", -- "webpack-merge": "6.0.1", -- "webpack-messages": "2.0.4", -- "webpack-node-externals": "3.0.0", -- "webpack-sources": "3.3.3", - "zod": "4.1.12" - }, - "devDependencies": { -diff --git a/dotcom-rendering/src/client/adaptiveSite.ts b/dotcom-rendering/src/client/adaptiveSite.ts -index 6f86e9657a..4f6e59aaad 100644 ---- a/dotcom-rendering/src/client/adaptiveSite.ts -+++ b/dotcom-rendering/src/client/adaptiveSite.ts -@@ -30,9 +30,7 @@ export const shouldAdapt = async (): Promise => { - } - - // only evaluate this code if we want to adapt in response to page performance -- const { isPerformingPoorly } = await import( -- /* webpackMode: "eager" */ './poorPerformanceMonitoring' -- ); -+ const { isPerformingPoorly } = await import('./poorPerformanceMonitoring'); - - return isPerformingPoorly(); - }; -diff --git a/dotcom-rendering/src/client/bootCmp.ts b/dotcom-rendering/src/client/bootCmp.ts -index a4f391ca5f..e47a7833b1 100644 ---- a/dotcom-rendering/src/client/bootCmp.ts -+++ b/dotcom-rendering/src/client/bootCmp.ts -@@ -41,9 +41,7 @@ const initialiseCmp = async () => { - * as a separate chunk. @see {PrivacySettingsLink.island.tsx} - */ - const eagerlyImportPrivacySettingsLinkIsland = () => -- import( -- /* webpackMode: 'eager' */ '../components/PrivacySettingsLink.island' -- ); -+ import('../components/PrivacySettingsLink.island'); - - /** - * Keep this file in sync with CONSENT_TIMING in static/src/javascripts/boot.js in frontend -diff --git a/dotcom-rendering/src/client/islands/islandRegistry.ts b/dotcom-rendering/src/client/islands/islandRegistry.ts -index 6e8524d5cb..b2e5af7d6d 100644 ---- a/dotcom-rendering/src/client/islands/islandRegistry.ts -+++ b/dotcom-rendering/src/client/islands/islandRegistry.ts -@@ -2,16 +2,8 @@ - * Static registry of all island components, built at compile time - * via Vite's import.meta.glob. - * -- * Each matched file becomes a lazy chunk (eager: false), exactly -- * matching the previous webpack behaviour where each island was -- * a separate dynamically-loaded chunk. -- * -- * Replaces the webpack magic comments in doHydration.tsx: -- * import( -- * /* webpackInclude: /\.island\.tsx$/ *​/ -- * /* webpackChunkName: "[request]" *​/ -- * `../../components/${name}.island` -- * ) -+ * Each matched file becomes a lazy chunk (eager: false), so each -+ * island is a separate dynamically-loaded chunk. - */ - const islandModules = import.meta.glob>( - '../../components/*.island.tsx', -diff --git a/dotcom-rendering/src/client/ophan/ophan.ts b/dotcom-rendering/src/client/ophan/ophan.ts -index d7259ee1b8..3c72a3305e 100644 ---- a/dotcom-rendering/src/client/ophan/ophan.ts -+++ b/dotcom-rendering/src/client/ophan/ophan.ts -@@ -48,9 +48,7 @@ export const getOphan = async ( - } - - // We've taken '@guardian/ophan-tracker-js' out of the apps client bundle (made it external in webpack) because we don't ever expect this method to be called. Tracking in apps is done natively. -- const { default: ophan } = await import( -- /* webpackMode: "eager" */ '@guardian/ophan-tracker-js' -- ); -+ const { default: ophan } = await import('@guardian/ophan-tracker-js'); - - const record: (typeof ophan)['record'] = (event, callback) => { - ophan.record(event, callback); -diff --git a/dotcom-rendering/src/components/LiveBlogEpic.island.tsx b/dotcom-rendering/src/components/LiveBlogEpic.island.tsx -index 62106de0d7..e16bd30455 100644 ---- a/dotcom-rendering/src/components/LiveBlogEpic.island.tsx -+++ b/dotcom-rendering/src/components/LiveBlogEpic.island.tsx -@@ -41,9 +41,7 @@ const useEpic = ({ name }: { name: string }) => { - const [Epic, setEpic] = useState>(); - - useEffect(() => { -- import( -- /* webpackChunkName: "contributions-liveblog-epic" */ `./marketing/epics/ContributionsLiveblogEpic` -- ) -+ import(`./marketing/epics/ContributionsLiveblogEpic`) - .then((epicModule) => { - setEpic(() => epicModule.ContributionsLiveblogEpic); - }) -diff --git a/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx b/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx -index f5cf94bb4c..319eefa98e 100644 ---- a/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx -+++ b/dotcom-rendering/src/components/ReaderRevenueDev.island.tsx -@@ -11,9 +11,7 @@ export const ReaderRevenueDev = ({ shouldHideReaderRevenue }: Props) => { - const loadAndRun = - (key: K) => - (asExistingSupporter: boolean) => -- import( -- /* webpackChunkName: "readerRevenueDevUtils" */ '../lib/readerRevenueDevUtils' -- ) -+ import('../lib/readerRevenueDevUtils') - .then((utils) => - utils[key]( - asExistingSupporter, -diff --git a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx -index 3cb0b3aba7..8fc31966fb 100644 ---- a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx -+++ b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-control.tsx -@@ -9,9 +9,7 @@ const SignInGateMain = React.lazy(() => { - 'identity', - 'SignInGateMain', - ); -- return import( -- /* webpackChunkName: "SignInGateMain" */ '../gateDesigns/SignInGateMain' -- ).then((module) => { -+ return import('../gateDesigns/SignInGateMain').then((module) => { - endPerformanceMeasure(); - return { default: module.SignInGateMain }; - }); -diff --git a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx -index 030d649cac..d80b569d31 100644 ---- a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx -+++ b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-guardian-live.tsx -@@ -9,12 +9,12 @@ const SignInGateCustomizableText = React.lazy(() => { - 'identity', - 'SignInGateCustomizableText', - ); -- return import( -- /* webpackChunkName: "SignInGateCustomizableText" */ '../gateDesigns/SignInGateCustomizableText' -- ).then((module) => { -- endPerformanceMeasure(); -- return { default: module.SignInGateCustomizableText }; -- }); -+ return import('../gateDesigns/SignInGateCustomizableText').then( -+ (module) => { -+ endPerformanceMeasure(); -+ return { default: module.SignInGateCustomizableText }; -+ }, -+ ); - }); - - export const signInGateComponent: SignInGateComponent = { -diff --git a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx -index f0a3510d87..3dba5cbe84 100644 ---- a/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx -+++ b/dotcom-rendering/src/components/SignInGate/gates/alternative-wording-saturday-edition.tsx -@@ -9,12 +9,12 @@ const SignInGateCustomizableText = React.lazy(() => { - 'identity', - 'SignInGateCustomizableText', - ); -- return import( -- /* webpackChunkName: "SignInGateCustomizableText" */ '../gateDesigns/SignInGateCustomizableText' -- ).then((module) => { -- endPerformanceMeasure(); -- return { default: module.SignInGateCustomizableText }; -- }); -+ return import('../gateDesigns/SignInGateCustomizableText').then( -+ (module) => { -+ endPerformanceMeasure(); -+ return { default: module.SignInGateCustomizableText }; -+ }, -+ ); - }); - - export const signInGateComponent: SignInGateComponent = { -diff --git a/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx b/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx -index 43bbf6a421..094e562d18 100644 ---- a/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx -+++ b/dotcom-rendering/src/components/SignInGate/gates/fake-social-variant.tsx -@@ -10,9 +10,7 @@ const SignInGateFakeSocial = React.lazy(() => { - 'SignInGateFakeSocial', - ); - -- return import( -- /* webpackChunkName: "SignInGateFakeSocial" */ '../gateDesigns/SignInGateFakeSocial' -- ).then((module) => { -+ return import('../gateDesigns/SignInGateFakeSocial').then((module) => { - endPerformanceMeasure(); - return { default: module.SignInGateFakeSocial }; - }); -diff --git a/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx b/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx -index cdc046d69f..18ba15a2d8 100644 ---- a/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx -+++ b/dotcom-rendering/src/components/SignInGate/gates/main-mandatory-variant.tsx -@@ -9,9 +9,7 @@ const SignInGateMain = React.lazy(() => { - 'identity', - 'SignInGateMain', - ); -- return import( -- /* webpackChunkName: "SignInGateMain" */ '../gateDesigns/SignInGateMain' -- ).then((module) => { -+ return import('../gateDesigns/SignInGateMain').then((module) => { - endPerformanceMeasure(); - return { default: module.SignInGateMain }; - }); -diff --git a/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx b/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx -index badaa41499..f3ea9b7343 100644 ---- a/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx -+++ b/dotcom-rendering/src/components/SignInGate/gates/main-variant.tsx -@@ -9,9 +9,7 @@ const SignInGateMain = React.lazy(() => { - 'identity', - 'SignInGateMain', - ); -- return import( -- /* webpackChunkName: "SignInGateMain" */ '../gateDesigns/SignInGateMain' -- ).then((module) => { -+ return import('../gateDesigns/SignInGateMain').then((module) => { - endPerformanceMeasure(); - return { default: module.SignInGateMain }; - }); -@@ -22,12 +20,12 @@ const SignInGateMainCheckoutComplete = React.lazy(() => { - 'identity', - 'SignInGateMainCheckoutComplete', - ); -- return import( -- /* webpackChunkName: "SignInGateMainCheckoutComplete" */ '../gateDesigns/SignInGateMainCheckoutComplete' -- ).then((module) => { -- endPerformanceMeasure(); -- return { default: module.SignInGateMainCheckoutComplete }; -- }); -+ return import('../gateDesigns/SignInGateMainCheckoutComplete').then( -+ (module) => { -+ endPerformanceMeasure(); -+ return { default: module.SignInGateMainCheckoutComplete }; -+ }, -+ ); - }); - - /** -diff --git a/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx b/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx -index 6aab3ee4ff..9d4e67201b 100644 ---- a/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx -+++ b/dotcom-rendering/src/components/SlotBodyEnd/BrazeEpic.tsx -@@ -195,9 +195,7 @@ export const MaybeBrazeEpic = ({ meta, countryCode, idApiUrl }: EpicConfig) => { - useState(); - - useEffect(() => { -- import( -- /* webpackChunkName: "guardian-braze-components-end-of-article" */ '@guardian/braze-components/end-of-article' -- ) -+ import('@guardian/braze-components/end-of-article') - .then((module) => { - setBrazeComponent(() => module.BrazeEndOfArticleComponent); - }) -diff --git a/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx b/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx -index 5c8bc8bb02..e98ca95cde 100644 ---- a/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx -+++ b/dotcom-rendering/src/components/SlotBodyEnd/ReaderRevenueEpic.tsx -@@ -172,9 +172,7 @@ export const ReaderRevenueEpic = ({ props }: ModuleData) => { - 'contributions-epic-module', - ); - -- import( -- /* webpackChunkName: "contributions-epic" */ `../marketing/epics/ContributionsEpic` -- ) -+ import(`../marketing/epics/ContributionsEpic`) - .then((epicModule) => { - endPerformanceMeasure(); - setEpic(() => epicModule.ContributionsEpic); // useState requires functions to be wrapped -diff --git a/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx b/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx -index bfa6a6f34a..8e537426c1 100644 ---- a/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx -+++ b/dotcom-rendering/src/components/StickyBottomBanner/BrazeBanner.tsx -@@ -187,9 +187,7 @@ export const BrazeBanner = ({ meta, idApiUrl }: Props) => { - useState(); - - useEffect(() => { -- import( -- /* webpackChunkName: "guardian-braze-components-banner" */ '@guardian/braze-components/banner' -- ) -+ import('@guardian/braze-components/banner') - .then((module) => { - setBrazeComponent(() => module.BrazeBannerComponent); - }) -diff --git a/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx b/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx -index 15a83bd012..5cc6028cee 100644 ---- a/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx -+++ b/dotcom-rendering/src/components/StickyBottomBanner/ReaderRevenueBanner.tsx -@@ -316,10 +316,8 @@ export const ReaderRevenueBanner = ({ - - useEffect(() => { - (name === 'SignInPromptBanner' -- ? /* webpackChunkName: "sign-in-prompt-banner" */ -- import(`../marketing/banners/signInPrompt/SignInPromptBanner`) -- : /* webpackChunkName: "designable-banner-v2" */ -- import(`../marketing/banners/designableBanner/v2/Banner`) -+ ? import(`../marketing/banners/signInPrompt/SignInPromptBanner`) -+ : import(`../marketing/banners/designableBanner/v2/Banner`) - ) - .then((bannerModule: { [key: string]: React.ElementType }) => { - setBanner(() => bannerModule[name] ?? null); -diff --git a/dotcom-rendering/src/components/TopBarSupport.island.tsx b/dotcom-rendering/src/components/TopBarSupport.island.tsx -index f1d76407bd..4659198f91 100644 ---- a/dotcom-rendering/src/components/TopBarSupport.island.tsx -+++ b/dotcom-rendering/src/components/TopBarSupport.island.tsx -@@ -106,10 +106,8 @@ const ReaderRevenueLinksRemote = ({ - - return ( - module.name === 'SignInPromptHeader' -- ? /* webpackChunkName: "sign-in-prompt-header" */ -- import('./marketing/header/SignInPromptHeader') -- : /* webpackChunkName: "header" */ -- import('./marketing/header/Header') -+ ? import('./marketing/header/SignInPromptHeader') -+ : import('./marketing/header/Header') - ).then( - (headerModule: { - [key: string]: React.ElementType; -diff --git a/dotcom-rendering/src/lib/braze/initialiseBraze.ts b/dotcom-rendering/src/lib/braze/initialiseBraze.ts -index ab56e38d36..b389b8af08 100644 ---- a/dotcom-rendering/src/lib/braze/initialiseBraze.ts -+++ b/dotcom-rendering/src/lib/braze/initialiseBraze.ts -@@ -16,7 +16,7 @@ const SDK_OPTIONS: braze.InitializationOptions = { - - const initialiseBraze = async (apiKey: string): Promise => { - const importedBraze = (await import( -- /* webpackChunkName: "braze-web-sdk-core" */ '@braze/web-sdk' -+ '@braze/web-sdk' - )) as unknown as typeof braze; - - importedBraze.setLogger((message) => log('tx', message)); -diff --git a/dotcom-rendering/src/lib/thrift/protocols.ts b/dotcom-rendering/src/lib/thrift/protocols.ts -index d7722aa0a7..8878b7f445 100644 ---- a/dotcom-rendering/src/lib/thrift/protocols.ts -+++ b/dotcom-rendering/src/lib/thrift/protocols.ts -@@ -9,9 +9,7 @@ import type { - TTransport, - TType, - } from '@creditkarma/thrift-server-core'; --import thriftCore from '@creditkarma/thrift-server-core'; -- --const { MessageType, TProtocol } = thriftCore; -+import { MessageType, TProtocol } from '@creditkarma/thrift-server-core'; - - export abstract class TProtocolDecorator extends TProtocol { - private concreteProtocol: TProtocol; -diff --git a/dotcom-rendering/webpack/.swcrc.json b/dotcom-rendering/webpack/.swcrc.json -deleted file mode 100644 -index 51f3d35ea9..0000000000 ---- a/dotcom-rendering/webpack/.swcrc.json -+++ /dev/null -@@ -1,18 +0,0 @@ --{ -- "$schema": "http://json.schemastore.org/swcrc", -- "jsc": { -- "parser": { -- "syntax": "typescript", -- "tsx": true, -- "decorators": false, -- "dynamicImport": true -- }, -- "transform": { -- "react": { -- "runtime": "automatic", -- "importSource": "@emotion/react" -- } -- } -- }, -- "sourceMaps": true --} -diff --git a/dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts b/dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts -deleted file mode 100644 -index f1326bc8cf..0000000000 ---- a/dotcom-rendering/webpack/@types/webpack-filter-warnings-plugin/index.d.ts -+++ /dev/null -@@ -1,10 +0,0 @@ --declare module 'webpack-filter-warnings-plugin' { -- import type { Compiler, WebpackPluginInstance } from 'webpack'; -- -- // eslint-disable-next-line import/no-default-export -- this is how the module exports -- export default class FilterWarningsPlugin implements WebpackPluginInstance { -- constructor(options: { exclude: RegExp }); -- -- apply(compiler: Compiler): void; -- } --} -diff --git a/dotcom-rendering/webpack/@types/webpack-messages/index.d.ts b/dotcom-rendering/webpack/@types/webpack-messages/index.d.ts -deleted file mode 100644 -index fde4bc76b8..0000000000 ---- a/dotcom-rendering/webpack/@types/webpack-messages/index.d.ts -+++ /dev/null -@@ -1,20 +0,0 @@ --declare module 'webpack-messages' { -- import type * as webpack from 'webpack'; -- -- type Options = { -- name: string; -- onComplete?: (...args: unknown[]) => void; -- logger?: (msg: string) => void; -- }; -- -- class WebpackMessages implements webpack.WebpackPluginInstance { -- constructor(options: Options); -- -- printError(str: string, arr: string[]): void; -- -- apply(compiler: webpack.Compiler): void; -- } -- -- // eslint-disable-next-line import/no-default-export -- it is how the module is exported -- export default WebpackMessages; --} -diff --git a/dotcom-rendering/webpack/svg.cjs b/dotcom-rendering/webpack/svg.cjs -deleted file mode 100644 -index 0976f29ade..0000000000 ---- a/dotcom-rendering/webpack/svg.cjs -+++ /dev/null -@@ -1,15 +0,0 @@ --/** @satisfies {import('webpack').RuleSetRule} */ --const svgr = { -- test: /\.svg$/, -- use: [ -- { -- loader: '@svgr/webpack', -- options: { -- /** this ensures that we keep the viewBox for imported SVGs */ -- svgo: false, -- }, -- }, -- ], --}; -- --module.exports = { svgr }; -diff --git a/dotcom-rendering/webpack/webpack.config.client.js b/dotcom-rendering/webpack/webpack.config.client.js -deleted file mode 100644 -index 69fe9028e6..0000000000 ---- a/dotcom-rendering/webpack/webpack.config.client.js -+++ /dev/null -@@ -1,184 +0,0 @@ --const webpack = require('webpack'); --const { WebpackManifestPlugin } = require('webpack-manifest-plugin'); --const swcConfig = require('./.swcrc.json'); --const { getBrowserTargets } = require('./browser-targets'); --const { svgr } = require('./svg.cjs'); -- --const DEV = process.env.NODE_ENV === 'development'; -- --/** @param {Record | string[]} targets */ --const swcLoader = (targets) => [ -- { -- loader: 'swc-loader', -- options: { -- ...swcConfig, -- env: { -- dynamicImport: true, -- targets, -- }, -- }, -- }, --]; -- --/** @typedef {import('../src/lib/assets').Build} Build*/ -- --/** -- * @param {Build} build -- * @returns {string} -- */ --const generateName = (build) => { -- const chunkhashString = DEV ? '' : '.[chunkhash]'; -- return `[name].${build}${chunkhashString}.js`; --}; -- --/** -- * @param {Build} build -- * @returns {string} -- */ --const getEntryIndex = (build) => { -- switch (build) { -- case 'client.editionsCrossword': -- return './src/client/main.editionsCrossword.tsx'; -- case 'client.apps': -- return './src/client/main.apps.ts'; -- default: -- return './src/client/main.web.ts'; -- } --}; -- --/** -- * @param {Build} build -- * @returns {{ loader: string, options: Record}} -- */ --const getLoaders = (build) => { -- switch (build) { -- case 'client.editionsCrossword': -- case 'client.apps': -- return swcLoader(['android >= 5', 'ios >= 12']); -- case 'client.web.variant': -- case 'client.web': -- return swcLoader(getBrowserTargets()); -- } --}; -- --/** -- * @param {{ build: Build }} options -- * @returns {import('webpack').Configuration} -- */ --module.exports = ({ build }) => ({ -- entry: { -- index: getEntryIndex(build), -- debug: './src/client/debug/debug.ts', -- }, -- optimization: -- // We don't need chunk optimization for apps as we use the 'LimitChunkCountPlugin' to produce just 1 chunk -- build === 'client.apps' || build === 'client.editionsCrossword' -- ? undefined -- : { -- splitChunks: { -- cacheGroups: { -- // our own chunk, which is shared between all bundles -- frameworks: { -- test: /[\\/]node_modules[\\/](preact|react-is|hoist-non-react-statistics|swr|@emotion|stylis)[\\/]/, -- chunks: 'all', -- name: 'frameworks', -- enforce: true, -- }, -- // defining our own chunk above overrides the webpack defaults, -- // so now we restore them -- // https://webpack.js.org/plugins/split-chunks-plugin/#optimizationsplitchunks -- defaultVendors: { -- test: /[\\/]node_modules[\\/]/, -- priority: -10, -- reuseExistingChunk: true, -- }, -- default: { -- minChunks: 2, -- priority: -20, -- reuseExistingChunk: true, -- }, -- }, -- }, -- }, -- output: { -- filename: (data) => { -- // We don't want to hash the debug script so it can be used in bookmarklets -- if (data.chunk.name === 'debug') return `[name].js`; -- return generateName(build); -- }, -- chunkFilename: generateName(build), -- publicPath: '', -- }, -- plugins: [ -- new WebpackManifestPlugin({ -- fileName: `manifest.${build}.json`, -- }), -- ...(build === 'client.apps' || build === 'client.editionsCrossword' -- ? [ -- new webpack.optimize.LimitChunkCountPlugin({ -- maxChunks: 1, -- }), -- new webpack.ProvidePlugin({ -- Buffer: ['buffer', 'Buffer'], -- }), -- ] -- : []), -- ], -- externals: getExternalModules(build), -- module: { -- rules: [ -- { -- test: /\.[jt]sx?|mjs$/, -- exclude: module.exports.transpileExclude, -- use: getLoaders(build), -- }, -- { -- test: /\.css$/, -- use: ['to-string-loader', 'css-loader'], -- }, -- svgr, -- ], -- }, -- resolve: { -- alias: { -- react: 'preact/compat', -- 'react-dom/test-utils': 'preact/test-utils', -- 'react-dom': 'preact/compat', -- }, -- }, --}); -- --module.exports.transpileExclude = { -- // Exclude node_modules from transpilation -- and: [/node_modules/], -- // Do not exclude i.e. include -- not: [ -- // Include all @guardian modules -- /@guardian\//, -- // Include the dynamic-import-polyfill -- /dynamic-import-polyfill/, -- /valibot/, -- ], --}; -- --module.exports.getLoaders = getLoaders; -- --/** -- * We are making "@guardian/ophan-tracker-js" external to the apps bundle -- * because we never expect to use it in apps pages. -- * -- * Tracking is done natively. -- * -- * @param {Build} build */ --const getExternalModules = (build) => { -- if (build === 'client.apps') { -- return { '@guardian/ophan-tracker-js': 'guardian.ophan' }; -- } -- if (build === 'client.editionsCrossword') { -- return { -- '@guardian/ophan-tracker-js': 'guardian.ophan', -- '@guardian/commercial': 'guardian.commercial', -- }; -- } -- return undefined; --}; -diff --git a/dotcom-rendering/webpack/webpack.config.dev-server.js b/dotcom-rendering/webpack/webpack.config.dev-server.js -deleted file mode 100644 -index d6e90146bf..0000000000 ---- a/dotcom-rendering/webpack/webpack.config.dev-server.js -+++ /dev/null -@@ -1,81 +0,0 @@ --// @ts-check --const path = require('node:path'); --const bodyParser = require('body-parser'); --const webpackHotServerMiddleware = require('webpack-hot-server-middleware'); --const { dim, reset, blue, underline } = require('../../scripts/log'); -- --const port = 3030; -- --console.log( -- `${dim}DEV server running on${reset} ${blue}${underline}http://localhost:${port}${reset}`, --); -- --module.exports = { -- /** @type {import('webpack-dev-server').Configuration} */ -- devServer: { -- compress: false, -- hot: false, -- liveReload: true, -- client: { -- logging: 'warn', -- overlay: true, -- }, -- port, -- static: { -- directory: path.join(__dirname, '..', 'src', 'static'), -- publicPath: '/static/frontend', -- }, -- allowedHosts: ['r.thegulocal.com'], -- devMiddleware: { -- publicPath: '/assets/', -- serverSideRender: true, -- writeToDisk: true, -- headers: (req, res) => { -- // Allow any localhost request from accessing the assets -- if ( -- req.hostname === (process.env.HOSTNAME ?? 'localhost') && -- req.headers.origin -- ) { -- res.setHeader( -- 'Access-Control-Allow-Origin', -- req.headers.origin, -- ); -- } -- }, -- }, -- setupMiddlewares: (middlewares, devServer) => { -- if (!devServer.app) { -- throw new Error('webpack-dev-server is not defined'); -- } -- -- // it turns out webpack dev server is just an express server -- // with webpack-dev-middleware, so here we add some other middlewares -- // of our own -- -- devServer.app.use(bodyParser.json({ limit: '10mb' })); -- -- devServer.app.get('/', (req, res) => { -- res.sendFile( -- path.join( -- __dirname, -- '..', -- 'src', -- 'server', -- 'dev-index.html', -- ), -- ); -- }); -- -- // webpack-hot-server-middleware needs to run after webpack-dev-middleware -- middlewares.push({ -- name: 'server', -- // @ts-expect-error -- it’s a MultiCompiler -- middleware: webpackHotServerMiddleware(devServer.compiler, { -- chunkName: 'server', -- }), -- }); -- -- return middlewares; -- }, -- }, --}; -diff --git a/dotcom-rendering/webpack/webpack.config.js b/dotcom-rendering/webpack/webpack.config.js -deleted file mode 100644 -index 818352b628..0000000000 ---- a/dotcom-rendering/webpack/webpack.config.js -+++ /dev/null -@@ -1,130 +0,0 @@ --// @ts-check --const path = require('node:path'); --const webpack = require('webpack'); --const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); --const { merge } = require('webpack-merge'); --const WebpackMessages = require('webpack-messages'); --const { BUILD_VARIANT: BUILD_VARIANT_SWITCH } = require('./bundles'); -- --const dist = path.resolve(__dirname, '..', 'dist'); --const PROD = process.env.NODE_ENV === 'production'; --const DEV = process.env.NODE_ENV === 'development'; -- --const BUILD_VARIANT = process.env.BUILD_VARIANT === 'true'; -- --/** @typedef {import('../src/lib/assets').Build} Build */ -- --/** -- * @param {{ platform: 'server' | Build}} options -- * @returns {import('webpack').Configuration} -- */ --const commonConfigs = ({ platform }) => ({ -- name: platform, -- mode: DEV ? 'development' : 'production', -- output: { -- path: dist, -- }, -- stats: DEV ? 'errors-only' : 'normal', -- devtool: -- process.env.NODE_ENV === 'production' -- ? 'source-map' -- : 'eval-cheap-module-source-map', -- resolve: { -- extensions: ['.js', '.ts', '.tsx', '.jsx'], -- }, -- ignoreWarnings: [ -- /** -- * Express uses dynamic imports to load template engines. As we're not currently using a template engine in DCR -- * we can ignore this error. -- */ -- { -- module: /..\/node_modules\/express\/lib\/view.js/, -- message: -- /Critical dependency: the request of a dependency is an expression/, -- }, -- /** -- * Log4js uses dynamic imports to load non-core appenders. We're only using 'console' and 'file' appenders in DCR -- * which are specifically imported by log4js without using dynamic imports. -- */ -- { -- module: /..\/node_modules\/log4js\/lib\/appenders\/index.js/, -- message: -- /Critical dependency: the request of a dependency is an expression/, -- }, -- ], -- plugins: [ -- new webpack.DefinePlugin({ -- 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), -- 'process.env.HOSTNAME': JSON.stringify(process.env.HOSTNAME), -- }), -- // Matching modules specified in this regex will not be imported during the webpack build -- // We use this if there are optional dependencies (e.g in jsdom, ws) to remove uneccesary warnings in our builds / console outpouts. -- new webpack.IgnorePlugin({ -- resourceRegExp: /^(canvas|bufferutil|utf-8-validate)$/, -- }), -- ...(DEV -- ? // DEV plugins -- [ -- // @ts-expect-error -- somehow the type declaration isn’t playing nice -- new WebpackMessages({ -- name: platform, -- }), -- ] -- : // PROD plugins -- [ -- new BundleAnalyzerPlugin({ -- reportFilename: path.join( -- dist, -- 'stats', -- `${platform}-bundles.html`, -- ), -- analyzerMode: 'static', -- openAnalyzer: false, -- logLevel: 'warn', -- }), -- new BundleAnalyzerPlugin({ -- reportFilename: path.join( -- dist, -- 'stats', -- `${platform}-bundles.json`, -- ), -- analyzerMode: 'json', -- openAnalyzer: false, -- logLevel: 'warn', -- }), -- ]), -- ], -- infrastructureLogging: { -- level: PROD ? 'info' : 'warn', -- }, --}); -- --/** @type {readonly Build[]} */ --const clientBuilds = [ -- 'client.web', -- ...((PROD && BUILD_VARIANT_SWITCH) || BUILD_VARIANT -- ? /** @type {const} */ (['client.web.variant']) -- : []), -- 'client.apps', -- 'client.editionsCrossword', --]; -- --module.exports = [ -- merge( -- commonConfigs({ -- platform: 'server', -- }), -- require(`./webpack.config.server`), -- DEV ? require(`./webpack.config.dev-server`) : {}, -- ), -- ...clientBuilds.map((build) => -- merge( -- commonConfigs({ -- platform: build, -- }), -- require(`./webpack.config.client`)({ -- build, -- }), -- ), -- ), --]; -diff --git a/dotcom-rendering/webpack/webpack.config.server.js b/dotcom-rendering/webpack/webpack.config.server.js -deleted file mode 100644 -index e6d6c4fc71..0000000000 ---- a/dotcom-rendering/webpack/webpack.config.server.js -+++ /dev/null -@@ -1,87 +0,0 @@ --// @ts-check --const nodeExternals = require('webpack-node-externals'); --const swcConfig = require('./.swcrc.json'); --const { svgr } = require('./svg.cjs'); --const { transpileExclude } = require('./webpack.config.client.js'); -- --const DEV = process.env.NODE_ENV === 'development'; --const nodeVersion = process.versions.node; -- --const swcLoader = [ -- { -- loader: 'swc-loader', -- options: { -- ...swcConfig, -- minify: DEV ? false : true, -- env: { -- targets: { -- node: nodeVersion, -- }, -- }, -- }, -- }, --]; -- --/** @type {import('webpack').Configuration} */ --module.exports = { -- entry: { -- server: './src/server/server.ts', -- }, -- output: { -- filename: `[name].js`, -- chunkFilename: `[name].js`, -- libraryTarget: 'commonjs2', -- pathinfo: true, -- publicPath: '', -- }, -- target: 'node', -- externalsPresets: { node: true }, -- optimization: { -- minimize: false, -- runtimeChunk: false, -- }, -- externals: [ -- // https://github.com/liady/webpack-node-externals/issues/105 -- ...(DEV -- ? [ -- nodeExternals({ -- allowlist: [ -- /^@guardian/, -- // this project is ESM-only and throws an error when not bundled -- 'screenfull', -- ], -- additionalModuleDirs: [ -- // Since we use workspaces for the monorepo, node_modules will be co-located -- // both in the '(project-root)/dotcom-rendering/node_modules' directory (default for webpack-node-externals) -- // but also in project root, and any workspaces we link to. -- // We want to make sure all of these are removed from the server build. -- '../node_modules', -- ], -- }), -- ] -- : []), -- // @aws-sdk modules are only used in CODE/PROD, so we don't need to -- // include them in the development bundle -- ({ request }, callback) => { -- return process.env.NODE_ENV === 'development' && -- request?.startsWith('@aws-sdk') -- ? callback(undefined, `commonjs ${request}`) -- : callback(); -- }, -- ({ request }, callback) => { -- return request?.endsWith('manifest.json') -- ? callback(undefined, `commonjs ${request}`) -- : callback(); -- }, -- ], -- module: { -- rules: [ -- { -- test: /(\.tsx|\.js|\.ts)$/, -- exclude: transpileExclude, -- use: swcLoader, -- }, -- svgr, -- ], -- }, --}; --- -2.50.1 (Apple Git-155) - - -From fc913771ea4ff95de6f910ea2bb0996b391c400d Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Thu, 9 Apr 2026 22:45:42 +0100 -Subject: [PATCH 07/17] Fix TypeScript errors in Vite migration code - -- ssr-cjs-plugin: add explicit return for resolveId hook -- vite.config.server: use string instead of RegExp for ssr.external -- debug.ts: remove stale @ts-expect-error (Vite provides ?raw types) -- doHydration.tsx: cast module export to React.FunctionComponent - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/src/client/debug/debug.ts | 1 - - dotcom-rendering/src/client/islands/doHydration.tsx | 5 ++++- - dotcom-rendering/vite/ssr-cjs-plugin.ts | 1 + - dotcom-rendering/vite/vite.config.server.ts | 2 +- - 4 files changed, 6 insertions(+), 3 deletions(-) - -diff --git a/dotcom-rendering/src/client/debug/debug.ts b/dotcom-rendering/src/client/debug/debug.ts -index 31d7490b56..bd3c6aa43d 100644 ---- a/dotcom-rendering/src/client/debug/debug.ts -+++ b/dotcom-rendering/src/client/debug/debug.ts -@@ -1,4 +1,3 @@ --// @ts-expect-error: Cannot find module - import debugCss from './debug.css?raw'; - - const style = document.createElement('style'); -diff --git a/dotcom-rendering/src/client/islands/doHydration.tsx b/dotcom-rendering/src/client/islands/doHydration.tsx -index e61d810d3c..6a192c1004 100644 ---- a/dotcom-rendering/src/client/islands/doHydration.tsx -+++ b/dotcom-rendering/src/client/islands/doHydration.tsx -@@ -71,7 +71,10 @@ export const doHydration = async ( - {/* Child islands should not be hydrated separately */} - - {/* The component to hydrate must be a single JSX Element */} -- {createElement(module[name], data)} -+ {createElement( -+ module[name] as React.FunctionComponent, -+ data, -+ )} - - - , -diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.ts b/dotcom-rendering/vite/ssr-cjs-plugin.ts -index b33a492bc2..7f7c3906ff 100644 ---- a/dotcom-rendering/vite/ssr-cjs-plugin.ts -+++ b/dotcom-rendering/vite/ssr-cjs-plugin.ts -@@ -42,6 +42,7 @@ export function ssrCjsPlugin(packages: string[]): Plugin { - if (shouldWrap(id)) { - return PREFIX + id; - } -+ return undefined; - }, - load(id) { - if (!id.startsWith(PREFIX)) return; -diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts -index bed78a62cb..cb971a3bf6 100644 ---- a/dotcom-rendering/vite/vite.config.server.ts -+++ b/dotcom-rendering/vite/vite.config.server.ts -@@ -57,7 +57,7 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { - 'valibot', - ], - // Explicitly external in dev (not needed in prod where they're deployed) -- external: DEV ? [/@aws-sdk\/.*/] : [], -+ external: DEV ? ['@aws-sdk'] : [], - }, - } satisfies UserConfig); - --- -2.50.1 (Apple Git-155) - - -From c3cc399c06a3a809bb2f4c96a282cd62becd88e9 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Thu, 9 Apr 2026 22:53:08 +0100 -Subject: [PATCH 08/17] Update lockfile for Storybook Vite migration - -Install @storybook/react-vite and remove @storybook/react-webpack5 -and @storybook/addon-webpack5-compiler-swc from lockfile. - -Co-Authored-By: Claude Opus 4.6 ---- - pnpm-lock.yaml | 6243 +++++++++++++----------------------------------- - 1 file changed, 1708 insertions(+), 4535 deletions(-) - -diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml -index 3abdb9930e..95fce14c3a 100644 ---- a/pnpm-lock.yaml -+++ b/pnpm-lock.yaml -@@ -338,9 +338,6 @@ importers: - '@guardian/react-crossword': - specifier: 11.1.0 - version: 11.1.0(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@guardian/libs@31.0.0(@guardian/ophan-tracker-js@2.8.0)(tslib@2.6.2)(typescript@5.5.3))(@guardian/source@11.3.0(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.5.3))(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.3) -- '@guardian/shimport': -- specifier: 1.0.2 -- version: 1.0.2 - '@guardian/source': - specifier: 11.3.0 - version: 11.3.0(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.5.3) -@@ -364,16 +361,10 @@ importers: - version: 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@storybook/addon-docs': - specifier: 10.3.3 -- version: 10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1) -- '@storybook/addon-webpack5-compiler-swc': -- specifier: 4.0.3 -- version: 4.0.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.104.1) -- '@storybook/react-webpack5': -+ version: 10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) -+ '@storybook/react-vite': - specifier: 10.3.3 -- version: 10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1) -- '@svgr/webpack': -- specifier: 8.1.0 -- version: 8.1.0(typescript@5.5.3) -+ version: 10.3.3(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) - '@swc/cli': - specifier: 0.7.8 - version: 0.7.8(@swc/core@1.13.5)(chokidar@4.0.3) -@@ -470,15 +461,6 @@ importers: - '@types/twitter-for-web': - specifier: 0.0.6 - version: 0.0.6 -- '@types/webpack-bundle-analyzer': -- specifier: 4.7.0 -- version: 4.7.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- '@types/webpack-env': -- specifier: 1.18.8 -- version: 1.18.8 -- '@types/webpack-node-externals': -- specifier: 3.0.4 -- version: 3.0.4(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) - '@types/youtube': - specifier: 0.0.50 - version: 0.0.50 -@@ -518,15 +500,9 @@ importers: - cpy: - specifier: 11.0.0 - version: 11.0.0 -- css-loader: -- specifier: 7.1.2 -- version: 7.1.2(webpack@5.104.1) - dompurify: - specifier: 3.2.4 - version: 3.2.4 -- dynamic-import-polyfill: -- specifier: 0.1.1 -- version: 0.1.1 - eslint: - specifier: 8.57.1 - version: 8.57.1 -@@ -653,15 +629,9 @@ importers: - stylelint-config-recommended: - specifier: 14.0.0 - version: 14.0.0(stylelint@16.26.1(typescript@5.5.3)) -- swc-loader: -- specifier: 0.2.6 -- version: 0.2.6(@swc/core@1.13.5)(webpack@5.104.1) - swr: - specifier: 1.3.0 - version: 1.3.0(react@18.3.1) -- to-string-loader: -- specifier: 1.2.0 -- version: 1.2.0 - trusted-types: - specifier: 2.0.0 - version: 2.0.0 -@@ -695,45 +665,6 @@ importers: - web-vitals: - specifier: 4.2.3 - version: 4.2.3 -- webpack: -- specifier: 5.104.1 -- version: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- webpack-assets-manifest: -- specifier: 6.3.0 -- version: 6.3.0(webpack@5.104.1) -- webpack-bundle-analyzer: -- specifier: 4.10.2 -- version: 4.10.2 -- webpack-cli: -- specifier: 6.0.1 -- version: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) -- webpack-dev-middleware: -- specifier: 7.4.5 -- version: 7.4.5(webpack@5.104.1) -- webpack-dev-server: -- specifier: 5.2.2 -- version: 5.2.2(webpack-cli@6.0.1)(webpack@5.104.1) -- webpack-hot-middleware: -- specifier: 2.26.1 -- version: 2.26.1 -- webpack-hot-server-middleware: -- specifier: 0.6.1 -- version: 0.6.1(webpack@5.104.1) -- webpack-manifest-plugin: -- specifier: 6.0.1 -- version: 6.0.1(webpack@5.104.1) -- webpack-merge: -- specifier: 6.0.1 -- version: 6.0.1 -- webpack-messages: -- specifier: 2.0.4 -- version: 2.0.4 -- webpack-node-externals: -- specifier: 3.0.0 -- version: 3.0.0 -- webpack-sources: -- specifier: 3.3.3 -- version: 3.3.3 - zod: - specifier: 4.1.12 - version: 4.1.12 -@@ -1036,39 +967,14 @@ packages: - resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} - engines: {node: '>=6.9.0'} - -- '@babel/helper-annotate-as-pure@7.27.3': -- resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} -- engines: {node: '>=6.9.0'} -- - '@babel/helper-compilation-targets@7.28.6': - resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} - engines: {node: '>=6.9.0'} - -- '@babel/helper-create-class-features-plugin@7.28.3': -- resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -- -- '@babel/helper-create-regexp-features-plugin@7.27.1': -- resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -- -- '@babel/helper-define-polyfill-provider@0.6.5': -- resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} -- peerDependencies: -- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 -- - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - -- '@babel/helper-member-expression-to-functions@7.27.1': -- resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} -- engines: {node: '>=6.9.0'} -- - '@babel/helper-module-imports@7.28.6': - resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} - engines: {node: '>=6.9.0'} -@@ -1079,30 +985,10 @@ packages: - peerDependencies: - '@babel/core': ^7.0.0 - -- '@babel/helper-optimise-call-expression@7.27.1': -- resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} -- engines: {node: '>=6.9.0'} -- - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} - engines: {node: '>=6.9.0'} - -- '@babel/helper-remap-async-to-generator@7.27.1': -- resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -- -- '@babel/helper-replace-supers@7.27.1': -- resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -- -- '@babel/helper-skip-transparent-expression-wrappers@7.27.1': -- resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} -- engines: {node: '>=6.9.0'} -- - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} -@@ -1115,10 +1001,6 @@ packages: - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - -- '@babel/helper-wrap-function@7.28.3': -- resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} -- engines: {node: '>=6.9.0'} -- - '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} - engines: {node: '>=6.9.0'} -@@ -1128,42 +1010,6 @@ packages: - engines: {node: '>=6.0.0'} - hasBin: true - -- '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': -- resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -- -- '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': -- resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -- -- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': -- resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -- -- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': -- resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.13.0 -- -- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': -- resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -- -- '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': -- resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -- - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: -@@ -1179,18 +1025,6 @@ packages: - peerDependencies: - '@babel/core': ^7.0.0-0 - -- '@babel/plugin-syntax-import-assertions@7.27.1': -- resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -- -- '@babel/plugin-syntax-import-attributes@7.27.1': -- resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -- - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: -@@ -1249,1907 +1083,1495 @@ packages: - peerDependencies: - '@babel/core': ^7.0.0-0 - -- '@babel/plugin-syntax-unicode-sets-regex@7.18.6': -- resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -- -- '@babel/plugin-transform-arrow-functions@7.27.1': -- resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} -+ '@babel/runtime@7.28.4': -+ resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} - engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 - -- '@babel/plugin-transform-async-generator-functions@7.28.0': -- resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} -+ '@babel/template@7.28.6': -+ resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} - engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 - -- '@babel/plugin-transform-async-to-generator@7.27.1': -- resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} -+ '@babel/traverse@7.29.0': -+ resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} - engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 - -- '@babel/plugin-transform-block-scoped-functions@7.27.1': -- resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} -+ '@babel/types@7.29.0': -+ resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} - engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 - -- '@babel/plugin-transform-block-scoping@7.28.4': -- resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@bcoe/v8-coverage@0.2.3': -+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - -- '@babel/plugin-transform-class-properties@7.27.1': -- resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@braze/web-sdk@6.5.0': -+ resolution: {integrity: sha512-MdfwZn+tfe7+tR8Ir5468/njQDGhgVB9tBthq7gwSETsjv6Q+Hw2bXiQy3scDcACI2RLqiq+dNXKh6fD+pN4/Q==} - -- '@babel/plugin-transform-class-static-block@7.28.3': -- resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.12.0 -+ '@cacheable/memory@2.0.8': -+ resolution: {integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==} - -- '@babel/plugin-transform-classes@7.28.4': -- resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@cacheable/utils@2.4.0': -+ resolution: {integrity: sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==} - -- '@babel/plugin-transform-computed-properties@7.27.1': -- resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@creditkarma/thrift-server-core@1.0.4': -+ resolution: {integrity: sha512-Jook5uFJqPeM/D0taSdKHeoerZB6HboSDMqBDWhVDJVSKJGWPSMch4GNALRqr8nCekLKMYkdCgj4FAVetnxpGA==} - -- '@babel/plugin-transform-destructuring@7.28.0': -- resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@cspotcode/source-map-support@0.8.1': -+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} -+ engines: {node: '>=12'} - -- '@babel/plugin-transform-dotall-regex@7.27.1': -- resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} -- engines: {node: '>=6.9.0'} -+ '@csstools/css-parser-algorithms@3.0.5': -+ resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} -+ engines: {node: '>=18'} - peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@csstools/css-tokenizer': ^3.0.4 - -- '@babel/plugin-transform-duplicate-keys@7.27.1': -- resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} -- engines: {node: '>=6.9.0'} -+ '@csstools/css-syntax-patches-for-csstree@1.1.1': -+ resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} - peerDependencies: -- '@babel/core': ^7.0.0-0 -+ css-tree: ^3.2.1 -+ peerDependenciesMeta: -+ css-tree: -+ optional: true - -- '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': -- resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -+ '@csstools/css-tokenizer@3.0.4': -+ resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} -+ engines: {node: '>=18'} - -- '@babel/plugin-transform-dynamic-import@7.27.1': -- resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} -- engines: {node: '>=6.9.0'} -+ '@csstools/media-query-list-parser@4.0.3': -+ resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} -+ engines: {node: '>=18'} - peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@csstools/css-parser-algorithms': ^3.0.5 -+ '@csstools/css-tokenizer': ^3.0.4 - -- '@babel/plugin-transform-explicit-resource-management@7.28.0': -- resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} -- engines: {node: '>=6.9.0'} -+ '@csstools/selector-specificity@5.0.0': -+ resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} -+ engines: {node: '>=18'} - peerDependencies: -- '@babel/core': ^7.0.0-0 -+ postcss-selector-parser: ^7.0.0 - -- '@babel/plugin-transform-exponentiation-operator@7.27.1': -- resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@dual-bundle/import-meta-resolve@4.2.1': -+ resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} - -- '@babel/plugin-transform-export-namespace-from@7.27.1': -- resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@emotion/babel-plugin@11.13.5': -+ resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} - -- '@babel/plugin-transform-for-of@7.27.1': -- resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@emotion/cache@11.14.0': -+ resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} - -- '@babel/plugin-transform-function-name@7.27.1': -- resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@emotion/hash@0.9.2': -+ resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - -- '@babel/plugin-transform-json-strings@7.27.1': -- resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@emotion/memoize@0.9.0': -+ resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - -- '@babel/plugin-transform-literals@7.27.1': -- resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} -- engines: {node: '>=6.9.0'} -+ '@emotion/react@11.14.0': -+ resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} - peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@types/react': '*' -+ react: '>=16.8.0' -+ peerDependenciesMeta: -+ '@types/react': -+ optional: true - -- '@babel/plugin-transform-logical-assignment-operators@7.27.1': -- resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@emotion/serialize@1.3.3': -+ resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} - -- '@babel/plugin-transform-member-expression-literals@7.27.1': -- resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} -- engines: {node: '>=6.9.0'} -+ '@emotion/server@11.11.0': -+ resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} - peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@emotion/css': ^11.0.0-rc.0 -+ peerDependenciesMeta: -+ '@emotion/css': -+ optional: true - -- '@babel/plugin-transform-modules-amd@7.27.1': -- resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@emotion/sheet@1.4.0': -+ resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - -- '@babel/plugin-transform-modules-commonjs@7.27.1': -- resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@emotion/unitless@0.10.0': -+ resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} - -- '@babel/plugin-transform-modules-systemjs@7.27.1': -- resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} -- engines: {node: '>=6.9.0'} -+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0': -+ resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} - peerDependencies: -- '@babel/core': ^7.0.0-0 -+ react: '>=16.8.0' - -- '@babel/plugin-transform-modules-umd@7.27.1': -- resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@emotion/utils@1.4.2': -+ resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} - -- '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': -- resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -+ '@emotion/weak-memoize@0.4.0': -+ resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - -- '@babel/plugin-transform-new-target@7.27.1': -- resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/aix-ppc64@0.25.5': -+ resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} -+ engines: {node: '>=18'} -+ cpu: [ppc64] -+ os: [aix] - -- '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': -- resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/aix-ppc64@0.27.0': -+ resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} -+ engines: {node: '>=18'} -+ cpu: [ppc64] -+ os: [aix] - -- '@babel/plugin-transform-numeric-separator@7.27.1': -- resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/aix-ppc64@0.27.3': -+ resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} -+ engines: {node: '>=18'} -+ cpu: [ppc64] -+ os: [aix] - -- '@babel/plugin-transform-object-rest-spread@7.28.4': -- resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-arm64@0.18.20': -+ resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} -+ engines: {node: '>=12'} -+ cpu: [arm64] -+ os: [android] - -- '@babel/plugin-transform-object-super@7.27.1': -- resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-arm64@0.25.5': -+ resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [android] - -- '@babel/plugin-transform-optional-catch-binding@7.27.1': -- resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-arm64@0.27.0': -+ resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [android] - -- '@babel/plugin-transform-optional-chaining@7.27.1': -- resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-arm64@0.27.3': -+ resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [android] - -- '@babel/plugin-transform-parameters@7.27.7': -- resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-arm@0.18.20': -+ resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} -+ engines: {node: '>=12'} -+ cpu: [arm] -+ os: [android] - -- '@babel/plugin-transform-private-methods@7.27.1': -- resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-arm@0.25.5': -+ resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} -+ engines: {node: '>=18'} -+ cpu: [arm] -+ os: [android] - -- '@babel/plugin-transform-private-property-in-object@7.27.1': -- resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-arm@0.27.0': -+ resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} -+ engines: {node: '>=18'} -+ cpu: [arm] -+ os: [android] - -- '@babel/plugin-transform-property-literals@7.27.1': -- resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-arm@0.27.3': -+ resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} -+ engines: {node: '>=18'} -+ cpu: [arm] -+ os: [android] - -- '@babel/plugin-transform-react-constant-elements@7.23.3': -- resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-x64@0.18.20': -+ resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} -+ engines: {node: '>=12'} -+ cpu: [x64] -+ os: [android] - -- '@babel/plugin-transform-react-display-name@7.27.1': -- resolution: {integrity: sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-x64@0.25.5': -+ resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} -+ engines: {node: '>=18'} -+ cpu: [x64] -+ os: [android] - -- '@babel/plugin-transform-react-jsx-development@7.27.1': -- resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-x64@0.27.0': -+ resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} -+ engines: {node: '>=18'} -+ cpu: [x64] -+ os: [android] - -- '@babel/plugin-transform-react-jsx@7.27.1': -- resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/android-x64@0.27.3': -+ resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} -+ engines: {node: '>=18'} -+ cpu: [x64] -+ os: [android] - -- '@babel/plugin-transform-react-pure-annotations@7.27.1': -- resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/darwin-arm64@0.18.20': -+ resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} -+ engines: {node: '>=12'} -+ cpu: [arm64] -+ os: [darwin] - -- '@babel/plugin-transform-regenerator@7.28.4': -- resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/darwin-arm64@0.25.5': -+ resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [darwin] - -- '@babel/plugin-transform-regexp-modifiers@7.27.1': -- resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -+ '@esbuild/darwin-arm64@0.27.0': -+ resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [darwin] - -- '@babel/plugin-transform-reserved-words@7.27.1': -- resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/darwin-arm64@0.27.3': -+ resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [darwin] - -- '@babel/plugin-transform-shorthand-properties@7.27.1': -- resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/darwin-x64@0.18.20': -+ resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} -+ engines: {node: '>=12'} -+ cpu: [x64] -+ os: [darwin] - -- '@babel/plugin-transform-spread@7.27.1': -- resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/darwin-x64@0.25.5': -+ resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} -+ engines: {node: '>=18'} -+ cpu: [x64] -+ os: [darwin] - -- '@babel/plugin-transform-sticky-regex@7.27.1': -- resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/darwin-x64@0.27.0': -+ resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} -+ engines: {node: '>=18'} -+ cpu: [x64] -+ os: [darwin] - -- '@babel/plugin-transform-template-literals@7.27.1': -- resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/darwin-x64@0.27.3': -+ resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} -+ engines: {node: '>=18'} -+ cpu: [x64] -+ os: [darwin] - -- '@babel/plugin-transform-typeof-symbol@7.27.1': -- resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/freebsd-arm64@0.18.20': -+ resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} -+ engines: {node: '>=12'} -+ cpu: [arm64] -+ os: [freebsd] - -- '@babel/plugin-transform-typescript@7.27.1': -- resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/freebsd-arm64@0.25.5': -+ resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [freebsd] - -- '@babel/plugin-transform-unicode-escapes@7.27.1': -- resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/freebsd-arm64@0.27.0': -+ resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [freebsd] - -- '@babel/plugin-transform-unicode-property-regex@7.27.1': -- resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/freebsd-arm64@0.27.3': -+ resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [freebsd] - -- '@babel/plugin-transform-unicode-regex@7.27.1': -- resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/freebsd-x64@0.18.20': -+ resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} -+ engines: {node: '>=12'} -+ cpu: [x64] -+ os: [freebsd] - -- '@babel/plugin-transform-unicode-sets-regex@7.27.1': -- resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0 -+ '@esbuild/freebsd-x64@0.25.5': -+ resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} -+ engines: {node: '>=18'} -+ cpu: [x64] -+ os: [freebsd] - -- '@babel/preset-env@7.28.3': -- resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/freebsd-x64@0.27.0': -+ resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} -+ engines: {node: '>=18'} -+ cpu: [x64] -+ os: [freebsd] - -- '@babel/preset-modules@0.1.6-no-external-plugins': -- resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} -- peerDependencies: -- '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 -+ '@esbuild/freebsd-x64@0.27.3': -+ resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} -+ engines: {node: '>=18'} -+ cpu: [x64] -+ os: [freebsd] - -- '@babel/preset-react@7.27.1': -- resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/linux-arm64@0.18.20': -+ resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} -+ engines: {node: '>=12'} -+ cpu: [arm64] -+ os: [linux] - -- '@babel/preset-typescript@7.27.1': -- resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} -- engines: {node: '>=6.9.0'} -- peerDependencies: -- '@babel/core': ^7.0.0-0 -+ '@esbuild/linux-arm64@0.25.5': -+ resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [linux] - -- '@babel/runtime@7.28.4': -- resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} -- engines: {node: '>=6.9.0'} -+ '@esbuild/linux-arm64@0.27.0': -+ resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [linux] - -- '@babel/template@7.28.6': -- resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} -- engines: {node: '>=6.9.0'} -+ '@esbuild/linux-arm64@0.27.3': -+ resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} -+ engines: {node: '>=18'} -+ cpu: [arm64] -+ os: [linux] - -- '@babel/traverse@7.29.0': -- resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} -- engines: {node: '>=6.9.0'} -+ '@esbuild/linux-arm@0.18.20': -+ resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} -+ engines: {node: '>=12'} -+ cpu: [arm] -+ os: [linux] - -- '@babel/types@7.29.0': -- resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} -- engines: {node: '>=6.9.0'} -- -- '@bcoe/v8-coverage@0.2.3': -- resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} -- -- '@braze/web-sdk@6.5.0': -- resolution: {integrity: sha512-MdfwZn+tfe7+tR8Ir5468/njQDGhgVB9tBthq7gwSETsjv6Q+Hw2bXiQy3scDcACI2RLqiq+dNXKh6fD+pN4/Q==} -- -- '@cacheable/memory@2.0.8': -- resolution: {integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==} -- -- '@cacheable/utils@2.4.0': -- resolution: {integrity: sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==} -- -- '@creditkarma/thrift-server-core@1.0.4': -- resolution: {integrity: sha512-Jook5uFJqPeM/D0taSdKHeoerZB6HboSDMqBDWhVDJVSKJGWPSMch4GNALRqr8nCekLKMYkdCgj4FAVetnxpGA==} -+ '@esbuild/linux-arm@0.25.5': -+ resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} -+ engines: {node: '>=18'} -+ cpu: [arm] -+ os: [linux] - -- '@cspotcode/source-map-support@0.8.1': -- resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} -- engines: {node: '>=12'} -+ '@esbuild/linux-arm@0.27.0': -+ resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} -+ engines: {node: '>=18'} -+ cpu: [arm] -+ os: [linux] - -- '@csstools/css-parser-algorithms@3.0.5': -- resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} -+ '@esbuild/linux-arm@0.27.3': -+ resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} - engines: {node: '>=18'} -- peerDependencies: -- '@csstools/css-tokenizer': ^3.0.4 -+ cpu: [arm] -+ os: [linux] - -- '@csstools/css-syntax-patches-for-csstree@1.1.1': -- resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} -- peerDependencies: -- css-tree: ^3.2.1 -- peerDependenciesMeta: -- css-tree: -- optional: true -+ '@esbuild/linux-ia32@0.18.20': -+ resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} -+ engines: {node: '>=12'} -+ cpu: [ia32] -+ os: [linux] - -- '@csstools/css-tokenizer@3.0.4': -- resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} -+ '@esbuild/linux-ia32@0.25.5': -+ resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} - engines: {node: '>=18'} -+ cpu: [ia32] -+ os: [linux] - -- '@csstools/media-query-list-parser@4.0.3': -- resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} -+ '@esbuild/linux-ia32@0.27.0': -+ resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} - engines: {node: '>=18'} -- peerDependencies: -- '@csstools/css-parser-algorithms': ^3.0.5 -- '@csstools/css-tokenizer': ^3.0.4 -+ cpu: [ia32] -+ os: [linux] - -- '@csstools/selector-specificity@5.0.0': -- resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} -+ '@esbuild/linux-ia32@0.27.3': -+ resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} - engines: {node: '>=18'} -- peerDependencies: -- postcss-selector-parser: ^7.0.0 -- -- '@discoveryjs/json-ext@0.5.7': -- resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} -- engines: {node: '>=10.0.0'} -- -- '@discoveryjs/json-ext@0.6.3': -- resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} -- engines: {node: '>=14.17.0'} -- -- '@dual-bundle/import-meta-resolve@4.2.1': -- resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} -- -- '@emotion/babel-plugin@11.13.5': -- resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} -- -- '@emotion/cache@11.14.0': -- resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} -- -- '@emotion/hash@0.9.2': -- resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} -+ cpu: [ia32] -+ os: [linux] - -- '@emotion/memoize@0.9.0': -- resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} -+ '@esbuild/linux-loong64@0.18.20': -+ resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} -+ engines: {node: '>=12'} -+ cpu: [loong64] -+ os: [linux] - -- '@emotion/react@11.14.0': -- resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} -- peerDependencies: -- '@types/react': '*' -- react: '>=16.8.0' -- peerDependenciesMeta: -- '@types/react': -- optional: true -+ '@esbuild/linux-loong64@0.25.5': -+ resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} -+ engines: {node: '>=18'} -+ cpu: [loong64] -+ os: [linux] - -- '@emotion/serialize@1.3.3': -- resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} -+ '@esbuild/linux-loong64@0.27.0': -+ resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} -+ engines: {node: '>=18'} -+ cpu: [loong64] -+ os: [linux] - -- '@emotion/server@11.11.0': -- resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} -- peerDependencies: -- '@emotion/css': ^11.0.0-rc.0 -- peerDependenciesMeta: -- '@emotion/css': -- optional: true -+ '@esbuild/linux-loong64@0.27.3': -+ resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} -+ engines: {node: '>=18'} -+ cpu: [loong64] -+ os: [linux] - -- '@emotion/sheet@1.4.0': -- resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} -+ '@esbuild/linux-mips64el@0.18.20': -+ resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} -+ engines: {node: '>=12'} -+ cpu: [mips64el] -+ os: [linux] - -- '@emotion/unitless@0.10.0': -- resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} -+ '@esbuild/linux-mips64el@0.25.5': -+ resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} -+ engines: {node: '>=18'} -+ cpu: [mips64el] -+ os: [linux] - -- '@emotion/use-insertion-effect-with-fallbacks@1.2.0': -- resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} -- peerDependencies: -- react: '>=16.8.0' -+ '@esbuild/linux-mips64el@0.27.0': -+ resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} -+ engines: {node: '>=18'} -+ cpu: [mips64el] -+ os: [linux] - -- '@emotion/utils@1.4.2': -- resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} -+ '@esbuild/linux-mips64el@0.27.3': -+ resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} -+ engines: {node: '>=18'} -+ cpu: [mips64el] -+ os: [linux] - -- '@emotion/weak-memoize@0.4.0': -- resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} -+ '@esbuild/linux-ppc64@0.18.20': -+ resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} -+ engines: {node: '>=12'} -+ cpu: [ppc64] -+ os: [linux] - -- '@esbuild/aix-ppc64@0.25.5': -- resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} -+ '@esbuild/linux-ppc64@0.25.5': -+ resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} - engines: {node: '>=18'} - cpu: [ppc64] -- os: [aix] -+ os: [linux] - -- '@esbuild/aix-ppc64@0.27.0': -- resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} -+ '@esbuild/linux-ppc64@0.27.0': -+ resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} - engines: {node: '>=18'} - cpu: [ppc64] -- os: [aix] -+ os: [linux] - -- '@esbuild/aix-ppc64@0.27.3': -- resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} -+ '@esbuild/linux-ppc64@0.27.3': -+ resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} - engines: {node: '>=18'} - cpu: [ppc64] -- os: [aix] -+ os: [linux] - -- '@esbuild/android-arm64@0.18.20': -- resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} -+ '@esbuild/linux-riscv64@0.18.20': -+ resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} -- cpu: [arm64] -- os: [android] -+ cpu: [riscv64] -+ os: [linux] - -- '@esbuild/android-arm64@0.25.5': -- resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} -+ '@esbuild/linux-riscv64@0.25.5': -+ resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} - engines: {node: '>=18'} -- cpu: [arm64] -- os: [android] -+ cpu: [riscv64] -+ os: [linux] - -- '@esbuild/android-arm64@0.27.0': -- resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} -+ '@esbuild/linux-riscv64@0.27.0': -+ resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} - engines: {node: '>=18'} -- cpu: [arm64] -- os: [android] -+ cpu: [riscv64] -+ os: [linux] - -- '@esbuild/android-arm64@0.27.3': -- resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} -+ '@esbuild/linux-riscv64@0.27.3': -+ resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} - engines: {node: '>=18'} -- cpu: [arm64] -- os: [android] -+ cpu: [riscv64] -+ os: [linux] - -- '@esbuild/android-arm@0.18.20': -- resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} -+ '@esbuild/linux-s390x@0.18.20': -+ resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} -- cpu: [arm] -- os: [android] -+ cpu: [s390x] -+ os: [linux] - -- '@esbuild/android-arm@0.25.5': -- resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} -+ '@esbuild/linux-s390x@0.25.5': -+ resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} - engines: {node: '>=18'} -- cpu: [arm] -- os: [android] -+ cpu: [s390x] -+ os: [linux] - -- '@esbuild/android-arm@0.27.0': -- resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} -+ '@esbuild/linux-s390x@0.27.0': -+ resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} - engines: {node: '>=18'} -- cpu: [arm] -- os: [android] -+ cpu: [s390x] -+ os: [linux] - -- '@esbuild/android-arm@0.27.3': -- resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} -+ '@esbuild/linux-s390x@0.27.3': -+ resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} - engines: {node: '>=18'} -- cpu: [arm] -- os: [android] -+ cpu: [s390x] -+ os: [linux] - -- '@esbuild/android-x64@0.18.20': -- resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} -+ '@esbuild/linux-x64@0.18.20': -+ resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] -- os: [android] -+ os: [linux] - -- '@esbuild/android-x64@0.25.5': -- resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} -+ '@esbuild/linux-x64@0.25.5': -+ resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} - engines: {node: '>=18'} - cpu: [x64] -- os: [android] -+ os: [linux] - -- '@esbuild/android-x64@0.27.0': -- resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} -+ '@esbuild/linux-x64@0.27.0': -+ resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} - engines: {node: '>=18'} - cpu: [x64] -- os: [android] -+ os: [linux] - -- '@esbuild/android-x64@0.27.3': -- resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} -+ '@esbuild/linux-x64@0.27.3': -+ resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} - engines: {node: '>=18'} - cpu: [x64] -- os: [android] -- -- '@esbuild/darwin-arm64@0.18.20': -- resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} -- engines: {node: '>=12'} -- cpu: [arm64] -- os: [darwin] -+ os: [linux] - -- '@esbuild/darwin-arm64@0.25.5': -- resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} -+ '@esbuild/netbsd-arm64@0.25.5': -+ resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} - engines: {node: '>=18'} - cpu: [arm64] -- os: [darwin] -+ os: [netbsd] - -- '@esbuild/darwin-arm64@0.27.0': -- resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} -+ '@esbuild/netbsd-arm64@0.27.0': -+ resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} - engines: {node: '>=18'} - cpu: [arm64] -- os: [darwin] -+ os: [netbsd] - -- '@esbuild/darwin-arm64@0.27.3': -- resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} -+ '@esbuild/netbsd-arm64@0.27.3': -+ resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} - engines: {node: '>=18'} - cpu: [arm64] -- os: [darwin] -+ os: [netbsd] - -- '@esbuild/darwin-x64@0.18.20': -- resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} -+ '@esbuild/netbsd-x64@0.18.20': -+ resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] -- os: [darwin] -+ os: [netbsd] - -- '@esbuild/darwin-x64@0.25.5': -- resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} -+ '@esbuild/netbsd-x64@0.25.5': -+ resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} - engines: {node: '>=18'} - cpu: [x64] -- os: [darwin] -+ os: [netbsd] - -- '@esbuild/darwin-x64@0.27.0': -- resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} -+ '@esbuild/netbsd-x64@0.27.0': -+ resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} - engines: {node: '>=18'} - cpu: [x64] -- os: [darwin] -+ os: [netbsd] - -- '@esbuild/darwin-x64@0.27.3': -- resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} -+ '@esbuild/netbsd-x64@0.27.3': -+ resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} - engines: {node: '>=18'} - cpu: [x64] -- os: [darwin] -- -- '@esbuild/freebsd-arm64@0.18.20': -- resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} -- engines: {node: '>=12'} -- cpu: [arm64] -- os: [freebsd] -+ os: [netbsd] - -- '@esbuild/freebsd-arm64@0.25.5': -- resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} -+ '@esbuild/openbsd-arm64@0.25.5': -+ resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} - engines: {node: '>=18'} - cpu: [arm64] -- os: [freebsd] -+ os: [openbsd] - -- '@esbuild/freebsd-arm64@0.27.0': -- resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} -+ '@esbuild/openbsd-arm64@0.27.0': -+ resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} - engines: {node: '>=18'} - cpu: [arm64] -- os: [freebsd] -+ os: [openbsd] - -- '@esbuild/freebsd-arm64@0.27.3': -- resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} -+ '@esbuild/openbsd-arm64@0.27.3': -+ resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} - engines: {node: '>=18'} - cpu: [arm64] -- os: [freebsd] -+ os: [openbsd] - -- '@esbuild/freebsd-x64@0.18.20': -- resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} -+ '@esbuild/openbsd-x64@0.18.20': -+ resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] -- os: [freebsd] -+ os: [openbsd] - -- '@esbuild/freebsd-x64@0.25.5': -- resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} -+ '@esbuild/openbsd-x64@0.25.5': -+ resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} - engines: {node: '>=18'} - cpu: [x64] -- os: [freebsd] -+ os: [openbsd] - -- '@esbuild/freebsd-x64@0.27.0': -- resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} -+ '@esbuild/openbsd-x64@0.27.0': -+ resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} - engines: {node: '>=18'} - cpu: [x64] -- os: [freebsd] -+ os: [openbsd] - -- '@esbuild/freebsd-x64@0.27.3': -- resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} -+ '@esbuild/openbsd-x64@0.27.3': -+ resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} - engines: {node: '>=18'} - cpu: [x64] -- os: [freebsd] -+ os: [openbsd] - -- '@esbuild/linux-arm64@0.18.20': -- resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} -- engines: {node: '>=12'} -+ '@esbuild/openharmony-arm64@0.27.0': -+ resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} -+ engines: {node: '>=18'} - cpu: [arm64] -- os: [linux] -+ os: [openharmony] - -- '@esbuild/linux-arm64@0.25.5': -- resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} -+ '@esbuild/openharmony-arm64@0.27.3': -+ resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} - engines: {node: '>=18'} - cpu: [arm64] -- os: [linux] -+ os: [openharmony] - -- '@esbuild/linux-arm64@0.27.0': -- resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} -+ '@esbuild/sunos-x64@0.18.20': -+ resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} -+ engines: {node: '>=12'} -+ cpu: [x64] -+ os: [sunos] -+ -+ '@esbuild/sunos-x64@0.25.5': -+ resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} - engines: {node: '>=18'} -- cpu: [arm64] -- os: [linux] -+ cpu: [x64] -+ os: [sunos] - -- '@esbuild/linux-arm64@0.27.3': -- resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} -+ '@esbuild/sunos-x64@0.27.0': -+ resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} - engines: {node: '>=18'} -- cpu: [arm64] -- os: [linux] -+ cpu: [x64] -+ os: [sunos] - -- '@esbuild/linux-arm@0.18.20': -- resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} -+ '@esbuild/sunos-x64@0.27.3': -+ resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} -+ engines: {node: '>=18'} -+ cpu: [x64] -+ os: [sunos] -+ -+ '@esbuild/win32-arm64@0.18.20': -+ resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} -- cpu: [arm] -- os: [linux] -+ cpu: [arm64] -+ os: [win32] - -- '@esbuild/linux-arm@0.25.5': -- resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} -+ '@esbuild/win32-arm64@0.25.5': -+ resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} - engines: {node: '>=18'} -- cpu: [arm] -- os: [linux] -+ cpu: [arm64] -+ os: [win32] - -- '@esbuild/linux-arm@0.27.0': -- resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} -+ '@esbuild/win32-arm64@0.27.0': -+ resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} - engines: {node: '>=18'} -- cpu: [arm] -- os: [linux] -+ cpu: [arm64] -+ os: [win32] - -- '@esbuild/linux-arm@0.27.3': -- resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} -+ '@esbuild/win32-arm64@0.27.3': -+ resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} - engines: {node: '>=18'} -- cpu: [arm] -- os: [linux] -+ cpu: [arm64] -+ os: [win32] - -- '@esbuild/linux-ia32@0.18.20': -- resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} -+ '@esbuild/win32-ia32@0.18.20': -+ resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] -- os: [linux] -+ os: [win32] - -- '@esbuild/linux-ia32@0.25.5': -- resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} -+ '@esbuild/win32-ia32@0.25.5': -+ resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} - engines: {node: '>=18'} - cpu: [ia32] -- os: [linux] -+ os: [win32] - -- '@esbuild/linux-ia32@0.27.0': -- resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} -+ '@esbuild/win32-ia32@0.27.0': -+ resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} - engines: {node: '>=18'} - cpu: [ia32] -- os: [linux] -+ os: [win32] - -- '@esbuild/linux-ia32@0.27.3': -- resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} -+ '@esbuild/win32-ia32@0.27.3': -+ resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} - engines: {node: '>=18'} - cpu: [ia32] -- os: [linux] -+ os: [win32] - -- '@esbuild/linux-loong64@0.18.20': -- resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} -+ '@esbuild/win32-x64@0.18.20': -+ resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} -- cpu: [loong64] -- os: [linux] -+ cpu: [x64] -+ os: [win32] - -- '@esbuild/linux-loong64@0.25.5': -- resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} -+ '@esbuild/win32-x64@0.25.5': -+ resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} - engines: {node: '>=18'} -- cpu: [loong64] -- os: [linux] -+ cpu: [x64] -+ os: [win32] - -- '@esbuild/linux-loong64@0.27.0': -- resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} -+ '@esbuild/win32-x64@0.27.0': -+ resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} - engines: {node: '>=18'} -- cpu: [loong64] -- os: [linux] -+ cpu: [x64] -+ os: [win32] - -- '@esbuild/linux-loong64@0.27.3': -- resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} -+ '@esbuild/win32-x64@0.27.3': -+ resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} - engines: {node: '>=18'} -- cpu: [loong64] -- os: [linux] -- -- '@esbuild/linux-mips64el@0.18.20': -- resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} -- engines: {node: '>=12'} -- cpu: [mips64el] -- os: [linux] -+ cpu: [x64] -+ os: [win32] - -- '@esbuild/linux-mips64el@0.25.5': -- resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} -- engines: {node: '>=18'} -- cpu: [mips64el] -- os: [linux] -+ '@eslint-community/eslint-plugin-eslint-comments@4.4.1': -+ resolution: {integrity: sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==} -+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} -+ peerDependencies: -+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - -- '@esbuild/linux-mips64el@0.27.0': -- resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} -- engines: {node: '>=18'} -- cpu: [mips64el] -- os: [linux] -+ '@eslint-community/eslint-utils@4.9.1': -+ resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} -+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} -+ peerDependencies: -+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - -- '@esbuild/linux-mips64el@0.27.3': -- resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} -- engines: {node: '>=18'} -- cpu: [mips64el] -- os: [linux] -+ '@eslint-community/regexpp@4.12.1': -+ resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} -+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - -- '@esbuild/linux-ppc64@0.18.20': -- resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} -- engines: {node: '>=12'} -- cpu: [ppc64] -- os: [linux] -+ '@eslint/config-array@0.21.1': -+ resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} -+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - -- '@esbuild/linux-ppc64@0.25.5': -- resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} -- engines: {node: '>=18'} -- cpu: [ppc64] -- os: [linux] -+ '@eslint/config-helpers@0.4.2': -+ resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} -+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - -- '@esbuild/linux-ppc64@0.27.0': -- resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} -- engines: {node: '>=18'} -- cpu: [ppc64] -- os: [linux] -+ '@eslint/core@0.17.0': -+ resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} -+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - -- '@esbuild/linux-ppc64@0.27.3': -- resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} -- engines: {node: '>=18'} -- cpu: [ppc64] -- os: [linux] -+ '@eslint/eslintrc@2.1.4': -+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} -+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - -- '@esbuild/linux-riscv64@0.18.20': -- resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} -- engines: {node: '>=12'} -- cpu: [riscv64] -- os: [linux] -+ '@eslint/eslintrc@3.3.1': -+ resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} -+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - -- '@esbuild/linux-riscv64@0.25.5': -- resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} -- engines: {node: '>=18'} -- cpu: [riscv64] -- os: [linux] -+ '@eslint/js@8.57.1': -+ resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} -+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - -- '@esbuild/linux-riscv64@0.27.0': -- resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} -- engines: {node: '>=18'} -- cpu: [riscv64] -- os: [linux] -+ '@eslint/js@9.19.0': -+ resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} -+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - -- '@esbuild/linux-riscv64@0.27.3': -- resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} -- engines: {node: '>=18'} -- cpu: [riscv64] -- os: [linux] -+ '@eslint/js@9.39.1': -+ resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} -+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - -- '@esbuild/linux-s390x@0.18.20': -- resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} -- engines: {node: '>=12'} -- cpu: [s390x] -- os: [linux] -+ '@eslint/object-schema@2.1.7': -+ resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} -+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - -- '@esbuild/linux-s390x@0.25.5': -- resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} -- engines: {node: '>=18'} -- cpu: [s390x] -- os: [linux] -+ '@eslint/plugin-kit@0.4.1': -+ resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} -+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - -- '@esbuild/linux-s390x@0.27.0': -- resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} -- engines: {node: '>=18'} -- cpu: [s390x] -- os: [linux] -+ '@guardian/ab-core@8.0.0': -+ resolution: {integrity: sha512-I6KV03kROJPnU7FdRbqkmEAzsTDMMK/bgnB7rbL/qht8+hrK9y52ySFSJF5WX0zPX/9MoMRyAgmf+wBWOeogBA==} -+ peerDependencies: -+ tslib: ^2.6.2 -+ typescript: ~5.5.2 -+ peerDependenciesMeta: -+ typescript: -+ optional: true - -- '@esbuild/linux-s390x@0.27.3': -- resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} -- engines: {node: '>=18'} -- cpu: [s390x] -- os: [linux] -+ '@guardian/braze-components@22.2.0': -+ resolution: {integrity: sha512-uSkHd6mBVTAD+BrvJZNt+oSipYHQXBdVt9Pu/VTvkliXHzT8OUsep7ObIWM1lkf3znWbqLDhoXtwS5apX2AEWQ==} -+ engines: {node: ^18.15 || ^20.8} -+ peerDependencies: -+ '@emotion/react': ^11.1.2 -+ '@guardian/libs': ^16.0.0 -+ '@guardian/source': ^9.0.0 -+ react: 17.0.2 || 18.2.0 - -- '@esbuild/linux-x64@0.18.20': -- resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} -- engines: {node: '>=12'} -- cpu: [x64] -- os: [linux] -+ '@guardian/bridget@8.9.0': -+ resolution: {integrity: sha512-OAo45mzxGJeCVhfsle9r0J0tqOWcDL6EyL63324ovAwREC2Joj7zOnuhPPtFLx7pjvUl6qMQzuyIiWppZkFbiA==} - -- '@esbuild/linux-x64@0.25.5': -- resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [linux] -+ '@guardian/browserslist-config@6.1.0': -+ resolution: {integrity: sha512-qM0QxAv6E5IHXny5Okli6AZXEio0mpXzzEzz38qrb4IwO91R6eWVKyihdj0qW2k7TVxMFVOSfNmBZ1H5EiJhgw==} -+ peerDependencies: -+ browserslist: ^4.22.2 -+ tslib: ^2.6.2 - -- '@esbuild/linux-x64@0.27.0': -- resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [linux] -+ '@guardian/cdk@62.6.1': -+ resolution: {integrity: sha512-ZjQ501fQud8ja+TqAp1acvYFf05Qp3wKY1N+hBlsUCu2xbF2FuIDMcqhLcJe3dUb5wOpxC88kXunthVBxBB9ug==} -+ hasBin: true -+ peerDependencies: -+ aws-cdk: ^2.1110.0 -+ aws-cdk-lib: ^2.241.0 -+ constructs: ^10.5.1 - -- '@esbuild/linux-x64@0.27.3': -- resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [linux] -+ '@guardian/commercial-core@32.0.0': -+ resolution: {integrity: sha512-Wz2aPR/P/NFUFeTxmWD4VnHZ3Xgj7kJ8LD+Z4crYFSiqUG207gJWqVw8QcXVqJnz3XpR0J9foJQyG8HD9RdCjg==} -+ peerDependencies: -+ '@guardian/libs': ^30.1.0 - -- '@esbuild/netbsd-arm64@0.25.5': -- resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [netbsd] -+ '@guardian/core-web-vitals@7.0.0': -+ resolution: {integrity: sha512-1JLUQjkLY8SXYJqcy0TiE9/9hCcmyIlmMpRoW8Ygn/qGtyNxG+zzwkwsgtJIP+B0ZjtDqfukra2IV9l7wX5A0g==} -+ peerDependencies: -+ '@guardian/libs': ^18.0.0 -+ tslib: ^2.6.2 -+ typescript: ~5.5.2 -+ web-vitals: ^4.2.1 -+ peerDependenciesMeta: -+ typescript: -+ optional: true - -- '@esbuild/netbsd-arm64@0.27.0': -- resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [netbsd] -+ '@guardian/eslint-config-typescript@12.0.0': -+ resolution: {integrity: sha512-lEqYzdzaFKdA4CEc0pJHj+lytBSYZeao3b+GkcGaqEd6yZWkOpSWMxrQPVgiSt3Qgv7qHM/4C4U7KhLW6ycvEA==} -+ peerDependencies: -+ eslint: ^8.57.0 -+ tslib: ^2.6.2 -+ typescript: ~5.5.2 - -- '@esbuild/netbsd-arm64@0.27.3': -- resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [netbsd] -+ '@guardian/eslint-config@12.0.1': -+ resolution: {integrity: sha512-MS2+FSkcd9RncOZH2vLfZCoRsVywBHNZvit4E48+LRBG5J9mS+fqECoHAorqTKZpRRN/QszUhhs9YgKHn57rIg==} -+ peerDependencies: -+ eslint: ^9.19.0 - -- '@esbuild/netbsd-x64@0.18.20': -- resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} -- engines: {node: '>=12'} -- cpu: [x64] -- os: [netbsd] -+ '@guardian/eslint-config@9.0.0': -+ resolution: {integrity: sha512-fSijwPMzTcMVuuFS7V161B+GtES6KKRxYMYBUVjKv94eLo40XO5LeVEd6AaG8aEItxlMb+mC7ngDbwk4xAZ+Tw==} -+ peerDependencies: -+ eslint: ^8.57.0 -+ tslib: ^2.6.2 - -- '@esbuild/netbsd-x64@0.25.5': -- resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [netbsd] -+ '@guardian/identity-auth-frontend@8.1.0': -+ resolution: {integrity: sha512-2GzIsUBp8uiP+fRsKUpMrqJYSqokUCDo4q9WByi143CN0LRRWj2tVt23Y/+cZxWUuwDfRBxp1qbRnsy4QSMVLQ==} -+ peerDependencies: -+ '@guardian/identity-auth': ^6.0.0 -+ '@guardian/libs': ^21.0.0 -+ tslib: ^2.6.2 -+ typescript: ~5.5.2 -+ peerDependenciesMeta: -+ typescript: -+ optional: true - -- '@esbuild/netbsd-x64@0.27.0': -- resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [netbsd] -+ '@guardian/identity-auth@6.0.1': -+ resolution: {integrity: sha512-x6X7/+0w2ZLYZERUbkO69AjHJ7Jq2IDA5UJP8SrQPhJoTlSxKAl+13w77TcVX75IK7L8KldZscHMfOW1tSnq9g==} -+ peerDependencies: -+ '@guardian/libs': ^21.0.0 -+ tslib: ^2.6.2 -+ typescript: ~5.5.2 -+ peerDependenciesMeta: -+ typescript: -+ optional: true - -- '@esbuild/netbsd-x64@0.27.3': -- resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [netbsd] -+ '@guardian/libs@31.0.0': -+ resolution: {integrity: sha512-AWA2tfQY023E5412FuURsEXgl82MnsklOC2AcSbrOjdmvHbnugCeNiSNHsm6tAkzLZeumRJ+k72b/rhUIMOL0A==} -+ peerDependencies: -+ '@guardian/ophan-tracker-js': ^2.2.10 -+ tslib: ^2.8.1 -+ typescript: ~5.9.3 -+ peerDependenciesMeta: -+ typescript: -+ optional: true - -- '@esbuild/openbsd-arm64@0.25.5': -- resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [openbsd] -+ '@guardian/ophan-tracker-js@2.8.0': -+ resolution: {integrity: sha512-RPoyxPPKaT1em1LZiD1LKsTYzoXBG8Zjs4OzyP5dhEmfoXD99qK48JI4oGUPlq3wOOB0ZT8UrbtbWDKzeMSBHA==} -+ engines: {node: '>=16'} - -- '@esbuild/openbsd-arm64@0.27.0': -- resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [openbsd] -+ '@guardian/prettier@5.0.0': -+ resolution: {integrity: sha512-gJSQuuP7JVDOWQj4EUrwyJTnMt+frLkw0D2sLg70nHn76L3LmH2xTQtYMPUsqyqn37qocDPzgdvBdmATi50zRQ==} -+ peerDependencies: -+ prettier: ^3.0.0 -+ tslib: ^2.5.3 - -- '@esbuild/openbsd-arm64@0.27.3': -- resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [openbsd] -+ '@guardian/react-crossword@11.1.0': -+ resolution: {integrity: sha512-GfkyqCHCajiyuMdK8s/s8TH+LhADTcJeIXFEqbesCYp0wQO/DdTR27tRtaFhKqVRCgzRIKFyxd68HcAy+Z7eBQ==} -+ peerDependencies: -+ '@emotion/react': ^11.11.4 -+ '@guardian/libs': ^26.0.0 -+ '@guardian/source': ^11.0.0 -+ '@types/react': ^18.2.79 -+ react: ^18.2.0 -+ typescript: ~5.5.2 -+ peerDependenciesMeta: -+ '@types/react': -+ optional: true -+ typescript: -+ optional: true - -- '@esbuild/openbsd-x64@0.18.20': -- resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} -- engines: {node: '>=12'} -- cpu: [x64] -- os: [openbsd] -+ '@guardian/source-development-kitchen@18.1.1': -+ resolution: {integrity: sha512-wuMULnVjValyEz6YjrOPt054tXJkutkAbPdeV/KQHoSCSjAJnd0Cp3SZeoVog77HE/iZ0mnKaiVkK+QXpRVtCQ==} -+ peerDependencies: -+ '@emotion/react': ^11.11.4 -+ '@guardian/libs': ^22.0.0 -+ '@guardian/source': ^10.0.0 -+ '@types/react': ^18.2.79 -+ react: ^18.2.0 -+ tslib: ^2.6.2 -+ typescript: ~5.5.2 -+ peerDependenciesMeta: -+ '@emotion/react': -+ optional: true -+ '@types/react': -+ optional: true -+ react: -+ optional: true -+ typescript: -+ optional: true - -- '@esbuild/openbsd-x64@0.25.5': -- resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [openbsd] -+ '@guardian/source@11.3.0': -+ resolution: {integrity: sha512-J8KDoa/dZ926zkx1LdmoGo5i83znqjGDYuyOOc/UBcfH8dKbXDBmi4tvg8Xbl7/C4jSJpgG1JkjRHyzDarcAjg==} -+ peerDependencies: -+ '@emotion/react': ^11.11.4 -+ '@types/react': ^18.2.79 -+ react: ^18.2.0 -+ tslib: ^2.6.2 -+ typescript: ~5.5.2 -+ peerDependenciesMeta: -+ '@emotion/react': -+ optional: true -+ '@types/react': -+ optional: true -+ react: -+ optional: true -+ typescript: -+ optional: true - -- '@esbuild/openbsd-x64@0.27.0': -- resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [openbsd] -+ '@guardian/support-dotcom-components@8.4.2': -+ resolution: {integrity: sha512-vaVnksG7epJK2TO1KvbFm4nE94iHg74qtSYS5hdFVLkk0B0ar5mvfvB9hk5jJaZ5utzNPG1KP3tEqH2SlL9LMA==} -+ peerDependencies: -+ '@guardian/libs': ^22.0.0 -+ '@guardian/ophan-tracker-js': 2.8.0 -+ zod: ^4.1.12 - -- '@esbuild/openbsd-x64@0.27.3': -- resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [openbsd] -+ '@guardian/tsconfig@0.2.0': -+ resolution: {integrity: sha512-RauppalK+cQZDRK6IssVmDSnU/VyqMNuVOxPxhmI03kVRxEdwcmBuRqexHwDbnClVUxW/N9hYLbFNuAb9V/p+A==} - -- '@esbuild/openharmony-arm64@0.27.0': -- resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [openharmony] -+ '@guardian/tsconfig@1.0.1': -+ resolution: {integrity: sha512-PB24nZ6WTBB8aZ9EyxJw1vC5FYkGqwMQ/O5Oogp6P5HCQU5MN0JpUXvpYci7kwV2oXD1Az06UBnLyyVXOVMadQ==} - -- '@esbuild/openharmony-arm64@0.27.3': -- resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [openharmony] -+ '@humanfs/core@0.19.1': -+ resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} -+ engines: {node: '>=18.18.0'} - -- '@esbuild/sunos-x64@0.18.20': -- resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} -- engines: {node: '>=12'} -- cpu: [x64] -- os: [sunos] -+ '@humanfs/node@0.16.7': -+ resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} -+ engines: {node: '>=18.18.0'} - -- '@esbuild/sunos-x64@0.25.5': -- resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [sunos] -+ '@humanwhocodes/config-array@0.13.0': -+ resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} -+ engines: {node: '>=10.10.0'} -+ deprecated: Use @eslint/config-array instead - -- '@esbuild/sunos-x64@0.27.0': -- resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [sunos] -+ '@humanwhocodes/module-importer@1.0.1': -+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} -+ engines: {node: '>=12.22'} - -- '@esbuild/sunos-x64@0.27.3': -- resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [sunos] -+ '@humanwhocodes/object-schema@2.0.3': -+ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} -+ deprecated: Use @eslint/object-schema instead - -- '@esbuild/win32-arm64@0.18.20': -- resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} -- engines: {node: '>=12'} -- cpu: [arm64] -- os: [win32] -+ '@humanwhocodes/retry@0.4.3': -+ resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} -+ engines: {node: '>=18.18'} - -- '@esbuild/win32-arm64@0.25.5': -- resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [win32] -+ '@istanbuljs/load-nyc-config@1.1.0': -+ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} -+ engines: {node: '>=8'} - -- '@esbuild/win32-arm64@0.27.0': -- resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [win32] -+ '@istanbuljs/schema@0.1.3': -+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} -+ engines: {node: '>=8'} - -- '@esbuild/win32-arm64@0.27.3': -- resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} -- engines: {node: '>=18'} -- cpu: [arm64] -- os: [win32] -+ '@jest/console@29.7.0': -+ resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@esbuild/win32-ia32@0.18.20': -- resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} -- engines: {node: '>=12'} -- cpu: [ia32] -- os: [win32] -+ '@jest/core@29.7.0': -+ resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ peerDependencies: -+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 -+ peerDependenciesMeta: -+ node-notifier: -+ optional: true - -- '@esbuild/win32-ia32@0.25.5': -- resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} -- engines: {node: '>=18'} -- cpu: [ia32] -- os: [win32] -+ '@jest/create-cache-key-function@30.2.0': -+ resolution: {integrity: sha512-44F4l4Enf+MirJN8X/NhdGkl71k5rBYiwdVlo4HxOwbu0sHV8QKrGEedb1VUU4K3W7fBKE0HGfbn7eZm0Ti3zg==} -+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - -- '@esbuild/win32-ia32@0.27.0': -- resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} -- engines: {node: '>=18'} -- cpu: [ia32] -- os: [win32] -+ '@jest/environment@29.7.0': -+ resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@esbuild/win32-ia32@0.27.3': -- resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} -- engines: {node: '>=18'} -- cpu: [ia32] -- os: [win32] -+ '@jest/expect-utils@29.7.0': -+ resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@esbuild/win32-x64@0.18.20': -- resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} -- engines: {node: '>=12'} -- cpu: [x64] -- os: [win32] -+ '@jest/expect@29.7.0': -+ resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@esbuild/win32-x64@0.25.5': -- resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [win32] -+ '@jest/fake-timers@29.7.0': -+ resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@esbuild/win32-x64@0.27.0': -- resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [win32] -+ '@jest/globals@29.7.0': -+ resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@esbuild/win32-x64@0.27.3': -- resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} -- engines: {node: '>=18'} -- cpu: [x64] -- os: [win32] -+ '@jest/pattern@30.0.1': -+ resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} -+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - -- '@eslint-community/eslint-plugin-eslint-comments@4.4.1': -- resolution: {integrity: sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==} -- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} -+ '@jest/reporters@29.7.0': -+ resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: -- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 -+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 -+ peerDependenciesMeta: -+ node-notifier: -+ optional: true - -- '@eslint-community/eslint-utils@4.9.1': -- resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} -- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} -- peerDependencies: -- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 -- -- '@eslint-community/regexpp@4.12.1': -- resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} -- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} -- -- '@eslint/config-array@0.21.1': -- resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} -- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} -- -- '@eslint/config-helpers@0.4.2': -- resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} -- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} -- -- '@eslint/core@0.17.0': -- resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} -- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} -+ '@jest/schemas@29.6.3': -+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@eslint/eslintrc@2.1.4': -- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} -- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} -+ '@jest/schemas@30.0.5': -+ resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} -+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - -- '@eslint/eslintrc@3.3.1': -- resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} -- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} -+ '@jest/source-map@29.6.3': -+ resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@eslint/js@8.57.1': -- resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} -- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} -+ '@jest/test-result@29.7.0': -+ resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@eslint/js@9.19.0': -- resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} -- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} -+ '@jest/test-sequencer@29.7.0': -+ resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@eslint/js@9.39.1': -- resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} -- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} -+ '@jest/transform@29.7.0': -+ resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@eslint/object-schema@2.1.7': -- resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} -- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} -+ '@jest/types@29.6.3': -+ resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} -+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - -- '@eslint/plugin-kit@0.4.1': -- resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} -- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} -+ '@jest/types@30.2.0': -+ resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} -+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - -- '@guardian/ab-core@8.0.0': -- resolution: {integrity: sha512-I6KV03kROJPnU7FdRbqkmEAzsTDMMK/bgnB7rbL/qht8+hrK9y52ySFSJF5WX0zPX/9MoMRyAgmf+wBWOeogBA==} -+ '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4': -+ resolution: {integrity: sha512-6PyZBYKnnVNqOSB0YFly+62R7dmov8segT27A+RVTBVd4iAE6kbW9QBJGlyR2yG4D4ohzhZSTIu7BK1UTtmFFA==} - peerDependencies: -- tslib: ^2.6.2 -- typescript: ~5.5.2 -+ typescript: '>= 4.3.x' -+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - peerDependenciesMeta: - typescript: - optional: true - -- '@guardian/braze-components@22.2.0': -- resolution: {integrity: sha512-uSkHd6mBVTAD+BrvJZNt+oSipYHQXBdVt9Pu/VTvkliXHzT8OUsep7ObIWM1lkf3znWbqLDhoXtwS5apX2AEWQ==} -- engines: {node: ^18.15 || ^20.8} -- peerDependencies: -- '@emotion/react': ^11.1.2 -- '@guardian/libs': ^16.0.0 -- '@guardian/source': ^9.0.0 -- react: 17.0.2 || 18.2.0 -+ '@jridgewell/gen-mapping@0.3.13': -+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - -- '@guardian/bridget@8.9.0': -- resolution: {integrity: sha512-OAo45mzxGJeCVhfsle9r0J0tqOWcDL6EyL63324ovAwREC2Joj7zOnuhPPtFLx7pjvUl6qMQzuyIiWppZkFbiA==} -+ '@jridgewell/remapping@2.3.5': -+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - -- '@guardian/browserslist-config@6.1.0': -- resolution: {integrity: sha512-qM0QxAv6E5IHXny5Okli6AZXEio0mpXzzEzz38qrb4IwO91R6eWVKyihdj0qW2k7TVxMFVOSfNmBZ1H5EiJhgw==} -- peerDependencies: -- browserslist: ^4.22.2 -- tslib: ^2.6.2 -+ '@jridgewell/resolve-uri@3.1.2': -+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} -+ engines: {node: '>=6.0.0'} - -- '@guardian/cdk@62.6.1': -- resolution: {integrity: sha512-ZjQ501fQud8ja+TqAp1acvYFf05Qp3wKY1N+hBlsUCu2xbF2FuIDMcqhLcJe3dUb5wOpxC88kXunthVBxBB9ug==} -- hasBin: true -- peerDependencies: -- aws-cdk: ^2.1110.0 -- aws-cdk-lib: ^2.241.0 -- constructs: ^10.5.1 -+ '@jridgewell/source-map@0.3.11': -+ resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - -- '@guardian/commercial-core@32.0.0': -- resolution: {integrity: sha512-Wz2aPR/P/NFUFeTxmWD4VnHZ3Xgj7kJ8LD+Z4crYFSiqUG207gJWqVw8QcXVqJnz3XpR0J9foJQyG8HD9RdCjg==} -- peerDependencies: -- '@guardian/libs': ^30.1.0 -+ '@jridgewell/sourcemap-codec@1.5.5': -+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - -- '@guardian/core-web-vitals@7.0.0': -- resolution: {integrity: sha512-1JLUQjkLY8SXYJqcy0TiE9/9hCcmyIlmMpRoW8Ygn/qGtyNxG+zzwkwsgtJIP+B0ZjtDqfukra2IV9l7wX5A0g==} -- peerDependencies: -- '@guardian/libs': ^18.0.0 -- tslib: ^2.6.2 -- typescript: ~5.5.2 -- web-vitals: ^4.2.1 -- peerDependenciesMeta: -- typescript: -- optional: true -+ '@jridgewell/trace-mapping@0.3.31': -+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - -- '@guardian/eslint-config-typescript@12.0.0': -- resolution: {integrity: sha512-lEqYzdzaFKdA4CEc0pJHj+lytBSYZeao3b+GkcGaqEd6yZWkOpSWMxrQPVgiSt3Qgv7qHM/4C4U7KhLW6ycvEA==} -- peerDependencies: -- eslint: ^8.57.0 -- tslib: ^2.6.2 -- typescript: ~5.5.2 -+ '@jridgewell/trace-mapping@0.3.9': -+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - -- '@guardian/eslint-config@12.0.1': -- resolution: {integrity: sha512-MS2+FSkcd9RncOZH2vLfZCoRsVywBHNZvit4E48+LRBG5J9mS+fqECoHAorqTKZpRRN/QszUhhs9YgKHn57rIg==} -+ '@keyv/bigmap@1.3.1': -+ resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} -+ engines: {node: '>= 18'} - peerDependencies: -- eslint: ^9.19.0 -+ keyv: ^5.6.0 - -- '@guardian/eslint-config@9.0.0': -- resolution: {integrity: sha512-fSijwPMzTcMVuuFS7V161B+GtES6KKRxYMYBUVjKv94eLo40XO5LeVEd6AaG8aEItxlMb+mC7ngDbwk4xAZ+Tw==} -+ '@keyv/serialize@1.1.1': -+ resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} -+ -+ '@mdx-js/react@3.1.1': -+ resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} - peerDependencies: -- eslint: ^8.57.0 -- tslib: ^2.6.2 -+ '@types/react': '>=16' -+ react: '>=16' - -- '@guardian/identity-auth-frontend@8.1.0': -- resolution: {integrity: sha512-2GzIsUBp8uiP+fRsKUpMrqJYSqokUCDo4q9WByi143CN0LRRWj2tVt23Y/+cZxWUuwDfRBxp1qbRnsy4QSMVLQ==} -+ '@nodelib/fs.scandir@2.1.5': -+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} -+ engines: {node: '>= 8'} -+ -+ '@nodelib/fs.stat@2.0.5': -+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} -+ engines: {node: '>= 8'} -+ -+ '@nodelib/fs.walk@1.2.8': -+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} -+ engines: {node: '>= 8'} -+ -+ '@nolyfill/is-core-module@1.0.39': -+ resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} -+ engines: {node: '>=12.4.0'} -+ -+ '@okta/jwt-verifier@4.0.2': -+ resolution: {integrity: sha512-sB1FB0EOtkVSG1VDRBgwSyavttORLXaP2Ru28p2SFeo0Wo7iKjHad4poyCMkrxi1hwrLcBJM1ezznrev/tYTIA==} -+ engines: {node: '>=14'} -+ -+ '@playwright/test@1.58.0': -+ resolution: {integrity: sha512-fWza+Lpbj6SkQKCrU6si4iu+fD2dD3gxNHFhUPxsfXBPhnv3rRSQVd0NtBUT9Z/RhF/boCBcuUaMUSTRTopjZg==} -+ engines: {node: '>=18'} -+ hasBin: true -+ -+ '@polka/url@1.0.0-next.29': -+ resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} -+ -+ '@rollup/plugin-commonjs@29.0.0': -+ resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} -+ engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: -- '@guardian/identity-auth': ^6.0.0 -- '@guardian/libs': ^21.0.0 -- tslib: ^2.6.2 -- typescript: ~5.5.2 -+ rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: -- typescript: -+ rollup: - optional: true - -- '@guardian/identity-auth@6.0.1': -- resolution: {integrity: sha512-x6X7/+0w2ZLYZERUbkO69AjHJ7Jq2IDA5UJP8SrQPhJoTlSxKAl+13w77TcVX75IK7L8KldZscHMfOW1tSnq9g==} -+ '@rollup/plugin-inject@5.0.5': -+ resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} -+ engines: {node: '>=14.0.0'} - peerDependencies: -- '@guardian/libs': ^21.0.0 -- tslib: ^2.6.2 -- typescript: ~5.5.2 -+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: -- typescript: -+ rollup: - optional: true - -- '@guardian/libs@31.0.0': -- resolution: {integrity: sha512-AWA2tfQY023E5412FuURsEXgl82MnsklOC2AcSbrOjdmvHbnugCeNiSNHsm6tAkzLZeumRJ+k72b/rhUIMOL0A==} -+ '@rollup/plugin-json@6.1.0': -+ resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} -+ engines: {node: '>=14.0.0'} - peerDependencies: -- '@guardian/ophan-tracker-js': ^2.2.10 -- tslib: ^2.8.1 -- typescript: ~5.9.3 -+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: -- typescript: -+ rollup: - optional: true - -- '@guardian/ophan-tracker-js@2.8.0': -- resolution: {integrity: sha512-RPoyxPPKaT1em1LZiD1LKsTYzoXBG8Zjs4OzyP5dhEmfoXD99qK48JI4oGUPlq3wOOB0ZT8UrbtbWDKzeMSBHA==} -- engines: {node: '>=16'} -- -- '@guardian/prettier@5.0.0': -- resolution: {integrity: sha512-gJSQuuP7JVDOWQj4EUrwyJTnMt+frLkw0D2sLg70nHn76L3LmH2xTQtYMPUsqyqn37qocDPzgdvBdmATi50zRQ==} -- peerDependencies: -- prettier: ^3.0.0 -- tslib: ^2.5.3 -- -- '@guardian/react-crossword@11.1.0': -- resolution: {integrity: sha512-GfkyqCHCajiyuMdK8s/s8TH+LhADTcJeIXFEqbesCYp0wQO/DdTR27tRtaFhKqVRCgzRIKFyxd68HcAy+Z7eBQ==} -+ '@rollup/plugin-node-resolve@16.0.3': -+ resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} -+ engines: {node: '>=14.0.0'} - peerDependencies: -- '@emotion/react': ^11.11.4 -- '@guardian/libs': ^26.0.0 -- '@guardian/source': ^11.0.0 -- '@types/react': ^18.2.79 -- react: ^18.2.0 -- typescript: ~5.5.2 -+ rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: -- '@types/react': -- optional: true -- typescript: -+ rollup: - optional: true - -- '@guardian/shimport@1.0.2': -- resolution: {integrity: sha512-o35TxvMFfpQTGL6flW0ggIfU4tPlXp0PqY9vPL2Fx+68qy+s+uX4T0+dN3+JeoBad9QrRZoHfZPALvZlrRWfHw==} -- -- '@guardian/source-development-kitchen@18.1.1': -- resolution: {integrity: sha512-wuMULnVjValyEz6YjrOPt054tXJkutkAbPdeV/KQHoSCSjAJnd0Cp3SZeoVog77HE/iZ0mnKaiVkK+QXpRVtCQ==} -+ '@rollup/pluginutils@5.3.0': -+ resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} -+ engines: {node: '>=14.0.0'} - peerDependencies: -- '@emotion/react': ^11.11.4 -- '@guardian/libs': ^22.0.0 -- '@guardian/source': ^10.0.0 -- '@types/react': ^18.2.79 -- react: ^18.2.0 -- tslib: ^2.6.2 -- typescript: ~5.5.2 -+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: -- '@emotion/react': -- optional: true -- '@types/react': -- optional: true -- react: -- optional: true -- typescript: -+ rollup: - optional: true - -- '@guardian/source@11.3.0': -- resolution: {integrity: sha512-J8KDoa/dZ926zkx1LdmoGo5i83znqjGDYuyOOc/UBcfH8dKbXDBmi4tvg8Xbl7/C4jSJpgG1JkjRHyzDarcAjg==} -- peerDependencies: -- '@emotion/react': ^11.11.4 -- '@types/react': ^18.2.79 -- react: ^18.2.0 -- tslib: ^2.6.2 -- typescript: ~5.5.2 -- peerDependenciesMeta: -- '@emotion/react': -- optional: true -- '@types/react': -- optional: true -- react: -- optional: true -- typescript: -- optional: true -+ '@rollup/rollup-android-arm-eabi@4.59.0': -+ resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} -+ cpu: [arm] -+ os: [android] - -- '@guardian/support-dotcom-components@8.4.2': -- resolution: {integrity: sha512-vaVnksG7epJK2TO1KvbFm4nE94iHg74qtSYS5hdFVLkk0B0ar5mvfvB9hk5jJaZ5utzNPG1KP3tEqH2SlL9LMA==} -- peerDependencies: -- '@guardian/libs': ^22.0.0 -- '@guardian/ophan-tracker-js': 2.8.0 -- zod: ^4.1.12 -+ '@rollup/rollup-android-arm64@4.59.0': -+ resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} -+ cpu: [arm64] -+ os: [android] - -- '@guardian/tsconfig@0.2.0': -- resolution: {integrity: sha512-RauppalK+cQZDRK6IssVmDSnU/VyqMNuVOxPxhmI03kVRxEdwcmBuRqexHwDbnClVUxW/N9hYLbFNuAb9V/p+A==} -+ '@rollup/rollup-darwin-arm64@4.59.0': -+ resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} -+ cpu: [arm64] -+ os: [darwin] - -- '@guardian/tsconfig@1.0.1': -- resolution: {integrity: sha512-PB24nZ6WTBB8aZ9EyxJw1vC5FYkGqwMQ/O5Oogp6P5HCQU5MN0JpUXvpYci7kwV2oXD1Az06UBnLyyVXOVMadQ==} -+ '@rollup/rollup-darwin-x64@4.59.0': -+ resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} -+ cpu: [x64] -+ os: [darwin] - -- '@humanfs/core@0.19.1': -- resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} -- engines: {node: '>=18.18.0'} -+ '@rollup/rollup-freebsd-arm64@4.59.0': -+ resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} -+ cpu: [arm64] -+ os: [freebsd] - -- '@humanfs/node@0.16.7': -- resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} -- engines: {node: '>=18.18.0'} -+ '@rollup/rollup-freebsd-x64@4.59.0': -+ resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} -+ cpu: [x64] -+ os: [freebsd] - -- '@humanwhocodes/config-array@0.13.0': -- resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} -- engines: {node: '>=10.10.0'} -- deprecated: Use @eslint/config-array instead -+ '@rollup/rollup-linux-arm-gnueabihf@4.59.0': -+ resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} -+ cpu: [arm] -+ os: [linux] - -- '@humanwhocodes/module-importer@1.0.1': -- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} -- engines: {node: '>=12.22'} -+ '@rollup/rollup-linux-arm-musleabihf@4.59.0': -+ resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} -+ cpu: [arm] -+ os: [linux] - -- '@humanwhocodes/object-schema@2.0.3': -- resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} -- deprecated: Use @eslint/object-schema instead -+ '@rollup/rollup-linux-arm64-gnu@4.59.0': -+ resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} -+ cpu: [arm64] -+ os: [linux] - -- '@humanwhocodes/retry@0.4.3': -- resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} -- engines: {node: '>=18.18'} -+ '@rollup/rollup-linux-arm64-musl@4.59.0': -+ resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} -+ cpu: [arm64] -+ os: [linux] - -- '@istanbuljs/load-nyc-config@1.1.0': -- resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} -- engines: {node: '>=8'} -+ '@rollup/rollup-linux-loong64-gnu@4.59.0': -+ resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} -+ cpu: [loong64] -+ os: [linux] - -- '@istanbuljs/schema@0.1.3': -- resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} -- engines: {node: '>=8'} -+ '@rollup/rollup-linux-loong64-musl@4.59.0': -+ resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} -+ cpu: [loong64] -+ os: [linux] - -- '@jest/console@29.7.0': -- resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@rollup/rollup-linux-ppc64-gnu@4.59.0': -+ resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} -+ cpu: [ppc64] -+ os: [linux] - -- '@jest/core@29.7.0': -- resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -- peerDependencies: -- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 -- peerDependenciesMeta: -- node-notifier: -- optional: true -+ '@rollup/rollup-linux-ppc64-musl@4.59.0': -+ resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} -+ cpu: [ppc64] -+ os: [linux] - -- '@jest/create-cache-key-function@30.2.0': -- resolution: {integrity: sha512-44F4l4Enf+MirJN8X/NhdGkl71k5rBYiwdVlo4HxOwbu0sHV8QKrGEedb1VUU4K3W7fBKE0HGfbn7eZm0Ti3zg==} -- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} -+ '@rollup/rollup-linux-riscv64-gnu@4.59.0': -+ resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} -+ cpu: [riscv64] -+ os: [linux] - -- '@jest/environment@29.7.0': -- resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@rollup/rollup-linux-riscv64-musl@4.59.0': -+ resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} -+ cpu: [riscv64] -+ os: [linux] - -- '@jest/expect-utils@29.7.0': -- resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@rollup/rollup-linux-s390x-gnu@4.59.0': -+ resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} -+ cpu: [s390x] -+ os: [linux] - -- '@jest/expect@29.7.0': -- resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@rollup/rollup-linux-x64-gnu@4.59.0': -+ resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} -+ cpu: [x64] -+ os: [linux] - -- '@jest/fake-timers@29.7.0': -- resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@rollup/rollup-linux-x64-musl@4.59.0': -+ resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} -+ cpu: [x64] -+ os: [linux] - -- '@jest/globals@29.7.0': -- resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@rollup/rollup-openbsd-x64@4.59.0': -+ resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} -+ cpu: [x64] -+ os: [openbsd] - -- '@jest/pattern@30.0.1': -- resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} -- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} -+ '@rollup/rollup-openharmony-arm64@4.59.0': -+ resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} -+ cpu: [arm64] -+ os: [openharmony] - -- '@jest/reporters@29.7.0': -- resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -- peerDependencies: -- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 -- peerDependenciesMeta: -- node-notifier: -- optional: true -+ '@rollup/rollup-win32-arm64-msvc@4.59.0': -+ resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} -+ cpu: [arm64] -+ os: [win32] - -- '@jest/schemas@29.6.3': -- resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@rollup/rollup-win32-ia32-msvc@4.59.0': -+ resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} -+ cpu: [ia32] -+ os: [win32] - -- '@jest/schemas@30.0.5': -- resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} -- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} -+ '@rollup/rollup-win32-x64-gnu@4.59.0': -+ resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} -+ cpu: [x64] -+ os: [win32] - -- '@jest/source-map@29.6.3': -- resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@rollup/rollup-win32-x64-msvc@4.59.0': -+ resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} -+ cpu: [x64] -+ os: [win32] - -- '@jest/test-result@29.7.0': -- resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@sec-ant/readable-stream@0.4.1': -+ resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - -- '@jest/test-sequencer@29.7.0': -- resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@sentry-internal/browser-utils@10.39.0': -+ resolution: {integrity: sha512-W6WODonMGiI13Az5P7jd/m2lj/JpIyuVKg7wE4X+YdlMehLspAv6I7gRE4OBSumS14ZjdaYDpD/lwtnBwKAzcA==} -+ engines: {node: '>=18'} - -- '@jest/transform@29.7.0': -- resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@sentry-internal/feedback@10.39.0': -+ resolution: {integrity: sha512-cRXmmDeOr5FzVsBNRLU4WDEuC3fhuD0XV362EWl4DI3XBGao8ukaueKcLIKic5WZx6uXimjWw/UJmDLgxeCqkg==} -+ engines: {node: '>=18'} - -- '@jest/types@29.6.3': -- resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} -- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} -+ '@sentry-internal/replay-canvas@10.39.0': -+ resolution: {integrity: sha512-TTiX0XWCcqTqFGJjEZYObk93j/sJmXcqPzcu0cN2mIkKnnaHDY3w74SHZCshKqIr0AOQdt1HDNa36s3TCdt0Jw==} -+ engines: {node: '>=18'} - -- '@jest/types@30.2.0': -- resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} -- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} -+ '@sentry-internal/replay@10.39.0': -+ resolution: {integrity: sha512-obZoYOrUfxIYBHkmtPpItRdE38VuzF1VIxSgZ8Mbtq/9UvCWh+eOaVWU2stN/cVu1KYuYX0nQwBvdN28L6y/JA==} -+ engines: {node: '>=18'} - -- '@jridgewell/gen-mapping@0.3.13': -- resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} -+ '@sentry/browser@10.39.0': -+ resolution: {integrity: sha512-I50W/1PDJWyqgNrGufGhBYCmmO3Bb159nx2Ut2bKoVveTfgH/hLEtDyW0kHo8Fu454mW+ukyXfU4L4s+kB9aaw==} -+ engines: {node: '>=18'} - -- '@jridgewell/remapping@2.3.5': -- resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} -+ '@sentry/core@10.39.0': -+ resolution: {integrity: sha512-xCLip2mBwCdRrvXHtVEULX0NffUTYZZBhEUGht0WFL+GNdNQ7gmBOGOczhZlrf2hgFFtDO0fs1xiP9bqq5orEQ==} -+ engines: {node: '>=18'} - -- '@jridgewell/resolve-uri@3.1.2': -- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} -- engines: {node: '>=6.0.0'} -+ '@sinclair/typebox@0.27.8': -+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - -- '@jridgewell/source-map@0.3.11': -- resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} -+ '@sinclair/typebox@0.34.41': -+ resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} - -- '@jridgewell/sourcemap-codec@1.5.5': -- resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} -+ '@sindresorhus/is@5.6.0': -+ resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} -+ engines: {node: '>=14.16'} - -- '@jridgewell/trace-mapping@0.3.31': -- resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} -+ '@sinonjs/commons@3.0.0': -+ resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} - -- '@jridgewell/trace-mapping@0.3.9': -- resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} -- -- '@jsonjoy.com/base64@1.1.2': -- resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} -- engines: {node: '>=10.0'} -- peerDependencies: -- tslib: '2' -- -- '@jsonjoy.com/buffers@1.2.1': -- resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} -- engines: {node: '>=10.0'} -- peerDependencies: -- tslib: '2' -+ '@sinonjs/fake-timers@10.3.0': -+ resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - -- '@jsonjoy.com/codegen@1.0.0': -- resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} -- engines: {node: '>=10.0'} -- peerDependencies: -- tslib: '2' -+ '@smithy/abort-controller@4.2.12': -+ resolution: {integrity: sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==} -+ engines: {node: '>=18.0.0'} - -- '@jsonjoy.com/json-pack@1.21.0': -- resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} -- engines: {node: '>=10.0'} -- peerDependencies: -- tslib: '2' -+ '@smithy/chunked-blob-reader-native@4.2.1': -+ resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} -+ engines: {node: '>=18.0.0'} - -- '@jsonjoy.com/json-pointer@1.0.2': -- resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} -- engines: {node: '>=10.0'} -- peerDependencies: -- tslib: '2' -+ '@smithy/chunked-blob-reader@5.2.0': -+ resolution: {integrity: sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==} -+ engines: {node: '>=18.0.0'} - -- '@jsonjoy.com/util@1.9.0': -- resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} -- engines: {node: '>=10.0'} -- peerDependencies: -- tslib: '2' -+ '@smithy/config-resolver@4.4.13': -+ resolution: {integrity: sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==} -+ engines: {node: '>=18.0.0'} - -- '@keyv/bigmap@1.3.1': -- resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} -- engines: {node: '>= 18'} -- peerDependencies: -- keyv: ^5.6.0 -+ '@smithy/core@3.23.12': -+ resolution: {integrity: sha512-o9VycsYNtgC+Dy3I0yrwCqv9CWicDnke0L7EVOrZtJpjb2t0EjaEofmMrYc0T1Kn3yk32zm6cspxF9u9Bj7e5w==} -+ engines: {node: '>=18.0.0'} - -- '@keyv/serialize@1.1.1': -- resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} -+ '@smithy/credential-provider-imds@4.2.12': -+ resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==} -+ engines: {node: '>=18.0.0'} - -- '@leichtgewicht/ip-codec@2.0.5': -- resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} -+ '@smithy/eventstream-codec@4.2.8': -+ resolution: {integrity: sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==} -+ engines: {node: '>=18.0.0'} - -- '@mdx-js/react@3.1.1': -- resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} -- peerDependencies: -- '@types/react': '>=16' -- react: '>=16' -+ '@smithy/eventstream-serde-browser@4.2.8': -+ resolution: {integrity: sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==} -+ engines: {node: '>=18.0.0'} - -- '@nodelib/fs.scandir@2.1.5': -- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} -- engines: {node: '>= 8'} -+ '@smithy/eventstream-serde-config-resolver@4.3.8': -+ resolution: {integrity: sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==} -+ engines: {node: '>=18.0.0'} - -- '@nodelib/fs.stat@2.0.5': -- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} -- engines: {node: '>= 8'} -+ '@smithy/eventstream-serde-node@4.2.8': -+ resolution: {integrity: sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==} -+ engines: {node: '>=18.0.0'} - -- '@nodelib/fs.walk@1.2.8': -- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} -- engines: {node: '>= 8'} -+ '@smithy/eventstream-serde-universal@4.2.8': -+ resolution: {integrity: sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==} -+ engines: {node: '>=18.0.0'} - -- '@nolyfill/is-core-module@1.0.39': -- resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} -- engines: {node: '>=12.4.0'} -+ '@smithy/fetch-http-handler@5.3.15': -+ resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==} -+ engines: {node: '>=18.0.0'} - -- '@okta/jwt-verifier@4.0.2': -- resolution: {integrity: sha512-sB1FB0EOtkVSG1VDRBgwSyavttORLXaP2Ru28p2SFeo0Wo7iKjHad4poyCMkrxi1hwrLcBJM1ezznrev/tYTIA==} -- engines: {node: '>=14'} -+ '@smithy/hash-blob-browser@4.2.9': -+ resolution: {integrity: sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==} -+ engines: {node: '>=18.0.0'} - -- '@playwright/test@1.58.0': -- resolution: {integrity: sha512-fWza+Lpbj6SkQKCrU6si4iu+fD2dD3gxNHFhUPxsfXBPhnv3rRSQVd0NtBUT9Z/RhF/boCBcuUaMUSTRTopjZg==} -- engines: {node: '>=18'} -- hasBin: true -+ '@smithy/hash-node@4.2.12': -+ resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==} -+ engines: {node: '>=18.0.0'} - -- '@polka/url@1.0.0-next.29': -- resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} -+ '@smithy/hash-stream-node@4.2.8': -+ resolution: {integrity: sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/plugin-commonjs@29.0.0': -- resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} -- engines: {node: '>=16.0.0 || 14 >= 14.17'} -- peerDependencies: -- rollup: ^2.68.0||^3.0.0||^4.0.0 -- peerDependenciesMeta: -- rollup: -- optional: true -+ '@smithy/invalid-dependency@4.2.12': -+ resolution: {integrity: sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/plugin-inject@5.0.5': -- resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} -+ '@smithy/is-array-buffer@2.2.0': -+ resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} -- peerDependencies: -- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 -- peerDependenciesMeta: -- rollup: -- optional: true - -- '@rollup/plugin-json@6.1.0': -- resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} -- engines: {node: '>=14.0.0'} -- peerDependencies: -- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 -- peerDependenciesMeta: -- rollup: -- optional: true -+ '@smithy/is-array-buffer@4.2.2': -+ resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/plugin-node-resolve@16.0.3': -- resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} -- engines: {node: '>=14.0.0'} -- peerDependencies: -- rollup: ^2.78.0||^3.0.0||^4.0.0 -- peerDependenciesMeta: -- rollup: -- optional: true -+ '@smithy/md5-js@4.2.8': -+ resolution: {integrity: sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/pluginutils@5.3.0': -- resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} -- engines: {node: '>=14.0.0'} -- peerDependencies: -- rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 -- peerDependenciesMeta: -- rollup: -- optional: true -+ '@smithy/middleware-compression@4.3.32': -+ resolution: {integrity: sha512-k2juJHA58gqAgnEshBW4b+CqCEaYEGSr6Hms4YIsDdUCHSbFy/JWDWEaNpjNDrlt9h/QuoRycTp1gTXJ1vdpdg==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-android-arm-eabi@4.59.0': -- resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} -- cpu: [arm] -- os: [android] -+ '@smithy/middleware-content-length@4.2.12': -+ resolution: {integrity: sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-android-arm64@4.59.0': -- resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} -- cpu: [arm64] -- os: [android] -+ '@smithy/middleware-endpoint@4.4.27': -+ resolution: {integrity: sha512-T3TFfUgXQlpcg+UdzcAISdZpj4Z+XECZ/cefgA6wLBd6V4lRi0svN2hBouN/be9dXQ31X4sLWz3fAQDf+nt6BA==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-darwin-arm64@4.59.0': -- resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} -- cpu: [arm64] -- os: [darwin] -+ '@smithy/middleware-retry@4.4.44': -+ resolution: {integrity: sha512-Y1Rav7m5CFRPQyM4CI0koD/bXjyjJu3EQxZZhtLGD88WIrBrQ7kqXM96ncd6rYnojwOo/u9MXu57JrEvu/nLrA==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-darwin-x64@4.59.0': -- resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} -- cpu: [x64] -- os: [darwin] -+ '@smithy/middleware-serde@4.2.15': -+ resolution: {integrity: sha512-ExYhcltZSli0pgAKOpQQe1DLFBLryeZ22605y/YS+mQpdNWekum9Ujb/jMKfJKgjtz1AZldtwA/wCYuKJgjjlg==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-freebsd-arm64@4.59.0': -- resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} -- cpu: [arm64] -- os: [freebsd] -+ '@smithy/middleware-stack@4.2.12': -+ resolution: {integrity: sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-freebsd-x64@4.59.0': -- resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} -- cpu: [x64] -- os: [freebsd] -+ '@smithy/node-config-provider@4.3.12': -+ resolution: {integrity: sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-linux-arm-gnueabihf@4.59.0': -- resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} -- cpu: [arm] -- os: [linux] -+ '@smithy/node-http-handler@4.5.0': -+ resolution: {integrity: sha512-Rnq9vQWiR1+/I6NZZMNzJHV6pZYyEHt2ZnuV3MG8z2NNenC4i/8Kzttz7CjZiHSmsN5frhXhg17z3Zqjjhmz1A==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-linux-arm-musleabihf@4.59.0': -- resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} -- cpu: [arm] -- os: [linux] -+ '@smithy/property-provider@4.2.12': -+ resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-linux-arm64-gnu@4.59.0': -- resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} -- cpu: [arm64] -- os: [linux] -+ '@smithy/protocol-http@5.3.12': -+ resolution: {integrity: sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-linux-arm64-musl@4.59.0': -- resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} -- cpu: [arm64] -- os: [linux] -+ '@smithy/querystring-builder@4.2.12': -+ resolution: {integrity: sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-linux-loong64-gnu@4.59.0': -- resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} -- cpu: [loong64] -- os: [linux] -+ '@smithy/querystring-parser@4.2.12': -+ resolution: {integrity: sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-linux-loong64-musl@4.59.0': -- resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} -- cpu: [loong64] -- os: [linux] -+ '@smithy/service-error-classification@4.2.12': -+ resolution: {integrity: sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-linux-ppc64-gnu@4.59.0': -- resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} -- cpu: [ppc64] -- os: [linux] -+ '@smithy/shared-ini-file-loader@4.4.7': -+ resolution: {integrity: sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-linux-ppc64-musl@4.59.0': -- resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} -- cpu: [ppc64] -- os: [linux] -+ '@smithy/signature-v4@5.3.12': -+ resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-linux-riscv64-gnu@4.59.0': -- resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} -- cpu: [riscv64] -- os: [linux] -+ '@smithy/smithy-client@4.12.7': -+ resolution: {integrity: sha512-q3gqnwml60G44FECaEEsdQMplYhDMZYCtYhMCzadCnRnnHIobZJjegmdoUo6ieLQlPUzvrMdIJUpx6DoPmzANQ==} -+ engines: {node: '>=18.0.0'} - -- '@rollup/rollup-linux-riscv64-musl@4.59.0': -- resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} -- cpu: [riscv64] -- os: [linux] -- -- '@rollup/rollup-linux-s390x-gnu@4.59.0': -- resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} -- cpu: [s390x] -- os: [linux] -- -- '@rollup/rollup-linux-x64-gnu@4.59.0': -- resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} -- cpu: [x64] -- os: [linux] -- -- '@rollup/rollup-linux-x64-musl@4.59.0': -- resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} -- cpu: [x64] -- os: [linux] -- -- '@rollup/rollup-openbsd-x64@4.59.0': -- resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} -- cpu: [x64] -- os: [openbsd] -- -- '@rollup/rollup-openharmony-arm64@4.59.0': -- resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} -- cpu: [arm64] -- os: [openharmony] -- -- '@rollup/rollup-win32-arm64-msvc@4.59.0': -- resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} -- cpu: [arm64] -- os: [win32] -- -- '@rollup/rollup-win32-ia32-msvc@4.59.0': -- resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} -- cpu: [ia32] -- os: [win32] -- -- '@rollup/rollup-win32-x64-gnu@4.59.0': -- resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} -- cpu: [x64] -- os: [win32] -- -- '@rollup/rollup-win32-x64-msvc@4.59.0': -- resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} -- cpu: [x64] -- os: [win32] -- -- '@sec-ant/readable-stream@0.4.1': -- resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} -- -- '@sentry-internal/browser-utils@10.39.0': -- resolution: {integrity: sha512-W6WODonMGiI13Az5P7jd/m2lj/JpIyuVKg7wE4X+YdlMehLspAv6I7gRE4OBSumS14ZjdaYDpD/lwtnBwKAzcA==} -- engines: {node: '>=18'} -- -- '@sentry-internal/feedback@10.39.0': -- resolution: {integrity: sha512-cRXmmDeOr5FzVsBNRLU4WDEuC3fhuD0XV362EWl4DI3XBGao8ukaueKcLIKic5WZx6uXimjWw/UJmDLgxeCqkg==} -- engines: {node: '>=18'} -- -- '@sentry-internal/replay-canvas@10.39.0': -- resolution: {integrity: sha512-TTiX0XWCcqTqFGJjEZYObk93j/sJmXcqPzcu0cN2mIkKnnaHDY3w74SHZCshKqIr0AOQdt1HDNa36s3TCdt0Jw==} -- engines: {node: '>=18'} -- -- '@sentry-internal/replay@10.39.0': -- resolution: {integrity: sha512-obZoYOrUfxIYBHkmtPpItRdE38VuzF1VIxSgZ8Mbtq/9UvCWh+eOaVWU2stN/cVu1KYuYX0nQwBvdN28L6y/JA==} -- engines: {node: '>=18'} -- -- '@sentry/browser@10.39.0': -- resolution: {integrity: sha512-I50W/1PDJWyqgNrGufGhBYCmmO3Bb159nx2Ut2bKoVveTfgH/hLEtDyW0kHo8Fu454mW+ukyXfU4L4s+kB9aaw==} -- engines: {node: '>=18'} -- -- '@sentry/core@10.39.0': -- resolution: {integrity: sha512-xCLip2mBwCdRrvXHtVEULX0NffUTYZZBhEUGht0WFL+GNdNQ7gmBOGOczhZlrf2hgFFtDO0fs1xiP9bqq5orEQ==} -- engines: {node: '>=18'} -- -- '@sinclair/typebox@0.27.8': -- resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} -- -- '@sinclair/typebox@0.34.41': -- resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} -- -- '@sindresorhus/is@5.6.0': -- resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} -- engines: {node: '>=14.16'} -- -- '@sinonjs/commons@3.0.0': -- resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} -- -- '@sinonjs/fake-timers@10.3.0': -- resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} -- -- '@smithy/abort-controller@4.2.12': -- resolution: {integrity: sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/chunked-blob-reader-native@4.2.1': -- resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/chunked-blob-reader@5.2.0': -- resolution: {integrity: sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/config-resolver@4.4.13': -- resolution: {integrity: sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/core@3.23.12': -- resolution: {integrity: sha512-o9VycsYNtgC+Dy3I0yrwCqv9CWicDnke0L7EVOrZtJpjb2t0EjaEofmMrYc0T1Kn3yk32zm6cspxF9u9Bj7e5w==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/credential-provider-imds@4.2.12': -- resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/eventstream-codec@4.2.8': -- resolution: {integrity: sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/eventstream-serde-browser@4.2.8': -- resolution: {integrity: sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/eventstream-serde-config-resolver@4.3.8': -- resolution: {integrity: sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/eventstream-serde-node@4.2.8': -- resolution: {integrity: sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/eventstream-serde-universal@4.2.8': -- resolution: {integrity: sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/fetch-http-handler@5.3.15': -- resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/hash-blob-browser@4.2.9': -- resolution: {integrity: sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/hash-node@4.2.12': -- resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/hash-stream-node@4.2.8': -- resolution: {integrity: sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/invalid-dependency@4.2.12': -- resolution: {integrity: sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/is-array-buffer@2.2.0': -- resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} -- engines: {node: '>=14.0.0'} -- -- '@smithy/is-array-buffer@4.2.2': -- resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/md5-js@4.2.8': -- resolution: {integrity: sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/middleware-compression@4.3.32': -- resolution: {integrity: sha512-k2juJHA58gqAgnEshBW4b+CqCEaYEGSr6Hms4YIsDdUCHSbFy/JWDWEaNpjNDrlt9h/QuoRycTp1gTXJ1vdpdg==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/middleware-content-length@4.2.12': -- resolution: {integrity: sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/middleware-endpoint@4.4.27': -- resolution: {integrity: sha512-T3TFfUgXQlpcg+UdzcAISdZpj4Z+XECZ/cefgA6wLBd6V4lRi0svN2hBouN/be9dXQ31X4sLWz3fAQDf+nt6BA==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/middleware-retry@4.4.44': -- resolution: {integrity: sha512-Y1Rav7m5CFRPQyM4CI0koD/bXjyjJu3EQxZZhtLGD88WIrBrQ7kqXM96ncd6rYnojwOo/u9MXu57JrEvu/nLrA==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/middleware-serde@4.2.15': -- resolution: {integrity: sha512-ExYhcltZSli0pgAKOpQQe1DLFBLryeZ22605y/YS+mQpdNWekum9Ujb/jMKfJKgjtz1AZldtwA/wCYuKJgjjlg==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/middleware-stack@4.2.12': -- resolution: {integrity: sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/node-config-provider@4.3.12': -- resolution: {integrity: sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/node-http-handler@4.5.0': -- resolution: {integrity: sha512-Rnq9vQWiR1+/I6NZZMNzJHV6pZYyEHt2ZnuV3MG8z2NNenC4i/8Kzttz7CjZiHSmsN5frhXhg17z3Zqjjhmz1A==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/property-provider@4.2.12': -- resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/protocol-http@5.3.12': -- resolution: {integrity: sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/querystring-builder@4.2.12': -- resolution: {integrity: sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/querystring-parser@4.2.12': -- resolution: {integrity: sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/service-error-classification@4.2.12': -- resolution: {integrity: sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/shared-ini-file-loader@4.4.7': -- resolution: {integrity: sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/signature-v4@5.3.12': -- resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/smithy-client@4.12.7': -- resolution: {integrity: sha512-q3gqnwml60G44FECaEEsdQMplYhDMZYCtYhMCzadCnRnnHIobZJjegmdoUo6ieLQlPUzvrMdIJUpx6DoPmzANQ==} -- engines: {node: '>=18.0.0'} -- -- '@smithy/types@4.13.1': -- resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==} -- engines: {node: '>=18.0.0'} -+ '@smithy/types@4.13.1': -+ resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==} -+ engines: {node: '>=18.0.0'} - - '@smithy/url-parser@4.2.12': - resolution: {integrity: sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==} -@@ -3240,25 +2662,11 @@ packages: - peerDependencies: - storybook: ^10.3.3 - -- '@storybook/addon-webpack5-compiler-swc@4.0.3': -- resolution: {integrity: sha512-REJZBArIBcqzxmhQY9R1br9hjfcFYdl4FeWD/okx1eRwPZkl49aUhTYqZPrA+MWXfKJkuuNQ5vnfSoR0c9HyvA==} -- engines: {node: '>=18'} -- peerDependencies: -- storybook: ^9.0.0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 || ^10.4.0-0 -- -- '@storybook/builder-webpack5@10.3.3': -- resolution: {integrity: sha512-A7hop0VXG/06EZ7l2WIuhsrnpiV6NOOcOiVqjYDLplbVelkiiL98LTL+Om87u0n32sAfXWgFk2jIhSc3bbXlsQ==} -- peerDependencies: -- storybook: ^10.3.3 -- typescript: '*' -- peerDependenciesMeta: -- typescript: -- optional: true -- -- '@storybook/core-webpack@10.3.3': -- resolution: {integrity: sha512-ESRM2k9m1V0qXaqEM+bvtCjv9+gYVE3PMuoNZMyIYNdGA4Pdc2PvQsUrKQNVByVbEGwjt+h0RE6b20bnBkdYsg==} -+ '@storybook/builder-vite@10.3.3': -+ resolution: {integrity: sha512-awspKCTZvXyeV3KabL0id62mFbxR5u/5yyGQultwCiSb2/yVgBfip2MAqLyS850pvTiB6QFVM9deOyd2/G/bEA==} - peerDependencies: - storybook: ^10.3.3 -+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@storybook/csf-plugin@10.3.3': - resolution: {integrity: sha512-Utlh7zubm+4iOzBBfzLW4F4vD99UBtl2Do4edlzK2F7krQIcFvR2ontjAE8S1FQVLZAC3WHalCOS+Ch8zf3knA==} -@@ -3290,23 +2698,6 @@ packages: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - -- '@storybook/preset-react-webpack@10.3.3': -- resolution: {integrity: sha512-R8WeGUo062VpIx+i+5/Cv8dVGM+YSgCGZ0STPANijmOHATvfWpslTAIjMkq0me/BoDT5zxzCnYvAyRrBcjOW8A==} -- peerDependencies: -- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 -- react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 -- storybook: ^10.3.3 -- typescript: '*' -- peerDependenciesMeta: -- typescript: -- optional: true -- -- '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0': -- resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} -- peerDependencies: -- typescript: '>= 4.x' -- webpack: '>= 4' -- - '@storybook/react-dom-shim@10.3.3': - resolution: {integrity: sha512-lkhuh4G3UTreU9M3Iz5Dt32c6U+l/4XuvqLtbe1sDHENZH6aPj7y0b5FwnfHyvuTvYRhtbo29xZrF5Bp9kCC0w==} - peerDependencies: -@@ -3314,16 +2705,13 @@ packages: - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.3.3 - -- '@storybook/react-webpack5@10.3.3': -- resolution: {integrity: sha512-+x5/KrLmgv7VnWfzKxh0xftnDIjogiVksNuaLJAl4TRuY7/OsrlJBUckQ+ovMXTZpaAini6+7IVoilrzmdl4cA==} -+ '@storybook/react-vite@10.3.3': -+ resolution: {integrity: sha512-qHdlBe1hjqFAGXa8JL7bWTLbP/gDqXbWDm+SYCB646NHh5yvVDkZLwigP5Y+UL7M2ASfqFtosnroUK9tcCM2dw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.3.3 -- typescript: '>= 4.9.x' -- peerDependenciesMeta: -- typescript: -- optional: true -+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@storybook/react@10.3.3': - resolution: {integrity: sha512-cGG5TbR8Tdx9zwlpsWyBEfWrejm5iWdYF26EwIhwuKq9GFUTAVrQzo0Rs7Tqc3ZyVhRS/YfsRiWSEH+zmq2JiQ==} -@@ -3485,16 +2873,6 @@ packages: - peerDependencies: - '@svgr/core': '*' - -- '@svgr/plugin-svgo@8.1.0': -- resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} -- engines: {node: '>=14'} -- peerDependencies: -- '@svgr/core': '*' -- -- '@svgr/webpack@8.1.0': -- resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} -- engines: {node: '>=14'} -- - '@swc/cli@0.7.8': - resolution: {integrity: sha512-27Ov4rm0s2C6LLX+NDXfDVB69LGs8K94sXtFhgeUyQ4DBywZuCgTBu2loCNHRr8JhT9DeQvJM5j9FAu/THbo4w==} - engines: {node: '>= 16.14.0'} -@@ -3660,9 +3038,6 @@ packages: - '@types/body-parser@1.19.2': - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} - -- '@types/bonjour@3.5.13': -- resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} -- - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} - -@@ -3672,9 +3047,6 @@ packages: - '@types/compression@1.7.5': - resolution: {integrity: sha512-AAQvK5pxMpaT+nDvhHrsBhLSYG5yQdtkaJE1WYieSNY2mVFKAgmU4ks65rkZD5oqnGCFLyQpUr1CqI4DmUMyDg==} - -- '@types/connect-history-api-fallback@1.5.4': -- resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} -- - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - -@@ -3723,9 +3095,6 @@ packages: - '@types/he@1.2.0': - resolution: {integrity: sha512-uH2smqTN4uGReAiKedIVzoLUAXIYLBTbSofhx3hbNqj74Ua6KqFsLYszduTrLCMEAEAozF73DbGi/SC1bzQq4g==} - -- '@types/html-minifier-terser@6.1.0': -- resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} -- - '@types/html-minifier-terser@7.0.2': - resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==} - -@@ -3735,9 +3104,6 @@ packages: - '@types/http-errors@2.0.5': - resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - -- '@types/http-proxy@1.17.16': -- resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} -- - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - -@@ -3789,9 +3155,6 @@ packages: - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - -- '@types/node-forge@1.3.14': -- resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} -- - '@types/node@15.14.9': - resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} - -@@ -3841,9 +3204,6 @@ packages: - '@types/resolve@1.20.6': - resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} - -- '@types/retry@0.12.2': -- resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} -- - '@types/sanitize-html@2.11.0': - resolution: {integrity: sha512-7oxPGNQHXLHE48r/r/qjn7q0hlrs3kL7oZnGj0Wf/h9tj/6ibFyRkNbsDxaBBZ4XUZ0Dx5LGCyDJ04ytSofacQ==} - -@@ -3853,27 +3213,18 @@ packages: - '@types/semver@7.5.6': - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} - -- '@types/semver@7.7.1': -- resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} -- - '@types/send@0.17.5': - resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} - - '@types/send@1.2.1': - resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} - -- '@types/serve-index@1.9.4': -- resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} -- - '@types/serve-static@1.15.9': - resolution: {integrity: sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==} - - '@types/serve-static@2.2.0': - resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} - -- '@types/sockjs@0.3.36': -- resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} -- - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - -@@ -3889,18 +3240,6 @@ packages: - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - -- '@types/webpack-bundle-analyzer@4.7.0': -- resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} -- -- '@types/webpack-env@1.18.8': -- resolution: {integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==} -- -- '@types/webpack-node-externals@3.0.4': -- resolution: {integrity: sha512-8Z3/edqxE3RRlOJwKSgOFxLZRt/i1qFlv/Bi308ZUKo9jh8oGngd9r8GR0ZNKW5AEJq8QNQE3b17CwghTjQ0Uw==} -- -- '@types/ws@8.18.1': -- resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} -- - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - -@@ -4144,31 +3483,6 @@ packages: - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - -- '@webpack-cli/configtest@3.0.1': -- resolution: {integrity: sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==} -- engines: {node: '>=18.12.0'} -- peerDependencies: -- webpack: ^5.82.0 -- webpack-cli: 6.x.x -- -- '@webpack-cli/info@3.0.1': -- resolution: {integrity: sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==} -- engines: {node: '>=18.12.0'} -- peerDependencies: -- webpack: ^5.82.0 -- webpack-cli: 6.x.x -- -- '@webpack-cli/serve@3.0.1': -- resolution: {integrity: sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==} -- engines: {node: '>=18.12.0'} -- peerDependencies: -- webpack: ^5.82.0 -- webpack-cli: 6.x.x -- webpack-dev-server: '*' -- peerDependenciesMeta: -- webpack-dev-server: -- optional: true -- - '@xhmikosr/archive-type@7.0.0': - resolution: {integrity: sha512-sIm84ZneCOJuiy3PpWR5bxkx3HaNt1pqaN+vncUBZIlPZCq8ASZH+hBVdu5H8znR7qYC6sKwx+ie2Q7qztJTxA==} - engines: {node: ^14.14.0 || >=16.0.0} -@@ -4266,11 +3580,6 @@ packages: - ajv: - optional: true - -- ajv-keywords@3.5.2: -- resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} -- peerDependencies: -- ajv: ^6.9.1 -- - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: -@@ -4290,11 +3599,6 @@ packages: - resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} - engines: {node: '>=14.16'} - -- ansi-html-community@0.0.8: -- resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} -- engines: {'0': node >= 0.8.0} -- hasBin: true -- - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} -@@ -4470,21 +3774,6 @@ packages: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - -- babel-plugin-polyfill-corejs2@0.4.14: -- resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} -- peerDependencies: -- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 -- -- babel-plugin-polyfill-corejs3@0.13.0: -- resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} -- peerDependencies: -- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 -- -- babel-plugin-polyfill-regenerator@0.6.5: -- resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} -- peerDependencies: -- '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 -- - babel-preset-current-node-syntax@1.0.1: - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: -@@ -4524,12 +3813,6 @@ packages: - resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} - hasBin: true - -- batch@0.6.1: -- resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} -- -- big.js@5.2.2: -- resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} -- - bin-version-check@5.1.0: - resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==} - engines: {node: '>=12'} -@@ -4538,10 +3821,6 @@ packages: - resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} - engines: {node: '>=12'} - -- binary-extensions@2.3.0: -- resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} -- engines: {node: '>=8'} -- - body-parser@1.20.4: - resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} -@@ -4550,12 +3829,6 @@ packages: - resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} - engines: {node: '>=18'} - -- bonjour-service@1.3.0: -- resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} -- -- boolbase@1.0.0: -- resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} -- - bowser@2.12.1: - resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} - -@@ -4658,10 +3931,6 @@ packages: - caniuse-lite@1.0.30001769: - resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} - -- case-sensitive-paths-webpack-plugin@2.4.0: -- resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} -- engines: {node: '>=4'} -- - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - -@@ -4698,10 +3967,6 @@ packages: - resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} - engines: {node: '>= 16'} - -- chokidar@3.6.0: -- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} -- engines: {node: '>= 8.10.0'} -- - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} -@@ -4757,10 +4022,6 @@ packages: - resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} - engines: {node: '>=20'} - -- clone-deep@4.0.1: -- resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} -- engines: {node: '>=6'} -- - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} -@@ -4810,10 +4071,6 @@ packages: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - -- commander@12.1.0: -- resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} -- engines: {node: '>=18'} -- - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - -@@ -4821,10 +4078,6 @@ packages: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - -- commander@7.2.0: -- resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} -- engines: {node: '>= 10'} -- - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} -@@ -4850,14 +4103,6 @@ packages: - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - -- connect-history-api-fallback@2.0.0: -- resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} -- engines: {node: '>=0.8'} -- -- console-clear@1.1.1: -- resolution: {integrity: sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==} -- engines: {node: '>=4'} -- - constructs@10.6.0: - resolution: {integrity: sha512-TxHOnBO5zMo/G76ykzGF/wMpEHu257TbWiIxP9K0Yv/+t70UzgBQiTqjkAsWOPC6jW91DzJI0+ehQV6xDRNBuQ==} - -@@ -4898,9 +4143,6 @@ packages: - resolution: {integrity: sha512-mFsNh/DIANLqFt5VHZoGirdg7bK5+oTWlhnGu6tgRhzBlnEKWaPX2xrFaLltii/6rmhqFMJqffUgknuRdpYlHw==} - engines: {node: '>=18'} - -- core-js-compat@3.46.0: -- resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} -- - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - -@@ -4950,40 +4192,10 @@ packages: - resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} - engines: {node: '>=12'} - -- css-loader@7.1.2: -- resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} -- engines: {node: '>= 18.12.0'} -- peerDependencies: -- '@rspack/core': 0.x || 1.x -- webpack: ^5.27.0 -- peerDependenciesMeta: -- '@rspack/core': -- optional: true -- webpack: -- optional: true -- -- css-select@4.3.0: -- resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} -- -- css-select@5.1.0: -- resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} -- -- css-tree@2.2.1: -- resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} -- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} -- -- css-tree@2.3.1: -- resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} -- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} -- - css-tree@3.2.1: - resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - -- css-what@6.2.2: -- resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} -- engines: {node: '>= 6'} -- - css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - -@@ -4992,10 +4204,6 @@ packages: - engines: {node: '>=4'} - hasBin: true - -- csso@5.0.5: -- resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} -- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} -- - cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - -@@ -5048,9 +4256,6 @@ packages: - resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} - engines: {node: '>=4.0'} - -- debounce@1.2.1: -- resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} -- - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: -@@ -5099,9 +4304,6 @@ packages: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - -- dedent@0.7.0: -- resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} -- - dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} - peerDependencies: -@@ -5153,10 +4355,6 @@ packages: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - -- depd@1.1.2: -- resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} -- engines: {node: '>= 0.6'} -- - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} -@@ -5173,9 +4371,6 @@ packages: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - -- detect-node@2.1.0: -- resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} -- - devalue@5.6.3: - resolution: {integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==} - -@@ -5194,10 +4389,6 @@ packages: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - -- dns-packet@5.6.1: -- resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} -- engines: {node: '>=6'} -- - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} -@@ -5212,12 +4403,6 @@ packages: - dom-accessibility-api@0.6.3: - resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - -- dom-converter@0.2.0: -- resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} -- -- dom-serializer@1.4.1: -- resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} -- - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - -@@ -5229,10 +4414,6 @@ packages: - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - -- domhandler@4.3.1: -- resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} -- engines: {node: '>= 4'} -- - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} -@@ -5240,9 +4421,6 @@ packages: - dompurify@3.2.4: - resolution: {integrity: sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==} - -- domutils@2.8.0: -- resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} -- - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - -@@ -5256,12 +4434,6 @@ packages: - duplexer2@0.1.4: - resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - -- duplexer@0.1.2: -- resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} -- -- dynamic-import-polyfill@0.1.1: -- resolution: {integrity: sha512-m953zv0w5oDagTItWm6Auhmk/pY7EiejaqiVbnzSS3HIjh1FCUeK7WzuaVtWPNs58A+/xpIE+/dVk6pKsrua8g==} -- - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - -@@ -5284,24 +4456,18 @@ packages: - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - -- emojis-list@3.0.0: -- resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} -- engines: {node: '>= 4'} -+ empathic@2.0.0: -+ resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} -+ engines: {node: '>=14'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - -- endent@2.1.0: -- resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} -- - enhanced-resolve@5.19.0: - resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} - engines: {node: '>=10.13.0'} - -- entities@2.2.0: -- resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} -- - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} -@@ -5310,11 +4476,6 @@ packages: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - -- envinfo@7.14.0: -- resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} -- engines: {node: '>=4'} -- hasBin: true -- - error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - -@@ -5657,9 +4818,6 @@ packages: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - -- eventemitter3@4.0.7: -- resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} -- - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - -@@ -5712,9 +4870,6 @@ packages: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - -- fast-json-parse@1.0.3: -- resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} -- - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - -@@ -5738,10 +4893,6 @@ packages: - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - -- faye-websocket@0.11.4: -- resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} -- engines: {node: '>=0.8.0'} -- - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - -@@ -5796,10 +4947,6 @@ packages: - resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} - engines: {node: '>= 18.0.0'} - -- find-cache-dir@3.3.2: -- resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} -- engines: {node: '>=8'} -- - find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - -@@ -5833,33 +4980,13 @@ packages: - flat-cache@6.1.21: - resolution: {integrity: sha512-2u7cJfSf7Th7NxEk/VzQjnPoglok2YCsevS7TSbJjcDQWJPbqUUnSYtriHSvtnq+fRZHy1s0ugk4ApnQyhPGoQ==} - -- flat@5.0.2: -- resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} -- hasBin: true -- - flatted@3.4.2: - resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - -- follow-redirects@1.15.11: -- resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} -- engines: {node: '>=4.0'} -- peerDependencies: -- debug: '*' -- peerDependenciesMeta: -- debug: -- optional: true -- - for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} - -- fork-ts-checker-webpack-plugin@9.1.0: -- resolution: {integrity: sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==} -- engines: {node: '>=14.21.3'} -- peerDependencies: -- typescript: '>3.6.0' -- webpack: ^5.11.0 -- - form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} -@@ -5892,9 +5019,6 @@ packages: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - -- fs-monkey@1.1.0: -- resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} -- - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - -@@ -5982,15 +5106,13 @@ packages: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - -- glob-to-regex.js@1.2.0: -- resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} -- engines: {node: '>=10.0'} -- peerDependencies: -- tslib: '2' -- - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - -+ glob@13.0.6: -+ resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} -+ engines: {node: 18 || 20 || >=22} -+ - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me -@@ -6044,13 +5166,6 @@ packages: - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - -- gzip-size@6.0.0: -- resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} -- engines: {node: '>=10'} -- -- handle-thing@2.0.1: -- resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} -- - has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} -@@ -6140,24 +5255,13 @@ packages: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} - engines: {node: ^16.14.0 || >=18.0.0} - -- hpack.js@2.1.6: -- resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} -- - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - -- html-entities@2.4.0: -- resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} -- - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - -- html-minifier-terser@6.1.0: -- resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} -- engines: {node: '>=12'} -- hasBin: true -- - html-minifier-terser@7.2.0: - resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} - engines: {node: ^14.13.1 || >=16.0.0} -@@ -6174,58 +5278,20 @@ packages: - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - -- html-webpack-plugin@5.6.6: -- resolution: {integrity: sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==} -- engines: {node: '>=10.13.0'} -- peerDependencies: -- '@rspack/core': 0.x || 1.x -- webpack: ^5.20.0 -- peerDependenciesMeta: -- '@rspack/core': -- optional: true -- webpack: -- optional: true -- -- htmlparser2@6.1.0: -- resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} -- - htmlparser2@8.0.1: - resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - -- http-deceiver@1.2.7: -- resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} -- -- http-errors@1.6.3: -- resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} -- engines: {node: '>= 0.6'} -- - http-errors@2.0.1: - resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} - engines: {node: '>= 0.8'} - -- http-parser-js@0.5.10: -- resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} -- - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - -- http-proxy-middleware@2.0.9: -- resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} -- engines: {node: '>=12.0.0'} -- peerDependencies: -- '@types/express': ^4.17.13 -- peerDependenciesMeta: -- '@types/express': -- optional: true -- -- http-proxy@1.18.1: -- resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} -- engines: {node: '>=8.0.0'} -- - http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} -@@ -6247,10 +5313,6 @@ packages: - engines: {node: '>=18'} - hasBin: true - -- hyperdyperid@1.2.0: -- resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} -- engines: {node: '>=10.18'} -- - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} -@@ -6263,12 +5325,6 @@ packages: - resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} - engines: {node: '>=0.10.0'} - -- icss-utils@5.1.0: -- resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} -- engines: {node: ^10 || ^12 || >= 14} -- peerDependencies: -- postcss: ^8.1.0 -- - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - -@@ -6309,9 +5365,6 @@ packages: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - -- inherits@2.0.3: -- resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} -- - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - -@@ -6325,18 +5378,10 @@ packages: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - -- interpret@3.1.1: -- resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} -- engines: {node: '>=10.13.0'} -- - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - -- ipaddr.js@2.2.0: -- resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} -- engines: {node: '>= 10'} -- - is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} -@@ -6352,10 +5397,6 @@ packages: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - -- is-binary-path@2.1.0: -- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} -- engines: {node: '>=8'} -- - is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} -@@ -6443,10 +5484,6 @@ packages: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - -- is-network-error@1.3.0: -- resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} -- engines: {node: '>=16'} -- - is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} -@@ -6463,18 +5500,10 @@ packages: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - -- is-plain-obj@3.0.0: -- resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} -- engines: {node: '>=10'} -- - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - -- is-plain-object@2.0.4: -- resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} -- engines: {node: '>=0.10.0'} -- - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} -@@ -6558,10 +5587,6 @@ packages: - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - -- isobject@3.0.1: -- resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} -- engines: {node: '>=0.10.0'} -- - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} -@@ -6856,9 +5881,6 @@ packages: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - -- launch-editor@2.11.1: -- resolution: {integrity: sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==} -- - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} -@@ -6890,10 +5912,6 @@ packages: - resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} - engines: {node: '>=6.11.5'} - -- loader-utils@1.4.2: -- resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} -- engines: {node: '>=4.0.0'} -- - locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - -@@ -6905,9 +5923,6 @@ packages: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - -- lockfile@1.0.4: -- resolution: {integrity: sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==} -- - lodash.clonedeep@4.5.0: - resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - -@@ -6951,6 +5966,10 @@ packages: - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - -+ lru-cache@11.3.3: -+ resolution: {integrity: sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ==} -+ engines: {node: 20 || >=22} -+ - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - -@@ -6968,10 +5987,6 @@ packages: - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - -- make-dir@3.1.0: -- resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} -- engines: {node: '>=8'} -- - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} -@@ -6998,12 +6013,6 @@ packages: - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - -- mdn-data@2.0.28: -- resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} -- -- mdn-data@2.0.30: -- resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} -- - mdn-data@2.27.1: - resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} - -@@ -7015,13 +6024,6 @@ packages: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} - engines: {node: '>= 0.8'} - -- memfs@3.5.3: -- resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} -- engines: {node: '>= 4.0.0'} -- -- memfs@4.49.0: -- resolution: {integrity: sha512-L9uC9vGuc4xFybbdOpRLoOAOq1YEBBsocCs5NVW32DfU+CZWWIn3OVF+lB8Gp4ttBVSMazwrTrjv8ussX/e3VQ==} -- - meow@13.2.0: - resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} - engines: {node: '>=18'} -@@ -7160,9 +6162,6 @@ packages: - resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} - hasBin: true - -- minimalistic-assert@1.0.1: -- resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} -- - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} - engines: {node: 18 || 20 || >=22} -@@ -7177,6 +6176,10 @@ packages: - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - -+ minipass@7.1.3: -+ resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} -+ engines: {node: '>=16 || 14 >=14.17'} -+ - mnemonist@0.38.3: - resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} - -@@ -7187,10 +6190,6 @@ packages: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - -- mrmime@1.0.1: -- resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} -- engines: {node: '>=10'} -- - mrmime@2.0.1: - resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} - engines: {node: '>=10'} -@@ -7204,10 +6203,6 @@ packages: - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - -- multicast-dns@7.2.5: -- resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} -- hasBin: true -- - multipipe@1.0.2: - resolution: {integrity: sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==} - -@@ -7245,9 +6240,6 @@ packages: - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - -- node-abort-controller@3.1.1: -- resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} -- - node-addon-api@3.2.1: - resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} - -@@ -7260,10 +6252,6 @@ packages: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - -- node-forge@1.4.0: -- resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} -- engines: {node: '>= 6.13.0'} -- - node-gyp-build@4.8.0: - resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} - hasBin: true -@@ -7297,9 +6285,6 @@ packages: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - -- nth-check@2.1.1: -- resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} -- - nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - -@@ -7341,15 +6326,9 @@ packages: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - -- objectorarray@1.0.5: -- resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} -- - obliterator@1.6.1: - resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} - -- obuf@1.1.2: -- resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} -- - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} -@@ -7381,10 +6360,6 @@ packages: - resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} - engines: {node: '>=20'} - -- opener@1.5.2: -- resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} -- hasBin: true -- - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} -@@ -7429,10 +6404,6 @@ packages: - resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} - engines: {node: '>=16'} - -- p-retry@6.2.1: -- resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} -- engines: {node: '>=16.17'} -- - p-timeout@6.1.2: - resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} - engines: {node: '>=14.16'} -@@ -7502,6 +6473,10 @@ packages: - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - -+ path-scurry@2.0.2: -+ resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} -+ engines: {node: 18 || 20 || >=22} -+ - path-to-regexp@0.1.13: - resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} - -@@ -7571,30 +6546,6 @@ packages: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} - -- postcss-modules-extract-imports@3.1.0: -- resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} -- engines: {node: ^10 || ^12 || >= 14} -- peerDependencies: -- postcss: ^8.1.0 -- -- postcss-modules-local-by-default@4.0.5: -- resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} -- engines: {node: ^10 || ^12 || >= 14} -- peerDependencies: -- postcss: ^8.1.0 -- -- postcss-modules-scope@3.2.0: -- resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} -- engines: {node: ^10 || ^12 || >= 14} -- peerDependencies: -- postcss: ^8.1.0 -- -- postcss-modules-values@4.0.0: -- resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} -- engines: {node: ^10 || ^12 || >= 14} -- peerDependencies: -- postcss: ^8.1.0 -- - postcss-resolve-nested-selector@0.1.6: - resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} - -@@ -7604,10 +6555,6 @@ packages: - peerDependencies: - postcss: ^8.4.31 - -- postcss-selector-parser@6.1.2: -- resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} -- engines: {node: '>=4'} -- - postcss-selector-parser@7.1.1: - resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} - engines: {node: '>=4'} -@@ -7646,9 +6593,6 @@ packages: - engines: {node: '>=14'} - hasBin: true - -- pretty-error@4.0.0: -- resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} -- - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} -@@ -7739,10 +6683,6 @@ packages: - peerDependencies: - typescript: '>= 4.3.x' - -- react-docgen@7.1.1: -- resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} -- engines: {node: '>=16.14.0'} -- - react-docgen@8.0.2: - resolution: {integrity: sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA==} - engines: {node: ^20.9.0 || >=22} -@@ -7792,14 +6732,6 @@ packages: - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - -- readable-stream@3.6.2: -- resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} -- engines: {node: '>= 6'} -- -- readdirp@3.6.0: -- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} -- engines: {node: '>=8.10.0'} -- - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} -@@ -7808,10 +6740,6 @@ packages: - resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} - engines: {node: '>= 4'} - -- rechoir@0.8.0: -- resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} -- engines: {node: '>= 10.13.0'} -- - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} -@@ -7820,13 +6748,6 @@ packages: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - -- regenerate-unicode-properties@10.2.2: -- resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} -- engines: {node: '>=4'} -- -- regenerate@1.4.2: -- resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} -- - regexp-tree@0.1.27: - resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} - hasBin: true -@@ -7835,21 +6756,10 @@ packages: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - -- regexpu-core@6.4.0: -- resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} -- engines: {node: '>=4'} -- -- regjsgen@0.8.0: -- resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} -- - regjsparser@0.10.0: - resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} - hasBin: true - -- regjsparser@0.13.0: -- resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} -- hasBin: true -- - rehype-autolink-headings@7.1.0: - resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} - -@@ -7869,9 +6779,6 @@ packages: - remark-rehype@11.1.2: - resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - -- renderkid@3.0.0: -- resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} -- - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} -@@ -7922,10 +6829,6 @@ packages: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - -- retry@0.13.1: -- resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} -- engines: {node: '>= 4'} -- - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} -@@ -8009,10 +6912,6 @@ packages: - sanitize-html@2.13.0: - resolution: {integrity: sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==} - -- sax@1.6.0: -- resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} -- engines: {node: '>=11.0.0'} -- - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} -@@ -8020,10 +6919,6 @@ packages: - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - -- schema-utils@3.3.0: -- resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} -- engines: {node: '>= 10.13.0'} -- - schema-utils@4.3.3: - resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} - engines: {node: '>= 10.13.0'} -@@ -8039,13 +6934,6 @@ packages: - resolution: {integrity: sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==} - hasBin: true - -- select-hose@2.0.0: -- resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} -- -- selfsigned@2.4.1: -- resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} -- engines: {node: '>=10'} -- - semver-regex@4.0.5: - resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} - engines: {node: '>=12'} -@@ -8080,10 +6968,6 @@ packages: - resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} - engines: {node: '>= 18'} - -- serve-index@1.9.1: -- resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} -- engines: {node: '>= 0.8.0'} -- - serve-static@1.16.3: - resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} - engines: {node: '>= 0.8.0'} -@@ -8107,16 +6991,9 @@ packages: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - -- setprototypeof@1.1.0: -- resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} -- - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - -- shallow-clone@3.0.1: -- resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} -- engines: {node: '>=8'} -- - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} -@@ -8125,10 +7002,6 @@ packages: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - -- shell-quote@1.8.3: -- resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} -- engines: {node: '>= 0.4'} -- - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} -@@ -8152,10 +7025,6 @@ packages: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - -- sirv@2.0.3: -- resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} -- engines: {node: '>= 10'} -- - sirv@3.0.2: - resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} - engines: {node: '>=18'} -@@ -8186,9 +7055,6 @@ packages: - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - -- sockjs@0.3.24: -- resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} -- - sort-keys-length@1.0.1: - resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} - engines: {node: '>=0.10.0'} -@@ -8234,13 +7100,6 @@ packages: - spdx-license-ids@3.0.23: - resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} - -- spdy-transport@3.0.0: -- resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} -- -- spdy@4.0.2: -- resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} -- engines: {node: '>=6.0.0'} -- - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - -@@ -8251,10 +7110,6 @@ packages: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - -- statuses@1.5.0: -- resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} -- engines: {node: '>= 0.6'} -- - statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} -@@ -8324,9 +7179,6 @@ packages: - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - -- string_decoder@1.3.0: -- resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} -- - stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} - -@@ -8376,12 +7228,6 @@ packages: - resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==} - engines: {node: '>=16'} - -- style-loader@4.0.0: -- resolution: {integrity: sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==} -- engines: {node: '>= 18.12.0'} -- peerDependencies: -- webpack: ^5.27.0 -- - stylelint-config-recommended@14.0.0: - resolution: {integrity: sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==} - engines: {node: '>=18.12.0'} -@@ -8438,17 +7284,6 @@ packages: - svg-tags@1.0.0: - resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} - -- svgo@3.3.3: -- resolution: {integrity: sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==} -- engines: {node: '>=14.0.0'} -- hasBin: true -- -- swc-loader@0.2.6: -- resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} -- peerDependencies: -- '@swc/core': ^1.2.147 -- webpack: '>=2' -- - swr@1.3.0: - resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==} - peerDependencies: -@@ -8499,21 +7334,12 @@ packages: - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - -- thingies@2.5.0: -- resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} -- engines: {node: '>=10.18'} -- peerDependencies: -- tslib: ^2 -- - through2@0.4.2: - resolution: {integrity: sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - -- thunky@1.1.0: -- resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} -- - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - -@@ -8536,9 +7362,6 @@ packages: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - -- to-string-loader@1.2.0: -- resolution: {integrity: sha512-KsWUL8FccgBW9FPFm4vYoQbOOcO5m6hKOGYoXjbseD9/4Ft+ravXN5jolQ9kTKYcK4zPt1j+khx97GPGnVoi6A==} -- - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} -@@ -8566,12 +7389,6 @@ packages: - traverse-chain@0.1.0: - resolution: {integrity: sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==} - -- tree-dump@1.1.0: -- resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} -- engines: {node: '>=10.0'} -- peerDependencies: -- tslib: '2' -- - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - -@@ -8744,25 +7561,9 @@ packages: - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - -- unicode-canonical-property-names-ecmascript@2.0.1: -- resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} -- engines: {node: '>=4'} -- -- unicode-match-property-ecmascript@2.0.0: -- resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} -- engines: {node: '>=4'} -- -- unicode-match-property-value-ecmascript@2.2.1: -- resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} -- engines: {node: '>=4'} -- -- unicode-property-aliases-ecmascript@2.2.0: -- resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} -- engines: {node: '>=4'} -- -- unicorn-magic@0.1.0: -- resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} -- engines: {node: '>=18'} -+ unicorn-magic@0.1.0: -+ resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} -+ engines: {node: '>=18'} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} -@@ -8837,9 +7638,6 @@ packages: - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - -- utila@0.4.0: -- resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} -- - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} -@@ -8938,9 +7736,6 @@ packages: - resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} - engines: {node: '>=10.13.0'} - -- wbuf@1.7.3: -- resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} -- - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - -@@ -8955,92 +7750,6 @@ packages: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - -- webpack-assets-manifest@6.3.0: -- resolution: {integrity: sha512-UcjiDm66jLTchxcXnvUDLg8Eoje8wsbjiA30RPymfLhi9UIVH1xA6pmqw5DLHVelr8hlzkeE74ofOrQNMwNX5A==} -- engines: {node: '>=20.10.0'} -- peerDependencies: -- webpack: ^5.61.0 -- -- webpack-bundle-analyzer@4.10.2: -- resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} -- engines: {node: '>= 10.13.0'} -- hasBin: true -- -- webpack-cli@6.0.1: -- resolution: {integrity: sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==} -- engines: {node: '>=18.12.0'} -- hasBin: true -- peerDependencies: -- webpack: ^5.82.0 -- webpack-bundle-analyzer: '*' -- webpack-dev-server: '*' -- peerDependenciesMeta: -- webpack-bundle-analyzer: -- optional: true -- webpack-dev-server: -- optional: true -- -- webpack-dev-middleware@6.1.3: -- resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==} -- engines: {node: '>= 14.15.0'} -- peerDependencies: -- webpack: ^5.0.0 -- peerDependenciesMeta: -- webpack: -- optional: true -- -- webpack-dev-middleware@7.4.5: -- resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} -- engines: {node: '>= 18.12.0'} -- peerDependencies: -- webpack: ^5.0.0 -- peerDependenciesMeta: -- webpack: -- optional: true -- -- webpack-dev-server@5.2.2: -- resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} -- engines: {node: '>= 18.12.0'} -- hasBin: true -- peerDependencies: -- webpack: ^5.0.0 -- webpack-cli: '*' -- peerDependenciesMeta: -- webpack: -- optional: true -- webpack-cli: -- optional: true -- -- webpack-format-messages@2.0.6: -- resolution: {integrity: sha512-JOUviZSCupGTf6uJjrxKMEyOawWws566e3phwSyuWBsQxuBU6Gm4QV5wdU8UfkPIhWyhAqSGKeq8fNE9Q4rs9Q==} -- engines: {node: '>=6'} -- -- webpack-hot-middleware@2.26.1: -- resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} -- -- webpack-hot-server-middleware@0.6.1: -- resolution: {integrity: sha512-YOKwdS0hnmADsNCsReGkMOBkoz2YVrQZvnVcViM2TDXlK9NnaOGXmnrLFjzwsHFa0/iuJy/QJFEoMxzk8R1Mgg==} -- peerDependencies: -- webpack: '*' -- -- webpack-manifest-plugin@6.0.1: -- resolution: {integrity: sha512-R0p/8/IJVY5hIhQtkeWUQugalVpIwojc09eb14zGq+oiZOCmN5paAz2NBJfd+6v9eBbxAS3YMjc2ov8UMlCDLQ==} -- engines: {node: '>=20.19.0'} -- peerDependencies: -- webpack: ^5.75.0 -- -- webpack-merge@6.0.1: -- resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} -- engines: {node: '>=18.0.0'} -- -- webpack-messages@2.0.4: -- resolution: {integrity: sha512-flG9VZRIKJd+ibJdtG55cp8+CglmEvGQ6uyLLwAxKudO2ws5czl0Giy8wltRCNIx+qNF76hh9UEQNZzkUHnDKw==} -- engines: {node: '>=6'} -- -- webpack-node-externals@3.0.0: -- resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} -- engines: {node: '>=6'} -- - webpack-sources@3.3.3: - resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} - engines: {node: '>=10.13.0'} -@@ -9058,14 +7767,6 @@ packages: - webpack-cli: - optional: true - -- websocket-driver@0.7.4: -- resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} -- engines: {node: '>=0.8.0'} -- -- websocket-extensions@0.1.4: -- resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} -- engines: {node: '>=0.8.0'} -- - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} -@@ -9108,9 +7809,6 @@ packages: - engines: {node: '>= 8'} - hasBin: true - -- wildcard@2.0.1: -- resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} -- - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} -@@ -9130,18 +7828,6 @@ packages: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - -- ws@7.5.10: -- resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} -- engines: {node: '>=8.3.0'} -- peerDependencies: -- bufferutil: ^4.0.1 -- utf-8-validate: ^5.0.2 -- peerDependenciesMeta: -- bufferutil: -- optional: true -- utf-8-validate: -- optional: true -- - ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} - engines: {node: '>=10.0.0'} -@@ -9731,1262 +8417,644 @@ snapshots: - tslib: 2.6.2 - - '@aws-sdk/credential-provider-cognito-identity@3.972.16': -- dependencies: -- '@aws-sdk/nested-clients': 3.996.13 -- '@aws-sdk/types': 3.973.6 -- '@smithy/property-provider': 4.2.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/credential-provider-env@3.972.21': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/types': 3.973.6 -- '@smithy/property-provider': 4.2.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/credential-provider-http@3.972.23': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/types': 3.973.6 -- '@smithy/fetch-http-handler': 5.3.15 -- '@smithy/node-http-handler': 4.5.0 -- '@smithy/property-provider': 4.2.12 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/smithy-client': 4.12.7 -- '@smithy/types': 4.13.1 -- '@smithy/util-stream': 4.5.20 -- tslib: 2.6.2 -- -- '@aws-sdk/credential-provider-ini@3.972.23': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/credential-provider-env': 3.972.21 -- '@aws-sdk/credential-provider-http': 3.972.23 -- '@aws-sdk/credential-provider-login': 3.972.23 -- '@aws-sdk/credential-provider-process': 3.972.21 -- '@aws-sdk/credential-provider-sso': 3.972.23 -- '@aws-sdk/credential-provider-web-identity': 3.972.23 -- '@aws-sdk/nested-clients': 3.996.13 -- '@aws-sdk/types': 3.973.6 -- '@smithy/credential-provider-imds': 4.2.12 -- '@smithy/property-provider': 4.2.12 -- '@smithy/shared-ini-file-loader': 4.4.7 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/credential-provider-login@3.972.23': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/nested-clients': 3.996.13 -- '@aws-sdk/types': 3.973.6 -- '@smithy/property-provider': 4.2.12 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/shared-ini-file-loader': 4.4.7 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/credential-provider-node@3.972.24': -- dependencies: -- '@aws-sdk/credential-provider-env': 3.972.21 -- '@aws-sdk/credential-provider-http': 3.972.23 -- '@aws-sdk/credential-provider-ini': 3.972.23 -- '@aws-sdk/credential-provider-process': 3.972.21 -- '@aws-sdk/credential-provider-sso': 3.972.23 -- '@aws-sdk/credential-provider-web-identity': 3.972.23 -- '@aws-sdk/types': 3.973.6 -- '@smithy/credential-provider-imds': 4.2.12 -- '@smithy/property-provider': 4.2.12 -- '@smithy/shared-ini-file-loader': 4.4.7 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/credential-provider-process@3.972.21': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/types': 3.973.6 -- '@smithy/property-provider': 4.2.12 -- '@smithy/shared-ini-file-loader': 4.4.7 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/credential-provider-sso@3.972.23': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/nested-clients': 3.996.13 -- '@aws-sdk/token-providers': 3.1014.0 -- '@aws-sdk/types': 3.973.6 -- '@smithy/property-provider': 4.2.12 -- '@smithy/shared-ini-file-loader': 4.4.7 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/credential-provider-web-identity@3.972.23': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/nested-clients': 3.996.13 -- '@aws-sdk/types': 3.973.6 -- '@smithy/property-provider': 4.2.12 -- '@smithy/shared-ini-file-loader': 4.4.7 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/credential-providers@3.1014.0': -- dependencies: -- '@aws-sdk/client-cognito-identity': 3.1014.0 -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/credential-provider-cognito-identity': 3.972.16 -- '@aws-sdk/credential-provider-env': 3.972.21 -- '@aws-sdk/credential-provider-http': 3.972.23 -- '@aws-sdk/credential-provider-ini': 3.972.23 -- '@aws-sdk/credential-provider-login': 3.972.23 -- '@aws-sdk/credential-provider-node': 3.972.24 -- '@aws-sdk/credential-provider-process': 3.972.21 -- '@aws-sdk/credential-provider-sso': 3.972.23 -- '@aws-sdk/credential-provider-web-identity': 3.972.23 -- '@aws-sdk/nested-clients': 3.996.13 -- '@aws-sdk/types': 3.973.6 -- '@smithy/config-resolver': 4.4.13 -- '@smithy/core': 3.23.12 -- '@smithy/credential-provider-imds': 4.2.12 -- '@smithy/node-config-provider': 4.3.12 -- '@smithy/property-provider': 4.2.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/credential-providers@3.995.0': -- dependencies: -- '@aws-sdk/client-cognito-identity': 3.995.0 -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/credential-provider-cognito-identity': 3.972.16 -- '@aws-sdk/credential-provider-env': 3.972.21 -- '@aws-sdk/credential-provider-http': 3.972.23 -- '@aws-sdk/credential-provider-ini': 3.972.23 -- '@aws-sdk/credential-provider-login': 3.972.23 -- '@aws-sdk/credential-provider-node': 3.972.24 -- '@aws-sdk/credential-provider-process': 3.972.21 -- '@aws-sdk/credential-provider-sso': 3.972.23 -- '@aws-sdk/credential-provider-web-identity': 3.972.23 -- '@aws-sdk/nested-clients': 3.995.0 -- '@aws-sdk/types': 3.973.6 -- '@smithy/config-resolver': 4.4.13 -- '@smithy/core': 3.23.12 -- '@smithy/credential-provider-imds': 4.2.12 -- '@smithy/node-config-provider': 4.3.12 -- '@smithy/property-provider': 4.2.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/dynamodb-codec@3.972.13': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@smithy/core': 3.23.12 -- '@smithy/smithy-client': 4.12.7 -- '@smithy/types': 4.13.1 -- '@smithy/util-base64': 4.3.2 -- tslib: 2.6.2 -- -- '@aws-sdk/endpoint-cache@3.972.2': -- dependencies: -- mnemonist: 0.38.3 -- tslib: 2.6.2 -- -- '@aws-sdk/lib-dynamodb@3.996.0(@aws-sdk/client-dynamodb@3.996.0)': -- dependencies: -- '@aws-sdk/client-dynamodb': 3.996.0 -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/util-dynamodb': 3.996.0(@aws-sdk/client-dynamodb@3.996.0) -- '@smithy/core': 3.23.12 -- '@smithy/smithy-client': 4.12.7 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-bucket-endpoint@3.972.3': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@aws-sdk/util-arn-parser': 3.972.2 -- '@smithy/node-config-provider': 4.3.12 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/types': 4.13.1 -- '@smithy/util-config-provider': 4.2.2 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-endpoint-discovery@3.972.3': -- dependencies: -- '@aws-sdk/endpoint-cache': 3.972.2 -- '@aws-sdk/types': 3.973.6 -- '@smithy/node-config-provider': 4.3.12 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-expect-continue@3.972.3': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-flexible-checksums@3.972.9': -- dependencies: -- '@aws-crypto/crc32': 5.2.0 -- '@aws-crypto/crc32c': 5.2.0 -- '@aws-crypto/util': 5.2.0 -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/crc64-nvme': 3.972.0 -- '@aws-sdk/types': 3.973.6 -- '@smithy/is-array-buffer': 4.2.2 -- '@smithy/node-config-provider': 4.3.12 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/types': 4.13.1 -- '@smithy/util-middleware': 4.2.12 -- '@smithy/util-stream': 4.5.20 -- '@smithy/util-utf8': 4.2.2 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-host-header@3.972.8': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-location-constraint@3.972.3': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-logger@3.972.8': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-recursion-detection@3.972.8': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@aws/lambda-invoke-store': 0.2.2 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-sdk-ec2@3.972.17': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@aws-sdk/util-format-url': 3.972.8 -- '@smithy/middleware-endpoint': 4.4.27 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/signature-v4': 5.3.12 -- '@smithy/smithy-client': 4.12.7 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-sdk-s3@3.972.11': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/types': 3.973.6 -- '@aws-sdk/util-arn-parser': 3.972.2 -- '@smithy/core': 3.23.12 -- '@smithy/node-config-provider': 4.3.12 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/signature-v4': 5.3.12 -- '@smithy/smithy-client': 4.12.7 -- '@smithy/types': 4.13.1 -- '@smithy/util-config-provider': 4.2.2 -- '@smithy/util-middleware': 4.2.12 -- '@smithy/util-stream': 4.5.20 -- '@smithy/util-utf8': 4.2.2 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-ssec@3.972.3': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/middleware-user-agent@3.972.24': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/types': 3.973.6 -- '@aws-sdk/util-endpoints': 3.996.5 -- '@smithy/core': 3.23.12 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/types': 4.13.1 -- '@smithy/util-retry': 4.2.12 -- tslib: 2.6.2 -- -- '@aws-sdk/nested-clients@3.995.0': -- dependencies: -- '@aws-crypto/sha256-browser': 5.2.0 -- '@aws-crypto/sha256-js': 5.2.0 -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/middleware-host-header': 3.972.8 -- '@aws-sdk/middleware-logger': 3.972.8 -- '@aws-sdk/middleware-recursion-detection': 3.972.8 -- '@aws-sdk/middleware-user-agent': 3.972.24 -- '@aws-sdk/region-config-resolver': 3.972.9 -- '@aws-sdk/types': 3.973.6 -- '@aws-sdk/util-endpoints': 3.995.0 -- '@aws-sdk/util-user-agent-browser': 3.972.8 -- '@aws-sdk/util-user-agent-node': 3.973.10 -- '@smithy/config-resolver': 4.4.13 -- '@smithy/core': 3.23.12 -- '@smithy/fetch-http-handler': 5.3.15 -- '@smithy/hash-node': 4.2.12 -- '@smithy/invalid-dependency': 4.2.12 -- '@smithy/middleware-content-length': 4.2.12 -- '@smithy/middleware-endpoint': 4.4.27 -- '@smithy/middleware-retry': 4.4.44 -- '@smithy/middleware-serde': 4.2.15 -- '@smithy/middleware-stack': 4.2.12 -- '@smithy/node-config-provider': 4.3.12 -- '@smithy/node-http-handler': 4.5.0 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/smithy-client': 4.12.7 -- '@smithy/types': 4.13.1 -- '@smithy/url-parser': 4.2.12 -- '@smithy/util-base64': 4.3.2 -- '@smithy/util-body-length-browser': 4.2.2 -- '@smithy/util-body-length-node': 4.2.3 -- '@smithy/util-defaults-mode-browser': 4.3.43 -- '@smithy/util-defaults-mode-node': 4.2.47 -- '@smithy/util-endpoints': 3.3.3 -- '@smithy/util-middleware': 4.2.12 -- '@smithy/util-retry': 4.2.12 -- '@smithy/util-utf8': 4.2.2 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/nested-clients@3.996.13': -- dependencies: -- '@aws-crypto/sha256-browser': 5.2.0 -- '@aws-crypto/sha256-js': 5.2.0 -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/middleware-host-header': 3.972.8 -- '@aws-sdk/middleware-logger': 3.972.8 -- '@aws-sdk/middleware-recursion-detection': 3.972.8 -- '@aws-sdk/middleware-user-agent': 3.972.24 -- '@aws-sdk/region-config-resolver': 3.972.9 -- '@aws-sdk/types': 3.973.6 -- '@aws-sdk/util-endpoints': 3.996.5 -- '@aws-sdk/util-user-agent-browser': 3.972.8 -- '@aws-sdk/util-user-agent-node': 3.973.10 -- '@smithy/config-resolver': 4.4.13 -- '@smithy/core': 3.23.12 -- '@smithy/fetch-http-handler': 5.3.15 -- '@smithy/hash-node': 4.2.12 -- '@smithy/invalid-dependency': 4.2.12 -- '@smithy/middleware-content-length': 4.2.12 -- '@smithy/middleware-endpoint': 4.4.27 -- '@smithy/middleware-retry': 4.4.44 -- '@smithy/middleware-serde': 4.2.15 -- '@smithy/middleware-stack': 4.2.12 -- '@smithy/node-config-provider': 4.3.12 -- '@smithy/node-http-handler': 4.5.0 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/smithy-client': 4.12.7 -- '@smithy/types': 4.13.1 -- '@smithy/url-parser': 4.2.12 -- '@smithy/util-base64': 4.3.2 -- '@smithy/util-body-length-browser': 4.2.2 -- '@smithy/util-body-length-node': 4.2.3 -- '@smithy/util-defaults-mode-browser': 4.3.43 -- '@smithy/util-defaults-mode-node': 4.2.47 -- '@smithy/util-endpoints': 3.3.3 -- '@smithy/util-middleware': 4.2.12 -- '@smithy/util-retry': 4.2.12 -- '@smithy/util-utf8': 4.2.2 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/region-config-resolver@3.972.9': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/config-resolver': 4.4.13 -- '@smithy/node-config-provider': 4.3.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/signature-v4-multi-region@3.995.0': -- dependencies: -- '@aws-sdk/middleware-sdk-s3': 3.972.11 -- '@aws-sdk/types': 3.973.6 -- '@smithy/protocol-http': 5.3.12 -- '@smithy/signature-v4': 5.3.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/token-providers@3.1014.0': -- dependencies: -- '@aws-sdk/core': 3.973.23 -- '@aws-sdk/nested-clients': 3.996.13 -- '@aws-sdk/types': 3.973.6 -- '@smithy/property-provider': 4.2.12 -- '@smithy/shared-ini-file-loader': 4.4.7 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- transitivePeerDependencies: -- - aws-crt -- -- '@aws-sdk/types@3.973.6': -- dependencies: -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/util-arn-parser@3.972.2': -- dependencies: -- tslib: 2.6.2 -- -- '@aws-sdk/util-dynamodb@3.996.0(@aws-sdk/client-dynamodb@3.996.0)': -- dependencies: -- '@aws-sdk/client-dynamodb': 3.996.0 -- tslib: 2.6.2 -- -- '@aws-sdk/util-endpoints@3.995.0': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/types': 4.13.1 -- '@smithy/url-parser': 4.2.12 -- '@smithy/util-endpoints': 3.3.3 -- tslib: 2.6.2 -- -- '@aws-sdk/util-endpoints@3.996.0': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/types': 4.13.1 -- '@smithy/url-parser': 4.2.12 -- '@smithy/util-endpoints': 3.3.3 -- tslib: 2.6.2 -- -- '@aws-sdk/util-endpoints@3.996.5': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/types': 4.13.1 -- '@smithy/url-parser': 4.2.12 -- '@smithy/util-endpoints': 3.3.3 -- tslib: 2.6.2 -- -- '@aws-sdk/util-format-url@3.972.8': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/querystring-builder': 4.2.12 -- '@smithy/types': 4.13.1 -- tslib: 2.6.2 -- -- '@aws-sdk/util-locate-window@3.465.0': -- dependencies: -- tslib: 2.6.2 -- -- '@aws-sdk/util-user-agent-browser@3.972.8': -- dependencies: -- '@aws-sdk/types': 3.973.6 -- '@smithy/types': 4.13.1 -- bowser: 2.12.1 -- tslib: 2.6.2 -- -- '@aws-sdk/util-user-agent-node@3.973.10': -- dependencies: -- '@aws-sdk/middleware-user-agent': 3.972.24 -- '@aws-sdk/types': 3.973.6 -- '@smithy/node-config-provider': 4.3.12 -- '@smithy/types': 4.13.1 -- '@smithy/util-config-provider': 4.2.2 -- tslib: 2.6.2 -- -- '@aws-sdk/xml-builder@3.972.15': -- dependencies: -- '@smithy/types': 4.13.1 -- fast-xml-parser: 5.5.8 -- tslib: 2.6.2 -- -- '@aws/lambda-invoke-store@0.2.2': {} -- -- '@babel/code-frame@7.29.0': -- dependencies: -- '@babel/helper-validator-identifier': 7.28.5 -- js-tokens: 4.0.0 -- picocolors: 1.1.1 -- -- '@babel/compat-data@7.28.6': {} -- -- '@babel/core@7.29.0': -- dependencies: -- '@babel/code-frame': 7.29.0 -- '@babel/generator': 7.29.1 -- '@babel/helper-compilation-targets': 7.28.6 -- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) -- '@babel/helpers': 7.28.6 -- '@babel/parser': 7.29.0 -- '@babel/template': 7.28.6 -- '@babel/traverse': 7.29.0 -- '@babel/types': 7.29.0 -- '@jridgewell/remapping': 2.3.5 -- convert-source-map: 2.0.0 -- debug: 4.4.3 -- gensync: 1.0.0-beta.2 -- json5: 2.2.3 -- semver: 6.3.1 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/generator@7.29.1': -- dependencies: -- '@babel/parser': 7.29.0 -- '@babel/types': 7.29.0 -- '@jridgewell/gen-mapping': 0.3.13 -- '@jridgewell/trace-mapping': 0.3.31 -- jsesc: 3.1.0 -- -- '@babel/helper-annotate-as-pure@7.27.3': -- dependencies: -- '@babel/types': 7.29.0 -- -- '@babel/helper-compilation-targets@7.28.6': -- dependencies: -- '@babel/compat-data': 7.28.6 -- '@babel/helper-validator-option': 7.27.1 -- browserslist: 4.24.4 -- lru-cache: 5.1.1 -- semver: 6.3.1 -- -- '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-annotate-as-pure': 7.27.3 -- '@babel/helper-member-expression-to-functions': 7.27.1 -- '@babel/helper-optimise-call-expression': 7.27.1 -- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0) -- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 -- '@babel/traverse': 7.29.0 -- semver: 6.3.1 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-annotate-as-pure': 7.27.3 -- regexpu-core: 6.4.0 -- semver: 6.3.1 -- -- '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-compilation-targets': 7.28.6 -- '@babel/helper-plugin-utils': 7.27.1 -- debug: 4.4.3 -- lodash.debounce: 4.0.8 -- resolve: 1.22.11 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/helper-globals@7.28.0': {} -- -- '@babel/helper-member-expression-to-functions@7.27.1': -- dependencies: -- '@babel/traverse': 7.29.0 -- '@babel/types': 7.29.0 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/helper-module-imports@7.28.6': -- dependencies: -- '@babel/traverse': 7.29.0 -- '@babel/types': 7.29.0 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-module-imports': 7.28.6 -- '@babel/helper-validator-identifier': 7.28.5 -- '@babel/traverse': 7.29.0 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/helper-optimise-call-expression@7.27.1': -- dependencies: -- '@babel/types': 7.29.0 -- -- '@babel/helper-plugin-utils@7.27.1': {} -- -- '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-annotate-as-pure': 7.27.3 -- '@babel/helper-wrap-function': 7.28.3 -- '@babel/traverse': 7.29.0 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/helper-replace-supers@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-member-expression-to-functions': 7.27.1 -- '@babel/helper-optimise-call-expression': 7.27.1 -- '@babel/traverse': 7.29.0 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/helper-skip-transparent-expression-wrappers@7.27.1': -- dependencies: -- '@babel/traverse': 7.29.0 -- '@babel/types': 7.29.0 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/helper-string-parser@7.27.1': {} -- -- '@babel/helper-validator-identifier@7.28.5': {} -- -- '@babel/helper-validator-option@7.27.1': {} -- -- '@babel/helper-wrap-function@7.28.3': -- dependencies: -- '@babel/template': 7.28.6 -- '@babel/traverse': 7.29.0 -- '@babel/types': 7.29.0 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/helpers@7.28.6': -- dependencies: -- '@babel/template': 7.28.6 -- '@babel/types': 7.29.0 -- -- '@babel/parser@7.29.0': -- dependencies: -- '@babel/types': 7.29.0 -- -- '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/traverse': 7.29.0 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 -- '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.29.0) -- transitivePeerDependencies: -- - supports-color -- -- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/traverse': 7.29.0 -- transitivePeerDependencies: -- - supports-color -- -- '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- -- '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- -- '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ dependencies: -+ '@aws-sdk/nested-clients': 3.996.13 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 -+ transitivePeerDependencies: -+ - aws-crt - -- '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': -+ '@aws-sdk/credential-provider-env@3.972.21': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': -+ '@aws-sdk/credential-provider-http@3.972.23': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/fetch-http-handler': 5.3.15 -+ '@smithy/node-http-handler': 4.5.0 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/smithy-client': 4.12.7 -+ '@smithy/types': 4.13.1 -+ '@smithy/util-stream': 4.5.20 -+ tslib: 2.6.2 - -- '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': -+ '@aws-sdk/credential-provider-ini@3.972.23': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/credential-provider-env': 3.972.21 -+ '@aws-sdk/credential-provider-http': 3.972.23 -+ '@aws-sdk/credential-provider-login': 3.972.23 -+ '@aws-sdk/credential-provider-process': 3.972.21 -+ '@aws-sdk/credential-provider-sso': 3.972.23 -+ '@aws-sdk/credential-provider-web-identity': 3.972.23 -+ '@aws-sdk/nested-clients': 3.996.13 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/credential-provider-imds': 4.2.12 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/shared-ini-file-loader': 4.4.7 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 -+ transitivePeerDependencies: -+ - aws-crt - -- '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': -+ '@aws-sdk/credential-provider-login@3.972.23': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/nested-clients': 3.996.13 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/shared-ini-file-loader': 4.4.7 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 -+ transitivePeerDependencies: -+ - aws-crt - -- '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': -+ '@aws-sdk/credential-provider-node@3.972.24': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/credential-provider-env': 3.972.21 -+ '@aws-sdk/credential-provider-http': 3.972.23 -+ '@aws-sdk/credential-provider-ini': 3.972.23 -+ '@aws-sdk/credential-provider-process': 3.972.21 -+ '@aws-sdk/credential-provider-sso': 3.972.23 -+ '@aws-sdk/credential-provider-web-identity': 3.972.23 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/credential-provider-imds': 4.2.12 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/shared-ini-file-loader': 4.4.7 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 -+ transitivePeerDependencies: -+ - aws-crt - -- '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/credential-provider-process@3.972.21': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/shared-ini-file-loader': 4.4.7 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': -+ '@aws-sdk/credential-provider-sso@3.972.23': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/nested-clients': 3.996.13 -+ '@aws-sdk/token-providers': 3.1014.0 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/shared-ini-file-loader': 4.4.7 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 -+ transitivePeerDependencies: -+ - aws-crt - -- '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/credential-provider-web-identity@3.972.23': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/nested-clients': 3.996.13 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/shared-ini-file-loader': 4.4.7 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 -+ transitivePeerDependencies: -+ - aws-crt - -- '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.29.0)': -+ '@aws-sdk/credential-providers@3.1014.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) -- '@babel/traverse': 7.29.0 -+ '@aws-sdk/client-cognito-identity': 3.1014.0 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/credential-provider-cognito-identity': 3.972.16 -+ '@aws-sdk/credential-provider-env': 3.972.21 -+ '@aws-sdk/credential-provider-http': 3.972.23 -+ '@aws-sdk/credential-provider-ini': 3.972.23 -+ '@aws-sdk/credential-provider-login': 3.972.23 -+ '@aws-sdk/credential-provider-node': 3.972.24 -+ '@aws-sdk/credential-provider-process': 3.972.21 -+ '@aws-sdk/credential-provider-sso': 3.972.23 -+ '@aws-sdk/credential-provider-web-identity': 3.972.23 -+ '@aws-sdk/nested-clients': 3.996.13 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/config-resolver': 4.4.13 -+ '@smithy/core': 3.23.12 -+ '@smithy/credential-provider-imds': 4.2.12 -+ '@smithy/node-config-provider': 4.3.12 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - transitivePeerDependencies: -- - supports-color -+ - aws-crt - -- '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/credential-providers@3.995.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-module-imports': 7.28.6 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) -+ '@aws-sdk/client-cognito-identity': 3.995.0 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/credential-provider-cognito-identity': 3.972.16 -+ '@aws-sdk/credential-provider-env': 3.972.21 -+ '@aws-sdk/credential-provider-http': 3.972.23 -+ '@aws-sdk/credential-provider-ini': 3.972.23 -+ '@aws-sdk/credential-provider-login': 3.972.23 -+ '@aws-sdk/credential-provider-node': 3.972.24 -+ '@aws-sdk/credential-provider-process': 3.972.21 -+ '@aws-sdk/credential-provider-sso': 3.972.23 -+ '@aws-sdk/credential-provider-web-identity': 3.972.23 -+ '@aws-sdk/nested-clients': 3.995.0 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/config-resolver': 4.4.13 -+ '@smithy/core': 3.23.12 -+ '@smithy/credential-provider-imds': 4.2.12 -+ '@smithy/node-config-provider': 4.3.12 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - transitivePeerDependencies: -- - supports-color -+ - aws-crt - -- '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/dynamodb-codec@3.972.13': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/core': 3.973.23 -+ '@smithy/core': 3.23.12 -+ '@smithy/smithy-client': 4.12.7 -+ '@smithy/types': 4.13.1 -+ '@smithy/util-base64': 4.3.2 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.29.0)': -+ '@aws-sdk/endpoint-cache@3.972.2': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ mnemonist: 0.38.3 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/lib-dynamodb@3.996.0(@aws-sdk/client-dynamodb@3.996.0)': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -- transitivePeerDependencies: -- - supports-color -+ '@aws-sdk/client-dynamodb': 3.996.0 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/util-dynamodb': 3.996.0(@aws-sdk/client-dynamodb@3.996.0) -+ '@smithy/core': 3.23.12 -+ '@smithy/smithy-client': 4.12.7 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-bucket-endpoint@3.972.3': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -- transitivePeerDependencies: -- - supports-color -+ '@aws-sdk/types': 3.973.6 -+ '@aws-sdk/util-arn-parser': 3.972.2 -+ '@smithy/node-config-provider': 4.3.12 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/types': 4.13.1 -+ '@smithy/util-config-provider': 4.2.2 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-classes@7.28.4(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-endpoint-discovery@3.972.3': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-annotate-as-pure': 7.27.3 -- '@babel/helper-compilation-targets': 7.28.6 -- '@babel/helper-globals': 7.28.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0) -- '@babel/traverse': 7.29.0 -- transitivePeerDependencies: -- - supports-color -+ '@aws-sdk/endpoint-cache': 3.972.2 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/node-config-provider': 4.3.12 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-expect-continue@3.972.3': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/template': 7.28.6 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-flexible-checksums@3.972.9': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/traverse': 7.29.0 -- transitivePeerDependencies: -- - supports-color -+ '@aws-crypto/crc32': 5.2.0 -+ '@aws-crypto/crc32c': 5.2.0 -+ '@aws-crypto/util': 5.2.0 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/crc64-nvme': 3.972.0 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/is-array-buffer': 4.2.2 -+ '@smithy/node-config-provider': 4.3.12 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/types': 4.13.1 -+ '@smithy/util-middleware': 4.2.12 -+ '@smithy/util-stream': 4.5.20 -+ '@smithy/util-utf8': 4.2.2 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-host-header@3.972.8': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-location-constraint@3.972.3': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-logger@3.972.8': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-recursion-detection@3.972.8': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/types': 3.973.6 -+ '@aws/lambda-invoke-store': 0.2.2 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-sdk-ec2@3.972.17': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.29.0) -- transitivePeerDependencies: -- - supports-color -+ '@aws-sdk/types': 3.973.6 -+ '@aws-sdk/util-format-url': 3.972.8 -+ '@smithy/middleware-endpoint': 4.4.27 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/signature-v4': 5.3.12 -+ '@smithy/smithy-client': 4.12.7 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-sdk-s3@3.972.11': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/types': 3.973.6 -+ '@aws-sdk/util-arn-parser': 3.972.2 -+ '@smithy/core': 3.23.12 -+ '@smithy/node-config-provider': 4.3.12 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/signature-v4': 5.3.12 -+ '@smithy/smithy-client': 4.12.7 -+ '@smithy/types': 4.13.1 -+ '@smithy/util-config-provider': 4.2.2 -+ '@smithy/util-middleware': 4.2.12 -+ '@smithy/util-stream': 4.5.20 -+ '@smithy/util-utf8': 4.2.2 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-ssec@3.972.3': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/middleware-user-agent@3.972.24': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 -- transitivePeerDependencies: -- - supports-color -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/types': 3.973.6 -+ '@aws-sdk/util-endpoints': 3.996.5 -+ '@smithy/core': 3.23.12 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/types': 4.13.1 -+ '@smithy/util-retry': 4.2.12 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/nested-clients@3.995.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-compilation-targets': 7.28.6 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/traverse': 7.29.0 -+ '@aws-crypto/sha256-browser': 5.2.0 -+ '@aws-crypto/sha256-js': 5.2.0 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/middleware-host-header': 3.972.8 -+ '@aws-sdk/middleware-logger': 3.972.8 -+ '@aws-sdk/middleware-recursion-detection': 3.972.8 -+ '@aws-sdk/middleware-user-agent': 3.972.24 -+ '@aws-sdk/region-config-resolver': 3.972.9 -+ '@aws-sdk/types': 3.973.6 -+ '@aws-sdk/util-endpoints': 3.995.0 -+ '@aws-sdk/util-user-agent-browser': 3.972.8 -+ '@aws-sdk/util-user-agent-node': 3.973.10 -+ '@smithy/config-resolver': 4.4.13 -+ '@smithy/core': 3.23.12 -+ '@smithy/fetch-http-handler': 5.3.15 -+ '@smithy/hash-node': 4.2.12 -+ '@smithy/invalid-dependency': 4.2.12 -+ '@smithy/middleware-content-length': 4.2.12 -+ '@smithy/middleware-endpoint': 4.4.27 -+ '@smithy/middleware-retry': 4.4.44 -+ '@smithy/middleware-serde': 4.2.15 -+ '@smithy/middleware-stack': 4.2.12 -+ '@smithy/node-config-provider': 4.3.12 -+ '@smithy/node-http-handler': 4.5.0 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/smithy-client': 4.12.7 -+ '@smithy/types': 4.13.1 -+ '@smithy/url-parser': 4.2.12 -+ '@smithy/util-base64': 4.3.2 -+ '@smithy/util-body-length-browser': 4.2.2 -+ '@smithy/util-body-length-node': 4.2.3 -+ '@smithy/util-defaults-mode-browser': 4.3.43 -+ '@smithy/util-defaults-mode-node': 4.2.47 -+ '@smithy/util-endpoints': 3.3.3 -+ '@smithy/util-middleware': 4.2.12 -+ '@smithy/util-retry': 4.2.12 -+ '@smithy/util-utf8': 4.2.2 -+ tslib: 2.6.2 - transitivePeerDependencies: -- - supports-color -- -- '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ - aws-crt - -- '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/nested-clients@3.996.13': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-crypto/sha256-browser': 5.2.0 -+ '@aws-crypto/sha256-js': 5.2.0 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/middleware-host-header': 3.972.8 -+ '@aws-sdk/middleware-logger': 3.972.8 -+ '@aws-sdk/middleware-recursion-detection': 3.972.8 -+ '@aws-sdk/middleware-user-agent': 3.972.24 -+ '@aws-sdk/region-config-resolver': 3.972.9 -+ '@aws-sdk/types': 3.973.6 -+ '@aws-sdk/util-endpoints': 3.996.5 -+ '@aws-sdk/util-user-agent-browser': 3.972.8 -+ '@aws-sdk/util-user-agent-node': 3.973.10 -+ '@smithy/config-resolver': 4.4.13 -+ '@smithy/core': 3.23.12 -+ '@smithy/fetch-http-handler': 5.3.15 -+ '@smithy/hash-node': 4.2.12 -+ '@smithy/invalid-dependency': 4.2.12 -+ '@smithy/middleware-content-length': 4.2.12 -+ '@smithy/middleware-endpoint': 4.4.27 -+ '@smithy/middleware-retry': 4.4.44 -+ '@smithy/middleware-serde': 4.2.15 -+ '@smithy/middleware-stack': 4.2.12 -+ '@smithy/node-config-provider': 4.3.12 -+ '@smithy/node-http-handler': 4.5.0 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/smithy-client': 4.12.7 -+ '@smithy/types': 4.13.1 -+ '@smithy/url-parser': 4.2.12 -+ '@smithy/util-base64': 4.3.2 -+ '@smithy/util-body-length-browser': 4.2.2 -+ '@smithy/util-body-length-node': 4.2.3 -+ '@smithy/util-defaults-mode-browser': 4.3.43 -+ '@smithy/util-defaults-mode-node': 4.2.47 -+ '@smithy/util-endpoints': 3.3.3 -+ '@smithy/util-middleware': 4.2.12 -+ '@smithy/util-retry': 4.2.12 -+ '@smithy/util-utf8': 4.2.2 -+ tslib: 2.6.2 -+ transitivePeerDependencies: -+ - aws-crt - -- '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/region-config-resolver@3.972.9': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/config-resolver': 4.4.13 -+ '@smithy/node-config-provider': 4.3.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/signature-v4-multi-region@3.995.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/middleware-sdk-s3': 3.972.11 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/protocol-http': 5.3.12 -+ '@smithy/signature-v4': 5.3.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/token-providers@3.1014.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/core': 3.973.23 -+ '@aws-sdk/nested-clients': 3.996.13 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/property-provider': 4.2.12 -+ '@smithy/shared-ini-file-loader': 4.4.7 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - transitivePeerDependencies: -- - supports-color -+ - aws-crt - -- '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/types@3.973.6': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -- transitivePeerDependencies: -- - supports-color -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/util-arn-parser@3.972.2': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-validator-identifier': 7.28.5 -- '@babel/traverse': 7.29.0 -- transitivePeerDependencies: -- - supports-color -+ tslib: 2.6.2 - -- '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/util-dynamodb@3.996.0(@aws-sdk/client-dynamodb@3.996.0)': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -- transitivePeerDependencies: -- - supports-color -+ '@aws-sdk/client-dynamodb': 3.996.0 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/util-endpoints@3.995.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/types': 4.13.1 -+ '@smithy/url-parser': 4.2.12 -+ '@smithy/util-endpoints': 3.3.3 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/util-endpoints@3.996.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/types': 4.13.1 -+ '@smithy/url-parser': 4.2.12 -+ '@smithy/util-endpoints': 3.3.3 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/util-endpoints@3.996.5': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/types': 4.13.1 -+ '@smithy/url-parser': 4.2.12 -+ '@smithy/util-endpoints': 3.3.3 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/util-format-url@3.972.8': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/querystring-builder': 4.2.12 -+ '@smithy/types': 4.13.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.29.0)': -+ '@aws-sdk/util-locate-window@3.465.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-compilation-targets': 7.28.6 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.29.0) -- '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) -- '@babel/traverse': 7.29.0 -- transitivePeerDependencies: -- - supports-color -+ tslib: 2.6.2 - -- '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/util-user-agent-browser@3.972.8': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.0) -- transitivePeerDependencies: -- - supports-color -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/types': 4.13.1 -+ bowser: 2.12.1 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/util-user-agent-node@3.973.10': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws-sdk/middleware-user-agent': 3.972.24 -+ '@aws-sdk/types': 3.973.6 -+ '@smithy/node-config-provider': 4.3.12 -+ '@smithy/types': 4.13.1 -+ '@smithy/util-config-provider': 4.2.2 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.29.0)': -+ '@aws-sdk/xml-builder@3.972.15': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 -- transitivePeerDependencies: -- - supports-color -+ '@smithy/types': 4.13.1 -+ fast-xml-parser: 5.5.8 -+ tslib: 2.6.2 - -- '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@aws/lambda-invoke-store@0.2.2': {} - -- '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.29.0)': -+ '@babel/code-frame@7.29.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -- transitivePeerDependencies: -- - supports-color -+ '@babel/helper-validator-identifier': 7.28.5 -+ js-tokens: 4.0.0 -+ picocolors: 1.1.1 -+ -+ '@babel/compat-data@7.28.6': {} - -- '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.29.0)': -+ '@babel/core@7.29.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-annotate-as-pure': 7.27.3 -- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -+ '@babel/code-frame': 7.29.0 -+ '@babel/generator': 7.29.1 -+ '@babel/helper-compilation-targets': 7.28.6 -+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) -+ '@babel/helpers': 7.28.6 -+ '@babel/parser': 7.29.0 -+ '@babel/template': 7.28.6 -+ '@babel/traverse': 7.29.0 -+ '@babel/types': 7.29.0 -+ '@jridgewell/remapping': 2.3.5 -+ convert-source-map: 2.0.0 -+ debug: 4.4.3 -+ gensync: 1.0.0-beta.2 -+ json5: 2.2.3 -+ semver: 6.3.1 - transitivePeerDependencies: - - supports-color - -- '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': -+ '@babel/generator@7.29.1': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@babel/parser': 7.29.0 -+ '@babel/types': 7.29.0 -+ '@jridgewell/gen-mapping': 0.3.13 -+ '@jridgewell/trace-mapping': 0.3.31 -+ jsesc: 3.1.0 - -- '@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.29.0)': -+ '@babel/helper-compilation-targets@7.28.6': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@babel/compat-data': 7.28.6 -+ '@babel/helper-validator-option': 7.27.1 -+ browserslist: 4.24.4 -+ lru-cache: 5.1.1 -+ semver: 6.3.1 - -- '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@babel/helper-globals@7.28.0': {} - -- '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': -+ '@babel/helper-module-imports@7.28.6': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.0) -+ '@babel/traverse': 7.29.0 -+ '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - -- '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.29.0)': -+ '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 -- '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.28.6 -- '@babel/helper-plugin-utils': 7.27.1 -- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) -- '@babel/types': 7.29.0 -+ '@babel/helper-validator-identifier': 7.28.5 -+ '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - -- '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-annotate-as-pure': 7.27.3 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@babel/helper-plugin-utils@7.27.1': {} - -- '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.29.0)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@babel/helper-string-parser@7.27.1': {} - -- '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.29.0)': -+ '@babel/helper-validator-identifier@7.28.5': {} -+ -+ '@babel/helper-validator-option@7.27.1': {} -+ -+ '@babel/helpers@7.28.6': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) -- '@babel/helper-plugin-utils': 7.27.1 -+ '@babel/template': 7.28.6 -+ '@babel/types': 7.29.0 - -- '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': -+ '@babel/parser@7.29.0': - dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-plugin-utils': 7.27.1 -+ '@babel/types': 7.29.0 - -- '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - -- '@babel/plugin-transform-spread@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 -- transitivePeerDependencies: -- - supports-color - -- '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - -- '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - -- '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - -- '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 -- '@babel/helper-annotate-as-pure': 7.27.3 -- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 -- '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.0) -- transitivePeerDependencies: -- - supports-color - -- '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 - -- '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 -- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 - -- '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 -- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 - -- '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 -- '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.27.1 - -- '@babel/preset-env@7.28.3(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': - dependencies: -- '@babel/compat-data': 7.28.6 - '@babel/core': 7.29.0 -- '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-validator-option': 7.27.1 -- '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.29.0) -- '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) -- '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) -- '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.29.0) -- '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.29.0) -- '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.29.0) -- '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.29.0) -- '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.29.0) -- '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.29.0) -- '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.29.0) -- '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) -- '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.29.0) -- '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.29.0) -- '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) -- babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.29.0) -- babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) -- babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.29.0) -- core-js-compat: 3.46.0 -- semver: 6.3.1 -- transitivePeerDependencies: -- - supports-color - -- '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 -- '@babel/types': 7.29.0 -- esutils: 2.0.3 - -- '@babel/preset-react@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-validator-option': 7.27.1 -- '@babel/plugin-transform-react-display-name': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0) -- transitivePeerDependencies: -- - supports-color - -- '@babel/preset-typescript@7.27.1(@babel/core@7.29.0)': -+ '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.27.1 -- '@babel/helper-validator-option': 7.27.1 -- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.29.0) -- '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.29.0) -- transitivePeerDependencies: -- - supports-color - - '@babel/runtime@7.28.4': {} - -@@ -11057,10 +9125,6 @@ snapshots: - dependencies: - postcss-selector-parser: 7.1.1 - -- '@discoveryjs/json-ext@0.5.7': {} -- -- '@discoveryjs/json-ext@0.6.3': {} -- - '@dual-bundle/import-meta-resolve@4.2.1': {} - - '@emotion/babel-plugin@11.13.5': -@@ -11650,10 +9714,6 @@ snapshots: - transitivePeerDependencies: - - react-dom - -- '@guardian/shimport@1.0.2': -- dependencies: -- tslib: 2.6.2 -- - '@guardian/source-development-kitchen@18.1.1(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@guardian/libs@31.0.0(@guardian/ophan-tracker-js@2.8.0)(tslib@2.6.2)(typescript@5.5.3))(@guardian/source@11.3.0(@emotion/react@11.14.0(@types/react@18.3.1)(react@18.3.1))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.5.3))(@types/react@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.5.3)': - dependencies: - '@guardian/libs': 31.0.0(@guardian/ophan-tracker-js@2.8.0)(tslib@2.6.2)(typescript@5.5.3) -@@ -11920,6 +9980,14 @@ snapshots: - '@types/yargs': 17.0.33 - chalk: 4.1.2 - -+ '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))': -+ dependencies: -+ glob: 13.0.6 -+ react-docgen-typescript: 2.4.0(typescript@5.5.3) -+ vite: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) -+ optionalDependencies: -+ typescript: 5.5.3 -+ - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 -@@ -11949,42 +10017,6 @@ snapshots: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - -- '@jsonjoy.com/base64@1.1.2(tslib@2.6.2)': -- dependencies: -- tslib: 2.6.2 -- -- '@jsonjoy.com/buffers@1.2.1(tslib@2.6.2)': -- dependencies: -- tslib: 2.6.2 -- -- '@jsonjoy.com/codegen@1.0.0(tslib@2.6.2)': -- dependencies: -- tslib: 2.6.2 -- -- '@jsonjoy.com/json-pack@1.21.0(tslib@2.6.2)': -- dependencies: -- '@jsonjoy.com/base64': 1.1.2(tslib@2.6.2) -- '@jsonjoy.com/buffers': 1.2.1(tslib@2.6.2) -- '@jsonjoy.com/codegen': 1.0.0(tslib@2.6.2) -- '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.6.2) -- '@jsonjoy.com/util': 1.9.0(tslib@2.6.2) -- hyperdyperid: 1.2.0 -- thingies: 2.5.0(tslib@2.6.2) -- tree-dump: 1.1.0(tslib@2.6.2) -- tslib: 2.6.2 -- -- '@jsonjoy.com/json-pointer@1.0.2(tslib@2.6.2)': -- dependencies: -- '@jsonjoy.com/codegen': 1.0.0(tslib@2.6.2) -- '@jsonjoy.com/util': 1.9.0(tslib@2.6.2) -- tslib: 2.6.2 -- -- '@jsonjoy.com/util@1.9.0(tslib@2.6.2)': -- dependencies: -- '@jsonjoy.com/buffers': 1.2.1(tslib@2.6.2) -- '@jsonjoy.com/codegen': 1.0.0(tslib@2.6.2) -- tslib: 2.6.2 -- - '@keyv/bigmap@1.3.1(keyv@5.6.0)': - dependencies: - hashery: 1.5.1 -@@ -11993,8 +10025,6 @@ snapshots: - - '@keyv/serialize@1.1.1': {} - -- '@leichtgewicht/ip-codec@2.0.5': {} -- - '@mdx-js/react@3.1.1(@types/react@18.3.1)(react@18.3.1)': - dependencies: - '@types/mdx': 2.0.13 -@@ -12551,10 +10581,10 @@ snapshots: - axe-core: 4.11.1 - storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - -- '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1)': -+ '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3))': - dependencies: - '@mdx-js/react': 3.1.1(@types/react@18.3.1)(react@18.3.1) -- '@storybook/csf-plugin': 10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1) -+ '@storybook/csf-plugin': 10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) - '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-dom-shim': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - react: 18.3.1 -@@ -12568,48 +10598,18 @@ snapshots: - - vite - - webpack - -- '@storybook/addon-webpack5-compiler-swc@4.0.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.104.1)': -- dependencies: -- '@swc/core': 1.13.5 -- storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) -- swc-loader: 0.2.6(@swc/core@1.13.5)(webpack@5.104.1) -- transitivePeerDependencies: -- - '@swc/helpers' -- - webpack -- -- '@storybook/builder-webpack5@10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1)': -+ '@storybook/builder-vite@10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3))': - dependencies: -- '@storybook/core-webpack': 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) -- case-sensitive-paths-webpack-plugin: 2.4.0 -- cjs-module-lexer: 1.4.3 -- css-loader: 7.1.2(webpack@5.104.1) -- es-module-lexer: 1.7.0 -- fork-ts-checker-webpack-plugin: 9.1.0(typescript@5.5.3)(webpack@5.104.1) -- html-webpack-plugin: 5.6.6(webpack@5.104.1) -- magic-string: 0.30.21 -+ '@storybook/csf-plugin': 10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) - storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) -- style-loader: 4.0.0(webpack@5.104.1) -- terser-webpack-plugin: 5.4.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack@5.104.1) - ts-dedent: 2.2.0 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- webpack-dev-middleware: 6.1.3(webpack@5.104.1) -- webpack-hot-middleware: 2.26.1 -- webpack-virtual-modules: 0.6.2 -- optionalDependencies: -- typescript: 5.5.3 -+ vite: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) - transitivePeerDependencies: -- - '@rspack/core' -- - '@swc/core' - - esbuild -- - uglify-js -- - webpack-cli -- -- '@storybook/core-webpack@10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': -- dependencies: -- storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) -- ts-dedent: 2.2.0 -+ - rollup -+ - webpack - -- '@storybook/csf-plugin@10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1)': -+ '@storybook/csf-plugin@10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3))': - dependencies: - storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - unplugin: 2.3.11 -@@ -12617,7 +10617,7 @@ snapshots: - esbuild: 0.27.3 - rollup: 4.59.0 - vite: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -+ webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3) - - '@storybook/csf@0.1.13': - dependencies: -@@ -12630,66 +10630,33 @@ snapshots: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - -- '@storybook/preset-react-webpack@10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1)': -- dependencies: -- '@storybook/core-webpack': 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) -- '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.5.3)(webpack@5.104.1) -- '@types/semver': 7.7.1 -- magic-string: 0.30.21 -- react: 18.3.1 -- react-docgen: 7.1.1 -- react-dom: 18.3.1(react@18.3.1) -- resolve: 1.22.11 -- semver: 7.7.4 -- storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) -- tsconfig-paths: 4.2.0 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- optionalDependencies: -- typescript: 5.5.3 -- transitivePeerDependencies: -- - '@swc/core' -- - esbuild -- - supports-color -- - uglify-js -- - webpack-cli -- -- '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.5.3)(webpack@5.104.1)': -- dependencies: -- debug: 4.4.3 -- endent: 2.1.0 -- find-cache-dir: 3.3.2 -- flat-cache: 3.2.0 -- micromatch: 4.0.8 -- react-docgen-typescript: 2.4.0(typescript@5.5.3) -- tslib: 2.6.2 -- typescript: 5.5.3 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- transitivePeerDependencies: -- - supports-color -- - '@storybook/react-dom-shim@10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - -- '@storybook/react-webpack5@10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1)': -+ '@storybook/react-vite@10.3.3(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3))': - dependencies: -- '@storybook/builder-webpack5': 10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1) -- '@storybook/preset-react-webpack': 10.3.3(@swc/core@1.13.5)(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)(webpack-cli@6.0.1) -+ '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@5.5.3)(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2)) -+ '@rollup/pluginutils': 5.3.0(rollup@4.59.0) -+ '@storybook/builder-vite': 10.3.3(esbuild@0.27.3)(rollup@4.59.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2))(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) - '@storybook/react': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3) -+ empathic: 2.0.0 -+ magic-string: 0.30.21 - react: 18.3.1 -+ react-docgen: 8.0.2 - react-dom: 18.3.1(react@18.3.1) -+ resolve: 1.22.11 - storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) -- optionalDependencies: -- typescript: 5.5.3 -+ tsconfig-paths: 4.2.0 -+ vite: 6.4.0(@types/node@22.17.0)(terser@5.46.0)(tsx@4.6.2) - transitivePeerDependencies: -- - '@rspack/core' -- - '@swc/core' - - esbuild -+ - rollup - - supports-color -- - uglify-js -- - webpack-cli -+ - typescript -+ - webpack - - '@storybook/react@10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.0.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.5.3)': - dependencies: -@@ -12888,29 +10855,6 @@ snapshots: - transitivePeerDependencies: - - supports-color - -- '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.5.3))(typescript@5.5.3)': -- dependencies: -- '@svgr/core': 8.1.0(typescript@5.5.3) -- cosmiconfig: 8.3.6(typescript@5.5.3) -- deepmerge: 4.3.1 -- svgo: 3.3.3 -- transitivePeerDependencies: -- - typescript -- -- '@svgr/webpack@8.1.0(typescript@5.5.3)': -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.29.0) -- '@babel/preset-env': 7.28.3(@babel/core@7.29.0) -- '@babel/preset-react': 7.27.1(@babel/core@7.29.0) -- '@babel/preset-typescript': 7.27.1(@babel/core@7.29.0) -- '@svgr/core': 8.1.0(typescript@5.5.3) -- '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.3)) -- '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.5.3))(typescript@5.5.3) -- transitivePeerDependencies: -- - supports-color -- - typescript -- - '@swc/cli@0.7.8(@swc/core@1.13.5)(chokidar@4.0.3)': - dependencies: - '@swc/core': 1.13.5 -@@ -13067,10 +11011,6 @@ snapshots: - '@types/connect': 3.4.38 - '@types/node': 22.17.0 - -- '@types/bonjour@3.5.13': -- dependencies: -- '@types/node': 22.17.0 -- - '@types/chai@5.2.2': - dependencies: - '@types/deep-eql': 4.0.2 -@@ -13082,12 +11022,7 @@ snapshots: - - '@types/compression@1.7.5': - dependencies: -- '@types/express': 5.0.6 -- -- '@types/connect-history-api-fallback@1.5.4': -- dependencies: -- '@types/express-serve-static-core': 5.1.1 -- '@types/node': 22.17.0 -+ '@types/express': 5.0.6 - - '@types/connect@3.4.38': - dependencies: -@@ -13111,6 +11046,7 @@ snapshots: - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 -+ optional: true - - '@types/eslint@9.6.1': - dependencies: -@@ -13156,18 +11092,12 @@ snapshots: - - '@types/he@1.2.0': {} - -- '@types/html-minifier-terser@6.1.0': {} -- - '@types/html-minifier-terser@7.0.2': {} - - '@types/http-cache-semantics@4.0.4': {} - - '@types/http-errors@2.0.5': {} - -- '@types/http-proxy@1.17.16': -- dependencies: -- '@types/node': 22.17.0 -- - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': -@@ -13226,10 +11156,6 @@ snapshots: - - '@types/ms@0.7.34': {} - -- '@types/node-forge@1.3.14': -- dependencies: -- '@types/node': 22.17.0 -- - '@types/node@15.14.9': {} - - '@types/node@16.18.68': {} -@@ -13275,8 +11201,6 @@ snapshots: - - '@types/resolve@1.20.6': {} - -- '@types/retry@0.12.2': {} -- - '@types/sanitize-html@2.11.0': - dependencies: - htmlparser2: 8.0.1 -@@ -13285,8 +11209,6 @@ snapshots: - - '@types/semver@7.5.6': {} - -- '@types/semver@7.7.1': {} -- - '@types/send@0.17.5': - dependencies: - '@types/mime': 1.3.5 -@@ -13296,10 +11218,6 @@ snapshots: - dependencies: - '@types/node': 22.17.0 - -- '@types/serve-index@1.9.4': -- dependencies: -- '@types/express': 5.0.6 -- - '@types/serve-static@1.15.9': - dependencies: - '@types/http-errors': 2.0.5 -@@ -13311,10 +11229,6 @@ snapshots: - '@types/http-errors': 2.0.5 - '@types/node': 22.17.0 - -- '@types/sockjs@0.3.36': -- dependencies: -- '@types/node': 22.17.0 -- - '@types/stack-utils@2.0.3': {} - - '@types/tough-cookie@4.0.2': {} -@@ -13325,33 +11239,6 @@ snapshots: - - '@types/unist@3.0.3': {} - -- '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1)': -- dependencies: -- '@types/node': 22.17.0 -- tapable: 2.3.0 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- transitivePeerDependencies: -- - '@swc/core' -- - esbuild -- - uglify-js -- - webpack-cli -- -- '@types/webpack-env@1.18.8': {} -- -- '@types/webpack-node-externals@3.0.4(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1)': -- dependencies: -- '@types/node': 22.17.0 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- transitivePeerDependencies: -- - '@swc/core' -- - esbuild -- - uglify-js -- - webpack-cli -- -- '@types/ws@8.18.1': -- dependencies: -- '@types/node': 22.17.0 -- - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@17.0.33': -@@ -13685,20 +11572,26 @@ snapshots: - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 -+ optional: true - -- '@webassemblyjs/floating-point-hex-parser@1.13.2': {} -+ '@webassemblyjs/floating-point-hex-parser@1.13.2': -+ optional: true - -- '@webassemblyjs/helper-api-error@1.13.2': {} -+ '@webassemblyjs/helper-api-error@1.13.2': -+ optional: true - -- '@webassemblyjs/helper-buffer@1.14.1': {} -+ '@webassemblyjs/helper-buffer@1.14.1': -+ optional: true - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 -+ optional: true - -- '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} -+ '@webassemblyjs/helper-wasm-bytecode@1.13.2': -+ optional: true - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: -@@ -13706,16 +11599,20 @@ snapshots: - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 -+ optional: true - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 -+ optional: true - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 -+ optional: true - -- '@webassemblyjs/utf8@1.13.2': {} -+ '@webassemblyjs/utf8@1.13.2': -+ optional: true - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: -@@ -13727,6 +11624,7 @@ snapshots: - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 -+ optional: true - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: -@@ -13735,6 +11633,7 @@ snapshots: - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 -+ optional: true - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: -@@ -13742,6 +11641,7 @@ snapshots: - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 -+ optional: true - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: -@@ -13751,28 +11651,13 @@ snapshots: - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 -+ optional: true - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 -- -- '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.104.1)': -- dependencies: -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) -- -- '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.104.1)': -- dependencies: -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) -- -- '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.104.1)': -- dependencies: -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) -- optionalDependencies: -- webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.104.1) -+ optional: true - - '@xhmikosr/archive-type@7.0.0': - dependencies: -@@ -13854,9 +11739,11 @@ snapshots: - dependencies: - arch: 3.0.0 - -- '@xtuc/ieee754@1.2.0': {} -+ '@xtuc/ieee754@1.2.0': -+ optional: true - -- '@xtuc/long@4.2.2': {} -+ '@xtuc/long@4.2.2': -+ optional: true - - abab@2.0.6: {} - -@@ -13878,6 +11765,7 @@ snapshots: - acorn-import-phases@1.0.4(acorn@8.16.0): - dependencies: - acorn: 8.16.0 -+ optional: true - - acorn-jsx@5.3.2(acorn@8.16.0): - dependencies: -@@ -13902,14 +11790,11 @@ snapshots: - optionalDependencies: - ajv: 8.18.0 - -- ajv-keywords@3.5.2(ajv@6.14.0): -- dependencies: -- ajv: 6.14.0 -- - ajv-keywords@5.1.0(ajv@8.18.0): - dependencies: - ajv: 8.18.0 - fast-deep-equal: 3.1.3 -+ optional: true - - ajv@6.14.0: - dependencies: -@@ -13931,8 +11816,6 @@ snapshots: - - ansi-escapes@6.2.1: {} - -- ansi-html-community@0.0.8: {} -- - ansi-regex@5.0.1: {} - - ansi-regex@6.2.2: {} -@@ -14118,30 +12001,6 @@ snapshots: - cosmiconfig: 7.1.0 - resolve: 1.22.11 - -- babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.29.0): -- dependencies: -- '@babel/compat-data': 7.28.6 -- '@babel/core': 7.29.0 -- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.29.0) -- semver: 6.3.1 -- transitivePeerDependencies: -- - supports-color -- -- babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.29.0) -- core-js-compat: 3.46.0 -- transitivePeerDependencies: -- - supports-color -- -- babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.29.0): -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.29.0) -- transitivePeerDependencies: -- - supports-color -- - babel-preset-current-node-syntax@1.0.1(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 -@@ -14177,11 +12036,8 @@ snapshots: - - base64-js@1.5.1: {} - -- baseline-browser-mapping@2.9.19: {} -- -- batch@0.6.1: {} -- -- big.js@5.2.2: {} -+ baseline-browser-mapping@2.9.19: -+ optional: true - - bin-version-check@5.1.0: - dependencies: -@@ -14194,8 +12050,6 @@ snapshots: - execa: 5.1.1 - find-versions: 5.1.0 - -- binary-extensions@2.3.0: {} -- - body-parser@1.20.4: - dependencies: - bytes: 3.1.2 -@@ -14227,13 +12081,6 @@ snapshots: - transitivePeerDependencies: - - supports-color - -- bonjour-service@1.3.0: -- dependencies: -- fast-deep-equal: 3.1.3 -- multicast-dns: 7.2.5 -- -- boolbase@1.0.0: {} -- - bowser@2.12.1: {} - - brace-expansion@1.1.12: -@@ -14267,6 +12114,7 @@ snapshots: - electron-to-chromium: 1.5.286 - node-releases: 2.0.27 - update-browserslist-db: 1.2.3(browserslist@4.28.1) -+ optional: true - - bser@2.1.1: - dependencies: -@@ -14348,8 +12196,6 @@ snapshots: - - caniuse-lite@1.0.30001769: {} - -- case-sensitive-paths-webpack-plugin@2.4.0: {} -- - ccount@2.0.1: {} - - chai@5.3.3: -@@ -14383,25 +12229,14 @@ snapshots: - - check-error@2.1.3: {} - -- chokidar@3.6.0: -- dependencies: -- anymatch: 3.1.3 -- braces: 3.0.3 -- glob-parent: 5.1.2 -- is-binary-path: 2.1.0 -- is-glob: 4.0.3 -- normalize-path: 3.0.0 -- readdirp: 3.6.0 -- optionalDependencies: -- fsevents: 2.3.3 -- - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 - - chromatic@13.3.4: {} - -- chrome-trace-event@1.0.4: {} -+ chrome-trace-event@1.0.4: -+ optional: true - - ci-info@3.9.0: {} - -@@ -14440,12 +12275,6 @@ snapshots: - strip-ansi: 7.1.2 - wrap-ansi: 9.0.2 - -- clone-deep@4.0.1: -- dependencies: -- is-plain-object: 2.0.4 -- kind-of: 6.0.3 -- shallow-clone: 3.0.1 -- - clsx@2.1.1: {} - - co@4.6.0: {} -@@ -14484,14 +12313,10 @@ snapshots: - - commander@11.1.0: {} - -- commander@12.1.0: {} -- - commander@2.20.3: {} - - commander@6.2.1: {} - -- commander@7.2.0: {} -- - commander@8.3.0: {} - - commondir@1.0.1: {} -@@ -14528,10 +12353,6 @@ snapshots: - - concat-map@0.0.1: {} - -- connect-history-api-fallback@2.0.0: {} -- -- console-clear@1.1.1: {} -- - constructs@10.6.0: {} - - content-disposition@0.5.4: -@@ -14559,10 +12380,6 @@ snapshots: - graceful-fs: 4.2.11 - p-event: 6.0.1 - -- core-js-compat@3.46.0: -- dependencies: -- browserslist: 4.28.1 -- - core-util-is@1.0.3: {} - - cors@2.8.5: -@@ -14630,60 +12447,15 @@ snapshots: - - css-functions-list@3.3.3: {} - -- css-loader@7.1.2(webpack@5.104.1): -- dependencies: -- icss-utils: 5.1.0(postcss@8.5.6) -- postcss: 8.5.6 -- postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) -- postcss-modules-local-by-default: 4.0.5(postcss@8.5.6) -- postcss-modules-scope: 3.2.0(postcss@8.5.6) -- postcss-modules-values: 4.0.0(postcss@8.5.6) -- postcss-value-parser: 4.2.0 -- semver: 7.5.4 -- optionalDependencies: -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- -- css-select@4.3.0: -- dependencies: -- boolbase: 1.0.0 -- css-what: 6.2.2 -- domhandler: 4.3.1 -- domutils: 2.8.0 -- nth-check: 2.1.1 -- -- css-select@5.1.0: -- dependencies: -- boolbase: 1.0.0 -- css-what: 6.2.2 -- domhandler: 5.0.3 -- domutils: 3.1.0 -- nth-check: 2.1.1 -- -- css-tree@2.2.1: -- dependencies: -- mdn-data: 2.0.28 -- source-map-js: 1.2.1 -- -- css-tree@2.3.1: -- dependencies: -- mdn-data: 2.0.30 -- source-map-js: 1.2.1 -- - css-tree@3.2.1: - dependencies: - mdn-data: 2.27.1 - source-map-js: 1.2.1 - -- css-what@6.2.2: {} -- - css.escape@1.5.1: {} - - cssesc@3.0.0: {} - -- csso@5.0.5: -- dependencies: -- css-tree: 2.2.1 -- - cssom@0.3.8: {} - - cssom@0.5.0: {} -@@ -14738,8 +12510,6 @@ snapshots: - - date-format@4.0.14: {} - -- debounce@1.2.1: {} -- - debug@2.6.9: - dependencies: - ms: 2.0.0 -@@ -14768,8 +12538,6 @@ snapshots: - dependencies: - mimic-response: 3.1.0 - -- dedent@0.7.0: {} -- - dedent@1.6.0(babel-plugin-macros@3.1.0): - optionalDependencies: - babel-plugin-macros: 3.1.0 -@@ -14807,8 +12575,6 @@ snapshots: - - delayed-stream@1.0.0: {} - -- depd@1.1.2: {} -- - depd@2.0.0: {} - - dequal@2.0.3: {} -@@ -14817,8 +12583,6 @@ snapshots: - - detect-newline@3.1.0: {} - -- detect-node@2.1.0: {} -- - devalue@5.6.3: {} - - devlop@1.1.0: -@@ -14833,10 +12597,6 @@ snapshots: - dependencies: - path-type: 4.0.0 - -- dns-packet@5.6.1: -- dependencies: -- '@leichtgewicht/ip-codec': 2.0.5 -- - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 -@@ -14849,16 +12609,6 @@ snapshots: - - dom-accessibility-api@0.6.3: {} - -- dom-converter@0.2.0: -- dependencies: -- utila: 0.4.0 -- -- dom-serializer@1.4.1: -- dependencies: -- domelementtype: 2.3.0 -- domhandler: 4.3.1 -- entities: 2.2.0 -- - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 -@@ -14871,10 +12621,6 @@ snapshots: - dependencies: - webidl-conversions: 7.0.0 - -- domhandler@4.3.1: -- dependencies: -- domelementtype: 2.3.0 -- - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 -@@ -14883,12 +12629,6 @@ snapshots: - optionalDependencies: - '@types/trusted-types': 2.0.7 - -- domutils@2.8.0: -- dependencies: -- dom-serializer: 1.4.1 -- domelementtype: 2.3.0 -- domhandler: 4.3.1 -- - domutils@3.1.0: - dependencies: - dom-serializer: 2.0.0 -@@ -14910,10 +12650,6 @@ snapshots: - dependencies: - readable-stream: 2.3.8 - -- duplexer@0.1.2: {} -- -- dynamic-import-polyfill@0.1.1: {} -- - ecdsa-sig-formatter@1.0.11: - dependencies: - safe-buffer: 5.2.1 -@@ -14930,29 +12666,19 @@ snapshots: - - emoji-regex@9.2.2: {} - -- emojis-list@3.0.0: {} -+ empathic@2.0.0: {} - - encodeurl@2.0.0: {} - -- endent@2.1.0: -- dependencies: -- dedent: 0.7.0 -- fast-json-parse: 1.0.3 -- objectorarray: 1.0.5 -- - enhanced-resolve@5.19.0: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.0 - -- entities@2.2.0: {} -- - entities@4.5.0: {} - - env-paths@2.2.1: {} - -- envinfo@7.14.0: {} -- - error-ex@1.3.4: - dependencies: - is-arrayish: 0.2.1 -@@ -15039,7 +12765,8 @@ snapshots: - - es-module-lexer@1.7.0: {} - -- es-module-lexer@2.0.0: {} -+ es-module-lexer@2.0.0: -+ optional: true - - es-object-atoms@1.1.1: - dependencies: -@@ -15653,11 +13380,10 @@ snapshots: - - etag@1.8.1: {} - -- eventemitter3@4.0.7: {} -- - eventemitter3@5.0.1: {} - -- events@3.3.0: {} -+ events@3.3.0: -+ optional: true - - execa@5.1.1: - dependencies: -@@ -15785,8 +13511,6 @@ snapshots: - merge2: 1.4.1 - micromatch: 4.0.8 - -- fast-json-parse@1.0.3: {} -- - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} -@@ -15809,10 +13533,6 @@ snapshots: - dependencies: - reusify: 1.0.4 - -- faye-websocket@0.11.4: -- dependencies: -- websocket-driver: 0.7.4 -- - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 -@@ -15880,12 +13600,6 @@ snapshots: - transitivePeerDependencies: - - supports-color - -- find-cache-dir@3.3.2: -- dependencies: -- commondir: 1.0.1 -- make-dir: 3.1.0 -- pkg-dir: 4.2.0 -- - find-root@1.1.0: {} - - find-up-simple@1.0.1: {} -@@ -15925,33 +13639,12 @@ snapshots: - flatted: 3.4.2 - hookified: 1.15.1 - -- flat@5.0.2: {} -- - flatted@3.4.2: {} - -- follow-redirects@1.15.11: {} -- - for-each@0.3.5: - dependencies: - is-callable: 1.2.7 - -- fork-ts-checker-webpack-plugin@9.1.0(typescript@5.5.3)(webpack@5.104.1): -- dependencies: -- '@babel/code-frame': 7.29.0 -- chalk: 4.1.2 -- chokidar: 4.0.3 -- cosmiconfig: 8.3.6(typescript@5.5.3) -- deepmerge: 4.3.1 -- fs-extra: 10.1.0 -- memfs: 3.5.3 -- minimatch: 3.1.5 -- node-abort-controller: 3.1.1 -- schema-utils: 3.3.0 -- semver: 7.5.4 -- tapable: 2.3.0 -- typescript: 5.5.3 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- - form-data-encoder@2.1.4: {} - - form-data@4.0.4: -@@ -15984,8 +13677,6 @@ snapshots: - jsonfile: 4.0.0 - universalify: 0.1.2 - -- fs-monkey@1.1.0: {} -- - fs.realpath@1.0.0: {} - - fsevents@2.3.2: -@@ -16073,11 +13764,14 @@ snapshots: - dependencies: - is-glob: 4.0.3 - -- glob-to-regex.js@1.2.0(tslib@2.6.2): -- dependencies: -- tslib: 2.6.2 -+ glob-to-regexp@0.4.1: -+ optional: true - -- glob-to-regexp@0.4.1: {} -+ glob@13.0.6: -+ dependencies: -+ minimatch: 10.2.4 -+ minipass: 7.1.3 -+ path-scurry: 2.0.2 - - glob@7.2.3: - dependencies: -@@ -16150,12 +13844,6 @@ snapshots: - - graphemer@1.4.0: {} - -- gzip-size@6.0.0: -- dependencies: -- duplexer: 0.1.2 -- -- handle-thing@2.0.1: {} -- - has-bigints@1.1.0: {} - - has-flag@3.0.0: {} -@@ -16282,31 +13970,12 @@ snapshots: - dependencies: - lru-cache: 10.4.3 - -- hpack.js@2.1.6: -- dependencies: -- inherits: 2.0.4 -- obuf: 1.1.2 -- readable-stream: 2.3.8 -- wbuf: 1.7.3 -- - html-encoding-sniffer@3.0.0: - dependencies: - whatwg-encoding: 2.0.0 - -- html-entities@2.4.0: {} -- - html-escaper@2.0.2: {} - -- html-minifier-terser@6.1.0: -- dependencies: -- camel-case: 4.1.2 -- clean-css: 5.3.3 -- commander: 8.3.0 -- he: 1.2.0 -- param-case: 3.0.4 -- relateurl: 0.2.7 -- terser: 5.46.0 -- - html-minifier-terser@7.2.0: - dependencies: - camel-case: 4.1.2 -@@ -16329,23 +13998,6 @@ snapshots: - - html-void-elements@3.0.0: {} - -- html-webpack-plugin@5.6.6(webpack@5.104.1): -- dependencies: -- '@types/html-minifier-terser': 6.1.0 -- html-minifier-terser: 6.1.0 -- lodash: 4.17.23 -- pretty-error: 4.0.0 -- tapable: 2.3.0 -- optionalDependencies: -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- -- htmlparser2@6.1.0: -- dependencies: -- domelementtype: 2.3.0 -- domhandler: 4.3.1 -- domutils: 2.8.0 -- entities: 2.2.0 -- - htmlparser2@8.0.1: - dependencies: - domelementtype: 2.3.0 -@@ -16355,15 +14007,6 @@ snapshots: - - http-cache-semantics@4.1.1: {} - -- http-deceiver@1.2.7: {} -- -- http-errors@1.6.3: -- dependencies: -- depd: 1.1.2 -- inherits: 2.0.3 -- setprototypeof: 1.1.0 -- statuses: 1.5.0 -- - http-errors@2.0.1: - dependencies: - depd: 2.0.0 -@@ -16372,8 +14015,6 @@ snapshots: - statuses: 2.0.2 - toidentifier: 1.0.1 - -- http-parser-js@0.5.10: {} -- - http-proxy-agent@5.0.0: - dependencies: - '@tootallnate/once': 2.0.0 -@@ -16382,26 +14023,6 @@ snapshots: - transitivePeerDependencies: - - supports-color - -- http-proxy-middleware@2.0.9(@types/express@4.17.25): -- dependencies: -- '@types/http-proxy': 1.17.16 -- http-proxy: 1.18.1 -- is-glob: 4.0.3 -- is-plain-obj: 3.0.0 -- micromatch: 4.0.8 -- optionalDependencies: -- '@types/express': 4.17.25 -- transitivePeerDependencies: -- - debug -- -- http-proxy@1.18.1: -- dependencies: -- eventemitter3: 4.0.7 -- follow-redirects: 1.15.11 -- requires-port: 1.0.0 -- transitivePeerDependencies: -- - debug -- - http2-wrapper@2.2.1: - dependencies: - quick-lru: 5.1.1 -@@ -16420,8 +14041,6 @@ snapshots: - - husky@9.1.7: {} - -- hyperdyperid@1.2.0: {} -- - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 -@@ -16434,10 +14053,6 @@ snapshots: - dependencies: - safer-buffer: 2.1.2 - -- icss-utils@5.1.0(postcss@8.5.6): -- dependencies: -- postcss: 8.5.6 -- - ieee754@1.2.1: {} - - ignore@5.3.2: {} -@@ -16467,8 +14082,6 @@ snapshots: - once: 1.4.0 - wrappy: 1.0.2 - -- inherits@2.0.3: {} -- - inherits@2.0.4: {} - - ini@1.3.8: {} -@@ -16483,12 +14096,8 @@ snapshots: - hasown: 2.0.2 - side-channel: 1.1.0 - -- interpret@3.1.1: {} -- - ipaddr.js@1.9.1: {} - -- ipaddr.js@2.2.0: {} -- - is-array-buffer@3.0.5: - dependencies: - call-bind: 1.0.8 -@@ -16509,10 +14118,6 @@ snapshots: - dependencies: - has-bigints: 1.1.0 - -- is-binary-path@2.1.0: -- dependencies: -- binary-extensions: 2.3.0 -- - is-boolean-object@1.2.2: - dependencies: - call-bound: 1.0.4 -@@ -16587,8 +14192,6 @@ snapshots: - - is-negative-zero@2.0.3: {} - -- is-network-error@1.3.0: {} -- - is-number-object@1.1.1: - dependencies: - call-bound: 1.0.4 -@@ -16600,14 +14203,8 @@ snapshots: - - is-plain-obj@1.1.0: {} - -- is-plain-obj@3.0.0: {} -- - is-plain-obj@4.1.0: {} - -- is-plain-object@2.0.4: -- dependencies: -- isobject: 3.0.1 -- - is-plain-object@5.0.0: {} - - is-potential-custom-element-name@1.0.1: {} -@@ -16683,8 +14280,6 @@ snapshots: - - isexe@2.0.0: {} - -- isobject@3.0.1: {} -- - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-instrument@5.2.1: -@@ -17047,6 +14642,7 @@ snapshots: - '@types/node': 22.17.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 -+ optional: true - - jest-worker@29.7.0: - dependencies: -@@ -17221,12 +14817,7 @@ snapshots: - - language-tags@1.0.9: - dependencies: -- language-subtag-registry: 0.3.22 -- -- launch-editor@2.11.1: -- dependencies: -- picocolors: 1.1.1 -- shell-quote: 1.8.3 -+ language-subtag-registry: 0.3.22 - - leven@3.1.0: {} - -@@ -17265,13 +14856,8 @@ snapshots: - rfdc: 1.3.0 - wrap-ansi: 9.0.2 - -- loader-runner@4.3.1: {} -- -- loader-utils@1.4.2: -- dependencies: -- big.js: 5.2.2 -- emojis-list: 3.0.0 -- json5: 1.0.2 -+ loader-runner@4.3.1: -+ optional: true - - locate-character@3.0.0: {} - -@@ -17283,10 +14869,6 @@ snapshots: - dependencies: - p-locate: 5.0.0 - -- lockfile@1.0.4: -- dependencies: -- signal-exit: 3.0.7 -- - lodash.clonedeep@4.5.0: {} - - lodash.debounce@4.0.8: {} -@@ -17331,6 +14913,8 @@ snapshots: - - lru-cache@10.4.3: {} - -+ lru-cache@11.3.3: {} -+ - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 -@@ -17350,10 +14934,6 @@ snapshots: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - -- make-dir@3.1.0: -- dependencies: -- semver: 6.3.1 -- - make-dir@4.0.0: - dependencies: - semver: 7.5.4 -@@ -17401,29 +14981,12 @@ snapshots: - dependencies: - '@types/mdast': 4.0.4 - -- mdn-data@2.0.28: {} -- -- mdn-data@2.0.30: {} -- - mdn-data@2.27.1: {} - - media-typer@0.3.0: {} - - media-typer@1.1.0: {} - -- memfs@3.5.3: -- dependencies: -- fs-monkey: 1.1.0 -- -- memfs@4.49.0: -- dependencies: -- '@jsonjoy.com/json-pack': 1.21.0(tslib@2.6.2) -- '@jsonjoy.com/util': 1.9.0(tslib@2.6.2) -- glob-to-regex.js: 1.2.0(tslib@2.6.2) -- thingies: 2.5.0(tslib@2.6.2) -- tree-dump: 1.1.0(tslib@2.6.2) -- tslib: 2.6.2 -- - meow@13.2.0: {} - - merge-descriptors@1.0.3: {} -@@ -17605,8 +15168,6 @@ snapshots: - - mini-svg-data-uri@1.4.4: {} - -- minimalistic-assert@1.0.1: {} -- - minimatch@10.2.4: - dependencies: - brace-expansion: 5.0.3 -@@ -17621,6 +15182,8 @@ snapshots: - - minimist@1.2.8: {} - -+ minipass@7.1.3: {} -+ - mnemonist@0.38.3: - dependencies: - obliterator: 1.6.1 -@@ -17629,8 +15192,6 @@ snapshots: - - mri@1.2.0: {} - -- mrmime@1.0.1: {} -- - mrmime@2.0.1: {} - - ms@2.0.0: {} -@@ -17639,11 +15200,6 @@ snapshots: - - ms@2.1.3: {} - -- multicast-dns@7.2.5: -- dependencies: -- dns-packet: 5.6.1 -- thunky: 1.1.0 -- - multipipe@1.0.2: - dependencies: - duplexer2: 0.1.4 -@@ -17659,7 +15215,8 @@ snapshots: - - negotiator@1.0.0: {} - -- neo-async@2.6.2: {} -+ neo-async@2.6.2: -+ optional: true - - nice-napi@1.0.2: - dependencies: -@@ -17678,8 +15235,6 @@ snapshots: - lower-case: 2.0.2 - tslib: 2.6.2 - -- node-abort-controller@3.1.1: {} -- - node-addon-api@3.2.1: - optional: true - -@@ -17691,8 +15246,6 @@ snapshots: - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - -- node-forge@1.4.0: {} -- - node-gyp-build@4.8.0: - optional: true - -@@ -17725,10 +15278,6 @@ snapshots: - dependencies: - path-key: 4.0.0 - -- nth-check@2.1.1: -- dependencies: -- boolbase: 1.0.0 -- - nwsapi@2.2.7: {} - - object-assign@4.1.1: {} -@@ -17780,12 +15329,8 @@ snapshots: - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - -- objectorarray@1.0.5: {} -- - obliterator@1.6.1: {} - -- obuf@1.1.2: {} -- - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 -@@ -17822,8 +15367,6 @@ snapshots: - powershell-utils: 0.1.0 - wsl-utils: 0.3.1 - -- opener@1.5.2: {} -- - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 -@@ -17871,12 +15414,6 @@ snapshots: - - p-map@6.0.0: {} - -- p-retry@6.2.1: -- dependencies: -- '@types/retry': 0.12.2 -- is-network-error: 1.3.0 -- retry: 0.13.1 -- - p-timeout@6.1.2: {} - - p-try@2.2.0: {} -@@ -17939,6 +15476,11 @@ snapshots: - - path-parse@1.0.7: {} - -+ path-scurry@2.0.2: -+ dependencies: -+ lru-cache: 11.3.3 -+ minipass: 7.1.3 -+ - path-to-regexp@0.1.13: {} - - path-to-regexp@8.4.1: {} -@@ -17983,38 +15525,12 @@ snapshots: - - possible-typed-array-names@1.1.0: {} - -- postcss-modules-extract-imports@3.1.0(postcss@8.5.6): -- dependencies: -- postcss: 8.5.6 -- -- postcss-modules-local-by-default@4.0.5(postcss@8.5.6): -- dependencies: -- icss-utils: 5.1.0(postcss@8.5.6) -- postcss: 8.5.6 -- postcss-selector-parser: 6.1.2 -- postcss-value-parser: 4.2.0 -- -- postcss-modules-scope@3.2.0(postcss@8.5.6): -- dependencies: -- postcss: 8.5.6 -- postcss-selector-parser: 6.1.2 -- -- postcss-modules-values@4.0.0(postcss@8.5.6): -- dependencies: -- icss-utils: 5.1.0(postcss@8.5.6) -- postcss: 8.5.6 -- - postcss-resolve-nested-selector@0.1.6: {} - - postcss-safe-parser@7.0.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - -- postcss-selector-parser@6.1.2: -- dependencies: -- cssesc: 3.0.0 -- util-deprecate: 1.0.2 -- - postcss-selector-parser@7.1.1: - dependencies: - cssesc: 3.0.0 -@@ -18046,11 +15562,6 @@ snapshots: - - prettier@3.0.3: {} - -- pretty-error@4.0.0: -- dependencies: -- lodash: 4.17.23 -- renderkid: 3.0.0 -- - pretty-format@27.5.1: - dependencies: - ansi-regex: 5.0.1 -@@ -18139,21 +15650,6 @@ snapshots: - dependencies: - typescript: 5.5.3 - -- react-docgen@7.1.1: -- dependencies: -- '@babel/core': 7.29.0 -- '@babel/traverse': 7.29.0 -- '@babel/types': 7.29.0 -- '@types/babel__core': 7.20.5 -- '@types/babel__traverse': 7.28.0 -- '@types/doctrine': 0.0.9 -- '@types/resolve': 1.20.6 -- doctrine: 3.0.0 -- resolve: 1.22.11 -- strip-indent: 4.1.1 -- transitivePeerDependencies: -- - supports-color -- - react-docgen@8.0.2: - dependencies: - '@babel/core': 7.29.0 -@@ -18235,16 +15731,6 @@ snapshots: - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - -- readable-stream@3.6.2: -- dependencies: -- inherits: 2.0.4 -- string_decoder: 1.3.0 -- util-deprecate: 1.0.2 -- -- readdirp@3.6.0: -- dependencies: -- picomatch: 2.3.2 -- - readdirp@4.1.2: {} - - recast@0.23.11: -@@ -18255,10 +15741,6 @@ snapshots: - tiny-invariant: 1.3.3 - tslib: 2.6.2 - -- rechoir@0.8.0: -- dependencies: -- resolve: 1.22.11 -- - redent@3.0.0: - dependencies: - indent-string: 4.0.0 -@@ -18275,12 +15757,6 @@ snapshots: - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - -- regenerate-unicode-properties@10.2.2: -- dependencies: -- regenerate: 1.4.2 -- -- regenerate@1.4.2: {} -- - regexp-tree@0.1.27: {} - - regexp.prototype.flags@1.5.4: -@@ -18292,25 +15768,10 @@ snapshots: - gopd: 1.2.0 - set-function-name: 2.0.2 - -- regexpu-core@6.4.0: -- dependencies: -- regenerate: 1.4.2 -- regenerate-unicode-properties: 10.2.2 -- regjsgen: 0.8.0 -- regjsparser: 0.13.0 -- unicode-match-property-ecmascript: 2.0.0 -- unicode-match-property-value-ecmascript: 2.2.1 -- -- regjsgen@0.8.0: {} -- - regjsparser@0.10.0: - dependencies: - jsesc: 0.5.0 - -- regjsparser@0.13.0: -- dependencies: -- jsesc: 3.1.0 -- - rehype-autolink-headings@7.1.0: - dependencies: - '@types/hast': 3.0.4 -@@ -18353,14 +15814,6 @@ snapshots: - unified: 11.0.5 - vfile: 6.0.3 - -- renderkid@3.0.0: -- dependencies: -- css-select: 4.3.0 -- dom-converter: 0.2.0 -- htmlparser2: 6.1.0 -- lodash: 4.17.23 -- strip-ansi: 6.0.1 -- - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} -@@ -18402,8 +15855,6 @@ snapshots: - onetime: 5.1.2 - signal-exit: 3.0.7 - -- retry@0.13.1: {} -- - reusify@1.0.4: {} - - rfdc@1.3.0: {} -@@ -18521,8 +15972,6 @@ snapshots: - parse-srcset: 1.0.2 - postcss: 8.5.6 - -- sax@1.6.0: {} -- - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 -@@ -18531,18 +15980,13 @@ snapshots: - dependencies: - loose-envify: 1.4.0 - -- schema-utils@3.3.0: -- dependencies: -- '@types/json-schema': 7.0.15 -- ajv: 6.14.0 -- ajv-keywords: 3.5.2(ajv@6.14.0) -- - schema-utils@4.3.3: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) - ajv-keywords: 5.1.0(ajv@8.18.0) -+ optional: true - - screenfull@6.0.2: {} - -@@ -18552,13 +15996,6 @@ snapshots: - dependencies: - commander: 6.2.1 - -- select-hose@2.0.0: {} -- -- selfsigned@2.4.1: -- dependencies: -- '@types/node-forge': 1.3.14 -- node-forge: 1.4.0 -- - semver-regex@4.0.5: {} - - semver-truncate@3.0.0: -@@ -18609,18 +16046,6 @@ snapshots: - transitivePeerDependencies: - - supports-color - -- serve-index@1.9.1: -- dependencies: -- accepts: 1.3.8 -- batch: 0.6.1 -- debug: 2.6.9 -- escape-html: 1.0.3 -- http-errors: 1.6.3 -- mime-types: 2.1.35 -- parseurl: 1.3.3 -- transitivePeerDependencies: -- - supports-color -- - serve-static@1.16.3: - dependencies: - encodeurl: 2.0.0 -@@ -18663,22 +16088,14 @@ snapshots: - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - -- setprototypeof@1.1.0: {} -- - setprototypeof@1.2.0: {} - -- shallow-clone@3.0.1: -- dependencies: -- kind-of: 6.0.3 -- - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - -- shell-quote@1.8.3: {} -- - side-channel-list@1.0.0: - dependencies: - es-errors: 1.3.0 -@@ -18711,12 +16128,6 @@ snapshots: - - signal-exit@4.1.0: {} - -- sirv@2.0.3: -- dependencies: -- '@polka/url': 1.0.0-next.29 -- mrmime: 1.0.1 -- totalist: 3.0.1 -- - sirv@3.0.2: - dependencies: - '@polka/url': 1.0.0-next.29 -@@ -18750,12 +16161,6 @@ snapshots: - dot-case: 3.0.4 - tslib: 2.6.2 - -- sockjs@0.3.24: -- dependencies: -- faye-websocket: 0.11.4 -- uuid: 8.3.2 -- websocket-driver: 0.7.4 -- - sort-keys-length@1.0.1: - dependencies: - sort-keys: 1.1.2 -@@ -18798,27 +16203,6 @@ snapshots: - - spdx-license-ids@3.0.23: {} - -- spdy-transport@3.0.0: -- dependencies: -- debug: 4.4.3 -- detect-node: 2.1.0 -- hpack.js: 2.1.6 -- obuf: 1.1.2 -- readable-stream: 3.6.2 -- wbuf: 1.7.3 -- transitivePeerDependencies: -- - supports-color -- -- spdy@4.0.2: -- dependencies: -- debug: 4.4.3 -- handle-thing: 2.0.1 -- http-deceiver: 1.2.7 -- select-hose: 2.0.0 -- spdy-transport: 3.0.0 -- transitivePeerDependencies: -- - supports-color -- - sprintf-js@1.0.3: {} - - stable-hash@0.0.4: {} -@@ -18827,8 +16211,6 @@ snapshots: - dependencies: - escape-string-regexp: 2.0.0 - -- statuses@1.5.0: {} -- - statuses@2.0.2: {} - - stop-iteration-iterator@1.1.0: -@@ -18952,10 +16334,6 @@ snapshots: - dependencies: - safe-buffer: 5.1.2 - -- string_decoder@1.3.0: -- dependencies: -- safe-buffer: 5.2.1 -- - stringify-entities@4.0.3: - dependencies: - character-entities-html4: 2.1.0 -@@ -18997,10 +16375,6 @@ snapshots: - '@tokenizer/token': 0.3.0 - peek-readable: 5.3.1 - -- style-loader@4.0.0(webpack@5.104.1): -- dependencies: -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- - stylelint-config-recommended@14.0.0(stylelint@16.26.1(typescript@5.5.3)): - dependencies: - stylelint: 16.26.1(typescript@5.5.3) -@@ -19108,22 +16482,6 @@ snapshots: - - svg-tags@1.0.0: {} - -- svgo@3.3.3: -- dependencies: -- commander: 7.2.0 -- css-select: 5.1.0 -- css-tree: 2.3.1 -- css-what: 6.2.2 -- csso: 5.0.5 -- picocolors: 1.1.1 -- sax: 1.6.0 -- -- swc-loader@0.2.6(@swc/core@1.13.5)(webpack@5.104.1): -- dependencies: -- '@swc/core': 1.13.5 -- '@swc/counter': 0.1.3 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- - swr@1.3.0(react@18.3.1): - dependencies: - react: 18.3.1 -@@ -19148,16 +16506,17 @@ snapshots: - transitivePeerDependencies: - - bare-abort-controller - -- terser-webpack-plugin@5.4.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack@5.104.1): -+ terser-webpack-plugin@5.4.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - terser: 5.46.0 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -+ webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3) - optionalDependencies: - '@swc/core': 1.13.5 - esbuild: 0.27.3 -+ optional: true - - terser@5.46.0: - dependencies: -@@ -19178,10 +16537,6 @@ snapshots: - - text-table@0.2.0: {} - -- thingies@2.5.0(tslib@2.6.2): -- dependencies: -- tslib: 2.6.2 -- - through2@0.4.2: - dependencies: - readable-stream: 1.0.34 -@@ -19189,8 +16544,6 @@ snapshots: - - through@2.3.8: {} - -- thunky@1.1.0: {} -- - tiny-invariant@1.3.3: {} - - tinyglobby@0.2.15: -@@ -19208,10 +16561,6 @@ snapshots: - dependencies: - is-number: 7.0.0 - -- to-string-loader@1.2.0: -- dependencies: -- loader-utils: 1.4.2 -- - toidentifier@1.0.1: {} - - token-types@6.0.0: -@@ -19238,10 +16587,6 @@ snapshots: - - traverse-chain@0.1.0: {} - -- tree-dump@1.1.0(tslib@2.6.2): -- dependencies: -- tslib: 2.6.2 -- - trim-lines@3.0.1: {} - - trough@2.1.0: {} -@@ -19450,17 +16795,6 @@ snapshots: - - undici-types@6.21.0: {} - -- unicode-canonical-property-names-ecmascript@2.0.1: {} -- -- unicode-match-property-ecmascript@2.0.0: -- dependencies: -- unicode-canonical-property-names-ecmascript: 2.0.1 -- unicode-property-aliases-ecmascript: 2.2.0 -- -- unicode-match-property-value-ecmascript@2.2.1: {} -- -- unicode-property-aliases-ecmascript@2.2.0: {} -- - unicorn-magic@0.1.0: {} - - unified@11.0.5: -@@ -19527,6 +16861,7 @@ snapshots: - browserslist: 4.28.1 - escalade: 3.2.0 - picocolors: 1.1.1 -+ optional: true - - uri-js@4.4.1: - dependencies: -@@ -19553,8 +16888,6 @@ snapshots: - - util-deprecate@1.0.2: {} - -- utila@0.4.0: {} -- - utils-merge@1.0.1: {} - - uuid@8.3.2: {} -@@ -19632,10 +16965,7 @@ snapshots: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 -- -- wbuf@1.7.3: -- dependencies: -- minimalistic-assert: 1.0.1 -+ optional: true - - web-namespaces@2.0.1: {} - -@@ -19645,156 +16975,12 @@ snapshots: - - webidl-conversions@7.0.0: {} - -- webpack-assets-manifest@6.3.0(webpack@5.104.1): -- dependencies: -- deepmerge: 4.3.1 -- lockfile: 1.0.4 -- schema-utils: 4.3.3 -- tapable: 2.3.0 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- -- webpack-bundle-analyzer@4.10.2: -- dependencies: -- '@discoveryjs/json-ext': 0.5.7 -- acorn: 8.16.0 -- acorn-walk: 8.3.1 -- commander: 7.2.0 -- debounce: 1.2.1 -- escape-string-regexp: 4.0.0 -- gzip-size: 6.0.0 -- html-escaper: 2.0.2 -- opener: 1.5.2 -- picocolors: 1.1.1 -- sirv: 2.0.3 -- ws: 7.5.10 -- transitivePeerDependencies: -- - bufferutil -- - utf-8-validate -- -- webpack-cli@6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1): -- dependencies: -- '@discoveryjs/json-ext': 0.6.3 -- '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.104.1) -- '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.104.1) -- '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.104.1) -- colorette: 2.0.20 -- commander: 12.1.0 -- cross-spawn: 7.0.6 -- envinfo: 7.14.0 -- fastest-levenshtein: 1.0.16 -- import-local: 3.2.0 -- interpret: 3.1.1 -- rechoir: 0.8.0 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- webpack-merge: 6.0.1 -- optionalDependencies: -- webpack-bundle-analyzer: 4.10.2 -- webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.104.1) -- -- webpack-dev-middleware@6.1.3(webpack@5.104.1): -- dependencies: -- colorette: 2.0.20 -- memfs: 3.5.3 -- mime-types: 2.1.35 -- range-parser: 1.2.1 -- schema-utils: 4.3.3 -- optionalDependencies: -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- -- webpack-dev-middleware@7.4.5(webpack@5.104.1): -- dependencies: -- colorette: 2.0.20 -- memfs: 4.49.0 -- mime-types: 3.0.2 -- on-finished: 2.4.1 -- range-parser: 1.2.1 -- schema-utils: 4.3.3 -- optionalDependencies: -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- -- webpack-dev-server@5.2.2(webpack-cli@6.0.1)(webpack@5.104.1): -- dependencies: -- '@types/bonjour': 3.5.13 -- '@types/connect-history-api-fallback': 1.5.4 -- '@types/express': 4.17.25 -- '@types/express-serve-static-core': 4.19.7 -- '@types/serve-index': 1.9.4 -- '@types/serve-static': 1.15.9 -- '@types/sockjs': 0.3.36 -- '@types/ws': 8.18.1 -- ansi-html-community: 0.0.8 -- bonjour-service: 1.3.0 -- chokidar: 3.6.0 -- colorette: 2.0.20 -- compression: 1.7.4 -- connect-history-api-fallback: 2.0.0 -- express: 4.22.1 -- graceful-fs: 4.2.11 -- http-proxy-middleware: 2.0.9(@types/express@4.17.25) -- ipaddr.js: 2.2.0 -- launch-editor: 2.11.1 -- open: 10.2.0 -- p-retry: 6.2.1 -- schema-utils: 4.3.3 -- selfsigned: 2.4.1 -- serve-index: 1.9.1 -- sockjs: 0.3.24 -- spdy: 4.0.2 -- webpack-dev-middleware: 7.4.5(webpack@5.104.1) -- ws: 8.19.0 -- optionalDependencies: -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) -- transitivePeerDependencies: -- - bufferutil -- - debug -- - supports-color -- - utf-8-validate -- -- webpack-format-messages@2.0.6: -- dependencies: -- kleur: 3.0.3 -- -- webpack-hot-middleware@2.26.1: -- dependencies: -- ansi-html-community: 0.0.8 -- html-entities: 2.4.0 -- strip-ansi: 6.0.1 -- -- webpack-hot-server-middleware@0.6.1(webpack@5.104.1): -- dependencies: -- debug: 3.2.7 -- require-from-string: 2.0.2 -- source-map-support: 0.5.21 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- transitivePeerDependencies: -- - supports-color -- -- webpack-manifest-plugin@6.0.1(webpack@5.104.1): -- dependencies: -- tapable: 2.3.0 -- webpack: 5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1) -- webpack-sources: 3.3.3 -- -- webpack-merge@6.0.1: -- dependencies: -- clone-deep: 4.0.1 -- flat: 5.0.2 -- wildcard: 2.0.1 -- -- webpack-messages@2.0.4: -- dependencies: -- console-clear: 1.1.1 -- kleur: 3.0.3 -- webpack-format-messages: 2.0.6 -- -- webpack-node-externals@3.0.0: {} -- -- webpack-sources@3.3.3: {} -+ webpack-sources@3.3.3: -+ optional: true - - webpack-virtual-modules@0.6.2: {} - -- webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)(webpack-cli@6.0.1): -+ webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 -@@ -19818,23 +17004,14 @@ snapshots: - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.0 -- terser-webpack-plugin: 5.4.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack@5.104.1) -+ terser-webpack-plugin: 5.4.0(@swc/core@1.13.5)(esbuild@0.27.3)(webpack@5.104.1(@swc/core@1.13.5)(esbuild@0.27.3)) - watchpack: 2.5.1 - webpack-sources: 3.3.3 -- optionalDependencies: -- webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.104.1) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js -- -- websocket-driver@0.7.4: -- dependencies: -- http-parser-js: 0.5.10 -- safe-buffer: 5.2.1 -- websocket-extensions: 0.1.4 -- -- websocket-extensions@0.1.4: {} -+ optional: true - - whatwg-encoding@2.0.0: - dependencies: -@@ -19901,8 +17078,6 @@ snapshots: - dependencies: - isexe: 2.0.0 - -- wildcard@2.0.1: {} -- - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 -@@ -19927,8 +17102,6 @@ snapshots: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - -- ws@7.5.10: {} -- - ws@8.19.0: {} - - wsl-utils@0.1.0: --- -2.50.1 (Apple Git-155) - - -From 833a07b8d277fedba09dbe2e59e5da65492c9388 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Thu, 9 Apr 2026 23:03:08 +0100 -Subject: [PATCH 09/17] Enable skipLibCheck to suppress upstream type errors in - node_modules - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/tsconfig.json | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/dotcom-rendering/tsconfig.json b/dotcom-rendering/tsconfig.json -index fd748a9adb..175d3739f7 100644 ---- a/dotcom-rendering/tsconfig.json -+++ b/dotcom-rendering/tsconfig.json -@@ -9,6 +9,7 @@ - "lib": ["esnext", "es2015", "dom"], - "moduleResolution": "bundler", - "noEmit": true, -+ "skipLibCheck": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedIndexedAccess": true, - "paths": { --- -2.50.1 (Apple Git-155) - - -From f646dbf5890a9480a82b52ab36a9de7ffd82ea82 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Thu, 9 Apr 2026 23:22:16 +0100 -Subject: [PATCH 10/17] Add AMD require type for curl.js loader in - InteractiveBlockComponent - -Previously typed incidentally by @types/webpack-env which was removed. - -Co-Authored-By: Claude Opus 4.6 ---- - .../src/components/InteractiveBlockComponent.island.tsx | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx b/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx -index ab5cc104ae..d431524a77 100644 ---- a/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx -+++ b/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx -@@ -1,3 +1,10 @@ -+// AMD require provided by curl.js loader for legacy interactives -+declare global { -+ interface Window { -+ require(modules: string[], callback: (...args: never[]) => void): void; -+ } -+} -+ - import { css } from '@emotion/react'; - import type { SerializedStyles } from '@emotion/react'; - import { getErrorMessage, isUndefined, log } from '@guardian/libs'; --- -2.50.1 (Apple Git-155) - - -From 6e603c8b36b9f2b92b0f3e52f8a17758c6cda49a Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Thu, 9 Apr 2026 23:28:35 +0100 -Subject: [PATCH 11/17] Fix Jest config for Vite migration - -- Move .swcrc.json from webpack/ to .swcrc.jest.json (Jest-only concern) -- Add Jest mock for islandRegistry.ts (import.meta.glob unsupported) -- Revert nativeConnection.ts to named imports (client-side, not SSR) - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/.swcrc.jest.json | 18 ++++++++++++++++++ - dotcom-rendering/__mocks__/islandRegistry.ts | 9 +++++++++ - dotcom-rendering/jest.config.js | 3 ++- - .../src/lib/thrift/nativeConnection.ts | 6 ++---- - 4 files changed, 31 insertions(+), 5 deletions(-) - create mode 100644 dotcom-rendering/.swcrc.jest.json - create mode 100644 dotcom-rendering/__mocks__/islandRegistry.ts - -diff --git a/dotcom-rendering/.swcrc.jest.json b/dotcom-rendering/.swcrc.jest.json -new file mode 100644 -index 0000000000..51f3d35ea9 ---- /dev/null -+++ b/dotcom-rendering/.swcrc.jest.json -@@ -0,0 +1,18 @@ -+{ -+ "$schema": "http://json.schemastore.org/swcrc", -+ "jsc": { -+ "parser": { -+ "syntax": "typescript", -+ "tsx": true, -+ "decorators": false, -+ "dynamicImport": true -+ }, -+ "transform": { -+ "react": { -+ "runtime": "automatic", -+ "importSource": "@emotion/react" -+ } -+ } -+ }, -+ "sourceMaps": true -+} -diff --git a/dotcom-rendering/__mocks__/islandRegistry.ts b/dotcom-rendering/__mocks__/islandRegistry.ts -new file mode 100644 -index 0000000000..7034f4e74d ---- /dev/null -+++ b/dotcom-rendering/__mocks__/islandRegistry.ts -@@ -0,0 +1,9 @@ -+/** -+ * Jest mock for islandRegistry.ts which uses import.meta.glob -+ * (not supported by Jest/SWC). -+ */ -+export const getIslandModule = ( -+ _name: string, -+): (() => Promise>) | undefined => { -+ return undefined; -+}; -diff --git a/dotcom-rendering/jest.config.js b/dotcom-rendering/jest.config.js -index e282699b5c..8927bcb13e 100644 ---- a/dotcom-rendering/jest.config.js -+++ b/dotcom-rendering/jest.config.js -@@ -1,4 +1,4 @@ --const swcConfig = require('./webpack/.swcrc.json'); -+const swcConfig = require('./.swcrc.jest.json'); - - const esModules = [ - '@guardian/', -@@ -21,6 +21,7 @@ module.exports = { - moduleNameMapper: { - '^svgs/(.*)$': '/__mocks__/svgMock.tsx', - '^(.*)\\.svg$': '/__mocks__/svgMock.tsx', -+ '(.*)/islandRegistry': '/__mocks__/islandRegistry.ts', - }, - transformIgnorePatterns: [`/node_modules/.pnpm/(?!${esModules})`], - collectCoverageFrom: ['src/**/*.{ts,tsx}'], -diff --git a/dotcom-rendering/src/lib/thrift/nativeConnection.ts b/dotcom-rendering/src/lib/thrift/nativeConnection.ts -index b526c5a7df..3b1ab0659f 100644 ---- a/dotcom-rendering/src/lib/thrift/nativeConnection.ts -+++ b/dotcom-rendering/src/lib/thrift/nativeConnection.ts -@@ -7,15 +7,13 @@ import type { - TransportType, - TTransport, - } from '@creditkarma/thrift-server-core'; --import thriftCore from '@creditkarma/thrift-server-core'; -- --const { -+import { - getProtocol, - getTransport, - TApplicationException, - TApplicationExceptionType, - ThriftConnection, --} = thriftCore; -+} from '@creditkarma/thrift-server-core'; - import { TMultiplexedProtocol } from './protocols'; - - declare global { --- -2.50.1 (Apple Git-155) - - -From a2ceaae1793492ad759abb9326dd0263fee79a92 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Sat, 11 Apr 2026 16:53:52 +0100 -Subject: [PATCH 12/17] Fix Vite dev server asset loading and remove - frameworks.js - -Dev mode now serves modules by source path (e.g. /assets/src/client/main.web.ts) -matching how Vite's dev server resolves modules. Removes explicit frameworks.js -script tags since ES module imports auto-resolve chunk dependencies. Adds -@vite/client script injection for HMR support in dev mode. - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/src/lib/assets.test.ts | 28 ++++----- - dotcom-rendering/src/lib/assets.ts | 62 ++++++++----------- - ...render.allEditorialNewslettersPage.web.tsx | 1 - - .../src/server/render.article.web.tsx | 1 - - .../src/server/render.front.web.tsx | 2 - - .../src/server/render.sportDataPage.web.tsx | 1 - - 6 files changed, 39 insertions(+), 56 deletions(-) - -diff --git a/dotcom-rendering/src/lib/assets.test.ts b/dotcom-rendering/src/lib/assets.test.ts -index 65c7db3ee3..8d28df4a44 100644 ---- a/dotcom-rendering/src/lib/assets.test.ts -+++ b/dotcom-rendering/src/lib/assets.test.ts -@@ -44,6 +44,15 @@ describe('regular expression to match files', () => { - ); - }); - -+ it('should match dev source paths', () => { -+ expect('http://localhost:3030/assets/src/client/main.web.ts').toMatch( -+ WEB, -+ ); -+ expect('http://localhost:3030/assets/src/client/main.apps.ts').toMatch( -+ APPS_SCRIPT, -+ ); -+ }); -+ - it('should handle PROD environment', () => { - expect( - 'https://assets.guim.co.uk/assets/index.client.web.DKLwwO4p.js', -@@ -72,11 +81,6 @@ describe('getPathFromManifest', () => { - name: 'index', - src: 'src/client/main.web.ts', - isEntry: true, -- imports: ['_frameworks.client.web.xyz78901.js'], -- }, -- _frameworks: { -- file: 'frameworks.client.web.xyz78901.js', -- name: 'frameworks', - }, - }); - (readFileSync as jest.Mock).mockReturnValue(viteManifest); -@@ -92,15 +96,11 @@ describe('getPathFromManifest', () => { - ); - }); - -- it('returns correct hashed asset for frameworks chunk', () => { -- expect(getPathFromManifest('client.web', 'frameworks.js')).toBe( -- '/assets/frameworks.client.web.xyz78901.js', -- ); -- }); -- -- it('throws an error when the hashed asset cant be found', () => { -- expect(() => getPathFromManifest('client.web', 'foo.bar.js')).toThrow( -- 'Missing manifest for foo.bar.js', -+ it('throws an error when the manifest entry is missing', () => { -+ // Use client.apps (not cached by previous test) with an empty manifest -+ (readFileSync as jest.Mock).mockReturnValue(JSON.stringify({})); -+ expect(() => getPathFromManifest('client.apps', 'index.js')).toThrow( -+ 'Missing manifest for index.js', - ); - }); - }); -diff --git a/dotcom-rendering/src/lib/assets.ts b/dotcom-rendering/src/lib/assets.ts -index ba3c932023..d1b9e57b32 100644 ---- a/dotcom-rendering/src/lib/assets.ts -+++ b/dotcom-rendering/src/lib/assets.ts -@@ -107,16 +107,6 @@ const entrySourcePaths: Record = { - 'client.editionsCrossword': 'src/client/main.editionsCrossword.tsx', - }; - --/** -- * Finds a manifest entry by its `name` field. -- * Used for chunks like "frameworks" that aren't keyed by source path. -- */ --const findEntryByName = ( -- manifest: ViteManifest, -- name: string, --): ViteManifestEntry | undefined => -- Object.values(manifest).find((entry) => entry.name === name); -- - export const getPathFromManifest = ( - build: Build, - filename: `${string}.js`, -@@ -126,27 +116,14 @@ export const getPathFromManifest = ( - } - - if (isDev) { -- return `${ASSET_ORIGIN}assets/${filename.replace( -- '.js', -- `.${build}.js`, -- )}`; -+ // In dev, Vite serves modules by source path, not built filenames -+ const sourcePath = entrySourcePaths[build]; -+ return `${ASSET_ORIGIN}assets/${sourcePath}`; - } - - const manifest = getManifest(getManifestPath(build)); -- -- // Strip .js extension to get the logical name (e.g. "index", "frameworks") -- const logicalName = filename.replace(/\.js$/, ''); -- -- let entry: ViteManifestEntry | undefined; -- -- if (logicalName === 'index') { -- // Look up the entry point by its source path -- const sourcePath = entrySourcePaths[build]; -- entry = manifest[sourcePath]; -- } else { -- // For non-entry chunks (e.g. "frameworks"), find by name -- entry = findEntryByName(manifest, logicalName); -- } -+ const sourcePath = entrySourcePaths[build]; -+ const entry = manifest[sourcePath]; - - if (!entry) { - throw new Error(`Missing manifest for ${filename}`); -@@ -156,14 +133,16 @@ export const getPathFromManifest = ( - }; - - /** -- * To ensure this only applies to guardian scripts, -- * we check that it is served from an asset/ directory -- * and that it ends with the bundle type and extension, -- * with an optional hash for local development -- * and stripped query parameters. -+ * Matches Guardian script URLs in both dev and prod: -+ * Prod: assets/index.client.web.DKLwwO4p.js -+ * Dev: assets/src/client/main.web.ts - */ --const getScriptRegex = (build: Build) => -- new RegExp(`assets\\/\\w+\\.${build}\\.(\\w{8}\\.)?js(\\?.*)?$`); -+const getScriptRegex = (build: Build) => { -+ const prodPattern = `assets\\/\\w+\\.${build}\\.(\\w{8}\\.)?js(\\?.*)?$`; -+ const sourcePath = entrySourcePaths[build]; -+ const devPattern = sourcePath.replace(/[/.]/g, '\\$&'); -+ return new RegExp(`(${prodPattern})|(${devPattern})`); -+}; - - export const WEB = getScriptRegex('client.web'); - export const WEB_VARIANT_SCRIPT = getScriptRegex('client.web.variant'); -@@ -172,8 +151,8 @@ export const EDITIONS_CROSSWORD_SCRIPT = getScriptRegex( - 'client.editionsCrossword', - ); - --export const generateScriptTags = (scripts: string[]): string[] => -- scripts.filter(isString).map((script) => { -+export const generateScriptTags = (scripts: string[]): string[] => { -+ const tags = scripts.filter(isString).map((script) => { - if ( - script.match(WEB) ?? - script.match(WEB_VARIANT_SCRIPT) ?? -@@ -189,6 +168,15 @@ export const generateScriptTags = (scripts: string[]): string[] => - ].join('\n'); - }); - -+ if (isDev) { -+ tags.unshift( -+ ``, -+ ); -+ } -+ -+ return tags; -+}; -+ - export const getModulesBuild = ({ - tests, - }: { -diff --git a/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx b/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx -index bf9637ba9f..037aa80188 100644 ---- a/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx -+++ b/dotcom-rendering/src/server/render.allEditorialNewslettersPage.web.tsx -@@ -59,7 +59,6 @@ export const renderEditorialNewslettersPage = ({ - */ - const prefetchScripts = [ - polyfillIO, -- getPathFromManifest(build, 'frameworks.js'), - getPathFromManifest(build, 'index.js'), - process.env.COMMERCIAL_BUNDLE_URL ?? - newslettersPage.config.commercialBundleUrl, -diff --git a/dotcom-rendering/src/server/render.article.web.tsx b/dotcom-rendering/src/server/render.article.web.tsx -index bf1fb3b18d..3c9af65bcf 100644 ---- a/dotcom-rendering/src/server/render.article.web.tsx -+++ b/dotcom-rendering/src/server/render.article.web.tsx -@@ -106,7 +106,6 @@ export const renderHtml = ({ - */ - const prefetchScripts = [ - polyfillIO, -- getPathFromManifest(build, 'frameworks.js'), - getPathFromManifest(build, 'index.js'), - process.env.COMMERCIAL_BUNDLE_URL ?? - frontendData.config.commercialBundleUrl, -diff --git a/dotcom-rendering/src/server/render.front.web.tsx b/dotcom-rendering/src/server/render.front.web.tsx -index de7a0aae80..1858029f34 100644 ---- a/dotcom-rendering/src/server/render.front.web.tsx -+++ b/dotcom-rendering/src/server/render.front.web.tsx -@@ -114,7 +114,6 @@ export const renderFront = ({ - */ - const prefetchScripts = [ - polyfillIO, -- getPathFromManifest(build, 'frameworks.js'), - getPathFromManifest(build, 'index.js'), - process.env.COMMERCIAL_BUNDLE_URL ?? front.config.commercialBundleUrl, - ].filter(isString); -@@ -215,7 +214,6 @@ export const renderTagPage = ({ - */ - const prefetchScripts = [ - polyfillIO, -- getPathFromManifest(build, 'frameworks.js'), - getPathFromManifest(build, 'index.js'), - process.env.COMMERCIAL_BUNDLE_URL ?? tagPage.config.commercialBundleUrl, - ].filter(isString); -diff --git a/dotcom-rendering/src/server/render.sportDataPage.web.tsx b/dotcom-rendering/src/server/render.sportDataPage.web.tsx -index 034a9bdbdb..0f97bec39f 100644 ---- a/dotcom-rendering/src/server/render.sportDataPage.web.tsx -+++ b/dotcom-rendering/src/server/render.sportDataPage.web.tsx -@@ -142,7 +142,6 @@ export const renderSportPage = ({ sportData, nav }: Props) => { - */ - const prefetchScripts = [ - polyfillIO, -- getPathFromManifest(build, 'frameworks.js'), - getPathFromManifest(build, 'index.js'), - process.env.COMMERCIAL_BUNDLE_URL ?? - sportData.config.commercialBundleUrl, --- -2.50.1 (Apple Git-155) - - -From 23d7deed9c6e3e5725c1a010bfb3d2c3719d5c3d Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Sat, 11 Apr 2026 17:06:20 +0100 -Subject: [PATCH 13/17] Remove Preact aliases, use React for all builds - -Preact aliases in the dev server config were leaking into SSR module -resolution, causing renderToString to use preact-render-to-string -instead of react-dom/server, which resulted in empty HTML output. -Remove Preact aliases from both dev and prod client configs to use -vanilla React everywhere. - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/vite/dev-server.ts | 8 -------- - dotcom-rendering/vite/vite.config.client.ts | 12 ++---------- - 2 files changed, 2 insertions(+), 18 deletions(-) - -diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts -index a77780c0ec..60d8abb4f7 100644 ---- a/dotcom-rendering/vite/dev-server.ts -+++ b/dotcom-rendering/vite/dev-server.ts -@@ -37,14 +37,6 @@ async function start() { - }), - ssrCjsPlugin(cjsPackages), - ], -- resolve: { -- alias: { -- // Client-side Preact aliasing for browser modules -- react: 'preact/compat', -- 'react-dom/test-utils': 'preact/test-utils', -- 'react-dom': 'preact/compat', -- }, -- }, - server: { - middlewareMode: true, - hmr: true, -diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.ts -index 06bfc728f6..e0499a56d0 100644 ---- a/dotcom-rendering/vite/vite.config.client.ts -+++ b/dotcom-rendering/vite/vite.config.client.ts -@@ -99,7 +99,7 @@ const getManualChunks = ( - - return (id: string) => { - if ( -- /node_modules\/(preact|react-is|hoist-non-react-statistics|swr|@emotion|stylis)\//.test( -+ /node_modules\/(react|react-dom|react-is|hoist-non-react-statistics|swr|@emotion|stylis)\//.test( - id, - ) - ) { -@@ -140,15 +140,7 @@ export const createClientConfig = (build: Build): UserConfig => { - ] - : []), - ], -- resolve: { -- alias: { -- // Client builds use Preact for smaller bundle size. -- // Server builds use real React (not aliased). -- react: 'preact/compat', -- 'react-dom/test-utils': 'preact/test-utils', -- 'react-dom': 'preact/compat', -- }, -- }, -+ resolve: {}, - build: { - outDir: 'dist', - emptyOutDir: false, --- -2.50.1 (Apple Git-155) - - -From f23e3e3e1a00170682198ae00cba15fa2cd89047 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Sat, 11 Apr 2026 17:43:01 +0100 -Subject: [PATCH 14/17] Fix SVG imports to return React components instead of - URLs - -vite-plugin-svgr defaults to only processing *.svg?react imports. -Add include: '**/*.svg' so all SVG imports are transformed into -React components, matching the previous @svgr/webpack behavior. - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/vite/dev-server.ts | 1 + - dotcom-rendering/vite/vite.config.client.ts | 1 + - dotcom-rendering/vite/vite.config.server.ts | 1 + - 3 files changed, 3 insertions(+) - -diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts -index 60d8abb4f7..b6729c834c 100644 ---- a/dotcom-rendering/vite/dev-server.ts -+++ b/dotcom-rendering/vite/dev-server.ts -@@ -33,6 +33,7 @@ async function start() { - const devConfig = mergeConfig(sharedConfig, { - plugins: [ - svgr({ -+ include: '**/*.svg', - svgrOptions: { svgo: false }, - }), - ssrCjsPlugin(cjsPackages), -diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.ts -index e0499a56d0..602aa15f89 100644 ---- a/dotcom-rendering/vite/vite.config.client.ts -+++ b/dotcom-rendering/vite/vite.config.client.ts -@@ -128,6 +128,7 @@ export const createClientConfig = (build: Build): UserConfig => { - const clientConfig: UserConfig = { - plugins: [ - svgr({ -+ include: '**/*.svg', - svgrOptions: { svgo: false }, - }), - // Buffer polyfill for apps/crossword builds -diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts -index cb971a3bf6..aecbb82dac 100644 ---- a/dotcom-rendering/vite/vite.config.server.ts -+++ b/dotcom-rendering/vite/vite.config.server.ts -@@ -18,6 +18,7 @@ const DEV = process.env.NODE_ENV === 'development'; - export const serverConfig: UserConfig = mergeConfig(sharedConfig, { - plugins: [ - svgr({ -+ include: '**/*.svg', - svgrOptions: { svgo: false }, - }), - ], --- -2.50.1 (Apple Git-155) - - -From b94891dca9071bbb4a524f58b41dd0f41ef5ad72 Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Sat, 11 Apr 2026 23:48:17 +0100 -Subject: [PATCH 15/17] Fix ssrCjsPlugin leaking Node APIs into client bundles -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The plugin was wrapping CJS packages with createRequire() for both SSR -and client requests. Now it only applies for SSR (checking options.ssr), -and @guardian/bridget is added to optimizeDeps.include so Vite's -built-in pre-bundling handles CJSβ†’ESM conversion for client-side. - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/vite/dev-server.ts | 8 ++++++++ - dotcom-rendering/vite/ssr-cjs-plugin.ts | 4 ++-- - 2 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts -index b6729c834c..8ab09ee150 100644 ---- a/dotcom-rendering/vite/dev-server.ts -+++ b/dotcom-rendering/vite/dev-server.ts -@@ -45,6 +45,14 @@ async function start() { - appType: 'custom', - // Serve client modules from /assets/ to match production asset paths - base: '/assets/', -+ // Pre-bundle CJS packages for client-side use (the ssrCjsPlugin -+ // only wraps them for SSR; client needs Vite's built-in CJSβ†’ESM). -+ optimizeDeps: { -+ include: [ -+ '@guardian/bridget', -+ '@guardian/bridget/SignInScreenReason', -+ ], -+ }, - }); - // SSR config must be set after mergeConfig to avoid being overwritten. - devConfig.ssr = { -diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.ts b/dotcom-rendering/vite/ssr-cjs-plugin.ts -index 7f7c3906ff..22d4f3063c 100644 ---- a/dotcom-rendering/vite/ssr-cjs-plugin.ts -+++ b/dotcom-rendering/vite/ssr-cjs-plugin.ts -@@ -38,8 +38,8 @@ export function ssrCjsPlugin(packages: string[]): Plugin { - return { - name: 'ssr-cjs-compat', - enforce: 'pre', -- resolveId(id) { -- if (shouldWrap(id)) { -+ resolveId(id, _importer, options) { -+ if (options?.ssr && shouldWrap(id)) { - return PREFIX + id; - } - return undefined; --- -2.50.1 (Apple Git-155) - - -From ea6cb25ba144a4c2e5fbe162ea57d82712693f3c Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Sun, 12 Apr 2026 00:06:59 +0100 -Subject: [PATCH 16/17] Fix HMR WebSocket by attaching to Express HTTP server - -Vite in middleware mode was starting its HMR WebSocket on a separate -port (24678), so the browser couldn't connect. Pass the Express HTTP -server to Vite's hmr config so the WebSocket shares port 3030, and -file changes trigger full page reloads as expected for SSR. - -Co-Authored-By: Claude Opus 4.6 ---- - dotcom-rendering/vite/dev-server.ts | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts -index 8ab09ee150..ece222646a 100644 ---- a/dotcom-rendering/vite/dev-server.ts -+++ b/dotcom-rendering/vite/dev-server.ts -@@ -10,6 +10,7 @@ - */ - - import { readFileSync } from 'node:fs'; -+import { createServer as createHttpServer } from 'node:http'; - import { resolve } from 'node:path'; - import express from 'express'; - import { createServer as createViteServer, mergeConfig } from 'vite'; -@@ -22,6 +23,7 @@ const root = process.cwd(); - - async function start() { - const app = express(); -+ const httpServer = createHttpServer(app); - - // CJS packages in noExternal that need ESM wrapping for Vite 6's - // SSR module runner. Only packages using require()/module.exports -@@ -40,7 +42,9 @@ async function start() { - ], - server: { - middlewareMode: true, -- hmr: true, -+ hmr: { -+ server: httpServer, -+ }, - }, - appType: 'custom', - // Serve client modules from /assets/ to match production asset paths -@@ -109,7 +113,7 @@ async function start() { - } - }); - -- app.listen(port, () => { -+ httpServer.listen(port, () => { - console.log( - `\n Vite DEV server running on http://localhost:${port}\n`, - ); --- -2.50.1 (Apple Git-155) - - -From 1cb39f296c13c90ecec0010fb604166e9816743f Mon Sep 17 00:00:00 2001 -From: Ravi <7014230+arelra@users.noreply.github.com> -Date: Tue, 14 Apr 2026 23:41:02 +0100 -Subject: [PATCH 17/17] Restore ES6 named imports for CJS deps via ssrCjsPlugin - -Route jsdom, log4js, sanitize-html, compare-versions, and -@creditkarma/thrift-server-core through Vite's SSR pipeline via -ssr.noExternal + ssrCjsPlugin so source code can use idiomatic -`import { X } from 'pkg'` instead of default-import + destructure. - -Centralise the CJS package list in vite/cjs-packages.ts and wire it -into both the dev server and the production server build (the plugin -was previously missing from vite.config.server.ts). - -Co-Authored-By: Claude Opus 4.6 ---- - .../src/components/MultiByline.tsx | 4 +-- - dotcom-rendering/src/lib/domUtils.ts | 4 +-- - dotcom-rendering/src/model/enhance-H2s.ts | 4 +-- - .../src/model/enhance-blockquotes.ts | 4 +-- - .../src/model/enhance-dividers.ts | 4 +-- - dotcom-rendering/src/model/enhance-embeds.ts | 4 +-- - dotcom-rendering/src/model/enhance-images.ts | 4 +-- - .../src/model/enhance-numbered-lists.ts | 4 +-- - .../src/model/enhanceProductElement.ts | 4 +-- - .../src/model/enhanceTableOfContents.ts | 4 +-- - dotcom-rendering/src/model/sanitise.ts | 4 +-- - dotcom-rendering/src/server/lib/logging.ts | 4 +-- - dotcom-rendering/vite/cjs-packages.ts | 25 +++++++++++++++++++ - dotcom-rendering/vite/dev-server.ts | 14 +++++------ - dotcom-rendering/vite/vite.config.server.ts | 9 +++++++ - 15 files changed, 52 insertions(+), 44 deletions(-) - create mode 100644 dotcom-rendering/vite/cjs-packages.ts - -diff --git a/dotcom-rendering/src/components/MultiByline.tsx b/dotcom-rendering/src/components/MultiByline.tsx -index 661d48aa99..fdf1b398b7 100644 ---- a/dotcom-rendering/src/components/MultiByline.tsx -+++ b/dotcom-rendering/src/components/MultiByline.tsx -@@ -12,9 +12,7 @@ import { - textSansItalic28, - textSansItalic34, - } from '@guardian/source/foundations'; --import sanitise from 'sanitize-html'; -- --const { defaults } = sanitise; -+import sanitise, { defaults } from 'sanitize-html'; - import { - ArticleDesign, - ArticleDisplay, -diff --git a/dotcom-rendering/src/lib/domUtils.ts b/dotcom-rendering/src/lib/domUtils.ts -index e8baf6e9c7..50cf100e1d 100644 ---- a/dotcom-rendering/src/lib/domUtils.ts -+++ b/dotcom-rendering/src/lib/domUtils.ts -@@ -1,6 +1,4 @@ --import jsdom from 'jsdom'; -- --const { JSDOM } = jsdom; -+import { JSDOM } from 'jsdom'; - - export const parseHtml = (html: string): DocumentFragment => - JSDOM.fragment(html); -diff --git a/dotcom-rendering/src/model/enhance-H2s.ts b/dotcom-rendering/src/model/enhance-H2s.ts -index 2c70258aac..72ee2e0699 100644 ---- a/dotcom-rendering/src/model/enhance-H2s.ts -+++ b/dotcom-rendering/src/model/enhance-H2s.ts -@@ -1,6 +1,4 @@ --import jsdom from 'jsdom'; -- --const { JSDOM } = jsdom; -+import { JSDOM } from 'jsdom'; - import type { FEElement } from '../types/content'; - import { isLegacyTableOfContents } from './isLegacyTableOfContents'; - -diff --git a/dotcom-rendering/src/model/enhance-blockquotes.ts b/dotcom-rendering/src/model/enhance-blockquotes.ts -index 8bf2d3f5ec..86aaca47c4 100644 ---- a/dotcom-rendering/src/model/enhance-blockquotes.ts -+++ b/dotcom-rendering/src/model/enhance-blockquotes.ts -@@ -1,6 +1,4 @@ --import jsdom from 'jsdom'; -- --const { JSDOM } = jsdom; -+import { JSDOM } from 'jsdom'; - import { ArticleDesign, type ArticleFormat } from '../lib/articleFormat'; - import type { BlockquoteBlockElement, FEElement } from '../types/content'; - -diff --git a/dotcom-rendering/src/model/enhance-dividers.ts b/dotcom-rendering/src/model/enhance-dividers.ts -index b6ea977e0f..d66a615e17 100644 ---- a/dotcom-rendering/src/model/enhance-dividers.ts -+++ b/dotcom-rendering/src/model/enhance-dividers.ts -@@ -1,6 +1,4 @@ --import jsdom from 'jsdom'; -- --const { JSDOM } = jsdom; -+import { JSDOM } from 'jsdom'; - import type { FEElement } from '../types/content'; - - const isDinkus = (element: FEElement): boolean => { -diff --git a/dotcom-rendering/src/model/enhance-embeds.ts b/dotcom-rendering/src/model/enhance-embeds.ts -index c163df5d53..1f21c83200 100644 ---- a/dotcom-rendering/src/model/enhance-embeds.ts -+++ b/dotcom-rendering/src/model/enhance-embeds.ts -@@ -1,6 +1,4 @@ --import jsdom from 'jsdom'; -- --const { JSDOM } = jsdom; -+import { JSDOM } from 'jsdom'; - import type { FEElement } from '../types/content'; - - export const enhanceEmbeds = (elements: FEElement[]): FEElement[] => -diff --git a/dotcom-rendering/src/model/enhance-images.ts b/dotcom-rendering/src/model/enhance-images.ts -index 1fc3d341b8..44024de18d 100644 ---- a/dotcom-rendering/src/model/enhance-images.ts -+++ b/dotcom-rendering/src/model/enhance-images.ts -@@ -1,7 +1,5 @@ - import { isUndefined } from '@guardian/libs'; --import jsdom from 'jsdom'; -- --const { JSDOM } = jsdom; -+import { JSDOM } from 'jsdom'; - import { - ArticleDesign, - type ArticleFormat, -diff --git a/dotcom-rendering/src/model/enhance-numbered-lists.ts b/dotcom-rendering/src/model/enhance-numbered-lists.ts -index c0fc85d7eb..1fab92a8d6 100644 ---- a/dotcom-rendering/src/model/enhance-numbered-lists.ts -+++ b/dotcom-rendering/src/model/enhance-numbered-lists.ts -@@ -1,7 +1,5 @@ - import { isUndefined } from '@guardian/libs'; --import jsdom from 'jsdom'; -- --const { JSDOM } = jsdom; -+import { JSDOM } from 'jsdom'; - import { ArticleDisplay, type ArticleFormat } from '../lib/articleFormat'; - import type { FEElement, StarRating, TextBlockElement } from '../types/content'; - -diff --git a/dotcom-rendering/src/model/enhanceProductElement.ts b/dotcom-rendering/src/model/enhanceProductElement.ts -index ecaec36681..1d0f8f91c2 100644 ---- a/dotcom-rendering/src/model/enhanceProductElement.ts -+++ b/dotcom-rendering/src/model/enhanceProductElement.ts -@@ -1,6 +1,4 @@ --import jsdom from 'jsdom'; -- --const { JSDOM } = jsdom; -+import { JSDOM } from 'jsdom'; - import type { - FEElement, - ProductBlockElement, -diff --git a/dotcom-rendering/src/model/enhanceTableOfContents.ts b/dotcom-rendering/src/model/enhanceTableOfContents.ts -index f6643ff998..24b6b13446 100644 ---- a/dotcom-rendering/src/model/enhanceTableOfContents.ts -+++ b/dotcom-rendering/src/model/enhanceTableOfContents.ts -@@ -1,6 +1,4 @@ --import jsdom from 'jsdom'; -- --const { JSDOM } = jsdom; -+import { JSDOM } from 'jsdom'; - import type { Block } from '../types/blocks'; - import type { - NumberedTitleBlockElement, -diff --git a/dotcom-rendering/src/model/sanitise.ts b/dotcom-rendering/src/model/sanitise.ts -index 57c6c06cc4..8bc834d166 100644 ---- a/dotcom-rendering/src/model/sanitise.ts -+++ b/dotcom-rendering/src/model/sanitise.ts -@@ -1,8 +1,6 @@ - import type { Config } from 'dompurify'; - import createDOMPurify from 'dompurify'; --import jsdom from 'jsdom'; -- --const { JSDOM } = jsdom; -+import { JSDOM } from 'jsdom'; - - const { window } = new JSDOM(''); - const DOMPurify = createDOMPurify(window); -diff --git a/dotcom-rendering/src/server/lib/logging.ts b/dotcom-rendering/src/server/lib/logging.ts -index 8a08f31dd1..e4616dc03e 100644 ---- a/dotcom-rendering/src/server/lib/logging.ts -+++ b/dotcom-rendering/src/server/lib/logging.ts -@@ -1,9 +1,7 @@ - import path from 'node:path'; - import { isObject } from '@guardian/libs'; - import type { Configuration, Layout, LoggingEvent } from 'log4js'; --import log4js from 'log4js'; -- --const { addLayout, configure, getLogger, shutdown } = log4js; -+import { addLayout, configure, getLogger, shutdown } from 'log4js'; - import { type DCRLoggingStore, loggingStore } from './logging-store'; - - const logName = `dotcom-rendering.log`; -diff --git a/dotcom-rendering/vite/cjs-packages.ts b/dotcom-rendering/vite/cjs-packages.ts -new file mode 100644 -index 0000000000..d0f1daf406 ---- /dev/null -+++ b/dotcom-rendering/vite/cjs-packages.ts -@@ -0,0 +1,25 @@ -+/** -+ * CJS dependencies that need to be pulled through Vite's SSR pipeline -+ * and wrapped as ESM by `ssr-cjs-plugin.ts`. -+ * -+ * Vite 6's SSR module runner evaluates modules as strict ESM, which means -+ * `import { X } from 'pkg'` fails for CJS packages unless we synthesise real -+ * ESM named exports for them. Listing a package here: -+ * 1. Adds it to `ssr.noExternal` so Vite processes it (instead of leaving -+ * it for Node's loader). -+ * 2. Causes `ssrCjsPlugin` to load it via `createRequire()` and emit a -+ * shim with proper ESM named exports. -+ * -+ * If a new dependency breaks at runtime with -+ * "SyntaxError: Named export 'X' not found. The requested module is a CommonJS module..." -+ * add it here. Contributors should never need to switch to default-import + -+ * destructure patterns in source code. -+ */ -+export const cjsPackages = [ -+ '@guardian/bridget', -+ 'jsdom', -+ 'log4js', -+ 'sanitize-html', -+ 'compare-versions', -+ '@creditkarma/thrift-server-core', -+] as const; -diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts -index ece222646a..c39825047c 100644 ---- a/dotcom-rendering/vite/dev-server.ts -+++ b/dotcom-rendering/vite/dev-server.ts -@@ -15,6 +15,7 @@ import { resolve } from 'node:path'; - import express from 'express'; - import { createServer as createViteServer, mergeConfig } from 'vite'; - import svgr from 'vite-plugin-svgr'; -+import { cjsPackages } from './cjs-packages'; - import { sharedConfig } from './vite.config.shared'; - import { ssrCjsPlugin } from './ssr-cjs-plugin'; - -@@ -25,11 +26,6 @@ async function start() { - const app = express(); - const httpServer = createHttpServer(app); - -- // CJS packages in noExternal that need ESM wrapping for Vite 6's -- // SSR module runner. Only packages using require()/module.exports -- // that are matched by ssr.noExternal need to be listed here. -- const cjsPackages = ['@guardian/bridget']; -- - // Create Vite server in middleware mode. - // Handles client-side module transforms, HMR, and SSR module loading. - const devConfig = mergeConfig(sharedConfig, { -@@ -38,7 +34,7 @@ async function start() { - include: '**/*.svg', - svgrOptions: { svgo: false }, - }), -- ssrCjsPlugin(cjsPackages), -+ ssrCjsPlugin([...cjsPackages]), - ], - server: { - middlewareMode: true, -@@ -60,8 +56,10 @@ async function start() { - }); - // SSR config must be set after mergeConfig to avoid being overwritten. - devConfig.ssr = { -- // Bundle ESM-only packages that can't be require()'d by Node. -- noExternal: [/@guardian\//, 'screenfull', 'valibot'], -+ // Bundle ESM-only packages that can't be require()'d by Node, plus -+ // CJS packages that we want to expose via ESM named imports -+ // (see cjs-packages.ts). -+ noExternal: [/@guardian\//, 'screenfull', 'valibot', ...cjsPackages], - }; - const vite = await createViteServer(devConfig); - -diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts -index aecbb82dac..13196fb82f 100644 ---- a/dotcom-rendering/vite/vite.config.server.ts -+++ b/dotcom-rendering/vite/vite.config.server.ts -@@ -1,6 +1,8 @@ - import svgr from 'vite-plugin-svgr'; - import type { UserConfig } from 'vite'; - import { mergeConfig } from 'vite'; -+import { cjsPackages } from './cjs-packages'; -+import { ssrCjsPlugin } from './ssr-cjs-plugin'; - import { sharedConfig } from './vite.config.shared'; - - const DEV = process.env.NODE_ENV === 'development'; -@@ -21,6 +23,9 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { - include: '**/*.svg', - svgrOptions: { svgo: false }, - }), -+ // Wrap CJS deps with ESM shims so `import { X } from 'pkg'` works -+ // under Vite's SSR pipeline. Only fires for ids in `ssr.noExternal`. -+ ssrCjsPlugin([...cjsPackages]), - ], - build: { - outDir: 'dist', -@@ -56,6 +61,10 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { - 'screenfull', - // Valibot is ESM and needs bundling - 'valibot', -+ // CJS deps wrapped by ssrCjsPlugin so source code can use -+ // `import { X } from 'pkg'` instead of default-import + -+ // destructure (see vite/cjs-packages.ts). -+ ...cjsPackages, - ], - // Explicitly external in dev (not needed in prod where they're deployed) - external: DEV ? ['@aws-sdk'] : [], --- -2.50.1 (Apple Git-155) - diff --git a/dotcom-rendering/makefile b/dotcom-rendering/makefile index 91e17901624..876fa9404cf 100644 --- a/dotcom-rendering/makefile +++ b/dotcom-rendering/makefile @@ -1,4 +1,4 @@ -.PHONY: install dev build clean-dist clear vite-build vite-dev +.PHONY: install dev build clean-dist clear build dev # these means you can run the binaries in node_modules # like with npm scripts @@ -29,21 +29,11 @@ riffraff-bundle: clean-dist build cdk-synth $(call log, "creating riffraff bundle") @node ./scripts/deploy/build-riffraff-bundle.mjs -# vite ######################################### - -vite-build: clean-dist install - $(call log, "building production bundles with Vite") - @NODE_ENV=production node --import tsx vite/build.ts - -vite-dev: clear clean-dist install - $(call log, "starting Vite DEV server") - @NODE_ENV=development node --import tsx vite/dev-server.ts - # prod ######################################### build: clean-dist install - $(call log, "building production bundles") - @NODE_ENV=production webpack --config ./webpack/webpack.config.js --progress + $(call log, "building production bundles with Vite") + @NODE_ENV=production node --import tsx vite/build.ts $(call log, "generating Islands report card") @node ./scripts/islands/island-descriptions.mjs @@ -58,17 +48,17 @@ prod-local: prod # dev ######################################### dev: clear clean-dist install - $(call log, "starting DEV server") - @NODE_ENV=development webpack serve --config ./webpack/webpack.config.js + $(call log, "starting Vite DEV server") + @NODE_ENV=development node --import tsx vite/dev-server.ts dev-variant: clear clean-dist install $(call log, "starting DEV server") - @NODE_ENV=development BUILD_VARIANT=true webpack serve --config ./webpack/webpack.config.js + @NODE_ENV=development BUILD_VARIANT=true node --import tsx vite/dev-server.ts dev-debug: clear clean-dist install $(call log, "starting DEV server and debugger") $(call log, "Open chrome://inspect in Chrome to attach to the debugger") - @NODE_ENV=development NODE_OPTIONS="--inspect" webpack serve --config ./webpack/webpack.config.js + @NODE_ENV=development NODE_OPTIONS="--inspect" node --import tsx vite/dev-server.ts # storybook ######################################### diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts index c39825047cb..279504ea111 100644 --- a/dotcom-rendering/vite/dev-server.ts +++ b/dotcom-rendering/vite/dev-server.ts @@ -6,7 +6,7 @@ * NODE_ENV=development node --import tsx vite/dev-server.ts * * Or via makefile: - * make vite-dev + * make dev */ import { readFileSync } from 'node:fs'; @@ -16,8 +16,8 @@ import express from 'express'; import { createServer as createViteServer, mergeConfig } from 'vite'; import svgr from 'vite-plugin-svgr'; import { cjsPackages } from './cjs-packages'; -import { sharedConfig } from './vite.config.shared'; import { ssrCjsPlugin } from './ssr-cjs-plugin'; +import { sharedConfig } from './vite.config.shared'; const port = 3030; const root = process.cwd(); From 9d7eb36e6460345e89a20d44fd253f7568e357b3 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Fri, 24 Apr 2026 19:31:14 +0100 Subject: [PATCH 21/37] Add list of dependencies to optimise for the client build --- dotcom-rendering/vite/dev-server.ts | 49 +++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.ts index 279504ea111..ae92fa2a262 100644 --- a/dotcom-rendering/vite/dev-server.ts +++ b/dotcom-rendering/vite/dev-server.ts @@ -51,6 +51,55 @@ async function start() { include: [ '@guardian/bridget', '@guardian/bridget/SignInScreenReason', + '@guardian/libs', + '@guardian/ophan-tracker-js', + '@emotion/cache', + '@emotion/react/jsx-dev-runtime', + '@emotion/react', + 'react', + 'react-dom/client', + '@guardian/identity-auth-frontend', + '@guardian/commercial-core', + '@guardian/source/foundations', + '@guardian/core-web-vitals', + '@guardian/ab-core', + '@guardian/source/react-components', + 'swr', + 'swr/immutable', + '@guardian/braze-components/logic', + 'lodash.debounce', + '@guardian/commercial-core/geo/geo-utils', + '@guardian/support-dotcom-components', + 'react-dom', + '@guardian/braze-components/banner', + '@braze/web-sdk', + '@guardian/source-development-kitchen/react-components', + 'sanitize-html', + '@guardian/braze-components/end-of-article', + 'react-google-recaptcha', + 'compare-versions', + '@guardian/bridget/AbTesting', + '@guardian/bridget/Acquisitions', + '@guardian/bridget/Analytics', + '@guardian/bridget/Audio', + '@guardian/bridget/Commercial', + '@guardian/bridget/Discussion', + '@guardian/bridget/Environment', + '@guardian/bridget/Gallery', + '@guardian/bridget/Interaction', + '@guardian/bridget/Interactives', + '@guardian/bridget/ListenToArticle', + '@guardian/bridget/Metrics', + '@guardian/bridget/Navigation', + '@guardian/bridget/Newsletters', + '@guardian/bridget/Notifications', + '@guardian/bridget/Tag', + '@guardian/bridget/User', + '@guardian/bridget/Videos', + '@creditkarma/thrift-server-core', + 'is-mobile', + '@guardian/bridget/SignInScreenReferrer', + 'valibot', ], }, }); From 8d18711f08964c71df6881d0117365d62e2ab032 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Fri, 24 Apr 2026 19:32:03 +0100 Subject: [PATCH 22/37] Convert bundles.js to mjs and remove special vite cjs handling --- dotcom-rendering/vite/build.ts | 7 +---- dotcom-rendering/vite/vite.config.server.ts | 21 +++------------ dotcom-rendering/vite/vite.config.shared.ts | 13 --------- dotcom-rendering/webpack/bundles.js | 29 --------------------- dotcom-rendering/webpack/bundles.mjs | 25 +++++++++++++----- 5 files changed, 22 insertions(+), 73 deletions(-) delete mode 100644 dotcom-rendering/webpack/bundles.js diff --git a/dotcom-rendering/vite/build.ts b/dotcom-rendering/vite/build.ts index e64baa7e3ef..9c011821bdb 100644 --- a/dotcom-rendering/vite/build.ts +++ b/dotcom-rendering/vite/build.ts @@ -11,6 +11,7 @@ import { rmSync } from 'node:fs'; import { resolve } from 'node:path'; import { build } from 'vite'; import type { Build } from '../src/lib/assets'; +import { BUILD_VARIANT as BUILD_VARIANT_SWITCH } from '../webpack/bundles.mjs'; import { createClientConfig } from './vite.config.client'; import { serverConfig } from './vite.config.server'; @@ -18,12 +19,6 @@ const PROD = process.env.NODE_ENV === 'production'; const BUILD_VARIANT = process.env.BUILD_VARIANT === 'true'; function getClientBuilds(): Build[] { - // Controls whether the variant bundle is built. - // In production, also checks the static BUILD_VARIANT flag from bundles.js. - // eslint-disable-next-line @typescript-eslint/no-var-requires -- CJS module - const { BUILD_VARIANT: BUILD_VARIANT_SWITCH } = - require('../webpack/bundles') as { BUILD_VARIANT: boolean }; - return [ 'client.web', ...((PROD && BUILD_VARIANT_SWITCH) || BUILD_VARIANT diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.ts index 13196fb82fe..260e745cc3c 100644 --- a/dotcom-rendering/vite/vite.config.server.ts +++ b/dotcom-rendering/vite/vite.config.server.ts @@ -1,6 +1,6 @@ -import svgr from 'vite-plugin-svgr'; import type { UserConfig } from 'vite'; import { mergeConfig } from 'vite'; +import svgr from 'vite-plugin-svgr'; import { cjsPackages } from './cjs-packages'; import { ssrCjsPlugin } from './ssr-cjs-plugin'; import { sharedConfig } from './vite.config.shared'; @@ -46,26 +46,11 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { // server chunks colliding with client assets in dist/. inlineDynamicImports: true, }, - // webpack/bundles.js is CJS with module.exports β€” Rollup can't - // resolve named exports from it. Externalize so it's required at runtime. - external: [/webpack\/bundles/], }, }, ssr: { - // Bundle these packages (they are ESM-only or need to be included). - // Mirrors webpack-node-externals allowlist. - noExternal: [ - // All @guardian scoped packages should be bundled - /@guardian\//, - // ESM-only package that throws when not bundled - 'screenfull', - // Valibot is ESM and needs bundling - 'valibot', - // CJS deps wrapped by ssrCjsPlugin so source code can use - // `import { X } from 'pkg'` instead of default-import + - // destructure (see vite/cjs-packages.ts). - ...cjsPackages, - ], + // Bundle all node_modules by default to create a single server.js file with no external dependencies. + noExternal: true, // Explicitly external in dev (not needed in prod where they're deployed) external: DEV ? ['@aws-sdk'] : [], }, diff --git a/dotcom-rendering/vite/vite.config.shared.ts b/dotcom-rendering/vite/vite.config.shared.ts index 2a15abccd33..474d36288c8 100644 --- a/dotcom-rendering/vite/vite.config.shared.ts +++ b/dotcom-rendering/vite/vite.config.shared.ts @@ -1,4 +1,3 @@ -import { resolve } from 'node:path'; import type { UserConfig } from 'vite'; const DEV = process.env.NODE_ENV === 'development'; @@ -20,17 +19,5 @@ export const sharedConfig: UserConfig = { }, resolve: { extensions: ['.ts', '.tsx', '.js', '.jsx'], - alias: { - // webpack/bundles.js is CJS (module.exports) which Rollup can't - // resolve named exports from. Redirect to an ESM wrapper. - '../../webpack/bundles': resolve( - __dirname, - '../webpack/bundles.mjs', - ), - '../../../webpack/bundles': resolve( - __dirname, - '../webpack/bundles.mjs', - ), - }, }, }; diff --git a/dotcom-rendering/webpack/bundles.js b/dotcom-rendering/webpack/bundles.js deleted file mode 100644 index 1408de25c7f..00000000000 --- a/dotcom-rendering/webpack/bundles.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Controls whether we should build the variant bundle. - * - * Set this to `true` if you want to serve a server-side experiment against - * the a variant bundle A/B test. - * - * Ensure Sentry sampling in sentry/sentryLoader.ts is adjusted for the sample - * size of the test - * - * @type {boolean} prevent TS from narrowing this to its current value - */ -const BUILD_VARIANT = false; - -/** - * Server-side test names for running variant test. - * - * The name is transformed from kebab-case to camelCase, - * so we have the relevant prefix captured here. - * - * @see https://github.com/guardian/frontend/blob/main/common/app/experiments/Experiments.scala - * - * @type {(variant: 'Variant' | 'Control') => string} - */ -const dcrJavascriptBundle = (variant) => `dcrJavascriptBundle${variant}`; - -module.exports = { - BUILD_VARIANT, - dcrJavascriptBundle, -}; diff --git a/dotcom-rendering/webpack/bundles.mjs b/dotcom-rendering/webpack/bundles.mjs index 3a7ecc81d99..8e5a2a74e39 100644 --- a/dotcom-rendering/webpack/bundles.mjs +++ b/dotcom-rendering/webpack/bundles.mjs @@ -1,13 +1,24 @@ /** - * ESM re-export of bundles.js values for Vite/Rollup compatibility. + * Controls whether we should build the variant bundle. * - * These values must be kept in sync with bundles.js. - * The original bundles.js uses module.exports (CJS) which Rollup - * cannot resolve named exports from. + * Set this to `true` if you want to serve a server-side experiment against + * the a variant bundle A/B test. + * + * Ensure Sentry sampling in sentry/sentryLoader.ts is adjusted for the sample + * size of the test + * + * @type {boolean} prevent TS from narrowing this to its current value */ - -/** @type {boolean} */ export const BUILD_VARIANT = false; -/** @type {(variant: 'Variant' | 'Control') => string} */ +/** + * Server-side test names for running variant test. + * + * The name is transformed from kebab-case to camelCase, + * so we have the relevant prefix captured here. + * + * @see https://github.com/guardian/frontend/blob/main/common/app/experiments/Experiments.scala + * + * @type {(variant: 'Variant' | 'Control') => import("../src/types/config").ServerSideTestNames} + */ export const dcrJavascriptBundle = (variant) => `dcrJavascriptBundle${variant}`; From b893e2209a811de321e5d2eaeddad1b35f3419a7 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Fri, 24 Apr 2026 19:38:49 +0100 Subject: [PATCH 23/37] bundles.ts --- dotcom-rendering/vite/build.ts | 2 +- dotcom-rendering/webpack/{bundles.mjs => bundles.ts} | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) rename dotcom-rendering/webpack/{bundles.mjs => bundles.ts} (66%) diff --git a/dotcom-rendering/vite/build.ts b/dotcom-rendering/vite/build.ts index 9c011821bdb..43b2bf4719c 100644 --- a/dotcom-rendering/vite/build.ts +++ b/dotcom-rendering/vite/build.ts @@ -11,7 +11,7 @@ import { rmSync } from 'node:fs'; import { resolve } from 'node:path'; import { build } from 'vite'; import type { Build } from '../src/lib/assets'; -import { BUILD_VARIANT as BUILD_VARIANT_SWITCH } from '../webpack/bundles.mjs'; +import { BUILD_VARIANT as BUILD_VARIANT_SWITCH } from '../webpack/bundles'; import { createClientConfig } from './vite.config.client'; import { serverConfig } from './vite.config.server'; diff --git a/dotcom-rendering/webpack/bundles.mjs b/dotcom-rendering/webpack/bundles.ts similarity index 66% rename from dotcom-rendering/webpack/bundles.mjs rename to dotcom-rendering/webpack/bundles.ts index 8e5a2a74e39..a98e50515ea 100644 --- a/dotcom-rendering/webpack/bundles.mjs +++ b/dotcom-rendering/webpack/bundles.ts @@ -1,3 +1,5 @@ +import type { ServerSideTestNames } from '../src/types/config'; + /** * Controls whether we should build the variant bundle. * @@ -7,9 +9,8 @@ * Ensure Sentry sampling in sentry/sentryLoader.ts is adjusted for the sample * size of the test * - * @type {boolean} prevent TS from narrowing this to its current value */ -export const BUILD_VARIANT = false; +export const BUILD_VARIANT: boolean = false; /** * Server-side test names for running variant test. @@ -19,6 +20,7 @@ export const BUILD_VARIANT = false; * * @see https://github.com/guardian/frontend/blob/main/common/app/experiments/Experiments.scala * - * @type {(variant: 'Variant' | 'Control') => import("../src/types/config").ServerSideTestNames} */ -export const dcrJavascriptBundle = (variant) => `dcrJavascriptBundle${variant}`; +export const dcrJavascriptBundle = ( + variant: 'Variant' | 'Control', +): ServerSideTestNames => `dcrJavascriptBundle${variant}`; From aceeeb201343e67621a8e8fcb87447b67ff2a82f Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Sat, 2 May 2026 00:40:16 +0100 Subject: [PATCH 24/37] Vite 7 and ESM all scripts. Use Node 22.18 and remove tsx from Vite script invocations --- dotcom-rendering/makefile | 12 +-- dotcom-rendering/package.json | 2 +- dotcom-rendering/tsconfig.json | 1 + ...browser-targets.ts => browser-targets.mts} | 0 dotcom-rendering/vite/{build.ts => build.mts} | 15 ++-- .../{cjs-packages.ts => cjs-packages.mts} | 0 .../vite/{dev-server.ts => dev-server.mts} | 6 +- .../{ssr-cjs-plugin.ts => ssr-cjs-plugin.mts} | 3 +- ...onfig.client.ts => vite.config.client.mts} | 6 +- ...onfig.server.ts => vite.config.server.mts} | 6 +- ...onfig.shared.ts => vite.config.shared.mts} | 0 dotcom-rendering/webpack/bundles.ts | 7 +- pnpm-lock.yaml | 74 +++++++++---------- 13 files changed, 69 insertions(+), 63 deletions(-) rename dotcom-rendering/vite/{browser-targets.ts => browser-targets.mts} (100%) rename dotcom-rendering/vite/{build.ts => build.mts} (84%) rename dotcom-rendering/vite/{cjs-packages.ts => cjs-packages.mts} (100%) rename dotcom-rendering/vite/{dev-server.ts => dev-server.mts} (96%) rename dotcom-rendering/vite/{ssr-cjs-plugin.ts => ssr-cjs-plugin.mts} (94%) rename dotcom-rendering/vite/{vite.config.client.ts => vite.config.client.mts} (96%) rename dotcom-rendering/vite/{vite.config.server.ts => vite.config.server.mts} (91%) rename dotcom-rendering/vite/{vite.config.shared.ts => vite.config.shared.mts} (100%) diff --git a/dotcom-rendering/makefile b/dotcom-rendering/makefile index 876fa9404cf..9b1a48fb6f0 100644 --- a/dotcom-rendering/makefile +++ b/dotcom-rendering/makefile @@ -33,9 +33,9 @@ riffraff-bundle: clean-dist build cdk-synth build: clean-dist install $(call log, "building production bundles with Vite") - @NODE_ENV=production node --import tsx vite/build.ts - $(call log, "generating Islands report card") - @node ./scripts/islands/island-descriptions.mjs + @NODE_ENV=production node vite/build.mts +# $(call log, "generating Islands report card") +# @node ./scripts/islands/island-descriptions.mjs prod: @echo 'starting PROD server...' @@ -49,16 +49,16 @@ prod-local: prod dev: clear clean-dist install $(call log, "starting Vite DEV server") - @NODE_ENV=development node --import tsx vite/dev-server.ts + @NODE_ENV=development node vite/dev-server.mts dev-variant: clear clean-dist install $(call log, "starting DEV server") - @NODE_ENV=development BUILD_VARIANT=true node --import tsx vite/dev-server.ts + @NODE_ENV=development BUILD_VARIANT=true node vite/dev-server.mts dev-debug: clear clean-dist install $(call log, "starting DEV server and debugger") $(call log, "Open chrome://inspect in Chrome to attach to the debugger") - @NODE_ENV=development NODE_OPTIONS="--inspect" node --import tsx vite/dev-server.ts + @NODE_ENV=development NODE_OPTIONS="--inspect" node vite/dev-server.ts # storybook ######################################### diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json index 2a416157eeb..5f6657bca38 100644 --- a/dotcom-rendering/package.json +++ b/dotcom-rendering/package.json @@ -159,7 +159,7 @@ "devDependencies": { "@rollup/plugin-inject": "5.0.5", "rollup-plugin-visualizer": "7.0.1", - "vite": "^6.2.6", + "vite": "7.3.2", "vite-plugin-svgr": "5.2.0" } } diff --git a/dotcom-rendering/tsconfig.json b/dotcom-rendering/tsconfig.json index 56ea84b0836..a32a9005565 100644 --- a/dotcom-rendering/tsconfig.json +++ b/dotcom-rendering/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "@guardian/tsconfig/tsconfig.json", "compilerOptions": { + "allowImportingTsExtensions": true, "allowJs": true, "forceConsistentCasingInFileNames": true, "skipLibCheck": true, diff --git a/dotcom-rendering/vite/browser-targets.ts b/dotcom-rendering/vite/browser-targets.mts similarity index 100% rename from dotcom-rendering/vite/browser-targets.ts rename to dotcom-rendering/vite/browser-targets.mts diff --git a/dotcom-rendering/vite/build.ts b/dotcom-rendering/vite/build.mts similarity index 84% rename from dotcom-rendering/vite/build.ts rename to dotcom-rendering/vite/build.mts index 43b2bf4719c..190190890de 100644 --- a/dotcom-rendering/vite/build.ts +++ b/dotcom-rendering/vite/build.mts @@ -4,20 +4,21 @@ * * Runs the server build first, then all client builds in parallel. * - * Usage: - * NODE_ENV=production node --import tsx vite/build.ts */ import { rmSync } from 'node:fs'; -import { resolve } from 'node:path'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; import { build } from 'vite'; -import type { Build } from '../src/lib/assets'; -import { BUILD_VARIANT as BUILD_VARIANT_SWITCH } from '../webpack/bundles'; -import { createClientConfig } from './vite.config.client'; -import { serverConfig } from './vite.config.server'; +import type { Build } from '../src/lib/assets.ts'; +import { BUILD_VARIANT as BUILD_VARIANT_SWITCH } from '../webpack/bundles.ts'; +import { createClientConfig } from './vite.config.client.mts'; +import { serverConfig } from './vite.config.server.mts'; const PROD = process.env.NODE_ENV === 'production'; const BUILD_VARIANT = process.env.BUILD_VARIANT === 'true'; +const __dirname = dirname(fileURLToPath(import.meta.url)); + function getClientBuilds(): Build[] { return [ 'client.web', diff --git a/dotcom-rendering/vite/cjs-packages.ts b/dotcom-rendering/vite/cjs-packages.mts similarity index 100% rename from dotcom-rendering/vite/cjs-packages.ts rename to dotcom-rendering/vite/cjs-packages.mts diff --git a/dotcom-rendering/vite/dev-server.ts b/dotcom-rendering/vite/dev-server.mts similarity index 96% rename from dotcom-rendering/vite/dev-server.ts rename to dotcom-rendering/vite/dev-server.mts index ae92fa2a262..4e179b331a8 100644 --- a/dotcom-rendering/vite/dev-server.ts +++ b/dotcom-rendering/vite/dev-server.mts @@ -15,9 +15,9 @@ import { resolve } from 'node:path'; import express from 'express'; import { createServer as createViteServer, mergeConfig } from 'vite'; import svgr from 'vite-plugin-svgr'; -import { cjsPackages } from './cjs-packages'; -import { ssrCjsPlugin } from './ssr-cjs-plugin'; -import { sharedConfig } from './vite.config.shared'; +import { cjsPackages } from './cjs-packages.mts'; +import { ssrCjsPlugin } from './ssr-cjs-plugin.mts'; +import { sharedConfig } from './vite.config.shared.mts'; const port = 3030; const root = process.cwd(); diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.ts b/dotcom-rendering/vite/ssr-cjs-plugin.mts similarity index 94% rename from dotcom-rendering/vite/ssr-cjs-plugin.ts rename to dotcom-rendering/vite/ssr-cjs-plugin.mts index 22d4f3063cc..0a70d8946cf 100644 --- a/dotcom-rendering/vite/ssr-cjs-plugin.ts +++ b/dotcom-rendering/vite/ssr-cjs-plugin.mts @@ -10,10 +10,9 @@ * hooks for external packages). */ import { createRequire } from 'node:module'; -import { pathToFileURL } from 'node:url'; import type { Plugin } from 'vite'; -const nodeRequire = createRequire(pathToFileURL(__filename).href); +const nodeRequire = createRequire(import.meta.url); /** * Creates a Vite plugin that wraps specified CJS packages diff --git a/dotcom-rendering/vite/vite.config.client.ts b/dotcom-rendering/vite/vite.config.client.mts similarity index 96% rename from dotcom-rendering/vite/vite.config.client.ts rename to dotcom-rendering/vite/vite.config.client.mts index d33d17d1e28..e6c28133bcc 100644 --- a/dotcom-rendering/vite/vite.config.client.ts +++ b/dotcom-rendering/vite/vite.config.client.mts @@ -2,9 +2,9 @@ import inject from '@rollup/plugin-inject'; import type { PluginOption, UserConfig } from 'vite'; import { mergeConfig } from 'vite'; import svgr from 'vite-plugin-svgr'; -import type { Build } from '../src/lib/assets'; -import { getBrowserTargets } from './browser-targets'; -import { sharedConfig } from './vite.config.shared'; +import type { Build } from '../src/lib/assets.ts'; +import { getBrowserTargets } from './browser-targets.mts'; +import { sharedConfig } from './vite.config.shared.mts'; const DEV = process.env.NODE_ENV === 'development'; diff --git a/dotcom-rendering/vite/vite.config.server.ts b/dotcom-rendering/vite/vite.config.server.mts similarity index 91% rename from dotcom-rendering/vite/vite.config.server.ts rename to dotcom-rendering/vite/vite.config.server.mts index 260e745cc3c..b6739a09b4a 100644 --- a/dotcom-rendering/vite/vite.config.server.ts +++ b/dotcom-rendering/vite/vite.config.server.mts @@ -1,9 +1,9 @@ import type { UserConfig } from 'vite'; import { mergeConfig } from 'vite'; import svgr from 'vite-plugin-svgr'; -import { cjsPackages } from './cjs-packages'; -import { ssrCjsPlugin } from './ssr-cjs-plugin'; -import { sharedConfig } from './vite.config.shared'; +import { cjsPackages } from './cjs-packages.mts'; +import { ssrCjsPlugin } from './ssr-cjs-plugin.mts'; +import { sharedConfig } from './vite.config.shared.mts'; const DEV = process.env.NODE_ENV === 'development'; diff --git a/dotcom-rendering/vite/vite.config.shared.ts b/dotcom-rendering/vite/vite.config.shared.mts similarity index 100% rename from dotcom-rendering/vite/vite.config.shared.ts rename to dotcom-rendering/vite/vite.config.shared.mts diff --git a/dotcom-rendering/webpack/bundles.ts b/dotcom-rendering/webpack/bundles.ts index a98e50515ea..0801696aa81 100644 --- a/dotcom-rendering/webpack/bundles.ts +++ b/dotcom-rendering/webpack/bundles.ts @@ -1,4 +1,9 @@ -import type { ServerSideTestNames } from '../src/types/config'; +type ServerSideTests = { + [key: `${string}Variant`]: 'variant'; + [key: `${string}Control`]: 'control'; +}; + +type ServerSideTestNames = keyof ServerSideTests; /** * Controls whether we should build the variant bundle. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ba471dd41b..fb82b72ac6b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -376,10 +376,10 @@ importers: version: 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/addon-docs': specifier: 10.3.3 - version: 10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + version: 10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) '@storybook/react-vite': specifier: 10.3.3 - version: 10.3.3(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + version: 10.3.3(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) '@swc/cli': specifier: 0.8.1 version: 0.8.1(@swc/core@1.15.41) @@ -703,11 +703,11 @@ importers: specifier: 7.0.1 version: 7.0.1(rollup@4.62.0) vite: - specifier: ^6.2.6 - version: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + specifier: 7.3.2 + version: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) vite-plugin-svgr: specifier: 5.2.0 - version: 5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + version: 5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) packages: @@ -7859,8 +7859,8 @@ packages: peerDependencies: vite: '>=3.0.0' - vite@6.4.0: - resolution: {integrity: sha512-oLnWs9Hak/LOlKjeSpOwD6JMks8BeICEdYMJBf6P4Lac/pO9tKiv/XhXnAM7nNfSkZahjlCZu9sS50zL8fSnsw==} + vite@6.4.3: + resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -7899,19 +7899,19 @@ packages: yaml: optional: true - vite@6.4.3: - resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@7.3.2: + resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@types/node': ^20.19.0 || >=22.12.0 jiti: '>=1.21.0' - less: '*' + less: ^4.0.0 lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' + 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 @@ -10153,11 +10153,11 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@6.0.3) - vite: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + vite: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) optionalDependencies: typescript: 6.0.3 @@ -10949,10 +10949,10 @@ snapshots: axe-core: 4.11.1 storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.1)(react@18.3.1) - '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -10966,25 +10966,25 @@ snapshots: - vite - webpack - '@storybook/builder-vite@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + '@storybook/builder-vite@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': dependencies: - '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 - vite: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + vite: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + '@storybook/csf-plugin@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': dependencies: storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: esbuild: 0.28.1 rollup: 4.62.0 - vite: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + vite: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) '@storybook/global@5.0.0': {} @@ -10999,11 +10999,11 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-vite@10.3.3(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + '@storybook/react-vite@10.3.3(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) '@rollup/pluginutils': 5.3.0(rollup@4.62.0) - '@storybook/builder-vite': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + '@storybook/builder-vite': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) '@storybook/react': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3) empathic: 2.0.1 magic-string: 0.30.21 @@ -11013,7 +11013,7 @@ snapshots: resolve: 1.22.12 storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsconfig-paths: 4.2.0 - vite: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + vite: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - esbuild - rollup @@ -16698,18 +16698,18 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-plugin-svgr@5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)): + vite-plugin-svgr@5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.62.0) '@svgr/core': 8.1.0(typescript@6.0.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@6.0.3)) - vite: 6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + vite: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - rollup - supports-color - typescript - vite@6.4.0(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2): + vite@6.4.3(@types/node@24.12.4)(terser@5.46.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -16721,20 +16721,20 @@ snapshots: '@types/node': 24.12.4 fsevents: 2.3.3 terser: 5.46.0 - tsx: 4.6.2 - vite@6.4.3(@types/node@24.12.4)(terser@5.46.0): + vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2): dependencies: - esbuild: 0.25.12 + esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.15 + postcss: 8.5.9 rollup: 4.62.0 - tinyglobby: 0.2.17 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 24.12.4 fsevents: 2.3.3 terser: 5.46.0 + tsx: 4.6.2 vitefu@1.1.3(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)): optionalDependencies: From 944724cdeffcf92ba8f5c02a9b9b09eed89b74e8 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Tue, 5 May 2026 15:19:45 +0100 Subject: [PATCH 25/37] Vite 7 & Rolldown --- dotcom-rendering/package.json | 2 +- pnpm-lock.yaml | 529 +++++++++++++++++++++++++++------- 2 files changed, 424 insertions(+), 107 deletions(-) diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json index 5f6657bca38..758e46c46c4 100644 --- a/dotcom-rendering/package.json +++ b/dotcom-rendering/package.json @@ -159,7 +159,7 @@ "devDependencies": { "@rollup/plugin-inject": "5.0.5", "rollup-plugin-visualizer": "7.0.1", - "vite": "7.3.2", + "vite": "npm:rolldown-vite@7.3.1", "vite-plugin-svgr": "5.2.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb82b72ac6b..58f55f55050 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -219,16 +219,16 @@ importers: version: link:../config '@sveltejs/adapter-auto': specifier: 7.0.1 - version: 7.0.1(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0))) + version: 7.0.1(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0))) '@sveltejs/adapter-static': specifier: 3.0.10 - version: 3.0.10(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0))) + version: 3.0.10(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0))) '@sveltejs/kit': specifier: 2.60.1 - version: 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) + version: 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)) '@sveltejs/vite-plugin-svelte': specifier: 7.1.2 - version: 7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) + version: 7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)) svelte: specifier: 5.56.3 version: 5.56.3(@typescript-eslint/types@8.59.2) @@ -240,7 +240,7 @@ importers: version: 6.0.3 vite: specifier: 6.4.3 - version: 6.4.3(@types/node@24.12.4)(terser@5.46.0) + version: 6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0) ab-testing/notification-lambda: dependencies: @@ -376,10 +376,10 @@ importers: version: 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/addon-docs': specifier: 10.3.3 - version: 10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + version: 10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 10.3.3 - version: 10.3.3(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + version: 10.3.3(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3) '@swc/cli': specifier: 0.8.1 version: 0.8.1(@swc/core@1.15.41) @@ -701,13 +701,13 @@ importers: version: 5.0.5(rollup@4.62.0) rollup-plugin-visualizer: specifier: 7.0.1 - version: 7.0.1(rollup@4.62.0) + version: 7.0.1(rolldown@1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rollup@4.62.0) vite: - specifier: 7.3.2 - version: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + specifier: npm:rolldown-vite@7.3.1 + version: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) vite-plugin-svgr: specifier: 5.2.0 - version: 5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + version: 5.2.0(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(typescript@6.0.3) packages: @@ -2410,6 +2410,12 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@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 + '@nodable/entities@2.1.0': resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==} @@ -2425,6 +2431,13 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-project/runtime@0.101.0': + resolution: {integrity: sha512-t3qpfVZIqSiLQ5Kqt/MC4Ge/WCOGrrcagAdzTcDaggupjiGxUx4nJF2v6wUCXWSzWHn5Ns7XLv13fCJEwCOERQ==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@oxc-project/types@0.101.0': + resolution: {integrity: sha512-nuFhqlUzJX+gVIPPfuE6xurd4lST3mdcWOhyK/rZO0B9XWMKm79SuszIQEnSMmmDhq1DC8WWVYGVd+6F93o1gQ==} + '@package-json/types@0.0.12': resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} @@ -2440,6 +2453,90 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@rolldown/binding-android-arm64@1.0.0-beta.53': + resolution: {integrity: sha512-Ok9V8o7o6YfSdTTYA/uHH30r3YtOxLD6G3wih/U9DO0ucBBFq8WPt/DslU53OgfteLRHITZny9N/qCUxMf9kjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-beta.53': + resolution: {integrity: sha512-yIsKqMz0CtRnVa6x3Pa+mzTihr4Ty+Z6HfPbZ7RVbk1Uxnco4+CUn7Qbm/5SBol1JD/7nvY8rphAgyAi7Lj6Vg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-beta.53': + resolution: {integrity: sha512-GTXe+mxsCGUnJOFMhfGWmefP7Q9TpYUseHvhAhr21nCTgdS8jPsvirb0tJwM3lN0/u/cg7bpFNa16fQrjKrCjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-beta.53': + resolution: {integrity: sha512-9Tmp7bBvKqyDkMcL4e089pH3RsjD3SUungjmqWtyhNOxoQMh0fSmINTyYV8KXtE+JkxYMPWvnEt+/mfpVCkk8w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': + resolution: {integrity: sha512-a1y5fiB0iovuzdbjUxa7+Zcvgv+mTmlGGC4XydVIsyl48eoxgaYkA3l9079hyTyhECsPq+mbr0gVQsFU11OJAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': + resolution: {integrity: sha512-bpIGX+ov9PhJYV+wHNXl9rzq4F0QvILiURn0y0oepbQx+7stmQsKA0DhPGwmhfvF856wq+gbM8L92SAa/CBcLg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': + resolution: {integrity: sha512-bGe5EBB8FVjHBR1mOLOPEFg1Lp3//7geqWkU5NIhxe+yH0W8FVrQ6WRYOap4SUTKdklD/dC4qPLREkMMQ855FA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': + resolution: {integrity: sha512-qL+63WKVQs1CMvFedlPt0U9PiEKJOAL/bsHMKUDS6Vp2Q+YAv/QLPu8rcvkfIMvQ0FPU2WL0aX4eWwF6e/GAnA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': + resolution: {integrity: sha512-VGl9JIGjoJh3H8Mb+7xnVqODajBmrdOOb9lxWXdcmxyI+zjB2sux69br0hZJDTyLJfvBoYm439zPACYbCjGRmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': + resolution: {integrity: sha512-B4iIserJXuSnNzA5xBLFUIjTfhNy7d9sq4FUMQY3GhQWGVhS2RWWzzDnkSU6MUt7/aHUrep0CdQfXUJI9D3W7A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': + resolution: {integrity: sha512-BUjAEgpABEJXilGq/BPh7jeU3WAJ5o15c1ZEgHaDWSz3LB881LQZnbNJHmUiM4d1JQWMYYyR1Y490IBHi2FPJg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': + resolution: {integrity: sha512-s27uU7tpCWSjHBnxyVXHt3rMrQdJq5MHNv3BzsewCIroIw3DJFjMH1dzCPPMUFxnh1r52Nf9IJ/eWp6LDoyGcw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': + resolution: {integrity: sha512-cjWL/USPJ1g0en2htb4ssMjIycc36RvdQAx1WlXnS6DpULswiUTVXPDesTifSKYSyvx24E0YqQkEm0K/M2Z/AA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-beta.53': + resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + '@rollup/plugin-commonjs@29.0.0': resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} engines: {node: '>=16.0.0 || 14 >= 14.17'} @@ -3135,11 +3232,6 @@ packages: peerDependencies: acorn: ^8.9.0 - '@sveltejs/acorn-typescript@1.0.9': - resolution: {integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==} - peerDependencies: - acorn: ^8.9.0 - '@sveltejs/adapter-auto@7.0.1': resolution: {integrity: sha512-dvuPm1E7M9NI/+canIQ6KKQDU2AkEefEZ2Dp7cY6uKoPq9Z/PhOXABe526UdW2mN986gjVkuSLkOYIBnS/M2LQ==} peerDependencies: @@ -3410,6 +3502,9 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} @@ -4655,6 +4750,10 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -6100,6 +6199,80 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + 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.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + 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.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + 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.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + 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.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.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.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + 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.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lilconfig@3.0.0: resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} engines: {node: '>=14'} @@ -7026,6 +7199,52 @@ packages: rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + rolldown-vite@7.3.1: + resolution: {integrity: sha512-LYzdNAjRHhF2yA4JUQm/QyARyi216N2rpJ0lJZb8E9FU2y5v6Vk+xq/U4XBOxMefpWixT5H3TslmAHm1rqIq2w==} + engines: {node: ^20.19.0 || >=22.12.0} + deprecated: Use this package to migrate from Vite 7 to Vite 8. For the most recent updates, migrate to Vite 8 once you're ready. + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + 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 + 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 + + rolldown@1.0.0-beta.53: + resolution: {integrity: sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup-plugin-esbuild@6.2.1: resolution: {integrity: sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==} engines: {node: '>=14.18.0'} @@ -7899,46 +8118,6 @@ packages: yaml: optional: true - vite@7.3.2: - resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.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 - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vitefu@1.1.3: resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} peerDependencies: @@ -10153,11 +10332,11 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(typescript@6.0.3)': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@6.0.3) - vite: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + vite: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) optionalDependencies: typescript: 6.0.3 @@ -10283,6 +10462,13 @@ snapshots: '@tybys/wasm-util': 0.10.2 optional: true + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.1 + optional: true + '@nodable/entities@2.1.0': {} '@nodelib/fs.scandir@2.1.5': @@ -10297,6 +10483,10 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + '@oxc-project/runtime@0.101.0': {} + + '@oxc-project/types@0.101.0': {} + '@package-json/types@0.0.12': {} '@pkgr/core@0.2.9': {} @@ -10307,6 +10497,52 @@ snapshots: '@polka/url@1.0.0-next.29': {} + '@rolldown/binding-android-arm64@1.0.0-beta.53': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-beta.53': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-beta.53': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-beta.53': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': + optional: true + + '@rolldown/pluginutils@1.0.0-beta.53': {} + '@rollup/plugin-commonjs@29.0.0(rollup@4.59.0)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.59.0) @@ -10949,10 +11185,10 @@ snapshots: axe-core: 4.11.1 storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.1)(react@18.3.1) - '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + '@storybook/csf-plugin': 10.3.3(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -10966,25 +11202,25 @@ snapshots: - vite - webpack - '@storybook/builder-vite@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + '@storybook/builder-vite@10.3.3(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: - '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + '@storybook/csf-plugin': 10.3.3(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 - vite: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + vite: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + '@storybook/csf-plugin@10.3.3(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: - esbuild: 0.28.1 + esbuild: 0.27.3 rollup: 4.62.0 - vite: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + vite: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) '@storybook/global@5.0.0': {} @@ -10999,11 +11235,11 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-vite@10.3.3(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2))': + '@storybook/react-vite@10.3.3(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(typescript@6.0.3) '@rollup/pluginutils': 5.3.0(rollup@4.62.0) - '@storybook/builder-vite': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)) + '@storybook/builder-vite': 10.3.3(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3) empathic: 2.0.1 magic-string: 0.30.21 @@ -11013,7 +11249,7 @@ snapshots: resolve: 1.22.12 storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsconfig-paths: 4.2.0 - vite: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + vite: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - esbuild - rollup @@ -11049,23 +11285,19 @@ snapshots: dependencies: acorn: 8.16.0 - '@sveltejs/acorn-typescript@1.0.9(acorn@8.16.0)': + '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)))': dependencies: - acorn: 8.16.0 + '@sveltejs/kit': 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)) - '@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))': + '@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)))': dependencies: - '@sveltejs/kit': 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) + '@sveltejs/kit': 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)) - '@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))': - dependencies: - '@sveltejs/kit': 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) - - '@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0))': + '@sveltejs/kit@2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)))(svelte@5.56.3(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0))': dependencies: '@standard-schema/spec': 1.1.0 - '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0) - '@sveltejs/vite-plugin-svelte': 7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) + '@sveltejs/acorn-typescript': 1.0.10(acorn@8.16.0) + '@sveltejs/vite-plugin-svelte': 7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)) '@types/cookie': 0.6.0 acorn: 8.16.0 cookie: 0.6.0 @@ -11077,20 +11309,20 @@ snapshots: set-cookie-parser: 3.1.0 sirv: 3.0.2 svelte: 5.56.3(@typescript-eslint/types@8.59.2) - vite: 6.4.3(@types/node@24.12.4)(terser@5.46.0) + vite: 6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0) optionalDependencies: typescript: 6.0.3 '@sveltejs/load-config@0.1.1': {} - '@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0))': + '@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.56.3(@typescript-eslint/types@8.59.2))(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0))': dependencies: deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.2 svelte: 5.56.3(@typescript-eslint/types@8.59.2) - vite: 6.4.3(@types/node@24.12.4)(terser@5.46.0) - vitefu: 1.1.3(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)) + vite: 6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0) + vitefu: 1.1.3(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)) '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.0)': dependencies: @@ -11303,6 +11535,11 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@tybys/wasm-util@0.10.2': dependencies: tslib: 2.8.1 @@ -12586,6 +12823,8 @@ snapshots: destroy@1.2.0: {} + detect-libc@2.1.2: {} + detect-newline@3.1.0: {} devalue@5.8.1: {} @@ -14588,6 +14827,55 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + 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.0.0: {} lines-and-columns@1.2.4: {} @@ -15288,7 +15576,7 @@ snapshots: postcss@8.5.9: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.13 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -15607,6 +15895,47 @@ snapshots: rfdc@1.3.0: {} + rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2): + dependencies: + '@oxc-project/runtime': 0.101.0 + fdir: 6.5.0(picomatch@4.0.4) + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.9 + rolldown: 1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 24.12.4 + esbuild: 0.27.3 + fsevents: 2.3.3 + terser: 5.46.0 + tsx: 4.6.2 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + rolldown@1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): + dependencies: + '@oxc-project/types': 0.101.0 + '@rolldown/pluginutils': 1.0.0-beta.53 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-beta.53 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.53 + '@rolldown/binding-darwin-x64': 1.0.0-beta.53 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.53 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.53 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.53 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.53 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.53 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.53 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.53 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.53 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.53 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + rollup-plugin-esbuild@6.2.1(esbuild@0.28.1)(rollup@4.59.0): dependencies: debug: 4.4.3 @@ -15618,13 +15947,14 @@ snapshots: transitivePeerDependencies: - supports-color - rollup-plugin-visualizer@7.0.1(rollup@4.62.0): + rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rollup@4.62.0): dependencies: open: 11.0.0 picomatch: 4.0.4 source-map: 0.7.4 yargs: 18.0.0 optionalDependencies: + rolldown: 1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) rollup: 4.62.0 rollup@4.59.0: @@ -16698,18 +17028,18 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-plugin-svgr@5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2)): + vite-plugin-svgr@5.2.0(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(typescript@6.0.3): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.62.0) '@svgr/core': 8.1.0(typescript@6.0.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@6.0.3)) - vite: 7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2) + vite: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - rollup - supports-color - typescript - vite@6.4.3(@types/node@24.12.4)(terser@5.46.0): + vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -16720,25 +17050,12 @@ snapshots: optionalDependencies: '@types/node': 24.12.4 fsevents: 2.3.3 + lightningcss: 1.32.0 terser: 5.46.0 - vite@7.3.2(@types/node@24.12.4)(terser@5.46.0)(tsx@4.6.2): - dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - postcss: 8.5.9 - rollup: 4.62.0 - tinyglobby: 0.2.16 - optionalDependencies: - '@types/node': 24.12.4 - fsevents: 2.3.3 - terser: 5.46.0 - tsx: 4.6.2 - - vitefu@1.1.3(vite@6.4.3(@types/node@24.12.4)(terser@5.46.0)): + vitefu@1.1.3(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)): optionalDependencies: - vite: 6.4.3(@types/node@24.12.4)(terser@5.46.0) + vite: 6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0) w3c-xmlserializer@4.0.0: dependencies: From 56318a4fcd76a4278cb54ca9e68f875bbadbf1ba Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Fri, 8 May 2026 15:13:25 +0100 Subject: [PATCH 26/37] Vite v8.0.11 --- dotcom-rendering/package.json | 2 +- pnpm-lock.yaml | 339 ++++++++++++++++++---------------- 2 files changed, 180 insertions(+), 161 deletions(-) diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json index 758e46c46c4..e7d21b4f46f 100644 --- a/dotcom-rendering/package.json +++ b/dotcom-rendering/package.json @@ -159,7 +159,7 @@ "devDependencies": { "@rollup/plugin-inject": "5.0.5", "rollup-plugin-visualizer": "7.0.1", - "vite": "npm:rolldown-vite@7.3.1", + "vite": "8.0.11", "vite-plugin-svgr": "5.2.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 58f55f55050..8c8755e473b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -376,10 +376,10 @@ importers: version: 10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/addon-docs': specifier: 10.3.3 - version: 10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2)) '@storybook/react-vite': specifier: 10.3.3 - version: 10.3.3(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3) + version: 10.3.3(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2)) '@swc/cli': specifier: 0.8.1 version: 0.8.1(@swc/core@1.15.41) @@ -701,13 +701,13 @@ importers: version: 5.0.5(rollup@4.62.0) rollup-plugin-visualizer: specifier: 7.0.1 - version: 7.0.1(rolldown@1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rollup@4.62.0) + version: 7.0.1(rolldown@1.0.0-rc.18)(rollup@4.62.0) vite: - specifier: npm:rolldown-vite@7.3.1 - version: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) + specifier: 8.0.11 + version: 8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2) vite-plugin-svgr: specifier: 5.2.0 - version: 5.2.0(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(typescript@6.0.3) + version: 5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2)) packages: @@ -2431,12 +2431,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/runtime@0.101.0': - resolution: {integrity: sha512-t3qpfVZIqSiLQ5Kqt/MC4Ge/WCOGrrcagAdzTcDaggupjiGxUx4nJF2v6wUCXWSzWHn5Ns7XLv13fCJEwCOERQ==} - engines: {node: ^20.19.0 || >=22.12.0} - - '@oxc-project/types@0.101.0': - resolution: {integrity: sha512-nuFhqlUzJX+gVIPPfuE6xurd4lST3mdcWOhyK/rZO0B9XWMKm79SuszIQEnSMmmDhq1DC8WWVYGVd+6F93o1gQ==} + '@oxc-project/types@0.128.0': + resolution: {integrity: sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==} '@package-json/types@0.0.12': resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} @@ -2453,89 +2449,103 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@rolldown/binding-android-arm64@1.0.0-beta.53': - resolution: {integrity: sha512-Ok9V8o7o6YfSdTTYA/uHH30r3YtOxLD6G3wih/U9DO0ucBBFq8WPt/DslU53OgfteLRHITZny9N/qCUxMf9kjQ==} + '@rolldown/binding-android-arm64@1.0.0-rc.18': + resolution: {integrity: sha512-lIDyUAfD7U3+BWKzdxMbJcsYHuqXqmGz40aeRqvuAm3y5TkJSYTBW2RDrn65DJFPQqVjUAUqq5uz8urzQ8aBdQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.53': - resolution: {integrity: sha512-yIsKqMz0CtRnVa6x3Pa+mzTihr4Ty+Z6HfPbZ7RVbk1Uxnco4+CUn7Qbm/5SBol1JD/7nvY8rphAgyAi7Lj6Vg==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.18': + resolution: {integrity: sha512-apJq2ktnGp27nSInMR5Vcj8kY6xJzDAvfdIFlpDcAK/w4cDO58qVoi1YQsES/SKiFNge/6e4CUzgjfHduYqWpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.53': - resolution: {integrity: sha512-GTXe+mxsCGUnJOFMhfGWmefP7Q9TpYUseHvhAhr21nCTgdS8jPsvirb0tJwM3lN0/u/cg7bpFNa16fQrjKrCjQ==} + '@rolldown/binding-darwin-x64@1.0.0-rc.18': + resolution: {integrity: sha512-5Ofot8xbs+pxRHJqm9/9N/4sTQOvdrwEsmPE9pdLEEoAbdZtG6F2LMDfO1sp6ZAtXJuJV/21ew2srq3W8NXB5g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.53': - resolution: {integrity: sha512-9Tmp7bBvKqyDkMcL4e089pH3RsjD3SUungjmqWtyhNOxoQMh0fSmINTyYV8KXtE+JkxYMPWvnEt+/mfpVCkk8w==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.18': + resolution: {integrity: sha512-7h8eeOTT1eyqJyx64BFCnWZpNm486hGWt2sqeLLgDxA0xI1oGZ9H7gK1S85uNGmBhkdPwa/6reTxfFFKvIsebw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': - resolution: {integrity: sha512-a1y5fiB0iovuzdbjUxa7+Zcvgv+mTmlGGC4XydVIsyl48eoxgaYkA3l9079hyTyhECsPq+mbr0gVQsFU11OJAQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18': + resolution: {integrity: sha512-eRcm/HVt9U/JFu5RKAEKwGQYtDCKWLiaH6wOnsSEp6NMBb/3Os8LgHZlNyzMpFVNmiiMFlfb2zEnebfzJrHFmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': - resolution: {integrity: sha512-bpIGX+ov9PhJYV+wHNXl9rzq4F0QvILiURn0y0oepbQx+7stmQsKA0DhPGwmhfvF856wq+gbM8L92SAa/CBcLg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18': + resolution: {integrity: sha512-SOrT/cT4ukTmgnrEz/Hg3m7LBnuCLW9psDeMKrimRWY4I8DmnO7Lco8W2vtqPmMkbVu8iJ+g4GFLVLLOVjJ9DQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': - resolution: {integrity: sha512-bGe5EBB8FVjHBR1mOLOPEFg1Lp3//7geqWkU5NIhxe+yH0W8FVrQ6WRYOap4SUTKdklD/dC4qPLREkMMQ855FA==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.18': + resolution: {integrity: sha512-QWjdxN1HJCpBTAcZ5N5F7wju3gVPzRzSpmGzx7na0c/1qpN9CFil+xt+l9lV/1M6/gqHSNXCiqPfwhVJPeLnug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': - resolution: {integrity: sha512-qL+63WKVQs1CMvFedlPt0U9PiEKJOAL/bsHMKUDS6Vp2Q+YAv/QLPu8rcvkfIMvQ0FPU2WL0aX4eWwF6e/GAnA==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18': + resolution: {integrity: sha512-ugCOyj7a4d9h3q9B+wXmf6g3a68UsjGh6dob5DHevHGMwDUbhsYNbSPxJsENcIttJZ9jv7qGM2UesLw5jqIhdg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18': + resolution: {integrity: sha512-kKWRhbsotpXkGbcd5dllUWg5gEXcDAa8u5YnP9AV5DYNbvJHGzzuwv7dpmhc8NqKMJldl0a+x76IHbspEpEmdA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.18': + resolution: {integrity: sha512-uCo8ElcCIAMyYAZyuIZ81oFkhTSIllNvUCHCAlbhlN4ji3uC28h7IIdlXyIvGO7HsuqnV9p3rD/bpH7XhIyhRw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': - resolution: {integrity: sha512-VGl9JIGjoJh3H8Mb+7xnVqODajBmrdOOb9lxWXdcmxyI+zjB2sux69br0hZJDTyLJfvBoYm439zPACYbCjGRmw==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.18': + resolution: {integrity: sha512-XNOQZtuE6yUIvx4rwGemwh8kpL1xvU41FXy/s9K7T/3JVcqGzo3NfKM2HrbrGgfPYGFW42f07Wk++aOC6B9NWA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': - resolution: {integrity: sha512-B4iIserJXuSnNzA5xBLFUIjTfhNy7d9sq4FUMQY3GhQWGVhS2RWWzzDnkSU6MUt7/aHUrep0CdQfXUJI9D3W7A==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.18': + resolution: {integrity: sha512-tSn/kzrfa7tNOXr7sEacDBN4YsIqTyLqh45IO0nHDwtpKIDNDJr+VFojt+4klSpChxB29JLyduSsE0MKEwa65A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': - resolution: {integrity: sha512-BUjAEgpABEJXilGq/BPh7jeU3WAJ5o15c1ZEgHaDWSz3LB881LQZnbNJHmUiM4d1JQWMYYyR1Y490IBHi2FPJg==} - engines: {node: '>=14.0.0'} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.18': + resolution: {integrity: sha512-+J9YGmc+czgqlhYmwun3S3O0FIZhsH8ep2456xwjAdIOmuJxM7xz4P4PtrxU+Bz17a/5bqPA8o3HAAoX0teUdg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': - resolution: {integrity: sha512-s27uU7tpCWSjHBnxyVXHt3rMrQdJq5MHNv3BzsewCIroIw3DJFjMH1dzCPPMUFxnh1r52Nf9IJ/eWp6LDoyGcw==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18': + resolution: {integrity: sha512-zsu47DgU0FQzSwi6sU9dZoEdUv7pc1AptSEz/Z8HBg54sV0Pbs3N0+CrIbTsgiu6EyoaNN9CHboqbLaz9lhOyQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': - resolution: {integrity: sha512-cjWL/USPJ1g0en2htb4ssMjIycc36RvdQAx1WlXnS6DpULswiUTVXPDesTifSKYSyvx24E0YqQkEm0K/M2Z/AA==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.18': + resolution: {integrity: sha512-7H+3yqGgmnlDTRRhw/xpYY9J1kf4GC681nVc4GqKhExZTDrVVrV2tsOR9kso0fvgBdcTCcQShx4SLLoHgaLwhg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.53': - resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + '@rolldown/pluginutils@1.0.0-rc.18': + resolution: {integrity: sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw==} '@rollup/plugin-commonjs@29.0.0': resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} @@ -6917,6 +6927,10 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.15: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} @@ -7199,49 +7213,8 @@ packages: rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - rolldown-vite@7.3.1: - resolution: {integrity: sha512-LYzdNAjRHhF2yA4JUQm/QyARyi216N2rpJ0lJZb8E9FU2y5v6Vk+xq/U4XBOxMefpWixT5H3TslmAHm1rqIq2w==} - engines: {node: ^20.19.0 || >=22.12.0} - deprecated: Use this package to migrate from Vite 7 to Vite 8. For the most recent updates, migrate to Vite 8 once you're ready. - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - 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 - 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 - - rolldown@1.0.0-beta.53: - resolution: {integrity: sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==} + rolldown@1.0.0-rc.18: + resolution: {integrity: sha512-phmyKBpuBdRYDf4hgyynGAYn/rDDe+iZXKVJ7WX5b1zQzpLkP5oJRPGsfJuHdzPMlyyEO/4sPW6yfSx2gf7lVg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -8118,6 +8091,49 @@ packages: yaml: optional: true + vite@8.0.11: + resolution: {integrity: sha512-Jz1mxtUBR5xTT65VOdJZUUeoyLtqljmFkiUXhPTLZka3RDc9vpi/xXkyrnsdRcm2lIi3l3GPMnAidTsEGIj3Ow==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.18 + 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 + vitefu@1.1.3: resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==} peerDependencies: @@ -10332,11 +10348,11 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(typescript@6.0.3)': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@6.0.3)(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@6.0.3) - vite: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) + vite: 8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2) optionalDependencies: typescript: 6.0.3 @@ -10483,9 +10499,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - '@oxc-project/runtime@0.101.0': {} - - '@oxc-project/types@0.101.0': {} + '@oxc-project/types@0.128.0': {} '@package-json/types@0.0.12': {} @@ -10497,51 +10511,56 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@rolldown/binding-android-arm64@1.0.0-beta.53': + '@rolldown/binding-android-arm64@1.0.0-rc.18': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.18': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.18': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.53': + '@rolldown/binding-freebsd-x64@1.0.0-rc.18': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.53': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.53': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.18': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.18': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.18': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.18': dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.18': optional: true - '@rolldown/pluginutils@1.0.0-beta.53': {} + '@rolldown/pluginutils@1.0.0-rc.18': {} '@rollup/plugin-commonjs@29.0.0(rollup@4.59.0)': dependencies: @@ -11185,10 +11204,10 @@ snapshots: axe-core: 4.11.1 storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@storybook/addon-docs@10.3.3(@types/react@18.3.1)(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.1)(react@18.3.1) - '@storybook/csf-plugin': 10.3.3(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2)) '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -11202,25 +11221,25 @@ snapshots: - vite - webpack - '@storybook/builder-vite@10.3.3(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@storybook/builder-vite@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2))': dependencies: - '@storybook/csf-plugin': 10.3.3(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@storybook/csf-plugin': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2)) storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 - vite: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) + vite: 8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.3.3(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@storybook/csf-plugin@10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2))': dependencies: storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: - esbuild: 0.27.3 + esbuild: 0.28.1 rollup: 4.62.0 - vite: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) + vite: 8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2) '@storybook/global@5.0.0': {} @@ -11235,11 +11254,11 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-vite@10.3.3(esbuild@0.27.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)': + '@storybook/react-vite@10.3.3(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3)(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(typescript@6.0.3) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@6.0.3)(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2)) '@rollup/pluginutils': 5.3.0(rollup@4.62.0) - '@storybook/builder-vite': 10.3.3(esbuild@0.27.3)(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@storybook/builder-vite': 10.3.3(esbuild@0.28.1)(rollup@4.62.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2)) '@storybook/react': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.3) empathic: 2.0.1 magic-string: 0.30.21 @@ -11249,7 +11268,7 @@ snapshots: resolve: 1.22.12 storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsconfig-paths: 4.2.0 - vite: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) + vite: 8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - esbuild - rollup @@ -15556,6 +15575,12 @@ snapshots: postcss-value-parser@4.2.0: {} + postcss@8.5.14: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postcss@8.5.15: dependencies: nanoid: 3.3.13 @@ -15895,46 +15920,26 @@ snapshots: rfdc@1.3.0: {} - rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2): + rolldown@1.0.0-rc.18: dependencies: - '@oxc-project/runtime': 0.101.0 - fdir: 6.5.0(picomatch@4.0.4) - lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.5.9 - rolldown: 1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - tinyglobby: 0.2.16 + '@oxc-project/types': 0.128.0 + '@rolldown/pluginutils': 1.0.0-rc.18 optionalDependencies: - '@types/node': 24.12.4 - esbuild: 0.27.3 - fsevents: 2.3.3 - terser: 5.46.0 - tsx: 4.6.2 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - rolldown@1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): - dependencies: - '@oxc-project/types': 0.101.0 - '@rolldown/pluginutils': 1.0.0-beta.53 - optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.53 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.53 - '@rolldown/binding-darwin-x64': 1.0.0-beta.53 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.53 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.53 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.53 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.53 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.53 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.53 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.53 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.53 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.53 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@rolldown/binding-android-arm64': 1.0.0-rc.18 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.18 + '@rolldown/binding-darwin-x64': 1.0.0-rc.18 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.18 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.18 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.18 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.18 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.18 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.18 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.18 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.18 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.18 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.18 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.18 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.18 rollup-plugin-esbuild@6.2.1(esbuild@0.28.1)(rollup@4.59.0): dependencies: @@ -15947,14 +15952,14 @@ snapshots: transitivePeerDependencies: - supports-color - rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(rollup@4.62.0): + rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.62.0): dependencies: open: 11.0.0 picomatch: 4.0.4 source-map: 0.7.4 yargs: 18.0.0 optionalDependencies: - rolldown: 1.0.0-beta.53(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + rolldown: 1.0.0-rc.18 rollup: 4.62.0 rollup@4.59.0: @@ -17028,12 +17033,12 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-plugin-svgr@5.2.0(rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2))(rollup@4.62.0)(typescript@6.0.3): + vite-plugin-svgr@5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.62.0) '@svgr/core': 8.1.0(typescript@6.0.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@6.0.3)) - vite: rolldown-vite@7.3.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@24.12.4)(esbuild@0.27.3)(terser@5.46.0)(tsx@4.6.2) + vite: 8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2) transitivePeerDependencies: - rollup - supports-color @@ -17053,6 +17058,20 @@ snapshots: lightningcss: 1.32.0 terser: 5.46.0 + vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.14 + rolldown: 1.0.0-rc.18 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 24.12.4 + esbuild: 0.28.1 + fsevents: 2.3.3 + terser: 5.46.0 + tsx: 4.6.2 + vitefu@1.1.3(vite@6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0)): optionalDependencies: vite: 6.4.3(@types/node@24.12.4)(lightningcss@1.32.0)(terser@5.46.0) From 067231943a70d1b3cfe16ff7a6179bad36483cb8 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 14 May 2026 17:37:00 +0100 Subject: [PATCH 27/37] Update dev-server optimizeDeps --- dotcom-rendering/vite/dev-server.mts | 101 ++++++++++++++------------- 1 file changed, 51 insertions(+), 50 deletions(-) diff --git a/dotcom-rendering/vite/dev-server.mts b/dotcom-rendering/vite/dev-server.mts index 4e179b331a8..172a0cbea37 100644 --- a/dotcom-rendering/vite/dev-server.mts +++ b/dotcom-rendering/vite/dev-server.mts @@ -1,6 +1,5 @@ /** * Vite development server with SSR middleware. - * Replaces webpack-dev-server + webpack-hot-server-middleware. * * Usage: * NODE_ENV=development node --import tsx vite/dev-server.ts @@ -26,8 +25,8 @@ async function start() { const app = express(); const httpServer = createHttpServer(app); - // Create Vite server in middleware mode. - // Handles client-side module transforms, HMR, and SSR module loading. + // Create Vite server in middleware mode + // Handles client-side module transforms, HMR and SSR module loading const devConfig = mergeConfig(sharedConfig, { plugins: [ svgr({ @@ -43,41 +42,22 @@ async function start() { }, }, appType: 'custom', - // Serve client modules from /assets/ to match production asset paths + // Serve client modules from /assets/ base: '/assets/', - // Pre-bundle CJS packages for client-side use (the ssrCjsPlugin - // only wraps them for SSR; client needs Vite's built-in CJSβ†’ESM). + // Optimize dependencies for faster dev server startup and HMR updates optimizeDeps: { include: [ - '@guardian/bridget', - '@guardian/bridget/SignInScreenReason', - '@guardian/libs', - '@guardian/ophan-tracker-js', + '@braze/web-sdk', + '@creditkarma/thrift-server-core', '@emotion/cache', - '@emotion/react/jsx-dev-runtime', '@emotion/react', - 'react', - 'react-dom/client', - '@guardian/identity-auth-frontend', - '@guardian/commercial-core', - '@guardian/source/foundations', - '@guardian/core-web-vitals', + '@emotion/react/jsx-runtime', + '@emotion/react/jsx-dev-runtime', '@guardian/ab-core', - '@guardian/source/react-components', - 'swr', - 'swr/immutable', - '@guardian/braze-components/logic', - 'lodash.debounce', - '@guardian/commercial-core/geo/geo-utils', - '@guardian/support-dotcom-components', - 'react-dom', '@guardian/braze-components/banner', - '@braze/web-sdk', - '@guardian/source-development-kitchen/react-components', - 'sanitize-html', '@guardian/braze-components/end-of-article', - 'react-google-recaptcha', - 'compare-versions', + '@guardian/braze-components/logic', + '@guardian/bridget', '@guardian/bridget/AbTesting', '@guardian/bridget/Acquisitions', '@guardian/bridget/Analytics', @@ -93,36 +73,58 @@ async function start() { '@guardian/bridget/Navigation', '@guardian/bridget/Newsletters', '@guardian/bridget/Notifications', + '@guardian/bridget/SignInScreenReason', + '@guardian/bridget/SignInScreenReferrer', '@guardian/bridget/Tag', '@guardian/bridget/User', '@guardian/bridget/Videos', - '@creditkarma/thrift-server-core', + '@guardian/commercial-core', + '@guardian/commercial-core/geo/geo-utils', + '@guardian/core-web-vitals', + '@guardian/identity-auth-frontend', + '@guardian/libs', + '@guardian/ophan-tracker-js', + '@guardian/source-development-kitchen/react-components', + '@guardian/source/foundations', + '@guardian/source/react-components', + '@guardian/support-dotcom-components', + 'compare-versions', 'is-mobile', - '@guardian/bridget/SignInScreenReferrer', + 'lodash.debounce', + 'react', + 'react-dom', + 'react-dom/client', + 'react-google-recaptcha', + 'sanitize-html', + 'swr', + 'swr/immutable', 'valibot', ], }, + ssr: { + noExternal: [ + /@guardian\//, + 'screenfull', + 'valibot', + ...cjsPackages, + ], + }, }); - // SSR config must be set after mergeConfig to avoid being overwritten. - devConfig.ssr = { - // Bundle ESM-only packages that can't be require()'d by Node, plus - // CJS packages that we want to expose via ESM named imports - // (see cjs-packages.ts). - noExternal: [/@guardian\//, 'screenfull', 'valibot', ...cjsPackages], - }; + + // Create Vite dev server instance const vite = await createViteServer(devConfig); - // Vite's connect middleware handles HMR websocket, module transforms, - // and serves client-side files from /assets/ + // Vite's connect middleware handles HMR websocket, module transforms + // and serves files from /assets/ app.use(vite.middlewares); - // Parse JSON request bodies (used by POST routes for rendering) + // Parse JSON request bodies app.use(express.json({ limit: '10mb' })); - // Serve static files (favicons, etc.) + // Serve static files app.use('/static/frontend', express.static(resolve(root, 'src', 'static'))); - // Dev landing page with links to test content + // Dev index page const devIndexHtml = readFileSync( resolve(root, 'src', 'server', 'dev-index.html'), 'utf-8', @@ -140,23 +142,22 @@ async function start() { next(); }); - // SSR: load server module on each request via Vite's ssrLoadModule. - // This re-evaluates the module when files change, providing instant - // server-side hot reload without a full restart. + // SSR HMR: reload server module graph on each request via Vite's ssrLoadModule app.use(async (req, res, next) => { try { const { devServer } = (await vite.ssrLoadModule( './src/server/server.ts', )) as { - devServer: () => express.Handler; + devServer: () => express.RequestHandler; }; - devServer()(req, res, next); + + return devServer()(req, res, next); } catch (e) { // Let Vite fix the stack trace for SSR errors if (e instanceof Error) { vite.ssrFixStacktrace(e); } - next(e); + return next(e); } }); From c29da8f829fe81c7a980de8622736bff42b9ac3f Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 14 May 2026 22:11:20 +0100 Subject: [PATCH 28/37] use rolldownOptions --- dotcom-rendering/vite/vite.config.client.mts | 2 +- dotcom-rendering/vite/vite.config.server.mts | 2 +- dotcom-rendering/vite/vite.config.shared.mts | 4 ---- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/dotcom-rendering/vite/vite.config.client.mts b/dotcom-rendering/vite/vite.config.client.mts index e6c28133bcc..9c28486fc10 100644 --- a/dotcom-rendering/vite/vite.config.client.mts +++ b/dotcom-rendering/vite/vite.config.client.mts @@ -147,7 +147,7 @@ export const createClientConfig = (build: Build): UserConfig => { emptyOutDir: false, target: getBuildTarget(build), manifest: `manifest.${build}.json`, - rollupOptions: { + rolldownOptions: { input: isSingleChunk ? // Single-chunk builds can only have one entry // (inlineDynamicImports is incompatible with multiple inputs) diff --git a/dotcom-rendering/vite/vite.config.server.mts b/dotcom-rendering/vite/vite.config.server.mts index b6739a09b4a..c1ee825ce01 100644 --- a/dotcom-rendering/vite/vite.config.server.mts +++ b/dotcom-rendering/vite/vite.config.server.mts @@ -34,7 +34,7 @@ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { target: `node${process.versions.node}`, minify: !DEV, sourcemap: true, - rollupOptions: { + rolldownOptions: { input: { server: './src/server/server.ts', }, diff --git a/dotcom-rendering/vite/vite.config.shared.mts b/dotcom-rendering/vite/vite.config.shared.mts index 474d36288c8..9163d77960f 100644 --- a/dotcom-rendering/vite/vite.config.shared.mts +++ b/dotcom-rendering/vite/vite.config.shared.mts @@ -4,7 +4,6 @@ const DEV = process.env.NODE_ENV === 'development'; /** * Shared Vite configuration applied to both server and client builds. - * Replaces the `commonConfigs()` function from webpack.config.js. */ export const sharedConfig: UserConfig = { define: { @@ -13,9 +12,6 @@ export const sharedConfig: UserConfig = { }, build: { sourcemap: DEV ? 'inline' : true, - // Rolldown is used automatically when available in Vite 7+ - // For Vite 6 with experimental Rolldown, uncomment: - // rollupOptions: { experimentalRolldown: true }, }, resolve: { extensions: ['.ts', '.tsx', '.js', '.jsx'], From 383969b054ef9ca588fd3f9e9ff3d16ea6ddbab1 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Sun, 17 May 2026 13:16:02 +0100 Subject: [PATCH 29/37] Fix chunking. Single frameworks chunks, all others maxSize: 500kb except islands which are separate chunks --- dotcom-rendering/vite/vite.config.client.mts | 46 ++++++++------------ 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/dotcom-rendering/vite/vite.config.client.mts b/dotcom-rendering/vite/vite.config.client.mts index 9c28486fc10..0d4a7a40b1d 100644 --- a/dotcom-rendering/vite/vite.config.client.mts +++ b/dotcom-rendering/vite/vite.config.client.mts @@ -85,30 +85,6 @@ const getGlobals = (build: Build): Record => { return globals; }; -/** - * Generates manual chunk assignments for web builds. - * Mirrors the webpack splitChunks.cacheGroups.frameworks config. - */ -const getManualChunks = ( - build: Build, -): ((id: string) => string | undefined) | undefined => { - // Apps and crossword builds use inlineDynamicImports (single chunk) - if (build === 'client.apps' || build === 'client.editionsCrossword') { - return undefined; - } - - return (id: string) => { - if ( - /node_modules\/(react|react-dom|react-is|hoist-non-react-statistics|swr|@emotion|stylis)\//.test( - id, - ) - ) { - return 'frameworks'; - } - return undefined; - }; -}; - /** * Whether this build should inline all dynamic imports into a single chunk. * Apps and crossword builds produce a single file (no code splitting). @@ -150,7 +126,6 @@ export const createClientConfig = (build: Build): UserConfig => { rolldownOptions: { input: isSingleChunk ? // Single-chunk builds can only have one entry - // (inlineDynamicImports is incompatible with multiple inputs) { index: getEntryIndex(build) } : { index: getEntryIndex(build), @@ -168,9 +143,26 @@ export const createClientConfig = (build: Build): UserConfig => { chunkFileNames: DEV ? `[name].${build}.js` : `[name].${build}.[hash].js`, + codeSplitting: isSingleChunk + ? false + : { + groups: [ + { + name: 'vendor', + test: /node_modules/, + priority: 1, + minSize: 0, + }, + { + name: 'common', + test: (id) => !id.includes('.island.'), + priority: 0, + minSize: 0, + maxSize: 500000, + }, + ], + }, globals: getGlobals(build), - manualChunks: getManualChunks(build), - ...(isSingleChunk ? { inlineDynamicImports: true } : {}), }, }, }, From 1910c56a6b1e9a9b4ce304806bc617393c5cce44 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Sun, 17 May 2026 14:38:03 +0100 Subject: [PATCH 30/37] Fix dev server SSR hot reloading --- dotcom-rendering/vite/dev-server.mts | 32 ++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/dotcom-rendering/vite/dev-server.mts b/dotcom-rendering/vite/dev-server.mts index 172a0cbea37..726c8800ac6 100644 --- a/dotcom-rendering/vite/dev-server.mts +++ b/dotcom-rendering/vite/dev-server.mts @@ -9,21 +9,36 @@ */ import { readFileSync } from 'node:fs'; -import { createServer as createHttpServer } from 'node:http'; import { resolve } from 'node:path'; import express from 'express'; +import type { Plugin } from 'vite'; import { createServer as createViteServer, mergeConfig } from 'vite'; import svgr from 'vite-plugin-svgr'; import { cjsPackages } from './cjs-packages.mts'; import { ssrCjsPlugin } from './ssr-cjs-plugin.mts'; import { sharedConfig } from './vite.config.shared.mts'; +/** + * Plugin that triggers a browser full-reload when SSR-only modules change. + * Vite's SSR environment invalidates its module graph on file changes but + * doesn't notify the browser. This invokes a reload via Vite's HMR websocket API. + */ +function ssrReloadPlugin(): Plugin { + return { + name: 'ssr-full-reload', + hotUpdate({ modules, server }) { + if (this.environment.name === 'ssr' && modules.length > 0) { + server.hot.send({ type: 'full-reload' }); + } + }, + }; +} + const port = 3030; const root = process.cwd(); async function start() { const app = express(); - const httpServer = createHttpServer(app); // Create Vite server in middleware mode // Handles client-side module transforms, HMR and SSR module loading @@ -34,12 +49,11 @@ async function start() { svgrOptions: { svgo: false }, }), ssrCjsPlugin([...cjsPackages]), + ssrReloadPlugin(), ], server: { middlewareMode: true, - hmr: { - server: httpServer, - }, + hmr: true, }, appType: 'custom', // Serve client modules from /assets/ @@ -59,6 +73,7 @@ async function start() { '@guardian/braze-components/logic', '@guardian/bridget', '@guardian/bridget/AbTesting', + '@guardian/bridget/AdSlot', '@guardian/bridget/Acquisitions', '@guardian/bridget/Analytics', '@guardian/bridget/Audio', @@ -66,6 +81,7 @@ async function start() { '@guardian/bridget/Discussion', '@guardian/bridget/Environment', '@guardian/bridget/Gallery', + '@guardian/bridget/Image', '@guardian/bridget/Interaction', '@guardian/bridget/Interactives', '@guardian/bridget/ListenToArticle', @@ -76,6 +92,7 @@ async function start() { '@guardian/bridget/SignInScreenReason', '@guardian/bridget/SignInScreenReferrer', '@guardian/bridget/Tag', + '@guardian/bridget/Topic', '@guardian/bridget/User', '@guardian/bridget/Videos', '@guardian/commercial-core', @@ -96,6 +113,7 @@ async function start() { 'react-dom/client', 'react-google-recaptcha', 'sanitize-html', + 'screenfull', 'swr', 'swr/immutable', 'valibot', @@ -142,7 +160,7 @@ async function start() { next(); }); - // SSR HMR: reload server module graph on each request via Vite's ssrLoadModule + // SSR: reload server module graph on each request via Vite's ssrLoadModule app.use(async (req, res, next) => { try { const { devServer } = (await vite.ssrLoadModule( @@ -161,7 +179,7 @@ async function start() { } }); - httpServer.listen(port, () => { + app.listen(port, () => { console.log( `\n Vite DEV server running on http://localhost:${port}\n`, ); From ce8963fcc2376c1ddc333080701d8fa69fadf03c Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 9 Jul 2026 22:26:13 +0100 Subject: [PATCH 31/37] Add rollup dependency visualiser --- dotcom-rendering/vite/vite.config.shared.mts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dotcom-rendering/vite/vite.config.shared.mts b/dotcom-rendering/vite/vite.config.shared.mts index 9163d77960f..c56dba81a6e 100644 --- a/dotcom-rendering/vite/vite.config.shared.mts +++ b/dotcom-rendering/vite/vite.config.shared.mts @@ -1,4 +1,5 @@ import type { UserConfig } from 'vite'; +import { visualizer } from 'rollup-plugin-visualizer'; const DEV = process.env.NODE_ENV === 'development'; @@ -16,4 +17,13 @@ export const sharedConfig: UserConfig = { resolve: { extensions: ['.ts', '.tsx', '.js', '.jsx'], }, + plugins: [ + DEV + ? undefined + : visualizer({ + emitFile: true, + filename: 'a1stats.html', + template: 'treemap', + }), + ], }; From baa5e5f19346073259bd3eec65a32a5b3828b0f4 Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 9 Jul 2026 23:01:56 +0100 Subject: [PATCH 32/37] Update dev server optimised deps after rebase --- dotcom-rendering/vite/dev-server.mts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dotcom-rendering/vite/dev-server.mts b/dotcom-rendering/vite/dev-server.mts index 726c8800ac6..ed913fa9ecd 100644 --- a/dotcom-rendering/vite/dev-server.mts +++ b/dotcom-rendering/vite/dev-server.mts @@ -67,7 +67,6 @@ async function start() { '@emotion/react', '@emotion/react/jsx-runtime', '@emotion/react/jsx-dev-runtime', - '@guardian/ab-core', '@guardian/braze-components/banner', '@guardian/braze-components/end-of-article', '@guardian/braze-components/logic', @@ -85,6 +84,8 @@ async function start() { '@guardian/bridget/Interaction', '@guardian/bridget/Interactives', '@guardian/bridget/ListenToArticle', + '@guardian/bridget/LiveActivities', + '@guardian/bridget/MatchNotifications', '@guardian/bridget/Metrics', '@guardian/bridget/Navigation', '@guardian/bridget/Newsletters', @@ -97,6 +98,7 @@ async function start() { '@guardian/bridget/Videos', '@guardian/commercial-core', '@guardian/commercial-core/geo/geo-utils', + '@guardian/consent-manager', '@guardian/core-web-vitals', '@guardian/identity-auth-frontend', '@guardian/libs', From 3038420dbe61b2b88760ec1aca619fabb86ab5cd Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Thu, 9 Jul 2026 23:08:17 +0100 Subject: [PATCH 33/37] Fix lint after rebase --- .prettierignore | 1 + dotcom-rendering/.storybook/main.ts | 118 ------------------ dotcom-rendering/__mocks__/islandRegistry.ts | 1 + dotcom-rendering/index.d.ts | 8 ++ dotcom-rendering/package.json | 10 +- .../src/client/islands/doHydration.tsx | 2 +- .../InteractiveBlockComponent.island.tsx | 12 +- .../src/lib/braze/initialiseBraze.ts | 5 +- .../src/lib/useIsBridgetCompatible.ts | 1 - dotcom-rendering/vite/browser-targets.mts | 16 +-- dotcom-rendering/vite/ssr-cjs-plugin.mts | 2 +- dotcom-rendering/vite/vite.config.client.mts | 8 +- dotcom-rendering/vite/vite.config.shared.mts | 4 +- 13 files changed, 38 insertions(+), 150 deletions(-) diff --git a/.prettierignore b/.prettierignore index a844678c132..0e30cc6547b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,6 +7,7 @@ pnpm-lock.yaml dotcom-rendering/src/model/*-schema.json dotcom-rendering/src/frontend/schemas dotcom-rendering/stories/generated +dotcom-rendering/cdk.out # specific files /**/*/curl-with-js-and-domReady.js diff --git a/dotcom-rendering/.storybook/main.ts b/dotcom-rendering/.storybook/main.ts index 5954d60ec7d..582fd649f69 100644 --- a/dotcom-rendering/.storybook/main.ts +++ b/dotcom-rendering/.storybook/main.ts @@ -1,19 +1,3 @@ -<<<<<<< HEAD -import { createRequire } from 'node:module'; -import path from 'node:path'; -import process from 'node:process'; -import type { StorybookConfig } from '@storybook/react-webpack5'; -import { defineMain } from '@storybook/react-webpack5/node'; -import webpack from 'webpack'; -import { saveStories } from '../scripts/gen-stories/get-stories.mjs'; -import { svgr } from '../webpack/svg.cjs'; -// Import CommonJS webpack config in ESM context -const require = createRequire(import.meta.url); -const { - transpileExclude, - getLoaders, -} = require('../webpack/webpack.config.client.js'); -======= import { defineMain } from '@storybook/react-vite/node'; import path from 'node:path'; import process from 'node:process'; @@ -23,7 +7,6 @@ import svgr from 'vite-plugin-svgr'; // ESM equivalent of __dirname const __dirname = import.meta.dirname; ->>>>>>> 1dfe0367f7 (Migrate Storybook to Vite, remove webpack config and dependencies) // Generate dynamic Card and Layout stories saveStories(); @@ -50,38 +33,6 @@ export default defineMain({ addons: ['@storybook/addon-docs', '@storybook/addon-a11y'], -<<<<<<< HEAD - webpackFinal: async (config) => { - // Get project specific webpack options - const newConfig = webpackConfig(config); - - newConfig.resolve ??= {}; - - // Global options for webpack - newConfig.resolve.extensions?.push('.ts', '.tsx'); - - newConfig.resolve.fallback ??= {}; - // clean-css will try to import these packages - newConfig.resolve.fallback['http'] = false; - newConfig.resolve.fallback['https'] = false; - newConfig.resolve.fallback['os'] = false; - - // Required as otherwise 'process' will not be defined when included on its own (without .env) - // e.g process?.env?.SOME_VAR - newConfig.plugins?.push( - new webpack.DefinePlugin({ - 'process.env': JSON.stringify({ - SDC_URL: process.env.SDC_URL, - HOSTNAME: process.env.HOSTNAME, - }), - }), - // We rely on Buffer for our bridget thrift client - new webpack.ProvidePlugin({ - Buffer: ['buffer', 'Buffer'], - }), - ); - return newConfig; -======= viteFinal: async (config) => { config.plugins ??= []; config.plugins.push( @@ -123,7 +74,6 @@ export default defineMain({ }; return config; ->>>>>>> 1dfe0367f7 (Migrate Storybook to Vite, remove webpack config and dependencies) }, env: (config) => ({ @@ -145,71 +95,3 @@ export default defineMain({ reactDocgen: 'react-docgen', }, }); -<<<<<<< HEAD - -/** the webpack.Configuration type from Storybook */ -type Configuration = Parameters< - NonNullable ->[0]; - -const webpackConfig = (config: Configuration) => { - const rules = config.module?.rules ?? []; - - config.resolve ??= {}; - - config.resolve.alias = { - ...config.resolve.alias, - - Buffer: 'buffer', - react: 'react', - 'react-dom': 'react-dom', - - // Mock JSDOM for storybook - it relies on native node.js packages - // Allows us to use enhancers in stories for better testing of components & full articles - jsdom$: path.resolve(import.meta.dirname, './mocks/jsdom.ts'), - - // log4js tries to call "fs" in storybook -- we can ignore it - [`${path.resolve(import.meta.dirname, '../src/server/lib/logging')}$`]: - path.resolve(import.meta.dirname, './mocks/log4js.ts'), - - // Mock BridgetApi for storybook - [`${path.resolve(import.meta.dirname, '../src/lib/bridgetApi')}$`]: - path.resolve(import.meta.dirname, './mocks/bridgetApi.ts'), - - // Mock identity auth frontend to prevent Storybook components from hanging in Pending - '@guardian/identity-auth-frontend': path.resolve( - import.meta.dirname, - './mocks/identityAuthFrontend.ts', - ), - }; - - const webpackLoaders = getLoaders('client.web'); - - // https://swc.rs/docs/usage/swc-loader#with-babel-loader - if (webpackLoaders[0].loader.startsWith('swc')) { - webpackLoaders[0].options.parseMap = true; - } - - // Support typescript in Storybook - // https://storybook.js.org/docs/configurations/typescript-config/ - rules.push({ - test: /\.[jt]sx?|mjs$/, - include: [path.resolve(import.meta.dirname, '../')], - exclude: transpileExclude, - use: webpackLoaders, - }); - - // modify storybook's file-loader rule to avoid conflicts with our svg - const fileLoaderRule = rules.find((rule) => { - return String(rule?.test).includes('svg'); - }); - if (fileLoaderRule && typeof fileLoaderRule !== 'string') { - fileLoaderRule.exclude = /\.svg$/; - } - rules.push(svgr); - config.resolve.modules = [...(config.resolve.modules || [])]; - - return config; -}; -======= ->>>>>>> 1dfe0367f7 (Migrate Storybook to Vite, remove webpack config and dependencies) diff --git a/dotcom-rendering/__mocks__/islandRegistry.ts b/dotcom-rendering/__mocks__/islandRegistry.ts index 7034f4e74d1..f12c7dd07fe 100644 --- a/dotcom-rendering/__mocks__/islandRegistry.ts +++ b/dotcom-rendering/__mocks__/islandRegistry.ts @@ -3,6 +3,7 @@ * (not supported by Jest/SWC). */ export const getIslandModule = ( + // eslint-disable-next-line @typescript-eslint/no-unused-vars -- mock _name: string, ): (() => Promise>) | undefined => { return undefined; diff --git a/dotcom-rendering/index.d.ts b/dotcom-rendering/index.d.ts index 81f13f569e1..f883ca80129 100644 --- a/dotcom-rendering/index.d.ts +++ b/dotcom-rendering/index.d.ts @@ -14,6 +14,14 @@ declare module 'dynamic-import-polyfill' { }) => void; } +declare module '@babel/helper-compilation-targets' { + const getTargetsFromBrowsersList: (opts: { + browsers: string[]; + }) => Record; + + export default getTargetsFromBrowsersList; +} + // SVG handling declare module '*.svg' { const content: any; diff --git a/dotcom-rendering/package.json b/dotcom-rendering/package.json index e7d21b4f46f..6c958ed0c31 100644 --- a/dotcom-rendering/package.json +++ b/dotcom-rendering/package.json @@ -46,6 +46,7 @@ "@guardian/support-dotcom-components": "10.0.1", "@guardian/tsconfig": "catalog:", "@playwright/test": "1.60.0", + "@rollup/plugin-inject": "5.0.5", "@sentry/browser": "10.52.0", "@storybook/addon-a11y": "10.3.3", "@storybook/addon-docs": "10.3.3", @@ -129,6 +130,7 @@ "react": "18.3.1", "react-dom": "18.3.1", "react-google-recaptcha": "3.1.0", + "rollup-plugin-visualizer": "7.0.1", "rehype-autolink-headings": "7.1.0", "rehype-slug": "6.0.0", "rehype-stringify": "10.0.1", @@ -153,13 +155,9 @@ "unified": "11.0.5", "url": "0.11.4", "valibot": "0.28.1", + "vite": "8.0.11", + "vite-plugin-svgr": "5.2.0", "web-vitals": "4.2.3", "zod": "4.1.12" - }, - "devDependencies": { - "@rollup/plugin-inject": "5.0.5", - "rollup-plugin-visualizer": "7.0.1", - "vite": "8.0.11", - "vite-plugin-svgr": "5.2.0" } } diff --git a/dotcom-rendering/src/client/islands/doHydration.tsx b/dotcom-rendering/src/client/islands/doHydration.tsx index 9501cffdd9f..96e936874e3 100644 --- a/dotcom-rendering/src/client/islands/doHydration.tsx +++ b/dotcom-rendering/src/client/islands/doHydration.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unsafe-member-access -- necessary for calling our async loaded modules */ import type { EmotionCache } from '@emotion/react'; import { CacheProvider } from '@emotion/react'; import { isUndefined, log, startPerformanceMeasure } from '@guardian/libs'; @@ -75,6 +74,7 @@ export const doHydration = async ( {/* The component to hydrate must be a single JSX Element */} {createElement( + // eslint-disable-next-line @typescript-eslint/no-restricted-types -- load a component dynamically so we can't determine the type module[name] as React.FunctionComponent, data, )} diff --git a/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx b/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx index eec55b22870..7a4d934c45f 100644 --- a/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx +++ b/dotcom-rendering/src/components/InteractiveBlockComponent.island.tsx @@ -1,10 +1,4 @@ // AMD require provided by curl.js loader for legacy interactives -declare global { - interface Window { - require(modules: string[], callback: (...args: never[]) => void): void; - } -} - import { css } from '@emotion/react'; import type { SerializedStyles } from '@emotion/react'; import { getErrorMessage, isUndefined, log } from '@guardian/libs'; @@ -26,6 +20,12 @@ import { useConfig } from './ConfigContext'; import { defaultRoleStyles } from './Figure'; import { Placeholder } from './Placeholder'; +declare global { + interface Window { + require(modules: string[], callback: (...args: never[]) => void): void; + } +} + /* HISTORY diff --git a/dotcom-rendering/src/lib/braze/initialiseBraze.ts b/dotcom-rendering/src/lib/braze/initialiseBraze.ts index b389b8af08e..640c0d53ea0 100644 --- a/dotcom-rendering/src/lib/braze/initialiseBraze.ts +++ b/dotcom-rendering/src/lib/braze/initialiseBraze.ts @@ -15,9 +15,8 @@ const SDK_OPTIONS: braze.InitializationOptions = { }; const initialiseBraze = async (apiKey: string): Promise => { - const importedBraze = (await import( - '@braze/web-sdk' - )) as unknown as typeof braze; + const importedBraze = + (await import('@braze/web-sdk')) as unknown as typeof braze; importedBraze.setLogger((message) => log('tx', message)); importedBraze.initialize(apiKey, SDK_OPTIONS); diff --git a/dotcom-rendering/src/lib/useIsBridgetCompatible.ts b/dotcom-rendering/src/lib/useIsBridgetCompatible.ts index 1f18cfcfc7c..3ff8419a760 100644 --- a/dotcom-rendering/src/lib/useIsBridgetCompatible.ts +++ b/dotcom-rendering/src/lib/useIsBridgetCompatible.ts @@ -1,5 +1,4 @@ import { compare } from 'compare-versions'; - import { useEffect, useState } from 'react'; import { type EnvironmentClient, getEnvironmentClient } from './bridgetApi'; diff --git a/dotcom-rendering/vite/browser-targets.mts b/dotcom-rendering/vite/browser-targets.mts index a48e32e3abd..c9e64a14dda 100644 --- a/dotcom-rendering/vite/browser-targets.mts +++ b/dotcom-rendering/vite/browser-targets.mts @@ -4,18 +4,18 @@ * Derives browser targets from @guardian/browserslist-config and upgrades * iOS < 11 to iOS 11 (required for dynamic import support). */ -import { createRequire } from 'node:module'; +import getTargetsFromBrowsersList from '@babel/helper-compilation-targets'; +import browserslist from 'browserslist'; -const require = createRequire(import.meta.url); - -const getTargetsFromBrowsersList: (opts: { +type GetTargetsFromBrowsersList = (opts: { browsers: string[]; -}) => Record = - require('@babel/helper-compilation-targets').default; -const browserslist: (query: string) => string[] = require('browserslist'); +}) => Record; + +const getTargetsFromBrowsersListTyped = + getTargetsFromBrowsersList as unknown as GetTargetsFromBrowsersList; const browsers = browserslist('extends @guardian/browserslist-config'); -const rawTargets: Record = getTargetsFromBrowsersList({ +const rawTargets: Record = getTargetsFromBrowsersListTyped({ browsers, }); diff --git a/dotcom-rendering/vite/ssr-cjs-plugin.mts b/dotcom-rendering/vite/ssr-cjs-plugin.mts index 0a70d8946cf..8a7fe8dc98f 100644 --- a/dotcom-rendering/vite/ssr-cjs-plugin.mts +++ b/dotcom-rendering/vite/ssr-cjs-plugin.mts @@ -38,7 +38,7 @@ export function ssrCjsPlugin(packages: string[]): Plugin { name: 'ssr-cjs-compat', enforce: 'pre', resolveId(id, _importer, options) { - if (options?.ssr && shouldWrap(id)) { + if (options.ssr && shouldWrap(id)) { return PREFIX + id; } return undefined; diff --git a/dotcom-rendering/vite/vite.config.client.mts b/dotcom-rendering/vite/vite.config.client.mts index 0d4a7a40b1d..a54fd6c939f 100644 --- a/dotcom-rendering/vite/vite.config.client.mts +++ b/dotcom-rendering/vite/vite.config.client.mts @@ -114,7 +114,7 @@ export const createClientConfig = (build: Build): UserConfig => { inject({ Buffer: ['buffer', 'Buffer'], }) as PluginOption, - ] + ] : []), ], resolve: {}, @@ -126,11 +126,11 @@ export const createClientConfig = (build: Build): UserConfig => { rolldownOptions: { input: isSingleChunk ? // Single-chunk builds can only have one entry - { index: getEntryIndex(build) } + { index: getEntryIndex(build) } : { index: getEntryIndex(build), debug: './src/client/debug/debug.ts', - }, + }, external: getExternals(build), output: { // Naming: [name].[build].[hash].js β€” matches webpack output pattern @@ -161,7 +161,7 @@ export const createClientConfig = (build: Build): UserConfig => { maxSize: 500000, }, ], - }, + }, globals: getGlobals(build), }, }, diff --git a/dotcom-rendering/vite/vite.config.shared.mts b/dotcom-rendering/vite/vite.config.shared.mts index c56dba81a6e..29717dff8fe 100644 --- a/dotcom-rendering/vite/vite.config.shared.mts +++ b/dotcom-rendering/vite/vite.config.shared.mts @@ -1,5 +1,5 @@ -import type { UserConfig } from 'vite'; import { visualizer } from 'rollup-plugin-visualizer'; +import type { UserConfig } from 'vite'; const DEV = process.env.NODE_ENV === 'development'; @@ -24,6 +24,6 @@ export const sharedConfig: UserConfig = { emitFile: true, filename: 'a1stats.html', template: 'treemap', - }), + }), ], }; From 3d77cf6e325155b49ed78016866eebe8bfc7adfa Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Fri, 10 Jul 2026 00:01:58 +0100 Subject: [PATCH 34/37] Fix browser-targets.ts --- dotcom-rendering/index.d.ts | 7 ++---- dotcom-rendering/makefile | 4 +-- ...browser-targets.mts => browser-targets.ts} | 15 +++++------ dotcom-rendering/vite/vite.config.client.mts | 2 +- pnpm-lock.yaml | 25 +++++++++---------- 5 files changed, 24 insertions(+), 29 deletions(-) rename dotcom-rendering/vite/{browser-targets.mts => browser-targets.ts} (63%) diff --git a/dotcom-rendering/index.d.ts b/dotcom-rendering/index.d.ts index f883ca80129..dbb3ac1213f 100644 --- a/dotcom-rendering/index.d.ts +++ b/dotcom-rendering/index.d.ts @@ -15,11 +15,8 @@ declare module 'dynamic-import-polyfill' { } declare module '@babel/helper-compilation-targets' { - const getTargetsFromBrowsersList: (opts: { - browsers: string[]; - }) => Record; - - export default getTargetsFromBrowsersList; + const getTargets: (opts: { browsers: string[] }) => Record; + export default getTargets; } // SVG handling diff --git a/dotcom-rendering/makefile b/dotcom-rendering/makefile index 9b1a48fb6f0..6c24f70a1d0 100644 --- a/dotcom-rendering/makefile +++ b/dotcom-rendering/makefile @@ -155,10 +155,8 @@ install: check-env reinstall: clear clean-deps install $(call log, "dependencies have been reinstalled ♻️") -validate-build: # private +validate-build: build # private $(call log, "checking bundling") - @rm -rf dist - @NODE_ENV=production webpack --config ./webpack/webpack.config.js check-env: # private $(call log, "checking environment") diff --git a/dotcom-rendering/vite/browser-targets.mts b/dotcom-rendering/vite/browser-targets.ts similarity index 63% rename from dotcom-rendering/vite/browser-targets.mts rename to dotcom-rendering/vite/browser-targets.ts index c9e64a14dda..58aadf481af 100644 --- a/dotcom-rendering/vite/browser-targets.mts +++ b/dotcom-rendering/vite/browser-targets.ts @@ -1,21 +1,22 @@ +/* eslint-disable import/order -- TODO fixme */ + /** * ES module equivalent of webpack/browser-targets.js * * Derives browser targets from @guardian/browserslist-config and upgrades * iOS < 11 to iOS 11 (required for dynamic import support). */ -import getTargetsFromBrowsersList from '@babel/helper-compilation-targets'; +import { createRequire } from 'node:module'; import browserslist from 'browserslist'; -type GetTargetsFromBrowsersList = (opts: { - browsers: string[]; -}) => Record; +const require = createRequire(import.meta.url); +const targetsModule = require('@babel/helper-compilation-targets'); -const getTargetsFromBrowsersListTyped = - getTargetsFromBrowsersList as unknown as GetTargetsFromBrowsersList; +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- TODO weird CJS issue +const getTargets = targetsModule.default; const browsers = browserslist('extends @guardian/browserslist-config'); -const rawTargets: Record = getTargetsFromBrowsersListTyped({ +const rawTargets: Record = getTargets({ browsers, }); diff --git a/dotcom-rendering/vite/vite.config.client.mts b/dotcom-rendering/vite/vite.config.client.mts index a54fd6c939f..3498e238907 100644 --- a/dotcom-rendering/vite/vite.config.client.mts +++ b/dotcom-rendering/vite/vite.config.client.mts @@ -3,7 +3,7 @@ import type { PluginOption, UserConfig } from 'vite'; import { mergeConfig } from 'vite'; import svgr from 'vite-plugin-svgr'; import type { Build } from '../src/lib/assets.ts'; -import { getBrowserTargets } from './browser-targets.mts'; +import { getBrowserTargets } from './browser-targets.ts'; import { sharedConfig } from './vite.config.shared.mts'; const DEV = process.env.NODE_ENV === 'development'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c8755e473b..65c28c19b08 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -368,6 +368,9 @@ importers: '@playwright/test': specifier: 1.60.0 version: 1.60.0 + '@rollup/plugin-inject': + specifier: 5.0.5 + version: 5.0.5(rollup@4.62.0) '@sentry/browser': specifier: 10.52.0 version: 10.52.0 @@ -632,6 +635,9 @@ importers: remark-rehype: specifier: 11.1.2 version: 11.1.2 + rollup-plugin-visualizer: + specifier: 7.0.1 + version: 7.0.1(rolldown@1.0.0-rc.18)(rollup@4.62.0) sanitize-html: specifier: 2.17.4 version: 2.17.4 @@ -689,25 +695,18 @@ importers: valibot: specifier: 0.28.1 version: 0.28.1 - web-vitals: - specifier: 4.2.3 - version: 4.2.3 - zod: - specifier: 4.1.12 - version: 4.1.12 - devDependencies: - '@rollup/plugin-inject': - specifier: 5.0.5 - version: 5.0.5(rollup@4.62.0) - rollup-plugin-visualizer: - specifier: 7.0.1 - version: 7.0.1(rolldown@1.0.0-rc.18)(rollup@4.62.0) vite: specifier: 8.0.11 version: 8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2) vite-plugin-svgr: specifier: 5.2.0 version: 5.2.0(rollup@4.62.0)(typescript@6.0.3)(vite@8.0.11(@types/node@24.12.4)(esbuild@0.28.1)(terser@5.46.0)(tsx@4.6.2)) + web-vitals: + specifier: 4.2.3 + version: 4.2.3 + zod: + specifier: 4.1.12 + version: 4.1.12 packages: From 5b26de93f6009b00abe460cbee0d8128d84f69db Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Tue, 14 Jul 2026 18:19:27 +0100 Subject: [PATCH 35/37] Update build-check.js to check Vite manifest format and expand checks to all manifests --- dotcom-rendering/scripts/test/build-check.js | 57 +++++++++++--------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/dotcom-rendering/scripts/test/build-check.js b/dotcom-rendering/scripts/test/build-check.js index b7c474bee1a..fa2d9a2b2f9 100644 --- a/dotcom-rendering/scripts/test/build-check.js +++ b/dotcom-rendering/scripts/test/build-check.js @@ -4,9 +4,8 @@ // 1. That the manifest files are output // 2. That the manifest files contain at least the entry points under the expected property -const { readFile } = require('node:fs').promises; -const find = require('find'); -const { BUILD_VARIANT } = require('../../webpack/bundles'); +const { access, readFile } = require('node:fs').promises; +const { BUILD_VARIANT } = require('../../webpack/bundles.ts'); /** * Loads a JSON file. @@ -25,37 +24,45 @@ const errorAndThrow = (error) => { throw new Error(error); }; -/** @type {(glob: string) => Promise} */ -const fileExists = async (glob) => { - await find.file(glob, `./dist/`, (files) => { - if (files.length === 1) { - console.log(`${glob} exists`); - } else { - errorAndThrow(`${glob} does not exist`); - } - }); +/** @type {(filePath: string) => Promise} */ +const fileExists = async (filePath) => { + try { + await access(filePath); + console.log(`${filePath} exists`); + } catch { + errorAndThrow(`${filePath} does not exist`); + } }; (async () => { - // Check that the manifest files exist - await fileExists('manifest.client.web.json'); + // Check that the manifest files return values for all the chunks + const manifestFiles = [ + './dist/manifest.client.web.json', + './dist/manifest.client.apps.json', + './dist/manifest.client.editionsCrossword.json', + ]; if (BUILD_VARIANT) { - await fileExists('manifest.client.web.variant.json'); + manifestFiles.push('./dist/manifest.client.web.variant.json'); } - // Check that the manifest files return values for all the chunks - const manifests = [await loadJsonFile('./dist/manifest.client.web.json')]; - if (BUILD_VARIANT) { - manifests.push( - await loadJsonFile('./dist/manifest.client.web.variant.json'), - ); + // Check that the manifest files exist + for (const file of manifestFiles) { + await fileExists(file); } - for (const manifest of manifests) { - if (manifest['index.js']) { - console.log(`A manifest has an index file`); + // Check that the manifest files contain an entry for the index chunk + const manifests = await Promise.all( + manifestFiles.map(async (file) => ({ + file, + data: await loadJsonFile(file), + })), + ); + + for (const { file, data } of manifests) { + if (Object.values(data).some((entry) => entry.name === 'index')) { + console.log(`${file} has an index entry`); } else { - errorAndThrow(`A manifest did not have an index file`); + errorAndThrow(`${file} did not have an index entry`); } } })(); From bd7986adc917d3e6097cc55de1c5d37db38ffa9e Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Tue, 14 Jul 2026 18:24:14 +0100 Subject: [PATCH 36/37] Update Production.dockerfile to run Vite build --- Production.dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Production.dockerfile b/Production.dockerfile index 405bd27dc9b..9fcb8e00b6a 100644 --- a/Production.dockerfile +++ b/Production.dockerfile @@ -15,8 +15,9 @@ ENV NODE_ENV=production # Build the application FROM dependencies AS builder -RUN webpack --config webpack/webpack.config.js --progress -RUN node scripts/islands/island-descriptions.mjs +RUN node vite/build.mts +# TODO VITE FIXME +# RUN node scripts/islands/island-descriptions.mjs # Finally, create the production image with only the necessary files FROM dhi.io/node:24-alpine3.23 AS application From cfbc86aef34d433207a7171f5e5d9353fa2621ce Mon Sep 17 00:00:00 2001 From: Ravi <7014230+arelra@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:25:01 +0100 Subject: [PATCH 37/37] Add visualizer plugin to all builds and output all visualisation types to dist/stats --- .github/workflows/bundle-analyser.yml | 21 ++++++++++----- dotcom-rendering/vite/visualizer.ts | 28 ++++++++++++++++++++ dotcom-rendering/vite/vite.config.client.mts | 2 ++ dotcom-rendering/vite/vite.config.server.mts | 8 +++--- dotcom-rendering/vite/vite.config.shared.mts | 10 ------- 5 files changed, 49 insertions(+), 20 deletions(-) create mode 100644 dotcom-rendering/vite/visualizer.ts diff --git a/.github/workflows/bundle-analyser.yml b/.github/workflows/bundle-analyser.yml index 2e676176987..efca5c2e526 100644 --- a/.github/workflows/bundle-analyser.yml +++ b/.github/workflows/bundle-analyser.yml @@ -18,23 +18,30 @@ jobs: run: make build working-directory: dotcom-rendering - - name: Archive code coverage results for web bundle + - name: Archive bundle analyser report for server bundle uses: actions/upload-artifact@v7 with: - name: bundle-analyser-report-web-bundles - path: dotcom-rendering/dist/stats/client.web-bundles.html + name: bundle-analyser-report-server + path: dotcom-rendering/dist/stats/server.treemap.html if-no-files-found: error - - name: Archive code coverage results for web variant bundle + - name: Archive bundle analyser report for web bundle uses: actions/upload-artifact@v7 with: name: bundle-analyser-report-web - path: dotcom-rendering/dist/stats/client.web.variant-bundles.html + path: dotcom-rendering/dist/stats/client.web.treemap.html + if-no-files-found: error + + - name: Archive bundle analyser report for web variant bundle + uses: actions/upload-artifact@v7 + with: + name: bundle-analyser-report-web-variant + path: dotcom-rendering/dist/stats/client.web.variant.treemap.html if-no-files-found: warn # Variant bundle only exists when an active experiment is going on - - name: Archive code coverage results for apps bundle + - name: Archive bundle analyser report for apps bundle uses: actions/upload-artifact@v7 with: name: bundle-analyser-report-apps - path: dotcom-rendering/dist/stats/client.apps-bundles.html + path: dotcom-rendering/dist/stats/client.apps.treemap.html if-no-files-found: error diff --git a/dotcom-rendering/vite/visualizer.ts b/dotcom-rendering/vite/visualizer.ts new file mode 100644 index 00000000000..e3b904ec37e --- /dev/null +++ b/dotcom-rendering/vite/visualizer.ts @@ -0,0 +1,28 @@ +import { visualizer } from 'rollup-plugin-visualizer'; +import type { PluginVisualizerOptions } from 'rollup-plugin-visualizer'; +import type { PluginOption } from 'vite'; + +type VisualizerOutputTypes = Exclude< + PluginVisualizerOptions['template'], + 'raw-data' | 'list' | 'markdown' | undefined +>; + +const visualizerOutputTypes = [ + 'sunburst', + 'treemap', + 'treemap-3d', + 'network', + 'flamegraph', +] as const satisfies readonly VisualizerOutputTypes[]; + +export const addVisualizerPlugins = (filename: string): PluginOption[] => { + const visualizerPlugins = visualizerOutputTypes.map( + (type: VisualizerOutputTypes) => + visualizer({ + emitFile: true, + filename: `stats/${filename}.${type}.html`, + template: type, + }), + ); + return visualizerPlugins; +}; diff --git a/dotcom-rendering/vite/vite.config.client.mts b/dotcom-rendering/vite/vite.config.client.mts index 3498e238907..f0916f7f920 100644 --- a/dotcom-rendering/vite/vite.config.client.mts +++ b/dotcom-rendering/vite/vite.config.client.mts @@ -4,6 +4,7 @@ import { mergeConfig } from 'vite'; import svgr from 'vite-plugin-svgr'; import type { Build } from '../src/lib/assets.ts'; import { getBrowserTargets } from './browser-targets.ts'; +import { addVisualizerPlugins } from './visualizer.ts'; import { sharedConfig } from './vite.config.shared.mts'; const DEV = process.env.NODE_ENV === 'development'; @@ -107,6 +108,7 @@ export const createClientConfig = (build: Build): UserConfig => { include: '**/*.svg', svgrOptions: { svgo: false }, }), + ...(DEV ? [] : addVisualizerPlugins(build)), // Buffer polyfill for apps/crossword builds // Replaces webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }) ...(isSingleChunk diff --git a/dotcom-rendering/vite/vite.config.server.mts b/dotcom-rendering/vite/vite.config.server.mts index c1ee825ce01..90259199fc9 100644 --- a/dotcom-rendering/vite/vite.config.server.mts +++ b/dotcom-rendering/vite/vite.config.server.mts @@ -3,6 +3,7 @@ import { mergeConfig } from 'vite'; import svgr from 'vite-plugin-svgr'; import { cjsPackages } from './cjs-packages.mts'; import { ssrCjsPlugin } from './ssr-cjs-plugin.mts'; +import { addVisualizerPlugins } from './visualizer.ts'; import { sharedConfig } from './vite.config.shared.mts'; const DEV = process.env.NODE_ENV === 'development'; @@ -19,13 +20,14 @@ const DEV = process.env.NODE_ENV === 'development'; */ export const serverConfig: UserConfig = mergeConfig(sharedConfig, { plugins: [ + // Wrap CJS deps with ESM shims so `import { X } from 'pkg'` works + // under Vite's SSR pipeline. Only fires for ids in `ssr.noExternal`. + ssrCjsPlugin([...cjsPackages]), svgr({ include: '**/*.svg', svgrOptions: { svgo: false }, }), - // Wrap CJS deps with ESM shims so `import { X } from 'pkg'` works - // under Vite's SSR pipeline. Only fires for ids in `ssr.noExternal`. - ssrCjsPlugin([...cjsPackages]), + ...(DEV ? [] : addVisualizerPlugins('server')), ], build: { outDir: 'dist', diff --git a/dotcom-rendering/vite/vite.config.shared.mts b/dotcom-rendering/vite/vite.config.shared.mts index 29717dff8fe..9163d77960f 100644 --- a/dotcom-rendering/vite/vite.config.shared.mts +++ b/dotcom-rendering/vite/vite.config.shared.mts @@ -1,4 +1,3 @@ -import { visualizer } from 'rollup-plugin-visualizer'; import type { UserConfig } from 'vite'; const DEV = process.env.NODE_ENV === 'development'; @@ -17,13 +16,4 @@ export const sharedConfig: UserConfig = { resolve: { extensions: ['.ts', '.tsx', '.js', '.jsx'], }, - plugins: [ - DEV - ? undefined - : visualizer({ - emitFile: true, - filename: 'a1stats.html', - template: 'treemap', - }), - ], };