From 1320cc3d6a6fba03987a9b12703e88d16b2fff0f Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Sun, 8 Feb 2026 01:57:37 +0900 Subject: [PATCH 01/20] enhanced support for cross-browser --- rspack.config.ts | 12 +++++++++--- scripts/pack.js | 13 ++++++++++--- src/pkg/utils/monaco-editor/index.ts | 12 ++++++++---- src/pkg/utils/monaco-editor/utils.ts | 23 +++++++++++++++++++++++ 4 files changed, 50 insertions(+), 10 deletions(-) diff --git a/rspack.config.ts b/rspack.config.ts index 6409878d5..4a3b90857 100644 --- a/rspack.config.ts +++ b/rspack.config.ts @@ -62,7 +62,12 @@ export default defineConfig({ }, output: { path: `${dist}/ext/src`, - filename: "[name].js", + filename(pathData, _assetInfo) { + if (pathData.runtime === "ts.worker") { + return "[name].js.bin"; + } + return "[name].js"; + }, clean: true, }, resolve: { @@ -229,6 +234,7 @@ export default defineConfig({ optimization: { minimizer: [ new rspack.SwcJsMinimizerRspackPlugin({ + test: /\.[cm]?js(\.bin)?(\?.*)?$/, minimizerOptions: { minify: !isDev, mangle: { @@ -243,7 +249,7 @@ export default defineConfig({ passes: 2, drop_console: false, drop_debugger: !isDev, - ecma: 2020, + ecma: 2022, arrows: true, dead_code: true, ie8: false, @@ -261,7 +267,7 @@ export default defineConfig({ format: { comments: false, beautify: false, - ecma: 2020, + ecma: 2022, }, }, }), diff --git a/scripts/pack.js b/scripts/pack.js index 26d0f79a2..85f66307a 100644 --- a/scripts/pack.js +++ b/scripts/pack.js @@ -89,6 +89,15 @@ firefoxManifest.browser_specific_settings = { // https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/userScripts#browser_compatibility // Firefox 136 (Released 2025-03-04) strict_min_version: "136.0", + data_collection_permissions: { + required: [ + "none", // 没有必须传送至第三方的资料。安装转页没有记录用户何时何地安装了什么。 + ], + optional: [ + "authenticationInfo", // 使用 Cloud Backup / Import 时,有传送用户的资料至第三方作登入验证 + "personallyIdentifyingInfo", // 使用 电邮 或 帐密 让第三方识别个人身份进行 Cloud Backup / Import + ], + }, }, }; @@ -126,10 +135,8 @@ firefox.file("manifest.json", JSON.stringify(firefoxManifest)); await Promise.all([ addDir(chrome, "./dist/ext", "", ["manifest.json"]), - addDir(firefox, "./dist/ext", "", ["manifest.json", "ts.worker.js"]), + addDir(firefox, "./dist/ext", "", ["manifest.json"]), ]); -// 添加ts.worker.js名字为gz -firefox.file("src/ts.worker.js.gz", await fs.readFile("./dist/ext/src/ts.worker.js", { encoding: "utf8" })); // 导出zip包 chrome diff --git a/src/pkg/utils/monaco-editor/index.ts b/src/pkg/utils/monaco-editor/index.ts index 6c91de174..8a055c44f 100644 --- a/src/pkg/utils/monaco-editor/index.ts +++ b/src/pkg/utils/monaco-editor/index.ts @@ -1,7 +1,7 @@ import { globalCache, systemConfig } from "@App/pages/store/global"; import EventEmitter from "eventemitter3"; import { languages } from "monaco-editor"; -import { findGlobalInsertionInfo, updateGlobalCommentLine } from "./utils"; +import { findGlobalInsertionInfo, getEditorWorkerPromise, getTsWorkerPromise, updateGlobalCommentLine } from "./utils"; // 注册eslint const linterWorker = new Worker("/src/linter.worker.js"); @@ -455,12 +455,16 @@ type Prompt = (typeof langs)["zh-CN"]["prompt"]; type LangEntry = (typeof langs)["zh-CN"]; export default function registerEditor() { + const editorWorker = getEditorWorkerPromise(); + const tsWorkerPromise = getTsWorkerPromise(); window.MonacoEnvironment = { - getWorkerUrl(moduleId: any, label: any) { + // https://microsoft.github.io/monaco-editor/typedoc/interfaces/Environment.html#getWorker + // Returns Worker | Promise + getWorker(workerId: string, label: string) { if (label === "typescript" || label === "javascript") { - return "/src/ts.worker.js"; + return tsWorkerPromise; } - return "/src/editor.worker.js"; + return editorWorker; }, }; function asLangEntry(key: T) { diff --git a/src/pkg/utils/monaco-editor/utils.ts b/src/pkg/utils/monaco-editor/utils.ts index 978742ffb..7f0e9fc72 100644 --- a/src/pkg/utils/monaco-editor/utils.ts +++ b/src/pkg/utils/monaco-editor/utils.ts @@ -1,5 +1,28 @@ import type { editor } from "monaco-editor"; +export const getEditorWorkerPromise = () => { + return Promise.resolve( + new Worker("/src/editor.worker.js", { + credentials: "omit", + name: "editorWorker", + type: "module", + }) + ); +}; + +export const getTsWorkerPromise = () => { + return fetch(chrome.runtime.getURL(`/src/ts.worker.js.bin`)) + .then((resp) => (resp.ok ? resp.blob() : null)) + .catch(() => null) + .then(async (blob) => { + if (blob) { + const blobUrl = URL.createObjectURL(new Blob([blob], { type: "text/javascript" })); + return new Worker(blobUrl, { credentials: "omit", name: "tsWorker", type: "module" }); + } + throw new Error("no ts.worker.js"); + }); +}; + export const findGlobalInsertionInfo = (model: editor.ITextModel) => { const lineCount = model.getLineCount(); From 75e9813cd69c366a009c0437b29d329825193c4c Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Sun, 8 Feb 2026 22:33:02 +0900 Subject: [PATCH 02/20] Update utils.ts --- src/pkg/utils/monaco-editor/utils.ts | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/pkg/utils/monaco-editor/utils.ts b/src/pkg/utils/monaco-editor/utils.ts index 7f0e9fc72..9b9c3b7d6 100644 --- a/src/pkg/utils/monaco-editor/utils.ts +++ b/src/pkg/utils/monaco-editor/utils.ts @@ -10,17 +10,21 @@ export const getEditorWorkerPromise = () => { ); }; -export const getTsWorkerPromise = () => { - return fetch(chrome.runtime.getURL(`/src/ts.worker.js.bin`)) - .then((resp) => (resp.ok ? resp.blob() : null)) - .catch(() => null) - .then(async (blob) => { - if (blob) { - const blobUrl = URL.createObjectURL(new Blob([blob], { type: "text/javascript" })); - return new Worker(blobUrl, { credentials: "omit", name: "tsWorker", type: "module" }); - } - throw new Error("no ts.worker.js"); - }); +export const getTsWorkerPromise = (): Promise => { + return new Promise((resolve, reject) => { + fetch(chrome.runtime.getURL(`/src/ts.worker.js.bin`)) + .then((resp) => (resp.ok ? resp.blob() : null)) + .catch(() => null) + .then((blob) => { + if (blob) { + const blobUrl = URL.createObjectURL(new Blob([blob], { type: "text/javascript" })); + const worker = new Worker(blobUrl, { credentials: "omit", name: "tsWorker", type: "module" }); + resolve(worker); + } else { + reject(new Error("no ts.worker")); + } + }); + }); }; export const findGlobalInsertionInfo = (model: editor.ITextModel) => { From 58ceb19bd038e5e2b5f11271a7f38f66a6c4cea0 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Sun, 8 Feb 2026 22:33:25 +0900 Subject: [PATCH 03/20] Update utils.ts --- src/pkg/utils/monaco-editor/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pkg/utils/monaco-editor/utils.ts b/src/pkg/utils/monaco-editor/utils.ts index 9b9c3b7d6..223299d76 100644 --- a/src/pkg/utils/monaco-editor/utils.ts +++ b/src/pkg/utils/monaco-editor/utils.ts @@ -1,6 +1,6 @@ import type { editor } from "monaco-editor"; -export const getEditorWorkerPromise = () => { +export const getEditorWorkerPromise = (): Promise => { return Promise.resolve( new Worker("/src/editor.worker.js", { credentials: "omit", From 044c7783207d3354be57fa98d50d9c6249611daf Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Sun, 8 Feb 2026 22:51:41 +0900 Subject: [PATCH 04/20] blob -> arrayBuffer to force removing of MIME --- src/pkg/utils/monaco-editor/utils.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pkg/utils/monaco-editor/utils.ts b/src/pkg/utils/monaco-editor/utils.ts index 223299d76..88cde2d0a 100644 --- a/src/pkg/utils/monaco-editor/utils.ts +++ b/src/pkg/utils/monaco-editor/utils.ts @@ -13,11 +13,11 @@ export const getEditorWorkerPromise = (): Promise => { export const getTsWorkerPromise = (): Promise => { return new Promise((resolve, reject) => { fetch(chrome.runtime.getURL(`/src/ts.worker.js.bin`)) - .then((resp) => (resp.ok ? resp.blob() : null)) + .then((resp) => (resp.ok ? resp.arrayBuffer() : null)) .catch(() => null) - .then((blob) => { - if (blob) { - const blobUrl = URL.createObjectURL(new Blob([blob], { type: "text/javascript" })); + .then((rawData) => { + if (rawData) { + const blobUrl = URL.createObjectURL(new Blob([rawData], { type: "text/javascript" })); const worker = new Worker(blobUrl, { credentials: "omit", name: "tsWorker", type: "module" }); resolve(worker); } else { From 033d71b4cbe0df28f36cd1c8687f8715ecf96a3b Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Sun, 8 Feb 2026 23:48:20 +0900 Subject: [PATCH 05/20] fix `content_security_policy` --- rspack.config.ts | 1 - scripts/pack.js | 2 -- src/manifest.json | 3 +++ 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rspack.config.ts b/rspack.config.ts index 4a3b90857..4e39b9794 100644 --- a/rspack.config.ts +++ b/rspack.config.ts @@ -141,7 +141,6 @@ export default defineConfig({ const manifest = JSON.parse(content.toString()); if (isDev || isBeta) { manifest.name = "__MSG_scriptcat_beta__"; - // manifest.content_security_policy = "script-src 'self' https://cdn.crowdin.com; object-src 'self'"; } return JSON.stringify(manifest); }, diff --git a/scripts/pack.js b/scripts/pack.js index 85f66307a..f3784c8c3 100644 --- a/scripts/pack.js +++ b/scripts/pack.js @@ -74,13 +74,11 @@ execSync("npm run build", { stdio: "inherit" }); const firefoxManifest = { ...manifest, background: { ...manifest.background } }; const chromeManifest = { ...manifest, background: { ...manifest.background } }; -delete chromeManifest.content_security_policy; chromeManifest.optional_permissions = chromeManifest.optional_permissions.filter((val) => val !== "userScripts"); delete chromeManifest.background.scripts; delete firefoxManifest.background.service_worker; delete firefoxManifest.sandbox; -// firefoxManifest.content_security_policy = "script-src 'self' blob:; object-src 'self' blob:"; firefoxManifest.browser_specific_settings = { gecko: { id: `{${ diff --git a/src/manifest.json b/src/manifest.json index b0ef98365..98080f632 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -55,6 +55,9 @@ "src/sandbox.html" ] }, + "content_security_policy": { + "extension_pages": "script-src 'self' blob:; worker-src 'self' blob:;" + }, "web_accessible_resources": [ { "resources": [ From 54f929b4d46be9777faefdb2bfac2a95ff597781 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:32:55 +0900 Subject: [PATCH 06/20] =?UTF-8?q?=E6=94=B9=E4=B8=BA=20ZipExecutionPlugin?= =?UTF-8?q?=20=E5=81=9A=E4=BB=A3=E7=A0=81=E5=8E=8B=E7=BC=A9=EF=BC=8C?= =?UTF-8?q?=E4=BD=BF=20ts.worker.js=20=E5=A4=A7=E5=B0=8F=E7=BC=A9=E5=87=8F?= =?UTF-8?q?=E8=87=B3=204MB=20(=20<=205MB=20)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rspack-plugins/ZipExecutionPlugin.ts | 252 +++++++++++++++++++++++++++ rspack.config.ts | 7 +- src/pkg/utils/monaco-editor/index.ts | 12 +- src/pkg/utils/monaco-editor/utils.ts | 27 --- 4 files changed, 259 insertions(+), 39 deletions(-) create mode 100644 rspack-plugins/ZipExecutionPlugin.ts diff --git a/rspack-plugins/ZipExecutionPlugin.ts b/rspack-plugins/ZipExecutionPlugin.ts new file mode 100644 index 000000000..9b17ed6f5 --- /dev/null +++ b/rspack-plugins/ZipExecutionPlugin.ts @@ -0,0 +1,252 @@ +import type { Compiler, Compilation } from "@rspack/core"; +import pako from "pako"; + +import * as acorn from "acorn"; +import MagicString from "magic-string"; + +export function compileDecodeSource(templateCode: string, base64Data: string, vName: string) { + return ` + const $encodedBase64 = "${base64Data}"; + + // -------------- See https://github.com/js-vanilla/inflate-raw/ -------------- + + const $inflateRaw = (()=>{const t=Uint8Array,r=t.fromBase64?.bind(t)??(r=>{const e=atob(r);let n=e.length;const l=new t(n);for(;n--;)l[n]=e.charCodeAt(n);return l}); + return e=>{const n=r(e);let l=4*n.length;l<32768&&(l=32768);let s=new t(l),o=0;const a=r=>{let e=s.length;const n=o+r;if(n>e){do{e=3*e>>>1}while(e{for(;g<16&&d{A();const r=w&(1<>>=t,g-=t,r},k=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15], + m=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],p=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0], + v=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577], + x=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],B=h.subarray(0,16),C=h.subarray(16,32),D=(t,r)=>{const e=B.fill(0); + let n=0;for(let r=0;r0&&(e[l]++,l>n&&(n=l))}const l=1<0&&(c[o[t[r]]++]=r);let f=0,i=0;for(let t=1;t<=n;t++){const r=1<>=1;f^=n}}return s},I=t=>{A();const r=t.length-1,e=t[w&r],n=e>>>9;return w>>>=n,g-=n,511&e},R=new t(320), + T=R.subarray(0,19);let W=!1,j=0;for(;!j;){const t=U(3);j=1&t;const r=t>>1;if(0===r){w=g=0;const t=n[d++]|n[d++]<<8;d+=2,a(t),s.set(n.subarray(d,d+t),o),o+=t,d+=t}else{ + let t,e;if(1===r){if(!W){W=!0;let t=65856;const r=R.subarray(0,288);r.fill(8,0,144),r.fill(9,144,256),r.fill(7,256,280),r.fill(8,280,288),y=c.subarray(t,t+=512),D(r,y); + const e=R.subarray(0,32).fill(5);b=c.subarray(t,t+=32),D(e,b)}t=y,e=b}else{const r=U(14),n=257+(31&r),l=1+(r>>5&31),s=4+(r>>10&15);T.fill(0); + for(let t=0;t { + // "zzstrs" + for (let e = 0xc0; e <= 0xff; e++) { + if (e === 0xd7 || e === 0xf7) continue; + const c = "$" + String.fromCharCode(e); + if (source.includes(c)) continue; + return c; + } + throw new Error("Unable to compress"); +}; + +export class ZipExecutionPlugin { + apply(compiler: Compiler) { + compiler.hooks.thisCompilation.tap("ZipExecutionPlugin", (compilation: Compilation) => { + compilation.hooks.processAssets.tapPromise( + { + name: "ZipExecutionPlugin", + stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE, // after all compressions + }, + async (assets) => { + for (const [filename, asset] of Object.entries(assets)) { + if (!filename.includes("ts.worker.js")) continue; + + const source = asset.source().toString(); + + const vName = findAvailableVarName(source); + + // ────────────────────────────────────────────────────────────── + // 1. Parse (no regex hacks!) + let ast: acorn.Node; + try { + ast = acorn.parse(source, { + ecmaVersion: "latest", + sourceType: "module", + ranges: true, + }); + } catch (err) { + console.warn(`[ZipExec] Parse failed ${filename}:`, (err as Error).message); + continue; + } + + // ────────────────────────────────────────────────────────────── + // 2. Collect candidates (robust walker + context) + const candidates = this.collectCandidates(ast); + + if (candidates.length === 0) continue; + + // ────────────────────────────────────────────────────────────── + // 3. Normalise values + deduplicate (huge strings are rarely identical, but helps) + const extracted: string[] = []; + const operations: Candidate[] = []; + + const candidatesFreq = new Map(); + const mapped = candidates.map((c) => { + const d = this.normalizeValue(c.value); + let q = candidatesFreq.get(d); + if (!q) candidatesFreq.set(d, (q = [0, 0])); + q[0] += 1; + return [c, d, q] as const; + }); + const sorted = [...candidatesFreq.entries()].sort((a, b) => b[1][0] - a[1][0]); + let i = 0; + for (const [d, q] of sorted) { + q[1] = i++; + extracted.push(d); + } + candidatesFreq.clear(); + + mapped.forEach(([c, _d, q]: any) => { + const id = q[1] as number; + operations.push({ ...c, id }); + }); + mapped.length = 0; + + // ────────────────────────────────────────────────────────────── + // 4. Replace bottom-up (safe offsets) + operations.sort((a, b) => b.start - a.start); + + const ms = new MagicString(source); + + for (const op of operations) { + if (op.type === "Template") { + // `content` → `${zzstrs[N]}` + if (op.expressions === 0) { + ms.overwrite(op.start - 1, op.end + 1, `${vName}[${op.id}]`); + } else if (op.expressions) { + throw "not implemented yet"; + // ms.overwrite(op.start, op.end, `\${${vName}[${op.id}]}`); + } + } else { + // "content" or 'content' → zzstrs[N] + ms.overwrite(op.start, op.end, `(${vName}[${op.id}])`); // bracket is required. might be some literals are mixed with other expr. + } + } + + // ────────────────────────────────────────────────────────────── + // 5. Compress + const json = JSON.stringify(extracted); + const deflated = pako.deflateRaw(Buffer.from(json, "utf8"), { level: 6 }); + const base64 = Buffer.from(deflated).toString("base64"); + + // ────────────────────────────────────────────────────────────── + // 6. Wrap + const finalSource = compileDecodeSource(ms.toString(), base64, vName); + + compilation.updateAsset(filename, new compiler.webpack.sources.RawSource(finalSource)); + + console.log(`[ZipExecutionPlugin] Processed ${filename}: ${extracted.length} unique strings extracted`); + } + } + ); + }); + } + + private collectCandidates(ast: acorn.Node): Omit[] { + const results: Omit[] = []; + + const walk = (node: any, parent: any = null) => { + if (!node || typeof node !== "object") return; + + if (this.isExtractable(node, parent)) { + if (node.type === "Literal" && typeof node.value === "string") { + results.push({ + type: "Literal", + start: node.start!, + end: node.end!, + value: node.value, + }); + return; // no children + } + + // for node.expressions.length > 0, not implemented yet + if (node.type === "TemplateLiteral" && node.expressions.length === 0) { + const quasi = node.quasis[0]; + const value = quasi.value.cooked ?? quasi.value.raw; + results.push({ + type: "Template", + start: quasi.start!, + end: quasi.end!, + expressions: node.expressions.length, + value, + }); + return; + } + } + + // Safe child traversal + for (const key of Object.keys(node)) { + if (["parent", "loc", "range", "start", "end"].includes(key)) continue; + const child = node[key]; + if (Array.isArray(child)) child.forEach((c) => walk(c, node)); + else if (child && typeof child === "object" && child.type) walk(child, node); + } + }; + + walk(ast); + return results; + } + + private isExtractable(node: any, parent: any): boolean { + const isLiteral = node.type === "Literal" && typeof node.value === "string"; + const isTemplate = node.type === "TemplateLiteral"; + + if (!isLiteral && !isTemplate) return false; + + // Length filter (runtime value) + const content = isLiteral ? node.value : (node.quasis[0].value.cooked ?? ""); + if (isTemplate && node.expressions?.length === 0) { + if (content.length < 7) return false; // `1234567` => $S[6789] + } else { + // isLiteral or isTemplate with node.expressions + if (content.length < 9) return false; // "123456789" => ($S[6789]) + } + + // ── Exclusions ───────────────────────────────────────────────────── + // "use strict" + if (parent?.type === "ExpressionStatement" && node.value === "use strict") return false; + + // Tagged templates + if (parent?.type === "TaggedTemplateExpression" && parent.quasi === node) return false; + + // Object keys (non-computed) + if (parent?.type === "Property" && parent.key === node && !parent.computed) return false; + + // Import/export sources + if ( + parent && + (parent.type === "ImportDeclaration" || + parent.type === "ExportNamedDeclaration" || + parent.type === "ExportAllDeclaration") && + parent.source === node + ) + return false; + + // Dynamic import + if (parent?.type === "ImportExpression" && parent.source === node) return false; + + return true; + } + + private normalizeValue(value: string): string { + // Only standardise line endings – never escape anything + return value.includes("\r") ? value.replace(/\r\n/g, "\n").replace(/\r/g, "\n") : value; + } +} diff --git a/rspack.config.ts b/rspack.config.ts index 4e39b9794..0c9f7f640 100644 --- a/rspack.config.ts +++ b/rspack.config.ts @@ -1,6 +1,7 @@ import * as path from "path"; import { defineConfig } from "@rspack/cli"; import { rspack } from "@rspack/core"; +import { ZipExecutionPlugin } from "./rspack-plugins/ZipExecutionPlugin"; import { readFileSync } from "fs"; import { NormalModule } from "@rspack/core"; import { v4 as uuidv4 } from "uuid"; @@ -62,10 +63,7 @@ export default defineConfig({ }, output: { path: `${dist}/ext/src`, - filename(pathData, _assetInfo) { - if (pathData.runtime === "ts.worker") { - return "[name].js.bin"; - } + filename(_pathData, _assetInfo) { return "[name].js"; }, clean: true, @@ -224,6 +222,7 @@ export default defineConfig({ minify: true, chunks: ["sandbox"], }), + new ZipExecutionPlugin(), ].filter(Boolean), experiments: { css: true, diff --git a/src/pkg/utils/monaco-editor/index.ts b/src/pkg/utils/monaco-editor/index.ts index 8a055c44f..6c91de174 100644 --- a/src/pkg/utils/monaco-editor/index.ts +++ b/src/pkg/utils/monaco-editor/index.ts @@ -1,7 +1,7 @@ import { globalCache, systemConfig } from "@App/pages/store/global"; import EventEmitter from "eventemitter3"; import { languages } from "monaco-editor"; -import { findGlobalInsertionInfo, getEditorWorkerPromise, getTsWorkerPromise, updateGlobalCommentLine } from "./utils"; +import { findGlobalInsertionInfo, updateGlobalCommentLine } from "./utils"; // 注册eslint const linterWorker = new Worker("/src/linter.worker.js"); @@ -455,16 +455,12 @@ type Prompt = (typeof langs)["zh-CN"]["prompt"]; type LangEntry = (typeof langs)["zh-CN"]; export default function registerEditor() { - const editorWorker = getEditorWorkerPromise(); - const tsWorkerPromise = getTsWorkerPromise(); window.MonacoEnvironment = { - // https://microsoft.github.io/monaco-editor/typedoc/interfaces/Environment.html#getWorker - // Returns Worker | Promise - getWorker(workerId: string, label: string) { + getWorkerUrl(moduleId: any, label: any) { if (label === "typescript" || label === "javascript") { - return tsWorkerPromise; + return "/src/ts.worker.js"; } - return editorWorker; + return "/src/editor.worker.js"; }, }; function asLangEntry(key: T) { diff --git a/src/pkg/utils/monaco-editor/utils.ts b/src/pkg/utils/monaco-editor/utils.ts index 88cde2d0a..978742ffb 100644 --- a/src/pkg/utils/monaco-editor/utils.ts +++ b/src/pkg/utils/monaco-editor/utils.ts @@ -1,32 +1,5 @@ import type { editor } from "monaco-editor"; -export const getEditorWorkerPromise = (): Promise => { - return Promise.resolve( - new Worker("/src/editor.worker.js", { - credentials: "omit", - name: "editorWorker", - type: "module", - }) - ); -}; - -export const getTsWorkerPromise = (): Promise => { - return new Promise((resolve, reject) => { - fetch(chrome.runtime.getURL(`/src/ts.worker.js.bin`)) - .then((resp) => (resp.ok ? resp.arrayBuffer() : null)) - .catch(() => null) - .then((rawData) => { - if (rawData) { - const blobUrl = URL.createObjectURL(new Blob([rawData], { type: "text/javascript" })); - const worker = new Worker(blobUrl, { credentials: "omit", name: "tsWorker", type: "module" }); - resolve(worker); - } else { - reject(new Error("no ts.worker")); - } - }); - }); -}; - export const findGlobalInsertionInfo = (model: editor.ITextModel) => { const lineCount = model.getLineCount(); From 75b484ca8d45a23d2644c1e3d826d89d0fe7d21d Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:34:31 +0900 Subject: [PATCH 07/20] revert changes --- rspack.config.ts | 5 +---- src/manifest.json | 3 --- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/rspack.config.ts b/rspack.config.ts index 0c9f7f640..6894b57a6 100644 --- a/rspack.config.ts +++ b/rspack.config.ts @@ -63,9 +63,7 @@ export default defineConfig({ }, output: { path: `${dist}/ext/src`, - filename(_pathData, _assetInfo) { - return "[name].js"; - }, + filename: "[name].js", clean: true, }, resolve: { @@ -232,7 +230,6 @@ export default defineConfig({ optimization: { minimizer: [ new rspack.SwcJsMinimizerRspackPlugin({ - test: /\.[cm]?js(\.bin)?(\?.*)?$/, minimizerOptions: { minify: !isDev, mangle: { diff --git a/src/manifest.json b/src/manifest.json index 98080f632..b0ef98365 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -55,9 +55,6 @@ "src/sandbox.html" ] }, - "content_security_policy": { - "extension_pages": "script-src 'self' blob:; worker-src 'self' blob:;" - }, "web_accessible_resources": [ { "resources": [ From 648eb5ff2cde3b6ad9bf64ff7ecd1935cf5648ce Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:39:29 +0900 Subject: [PATCH 08/20] =?UTF-8?q?=E8=A1=A5=E5=9B=9E=20packages=20-=20acorn?= =?UTF-8?q?,=20magic-string,=20pako?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +++ pnpm-lock.yaml | 61 ++++++++++++++++++-------------------------------- 2 files changed, 25 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index 2c09dc018..0df81cbc6 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "@dnd-kit/modifiers": "^9.0.0", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", + "acorn": "^8.15.0", "chardet": "^2.1.1", "cron": "^4.4.0", "crypto-js": "^4.2.0", @@ -38,7 +39,9 @@ "eslint-linter-browserify": "9.26.0", "eventemitter3": "^5.0.1", "i18next": "^23.16.4", + "magic-string": "^0.30.21", "monaco-editor": "^0.52.2", + "pako": "^2.1.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-dropzone": "^14.3.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff52d0907..15cd06d86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: '@dnd-kit/utilities': specifier: ^3.2.2 version: 3.2.2(react@18.3.1) + acorn: + specifier: ^8.15.0 + version: 8.15.0 chardet: specifier: ^2.1.1 version: 2.1.1 @@ -47,9 +50,15 @@ importers: i18next: specifier: ^23.16.4 version: 23.16.4 + magic-string: + specifier: ^0.30.21 + version: 0.30.21 monaco-editor: specifier: ^0.52.2 version: 0.52.2 + pako: + specifier: ^2.1.0 + version: 2.1.0 react: specifier: ^18.3.1 version: 18.3.1 @@ -782,12 +791,6 @@ packages: '@jridgewell/source-map@0.3.10': resolution: {integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -1449,16 +1452,6 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.13.0: - resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -2907,9 +2900,6 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -3175,6 +3165,9 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -4791,7 +4784,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.12': dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.29 '@jridgewell/remapping@2.3.5': @@ -4807,21 +4800,17 @@ snapshots: '@jridgewell/trace-mapping': 0.3.29 optional: true - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/sourcemap-codec@1.5.4': {} - '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.29': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': dependencies: @@ -5509,7 +5498,7 @@ snapshots: dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: vite: 7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1) @@ -5526,7 +5515,7 @@ snapshots: '@vitest/snapshot@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 2.0.3 '@vitest/spy@3.2.4': @@ -5647,11 +5636,7 @@ snapshots: acorn-walk@8.3.4: dependencies: - acorn: 8.14.1 - - acorn@8.13.0: {} - - acorn@8.14.1: {} + acorn: 8.15.0 acorn@8.15.0: {} @@ -7292,10 +7277,6 @@ snapshots: lz-string@1.5.0: {} - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -7538,6 +7519,8 @@ snapshots: pako@1.0.11: {} + pako@2.1.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -8383,7 +8366,7 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 22.16.0 - acorn: 8.13.0 + acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -8608,7 +8591,7 @@ snapshots: chai: 5.2.0 debug: 4.4.1 expect-type: 1.2.2 - magic-string: 0.30.17 + magic-string: 0.30.21 pathe: 2.0.3 picomatch: 4.0.2 std-env: 3.9.0 From 09afa0f75d97075960c88d8a6abd90324e340ba4 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:52:14 +0900 Subject: [PATCH 09/20] code adjusted --- rspack-plugins/ZipExecutionPlugin.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rspack-plugins/ZipExecutionPlugin.ts b/rspack-plugins/ZipExecutionPlugin.ts index 9b17ed6f5..c0f2fe7f7 100644 --- a/rspack-plugins/ZipExecutionPlugin.ts +++ b/rspack-plugins/ZipExecutionPlugin.ts @@ -136,7 +136,7 @@ export class ZipExecutionPlugin { } } else { // "content" or 'content' → zzstrs[N] - ms.overwrite(op.start, op.end, `(${vName}[${op.id}])`); // bracket is required. might be some literals are mixed with other expr. + ms.overwrite(op.start, op.end, ` ${vName}[${op.id}] `); } } @@ -144,6 +144,7 @@ export class ZipExecutionPlugin { // 5. Compress const json = JSON.stringify(extracted); const deflated = pako.deflateRaw(Buffer.from(json, "utf8"), { level: 6 }); + if (!deflated) throw new Error("Pako Compression Failed"); const base64 = Buffer.from(deflated).toString("base64"); // ────────────────────────────────────────────────────────────── From 98f5f0488efa039553dc1436742b5c84f81e5eda Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Wed, 11 Feb 2026 00:14:53 +0900 Subject: [PATCH 10/20] =?UTF-8?q?=E4=BF=AE=E8=AE=A2=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rspack-plugins/ZipExecutionPlugin.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/rspack-plugins/ZipExecutionPlugin.ts b/rspack-plugins/ZipExecutionPlugin.ts index c0f2fe7f7..185b236d9 100644 --- a/rspack-plugins/ZipExecutionPlugin.ts +++ b/rspack-plugins/ZipExecutionPlugin.ts @@ -129,14 +129,23 @@ export class ZipExecutionPlugin { if (op.type === "Template") { // `content` → `${zzstrs[N]}` if (op.expressions === 0) { - ms.overwrite(op.start - 1, op.end + 1, `${vName}[${op.id}]`); + const c1 = ms.slice(op.start - 2, op.start - 1); + const c2 = ms.slice(op.end + 1, op.end + 2); + const s1 = /[\w"'`]/.test(c1) ? " " : ""; + const s2 = /[\w"'`]/.test(c2) ? " " : ""; + ms.overwrite(op.start - 1, op.end + 1, `${s1}${vName}[${op.id}]${s2}`); } else if (op.expressions) { throw "not implemented yet"; // ms.overwrite(op.start, op.end, `\${${vName}[${op.id}]}`); } } else { // "content" or 'content' → zzstrs[N] - ms.overwrite(op.start, op.end, ` ${vName}[${op.id}] `); + // note: case"123456789" -> case $X[123] + const c1 = ms.slice(op.start - 1, op.start); + const c2 = ms.slice(op.end, op.end + 1); + const s1 = /[\w"'`]/.test(c1) ? " " : ""; + const s2 = /[\w"'`]/.test(c2) ? " " : ""; + ms.overwrite(op.start, op.end, `${s1}${vName}[${op.id}]${s2}`); } } From 3cb05c0ece23b40ef7ca13b09ec8746348eb5a6c Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Wed, 11 Feb 2026 12:25:49 +0900 Subject: [PATCH 11/20] =?UTF-8?q?=E4=BF=AE=E8=AE=A2=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rspack-plugins/ZipExecutionPlugin.ts | 465 +++++++++++++++++---------- 1 file changed, 296 insertions(+), 169 deletions(-) diff --git a/rspack-plugins/ZipExecutionPlugin.ts b/rspack-plugins/ZipExecutionPlugin.ts index 185b236d9..3a9b7adcc 100644 --- a/rspack-plugins/ZipExecutionPlugin.ts +++ b/rspack-plugins/ZipExecutionPlugin.ts @@ -1,48 +1,57 @@ import type { Compiler, Compilation } from "@rspack/core"; -import pako from "pako"; +import zlib from "zlib"; import * as acorn from "acorn"; import MagicString from "magic-string"; -export function compileDecodeSource(templateCode: string, base64Data: string, vName: string) { +const trimCode = (code: string) => { + return code.trim(); +}; + +export function compileDecodeSource(templateCode: string, base64Data: string, pName: string) { + // ------------------------------------------ inflate-raw ------------------------------------------ + // lightweight implementation of the DEFLATE decompression algorithm (RFC 1951) + // * See https://github.com/js-vanilla/inflate-raw/ + const inflateRawCode = trimCode(` + (()=>{let _=Uint8Array,e=_.fromBase64?.bind(_)??(e=>{let l=atob(e),$=l.length,r=new _($);for(;$--;)r[$]=l.charCodeAt($);return r}), + l=l=>{let $=e(l),r=4*$.length;r<32768&&(r=32768);let t=new _(r),a=0,f=e=>{let l=t.length,$=a+e;if($>l){do l=3*l>>>1;while(l<$);let r=new _(l);r.set(t),t=r}}, + s=new Uint16Array(66400),n=s.subarray(0,32768),u=s.subarray(32768,65536),b=s.subarray(65536,65856),i,o,y=new Int32Array(48),h=0,w=0,g=0, + d=()=>{for(;w<16&&g<$.length;)h|=$[g++]<{d();let e=h&(1<<_)-1;return h>>>=_,w-=_,e},F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15], + k=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],m=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0], + p=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577], + v=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=y.subarray(0,16),A=y.subarray(16,32),B=(_,e)=>{let l=x.fill(0),$=0; + for(let r=0;r<_.length;r++){let t=_[r];t>0&&(l[t]++,t>$&&($=t))}let a=1<<$,f=e.subarray(0,a),s=A,n=0;for(let u=1;u<=$;u++)s[u]=n,n+=l[u];let i=b; + for(let o=0;o<_.length;o++)_[o]>0&&(i[s[_[o]]++]=o);let y=0,h=0;for(let w=1;w<=$;w++){let g=1<>=1;y^=p}}return f},C=_=>{d();let e=_.length-1,l=_[h&e],$=l>>>9;return h>>>=$,w-=$,511&l}, + R=new _(320),W=R.subarray(0,19),j=!1,q=0;for(;!q;){let z=c(3);q=1&z;let D=z>>1;if(0===D){h=w=0;let E=$[g++]|$[g++]<<8;g+=2,f(E),t.set($.subarray(g,g+E),a),a+=E, + g+=E}else{let G,H;if(1===D){if(!j){j=!0;let I=65856,J=R.subarray(0,288);J.fill(8,0,144),J.fill(9,144,256),J.fill(7,256,280),J.fill(8,280,288),B(J,i=s.subarray(I,I+=512)); + let K=R.subarray(0,32).fill(5);B(K,o=s.subarray(I,I+=32))}G=i,H=o}else{let L=c(14),M=(31&L)+257,N=(L>>5&31)+1,O=(L>>10&15)+4;W.fill(0);for(let P=0;P{const t=Uint8Array,r=t.fromBase64?.bind(t)??(r=>{const e=atob(r);let n=e.length;const l=new t(n);for(;n--;)l[n]=e.charCodeAt(n);return l}); - return e=>{const n=r(e);let l=4*n.length;l<32768&&(l=32768);let s=new t(l),o=0;const a=r=>{let e=s.length;const n=o+r;if(n>e){do{e=3*e>>>1}while(e{for(;g<16&&d{A();const r=w&(1<>>=t,g-=t,r},k=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15], - m=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],p=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0], - v=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577], - x=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],B=h.subarray(0,16),C=h.subarray(16,32),D=(t,r)=>{const e=B.fill(0); - let n=0;for(let r=0;r0&&(e[l]++,l>n&&(n=l))}const l=1<0&&(c[o[t[r]]++]=r);let f=0,i=0;for(let t=1;t<=n;t++){const r=1<>=1;f^=n}}return s},I=t=>{A();const r=t.length-1,e=t[w&r],n=e>>>9;return w>>>=n,g-=n,511&e},R=new t(320), - T=R.subarray(0,19);let W=!1,j=0;for(;!j;){const t=U(3);j=1&t;const r=t>>1;if(0===r){w=g=0;const t=n[d++]|n[d++]<<8;d+=2,a(t),s.set(n.subarray(d,d+t),o),o+=t,d+=t}else{ - let t,e;if(1===r){if(!W){W=!0;let t=65856;const r=R.subarray(0,288);r.fill(8,0,144),r.fill(9,144,256),r.fill(7,256,280),r.fill(8,280,288),y=c.subarray(t,t+=512),D(r,y); - const e=R.subarray(0,32).fill(5);b=c.subarray(t,t+=32),D(e,b)}t=y,e=b}else{const r=U(14),n=257+(31&r),l=1+(r>>5&31),s=4+(r>>10&15);T.fill(0); - for(let t=0;t { @@ -50,13 +59,160 @@ const findAvailableVarName = (source: string) => { for (let e = 0xc0; e <= 0xff; e++) { if (e === 0xd7 || e === 0xf7) continue; const c = "$" + String.fromCharCode(e); - if (source.includes(c)) continue; - return c; + if (!source.includes(c)) return c; } throw new Error("Unable to compress"); }; +const findShortName = (source: string) => { + // $H + const candidates = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + .split("") + .map((c) => [c, source.split("$" + c).filter((w, i) => i === 0 || !/[\w$]/.test(w[0])).length] as const); + candidates.sort((a, b) => a[1] - b[1]); + const [candidateChar, _candidatesFreq] = candidates[0]; + const pName = "$" + candidateChar; + return pName; +}; + export class ZipExecutionPlugin { + processFn(source: string, filename: string = "") { + const vName = findAvailableVarName(source); + const pName = findShortName(source); + source = source.replaceAll(pName, vName); + + // 1. Parse + let ast: acorn.Node; + try { + ast = acorn.parse(source, { + ecmaVersion: "latest", + sourceType: "module", + ranges: true, + }); + } catch (err) { + console.warn(`[ZipExec] Parse failed ${filename}:`, (err as Error).message); + return false; + } + + // 2. Collect candidates (robust walker + context) + const candidates = this.collectCandidates(ast, source); + if (candidates.length === 0) return false; + + // Normalization & Deduplication + const extracted: string[] = []; + const operations: Candidate[] = []; + const candidatesFreq = new Map(); + + let mapped = candidates.map((c) => { + const d = this.normalizeValue(c.value); + if (c.zz) { + let q = candidatesFreq.get(d); + if (!q) candidatesFreq.set(d, (q = [0, 0, d.length])); + q[0] += 1; + return [c, d, q] as const; + } else { + return [c, d, [0, 0, 0]] as const; + } + }); + + mapped = mapped.filter(([c, d, q]) => { + if (q[0] === 1) { + // for freq === 1, if the size difference is small, replacement will make the compressed coding longer. + if (d.length < 14) { + q[0] = 0; + q[1] = 0; + q[2] = 0; + c.zz = false; + } + } + return true; + }); + + const sorted = [...candidatesFreq.entries()].sort((a, b) => b[1][0] - a[1][0]); + let i = 0; + for (const [d, q] of sorted) { + if (q[0] > 0) { + q[1] = i++; + extracted.push(d); + } + } + + mapped.forEach(([c, d, q]) => { + operations.push({ ...c, d: d, id: q[1], freq: q[0] }); + }); + + // Replace bottom-up (safe offsets) + operations.sort((a, b) => b.start - a.start); + const ms = new MagicString(source); + const usedIds = new Set(); + + for (const op of operations) { + let doZZ = false; + const p = op.type === "Template" ? op.start - 1 : op.start; + const q = op.type === "Template" ? op.end + 1 : op.end; + if (op.zz) { + const freq = op.freq || 0; + if (freq === 0) throw new Error("invalid freq"); + const newValue = `${pName}[${op.id}]`; + + let oldSize; + + let r; + if (op.type === "Template") { + // Static template: removes backticks + // someFn(`1234567`) -> someFn($X[1234]) + r = `${op.prefix}${newValue}${op.suffix}`; + oldSize = op.end - op.start + 2; // opValue = targetString + } else if (op.type === "Quasi") { + // Quasi: stays inside backticks + // someFn(`...${123456789}...`) -> someFn(`...${$X[1234]}...`) + r = `\${${newValue}}`; + oldSize = op.end - op.start; // opValue = targetString + } else { + // Literal: removes quotes + // someFn("1234567") -> someFn($X[1234]) + // note: case"12345678" -> case $X[1234] + r = `${op.prefix}${newValue}${op.suffix}`; + oldSize = op.end - op.start; // opValue = "targetString" + } + + const newSize = r.length; + if (newSize > oldSize) { + //@ts-ignore : ignore empty value + extracted[op.id] = 0; // No replacement to $X. Just keep the id in $X + } else { + doZZ = true; + usedIds.add(op.id); + ms.overwrite(p, q, r); + } + } + if (!doZZ) { + // Handling non-compressed strings (like those with newlines) + const old = op.value; + if (/[\r\n]/.test(old)) { + if (op.type === "Template") { + ms.overwrite(op.start - 1, op.end + 1, JSON.stringify(op.d)); + } else if (op.type === "Quasi" && /^[\r\n\w$.=*,?:!(){}[\]@#%^&*/ '"+-]+$/.test(old)) { + ms.overwrite(op.start, op.end, op.d.replace(/\n/g, "\\n")); + } + } + } + } + + // Compress + const json = JSON.stringify(extracted); + // const deflated = pako.deflateRaw(Buffer.from(json, "utf8"), { level: 6 }); + const deflated = zlib.deflateRawSync(Buffer.from(json, "utf8"), { level: 6 }); + if (!deflated) throw new Error("Compression Failed"); + const base64 = Buffer.from(deflated).toString("base64"); + + // Wrap + const finalSource = compileDecodeSource(ms.toString(), base64, pName); + // testing: + // const finalSource = `var ${vName}=JSON.parse(new TextDecoder().decode(require('pako').inflateRaw(Buffer.from("${base64}","base64"))));\n${ms.toString()}`; + + return { finalSource, source, extracted, usedIds }; + } apply(compiler: Compiler) { compiler.hooks.thisCompilation.tap("ZipExecutionPlugin", (compilation: Compilation) => { compilation.hooks.processAssets.tapPromise( @@ -68,140 +224,119 @@ export class ZipExecutionPlugin { for (const [filename, asset] of Object.entries(assets)) { if (!filename.includes("ts.worker.js")) continue; - const source = asset.source().toString(); - - const vName = findAvailableVarName(source); - - // ────────────────────────────────────────────────────────────── - // 1. Parse (no regex hacks!) - let ast: acorn.Node; - try { - ast = acorn.parse(source, { - ecmaVersion: "latest", - sourceType: "module", - ranges: true, - }); - } catch (err) { - console.warn(`[ZipExec] Parse failed ${filename}:`, (err as Error).message); - continue; - } - - // ────────────────────────────────────────────────────────────── - // 2. Collect candidates (robust walker + context) - const candidates = this.collectCandidates(ast); - - if (candidates.length === 0) continue; + let source = asset.source().toString(); - // ────────────────────────────────────────────────────────────── - // 3. Normalise values + deduplicate (huge strings are rarely identical, but helps) - const extracted: string[] = []; - const operations: Candidate[] = []; - - const candidatesFreq = new Map(); - const mapped = candidates.map((c) => { - const d = this.normalizeValue(c.value); - let q = candidatesFreq.get(d); - if (!q) candidatesFreq.set(d, (q = [0, 0])); - q[0] += 1; - return [c, d, q] as const; - }); - const sorted = [...candidatesFreq.entries()].sort((a, b) => b[1][0] - a[1][0]); - let i = 0; - for (const [d, q] of sorted) { - q[1] = i++; - extracted.push(d); - } - candidatesFreq.clear(); - - mapped.forEach(([c, _d, q]: any) => { - const id = q[1] as number; - operations.push({ ...c, id }); - }); - mapped.length = 0; - - // ────────────────────────────────────────────────────────────── - // 4. Replace bottom-up (safe offsets) - operations.sort((a, b) => b.start - a.start); - - const ms = new MagicString(source); - - for (const op of operations) { - if (op.type === "Template") { - // `content` → `${zzstrs[N]}` - if (op.expressions === 0) { - const c1 = ms.slice(op.start - 2, op.start - 1); - const c2 = ms.slice(op.end + 1, op.end + 2); - const s1 = /[\w"'`]/.test(c1) ? " " : ""; - const s2 = /[\w"'`]/.test(c2) ? " " : ""; - ms.overwrite(op.start - 1, op.end + 1, `${s1}${vName}[${op.id}]${s2}`); - } else if (op.expressions) { - throw "not implemented yet"; - // ms.overwrite(op.start, op.end, `\${${vName}[${op.id}]}`); - } - } else { - // "content" or 'content' → zzstrs[N] - // note: case"123456789" -> case $X[123] - const c1 = ms.slice(op.start - 1, op.start); - const c2 = ms.slice(op.end, op.end + 1); - const s1 = /[\w"'`]/.test(c1) ? " " : ""; - const s2 = /[\w"'`]/.test(c2) ? " " : ""; - ms.overwrite(op.start, op.end, `${s1}${vName}[${op.id}]${s2}`); - } - } + // const ss = this.processFn("switch(e){case\"string_Case1_string\":33;case\"string_Case2_string\":44};\nconst p={s:\"string_Var1_string\",f:`string_Var2_string`,e:\"string_Var3_string\"};"); + // console.log(21399, ss); - // ────────────────────────────────────────────────────────────── - // 5. Compress - const json = JSON.stringify(extracted); - const deflated = pako.deflateRaw(Buffer.from(json, "utf8"), { level: 6 }); - if (!deflated) throw new Error("Pako Compression Failed"); - const base64 = Buffer.from(deflated).toString("base64"); + // await new Promise(r => setTimeout(r, 300000)); - // ────────────────────────────────────────────────────────────── - // 6. Wrap - const finalSource = compileDecodeSource(ms.toString(), base64, vName); + const ret = this.processFn(source, filename); + if (ret === false) continue; + source = ret.source; + const { finalSource, extracted, usedIds } = ret; compilation.updateAsset(filename, new compiler.webpack.sources.RawSource(finalSource)); - console.log(`[ZipExecutionPlugin] Processed ${filename}: ${extracted.length} unique strings extracted`); + console.debug(`[ZipExecutionPlugin] Processed ${filename}: ${extracted.length} unique strings extracted`); + console.debug(`[ZipExecutionPlugin] Replaced ${usedIds.size} extractions`); } } ); }); } - private collectCandidates(ast: acorn.Node): Omit[] { - const results: Omit[] = []; + private collectCandidates(ast: acorn.Node, source: string): Omit[] { + const results: Omit[] = []; + + const getPadding = (start: number, end: number) => { + //xy"abcd"jk + //3 7 + //s[3-1] = s[2] = " + //s[7+1] = s[8] = j + const c1 = source[start - 1] || ""; + const c2 = source[end] || ""; + const isWord = /[\w$"'`]/; + return { + prefix: isWord.test(c1) ? " " : "", + suffix: isWord.test(c2) ? " " : "", + }; + }; const walk = (node: any, parent: any = null) => { if (!node || typeof node !== "object") return; - if (this.isExtractable(node, parent)) { - if (node.type === "Literal" && typeof node.value === "string") { - results.push({ - type: "Literal", - start: node.start!, - end: node.end!, - value: node.value, - }); - return; // no children + if (node.type === "Literal" && typeof node.value === "string") { + if (this.isExtractable(node, parent, "Literal")) { + const { prefix, suffix } = getPadding(node.start, node.end); + const oriLen = node.end - node.start; // "targetString" + // someFn("123456") -> someFn($X[1234]) + // note: case"1234567" -> case $X[1234] + const isZZ = oriLen >= 8 + prefix.length + suffix.length; + if (isZZ) { + results.push({ + type: "Literal", + start: node.start, + end: node.end, + value: node.value, + zz: true, + prefix, + suffix, + }); + } } - - // for node.expressions.length > 0, not implemented yet - if (node.type === "TemplateLiteral" && node.expressions.length === 0) { + } else if (node.type === "TemplateLiteral") { + if (node.expressions.length === 0) { + // Static Template: treat as one unit const quasi = node.quasis[0]; - const value = quasi.value.cooked ?? quasi.value.raw; - results.push({ - type: "Template", - start: quasi.start!, - end: quasi.end!, - expressions: node.expressions.length, - value, + const val = quasi.value.cooked ?? quasi.value.raw; + if (this.isExtractable(quasi, parent, "Template")) { + // Templates overwrite backticks, so peek 1 char further out + // someFn(`123456`) -> someFn($X[1234]) + // node = `Template` + // quasi = Template + const { prefix, suffix } = getPadding(quasi.start - 1, quasi.end + 1); + const oriLen = quasi.end - quasi.start; // targetString + const isZZ = oriLen >= 6 + prefix.length + suffix.length; + const hasNewline = val.includes("\n") || val.includes("\r"); + if (isZZ || hasNewline) { + results.push({ + type: "Template", + start: quasi.start, + end: quasi.end, + value: val, + zz: isZZ, + prefix: isZZ ? prefix : "", + suffix: isZZ ? suffix : "", + }); + } + } + } else { + // Complex Template: extract individual quasis + node.quasis.forEach((quasi: any) => { + const val = quasi.value.cooked ?? quasi.value.raw; + if (val && this.isExtractable(quasi, parent, "Quasi", val)) { + // Quasis are inside `${}`, usually don't need padding relative to word boundaries + // `${...}123456789ab${...}` -> `${...}${$X[1234]}${...}` + const oriLen = quasi.end - quasi.start; // `${...}targetString${...}` + const isZZ = oriLen >= 11; + const hasNewline = val.includes("\n") || val.includes("\r"); + if (isZZ || hasNewline) { + results.push({ + type: "Quasi", + start: quasi.start, + end: quasi.end, + value: val, + zz: isZZ, + prefix: "", + suffix: "", + }); + } + } }); - return; } } - // Safe child traversal for (const key of Object.keys(node)) { if (["parent", "loc", "range", "start", "end"].includes(key)) continue; const child = node[key]; @@ -214,40 +349,33 @@ export class ZipExecutionPlugin { return results; } - private isExtractable(node: any, parent: any): boolean { - const isLiteral = node.type === "Literal" && typeof node.value === "string"; - const isTemplate = node.type === "TemplateLiteral"; + private isExtractable(node: any, parent: any, type: "Literal" | "Template" | "Quasi", overrideVal?: string): boolean { + const content = overrideVal ?? (node.type === "Literal" ? node.value : (node.value.cooked ?? "")); - if (!isLiteral && !isTemplate) return false; + // Thresholds: Quasis need more length because they add `${}` (3 chars) + // if (type === "Quasi" && content.length < 12) return false; + // if (type === "Template" && content.length < 7) return false; + // if (type === "Literal" && content.length < 9) return false; - // Length filter (runtime value) - const content = isLiteral ? node.value : (node.quasis[0].value.cooked ?? ""); - if (isTemplate && node.expressions?.length === 0) { - if (content.length < 7) return false; // `1234567` => $S[6789] - } else { - // isLiteral or isTemplate with node.expressions - if (content.length < 9) return false; // "123456789" => ($S[6789]) - } + // ---- Exclusions ---- - // ── Exclusions ───────────────────────────────────────────────────── // "use strict" - if (parent?.type === "ExpressionStatement" && node.value === "use strict") return false; + if (parent?.type === "ExpressionStatement" && content === "use strict") return false; - // Tagged templates - if (parent?.type === "TaggedTemplateExpression" && parent.quasi === node) return false; + // Tagged templates but type is not "Quasi" + if (parent?.type === "TaggedTemplateExpression" && type !== "Quasi") return false; // Object keys (non-computed) if (parent?.type === "Property" && parent.key === node && !parent.computed) return false; // Import/export sources - if ( + const isModuleSource = parent && (parent.type === "ImportDeclaration" || parent.type === "ExportNamedDeclaration" || parent.type === "ExportAllDeclaration") && - parent.source === node - ) - return false; + parent.source === node; + if (isModuleSource) return false; // Dynamic import if (parent?.type === "ImportExpression" && parent.source === node) return false; @@ -256,7 +384,6 @@ export class ZipExecutionPlugin { } private normalizeValue(value: string): string { - // Only standardise line endings – never escape anything - return value.includes("\r") ? value.replace(/\r\n/g, "\n").replace(/\r/g, "\n") : value; + return value.replace(/\r\n/g, "\n").replace(/\r/g, "\n"); } } From 7bfacbbeb85ac60bbb94ad575676810391614e99 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Wed, 11 Feb 2026 12:48:04 +0900 Subject: [PATCH 12/20] No "background" permission in Firefox MV3 --- scripts/pack.js | 2 + src/pages/components/RuntimeSetting/index.tsx | 77 +++++++++++-------- 2 files changed, 46 insertions(+), 33 deletions(-) diff --git a/scripts/pack.js b/scripts/pack.js index f3784c8c3..58a5af4fb 100644 --- a/scripts/pack.js +++ b/scripts/pack.js @@ -77,6 +77,8 @@ const chromeManifest = { ...manifest, background: { ...manifest.background } }; chromeManifest.optional_permissions = chromeManifest.optional_permissions.filter((val) => val !== "userScripts"); delete chromeManifest.background.scripts; +// Firefox MV3 不支持 "background" permission +firefoxManifest.optional_permissions = firefoxManifest.optional_permissions.filter((val) => val !== "background"); delete firefoxManifest.background.service_worker; delete firefoxManifest.sandbox; firefoxManifest.browser_specific_settings = { diff --git a/src/pages/components/RuntimeSetting/index.tsx b/src/pages/components/RuntimeSetting/index.tsx index 60e7d2c7a..b96477f71 100644 --- a/src/pages/components/RuntimeSetting/index.tsx +++ b/src/pages/components/RuntimeSetting/index.tsx @@ -5,6 +5,7 @@ import FileSystemParams from "../FileSystemParams"; import { systemConfig } from "@App/pages/store/global"; import type { FileSystemType } from "@Packages/filesystem/factory"; import FileSystemFactory from "@Packages/filesystem/factory"; +import { isFirefox } from "@App/pkg/utils/utils"; const CollapseItem = Collapse.Item; @@ -24,52 +25,62 @@ const RuntimeSetting: React.FC = () => { setFilesystemType(res.filesystem); setFilesystemParam(res.params[res.filesystem] || {}); }); - chrome.permissions.contains({ permissions: ["background"] }, (result) => { - if (chrome.runtime.lastError) { - console.error(chrome.runtime.lastError); - return; - } - setEnableBackgroundState(result); - }); - }, []); - - const setEnableBackground = (enable: boolean) => { - if (enable) { - chrome.permissions.request({ permissions: ["background"] }, (granted) => { - if (chrome.runtime.lastError) { - console.error(chrome.runtime.lastError); - Message.error(t("enable_background.enable_failed")!); - return; - } - setEnableBackgroundState(granted); - }); + if (isFirefox()) { + // no background permission } else { - chrome.permissions.remove({ permissions: ["background"] }, (removed) => { + chrome.permissions.contains({ permissions: ["background"] }, (result) => { if (chrome.runtime.lastError) { console.error(chrome.runtime.lastError); - Message.error(t("enable_background.disable_failed")!); return; } - setEnableBackgroundState(!removed); + setEnableBackgroundState(result); }); } + }, []); + + const setEnableBackground = (enable: boolean) => { + if (isFirefox()) { + // no background permission + } else { + if (enable) { + chrome.permissions.request({ permissions: ["background"] }, (granted) => { + if (chrome.runtime.lastError) { + console.error(chrome.runtime.lastError); + Message.error(t("enable_background.enable_failed")!); + return; + } + setEnableBackgroundState(granted); + }); + } else { + chrome.permissions.remove({ permissions: ["background"] }, (removed) => { + if (chrome.runtime.lastError) { + console.error(chrome.runtime.lastError); + Message.error(t("enable_background.disable_failed")!); + return; + } + setEnableBackgroundState(!removed); + }); + } + } }; return (
-
- - { - setEnableBackground(!enableBackground); - }} - > - {t("enable_background.title")} - -
+ {!isFirefox() && ( +
+ + { + setEnableBackground(!enableBackground); + }} + > + {t("enable_background.title")} + +
+ )} {t("enable_background.description")}
From 17a3988ef54eb0d07e00ed1bfa369e39128b0b4e Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Wed, 11 Feb 2026 13:16:49 +0900 Subject: [PATCH 13/20] drop pako --- package.json | 1 - pnpm-lock.yaml | 8 -------- 2 files changed, 9 deletions(-) diff --git a/package.json b/package.json index 0df81cbc6..61e76bfd3 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,6 @@ "i18next": "^23.16.4", "magic-string": "^0.30.21", "monaco-editor": "^0.52.2", - "pako": "^2.1.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-dropzone": "^14.3.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 15cd06d86..afa1152dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,9 +56,6 @@ importers: monaco-editor: specifier: ^0.52.2 version: 0.52.2 - pako: - specifier: ^2.1.0 - version: 2.1.0 react: specifier: ^18.3.1 version: 18.3.1 @@ -3165,9 +3162,6 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - pako@2.1.0: - resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -7519,8 +7513,6 @@ snapshots: pako@1.0.11: {} - pako@2.1.0: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 From 58d01b9b8bb92e706fcca525f3f409e6a4492774 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Wed, 11 Feb 2026 16:03:02 +0900 Subject: [PATCH 14/20] =?UTF-8?q?=E7=B4=A7=E6=80=A5=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=9A=20=E7=8E=AF=E5=A2=83=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=97=B6=E5=8F=8D=E6=B3=A8=E5=86=8C=E6=9C=AA=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/service_worker/runtime.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/app/service/service_worker/runtime.ts b/src/app/service/service_worker/runtime.ts index 4fa3acbbc..6e073fe63 100644 --- a/src/app/service/service_worker/runtime.ts +++ b/src/app/service/service_worker/runtime.ts @@ -667,9 +667,10 @@ export class RuntimeService { } // 取消脚本注册 - async unregisterUserscripts() { + async unregisterUserscripts(forced: boolean = false) { // 检查 registered 避免重复操作增加系统开支 - if (runtimeGlobal.registered) { + // ( registerUserscripts 的环境初始化时必须强制执行 ) + if (forced || runtimeGlobal.registered) { runtimeGlobal.registered = false; // 重置 flag 避免取消注册失败 // 即使注册失败,通过重置 flag 可避免错误地呼叫已取消注册的Script @@ -905,8 +906,9 @@ export class RuntimeService { this.logger.warn("registered = true but scriptcat-content/scriptcat-inject not exists, re-register userscripts."); runtimeGlobal.registered = false; // 异常时强制反注册 } - // 删除旧注册 - await this.unregisterUserscripts(); + // runtimeGlobal.registered 已重置为 false + // 删除旧注册 (registered已重置为 false。因此必须强制执行) + await this.unregisterUserscripts(true); // 使注册时重新注入 chrome.runtime try { await chrome.userScripts.resetWorldConfiguration(); From 3fcea642bf4c5c25a38e27975cad70d7c0df15df Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Wed, 11 Feb 2026 16:09:54 +0900 Subject: [PATCH 15/20] =?UTF-8?q?v1.3=20=E4=BF=AE=E6=AD=A3=E5=90=8D?= =?UTF-8?q?=E5=AD=97=EF=BC=9A=20scriptcat-content=20->=20scriptcat-scripti?= =?UTF-8?q?ng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/service_worker/runtime.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/service/service_worker/runtime.ts b/src/app/service/service_worker/runtime.ts index 6e073fe63..8423e7a2e 100644 --- a/src/app/service/service_worker/runtime.ts +++ b/src/app/service/service_worker/runtime.ts @@ -839,7 +839,7 @@ export class RuntimeService { // 注意:Chrome 不支持 file.js?query retContent = [ { - id: "scriptcat-content", + id: "scriptcat-scripting", js: ["/src/scripting.js"], matches: [""], allFrames: true, From 6fcc2106751c1a309d8bd0672dc17609c18e2884 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Wed, 11 Feb 2026 17:21:38 +0900 Subject: [PATCH 16/20] =?UTF-8?q?v1.3=20=E4=BF=AE=E6=AD=A3=E5=8F=8D?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=9C=AA=E6=AD=A3=E7=A1=AE=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/service_worker/runtime.ts | 41 +++++++++++++++-------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/app/service/service_worker/runtime.ts b/src/app/service/service_worker/runtime.ts index 8423e7a2e..8ea36659e 100644 --- a/src/app/service/service_worker/runtime.ts +++ b/src/app/service/service_worker/runtime.ts @@ -53,9 +53,20 @@ import { scriptToMenu, type TPopupPageLoadInfo } from "./popup_scriptmenu"; const ORIGINAL_URLMATCH_SUFFIX = "{ORIGINAL}"; // 用于标记原始URLPatterns的后缀 +const RuntimeRegisterCode = { + UNSET: 0, + REGISTER_DONE: 1, + UNREGISTER_DONE: 2, +} as const; + +type RuntimeRegisterCode = ValueOf; + const runtimeGlobal = { - registered: false, + registerState: RuntimeRegisterCode.UNSET, messageFlag: "PENDING", +} as { + registerState: RuntimeRegisterCode; + messageFlag: string; }; export type TTabInfo = { @@ -314,15 +325,15 @@ export class RuntimeService { await cacheInstance.set("runtimeStartFlag", true); } - let registered = false; + let count = 0; try { const res = await chrome.userScripts?.getScripts({ ids: ["scriptcat-inject"] }); - registered = res?.length === 1; + count = res?.length; } catch { // 该错误为预期内情况,无需记录 debug 日志 } finally { // 考虑 UserScripts API 不可使用等情况 - runtimeGlobal.registered = registered; + runtimeGlobal.registerState = count === 1 ? RuntimeRegisterCode.REGISTER_DONE : RuntimeRegisterCode.UNSET; } } @@ -667,11 +678,11 @@ export class RuntimeService { } // 取消脚本注册 - async unregisterUserscripts(forced: boolean = false) { + async unregisterUserscripts() { // 检查 registered 避免重复操作增加系统开支 - // ( registerUserscripts 的环境初始化时必须强制执行 ) - if (forced || runtimeGlobal.registered) { - runtimeGlobal.registered = false; + // 已成功注册(true)或是未知有无注册(null)的情况下执行 + if (runtimeGlobal.registerState !== RuntimeRegisterCode.UNREGISTER_DONE) { + runtimeGlobal.registerState = RuntimeRegisterCode.UNREGISTER_DONE; // 重置 flag 避免取消注册失败 // 即使注册失败,通过重置 flag 可避免错误地呼叫已取消注册的Script await Promise.allSettled([chrome.userScripts?.unregister(), chrome.scripting.unregisterContentScripts()]); @@ -894,7 +905,7 @@ export class RuntimeService { if (!this.isUserScriptsAvailable || !this.isLoadScripts) return; // 判断是否已经注册过 - if (runtimeGlobal.registered) { + if (runtimeGlobal.registerState === RuntimeRegisterCode.REGISTER_DONE) { // 异常情况 // 检查scriptcat-content和scriptcat-inject是否存在 const res = await chrome.userScripts.getScripts({ ids: ["scriptcat-inject"] }); @@ -904,11 +915,10 @@ export class RuntimeService { // scriptcat-content/scriptcat-inject不存在的情况 // 走一次重新注册的流程 this.logger.warn("registered = true but scriptcat-content/scriptcat-inject not exists, re-register userscripts."); - runtimeGlobal.registered = false; // 异常时强制反注册 + runtimeGlobal.registerState = RuntimeRegisterCode.UNSET; // 异常时强制反注册 } - // runtimeGlobal.registered 已重置为 false - // 删除旧注册 (registered已重置为 false。因此必须强制执行) - await this.unregisterUserscripts(true); + // 删除旧注册 + await this.unregisterUserscripts(); // 使注册时重新注入 chrome.runtime try { await chrome.userScripts.resetWorldConfiguration(); @@ -928,7 +938,7 @@ export class RuntimeService { const list: chrome.userScripts.RegisteredUserScript[] = [...particularScriptList, ...injectScriptList]; - runtimeGlobal.registered = true; + let failed = false; try { await chrome.userScripts.register(list); } catch (e: any) { @@ -943,6 +953,7 @@ export class RuntimeService { try { await chrome.userScripts.update([script]); } catch (e) { + failed = true; this.logger.error("update error", Logger.E(e)); } } else { @@ -955,9 +966,11 @@ export class RuntimeService { try { await chrome.scripting.registerContentScripts(contentScriptList); } catch (e: any) { + failed = true; this.logger.error("register content.js error", Logger.E(e)); } } + runtimeGlobal.registerState = failed ? RuntimeRegisterCode.UNSET : RuntimeRegisterCode.REGISTER_DONE; } // 给指定tab发送消息 From 30cb5ca48edfba218f8e3bd5644ab97d60c452ea Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Thu, 12 Feb 2026 00:16:36 +0900 Subject: [PATCH 17/20] =?UTF-8?q?inflateRaw=20=E4=BB=A3=E7=A0=81=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rspack-plugins/ZipExecutionPlugin.ts | 33 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/rspack-plugins/ZipExecutionPlugin.ts b/rspack-plugins/ZipExecutionPlugin.ts index 3a9b7adcc..3b18e0f14 100644 --- a/rspack-plugins/ZipExecutionPlugin.ts +++ b/rspack-plugins/ZipExecutionPlugin.ts @@ -5,7 +5,7 @@ import * as acorn from "acorn"; import MagicString from "magic-string"; const trimCode = (code: string) => { - return code.trim(); + return code.replace(/[\r\n]\s+/g, "").trim(); }; export function compileDecodeSource(templateCode: string, base64Data: string, pName: string) { @@ -14,22 +14,21 @@ export function compileDecodeSource(templateCode: string, base64Data: string, pN // * See https://github.com/js-vanilla/inflate-raw/ const inflateRawCode = trimCode(` (()=>{let _=Uint8Array,e=_.fromBase64?.bind(_)??(e=>{let l=atob(e),$=l.length,r=new _($);for(;$--;)r[$]=l.charCodeAt($);return r}), - l=l=>{let $=e(l),r=4*$.length;r<32768&&(r=32768);let t=new _(r),a=0,f=e=>{let l=t.length,$=a+e;if($>l){do l=3*l>>>1;while(l<$);let r=new _(l);r.set(t),t=r}}, - s=new Uint16Array(66400),n=s.subarray(0,32768),u=s.subarray(32768,65536),b=s.subarray(65536,65856),i,o,y=new Int32Array(48),h=0,w=0,g=0, - d=()=>{for(;w<16&&g<$.length;)h|=$[g++]<{d();let e=h&(1<<_)-1;return h>>>=_,w-=_,e},F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15], - k=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],m=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0], - p=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577], - v=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=y.subarray(0,16),A=y.subarray(16,32),B=(_,e)=>{let l=x.fill(0),$=0; - for(let r=0;r<_.length;r++){let t=_[r];t>0&&(l[t]++,t>$&&($=t))}let a=1<<$,f=e.subarray(0,a),s=A,n=0;for(let u=1;u<=$;u++)s[u]=n,n+=l[u];let i=b; - for(let o=0;o<_.length;o++)_[o]>0&&(i[s[_[o]]++]=o);let y=0,h=0;for(let w=1;w<=$;w++){let g=1<>=1;y^=p}}return f},C=_=>{d();let e=_.length-1,l=_[h&e],$=l>>>9;return h>>>=$,w-=$,511&l}, - R=new _(320),W=R.subarray(0,19),j=!1,q=0;for(;!q;){let z=c(3);q=1&z;let D=z>>1;if(0===D){h=w=0;let E=$[g++]|$[g++]<<8;g+=2,f(E),t.set($.subarray(g,g+E),a),a+=E, - g+=E}else{let G,H;if(1===D){if(!j){j=!0;let I=65856,J=R.subarray(0,288);J.fill(8,0,144),J.fill(9,144,256),J.fill(7,256,280),J.fill(8,280,288),B(J,i=s.subarray(I,I+=512)); - let K=R.subarray(0,32).fill(5);B(K,o=s.subarray(I,I+=32))}G=i,H=o}else{let L=c(14),M=(31&L)+257,N=(L>>5&31)+1,O=(L>>10&15)+4;W.fill(0);for(let P=0;P{let $=e(l),r=4*$.length;r<32768&&(r=32768);let t=new _(r),a=0,f=e=>{let l=t.length,$=a+e;if($>l){do l=3*l>>>1;while(l<$); + let r=new _(l);r.set(t),t=r}},s=new Uint16Array(66400),u=s.subarray(0,32768),b=s.subarray(32768,65536),n=s.subarray(65536,65856),i, + o,y=new Int32Array(48),h=0,w=0,g=0,d=()=>{for(;w<16&&g<$.length;)h|=$[g++]<{d();let e=h&(1<<_)-1;return h>>>=_,w-=_,e}, + F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],k=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258], + m=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],v=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577], + x=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],A=y.subarray(0,16),B=y.subarray(16,32),C=(_,e)=>{let l=A.fill(0),$=0;for(let r=0;r<_.length;r++){ + let t=_[r];t>0&&(l[t]++,t>$&&($=t))}let a=1<<$,f=e.subarray(0,a),s=B,u=0;for(let b=1;b<=$;b++)s[b]=u,u+=l[b];let i=n;for(let o=0;o<_.length;o++)_[o]>0&&(i[s[_[o]]++]=o); + let y=0,h=0;for(let w=1;w<=$;w++){let g=1<>=1;y^=v}}return f}, + R=_=>{d();let e=_.length-1,l=_[h&e],$=l>>>9;return h>>>=$,w-=$,511&l},j=new _(320),p=j.subarray(0,19),q=!1,z=0;for(;!z;){let D=c(3);z=1&D;let E=D>>1;if(0===E){ + h=w=0;let G=$[g++]|$[g++]<<8;g+=2,f(G),t.set($.subarray(g,g+G),a),a+=G,g+=G}else{let H,I;if(1===E){if(!q){q=!0;let J=65856,K=j.subarray(0,288);K.fill(8,0,144),K.fill(9,144,256), + K.fill(7,256,280),K.fill(8,280,288),C(K,i=s.subarray(J,J+=512));let L=j.subarray(0,32).fill(5);C(L,o=s.subarray(J,J+=32))}H=i,I=o}else{let M=c(14),N=(31&M)+257,O=(M>>5&31)+1, + P=(M>>10&15)+4;p.fill(0);for(let Q=0;Q0;){ + let _t=a-_r;_e<_t&&(_t=_e),t.set(t.subarray(_r,_r+_t),a),a+=_t,_e-=_t}}}}}return new TextDecoder().decode(t.subarray(0,a))};return l})(); `); // ------------------------------------------------------------------------------------------------- return ` From a085cba1627f84010d897308de79b46e6d4b4c03 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Thu, 12 Feb 2026 00:55:09 +0900 Subject: [PATCH 18/20] =?UTF-8?q?ZipExecutionPlugin=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rspack-plugins/ZipExecutionPlugin.ts | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/rspack-plugins/ZipExecutionPlugin.ts b/rspack-plugins/ZipExecutionPlugin.ts index 3b18e0f14..cafd1bf63 100644 --- a/rspack-plugins/ZipExecutionPlugin.ts +++ b/rspack-plugins/ZipExecutionPlugin.ts @@ -65,9 +65,10 @@ const findAvailableVarName = (source: string) => { const findShortName = (source: string) => { // $H - const candidates = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - .split("") - .map((c) => [c, source.split("$" + c).filter((w, i) => i === 0 || !/[\w$]/.test(w[0])).length] as const); + const filterFn = (w: string, i: number) => i === 0 || !/[\w$]/.test(w[0]); + const candidates = [..."abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"].map( + (c) => [c, source.split("$" + c).filter(filterFn).length] as const + ); candidates.sort((a, b) => a[1] - b[1]); const [candidateChar, _candidatesFreq] = candidates[0]; const pName = "$" + candidateChar; @@ -136,9 +137,9 @@ export class ZipExecutionPlugin { } } - mapped.forEach(([c, d, q]) => { + for (const [c, d, q] of mapped) { operations.push({ ...c, d: d, id: q[1], freq: q[0] }); - }); + } // Replace bottom-up (safe offsets) operations.sort((a, b) => b.start - a.start); @@ -225,11 +226,6 @@ export class ZipExecutionPlugin { let source = asset.source().toString(); - // const ss = this.processFn("switch(e){case\"string_Case1_string\":33;case\"string_Case2_string\":44};\nconst p={s:\"string_Var1_string\",f:`string_Var2_string`,e:\"string_Var3_string\"};"); - // console.log(21399, ss); - - // await new Promise(r => setTimeout(r, 300000)); - const ret = this.processFn(source, filename); if (ret === false) continue; source = ret.source; @@ -312,7 +308,7 @@ export class ZipExecutionPlugin { } } else { // Complex Template: extract individual quasis - node.quasis.forEach((quasi: any) => { + for (const quasi of node.quasis) { const val = quasi.value.cooked ?? quasi.value.raw; if (val && this.isExtractable(quasi, parent, "Quasi", val)) { // Quasis are inside `${}`, usually don't need padding relative to word boundaries @@ -332,14 +328,14 @@ export class ZipExecutionPlugin { }); } } - }); + } } } for (const key of Object.keys(node)) { if (["parent", "loc", "range", "start", "end"].includes(key)) continue; const child = node[key]; - if (Array.isArray(child)) child.forEach((c) => walk(c, node)); + if (Array.isArray(child)) for (const c of child) walk(c, node); else if (child && typeof child === "object" && child.type) walk(child, node); } }; @@ -383,6 +379,9 @@ export class ZipExecutionPlugin { } private normalizeValue(value: string): string { - return value.replace(/\r\n/g, "\n").replace(/\r/g, "\n"); + if (value.includes("\r")) { + value = value.replace(/\r\n|\r/g, "\n"); + } + return value; } } From 8339e2bb3921754ab38d4e7bf54527c0879489b5 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Thu, 12 Feb 2026 20:54:57 +0900 Subject: [PATCH 19/20] Update pnpm-lock.yaml --- pnpm-lock.yaml | 1115 +++++++++++++++--------------------------------- 1 file changed, 334 insertions(+), 781 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afa1152dc..54bf3f45f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,8 +75,8 @@ importers: specifier: ^2.9.3 version: 2.9.3(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-router-dom: - specifier: ^7.6.3 - version: 7.6.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.13.0 + version: 7.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) string-similarity-js: specifier: ^2.1.4 version: 2.1.4 @@ -84,33 +84,30 @@ importers: specifier: ^11.1.0 version: 11.1.0 webdav: - specifier: ^5.8.0 - version: 5.8.0 + specifier: ^5.9.0 + version: 5.9.0 yaml: specifier: ^2.8.1 version: 2.8.1 devDependencies: - '@crowdin/cli': - specifier: ^4.9.0 - version: 4.9.0 '@eslint/compat': specifier: ^1.4.1 - version: 1.4.1(eslint@9.39.1(jiti@2.6.1)) + version: 1.4.1(eslint@9.39.2(jiti@2.6.1)) '@eslint/js': - specifier: 9.38.0 - version: 9.38.0 + specifier: 9.39.2 + version: 9.39.2 '@rspack/cli': - specifier: ^1.5.8 - version: 1.6.1(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1) + specifier: ^1.7.6 + version: 1.7.6(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1) '@rspack/core': - specifier: ^1.5.8 - version: 1.6.1(@swc/helpers@0.5.17) + specifier: ^1.6.8 + version: 1.7.6(@swc/helpers@0.5.17) '@swc/helpers': specifier: ^0.5.17 version: 0.5.17 '@testing-library/jest-dom': - specifier: ^6.6.3 - version: 6.6.3 + specifier: ^6.9.1 + version: 6.9.1 '@testing-library/react': specifier: ^16.3.0 version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -139,8 +136,8 @@ importers: specifier: 66.5.4 version: 66.5.4(postcss@8.5.6) '@vitest/coverage-v8': - specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/node@22.16.0)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1)) + specifier: ^4.0.18 + version: 4.0.18(vitest@4.0.18(@types/node@22.16.0)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1)) autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.5.6) @@ -151,23 +148,23 @@ importers: specifier: ^5.0.1 version: 5.0.1 eslint: - specifier: ^9.38.0 - version: 9.39.1(jiti@2.6.1) + specifier: ^9.39.2 + version: 9.39.2(jiti@2.6.1) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@9.39.1(jiti@2.6.1)) + version: 10.1.8(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-prettier: specifier: ^5.5.4 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2) + version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))(prettier@3.6.2) eslint-plugin-react: specifier: ^7.37.5 - version: 7.37.5(eslint@9.39.1(jiti@2.6.1)) + version: 7.37.5(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.39.1(jiti@2.6.1)) + version: 5.2.0(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-userscripts: specifier: ^0.5.6 - version: 0.5.6(eslint@9.39.1(jiti@2.6.1)) + version: 0.5.6(eslint@9.39.2(jiti@2.6.1)) globals: specifier: ^16.5.0 version: 16.5.0 @@ -188,7 +185,7 @@ importers: version: 8.5.6 postcss-loader: specifier: ^8.2.0 - version: 8.2.0(@rspack/core@1.6.1(@swc/helpers@0.5.17))(postcss@8.5.6)(typescript@5.9.3)(webpack@5.96.1) + version: 8.2.0(@rspack/core@1.7.6(@swc/helpers@0.5.17))(postcss@8.5.6)(typescript@5.9.3)(webpack@5.96.1) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -203,23 +200,19 @@ importers: version: 5.9.3 typescript-eslint: specifier: ^8.46.2 - version: 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + version: 8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) unocss: specifier: 66.5.4 version: 66.5.4(postcss@8.5.6)(vite@7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1)) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/node@22.16.0)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1) + specifier: ^4.0.18 + version: 4.0.18(@types/node@22.16.0)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1) packages: '@adobe/css-tools@4.4.3': resolution: {integrity: sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} @@ -273,6 +266,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/runtime@7.27.6': resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} @@ -293,6 +291,10 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} @@ -300,10 +302,6 @@ packages: '@buttercup/fetch@0.2.1': resolution: {integrity: sha512-sCgECOx8wiqY8NN1xN22BqqKzXYIG2AicNLlakOAI4f0WgyLVUbAigMf8CZhBtJxdudTcB1gD5lciqi44jwJvg==} - '@crowdin/cli@4.9.0': - resolution: {integrity: sha512-kC7NNdqcIEY7EL9qgE7CRsScnbC1w6ttztN9uLnNDj57OPpLEAuPuSs1Uv6NjrK/Rode/QnirNwyg5AjDRIb/w==} - hasBin: true - '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -715,12 +713,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.38.0': - resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.39.1': - resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': @@ -763,18 +757,6 @@ packages: '@iconify/utils@3.0.2': resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - '@jridgewell/gen-mapping@0.3.12': resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} @@ -794,6 +776,9 @@ packages: '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -818,23 +803,23 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@module-federation/error-codes@0.21.2': - resolution: {integrity: sha512-mGbPAAApgjmQUl4J7WAt20aV04a26TyS21GDEpOGXFEQG5FqmZnSJ6FqB8K19HgTKioBT1+fF/Ctl5bGGao/EA==} + '@module-federation/error-codes@0.22.0': + resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==} - '@module-federation/runtime-core@0.21.2': - resolution: {integrity: sha512-LtDnccPxjR8Xqa3daRYr1cH/6vUzK3mQSzgvnfsUm1fXte5syX4ftWw3Eu55VdqNY3yREFRn77AXdu9PfPEZRw==} + '@module-federation/runtime-core@0.22.0': + resolution: {integrity: sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==} - '@module-federation/runtime-tools@0.21.2': - resolution: {integrity: sha512-SgG9NWTYGNYcHSd5MepO3AXf6DNXriIo4sKKM4mu4RqfYhHyP+yNjnF/gvYJl52VD61g0nADmzLWzBqxOqk2tg==} + '@module-federation/runtime-tools@0.22.0': + resolution: {integrity: sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==} - '@module-federation/runtime@0.21.2': - resolution: {integrity: sha512-97jlOx4RAnAHMBTfgU5FBK6+V/pfT6GNX0YjSf8G+uJ3lFy74Y6kg/BevEkChTGw5waCLAkw/pw4LmntYcNN7g==} + '@module-federation/runtime@0.22.0': + resolution: {integrity: sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==} - '@module-federation/sdk@0.21.2': - resolution: {integrity: sha512-t2vHSJ1a9zjg7LLJoEghcytNLzeFCqOat5TbXTav5dgU0xXw82Cf0EfLrxiJL6uUpgbtyvUdqqa2DVAvMPjiiA==} + '@module-federation/sdk@0.22.0': + resolution: {integrity: sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==} - '@module-federation/webpack-bundler-runtime@0.21.2': - resolution: {integrity: sha512-06R/NDY6Uh5RBIaBOFwYWzJCf1dIiQd/DFHToBVhejUT3ZFG7GzHEPIIsAGqMzne/JSmVsvjlXiJu7UthQ6rFA==} + '@module-federation/webpack-bundler-runtime@0.22.0': + resolution: {integrity: sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==} '@napi-rs/wasm-runtime@1.0.7': resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} @@ -851,10 +836,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@pkgr/core@0.2.7': resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -965,66 +946,66 @@ packages: cpu: [x64] os: [win32] - '@rspack/binding-darwin-arm64@1.6.1': - resolution: {integrity: sha512-am7gVsqicKY/FhDfNa/InHxrBd3wRt6rI7sFTaunKaPbPERjWSKr/sI47tB3t8uNYmLQFFhWFijomAhDyrlHMg==} + '@rspack/binding-darwin-arm64@1.7.6': + resolution: {integrity: sha512-NZ9AWtB1COLUX1tA9HQQvWpTy07NSFfKBU8A6ylWd5KH8AePZztpNgLLAVPTuNO4CZXYpwcoclf8jG/luJcQdQ==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.6.1': - resolution: {integrity: sha512-uadcJOal5YTg191+kvi47I0b+U0sRKe8vKFjMXYOrSIcbXGVRdBxROt/HMlKnvg0u/A83f6AABiY6MA2fCs/gw==} + '@rspack/binding-darwin-x64@1.7.6': + resolution: {integrity: sha512-J2g6xk8ZS7uc024dNTGTHxoFzFovAZIRixUG7PiciLKTMP78svbSSWrmW6N8oAsAkzYfJWwQpVgWfFNRHvYxSw==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.6.1': - resolution: {integrity: sha512-n7UGSBzv7PiX+V1Q2bY3S1XWyN3RCykCQUgfhZ+xWietCM/1349jgN7DoXKPllqlof1GPGBjziHU0sQZTC4tag==} + '@rspack/binding-linux-arm64-gnu@1.7.6': + resolution: {integrity: sha512-eQfcsaxhFrv5FmtaA7+O1F9/2yFDNIoPZzV/ZvqvFz5bBXVc4FAm/1fVpBg8Po/kX1h0chBc7Xkpry3cabFW8w==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.6.1': - resolution: {integrity: sha512-P7nx0jsKxx7g3QAnH9UnJDGVgs1M2H7ZQl68SRyrs42TKOd9Md22ynoMIgCK1zoy+skssU6MhWptluSggXqSrA==} + '@rspack/binding-linux-arm64-musl@1.7.6': + resolution: {integrity: sha512-DfQXKiyPIl7i1yECHy4eAkSmlUzzsSAbOjgMuKn7pudsWf483jg0UUYutNgXSlBjc/QSUp7906Cg8oty9OfwPA==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.6.1': - resolution: {integrity: sha512-SdiurC1bV/QHnj7rmrBYJLdsat3uUDWl9KjkVjEbtc8kQV0Ri4/vZRH0nswgzx7hZNY2j0jYuCm5O8+3qeJEMg==} + '@rspack/binding-linux-x64-gnu@1.7.6': + resolution: {integrity: sha512-NdA+2X3lk2GGrMMnTGyYTzM3pn+zNjaqXqlgKmFBXvjfZqzSsKq3pdD1KHZCd5QHN+Fwvoszj0JFsquEVhE1og==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.6.1': - resolution: {integrity: sha512-JoSJu29nV+auOePhe8x2Fzqxiga1YGNcOMWKJ5Uj8rHBZ8FPAiiE+CpLG8TwfpHsivojrY/sy6fE8JldYLV5TQ==} + '@rspack/binding-linux-x64-musl@1.7.6': + resolution: {integrity: sha512-rEy6MHKob02t/77YNgr6dREyJ0e0tv1X6Xsg8Z5E7rPXead06zefUbfazj4RELYySWnM38ovZyJAkPx/gOn3VA==} cpu: [x64] os: [linux] - '@rspack/binding-wasm32-wasi@1.6.1': - resolution: {integrity: sha512-u5NiSHxM7LtIo4cebq/hQPJ9o39u127am3eVJHDzdmBVhTYYO5l7XVUnFmcU8hNHuj/4lJzkFviWFbf3SaRSYA==} + '@rspack/binding-wasm32-wasi@1.7.6': + resolution: {integrity: sha512-YupOrz0daSG+YBbCIgpDgzfMM38YpChv+afZpaxx5Ml7xPeAZIIdgWmLHnQ2rts73N2M1NspAiBwV00Xx0N4Vg==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.6.1': - resolution: {integrity: sha512-u2Lm4iyUstX/H4JavHnFLIlXQwMka6WVvG2XH8uRd6ziNTh0k/u9jlFADzhdZMvxj63L2hNXCs7TrMZTx2VObQ==} + '@rspack/binding-win32-arm64-msvc@1.7.6': + resolution: {integrity: sha512-INj7aVXjBvlZ84kEhSK4kJ484ub0i+BzgnjDWOWM1K+eFYDZjLdAsQSS3fGGXwVc3qKbPIssFfnftATDMTEJHQ==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.6.1': - resolution: {integrity: sha512-/rMU4pjnQeYnkrXmlqeEPiUNT1wHfJ8GR5v2zqcHXBQkAtic3ZsLwjHpucJjrfRsN5CcVChxJl/T7ozlITfcYw==} + '@rspack/binding-win32-ia32-msvc@1.7.6': + resolution: {integrity: sha512-lXGvC+z67UMcw58In12h8zCa9IyYRmuptUBMItQJzu+M278aMuD1nETyGLL7e4+OZ2lvrnnBIcjXN1hfw2yRzw==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.6.1': - resolution: {integrity: sha512-8qsdb5COuZF5Trimo3HHz3N0KuRtrPtRCMK/wi7DOT1nR6CpUeUMPTjvtPl/O/QezQje+cpBFTa5BaQ1WKlHhw==} + '@rspack/binding-win32-x64-msvc@1.7.6': + resolution: {integrity: sha512-zeUxEc0ZaPpmaYlCeWcjSJUPuRRySiSHN23oJ2Xyw0jsQ01Qm4OScPdr0RhEOFuK/UE+ANyRtDo4zJsY52Hadw==} cpu: [x64] os: [win32] - '@rspack/binding@1.6.1': - resolution: {integrity: sha512-6duvh3CbDA3c4HpNkzIOP9z1wn/mKY1Mrxj+AqgcNvsE0ppp1iKlMsJCDgl7SlUauus2AgtM1dIEU+0sRajmwQ==} + '@rspack/binding@1.7.6': + resolution: {integrity: sha512-/NrEcfo8Gx22hLGysanrV6gHMuqZSxToSci/3M4kzEQtF5cPjfOv5pqeLK/+B6cr56ul/OmE96cCdWcXeVnFjQ==} - '@rspack/cli@1.6.1': - resolution: {integrity: sha512-Ec8nOEp+D1Ck5WESn8Q3umKtuDYNGy1wS1n9uiREWL0DKeE3NH/Ldk1a+pHBZmTtZkUm/oIfIaDTxs6V8ze79Q==} + '@rspack/cli@1.7.6': + resolution: {integrity: sha512-oIC8F3es8EIZfme5jy/MCf9KJPhYlR9pBzKr8vzLal1H/aheGobNhiV0tYRl22I2gx9XAQItiea36g04byiEOw==} hasBin: true peerDependencies: '@rspack/core': ^1.0.0-alpha || ^1.x - '@rspack/core@1.6.1': - resolution: {integrity: sha512-hZVrmiZoBTchWUdh/XbeJ5z+GqHW5aPYeufBigmtUeyzul8uJtHlWKmQhpG+lplMf6o1RESTjjxl632TP/Cfhg==} + '@rspack/core@1.7.6': + resolution: {integrity: sha512-Iax6UhrfZqJajA778c1d5DBFbSIqPOSrI34kpNIiNpWd8Jq7mFIa+Z60SQb5ZQDZuUxcCZikjz5BxinFjTkg7Q==} engines: {node: '>=18.12.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -1032,15 +1013,17 @@ packages: '@swc/helpers': optional: true - '@rspack/dev-server@1.1.4': - resolution: {integrity: sha512-kGHYX2jYf3ZiHwVl0aUEPBOBEIG1aWleCDCAi+Jg32KUu3qr/zDUpCEd0wPuHfLEgk0X0xAEYCS6JMO7nBStNQ==} + '@rspack/dev-server@1.1.5': + resolution: {integrity: sha512-cwz0qc6iqqoJhyWqxP7ZqE2wyYNHkBMQUXxoQ0tNoZ4YNRkDyQ4HVJ/3oPSmMKbvJk/iJ16u7xZmwG6sK47q/A==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': '*' - '@rspack/lite-tapable@1.0.1': - resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} - engines: {node: '>=16.0.0'} + '@rspack/lite-tapable@1.1.0': + resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} @@ -1049,8 +1032,8 @@ packages: resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.6.3': - resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} + '@testing-library/jest-dom@6.9.1': + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} '@testing-library/react@16.3.0': @@ -1347,43 +1330,43 @@ packages: peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 - '@vitest/coverage-v8@3.2.4': - resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} + '@vitest/coverage-v8@4.0.18': + resolution: {integrity: sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==} peerDependencies: - '@vitest/browser': 3.2.4 - vitest: 3.2.4 + '@vitest/browser': 4.0.18 + vitest: 4.0.18 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/expect@4.0.18': + resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + '@vitest/mocker@4.0.18': + resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.0.18': + resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@vitest/runner@4.0.18': + resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@vitest/snapshot@4.0.18': + resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@vitest/spy@4.0.18': + resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.0.18': + resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -1495,10 +1478,6 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1507,10 +1486,6 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1570,12 +1545,8 @@ packages: asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - ast-v8-to-istanbul@0.3.3: - resolution: {integrity: sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==} + ast-v8-to-istanbul@0.3.11: + resolution: {integrity: sha512-Qya9fkoofMjCBNVdWINMjB5KZvkYfaO9/anwkWnjxibpWUxo5iHl2sOdP7/uAqaRuUYuoo8rDwnbaaKVFxoUvw==} async@2.6.4: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} @@ -1689,13 +1660,9 @@ packages: caniuse-lite@1.0.30001727: resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1707,18 +1674,10 @@ packages: charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} - chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -1745,10 +1704,6 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - command-exists-promise@2.0.2: - resolution: {integrity: sha512-T6PB6vdFrwnHXg/I0kivM3DqaCGZLjjYSOe0a5WgFKcz1sOnmOeIjnhQPXVXX3QjVbLyTJ85lJkX6lUpukTzaA==} - engines: {node: '>=6'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -1916,10 +1871,6 @@ packages: deep-diff@1.0.2: resolution: {integrity: sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==} - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -2006,21 +1957,12 @@ packages: duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} electron-to-chromium@1.5.180: resolution: {integrity: sha512-ED+GEyEh3kYMwt2faNmgMB0b8O5qtATGgR4RmRsIp4T6p7B8vdMbIedYndnvZfsaXvSzegtpfqRMDNCjjiSduA==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -2040,8 +1982,8 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - entities@6.0.0: - resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} env-paths@2.2.1: @@ -2167,8 +2109,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.39.1: - resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} + eslint@9.39.2: + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2252,8 +2194,8 @@ packages: fast-uri@3.0.3: resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} - fast-xml-parser@4.5.3: - resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} + fast-xml-parser@5.3.5: + resolution: {integrity: sha512-JeaA2Vm9ffQKp9VjvfzObuMCjUYAp5WDYhRYL5LrBPY/jUDlUtOvDfot0vKSkB9tuX885BDHjtw4fZadD95wnA==} hasBin: true fastq@1.17.1: @@ -2263,14 +2205,6 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -2327,10 +2261,6 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -2397,10 +2327,6 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -2578,10 +2504,6 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -2648,10 +2570,6 @@ packages: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} @@ -2751,21 +2669,14 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -2774,12 +2685,12 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2883,9 +2794,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.1.4: - resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -2900,8 +2808,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} @@ -2977,19 +2885,6 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@3.0.2: - resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} - engines: {node: '>= 18'} - - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} @@ -3039,19 +2934,11 @@ packages: node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-fetch@3.3.2: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3111,6 +2998,9 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} @@ -3153,9 +3043,6 @@ packages: resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} engines: {node: '>=16.17'} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.3.0: resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} @@ -3195,27 +3082,16 @@ packages: path-posix@1.0.0: resolution: {integrity: sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - pbf@3.3.0: resolution: {integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==} hasBin: true - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -3226,10 +3102,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -3402,15 +3274,15 @@ packages: react: 15 - 18 react-dom: 15 - 18 - react-router-dom@7.6.3: - resolution: {integrity: sha512-DiWJm9qdUAmiJrVWaeJdu4TKu13+iB/8IEi0EW/XgaHCjW/vWGrwzup0GVvaMteuZjKnh5bEvJP/K0MDnzawHw==} + react-router-dom@7.13.0: + resolution: {integrity: sha512-5CO/l5Yahi2SKC6rGZ+HDEjpjkGaG/ncEP7eWFTvFxbHP8yeeI0PxTDjimtpXYlR3b3i9/WIL4VJttPrESIf2g==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' - react-router@7.6.3: - resolution: {integrity: sha512-zf45LZp5skDC6I3jDLXQUu0u26jtuP4lEGbc7BbdyxenBN1vJSTA18czM2D+h5qyMBuMrD+9uB+mU37HIoKGRA==} + react-router@7.13.0: + resolution: {integrity: sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -3440,10 +3312,6 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -3476,11 +3344,6 @@ packages: resolve-protobuf-schema@2.1.0: resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true @@ -3623,11 +3486,6 @@ packages: resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} engines: {node: '>= 0.4'} - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -3647,10 +3505,6 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -3694,20 +3548,12 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} string-similarity-js@2.1.4: resolution: {integrity: sha512-uApODZNjCHGYROzDSAdCmAHf60L/pMDHnP/yk6TAbvGg7JSPZlSto/ceCI7hZEqzc53/juU2aOJFkM2yUVTMTA==} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - string.prototype.matchall@4.0.12: resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} @@ -3733,14 +3579,6 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -3749,11 +3587,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@3.0.0: - resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} - - strnum@1.1.2: - resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + strnum@2.1.2: + resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -3782,10 +3617,6 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} - engines: {node: '>=18'} - terser-webpack-plugin@5.3.14: resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} engines: {node: '>= 10.13.0'} @@ -3807,10 +3638,6 @@ packages: engines: {node: '>=10'} hasBin: true - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} - engines: {node: '>=18'} - thingies@1.21.0: resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} engines: {node: '>=10.18'} @@ -3823,30 +3650,19 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.1: resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} - engines: {node: '>=12.0.0'} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + tinyrainbow@3.0.3: + resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} engines: {node: '>=14.0.0'} tldts-core@6.1.60: @@ -3872,9 +3688,6 @@ packages: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} @@ -4053,11 +3866,6 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite-node@3.2.4: - resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - vite@7.0.2: resolution: {integrity: sha512-hxdyZDY1CM6SNpKI4w4lcUc3Mtkd9ej4ECWVHSMrOdSinVc2zYOAppHeGc/hzmRo3pxM5blMzkuWHOJA/3NiFw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4098,26 +3906,32 @@ packages: yaml: optional: true - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.0.18: + resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.18 + '@vitest/browser-preview': 4.0.18 + '@vitest/browser-webdriverio': 4.0.18 + '@vitest/ui': 4.0.18 happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/debug': + '@opentelemetry/api': optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': optional: true '@vitest/ui': optional: true @@ -4148,13 +3962,10 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - webdav@5.8.0: - resolution: {integrity: sha512-iuFG7NamJ41Oshg4930iQgfIpRrUiatPWIekeznYgEf2EOraTRcDPTjy7gIOMtkdpKTaqPk1E68NO5PAGtJahA==} + webdav@5.9.0: + resolution: {integrity: sha512-OMJ6wtK1WvCO++aOLoQgE96S8KT4e5aaClWHmHXfFU369r4eyELN569B7EqT4OOUb99mmO58GkyuiCv/Ag6J0Q==} engines: {node: '>=14'} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -4220,9 +4031,6 @@ packages: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -4253,14 +4061,6 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -4295,19 +4095,11 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} - yaml@2.8.1: resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} hasBin: true - yauzl@3.2.0: - resolution: {integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==} - engines: {node: '>=12'} - yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -4324,11 +4116,6 @@ snapshots: '@adobe/css-tools@4.4.3': {} - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.3.0 @@ -4401,6 +4188,10 @@ snapshots: dependencies: '@babel/types': 7.28.5 + '@babel/parser@7.29.0': + dependencies: + '@babel/types': 7.29.0 + '@babel/runtime@7.27.6': {} '@babel/template@7.27.2': @@ -4431,22 +4222,17 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@bcoe/v8-coverage@1.0.2': {} '@buttercup/fetch@0.2.1': optionalDependencies: node-fetch: 3.3.2 - '@crowdin/cli@4.9.0': - dependencies: - command-exists-promise: 2.0.2 - node-fetch: 2.7.0 - shelljs: 0.8.5 - tar: 7.4.3 - yauzl: 3.2.0 - transitivePeerDependencies: - - encoding - '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -4670,23 +4456,23 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.39.1(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.39.2(jiti@2.6.1))': dependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': dependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.4.1(eslint@9.39.1(jiti@2.6.1))': + '@eslint/compat@1.4.1(eslint@9.39.2(jiti@2.6.1))': dependencies: '@eslint/core': 0.17.0 optionalDependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) '@eslint/config-array@0.21.1': dependencies: @@ -4718,9 +4504,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.38.0': {} - - '@eslint/js@9.39.1': {} + '@eslint/js@9.39.2': {} '@eslint/object-schema@2.1.7': {} @@ -4761,21 +4545,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@isaacs/fs-minipass@4.0.1': - dependencies: - minipass: 7.1.2 - - '@istanbuljs/schema@0.1.3': {} - '@jridgewell/gen-mapping@0.3.12': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -4801,6 +4570,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 @@ -4824,30 +4598,30 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@module-federation/error-codes@0.21.2': {} + '@module-federation/error-codes@0.22.0': {} - '@module-federation/runtime-core@0.21.2': + '@module-federation/runtime-core@0.22.0': dependencies: - '@module-federation/error-codes': 0.21.2 - '@module-federation/sdk': 0.21.2 + '@module-federation/error-codes': 0.22.0 + '@module-federation/sdk': 0.22.0 - '@module-federation/runtime-tools@0.21.2': + '@module-federation/runtime-tools@0.22.0': dependencies: - '@module-federation/runtime': 0.21.2 - '@module-federation/webpack-bundler-runtime': 0.21.2 + '@module-federation/runtime': 0.22.0 + '@module-federation/webpack-bundler-runtime': 0.22.0 - '@module-federation/runtime@0.21.2': + '@module-federation/runtime@0.22.0': dependencies: - '@module-federation/error-codes': 0.21.2 - '@module-federation/runtime-core': 0.21.2 - '@module-federation/sdk': 0.21.2 + '@module-federation/error-codes': 0.22.0 + '@module-federation/runtime-core': 0.22.0 + '@module-federation/sdk': 0.22.0 - '@module-federation/sdk@0.21.2': {} + '@module-federation/sdk@0.22.0': {} - '@module-federation/webpack-bundler-runtime@0.21.2': + '@module-federation/webpack-bundler-runtime@0.22.0': dependencies: - '@module-federation/runtime': 0.21.2 - '@module-federation/sdk': 0.21.2 + '@module-federation/runtime': 0.22.0 + '@module-federation/sdk': 0.22.0 '@napi-rs/wasm-runtime@1.0.7': dependencies: @@ -4868,9 +4642,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@pkgjs/parseargs@0.11.0': - optional: true - '@pkgr/core@0.2.7': {} '@polka/url@1.0.0-next.28': {} @@ -4939,56 +4710,56 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.44.2': optional: true - '@rspack/binding-darwin-arm64@1.6.1': + '@rspack/binding-darwin-arm64@1.7.6': optional: true - '@rspack/binding-darwin-x64@1.6.1': + '@rspack/binding-darwin-x64@1.7.6': optional: true - '@rspack/binding-linux-arm64-gnu@1.6.1': + '@rspack/binding-linux-arm64-gnu@1.7.6': optional: true - '@rspack/binding-linux-arm64-musl@1.6.1': + '@rspack/binding-linux-arm64-musl@1.7.6': optional: true - '@rspack/binding-linux-x64-gnu@1.6.1': + '@rspack/binding-linux-x64-gnu@1.7.6': optional: true - '@rspack/binding-linux-x64-musl@1.6.1': + '@rspack/binding-linux-x64-musl@1.7.6': optional: true - '@rspack/binding-wasm32-wasi@1.6.1': + '@rspack/binding-wasm32-wasi@1.7.6': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rspack/binding-win32-arm64-msvc@1.6.1': + '@rspack/binding-win32-arm64-msvc@1.7.6': optional: true - '@rspack/binding-win32-ia32-msvc@1.6.1': + '@rspack/binding-win32-ia32-msvc@1.7.6': optional: true - '@rspack/binding-win32-x64-msvc@1.6.1': + '@rspack/binding-win32-x64-msvc@1.7.6': optional: true - '@rspack/binding@1.6.1': + '@rspack/binding@1.7.6': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.6.1 - '@rspack/binding-darwin-x64': 1.6.1 - '@rspack/binding-linux-arm64-gnu': 1.6.1 - '@rspack/binding-linux-arm64-musl': 1.6.1 - '@rspack/binding-linux-x64-gnu': 1.6.1 - '@rspack/binding-linux-x64-musl': 1.6.1 - '@rspack/binding-wasm32-wasi': 1.6.1 - '@rspack/binding-win32-arm64-msvc': 1.6.1 - '@rspack/binding-win32-ia32-msvc': 1.6.1 - '@rspack/binding-win32-x64-msvc': 1.6.1 - - '@rspack/cli@1.6.1(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1)': + '@rspack/binding-darwin-arm64': 1.7.6 + '@rspack/binding-darwin-x64': 1.7.6 + '@rspack/binding-linux-arm64-gnu': 1.7.6 + '@rspack/binding-linux-arm64-musl': 1.7.6 + '@rspack/binding-linux-x64-gnu': 1.7.6 + '@rspack/binding-linux-x64-musl': 1.7.6 + '@rspack/binding-wasm32-wasi': 1.7.6 + '@rspack/binding-win32-arm64-msvc': 1.7.6 + '@rspack/binding-win32-ia32-msvc': 1.7.6 + '@rspack/binding-win32-x64-msvc': 1.7.6 + + '@rspack/cli@1.7.6(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@rspack/core': 1.6.1(@swc/helpers@0.5.17) - '@rspack/dev-server': 1.1.4(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1) + '@rspack/core': 1.7.6(@swc/helpers@0.5.17) + '@rspack/dev-server': 1.1.5(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1) exit-hook: 4.0.0 webpack-bundle-analyzer: 4.10.2 transitivePeerDependencies: @@ -5000,17 +4771,17 @@ snapshots: - webpack - webpack-cli - '@rspack/core@1.6.1(@swc/helpers@0.5.17)': + '@rspack/core@1.7.6(@swc/helpers@0.5.17)': dependencies: - '@module-federation/runtime-tools': 0.21.2 - '@rspack/binding': 1.6.1 - '@rspack/lite-tapable': 1.0.1 + '@module-federation/runtime-tools': 0.22.0 + '@rspack/binding': 1.7.6 + '@rspack/lite-tapable': 1.1.0 optionalDependencies: '@swc/helpers': 0.5.17 - '@rspack/dev-server@1.1.4(@rspack/core@1.6.1(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1)': + '@rspack/dev-server@1.1.5(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1)': dependencies: - '@rspack/core': 1.6.1(@swc/helpers@0.5.17) + '@rspack/core': 1.7.6(@swc/helpers@0.5.17) chokidar: 3.6.0 http-proxy-middleware: 2.0.9(@types/express@4.17.21) p-retry: 6.2.1 @@ -5025,7 +4796,9 @@ snapshots: - webpack - webpack-cli - '@rspack/lite-tapable@1.0.1': {} + '@rspack/lite-tapable@1.1.0': {} + + '@standard-schema/spec@1.1.0': {} '@swc/helpers@0.5.17': dependencies: @@ -5042,14 +4815,13 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.6.3': + '@testing-library/jest-dom@6.9.1': dependencies: '@adobe/css-tools': 4.4.3 aria-query: 5.3.2 - chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 - lodash: 4.17.21 + picocolors: 1.1.1 redent: 3.0.0 '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -5219,15 +4991,15 @@ snapshots: dependencies: '@types/node': 22.16.2 - '@typescript-eslint/eslint-plugin@8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.46.3 - '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.3 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -5236,14 +5008,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.46.3 '@typescript-eslint/types': 8.46.3 '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.3 debug: 4.4.1 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5266,13 +5038,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.46.3 '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.1 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -5296,13 +5068,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.39.1(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.39.2(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.46.3 '@typescript-eslint/types': 8.46.3 '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5461,66 +5233,58 @@ snapshots: unplugin-utils: 0.3.1 vite: 7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1) - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/node@22.16.0)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.18(vitest@4.0.18(@types/node@22.16.0)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1))': dependencies: - '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.3 - debug: 4.4.1 + '@vitest/utils': 4.0.18 + ast-v8-to-istanbul: 0.3.11 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.21 - magicast: 0.3.5 - std-env: 3.9.0 - test-exclude: 7.0.1 - tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@22.16.0)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1) - transitivePeerDependencies: - - supports-color + istanbul-reports: 3.2.0 + magicast: 0.5.2 + obug: 2.1.1 + std-env: 3.10.0 + tinyrainbow: 3.0.3 + vitest: 4.0.18(@types/node@22.16.0)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1) - '@vitest/expect@3.2.4': + '@vitest/expect@4.0.18': dependencies: + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.2 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.2.0 - tinyrainbow: 2.0.0 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 + chai: 6.2.2 + tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1))': + '@vitest/mocker@4.0.18(vite@7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1))': dependencies: - '@vitest/spy': 3.2.4 + '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1) - '@vitest/pretty-format@3.2.4': + '@vitest/pretty-format@4.0.18': dependencies: - tinyrainbow: 2.0.0 + tinyrainbow: 3.0.3 - '@vitest/runner@3.2.4': + '@vitest/runner@4.0.18': dependencies: - '@vitest/utils': 3.2.4 + '@vitest/utils': 4.0.18 pathe: 2.0.3 - strip-literal: 3.0.0 - '@vitest/snapshot@3.2.4': + '@vitest/snapshot@4.0.18': dependencies: - '@vitest/pretty-format': 3.2.4 + '@vitest/pretty-format': 4.0.18 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.3 + '@vitest/spy@4.0.18': {} - '@vitest/utils@3.2.4': + '@vitest/utils@4.0.18': dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.1.4 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.0.18 + tinyrainbow: 3.0.3 '@webassemblyjs/ast@1.14.1': dependencies: @@ -5674,16 +5438,12 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -5783,13 +5543,11 @@ snapshots: dependencies: safer-buffer: 2.1.2 - assertion-error@2.0.1: {} - - ast-v8-to-istanbul@0.3.3: + ast-v8-to-istanbul@0.3.11: dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 - js-tokens: 9.0.1 + js-tokens: 10.0.0 async@2.6.4: dependencies: @@ -5919,18 +5677,7 @@ snapshots: caniuse-lite@1.0.30001727: {} - chai@5.2.0: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.4 - pathval: 2.0.1 - - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + chai@6.2.2: {} chalk@4.1.2: dependencies: @@ -5941,8 +5688,6 @@ snapshots: charenc@0.0.2: {} - check-error@2.1.1: {} - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -5955,8 +5700,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chownr@3.0.0: {} - chrome-trace-event@1.0.4: optional: true @@ -5984,8 +5727,6 @@ snapshots: colorette@2.0.20: {} - command-exists-promise@2.0.2: {} - commander@2.20.3: {} commander@7.2.0: {} @@ -6141,8 +5882,6 @@ snapshots: deep-diff@1.0.2: {} - deep-eql@5.0.2: {} - deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -6213,16 +5952,10 @@ snapshots: duplexer@0.1.2: {} - eastasianwidth@0.2.0: {} - ee-first@1.1.1: {} electron-to-chromium@1.5.180: {} - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -6239,7 +5972,7 @@ snapshots: entities@4.5.0: {} - entities@6.0.0: {} + entities@6.0.1: {} env-paths@2.2.1: {} @@ -6413,27 +6146,27 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.39.1(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) eslint-linter-browserify@9.26.0: {} - eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))(prettier@3.6.2): dependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.8 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 10.1.8(eslint@9.39.1(jiti@2.6.1)) + eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) - eslint-plugin-react@7.37.5(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-react@7.37.5(eslint@9.39.2(jiti@2.6.1)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -6441,7 +6174,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -6455,9 +6188,9 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-userscripts@0.5.6(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-userscripts@0.5.6(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) semver: 7.7.2 eslint-scope@5.1.1: @@ -6475,15 +6208,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.1(jiti@2.6.1): + eslint@9.39.2(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.39.1 + '@eslint/js': 9.39.2 '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -6610,9 +6343,9 @@ snapshots: fast-uri@3.0.3: {} - fast-xml-parser@4.5.3: + fast-xml-parser@5.3.5: dependencies: - strnum: 1.1.2 + strnum: 2.1.2 fastq@1.17.1: dependencies: @@ -6622,10 +6355,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fdir@6.4.6(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -6681,11 +6410,6 @@ snapshots: dependencies: is-callable: 1.2.7 - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - formdata-polyfill@4.0.10: dependencies: fetch-blob: 3.2.0 @@ -6769,15 +6493,6 @@ snapshots: glob-to-regexp@0.4.1: optional: true - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -6956,8 +6671,6 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 - interpret@1.4.0: {} - ipaddr.js@1.9.1: {} ipaddr.js@2.2.0: {} @@ -7016,8 +6729,6 @@ snapshots: dependencies: call-bound: 1.0.3 - is-fullwidth-code-point@3.0.0: {} - is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.2 @@ -7106,15 +6817,7 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.29 - debug: 4.4.1 - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -7128,12 +6831,6 @@ snapshots: has-symbols: 1.1.0 set-function-name: 2.0.2 - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jest-worker@27.5.1: dependencies: '@types/node': 22.16.2 @@ -7143,9 +6840,9 @@ snapshots: jiti@2.6.1: {} - js-tokens@4.0.0: {} + js-tokens@10.0.0: {} - js-tokens@9.0.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.0: dependencies: @@ -7263,8 +6960,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.1.4: {} - lru-cache@10.4.3: {} luxon@3.7.2: {} @@ -7275,10 +6970,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.3.5: + magicast@0.5.2: dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 source-map-js: 1.2.1 make-dir@4.0.0: @@ -7342,14 +7037,6 @@ snapshots: dependencies: brace-expansion: 2.0.2 - minipass@7.1.2: {} - - minizlib@3.0.2: - dependencies: - minipass: 7.1.2 - - mkdirp@3.0.1: {} - mlly@1.7.4: dependencies: acorn: 8.15.0 @@ -7389,10 +7076,6 @@ snapshots: node-fetch-native@1.6.4: {} - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - node-fetch@3.3.2: dependencies: data-uri-to-buffer: 4.0.1 @@ -7453,6 +7136,8 @@ snapshots: obuf@1.1.2: {} + obug@2.1.1: {} + ofetch@1.4.1: dependencies: destr: 2.0.3 @@ -7507,8 +7192,6 @@ snapshots: is-network-error: 1.1.0 retry: 0.13.1 - package-json-from-dist@1.0.1: {} - package-manager-detector@1.3.0: {} pako@1.0.11: {} @@ -7540,32 +7223,21 @@ snapshots: path-posix@1.0.0: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - path-to-regexp@0.1.12: {} pathe@2.0.3: {} - pathval@2.0.1: {} - pbf@3.3.0: dependencies: ieee754: 1.2.1 resolve-protobuf-schema: 2.1.0 - pend@1.2.0: {} - perfect-debounce@1.0.0: {} picocolors@1.1.1: {} picomatch@2.3.1: {} - picomatch@4.0.2: {} - picomatch@4.0.3: {} pkg-types@1.3.1: @@ -7584,14 +7256,14 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-loader@8.2.0(@rspack/core@1.6.1(@swc/helpers@0.5.17))(postcss@8.5.6)(typescript@5.9.3)(webpack@5.96.1): + postcss-loader@8.2.0(@rspack/core@1.7.6(@swc/helpers@0.5.17))(postcss@8.5.6)(typescript@5.9.3)(webpack@5.96.1): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.2 optionalDependencies: - '@rspack/core': 1.6.1(@swc/helpers@0.5.17) + '@rspack/core': 1.7.6(@swc/helpers@0.5.17) webpack: 5.96.1 transitivePeerDependencies: - typescript @@ -7744,13 +7416,13 @@ snapshots: transitivePeerDependencies: - '@types/react' - react-router-dom@7.6.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router-dom@7.13.0(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) - react-router: 7.6.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router: 7.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-router@7.6.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router@7.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: cookie: 1.0.2 react: 18.3.1 @@ -7791,10 +7463,6 @@ snapshots: dependencies: picomatch: 2.3.1 - rechoir@0.6.2: - dependencies: - resolve: 1.22.10 - redent@3.0.0: dependencies: indent-string: 4.0.0 @@ -7833,12 +7501,6 @@ snapshots: dependencies: protocol-buffers-schema: 3.6.0 - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: dependencies: is-core-module: 2.16.1 @@ -8033,12 +7695,6 @@ snapshots: shell-quote@1.8.2: {} - shelljs@0.8.5: - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -8069,8 +7725,6 @@ snapshots: siginfo@2.0.0: {} - signal-exit@4.1.0: {} - simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 @@ -8131,22 +7785,10 @@ snapshots: statuses@2.0.1: {} - std-env@3.9.0: {} + std-env@3.10.0: {} string-similarity-js@2.1.4: {} - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 @@ -8199,25 +7841,13 @@ snapshots: dependencies: safe-buffer: 5.2.1 - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - strip-indent@3.0.0: dependencies: min-indent: 1.0.1 strip-json-comments@3.1.1: {} - strip-literal@3.0.0: - dependencies: - js-tokens: 9.0.1 - - strnum@1.1.2: {} + strnum@2.1.2: {} supports-color@7.2.0: dependencies: @@ -8247,15 +7877,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - tar@7.4.3: - dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.2 - minizlib: 3.0.2 - mkdirp: 3.0.1 - yallist: 5.0.0 - terser-webpack-plugin@5.3.14(webpack@5.96.1): dependencies: '@jridgewell/trace-mapping': 0.3.29 @@ -8274,12 +7895,6 @@ snapshots: source-map-support: 0.5.21 optional: true - test-exclude@7.0.1: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 - minimatch: 9.0.5 - thingies@1.21.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -8288,25 +7903,16 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.2: {} - tinyexec@1.0.1: {} - tinyglobby@0.2.14: - dependencies: - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + tinyexec@1.0.2: {} tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - - tinyspy@4.0.3: {} + tinyrainbow@3.0.3: {} tldts-core@6.1.60: {} @@ -8326,8 +7932,6 @@ snapshots: dependencies: tldts: 6.1.60 - tr46@0.0.3: {} - tr46@5.1.1: dependencies: punycode: 2.3.1 @@ -8424,13 +8028,13 @@ snapshots: possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.1(jiti@2.6.1) + '@typescript-eslint/utils': 8.46.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -8533,35 +8137,14 @@ snapshots: vary@1.1.2: {} - vite-node@3.2.4(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1): - dependencies: - cac: 6.7.14 - debug: 4.4.1 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vite@7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1): dependencies: esbuild: 0.25.5 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.44.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.16.0 fsevents: 2.3.3 @@ -8570,30 +8153,27 @@ snapshots: tsx: 4.19.2 yaml: 2.8.1 - vitest@3.2.4(@types/node@22.16.0)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1): + vitest@4.0.18(@types/node@22.16.0)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1): dependencies: - '@types/chai': 5.2.2 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.2.0 - debug: 4.4.1 + '@vitest/expect': 4.0.18 + '@vitest/mocker': 4.0.18(vite@7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.18 + '@vitest/runner': 4.0.18 + '@vitest/snapshot': 4.0.18 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 + es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.21 + obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.2 - std-env: 3.9.0 + picomatch: 4.0.3 + std-env: 3.10.0 tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.14 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 vite: 7.0.2(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@22.16.0)(jiti@2.6.1)(terser@5.43.1)(tsx@4.19.2)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.16.0 @@ -8607,7 +8187,6 @@ snapshots: - sass-embedded - stylus - sugarss - - supports-color - terser - tsx - yaml @@ -8632,13 +8211,13 @@ snapshots: web-streams-polyfill@3.3.3: {} - webdav@5.8.0: + webdav@5.9.0: dependencies: '@buttercup/fetch': 0.2.1 base-64: 1.0.0 byte-length: 1.0.2 - entities: 6.0.0 - fast-xml-parser: 4.5.3 + entities: 6.0.1 + fast-xml-parser: 5.3.5 hot-patcher: 2.0.1 layerr: 3.0.0 md5: 2.3.0 @@ -8649,8 +8228,6 @@ snapshots: url-join: 5.0.0 url-parse: 1.5.10 - webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} webpack-bundle-analyzer@4.10.2: @@ -8773,11 +8350,6 @@ snapshots: tr46: 5.1.1 webidl-conversions: 7.0.0 - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -8829,18 +8401,6 @@ snapshots: word-wrap@1.2.5: {} - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - wrappy@1.0.2: {} ws@7.5.10: {} @@ -8851,15 +8411,8 @@ snapshots: xmlchars@2.2.0: {} - yallist@5.0.0: {} - yaml@2.8.1: {} - yauzl@3.2.0: - dependencies: - buffer-crc32: 0.2.13 - pend: 1.2.0 - yn@3.1.1: {} yocto-queue@0.1.0: {} From 63144910d339ceea22861ae987da8727b819c780 Mon Sep 17 00:00:00 2001 From: cyfung1031 <44498510+cyfung1031@users.noreply.github.com> Date: Thu, 12 Feb 2026 20:58:49 +0900 Subject: [PATCH 20/20] Update pnpm-lock.yaml --- pnpm-lock.yaml | 687 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 462 insertions(+), 225 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 54bf3f45f..3c2b0cea6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -98,7 +98,7 @@ importers: version: 9.39.2 '@rspack/cli': specifier: ^1.7.6 - version: 1.7.6(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1) + version: 1.7.6(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.25)(tslib@2.8.1)(webpack@5.96.1) '@rspack/core': specifier: ^1.6.8 version: 1.7.6(@swc/helpers@0.5.17) @@ -788,14 +788,116 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/json-pack@1.2.0': - resolution: {integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==} + '@jsonjoy.com/base64@17.67.0': + resolution: {integrity: sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/util@1.5.0': - resolution: {integrity: sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==} + '@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.56.10': + resolution: {integrity: sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-fsa@4.56.10': + resolution: {integrity: sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-builtins@4.56.10': + resolution: {integrity: sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-to-fsa@4.56.10': + resolution: {integrity: sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-utils@4.56.10': + resolution: {integrity: sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node@4.56.10': + resolution: {integrity: sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-print@4.56.10': + resolution: {integrity: sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-snapshot@4.56.10': + resolution: {integrity: sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==} + 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' @@ -1069,8 +1171,8 @@ packages: '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} '@types/bonjour@3.5.13': resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} @@ -1102,14 +1204,11 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - - '@types/express-serve-static-core@5.0.6': - resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + '@types/express-serve-static-core@4.19.8': + resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} '@types/filesystem@0.0.36': resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==} @@ -1120,11 +1219,11 @@ packages: '@types/har-format@1.2.16': resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==} - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/http-proxy@1.17.16': - resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + '@types/http-proxy@1.17.17': + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1135,8 +1234,8 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + '@types/node-forge@1.3.14': + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} '@types/node@22.16.0': resolution: {integrity: sha512-B2egV9wALML1JCpv3VQoQ+yesQKAmNMBIAY7OteVrikcOcAkWm+dGL6qpeCktPjAv6N1JLnhbNiqS35UpFyBsQ==} @@ -1147,8 +1246,8 @@ packages: '@types/prop-types@15.7.15': resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - '@types/qs@6.9.18': - resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -1167,14 +1266,17 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} + + '@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.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} '@types/serviceworker@0.0.120': resolution: {integrity: sha512-pVe9ZC82J4uRw+v35TAydtsBAbX1V79uZ0H0rQNtx7oFPImuKY1FTEqSbjTMOtAmb5AWS6z2FFCShu6WMylNng==} @@ -1591,8 +1693,8 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} bonjour-service@1.3.0: @@ -1719,8 +1821,8 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} - compression@1.8.0: - resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} engines: {node: '>= 0.8.0'} compute-scroll-into-view@1.0.20: @@ -1751,11 +1853,11 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} cookie@1.0.2: @@ -1878,12 +1980,12 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} engines: {node: '>=18'} define-data-property@1.1.4: @@ -1963,10 +2065,6 @@ packages: electron-to-chromium@1.5.180: resolution: {integrity: sha512-ED+GEyEh3kYMwt2faNmgMB0b8O5qtATGgR4RmRsIp4T6p7B8vdMbIedYndnvZfsaXvSzegtpfqRMDNCjjiSduA==} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} @@ -2168,8 +2266,8 @@ packages: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + express@4.22.1: + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} engines: {node: '>= 0.10.0'} exsolve@1.0.7: @@ -2230,8 +2328,8 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} engines: {node: '>= 0.8'} find-up@5.0.0: @@ -2249,8 +2347,8 @@ packages: resolution: {integrity: sha512-QFaHbhv9WPUeLYBDe/PAuLKJ4Dd9OPvKs9xZBr3yLXnUrDNaVXKu2baDBXe3naPY30hgHYSsf2JW4jzas2mDEQ==} engines: {node: '>=10'} - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -2324,6 +2422,12 @@ 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==} @@ -2413,16 +2517,16 @@ packages: http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} engines: {node: '>= 0.6'} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} - http-parser-js@0.5.9: - resolution: {integrity: sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==} + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} @@ -2494,9 +2598,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==} @@ -2508,8 +2609,8 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + ipaddr.js@2.3.0: + resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} engines: {node: '>= 10'} is-array-buffer@3.0.5: @@ -2593,8 +2694,8 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} - is-network-error@1.1.0: - resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} + is-network-error@1.3.0: + resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} engines: {node: '>=16'} is-number-object@1.1.1: @@ -2737,8 +2838,8 @@ packages: kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - launch-editor@2.10.0: - resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} + launch-editor@2.12.0: + resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==} layerr@3.0.0: resolution: {integrity: sha512-tv754Ki2dXpPVApOrjTyRo4/QegVb9eVFq4mjqp4+NM5NaX7syQvN5BBNfV/ZpAHCEHV24XdUVrBAoka4jt3pA==} @@ -2832,9 +2933,10 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - memfs@4.17.0: - resolution: {integrity: sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==} - engines: {node: '>= 4.0.0'} + memfs@4.56.10: + resolution: {integrity: sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==} + peerDependencies: + tslib: '2' merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -2866,6 +2968,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -2943,8 +3049,8 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + node-forge@1.3.3: + resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} engines: {node: '>= 6.13.0'} node-releases@2.0.19: @@ -3008,15 +3114,15 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + 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==} - open@10.1.0: - resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} opener@1.5.2: @@ -3174,8 +3280,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} quansync@0.2.10: @@ -3197,8 +3303,8 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} react-clientside-effect@1.2.6: @@ -3364,8 +3470,8 @@ packages: rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} run-parallel@1.2.0: @@ -3432,19 +3538,19 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + serve-index@1.9.2: + resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} engines: {node: '>= 0.8.0'} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} engines: {node: '>= 0.8.0'} set-cookie-parser@2.7.1: @@ -3465,9 +3571,6 @@ packages: setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -3482,8 +3585,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.2: - resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} side-channel-list@1.0.0: @@ -3544,8 +3647,8 @@ packages: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} std-env@3.10.0: @@ -3638,8 +3741,8 @@ packages: engines: {node: '>=10'} hasBin: true - thingies@1.21.0: - resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + thingies@2.5.0: + resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} engines: {node: '>=10.18'} peerDependencies: tslib: ^2 @@ -3698,8 +3801,8 @@ packages: tree-changes@0.9.3: resolution: {integrity: sha512-vvvS+O6kEeGRzMglTKbc19ltLWNtmNt1cpBoSYLj/iEcPVvpJasemKOlxBrmZaCtDJoF+4bwv3m01UKYi8mukQ==} - tree-dump@1.0.2: - resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} + tree-dump@1.1.0: + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -3975,8 +4078,8 @@ packages: engines: {node: '>= 10.13.0'} hasBin: true - webpack-dev-middleware@7.4.2: - resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} + webpack-dev-middleware@7.4.5: + resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.0.0 @@ -4088,6 +4191,10 @@ packages: utf-8-validate: optional: true + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -4560,7 +4667,7 @@ snapshots: '@jridgewell/source-map@0.3.10': dependencies: '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 optional: true '@jridgewell/sourcemap-codec@1.5.5': {} @@ -4584,16 +4691,127 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1)': + '@jsonjoy.com/base64@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-core@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-fsa@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-builtins@4.56.10(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-to-fsa@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-utils@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.10(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-print@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-snapshot@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/json-pack': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': dependencies: '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/util@1.5.0(tslib@2.8.1)': + '@jsonjoy.com/util@17.67.0(tslib@2.8.1)': dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) tslib: 2.8.1 '@leichtgewicht/ip-codec@2.0.5': {} @@ -4755,11 +4973,11 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.7.6 '@rspack/binding-win32-x64-msvc': 1.7.6 - '@rspack/cli@1.7.6(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1)': + '@rspack/cli@1.7.6(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.25)(tslib@2.8.1)(webpack@5.96.1)': dependencies: '@discoveryjs/json-ext': 0.5.7 '@rspack/core': 1.7.6(@swc/helpers@0.5.17) - '@rspack/dev-server': 1.1.5(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1) + '@rspack/dev-server': 1.1.5(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.25)(tslib@2.8.1)(webpack@5.96.1) exit-hook: 4.0.0 webpack-bundle-analyzer: 4.10.2 transitivePeerDependencies: @@ -4767,6 +4985,7 @@ snapshots: - bufferutil - debug - supports-color + - tslib - utf-8-validate - webpack - webpack-cli @@ -4779,19 +4998,20 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.17 - '@rspack/dev-server@1.1.5(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.21)(webpack@5.96.1)': + '@rspack/dev-server@1.1.5(@rspack/core@1.7.6(@swc/helpers@0.5.17))(@types/express@4.17.25)(tslib@2.8.1)(webpack@5.96.1)': dependencies: '@rspack/core': 1.7.6(@swc/helpers@0.5.17) chokidar: 3.6.0 - http-proxy-middleware: 2.0.9(@types/express@4.17.21) + http-proxy-middleware: 2.0.9(@types/express@4.17.25) p-retry: 6.2.1 - webpack-dev-server: 5.2.2(webpack@5.96.1) + webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.96.1) ws: 8.18.1 transitivePeerDependencies: - '@types/express' - bufferutil - debug - supports-color + - tslib - utf-8-validate - webpack - webpack-cli @@ -4849,7 +5069,7 @@ snapshots: '@types/aria-query@5.0.4': {} - '@types/body-parser@1.19.5': + '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 '@types/node': 22.16.2 @@ -4869,7 +5089,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.0.6 + '@types/express-serve-static-core': 4.19.8 '@types/node': 22.16.2 '@types/connect@3.4.38': @@ -4894,26 +5114,19 @@ snapshots: '@types/estree@1.0.8': {} - '@types/express-serve-static-core@4.19.6': + '@types/express-serve-static-core@4.19.8': dependencies: '@types/node': 22.16.2 - '@types/qs': 6.9.18 + '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 + '@types/send': 1.2.1 - '@types/express-serve-static-core@5.0.6': + '@types/express@4.17.25': dependencies: - '@types/node': 22.16.2 - '@types/qs': 6.9.18 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - - '@types/express@4.17.21': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.18 - '@types/serve-static': 1.15.7 + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 4.19.8 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.10 '@types/filesystem@0.0.36': dependencies: @@ -4923,9 +5136,9 @@ snapshots: '@types/har-format@1.2.16': {} - '@types/http-errors@2.0.4': {} + '@types/http-errors@2.0.5': {} - '@types/http-proxy@1.17.16': + '@types/http-proxy@1.17.17': dependencies: '@types/node': 22.16.2 @@ -4935,7 +5148,7 @@ snapshots: '@types/mime@1.3.5': {} - '@types/node-forge@1.3.11': + '@types/node-forge@1.3.14': dependencies: '@types/node': 22.16.2 @@ -4949,7 +5162,7 @@ snapshots: '@types/prop-types@15.7.15': {} - '@types/qs@6.9.18': {} + '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} @@ -4966,20 +5179,24 @@ snapshots: '@types/semver@7.7.1': {} - '@types/send@0.17.4': + '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 '@types/node': 22.16.2 + '@types/send@1.2.1': + dependencies: + '@types/node': 22.16.2 + '@types/serve-index@1.9.4': dependencies: - '@types/express': 4.17.21 + '@types/express': 4.17.25 - '@types/serve-static@1.15.7': + '@types/serve-static@1.15.10': dependencies: - '@types/http-errors': 2.0.4 + '@types/http-errors': 2.0.5 '@types/node': 22.16.2 - '@types/send': 0.17.4 + '@types/send': 0.17.6 '@types/serviceworker@0.0.120': {} @@ -5589,18 +5806,18 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.3: + body-parser@1.20.4: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 + qs: 6.14.1 + raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: @@ -5643,7 +5860,7 @@ snapshots: bundle-name@4.1.0: dependencies: - run-applescript: 7.0.0 + run-applescript: 7.1.0 byte-length@1.0.2: {} @@ -5740,15 +5957,15 @@ snapshots: compressible@2.0.18: dependencies: - mime-db: 1.54.0 + mime-db: 1.52.0 - compression@1.8.0: + compression@1.8.1: dependencies: bytes: 3.1.2 compressible: 2.0.18 debug: 2.6.9 negotiator: 0.6.4 - on-headers: 1.0.2 + on-headers: 1.1.0 safe-buffer: 5.2.1 vary: 1.1.2 transitivePeerDependencies: @@ -5772,9 +5989,9 @@ snapshots: content-type@1.0.5: {} - cookie-signature@1.0.6: {} + cookie-signature@1.0.7: {} - cookie@0.7.1: {} + cookie@0.7.2: {} cookie@1.0.2: {} @@ -5886,12 +6103,12 @@ snapshots: deepmerge@4.3.1: {} - default-browser-id@5.0.0: {} + default-browser-id@5.0.1: {} - default-browser@5.2.1: + default-browser@5.5.0: dependencies: bundle-name: 4.1.0 - default-browser-id: 5.0.0 + default-browser-id: 5.0.1 define-data-property@1.1.4: dependencies: @@ -5956,8 +6173,6 @@ snapshots: electron-to-chromium@1.5.180: {} - encodeurl@1.0.2: {} - encodeurl@2.0.0: {} end-of-stream@1.4.4: @@ -6287,36 +6502,36 @@ snapshots: expect-type@1.2.2: {} - express@4.21.2: + express@4.22.1: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.3 + body-parser: 1.20.4 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 + cookie: 0.7.2 + cookie-signature: 1.0.7 debug: 2.6.9 depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.3.1 + finalhandler: 1.3.2 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.13.0 + qs: 6.14.1 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 + send: 0.19.2 + serve-static: 1.16.3 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 @@ -6376,14 +6591,14 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: + finalhandler@1.3.2: dependencies: debug: 2.6.9 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 - statuses: 2.0.1 + statuses: 2.0.2 unpipe: 1.0.0 transitivePeerDependencies: - supports-color @@ -6404,7 +6619,7 @@ snapshots: dependencies: tslib: 2.8.1 - follow-redirects@1.15.9: {} + follow-redirects@1.15.11: {} for-each@0.3.3: dependencies: @@ -6490,6 +6705,10 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regex.js@1.2.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + glob-to-regexp@0.4.1: optional: true @@ -6570,22 +6789,23 @@ snapshots: http-deceiver@1.2.7: {} - http-errors@1.6.3: + http-errors@1.8.1: dependencies: depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 statuses: 1.5.0 + toidentifier: 1.0.1 - http-errors@2.0.0: + http-errors@2.0.1: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 toidentifier: 1.0.1 - http-parser-js@0.5.9: {} + http-parser-js@0.5.10: {} http-proxy-agent@7.0.2: dependencies: @@ -6594,22 +6814,22 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.21): + http-proxy-middleware@2.0.9(@types/express@4.17.25): dependencies: - '@types/http-proxy': 1.17.16 + '@types/http-proxy': 1.17.17 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.21 + '@types/express': 4.17.25 transitivePeerDependencies: - debug http-proxy@1.18.1: dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.9 + follow-redirects: 1.15.11 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -6661,8 +6881,6 @@ snapshots: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.3: {} - inherits@2.0.4: {} internal-slot@1.1.0: @@ -6673,7 +6891,7 @@ snapshots: ipaddr.js@1.9.1: {} - ipaddr.js@2.2.0: {} + ipaddr.js@2.3.0: {} is-array-buffer@3.0.5: dependencies: @@ -6747,7 +6965,7 @@ snapshots: is-map@2.0.3: {} - is-network-error@1.1.0: {} + is-network-error@1.3.0: {} is-number-object@1.1.1: dependencies: @@ -6907,10 +7125,10 @@ snapshots: kolorist@1.8.0: {} - launch-editor@2.10.0: + launch-editor@2.12.0: dependencies: picocolors: 1.1.1 - shell-quote: 1.8.2 + shell-quote: 1.8.3 layerr@3.0.0: {} @@ -6994,11 +7212,21 @@ snapshots: media-typer@0.3.0: {} - memfs@4.17.0: - dependencies: - '@jsonjoy.com/json-pack': 1.2.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) - tree-dump: 1.0.2(tslib@2.8.1) + memfs@4.56.10(tslib@2.8.1): + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-to-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 merge-descriptors@1.0.3: {} @@ -7023,6 +7251,10 @@ snapshots: dependencies: mime-db: 1.52.0 + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} min-indent@1.0.1: {} @@ -7082,7 +7314,7 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-forge@1.3.1: {} + node-forge@1.3.3: {} node-releases@2.0.19: {} @@ -7148,18 +7380,18 @@ snapshots: dependencies: ee-first: 1.1.1 - on-headers@1.0.2: {} + on-headers@1.1.0: {} once@1.4.0: dependencies: wrappy: 1.0.2 - open@10.1.0: + open@10.2.0: dependencies: - default-browser: 5.2.1 + default-browser: 5.5.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 - is-wsl: 3.1.0 + wsl-utils: 0.1.0 opener@1.5.2: {} @@ -7189,7 +7421,7 @@ snapshots: p-retry@6.2.1: dependencies: '@types/retry': 0.12.2 - is-network-error: 1.1.0 + is-network-error: 1.3.0 retry: 0.13.1 package-manager-detector@1.3.0: {} @@ -7307,7 +7539,7 @@ snapshots: punycode@2.3.1: {} - qs@6.13.0: + qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -7326,10 +7558,10 @@ snapshots: range-parser@1.2.1: {} - raw-body@2.5.2: + raw-body@2.5.3: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 unpipe: 1.0.0 @@ -7539,7 +7771,7 @@ snapshots: rrweb-cssom@0.8.0: {} - run-applescript@7.0.0: {} + run-applescript@7.1.0: {} run-parallel@1.2.0: dependencies: @@ -7604,28 +7836,28 @@ snapshots: selfsigned@2.4.1: dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 + '@types/node-forge': 1.3.14 + node-forge: 1.3.3 semver@6.3.1: {} semver@7.7.2: {} - send@0.19.0: + send@0.19.2: dependencies: debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 mime: 1.6.0 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color @@ -7634,24 +7866,24 @@ snapshots: randombytes: 2.1.0 optional: true - serve-index@1.9.1: + 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.6.3 + http-errors: 1.8.1 mime-types: 2.1.35 parseurl: 1.3.3 transitivePeerDependencies: - supports-color - serve-static@1.16.2: + serve-static@1.16.3: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.0 + send: 0.19.2 transitivePeerDependencies: - supports-color @@ -7681,8 +7913,6 @@ snapshots: setimmediate@1.0.5: {} - setprototypeof@1.1.0: {} - setprototypeof@1.2.0: {} shallowequal@1.1.0: {} @@ -7693,7 +7923,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.2: {} + shell-quote@1.8.3: {} side-channel-list@1.0.0: dependencies: @@ -7783,7 +8013,7 @@ snapshots: statuses@1.5.0: {} - statuses@2.0.1: {} + statuses@2.0.2: {} std-env@3.10.0: {} @@ -7879,7 +8109,7 @@ snapshots: terser-webpack-plugin@5.3.14(webpack@5.96.1): dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 @@ -7895,7 +8125,7 @@ snapshots: source-map-support: 0.5.21 optional: true - thingies@1.21.0(tslib@2.8.1): + thingies@2.5.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -7946,7 +8176,7 @@ snapshots: '@gilbarbara/deep-equal': 0.1.2 is-lite: 0.8.2 - tree-dump@1.0.2(tslib@2.8.1): + tree-dump@1.1.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -8248,46 +8478,48 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.2(webpack@5.96.1): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.96.1): dependencies: colorette: 2.0.20 - memfs: 4.17.0 - mime-types: 2.1.35 + memfs: 4.56.10(tslib@2.8.1) + mime-types: 3.0.2 on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.3.2 optionalDependencies: webpack: 5.96.1 + transitivePeerDependencies: + - tslib - webpack-dev-server@5.2.2(webpack@5.96.1): + webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.96.1): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/express-serve-static-core': 4.19.6 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.8 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 + '@types/serve-static': 1.15.10 '@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.8.0 + compression: 1.8.1 connect-history-api-fallback: 2.0.0 - express: 4.21.2 + express: 4.22.1 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.21) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.0 + http-proxy-middleware: 2.0.9(@types/express@4.17.25) + ipaddr.js: 2.3.0 + launch-editor: 2.12.0 + open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.2 selfsigned: 2.4.1 - serve-index: 1.9.1 + serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.96.1) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.96.1) ws: 8.18.1 optionalDependencies: webpack: 5.96.1 @@ -8295,6 +8527,7 @@ snapshots: - bufferutil - debug - supports-color + - tslib - utf-8-validate webpack-sources@3.3.3: @@ -8333,7 +8566,7 @@ snapshots: websocket-driver@0.7.4: dependencies: - http-parser-js: 0.5.9 + http-parser-js: 0.5.10 safe-buffer: 5.2.1 websocket-extensions: 0.1.4 @@ -8407,6 +8640,10 @@ snapshots: ws@8.18.1: {} + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.0 + xml-name-validator@5.0.0: {} xmlchars@2.2.0: {}