diff --git a/package.json b/package.json index ab56f1de..e03b7656 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "devDependencies": { "@kazupon/eslint-config": "^0.22.0", "@kazupon/prettier-config": "^0.1.1", + "@types/debug": "^4.1.12", "@types/node": "^20.14.5", "bumpp": "^10.0.3", "eslint": "^9.22.0", diff --git a/packages/bundle-utils/tsconfig.json b/packages/bundle-utils/tsconfig.json index a7a82894..02634d93 100644 --- a/packages/bundle-utils/tsconfig.json +++ b/packages/bundle-utils/tsconfig.json @@ -46,7 +46,7 @@ // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ + "types": ["vitest/globals"], /* Type declaration files to be included in compilation. */ // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ @@ -68,6 +68,7 @@ // "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ }, "include": [ - "src/**/*" + "src/**/*", + "test" ] } diff --git a/packages/unplugin-vue-i18n/build.config.ts b/packages/unplugin-vue-i18n/build.config.ts index e5945806..ed23be5b 100644 --- a/packages/unplugin-vue-i18n/build.config.ts +++ b/packages/unplugin-vue-i18n/build.config.ts @@ -33,7 +33,16 @@ export default defineBuildConfig({ rollup: { emitCJS: true }, - externals: ['vite', 'webpack', '@rspack/core'], + externals: [ + 'ufo', + 'vite', + 'webpack', + '@rspack/core', + 'magic-string', + 'estree-walker', + '@vue/compiler-sfc', + '@jridgewell/sourcemap-codec' + ], hooks: { 'build:done': async () => { await Promise.all([ diff --git a/packages/unplugin-vue-i18n/package.json b/packages/unplugin-vue-i18n/package.json index 2cf51255..d615a981 100644 --- a/packages/unplugin-vue-i18n/package.json +++ b/packages/unplugin-vue-i18n/package.json @@ -34,24 +34,27 @@ "mlly": "^1.2.0", "picocolors": "^1.0.0", "unplugin": "^2.2.0", + "vite": "^6.2.2", "vue": "^3.4" }, "devDependencies": { + "@babel/preset-typescript": "^7.26.0", + "@rspack/core": "^1.2.8", + "@types/estree": "^1.0.0", "@types/node": "^20.14.8", - "@types/jsdom": "^16.2.5", - "@types/memory-fs": "^0.3.2", - "@types/debug": "^4.1.5", - "@rspack/core": "^1.2.7", - "@intlify/core-base": "next", - "vite": "^6.2.2", "@vitejs/plugin-vue": "^5.2.3", - "jsdom": "^25.0.1", + "@vue/compiler-sfc": "^3.5.13", + "estree-walker": "^2.0.2", + "jsdom": "^26.0.0", + "magic-string": "^0.30.17", "memory-fs": "^0.5.0", - "vue-loader": "^16.3.0", + "rollup": "^4.36.0", "ts-loader": "^9.5.2", + "ufo": "^1.5.4", "unbuild": "^2.0.0", - "webpack": "^5.88.2", - "webpack-merge": "^5.9.0" + "vue-loader": "^16.3.0", + "webpack": "^5.92.0", + "webpack-merge": "^6.0.1" }, "engines": { "node": ">= 20" diff --git a/packages/unplugin-vue-i18n/src/core/auto-declare.ts b/packages/unplugin-vue-i18n/src/core/auto-declare.ts new file mode 100644 index 00000000..0b7ee6c4 --- /dev/null +++ b/packages/unplugin-vue-i18n/src/core/auto-declare.ts @@ -0,0 +1,293 @@ +/** + * This code is adapted from the composable keys transformation in Nuxt: + * - original code url: https://github.com/nuxt/nuxt/blob/a80d1a0d6349bf1003666fc79a513c0d7370c931/packages/vite/src/plugins/composable-keys.ts + * - author: Nuxt Framework Team + * - license: MIT + */ + +import { parse as parseSFC } from '@vue/compiler-sfc' +import createDebug from 'debug' +import type { CallExpression, Pattern, Program } from 'estree' +import { walk } from 'estree-walker' +import MagicString from 'magic-string' +import { pathToFileURL } from 'node:url' +import { parseQuery, parseURL } from 'ufo' +import { UnpluginOptions } from 'unplugin' +import { resolveNamespace } from '../utils' +const debug = createDebug(resolveNamespace('auto-declare')) + +const TRANSLATION_FUNCTIONS = ['$t', '$rt', '$d', '$n', '$tm', '$te'] +const TRANSLATION_FUNCTIONS_RE = /\$(t|rt|d|n|tm|te)\s*\(\s*/ +const TRANSLATION_FUNCTIONS_MAP: Record<(typeof TRANSLATION_FUNCTIONS)[number], string> = { + $t: 't: $t', + $rt: 'rt: $rt', + $d: 'd: $d', + $n: 'n: $n', + $tm: 'tm: $tm', + $te: 'te: $te' +} + +// from https://github.com/nuxt/nuxt/blob/a80d1a0d6349bf1003666fc79a513c0d7370c931/packages/nuxt/src/core/utils/plugins.ts#L4-L35 +function isVue(id: string, opts: { type?: Array<'template' | 'script' | 'style'> } = {}) { + // Bare `.vue` file (in Vite) + const { search } = parseURL(decodeURIComponent(pathToFileURL(id).href)) + if (id.endsWith('.vue') && !search) { + return true + } + + if (!search) { + return false + } + + const query = parseQuery(search) + + // Component async/lazy wrapper + if (query.nuxt_component) { + return false + } + + // Macro + if (query.macro && (search === '?macro=true' || !opts.type || opts.type.includes('script'))) { + return true + } + + // Non-Vue or Styles + const type = 'setup' in query ? 'script' : (query.type as 'script' | 'template' | 'style') + if (!('vue' in query) || (opts.type && !opts.type.includes(type))) { + return false + } + + // Query `?vue&type=template` (in Webpack or external template) + return true +} + +export function autoDeclarePlugin(options: { sourcemap: boolean }): UnpluginOptions { + return { + name: resolveNamespace('auto-declare'), + enforce: 'pre', + + transformInclude(id) { + return isVue(id, { type: ['script'] }) + }, + + transform(code, id) { + debug('transform', id) + + // only transform if translation functions are present + const script = extractScriptContent(code) + if (!script || !TRANSLATION_FUNCTIONS_RE.test(script)) { + return + } + + // only transform ` + ].join('\n'), + 'test-file.vue' + ) + + expect(normalizeResult(res).code).toMatchInlineSnapshot(` + "" + `) + }) + + test('skips existing declarations', async () => { + const plugin = autoDeclarePlugin({ sourcemap: false }) + const transformer = plugin.transform!.bind({ parse: parseAst } as any) + const res = await transformer( + [ + `` + ].join('\n'), + 'test-file.vue' + ) + + expect(normalizeResult(res).code).toMatchInlineSnapshot(` + "" + `) + }) +}) + +// }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d809376..c27d5e71 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,10 +10,13 @@ importers: devDependencies: '@kazupon/eslint-config': specifier: ^0.22.0 - version: 0.22.0(66409cf96e6462da6e2ac9b460208329) + version: 0.22.0(5cb2baf4da672190d8b0817819629ed8) '@kazupon/prettier-config': specifier: ^0.1.1 version: 0.1.1 + '@types/debug': + specifier: ^4.1.12 + version: 4.1.12 '@types/node': specifier: ^20.14.5 version: 20.14.5 @@ -58,7 +61,7 @@ importers: version: 8.26.1(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2) vitest: specifier: ^3.0.8 - version: 3.0.8(@types/debug@4.1.12)(@types/node@20.14.5)(jiti@2.4.0)(jsdom@25.0.1)(terser@5.31.1)(yaml@2.7.0) + version: 3.0.8(@types/debug@4.1.12)(@types/node@20.14.5)(jiti@2.4.0)(jsdom@26.0.0)(terser@5.31.1)(yaml@2.7.0) examples/rspack: dependencies: @@ -74,7 +77,7 @@ importers: devDependencies: '@rspack/cli': specifier: ^1.2.7 - version: 1.2.7(@rspack/core@1.2.7)(@types/express@4.17.21)(webpack@5.92.0) + version: 1.2.7(@rspack/core@1.2.8)(@types/express@4.17.21)(webpack@5.92.0) vue-loader: specifier: ^16.3.0 version: 16.8.3(@vue/compiler-sfc@3.5.13)(vue@3.5.13(typescript@5.8.2))(webpack@5.92.0) @@ -185,7 +188,7 @@ importers: version: 12.0.0-alpha.2 '@rollup/pluginutils': specifier: ^5.1.0 - version: 5.1.0(rollup@3.29.4) + version: 5.1.0(rollup@4.36.0) debug: specifier: ^4.3.3 version: 4.3.5 @@ -210,6 +213,9 @@ importers: unplugin: specifier: ^2.2.0 version: 2.2.0 + vite: + specifier: ^6.2.2 + version: 6.2.2(@types/node@20.17.6)(jiti@2.4.2)(terser@5.31.1)(yaml@2.7.0) vue: specifier: ^3.4 version: 3.4.29(typescript@5.8.2) @@ -217,51 +223,57 @@ importers: specifier: ^12.0.0-alpha.2 version: 12.0.0-alpha.2(vue@3.4.29(typescript@5.8.2)) devDependencies: - '@intlify/core-base': - specifier: next - version: 12.0.0-alpha.2 + '@babel/preset-typescript': + specifier: ^7.26.0 + version: 7.26.0(@babel/core@7.26.10) '@rspack/core': - specifier: ^1.2.7 - version: 1.2.7 - '@types/debug': - specifier: ^4.1.5 - version: 4.1.12 - '@types/jsdom': - specifier: ^16.2.5 - version: 16.2.15 - '@types/memory-fs': - specifier: ^0.3.2 - version: 0.3.7 + specifier: ^1.2.8 + version: 1.2.8 + '@types/estree': + specifier: ^1.0.0 + version: 1.0.6 '@types/node': specifier: ^20.14.8 version: 20.17.6 '@vitejs/plugin-vue': specifier: ^5.2.3 version: 5.2.3(vite@6.2.2(@types/node@20.17.6)(jiti@2.4.2)(terser@5.31.1)(yaml@2.7.0))(vue@3.4.29(typescript@5.8.2)) + '@vue/compiler-sfc': + specifier: ^3.5.13 + version: 3.5.13 + estree-walker: + specifier: ^2.0.2 + version: 2.0.2 jsdom: - specifier: ^25.0.1 - version: 25.0.1 + specifier: ^26.0.0 + version: 26.0.0 + magic-string: + specifier: ^0.30.17 + version: 0.30.17 memory-fs: specifier: ^0.5.0 version: 0.5.0 + rollup: + specifier: ^4.36.0 + version: 4.36.0 ts-loader: specifier: ^9.5.2 version: 9.5.2(typescript@5.8.2)(webpack@5.92.0) + ufo: + specifier: ^1.5.4 + version: 1.5.4 unbuild: specifier: ^2.0.0 version: 2.0.0(typescript@5.8.2) - vite: - specifier: ^6.2.2 - version: 6.2.2(@types/node@20.17.6)(jiti@2.4.2)(terser@5.31.1)(yaml@2.7.0) vue-loader: specifier: ^16.3.0 version: 16.8.3(@vue/compiler-sfc@3.5.13)(vue@3.4.29(typescript@5.8.2))(webpack@5.92.0) webpack: - specifier: ^5.88.2 + specifier: ^5.92.0 version: 5.92.0(webpack-cli@5.1.4) webpack-merge: - specifier: ^5.9.0 - version: 5.10.0 + specifier: ^6.0.1 + version: 6.0.1 packages/unplugin-vue-i18n/test/fixtures/packages: {} @@ -276,6 +288,9 @@ packages: '@antfu/utils@8.1.1': resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + '@asamuzakjp/css-color@3.1.1': + resolution: {integrity: sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==} + '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} @@ -430,6 +445,34 @@ packages: resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} engines: {node: '>=6.9.0'} + '@csstools/color-helpers@5.0.2': + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.2': + resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-color-parser@3.0.8': + resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -1441,143 +1484,238 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.36.0': + resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.34.8': resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.36.0': + resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.34.8': resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.36.0': + resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.34.8': resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.36.0': + resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.34.8': resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.36.0': + resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.34.8': resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.36.0': + resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.36.0': + resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.34.8': resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.36.0': + resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.34.8': resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.36.0': + resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.34.8': resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.36.0': + resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} cpu: [loong64] os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.36.0': + resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': + resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.34.8': resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.36.0': + resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.34.8': resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.36.0': + resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.34.8': resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.36.0': + resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.34.8': resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.36.0': + resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.34.8': resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.36.0': + resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.34.8': resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.36.0': + resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.34.8': resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} cpu: [x64] os: [win32] - '@rspack/binding-darwin-arm64@1.2.7': - resolution: {integrity: sha512-dT5eSMTknZaI8Djmz8KnaWM68rjZuBZwsKyF144o+ZSJM55vgiNXyL0lQYB8mX9nR3Gck+jKuGUAT2W/EF/t5Q==} + '@rollup/rollup-win32-x64-msvc@4.36.0': + resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==} + cpu: [x64] + os: [win32] + + '@rspack/binding-darwin-arm64@1.2.8': + resolution: {integrity: sha512-bDlrlroY3iMlzna/3i1gD6eRmhJW2zRyC3Ov6aR1micshVQ9RteigYZWkjZuQfyC5Z8dCcLUQJVojz+pqp0JXg==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.2.7': - resolution: {integrity: sha512-5n8IhKBxH71d4BUIvyzTwSOAOKNneLPJwLIphSPNIbCMGjLI59/EVpxSQ/AAUfyMkqOs635NNCn0eGQVuzpI/w==} + '@rspack/binding-darwin-x64@1.2.8': + resolution: {integrity: sha512-0/qOVbMuzZ+WbtDa4TbH46R4vph/W6MHcXbrXDO+vpdTMFDVJ64DnZXT7aqvGcY+7vTCIGm0GT+6ooR4KaIX8A==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.2.7': - resolution: {integrity: sha512-DTtFBJmgQQrVWjbklpgJDr3kE9Uf1fHsPh+1GVslsBuyn+o4O7JslrnjuVsQCYKoiEg0Lg4ZPQmwnhJLHssZ5A==} + '@rspack/binding-linux-arm64-gnu@1.2.8': + resolution: {integrity: sha512-En/SMl45s19iUVb1/ZDFQvFDxIjnlfk7yqV3drMWWAL5HSgksNejaTIFTO52aoohIBbmwuk5wSGcbU0G0IFiPg==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.2.7': - resolution: {integrity: sha512-01/OoQQF9eyDvRKkxj4DzCznfGZIvnzI8qOsrv+M7VBm8FLoKpb3hygXixaGQOXmNL42XTh61qjgm++fBu6aUA==} + '@rspack/binding-linux-arm64-musl@1.2.8': + resolution: {integrity: sha512-N1oZsXfJ9VLLcK7p1PS65cxLYQCZ7iqHW2OP6Ew2+hlz/d1hzngxgzrtZMCXFOHXDvTzVu5ff6jGS2v7+zv2tA==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.2.7': - resolution: {integrity: sha512-lUOAUq0YSsofCXsP6XnlgfH0ZRDZ2X2XqXLXYjqf4xkSxCl5eBmE0EQYjAHF4zjUvU5rVx4a4bDLWv7+t3bOHg==} + '@rspack/binding-linux-x64-gnu@1.2.8': + resolution: {integrity: sha512-BdPaepoLKuaVwip4QK/nGqNi1xpbCWSxiycPbKRrGqKgt/QGihxxFgiqr4EpWQVIJNIMy4nCsg4arO0+H1KWGQ==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.2.7': - resolution: {integrity: sha512-ZrPXfgT30p4DlydYavaTHiluxHkWvZHt7K4q7qNyTfYYowG6jRGwWi/PATdugNICGv027Wsh5nzEO4o27Iuhwg==} + '@rspack/binding-linux-x64-musl@1.2.8': + resolution: {integrity: sha512-GFv0Bod268OcXIcjeLoPlK0oz8rClEIxIRFkz+ejhbvfCwRJ+Fd+EKaaKQTBfZQujPqc0h2GctIF25nN5pFTmA==} cpu: [x64] os: [linux] - '@rspack/binding-win32-arm64-msvc@1.2.7': - resolution: {integrity: sha512-1OzzM+OUSWX39XYcDfxJ8bGX5vNNrRejCMGotBEdP+uQ3KMWCPz0G4KRc3QIjghaLIYk3ofd83hcfUxyk/2Xog==} + '@rspack/binding-win32-arm64-msvc@1.2.8': + resolution: {integrity: sha512-aEU+uJdbvJJGrzzAsjbjrPeNbG/bcG8JoXK2kSsUB+/sWHTIkHX0AQ3oX3aV/lcLKgZWrUxLAfLoCXEnIHMEyQ==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.2.7': - resolution: {integrity: sha512-VWlDCV9kDtijk9GK6ZtBQmYoVzKGpnrJB0iI3d2gIEa/2NwikJ89bLMFE4dFx8UNH3p/sSyb5pmPOQnbudFK7Q==} + '@rspack/binding-win32-ia32-msvc@1.2.8': + resolution: {integrity: sha512-GHYzNOSoiLyG9elLTmMqADJMQzjll+co4irp5AgZ+KHG9EVq0qEHxDqDIJxZnUA15U8JDvCgo6YAo3T0BFEL0Q==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.2.7': - resolution: {integrity: sha512-l/sTdeMsQF1a1aB79cWykDNRZG6nkUA0biJo2/sEARP3ijdr8TuwUdirp2JRDmZfQJkoJnQ2un9y9qyW+TIZzA==} + '@rspack/binding-win32-x64-msvc@1.2.8': + resolution: {integrity: sha512-EigKLhKLH1kfv1e/ZgXuSKlIjkbyneJtiLbNDz7EeEVFGV1XMM6bsCea1sb2WOxsPYiOX4Q5JmR1j1KGrZS/LA==} cpu: [x64] os: [win32] - '@rspack/binding@1.2.7': - resolution: {integrity: sha512-QH+kxkG0I9C6lmlwgBUDFsy24ihXMGG5lfiNtQilk4CyBN+AgSWFENcYrnkUaBioZAvMBznQLiccV3X0JeH9iQ==} + '@rspack/binding@1.2.8': + resolution: {integrity: sha512-T3FMB3N9P1AbSAryfkSRJkPtmeSYs/Gj9zUZoPz1ckPEIcWZmpUOQbJylldjbw5waxtCL1haHNbi0pcSvxiaJw==} '@rspack/cli@1.2.7': resolution: {integrity: sha512-nUUZuwnSEORqPcknhP+gkQh9YZqeOlmFKJA1YRnZ5QQkzugCehV+xzVjO+Ezd8R1CSMpqdAQq7+pFZ8rpaRymA==} @@ -1589,8 +1727,8 @@ packages: '@rspack/tracing': optional: true - '@rspack/core@1.2.7': - resolution: {integrity: sha512-Vg7ySflnqI1nNOBPd6VJkQozWADssxn3einbxa9OqDVAB+dGSj8qihTs6rlaTSewidoaYTGIAiTMHO2y+61qqQ==} + '@rspack/core@1.2.8': + resolution: {integrity: sha512-ppj3uQQtkhgrYDLrUqb33YbpNEZCpAudpfVuOHGsvUrAnu1PijbfJJymoA5ZvUhM+HNMvPI5D1ie97TXyb0UVg==} engines: {node: '>=16.0.0'} peerDependencies: '@rspack/tracing': ^1.x @@ -1684,9 +1822,6 @@ packages: '@types/http-proxy@1.17.14': resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} - '@types/jsdom@16.2.15': - resolution: {integrity: sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1696,9 +1831,6 @@ packages: '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/memory-fs@0.3.7': - resolution: {integrity: sha512-wCRjyqBTpCsnPWDjYkG8x1Ym0ylHUXu2loom+CIXoP9syXvLAROnfghoNKAMSxvetmRXThMd1XSK2AffVT1WMQ==} - '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} @@ -1714,9 +1846,6 @@ packages: '@types/node@20.17.6': resolution: {integrity: sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==} - '@types/parse5@6.0.3': - resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - '@types/qs@6.9.15': resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} @@ -1744,9 +1873,6 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -2023,6 +2149,10 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -2479,8 +2609,8 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - cssstyle@4.1.0: - resolution: {integrity: sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==} + cssstyle@4.3.0: + resolution: {integrity: sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==} engines: {node: '>=18'} csstype@3.1.3: @@ -3315,8 +3445,8 @@ packages: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} - https-proxy-agent@7.0.5: - resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} human-signals@2.1.0: @@ -3585,11 +3715,11 @@ packages: resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} engines: {node: '>=12.0.0'} - jsdom@25.0.1: - resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} + jsdom@26.0.0: + resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} engines: {node: '>=18'} peerDependencies: - canvas: ^2.11.2 + canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: true @@ -4033,8 +4163,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nwsapi@2.2.13: - resolution: {integrity: sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==} + nwsapi@2.2.19: + resolution: {integrity: sha512-94bcyI3RsqiZufXjkr3ltkI86iEl+I7uiHVDtcq9wJUTwYQJ5odHDeSzkkrRzi80jJ8MaeZgqKjH1bAWAFw9bA==} nypm@0.6.0: resolution: {integrity: sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg==} @@ -4629,8 +4759,13 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rrweb-cssom@0.7.1: - resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + rollup@4.36.0: + resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} @@ -5031,8 +5166,8 @@ packages: resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} engines: {node: '>=16'} - tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + tr46@5.1.0: + resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} engines: {node: '>=18'} tree-dump@1.0.2: @@ -5443,6 +5578,10 @@ packages: resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} engines: {node: '>=10.0.0'} + webpack-merge@6.0.1: + resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} + engines: {node: '>=18.0.0'} + webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -5476,8 +5615,8 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} which-boxed-primitive@1.0.2: @@ -5612,6 +5751,14 @@ snapshots: '@antfu/utils@8.1.1': {} + '@asamuzakjp/css-color@3.1.1': + dependencies: + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + lru-cache: 10.4.3 + '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 @@ -5826,6 +5973,26 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@csstools/color-helpers@5.0.2': {} + + '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + '@discoveryjs/json-ext@0.5.7': {} '@emnapi/core@1.3.1': @@ -6219,7 +6386,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@kazupon/eslint-config@0.22.0(66409cf96e6462da6e2ac9b460208329)': + '@kazupon/eslint-config@0.22.0(5cb2baf4da672190d8b0817819629ed8)': dependencies: '@eslint-community/eslint-plugin-eslint-comments': 4.4.1(eslint@9.22.0(jiti@2.4.0)) '@eslint/js': 9.22.0 @@ -6229,7 +6396,7 @@ snapshots: globals: 16.0.0 optionalDependencies: '@eslint/markdown': 6.2.1 - '@vitest/eslint-plugin': 1.1.7(@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2)(vitest@3.0.8(@types/debug@4.1.12)(@types/node@20.14.5)(jiti@2.4.0)(jsdom@25.0.1)(terser@5.31.1)(yaml@2.7.0)) + '@vitest/eslint-plugin': 1.1.7(@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2)(vitest@3.0.8(@types/debug@4.1.12)(@types/node@20.14.5)(jiti@2.4.0)(jsdom@26.0.0)(terser@5.31.1)(yaml@2.7.0)) eslint-config-prettier: 10.1.1(eslint@9.22.0(jiti@2.4.0)) eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2))(eslint-plugin-import@2.31.0)(eslint@9.22.0(jiti@2.4.0)) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2))(eslint-import-resolver-typescript@3.6.3)(eslint@9.22.0(jiti@2.4.0)) @@ -6515,7 +6682,7 @@ snapshots: estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.10 + magic-string: 0.30.17 optionalDependencies: rollup: 3.29.4 @@ -6539,119 +6706,184 @@ snapshots: '@rollup/plugin-replace@5.0.7(rollup@3.29.4)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - magic-string: 0.30.10 + magic-string: 0.30.17 optionalDependencies: rollup: 3.29.4 '@rollup/pluginutils@5.1.0(rollup@3.29.4)': dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: rollup: 3.29.4 + '@rollup/pluginutils@5.1.0(rollup@4.36.0)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.36.0 + '@rollup/rollup-android-arm-eabi@4.34.8': optional: true + '@rollup/rollup-android-arm-eabi@4.36.0': + optional: true + '@rollup/rollup-android-arm64@4.34.8': optional: true + '@rollup/rollup-android-arm64@4.36.0': + optional: true + '@rollup/rollup-darwin-arm64@4.34.8': optional: true + '@rollup/rollup-darwin-arm64@4.36.0': + optional: true + '@rollup/rollup-darwin-x64@4.34.8': optional: true + '@rollup/rollup-darwin-x64@4.36.0': + optional: true + '@rollup/rollup-freebsd-arm64@4.34.8': optional: true + '@rollup/rollup-freebsd-arm64@4.36.0': + optional: true + '@rollup/rollup-freebsd-x64@4.34.8': optional: true + '@rollup/rollup-freebsd-x64@4.36.0': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.36.0': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.34.8': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.36.0': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.34.8': optional: true + '@rollup/rollup-linux-arm64-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-arm64-musl@4.34.8': optional: true + '@rollup/rollup-linux-arm64-musl@4.36.0': + optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.34.8': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.34.8': optional: true + '@rollup/rollup-linux-s390x-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-x64-gnu@4.34.8': optional: true + '@rollup/rollup-linux-x64-gnu@4.36.0': + optional: true + '@rollup/rollup-linux-x64-musl@4.34.8': optional: true + '@rollup/rollup-linux-x64-musl@4.36.0': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.34.8': optional: true + '@rollup/rollup-win32-arm64-msvc@4.36.0': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.34.8': optional: true + '@rollup/rollup-win32-ia32-msvc@4.36.0': + optional: true + '@rollup/rollup-win32-x64-msvc@4.34.8': optional: true - '@rspack/binding-darwin-arm64@1.2.7': + '@rollup/rollup-win32-x64-msvc@4.36.0': + optional: true + + '@rspack/binding-darwin-arm64@1.2.8': optional: true - '@rspack/binding-darwin-x64@1.2.7': + '@rspack/binding-darwin-x64@1.2.8': optional: true - '@rspack/binding-linux-arm64-gnu@1.2.7': + '@rspack/binding-linux-arm64-gnu@1.2.8': optional: true - '@rspack/binding-linux-arm64-musl@1.2.7': + '@rspack/binding-linux-arm64-musl@1.2.8': optional: true - '@rspack/binding-linux-x64-gnu@1.2.7': + '@rspack/binding-linux-x64-gnu@1.2.8': optional: true - '@rspack/binding-linux-x64-musl@1.2.7': + '@rspack/binding-linux-x64-musl@1.2.8': optional: true - '@rspack/binding-win32-arm64-msvc@1.2.7': + '@rspack/binding-win32-arm64-msvc@1.2.8': optional: true - '@rspack/binding-win32-ia32-msvc@1.2.7': + '@rspack/binding-win32-ia32-msvc@1.2.8': optional: true - '@rspack/binding-win32-x64-msvc@1.2.7': + '@rspack/binding-win32-x64-msvc@1.2.8': optional: true - '@rspack/binding@1.2.7': + '@rspack/binding@1.2.8': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.2.7 - '@rspack/binding-darwin-x64': 1.2.7 - '@rspack/binding-linux-arm64-gnu': 1.2.7 - '@rspack/binding-linux-arm64-musl': 1.2.7 - '@rspack/binding-linux-x64-gnu': 1.2.7 - '@rspack/binding-linux-x64-musl': 1.2.7 - '@rspack/binding-win32-arm64-msvc': 1.2.7 - '@rspack/binding-win32-ia32-msvc': 1.2.7 - '@rspack/binding-win32-x64-msvc': 1.2.7 - - '@rspack/cli@1.2.7(@rspack/core@1.2.7)(@types/express@4.17.21)(webpack@5.92.0)': + '@rspack/binding-darwin-arm64': 1.2.8 + '@rspack/binding-darwin-x64': 1.2.8 + '@rspack/binding-linux-arm64-gnu': 1.2.8 + '@rspack/binding-linux-arm64-musl': 1.2.8 + '@rspack/binding-linux-x64-gnu': 1.2.8 + '@rspack/binding-linux-x64-musl': 1.2.8 + '@rspack/binding-win32-arm64-msvc': 1.2.8 + '@rspack/binding-win32-ia32-msvc': 1.2.8 + '@rspack/binding-win32-x64-msvc': 1.2.8 + + '@rspack/cli@1.2.7(@rspack/core@1.2.8)(@types/express@4.17.21)(webpack@5.92.0)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@rspack/core': 1.2.7 - '@rspack/dev-server': 1.0.10(@rspack/core@1.2.7)(@types/express@4.17.21)(webpack@5.92.0) + '@rspack/core': 1.2.8 + '@rspack/dev-server': 1.0.10(@rspack/core@1.2.8)(@types/express@4.17.21)(webpack@5.92.0) colorette: 2.0.20 exit-hook: 4.0.0 interpret: 3.1.1 @@ -6667,16 +6899,16 @@ snapshots: - webpack - webpack-cli - '@rspack/core@1.2.7': + '@rspack/core@1.2.8': dependencies: '@module-federation/runtime-tools': 0.8.4 - '@rspack/binding': 1.2.7 + '@rspack/binding': 1.2.8 '@rspack/lite-tapable': 1.0.1 caniuse-lite: 1.0.30001702 - '@rspack/dev-server@1.0.10(@rspack/core@1.2.7)(@types/express@4.17.21)(webpack@5.92.0)': + '@rspack/dev-server@1.0.10(@rspack/core@1.2.8)(@types/express@4.17.21)(webpack@5.92.0)': dependencies: - '@rspack/core': 1.2.7 + '@rspack/core': 1.2.8 chokidar: 3.6.0 connect-history-api-fallback: 2.0.0 express: 4.19.2 @@ -6763,7 +6995,7 @@ snapshots: '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/eslint@9.6.1': dependencies: @@ -6794,12 +7026,6 @@ snapshots: dependencies: '@types/node': 20.17.6 - '@types/jsdom@16.2.15': - dependencies: - '@types/node': 20.17.6 - '@types/parse5': 6.0.3 - '@types/tough-cookie': 4.0.5 - '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': @@ -6810,10 +7036,6 @@ snapshots: '@types/unist': 3.0.3 optional: true - '@types/memory-fs@0.3.7': - dependencies: - '@types/node': 20.17.6 - '@types/mime@1.3.5': {} '@types/ms@0.7.34': {} @@ -6830,8 +7052,6 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/parse5@6.0.3': {} - '@types/qs@6.9.15': {} '@types/range-parser@1.2.7': {} @@ -6861,8 +7081,6 @@ snapshots: dependencies: '@types/node': 20.17.6 - '@types/tough-cookie@4.0.5': {} - '@types/unist@3.0.3': optional: true @@ -6961,13 +7179,13 @@ snapshots: vite: 6.2.2(@types/node@20.17.6)(jiti@2.4.2)(terser@5.31.1)(yaml@2.7.0) vue: 3.5.13(typescript@5.8.2) - '@vitest/eslint-plugin@1.1.7(@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2)(vitest@3.0.8(@types/debug@4.1.12)(@types/node@20.14.5)(jiti@2.4.0)(jsdom@25.0.1)(terser@5.31.1)(yaml@2.7.0))': + '@vitest/eslint-plugin@1.1.7(@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2)(vitest@3.0.8(@types/debug@4.1.12)(@types/node@20.14.5)(jiti@2.4.0)(jsdom@26.0.0)(terser@5.31.1)(yaml@2.7.0))': dependencies: '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.0))(typescript@5.8.2) eslint: 9.22.0(jiti@2.4.0) optionalDependencies: typescript: 5.8.2 - vitest: 3.0.8(@types/debug@4.1.12)(@types/node@20.14.5)(jiti@2.4.0)(jsdom@25.0.1)(terser@5.31.1)(yaml@2.7.0) + vitest: 3.0.8(@types/debug@4.1.12)(@types/node@20.14.5)(jiti@2.4.0)(jsdom@26.0.0)(terser@5.31.1)(yaml@2.7.0) optional: true '@vitest/expect@3.0.8': @@ -7012,7 +7230,7 @@ snapshots: '@vue/compiler-core@3.4.29': dependencies: - '@babel/parser': 7.24.7 + '@babel/parser': 7.26.10 '@vue/shared': 3.4.29 entities: 4.5.0 estree-walker: 2.0.2 @@ -7244,6 +7462,8 @@ snapshots: transitivePeerDependencies: - supports-color + agent-base@7.1.3: {} + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 @@ -7518,7 +7738,7 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.23.1 - caniuse-lite: 1.0.30001636 + caniuse-lite: 1.0.30001702 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 @@ -7767,16 +7987,17 @@ snapshots: dependencies: css-tree: 2.2.1 - cssstyle@4.1.0: + cssstyle@4.3.0: dependencies: - rrweb-cssom: 0.7.1 + '@asamuzakjp/css-color': 3.1.1 + rrweb-cssom: 0.8.0 csstype@3.1.3: {} data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 + whatwg-url: 14.2.0 data-view-buffer@1.0.1: dependencies: @@ -8835,9 +9056,9 @@ snapshots: transitivePeerDependencies: - debug - https-proxy-agent@7.0.5: + https-proxy-agent@7.0.6: dependencies: - agent-base: 7.1.1 + agent-base: 7.1.3 debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -8992,7 +9213,7 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 is-regex@1.1.4: dependencies: @@ -9077,19 +9298,19 @@ snapshots: jsdoc-type-pratt-parser@4.1.0: optional: true - jsdom@25.0.1: + jsdom@26.0.0: dependencies: - cssstyle: 4.1.0 + cssstyle: 4.3.0 data-urls: 5.0.0 decimal.js: 10.4.3 form-data: 4.0.1 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 + https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.13 + nwsapi: 2.2.19 parse5: 7.2.1 - rrweb-cssom: 0.7.1 + rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 5.0.0 @@ -9097,7 +9318,7 @@ snapshots: webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 + whatwg-url: 14.2.0 ws: 8.18.0 xml-name-validator: 5.0.0 transitivePeerDependencies: @@ -9746,7 +9967,7 @@ snapshots: dependencies: boolbase: 1.0.0 - nwsapi@2.2.13: {} + nwsapi@2.2.19: {} nypm@0.6.0: dependencies: @@ -10350,7 +10571,7 @@ snapshots: rollup-plugin-dts@6.1.1(rollup@3.29.4)(typescript@5.8.2): dependencies: - magic-string: 0.30.10 + magic-string: 0.30.17 rollup: 3.29.4 typescript: 5.8.2 optionalDependencies: @@ -10358,7 +10579,7 @@ snapshots: rollup-plugin-dts@6.1.1(rollup@4.34.8)(typescript@5.8.2): dependencies: - magic-string: 0.30.10 + magic-string: 0.30.17 rollup: 4.34.8 typescript: 5.8.2 optionalDependencies: @@ -10393,7 +10614,32 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.34.8 fsevents: 2.3.3 - rrweb-cssom@0.7.1: {} + rollup@4.36.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.36.0 + '@rollup/rollup-android-arm64': 4.36.0 + '@rollup/rollup-darwin-arm64': 4.36.0 + '@rollup/rollup-darwin-x64': 4.36.0 + '@rollup/rollup-freebsd-arm64': 4.36.0 + '@rollup/rollup-freebsd-x64': 4.36.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.36.0 + '@rollup/rollup-linux-arm-musleabihf': 4.36.0 + '@rollup/rollup-linux-arm64-gnu': 4.36.0 + '@rollup/rollup-linux-arm64-musl': 4.36.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.36.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.36.0 + '@rollup/rollup-linux-riscv64-gnu': 4.36.0 + '@rollup/rollup-linux-s390x-gnu': 4.36.0 + '@rollup/rollup-linux-x64-gnu': 4.36.0 + '@rollup/rollup-linux-x64-musl': 4.36.0 + '@rollup/rollup-win32-arm64-msvc': 4.36.0 + '@rollup/rollup-win32-ia32-msvc': 4.36.0 + '@rollup/rollup-win32-x64-msvc': 4.36.0 + fsevents: 2.3.3 + + rrweb-cssom@0.8.0: {} run-applescript@7.0.0: {} @@ -10819,7 +11065,7 @@ snapshots: dependencies: tldts: 6.1.58 - tr46@5.0.0: + tr46@5.1.0: dependencies: punycode: 2.3.1 @@ -11113,7 +11359,7 @@ snapshots: dependencies: esbuild: 0.25.1 postcss: 8.5.3 - rollup: 4.34.8 + rollup: 4.36.0 optionalDependencies: '@types/node': 20.14.5 fsevents: 2.3.3 @@ -11125,7 +11371,7 @@ snapshots: dependencies: esbuild: 0.25.1 postcss: 8.5.3 - rollup: 4.34.8 + rollup: 4.36.0 optionalDependencies: '@types/node': 20.17.6 fsevents: 2.3.3 @@ -11133,7 +11379,7 @@ snapshots: terser: 5.31.1 yaml: 2.7.0 - vitest@3.0.8(@types/debug@4.1.12)(@types/node@20.14.5)(jiti@2.4.0)(jsdom@25.0.1)(terser@5.31.1)(yaml@2.7.0): + vitest@3.0.8(@types/debug@4.1.12)(@types/node@20.14.5)(jiti@2.4.0)(jsdom@26.0.0)(terser@5.31.1)(yaml@2.7.0): dependencies: '@vitest/expect': 3.0.8 '@vitest/mocker': 3.0.8(vite@6.2.2(@types/node@20.14.5)(jiti@2.4.0)(terser@5.31.1)(yaml@2.7.0)) @@ -11158,7 +11404,7 @@ snapshots: optionalDependencies: '@types/debug': 4.1.12 '@types/node': 20.14.5 - jsdom: 25.0.1 + jsdom: 26.0.0 transitivePeerDependencies: - jiti - less @@ -11404,6 +11650,12 @@ snapshots: flat: 5.0.2 wildcard: 2.0.1 + webpack-merge@6.0.1: + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + webpack-sources@3.2.3: {} webpack-virtual-modules@0.6.2: {} @@ -11455,9 +11707,9 @@ snapshots: whatwg-mimetype@4.0.0: {} - whatwg-url@14.0.0: + whatwg-url@14.2.0: dependencies: - tr46: 5.0.0 + tr46: 5.1.0 webidl-conversions: 7.0.0 which-boxed-primitive@1.0.2: