From e62090cce0c8d38e27dd16a9309393db5c1593d7 Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Thu, 14 May 2026 17:21:41 +0200 Subject: [PATCH] fix: monkey patch a nitro build error (resolves #3065) --- apps/web/vite.config.ts | 83 +++++- packages/api/package.json | 3 +- packages/api/src/services/agent-url.ts | 27 +- packages/runtime-externals/package.json | 2 + pnpm-lock.yaml | 335 ++++-------------------- 5 files changed, 144 insertions(+), 306 deletions(-) diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index 914d6b1f3..c84e31a63 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -16,6 +16,86 @@ const rootPackageJson = JSON.parse(readFileSync(rootPackageJsonPath, "utf-8")) a const appVersion = JSON.stringify(rootPackageJson.version ?? "0.0.0"); const workspaceRoot = fileURLToPath(new URL("../..", import.meta.url)); +const rolldownRuntimeSupport = `var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { +\tif (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { +\t\tkey = keys[i]; +\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { +\t\t\tget: ((k) => from[k]).bind(null, key), +\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable +\t\t}); +\t} +\treturn to; +}; +`; + +const rolldownRuntimeHelpers = { + __commonJSMin: + "var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);\n", + __esmMin: "var __esmMin = (fn, res) => () => (fn && (res = fn(fn = 0)), res);\n", + __exportAll: `var __exportAll = (all, no_symbols) => { +\tlet target = {}; +\tfor (var name in all) __defProp(target, name, { +\t\tget: all[name], +\t\tenumerable: true +\t}); +\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" }); +\treturn target; +}; +`, + __require: "var __require = __reactiveResumeCreateRequire(import.meta.url);\n", + __toCommonJS: + 'var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n', + __toESM: + 'var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\n', +}; + +const rolldownRuntimeHelperNames = Object.keys(rolldownRuntimeHelpers) as (keyof typeof rolldownRuntimeHelpers)[]; + +const hasImportedBinding = (code: string, binding: string) => { + for (const [, specifiers] of code.matchAll(/import\s*\{([^}]*)\}/g)) { + for (const specifier of specifiers.split(",")) { + const [, importedBinding] = specifier.trim().split(/\s+as\s+/); + const localBinding = importedBinding ?? specifier.trim(); + if (localBinding === binding) return true; + } + } + + return false; +}; + +// Work around Nitro/Rolldown emitting runtime-helper uses before helper bindings in server chunks. +const ensureRolldownRuntimeHelpers = (): Plugin => ({ + name: "reactive-resume:ensure-rolldown-runtime-helpers", + apply: "build", + applyToEnvironment: (environment) => environment.name === "nitro", + renderChunk(code) { + const missingHelpers = rolldownRuntimeHelperNames.filter((helper) => { + const firstUse = code.search(new RegExp(`\\b${helper}(?![\\w$])\\s*\\(`)); + if (firstUse === -1 || hasImportedBinding(code, helper)) return false; + + const helperDefinition = code.search(new RegExp(`\\b(?:const|let|var)\\s+${helper}\\s*=`)); + return helperDefinition === -1 || helperDefinition > firstUse; + }); + + if (missingHelpers.length === 0) return null; + + const createRequireImport = missingHelpers.includes("__require") + ? 'import { createRequire as __reactiveResumeCreateRequire } from "node:module";\n' + : ""; + + return { + code: `${createRequireImport}${rolldownRuntimeSupport}${missingHelpers.map((helper) => rolldownRuntimeHelpers[helper]).join("")}${code}`, + map: null, + }; + }, +}); + const pwa = (): PluginOption => VitePWA({ outDir: ".output/public", @@ -52,7 +132,7 @@ export default defineConfig({ build: { chunkSizeWarningLimit: 10 * 1024, // 10 MB rolldownOptions: { - external: ["bcrypt", "sharp", "@aws-sdk/client-s3"], + external: ["bcrypt", "sharp", "@aws-sdk/client-s3", "ioredis", "linkedom"], }, }, @@ -69,6 +149,7 @@ export default defineConfig({ lingui(), babel({ presets: [linguiTransformerBabelPreset()] }), nitro({ plugins: ["plugins/1.migrate.ts", "plugins/2.storage.ts"] }), + ensureRolldownRuntimeHelpers(), pwa(), ], }); diff --git a/packages/api/package.json b/packages/api/package.json index de940a659..bfbee3be7 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -41,7 +41,7 @@ "drizzle-zod": "1.0.0-beta.14-a36c63d", "es-toolkit": "^1.46.1", "ioredis": "^5.10.1", - "jsdom": "^29.1.1", + "linkedom": "^0.18.12", "ollama-ai-provider-v2": "^3.5.1", "react": "^19.2.6", "resumable-stream": "^2.2.12", @@ -53,7 +53,6 @@ "devDependencies": { "@reactive-resume/config": "workspace:*", "@types/bcrypt": "^6.0.0", - "@types/jsdom": "^28.0.3", "@typescript/native-preview": "7.0.0-dev.20260514.1", "typescript": "^6.0.3" } diff --git a/packages/api/src/services/agent-url.ts b/packages/api/src/services/agent-url.ts index 059a9744a..cbc60da53 100644 --- a/packages/api/src/services/agent-url.ts +++ b/packages/api/src/services/agent-url.ts @@ -1,6 +1,6 @@ import { lookup } from "node:dns/promises"; import { Readability } from "@mozilla/readability"; -import { JSDOM } from "jsdom"; +import { parseHTML } from "linkedom"; import { Agent, fetch as undiciFetch } from "undici"; import { env } from "@reactive-resume/env/server"; import { isPrivateOrLoopbackHost } from "@reactive-resume/utils/url-security.node"; @@ -41,21 +41,22 @@ function compactText(value: string) { } function extractReadableHtml(html: string, url: string) { - const dom = new JSDOM(html, { url }); + const { document } = parseHTML(html); - try { - const article = new Readability(dom.window.document).parse(); - const content = compactText(article?.textContent ?? ""); + Object.defineProperties(document, { + baseURI: { value: url }, + documentURI: { value: url }, + }); - if (content.length < 160) throw new Error("URL_READABILITY_FAILED"); + const article = new Readability(document).parse(); + const content = compactText(article?.textContent ?? ""); - return { - title: article?.title ? compactText(article.title) : null, - content, - }; - } finally { - dom.window.close(); - } + if (content.length < 160) throw new Error("URL_READABILITY_FAILED"); + + return { + title: article?.title ? compactText(article.title) : null, + content, + }; } async function readLimitedText(response: FetchResponse) { diff --git a/packages/runtime-externals/package.json b/packages/runtime-externals/package.json index 575eb5ef8..82e22c3e7 100644 --- a/packages/runtime-externals/package.json +++ b/packages/runtime-externals/package.json @@ -6,6 +6,8 @@ "dependencies": { "@aws-sdk/client-s3": "^3.1046.0", "bcrypt": "^6.0.0", + "ioredis": "^5.10.1", + "linkedom": "^0.18.12", "sharp": "^0.34.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1c5cecf9c..1a2b4297f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,7 +61,7 @@ importers: version: 6.0.3 vitest: specifier: ^4.1.6 - version: 4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.7.0)(@vitest/coverage-v8@4.1.6)(happy-dom@20.9.0)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(tsx@4.22.0)(yaml@2.9.0)) + version: 4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.7.0)(@vitest/coverage-v8@4.1.6)(happy-dom@20.9.0)(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(tsx@4.22.0)(yaml@2.9.0)) apps/web: dependencies: @@ -436,9 +436,9 @@ importers: ioredis: specifier: ^5.10.1 version: 5.10.1 - jsdom: - specifier: ^29.1.1 - version: 29.1.1(@noble/hashes@2.2.0) + linkedom: + specifier: ^0.18.12 + version: 0.18.12 ollama-ai-provider-v2: specifier: ^3.5.1 version: 3.5.1(ai@6.0.182(zod@4.4.3))(zod@4.4.3) @@ -467,9 +467,6 @@ importers: '@types/bcrypt': specifier: ^6.0.0 version: 6.0.0 - '@types/jsdom': - specifier: ^28.0.3 - version: 28.0.3 '@typescript/native-preview': specifier: 7.0.0-dev.20260514.1 version: 7.0.0-dev.20260514.1 @@ -737,6 +734,12 @@ importers: bcrypt: specifier: ^6.0.0 version: 6.0.0 + ioredis: + specifier: ^5.10.1 + version: 5.10.1 + linkedom: + specifier: ^0.18.12 + version: 0.18.12 sharp: specifier: ^0.34.5 version: 0.34.5 @@ -970,21 +973,6 @@ packages: peerDependencies: ajv: '>=8' - '@asamuzakjp/css-color@5.1.11': - resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - - '@asamuzakjp/dom-selector@7.1.1': - resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - - '@asamuzakjp/generational-cache@1.0.1': - resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - - '@asamuzakjp/nwsapi@2.3.9': - resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} - '@authenio/xml-encryption@2.0.2': resolution: {integrity: sha512-cTlrKttbrRHEw3W+0/I609A2Matj5JQaRvfLtEIGZvlN0RaPi+3ANsMeqAyCAVlH/lUIW2tmtBlSMni74lcXeg==} engines: {node: '>=12'} @@ -1908,10 +1896,6 @@ packages: cpu: [x64] os: [win32] - '@bramus/specificity@2.4.2': - resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} - hasBin: true - '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1997,42 +1981,6 @@ packages: conventional-commits-parser: optional: true - '@csstools/color-helpers@6.0.2': - resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} - engines: {node: '>=20.19.0'} - - '@csstools/css-calc@3.2.1': - resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@csstools/css-parser-algorithms': ^4.0.0 - '@csstools/css-tokenizer': ^4.0.0 - - '@csstools/css-color-parser@4.1.0': - resolution: {integrity: sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@csstools/css-parser-algorithms': ^4.0.0 - '@csstools/css-tokenizer': ^4.0.0 - - '@csstools/css-parser-algorithms@4.0.0': - resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@csstools/css-tokenizer': ^4.0.0 - - '@csstools/css-syntax-patches-for-csstree@1.1.4': - resolution: {integrity: sha512-wgsqt92b7C7tQhIdPNxj0n9zuUbQlvAuI1exyzeNrOKOi62SD7ren8zqszmpVREjAOqg8cD2FqYhQfAuKjk4sw==} - peerDependencies: - css-tree: ^3.2.1 - peerDependenciesMeta: - css-tree: - optional: true - - '@csstools/css-tokenizer@4.0.0': - resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} - engines: {node: '>=20.19.0'} - '@dnd-kit/accessibility@3.1.1': resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} peerDependencies: @@ -2389,15 +2337,6 @@ packages: cpu: [x64] os: [win32] - '@exodus/bytes@1.15.0': - resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - peerDependencies: - '@noble/hashes': ^1.8.0 || ^2.0.0 - peerDependenciesMeta: - '@noble/hashes': - optional: true - '@floating-ui/core@1.7.5': resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} @@ -4560,9 +4499,6 @@ packages: '@types/js-cookie@3.0.6': resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} - '@types/jsdom@28.0.3': - resolution: {integrity: sha512-/HQ2uFoetFTXuye8vzIcHw2z6Fwi7Hi/qcgC+RoS9NCyewiqxhVGqlG+ViGB6lkax481R6dmhf1I7lIGlzJStQ==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -4598,9 +4534,6 @@ packages: '@types/statuses@2.0.6': resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -5371,6 +5304,9 @@ packages: engines: {node: '>=4'} hasBin: true + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -5378,10 +5314,6 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - data-urls@7.0.0: - resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -5434,9 +5366,6 @@ packages: supports-color: optional: true - decimal.js@10.6.0: - resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} - decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} @@ -5731,10 +5660,6 @@ packages: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} - entities@8.0.0: - resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} - engines: {node: '>=20.19.0'} - env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -6199,13 +6124,12 @@ packages: hsl-to-rgb-for-reals@1.1.1: resolution: {integrity: sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==} - html-encoding-sniffer@6.0.0: - resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + html-to-text@9.0.5: resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} engines: {node: '>=14'} @@ -6423,9 +6347,6 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} @@ -6583,15 +6504,6 @@ packages: jsbi@4.3.2: resolution: {integrity: sha512-9fqMSQbhJykSeii05nxKl4m6Eqn2P6rOlYiS+C5Dr/HPIU/7yZxu5qzbs40tgaFORiw2Amd0mirjxatXYMkIew==} - jsdom@29.1.1: - resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} - peerDependencies: - canvas: ^3.0.0 - peerDependenciesMeta: - canvas: - optional: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -6796,6 +6708,15 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkedom@0.18.12: + resolution: {integrity: sha512-jalJsOwIKuQJSeTvsgzPe9iJzyfVaEJiEXl+25EkKevsULHvMJzpNqwvj1jOESWdmgKDiXObyjOYwlUqG7wo1Q==} + engines: {node: '>=16'} + peerDependencies: + canvas: '>= 2' + peerDependenciesMeta: + canvas: + optional: true + linkifyjs@4.3.3: resolution: {integrity: sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg==} @@ -7331,9 +7252,6 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - parse5@8.0.1: - resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} - parseley@0.12.1: resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} @@ -7872,10 +7790,6 @@ packages: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - scheduler@0.25.0-rc-603e6108-20241029: resolution: {integrity: sha512-pFwF6H1XrSdYYNLfOcGlM28/j8CGLu8IvdrxqhjWULe2bPcKiKW4CV+OWqR/9fT52mywx65l7ysNkjLKBda7eA==} @@ -8188,9 +8102,6 @@ packages: peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tagged-tag@1.0.0: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} @@ -8276,10 +8187,6 @@ packages: tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - tr46@6.0.0: - resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} - engines: {node: '>=20'} - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -8354,6 +8261,9 @@ packages: ufo@1.6.4: resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + uhyphen@0.2.0: + resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} + uint8array-extras@1.5.0: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} @@ -8369,9 +8279,6 @@ packages: undici-types@7.21.0: resolution: {integrity: sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==} - undici-types@7.25.0: - resolution: {integrity: sha512-AXNgS1Byr27fTI+2bsPEkV9CxkT8H6xNyRI68b3TatlZo3RkzlqQBLL+w7SmGPVpokjHbcuNVQUWE7FRTg+LRA==} - undici@7.25.0: resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} engines: {node: '>=20.18.1'} @@ -8706,10 +8613,6 @@ packages: w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} - w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} - walk-up-path@4.0.0: resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} @@ -8721,10 +8624,6 @@ packages: webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - webidl-conversions@8.0.1: - resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} - engines: {node: '>=20'} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} @@ -8741,14 +8640,6 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-mimetype@5.0.0: - resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} - engines: {node: '>=20'} - - whatwg-url@16.0.1: - resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} @@ -8888,10 +8779,6 @@ packages: resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} hasBin: true - xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - xml-naming@0.1.0: resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} engines: {node: '>=16.0.0'} @@ -8903,9 +8790,6 @@ packages: resolution: {integrity: sha512-bx8Q1STctnNaaDymWnkfQLKofs0mGNN7rLLapJlGuV3VlvegD7Ls4ggMjE3aUSWItCCzU0PEv45lI87iSigiCA==} engines: {node: '>=20.0'} - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xpath@0.0.32: resolution: {integrity: sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw==} engines: {node: '>=0.6.0'} @@ -9057,26 +8941,6 @@ snapshots: jsonpointer: 5.0.1 leven: 3.1.0 - '@asamuzakjp/css-color@5.1.11': - dependencies: - '@asamuzakjp/generational-cache': 1.0.1 - '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 - - '@asamuzakjp/dom-selector@7.1.1': - dependencies: - '@asamuzakjp/generational-cache': 1.0.1 - '@asamuzakjp/nwsapi': 2.3.9 - bidi-js: 1.0.3 - css-tree: 3.2.1 - is-potential-custom-element-name: 1.0.1 - - '@asamuzakjp/generational-cache@1.0.1': {} - - '@asamuzakjp/nwsapi@2.3.9': {} - '@authenio/xml-encryption@2.0.2': dependencies: '@xmldom/xmldom': 0.8.13 @@ -10322,10 +10186,6 @@ snapshots: '@biomejs/cli-win32-x64@2.4.15': optional: true - '@bramus/specificity@2.4.2': - dependencies: - css-tree: 3.2.1 - '@colors/colors@1.5.0': optional: true @@ -10445,30 +10305,6 @@ snapshots: optionalDependencies: conventional-commits-parser: 6.4.0 - '@csstools/color-helpers@6.0.2': {} - - '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': - dependencies: - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 - - '@csstools/css-color-parser@4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': - dependencies: - '@csstools/color-helpers': 6.0.2 - '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-tokenizer': 4.0.0 - - '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': - dependencies: - '@csstools/css-tokenizer': 4.0.0 - - '@csstools/css-syntax-patches-for-csstree@1.1.4(css-tree@3.2.1)': - optionalDependencies: - css-tree: 3.2.1 - - '@csstools/css-tokenizer@4.0.0': {} - '@dnd-kit/accessibility@3.1.1(react@19.2.6)': dependencies: react: 19.2.6 @@ -10685,10 +10521,6 @@ snapshots: '@esbuild/win32-x64@0.28.0': optional: true - '@exodus/bytes@1.15.0(@noble/hashes@2.2.0)': - optionalDependencies: - '@noble/hashes': 2.2.0 - '@floating-ui/core@1.7.5': dependencies: '@floating-ui/utils': 0.2.11 @@ -12801,13 +12633,6 @@ snapshots: '@types/js-cookie@3.0.6': {} - '@types/jsdom@28.0.3': - dependencies: - '@types/node': 25.7.0 - '@types/tough-cookie': 4.0.5 - parse5: 8.0.1 - undici-types: 7.25.0 - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -12846,8 +12671,6 @@ snapshots: '@types/statuses@2.0.6': {} - '@types/tough-cookie@4.0.5': {} - '@types/trusted-types@2.0.7': {} '@types/unist@2.0.11': {} @@ -12968,7 +12791,7 @@ snapshots: obug: 2.1.1 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.7.0)(@vitest/coverage-v8@4.1.6)(happy-dom@20.9.0)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(tsx@4.22.0)(yaml@2.9.0)) + vitest: 4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.7.0)(@vitest/coverage-v8@4.1.6)(happy-dom@20.9.0)(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(tsx@4.22.0)(yaml@2.9.0)) '@vitest/expect@4.1.6': dependencies: @@ -13220,7 +13043,7 @@ snapshots: pg: 8.20.0 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - vitest: 4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.7.0)(@vitest/coverage-v8@4.1.6)(happy-dom@20.9.0)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(tsx@4.22.0)(yaml@2.9.0)) + vitest: 4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.7.0)(@vitest/coverage-v8@4.1.6)(happy-dom@20.9.0)(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(tsx@4.22.0)(yaml@2.9.0)) transitivePeerDependencies: - '@cloudflare/workers-types' - '@opentelemetry/api' @@ -13583,17 +13406,12 @@ snapshots: cssesc@3.0.0: {} + cssom@0.5.0: {} + csstype@3.2.3: {} data-uri-to-buffer@4.0.1: {} - data-urls@7.0.0(@noble/hashes@2.2.0): - dependencies: - whatwg-mimetype: 5.0.0 - whatwg-url: 16.0.1(@noble/hashes@2.2.0) - transitivePeerDependencies: - - '@noble/hashes' - data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -13626,8 +13444,6 @@ snapshots: dependencies: ms: 2.1.3 - decimal.js@10.6.0: {} - decode-named-character-reference@1.3.0: dependencies: character-entities: 2.0.2 @@ -13810,8 +13626,6 @@ snapshots: entities@7.0.1: {} - entities@8.0.0: {} - env-paths@2.2.1: {} env-paths@3.0.0: {} @@ -14422,14 +14236,10 @@ snapshots: hsl-to-rgb-for-reals@1.1.1: {} - html-encoding-sniffer@6.0.0(@noble/hashes@2.2.0): - dependencies: - '@exodus/bytes': 1.15.0(@noble/hashes@2.2.0) - transitivePeerDependencies: - - '@noble/hashes' - html-escaper@2.0.2: {} + html-escaper@3.0.3: {} + html-to-text@9.0.5: dependencies: '@selderee/plugin-htmlparser2': 0.11.0 @@ -14640,8 +14450,6 @@ snapshots: is-plain-obj@4.1.0: {} - is-potential-custom-element-name@1.0.1: {} - is-promise@4.0.0: {} is-regex@1.2.1: @@ -14773,32 +14581,6 @@ snapshots: jsbi@4.3.2: {} - jsdom@29.1.1(@noble/hashes@2.2.0): - dependencies: - '@asamuzakjp/css-color': 5.1.11 - '@asamuzakjp/dom-selector': 7.1.1 - '@bramus/specificity': 2.4.2 - '@csstools/css-syntax-patches-for-csstree': 1.1.4(css-tree@3.2.1) - '@exodus/bytes': 1.15.0(@noble/hashes@2.2.0) - css-tree: 3.2.1 - data-urls: 7.0.0(@noble/hashes@2.2.0) - decimal.js: 10.6.0 - html-encoding-sniffer: 6.0.0(@noble/hashes@2.2.0) - is-potential-custom-element-name: 1.0.1 - lru-cache: 11.3.6 - parse5: 8.0.1 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 6.0.1 - undici: 7.25.0 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 8.0.1 - whatwg-mimetype: 5.0.0 - whatwg-url: 16.0.1(@noble/hashes@2.2.0) - xml-name-validator: 5.0.0 - transitivePeerDependencies: - - '@noble/hashes' - jsesc@3.1.0: {} json-parse-even-better-errors@2.3.1: {} @@ -14965,6 +14747,14 @@ snapshots: lines-and-columns@1.2.4: {} + linkedom@0.18.12: + dependencies: + css-select: 5.2.2 + cssom: 0.5.0 + html-escaper: 3.0.3 + htmlparser2: 10.1.0 + uhyphen: 0.2.0 + linkifyjs@4.3.3: {} lodash.debounce@4.0.8: {} @@ -15679,10 +15469,6 @@ snapshots: dependencies: entities: 6.0.1 - parse5@8.0.1: - dependencies: - entities: 8.0.0 - parseley@0.12.1: dependencies: leac: 0.6.0 @@ -16314,10 +16100,6 @@ snapshots: sax@1.6.0: {} - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 - scheduler@0.25.0-rc-603e6108-20241029: {} scheduler@0.27.0: {} @@ -16727,8 +16509,6 @@ snapshots: react: 19.2.6 use-sync-external-store: 1.6.0(react@19.2.6) - symbol-tree@3.2.4: {} - tagged-tag@1.0.0: {} tailwind-merge@3.6.0: {} @@ -16798,10 +16578,6 @@ snapshots: dependencies: punycode: 2.3.1 - tr46@6.0.0: - dependencies: - punycode: 2.3.1 - trim-lines@3.0.1: {} trough@2.2.0: {} @@ -16893,6 +16669,8 @@ snapshots: ufo@1.6.4: {} + uhyphen@0.2.0: {} + uint8array-extras@1.5.0: {} unbash@3.0.0: {} @@ -16906,8 +16684,6 @@ snapshots: undici-types@7.21.0: {} - undici-types@7.25.0: {} - undici@7.25.0: {} undici@8.2.0: {} @@ -17091,7 +16867,7 @@ snapshots: optionalDependencies: vite: 8.0.13(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(tsx@4.22.0)(yaml@2.9.0) - vitest@4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.7.0)(@vitest/coverage-v8@4.1.6)(happy-dom@20.9.0)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(tsx@4.22.0)(yaml@2.9.0)): + vitest@4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.7.0)(@vitest/coverage-v8@4.1.6)(happy-dom@20.9.0)(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(tsx@4.22.0)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.6 '@vitest/mocker': 4.1.6(msw@2.14.6(@types/node@25.7.0)(typescript@6.0.3))(vite@8.0.13(@types/node@25.7.0)(esbuild@0.28.0)(jiti@2.7.0)(terser@5.47.1)(tsx@4.22.0)(yaml@2.9.0)) @@ -17118,24 +16894,17 @@ snapshots: '@types/node': 25.7.0 '@vitest/coverage-v8': 4.1.6(vitest@4.1.6) happy-dom: 20.9.0 - jsdom: 29.1.1(@noble/hashes@2.2.0) transitivePeerDependencies: - msw w3c-keyname@2.2.8: {} - w3c-xmlserializer@5.0.0: - dependencies: - xml-name-validator: 5.0.0 - walk-up-path@4.0.0: {} web-streams-polyfill@3.3.3: {} webidl-conversions@4.0.2: {} - webidl-conversions@8.0.1: {} - webpack-virtual-modules@0.6.2: {} whatwg-encoding@3.1.1: @@ -17146,16 +16915,6 @@ snapshots: whatwg-mimetype@4.0.0: {} - whatwg-mimetype@5.0.0: {} - - whatwg-url@16.0.1(@noble/hashes@2.2.0): - dependencies: - '@exodus/bytes': 1.15.0(@noble/hashes@2.2.0) - tr46: 6.0.0 - webidl-conversions: 8.0.1 - transitivePeerDependencies: - - '@noble/hashes' - whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 @@ -17368,8 +17127,6 @@ snapshots: dependencies: sax: 1.6.0 - xml-name-validator@5.0.0: {} - xml-naming@0.1.0: {} xml@1.0.1: {} @@ -17381,8 +17138,6 @@ snapshots: '@oozcitak/util': 10.0.0 js-yaml: 4.1.1 - xmlchars@2.2.0: {} - xpath@0.0.32: {} xpath@0.0.33: {}