From 4eeea29bd42b6abf3dad53b760f53750cd698872 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Sat, 21 Mar 2026 07:16:16 +0100 Subject: [PATCH 01/11] Pin Vite It currently does not work with Vitepress. --- renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 134742132..c4eedd211 100644 --- a/renovate.json +++ b/renovate.json @@ -38,7 +38,8 @@ "@types/node", "yargs-parser", "@inquirer/prompts", - "@rollup/plugin-terser" + "@rollup/plugin-terser", + "vite" ], "matchUpdateTypes": [ "major" From 0cba9e079e1d6e56882558827b37557f36c52966 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Sat, 21 Mar 2026 07:18:36 +0100 Subject: [PATCH 02/11] 4.59.1 --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ browser/package.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80e230a7e..da71ba850 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # rollup changelog +## 4.59.1 + +_2026-03-21_ + +### Bug Fixes + +- Fix a crash when using lazy dynamic imports with moduleSideEffects:false (#6306) + +### Pull Requests + +- [#6281](https://github.com/rollup/rollup/pull/6281): fix(deps): update minor/patch updates (@renovate[bot], @lukastaegert) +- [#6282](https://github.com/rollup/rollup/pull/6282): chore(deps): update github artifact actions (major) (@renovate[bot], @lukastaegert) +- [#6283](https://github.com/rollup/rollup/pull/6283): chore(deps): update dependency nyc to v18 (@renovate[bot], @lukastaegert) +- [#6284](https://github.com/rollup/rollup/pull/6284): fix(deps): update swc monorepo (major) (@renovate[bot]) +- [#6285](https://github.com/rollup/rollup/pull/6285): chore(deps): lock file maintenance (@renovate[bot]) +- [#6290](https://github.com/rollup/rollup/pull/6290): chore(deps): update minor/patch updates (@renovate[bot], @lukastaegert) +- [#6291](https://github.com/rollup/rollup/pull/6291): chore(deps): update dependency @shikijs/vitepress-twoslash to v4 (@renovate[bot]) +- [#6292](https://github.com/rollup/rollup/pull/6292): chore(deps): lock file maintenance (@renovate[bot]) +- [#6297](https://github.com/rollup/rollup/pull/6297): chore(deps): update minor/patch updates (@renovate[bot]) +- [#6298](https://github.com/rollup/rollup/pull/6298): chore(deps): lock file maintenance (@renovate[bot]) +- [#6299](https://github.com/rollup/rollup/pull/6299): chore(deps): lock file maintenance (@renovate[bot]) +- [#6300](https://github.com/rollup/rollup/pull/6300): docs: update packagephobia link (@bluwy) +- [#6301](https://github.com/rollup/rollup/pull/6301): chore(deps): update dependency lint-staged to ^16.3.3 (@renovate[bot]) +- [#6306](https://github.com/rollup/rollup/pull/6306): fix: fix chunk assignment for deoptimized module with dynamic import (@JoaoBrlt, @lukastaegert) +- [#6307](https://github.com/rollup/rollup/pull/6307): chore(deps): update minor/patch updates (@renovate[bot]) +- [#6308](https://github.com/rollup/rollup/pull/6308): chore(deps): update dependency lru-cache to v11 (@renovate[bot]) +- [#6309](https://github.com/rollup/rollup/pull/6309): chore(deps): update dependency vite to v8 (@renovate[bot]) +- [#6310](https://github.com/rollup/rollup/pull/6310): chore(deps): lock file maintenance (@renovate[bot]) +- [#6311](https://github.com/rollup/rollup/pull/6311): chore(deps): lock file maintenance (@renovate[bot]) +- [#6312](https://github.com/rollup/rollup/pull/6312): chore(deps): lock file maintenance (@renovate[bot]) + ## 4.59.0 _2026-02-22_ diff --git a/browser/package.json b/browser/package.json index 67855cfce..8902b7b17 100644 --- a/browser/package.json +++ b/browser/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/browser", - "version": "4.59.0", + "version": "4.59.1", "description": "Next-generation ES module bundler browser build", "main": "dist/rollup.browser.js", "module": "dist/es/rollup.browser.js", diff --git a/package-lock.json b/package-lock.json index 8a63ee5cf..5fef43a9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rollup", - "version": "4.59.0", + "version": "4.59.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rollup", - "version": "4.59.0", + "version": "4.59.1", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" diff --git a/package.json b/package.json index 9ed4d2ae0..5ff437cc7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rollup", - "version": "4.59.0", + "version": "4.59.1", "description": "Next-generation ES module bundler", "main": "dist/rollup.js", "module": "dist/es/rollup.js", From 6b725b9f0aae80e4ca4bf3e7b9763b153b850d8b Mon Sep 17 00:00:00 2001 From: Guy Bedford Date: Sat, 21 Mar 2026 04:01:10 -0400 Subject: [PATCH 03/11] feat: external only Source Phase imports support (#6279) * feat: external only Source Phase imports support * docs * fixup * fix: update source phase test configs to match error output Add missing url fields and fix message text to match the updated logSourcePhaseFormatUnsupported and logNonExternalSourcePhaseImport functions in src/utils/logs.ts. * Remove unnecessary fields * Improve coverage --------- Co-authored-by: Lukas Taegert-Atkinson --- docs/configuration-options/index.md | 2 + docs/es-module-syntax/index.md | 12 + package-lock.json | 268 ++---------------- package.json | 3 +- .../src/ast_nodes/import_declaration.rs | 19 +- .../src/ast_nodes/import_expression.rs | 27 +- rust/parse_ast/src/convert_ast/converter.rs | 4 +- .../convert_ast/converter/ast_constants.rs | 6 +- .../convert_ast/converter/string_constants.rs | 2 + scripts/ast-types.js | 20 +- scripts/generate-ast-macros.js | 3 +- scripts/generate-buffer-parsers.js | 6 + scripts/generate-buffer-to-ast.js | 8 + scripts/generate-string-constants.js | 4 +- src/Chunk.ts | 23 +- src/Graph.ts | 2 +- src/Module.ts | 24 +- src/ModuleLoader.ts | 20 +- src/ast/bufferParsers.ts | 4 + src/ast/nodes/ImportDeclaration.ts | 1 + src/ast/nodes/ImportExpression.ts | 1 + src/ast/variables/ExternalVariable.ts | 5 + src/finalisers/amd.ts | 2 + src/finalisers/cjs.ts | 3 + src/finalisers/es.ts | 16 +- src/finalisers/iife.ts | 3 + src/finalisers/shared/throwOnPhase.ts | 13 + src/finalisers/system.ts | 3 + src/finalisers/umd.ts | 2 + src/utils/bufferToAst.ts | 12 +- src/utils/convert-ast-strings.ts | 4 +- src/utils/deconflictChunk.ts | 6 + src/utils/logs.ts | 23 ++ src/utils/urls.ts | 3 + .../source-phase-imports-external/_config.js | 8 + .../_expected.js | 9 + .../source-phase-imports-external/main.js | 9 + .../_config.js | 25 ++ .../dep.js | 1 + .../main.js | 1 + .../_config.js | 13 + .../source-phase-dynamic-import-error/dep.js | 1 + .../source-phase-dynamic-import-error/main.js | 1 + .../_config.js | 13 + .../source-phase-format-unsupported/main.js | 2 + .../source-phase-import-error/_config.js | 13 + .../samples/source-phase-import-error/dep.js | 1 + .../samples/source-phase-import-error/main.js | 1 + test/testHelpers.js | 3 +- 49 files changed, 364 insertions(+), 291 deletions(-) create mode 100644 src/finalisers/shared/throwOnPhase.ts create mode 100644 test/form/samples/source-phase-imports-external/_config.js create mode 100644 test/form/samples/source-phase-imports-external/_expected.js create mode 100644 test/form/samples/source-phase-imports-external/main.js create mode 100644 test/function/samples/source-phase-dynamic-import-error-resolved/_config.js create mode 100644 test/function/samples/source-phase-dynamic-import-error-resolved/dep.js create mode 100644 test/function/samples/source-phase-dynamic-import-error-resolved/main.js create mode 100644 test/function/samples/source-phase-dynamic-import-error/_config.js create mode 100644 test/function/samples/source-phase-dynamic-import-error/dep.js create mode 100644 test/function/samples/source-phase-dynamic-import-error/main.js create mode 100644 test/function/samples/source-phase-format-unsupported/_config.js create mode 100644 test/function/samples/source-phase-format-unsupported/main.js create mode 100644 test/function/samples/source-phase-import-error/_config.js create mode 100644 test/function/samples/source-phase-import-error/dep.js create mode 100644 test/function/samples/source-phase-import-error/main.js diff --git a/docs/configuration-options/index.md b/docs/configuration-options/index.md index efba1cced..4de992a92 100755 --- a/docs/configuration-options/index.md +++ b/docs/configuration-options/index.md @@ -58,6 +58,8 @@ When providing a function, it is called with three parameters `(id, parent, isRe When creating an `iife` or `umd` bundle, you will need to provide global variable names to replace your external imports via the [`output.globals`](#output-globals) option. +Note that [source phase imports](../es-module-syntax/index.md#source-phase-import) (`import source x from 'y'`) are required to be external. Rollup will raise an error if a source phase import resolves to a module that is not external. + If a relative import, i.e. starting with `./` or `../`, is marked as "external", rollup will internally resolve the id to an absolute file system location so that different imports of the external module can be merged. When the resulting bundle is written, the import will again be converted to a relative import. Example: ```js diff --git a/docs/es-module-syntax/index.md b/docs/es-module-syntax/index.md index ceab161d9..c1ad697a6 100755 --- a/docs/es-module-syntax/index.md +++ b/docs/es-module-syntax/index.md @@ -66,6 +66,18 @@ import('./modules.js').then(({ default: DefaultExport, NamedExport }) => { This is useful for code-splitting applications and using modules on-the-fly. +### Source Phase Import + +Import the Source Phase representation of a module without executing it, using the [Source Phase Imports Proposal](https://github.com/tc39/proposal-source-phase-imports). + +This is useful for importing compiled WebAssembly modules through the module system without relying on the fetch API: + +```js +import source myModule from './module.wasm'; +``` + +Source phase imports must be [external](../configuration-options/index.md#external) — Rollup will raise an error if a source phase import resolves to a non-external module. They are preserved as `import source` declarations in `es` output format. Other output formats (`cjs`, `amd`, `iife`, `umd`, `system`) do not support source phase imports and will raise an error if one is present. + ## Exporting ### Named exports diff --git a/package-lock.json b/package-lock.json index 5fef43a9d..a697f944a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,6 +44,7 @@ "@vue/language-server": "^3.2.5", "acorn": "^8.16.0", "acorn-import-assertions": "^1.9.0", + "acorn-import-phases": "^1.0.4", "acorn-jsx": "^5.3.2", "buble": "^0.20.0", "builtin-modules": "^5.0.0", @@ -54,7 +55,7 @@ "date-time": "^4.0.0", "es5-shim": "^4.6.7", "es6-shim": "^0.35.8", - "eslint": "^10.0.3", + "eslint": "^10.1.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-unicorn": "^63.0.0", @@ -6337,6 +6338,19 @@ "acorn": "^8" } }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -8772,17 +8786,6 @@ "node": ">=6" } }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -9170,9 +9173,9 @@ } }, "node_modules/eslint": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.3.tgz", - "integrity": "sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.1.0.tgz", + "integrity": "sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==", "dev": true, "license": "MIT", "peer": true, @@ -9180,7 +9183,7 @@ "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", "@eslint/config-array": "^0.23.3", - "@eslint/config-helpers": "^0.5.2", + "@eslint/config-helpers": "^0.5.3", "@eslint/core": "^1.1.1", "@eslint/plugin-kit": "^0.6.1", "@humanfs/node": "^0.16.6", @@ -9193,7 +9196,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^9.1.2", "eslint-visitor-keys": "^5.0.1", - "espree": "^11.1.1", + "espree": "^11.2.0", "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -11466,237 +11469,6 @@ "node": ">= 0.8.0" } }, - "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", diff --git a/package.json b/package.json index 5ff437cc7..96b04a517 100644 --- a/package.json +++ b/package.json @@ -151,6 +151,7 @@ "@vue/language-server": "^3.2.5", "acorn": "^8.16.0", "acorn-import-assertions": "^1.9.0", + "acorn-import-phases": "^1.0.4", "acorn-jsx": "^5.3.2", "buble": "^0.20.0", "builtin-modules": "^5.0.0", @@ -161,7 +162,7 @@ "date-time": "^4.0.0", "es5-shim": "^4.6.7", "es6-shim": "^0.35.8", - "eslint": "^10.0.3", + "eslint": "^10.1.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-unicorn": "^63.0.0", diff --git a/rust/parse_ast/src/ast_nodes/import_declaration.rs b/rust/parse_ast/src/ast_nodes/import_declaration.rs index c5f4798bf..146feea80 100644 --- a/rust/parse_ast/src/ast_nodes/import_declaration.rs +++ b/rust/parse_ast/src/ast_nodes/import_declaration.rs @@ -1,9 +1,11 @@ use swc_ecma_ast::ImportDecl; use crate::convert_ast::converter::ast_constants::{ - IMPORT_DECLARATION_ATTRIBUTES_OFFSET, IMPORT_DECLARATION_RESERVED_BYTES, - IMPORT_DECLARATION_SOURCE_OFFSET, IMPORT_DECLARATION_SPECIFIERS_OFFSET, TYPE_IMPORT_DECLARATION, + IMPORT_DECLARATION_ATTRIBUTES_OFFSET, IMPORT_DECLARATION_PHASE_OFFSET, + IMPORT_DECLARATION_RESERVED_BYTES, IMPORT_DECLARATION_SOURCE_OFFSET, + IMPORT_DECLARATION_SPECIFIERS_OFFSET, TYPE_IMPORT_DECLARATION, }; +use crate::convert_ast::converter::string_constants::{STRING_DEFER, STRING_SOURCE}; use crate::convert_ast::converter::AstConverter; impl AstConverter<'_> { @@ -31,6 +33,19 @@ impl AstConverter<'_> { &import_declaration.with, end_position + IMPORT_DECLARATION_ATTRIBUTES_OFFSET, ); + // phase (only written for non-Evaluation phases; Evaluation leaves the default 0) + let phase_position = end_position + IMPORT_DECLARATION_PHASE_OFFSET; + match &import_declaration.phase { + swc_ecma_ast::ImportPhase::Source => { + self.buffer[phase_position..phase_position + 4].copy_from_slice(&STRING_SOURCE); + } + swc_ecma_ast::ImportPhase::Defer => { + self.buffer[phase_position..phase_position + 4].copy_from_slice(&STRING_DEFER); + } + swc_ecma_ast::ImportPhase::Evaluation => { + // Leave buffer at default 0; TS side treats 0 as no phase (undefined) + } + } // end self.add_end(end_position, &import_declaration.span); } diff --git a/rust/parse_ast/src/ast_nodes/import_expression.rs b/rust/parse_ast/src/ast_nodes/import_expression.rs index 101adee31..4e85d3ce0 100644 --- a/rust/parse_ast/src/ast_nodes/import_expression.rs +++ b/rust/parse_ast/src/ast_nodes/import_expression.rs @@ -1,14 +1,20 @@ use swc_common::Span; -use swc_ecma_ast::ExprOrSpread; +use swc_ecma_ast::{ExprOrSpread, Import}; use crate::convert_ast::converter::ast_constants::{ - IMPORT_EXPRESSION_OPTIONS_OFFSET, IMPORT_EXPRESSION_RESERVED_BYTES, - IMPORT_EXPRESSION_SOURCE_OFFSET, TYPE_IMPORT_EXPRESSION, + IMPORT_EXPRESSION_OPTIONS_OFFSET, IMPORT_EXPRESSION_PHASE_OFFSET, + IMPORT_EXPRESSION_RESERVED_BYTES, IMPORT_EXPRESSION_SOURCE_OFFSET, TYPE_IMPORT_EXPRESSION, }; +use crate::convert_ast::converter::string_constants::{STRING_DEFER, STRING_SOURCE}; use crate::convert_ast::converter::AstConverter; impl AstConverter<'_> { - pub(crate) fn store_import_expression(&mut self, span: &Span, arguments: &[ExprOrSpread]) { + pub(crate) fn store_import_expression( + &mut self, + span: &Span, + arguments: &[ExprOrSpread], + import: &Import, + ) { let end_position = self.add_type_and_start( &TYPE_IMPORT_EXPRESSION, span, @@ -23,6 +29,19 @@ impl AstConverter<'_> { self.update_reference_position(end_position + IMPORT_EXPRESSION_OPTIONS_OFFSET); self.convert_expression_or_spread(argument); } + // phase (only written for non-Evaluation phases; Evaluation leaves the default 0) + let phase_position = end_position + IMPORT_EXPRESSION_PHASE_OFFSET; + match &import.phase { + swc_ecma_ast::ImportPhase::Source => { + self.buffer[phase_position..phase_position + 4].copy_from_slice(&STRING_SOURCE); + } + swc_ecma_ast::ImportPhase::Defer => { + self.buffer[phase_position..phase_position + 4].copy_from_slice(&STRING_DEFER); + } + swc_ecma_ast::ImportPhase::Evaluation => { + // Leave buffer at default 0; TS side treats 0 as no phase (undefined) + } + } // end self.add_end(end_position, span); } diff --git a/rust/parse_ast/src/convert_ast/converter.rs b/rust/parse_ast/src/convert_ast/converter.rs index bad0dfa4d..17148bd1e 100644 --- a/rust/parse_ast/src/convert_ast/converter.rs +++ b/rust/parse_ast/src/convert_ast/converter.rs @@ -201,8 +201,8 @@ impl<'a> AstConverter<'a> { is_chained: bool, ) { match &call_expression.callee { - Callee::Import(_) => { - self.store_import_expression(&call_expression.span, &call_expression.args) + Callee::Import(import) => { + self.store_import_expression(&call_expression.span, &call_expression.args, import) } Callee::Expr(callee_expression) => self.store_call_expression( &call_expression.span, diff --git a/rust/parse_ast/src/convert_ast/converter/ast_constants.rs b/rust/parse_ast/src/convert_ast/converter/ast_constants.rs index add6ddf81..2a7aba600 100644 --- a/rust/parse_ast/src/convert_ast/converter/ast_constants.rs +++ b/rust/parse_ast/src/convert_ast/converter/ast_constants.rs @@ -122,14 +122,16 @@ pub const IMPORT_ATTRIBUTE_RESERVED_BYTES: usize = 12; pub const IMPORT_ATTRIBUTE_KEY_OFFSET: usize = 4; pub const IMPORT_ATTRIBUTE_VALUE_OFFSET: usize = 8; -pub const IMPORT_DECLARATION_RESERVED_BYTES: usize = 16; +pub const IMPORT_DECLARATION_RESERVED_BYTES: usize = 20; pub const IMPORT_DECLARATION_SPECIFIERS_OFFSET: usize = 4; pub const IMPORT_DECLARATION_SOURCE_OFFSET: usize = 8; pub const IMPORT_DECLARATION_ATTRIBUTES_OFFSET: usize = 12; +pub const IMPORT_DECLARATION_PHASE_OFFSET: usize = 16; -pub const IMPORT_EXPRESSION_RESERVED_BYTES: usize = 12; +pub const IMPORT_EXPRESSION_RESERVED_BYTES: usize = 16; pub const IMPORT_EXPRESSION_SOURCE_OFFSET: usize = 4; pub const IMPORT_EXPRESSION_OPTIONS_OFFSET: usize = 8; +pub const IMPORT_EXPRESSION_PHASE_OFFSET: usize = 12; pub const JSX_EMPTY_EXPRESSION_RESERVED_BYTES: usize = 4; diff --git a/rust/parse_ast/src/convert_ast/converter/string_constants.rs b/rust/parse_ast/src/convert_ast/converter/string_constants.rs index b5955be0e..778105e86 100644 --- a/rust/parse_ast/src/convert_ast/converter/string_constants.rs +++ b/rust/parse_ast/src/convert_ast/converter/string_constants.rs @@ -64,3 +64,5 @@ pub const STRING_NOSIDEEFFECTS: [u8; 4] = 59u32.to_ne_bytes(); // noSideEffects pub const STRING_SOURCEMAP: [u8; 4] = 60u32.to_ne_bytes(); // sourcemap pub const STRING_USING: [u8; 4] = 61u32.to_ne_bytes(); // using pub const STRING_AWAIT_USING: [u8; 4] = 62u32.to_ne_bytes(); // await using +pub const STRING_SOURCE: [u8; 4] = 63u32.to_ne_bytes(); // source +pub const STRING_DEFER: [u8; 4] = 64u32.to_ne_bytes(); // defer diff --git a/scripts/ast-types.js b/scripts/ast-types.js index f36d1719d..6cdac9abb 100644 --- a/scripts/ast-types.js +++ b/scripts/ast-types.js @@ -26,7 +26,7 @@ * For JSX, see also https://github.com/facebook/jsx/blob/main/AST.md */ -/** @typedef {"Node"|"OptionalNode"|"NodeList"|"Annotations"|"InvalidAnnotations"|"String"|"FixedString"|"OptionalString"|"NullableString"|"Float"} FieldType */ +/** @typedef {"Node"|"OptionalNode"|"NodeList"|"Annotations"|"InvalidAnnotations"|"String"|"FixedString"|"OptionalFixedString"|"OptionalString"|"NullableString"|"Float"} FieldType */ /** @typedef {[name:string, type:FieldType]} FieldWithType */ @@ -354,23 +354,33 @@ export const AST_NODES = { useMacro: false }, ImportDeclaration: { - estreeType: 'estree.ImportDeclaration & { attributes: ImportAttributeNode[] }', + estreeType: + 'estree.ImportDeclaration & { attributes: ImportAttributeNode[]; phase?: "source" | "defer" }', fields: [ ['specifiers', 'NodeList'], ['source', 'Node'], - ['attributes', 'NodeList'] + ['attributes', 'NodeList'], + ['phase', 'OptionalFixedString'] ], + fieldTypes: { + phase: '"source" | "defer"' + }, useMacro: false }, ImportDefaultSpecifier: { fields: [['local', 'Node']] }, ImportExpression: { - estreeType: 'estree.ImportExpression & { options: estree.Expression | null }', + estreeType: + 'estree.ImportExpression & { options: estree.Expression | null; phase?: "source" | "defer" }', fields: [ ['source', 'Node'], - ['options', 'OptionalNode'] + ['options', 'OptionalNode'], + ['phase', 'OptionalFixedString'] ], + fieldTypes: { + phase: '"source" | "defer"' + }, scriptedFields: { source: `node.source = convertNode(node, scope, $position, buffer); node.sourceAstNode = convertJsonNode($position, buffer);` diff --git a/scripts/generate-ast-macros.js b/scripts/generate-ast-macros.js index 5252348ae..81f97b062 100644 --- a/scripts/generate-ast-macros.js +++ b/scripts/generate-ast-macros.js @@ -35,7 +35,8 @@ const astMacros = astNodeNamesWithFieldOrder fieldConverters += ` // ${fieldName}`; switch (fieldType) { - case 'FixedString': { + case 'FixedString': + case 'OptionalFixedString': { valuesInput += `, ${fieldName} => $${fieldName}_value:expr`; fieldConverters += ` let ${fieldName}_position = end_position + ${reservedBytes}; diff --git a/scripts/generate-buffer-parsers.js b/scripts/generate-buffer-parsers.js index b42b8c0b9..6b5352bf8 100644 --- a/scripts/generate-buffer-parsers.js +++ b/scripts/generate-buffer-parsers.js @@ -157,6 +157,12 @@ function getFieldDefinition([fieldName, fieldType], node, originalNode, offset) needsScope: false }; } + case 'OptionalFixedString': { + return { + definition: `const ${fieldName}Index = ${dataStart};\n${assignmentLeftHand}${fieldName}Index === 0 ? undefined : FIXED_STRINGS[${fieldName}Index]${typeCastString};`, + needsScope: false + }; + } case 'Float': { return { definition: `${assignmentLeftHand}new DataView(buffer.buffer).getFloat64((${getPosition}) << 2, true);`, diff --git a/scripts/generate-buffer-to-ast.js b/scripts/generate-buffer-to-ast.js index 648b0d2e8..c7227dbcc 100644 --- a/scripts/generate-buffer-to-ast.js +++ b/scripts/generate-buffer-to-ast.js @@ -80,6 +80,9 @@ function getFieldDefinition([fieldName, fieldType], node, originalNode, offset) case 'Float': { return ''; } + case 'OptionalFixedString': { + return `const ${fieldName}Index = ${dataStart};\n`; + } case 'OptionalNode': { return `const ${fieldName}Position = ${dataStart};\n`; } @@ -118,6 +121,11 @@ function getFieldProperty([fieldName, fieldType], node, originalNode, offset) { case 'InvalidAnnotations': { return `...(${fieldName}.length > 0 ? { [INVALID_ANNOTATION_KEY]: ${fieldName} } : {})`; } + case 'OptionalFixedString': { + const typeCast = originalNode.fieldTypes?.[fieldName] || node.fieldTypes?.[fieldName]; + const typeCastString = typeCast ? ` as ${typeCast}` : ''; + return `...(${fieldName}Index === 0 ? {} : { ${fieldName}: FIXED_STRINGS[${fieldName}Index]${typeCastString} })`; + } default: { return `${fieldName}: ${getFieldPropertyBase([fieldName, fieldType], node, originalNode, offset)}`; } diff --git a/scripts/generate-string-constants.js b/scripts/generate-string-constants.js index 120c2a6c9..768f4067d 100644 --- a/scripts/generate-string-constants.js +++ b/scripts/generate-string-constants.js @@ -72,7 +72,9 @@ const stringConstantsTemplate = [ ['STRING_NOSIDEEFFECTS', 'noSideEffects'], ['STRING_SOURCEMAP', 'sourcemap'], ['STRING_USING', 'using'], - ['STRING_AWAIT_USING', 'await using'] + ['STRING_AWAIT_USING', 'await using'], + ['STRING_SOURCE', 'source'], + ['STRING_DEFER', 'defer'] ]; const rustCode = diff --git a/src/Chunk.ts b/src/Chunk.ts index 117d7cd30..ea73af348 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -6,6 +6,7 @@ import type ImportExpression from './ast/nodes/ImportExpression'; import { formatsMaybeAccessDocumentCurrentScript } from './ast/nodes/MetaProperty'; import type ChildScope from './ast/scopes/ChildScope'; import ExportDefaultVariable from './ast/variables/ExportDefaultVariable'; +import type ExternalVariable from './ast/variables/ExternalVariable'; import LocalVariable from './ast/variables/LocalVariable'; import NamespaceVariable from './ast/variables/NamespaceVariable'; import SyntheticNamedExportVariable from './ast/variables/SyntheticNamedExportVariable'; @@ -107,6 +108,7 @@ export interface ChunkDependency { namedExportsMode: boolean; namespaceVariableName: string | undefined; reexports: ReexportSpecifier[] | null; + sourcePhaseImport: string | undefined; } export type ChunkExports = { @@ -125,6 +127,7 @@ export interface ReexportSpecifier { export interface ImportSpecifier { imported: string; local: string; + phase: 'source' | 'instance'; } interface FacadeName { @@ -1074,10 +1077,17 @@ export default class Chunk { const module = variable.module!; let dependency: Chunk | ExternalChunk; let imported: string; + const isSourcePhase = + module instanceof ExternalModule && (variable as ExternalVariable).isSourcePhase; if (module instanceof ExternalModule) { dependency = this.externalChunkByModule.get(module)!; imported = variable.name; - if (imported !== 'default' && imported !== '*' && interop(module.id) === 'defaultOnly') { + if ( + !isSourcePhase && + imported !== 'default' && + imported !== '*' && + interop(module.id) === 'defaultOnly' + ) { return error(logUnexpectedNamedImport(module.id, imported, false)); } } else { @@ -1086,7 +1096,8 @@ export default class Chunk { } getOrCreate(importsByDependency, dependency, getNewArray).push({ imported, - local: variable.getName(this.snippets.getPropertyAccess) + local: variable.getName(this.snippets.getPropertyAccess), + phase: isSourcePhase ? 'source' : 'instance' }); } return importsByDependency; @@ -1241,6 +1252,9 @@ export default class Chunk { const namedExportsMode = dependency instanceof ExternalChunk || dependency.exportMode !== 'default'; const importPath = dependency.getImportPath(fileName); + // Separate source-phase imports from regular imports + const sourcePhaseImport = imports?.find(index => index.phase === 'source'); + const instanceImports = imports?.filter(index => index.phase !== 'source') ?? null; renderedDependencies.set(dependency, { attributes: @@ -1258,12 +1272,13 @@ export default class Chunk { this.inputOptions.onLog ), importPath, - imports, + imports: instanceImports && instanceImports.length > 0 ? instanceImports : null, isChunk: dependency instanceof Chunk, name: dependency.variableName, namedExportsMode, namespaceVariableName: dependency.namespaceVariableName, - reexports + reexports, + sourcePhaseImport: sourcePhaseImport?.local }); } diff --git a/src/Graph.ts b/src/Graph.ts index 58ca3418d..475e02cdb 100644 --- a/src/Graph.ts +++ b/src/Graph.ts @@ -228,7 +228,7 @@ export default class Graph { private warnForMissingExports(): void { for (const module of this.modules) { for (const importDescription of module.importDescriptions.values()) { - if (importDescription.name !== '*') { + if (importDescription.name !== '*' && importDescription.phase !== 'source') { const [variable, options] = importDescription.module.getVariableForExportName( importDescription.name, { importChain: [module.id] } diff --git a/src/Module.ts b/src/Module.ts index 13aba84a7..8e1629a9e 100644 --- a/src/Module.ts +++ b/src/Module.ts @@ -26,7 +26,7 @@ import type { ObjectPath } from './ast/utils/PathTracker'; import { type EntityPathTracker, UNKNOWN_PATH } from './ast/utils/PathTracker'; import ExportDefaultVariable from './ast/variables/ExportDefaultVariable'; import ExportShimVariable from './ast/variables/ExportShimVariable'; -import ExternalVariable from './ast/variables/ExternalVariable'; +import ExternalVariable, { SOURCE_PHASE_IMPORT } from './ast/variables/ExternalVariable'; import NamespaceVariable from './ast/variables/NamespaceVariable'; import SyntheticNamedExportVariable from './ast/variables/SyntheticNamedExportVariable'; import type Variable from './ast/variables/Variable'; @@ -94,6 +94,7 @@ import { MISSING_EXPORT_SHIM_VARIABLE } from './utils/variableNames'; export interface ImportDescription { module: Module | ExternalModule; name: string; + phase: 'source' | 'instance'; source: string; start: number; } @@ -253,6 +254,7 @@ export default class Module { declare scope: ModuleScope; readonly sideEffectDependenciesByVariable = new Map>(); declare sourcemapChain: DecodedSourceMapOrMissing[]; + readonly sourcePhaseSources = new Set(); readonly sourcesWithAttributes = new Map>(); declare transformFiles?: EmittedFile[]; @@ -1118,16 +1120,19 @@ export default class Module { } const name = - specifier instanceof ImportDefaultSpecifier - ? 'default' - : specifier instanceof ImportNamespaceSpecifier - ? '*' - : specifier.imported instanceof Identifier - ? specifier.imported.name - : specifier.imported.value; + node.phase === 'source' + ? SOURCE_PHASE_IMPORT + : specifier instanceof ImportDefaultSpecifier + ? 'default' + : specifier instanceof ImportNamespaceSpecifier + ? '*' + : specifier.imported instanceof Identifier + ? specifier.imported.name + : specifier.imported.value; this.importDescriptions.set(localName, { module: null as never, // filled in later name, + phase: node.phase === 'source' ? 'source' : 'instance', source, start: specifier.start }); @@ -1224,6 +1229,9 @@ export default class Module { } else { this.sourcesWithAttributes.set(source, parsedAttributes); } + if ((declaration as ImportDeclaration).phase === 'source') { + this.sourcePhaseSources.add(source); + } } private getImportedJsxFactoryVariable( diff --git a/src/ModuleLoader.ts b/src/ModuleLoader.ts index 21be38040..a3decaf05 100644 --- a/src/ModuleLoader.ts +++ b/src/ModuleLoader.ts @@ -27,6 +27,7 @@ import { logImplicitDependantCannotBeExternal, logInconsistentImportAttributes, logInternalIdCannotBeExternal, + logNonExternalSourcePhaseImport, logUnresolvedEntry, logUnresolvedImplicitDependant, logUnresolvedImport, @@ -384,12 +385,20 @@ export class ModuleLoader { ): Promise { const dependencies = await Promise.all( resolveDynamicImportPromises.map(resolveDynamicImportPromise => - resolveDynamicImportPromise.then(async ([{ node }, resolvedId]) => { + resolveDynamicImportPromise.then(async ([{ argument, node }, resolvedId]) => { if (resolvedId === null) return null; if (typeof resolvedId === 'string') { node.resolution = resolvedId; return null; } + if (node.phase === 'source' && !resolvedId.external) { + return error( + logNonExternalSourcePhaseImport( + typeof argument === 'string' ? argument : relativeId(resolvedId.id), + module.id + ) + ); + } return (node.resolution = await this.fetchResolvedDependency( relativeId(resolvedId.id), module.id, @@ -526,9 +535,12 @@ export class ModuleLoader { ): Promise { for (const dependency of await Promise.all( resolveStaticDependencyPromises.map(resolveStaticDependencyPromise => - resolveStaticDependencyPromise.then(([source, resolvedId]) => - this.fetchResolvedDependency(source, module.id, resolvedId) - ) + resolveStaticDependencyPromise.then(([source, resolvedId]) => { + if (module.sourcePhaseSources.has(source) && !resolvedId.external) { + return error(logNonExternalSourcePhaseImport(source, module.id)); + } + return this.fetchResolvedDependency(source, module.id, resolvedId); + }) ) )) { module.dependencies.add(dependency); diff --git a/src/ast/bufferParsers.ts b/src/ast/bufferParsers.ts index 826f12b3c..185c15015 100644 --- a/src/ast/bufferParsers.ts +++ b/src/ast/bufferParsers.ts @@ -594,6 +594,8 @@ const bufferParsers: ((node: any, position: number, buffer: AstBuffer) => void)[ node.specifiers = convertNodeList(node, scope, buffer[position], buffer); node.source = convertNode(node, scope, buffer[position + 1], buffer); node.attributes = convertNodeList(node, scope, buffer[position + 2], buffer); + const phaseIndex = buffer[position + 3]; + node.phase = phaseIndex === 0 ? undefined : (FIXED_STRINGS[phaseIndex] as 'source' | 'defer'); }, function importDefaultSpecifier(node: ImportDefaultSpecifier, position, buffer) { const { scope } = node; @@ -605,6 +607,8 @@ const bufferParsers: ((node: any, position: number, buffer: AstBuffer) => void)[ node.sourceAstNode = convertJsonNode(buffer[position], buffer); const optionsPosition = buffer[position + 1]; node.options = optionsPosition === 0 ? null : convertNode(node, scope, optionsPosition, buffer); + const phaseIndex = buffer[position + 2]; + node.phase = phaseIndex === 0 ? undefined : (FIXED_STRINGS[phaseIndex] as 'source' | 'defer'); }, function importNamespaceSpecifier(node: ImportNamespaceSpecifier, position, buffer) { const { scope } = node; diff --git a/src/ast/nodes/ImportDeclaration.ts b/src/ast/nodes/ImportDeclaration.ts index d279d26b2..ffa7531c2 100644 --- a/src/ast/nodes/ImportDeclaration.ts +++ b/src/ast/nodes/ImportDeclaration.ts @@ -11,6 +11,7 @@ import { doNotDeoptimize, NodeBase, onlyIncludeSelfNoDeoptimize } from './shared export default class ImportDeclaration extends NodeBase { declare attributes: ImportAttribute[]; declare needsBoundaries: true; + declare phase: 'source' | 'defer' | undefined; declare source: Literal; declare specifiers: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[]; declare type: NodeType.tImportDeclaration; diff --git a/src/ast/nodes/ImportExpression.ts b/src/ast/nodes/ImportExpression.ts index 7d93b6b28..fa24742db 100644 --- a/src/ast/nodes/ImportExpression.ts +++ b/src/ast/nodes/ImportExpression.ts @@ -56,6 +56,7 @@ function getChunkInfoWithPath(chunk: Chunk): PreRenderedChunkWithFileName { export default class ImportExpression extends NodeBase { declare options: ExpressionNode | null; inlineNamespace: NamespaceVariable | null = null; + declare phase: 'source' | 'defer' | undefined; declare source: ExpressionNode; declare type: NodeType.tImportExpression; declare sourceAstNode: AstNode; diff --git a/src/ast/variables/ExternalVariable.ts b/src/ast/variables/ExternalVariable.ts index ceda7380b..1db4f5ac3 100644 --- a/src/ast/variables/ExternalVariable.ts +++ b/src/ast/variables/ExternalVariable.ts @@ -6,8 +6,12 @@ import type IdentifierBase from '../nodes/shared/IdentifierBase'; import { type ObjectPath } from '../utils/PathTracker'; import Variable from './Variable'; +/** Synthetic import name for source phase imports, similar to '*' for namespaces */ +export const SOURCE_PHASE_IMPORT = '*source'; + export default class ExternalVariable extends Variable { readonly isNamespace: boolean; + readonly isSourcePhase: boolean; readonly module: ExternalModule; referenced = false; @@ -15,6 +19,7 @@ export default class ExternalVariable extends Variable { super(name); this.module = module; this.isNamespace = name === '*'; + this.isSourcePhase = name === SOURCE_PHASE_IMPORT; } addReference(identifier: IdentifierBase): void { diff --git a/src/finalisers/amd.ts b/src/finalisers/amd.ts index 923bc0f8a..5cb9119f9 100644 --- a/src/finalisers/amd.ts +++ b/src/finalisers/amd.ts @@ -4,6 +4,7 @@ import type { FinaliserOptions } from './index'; import getCompleteAmdId from './shared/getCompleteAmdId'; import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; +import throwOnPhase from './shared/throwOnPhase'; import updateExtensionForRelativeAmdId from './shared/updateExtensionForRelativeAmdId'; import warnOnBuiltins from './shared/warnOnBuiltins'; @@ -37,6 +38,7 @@ export default function amd( }: NormalizedOutputOptions ): void { warnOnBuiltins(log, dependencies); + throwOnPhase('amd', id, dependencies); const deps = dependencies.map( m => `'${updateExtensionForRelativeAmdId(m.importPath, amd.forceJsExtensionForImports)}'` ); diff --git a/src/finalisers/cjs.ts b/src/finalisers/cjs.ts index 7660867c5..7d0e58a38 100644 --- a/src/finalisers/cjs.ts +++ b/src/finalisers/cjs.ts @@ -5,6 +5,7 @@ import type { GenerateCodeSnippets } from '../utils/generateCodeSnippets'; import type { FinaliserOptions } from './index'; import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; +import throwOnPhase from './shared/throwOnPhase'; export default function cjs( magicString: MagicStringBundle, @@ -14,6 +15,7 @@ export default function cjs( exports, hasDefaultExport, hasExports, + id, indent: t, intro, isEntryFacade, @@ -33,6 +35,7 @@ export default function cjs( strict }: NormalizedOutputOptions ): void { + throwOnPhase('cjs', id, dependencies); const { _, n } = snippets; const useStrict = strict ? `'use strict';${n}${n}` : ''; diff --git a/src/finalisers/es.ts b/src/finalisers/es.ts index 960f8ea7b..1cfead2de 100644 --- a/src/finalisers/es.ts +++ b/src/finalisers/es.ts @@ -44,11 +44,23 @@ function getImportBlock( { _ }: GenerateCodeSnippets ): string[] { const importBlock: string[] = []; - for (const { importPath, reexports, imports, name, attributes } of dependencies) { + for (const { + importPath, + reexports, + imports, + name, + attributes, + sourcePhaseImport + } of dependencies) { const assertion = attributes ? `${_}${importAttributesKey}${_}${attributes}` : ''; const pathWithAssertion = `'${importPath}'${assertion};`; + if (sourcePhaseImport) { + importBlock.push(`import source ${sourcePhaseImport} from${_}${pathWithAssertion}`); + } if (!reexports && !imports) { - importBlock.push(`import${_}${pathWithAssertion}`); + if (!sourcePhaseImport) { + importBlock.push(`import${_}${pathWithAssertion}`); + } continue; } if (imports) { diff --git a/src/finalisers/iife.ts b/src/finalisers/iife.ts index 93a206511..f7237e351 100644 --- a/src/finalisers/iife.ts +++ b/src/finalisers/iife.ts @@ -12,6 +12,7 @@ import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; import { keypath } from './shared/sanitize'; import setupNamespace from './shared/setupNamespace'; +import throwOnPhase from './shared/throwOnPhase'; import trimEmptyImports from './shared/trimEmptyImports'; import warnOnBuiltins from './shared/warnOnBuiltins'; @@ -23,6 +24,7 @@ export default function iife( exports, hasDefaultExport, hasExports, + id, indent: t, intro, namedExportsMode, @@ -44,6 +46,7 @@ export default function iife( strict }: NormalizedOutputOptions ): void { + throwOnPhase('iife', id, dependencies); const { _, getNonArrowFunctionIntro, getPropertyAccess, n } = snippets; const isNamespaced = name && name.includes('.'); const useVariableAssignment = !extend && !isNamespaced; diff --git a/src/finalisers/shared/throwOnPhase.ts b/src/finalisers/shared/throwOnPhase.ts new file mode 100644 index 000000000..a14db3267 --- /dev/null +++ b/src/finalisers/shared/throwOnPhase.ts @@ -0,0 +1,13 @@ +import type { ChunkDependency } from '../../Chunk'; +import { error, logSourcePhaseFormatUnsupported } from '../../utils/logs'; + +export default function throwOnPhase( + outputFormat: string, + chunkId: string, + dependencies: readonly ChunkDependency[] +): void { + const sourcePhaseDependency = dependencies.find(dependency => dependency.sourcePhaseImport); + if (sourcePhaseDependency) { + error(logSourcePhaseFormatUnsupported(outputFormat, chunkId, sourcePhaseDependency.importPath)); + } +} diff --git a/src/finalisers/system.ts b/src/finalisers/system.ts index ad926028c..eeec29e20 100644 --- a/src/finalisers/system.ts +++ b/src/finalisers/system.ts @@ -6,6 +6,7 @@ import { stringifyObjectKeyIfNeeded } from '../utils/identifierHelpers'; import { getHelpersBlock } from '../utils/interopHelpers'; import { MISSING_EXPORT_SHIM_VARIABLE } from '../utils/variableNames'; import type { FinaliserOptions } from './index'; +import throwOnPhase from './shared/throwOnPhase'; export default function system( magicString: MagicStringBundle, @@ -14,6 +15,7 @@ export default function system( dependencies, exports, hasExports, + id, indent: t, intro, snippets, @@ -29,6 +31,7 @@ export default function system( systemNullSetters }: NormalizedOutputOptions ): void { + throwOnPhase('system', id, dependencies); const { _, getFunctionIntro, getNonArrowFunctionIntro, n, s } = snippets; const { importBindings, setters, starExcludes } = analyzeDependencies( dependencies, diff --git a/src/finalisers/umd.ts b/src/finalisers/umd.ts index 16be02c37..0499a7d2c 100644 --- a/src/finalisers/umd.ts +++ b/src/finalisers/umd.ts @@ -8,6 +8,7 @@ import { getExportBlock, getNamespaceMarkers } from './shared/getExportBlock'; import getInteropBlock from './shared/getInteropBlock'; import { keypath } from './shared/sanitize'; import { assignToDeepVariable } from './shared/setupNamespace'; +import throwOnPhase from './shared/throwOnPhase'; import trimEmptyImports from './shared/trimEmptyImports'; import updateExtensionForRelativeAmdId from './shared/updateExtensionForRelativeAmdId'; import warnOnBuiltins from './shared/warnOnBuiltins'; @@ -73,6 +74,7 @@ export default function umd( return error(logMissingNameOptionForUmdExport()); } + throwOnPhase('umd', id, dependencies); warnOnBuiltins(log, dependencies); const amdDeps = dependencies.map( diff --git a/src/utils/bufferToAst.ts b/src/utils/bufferToAst.ts index a7789d4ac..e7023a96e 100644 --- a/src/utils/bufferToAst.ts +++ b/src/utils/bufferToAst.ts @@ -404,13 +404,15 @@ const nodeConverters: ((position: number, buffer: AstBuffer) => any)[] = [ }; }, function importDeclaration(position, buffer): ImportDeclarationNode { + const phaseIndex = buffer[position + 5]; return { type: 'ImportDeclaration', start: buffer[position], end: buffer[position + 1], specifiers: convertNodeList(buffer[position + 2], buffer), source: convertNode(buffer[position + 3], buffer), - attributes: convertNodeList(buffer[position + 4], buffer) + attributes: convertNodeList(buffer[position + 4], buffer), + ...(phaseIndex === 0 ? {} : { phase: FIXED_STRINGS[phaseIndex] as 'source' | 'defer' }) }; }, function importDefaultSpecifier(position, buffer): ImportDefaultSpecifierNode { @@ -423,12 +425,14 @@ const nodeConverters: ((position: number, buffer: AstBuffer) => any)[] = [ }, function importExpression(position, buffer): ImportExpressionNode { const optionsPosition = buffer[position + 3]; + const phaseIndex = buffer[position + 4]; return { type: 'ImportExpression', start: buffer[position], end: buffer[position + 1], source: convertNode(buffer[position + 2], buffer), - options: optionsPosition === 0 ? null : convertNode(optionsPosition, buffer) + options: optionsPosition === 0 ? null : convertNode(optionsPosition, buffer), + ...(phaseIndex === 0 ? {} : { phase: FIXED_STRINGS[phaseIndex] as 'source' | 'defer' }) }; }, function importNamespaceSpecifier(position, buffer): ImportNamespaceSpecifierNode { @@ -1020,11 +1024,11 @@ export type ImportAttributeNode = RollupAstNode<{ value: estree.Literal; }>; export type ImportDeclarationNode = RollupAstNode< - estree.ImportDeclaration & { attributes: ImportAttributeNode[] } + estree.ImportDeclaration & { attributes: ImportAttributeNode[]; phase?: 'source' | 'defer' } >; export type ImportDefaultSpecifierNode = RollupAstNode; export type ImportExpressionNode = RollupAstNode< - estree.ImportExpression & { options: estree.Expression | null } + estree.ImportExpression & { options: estree.Expression | null; phase?: 'source' | 'defer' } >; export type ImportNamespaceSpecifierNode = RollupAstNode; export type ImportSpecifierNode = RollupAstNode; diff --git a/src/utils/convert-ast-strings.ts b/src/utils/convert-ast-strings.ts index ad2da5d2b..eda3f8659 100644 --- a/src/utils/convert-ast-strings.ts +++ b/src/utils/convert-ast-strings.ts @@ -64,5 +64,7 @@ export default [ 'noSideEffects', 'sourcemap', 'using', - 'await using' + 'await using', + 'source', + 'defer' ]; diff --git a/src/utils/deconflictChunk.ts b/src/utils/deconflictChunk.ts index 9981974f8..5d09475e8 100644 --- a/src/utils/deconflictChunk.ts +++ b/src/utils/deconflictChunk.ts @@ -1,5 +1,6 @@ import type ChildScope from '../ast/scopes/ChildScope'; import ExportDefaultVariable from '../ast/variables/ExportDefaultVariable'; +import type ExternalVariable from '../ast/variables/ExternalVariable'; import type SyntheticNamedExportVariable from '../ast/variables/SyntheticNamedExportVariable'; import type Variable from '../ast/variables/Variable'; import type Chunk from '../Chunk'; @@ -111,6 +112,11 @@ function deconflictImportsEsmOrSystem( : chunkByModule.get(module)! ).variableName ); + } else if (module instanceof ExternalModule && (variable as ExternalVariable).isSourcePhase) { + variable.setRenderNames( + null, + getSafeName(module.suggestedVariableName + '__source', usedNames, variable.forbiddenNames) + ); } else if (module instanceof ExternalModule && name === 'default') { variable.setRenderNames( null, diff --git a/src/utils/logs.ts b/src/utils/logs.ts index 0f852802b..d6c592933 100644 --- a/src/utils/logs.ts +++ b/src/utils/logs.ts @@ -26,6 +26,7 @@ import { URL_OUTPUT_GLOBALS, URL_OUTPUT_INTEROP, URL_OUTPUT_NAME, + URL_SOURCE_PHASE_IMPORTS, URL_SOURCEMAP_IS_LIKELY_TO_BE_INCORRECT, URL_THIS_IS_UNDEFINED, URL_TREATING_MODULE_AS_EXTERNAL_DEPENDENCY, @@ -164,6 +165,7 @@ const ADDON_ERROR = 'ADDON_ERROR', MIXED_EXPORTS = 'MIXED_EXPORTS', MODULE_LEVEL_DIRECTIVE = 'MODULE_LEVEL_DIRECTIVE', NAMESPACE_CONFLICT = 'NAMESPACE_CONFLICT', + NON_EXTERNAL_SOURCE_PHASE_IMPORT = 'NON_EXTERNAL_SOURCE_PHASE_IMPORT', NO_FS_IN_BROWSER = 'NO_FS_IN_BROWSER', NO_TRANSFORM_MAP_OR_AST_WITHOUT_CODE = 'NO_TRANSFORM_MAP_OR_AST_WITHOUT_CODE', ONLY_INLINE_SOURCEMAPS = 'ONLY_INLINE_SOURCEMAPS', @@ -173,6 +175,7 @@ const ADDON_ERROR = 'ADDON_ERROR', REDECLARATION_ERROR = 'REDECLARATION_ERROR', RESERVED_NAMESPACE = 'RESERVED_NAMESPACE', SHIMMED_EXPORT = 'SHIMMED_EXPORT', + SOURCE_PHASE_FORMAT_UNSUPPORTED = 'SOURCE_PHASE_FORMAT_UNSUPPORTED', SOURCEMAP_BROKEN = 'SOURCEMAP_BROKEN', SOURCEMAP_ERROR = 'SOURCEMAP_ERROR', SYNTHETIC_NAMED_EXPORTS_NEED_NAMESPACE_EXPORT = 'SYNTHETIC_NAMED_EXPORTS_NEED_NAMESPACE_EXPORT', @@ -892,6 +895,14 @@ export function logNamespaceConflict( }; } +export function logNonExternalSourcePhaseImport(source: string, importer: string): RollupLog { + return { + code: NON_EXTERNAL_SOURCE_PHASE_IMPORT, + message: `Source phase import "${source}" in "${relativeId(importer)}" must be external. Source phase imports are only supported for external modules. Use the "external" option to mark this module as external.`, + url: getRollupUrl(URL_SOURCE_PHASE_IMPORTS) + }; +} + export function logNoFileSystemInBrowser(method: string): RollupLog { return { code: NO_FS_IN_BROWSER, @@ -1000,6 +1011,18 @@ export function logShimmedExport(id: string, binding: string): RollupLog { }; } +export function logSourcePhaseFormatUnsupported( + outputFormat: string, + chunkId: string, + dependencyId: string +): RollupLog { + return { + code: SOURCE_PHASE_FORMAT_UNSUPPORTED, + message: `Source phase imports are not supported for the "${outputFormat}" output format, importing "${dependencyId}" in "${chunkId}". Use the "es" output format to support source phase imports.`, + url: getRollupUrl(URL_SOURCE_PHASE_IMPORTS) + }; +} + export function logSourcemapBroken(plugin: string): RollupLog { return { code: SOURCEMAP_BROKEN, diff --git a/src/utils/urls.ts b/src/utils/urls.ts index b8e496359..df415c3d2 100644 --- a/src/utils/urls.ts +++ b/src/utils/urls.ts @@ -36,6 +36,9 @@ export const URL_TREESHAKE_NOSIDEEFFECTS = 'configuration-options/#no-side-effec export const URL_TREESHAKE_MODULESIDEEFFECTS = 'configuration-options/#treeshake-modulesideeffects'; export const URL_WATCH = 'configuration-options/#watch'; +// es-module-syntax +export const URL_SOURCE_PHASE_IMPORTS = 'es-module-syntax/#source-phase-import'; + // command-line-interface export const URL_BUNDLE_CONFIG_AS_CJS = 'command-line-interface/#bundleconfigascjs'; export const URL_CONFIGURATION_FILES = 'command-line-interface/#configuration-files'; diff --git a/test/form/samples/source-phase-imports-external/_config.js b/test/form/samples/source-phase-imports-external/_config.js new file mode 100644 index 000000000..b2985cd85 --- /dev/null +++ b/test/form/samples/source-phase-imports-external/_config.js @@ -0,0 +1,8 @@ +module.exports = defineTest({ + description: 'preserves source phase import externals', + formats: ['es'], + options: { + external: ['./dep1.js'] // dep2 tested as implicit external + }, + expectedWarnings: ['UNRESOLVED_IMPORT'] +}); diff --git a/test/form/samples/source-phase-imports-external/_expected.js b/test/form/samples/source-phase-imports-external/_expected.js new file mode 100644 index 000000000..4d22b8007 --- /dev/null +++ b/test/form/samples/source-phase-imports-external/_expected.js @@ -0,0 +1,9 @@ +import source mod2__source from './dep1.js'; +import mod2 from './dep1.js'; +import source dep2__source from 'dep2'; + +console.log(mod2__source); +console.log(mod2); +console.log(dep2__source); + +import.source('./dep1.js').then(console.log); diff --git a/test/form/samples/source-phase-imports-external/main.js b/test/form/samples/source-phase-imports-external/main.js new file mode 100644 index 000000000..b9eb5d41e --- /dev/null +++ b/test/form/samples/source-phase-imports-external/main.js @@ -0,0 +1,9 @@ +import source mod1 from './dep1.js'; +import mod2 from './dep1.js'; +import source mod3 from 'dep2'; + +console.log(mod1); +console.log(mod2); +console.log(mod3); + +import.source('./dep1.js').then(console.log); diff --git a/test/function/samples/source-phase-dynamic-import-error-resolved/_config.js b/test/function/samples/source-phase-dynamic-import-error-resolved/_config.js new file mode 100644 index 000000000..57b679cba --- /dev/null +++ b/test/function/samples/source-phase-dynamic-import-error-resolved/_config.js @@ -0,0 +1,25 @@ +const path = require('node:path'); +const ID_MAIN = path.join(__dirname, 'main.js'); + +module.exports = defineTest({ + description: 'throws for non-external dynamic source phase imports with dynamic attributes', + options: { + plugins: [ + { + name: 'test', + resolveDynamicImport(specifier) { + if (specifier?.type === 'Identifier' && specifier.name === 'dynamic') { + return { id: 'dynamic' }; + } + } + } + ] + }, + error: { + code: 'NON_EXTERNAL_SOURCE_PHASE_IMPORT', + message: + 'Source phase import "dynamic" in "main.js" must be external. Source phase imports are only supported for external modules. Use the "external" option to mark this module as external.', + url: 'https://rollupjs.org/es-module-syntax/#source-phase-import', + watchFiles: [ID_MAIN] + } +}); diff --git a/test/function/samples/source-phase-dynamic-import-error-resolved/dep.js b/test/function/samples/source-phase-dynamic-import-error-resolved/dep.js new file mode 100644 index 000000000..787bdab3a --- /dev/null +++ b/test/function/samples/source-phase-dynamic-import-error-resolved/dep.js @@ -0,0 +1 @@ +export default 'dep'; diff --git a/test/function/samples/source-phase-dynamic-import-error-resolved/main.js b/test/function/samples/source-phase-dynamic-import-error-resolved/main.js new file mode 100644 index 000000000..a9a6dd650 --- /dev/null +++ b/test/function/samples/source-phase-dynamic-import-error-resolved/main.js @@ -0,0 +1 @@ +import.source(dynamic).then(console.log) diff --git a/test/function/samples/source-phase-dynamic-import-error/_config.js b/test/function/samples/source-phase-dynamic-import-error/_config.js new file mode 100644 index 000000000..9849fc6c4 --- /dev/null +++ b/test/function/samples/source-phase-dynamic-import-error/_config.js @@ -0,0 +1,13 @@ +const path = require('node:path'); +const ID_MAIN = path.join(__dirname, 'main.js'); + +module.exports = defineTest({ + description: 'throws for non-external dynamic source phase imports', + error: { + code: 'NON_EXTERNAL_SOURCE_PHASE_IMPORT', + message: + 'Source phase import "./dep.js" in "main.js" must be external. Source phase imports are only supported for external modules. Use the "external" option to mark this module as external.', + url: 'https://rollupjs.org/es-module-syntax/#source-phase-import', + watchFiles: [ID_MAIN] + } +}); diff --git a/test/function/samples/source-phase-dynamic-import-error/dep.js b/test/function/samples/source-phase-dynamic-import-error/dep.js new file mode 100644 index 000000000..787bdab3a --- /dev/null +++ b/test/function/samples/source-phase-dynamic-import-error/dep.js @@ -0,0 +1 @@ +export default 'dep'; diff --git a/test/function/samples/source-phase-dynamic-import-error/main.js b/test/function/samples/source-phase-dynamic-import-error/main.js new file mode 100644 index 000000000..54a83b6bd --- /dev/null +++ b/test/function/samples/source-phase-dynamic-import-error/main.js @@ -0,0 +1 @@ +import.source('./dep.js').then(console.log); diff --git a/test/function/samples/source-phase-format-unsupported/_config.js b/test/function/samples/source-phase-format-unsupported/_config.js new file mode 100644 index 000000000..bb4e86e40 --- /dev/null +++ b/test/function/samples/source-phase-format-unsupported/_config.js @@ -0,0 +1,13 @@ +module.exports = defineTest({ + description: 'throws for source phase imports in non-ES output formats', + options: { + external: ['external'], + output: { format: 'cjs' } + }, + generateError: { + code: 'SOURCE_PHASE_FORMAT_UNSUPPORTED', + message: + 'Source phase imports are not supported for the "cjs" output format, importing "external" in "main.js". Use the "es" output format to support source phase imports.', + url: 'https://rollupjs.org/es-module-syntax/#source-phase-import' + } +}); diff --git a/test/function/samples/source-phase-format-unsupported/main.js b/test/function/samples/source-phase-format-unsupported/main.js new file mode 100644 index 000000000..165d69785 --- /dev/null +++ b/test/function/samples/source-phase-format-unsupported/main.js @@ -0,0 +1,2 @@ +import source mod from 'external'; +console.log(mod); diff --git a/test/function/samples/source-phase-import-error/_config.js b/test/function/samples/source-phase-import-error/_config.js new file mode 100644 index 000000000..c197701f8 --- /dev/null +++ b/test/function/samples/source-phase-import-error/_config.js @@ -0,0 +1,13 @@ +const path = require('node:path'); +const ID_MAIN = path.join(__dirname, 'main.js'); + +module.exports = defineTest({ + description: 'throws for non-external source phase imports', + error: { + code: 'NON_EXTERNAL_SOURCE_PHASE_IMPORT', + message: + 'Source phase import "./dep.js" in "main.js" must be external. Source phase imports are only supported for external modules. Use the "external" option to mark this module as external.', + url: 'https://rollupjs.org/es-module-syntax/#source-phase-import', + watchFiles: [ID_MAIN] + } +}); diff --git a/test/function/samples/source-phase-import-error/dep.js b/test/function/samples/source-phase-import-error/dep.js new file mode 100644 index 000000000..787bdab3a --- /dev/null +++ b/test/function/samples/source-phase-import-error/dep.js @@ -0,0 +1 @@ +export default 'dep'; diff --git a/test/function/samples/source-phase-import-error/main.js b/test/function/samples/source-phase-import-error/main.js new file mode 100644 index 000000000..a8e606c65 --- /dev/null +++ b/test/function/samples/source-phase-import-error/main.js @@ -0,0 +1 @@ +import source mod from './dep.js'; diff --git a/test/testHelpers.js b/test/testHelpers.js index 69bbaf8e2..b1f8e91d1 100644 --- a/test/testHelpers.js +++ b/test/testHelpers.js @@ -23,6 +23,7 @@ const path = require('node:path'); const { platform, version } = require('node:process'); const { Parser } = require('acorn'); const { importAssertions } = require('acorn-import-assertions'); +const importPhases = require('acorn-import-phases'); const jsx = require('acorn-jsx'); const fixturify = require('fixturify'); @@ -465,7 +466,7 @@ exports.replaceDirectoryInStringifiedObject = function replaceDirectoryInStringi /** @type {boolean} */ exports.hasEsBuild = existsSync(path.join(__dirname, '../dist/es')); -const acornParser = Parser.extend(importAssertions, jsx()); +const acornParser = Parser.extend(importAssertions, importPhases(), jsx()); exports.verifyAstPlugin = { name: 'verify-ast', From 6ecd69fb2ce736c8aabb50829edd227d1792c957 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Sun, 22 Mar 2026 07:31:53 +0100 Subject: [PATCH 04/11] 4.60.0 --- CHANGELOG.md | 12 ++++++++++++ browser/package.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da71ba850..6d9b6478b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # rollup changelog +## 4.60.0 + +_2026-03-22_ + +### Features + +- Support source phase imports as long as they are external (#6279) + +### Pull Requests + +- [#6279](https://github.com/rollup/rollup/pull/6279): feat: external only Source Phase imports support (@guybedford, @lukastaegert) + ## 4.59.1 _2026-03-21_ diff --git a/browser/package.json b/browser/package.json index 8902b7b17..ad3d1e269 100644 --- a/browser/package.json +++ b/browser/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/browser", - "version": "4.59.1", + "version": "4.60.0", "description": "Next-generation ES module bundler browser build", "main": "dist/rollup.browser.js", "module": "dist/es/rollup.browser.js", diff --git a/package-lock.json b/package-lock.json index a697f944a..3ef0327cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rollup", - "version": "4.59.1", + "version": "4.60.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rollup", - "version": "4.59.1", + "version": "4.60.0", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" diff --git a/package.json b/package.json index 96b04a517..b601e9cc3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rollup", - "version": "4.59.1", + "version": "4.60.0", "description": "Next-generation ES module bundler", "main": "dist/rollup.js", "module": "dist/es/rollup.js", From 5598a6658cd8220f146bb7b034f436f432c98c80 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 26 Mar 2026 19:01:47 +0000 Subject: [PATCH 05/11] chore(deps): lock file maintenance (#6323) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 928 +++++++++++++++++++++++----------------------- rust/Cargo.lock | 8 +- 2 files changed, 474 insertions(+), 462 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ef0327cd..4d1e77e46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -113,16 +113,16 @@ } }, "node_modules/@algolia/abtesting": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.15.2.tgz", - "integrity": "sha512-rF7vRVE61E0QORw8e2NNdnttcl3jmFMWS9B4hhdga12COe+lMa26bQLfcBn/Nbp9/AF/8gXdaRCPsVns3CnjsA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.16.0.tgz", + "integrity": "sha512-alHFZ68/i9qLC/muEB07VQ9r7cB8AvCcGX6dVQi2PNHhc/ZQRmmFAv8KK1ay4UiseGSFr7f0nXBKsZ/jRg7e4g==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/client-common": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" @@ -178,41 +178,41 @@ } }, "node_modules/@algolia/client-abtesting": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.49.2.tgz", - "integrity": "sha512-XyvKCm0RRmovMI/ChaAVjTwpZhXdbgt3iZofK914HeEHLqD1MUFFVLz7M0+Ou7F56UkHXwRbpHwb9xBDNopprQ==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.50.0.tgz", + "integrity": "sha512-mfgUdLQNxOAvCZUGzPQxjahEWEPuQkKlV0ZtGmePOa9ZxIQZlk31vRBNbM6ScU8jTH41SCYE77G/lCifDr1SVw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/client-common": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.49.2.tgz", - "integrity": "sha512-jq/3qvtmj3NijZlhq7A1B0Cl41GfaBpjJxcwukGsYds6aMSCWrEAJ9pUqw/C9B3hAmILYKl7Ljz3N9SFvekD3Q==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.50.0.tgz", + "integrity": "sha512-5mjokeKYyPaP3Q8IYJEnutI+O4dW/Ixxx5IgsSxT04pCfGqPXxTOH311hTQxyNpcGGEOGrMv8n8Z+UMTPamioQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/client-common": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.49.2.tgz", - "integrity": "sha512-bn0biLequn3epobCfjUqCxlIlurLr4RHu7RaE4trgN+RDcUq6HCVC3/yqq1hwbNYpVtulnTOJzcaxYlSr1fnuw==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.50.0.tgz", + "integrity": "sha512-emtOvR6dl3rX3sBJXXbofMNHU1qMQqQSWu319RMrNL5BWoBqyiq7y0Zn6cjJm7aGHV/Qbf+KCCYeWNKEMPI3BQ==", "dev": true, "license": "MIT", "engines": { @@ -220,152 +220,152 @@ } }, "node_modules/@algolia/client-insights": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.49.2.tgz", - "integrity": "sha512-z14wfFs1T3eeYbCArC8pvntAWsPo9f6hnUGoj8IoRUJTwgJiiySECkm8bmmV47/x0oGHfsVn3kBdjMX0yq0sNA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.50.0.tgz", + "integrity": "sha512-IerGH2/hcj/6bwkpQg/HHRqmlGN1XwygQWythAk0gZFBrghs9danJaYuSS3ShzLSVoIVth4jY5GDPX9Lbw5cgg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/client-common": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.49.2.tgz", - "integrity": "sha512-GpRf7yuuAX93+Qt0JGEJZwgtL0MFdjFO9n7dn8s2pA9mTjzl0Sc5+uTk1VPbIAuf7xhCP9Mve+URGb6J+EYxgA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.50.0.tgz", + "integrity": "sha512-3idPJeXn5L0MmgP9jk9JJqblrQ/SguN93dNK9z9gfgyupBhHnJMOEjrRYcVgTIfvG13Y04wO+Q0FxE2Ut8PVbA==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/client-common": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.49.2.tgz", - "integrity": "sha512-HZwApmNkp0DiAjZcLYdQLddcG4Agb88OkojiAHGgcm5DVXobT5uSZ9lmyrbw/tmQBJwgu2CNw4zTyXoIB7YbPA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.50.0.tgz", + "integrity": "sha512-q7qRoWrQK1a8m5EFQEmPlo7+pg9mVQ8X5jsChtChERre0uS2pdYEDixBBl0ydBSGkdGbLUDufcACIhH/077E4g==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/client-common": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.49.2.tgz", - "integrity": "sha512-y1IOpG6OSmTpGg/CT0YBb/EAhR2nsC18QWp9Jy8HO9iGySpcwaTvs5kHa17daP3BMTwWyaX9/1tDTDQshZzXdg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.50.0.tgz", + "integrity": "sha512-Jc360x4yqb3eEg4OY4KEIdGePBxZogivKI+OGIU8aLXgAYPTECvzeOBc90312yHA1hr3AeRlAFl0rIc8lQaIrQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@algolia/client-common": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/client-common": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/ingestion": { - "version": "1.49.2", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.49.2.tgz", - "integrity": "sha512-YYJRjaZ2bqk923HxE4um7j/Cm3/xoSkF2HC2ZweOF8cXL3sqnlndSUYmCaxHFjNPWLaSHk2IfssX6J/tdKTULw==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.50.0.tgz", + "integrity": "sha512-OS3/Viao+NPpyBbEY3tf6hLewppG+UclD+9i0ju56mq2DrdMJFCkEky6Sk9S5VPcbLzxzg3BqBX6u9Q35w19aQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/client-common": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.49.2", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.49.2.tgz", - "integrity": "sha512-9WgH+Dha39EQQyGKCHlGYnxW/7W19DIrEbCEbnzwAMpGAv1yTWCHMPXHxYa+LcL3eCp2V/5idD1zHNlIKmHRHg==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.50.0.tgz", + "integrity": "sha512-/znwgSiGufpbJVIoDmeQaHtTq+OMdDawFRbMSJVv+12n79hW+qdQXS8/Uu3BD3yn0BzgVFJEvrsHrCsInZKdhw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/client-common": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.49.2.tgz", - "integrity": "sha512-K7Gp5u+JtVYgaVpBxF5rGiM+Ia8SsMdcAJMTDV93rwh00DKNllC19o1g+PwrDjDvyXNrnTEbofzbTs2GLfFyKA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.50.0.tgz", + "integrity": "sha512-dHjUfu4jfjdQiKDpCpAnM7LP5yfG0oNShtfpF5rMCel6/4HIoqJ4DC4h5GKDzgrvJYtgAhblo0AYBmOM00T+lQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/client-common": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.49.2.tgz", - "integrity": "sha512-3UhYCcWX6fbtN8ABcxZlhaQEwXFh3CsFtARyyadQShHMPe3mJV9Wel4FpJTa+seugRkbezFz0tt6aPTZSYTBuA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.50.0.tgz", + "integrity": "sha512-bffIbUljAWnh/Ctu5uScORajuUavqmZ0ACYd1fQQeSSYA9NNN83ynO26pSc2dZRXpSK0fkc1//qSSFXMKGu+aw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2" + "@algolia/client-common": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.49.2.tgz", - "integrity": "sha512-G94VKSGbsr+WjsDDOBe5QDQ82QYgxvpxRGJfCHZBnYKYsy/jv9qGIDb93biza+LJWizQBUtDj7bZzp3QZyzhPQ==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.50.0.tgz", + "integrity": "sha512-y0EwNvPGvkM+yTAqqO6Gpt9wVGm3CLDtpLvNEiB3VGvN3WzfkjZGtLUsG/ru2kVJIIU7QcV0puuYgEpBeFxcJg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2" + "@algolia/client-common": "5.50.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.49.2.tgz", - "integrity": "sha512-UuihBGHafG/ENsrcTGAn5rsOffrCIRuHMOsD85fZGLEY92ate+BMTUqxz60dv5zerh8ZumN4bRm8eW2z9L11jA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.50.0.tgz", + "integrity": "sha512-xpwefe4fCOWnZgXCbkGpqQY6jgBSCf2hmgnySbyzZIccrv3SoashHKGPE4x6vVG+gdHrGciMTAcDo9HOZwH22Q==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.2" + "@algolia/client-common": "5.50.0" }, "engines": { "node": ">= 14.0.0" @@ -741,9 +741,9 @@ } }, "node_modules/@codemirror/language": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.2.tgz", - "integrity": "sha512-jEPmz2nGGDxhRTg3lTpzmIyGKxz3Gp3SJES4b0nAuE5SWQoKdT5GoQ69cwMmFd+wvFUhYirtDTr0/DRHpQAyWg==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.3.tgz", + "integrity": "sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA==", "dev": true, "license": "MIT", "dependencies": { @@ -853,6 +853,37 @@ } } }, + "node_modules/@docsearch/js/node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@docsearch/js/node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, "node_modules/@docsearch/js/node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -1698,9 +1729,9 @@ } }, "node_modules/@iconify-json/simple-icons": { - "version": "1.2.74", - "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.74.tgz", - "integrity": "sha512-yqaohfY6jnYjTVpuTkaBQHrWbdUrQyWXhau0r/0EZiNWYXPX/P8WWwl1DoLH5CbvDjjcWQw5J0zADhgCUklOqA==", + "version": "1.2.75", + "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.75.tgz", + "integrity": "sha512-KvcCUbvcBWb0sbqLIxHoY8z5/piXY08wcY9gfMhF+ph3AfzGMaSmZFkUY71HSXAljQngXkgs4bdKdekO0HQWvg==", "dev": true, "license": "CC0-1.0", "dependencies": { @@ -2377,14 +2408,14 @@ } }, "node_modules/@jsonjoy.com/fs-core": { - "version": "4.56.11", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.11.tgz", - "integrity": "sha512-wThHjzUp01ImIjfCwhs+UnFkeGPFAymwLEkOtenHewaKe2pTP12p6r1UuwikA9NEvNf9Vlck92r8fb8n/MWM5w==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.57.1.tgz", + "integrity": "sha512-YrEi/ZPmgc+GfdO0esBF04qv8boK9Dg9WpRQw/+vM8Qt3nnVIJWIa8HwZ/LXVZ0DB11XUROM8El/7yYTJX+WtA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.56.11", - "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", "thingies": "^2.5.0" }, "engines": { @@ -2399,15 +2430,15 @@ } }, "node_modules/@jsonjoy.com/fs-fsa": { - "version": "4.56.11", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.11.tgz", - "integrity": "sha512-ZYlF3XbMayyp97xEN8ZvYutU99PCHjM64mMZvnCseXkCJXJDVLAwlF8Q/7q/xiWQRsv3pQBj1WXHd9eEyYcaCQ==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.1.tgz", + "integrity": "sha512-ooEPvSW/HQDivPDPZMibHGKZf/QS4WRir1czGZmXmp3MsQqLECZEpN0JobrD8iV9BzsuwdIv+PxtWX9WpPLsIA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.56.11", - "@jsonjoy.com/fs-node-builtins": "4.56.11", - "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-core": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", "thingies": "^2.5.0" }, "engines": { @@ -2422,17 +2453,17 @@ } }, "node_modules/@jsonjoy.com/fs-node": { - "version": "4.56.11", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.11.tgz", - "integrity": "sha512-D65YrnP6wRuZyEWoSFnBJSr5zARVpVBGctnhie4rCsMuGXNzX7IHKaOt85/Aj7SSoG1N2+/xlNjWmkLvZ2H3Tg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.57.1.tgz", + "integrity": "sha512-3YaKhP8gXEKN+2O49GLNfNb5l2gbnCFHyAaybbA2JkkbQP3dpdef7WcUaHAulg/c5Dg4VncHsA3NWAUSZMR5KQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.56.11", - "@jsonjoy.com/fs-node-builtins": "4.56.11", - "@jsonjoy.com/fs-node-utils": "4.56.11", - "@jsonjoy.com/fs-print": "4.56.11", - "@jsonjoy.com/fs-snapshot": "4.56.11", + "@jsonjoy.com/fs-core": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "@jsonjoy.com/fs-print": "4.57.1", + "@jsonjoy.com/fs-snapshot": "4.57.1", "glob-to-regex.js": "^1.0.0", "thingies": "^2.5.0" }, @@ -2448,9 +2479,9 @@ } }, "node_modules/@jsonjoy.com/fs-node-builtins": { - "version": "4.56.11", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.11.tgz", - "integrity": "sha512-CNmt3a0zMCIhniFLXtzPWuUxXFU+U+2VyQiIrgt/rRVeEJNrMQUABaRbVxR0Ouw1LyR9RjaEkPM6nYpED+y43A==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.1.tgz", + "integrity": "sha512-XHkFKQ5GSH3uxm8c3ZYXVrexGdscpWKIcMWKFQpMpMJc8gA3AwOMBJXJlgpdJqmrhPyQXxaY9nbkNeYpacC0Og==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2465,15 +2496,15 @@ } }, "node_modules/@jsonjoy.com/fs-node-to-fsa": { - "version": "4.56.11", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.11.tgz", - "integrity": "sha512-5OzGdvJDgZVo+xXWEYo72u81zpOWlxlbG4d4nL+hSiW+LKlua/dldNgPrpWxtvhgyntmdFQad2UTxFyGjJAGhA==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.1.tgz", + "integrity": "sha512-pqGHyWWzNck4jRfaGV39hkqpY5QjRUQ/nRbNT7FYbBa0xf4bDG+TE1Gt2KWZrSkrkZZDE3qZUjYMbjwSliX6pg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-fsa": "4.56.11", - "@jsonjoy.com/fs-node-builtins": "4.56.11", - "@jsonjoy.com/fs-node-utils": "4.56.11" + "@jsonjoy.com/fs-fsa": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1" }, "engines": { "node": ">=10.0" @@ -2487,13 +2518,13 @@ } }, "node_modules/@jsonjoy.com/fs-node-utils": { - "version": "4.56.11", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.11.tgz", - "integrity": "sha512-JADOZFDA3wRfsuxkT0+MYc4F9hJO2PYDaY66kRTG6NqGX3+bqmKu66YFYAbII/tEmQWPZeHoClUB23rtQM9UPg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.1.tgz", + "integrity": "sha512-vp+7ZzIB8v43G+GLXTS4oDUSQmhAsRz532QmmWBbdYA20s465JvwhkSFvX9cVTqRRAQg+vZ7zWDaIEh0lFe2gw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.56.11" + "@jsonjoy.com/fs-node-builtins": "4.57.1" }, "engines": { "node": ">=10.0" @@ -2507,13 +2538,13 @@ } }, "node_modules/@jsonjoy.com/fs-print": { - "version": "4.56.11", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.11.tgz", - "integrity": "sha512-rnaKRgCRIn8JGTjxhS0JPE38YM3Pj/H7SW4/tglhIPbfKEkky7dpPayNKV2qy25SZSL15oFVgH/62dMZ/z7cyA==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.57.1.tgz", + "integrity": "sha512-Ynct7ZJmfk6qoXDOKfpovNA36ITUx8rChLmRQtW08J73VOiuNsU8PB6d/Xs7fxJC2ohWR3a5AqyjmLojfrw5yw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.57.1", "tree-dump": "^1.1.0" }, "engines": { @@ -2528,14 +2559,14 @@ } }, "node_modules/@jsonjoy.com/fs-snapshot": { - "version": "4.56.11", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.11.tgz", - "integrity": "sha512-IIldPX+cIRQuUol9fQzSS3hqyECxVpYMJQMqdU3dCKZFRzEl1rkIkw4P6y7Oh493sI7YdxZlKr/yWdzEWZ1wGQ==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.1.tgz", + "integrity": "sha512-/oG8xBNFMbDXTq9J7vepSA1kerS5vpgd3p5QZSPd+nX59uwodGJftI51gDYyHRpP57P3WCQf7LHtBYPqwUg2Bg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/buffers": "^17.65.0", - "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.57.1", "@jsonjoy.com/json-pack": "^17.65.0", "@jsonjoy.com/util": "^17.65.0" }, @@ -4432,9 +4463,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", - "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz", + "integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==", "cpu": [ "arm" ], @@ -4446,9 +4477,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", - "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz", + "integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==", "cpu": [ "arm64" ], @@ -4460,9 +4491,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", - "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz", + "integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==", "cpu": [ "arm64" ], @@ -4474,9 +4505,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", - "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz", + "integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==", "cpu": [ "x64" ], @@ -4488,9 +4519,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", - "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz", + "integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==", "cpu": [ "arm64" ], @@ -4502,9 +4533,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", - "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz", + "integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==", "cpu": [ "x64" ], @@ -4516,9 +4547,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", - "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz", + "integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==", "cpu": [ "arm" ], @@ -4530,9 +4561,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", - "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz", + "integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==", "cpu": [ "arm" ], @@ -4544,9 +4575,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", - "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz", + "integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==", "cpu": [ "arm64" ], @@ -4558,9 +4589,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", - "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz", + "integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==", "cpu": [ "arm64" ], @@ -4572,9 +4603,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", - "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz", + "integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==", "cpu": [ "loong64" ], @@ -4586,9 +4617,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", - "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz", + "integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==", "cpu": [ "loong64" ], @@ -4600,9 +4631,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", - "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz", + "integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==", "cpu": [ "ppc64" ], @@ -4614,9 +4645,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", - "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz", + "integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==", "cpu": [ "ppc64" ], @@ -4628,9 +4659,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", - "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz", + "integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==", "cpu": [ "riscv64" ], @@ -4642,9 +4673,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", - "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz", + "integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==", "cpu": [ "riscv64" ], @@ -4656,9 +4687,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", - "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz", + "integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==", "cpu": [ "s390x" ], @@ -4670,9 +4701,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", - "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz", + "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==", "cpu": [ "x64" ], @@ -4684,9 +4715,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", - "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.0.tgz", + "integrity": "sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==", "cpu": [ "x64" ], @@ -4698,9 +4729,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", - "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz", + "integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==", "cpu": [ "x64" ], @@ -4712,9 +4743,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", - "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz", + "integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==", "cpu": [ "arm64" ], @@ -4726,9 +4757,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", - "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz", + "integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==", "cpu": [ "arm64" ], @@ -4740,9 +4771,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", - "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz", + "integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==", "cpu": [ "ia32" ], @@ -4754,9 +4785,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", - "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz", + "integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==", "cpu": [ "x64" ], @@ -4768,9 +4799,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", - "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz", + "integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==", "cpu": [ "x64" ], @@ -5005,9 +5036,9 @@ "license": "MIT" }, "node_modules/@swc/helpers": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", - "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.20.tgz", + "integrity": "sha512-2egEBHUMasdypIzrprsu8g+OEVd7Vp2MM3a2eVlM/cyFYto0nGz5BX5BTgh/ShZZI9ed+ozEq+Ngt+rgmUs8tw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5579,17 +5610,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.1.tgz", - "integrity": "sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.2.tgz", + "integrity": "sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.57.1", - "@typescript-eslint/type-utils": "8.57.1", - "@typescript-eslint/utils": "8.57.1", - "@typescript-eslint/visitor-keys": "8.57.1", + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/type-utils": "8.57.2", + "@typescript-eslint/utils": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -5602,7 +5633,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.57.1", + "@typescript-eslint/parser": "^8.57.2", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -5618,17 +5649,17 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.1.tgz", - "integrity": "sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.2.tgz", + "integrity": "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.57.1", - "@typescript-eslint/types": "8.57.1", - "@typescript-eslint/typescript-estree": "8.57.1", - "@typescript-eslint/visitor-keys": "8.57.1", + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", "debug": "^4.4.3" }, "engines": { @@ -5644,14 +5675,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.1.tgz", - "integrity": "sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.2.tgz", + "integrity": "sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.57.1", - "@typescript-eslint/types": "^8.57.1", + "@typescript-eslint/tsconfig-utils": "^8.57.2", + "@typescript-eslint/types": "^8.57.2", "debug": "^4.4.3" }, "engines": { @@ -5666,14 +5697,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz", - "integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.2.tgz", + "integrity": "sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.1", - "@typescript-eslint/visitor-keys": "8.57.1" + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5684,9 +5715,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.1.tgz", - "integrity": "sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.2.tgz", + "integrity": "sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==", "dev": true, "license": "MIT", "engines": { @@ -5701,15 +5732,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.1.tgz", - "integrity": "sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.2.tgz", + "integrity": "sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.1", - "@typescript-eslint/typescript-estree": "8.57.1", - "@typescript-eslint/utils": "8.57.1", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/utils": "8.57.2", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -5726,9 +5757,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", - "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.2.tgz", + "integrity": "sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==", "dev": true, "license": "MIT", "engines": { @@ -5740,16 +5771,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz", - "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.2.tgz", + "integrity": "sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.57.1", - "@typescript-eslint/tsconfig-utils": "8.57.1", - "@typescript-eslint/types": "8.57.1", - "@typescript-eslint/visitor-keys": "8.57.1", + "@typescript-eslint/project-service": "8.57.2", + "@typescript-eslint/tsconfig-utils": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -5768,16 +5799,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.1.tgz", - "integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.2.tgz", + "integrity": "sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.57.1", - "@typescript-eslint/types": "8.57.1", - "@typescript-eslint/typescript-estree": "8.57.1" + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5792,13 +5823,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz", - "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.2.tgz", + "integrity": "sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/types": "8.57.2", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -5936,42 +5967,42 @@ "license": "MIT" }, "node_modules/@vue/compiler-core": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.30.tgz", - "integrity": "sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==", + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.31.tgz", + "integrity": "sha512-k/ueL14aNIEy5Onf0OVzR8kiqF/WThgLdFhxwa4e/KF/0qe38IwIdofoSWBTvvxQOesaz6riAFAUaYjoF9fLLQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@vue/shared": "3.5.30", + "@babel/parser": "^7.29.2", + "@vue/shared": "3.5.31", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.30.tgz", - "integrity": "sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==", + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.31.tgz", + "integrity": "sha512-BMY/ozS/xxjYqRFL+tKdRpATJYDTTgWSo0+AJvJNg4ig+Hgb0dOsHPXvloHQ5hmlivUqw1Yt2pPIqp4e0v1GUw==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.30", - "@vue/shared": "3.5.30" + "@vue/compiler-core": "3.5.31", + "@vue/shared": "3.5.31" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.30.tgz", - "integrity": "sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==", + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.31.tgz", + "integrity": "sha512-M8wpPgR9UJ8MiRGjppvx9uWJfLV7A/T+/rL8s/y3QG3u0c2/YZgff3d6SuimKRIhcYnWg5fTfDMlz2E6seUW8Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@vue/compiler-core": "3.5.30", - "@vue/compiler-dom": "3.5.30", - "@vue/compiler-ssr": "3.5.30", - "@vue/shared": "3.5.30", + "@babel/parser": "^7.29.2", + "@vue/compiler-core": "3.5.31", + "@vue/compiler-dom": "3.5.31", + "@vue/compiler-ssr": "3.5.31", + "@vue/shared": "3.5.31", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.8", @@ -5979,14 +6010,14 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.30.tgz", - "integrity": "sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==", + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.31.tgz", + "integrity": "sha512-h0xIMxrt/LHOvJKMri+vdYT92BrK3HFLtDqq9Pr/lVVfE4IyKZKvWf0vJFW10Yr6nX02OR4MkJwI0c1HDa1hog==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.30", - "@vue/shared": "3.5.30" + "@vue/compiler-dom": "3.5.31", + "@vue/shared": "3.5.31" } }, "node_modules/@vue/devtools-api": { @@ -6098,57 +6129,57 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.30.tgz", - "integrity": "sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==", + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.31.tgz", + "integrity": "sha512-DtKXxk9E/KuVvt8VxWu+6Luc9I9ETNcqR1T1oW1gf02nXaZ1kuAx58oVu7uX9XxJR0iJCro6fqBLw9oSBELo5g==", "dev": true, "license": "MIT", "dependencies": { - "@vue/shared": "3.5.30" + "@vue/shared": "3.5.31" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.30.tgz", - "integrity": "sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==", + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.31.tgz", + "integrity": "sha512-AZPmIHXEAyhpkmN7aWlqjSfYynmkWlluDNPHMCZKFHH+lLtxP/30UJmoVhXmbDoP1Ng0jG0fyY2zCj1PnSSA6Q==", "dev": true, "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.30", - "@vue/shared": "3.5.30" + "@vue/reactivity": "3.5.31", + "@vue/shared": "3.5.31" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.30.tgz", - "integrity": "sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==", + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.31.tgz", + "integrity": "sha512-xQJsNRmGPeDCJq/u813tyonNgWBFjzfVkBwDREdEWndBnGdHLHgkwNBQxLtg4zDrzKTEcnikUy1UUNecb3lJ6g==", "dev": true, "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.30", - "@vue/runtime-core": "3.5.30", - "@vue/shared": "3.5.30", + "@vue/reactivity": "3.5.31", + "@vue/runtime-core": "3.5.31", + "@vue/shared": "3.5.31", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.30.tgz", - "integrity": "sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==", + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.31.tgz", + "integrity": "sha512-GJuwRvMcdZX/CriUnyIIOGkx3rMV3H6sOu0JhdKbduaeCji6zb60iOGMY7tFoN24NfsUYoFBhshZtGxGpxO4iA==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.30", - "@vue/shared": "3.5.30" + "@vue/compiler-ssr": "3.5.31", + "@vue/shared": "3.5.31" }, "peerDependencies": { - "vue": "3.5.30" + "vue": "3.5.31" } }, "node_modules/@vue/shared": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.30.tgz", - "integrity": "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==", + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.31.tgz", + "integrity": "sha512-nBxuiuS9Lj5bPkPbWogPUnjxxWpkRniX7e5UBQDWl6Fsf4roq9wwV+cR7ezQ4zXswNvPIlsdj1slcLB7XCsRAw==", "dev": true, "license": "MIT" }, @@ -6280,9 +6311,9 @@ "license": "BSD-2-Clause" }, "node_modules/@zenuml/core": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/@zenuml/core/-/core-3.46.0.tgz", - "integrity": "sha512-bjG37doCwXer4DhlBh1d7bHUuJbqAK/1I+kHyL7Evy0eWZnBOTEOfp6LodB5cokw3w2IMxzYuj7qyRzwjqoeiA==", + "version": "3.46.1", + "resolved": "https://registry.npmjs.org/@zenuml/core/-/core-3.46.1.tgz", + "integrity": "sha512-H+f9373BnjD0Lq4qweWEvCnOcY4m7NFycuh7Vp2GVvETZJ6gRiX+z4R7p+f0HvEuLxKKaZfGaX391YJKJVAtBw==", "dev": true, "license": "MIT", "dependencies": { @@ -6302,8 +6333,6 @@ "marked": "^4.3.0", "pako": "^2.1.0", "pino": "^8.21.0", - "radash": "^12.1.1", - "ramda": "^0.28.0", "react": "^19.2.3", "react-dom": "^19.2.3", "tailwind-merge": "^3.4.0", @@ -6413,27 +6442,27 @@ } }, "node_modules/algoliasearch": { - "version": "5.49.2", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.49.2.tgz", - "integrity": "sha512-1K0wtDaRONwfhL4h8bbJ9qTjmY6rhGgRvvagXkMBsAOMNr+3Q2SffHECh9DIuNVrMA1JwA0zCwhyepgBZVakng==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.50.0.tgz", + "integrity": "sha512-yE5I83Q2s8euVou8Y3feXK08wyZInJWLYXgWO6Xti9jBUEZAGUahyeQ7wSZWkifLWVnQVKEz5RAmBlXG5nqxog==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@algolia/abtesting": "1.15.2", - "@algolia/client-abtesting": "5.49.2", - "@algolia/client-analytics": "5.49.2", - "@algolia/client-common": "5.49.2", - "@algolia/client-insights": "5.49.2", - "@algolia/client-personalization": "5.49.2", - "@algolia/client-query-suggestions": "5.49.2", - "@algolia/client-search": "5.49.2", - "@algolia/ingestion": "1.49.2", - "@algolia/monitoring": "1.49.2", - "@algolia/recommend": "5.49.2", - "@algolia/requester-browser-xhr": "5.49.2", - "@algolia/requester-fetch": "5.49.2", - "@algolia/requester-node-http": "5.49.2" + "@algolia/abtesting": "1.16.0", + "@algolia/client-abtesting": "5.50.0", + "@algolia/client-analytics": "5.50.0", + "@algolia/client-common": "5.50.0", + "@algolia/client-insights": "5.50.0", + "@algolia/client-personalization": "5.50.0", + "@algolia/client-query-suggestions": "5.50.0", + "@algolia/client-search": "5.50.0", + "@algolia/ingestion": "1.50.0", + "@algolia/monitoring": "1.50.0", + "@algolia/recommend": "5.50.0", + "@algolia/requester-browser-xhr": "5.50.0", + "@algolia/requester-fetch": "5.50.0", + "@algolia/requester-node-http": "5.50.0" }, "engines": { "node": ">= 14.0.0" @@ -6520,9 +6549,9 @@ } }, "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -6716,9 +6745,9 @@ } }, "node_modules/bare-stream": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.10.0.tgz", - "integrity": "sha512-DOPZF/DDcDruKDA43cOw6e9Quq5daua7ygcAwJE/pKJsRWhgSSemi7qVNGE5kyDIxIeN1533G/zfbvWX7Wcb9w==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.11.0.tgz", + "integrity": "sha512-Y/+iQ49fL3rIn6w/AVxI/2+BRrpmzJvdWt5Jv8Za6Ngqc6V227c+pYjYYgLdpR3MwQ9ObVXD0ZrqoBztakM0rw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -6726,10 +6755,14 @@ "teex": "^1.0.1" }, "peerDependencies": { + "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, "bare-buffer": { "optional": true }, @@ -6770,9 +6803,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.9", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.9.tgz", - "integrity": "sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==", + "version": "2.10.11", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.11.tgz", + "integrity": "sha512-DAKrHphkJyiGuau/cFieRYhcTFeK/lBuD++C7cZ6KZHbMhBrisoi+EvhQ5RZrIfV5qwsW8kgQ07JIC+MDJRAhg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6916,9 +6949,9 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7250,9 +7283,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001780", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz", - "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==", + "version": "1.0.30001781", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", + "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", "dev": true, "funding": [ { @@ -8757,9 +8790,9 @@ } }, "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", + "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==", "dev": true, "license": "ISC", "dependencies": { @@ -8875,9 +8908,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.321", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", - "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", + "version": "1.5.325", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.325.tgz", + "integrity": "sha512-PwfIw7WQSt3xX7yOf5OE/unLzsK9CaN2f/FvV3WjPR1Knoc1T9vePRVV4W1EM301JzzysK51K7FNKcusCr0zYA==", "dev": true, "license": "ISC" }, @@ -11203,9 +11236,9 @@ } }, "node_modules/jotai": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/jotai/-/jotai-2.18.1.tgz", - "integrity": "sha512-e0NOzK+yRFwHo7DOp0DS0Ycq74KMEAObDWFGmfEL28PD9nLqBTt3/Ug7jf9ca72x0gC9LQZG9zH+0ISICmy3iA==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/jotai/-/jotai-2.19.0.tgz", + "integrity": "sha512-r2wwxEXP1F2JteDLZEOPoIpAHhV89paKsN5GWVYndPNMMP/uVZDcC+fNj0A8NjKgaPWzdyO8Vp8YcYKe0uCEqQ==", "dev": true, "license": "MIT", "engines": { @@ -11378,9 +11411,9 @@ "license": "MIT" }, "node_modules/katex": { - "version": "0.16.39", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.39.tgz", - "integrity": "sha512-FR2f6y85+81ZLO0GPhyQ+EJl/E5ILNWltJhpAeOTzRny952Z13x2867lTFDmvMZix//Ux3CuMQ2VkLXRbUwOFg==", + "version": "0.16.43", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.43.tgz", + "integrity": "sha512-K7NL5JtGrFEglipOAjY4UYA69CnTuNmjArxeXF6+bw7h2OGySUPv6QWRjfb1gmutJ4Mw/qLeBqiROOEDULp4nA==", "dev": true, "funding": [ "https://opencollective.com/katex", @@ -12222,20 +12255,20 @@ "license": "MIT" }, "node_modules/memfs": { - "version": "4.56.11", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.11.tgz", - "integrity": "sha512-/GodtwVeKVIHZKLUSr2ZdOxKBC5hHki4JNCU22DoCGPEHr5o2PD5U721zvESKyWwCfTfavFl9WZYgA13OAYK0g==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.57.1.tgz", + "integrity": "sha512-WvzrWPwMQT+PtbX2Et64R4qXKK0fj/8pO85MrUCzymX3twwCiJCdvntW3HdhG1teLJcHDDLIKx5+c3HckWYZtQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.56.11", - "@jsonjoy.com/fs-fsa": "4.56.11", - "@jsonjoy.com/fs-node": "4.56.11", - "@jsonjoy.com/fs-node-builtins": "4.56.11", - "@jsonjoy.com/fs-node-to-fsa": "4.56.11", - "@jsonjoy.com/fs-node-utils": "4.56.11", - "@jsonjoy.com/fs-print": "4.56.11", - "@jsonjoy.com/fs-snapshot": "4.56.11", + "@jsonjoy.com/fs-core": "4.57.1", + "@jsonjoy.com/fs-fsa": "4.57.1", + "@jsonjoy.com/fs-node": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-to-fsa": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "@jsonjoy.com/fs-print": "4.57.1", + "@jsonjoy.com/fs-snapshot": "4.57.1", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", @@ -12796,9 +12829,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -14125,9 +14158,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -14820,27 +14853,6 @@ "dev": true, "license": "MIT" }, - "node_modules/radash": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/radash/-/radash-12.1.1.tgz", - "integrity": "sha512-h36JMxKRqrAxVD8201FrCpyeNuUY9Y5zZwujr20fFO77tpUtGa6EZzfKw/3WaiBX95fq7+MpsuMLNdSnORAwSA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/ramda": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz", - "integrity": "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -14931,9 +14943,9 @@ } }, "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -15265,16 +15277,16 @@ } }, "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", + "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==", "dev": true, "license": "Unlicense" }, "node_modules/rollup": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", - "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz", + "integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==", "dev": true, "license": "MIT", "peer": true, @@ -15289,31 +15301,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.59.0", - "@rollup/rollup-android-arm64": "4.59.0", - "@rollup/rollup-darwin-arm64": "4.59.0", - "@rollup/rollup-darwin-x64": "4.59.0", - "@rollup/rollup-freebsd-arm64": "4.59.0", - "@rollup/rollup-freebsd-x64": "4.59.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", - "@rollup/rollup-linux-arm-musleabihf": "4.59.0", - "@rollup/rollup-linux-arm64-gnu": "4.59.0", - "@rollup/rollup-linux-arm64-musl": "4.59.0", - "@rollup/rollup-linux-loong64-gnu": "4.59.0", - "@rollup/rollup-linux-loong64-musl": "4.59.0", - "@rollup/rollup-linux-ppc64-gnu": "4.59.0", - "@rollup/rollup-linux-ppc64-musl": "4.59.0", - "@rollup/rollup-linux-riscv64-gnu": "4.59.0", - "@rollup/rollup-linux-riscv64-musl": "4.59.0", - "@rollup/rollup-linux-s390x-gnu": "4.59.0", - "@rollup/rollup-linux-x64-gnu": "4.59.0", - "@rollup/rollup-linux-x64-musl": "4.59.0", - "@rollup/rollup-openbsd-x64": "4.59.0", - "@rollup/rollup-openharmony-arm64": "4.59.0", - "@rollup/rollup-win32-arm64-msvc": "4.59.0", - "@rollup/rollup-win32-ia32-msvc": "4.59.0", - "@rollup/rollup-win32-x64-gnu": "4.59.0", - "@rollup/rollup-win32-x64-msvc": "4.59.0", + "@rollup/rollup-android-arm-eabi": "4.60.0", + "@rollup/rollup-android-arm64": "4.60.0", + "@rollup/rollup-darwin-arm64": "4.60.0", + "@rollup/rollup-darwin-x64": "4.60.0", + "@rollup/rollup-freebsd-arm64": "4.60.0", + "@rollup/rollup-freebsd-x64": "4.60.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.0", + "@rollup/rollup-linux-arm-musleabihf": "4.60.0", + "@rollup/rollup-linux-arm64-gnu": "4.60.0", + "@rollup/rollup-linux-arm64-musl": "4.60.0", + "@rollup/rollup-linux-loong64-gnu": "4.60.0", + "@rollup/rollup-linux-loong64-musl": "4.60.0", + "@rollup/rollup-linux-ppc64-gnu": "4.60.0", + "@rollup/rollup-linux-ppc64-musl": "4.60.0", + "@rollup/rollup-linux-riscv64-gnu": "4.60.0", + "@rollup/rollup-linux-riscv64-musl": "4.60.0", + "@rollup/rollup-linux-s390x-gnu": "4.60.0", + "@rollup/rollup-linux-x64-gnu": "4.60.0", + "@rollup/rollup-linux-x64-musl": "4.60.0", + "@rollup/rollup-openbsd-x64": "4.60.0", + "@rollup/rollup-openharmony-arm64": "4.60.0", + "@rollup/rollup-win32-arm64-msvc": "4.60.0", + "@rollup/rollup-win32-ia32-msvc": "4.60.0", + "@rollup/rollup-win32-x64-gnu": "4.60.0", + "@rollup/rollup-win32-x64-msvc": "4.60.0", "fsevents": "~2.3.2" } }, @@ -16295,9 +16307,9 @@ } }, "node_modules/tar": { - "version": "7.5.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.12.tgz", - "integrity": "sha512-9TsuLcdhOn4XztcQqhNyq1KOwOOED/3k58JAvtULiYqbO8B/0IBAAIE1hj0Svmm58k27TmcigyDI0deMlgG3uw==", + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -16479,9 +16491,9 @@ } }, "node_modules/thingies": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", - "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.0.tgz", + "integrity": "sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==", "dev": true, "license": "MIT", "engines": { @@ -16790,16 +16802,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.1.tgz", - "integrity": "sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA==", + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.2.tgz", + "integrity": "sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.57.1", - "@typescript-eslint/parser": "8.57.1", - "@typescript-eslint/typescript-estree": "8.57.1", - "@typescript-eslint/utils": "8.57.1" + "@typescript-eslint/eslint-plugin": "8.57.2", + "@typescript-eslint/parser": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/utils": "8.57.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -17556,18 +17568,18 @@ "license": "MIT" }, "node_modules/vue": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.30.tgz", - "integrity": "sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==", + "version": "3.5.31", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.31.tgz", + "integrity": "sha512-iV/sU9SzOlmA/0tygSmjkEN6Jbs3nPoIPFhCMLD2STrjgOU8DX7ZtzMhg4ahVwf5Rp9KoFzcXeB1ZrVbLBp5/Q==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@vue/compiler-dom": "3.5.30", - "@vue/compiler-sfc": "3.5.30", - "@vue/runtime-dom": "3.5.30", - "@vue/server-renderer": "3.5.30", - "@vue/shared": "3.5.30" + "@vue/compiler-dom": "3.5.31", + "@vue/compiler-sfc": "3.5.31", + "@vue/runtime-dom": "3.5.31", + "@vue/server-renderer": "3.5.31", + "@vue/shared": "3.5.31" }, "peerDependencies": { "typescript": "*" @@ -17989,9 +18001,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", "dev": true, "license": "MIT", "engines": { @@ -18038,9 +18050,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "dev": true, "license": "ISC", "peer": true, diff --git a/rust/Cargo.lock b/rust/Cargo.lock index bb89ed19d..f9720bbe2 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -207,9 +207,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cmake" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ "cc", ] @@ -1746,9 +1746,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" [[package]] name = "unicode-width" From 119abdba9b50c1243623bb66d3af2a1e46ca990f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Mar 2026 06:43:28 +0000 Subject: [PATCH 06/11] chore(deps): lock file maintenance (#6324) * chore(deps): lock file maintenance * Resolve audit --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas Taegert-Atkinson --- audit-resolve.json | 10 +++++++ package-lock.json | 67 +++++++++++++--------------------------------- 2 files changed, 28 insertions(+), 49 deletions(-) diff --git a/audit-resolve.json b/audit-resolve.json index 105ba1a9e..389a2af7b 100644 --- a/audit-resolve.json +++ b/audit-resolve.json @@ -14,6 +14,16 @@ "decision": "ignore", "madeAt": 1772778003517, "expiresAt": 1775369996393 + }, + "1115519|@rollup/plugin-terser>serialize-javascript": { + "decision": "ignore", + "madeAt": 1774678997033, + "expiresAt": 1777270978460 + }, + "1115519|mocha>diff>serialize-javascript": { + "decision": "ignore", + "madeAt": 1774678997033, + "expiresAt": 1777270978460 } }, "rules": {}, diff --git a/package-lock.json b/package-lock.json index 4d1e77e46..dd98d1a2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -853,37 +853,6 @@ } } }, - "node_modules/@docsearch/js/node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@docsearch/js/node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, "node_modules/@docsearch/js/node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -6869,9 +6838,9 @@ "license": "MIT" }, "node_modules/binary-install/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -8908,9 +8877,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.325", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.325.tgz", - "integrity": "sha512-PwfIw7WQSt3xX7yOf5OE/unLzsK9CaN2f/FvV3WjPR1Knoc1T9vePRVV4W1EM301JzzysK51K7FNKcusCr0zYA==", + "version": "1.5.326", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.326.tgz", + "integrity": "sha512-uRBlUfKKdsXMkiiOurgaybNC10tjrD+skXLEg7NHbm6h0uAoqj3xMb9uue5BfcSCXJ4mcyJMOucI6q55D7p6KQ==", "dev": true, "license": "ISC" }, @@ -10310,9 +10279,9 @@ "license": "MIT" }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", "dependencies": { @@ -11979,9 +11948,9 @@ "license": "MIT" }, "node_modules/matcher-collection/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -12998,9 +12967,9 @@ "license": "MIT" }, "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", "dependencies": { @@ -17694,9 +17663,9 @@ "license": "MIT" }, "node_modules/walk-sync/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { From b25d25e8e6f3127d40d7b1b93dac4b9941907324 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Mar 2026 07:44:26 +0000 Subject: [PATCH 07/11] fix(deps): update swc monorepo (major) (#6322) fix(deps): update swc monorepo Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas Taegert-Atkinson --- rust/Cargo.lock | 24 ++++++++++++------------ rust/parse_ast/Cargo.toml | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/rust/Cargo.lock b/rust/Cargo.lock index f9720bbe2..1eb6b3814 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1314,9 +1314,9 @@ dependencies = [ [[package]] name = "swc_compiler_base" -version = "49.0.0" +version = "50.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9840f1fb3e2c98f55a4b4f7485d062b374d929d94c02dfb5002b9325768678a9" +checksum = "95042dca4a6b644e62ec4f672b0221294539fd5787b0bf2b609af9d920b13a70" dependencies = [ "anyhow", "base64", @@ -1439,9 +1439,9 @@ dependencies = [ [[package]] name = "swc_ecma_minifier" -version = "46.0.0" +version = "47.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3975f1c2347ec502c975e4df17dff27f5ba70281e02a314448055ad689979e2a" +checksum = "11869fd5fb37f67be9586cef43ad6d408170957537847e652f2b1d17cc01f19a" dependencies = [ "arrayvec", "bitflags", @@ -1476,9 +1476,9 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "35.0.0" +version = "36.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943b8743c57783b35b6c173b0a8ef539a6c1d06ee5d1588b2821992c3fd35f39" +checksum = "0c4c7846e4c9ee7bb52e1958b5fe7a924088451cf699e01e7203d6f5210b055e" dependencies = [ "bitflags", "either", @@ -1497,9 +1497,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "38.0.0" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a6bfa9bb82de047afae2eadef24e7ac4e4578fe11c977d8f61423131bdef9e4" +checksum = "5d4fb6ec9ec1d782104996b86119fb775c08073ce4ace8e90b3c27b75b1c0812" dependencies = [ "better_scoped_tls", "indexmap", @@ -1519,9 +1519,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_optimization" -version = "40.0.0" +version = "41.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f43dc268f8164b5363c44a0fe9408808155f1506684e25f32685f77fe9df4b6" +checksum = "f9882dc5dcf2d9c4bdd1bad7a34a2db8e7d34fdf81b7c144ef83f167b93432d5" dependencies = [ "bytes-str", "dashmap", @@ -1543,9 +1543,9 @@ dependencies = [ [[package]] name = "swc_ecma_usage_analyzer" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26a2082f0ab640cb8fa48c7b5708000c188178a891c9cb970ad714e40350825" +checksum = "14fb67600772fe41d9d02d96a202f95153ee817ab37942535f06426182674df6" dependencies = [ "bitflags", "indexmap", diff --git a/rust/parse_ast/Cargo.toml b/rust/parse_ast/Cargo.toml index 7cab81d30..c620bea9d 100644 --- a/rust/parse_ast/Cargo.toml +++ b/rust/parse_ast/Cargo.toml @@ -7,9 +7,9 @@ edition = "2021" [dependencies] anyhow = "1.0.102" -swc_compiler_base = "49.0.0" +swc_compiler_base = "50.0.0" swc_config = "4.0.0" swc_common = { version = "19.0.0", features = ["parking_lot"] } swc_ecma_ast = "21.0.0" -swc_ecma_parser = "35.0.0" +swc_ecma_parser = "36.0.0" parking_lot = "0.12.5" From c336205e2b926dfb134d80c740198cf2ea43159f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Mar 2026 07:53:58 +0000 Subject: [PATCH 08/11] chore(deps): update openharmony-rs/setup-ohos-sdk action to v1 (#6321) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas Taegert-Atkinson --- .github/workflows/build-and-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-tests.yml b/.github/workflows/build-and-tests.yml index 8ad41f497..9a6fdfb7e 100644 --- a/.github/workflows/build-and-tests.yml +++ b/.github/workflows/build-and-tests.yml @@ -236,7 +236,7 @@ jobs: targets: ${{ !matrix.settings.build-std && matrix.settings.target || '' }} - name: Setup OpenHarmony SDK if: ${{ contains(matrix.settings.target, 'ohos') }} - uses: openharmony-rs/setup-ohos-sdk@3c181b3244cec76aaec289ab84fb00f55f2fce3f # v0.2.4 + uses: openharmony-rs/setup-ohos-sdk@eb82b94ef522b07269679195c2512f22e922ef3b # v1.0.0 - name: Restore Cargo cache uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 if: matrix.settings.cache-cargo != false From 65e82a98065543b16a17fb3ea23594d7dbdb5108 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Mar 2026 07:58:07 +0000 Subject: [PATCH 09/11] chore(deps): update msys2/setup-msys2 digest to cafece8 (#6318) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas Taegert-Atkinson --- .github/workflows/build-and-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-tests.yml b/.github/workflows/build-and-tests.yml index 9a6fdfb7e..7d752890c 100644 --- a/.github/workflows/build-and-tests.yml +++ b/.github/workflows/build-and-tests.yml @@ -215,7 +215,7 @@ jobs: if: ${{ matrix.settings.target != 'x86_64-pc-windows-gnu' }} with: node-version: 24.10.0 - - uses: msys2/setup-msys2@4f806de0a5a7294ffabaff804b38a9b435a73bda # v2 + - uses: msys2/setup-msys2@cafece8e6baf9247cf9b1bf95097b0b983cc558d # v2 if: ${{ matrix.settings.target == 'x86_64-pc-windows-gnu' }} with: msystem: ${{ matrix.settings.msystem }} From 42785ffa0be3add9d2b5b355adcd4a41d850fe9d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:00:10 +0000 Subject: [PATCH 10/11] chore(deps): update minor/patch updates (#6319) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas Taegert-Atkinson --- .../actions/install-and-cache-node-deps/action.yml | 4 ++-- .github/workflows/build-and-tests.yml | 12 ++++++------ .github/workflows/performance-report.yml | 4 ++-- .github/workflows/repl-artefacts.yml | 2 +- package-lock.json | 12 ++++++------ package.json | 12 ++++++------ 6 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/actions/install-and-cache-node-deps/action.yml b/.github/actions/install-and-cache-node-deps/action.yml index 90cdcb948..d178b7507 100644 --- a/.github/actions/install-and-cache-node-deps/action.yml +++ b/.github/actions/install-and-cache-node-deps/action.yml @@ -5,7 +5,7 @@ runs: steps: - name: Restore Node dependencies cache id: cache-node-modules - uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: | node_modules @@ -24,7 +24,7 @@ runs: shell: bash - name: Save Node dependencies cache if: steps.cache-node-modules.outputs.cache-hit != 'true' && github.ref == 'refs/heads/master' - uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: | node_modules diff --git a/.github/workflows/build-and-tests.yml b/.github/workflows/build-and-tests.yml index 7d752890c..d36a5f676 100644 --- a/.github/workflows/build-and-tests.yml +++ b/.github/workflows/build-and-tests.yml @@ -238,7 +238,7 @@ jobs: if: ${{ contains(matrix.settings.target, 'ohos') }} uses: openharmony-rs/setup-ohos-sdk@eb82b94ef522b07269679195c2512f22e922ef3b # v1.0.0 - name: Restore Cargo cache - uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 if: matrix.settings.cache-cargo != false with: path: | @@ -254,7 +254,7 @@ jobs: with: version: 0.14.1 - name: Install cargo-zigbuild - uses: taiki-e/install-action@de6bbd1333b8f331563d54a051e542c7dfef81c3 # v2.68.34 + uses: taiki-e/install-action@328a871ad8f62ecac78390391f463ccabc974b72 # v2.69.9 if: ${{ matrix.settings.cross == 'zig' }} env: GITHUB_TOKEN: ${{ github.token }} @@ -286,7 +286,7 @@ jobs: shell: bash - name: Save Cargo cache if: github.ref == 'refs/heads/master' && matrix.settings.cache-cargo != false - uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: | ~/.cargo/registry/index/ @@ -325,7 +325,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Restore Cargo cache - uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: | ~/.cargo/registry/index/ @@ -352,7 +352,7 @@ jobs: - name: Save Cargo cache if: github.ref == 'refs/heads/master' - uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: | ~/.cargo/registry/index/ @@ -536,7 +536,7 @@ jobs: env: CI: true - name: Upload coverage - uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 + uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5.5.3 if: matrix.coverage with: fail_ci_if_error: true diff --git a/.github/workflows/performance-report.yml b/.github/workflows/performance-report.yml index 279460a2b..fe6fc174f 100644 --- a/.github/workflows/performance-report.yml +++ b/.github/workflows/performance-report.yml @@ -40,7 +40,7 @@ jobs: toolchain: nightly-2025-07-25 components: rust-src - name: Restore Cargo cache - uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: | ~/.cargo/registry/index/ @@ -82,7 +82,7 @@ jobs: toolchain: nightly-2025-07-25 components: rust-src - name: Restore Cargo cache - uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: | ~/.cargo/registry/index/ diff --git a/.github/workflows/repl-artefacts.yml b/.github/workflows/repl-artefacts.yml index aac5db1a6..820ccd413 100644 --- a/.github/workflows/repl-artefacts.yml +++ b/.github/workflows/repl-artefacts.yml @@ -40,7 +40,7 @@ jobs: toolchain: nightly-2025-07-25 components: rust-src - name: Restore Cargo cache - uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 + uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 with: path: | ~/.cargo/registry/index/ diff --git a/package-lock.json b/package-lock.json index dd98d1a2c..58bd450b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "@types/picomatch": "^4.0.2", "@types/semver": "^7.7.1", "@types/yargs-parser": "^21.0.3", - "@vue/language-server": "^3.2.5", + "@vue/language-server": "^3.2.6", "acorn": "^8.16.0", "acorn-import-assertions": "^1.9.0", "acorn-import-phases": "^1.0.4", @@ -70,21 +70,21 @@ "lint-staged": "^16.4.0", "locate-character": "^3.0.0", "magic-string": "^0.30.21", - "memfs": "^4.56.11", + "memfs": "^4.57.1", "mocha": "11.7.5", "nodemon": "^3.1.14", "npm-audit-resolver": "^3.0.0-RC.0", "nyc": "^18.0.0", "patch-package": "^8.0.1", "picocolors": "^1.1.1", - "picomatch": "^4.0.3", + "picomatch": "^4.0.4", "pinia": "^3.0.4", "prettier": "^3.8.1", "prettier-plugin-organize-imports": "^4.3.0", "pretty-bytes": "^7.1.0", "pretty-ms": "^9.3.0", "requirejs": "^2.3.8", - "rollup": "^4.59.0", + "rollup": "^4.60.0", "rollup-plugin-license": "^3.7.0", "semver": "^7.7.4", "shx": "^0.4.0", @@ -95,12 +95,12 @@ "terser": "^5.46.1", "tslib": "^2.8.1", "typescript": "^5.9.3", - "typescript-eslint": "^8.57.1", + "typescript-eslint": "^8.57.2", "vite": "^7.3.1", "vitepress": "^1.6.4", "vue": "^3.5.30", "vue-eslint-parser": "^10.4.0", - "vue-tsc": "^3.2.5", + "vue-tsc": "^3.2.6", "wasm-pack": "^0.14.0", "yargs-parser": "^21.1.1" }, diff --git a/package.json b/package.json index b601e9cc3..b3ba37c10 100644 --- a/package.json +++ b/package.json @@ -148,7 +148,7 @@ "@types/picomatch": "^4.0.2", "@types/semver": "^7.7.1", "@types/yargs-parser": "^21.0.3", - "@vue/language-server": "^3.2.5", + "@vue/language-server": "^3.2.6", "acorn": "^8.16.0", "acorn-import-assertions": "^1.9.0", "acorn-import-phases": "^1.0.4", @@ -177,21 +177,21 @@ "lint-staged": "^16.4.0", "locate-character": "^3.0.0", "magic-string": "^0.30.21", - "memfs": "^4.56.11", + "memfs": "^4.57.1", "mocha": "11.7.5", "nodemon": "^3.1.14", "npm-audit-resolver": "^3.0.0-RC.0", "nyc": "^18.0.0", "patch-package": "^8.0.1", "picocolors": "^1.1.1", - "picomatch": "^4.0.3", + "picomatch": "^4.0.4", "pinia": "^3.0.4", "prettier": "^3.8.1", "prettier-plugin-organize-imports": "^4.3.0", "pretty-bytes": "^7.1.0", "pretty-ms": "^9.3.0", "requirejs": "^2.3.8", - "rollup": "^4.59.0", + "rollup": "^4.60.0", "rollup-plugin-license": "^3.7.0", "semver": "^7.7.4", "shx": "^0.4.0", @@ -202,12 +202,12 @@ "terser": "^5.46.1", "tslib": "^2.8.1", "typescript": "^5.9.3", - "typescript-eslint": "^8.57.1", + "typescript-eslint": "^8.57.2", "vite": "^7.3.1", "vitepress": "^1.6.4", "vue": "^3.5.30", "vue-eslint-parser": "^10.4.0", - "vue-tsc": "^3.2.5", + "vue-tsc": "^3.2.6", "wasm-pack": "^0.14.0", "yargs-parser": "^21.1.1" }, From fe50d862804c1f157f0ae378a3c555b8b3ef6ce7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:52:24 +0000 Subject: [PATCH 11/11] chore(deps): pin dependencies (#6317) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas Taegert-Atkinson --- .github/workflows/build-and-tests.yml | 2 +- .github/workflows/performance-report.yml | 4 ++-- .github/workflows/repl-artefacts.yml | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-and-tests.yml b/.github/workflows/build-and-tests.yml index d36a5f676..1d4d2401e 100644 --- a/.github/workflows/build-and-tests.yml +++ b/.github/workflows/build-and-tests.yml @@ -229,7 +229,7 @@ jobs: path-type: inherit release: false - name: Install Toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable with: toolchain: nightly-2025-07-25 components: ${{ matrix.settings.build-std && 'rust-src' || '' }} diff --git a/.github/workflows/performance-report.yml b/.github/workflows/performance-report.yml index fe6fc174f..36b3dd47b 100644 --- a/.github/workflows/performance-report.yml +++ b/.github/workflows/performance-report.yml @@ -35,7 +35,7 @@ jobs: with: ref: ${{matrix.settings.ref}} - name: Install Toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable with: toolchain: nightly-2025-07-25 components: rust-src @@ -77,7 +77,7 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - name: Install Toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable with: toolchain: nightly-2025-07-25 components: rust-src diff --git a/.github/workflows/repl-artefacts.yml b/.github/workflows/repl-artefacts.yml index 820ccd413..b20de9055 100644 --- a/.github/workflows/repl-artefacts.yml +++ b/.github/workflows/repl-artefacts.yml @@ -35,7 +35,7 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Install Toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable with: toolchain: nightly-2025-07-25 components: rust-src @@ -61,7 +61,7 @@ jobs: npm exec -- concurrently -c green,blue,yellow 'npm:build:napi -- --release' 'npm run build:wasm' 'npm:build:cjs' && npm run build:copy-native && npm run build:bootstrap - name: Upload "${{ github.event.number }}/rollup.browser.js" to bucket - uses: zdurham/s3-upload-github-action@master + uses: zdurham/s3-upload-github-action@161dfa6991b9d88a97f02f4aeb5dcd26ea7e03cd # master with: args: --cache-control max-age=300,public env: @@ -72,7 +72,7 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Upload "${{ github.event.number }}/rollup.browser.js.map" to bucket - uses: zdurham/s3-upload-github-action@master + uses: zdurham/s3-upload-github-action@161dfa6991b9d88a97f02f4aeb5dcd26ea7e03cd # master with: args: --cache-control max-age=300,public env: @@ -83,7 +83,7 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Upload "${{ github.event.number }}/bindings_wasm_bg.wasm" to bucket - uses: zdurham/s3-upload-github-action@master + uses: zdurham/s3-upload-github-action@161dfa6991b9d88a97f02f4aeb5dcd26ea7e03cd # master with: args: --cache-control max-age=300,public env: