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 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