From 20d41482f95c2ceb4cc19b6a3d35d414c4349db0 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Wed, 4 Nov 2026 06:47:07 +0100 Subject: [PATCH 1/2] chore(repo): define rollup-next catalog To test plugins against the upcoming Rollup 5 release. --- pnpm-workspace.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c1c7cb59f..780f3f0af 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -7,3 +7,7 @@ packages: # and resolve to the range below. catalog: typescript: ^5.9.3 + +catalogs: + rollup-next: + rollup: ^5.0.0-2 From 984882d7a574332b08f2ede9d16d4b7f16854b8d Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Wed, 4 Nov 2026 06:58:54 +0100 Subject: [PATCH 2/2] feat(wasm): support rollup 5 Rollup 5 encodes import attributes in the module id, so the load and transform hooks rejected attributed .wasm imports and Rollup tried to parse the binary as JavaScript. Match on the rawId option instead, falling back to the id for older Rollup versions, and key emitted assets by the raw id so attribute variants share one asset. Disable tree-shaking in the target environment tests, which assert emitted helper code that Rollup 5 otherwise removes. --- packages/wasm/package.json | 4 +- packages/wasm/src/index.ts | 32 +- .../test/fixtures/attributes-and-plain.js | 5 + packages/wasm/test/fixtures/attributes.js | 10 + packages/wasm/test/test.mjs | 32 +- pnpm-lock.yaml | 283 +++++++++++++++++- 6 files changed, 340 insertions(+), 26 deletions(-) create mode 100644 packages/wasm/test/fixtures/attributes-and-plain.js create mode 100644 packages/wasm/test/fixtures/attributes.js diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 1e8d7df03..c314a1287 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -56,7 +56,7 @@ "rollup-plugin" ], "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0||^5.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -69,7 +69,7 @@ "devDependencies": { "@rollup/plugin-typescript": "^9.0.1", "del-cli": "^5.0.0", - "rollup": "^4.0.0-24", + "rollup": "catalog:rollup-next", "source-map": "^0.7.4", "typescript": "^4.8.3" }, diff --git a/packages/wasm/src/index.ts b/packages/wasm/src/index.ts index 28517dbc2..b1bb74f0c 100644 --- a/packages/wasm/src/index.ts +++ b/packages/wasm/src/index.ts @@ -33,21 +33,23 @@ export function wasm(options: RollupWasmOptions = {}): Plugin { return null; }, - load(id) { + load(id, loadOptions) { if (id === HELPERS_ID) { return getHelpersModule(targetEnv); } - if (!filter(id)) { + const rawId = loadOptions?.rawId ?? id; + + if (!filter(rawId)) { return null; } - if (!/\.wasm$/.test(id)) { + if (!/\.wasm$/.test(rawId)) { return null; } - this.addWatchFile(id); + this.addWatchFile(rawId); - return Promise.all([fs.promises.stat(id), fs.promises.readFile(id)]).then( + return Promise.all([fs.promises.stat(rawId), fs.promises.readFile(rawId)]).then( ([stats, buffer]) => { if (targetEnv === 'auto-inline') { return buffer.toString('binary'); @@ -55,8 +57,8 @@ export function wasm(options: RollupWasmOptions = {}): Plugin { if ((maxFileSize && stats.size > maxFileSize) || maxFileSize === 0) { const hash = createHash('sha1').update(buffer).digest('hex').substr(0, 16); - const ext = path.extname(id); - const name = path.basename(id, ext); + const ext = path.extname(rawId); + const name = path.basename(rawId, ext); const outputFileName = fileName .replace(/\[hash\]/g, hash) @@ -66,8 +68,8 @@ export function wasm(options: RollupWasmOptions = {}): Plugin { const publicFilepath = `${publicPath}${outputFileName}`; // only copy if the file is not marked `sync`, `sync` files are always inlined - if (syncFiles.indexOf(id) === -1) { - copies[id] = { + if (syncFiles.indexOf(rawId) === -1) { + copies[rawId] = { filename: outputFileName, publicFilepath, buffer @@ -80,14 +82,16 @@ export function wasm(options: RollupWasmOptions = {}): Plugin { ); }, - transform(code, id) { - if (!filter(id)) { + transform(code, id, transformOptions) { + const rawId = transformOptions?.rawId ?? id; + + if (!filter(rawId)) { return null; } - if (code && /\.wasm$/.test(id)) { - const isSync = syncFiles.indexOf(id) !== -1; - const publicFilepath = copies[id] ? `'${copies[id].publicFilepath}'` : null; + if (code && /\.wasm$/.test(rawId)) { + const isSync = syncFiles.indexOf(rawId) !== -1; + const publicFilepath = copies[rawId] ? `'${copies[rawId].publicFilepath}'` : null; let src; if (publicFilepath === null) { diff --git a/packages/wasm/test/fixtures/attributes-and-plain.js b/packages/wasm/test/fixtures/attributes-and-plain.js new file mode 100644 index 000000000..d93a85a36 --- /dev/null +++ b/packages/wasm/test/fixtures/attributes-and-plain.js @@ -0,0 +1,5 @@ +/* eslint-disable import/no-duplicates */ +import plain from './sample.wasm'; +import attributed from './sample.wasm' with { type: 'webassembly' }; + +export default { attributed, plain }; diff --git a/packages/wasm/test/fixtures/attributes.js b/packages/wasm/test/fixtures/attributes.js new file mode 100644 index 000000000..5f0b56f63 --- /dev/null +++ b/packages/wasm/test/fixtures/attributes.js @@ -0,0 +1,10 @@ +import sample from './sample.wasm' with { type: 'webassembly' }; + +// eslint-disable-next-line no-undef +globalThis.atob = (str) => Buffer.from(str, 'base64').toString('binary'); + +// eslint-disable-next-line no-undef +result = (async () => { + const { instance } = await sample({ env: {} }); + t.is(instance.exports.main(), 3, 'wasm loaded'); +})(); diff --git a/packages/wasm/test/test.mjs b/packages/wasm/test/test.mjs index 80b1f21a5..2ccbfae49 100755 --- a/packages/wasm/test/test.mjs +++ b/packages/wasm/test/test.mjs @@ -27,6 +27,14 @@ const testBundle = async (t, bundle) => { const func = new AsyncFunction('t', `let result;\n\n${code}\n\nreturn result;`); return func(t); }; +test('loads wasm imported with import attributes', async () => { + expect.assertions(1); + const bundle = await rollup({ + input: 'fixtures/attributes.js', + plugins: [wasmPlugin()] + }); + await testBundle(avaAssertions, bundle); +}); test('async compiling', async () => { expect.assertions(2); const bundle = await rollup({ @@ -57,6 +65,18 @@ test('fetching WASM from separate file', async () => { expect(await globby(glob)).toMatchSnapshot(); await del(outputDir); }); +test('emits one asset when the same wasm is imported with and without attributes', async () => { + expect.assertions(2); + const warnings = []; + const bundle = await rollup({ + input: 'fixtures/attributes-and-plain.js', + plugins: [wasmPlugin({ maxFileSize: 0 })], + onwarn: (warning) => warnings.push(warning) + }); + const { output } = await bundle.generate({ format: 'cjs' }); + expect(output.filter(({ fileName }) => fileName.endsWith('.wasm'))).toHaveLength(1); + expect(warnings).toEqual([]); +}); test('complex module decoding', async () => { expect.assertions(2); const bundle = await rollup({ @@ -148,7 +168,8 @@ test('target environment auto', async () => { wasmPlugin({ targetEnv: 'auto' }) - ] + ], + treeshake: false }); const code = await getCode(bundle); await testBundle(avaAssertions, bundle); @@ -164,7 +185,8 @@ test('target environment auto-inline', async () => { wasmPlugin({ targetEnv: 'auto-inline' }) - ] + ], + treeshake: false }); const code = await getCode(bundle); await testBundle(avaAssertions, bundle); @@ -181,7 +203,8 @@ test('target environment browser', async () => { wasmPlugin({ targetEnv: 'browser' }) - ] + ], + treeshake: false }); const code = await getCode(bundle); await testBundle(avaAssertions, bundle); @@ -196,7 +219,8 @@ test('target environment node', async () => { wasmPlugin({ targetEnv: 'node' }) - ] + ], + treeshake: false }); const code = await getCode(bundle); await testBundle(avaAssertions, bundle); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8cbba389d..f5f7a8176 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,6 +9,10 @@ catalogs: typescript: specifier: ^5.9.3 version: 5.9.3 + rollup-next: + rollup: + specifier: ^5.0.0-2 + version: 5.0.0-2 importers: @@ -787,17 +791,17 @@ importers: dependencies: '@rollup/pluginutils': specifier: ^5.0.2 - version: 5.0.4(rollup@4.0.0-24) + version: 5.0.4(rollup@5.0.0-2) devDependencies: '@rollup/plugin-typescript': specifier: ^9.0.1 - version: 9.0.1(rollup@4.0.0-24)(tslib@2.4.0)(typescript@4.8.4) + version: 9.0.1(rollup@5.0.0-2)(tslib@2.4.0)(typescript@4.8.4) del-cli: specifier: ^5.0.0 version: 5.0.0 rollup: - specifier: ^4.0.0-24 - version: 4.0.0-24 + specifier: catalog:rollup-next + version: 5.0.0-2 source-map: specifier: ^0.7.4 version: 0.7.4 @@ -1722,6 +1726,12 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1864,6 +1874,11 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@5.0.0-2': + resolution: {integrity: sha512-hOAoxYpsQFt2jVm3c5iHXcTEPFfnGN6cEFbQJH7NmJWWV2CecryxmXqiaLD+P2+w3Axym+H2gWLfNktocimzCQ==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.0.0-24': resolution: {integrity: sha512-ftTp5ByyyozDsHfmYGeErrQmBi4ZEVZItC4Siilwretkf+cMv9z0s0Ru8ncd28OZpaO0cr9b7Afm+DIRDyE8Kw==} cpu: [arm64] @@ -1874,6 +1889,16 @@ packages: cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@5.0.0-2': + resolution: {integrity: sha512-XK8hfa8k/WHlpyfumS3gRG9sqfreyyO0jYg2sh4I1Lrl+zOwYLRAsxISpr9pAmc+IGUgDpiBKo1wE3YfBfJVDg==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-android-x64@5.0.0-2': + resolution: {integrity: sha512-XA+6xbgUiwtO/DdCqh9V69WfEhAR+zpVMxfBQ9ZkiZ7x2h3VWON3ACtGTa621Oy4ouV4MaxcROB2evaH3VkQcA==} + cpu: [x64] + os: [android] + '@rollup/rollup-darwin-arm64@4.0.0-24': resolution: {integrity: sha512-wYXWdPbMLiIRHQeTF/r9ZoDcf3k1ROR0Kyd/caUtbs5VEZOBfnpZ/FHQPzXW0S1fzxTtD5W4tXULxARMHAlNdQ==} cpu: [arm64] @@ -1884,6 +1909,11 @@ packages: cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@5.0.0-2': + resolution: {integrity: sha512-/MWEJ6O5xLsTI4m3iwiCrn7csMgrp4f3YKgfM8z5mUbiASgXxIo45gMLEfBf44kehA7XjaYocjq9jHeoWbJIyw==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.0.0-24': resolution: {integrity: sha512-8tIz6Uga/5XdeRkid7kfNtxrvru7o4lDBxAPooZezKXbyB2ap2yKAKCqTFEXyTuPhl2yxLMa5zqZ91FBEnSbPg==} cpu: [x64] @@ -1894,16 +1924,31 @@ packages: cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@5.0.0-2': + resolution: {integrity: sha512-0MhllQoAFk4lcNyOhfbS/nQ33Flp0dtG6TNe1f4xUpXCUfALHmuU/dXW/yJJSSPV3s2Mntg1smVCYH5Sl1ARWQ==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.52.5': resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@5.0.0-2': + resolution: {integrity: sha512-1M3PPlEfap+gEUKbW2rCoy9+YYUQgnnn7W3UMv3MoDaqpGRqtQiKmOriRt5MAJNAaIJm20cVG/fr4YPNmEvW6Q==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.52.5': resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@5.0.0-2': + resolution: {integrity: sha512-ZRkxXembkVYM4dZWbZb/E261R6AA7KUsQmmd/TLvOdxPteV/gLl3w5W5hISMtVZfx6hIYHgkxwAKpjNoKp9jHw==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.0.0-24': resolution: {integrity: sha512-ZCNBOaw2NV3BnpQ049VCPJSamss3wAoCunFcWYfhWgGyu9C0hiRvZAcKvhd7e/9EhuoIxsNxMLwI46NmZx9WBQ==} cpu: [arm] @@ -1914,11 +1959,21 @@ packages: cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@5.0.0-2': + resolution: {integrity: sha512-3U30xQbFFv67ZFjCf+kLe77LVWOVhsVTgjX9dUQmIrGP0m8m8UpVUhiRmHZzhpaSXrqgWi9ruYsceW/NESrD5A==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.52.5': resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@5.0.0-2': + resolution: {integrity: sha512-+mkbdgJEStysTgkS7CkIGxBd28LE2Gemx07oTqBl7T8AxJyMWrnclR6/UASnDX3TeHlWpgCRF0E4LBZEbYUweA==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.0.0-24': resolution: {integrity: sha512-BGnRktAZq4RI6FSicI+F6ws9paiYmjyaXUNKSukLthzgzPC91V4SXVylbFOCKvrhdWAr0lvZgcTrkgYNAmAcuQ==} cpu: [arm64] @@ -1929,36 +1984,81 @@ packages: cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@5.0.0-2': + resolution: {integrity: sha512-EebgKRaqRa3Zn0SNBwiGf2Zs6c0u7Np5eZHdkPueG6x0BJdxKmKq2ADnBj13JywB2Vg1lBnpxSPR59zVnJgdrw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.52.5': resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@5.0.0-2': + resolution: {integrity: sha512-UTibuqKhYH57GhkXTcbYmx493tzt1UNBJKeTarGplAct7HNdHpsv7mUx+OhTkA8tJW8cK3zfxFboHlaWVdy9ow==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-loong64-gnu@4.52.5': resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} cpu: [loong64] os: [linux] + '@rollup/rollup-linux-loong64-gnu@5.0.0-2': + resolution: {integrity: sha512-8sVjPGbzwaLmhJ/47Sy12w7PCjmMFxPKFC05UftvvAhZ4iKv8eDn8h1QTN2mvd9VpfeIVMCyGeetw3Y39iQUpg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@5.0.0-2': + resolution: {integrity: sha512-Jbxoy+FMKFMfOpUCKhJloWhfxWLKnb8oGZqCsAvVfRllLu9FdM/P4Y+lG+eJQaAdr1jVy8nM0JIwiuBAfNdYfg==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-ppc64-gnu@4.52.5': resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-ppc64-gnu@5.0.0-2': + resolution: {integrity: sha512-rmtM92oxoJKyNT7U0gu4mvJTRh91nOFpmROgkBcuGSsTBH/mYLVIuGHv3SFPTHcJBRHHE8JlAJRCJmGS2St67w==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@5.0.0-2': + resolution: {integrity: sha512-NPE2xkMwSUShis0hDYCVpW7m022+gTyMddFfnU9m+tnlr1JVxl+BOz7mEzKyiYXfhiqprpk7WDJS+A3bQ1ko8A==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.52.5': resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@5.0.0-2': + resolution: {integrity: sha512-TLru/d8a6qXihOyK1GtJXCl7j8QjSl115R8nsX6wVIixrEKOBiNIs4xJrzVFnhCM/Pg99gSJvCOC6qCttqbJ5w==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-riscv64-musl@4.52.5': resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-musl@5.0.0-2': + resolution: {integrity: sha512-CNP7GIlDlgo+XMTT7B34pEblAUuOXnsLt1kmy2GKw0nOjmrXCTqSdIsu/gfXv4HmF0Do1zrn3naqgZE95N+1cg==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.52.5': resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@5.0.0-2': + resolution: {integrity: sha512-WWC/fQp+sNUwzi8nuYw1AWOrhkthjctlt/YSGKJVzW8MPL+FWAyc65qhFl8gXJqKJ31xuPx3p2bUBmx+nJU44Q==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.0.0-24': resolution: {integrity: sha512-FzhHpp+vRTjIUYXMExj9Ffj2bCQgnRAzlWlsQTdYGYvPQMVadfPMvnlcr4Li8P7Yv1iBFtDzRVfZAgL5glvIAA==} cpu: [x64] @@ -1969,6 +2069,11 @@ packages: cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@5.0.0-2': + resolution: {integrity: sha512-BgNoJ4p7LKPEG4/17fDoawLCaiLnevtBoZ3Gp6eRHLD3rmYsfB6rjgSUkRecRCYPf/j3YyZMeyydraiPpoa1qA==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.0.0-24': resolution: {integrity: sha512-0y+oXnCCT5+U5V58bY7dy65yDrWWfopFJwtC2EbFeA9SHrVjG36/TQo535ML3zdFwO+fma8r5FP1os0psbQBXQ==} cpu: [x64] @@ -1979,11 +2084,26 @@ packages: cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@5.0.0-2': + resolution: {integrity: sha512-S8qpxiE1dO+qBmC4UbS34319lyuyVU4iTgP9YDrCKXhh1up1XSsFh0e1IpCov1WCE6bGHmoBJ3Cjj5j7eQDaCw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@5.0.0-2': + resolution: {integrity: sha512-SP07ZPSf8JqCvfTqiNm1eSOkxsMD/MrE/x6h2kIiPftwpQYSXOWikX+EFSjH+L9W8c1CYbOXnUOPQQyAQB3bDA==} + cpu: [x64] + os: [openbsd] + '@rollup/rollup-openharmony-arm64@4.52.5': resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@5.0.0-2': + resolution: {integrity: sha512-pnEPJy86CCPnhusktg01iZ/A870AKA/1QjUp553T/WyGVw2u/QGFZ3j1vcgn7AdUsxGyK2iJ3fUX0jk4F0RTdA==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.0.0-24': resolution: {integrity: sha512-xT8djNMxVB84cCm1XILpQXkMcu8S+GBKjurXM4sc6eB1FQpFpcTAOsuQSg9xOhfPqm1xa7qqXA6ZpUhoUMboVQ==} cpu: [arm64] @@ -1994,6 +2114,11 @@ packages: cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@5.0.0-2': + resolution: {integrity: sha512-fa1XJxFFWBSsYiQ+SZVC58QkSiQI2ZzOQorTc7Sh8QVcOvE5Jaaw2NVbJ7p5p49DXptXjqZJZI5jKiVNyonjrw==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.0.0-24': resolution: {integrity: sha512-3gXFBlG5f18xbhVxKTM+zwciJPk097i3YswLI9cajVd4MAqMw5bGbuZkGOZOMnkzeIX0ELxovYWPbGDyUr+f5g==} cpu: [ia32] @@ -2004,11 +2129,21 @@ packages: cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@5.0.0-2': + resolution: {integrity: sha512-C1YO1wkRsjubrsw6k46NwUhsljJtPgR6iaKTKECBWtaari9o1C3MQFnhfNSSoUrGsDw/fQMAzTANBKzWVXMtog==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.52.5': resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@5.0.0-2': + resolution: {integrity: sha512-wGpmXFG/NeOez1PkBzJcrFoD63/5Lynn5oAX5l0/y1qhLPt84UEJUefBF4cpJarJZ9CBTQgS/kOSUpCIKp0pSA==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.0.0-24': resolution: {integrity: sha512-41+QkzRaKEZwmA14Fa2DI0QKN5hkcN/orA2KOg5vJAtvwSfB1uQTUmf6T4SGZLw/8In2TEmViB9tDVlbnXmH1A==} cpu: [x64] @@ -2019,6 +2154,11 @@ packages: cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@5.0.0-2': + resolution: {integrity: sha512-gw0w/7l+1cebmewhKdvzU8tMQVMebba4uozHT45fDd6TRCQc8zW2ydJ4IGtgCR8ubFSrmLCLf+4Xb9hWNrdiXA==} + cpu: [x64] + os: [win32] + '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} @@ -2034,6 +2174,9 @@ packages: '@sinonjs/text-encoding@0.7.2': resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} + deprecated: |- + Deprecated: no longer maintained and no longer used by Sinon packages. See + https://github.com/sinonjs/nise/issues/243 for replacement details. '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} @@ -2335,6 +2478,7 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@vitest/expect@4.0.2': resolution: {integrity: sha512-izQY+ABWqL2Vyr5+LNo3m16nLLTAzLn8em6i5uxqsrWRhdgzdN5JIHrpFVGBAYRGDAbtwE+yD4Heu8gsBSWTVQ==} @@ -3144,6 +3288,7 @@ packages: eslint@9.37.0: resolution: {integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true peerDependencies: jiti: '*' @@ -4715,6 +4860,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@5.0.0-2: + resolution: {integrity: sha512-UhOlXyjWgE+1kECSNCUlyfuP8fximLVoLIDZJO2jabbtxkd4dqFmCBB97CdapA8I1XnHdasgyxK4NkfQP/p0uw==} + engines: {node: '>=22.22.0', npm: '>=10.9.3'} + hasBin: true + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -5200,6 +5350,7 @@ packages: uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-compile-cache-lib@3.0.1: @@ -6411,6 +6562,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.5.5 + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -6494,6 +6648,15 @@ snapshots: rollup: 4.0.0-24 tslib: 2.4.0 + '@rollup/plugin-typescript@9.0.1(rollup@5.0.0-2)(tslib@2.4.0)(typescript@4.8.4)': + dependencies: + '@rollup/pluginutils': 4.2.1 + resolve: 1.22.1 + typescript: 4.8.4 + optionalDependencies: + rollup: 5.0.0-2 + tslib: 2.4.0 + '@rollup/plugin-typescript@9.0.1(tslib@2.4.0)(typescript@5.9.3)': dependencies: '@rollup/pluginutils': 4.2.1 @@ -6519,13 +6682,13 @@ snapshots: optionalDependencies: rollup: 4.0.0-24 - '@rollup/pluginutils@5.0.4(rollup@4.0.0-24)': + '@rollup/pluginutils@5.0.4(rollup@5.0.0-2)': dependencies: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.0.0-24 + rollup: 5.0.0-2 '@rollup/pluginutils@5.1.0(rollup@4.0.0-24)': dependencies: @@ -6549,99 +6712,177 @@ snapshots: '@rollup/rollup-android-arm-eabi@4.52.5': optional: true + '@rollup/rollup-android-arm-eabi@5.0.0-2': + optional: true + '@rollup/rollup-android-arm64@4.0.0-24': optional: true '@rollup/rollup-android-arm64@4.52.5': optional: true + '@rollup/rollup-android-arm64@5.0.0-2': + optional: true + + '@rollup/rollup-android-x64@5.0.0-2': + optional: true + '@rollup/rollup-darwin-arm64@4.0.0-24': optional: true '@rollup/rollup-darwin-arm64@4.52.5': optional: true + '@rollup/rollup-darwin-arm64@5.0.0-2': + optional: true + '@rollup/rollup-darwin-x64@4.0.0-24': optional: true '@rollup/rollup-darwin-x64@4.52.5': optional: true + '@rollup/rollup-darwin-x64@5.0.0-2': + optional: true + '@rollup/rollup-freebsd-arm64@4.52.5': optional: true + '@rollup/rollup-freebsd-arm64@5.0.0-2': + optional: true + '@rollup/rollup-freebsd-x64@4.52.5': optional: true + '@rollup/rollup-freebsd-x64@5.0.0-2': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.0.0-24': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.52.5': optional: true + '@rollup/rollup-linux-arm-gnueabihf@5.0.0-2': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.52.5': optional: true + '@rollup/rollup-linux-arm-musleabihf@5.0.0-2': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.0.0-24': optional: true '@rollup/rollup-linux-arm64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-arm64-gnu@5.0.0-2': + optional: true + '@rollup/rollup-linux-arm64-musl@4.52.5': optional: true + '@rollup/rollup-linux-arm64-musl@5.0.0-2': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-loong64-gnu@5.0.0-2': + optional: true + + '@rollup/rollup-linux-loong64-musl@5.0.0-2': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-ppc64-gnu@5.0.0-2': + optional: true + + '@rollup/rollup-linux-ppc64-musl@5.0.0-2': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-riscv64-gnu@5.0.0-2': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.52.5': optional: true + '@rollup/rollup-linux-riscv64-musl@5.0.0-2': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.52.5': optional: true + '@rollup/rollup-linux-s390x-gnu@5.0.0-2': + optional: true + '@rollup/rollup-linux-x64-gnu@4.0.0-24': optional: true '@rollup/rollup-linux-x64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-x64-gnu@5.0.0-2': + optional: true + '@rollup/rollup-linux-x64-musl@4.0.0-24': optional: true '@rollup/rollup-linux-x64-musl@4.52.5': optional: true + '@rollup/rollup-linux-x64-musl@5.0.0-2': + optional: true + + '@rollup/rollup-openbsd-x64@5.0.0-2': + optional: true + '@rollup/rollup-openharmony-arm64@4.52.5': optional: true + '@rollup/rollup-openharmony-arm64@5.0.0-2': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.0.0-24': optional: true '@rollup/rollup-win32-arm64-msvc@4.52.5': optional: true + '@rollup/rollup-win32-arm64-msvc@5.0.0-2': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.0.0-24': optional: true '@rollup/rollup-win32-ia32-msvc@4.52.5': optional: true + '@rollup/rollup-win32-ia32-msvc@5.0.0-2': + optional: true + '@rollup/rollup-win32-x64-gnu@4.52.5': optional: true + '@rollup/rollup-win32-x64-gnu@5.0.0-2': + optional: true + '@rollup/rollup-win32-x64-msvc@4.0.0-24': optional: true '@rollup/rollup-win32-x64-msvc@4.52.5': optional: true + '@rollup/rollup-win32-x64-msvc@5.0.0-2': + optional: true + '@sindresorhus/is@4.6.0': {} '@sinonjs/commons@1.8.3': @@ -9605,6 +9846,36 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.52.5 fsevents: 2.3.3 + rollup@5.0.0-2: + optionalDependencies: + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 5.0.0-2 + '@rollup/rollup-android-arm64': 5.0.0-2 + '@rollup/rollup-android-x64': 5.0.0-2 + '@rollup/rollup-darwin-arm64': 5.0.0-2 + '@rollup/rollup-darwin-x64': 5.0.0-2 + '@rollup/rollup-freebsd-arm64': 5.0.0-2 + '@rollup/rollup-freebsd-x64': 5.0.0-2 + '@rollup/rollup-linux-arm-gnueabihf': 5.0.0-2 + '@rollup/rollup-linux-arm-musleabihf': 5.0.0-2 + '@rollup/rollup-linux-arm64-gnu': 5.0.0-2 + '@rollup/rollup-linux-arm64-musl': 5.0.0-2 + '@rollup/rollup-linux-loong64-gnu': 5.0.0-2 + '@rollup/rollup-linux-loong64-musl': 5.0.0-2 + '@rollup/rollup-linux-ppc64-gnu': 5.0.0-2 + '@rollup/rollup-linux-ppc64-musl': 5.0.0-2 + '@rollup/rollup-linux-riscv64-gnu': 5.0.0-2 + '@rollup/rollup-linux-riscv64-musl': 5.0.0-2 + '@rollup/rollup-linux-s390x-gnu': 5.0.0-2 + '@rollup/rollup-linux-x64-gnu': 5.0.0-2 + '@rollup/rollup-linux-x64-musl': 5.0.0-2 + '@rollup/rollup-openbsd-x64': 5.0.0-2 + '@rollup/rollup-openharmony-arm64': 5.0.0-2 + '@rollup/rollup-win32-arm64-msvc': 5.0.0-2 + '@rollup/rollup-win32-ia32-msvc': 5.0.0-2 + '@rollup/rollup-win32-x64-gnu': 5.0.0-2 + '@rollup/rollup-win32-x64-msvc': 5.0.0-2 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3