From eb59cf260282d539cf94cda5888f1b0cdda2ff91 Mon Sep 17 00:00:00 2001 From: fi3ework Date: Thu, 3 Sep 2026 17:20:50 +0800 Subject: [PATCH 1/9] test(vscode): bump the rstack E2E fixture to 0.7.2 rslint#1851 changed the explicit-config path base in @rslint/core 0.8.2. rstack 0.6.1's shim has no basePath; rstack 0.7.2 sets basePath=process.cwd() via @rslint/core 0.9.0. --- packages/vscode/e2e/fixtures/rstack/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vscode/e2e/fixtures/rstack/package.json b/packages/vscode/e2e/fixtures/rstack/package.json index 155a9af..80cbff4 100644 --- a/packages/vscode/e2e/fixtures/rstack/package.json +++ b/packages/vscode/e2e/fixtures/rstack/package.json @@ -5,7 +5,7 @@ "type": "module", "description": "E2E fixture: an rstack-cli project whose only config is `rstack.config.ts`, which lights all three stacks.", "dependencies": { - "rstack": "0.6.1" + "rstack": "0.7.2" }, "devDependencies": { "jiti": "^2.0.0" From b5d0e993a6072307539ae4518e61a3bf211e991d Mon Sep 17 00:00:00 2001 From: fi3ework Date: Thu, 3 Sep 2026 17:33:53 +0800 Subject: [PATCH 2/9] test(vscode): freeze fixture lockfiles and let Renovate bump them --- .github/renovate.json5 | 6 +- .gitignore | 7 +- CONTRIBUTING.md | 4 +- packages/vscode/AGENTS.md | 2 +- .../vscode/e2e/fixtures/rslint/pnpm-lock.yaml | 113 +++ .../vscode/e2e/fixtures/rstack/pnpm-lock.yaml | 855 ++++++++++++++++++ .../vscode/e2e/fixtures/rstest/pnpm-lock.yaml | 307 +++++++ .../vscode/e2e/lint/fixtures/pnpm-lock.yaml | 123 +++ .../fixtures/workspace-1/pnpm-lock.yaml | 273 ++++++ .../fixtures/workspace-2/pnpm-lock.yaml | 273 ++++++ packages/vscode/e2e/run.mjs | 8 +- packages/vscode/e2e/setupFixtures.mjs | 10 +- 12 files changed, 1962 insertions(+), 19 deletions(-) create mode 100644 packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml create mode 100644 packages/vscode/e2e/fixtures/rstack/pnpm-lock.yaml create mode 100644 packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml create mode 100644 packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml create mode 100644 packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml create mode 100644 packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 046fd99..29b2e44 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -6,9 +6,9 @@ 'schedule:weekly', 'helpers:pinGitHubActionDigests', ], - // E2E fixtures deliberately pin the published toolchain versions the suites - // run against; bumping them is a manual, E2E-verified decision. - ignorePaths: ['**/node_modules/**', 'packages/vscode/e2e/**'], + // E2E fixtures pin published packages with committed lockfiles; their Rstack + // dependencies are updated by the `rstack toolchain` group below. + ignorePaths: ['**/node_modules/**'], packageRules: [ // Use chore as semantic commit type for commit messages { diff --git a/.gitignore b/.gitignore index 2c7bbfd..6e645bd 100644 --- a/.gitignore +++ b/.gitignore @@ -150,12 +150,9 @@ tests-dist/ # F5 playground's materialized Node (see .vscode/tasks.json "playground node") packages/vscode/.playground/ -# E2E fixtures install published npm versions on demand; only -# their manifests and configs are tracked. +# E2E fixtures install published npm versions from committed lockfiles; +# their node_modules directories stay disposable. packages/vscode/e2e/fixtures/*/node_modules/ -packages/vscode/e2e/fixtures/*/pnpm-lock.yaml -packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml -packages/vscode/e2e/rstest/fixtures/*/pnpm-lock.yaml # Build-time copy of the workspace root LICENSE (see rslib.config.mts) packages/vscode/LICENSE diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a7402ec..a21e067 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,9 +19,9 @@ pnpm install # also installs the git hooks (rs hooks) | `pnpm lint` | Lint + type check (`rs lint --type-check`) | | `pnpm fmt` | Format the repo (`rs fmt`) | | `pnpm test:unit` | Unit tests | -| `pnpm test:e2e` | Full E2E chain (installs fixtures, launches a real VS Code) | +| `pnpm test:e2e` | Full E2E chain (installs fixtures from committed lockfiles, launches a real VS Code) | -To try the extension: press F5 in VS Code at the repo root — the playground launch config starts a watch build, lets you pick a fixture project, and opens an Extension Development Host on it. Run `pnpm --filter rstack test:e2e:fixtures` once beforehand to install the fixture dependencies. +To try the extension: press F5 in VS Code at the repo root — the playground launch config starts a watch build, lets you pick a fixture project, and opens an Extension Development Host on it. Run `pnpm --filter rstack test:e2e:fixtures` once beforehand to install the fixture dependencies from their committed lockfiles. ## Submitting changes diff --git a/packages/vscode/AGENTS.md b/packages/vscode/AGENTS.md index a5e778b..e13a234 100644 --- a/packages/vscode/AGENTS.md +++ b/packages/vscode/AGENTS.md @@ -54,6 +54,6 @@ One extension replacing the standalone `rstack.rslint` and `rstack.rstest` exten ## Testing - E2E suites ported from upstream keep upstream's assertion semantics; every intentional deviation is documented in a comment in the test itself. A failing ported test is a regression, not a test to adjust. -- E2E fixtures install published npm packages (not workspace links): the extension must work against what users actually install. Fixture `node_modules` are disposable and never committed. +- E2E fixtures install published npm packages (not workspace links): the extension must work against what users actually install. Each standalone fixture commits its `pnpm-lock.yaml` for deterministic installs; Renovate updates the manifests and lockfiles, while fixture `node_modules` remain disposable and uncommitted. - Prefer running the E2E slice that covers the change over the full chain: `pnpm test:e2e ` (or the `test:e2e:` aliases). Slices are declared in the `SLICES` table in `e2e/run.mjs` (name, fixtures, entry) — the package.json scripts are thin forwards and carry no slice knowledge. `RSTACK_LINT_E2E_SUITES=` filters lint suites. - Run E2E locally as `VSCODE_CLI=1 pnpm test:e2e `. Without it, the launched VS Code overwrites the extension host's `PATH` with a login-shell snapshot; on a machine whose login-shell `node` is below the runtime floor, the User Node preflight (correctly) refuses and every fmt test times out waiting for a server. CI is unaffected — its PATH `node` is new enough either way. The heavier alternative, `--force-disable-user-env` in `e2e/runTest.ts`, was deliberately not taken: it would change env fidelity for every slice. diff --git a/packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml b/packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml new file mode 100644 index 0000000..922fa82 --- /dev/null +++ b/packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml @@ -0,0 +1,113 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@rslint/core': + specifier: ^0.8.0 + version: 0.8.2 + +packages: + + '@rslint/core@0.8.2': + resolution: {integrity: sha512-O7c9hg5Soo1MOta0Aj+3Td2Bjd6ZZUV+lLPWJvVRNqaZEzl2FKmkS9xuT9o4jHXTXhTvlxGuyyaJUUlEpW57Cw==} + hasBin: true + peerDependencies: + jiti: ^2.7.0 + peerDependenciesMeta: + jiti: + optional: true + + '@rslint/native-darwin-arm64@0.8.2': + resolution: {integrity: sha512-SdGy7Mh8a53VQiMbQQ+pvtaivwUCeBdYP0QeORZfUWqcqqaTdfTQnaCm/7BG9NRIjAwSZcwooJnklZwqky2gGA==} + cpu: [arm64] + os: [darwin] + + '@rslint/native-darwin-x64@0.8.2': + resolution: {integrity: sha512-Yp8+zNxhkO92QpNFTcJLYPU/Q02QC0GIR9BRn2DdMHtVattFctZKXujWprLFNafh7Di/5fitebNKeqck2+pxoQ==} + cpu: [x64] + os: [darwin] + + '@rslint/native-linux-arm64-gnu@0.8.2': + resolution: {integrity: sha512-LUp+w/bDgyyEpuDDp8fO18JsdyZndF5pRSeOnxPs1Ms6cUI3JRUJ/al7RMUQEzfMuNHPSrmEnFZW1nAjLOubdA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rslint/native-linux-arm64-musl@0.8.2': + resolution: {integrity: sha512-dDPAy1+EsXT6kKVy2qgzCJSBCZ+ry2LVLbo5eLX1kueTB6uGQATnKVKhS0SiSkdqC9clxiviBRs/XBivbc4uVQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rslint/native-linux-x64-gnu@0.8.2': + resolution: {integrity: sha512-n5TOiNTQGpfAjw7LScEdxYv41CaNpF2ff/6GVUuUBlA/GJr3pWApZUR3lP+RQmM/Ov2i+2Yfn2KrP+fIT1we5A==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rslint/native-linux-x64-musl@0.8.2': + resolution: {integrity: sha512-kP1uGWoHgtJuRcfMRqbu22tpMNkH2MIDQfQFu0O37PZQYh9uc0/yQzS6c5ILPKqr0PnBu4uljHa+I6a34kZ+Mw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rslint/native-win32-arm64-msvc@0.8.2': + resolution: {integrity: sha512-FYeEm0xa/vmgEHduoDrHj4k4oRBuX8xCS3JNgJALuqwUqPsh9h/pLmV+11M4X3aoiMWvqADfG4mZ0hbf79uzSQ==} + cpu: [arm64] + os: [win32] + + '@rslint/native-win32-x64-msvc@0.8.2': + resolution: {integrity: sha512-AyJTA/pMW7o1fXZ8oS6xwrQ89BdQwAuwCgVUB3tRUHYFNqbmjjjQAEqXz9xKSKbZlaENSRuDDptu0gq5VWPGmQ==} + cpu: [x64] + os: [win32] + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + +snapshots: + + '@rslint/core@0.8.2': + dependencies: + picomatch: 4.0.7 + optionalDependencies: + '@rslint/native-darwin-arm64': 0.8.2 + '@rslint/native-darwin-x64': 0.8.2 + '@rslint/native-linux-arm64-gnu': 0.8.2 + '@rslint/native-linux-arm64-musl': 0.8.2 + '@rslint/native-linux-x64-gnu': 0.8.2 + '@rslint/native-linux-x64-musl': 0.8.2 + '@rslint/native-win32-arm64-msvc': 0.8.2 + '@rslint/native-win32-x64-msvc': 0.8.2 + + '@rslint/native-darwin-arm64@0.8.2': + optional: true + + '@rslint/native-darwin-x64@0.8.2': + optional: true + + '@rslint/native-linux-arm64-gnu@0.8.2': + optional: true + + '@rslint/native-linux-arm64-musl@0.8.2': + optional: true + + '@rslint/native-linux-x64-gnu@0.8.2': + optional: true + + '@rslint/native-linux-x64-musl@0.8.2': + optional: true + + '@rslint/native-win32-arm64-msvc@0.8.2': + optional: true + + '@rslint/native-win32-x64-msvc@0.8.2': + optional: true + + picomatch@4.0.7: {} diff --git a/packages/vscode/e2e/fixtures/rstack/pnpm-lock.yaml b/packages/vscode/e2e/fixtures/rstack/pnpm-lock.yaml new file mode 100644 index 0000000..976938b --- /dev/null +++ b/packages/vscode/e2e/fixtures/rstack/pnpm-lock.yaml @@ -0,0 +1,855 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + rstack: + specifier: 0.7.2 + version: 0.7.2(jiti@2.7.0) + devDependencies: + jiti: + specifier: ^2.0.0 + version: 2.7.0 + +packages: + + '@ast-grep/napi-darwin-arm64@0.45.1': + resolution: {integrity: sha512-CthYcA0H3z5A2EHKH4rhSuFzpYUtxqUMnohmejxtMS6wiAgriKhOCopxN8XKclspYMtQyX2GC/PbvcU3dIbQHw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@ast-grep/napi-darwin-x64@0.45.1': + resolution: {integrity: sha512-PhlXMDEEH5fMjXjYcrbeNgGqrojj4zN8C7eMQC6M4pVkuW74uPhrblD4KUbNunp5I2LkWCdKOs36jhBaZe1iPw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@ast-grep/napi-linux-arm64-gnu@0.45.1': + resolution: {integrity: sha512-XScjs95/SrsV6kLl9MnF2qbqwKU79bcBA3JHi6xUu+hf0uZ0lc6MsZ595cEy5yw9PYRhgqwrT3wta9p4qU4jpg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@ast-grep/napi-linux-arm64-musl@0.45.1': + resolution: {integrity: sha512-qjH5CN5KIUdJW2dHfp8W57QsP6H0mA6E/rboKEzAxw6Ant1q2ZKqE3bLHUZMDoZXOBGdCODSZm0bTDcctiP49g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@ast-grep/napi-linux-x64-gnu@0.45.1': + resolution: {integrity: sha512-nPP0y5EnehCgmYqvVDKSvH4vHbEFdAi8L+Kq2Sz94vK32yv4eOWf9vWhgoPscWpw76GWuwhpDvME8SZARnS3DQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@ast-grep/napi-linux-x64-musl@0.45.1': + resolution: {integrity: sha512-sg50LKH7TskWd/boWVFp9gwKc3Jd8sg0f8P6T2VQemX/EOj+OFaMJ2+y7Ok17WI/dODkrZgAPUwq7RAvMzLtqg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@ast-grep/napi-win32-arm64-msvc@0.45.1': + resolution: {integrity: sha512-wnTmD34OD9bUpdBVTb58P0y+YPb/2C2g07zj96LSk5R4pdcEMrCFsrWZlaNwtEV4q7L9BfLgrxq3MBGI8c6doA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@ast-grep/napi-win32-ia32-msvc@0.45.1': + resolution: {integrity: sha512-gRyJwRPY1mWRtnJ6AMncV2pNU+B2indjLCb9z/+aZrUN5u/gOxYryEzvRatyC9rVUMeQGJD+k0htpsqIwgXVbA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@ast-grep/napi-win32-x64-msvc@0.45.1': + resolution: {integrity: sha512-mzfMmCO7tSNks+NGkGkSnDBKxBjHoOLAMJt2IbAkMYATxHC0RqfBoN7Qtd02VGhHWEfwWLPv/wU6MrvweZ3jdQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@ast-grep/napi@0.45.1': + resolution: {integrity: sha512-4cmGQEHoP9GLHEhGvd1vgSzO3Y6KF7FczDk4+q/VfXV9/9sNxNVgNHC8t3BglhIADDcoHrCMc9aw4lHG+M240A==} + engines: {node: '>= 10'} + + '@emnapi/core@1.11.3': + resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} + + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + + '@emnapi/wasi-threads@1.2.3': + resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} + + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@rsbuild/core@2.2.2': + resolution: {integrity: sha512-T82jUaeMUFhcBqpmKvRiNAcWMp6abxkvMEwiZi4x+gf7NAbyiF5jrbLnQLm1y4909eANsTSHenp99HlRPIByLw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + core-js: '>= 3.0.0' + peerDependenciesMeta: + core-js: + optional: true + + '@rslib/core@1.0.0-rc.2': + resolution: {integrity: sha512-6Bex+f8THioCRtfVg8cswHWR4T1xwY+VxRXoOXIgGBROTMlCuoS2/TzcLwYHmU1q1FXfXM8zAs0XuEnUAoDXzQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7 + typescript: ^5 || ^6 || ^7 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + typescript: + optional: true + + '@rslint/core@0.9.0': + resolution: {integrity: sha512-rY8F6kdQ/XkBiflaNzglJdMfxl0Lv/NFXppK0kAhx2P2CvogsXIA/z82Wxtk+Cg9uFHou67N9/iqmWXgdtSoDw==} + hasBin: true + peerDependencies: + jiti: ^2.7.0 + peerDependenciesMeta: + jiti: + optional: true + + '@rslint/native-darwin-arm64@0.9.0': + resolution: {integrity: sha512-xhdBrVALZTX0v4ZghKY7RGO87DpItk4DVvKm3MGih4w1o2WF2u+6n/mohvG7/ts7c8T88HIbLfK4luQ8kMDCsg==} + cpu: [arm64] + os: [darwin] + + '@rslint/native-darwin-x64@0.9.0': + resolution: {integrity: sha512-xuluXYUKizRZD/70WILvn+OeNdBT6izU81vhiNHVYdEQmfsqaqE8fthKGmQvaRu/DNL3CgVRPR+PzOAcQzPpOw==} + cpu: [x64] + os: [darwin] + + '@rslint/native-linux-arm64-gnu@0.9.0': + resolution: {integrity: sha512-J9uHBg/8Z9WanEKBXaPNZz0h+P8qtOLwjVqwEcOwYm1yLHRY70A7XqI6cRVIx72gXKGWtNBT2BRw9p8CWQUhgg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rslint/native-linux-arm64-musl@0.9.0': + resolution: {integrity: sha512-3ICIPH1oZOuMuZp+4hRhU+Af34U/2MNFB1yN+yi/jfJP+qBEExQbeBOS4J6HOecx9RJXcFvPF2ZI68l4g8/DPQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rslint/native-linux-x64-gnu@0.9.0': + resolution: {integrity: sha512-vlzcruA/t+0XvdK2S0bIS00H9Mpkrwo/hIFvpyUONgxi2WaO7XNDtgTWAsajB40WmvezYYLKs45LgkVXpxSCFA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rslint/native-linux-x64-musl@0.9.0': + resolution: {integrity: sha512-+gPExuOtSPaP7jAWeMRnTobvQOhaqo9857K/7T2qvc15ksnYqqygMhzcVzm9Wt7L4KBoW6PR1uvwgmPaK4B0IA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rslint/native-win32-arm64-msvc@0.9.0': + resolution: {integrity: sha512-YK5uTuk6zNXru2cOwivbZPH25C7u8RSQlKm5tOqwhaQ0ShCVDdh7z0SXvHvLdQ2VJen+30Vp1izAMZ7Zp/8KaQ==} + cpu: [arm64] + os: [win32] + + '@rslint/native-win32-x64-msvc@0.9.0': + resolution: {integrity: sha512-7elW5V8zm3McqA0LCjBBR7SDwQ5hRW+hrnJcCmrspSnBeUPFqnJfvUvsQPgbJz3pdrkBzzjZMvUgEYyBQ9dl8A==} + cpu: [x64] + os: [win32] + + '@rspack/binding-darwin-arm64@2.2.2': + resolution: {integrity: sha512-/le/AvV4HSinXTPs2Lqpujxt189Z5T10Ggt96QzckLRPvIchzqoavVDDjltzC7XcaZ87XCH/X06jNKgzkcBBNA==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@2.2.2': + resolution: {integrity: sha512-uFIcUPUXiPxM6ljenLafp5TemT8eLZm1riRn8fJYmpqNCK+aCcTaud18XHZpI5SjzzcY+xUHfVShgvNzKXuf2g==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@2.2.2': + resolution: {integrity: sha512-Pjby4pDSMNJQK2VBzpgCj6lb+DGuenS1fEDb6xi5/apbJb9v5WE+e43Mz7i+XqgXS8e846pjaONV3KM5WKB1LQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-arm64-musl@2.2.2': + resolution: {integrity: sha512-0u9O7tTVT2z+F6o/eEY6f6+My8Jn9U56QiBwkfy90ZaoAfZyQSSTxqaK/zA7W43oFxQefeCpiPas27VUzrSakw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rspack/binding-linux-ppc64-gnu@2.2.2': + resolution: {integrity: sha512-N3lVnhq5qOvpmP5n386JzR1GcE8HzAqq4/r440Z6yle9m7PhVFJ6oXVWxgaDTYV0mtv9YLJmaG+YrjYfUa1vuA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-riscv64-gnu@2.2.2': + resolution: {integrity: sha512-ReClZyp32/rJkUDV/oGDU0X6BCFyEkTR6r4stFwm/qOOaG6mUMRzZe4gur8Yh979p4Hiz9EdkmfEHY02GBXcaQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-riscv64-musl@2.2.2': + resolution: {integrity: sha512-mqsorvTNerr3r8zI35NFTPYATPDlhepdiUhZjKT6ylqpHlP7vLU9fp4aEMK/CuTv2f+IVsa0+iZqtMxHs2tSjw==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rspack/binding-linux-s390x-gnu@2.2.2': + resolution: {integrity: sha512-ql2Jub8QYWSugBppmj2u0SjcIj6fOQuAaLCYQOqU7zbvz/uuWTfoqmdWKExwrxeCU9Tzt7emVM0ETuVEpoca+A==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-x64-gnu@2.2.2': + resolution: {integrity: sha512-MNYKYEHrtIVEno2q5rgpou/JVffRwn109xPK3kxct95EojHsniNa8jwy6eEHeOazP4EN60Si7NElE3aQ6JssHw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-x64-musl@2.2.2': + resolution: {integrity: sha512-y9/9CmE8lrECaF17GAhacibTL+SvlEPEotQnUuBFC/WFtXh8hU2E7a7bAkpYGSLH6kM0nrJZHO3hTvM1wdWOJw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rspack/binding-wasm32-wasi@2.2.2': + resolution: {integrity: sha512-VbDIjjeFwZvMSKAOGY5IbU6lLzt6AHHHncTdMMkZ94Xk7O2BOHe9BXDV32Ln29TIW2C8m1fdxfPZWDiecVghUQ==} + cpu: [wasm32] + + '@rspack/binding-win32-arm64-msvc@2.2.2': + resolution: {integrity: sha512-rfcNg0W3ZPZvXma1gTyEt9/Z8FxASIaQr+sMWTSaTPPaeU3xY1+0hYcrD0kUFNs3/5L4u63myI4R8qRXiuW3pA==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@2.2.2': + resolution: {integrity: sha512-TFPvr9RZw9oHIhooDhXHzWjKcHpGPTxkznSeM2poIWU0CdEuua2rVUfsrriTF1Dmx+9kMly61DQmyOHCbb+b2g==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@2.2.2': + resolution: {integrity: sha512-GvEGyL594dtWN9SoVnKWh0exrM8WLInaUjwcuA2JKbCi1ak/9iHxip/U1dY3DuVqBYBhmvYq96JPbl91xnzFjg==} + cpu: [x64] + os: [win32] + + '@rspack/binding@2.2.2': + resolution: {integrity: sha512-gWjKDQfVQJSBh/I+y9WTlyERsiShSJ7eI6Yl0SJs/6gjx8t4ixuwWCsaEFFjwSL4nSn6ML5hNQ7UFY3gj72BWA==} + + '@rspack/core@2.2.2': + resolution: {integrity: sha512-/yztfDZR5syIPBrUpzBpL+6fhhl0IHBPcXlNr4tOMBULbocFIz7Z4/cqvf1ix0DBbKpIGx99v6N1IDbk2gi8hw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 + '@swc/helpers': ^0.5.23 + peerDependenciesMeta: + '@module-federation/runtime-tools': + optional: true + '@swc/helpers': + optional: true + + '@rstackjs/cli-darwin-arm64@0.7.2': + resolution: {integrity: sha512-po/JUgHx7DZ+Kmrbyy3L0/xr3rlZfVEk0Oy4D2xsjmAa3bHhP63B5XCOCyArLAZeMOqYPze9VaOcgWmGN5qWwQ==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [arm64] + os: [darwin] + + '@rstackjs/cli-darwin-x64@0.7.2': + resolution: {integrity: sha512-RFgUgUUXC3ZLF2iKJplsK2Ty49VkVw+rR8y5Hgf+3BAUn9ffRCUAqscWQGPCrJZENVbTEUWDyEVCMNnUpM6+Ww==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [x64] + os: [darwin] + + '@rstackjs/cli-linux-arm64-gnu@0.7.2': + resolution: {integrity: sha512-pNUbP/Bd962FznXLiJHnCcxpP/l1L9wmLsdIh43T8MQkY4m0Rv/s5tpA1rRcoqYHymhnVqWFcBAWxAPTSnOFFQ==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rstackjs/cli-linux-arm64-musl@0.7.2': + resolution: {integrity: sha512-cOC1WNNAZEeUxA0Lvbkk0ZBGMQIhKcjlZZinwGkg6zHJ7jxW42/SvwjNdnXv1xEpQd59OGJ1aSR1/Gt7PpItzw==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rstackjs/cli-linux-ppc64-gnu@0.7.2': + resolution: {integrity: sha512-jOk/KA3gpNapZO8y0Pc99XG7kjtgz6ndOGqKczgYD7VWBZcnMvD2KKI1GmeLxLf+9v0NiLtefj1CCtFEbqwXKg==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rstackjs/cli-linux-riscv64-gnu@0.7.2': + resolution: {integrity: sha512-8fukS3qf1nrvYDQ4886gWphHsg9gyktSkUUudSEFkamKKKOCmdZn+tDUvEebxYiqQCUEC/mqkUc/jg7EQKvP7Q==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rstackjs/cli-linux-riscv64-musl@0.7.2': + resolution: {integrity: sha512-AciMUbdFgC/bDP05iuC13x4uPDISkyx2S9KiWDnjhs7bCjHv19bhPeOGLnpUWjAL86LxbHNuk+rM8wdt1da4gg==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rstackjs/cli-linux-s390x-gnu@0.7.2': + resolution: {integrity: sha512-pj5V7Thbdc0FfK7Ngl3wLish7S0Yyy/ZmlH0Qd9UEMrNwMyMoyR+ZAJaWRjv7LFJQegPZNKBEgXfDc6Yeg7KjA==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rstackjs/cli-linux-x64-gnu@0.7.2': + resolution: {integrity: sha512-25Xzm2SXyDA1WkXrcHQym1ZI71ZK4n9AD32+0UT8IhVF+FGDBw0WG2UeOIr5XcaCCxgjGw1qec4aZ4GEd0/6vg==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rstackjs/cli-linux-x64-musl@0.7.2': + resolution: {integrity: sha512-77E3zZ5nrIP86nh40mMOvAu547a8qPDfTcKUQU/4fVjcE7g7zX17gQGGOHubzoqWRxv5abTABkG/ovhxqZ8bwQ==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rstackjs/cli-win32-arm64-msvc@0.7.2': + resolution: {integrity: sha512-fg8vRphmnXZQIC0lo757rwbFJS1s7Ft9RT9BzaJrqEcMWinxHx9HtKCddJ1scEpgu5Al8Vws74KYu2XNcUFUbA==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [arm64] + os: [win32] + + '@rstackjs/cli-win32-ia32-msvc@0.7.2': + resolution: {integrity: sha512-veUcxZ+ZqGzkkRYfkKj0GHlIKxR3NKm/Va4taifZLFXcqDFrSAmoueXTfhIzsLrNII+g85gizyaMdjytWhw8Lw==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [ia32] + os: [win32] + + '@rstackjs/cli-win32-x64-msvc@0.7.2': + resolution: {integrity: sha512-E/+K2W+GtezTLaOZ87erMyWOEbivKZiN/m/Iqeg8UJrfp9Zkqm7yIhQnYwG+KxN0gp3qjB/zxlcYdN5fnnhOWQ==} + engines: {node: ^22.18.0 || >=24.3.0} + cpu: [x64] + os: [win32] + + '@rstest/core@0.11.11': + resolution: {integrity: sha512-7Ii2/2/ex1Oa0Kg5Qk5RKx2+e0I83BHLwH0/gn1B7IDwXCh5msFCF7yTyVGFuMltlm3E8Cf4QD7jadOEaBfXfw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + happy-dom: ^20.8.3 + jsdom: '>=15.0.0' + peerDependenciesMeta: + happy-dom: + optional: true + jsdom: + optional: true + + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@yuku-parser/binding-android-arm64@0.9.3': + resolution: {integrity: sha512-z3tDGTaUXD5Q4IuebFOY/QHxhR/SqujMhkMv9C5bh25upyFEXdafp0MsXQIIheWhVZzn5VMOniyxFni/7s9LgQ==} + cpu: [arm64] + os: [android] + + '@yuku-parser/binding-darwin-arm64@0.9.3': + resolution: {integrity: sha512-hzKvKSKS7z3ufnu1VkQYEoxmS6A5uNnkwukKnc2atxpWdq648nLVOqut4h1jUXjbM2WcoTfuZLF6AHAGFf8cmg==} + cpu: [arm64] + os: [darwin] + + '@yuku-parser/binding-darwin-x64@0.9.3': + resolution: {integrity: sha512-OM2PiVlPATvzlj/KGHNlu+t8FC3YzM5joVNjhsz/EaigQ8x2UUQ1Q0agQLiv5GZ2L8TSzrLUwBCZ7YOvP8q+tw==} + cpu: [x64] + os: [darwin] + + '@yuku-parser/binding-freebsd-x64@0.9.3': + resolution: {integrity: sha512-WMn9M4LHNVysGNwsAJ9gpRPqQIW2lcPrDNGcyk0agx3IYqCJq1MQugh6Be8Otc5U08eGdE39o8Kx9YWJmXz7GA==} + cpu: [x64] + os: [freebsd] + + '@yuku-parser/binding-linux-arm-gnu@0.9.3': + resolution: {integrity: sha512-vqKjwiyW1FWvbykYMEQIcAJwA17WxK3rxxqDuyCvQwcNVaLEUxI4BXiUdlF3kHucc7MnoFQhoRPkySgOzlLM+Q==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-arm-musl@0.9.3': + resolution: {integrity: sha512-qohilhYOT+zkt2gYzym4F1T6BzRdvPqS9/sFB03pmnVV8LrvjOXVsGwEBAa3CEvzJKhAZjdTmVz7zsVdjyHWLg==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-linux-arm64-gnu@0.9.3': + resolution: {integrity: sha512-tvTIyUvTGkeee68i4JIo9o27As+Ug6LXOZvElGgFbTs6+KBdb5LGhvugaIQljdfIsm2XnIbOLG6OnQSXHMLB9w==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-arm64-musl@0.9.3': + resolution: {integrity: sha512-OWZBHW1wuChBpFlrF+On1yiBcFPMRrj2g0VKsM/PCBGffu1OM0ORkS+vLS3Snu6wYwndM5Dd9Ctvux6eUlrQjA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-linux-x64-gnu@0.9.3': + resolution: {integrity: sha512-/tbk1h0dlADOCngbiQO9V3SHwBIJkoGBq8BDEraSw2CC3nGxPEPTCCYUDp5738Ij2FxVwy1FWVuhFkHvpMrPbQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-x64-musl@0.9.3': + resolution: {integrity: sha512-u3+0sCso/mcjDvtc3866D2giV7l34PDyDVBkMesAWa3DWbIWPlybehi2SSnmScgArV22ctqSSgUzdBBVJ6zYAg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-win32-arm64@0.9.3': + resolution: {integrity: sha512-xnGEvdhyjRkXozHtpXVpEEkyGZWAxJ3RoILv7XRV5SvTEztaTCk5GQyfcOzI9An/EJtcL4ERCI8QmS0TpDPJiA==} + cpu: [arm64] + os: [win32] + + '@yuku-parser/binding-win32-x64@0.9.3': + resolution: {integrity: sha512-N5eShGcuwnrXEprePFmEjtng6acZmtnC4zgazK9xxkavcx1q1uX8Nz8lU5RS973EMlNr902cIc6Cd2D4tqZDBg==} + cpu: [x64] + os: [win32] + + '@yuku-toolchain/types@0.9.3': + resolution: {integrity: sha512-rFE+5P4g2wxko5C85MugJOlVjBHEQq87dIkhLkniLXLp63PEtgaFjD954i5HXlfnyzLxPcZHsSOVDVgmo1HToA==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + + prettier@3.9.6: + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} + engines: {node: '>=14'} + hasBin: true + + rsbuild-plugin-dts@1.0.0-rc.2: + resolution: {integrity: sha512-Mqalmu3j7UcDLUl3O5Y502V5Id6cbKyNn/nUxQIxar7gK2KjdPyw58WRfMQ7/4r4oHmeBeIgeSCb50M648ysoA==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@microsoft/api-extractor': ^7 + '@rsbuild/core': ^2.0.0 + typescript: ^5 || ^6 || ^7 + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + typescript: + optional: true + + rstack@0.7.2: + resolution: {integrity: sha512-A0nL89XfrcA1tqhX7WmA+6p7ogMr4oWSYaPH1h+Kybl/e4+mEQAO/GCVA2BPsoUsSx8KltC3wUkmuhkKtoQojQ==} + engines: {node: ^22.18.0 || >=24.3.0} + hasBin: true + peerDependencies: + '@rspress/core': ^2.0.17 + peerDependenciesMeta: + '@rspress/core': + optional: true + + tinypool@2.1.2: + resolution: {integrity: sha512-9YodfrxS9g9IbFr/KOjE5bAeJ0p61n3bW6mqvy0jtoeKd1kTW1Cxm0oulm6KX2lyM9Gl6WIe8nEbY7LWv5ZJww==} + engines: {node: ^20.0.0 || >=22.0.0} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + yuku-ast@0.9.3: + resolution: {integrity: sha512-Kt0PXlPCXdKF1fWFTl7N3DaxsVk6DHF8VAXHJMkwPtJnWYgbx20pYgGSweuC/86mIM7k1NUITQ4JffgOLUWTCw==} + + yuku-parser@0.9.3: + resolution: {integrity: sha512-96wPoHnwaXfkZv7UIOUkDb+s7ZH8lv8Qtg+MxdvHUV1LFa5jV9iKOaams1942YQt+krFQrWiD6lSg2ermv5kHA==} + +snapshots: + + '@ast-grep/napi-darwin-arm64@0.45.1': + optional: true + + '@ast-grep/napi-darwin-x64@0.45.1': + optional: true + + '@ast-grep/napi-linux-arm64-gnu@0.45.1': + optional: true + + '@ast-grep/napi-linux-arm64-musl@0.45.1': + optional: true + + '@ast-grep/napi-linux-x64-gnu@0.45.1': + optional: true + + '@ast-grep/napi-linux-x64-musl@0.45.1': + optional: true + + '@ast-grep/napi-win32-arm64-msvc@0.45.1': + optional: true + + '@ast-grep/napi-win32-ia32-msvc@0.45.1': + optional: true + + '@ast-grep/napi-win32-x64-msvc@0.45.1': + optional: true + + '@ast-grep/napi@0.45.1': + optionalDependencies: + '@ast-grep/napi-darwin-arm64': 0.45.1 + '@ast-grep/napi-darwin-x64': 0.45.1 + '@ast-grep/napi-linux-arm64-gnu': 0.45.1 + '@ast-grep/napi-linux-arm64-musl': 0.45.1 + '@ast-grep/napi-linux-x64-gnu': 0.45.1 + '@ast-grep/napi-linux-x64-musl': 0.45.1 + '@ast-grep/napi-win32-arm64-msvc': 0.45.1 + '@ast-grep/napi-win32-ia32-msvc': 0.45.1 + '@ast-grep/napi-win32-x64-msvc': 0.45.1 + + '@emnapi/core@1.11.3': + dependencies: + '@emnapi/wasi-threads': 1.2.3 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': + dependencies: + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@rsbuild/core@2.2.2': + dependencies: + '@rspack/core': 2.2.2(@swc/helpers@0.5.23) + '@swc/helpers': 0.5.23 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + + '@rslib/core@1.0.0-rc.2': + dependencies: + '@rsbuild/core': 2.2.2 + rsbuild-plugin-dts: 1.0.0-rc.2(@rsbuild/core@2.2.2) + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - core-js + + '@rslint/core@0.9.0(jiti@2.7.0)': + dependencies: + picomatch: 4.0.5 + optionalDependencies: + '@rslint/native-darwin-arm64': 0.9.0 + '@rslint/native-darwin-x64': 0.9.0 + '@rslint/native-linux-arm64-gnu': 0.9.0 + '@rslint/native-linux-arm64-musl': 0.9.0 + '@rslint/native-linux-x64-gnu': 0.9.0 + '@rslint/native-linux-x64-musl': 0.9.0 + '@rslint/native-win32-arm64-msvc': 0.9.0 + '@rslint/native-win32-x64-msvc': 0.9.0 + jiti: 2.7.0 + + '@rslint/native-darwin-arm64@0.9.0': + optional: true + + '@rslint/native-darwin-x64@0.9.0': + optional: true + + '@rslint/native-linux-arm64-gnu@0.9.0': + optional: true + + '@rslint/native-linux-arm64-musl@0.9.0': + optional: true + + '@rslint/native-linux-x64-gnu@0.9.0': + optional: true + + '@rslint/native-linux-x64-musl@0.9.0': + optional: true + + '@rslint/native-win32-arm64-msvc@0.9.0': + optional: true + + '@rslint/native-win32-x64-msvc@0.9.0': + optional: true + + '@rspack/binding-darwin-arm64@2.2.2': + optional: true + + '@rspack/binding-darwin-x64@2.2.2': + optional: true + + '@rspack/binding-linux-arm64-gnu@2.2.2': + optional: true + + '@rspack/binding-linux-arm64-musl@2.2.2': + optional: true + + '@rspack/binding-linux-ppc64-gnu@2.2.2': + optional: true + + '@rspack/binding-linux-riscv64-gnu@2.2.2': + optional: true + + '@rspack/binding-linux-riscv64-musl@2.2.2': + optional: true + + '@rspack/binding-linux-s390x-gnu@2.2.2': + optional: true + + '@rspack/binding-linux-x64-gnu@2.2.2': + optional: true + + '@rspack/binding-linux-x64-musl@2.2.2': + optional: true + + '@rspack/binding-wasm32-wasi@2.2.2': + dependencies: + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + optional: true + + '@rspack/binding-win32-arm64-msvc@2.2.2': + optional: true + + '@rspack/binding-win32-ia32-msvc@2.2.2': + optional: true + + '@rspack/binding-win32-x64-msvc@2.2.2': + optional: true + + '@rspack/binding@2.2.2': + optionalDependencies: + '@rspack/binding-darwin-arm64': 2.2.2 + '@rspack/binding-darwin-x64': 2.2.2 + '@rspack/binding-linux-arm64-gnu': 2.2.2 + '@rspack/binding-linux-arm64-musl': 2.2.2 + '@rspack/binding-linux-ppc64-gnu': 2.2.2 + '@rspack/binding-linux-riscv64-gnu': 2.2.2 + '@rspack/binding-linux-riscv64-musl': 2.2.2 + '@rspack/binding-linux-s390x-gnu': 2.2.2 + '@rspack/binding-linux-x64-gnu': 2.2.2 + '@rspack/binding-linux-x64-musl': 2.2.2 + '@rspack/binding-wasm32-wasi': 2.2.2 + '@rspack/binding-win32-arm64-msvc': 2.2.2 + '@rspack/binding-win32-ia32-msvc': 2.2.2 + '@rspack/binding-win32-x64-msvc': 2.2.2 + + '@rspack/core@2.2.2(@swc/helpers@0.5.23)': + dependencies: + '@rspack/binding': 2.2.2 + optionalDependencies: + '@swc/helpers': 0.5.23 + + '@rstackjs/cli-darwin-arm64@0.7.2': + optional: true + + '@rstackjs/cli-darwin-x64@0.7.2': + optional: true + + '@rstackjs/cli-linux-arm64-gnu@0.7.2': + optional: true + + '@rstackjs/cli-linux-arm64-musl@0.7.2': + optional: true + + '@rstackjs/cli-linux-ppc64-gnu@0.7.2': + optional: true + + '@rstackjs/cli-linux-riscv64-gnu@0.7.2': + optional: true + + '@rstackjs/cli-linux-riscv64-musl@0.7.2': + optional: true + + '@rstackjs/cli-linux-s390x-gnu@0.7.2': + optional: true + + '@rstackjs/cli-linux-x64-gnu@0.7.2': + optional: true + + '@rstackjs/cli-linux-x64-musl@0.7.2': + optional: true + + '@rstackjs/cli-win32-arm64-msvc@0.7.2': + optional: true + + '@rstackjs/cli-win32-ia32-msvc@0.7.2': + optional: true + + '@rstackjs/cli-win32-x64-msvc@0.7.2': + optional: true + + '@rstest/core@0.11.11': + dependencies: + '@rsbuild/core': 2.2.2 + '@types/chai': 5.2.3 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - core-js + + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@yuku-parser/binding-android-arm64@0.9.3': + optional: true + + '@yuku-parser/binding-darwin-arm64@0.9.3': + optional: true + + '@yuku-parser/binding-darwin-x64@0.9.3': + optional: true + + '@yuku-parser/binding-freebsd-x64@0.9.3': + optional: true + + '@yuku-parser/binding-linux-arm-gnu@0.9.3': + optional: true + + '@yuku-parser/binding-linux-arm-musl@0.9.3': + optional: true + + '@yuku-parser/binding-linux-arm64-gnu@0.9.3': + optional: true + + '@yuku-parser/binding-linux-arm64-musl@0.9.3': + optional: true + + '@yuku-parser/binding-linux-x64-gnu@0.9.3': + optional: true + + '@yuku-parser/binding-linux-x64-musl@0.9.3': + optional: true + + '@yuku-parser/binding-win32-arm64@0.9.3': + optional: true + + '@yuku-parser/binding-win32-x64@0.9.3': + optional: true + + '@yuku-toolchain/types@0.9.3': {} + + assertion-error@2.0.1: {} + + jiti@2.7.0: {} + + picomatch@4.0.5: {} + + prettier@3.9.6: {} + + rsbuild-plugin-dts@1.0.0-rc.2(@rsbuild/core@2.2.2): + dependencies: + '@ast-grep/napi': 0.45.1 + '@rsbuild/core': 2.2.2 + + rstack@0.7.2(jiti@2.7.0): + dependencies: + '@rsbuild/core': 2.2.2 + '@rslib/core': 1.0.0-rc.2 + '@rslint/core': 0.9.0(jiti@2.7.0) + '@rstest/core': 0.11.11 + prettier: 3.9.6 + tinypool: 2.1.2 + yuku-parser: 0.9.3 + optionalDependencies: + '@rstackjs/cli-darwin-arm64': 0.7.2 + '@rstackjs/cli-darwin-x64': 0.7.2 + '@rstackjs/cli-linux-arm64-gnu': 0.7.2 + '@rstackjs/cli-linux-arm64-musl': 0.7.2 + '@rstackjs/cli-linux-ppc64-gnu': 0.7.2 + '@rstackjs/cli-linux-riscv64-gnu': 0.7.2 + '@rstackjs/cli-linux-riscv64-musl': 0.7.2 + '@rstackjs/cli-linux-s390x-gnu': 0.7.2 + '@rstackjs/cli-linux-x64-gnu': 0.7.2 + '@rstackjs/cli-linux-x64-musl': 0.7.2 + '@rstackjs/cli-win32-arm64-msvc': 0.7.2 + '@rstackjs/cli-win32-ia32-msvc': 0.7.2 + '@rstackjs/cli-win32-x64-msvc': 0.7.2 + transitivePeerDependencies: + - '@microsoft/api-extractor' + - '@module-federation/runtime-tools' + - core-js + - happy-dom + - jiti + - jsdom + - typescript + + tinypool@2.1.2: {} + + tslib@2.8.1: {} + + yuku-ast@0.9.3: + dependencies: + '@yuku-toolchain/types': 0.9.3 + + yuku-parser@0.9.3: + dependencies: + '@yuku-toolchain/types': 0.9.3 + yuku-ast: 0.9.3 + optionalDependencies: + '@yuku-parser/binding-android-arm64': 0.9.3 + '@yuku-parser/binding-darwin-arm64': 0.9.3 + '@yuku-parser/binding-darwin-x64': 0.9.3 + '@yuku-parser/binding-freebsd-x64': 0.9.3 + '@yuku-parser/binding-linux-arm-gnu': 0.9.3 + '@yuku-parser/binding-linux-arm-musl': 0.9.3 + '@yuku-parser/binding-linux-arm64-gnu': 0.9.3 + '@yuku-parser/binding-linux-arm64-musl': 0.9.3 + '@yuku-parser/binding-linux-x64-gnu': 0.9.3 + '@yuku-parser/binding-linux-x64-musl': 0.9.3 + '@yuku-parser/binding-win32-arm64': 0.9.3 + '@yuku-parser/binding-win32-x64': 0.9.3 diff --git a/packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml b/packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml new file mode 100644 index 0000000..10b3595 --- /dev/null +++ b/packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml @@ -0,0 +1,307 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@rstest/core': + specifier: ^0.6.0 + version: 0.6.9 + +packages: + + '@emnapi/core@1.11.3': + resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} + + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + + '@emnapi/wasi-threads@1.2.3': + resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} + + '@module-federation/error-codes@0.21.1': + resolution: {integrity: sha512-h1brnwR9AbwMu1P7ZoJJ9j2O2XWkuMh5p03WhXI1vNEdl3xJheSAvH8RjG8FoKRccVgMnUNDQ+vDVwevUBms/A==} + + '@module-federation/runtime-core@0.21.1': + resolution: {integrity: sha512-COob5bepqDc9mKjTziXbQd4WQMCTzhc0cuXyraZhYddYcjcepzZrMpDIXG1x5p+gdg5p1vsGNWt/ZcU8cFh/pg==} + + '@module-federation/runtime-tools@0.21.1': + resolution: {integrity: sha512-uQmammw3Osg8370yiRqZwKo7eA5zkyml9pAX9x4oS9QAkEBvQpDogERlF9f7gAgcP2P3v+xLg3/bCdquD0gt8A==} + + '@module-federation/runtime@0.21.1': + resolution: {integrity: sha512-sfBrP0gEPwXPEiREVKVd0IjEWXtr3G/i7EUZVWTt4D491nNpswog/kuKFatGmhcBb+9uD5v9rxFgmIbgL9njnQ==} + + '@module-federation/sdk@0.21.1': + resolution: {integrity: sha512-1cHMrmCCao3NMFM4BkA0GDt4rbYbyneHct5E4z68cu5UBUnI3L/UboP5VNM8lkYMO1nCR8M0FcLkLhK35Nt48A==} + + '@module-federation/webpack-bundler-runtime@0.21.1': + resolution: {integrity: sha512-yyXX6ugTV07pMxMzAHt6/JDwblS3f1NDyUI7l44CyYgXpl2ItEEUs5aj5h/5xU1c9Px7M//KkY3qW+InW4tR/A==} + + '@napi-rs/wasm-runtime@1.0.7': + resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} + + '@rsbuild/core@1.6.0-beta.1': + resolution: {integrity: sha512-UjQnvXDW9m/hS4DP66ubGIMVjK2PzYx8tzgiinrO0kjNCr9i8KWuJSJGUWyczFMpSsXxp20LnuTxtx7kiGiYdA==} + engines: {node: '>=18.12.0'} + hasBin: true + + '@rspack/binding-darwin-arm64@1.6.0-beta.1': + resolution: {integrity: sha512-RXQ97iVXgvQAb/cq265z/txdHOOJ6fQQRBfnn0IfMNk7gT4W2rvsLrOqQpwtMKxYV4N/mfWnycfAVa0OOf22Gg==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@1.6.0-beta.1': + resolution: {integrity: sha512-Ulb7Jyyvuf28BwPXZKSbglaSK/19b32ItWT+pgswhbFsnfhzAQQd7Jo7TUEvHNHAdVDiES8VFlrnOhOSnwEOLg==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@1.6.0-beta.1': + resolution: {integrity: sha512-UyUoh5RXHTWCktqPVnqoc5rwlWyLkWqGu6ga+iyJHDxdxlrHFfwJnTSnCd4y8cRadf7CrmjHElxE61GU3WCYhw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-arm64-musl@1.6.0-beta.1': + resolution: {integrity: sha512-JAXVKHQieN4Ruvs7MstvsPUtRBSAROqJ0abCh4rXdV+FzncKp/ZkdfjQploDhBWtWfU8rPvIjaxeZcPfHMI5/A==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rspack/binding-linux-x64-gnu@1.6.0-beta.1': + resolution: {integrity: sha512-LqAos71CJS5/V4knX9T7T68oGz0XPRZ2IJmI3jEByRlNcyZdxYeQ7Dw09JO9Y5Xj0T+0cudOeL2MxHcD3gTF/w==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-x64-musl@1.6.0-beta.1': + resolution: {integrity: sha512-E4dRMzIHYaoYkgmDTFLrgnGtdspbAuVbLfaPF9AWW5YkQn52obGAgbbNb1wi1JJ5f29nTBoLauYCucEO5IGFvA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rspack/binding-wasm32-wasi@1.6.0-beta.1': + resolution: {integrity: sha512-PaKEjXOkYprSFlgdgVm/P3pv2E8nAQx9WSGgPmMVIAtxo3Cyz0wwFf0f1Bp9wCw0KkIWgi+9lz8oXNkgKZilug==} + cpu: [wasm32] + + '@rspack/binding-win32-arm64-msvc@1.6.0-beta.1': + resolution: {integrity: sha512-HWz9Qxrjf3TKLCwiFPJaqw+STvEsBvFYZvBXZ8umIZXqtdfgQP5d91V8JRG4Gg1J6xnGC/KhZexxBuR/y64aBA==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@1.6.0-beta.1': + resolution: {integrity: sha512-alAZHRuyPzCH3rJpEC9EBE60EZPnQjzltZ6HN8lsCidACMFTzaLBvuzZyYQah+Zm58O22ok2Eon4BpP1Coizgg==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@1.6.0-beta.1': + resolution: {integrity: sha512-/WBzhed0Cu0o9XQ9caGgWwzyNnnPKlENlExa2aGbRCbB14/+CwfhCyETyKlc/ID+dtlV/eHKTC9cckUNI8NpTQ==} + cpu: [x64] + os: [win32] + + '@rspack/binding@1.6.0-beta.1': + resolution: {integrity: sha512-r3L60ekkDLM5qoRjCMrqsgwU9SQ5e8oA/Omltu/FEEUspIVHawPvAqNZvAXnGB+FoNxM8YgdRRh12PAwXJww0A==} + + '@rspack/core@1.6.0-beta.1': + resolution: {integrity: sha512-2ff8XWonPPHyQ6mEWogMspg+Sul3lXZUfNQVrbYSjfNpi8CeDV0/ZtRbHHbAXiy6pz5fvBFL6X+i/ATckjTYBw==} + engines: {node: '>=18.12.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@rspack/lite-tapable@1.0.1': + resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} + engines: {node: '>=16.0.0'} + + '@rstest/core@0.6.9': + resolution: {integrity: sha512-0qImkQB6T5NLrlgeuaZxSfgpAaaciouKJycpZe673M+cn1WLai7blt2z+Tf4Qv4DVOw/ZyphSmM8WNYz09vNmw==} + engines: {node: '>=18.12.0'} + hasBin: true + peerDependencies: + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + happy-dom: + optional: true + jsdom: + optional: true + + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + core-js@3.46.0: + resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} + engines: {node: ^18.0.0 || >=20.0.0} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + +snapshots: + + '@emnapi/core@1.11.3': + dependencies: + '@emnapi/wasi-threads': 1.2.3 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@module-federation/error-codes@0.21.1': {} + + '@module-federation/runtime-core@0.21.1': + dependencies: + '@module-federation/error-codes': 0.21.1 + '@module-federation/sdk': 0.21.1 + + '@module-federation/runtime-tools@0.21.1': + dependencies: + '@module-federation/runtime': 0.21.1 + '@module-federation/webpack-bundler-runtime': 0.21.1 + + '@module-federation/runtime@0.21.1': + dependencies: + '@module-federation/error-codes': 0.21.1 + '@module-federation/runtime-core': 0.21.1 + '@module-federation/sdk': 0.21.1 + + '@module-federation/sdk@0.21.1': {} + + '@module-federation/webpack-bundler-runtime@0.21.1': + dependencies: + '@module-federation/runtime': 0.21.1 + '@module-federation/sdk': 0.21.1 + + '@napi-rs/wasm-runtime@1.0.7': + dependencies: + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@rsbuild/core@1.6.0-beta.1': + dependencies: + '@rspack/core': 1.6.0-beta.1(@swc/helpers@0.5.23) + '@rspack/lite-tapable': 1.0.1 + '@swc/helpers': 0.5.23 + core-js: 3.46.0 + jiti: 2.7.0 + + '@rspack/binding-darwin-arm64@1.6.0-beta.1': + optional: true + + '@rspack/binding-darwin-x64@1.6.0-beta.1': + optional: true + + '@rspack/binding-linux-arm64-gnu@1.6.0-beta.1': + optional: true + + '@rspack/binding-linux-arm64-musl@1.6.0-beta.1': + optional: true + + '@rspack/binding-linux-x64-gnu@1.6.0-beta.1': + optional: true + + '@rspack/binding-linux-x64-musl@1.6.0-beta.1': + optional: true + + '@rspack/binding-wasm32-wasi@1.6.0-beta.1': + dependencies: + '@napi-rs/wasm-runtime': 1.0.7 + optional: true + + '@rspack/binding-win32-arm64-msvc@1.6.0-beta.1': + optional: true + + '@rspack/binding-win32-ia32-msvc@1.6.0-beta.1': + optional: true + + '@rspack/binding-win32-x64-msvc@1.6.0-beta.1': + optional: true + + '@rspack/binding@1.6.0-beta.1': + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.6.0-beta.1 + '@rspack/binding-darwin-x64': 1.6.0-beta.1 + '@rspack/binding-linux-arm64-gnu': 1.6.0-beta.1 + '@rspack/binding-linux-arm64-musl': 1.6.0-beta.1 + '@rspack/binding-linux-x64-gnu': 1.6.0-beta.1 + '@rspack/binding-linux-x64-musl': 1.6.0-beta.1 + '@rspack/binding-wasm32-wasi': 1.6.0-beta.1 + '@rspack/binding-win32-arm64-msvc': 1.6.0-beta.1 + '@rspack/binding-win32-ia32-msvc': 1.6.0-beta.1 + '@rspack/binding-win32-x64-msvc': 1.6.0-beta.1 + + '@rspack/core@1.6.0-beta.1(@swc/helpers@0.5.23)': + dependencies: + '@module-federation/runtime-tools': 0.21.1 + '@rspack/binding': 1.6.0-beta.1 + '@rspack/lite-tapable': 1.0.1 + optionalDependencies: + '@swc/helpers': 0.5.23 + + '@rspack/lite-tapable@1.0.1': {} + + '@rstest/core@0.6.9': + dependencies: + '@rsbuild/core': 1.6.0-beta.1 + '@types/chai': 5.2.3 + tinypool: 1.1.1 + + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + assertion-error@2.0.1: {} + + core-js@3.46.0: {} + + jiti@2.7.0: {} + + tinypool@1.1.1: {} + + tslib@2.8.1: {} diff --git a/packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml b/packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml new file mode 100644 index 0000000..6bb60dc --- /dev/null +++ b/packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml @@ -0,0 +1,123 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@rslint/core': + specifier: ^0.8.1 + version: 0.8.2(jiti@2.7.0) + jiti: + specifier: ^2.7.0 + version: 2.7.0 + +packages: + + '@rslint/core@0.8.2': + resolution: {integrity: sha512-O7c9hg5Soo1MOta0Aj+3Td2Bjd6ZZUV+lLPWJvVRNqaZEzl2FKmkS9xuT9o4jHXTXhTvlxGuyyaJUUlEpW57Cw==} + hasBin: true + peerDependencies: + jiti: ^2.7.0 + peerDependenciesMeta: + jiti: + optional: true + + '@rslint/native-darwin-arm64@0.8.2': + resolution: {integrity: sha512-SdGy7Mh8a53VQiMbQQ+pvtaivwUCeBdYP0QeORZfUWqcqqaTdfTQnaCm/7BG9NRIjAwSZcwooJnklZwqky2gGA==} + cpu: [arm64] + os: [darwin] + + '@rslint/native-darwin-x64@0.8.2': + resolution: {integrity: sha512-Yp8+zNxhkO92QpNFTcJLYPU/Q02QC0GIR9BRn2DdMHtVattFctZKXujWprLFNafh7Di/5fitebNKeqck2+pxoQ==} + cpu: [x64] + os: [darwin] + + '@rslint/native-linux-arm64-gnu@0.8.2': + resolution: {integrity: sha512-LUp+w/bDgyyEpuDDp8fO18JsdyZndF5pRSeOnxPs1Ms6cUI3JRUJ/al7RMUQEzfMuNHPSrmEnFZW1nAjLOubdA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rslint/native-linux-arm64-musl@0.8.2': + resolution: {integrity: sha512-dDPAy1+EsXT6kKVy2qgzCJSBCZ+ry2LVLbo5eLX1kueTB6uGQATnKVKhS0SiSkdqC9clxiviBRs/XBivbc4uVQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rslint/native-linux-x64-gnu@0.8.2': + resolution: {integrity: sha512-n5TOiNTQGpfAjw7LScEdxYv41CaNpF2ff/6GVUuUBlA/GJr3pWApZUR3lP+RQmM/Ov2i+2Yfn2KrP+fIT1we5A==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rslint/native-linux-x64-musl@0.8.2': + resolution: {integrity: sha512-kP1uGWoHgtJuRcfMRqbu22tpMNkH2MIDQfQFu0O37PZQYh9uc0/yQzS6c5ILPKqr0PnBu4uljHa+I6a34kZ+Mw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rslint/native-win32-arm64-msvc@0.8.2': + resolution: {integrity: sha512-FYeEm0xa/vmgEHduoDrHj4k4oRBuX8xCS3JNgJALuqwUqPsh9h/pLmV+11M4X3aoiMWvqADfG4mZ0hbf79uzSQ==} + cpu: [arm64] + os: [win32] + + '@rslint/native-win32-x64-msvc@0.8.2': + resolution: {integrity: sha512-AyJTA/pMW7o1fXZ8oS6xwrQ89BdQwAuwCgVUB3tRUHYFNqbmjjjQAEqXz9xKSKbZlaENSRuDDptu0gq5VWPGmQ==} + cpu: [x64] + os: [win32] + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + +snapshots: + + '@rslint/core@0.8.2(jiti@2.7.0)': + dependencies: + picomatch: 4.0.7 + optionalDependencies: + '@rslint/native-darwin-arm64': 0.8.2 + '@rslint/native-darwin-x64': 0.8.2 + '@rslint/native-linux-arm64-gnu': 0.8.2 + '@rslint/native-linux-arm64-musl': 0.8.2 + '@rslint/native-linux-x64-gnu': 0.8.2 + '@rslint/native-linux-x64-musl': 0.8.2 + '@rslint/native-win32-arm64-msvc': 0.8.2 + '@rslint/native-win32-x64-msvc': 0.8.2 + jiti: 2.7.0 + + '@rslint/native-darwin-arm64@0.8.2': + optional: true + + '@rslint/native-darwin-x64@0.8.2': + optional: true + + '@rslint/native-linux-arm64-gnu@0.8.2': + optional: true + + '@rslint/native-linux-arm64-musl@0.8.2': + optional: true + + '@rslint/native-linux-x64-gnu@0.8.2': + optional: true + + '@rslint/native-linux-x64-musl@0.8.2': + optional: true + + '@rslint/native-win32-arm64-msvc@0.8.2': + optional: true + + '@rslint/native-win32-x64-msvc@0.8.2': + optional: true + + jiti@2.7.0: {} + + picomatch@4.0.7: {} diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml b/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml new file mode 100644 index 0000000..cbf9ea3 --- /dev/null +++ b/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml @@ -0,0 +1,273 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@rstest/core': + specifier: ^0.11.5 + version: 0.11.5 + +packages: + + '@emnapi/core@1.11.2': + resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} + + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@rsbuild/core@2.1.9': + resolution: {integrity: sha512-yqf1hFZ3wbMYI431LqsxLH3r0VZkfyarVKTf7kMeIiGe0YLwsrgsfp+sKpIyVkQkq60J0qyp6l/CoqqsQZqEwQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + core-js: '>= 3.0.0' + peerDependenciesMeta: + core-js: + optional: true + + '@rspack/binding-darwin-arm64@2.1.7': + resolution: {integrity: sha512-DwxzrXRctueP/3Pyom9JHcIsRShuEAlHb+mrE5OPT+4cdHI1UnJpbzEvEDLTo4IKJhDb3vjXdHLtjqtL0SYbeA==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@2.1.7': + resolution: {integrity: sha512-kPbrYvR/XUHfAMgRVq3QnC71DW/qjwsPj+3hEUuEnRmlploPNy9u8Szf1IHKSVUSrVZBTgDyMoZQdxYLfhResw==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@2.1.7': + resolution: {integrity: sha512-VFB+YXM3kZ6IIuLV64H3vgnwqvQIIaqfR/aeGwuxYvwcZsrgblSBmXMeDULdgDjqP8Yr0VaFMBBiD9OtG5KdFw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-arm64-musl@2.1.7': + resolution: {integrity: sha512-Mzbxyg0aJ+ITj526Iuz0enEDYY6WxhFIwEKXqwjQh+Vpd5v/+aPzPo83sSQVX/3puBV1sbmviTURbh6N9e1fvA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rspack/binding-linux-riscv64-gnu@2.1.7': + resolution: {integrity: sha512-mpazwgT/Pse1720mvEJsoXfPkJ+enj0xUqpbe/wL6aedwjGT+9jJNB8HTJXE4XBX0UO7umGqcJMeKA6YsD2CDA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-riscv64-musl@2.1.7': + resolution: {integrity: sha512-oU/l3soPRsDEWn7KZic+npyTMM2N1kRdHjoJ+L5IUBXs8bjdTXPLoyTbTdIOza5ZSoT4+UeEiEryj4BB0tQE5w==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rspack/binding-linux-x64-gnu@2.1.7': + resolution: {integrity: sha512-7Gtpl3h3jtnOpk1mYQE8mRndXAO2ibI8mnAbs7klevdKey+ZHneWMoMi2yOMQhhI/ifWEFxDzyGJ8bdxo0XTsA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-x64-musl@2.1.7': + resolution: {integrity: sha512-w+whI2Uy+DYkGN+MVkzMFWweL7B/s1gMqX+nvTE1vhOy3hGV0VyA9H6lqWjSD3I+eGkpYhN9Pr244cYnLpZOUQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rspack/binding-wasm32-wasi@2.1.7': + resolution: {integrity: sha512-cDVgvzRdTgxaeM+a5Lx0+7/VAvunvwO0wNtQ3ATQGOtFCW5b7cUzhNPcytH5ZSJTnFWuxinlGwtar5yfcnkdZQ==} + cpu: [wasm32] + + '@rspack/binding-win32-arm64-msvc@2.1.7': + resolution: {integrity: sha512-JDd85+iYwUvaG9Zrt5X7oIxRZRiTW+76FwkRakoXNy/5VAWQW32Jq4ESjSVz6l6mh0KnZxPq3TLMugacCPnLjw==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@2.1.7': + resolution: {integrity: sha512-y9PKEs6v9BLHV0i/4eaIRtxpATvSgcf/VYQkMT8mp+qWlPjUwDQNwU2ueWVGpff6INO+YAa7zobzziNFRgO7Lg==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@2.1.7': + resolution: {integrity: sha512-BjkOzcPY/K8YlRRvyywz0mDWk89MMxqAMhDmgBXCWorh1IjgKTsWDJ2lCGIM8M9CZXUG3khom8AfrOGwRT2I+g==} + cpu: [x64] + os: [win32] + + '@rspack/binding@2.1.7': + resolution: {integrity: sha512-wYqi8TY30hsIzLry503o/Uqu7y9Ec7pEwN5TVmB7Pb3xHrR2eHsQPzdpF/GkCLUjQSgD2Es3CDVV1mr6zO/78g==} + + '@rspack/core@2.1.7': + resolution: {integrity: sha512-d5Ju3zXzGgbqQWvlMlLUtek2eFPIzsFe2QOF4nwTAknxo/4OZ64t+kPT9nM6fr3aZX93VK0R3v02/kZYIRrV9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 + '@swc/helpers': ^0.5.23 + peerDependenciesMeta: + '@module-federation/runtime-tools': + optional: true + '@swc/helpers': + optional: true + + '@rstest/core@0.11.5': + resolution: {integrity: sha512-ySXZaFqU1mJonm79ko7OwagG2AurULg1dLDErJguhv/sepEyjt39sq2Bpt42mOxHehiFcl0Pr0PrlaPltmYbbA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + happy-dom: ^20.8.3 + jsdom: '*' + peerDependenciesMeta: + happy-dom: + optional: true + jsdom: + optional: true + + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + +snapshots: + + '@emnapi/core@1.11.2': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@rsbuild/core@2.1.9': + dependencies: + '@rspack/core': 2.1.7(@swc/helpers@0.5.23) + '@swc/helpers': 0.5.23 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + + '@rspack/binding-darwin-arm64@2.1.7': + optional: true + + '@rspack/binding-darwin-x64@2.1.7': + optional: true + + '@rspack/binding-linux-arm64-gnu@2.1.7': + optional: true + + '@rspack/binding-linux-arm64-musl@2.1.7': + optional: true + + '@rspack/binding-linux-riscv64-gnu@2.1.7': + optional: true + + '@rspack/binding-linux-riscv64-musl@2.1.7': + optional: true + + '@rspack/binding-linux-x64-gnu@2.1.7': + optional: true + + '@rspack/binding-linux-x64-musl@2.1.7': + optional: true + + '@rspack/binding-wasm32-wasi@2.1.7': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + optional: true + + '@rspack/binding-win32-arm64-msvc@2.1.7': + optional: true + + '@rspack/binding-win32-ia32-msvc@2.1.7': + optional: true + + '@rspack/binding-win32-x64-msvc@2.1.7': + optional: true + + '@rspack/binding@2.1.7': + optionalDependencies: + '@rspack/binding-darwin-arm64': 2.1.7 + '@rspack/binding-darwin-x64': 2.1.7 + '@rspack/binding-linux-arm64-gnu': 2.1.7 + '@rspack/binding-linux-arm64-musl': 2.1.7 + '@rspack/binding-linux-riscv64-gnu': 2.1.7 + '@rspack/binding-linux-riscv64-musl': 2.1.7 + '@rspack/binding-linux-x64-gnu': 2.1.7 + '@rspack/binding-linux-x64-musl': 2.1.7 + '@rspack/binding-wasm32-wasi': 2.1.7 + '@rspack/binding-win32-arm64-msvc': 2.1.7 + '@rspack/binding-win32-ia32-msvc': 2.1.7 + '@rspack/binding-win32-x64-msvc': 2.1.7 + + '@rspack/core@2.1.7(@swc/helpers@0.5.23)': + dependencies: + '@rspack/binding': 2.1.7 + optionalDependencies: + '@swc/helpers': 0.5.23 + + '@rstest/core@0.11.5': + dependencies: + '@rsbuild/core': 2.1.9 + '@types/chai': 5.2.3 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - core-js + + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + assertion-error@2.0.1: {} + + tslib@2.8.1: {} diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml b/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml new file mode 100644 index 0000000..cbf9ea3 --- /dev/null +++ b/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml @@ -0,0 +1,273 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@rstest/core': + specifier: ^0.11.5 + version: 0.11.5 + +packages: + + '@emnapi/core@1.11.2': + resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} + + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@rsbuild/core@2.1.9': + resolution: {integrity: sha512-yqf1hFZ3wbMYI431LqsxLH3r0VZkfyarVKTf7kMeIiGe0YLwsrgsfp+sKpIyVkQkq60J0qyp6l/CoqqsQZqEwQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + core-js: '>= 3.0.0' + peerDependenciesMeta: + core-js: + optional: true + + '@rspack/binding-darwin-arm64@2.1.7': + resolution: {integrity: sha512-DwxzrXRctueP/3Pyom9JHcIsRShuEAlHb+mrE5OPT+4cdHI1UnJpbzEvEDLTo4IKJhDb3vjXdHLtjqtL0SYbeA==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@2.1.7': + resolution: {integrity: sha512-kPbrYvR/XUHfAMgRVq3QnC71DW/qjwsPj+3hEUuEnRmlploPNy9u8Szf1IHKSVUSrVZBTgDyMoZQdxYLfhResw==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@2.1.7': + resolution: {integrity: sha512-VFB+YXM3kZ6IIuLV64H3vgnwqvQIIaqfR/aeGwuxYvwcZsrgblSBmXMeDULdgDjqP8Yr0VaFMBBiD9OtG5KdFw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-arm64-musl@2.1.7': + resolution: {integrity: sha512-Mzbxyg0aJ+ITj526Iuz0enEDYY6WxhFIwEKXqwjQh+Vpd5v/+aPzPo83sSQVX/3puBV1sbmviTURbh6N9e1fvA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rspack/binding-linux-riscv64-gnu@2.1.7': + resolution: {integrity: sha512-mpazwgT/Pse1720mvEJsoXfPkJ+enj0xUqpbe/wL6aedwjGT+9jJNB8HTJXE4XBX0UO7umGqcJMeKA6YsD2CDA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-riscv64-musl@2.1.7': + resolution: {integrity: sha512-oU/l3soPRsDEWn7KZic+npyTMM2N1kRdHjoJ+L5IUBXs8bjdTXPLoyTbTdIOza5ZSoT4+UeEiEryj4BB0tQE5w==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rspack/binding-linux-x64-gnu@2.1.7': + resolution: {integrity: sha512-7Gtpl3h3jtnOpk1mYQE8mRndXAO2ibI8mnAbs7klevdKey+ZHneWMoMi2yOMQhhI/ifWEFxDzyGJ8bdxo0XTsA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-x64-musl@2.1.7': + resolution: {integrity: sha512-w+whI2Uy+DYkGN+MVkzMFWweL7B/s1gMqX+nvTE1vhOy3hGV0VyA9H6lqWjSD3I+eGkpYhN9Pr244cYnLpZOUQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rspack/binding-wasm32-wasi@2.1.7': + resolution: {integrity: sha512-cDVgvzRdTgxaeM+a5Lx0+7/VAvunvwO0wNtQ3ATQGOtFCW5b7cUzhNPcytH5ZSJTnFWuxinlGwtar5yfcnkdZQ==} + cpu: [wasm32] + + '@rspack/binding-win32-arm64-msvc@2.1.7': + resolution: {integrity: sha512-JDd85+iYwUvaG9Zrt5X7oIxRZRiTW+76FwkRakoXNy/5VAWQW32Jq4ESjSVz6l6mh0KnZxPq3TLMugacCPnLjw==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@2.1.7': + resolution: {integrity: sha512-y9PKEs6v9BLHV0i/4eaIRtxpATvSgcf/VYQkMT8mp+qWlPjUwDQNwU2ueWVGpff6INO+YAa7zobzziNFRgO7Lg==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@2.1.7': + resolution: {integrity: sha512-BjkOzcPY/K8YlRRvyywz0mDWk89MMxqAMhDmgBXCWorh1IjgKTsWDJ2lCGIM8M9CZXUG3khom8AfrOGwRT2I+g==} + cpu: [x64] + os: [win32] + + '@rspack/binding@2.1.7': + resolution: {integrity: sha512-wYqi8TY30hsIzLry503o/Uqu7y9Ec7pEwN5TVmB7Pb3xHrR2eHsQPzdpF/GkCLUjQSgD2Es3CDVV1mr6zO/78g==} + + '@rspack/core@2.1.7': + resolution: {integrity: sha512-d5Ju3zXzGgbqQWvlMlLUtek2eFPIzsFe2QOF4nwTAknxo/4OZ64t+kPT9nM6fr3aZX93VK0R3v02/kZYIRrV9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 + '@swc/helpers': ^0.5.23 + peerDependenciesMeta: + '@module-federation/runtime-tools': + optional: true + '@swc/helpers': + optional: true + + '@rstest/core@0.11.5': + resolution: {integrity: sha512-ySXZaFqU1mJonm79ko7OwagG2AurULg1dLDErJguhv/sepEyjt39sq2Bpt42mOxHehiFcl0Pr0PrlaPltmYbbA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + happy-dom: ^20.8.3 + jsdom: '*' + peerDependenciesMeta: + happy-dom: + optional: true + jsdom: + optional: true + + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + +snapshots: + + '@emnapi/core@1.11.2': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@rsbuild/core@2.1.9': + dependencies: + '@rspack/core': 2.1.7(@swc/helpers@0.5.23) + '@swc/helpers': 0.5.23 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + + '@rspack/binding-darwin-arm64@2.1.7': + optional: true + + '@rspack/binding-darwin-x64@2.1.7': + optional: true + + '@rspack/binding-linux-arm64-gnu@2.1.7': + optional: true + + '@rspack/binding-linux-arm64-musl@2.1.7': + optional: true + + '@rspack/binding-linux-riscv64-gnu@2.1.7': + optional: true + + '@rspack/binding-linux-riscv64-musl@2.1.7': + optional: true + + '@rspack/binding-linux-x64-gnu@2.1.7': + optional: true + + '@rspack/binding-linux-x64-musl@2.1.7': + optional: true + + '@rspack/binding-wasm32-wasi@2.1.7': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + optional: true + + '@rspack/binding-win32-arm64-msvc@2.1.7': + optional: true + + '@rspack/binding-win32-ia32-msvc@2.1.7': + optional: true + + '@rspack/binding-win32-x64-msvc@2.1.7': + optional: true + + '@rspack/binding@2.1.7': + optionalDependencies: + '@rspack/binding-darwin-arm64': 2.1.7 + '@rspack/binding-darwin-x64': 2.1.7 + '@rspack/binding-linux-arm64-gnu': 2.1.7 + '@rspack/binding-linux-arm64-musl': 2.1.7 + '@rspack/binding-linux-riscv64-gnu': 2.1.7 + '@rspack/binding-linux-riscv64-musl': 2.1.7 + '@rspack/binding-linux-x64-gnu': 2.1.7 + '@rspack/binding-linux-x64-musl': 2.1.7 + '@rspack/binding-wasm32-wasi': 2.1.7 + '@rspack/binding-win32-arm64-msvc': 2.1.7 + '@rspack/binding-win32-ia32-msvc': 2.1.7 + '@rspack/binding-win32-x64-msvc': 2.1.7 + + '@rspack/core@2.1.7(@swc/helpers@0.5.23)': + dependencies: + '@rspack/binding': 2.1.7 + optionalDependencies: + '@swc/helpers': 0.5.23 + + '@rstest/core@0.11.5': + dependencies: + '@rsbuild/core': 2.1.9 + '@types/chai': 5.2.3 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - core-js + + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + assertion-error@2.0.1: {} + + tslib@2.8.1: {} diff --git a/packages/vscode/e2e/run.mjs b/packages/vscode/e2e/run.mjs index 7b4d36c..7b82672 100644 --- a/packages/vscode/e2e/run.mjs +++ b/packages/vscode/e2e/run.mjs @@ -6,10 +6,10 @@ // `test:e2e*` scripts are thin forwards to this file and carry none of that // knowledge. The shared `tsc -p tsconfig.e2e.json` pass runs first (the // cheap, likely-to-fail step), then the selected slices' fixtures install in -// one `setupFixtures.mjs` invocation (idempotent — pnpm no-ops on an -// up-to-date fixture, and unknown names throw there), then the entries run -// sequentially — each `compile`d entry launches its own VS Code via -// `@vscode/test-electron`. +// one `setupFixtures.mjs` invocation from committed lockfiles (idempotent — +// pnpm no-ops on an up-to-date fixture, and unknown names throw there), then +// the entries run sequentially — each `compile`d entry launches its own VS +// Code via `@vscode/test-electron`. import { spawnSync } from 'node:child_process'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; diff --git a/packages/vscode/e2e/setupFixtures.mjs b/packages/vscode/e2e/setupFixtures.mjs index c591905..49e5bef 100644 --- a/packages/vscode/e2e/setupFixtures.mjs +++ b/packages/vscode/e2e/setupFixtures.mjs @@ -4,7 +4,9 @@ // `@rslint/core` / `@rstest/core` / `rstack` — the extension resolves all three // from the project, so a fixture that linked this repo's own node_modules would // test nothing. Each fixture is its own independent install; `--ignore-workspace` -// makes sure pnpm never folds them into a parent workspace. +// makes sure pnpm never folds them into a parent workspace. Their lockfiles are +// committed for deterministic installs and updated with the manifests by +// Renovate. // // Idempotent: pnpm is a no-op when the fixture is already up to date, so // `test:e2e` can always run it. @@ -55,9 +57,9 @@ const install = (name) => { // A fixture is a standalone project, never a workspace member of this // repo: the whole point is a plain, published-versions install. '--ignore-workspace', - // Fixtures pin ranges, not a lockfile — a frozen lockfile would fail CI - // the moment a patch release lands. - '--no-frozen-lockfile', + // Fixture lockfiles are committed for deterministic installs; Renovate + // updates each manifest and lockfile together. + '--frozen-lockfile', '--prefer-offline', // Changing a fixture's install config makes pnpm want to purge // `node_modules`, which it refuses to do without a TTY. The directory is From 2c26f0ac0819a14bb7266db2c937f8bc1db1f1aa Mon Sep 17 00:00:00 2001 From: fi3ework Date: Thu, 3 Sep 2026 17:54:13 +0800 Subject: [PATCH 3/9] chore: move the repo and E2E fixtures to the latest Rstack toolchain --- CONTRIBUTING.md | 2 +- README.md | 10 +- docs/adr/0003-lint-through-editor-worker.md | 6 +- package.json | 4 +- packages/vscode/AGENTS.md | 4 +- packages/vscode/README.md | 10 +- .../vscode/e2e/fixtures/rslint/package.json | 2 +- .../vscode/e2e/fixtures/rslint/pnpm-lock.yaml | 76 +- .../vscode/e2e/fixtures/rstest/package.json | 4 +- .../vscode/e2e/fixtures/rstest/pnpm-lock.yaml | 264 +++-- .../vscode/e2e/lint/fixtures/package.json | 2 +- .../vscode/e2e/lint/fixtures/pnpm-lock.yaml | 74 +- .../suite-eslint-plugins/plugin-pool.test.ts | 2 +- .../suite-jsconfig/config-transaction.test.ts | 2 +- .../lint/suite-jsconfig/core-resolver.test.ts | 2 +- .../rstest/fixtures/workspace-1/package.json | 2 +- .../fixtures/workspace-1/pnpm-lock.yaml | 186 ++-- .../rstest/fixtures/workspace-2/package.json | 2 +- .../fixtures/workspace-2/pnpm-lock.yaml | 186 ++-- .../vscode/e2e/smoke/rslintPluginHost.mjs | 2 +- packages/vscode/package.json | 4 +- packages/vscode/src/shared/versionCheck.ts | 30 +- .../vscode/src/stacks/lint/CoreResolver.ts | 2 +- packages/vscode/src/stacks/test/master.ts | 2 +- .../tests/stacks/lint/coreResolver.test.ts | 16 +- .../vscode/tests/stacks/lint/status.test.ts | 4 +- .../vscode/tests/stacks/lint/worker.test.ts | 12 +- .../vscode/tests/stacks/test/bridge.test.ts | 8 +- packages/vscode/tests/versionCheck.test.ts | 16 +- pnpm-lock.yaml | 908 ++++++------------ 30 files changed, 792 insertions(+), 1052 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a21e067..550c4f4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ Thanks for your interest in contributing to Rstack Editor! ## Setup -- Node.js: the version is pinned in [`.nvmrc`](./.nvmrc) (`nvm use` / `fnm use`). Node >= 22.12 is required. +- Node.js: the version is pinned in [`.nvmrc`](./.nvmrc) (`nvm use` / `fnm use`). Node `^22.18.0 || >=24.3.0` is required. - pnpm: pinned via the `packageManager` field — run `corepack enable pnpm` once and the right version is used automatically. ```bash diff --git a/README.md b/README.md index d3ae583..0abbd04 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,11 @@ Or search for `rstack.rstack` in the editor's Extensions view. The extension resolves the tools from your project's `node_modules` and checks them against a support matrix at runtime: -| Package | Required | -| -------------- | --------- | -| `@rslint/core` | `>=0.8.0` | -| `@rstest/core` | `>=0.6.0` | -| `rstack` | `>=0.6.1` | +| Package | Required | +| -------------- | ----------- | +| `@rslint/core` | `>=0.9.0` | +| `@rstest/core` | `>=0.11.11` | +| `rstack` | `>=0.7.2` | ## Documentation diff --git a/docs/adr/0003-lint-through-editor-worker.md b/docs/adr/0003-lint-through-editor-worker.md index ebede74..3fcdbc1 100644 --- a/docs/adr/0003-lint-through-editor-worker.md +++ b/docs/adr/0003-lint-through-editor-worker.md @@ -6,7 +6,7 @@ status: accepted Rslint's language server is two halves: the Go process (`rslint --lsp`) lints natively, but it hands config evaluation (`rslint/loadConfigs`, `activateConfigs`, `commit`/`abort`) and JS plugin rules (`rslint/pluginLint`) back to its client over reverse requests. Upstream's VS Code extension is that client, and so — as a near-verbatim copy — was ours: the project's `rslint.config.*` was evaluated inside the extension host, on the VS Code Node runtime, with a cwd that means nothing (ADR 0001's lint entry). Linting from a Rstack config (`define.lint()`) forces the issue: `rs lint`'s answer is a shim rstack ships (`/dist/rslintConfig.js`, treated as a stable path by agreement with rstack-cli) that calls `loadRstackConfig()` and finds `rstack.config.*` from **the evaluating process's cwd**. Evaluated in the extension host, it finds nothing. The first attempt (PR #10) worked around that by writing a **generated shim** into the project with the absolute config path baked in; it was rejected — the editor must not manufacture bridging artifacts. -**Decision.** The extension ships a **lint worker**: a vscode-free Node script, run once per lint server on a **User Node runtime** (ADR 0001's floor and candidate order, `rstack.nodeExecutable` as the shared escape hatch) with its cwd at the workspace folder root. The worker spawns the Go `rslint --lsp` of the resolved `@rslint/core`, proxies LSP over stdio to the extension, and answers Go's reverse requests itself with that core's `ConfigModuleHost` and `createPluginLintHost`. Its entry is `--lsp [--config ]`: with `--config` it pins the server to that module through the protocol-2 `configPath` of `rslint/configRefresh` (`@rslint/core >= 0.8.0`, rslint #1630); without it the server does its ordinary automatic discovery. A **bridged folder** runs the worker with `--config /dist/rslintConfig.js`; a **native folder** runs it without. From the extension's side, lint is now the shape fmt already has: a thin language client per server, and no project code loaded in the extension host — which retires the lint entry on ADR 0001's debt list. +**Decision.** The extension ships a **lint worker**: a vscode-free Node script, run once per lint server on a **User Node runtime** (ADR 0001's floor and candidate order, `rstack.nodeExecutable` as the shared escape hatch) with its cwd at the workspace folder root. The worker spawns the Go `rslint --lsp` of the resolved `@rslint/core`, proxies LSP over stdio to the extension, and answers Go's reverse requests itself with that core's `ConfigModuleHost` and `createPluginLintHost`. Its entry is `--lsp [--config ]`: with `--config` it pins the server to that module through the protocol-3 `configPath` of `rslint/configRefresh` (`@rslint/core >= 0.9.0`; the explicit path was introduced in rslint #1630); without it the server does its ordinary automatic discovery. A **bridged folder** runs the worker with `--config /dist/rslintConfig.js`; a **native folder** runs it without. From the extension's side, lint is now the shape fmt already has: a thin language client per server, and no project code loaded in the extension host — which retires the lint entry on ADR 0001's debt list. ## Considered options @@ -23,9 +23,9 @@ Rslint's language server is two halves: the Go process (`rslint --lsp`) lints na ## Consequences - **Lint gains a Node floor it never had.** A native folder that lints on VS Code's Node today reports `version mismatch` and starts nothing when no User Node runtime clears `^22.18.0 || >=23.6.0`. Accepted deliberately: one worker, one path, one floor (ADR 0001 already rejected per-project floors), and this is the debt that ADR named. -- **Resolution follows one chain, mirroring `rs lint`.** For a bridged folder: `rstack` from the folder root → `@rslint/core` from rstack's directory (the transitive copy `rs lint` itself imports; a pnpm project declaring only `rstack` cannot resolve `@rslint/core` from its root) → the Go binary through that core's `resolveRslintBinary()`. For a native folder the chain starts at `@rslint/core` from the **document's own directory** (the #1617 sync; before it, from the folder root). The extension walks the chain as far as the **core directory** — `fs.stat`, `package.json` reads and semver comparisons, no project code loaded, so inside the load bound and legitimately on the VS Code Node runtime, exactly as fmt resolves the `rs` bin — and gates there; the worker receives `--core [--config ]` and takes the last hop itself, calling that core's `resolveRslintBinary()` on the User Node runtime, since it is a JS export of the project's package. Floors follow the "latest release only" rule: `@rslint/core >= 0.8.0` (protocol 1 support removed) and `rstack >= 0.6.1` toolchain-wide — `rstack` 0.5.2 still depends on `@rslint/core ~0.7.3`, and one answer to "which rstack does the extension support" is worth more than keeping 0.5.x users' tests running. +- **Resolution follows one chain, mirroring `rs lint`.** For a bridged folder: `rstack` from the folder root → `@rslint/core` from rstack's directory (the transitive copy `rs lint` itself imports; a pnpm project declaring only `rstack` cannot resolve `@rslint/core` from its root) → the Go binary through that core's `resolveRslintBinary()`. For a native folder the chain starts at `@rslint/core` from the **document's own directory** (the #1617 sync; before it, from the folder root). The extension walks the chain as far as the **core directory** — `fs.stat`, `package.json` reads and semver comparisons, no project code loaded, so inside the load bound and legitimately on the VS Code Node runtime, exactly as fmt resolves the `rs` bin — and gates there; the worker receives `--core [--config ]` and takes the last hop itself, calling that core's `resolveRslintBinary()` on the User Node runtime, since it is a JS export of the project's package. Floors follow the "latest release only" rule: `@rslint/core >= 0.9.0` and `rstack >= 0.7.2` toolchain-wide; one answer to "which rstack does the extension support" is worth more than keeping older releases running. - **One override, and it names a core, not a binary.** `rstack.rslint.binPath` / `customBinPath` are removed in favour of `rstack.rslint.corePath` — the setting upstream introduced in rslint #1617: a path to an `@rslint/core` package directory, resource-scoped, from which the binary, config host, protocol version and plugin host all derive. In a bridged folder it overrides the rstack → `@rslint/core` hop only; the shim stays rstack's. A binary chosen independently of its core cannot be supported: the two must speak the same protocol. The rest of #1617 — per-document core resolution, one runtime per physical installation — has since been synced (issue #13): a **Lint runtime** is now one Rslint core inside one workspace folder, resolved per open document and refcounted by it, so a folder runs as many workers as its files have distinct cores (a bridged folder always exactly one, rstack's) and none at all while nothing is open. The worker never noticed: it still takes explicit `--core` / `--config` paths, which is precisely why that change did not touch it. -- **Ownership is per folder, native wins.** One server holds one config choice for its lifetime (protocol 2 locks `configPath` per process), and explicit and automatic modes cannot mix, so a folder is bridged only when no `rslint.config.*` exists anywhere in it and a `rstack.config.*` sits at its root; a subdirectory `rstack.config.*` lights nothing (`rs lint` in a terminal reads its cwd only — the same reason ADR 0002 rejected deepest-config-wins for fmt). Detection lights a bridged folder on the file's presence and never reads it: a `rstack.config.*` without `define.lint()` runs an empty config, as `rs lint` does. +- **Ownership is per folder, native wins.** One server holds one config choice for its lifetime (protocol 3 locks `configPath` per process), and explicit and automatic modes cannot mix, so a folder is bridged only when no `rslint.config.*` exists anywhere in it and a `rstack.config.*` sits at its root; a subdirectory `rstack.config.*` lights nothing (`rs lint` in a terminal reads its cwd only — the same reason ADR 0002 rejected deepest-config-wins for fmt). Detection lights a bridged folder on the file's presence and never reads it: a `rstack.config.*` without `define.lint()` runs an empty config, as `rs lint` does. - **Config changes refresh, mode changes restart.** Rslint has a live refresh (`rslint/configRefresh` with the same `configPath`), unlike `rs fmt --lsp`, so the extension keeps its watcher-driven refresh — extended, for a bridged folder, with the root `rstack.config.*` — and the worker re-stamps `protocolVersion` and its `configPath` on every refresh (the extension does not know either). Only a native ↔ bridged flip, or a dependency change the refresh cannot absorb, restarts the server. This is the "diverge only when the tool forces it" rule: rslint can refresh, fmt cannot. - **Failure states mirror fmt.** Bridged folder: no `rstack` → `disabled`; `rstack` or the chained `@rslint/core` below floor, or no Node clearing the floor → `version mismatch`; worker or Go dying → `crashed`. Native folder missing `@rslint/core` stays `crashed` — the user asked for Rslint by name. - The lint copy diverges further from upstream: the reverse-request adapter and plugin pool move into the worker unchanged in logic, and the extension-side `Rslint.ts` keeps only the language-client half. Recorded as an adaptation in `packages/vscode/AGENTS.md`. diff --git a/package.json b/package.json index 6403bc7..2b39fa1 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,11 @@ }, "devDependencies": { "bumpp": "^11.1.0", - "rstack": "^0.6.4" + "rstack": "^0.7.2" }, "packageManager": "pnpm@11.20.0", "engines": { - "node": ">=22.12.0", + "node": "^22.18.0 || >=24.3.0", "pnpm": ">=11.0.0" } } diff --git a/packages/vscode/AGENTS.md b/packages/vscode/AGENTS.md index e13a234..96598cc 100644 --- a/packages/vscode/AGENTS.md +++ b/packages/vscode/AGENTS.md @@ -17,7 +17,7 @@ One extension replacing the standalone `rstack.rslint` and `rstack.rstest` exten 4. **Status aggregation** — stacks own no UI chrome; they report to the shell's single status bar item, which always exists. In CI the test stack's `MasterLogger` also mirrors every entry to stderr (`RSTACK_E2E_MIRROR_LOGS=1`, set by `e2e/rstest/runTest.ts`) — the output channel is unreadable there; rationale in `stacks/test/logger.ts`. 5. **Worker-cwd decoupling** (test) — a project's cwd is explicit, not derived from the config file path; for native configs behavior stays byte-identical to upstream. 6. **Node runtime selection** (lint, test, fmt) — the Node a project-loading child process runs on is a **User Node runtime** chosen by the extension against one uniform floor, never assumed from PATH; the recovery path is the user's own shell, and the dividing line is the **load bound** (terms in CONTEXT.md; the full rule and rationale in `docs/adr/0001-node-runtime-selection.md`). All three callers — the lint worker, the rstest worker and the `rs fmt --lsp` server — take the decision from the one shared module (`shared/nodeResolution.ts`) and share one escape hatch, the resource-scoped `rstack.nodeExecutable` (`shared/nodeExecutableSetting.ts`); each appends its own consequence to the shared preflight message. -7. **Lint worker and Rstack bridge** — the extension host is only Rslint's language client. One vscode-free, editor-shipped lint worker per **Lint runtime** (one Rslint core inside one workspace folder — CONTEXT.md) runs on the User Node runtime, owns the Go LSP plus all five reverse requests, and derives the binary/config/plugin pieces from one explicit `@rslint/core` directory. Upstream's `CoreResolver` loads that core in the extension host; ours only walks to the directory (`fs.stat` + `package.json` + semver) and hands the path to the worker, and its `CoreInstallation` therefore carries paths, not module factories; upstream's installation cache goes with the module loading it memoized (`clear()` is a no-op kept for the `RuntimeManager` contract). A bridged folder passes only rstack's published `dist/rslintConfig.js` shim; neither the extension nor the worker re-implements Rstack config semantics. Because protocol 2 locks `configPath` per process, the shim is part of the runtime key (`folder + core identity + shim`), which upstream — having no bridge — keys on the core alone. Why: `docs/adr/0003-lint-through-editor-worker.md`. +7. **Lint worker and Rstack bridge** — the extension host is only Rslint's language client. One vscode-free, editor-shipped lint worker per **Lint runtime** (one Rslint core inside one workspace folder — CONTEXT.md) runs on the User Node runtime, owns the Go LSP plus all five reverse requests, and derives the binary/config/plugin pieces from one explicit `@rslint/core` directory. Upstream's `CoreResolver` loads that core in the extension host; ours only walks to the directory (`fs.stat` + `package.json` + semver) and hands the path to the worker, and its `CoreInstallation` therefore carries paths, not module factories; upstream's installation cache goes with the module loading it memoized (`clear()` is a no-op kept for the `RuntimeManager` contract). A bridged folder passes only rstack's published `dist/rslintConfig.js` shim; neither the extension nor the worker re-implements Rstack config semantics. Because protocol 3 locks `configPath` per process, the shim is part of the runtime key (`folder + core identity + shim`), which upstream — having no bridge — keys on the core alone. Why: `docs/adr/0003-lint-through-editor-worker.md`. 8. **Self-documenting Rslint diagnostics** — client-side providers parse Inline directives into per-rule hover, DocumentLink and underline-decoration affordances (the hover renders `Rslint(rule-id)`, the shape VS Code gives the published diagnostics), and the router enriches today's `[rule-id] message` diagnostics with a derived Rule docs link. No rule metadata or network lookup is bundled (ADR 0004). The hover provider yields whenever the owning language client's resolved capabilities advertise `hoverProvider`; an optional `Rslint.onClosed` hook identity-safely prunes the controller's capability mirror; the diagnostic synthesis is removed once upstream publishes `code` / `codeDescription` natively. 9. **Color env parity with the CLI** (test) — upstream hard-codes `FORCE_COLOR: '1'` into the worker's spawn env; ours mirrors the CLI's `getForceColorEnv` (rstest `packages/core/src/utils/logger.ts`) instead (`stacks/test/shared/colorEnv.ts`): the master injects `FORCE_COLOR=1` into the composed spawn env only when neither `FORCE_COLOR` nor `NO_COLOR` is already set (marking the injection with `RSTACK_FORCE_COLOR_INJECTED`), and the worker retracts the marked injection right after config load if the config set `NO_COLOR` — the CLI's own decision point. Otherwise a project whose config sets `process.env.NO_COLOR` (rstack-cli does) hits Node's "'NO_COLOR' env is ignored" warning in every pool process. A user-set `FORCE_COLOR` beside a config-set `NO_COLOR` still warns, exactly as the bare CLI does. @@ -42,7 +42,7 @@ One extension replacing the standalone `rstack.rslint` and `rstack.rstest` exten - The lint × `rstack.config.*` bridge stays thin on purpose: only a root Rstack config can claim a bridged folder, any native config anywhere in the folder wins ownership, and the worker evaluates rstack's published shim from the folder root. Never generate a shim, load the Rstack config in the extension host, or interpret `define.lint()` ourselves. - **Yarn Plug'n'Play is unsupported by decision, extension-wide.** Every stack resolves through physical `node_modules` (`shared/packageResolve.ts`, `resolution.ts`'s rstack → `@rslint/core` chain, the fmt bin probe, the rstest package lookup) and the lint worker's own `createRequire` from the core directory does too. Lint once carried a `.pnp.cjs` branch for the find-`@rslint/core` hop only; nothing after that hop (config evaluation, plugin resolution, the other stacks) had PnP hooks, so it never produced a working folder, and upstream removed its own PnP path in the same refactor that introduced `corePath`. Real support would be a PnP editor-SDK-shaped project across all three stacks, not a resolver branch — do not reintroduce one. - **A Lint runtime lives as long as a document needs it, and a folder with none is `running: idle`.** Since the #1617 sync, `RuntimeManager` refcounts each runtime by open document: the first document to resolve a core starts one, the last to release it closes it, so a detected folder with nothing open holds zero workers and zero Go processes. That folder still reports `running` — with the detail `idle` — because it is live and will start a runtime on the next `didOpen`; do **not** add a `StackState` kind for it (the shell's status bar and `when` clauses read the kinds, and idle is not a kind of health). A folder's state is the **worst of** its runtimes plus any document whose core resolution currently fails (last-good: that document keeps the runtime it already had), so one failing core is never masked by a healthy sibling — the same invariant fmt pins across folders, applied inside one and across them alike (lint's rank table matches fmt's: `disabled` there means "a package is not installed" — no `rstack`, or no `@rslint/core` — not the kill switch). Triggers: the shell's detection pass (which already covers lockfiles) plus one lint-owned watcher on `node_modules/@rslint/core/package.json` — upstream's glob minus the lockfiles detection owns. Failures report through the status only: upstream's `window.showWarningMessage` is dropped, since stacks own no UI chrome. Consequently `whenStackActive('rslint')` means "the controller registered its folders", not "a server is up" — E2E suites open a document and await diagnostics. -- The lint worker is deliberately vscode-free so it can move upstream whole. It takes explicit `--core` / `--config` native paths, writes logs only to stderr because stdout is LSP, and owns the Go child plus config/plugin lifecycles. Config edits use `rslint/configRefresh` with the same pinned path; a native ↔ bridged ownership change replaces the whole folder runtime because protocol 2 locks that choice for the process lifetime. +- The lint worker is deliberately vscode-free so it can move upstream whole. It takes explicit `--core` / `--config` native paths, writes logs only to stderr because stdout is LSP, and owns the Go child plus config/plugin lifecycles. Config edits use `rslint/configRefresh` with the same pinned path; a native ↔ bridged ownership change replaces the whole folder runtime because protocol 3 locks that choice for the process lifetime. - The test × `rstack.config.*` bridge stays thin on purpose: it points the upstream machinery at rstack's shipped shim and lets the shim interpret the config inside the worker, same as the CLI. Bridged projects resolve `@rstest/core` from the resolved rstack package directory, mirroring lint, so rstack's dependency remains visible under isolated installs. Never re-implement rstack config semantics in the extension. - The fmt stack is an LSP client: one `rs fmt --lsp` server per detected workspace folder, spawned at the **folder root** even when a deeper `rstack.config.*` exists. Deepest-config-wins was removed deliberately — `rs fmt` loads one config from its cwd with no upward walk, so anchoring deeper made the editor disagree with `rs fmt` in a terminal; a subproject that needs its own fmt config becomes its own workspace folder. The stack registers **no** `DocumentFormattingEditProvider`: the client registers the provider from the server's `documentFormattingProvider` capability, and adding one by hand would double-register. A config create/change/delete **restarts** the owning folder's server (the server caches its config for its process lifetime and has no config-change message), which is also why the stack watches `RSTACK_CONFIG_GLOB` itself instead of relying on detection — a detection signature records which config files exist, not their contents. A detection pass keeps healthy servers and restarts failed ones in place (`isFailedFmtState`) — lockfile events notify even when the folder set is unchanged, precisely so a completed install or upgrade is retried without a manual restart. There is no stdin fallback below `SUPPORT_MATRIX.rstack`; that is a version gate, not an omission. **Nested workspace folders are a documented limitation, by decision**: when a folder and its subdirectory are both workspace folders and both detect fmt, the parent's per-folder selector also matches the nested folder's files, and which server VS Code hands the request to is not defined — the supported shape is subprojects as _sibling_ workspace folders (or only the subproject opened), not parent-plus-child. Routing (lint's `WorkspaceDocumentRouter` shape) was considered and deferred. Why all of it: `docs/adr/0002-fmt-lsp-on-user-node-runtime.md`. - fmt importing `stacks/lint/LanguageServerProcessOwner.ts` is not a refactor across the copies: that file has no lint imports and no lint behaviour, it only owns the native children of one language client — including the ones vscode-languageclient's automatic restart creates, which is exactly the leak an ad-hoc copy would reintroduce. Lint's `ManagedLanguageClient` is _restated_ in `stacks/fmt/index.ts` instead, because importing it from `Rslint.ts` would couple fmt to the lint stack's runtime graph. Keep that line where it is: shared process ownership yes, shared stack runtime no. diff --git a/packages/vscode/README.md b/packages/vscode/README.md index 1b23fc1..a3f1fb0 100644 --- a/packages/vscode/README.md +++ b/packages/vscode/README.md @@ -36,11 +36,11 @@ A restart re-resolves every binary and package version and respawns every tool p The project-resolved packages are checked against a support matrix at runtime; a mismatch shows up as the `version mismatch` status bar state. -| Package | Required | -| -------------- | --------- | -| `@rslint/core` | `>=0.8.0` | -| `@rstest/core` | `>=0.6.0` | -| `rstack` | `>=0.6.1` | +| Package | Required | +| -------------- | ----------- | +| `@rslint/core` | `>=0.9.0` | +| `@rstest/core` | `>=0.11.11` | +| `rstack` | `>=0.7.2` | ## Auto-fix on save (Rslint) diff --git a/packages/vscode/e2e/fixtures/rslint/package.json b/packages/vscode/e2e/fixtures/rslint/package.json index 2cc1fcd..685cc60 100644 --- a/packages/vscode/e2e/fixtures/rslint/package.json +++ b/packages/vscode/e2e/fixtures/rslint/package.json @@ -5,6 +5,6 @@ "type": "module", "description": "E2E fixture: a project detected as Rslint only, installed from the npm registry.", "dependencies": { - "@rslint/core": "^0.8.0" + "@rslint/core": "^0.9.0" } } diff --git a/packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml b/packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml index 922fa82..76fb38d 100644 --- a/packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml +++ b/packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml @@ -9,13 +9,13 @@ importers: .: dependencies: '@rslint/core': - specifier: ^0.8.0 - version: 0.8.2 + specifier: ^0.9.0 + version: 0.9.0 packages: - '@rslint/core@0.8.2': - resolution: {integrity: sha512-O7c9hg5Soo1MOta0Aj+3Td2Bjd6ZZUV+lLPWJvVRNqaZEzl2FKmkS9xuT9o4jHXTXhTvlxGuyyaJUUlEpW57Cw==} + '@rslint/core@0.9.0': + resolution: {integrity: sha512-rY8F6kdQ/XkBiflaNzglJdMfxl0Lv/NFXppK0kAhx2P2CvogsXIA/z82Wxtk+Cg9uFHou67N9/iqmWXgdtSoDw==} hasBin: true peerDependencies: jiti: ^2.7.0 @@ -23,47 +23,47 @@ packages: jiti: optional: true - '@rslint/native-darwin-arm64@0.8.2': - resolution: {integrity: sha512-SdGy7Mh8a53VQiMbQQ+pvtaivwUCeBdYP0QeORZfUWqcqqaTdfTQnaCm/7BG9NRIjAwSZcwooJnklZwqky2gGA==} + '@rslint/native-darwin-arm64@0.9.0': + resolution: {integrity: sha512-xhdBrVALZTX0v4ZghKY7RGO87DpItk4DVvKm3MGih4w1o2WF2u+6n/mohvG7/ts7c8T88HIbLfK4luQ8kMDCsg==} cpu: [arm64] os: [darwin] - '@rslint/native-darwin-x64@0.8.2': - resolution: {integrity: sha512-Yp8+zNxhkO92QpNFTcJLYPU/Q02QC0GIR9BRn2DdMHtVattFctZKXujWprLFNafh7Di/5fitebNKeqck2+pxoQ==} + '@rslint/native-darwin-x64@0.9.0': + resolution: {integrity: sha512-xuluXYUKizRZD/70WILvn+OeNdBT6izU81vhiNHVYdEQmfsqaqE8fthKGmQvaRu/DNL3CgVRPR+PzOAcQzPpOw==} cpu: [x64] os: [darwin] - '@rslint/native-linux-arm64-gnu@0.8.2': - resolution: {integrity: sha512-LUp+w/bDgyyEpuDDp8fO18JsdyZndF5pRSeOnxPs1Ms6cUI3JRUJ/al7RMUQEzfMuNHPSrmEnFZW1nAjLOubdA==} + '@rslint/native-linux-arm64-gnu@0.9.0': + resolution: {integrity: sha512-J9uHBg/8Z9WanEKBXaPNZz0h+P8qtOLwjVqwEcOwYm1yLHRY70A7XqI6cRVIx72gXKGWtNBT2BRw9p8CWQUhgg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rslint/native-linux-arm64-musl@0.8.2': - resolution: {integrity: sha512-dDPAy1+EsXT6kKVy2qgzCJSBCZ+ry2LVLbo5eLX1kueTB6uGQATnKVKhS0SiSkdqC9clxiviBRs/XBivbc4uVQ==} + '@rslint/native-linux-arm64-musl@0.9.0': + resolution: {integrity: sha512-3ICIPH1oZOuMuZp+4hRhU+Af34U/2MNFB1yN+yi/jfJP+qBEExQbeBOS4J6HOecx9RJXcFvPF2ZI68l4g8/DPQ==} cpu: [arm64] os: [linux] libc: [musl] - '@rslint/native-linux-x64-gnu@0.8.2': - resolution: {integrity: sha512-n5TOiNTQGpfAjw7LScEdxYv41CaNpF2ff/6GVUuUBlA/GJr3pWApZUR3lP+RQmM/Ov2i+2Yfn2KrP+fIT1we5A==} + '@rslint/native-linux-x64-gnu@0.9.0': + resolution: {integrity: sha512-vlzcruA/t+0XvdK2S0bIS00H9Mpkrwo/hIFvpyUONgxi2WaO7XNDtgTWAsajB40WmvezYYLKs45LgkVXpxSCFA==} cpu: [x64] os: [linux] libc: [glibc] - '@rslint/native-linux-x64-musl@0.8.2': - resolution: {integrity: sha512-kP1uGWoHgtJuRcfMRqbu22tpMNkH2MIDQfQFu0O37PZQYh9uc0/yQzS6c5ILPKqr0PnBu4uljHa+I6a34kZ+Mw==} + '@rslint/native-linux-x64-musl@0.9.0': + resolution: {integrity: sha512-+gPExuOtSPaP7jAWeMRnTobvQOhaqo9857K/7T2qvc15ksnYqqygMhzcVzm9Wt7L4KBoW6PR1uvwgmPaK4B0IA==} cpu: [x64] os: [linux] libc: [musl] - '@rslint/native-win32-arm64-msvc@0.8.2': - resolution: {integrity: sha512-FYeEm0xa/vmgEHduoDrHj4k4oRBuX8xCS3JNgJALuqwUqPsh9h/pLmV+11M4X3aoiMWvqADfG4mZ0hbf79uzSQ==} + '@rslint/native-win32-arm64-msvc@0.9.0': + resolution: {integrity: sha512-YK5uTuk6zNXru2cOwivbZPH25C7u8RSQlKm5tOqwhaQ0ShCVDdh7z0SXvHvLdQ2VJen+30Vp1izAMZ7Zp/8KaQ==} cpu: [arm64] os: [win32] - '@rslint/native-win32-x64-msvc@0.8.2': - resolution: {integrity: sha512-AyJTA/pMW7o1fXZ8oS6xwrQ89BdQwAuwCgVUB3tRUHYFNqbmjjjQAEqXz9xKSKbZlaENSRuDDptu0gq5VWPGmQ==} + '@rslint/native-win32-x64-msvc@0.9.0': + resolution: {integrity: sha512-7elW5V8zm3McqA0LCjBBR7SDwQ5hRW+hrnJcCmrspSnBeUPFqnJfvUvsQPgbJz3pdrkBzzjZMvUgEYyBQ9dl8A==} cpu: [x64] os: [win32] @@ -73,41 +73,41 @@ packages: snapshots: - '@rslint/core@0.8.2': + '@rslint/core@0.9.0': dependencies: picomatch: 4.0.7 optionalDependencies: - '@rslint/native-darwin-arm64': 0.8.2 - '@rslint/native-darwin-x64': 0.8.2 - '@rslint/native-linux-arm64-gnu': 0.8.2 - '@rslint/native-linux-arm64-musl': 0.8.2 - '@rslint/native-linux-x64-gnu': 0.8.2 - '@rslint/native-linux-x64-musl': 0.8.2 - '@rslint/native-win32-arm64-msvc': 0.8.2 - '@rslint/native-win32-x64-msvc': 0.8.2 - - '@rslint/native-darwin-arm64@0.8.2': + '@rslint/native-darwin-arm64': 0.9.0 + '@rslint/native-darwin-x64': 0.9.0 + '@rslint/native-linux-arm64-gnu': 0.9.0 + '@rslint/native-linux-arm64-musl': 0.9.0 + '@rslint/native-linux-x64-gnu': 0.9.0 + '@rslint/native-linux-x64-musl': 0.9.0 + '@rslint/native-win32-arm64-msvc': 0.9.0 + '@rslint/native-win32-x64-msvc': 0.9.0 + + '@rslint/native-darwin-arm64@0.9.0': optional: true - '@rslint/native-darwin-x64@0.8.2': + '@rslint/native-darwin-x64@0.9.0': optional: true - '@rslint/native-linux-arm64-gnu@0.8.2': + '@rslint/native-linux-arm64-gnu@0.9.0': optional: true - '@rslint/native-linux-arm64-musl@0.8.2': + '@rslint/native-linux-arm64-musl@0.9.0': optional: true - '@rslint/native-linux-x64-gnu@0.8.2': + '@rslint/native-linux-x64-gnu@0.9.0': optional: true - '@rslint/native-linux-x64-musl@0.8.2': + '@rslint/native-linux-x64-musl@0.9.0': optional: true - '@rslint/native-win32-arm64-msvc@0.8.2': + '@rslint/native-win32-arm64-msvc@0.9.0': optional: true - '@rslint/native-win32-x64-msvc@0.8.2': + '@rslint/native-win32-x64-msvc@0.9.0': optional: true picomatch@4.0.7: {} diff --git a/packages/vscode/e2e/fixtures/rstest/package.json b/packages/vscode/e2e/fixtures/rstest/package.json index 87fab39..599c111 100644 --- a/packages/vscode/e2e/fixtures/rstest/package.json +++ b/packages/vscode/e2e/fixtures/rstest/package.json @@ -3,8 +3,8 @@ "version": "0.0.0", "private": true, "type": "module", - "description": "E2E fixture: a project detected as Rstest only, pinned to the launch floor `@rstest/core >= 0.6.0`.", + "description": "E2E fixture: a project detected as Rstest only, installed from the npm registry.", "dependencies": { - "@rstest/core": "^0.6.0" + "@rstest/core": "^0.11.11" } } diff --git a/packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml b/packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml index 10b3595..e3c7b01 100644 --- a/packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml +++ b/packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@rstest/core': - specifier: ^0.6.0 - version: 0.6.9 + specifier: ^0.11.11 + version: 0.11.11(core-js@3.46.0) packages: @@ -23,108 +23,121 @@ packages: '@emnapi/wasi-threads@1.2.3': resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} - '@module-federation/error-codes@0.21.1': - resolution: {integrity: sha512-h1brnwR9AbwMu1P7ZoJJ9j2O2XWkuMh5p03WhXI1vNEdl3xJheSAvH8RjG8FoKRccVgMnUNDQ+vDVwevUBms/A==} - - '@module-federation/runtime-core@0.21.1': - resolution: {integrity: sha512-COob5bepqDc9mKjTziXbQd4WQMCTzhc0cuXyraZhYddYcjcepzZrMpDIXG1x5p+gdg5p1vsGNWt/ZcU8cFh/pg==} - - '@module-federation/runtime-tools@0.21.1': - resolution: {integrity: sha512-uQmammw3Osg8370yiRqZwKo7eA5zkyml9pAX9x4oS9QAkEBvQpDogERlF9f7gAgcP2P3v+xLg3/bCdquD0gt8A==} - - '@module-federation/runtime@0.21.1': - resolution: {integrity: sha512-sfBrP0gEPwXPEiREVKVd0IjEWXtr3G/i7EUZVWTt4D491nNpswog/kuKFatGmhcBb+9uD5v9rxFgmIbgL9njnQ==} - - '@module-federation/sdk@0.21.1': - resolution: {integrity: sha512-1cHMrmCCao3NMFM4BkA0GDt4rbYbyneHct5E4z68cu5UBUnI3L/UboP5VNM8lkYMO1nCR8M0FcLkLhK35Nt48A==} - - '@module-federation/webpack-bundler-runtime@0.21.1': - resolution: {integrity: sha512-yyXX6ugTV07pMxMzAHt6/JDwblS3f1NDyUI7l44CyYgXpl2ItEEUs5aj5h/5xU1c9Px7M//KkY3qW+InW4tR/A==} - - '@napi-rs/wasm-runtime@1.0.7': - resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 - '@rsbuild/core@1.6.0-beta.1': - resolution: {integrity: sha512-UjQnvXDW9m/hS4DP66ubGIMVjK2PzYx8tzgiinrO0kjNCr9i8KWuJSJGUWyczFMpSsXxp20LnuTxtx7kiGiYdA==} - engines: {node: '>=18.12.0'} + '@rsbuild/core@2.2.3': + resolution: {integrity: sha512-oJrYtYDhb7AMwY8HIda2hgMuuxHkYPYar4svdS5uTq0fXY0M1wLfllkTQz0d729pNJ4S//6GUM1WX5LsW2mFLw==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + peerDependencies: + core-js: '>= 3.0.0' + peerDependenciesMeta: + core-js: + optional: true - '@rspack/binding-darwin-arm64@1.6.0-beta.1': - resolution: {integrity: sha512-RXQ97iVXgvQAb/cq265z/txdHOOJ6fQQRBfnn0IfMNk7gT4W2rvsLrOqQpwtMKxYV4N/mfWnycfAVa0OOf22Gg==} + '@rspack/binding-darwin-arm64@2.2.2': + resolution: {integrity: sha512-/le/AvV4HSinXTPs2Lqpujxt189Z5T10Ggt96QzckLRPvIchzqoavVDDjltzC7XcaZ87XCH/X06jNKgzkcBBNA==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.6.0-beta.1': - resolution: {integrity: sha512-Ulb7Jyyvuf28BwPXZKSbglaSK/19b32ItWT+pgswhbFsnfhzAQQd7Jo7TUEvHNHAdVDiES8VFlrnOhOSnwEOLg==} + '@rspack/binding-darwin-x64@2.2.2': + resolution: {integrity: sha512-uFIcUPUXiPxM6ljenLafp5TemT8eLZm1riRn8fJYmpqNCK+aCcTaud18XHZpI5SjzzcY+xUHfVShgvNzKXuf2g==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.6.0-beta.1': - resolution: {integrity: sha512-UyUoh5RXHTWCktqPVnqoc5rwlWyLkWqGu6ga+iyJHDxdxlrHFfwJnTSnCd4y8cRadf7CrmjHElxE61GU3WCYhw==} + '@rspack/binding-linux-arm64-gnu@2.2.2': + resolution: {integrity: sha512-Pjby4pDSMNJQK2VBzpgCj6lb+DGuenS1fEDb6xi5/apbJb9v5WE+e43Mz7i+XqgXS8e846pjaONV3KM5WKB1LQ==} cpu: [arm64] os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-musl@1.6.0-beta.1': - resolution: {integrity: sha512-JAXVKHQieN4Ruvs7MstvsPUtRBSAROqJ0abCh4rXdV+FzncKp/ZkdfjQploDhBWtWfU8rPvIjaxeZcPfHMI5/A==} + '@rspack/binding-linux-arm64-musl@2.2.2': + resolution: {integrity: sha512-0u9O7tTVT2z+F6o/eEY6f6+My8Jn9U56QiBwkfy90ZaoAfZyQSSTxqaK/zA7W43oFxQefeCpiPas27VUzrSakw==} cpu: [arm64] os: [linux] libc: [musl] - '@rspack/binding-linux-x64-gnu@1.6.0-beta.1': - resolution: {integrity: sha512-LqAos71CJS5/V4knX9T7T68oGz0XPRZ2IJmI3jEByRlNcyZdxYeQ7Dw09JO9Y5Xj0T+0cudOeL2MxHcD3gTF/w==} + '@rspack/binding-linux-ppc64-gnu@2.2.2': + resolution: {integrity: sha512-N3lVnhq5qOvpmP5n386JzR1GcE8HzAqq4/r440Z6yle9m7PhVFJ6oXVWxgaDTYV0mtv9YLJmaG+YrjYfUa1vuA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-riscv64-gnu@2.2.2': + resolution: {integrity: sha512-ReClZyp32/rJkUDV/oGDU0X6BCFyEkTR6r4stFwm/qOOaG6mUMRzZe4gur8Yh979p4Hiz9EdkmfEHY02GBXcaQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-riscv64-musl@2.2.2': + resolution: {integrity: sha512-mqsorvTNerr3r8zI35NFTPYATPDlhepdiUhZjKT6ylqpHlP7vLU9fp4aEMK/CuTv2f+IVsa0+iZqtMxHs2tSjw==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rspack/binding-linux-s390x-gnu@2.2.2': + resolution: {integrity: sha512-ql2Jub8QYWSugBppmj2u0SjcIj6fOQuAaLCYQOqU7zbvz/uuWTfoqmdWKExwrxeCU9Tzt7emVM0ETuVEpoca+A==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-x64-gnu@2.2.2': + resolution: {integrity: sha512-MNYKYEHrtIVEno2q5rgpou/JVffRwn109xPK3kxct95EojHsniNa8jwy6eEHeOazP4EN60Si7NElE3aQ6JssHw==} cpu: [x64] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-musl@1.6.0-beta.1': - resolution: {integrity: sha512-E4dRMzIHYaoYkgmDTFLrgnGtdspbAuVbLfaPF9AWW5YkQn52obGAgbbNb1wi1JJ5f29nTBoLauYCucEO5IGFvA==} + '@rspack/binding-linux-x64-musl@2.2.2': + resolution: {integrity: sha512-y9/9CmE8lrECaF17GAhacibTL+SvlEPEotQnUuBFC/WFtXh8hU2E7a7bAkpYGSLH6kM0nrJZHO3hTvM1wdWOJw==} cpu: [x64] os: [linux] libc: [musl] - '@rspack/binding-wasm32-wasi@1.6.0-beta.1': - resolution: {integrity: sha512-PaKEjXOkYprSFlgdgVm/P3pv2E8nAQx9WSGgPmMVIAtxo3Cyz0wwFf0f1Bp9wCw0KkIWgi+9lz8oXNkgKZilug==} + '@rspack/binding-wasm32-wasi@2.2.2': + resolution: {integrity: sha512-VbDIjjeFwZvMSKAOGY5IbU6lLzt6AHHHncTdMMkZ94Xk7O2BOHe9BXDV32Ln29TIW2C8m1fdxfPZWDiecVghUQ==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.6.0-beta.1': - resolution: {integrity: sha512-HWz9Qxrjf3TKLCwiFPJaqw+STvEsBvFYZvBXZ8umIZXqtdfgQP5d91V8JRG4Gg1J6xnGC/KhZexxBuR/y64aBA==} + '@rspack/binding-win32-arm64-msvc@2.2.2': + resolution: {integrity: sha512-rfcNg0W3ZPZvXma1gTyEt9/Z8FxASIaQr+sMWTSaTPPaeU3xY1+0hYcrD0kUFNs3/5L4u63myI4R8qRXiuW3pA==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.6.0-beta.1': - resolution: {integrity: sha512-alAZHRuyPzCH3rJpEC9EBE60EZPnQjzltZ6HN8lsCidACMFTzaLBvuzZyYQah+Zm58O22ok2Eon4BpP1Coizgg==} + '@rspack/binding-win32-ia32-msvc@2.2.2': + resolution: {integrity: sha512-TFPvr9RZw9oHIhooDhXHzWjKcHpGPTxkznSeM2poIWU0CdEuua2rVUfsrriTF1Dmx+9kMly61DQmyOHCbb+b2g==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.6.0-beta.1': - resolution: {integrity: sha512-/WBzhed0Cu0o9XQ9caGgWwzyNnnPKlENlExa2aGbRCbB14/+CwfhCyETyKlc/ID+dtlV/eHKTC9cckUNI8NpTQ==} + '@rspack/binding-win32-x64-msvc@2.2.2': + resolution: {integrity: sha512-GvEGyL594dtWN9SoVnKWh0exrM8WLInaUjwcuA2JKbCi1ak/9iHxip/U1dY3DuVqBYBhmvYq96JPbl91xnzFjg==} cpu: [x64] os: [win32] - '@rspack/binding@1.6.0-beta.1': - resolution: {integrity: sha512-r3L60ekkDLM5qoRjCMrqsgwU9SQ5e8oA/Omltu/FEEUspIVHawPvAqNZvAXnGB+FoNxM8YgdRRh12PAwXJww0A==} + '@rspack/binding@2.2.2': + resolution: {integrity: sha512-gWjKDQfVQJSBh/I+y9WTlyERsiShSJ7eI6Yl0SJs/6gjx8t4ixuwWCsaEFFjwSL4nSn6ML5hNQ7UFY3gj72BWA==} - '@rspack/core@1.6.0-beta.1': - resolution: {integrity: sha512-2ff8XWonPPHyQ6mEWogMspg+Sul3lXZUfNQVrbYSjfNpi8CeDV0/ZtRbHHbAXiy6pz5fvBFL6X+i/ATckjTYBw==} - engines: {node: '>=18.12.0'} + '@rspack/core@2.2.2': + resolution: {integrity: sha512-/yztfDZR5syIPBrUpzBpL+6fhhl0IHBPcXlNr4tOMBULbocFIz7Z4/cqvf1ix0DBbKpIGx99v6N1IDbk2gi8hw==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - '@swc/helpers': '>=0.5.1' + '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 + '@swc/helpers': ^0.5.23 peerDependenciesMeta: + '@module-federation/runtime-tools': + optional: true '@swc/helpers': optional: true - '@rspack/lite-tapable@1.0.1': - resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} - engines: {node: '>=16.0.0'} - - '@rstest/core@0.6.9': - resolution: {integrity: sha512-0qImkQB6T5NLrlgeuaZxSfgpAaaciouKJycpZe673M+cn1WLai7blt2z+Tf4Qv4DVOw/ZyphSmM8WNYz09vNmw==} - engines: {node: '>=18.12.0'} + '@rstest/core@0.11.11': + resolution: {integrity: sha512-7Ii2/2/ex1Oa0Kg5Qk5RKx2+e0I83BHLwH0/gn1B7IDwXCh5msFCF7yTyVGFuMltlm3E8Cf4QD7jadOEaBfXfw==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - happy-dom: '*' - jsdom: '*' + happy-dom: ^20.8.3 + jsdom: '>=15.0.0' peerDependenciesMeta: happy-dom: optional: true @@ -150,14 +163,6 @@ packages: core-js@3.46.0: resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} - jiti@2.7.0: - resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} - hasBin: true - - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -179,106 +184,98 @@ snapshots: tslib: 2.8.1 optional: true - '@module-federation/error-codes@0.21.1': {} - - '@module-federation/runtime-core@0.21.1': - dependencies: - '@module-federation/error-codes': 0.21.1 - '@module-federation/sdk': 0.21.1 - - '@module-federation/runtime-tools@0.21.1': - dependencies: - '@module-federation/runtime': 0.21.1 - '@module-federation/webpack-bundler-runtime': 0.21.1 - - '@module-federation/runtime@0.21.1': - dependencies: - '@module-federation/error-codes': 0.21.1 - '@module-federation/runtime-core': 0.21.1 - '@module-federation/sdk': 0.21.1 - - '@module-federation/sdk@0.21.1': {} - - '@module-federation/webpack-bundler-runtime@0.21.1': - dependencies: - '@module-federation/runtime': 0.21.1 - '@module-federation/sdk': 0.21.1 - - '@napi-rs/wasm-runtime@1.0.7': + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: '@emnapi/core': 1.11.3 '@emnapi/runtime': 1.11.3 '@tybys/wasm-util': 0.10.3 optional: true - '@rsbuild/core@1.6.0-beta.1': + '@rsbuild/core@2.2.3(core-js@3.46.0)': dependencies: - '@rspack/core': 1.6.0-beta.1(@swc/helpers@0.5.23) - '@rspack/lite-tapable': 1.0.1 + '@rspack/core': 2.2.2(@swc/helpers@0.5.23) '@swc/helpers': 0.5.23 + optionalDependencies: core-js: 3.46.0 - jiti: 2.7.0 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + + '@rspack/binding-darwin-arm64@2.2.2': + optional: true - '@rspack/binding-darwin-arm64@1.6.0-beta.1': + '@rspack/binding-darwin-x64@2.2.2': optional: true - '@rspack/binding-darwin-x64@1.6.0-beta.1': + '@rspack/binding-linux-arm64-gnu@2.2.2': optional: true - '@rspack/binding-linux-arm64-gnu@1.6.0-beta.1': + '@rspack/binding-linux-arm64-musl@2.2.2': optional: true - '@rspack/binding-linux-arm64-musl@1.6.0-beta.1': + '@rspack/binding-linux-ppc64-gnu@2.2.2': optional: true - '@rspack/binding-linux-x64-gnu@1.6.0-beta.1': + '@rspack/binding-linux-riscv64-gnu@2.2.2': optional: true - '@rspack/binding-linux-x64-musl@1.6.0-beta.1': + '@rspack/binding-linux-riscv64-musl@2.2.2': optional: true - '@rspack/binding-wasm32-wasi@1.6.0-beta.1': + '@rspack/binding-linux-s390x-gnu@2.2.2': + optional: true + + '@rspack/binding-linux-x64-gnu@2.2.2': + optional: true + + '@rspack/binding-linux-x64-musl@2.2.2': + optional: true + + '@rspack/binding-wasm32-wasi@2.2.2': dependencies: - '@napi-rs/wasm-runtime': 1.0.7 + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) optional: true - '@rspack/binding-win32-arm64-msvc@1.6.0-beta.1': + '@rspack/binding-win32-arm64-msvc@2.2.2': optional: true - '@rspack/binding-win32-ia32-msvc@1.6.0-beta.1': + '@rspack/binding-win32-ia32-msvc@2.2.2': optional: true - '@rspack/binding-win32-x64-msvc@1.6.0-beta.1': + '@rspack/binding-win32-x64-msvc@2.2.2': optional: true - '@rspack/binding@1.6.0-beta.1': + '@rspack/binding@2.2.2': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.6.0-beta.1 - '@rspack/binding-darwin-x64': 1.6.0-beta.1 - '@rspack/binding-linux-arm64-gnu': 1.6.0-beta.1 - '@rspack/binding-linux-arm64-musl': 1.6.0-beta.1 - '@rspack/binding-linux-x64-gnu': 1.6.0-beta.1 - '@rspack/binding-linux-x64-musl': 1.6.0-beta.1 - '@rspack/binding-wasm32-wasi': 1.6.0-beta.1 - '@rspack/binding-win32-arm64-msvc': 1.6.0-beta.1 - '@rspack/binding-win32-ia32-msvc': 1.6.0-beta.1 - '@rspack/binding-win32-x64-msvc': 1.6.0-beta.1 - - '@rspack/core@1.6.0-beta.1(@swc/helpers@0.5.23)': + '@rspack/binding-darwin-arm64': 2.2.2 + '@rspack/binding-darwin-x64': 2.2.2 + '@rspack/binding-linux-arm64-gnu': 2.2.2 + '@rspack/binding-linux-arm64-musl': 2.2.2 + '@rspack/binding-linux-ppc64-gnu': 2.2.2 + '@rspack/binding-linux-riscv64-gnu': 2.2.2 + '@rspack/binding-linux-riscv64-musl': 2.2.2 + '@rspack/binding-linux-s390x-gnu': 2.2.2 + '@rspack/binding-linux-x64-gnu': 2.2.2 + '@rspack/binding-linux-x64-musl': 2.2.2 + '@rspack/binding-wasm32-wasi': 2.2.2 + '@rspack/binding-win32-arm64-msvc': 2.2.2 + '@rspack/binding-win32-ia32-msvc': 2.2.2 + '@rspack/binding-win32-x64-msvc': 2.2.2 + + '@rspack/core@2.2.2(@swc/helpers@0.5.23)': dependencies: - '@module-federation/runtime-tools': 0.21.1 - '@rspack/binding': 1.6.0-beta.1 - '@rspack/lite-tapable': 1.0.1 + '@rspack/binding': 2.2.2 optionalDependencies: '@swc/helpers': 0.5.23 - '@rspack/lite-tapable@1.0.1': {} - - '@rstest/core@0.6.9': + '@rstest/core@0.11.11(core-js@3.46.0)': dependencies: - '@rsbuild/core': 1.6.0-beta.1 + '@rsbuild/core': 2.2.3(core-js@3.46.0) '@types/chai': 5.2.3 - tinypool: 1.1.1 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - core-js '@swc/helpers@0.5.23': dependencies: @@ -298,10 +295,7 @@ snapshots: assertion-error@2.0.1: {} - core-js@3.46.0: {} - - jiti@2.7.0: {} - - tinypool@1.1.1: {} + core-js@3.46.0: + optional: true tslib@2.8.1: {} diff --git a/packages/vscode/e2e/lint/fixtures/package.json b/packages/vscode/e2e/lint/fixtures/package.json index 711708e..de8b07e 100644 --- a/packages/vscode/e2e/lint/fixtures/package.json +++ b/packages/vscode/e2e/lint/fixtures/package.json @@ -4,7 +4,7 @@ "private": true, "description": "Shared install root for the Rslint E2E fixture workspaces. The extension ships no binary: every fixture resolves @rslint/core - including its native Go binary, config-loader and eslint-plugin host - from this one published-npm install. jiti backs the config-file-loader's TypeScript-config fallback.", "dependencies": { - "@rslint/core": "^0.8.1", + "@rslint/core": "^0.9.0", "jiti": "^2.7.0" } } diff --git a/packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml b/packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml index 6bb60dc..99f9a31 100644 --- a/packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml +++ b/packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml @@ -9,16 +9,16 @@ importers: .: dependencies: '@rslint/core': - specifier: ^0.8.1 - version: 0.8.2(jiti@2.7.0) + specifier: ^0.9.0 + version: 0.9.0(jiti@2.7.0) jiti: specifier: ^2.7.0 version: 2.7.0 packages: - '@rslint/core@0.8.2': - resolution: {integrity: sha512-O7c9hg5Soo1MOta0Aj+3Td2Bjd6ZZUV+lLPWJvVRNqaZEzl2FKmkS9xuT9o4jHXTXhTvlxGuyyaJUUlEpW57Cw==} + '@rslint/core@0.9.0': + resolution: {integrity: sha512-rY8F6kdQ/XkBiflaNzglJdMfxl0Lv/NFXppK0kAhx2P2CvogsXIA/z82Wxtk+Cg9uFHou67N9/iqmWXgdtSoDw==} hasBin: true peerDependencies: jiti: ^2.7.0 @@ -26,47 +26,47 @@ packages: jiti: optional: true - '@rslint/native-darwin-arm64@0.8.2': - resolution: {integrity: sha512-SdGy7Mh8a53VQiMbQQ+pvtaivwUCeBdYP0QeORZfUWqcqqaTdfTQnaCm/7BG9NRIjAwSZcwooJnklZwqky2gGA==} + '@rslint/native-darwin-arm64@0.9.0': + resolution: {integrity: sha512-xhdBrVALZTX0v4ZghKY7RGO87DpItk4DVvKm3MGih4w1o2WF2u+6n/mohvG7/ts7c8T88HIbLfK4luQ8kMDCsg==} cpu: [arm64] os: [darwin] - '@rslint/native-darwin-x64@0.8.2': - resolution: {integrity: sha512-Yp8+zNxhkO92QpNFTcJLYPU/Q02QC0GIR9BRn2DdMHtVattFctZKXujWprLFNafh7Di/5fitebNKeqck2+pxoQ==} + '@rslint/native-darwin-x64@0.9.0': + resolution: {integrity: sha512-xuluXYUKizRZD/70WILvn+OeNdBT6izU81vhiNHVYdEQmfsqaqE8fthKGmQvaRu/DNL3CgVRPR+PzOAcQzPpOw==} cpu: [x64] os: [darwin] - '@rslint/native-linux-arm64-gnu@0.8.2': - resolution: {integrity: sha512-LUp+w/bDgyyEpuDDp8fO18JsdyZndF5pRSeOnxPs1Ms6cUI3JRUJ/al7RMUQEzfMuNHPSrmEnFZW1nAjLOubdA==} + '@rslint/native-linux-arm64-gnu@0.9.0': + resolution: {integrity: sha512-J9uHBg/8Z9WanEKBXaPNZz0h+P8qtOLwjVqwEcOwYm1yLHRY70A7XqI6cRVIx72gXKGWtNBT2BRw9p8CWQUhgg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rslint/native-linux-arm64-musl@0.8.2': - resolution: {integrity: sha512-dDPAy1+EsXT6kKVy2qgzCJSBCZ+ry2LVLbo5eLX1kueTB6uGQATnKVKhS0SiSkdqC9clxiviBRs/XBivbc4uVQ==} + '@rslint/native-linux-arm64-musl@0.9.0': + resolution: {integrity: sha512-3ICIPH1oZOuMuZp+4hRhU+Af34U/2MNFB1yN+yi/jfJP+qBEExQbeBOS4J6HOecx9RJXcFvPF2ZI68l4g8/DPQ==} cpu: [arm64] os: [linux] libc: [musl] - '@rslint/native-linux-x64-gnu@0.8.2': - resolution: {integrity: sha512-n5TOiNTQGpfAjw7LScEdxYv41CaNpF2ff/6GVUuUBlA/GJr3pWApZUR3lP+RQmM/Ov2i+2Yfn2KrP+fIT1we5A==} + '@rslint/native-linux-x64-gnu@0.9.0': + resolution: {integrity: sha512-vlzcruA/t+0XvdK2S0bIS00H9Mpkrwo/hIFvpyUONgxi2WaO7XNDtgTWAsajB40WmvezYYLKs45LgkVXpxSCFA==} cpu: [x64] os: [linux] libc: [glibc] - '@rslint/native-linux-x64-musl@0.8.2': - resolution: {integrity: sha512-kP1uGWoHgtJuRcfMRqbu22tpMNkH2MIDQfQFu0O37PZQYh9uc0/yQzS6c5ILPKqr0PnBu4uljHa+I6a34kZ+Mw==} + '@rslint/native-linux-x64-musl@0.9.0': + resolution: {integrity: sha512-+gPExuOtSPaP7jAWeMRnTobvQOhaqo9857K/7T2qvc15ksnYqqygMhzcVzm9Wt7L4KBoW6PR1uvwgmPaK4B0IA==} cpu: [x64] os: [linux] libc: [musl] - '@rslint/native-win32-arm64-msvc@0.8.2': - resolution: {integrity: sha512-FYeEm0xa/vmgEHduoDrHj4k4oRBuX8xCS3JNgJALuqwUqPsh9h/pLmV+11M4X3aoiMWvqADfG4mZ0hbf79uzSQ==} + '@rslint/native-win32-arm64-msvc@0.9.0': + resolution: {integrity: sha512-YK5uTuk6zNXru2cOwivbZPH25C7u8RSQlKm5tOqwhaQ0ShCVDdh7z0SXvHvLdQ2VJen+30Vp1izAMZ7Zp/8KaQ==} cpu: [arm64] os: [win32] - '@rslint/native-win32-x64-msvc@0.8.2': - resolution: {integrity: sha512-AyJTA/pMW7o1fXZ8oS6xwrQ89BdQwAuwCgVUB3tRUHYFNqbmjjjQAEqXz9xKSKbZlaENSRuDDptu0gq5VWPGmQ==} + '@rslint/native-win32-x64-msvc@0.9.0': + resolution: {integrity: sha512-7elW5V8zm3McqA0LCjBBR7SDwQ5hRW+hrnJcCmrspSnBeUPFqnJfvUvsQPgbJz3pdrkBzzjZMvUgEYyBQ9dl8A==} cpu: [x64] os: [win32] @@ -80,42 +80,42 @@ packages: snapshots: - '@rslint/core@0.8.2(jiti@2.7.0)': + '@rslint/core@0.9.0(jiti@2.7.0)': dependencies: picomatch: 4.0.7 optionalDependencies: - '@rslint/native-darwin-arm64': 0.8.2 - '@rslint/native-darwin-x64': 0.8.2 - '@rslint/native-linux-arm64-gnu': 0.8.2 - '@rslint/native-linux-arm64-musl': 0.8.2 - '@rslint/native-linux-x64-gnu': 0.8.2 - '@rslint/native-linux-x64-musl': 0.8.2 - '@rslint/native-win32-arm64-msvc': 0.8.2 - '@rslint/native-win32-x64-msvc': 0.8.2 + '@rslint/native-darwin-arm64': 0.9.0 + '@rslint/native-darwin-x64': 0.9.0 + '@rslint/native-linux-arm64-gnu': 0.9.0 + '@rslint/native-linux-arm64-musl': 0.9.0 + '@rslint/native-linux-x64-gnu': 0.9.0 + '@rslint/native-linux-x64-musl': 0.9.0 + '@rslint/native-win32-arm64-msvc': 0.9.0 + '@rslint/native-win32-x64-msvc': 0.9.0 jiti: 2.7.0 - '@rslint/native-darwin-arm64@0.8.2': + '@rslint/native-darwin-arm64@0.9.0': optional: true - '@rslint/native-darwin-x64@0.8.2': + '@rslint/native-darwin-x64@0.9.0': optional: true - '@rslint/native-linux-arm64-gnu@0.8.2': + '@rslint/native-linux-arm64-gnu@0.9.0': optional: true - '@rslint/native-linux-arm64-musl@0.8.2': + '@rslint/native-linux-arm64-musl@0.9.0': optional: true - '@rslint/native-linux-x64-gnu@0.8.2': + '@rslint/native-linux-x64-gnu@0.9.0': optional: true - '@rslint/native-linux-x64-musl@0.8.2': + '@rslint/native-linux-x64-musl@0.9.0': optional: true - '@rslint/native-win32-arm64-msvc@0.8.2': + '@rslint/native-win32-arm64-msvc@0.9.0': optional: true - '@rslint/native-win32-x64-msvc@0.8.2': + '@rslint/native-win32-x64-msvc@0.9.0': optional: true jiti@2.7.0: {} diff --git a/packages/vscode/e2e/lint/suite-eslint-plugins/plugin-pool.test.ts b/packages/vscode/e2e/lint/suite-eslint-plugins/plugin-pool.test.ts index f8d5ddc..d8830f3 100644 --- a/packages/vscode/e2e/lint/suite-eslint-plugins/plugin-pool.test.ts +++ b/packages/vscode/e2e/lint/suite-eslint-plugins/plugin-pool.test.ts @@ -53,7 +53,7 @@ function request(generation: string): EslintPluginLintRequest { generation, files: [], rules: {}, - fix: false, + collectFixes: false, suggestionsMode: 'off', }; } diff --git a/packages/vscode/e2e/lint/suite-jsconfig/config-transaction.test.ts b/packages/vscode/e2e/lint/suite-jsconfig/config-transaction.test.ts index 1d68af9..0c01436 100644 --- a/packages/vscode/e2e/lint/suite-jsconfig/config-transaction.test.ts +++ b/packages/vscode/e2e/lint/suite-jsconfig/config-transaction.test.ts @@ -6,7 +6,7 @@ // constant: `@rslint/core/config-loader` is resolved from the project at // runtime, so the adapter takes the loader's // `CONFIG_DISCOVERY_PROTOCOL_VERSION` as a constructor argument. The tests -// inject the devDependency's constant, which tracks the same `^0.8.0` floor +// inject the devDependency's constant, which tracks the same `^0.9.0` floor // as the fixtures. // - The watch-glob test asserts upstream's glob is kept verbatim, lockfiles // included. diff --git a/packages/vscode/e2e/lint/suite-jsconfig/core-resolver.test.ts b/packages/vscode/e2e/lint/suite-jsconfig/core-resolver.test.ts index 21cb30c..cf7c5f0 100644 --- a/packages/vscode/e2e/lint/suite-jsconfig/core-resolver.test.ts +++ b/packages/vscode/e2e/lint/suite-jsconfig/core-resolver.test.ts @@ -116,7 +116,7 @@ suite('local core resolver', () => { /** * Upstream's `createPackageDirectory` — a manifest is all the host reads. - * Versions must clear the SUPPORT_MATRIX floor (`@rslint/core >= 0.8.0`) + * Versions must clear the SUPPORT_MATRIX floor (`@rslint/core >= 0.9.0`) * wherever the test expects resolution to succeed. */ async function createCore( diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-1/package.json b/packages/vscode/e2e/rstest/fixtures/workspace-1/package.json index eb1179f..13c68b0 100644 --- a/packages/vscode/e2e/rstest/fixtures/workspace-1/package.json +++ b/packages/vscode/e2e/rstest/fixtures/workspace-1/package.json @@ -4,6 +4,6 @@ "private": true, "description": "E2E fixture for the ported Rstest suites: upstream `tests/fixtures/workspace-1`, made self-contained on the published `@rstest/core`.", "dependencies": { - "@rstest/core": "^0.11.5" + "@rstest/core": "^0.11.11" } } diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml b/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml index cbf9ea3..80c3d88 100644 --- a/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml +++ b/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml @@ -9,19 +9,19 @@ importers: .: dependencies: '@rstest/core': - specifier: ^0.11.5 - version: 0.11.5 + specifier: ^0.11.11 + version: 0.11.11 packages: - '@emnapi/core@1.11.2': - resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} + '@emnapi/core@1.11.3': + resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} - '@emnapi/runtime@1.11.2': - resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} - '@emnapi/wasi-threads@1.2.2': - resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + '@emnapi/wasi-threads@1.2.3': + resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} '@napi-rs/wasm-runtime@1.1.6': resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} @@ -29,8 +29,8 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@rsbuild/core@2.1.9': - resolution: {integrity: sha512-yqf1hFZ3wbMYI431LqsxLH3r0VZkfyarVKTf7kMeIiGe0YLwsrgsfp+sKpIyVkQkq60J0qyp6l/CoqqsQZqEwQ==} + '@rsbuild/core@2.2.3': + resolution: {integrity: sha512-oJrYtYDhb7AMwY8HIda2hgMuuxHkYPYar4svdS5uTq0fXY0M1wLfllkTQz0d729pNJ4S//6GUM1WX5LsW2mFLw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -39,76 +39,88 @@ packages: core-js: optional: true - '@rspack/binding-darwin-arm64@2.1.7': - resolution: {integrity: sha512-DwxzrXRctueP/3Pyom9JHcIsRShuEAlHb+mrE5OPT+4cdHI1UnJpbzEvEDLTo4IKJhDb3vjXdHLtjqtL0SYbeA==} + '@rspack/binding-darwin-arm64@2.2.2': + resolution: {integrity: sha512-/le/AvV4HSinXTPs2Lqpujxt189Z5T10Ggt96QzckLRPvIchzqoavVDDjltzC7XcaZ87XCH/X06jNKgzkcBBNA==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@2.1.7': - resolution: {integrity: sha512-kPbrYvR/XUHfAMgRVq3QnC71DW/qjwsPj+3hEUuEnRmlploPNy9u8Szf1IHKSVUSrVZBTgDyMoZQdxYLfhResw==} + '@rspack/binding-darwin-x64@2.2.2': + resolution: {integrity: sha512-uFIcUPUXiPxM6ljenLafp5TemT8eLZm1riRn8fJYmpqNCK+aCcTaud18XHZpI5SjzzcY+xUHfVShgvNzKXuf2g==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@2.1.7': - resolution: {integrity: sha512-VFB+YXM3kZ6IIuLV64H3vgnwqvQIIaqfR/aeGwuxYvwcZsrgblSBmXMeDULdgDjqP8Yr0VaFMBBiD9OtG5KdFw==} + '@rspack/binding-linux-arm64-gnu@2.2.2': + resolution: {integrity: sha512-Pjby4pDSMNJQK2VBzpgCj6lb+DGuenS1fEDb6xi5/apbJb9v5WE+e43Mz7i+XqgXS8e846pjaONV3KM5WKB1LQ==} cpu: [arm64] os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-musl@2.1.7': - resolution: {integrity: sha512-Mzbxyg0aJ+ITj526Iuz0enEDYY6WxhFIwEKXqwjQh+Vpd5v/+aPzPo83sSQVX/3puBV1sbmviTURbh6N9e1fvA==} + '@rspack/binding-linux-arm64-musl@2.2.2': + resolution: {integrity: sha512-0u9O7tTVT2z+F6o/eEY6f6+My8Jn9U56QiBwkfy90ZaoAfZyQSSTxqaK/zA7W43oFxQefeCpiPas27VUzrSakw==} cpu: [arm64] os: [linux] libc: [musl] - '@rspack/binding-linux-riscv64-gnu@2.1.7': - resolution: {integrity: sha512-mpazwgT/Pse1720mvEJsoXfPkJ+enj0xUqpbe/wL6aedwjGT+9jJNB8HTJXE4XBX0UO7umGqcJMeKA6YsD2CDA==} + '@rspack/binding-linux-ppc64-gnu@2.2.2': + resolution: {integrity: sha512-N3lVnhq5qOvpmP5n386JzR1GcE8HzAqq4/r440Z6yle9m7PhVFJ6oXVWxgaDTYV0mtv9YLJmaG+YrjYfUa1vuA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-riscv64-gnu@2.2.2': + resolution: {integrity: sha512-ReClZyp32/rJkUDV/oGDU0X6BCFyEkTR6r4stFwm/qOOaG6mUMRzZe4gur8Yh979p4Hiz9EdkmfEHY02GBXcaQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rspack/binding-linux-riscv64-musl@2.1.7': - resolution: {integrity: sha512-oU/l3soPRsDEWn7KZic+npyTMM2N1kRdHjoJ+L5IUBXs8bjdTXPLoyTbTdIOza5ZSoT4+UeEiEryj4BB0tQE5w==} + '@rspack/binding-linux-riscv64-musl@2.2.2': + resolution: {integrity: sha512-mqsorvTNerr3r8zI35NFTPYATPDlhepdiUhZjKT6ylqpHlP7vLU9fp4aEMK/CuTv2f+IVsa0+iZqtMxHs2tSjw==} cpu: [riscv64] os: [linux] libc: [musl] - '@rspack/binding-linux-x64-gnu@2.1.7': - resolution: {integrity: sha512-7Gtpl3h3jtnOpk1mYQE8mRndXAO2ibI8mnAbs7klevdKey+ZHneWMoMi2yOMQhhI/ifWEFxDzyGJ8bdxo0XTsA==} + '@rspack/binding-linux-s390x-gnu@2.2.2': + resolution: {integrity: sha512-ql2Jub8QYWSugBppmj2u0SjcIj6fOQuAaLCYQOqU7zbvz/uuWTfoqmdWKExwrxeCU9Tzt7emVM0ETuVEpoca+A==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-x64-gnu@2.2.2': + resolution: {integrity: sha512-MNYKYEHrtIVEno2q5rgpou/JVffRwn109xPK3kxct95EojHsniNa8jwy6eEHeOazP4EN60Si7NElE3aQ6JssHw==} cpu: [x64] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-musl@2.1.7': - resolution: {integrity: sha512-w+whI2Uy+DYkGN+MVkzMFWweL7B/s1gMqX+nvTE1vhOy3hGV0VyA9H6lqWjSD3I+eGkpYhN9Pr244cYnLpZOUQ==} + '@rspack/binding-linux-x64-musl@2.2.2': + resolution: {integrity: sha512-y9/9CmE8lrECaF17GAhacibTL+SvlEPEotQnUuBFC/WFtXh8hU2E7a7bAkpYGSLH6kM0nrJZHO3hTvM1wdWOJw==} cpu: [x64] os: [linux] libc: [musl] - '@rspack/binding-wasm32-wasi@2.1.7': - resolution: {integrity: sha512-cDVgvzRdTgxaeM+a5Lx0+7/VAvunvwO0wNtQ3ATQGOtFCW5b7cUzhNPcytH5ZSJTnFWuxinlGwtar5yfcnkdZQ==} + '@rspack/binding-wasm32-wasi@2.2.2': + resolution: {integrity: sha512-VbDIjjeFwZvMSKAOGY5IbU6lLzt6AHHHncTdMMkZ94Xk7O2BOHe9BXDV32Ln29TIW2C8m1fdxfPZWDiecVghUQ==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@2.1.7': - resolution: {integrity: sha512-JDd85+iYwUvaG9Zrt5X7oIxRZRiTW+76FwkRakoXNy/5VAWQW32Jq4ESjSVz6l6mh0KnZxPq3TLMugacCPnLjw==} + '@rspack/binding-win32-arm64-msvc@2.2.2': + resolution: {integrity: sha512-rfcNg0W3ZPZvXma1gTyEt9/Z8FxASIaQr+sMWTSaTPPaeU3xY1+0hYcrD0kUFNs3/5L4u63myI4R8qRXiuW3pA==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@2.1.7': - resolution: {integrity: sha512-y9PKEs6v9BLHV0i/4eaIRtxpATvSgcf/VYQkMT8mp+qWlPjUwDQNwU2ueWVGpff6INO+YAa7zobzziNFRgO7Lg==} + '@rspack/binding-win32-ia32-msvc@2.2.2': + resolution: {integrity: sha512-TFPvr9RZw9oHIhooDhXHzWjKcHpGPTxkznSeM2poIWU0CdEuua2rVUfsrriTF1Dmx+9kMly61DQmyOHCbb+b2g==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@2.1.7': - resolution: {integrity: sha512-BjkOzcPY/K8YlRRvyywz0mDWk89MMxqAMhDmgBXCWorh1IjgKTsWDJ2lCGIM8M9CZXUG3khom8AfrOGwRT2I+g==} + '@rspack/binding-win32-x64-msvc@2.2.2': + resolution: {integrity: sha512-GvEGyL594dtWN9SoVnKWh0exrM8WLInaUjwcuA2JKbCi1ak/9iHxip/U1dY3DuVqBYBhmvYq96JPbl91xnzFjg==} cpu: [x64] os: [win32] - '@rspack/binding@2.1.7': - resolution: {integrity: sha512-wYqi8TY30hsIzLry503o/Uqu7y9Ec7pEwN5TVmB7Pb3xHrR2eHsQPzdpF/GkCLUjQSgD2Es3CDVV1mr6zO/78g==} + '@rspack/binding@2.2.2': + resolution: {integrity: sha512-gWjKDQfVQJSBh/I+y9WTlyERsiShSJ7eI6Yl0SJs/6gjx8t4ixuwWCsaEFFjwSL4nSn6ML5hNQ7UFY3gj72BWA==} - '@rspack/core@2.1.7': - resolution: {integrity: sha512-d5Ju3zXzGgbqQWvlMlLUtek2eFPIzsFe2QOF4nwTAknxo/4OZ64t+kPT9nM6fr3aZX93VK0R3v02/kZYIRrV9Q==} + '@rspack/core@2.2.2': + resolution: {integrity: sha512-/yztfDZR5syIPBrUpzBpL+6fhhl0IHBPcXlNr4tOMBULbocFIz7Z4/cqvf1ix0DBbKpIGx99v6N1IDbk2gi8hw==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 @@ -119,13 +131,13 @@ packages: '@swc/helpers': optional: true - '@rstest/core@0.11.5': - resolution: {integrity: sha512-ySXZaFqU1mJonm79ko7OwagG2AurULg1dLDErJguhv/sepEyjt39sq2Bpt42mOxHehiFcl0Pr0PrlaPltmYbbA==} + '@rstest/core@0.11.11': + resolution: {integrity: sha512-7Ii2/2/ex1Oa0Kg5Qk5RKx2+e0I83BHLwH0/gn1B7IDwXCh5msFCF7yTyVGFuMltlm3E8Cf4QD7jadOEaBfXfw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: happy-dom: ^20.8.3 - jsdom: '*' + jsdom: '>=15.0.0' peerDependenciesMeta: happy-dom: optional: true @@ -153,100 +165,108 @@ packages: snapshots: - '@emnapi/core@1.11.2': + '@emnapi/core@1.11.3': dependencies: - '@emnapi/wasi-threads': 1.2.2 + '@emnapi/wasi-threads': 1.2.3 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.11.2': + '@emnapi/runtime@1.11.3': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.2.2': + '@emnapi/wasi-threads@1.2.3': dependencies: tslib: 2.8.1 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: - '@emnapi/core': 1.11.2 - '@emnapi/runtime': 1.11.2 + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 '@tybys/wasm-util': 0.10.3 optional: true - '@rsbuild/core@2.1.9': + '@rsbuild/core@2.2.3': dependencies: - '@rspack/core': 2.1.7(@swc/helpers@0.5.23) + '@rspack/core': 2.2.2(@swc/helpers@0.5.23) '@swc/helpers': 0.5.23 transitivePeerDependencies: - '@module-federation/runtime-tools' - '@rspack/binding-darwin-arm64@2.1.7': + '@rspack/binding-darwin-arm64@2.2.2': + optional: true + + '@rspack/binding-darwin-x64@2.2.2': + optional: true + + '@rspack/binding-linux-arm64-gnu@2.2.2': optional: true - '@rspack/binding-darwin-x64@2.1.7': + '@rspack/binding-linux-arm64-musl@2.2.2': optional: true - '@rspack/binding-linux-arm64-gnu@2.1.7': + '@rspack/binding-linux-ppc64-gnu@2.2.2': optional: true - '@rspack/binding-linux-arm64-musl@2.1.7': + '@rspack/binding-linux-riscv64-gnu@2.2.2': optional: true - '@rspack/binding-linux-riscv64-gnu@2.1.7': + '@rspack/binding-linux-riscv64-musl@2.2.2': optional: true - '@rspack/binding-linux-riscv64-musl@2.1.7': + '@rspack/binding-linux-s390x-gnu@2.2.2': optional: true - '@rspack/binding-linux-x64-gnu@2.1.7': + '@rspack/binding-linux-x64-gnu@2.2.2': optional: true - '@rspack/binding-linux-x64-musl@2.1.7': + '@rspack/binding-linux-x64-musl@2.2.2': optional: true - '@rspack/binding-wasm32-wasi@2.1.7': + '@rspack/binding-wasm32-wasi@2.2.2': dependencies: - '@emnapi/core': 1.11.2 - '@emnapi/runtime': 1.11.2 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) optional: true - '@rspack/binding-win32-arm64-msvc@2.1.7': + '@rspack/binding-win32-arm64-msvc@2.2.2': optional: true - '@rspack/binding-win32-ia32-msvc@2.1.7': + '@rspack/binding-win32-ia32-msvc@2.2.2': optional: true - '@rspack/binding-win32-x64-msvc@2.1.7': + '@rspack/binding-win32-x64-msvc@2.2.2': optional: true - '@rspack/binding@2.1.7': + '@rspack/binding@2.2.2': optionalDependencies: - '@rspack/binding-darwin-arm64': 2.1.7 - '@rspack/binding-darwin-x64': 2.1.7 - '@rspack/binding-linux-arm64-gnu': 2.1.7 - '@rspack/binding-linux-arm64-musl': 2.1.7 - '@rspack/binding-linux-riscv64-gnu': 2.1.7 - '@rspack/binding-linux-riscv64-musl': 2.1.7 - '@rspack/binding-linux-x64-gnu': 2.1.7 - '@rspack/binding-linux-x64-musl': 2.1.7 - '@rspack/binding-wasm32-wasi': 2.1.7 - '@rspack/binding-win32-arm64-msvc': 2.1.7 - '@rspack/binding-win32-ia32-msvc': 2.1.7 - '@rspack/binding-win32-x64-msvc': 2.1.7 - - '@rspack/core@2.1.7(@swc/helpers@0.5.23)': + '@rspack/binding-darwin-arm64': 2.2.2 + '@rspack/binding-darwin-x64': 2.2.2 + '@rspack/binding-linux-arm64-gnu': 2.2.2 + '@rspack/binding-linux-arm64-musl': 2.2.2 + '@rspack/binding-linux-ppc64-gnu': 2.2.2 + '@rspack/binding-linux-riscv64-gnu': 2.2.2 + '@rspack/binding-linux-riscv64-musl': 2.2.2 + '@rspack/binding-linux-s390x-gnu': 2.2.2 + '@rspack/binding-linux-x64-gnu': 2.2.2 + '@rspack/binding-linux-x64-musl': 2.2.2 + '@rspack/binding-wasm32-wasi': 2.2.2 + '@rspack/binding-win32-arm64-msvc': 2.2.2 + '@rspack/binding-win32-ia32-msvc': 2.2.2 + '@rspack/binding-win32-x64-msvc': 2.2.2 + + '@rspack/core@2.2.2(@swc/helpers@0.5.23)': dependencies: - '@rspack/binding': 2.1.7 + '@rspack/binding': 2.2.2 optionalDependencies: '@swc/helpers': 0.5.23 - '@rstest/core@0.11.5': + '@rstest/core@0.11.11': dependencies: - '@rsbuild/core': 2.1.9 + '@rsbuild/core': 2.2.3 '@types/chai': 5.2.3 transitivePeerDependencies: - '@module-federation/runtime-tools' diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-2/package.json b/packages/vscode/e2e/rstest/fixtures/workspace-2/package.json index 0a2c062..36bee2d 100644 --- a/packages/vscode/e2e/rstest/fixtures/workspace-2/package.json +++ b/packages/vscode/e2e/rstest/fixtures/workspace-2/package.json @@ -4,6 +4,6 @@ "private": true, "description": "E2E fixture for the ported Rstest suites: upstream `tests/fixtures/workspace-2`. One install at the root serves both nested projects via the normal node_modules walk-up.", "dependencies": { - "@rstest/core": "^0.11.5" + "@rstest/core": "^0.11.11" } } diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml b/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml index cbf9ea3..80c3d88 100644 --- a/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml +++ b/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml @@ -9,19 +9,19 @@ importers: .: dependencies: '@rstest/core': - specifier: ^0.11.5 - version: 0.11.5 + specifier: ^0.11.11 + version: 0.11.11 packages: - '@emnapi/core@1.11.2': - resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} + '@emnapi/core@1.11.3': + resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} - '@emnapi/runtime@1.11.2': - resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} - '@emnapi/wasi-threads@1.2.2': - resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + '@emnapi/wasi-threads@1.2.3': + resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} '@napi-rs/wasm-runtime@1.1.6': resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} @@ -29,8 +29,8 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@rsbuild/core@2.1.9': - resolution: {integrity: sha512-yqf1hFZ3wbMYI431LqsxLH3r0VZkfyarVKTf7kMeIiGe0YLwsrgsfp+sKpIyVkQkq60J0qyp6l/CoqqsQZqEwQ==} + '@rsbuild/core@2.2.3': + resolution: {integrity: sha512-oJrYtYDhb7AMwY8HIda2hgMuuxHkYPYar4svdS5uTq0fXY0M1wLfllkTQz0d729pNJ4S//6GUM1WX5LsW2mFLw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -39,76 +39,88 @@ packages: core-js: optional: true - '@rspack/binding-darwin-arm64@2.1.7': - resolution: {integrity: sha512-DwxzrXRctueP/3Pyom9JHcIsRShuEAlHb+mrE5OPT+4cdHI1UnJpbzEvEDLTo4IKJhDb3vjXdHLtjqtL0SYbeA==} + '@rspack/binding-darwin-arm64@2.2.2': + resolution: {integrity: sha512-/le/AvV4HSinXTPs2Lqpujxt189Z5T10Ggt96QzckLRPvIchzqoavVDDjltzC7XcaZ87XCH/X06jNKgzkcBBNA==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@2.1.7': - resolution: {integrity: sha512-kPbrYvR/XUHfAMgRVq3QnC71DW/qjwsPj+3hEUuEnRmlploPNy9u8Szf1IHKSVUSrVZBTgDyMoZQdxYLfhResw==} + '@rspack/binding-darwin-x64@2.2.2': + resolution: {integrity: sha512-uFIcUPUXiPxM6ljenLafp5TemT8eLZm1riRn8fJYmpqNCK+aCcTaud18XHZpI5SjzzcY+xUHfVShgvNzKXuf2g==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@2.1.7': - resolution: {integrity: sha512-VFB+YXM3kZ6IIuLV64H3vgnwqvQIIaqfR/aeGwuxYvwcZsrgblSBmXMeDULdgDjqP8Yr0VaFMBBiD9OtG5KdFw==} + '@rspack/binding-linux-arm64-gnu@2.2.2': + resolution: {integrity: sha512-Pjby4pDSMNJQK2VBzpgCj6lb+DGuenS1fEDb6xi5/apbJb9v5WE+e43Mz7i+XqgXS8e846pjaONV3KM5WKB1LQ==} cpu: [arm64] os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-musl@2.1.7': - resolution: {integrity: sha512-Mzbxyg0aJ+ITj526Iuz0enEDYY6WxhFIwEKXqwjQh+Vpd5v/+aPzPo83sSQVX/3puBV1sbmviTURbh6N9e1fvA==} + '@rspack/binding-linux-arm64-musl@2.2.2': + resolution: {integrity: sha512-0u9O7tTVT2z+F6o/eEY6f6+My8Jn9U56QiBwkfy90ZaoAfZyQSSTxqaK/zA7W43oFxQefeCpiPas27VUzrSakw==} cpu: [arm64] os: [linux] libc: [musl] - '@rspack/binding-linux-riscv64-gnu@2.1.7': - resolution: {integrity: sha512-mpazwgT/Pse1720mvEJsoXfPkJ+enj0xUqpbe/wL6aedwjGT+9jJNB8HTJXE4XBX0UO7umGqcJMeKA6YsD2CDA==} + '@rspack/binding-linux-ppc64-gnu@2.2.2': + resolution: {integrity: sha512-N3lVnhq5qOvpmP5n386JzR1GcE8HzAqq4/r440Z6yle9m7PhVFJ6oXVWxgaDTYV0mtv9YLJmaG+YrjYfUa1vuA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-riscv64-gnu@2.2.2': + resolution: {integrity: sha512-ReClZyp32/rJkUDV/oGDU0X6BCFyEkTR6r4stFwm/qOOaG6mUMRzZe4gur8Yh979p4Hiz9EdkmfEHY02GBXcaQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rspack/binding-linux-riscv64-musl@2.1.7': - resolution: {integrity: sha512-oU/l3soPRsDEWn7KZic+npyTMM2N1kRdHjoJ+L5IUBXs8bjdTXPLoyTbTdIOza5ZSoT4+UeEiEryj4BB0tQE5w==} + '@rspack/binding-linux-riscv64-musl@2.2.2': + resolution: {integrity: sha512-mqsorvTNerr3r8zI35NFTPYATPDlhepdiUhZjKT6ylqpHlP7vLU9fp4aEMK/CuTv2f+IVsa0+iZqtMxHs2tSjw==} cpu: [riscv64] os: [linux] libc: [musl] - '@rspack/binding-linux-x64-gnu@2.1.7': - resolution: {integrity: sha512-7Gtpl3h3jtnOpk1mYQE8mRndXAO2ibI8mnAbs7klevdKey+ZHneWMoMi2yOMQhhI/ifWEFxDzyGJ8bdxo0XTsA==} + '@rspack/binding-linux-s390x-gnu@2.2.2': + resolution: {integrity: sha512-ql2Jub8QYWSugBppmj2u0SjcIj6fOQuAaLCYQOqU7zbvz/uuWTfoqmdWKExwrxeCU9Tzt7emVM0ETuVEpoca+A==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-x64-gnu@2.2.2': + resolution: {integrity: sha512-MNYKYEHrtIVEno2q5rgpou/JVffRwn109xPK3kxct95EojHsniNa8jwy6eEHeOazP4EN60Si7NElE3aQ6JssHw==} cpu: [x64] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-musl@2.1.7': - resolution: {integrity: sha512-w+whI2Uy+DYkGN+MVkzMFWweL7B/s1gMqX+nvTE1vhOy3hGV0VyA9H6lqWjSD3I+eGkpYhN9Pr244cYnLpZOUQ==} + '@rspack/binding-linux-x64-musl@2.2.2': + resolution: {integrity: sha512-y9/9CmE8lrECaF17GAhacibTL+SvlEPEotQnUuBFC/WFtXh8hU2E7a7bAkpYGSLH6kM0nrJZHO3hTvM1wdWOJw==} cpu: [x64] os: [linux] libc: [musl] - '@rspack/binding-wasm32-wasi@2.1.7': - resolution: {integrity: sha512-cDVgvzRdTgxaeM+a5Lx0+7/VAvunvwO0wNtQ3ATQGOtFCW5b7cUzhNPcytH5ZSJTnFWuxinlGwtar5yfcnkdZQ==} + '@rspack/binding-wasm32-wasi@2.2.2': + resolution: {integrity: sha512-VbDIjjeFwZvMSKAOGY5IbU6lLzt6AHHHncTdMMkZ94Xk7O2BOHe9BXDV32Ln29TIW2C8m1fdxfPZWDiecVghUQ==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@2.1.7': - resolution: {integrity: sha512-JDd85+iYwUvaG9Zrt5X7oIxRZRiTW+76FwkRakoXNy/5VAWQW32Jq4ESjSVz6l6mh0KnZxPq3TLMugacCPnLjw==} + '@rspack/binding-win32-arm64-msvc@2.2.2': + resolution: {integrity: sha512-rfcNg0W3ZPZvXma1gTyEt9/Z8FxASIaQr+sMWTSaTPPaeU3xY1+0hYcrD0kUFNs3/5L4u63myI4R8qRXiuW3pA==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@2.1.7': - resolution: {integrity: sha512-y9PKEs6v9BLHV0i/4eaIRtxpATvSgcf/VYQkMT8mp+qWlPjUwDQNwU2ueWVGpff6INO+YAa7zobzziNFRgO7Lg==} + '@rspack/binding-win32-ia32-msvc@2.2.2': + resolution: {integrity: sha512-TFPvr9RZw9oHIhooDhXHzWjKcHpGPTxkznSeM2poIWU0CdEuua2rVUfsrriTF1Dmx+9kMly61DQmyOHCbb+b2g==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@2.1.7': - resolution: {integrity: sha512-BjkOzcPY/K8YlRRvyywz0mDWk89MMxqAMhDmgBXCWorh1IjgKTsWDJ2lCGIM8M9CZXUG3khom8AfrOGwRT2I+g==} + '@rspack/binding-win32-x64-msvc@2.2.2': + resolution: {integrity: sha512-GvEGyL594dtWN9SoVnKWh0exrM8WLInaUjwcuA2JKbCi1ak/9iHxip/U1dY3DuVqBYBhmvYq96JPbl91xnzFjg==} cpu: [x64] os: [win32] - '@rspack/binding@2.1.7': - resolution: {integrity: sha512-wYqi8TY30hsIzLry503o/Uqu7y9Ec7pEwN5TVmB7Pb3xHrR2eHsQPzdpF/GkCLUjQSgD2Es3CDVV1mr6zO/78g==} + '@rspack/binding@2.2.2': + resolution: {integrity: sha512-gWjKDQfVQJSBh/I+y9WTlyERsiShSJ7eI6Yl0SJs/6gjx8t4ixuwWCsaEFFjwSL4nSn6ML5hNQ7UFY3gj72BWA==} - '@rspack/core@2.1.7': - resolution: {integrity: sha512-d5Ju3zXzGgbqQWvlMlLUtek2eFPIzsFe2QOF4nwTAknxo/4OZ64t+kPT9nM6fr3aZX93VK0R3v02/kZYIRrV9Q==} + '@rspack/core@2.2.2': + resolution: {integrity: sha512-/yztfDZR5syIPBrUpzBpL+6fhhl0IHBPcXlNr4tOMBULbocFIz7Z4/cqvf1ix0DBbKpIGx99v6N1IDbk2gi8hw==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 @@ -119,13 +131,13 @@ packages: '@swc/helpers': optional: true - '@rstest/core@0.11.5': - resolution: {integrity: sha512-ySXZaFqU1mJonm79ko7OwagG2AurULg1dLDErJguhv/sepEyjt39sq2Bpt42mOxHehiFcl0Pr0PrlaPltmYbbA==} + '@rstest/core@0.11.11': + resolution: {integrity: sha512-7Ii2/2/ex1Oa0Kg5Qk5RKx2+e0I83BHLwH0/gn1B7IDwXCh5msFCF7yTyVGFuMltlm3E8Cf4QD7jadOEaBfXfw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: happy-dom: ^20.8.3 - jsdom: '*' + jsdom: '>=15.0.0' peerDependenciesMeta: happy-dom: optional: true @@ -153,100 +165,108 @@ packages: snapshots: - '@emnapi/core@1.11.2': + '@emnapi/core@1.11.3': dependencies: - '@emnapi/wasi-threads': 1.2.2 + '@emnapi/wasi-threads': 1.2.3 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.11.2': + '@emnapi/runtime@1.11.3': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.2.2': + '@emnapi/wasi-threads@1.2.3': dependencies: tslib: 2.8.1 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: - '@emnapi/core': 1.11.2 - '@emnapi/runtime': 1.11.2 + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 '@tybys/wasm-util': 0.10.3 optional: true - '@rsbuild/core@2.1.9': + '@rsbuild/core@2.2.3': dependencies: - '@rspack/core': 2.1.7(@swc/helpers@0.5.23) + '@rspack/core': 2.2.2(@swc/helpers@0.5.23) '@swc/helpers': 0.5.23 transitivePeerDependencies: - '@module-federation/runtime-tools' - '@rspack/binding-darwin-arm64@2.1.7': + '@rspack/binding-darwin-arm64@2.2.2': + optional: true + + '@rspack/binding-darwin-x64@2.2.2': + optional: true + + '@rspack/binding-linux-arm64-gnu@2.2.2': optional: true - '@rspack/binding-darwin-x64@2.1.7': + '@rspack/binding-linux-arm64-musl@2.2.2': optional: true - '@rspack/binding-linux-arm64-gnu@2.1.7': + '@rspack/binding-linux-ppc64-gnu@2.2.2': optional: true - '@rspack/binding-linux-arm64-musl@2.1.7': + '@rspack/binding-linux-riscv64-gnu@2.2.2': optional: true - '@rspack/binding-linux-riscv64-gnu@2.1.7': + '@rspack/binding-linux-riscv64-musl@2.2.2': optional: true - '@rspack/binding-linux-riscv64-musl@2.1.7': + '@rspack/binding-linux-s390x-gnu@2.2.2': optional: true - '@rspack/binding-linux-x64-gnu@2.1.7': + '@rspack/binding-linux-x64-gnu@2.2.2': optional: true - '@rspack/binding-linux-x64-musl@2.1.7': + '@rspack/binding-linux-x64-musl@2.2.2': optional: true - '@rspack/binding-wasm32-wasi@2.1.7': + '@rspack/binding-wasm32-wasi@2.2.2': dependencies: - '@emnapi/core': 1.11.2 - '@emnapi/runtime': 1.11.2 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) optional: true - '@rspack/binding-win32-arm64-msvc@2.1.7': + '@rspack/binding-win32-arm64-msvc@2.2.2': optional: true - '@rspack/binding-win32-ia32-msvc@2.1.7': + '@rspack/binding-win32-ia32-msvc@2.2.2': optional: true - '@rspack/binding-win32-x64-msvc@2.1.7': + '@rspack/binding-win32-x64-msvc@2.2.2': optional: true - '@rspack/binding@2.1.7': + '@rspack/binding@2.2.2': optionalDependencies: - '@rspack/binding-darwin-arm64': 2.1.7 - '@rspack/binding-darwin-x64': 2.1.7 - '@rspack/binding-linux-arm64-gnu': 2.1.7 - '@rspack/binding-linux-arm64-musl': 2.1.7 - '@rspack/binding-linux-riscv64-gnu': 2.1.7 - '@rspack/binding-linux-riscv64-musl': 2.1.7 - '@rspack/binding-linux-x64-gnu': 2.1.7 - '@rspack/binding-linux-x64-musl': 2.1.7 - '@rspack/binding-wasm32-wasi': 2.1.7 - '@rspack/binding-win32-arm64-msvc': 2.1.7 - '@rspack/binding-win32-ia32-msvc': 2.1.7 - '@rspack/binding-win32-x64-msvc': 2.1.7 - - '@rspack/core@2.1.7(@swc/helpers@0.5.23)': + '@rspack/binding-darwin-arm64': 2.2.2 + '@rspack/binding-darwin-x64': 2.2.2 + '@rspack/binding-linux-arm64-gnu': 2.2.2 + '@rspack/binding-linux-arm64-musl': 2.2.2 + '@rspack/binding-linux-ppc64-gnu': 2.2.2 + '@rspack/binding-linux-riscv64-gnu': 2.2.2 + '@rspack/binding-linux-riscv64-musl': 2.2.2 + '@rspack/binding-linux-s390x-gnu': 2.2.2 + '@rspack/binding-linux-x64-gnu': 2.2.2 + '@rspack/binding-linux-x64-musl': 2.2.2 + '@rspack/binding-wasm32-wasi': 2.2.2 + '@rspack/binding-win32-arm64-msvc': 2.2.2 + '@rspack/binding-win32-ia32-msvc': 2.2.2 + '@rspack/binding-win32-x64-msvc': 2.2.2 + + '@rspack/core@2.2.2(@swc/helpers@0.5.23)': dependencies: - '@rspack/binding': 2.1.7 + '@rspack/binding': 2.2.2 optionalDependencies: '@swc/helpers': 0.5.23 - '@rstest/core@0.11.5': + '@rstest/core@0.11.11': dependencies: - '@rsbuild/core': 2.1.9 + '@rsbuild/core': 2.2.3 '@types/chai': 5.2.3 transitivePeerDependencies: - '@module-federation/runtime-tools' diff --git a/packages/vscode/e2e/smoke/rslintPluginHost.mjs b/packages/vscode/e2e/smoke/rslintPluginHost.mjs index f689570..e622f88 100644 --- a/packages/vscode/e2e/smoke/rslintPluginHost.mjs +++ b/packages/vscode/e2e/smoke/rslintPluginHost.mjs @@ -92,7 +92,7 @@ const main = async () => { files: [{ path: SOURCE_PATH, configKey: PROJECT_DIR }], // The rule set Go would have computed from the config for this file. rules: { [RULE_NAME]: { options: [] } }, - fix: false, + collectFixes: false, suggestionsMode: 'off', }); } finally { diff --git a/packages/vscode/package.json b/packages/vscode/package.json index 22f6b9e..6cf9238 100644 --- a/packages/vscode/package.json +++ b/packages/vscode/package.json @@ -439,9 +439,9 @@ "devDependencies": { "@rsbuild/core": "~2.1.9", "@rslib/core": "^1.0.0-beta.1", - "@rslint/core": "^0.8.0", + "@rslint/core": "^0.9.0", "@rstackjs/load-config": "^0.1.2", - "@rstest/core": "^0.11.5", + "@rstest/core": "^0.11.11", "@types/istanbul-lib-report": "^3.0.3", "@types/mocha": "^10.0.10", "@types/node": "^22.16.5", diff --git a/packages/vscode/src/shared/versionCheck.ts b/packages/vscode/src/shared/versionCheck.ts index f51d7fe..a13af60 100644 --- a/packages/vscode/src/shared/versionCheck.ts +++ b/packages/vscode/src/shared/versionCheck.ts @@ -8,25 +8,21 @@ import { readPackageJson } from './packageResolve'; * status bar state with actual vs required versions. * * Launch floors (verified against npm): - * - `@rslint/core >= 0.8.0` — explicit protocol-2 config selection. - * - `@rstest/core >= 0.6.0` — the existing `MIN_CORE_VERSION` upstream. - * - `rstack >= 0.6.1` — the first release depending on `@rslint/core ~0.8.0`, - * whose lint shim the bridged lint worker pins (protocol 2). It also carries - * `rs fmt --lsp`; there is no stdin fallback for older releases, since the - * editor would then format through a code path it is not tested against. - * The floor is **uniform across consumers by decision**: the Rstest bridge - * checks the same entry, so an older rstack reports `version mismatch` for - * tests too, even when that stack's own API would still work. One matrix - * entry means "which rstack does the extension support?" - * has one answer; per-stack rstack floors were considered and rejected — - * they make the answer depend on which status the user happens to look at, - * for the price of keeping tests alive on releases the toolchain has moved - * past. The status message names the required version either way. + * - `@rslint/core >= 0.9.0` — the latest released core and protocol surface. + * - `@rstest/core >= 0.11.11` — the latest released core. + * - `rstack >= 0.7.2` — the latest release, including its current lint and + * Rstest shims and `rs fmt --lsp`. + * + * The extension is pre-1.0 and supports only the latest released toolchain. + * The rstack floor is **uniform across consumers by decision**: lint, Rstest + * and fmt all check the same entry, so "which rstack does the extension + * support?" has one answer. Per-stack floors were considered and rejected; + * the status message names the required version either way. */ export const SUPPORT_MATRIX = { - '@rslint/core': '>=0.8.0', - '@rstest/core': '>=0.6.0', - rstack: '>=0.6.1', + '@rslint/core': '>=0.9.0', + '@rstest/core': '>=0.11.11', + rstack: '>=0.7.2', } as const; export type SupportedPackage = keyof typeof SUPPORT_MATRIX; diff --git a/packages/vscode/src/stacks/lint/CoreResolver.ts b/packages/vscode/src/stacks/lint/CoreResolver.ts index 54f7fcf..fe63a43 100644 --- a/packages/vscode/src/stacks/lint/CoreResolver.ts +++ b/packages/vscode/src/stacks/lint/CoreResolver.ts @@ -40,7 +40,7 @@ import { RslintVersionMismatchError } from './status'; * One **Rslint core** the extension is willing to run, plus the folder-level * config choice the Lint worker needs on its command line. * - * `shimPath` is part of the runtime's identity, not decoration: protocol 2 + * `shimPath` is part of the runtime's identity, not decoration: protocol 3 * locks `configPath` for the server's lifetime (ADR 0003), so a folder that * flips native ↔ bridged must get a *new* runtime even when both modes resolve * the same physical core. Upstream has no bridged mode and keys on the core diff --git a/packages/vscode/src/stacks/test/master.ts b/packages/vscode/src/stacks/test/master.ts index 462891a..7ec58e4 100644 --- a/packages/vscode/src/stacks/test/master.ts +++ b/packages/vscode/src/stacks/test/master.ts @@ -406,7 +406,7 @@ export class RstestApi { // // The status-aggregation adaptation: the one-shot `showWarningMessage` // becomes the shared `version mismatch` status bar state with actual vs - // required versions. The floor is the same `>= 0.6.0`. + // required versions. The floor comes from the shared support matrix. // Skipped after dispose: the project's status was already forgotten, // and a mismatch re-latched now — for a root that may never come back — // would have nothing left to clear it. diff --git a/packages/vscode/tests/stacks/lint/coreResolver.test.ts b/packages/vscode/tests/stacks/lint/coreResolver.test.ts index cd2e802..39fe11f 100644 --- a/packages/vscode/tests/stacks/lint/coreResolver.test.ts +++ b/packages/vscode/tests/stacks/lint/coreResolver.test.ts @@ -37,9 +37,9 @@ describe('CoreResolver', () => { it('identifies a core by its real path, so a symlink is the copy it points at', async () => { const root = temporaryDirectory(); const store = writePackage( - path.join(root, 'store', 'core-0.8.0'), + path.join(root, 'store', 'core-0.9.0'), '@rslint/core', - '0.8.0', + '0.9.0', ); const link = path.join(root, 'app', 'node_modules', '@rslint', 'core'); fs.mkdirSync(path.dirname(link), { recursive: true }); @@ -59,8 +59,8 @@ describe('CoreResolver', () => { const root = temporaryDirectory(); const left = path.join(root, 'left'); const right = path.join(root, 'right'); - installPackage(left, '@rslint/core', '0.8.0'); - installPackage(right, '@rslint/core', '0.8.0'); + installPackage(left, '@rslint/core', '0.9.0'); + installPackage(right, '@rslint/core', '0.9.0'); const folder = folderOf(root); const resolver = new CoreResolver(); @@ -89,8 +89,8 @@ describe('CoreResolver', () => { // land on the same physical core. Upstream, which has no bridge, keys on // the core alone. const root = temporaryDirectory(); - installPackage(root, '@rslint/core', '0.8.0'); - const rstack = installPackage(root, 'rstack', '0.6.1'); + installPackage(root, '@rslint/core', '0.9.0'); + const rstack = installPackage(root, 'rstack', '0.7.2'); const shimPath = installShim(rstack); const folder = folderOf(root); const resolver = new CoreResolver(); @@ -109,10 +109,10 @@ describe('CoreResolver', () => { }); it('refuses a core below the floor and names its directory', async () => { - // With several cores in one folder, "0.7.3 is not supported" alone would + // With several cores in one folder, "0.8.2 is not supported" alone would // not say which one to fix. const root = temporaryDirectory(); - const core = installPackage(root, '@rslint/core', '0.7.3'); + const core = installPackage(root, '@rslint/core', '0.8.2'); const resolve = () => new CoreResolver().resolve( documentAt(path.join(root, 'src', 'index.ts')), diff --git a/packages/vscode/tests/stacks/lint/status.test.ts b/packages/vscode/tests/stacks/lint/status.test.ts index 6c54021..76320c3 100644 --- a/packages/vscode/tests/stacks/lint/status.test.ts +++ b/packages/vscode/tests/stacks/lint/status.test.ts @@ -72,13 +72,13 @@ describe('Rslint status classification', () => { expect( statusForRslintStartFailure( new RslintVersionMismatchError( - '@rslint/core 0.7.3 is not supported, this extension requires >=0.8.0', + '@rslint/core 0.8.2 is not supported, this extension requires >=0.9.0', ), ), ).toEqual({ kind: 'version-mismatch', detail: - '@rslint/core 0.7.3 is not supported, this extension requires >=0.8.0', + '@rslint/core 0.8.2 is not supported, this extension requires >=0.9.0', }); }); diff --git a/packages/vscode/tests/stacks/lint/worker.test.ts b/packages/vscode/tests/stacks/lint/worker.test.ts index 85128ac..733bc97 100644 --- a/packages/vscode/tests/stacks/lint/worker.test.ts +++ b/packages/vscode/tests/stacks/lint/worker.test.ts @@ -91,8 +91,8 @@ describe('lint worker config refresh', () => { it('stamps the core protocol and pins the explicit shim on every refresh', () => { const configPath = path.resolve('/project/rslintConfig.js'); for (const reason of ['initial', 'config-change', 'dependency-change']) { - expect(stampConfigRefresh({ reason }, 2, configPath)).toEqual({ - protocolVersion: 2, + expect(stampConfigRefresh({ reason }, 3, configPath)).toEqual({ + protocolVersion: 3, reason, configPath, }); @@ -100,8 +100,8 @@ describe('lint worker config refresh', () => { }); it('leaves native discovery without an explicit config path', () => { - expect(stampConfigRefresh({ reason: 'initial' }, 2)).toEqual({ - protocolVersion: 2, + expect(stampConfigRefresh({ reason: 'initial' }, 3)).toEqual({ + protocolVersion: 3, reason: 'initial', }); }); @@ -138,7 +138,7 @@ describe('lint worker config refresh', () => { try { registerEditorProxy(workerConnection, goConnection, { - protocolVersion: 2, + protocolVersion: 3, configPath, observeRefresh: (reason) => observedReasons.push(reason), requestStop: () => undefined, @@ -156,7 +156,7 @@ describe('lint worker config refresh', () => { method: 'rslint/configRefresh', hasParams: true, params: { - protocolVersion: 2, + protocolVersion: 3, reason: 'config-change', configPath, }, diff --git a/packages/vscode/tests/stacks/test/bridge.test.ts b/packages/vscode/tests/stacks/test/bridge.test.ts index 00aee1e..364af63 100644 --- a/packages/vscode/tests/stacks/test/bridge.test.ts +++ b/packages/vscode/tests/stacks/test/bridge.test.ts @@ -43,7 +43,7 @@ const makeTmpDir = (): string => { * `dist/rstestConfig.js`. */ const createWorkspace = ({ - version = '0.6.1', + version = '0.7.2', shim = true, }: { version?: string | null; shim?: boolean } = {}): string => { const root = makeTmpDir(); @@ -101,7 +101,7 @@ describe('resolveRstackShim', () => { const shim = resolveRstackShim(configDir); expect(shim).toBeDefined(); - expect(shim?.version).toBe('0.6.1'); + expect(shim?.version).toBe('0.7.2'); // The same file `rs test` injects with `--config`. expect(shim?.configFilePath).toBe( path.join(configDir, 'node_modules', 'rstack', 'dist', 'rstestConfig.js'), @@ -197,14 +197,14 @@ describe('resolveRstackShim', () => { }); it('refuses an rstack older than the support matrix floor', () => { - const configDir = createWorkspace({ version: '0.6.0' }); + const configDir = createWorkspace({ version: '0.7.1' }); expect(resolveRstackShim(configDir)).toBeUndefined(); expect(reported).toEqual([ { kind: 'version-mismatch', detail: - 'rstack 0.6.0 is not supported, this extension requires >=0.6.1', + 'rstack 0.7.1 is not supported, this extension requires >=0.7.2', }, ]); }); diff --git a/packages/vscode/tests/versionCheck.test.ts b/packages/vscode/tests/versionCheck.test.ts index 4db18ff..1594ad7 100644 --- a/packages/vscode/tests/versionCheck.test.ts +++ b/packages/vscode/tests/versionCheck.test.ts @@ -10,19 +10,19 @@ import { describe('support matrix', () => { it('pins the launch support floors', () => { expect(SUPPORT_MATRIX).toEqual({ - '@rslint/core': '>=0.8.0', - '@rstest/core': '>=0.6.0', - rstack: '>=0.6.1', + '@rslint/core': '>=0.9.0', + '@rstest/core': '>=0.11.11', + rstack: '>=0.7.2', }); }); }); describe('checkPackageVersion', () => { it('accepts versions at and above the floor', () => { - expect(checkPackageVersion('@rslint/core', '0.8.0').kind).toBe('ok'); + expect(checkPackageVersion('@rslint/core', '0.9.0').kind).toBe('ok'); expect(checkPackageVersion('@rslint/core', '1.2.3').kind).toBe('ok'); - expect(checkPackageVersion('@rstest/core', '0.11.5').kind).toBe('ok'); - expect(checkPackageVersion('rstack', '0.6.1').kind).toBe('ok'); + expect(checkPackageVersion('@rstest/core', '0.11.11').kind).toBe('ok'); + expect(checkPackageVersion('rstack', '0.7.2').kind).toBe('ok'); }); it('accepts prereleases of a supported range', () => { @@ -30,11 +30,11 @@ describe('checkPackageVersion', () => { }); it('rejects versions below the floor', () => { - const result = checkPackageVersion('@rstest/core', '0.5.9'); + const result = checkPackageVersion('@rstest/core', '0.11.10'); expect(result.kind).toBe('mismatch'); if (result.kind === 'mismatch') { expect(formatVersionMismatch('@rstest/core', result)).toContain( - '>=0.6.0', + '>=0.11.11', ); } }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 749d6fe..d96a4dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^11.1.0 version: 11.1.0 rstack: - specifier: ^0.6.4 - version: 0.6.4(jiti@2.7.0)(typescript@5.9.3) + specifier: ^0.7.2 + version: 0.7.2(jiti@2.7.0)(typescript@5.9.3) packages/vscode: devDependencies: @@ -24,14 +24,14 @@ importers: specifier: ^1.0.0-beta.1 version: 1.0.0-beta.1(typescript@5.9.3) '@rslint/core': - specifier: ^0.8.0 - version: 0.8.0(jiti@2.7.0) + specifier: ^0.9.0 + version: 0.9.0(jiti@2.7.0) '@rstackjs/load-config': specifier: ^0.1.2 version: 0.1.2(jiti@2.7.0) '@rstest/core': - specifier: ^0.11.5 - version: 0.11.5 + specifier: ^0.11.11 + version: 0.11.11 '@types/istanbul-lib-report': specifier: ^3.0.3 version: 3.0.3 @@ -104,8 +104,8 @@ packages: cpu: [arm64] os: [darwin] - '@ast-grep/napi-darwin-arm64@0.45.1': - resolution: {integrity: sha512-CthYcA0H3z5A2EHKH4rhSuFzpYUtxqUMnohmejxtMS6wiAgriKhOCopxN8XKclspYMtQyX2GC/PbvcU3dIbQHw==} + '@ast-grep/napi-darwin-arm64@0.45.2': + resolution: {integrity: sha512-29+sfXTJ7xxqgTuWAHA89gDAQIiJyAZ1ZiHoupjKIqyn0mhXrktO1WOghlDzyYs++hITEPOeXftxy48Y0tDGDQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -116,8 +116,8 @@ packages: cpu: [x64] os: [darwin] - '@ast-grep/napi-darwin-x64@0.45.1': - resolution: {integrity: sha512-PhlXMDEEH5fMjXjYcrbeNgGqrojj4zN8C7eMQC6M4pVkuW74uPhrblD4KUbNunp5I2LkWCdKOs36jhBaZe1iPw==} + '@ast-grep/napi-darwin-x64@0.45.2': + resolution: {integrity: sha512-PUjh7Zf4dKNzYLOYhX5wU6O4BgRPdJnD9zkS1n+/5SeK0U1L5YL486RjNgFt9Xyff0PGtP/wDeoHMF5PhKEwsw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -129,8 +129,8 @@ packages: os: [linux] libc: [glibc] - '@ast-grep/napi-linux-arm64-gnu@0.45.1': - resolution: {integrity: sha512-XScjs95/SrsV6kLl9MnF2qbqwKU79bcBA3JHi6xUu+hf0uZ0lc6MsZ595cEy5yw9PYRhgqwrT3wta9p4qU4jpg==} + '@ast-grep/napi-linux-arm64-gnu@0.45.2': + resolution: {integrity: sha512-bnGKLLHWO13pjPChOFq7Ifqj3HJdOAxMQAGDCUC2JSJhO2YL8/xBZrpN0cHIWNuoUNSAXjCtr5AsCnPz/3jlFg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -143,8 +143,8 @@ packages: os: [linux] libc: [musl] - '@ast-grep/napi-linux-arm64-musl@0.45.1': - resolution: {integrity: sha512-qjH5CN5KIUdJW2dHfp8W57QsP6H0mA6E/rboKEzAxw6Ant1q2ZKqE3bLHUZMDoZXOBGdCODSZm0bTDcctiP49g==} + '@ast-grep/napi-linux-arm64-musl@0.45.2': + resolution: {integrity: sha512-FXVb4/V55THjhKxi5zWVrAO8JQj+/DiYP7JLsqenkm5V3UNuC8p2opGOyQpUvNpvcqJiZA9Hl+Onj/yfwSVr/A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -157,8 +157,8 @@ packages: os: [linux] libc: [glibc] - '@ast-grep/napi-linux-x64-gnu@0.45.1': - resolution: {integrity: sha512-nPP0y5EnehCgmYqvVDKSvH4vHbEFdAi8L+Kq2Sz94vK32yv4eOWf9vWhgoPscWpw76GWuwhpDvME8SZARnS3DQ==} + '@ast-grep/napi-linux-x64-gnu@0.45.2': + resolution: {integrity: sha512-mtEIPLV9MW2PBswFcp3ydM4T5Ub73s89SRd0QMT2+DfA9XBLCLhnC+r/Yt4eRgnf8FyNx49bFTPxXvFKscr9hw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -171,8 +171,8 @@ packages: os: [linux] libc: [musl] - '@ast-grep/napi-linux-x64-musl@0.45.1': - resolution: {integrity: sha512-sg50LKH7TskWd/boWVFp9gwKc3Jd8sg0f8P6T2VQemX/EOj+OFaMJ2+y7Ok17WI/dODkrZgAPUwq7RAvMzLtqg==} + '@ast-grep/napi-linux-x64-musl@0.45.2': + resolution: {integrity: sha512-WLLHxDmuXkb/e3mz/xDCrB2dZPzv1ntsepuRTtpaIGczxnQTgFSzX/CXPD0e1MfsU/QL1AiXxxni8w+NGy/ZpQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -184,8 +184,8 @@ packages: cpu: [arm64] os: [win32] - '@ast-grep/napi-win32-arm64-msvc@0.45.1': - resolution: {integrity: sha512-wnTmD34OD9bUpdBVTb58P0y+YPb/2C2g07zj96LSk5R4pdcEMrCFsrWZlaNwtEV4q7L9BfLgrxq3MBGI8c6doA==} + '@ast-grep/napi-win32-arm64-msvc@0.45.2': + resolution: {integrity: sha512-04iOFaMzD2nf8CKw3nURWN42900wqPtUTQaMo1I2KRk3qbgtHSJjJoVJGAWUXkCq4LhPg3Xlk1s+ssWf4rNm2A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -196,8 +196,8 @@ packages: cpu: [ia32] os: [win32] - '@ast-grep/napi-win32-ia32-msvc@0.45.1': - resolution: {integrity: sha512-gRyJwRPY1mWRtnJ6AMncV2pNU+B2indjLCb9z/+aZrUN5u/gOxYryEzvRatyC9rVUMeQGJD+k0htpsqIwgXVbA==} + '@ast-grep/napi-win32-ia32-msvc@0.45.2': + resolution: {integrity: sha512-tE3y0RQcajocKwpYLbgHKd4lzGGAx1wGMA0bGPsWdoFK8VSob6ZDuYdSlSdnaRs8jAc4F3axToNRKn15p+0/Dg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -208,8 +208,8 @@ packages: cpu: [x64] os: [win32] - '@ast-grep/napi-win32-x64-msvc@0.45.1': - resolution: {integrity: sha512-mzfMmCO7tSNks+NGkGkSnDBKxBjHoOLAMJt2IbAkMYATxHC0RqfBoN7Qtd02VGhHWEfwWLPv/wU6MrvweZ3jdQ==} + '@ast-grep/napi-win32-x64-msvc@0.45.2': + resolution: {integrity: sha512-o8Z5Z42TAJe0fPnb11rrjtte58wlw/MuR4KpVMHl8IhJLBBR7gHR0E8wfMz88TxzsQz0U2KYev0k0a2fV4i0sQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -218,8 +218,8 @@ packages: resolution: {integrity: sha512-Hb4o6h1Pf6yRUAX07DR4JVY7dmQw+RVQMW5/m55GoiAT/VRoKCWBtIUPPOnqDVhbx1Cjfil9b6EDrgJsUAujEQ==} engines: {node: '>= 10'} - '@ast-grep/napi@0.45.1': - resolution: {integrity: sha512-4cmGQEHoP9GLHEhGvd1vgSzO3Y6KF7FczDk4+q/VfXV9/9sNxNVgNHC8t3BglhIADDcoHrCMc9aw4lHG+M240A==} + '@ast-grep/napi@0.45.2': + resolution: {integrity: sha512-hBA5c7JV6OM7zFWoLjUNZhsDpxEIEIeew5S3z1giwK5tPQqobuFfM2OhS45bN3E0+yQtgCX/o8/AEHKbGD3ykg==} engines: {node: '>= 10'} '@azu/format-text@1.0.2': @@ -636,16 +636,6 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@rsbuild/core@2.1.13': - resolution: {integrity: sha512-Z+6MzmjOio4+bFZQ24k+7ge/oNCOdXIunAssrswTNE8AIf6mcyXpJZevRXRiOEMZasRPA8VNyh+9JngQLg729Q==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - core-js: '>= 3.0.0' - peerDependenciesMeta: - core-js: - optional: true - '@rsbuild/core@2.1.9': resolution: {integrity: sha512-yqf1hFZ3wbMYI431LqsxLH3r0VZkfyarVKTf7kMeIiGe0YLwsrgsfp+sKpIyVkQkq60J0qyp6l/CoqqsQZqEwQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -656,8 +646,8 @@ packages: core-js: optional: true - '@rsbuild/core@2.2.0-rc.0': - resolution: {integrity: sha512-f6orjv+wOR1u7KchE/vANGP0Eg7AP0UaiM0qn4n+5I0HOUdkVVbNCA1eZSpyX+TJ9bIdZtkbR6T47vBdoFr1MA==} + '@rsbuild/core@2.2.3': + resolution: {integrity: sha512-oJrYtYDhb7AMwY8HIda2hgMuuxHkYPYar4svdS5uTq0fXY0M1wLfllkTQz0d729pNJ4S//6GUM1WX5LsW2mFLw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -666,8 +656,8 @@ packages: core-js: optional: true - '@rslib/core@1.0.0-beta.1': - resolution: {integrity: sha512-HHPZ+wTUKT/3bEhw2y0JB0O62wMuljkSHVZelLbSGhBflCaUt+D3LohBcIxYW6bhzPbUp4gkJXo1pdTpxiuNLQ==} + '@rslib/core@1.0.0': + resolution: {integrity: sha512-eZNXCWU1v5oti4+DKCunc76DkNnYqMgRtks9UyZRRFlmaK4pKAxhejeCUS+XkbMurGIAa+aDyVynQD7DXEgK1w==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -679,8 +669,8 @@ packages: typescript: optional: true - '@rslib/core@1.0.0-rc.1': - resolution: {integrity: sha512-xKK79mKdxhqi+tNpbIaJgAUWv1RkH5En+W6eBflXUJGhoSacx97iCoLLQl9mAIti0c7l3zpGlvOlnwxTP2llaQ==} + '@rslib/core@1.0.0-beta.1': + resolution: {integrity: sha512-HHPZ+wTUKT/3bEhw2y0JB0O62wMuljkSHVZelLbSGhBflCaUt+D3LohBcIxYW6bhzPbUp4gkJXo1pdTpxiuNLQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -692,17 +682,8 @@ packages: typescript: optional: true - '@rslint/core@0.8.0': - resolution: {integrity: sha512-MfMC6lxiXoKPWsYRu9fuAxWA9mCD/I4E5Aa6Sl20a6q5w8r2C12fJM+bceC01AMGYuvWygKHqS3QBJdJHjniRw==} - hasBin: true - peerDependencies: - jiti: ^2.7.0 - peerDependenciesMeta: - jiti: - optional: true - - '@rslint/core@0.8.1': - resolution: {integrity: sha512-cqpDcgJ8TgBC+I/OZkICze0sSNcsdjtxNCv01fQTYvgIvBkwbhNlg4celD3XEPfA8B2B2H/woYgeaX0IPEeTMA==} + '@rslint/core@0.9.0': + resolution: {integrity: sha512-rY8F6kdQ/XkBiflaNzglJdMfxl0Lv/NFXppK0kAhx2P2CvogsXIA/z82Wxtk+Cg9uFHou67N9/iqmWXgdtSoDw==} hasBin: true peerDependencies: jiti: ^2.7.0 @@ -710,333 +691,197 @@ packages: jiti: optional: true - '@rslint/native-darwin-arm64@0.8.0': - resolution: {integrity: sha512-Bo6kXL1/TkjVUl6maZ3Sw+JEnZUkgpUD35v06jyBTcjpxlXE6yqFj66NAzB/G2CVu220ADp/FEE7l2Kocrefhg==} + '@rslint/native-darwin-arm64@0.9.0': + resolution: {integrity: sha512-xhdBrVALZTX0v4ZghKY7RGO87DpItk4DVvKm3MGih4w1o2WF2u+6n/mohvG7/ts7c8T88HIbLfK4luQ8kMDCsg==} cpu: [arm64] os: [darwin] - '@rslint/native-darwin-arm64@0.8.1': - resolution: {integrity: sha512-HlucYn3RLELMHRjlvKcr0vPlE/2RUs6BVn5ClRKFcLShON4j+q8NWaIPHwY5zrQjqq7GJxX3b/7G9skU+TrQ2w==} - cpu: [arm64] - os: [darwin] - - '@rslint/native-darwin-x64@0.8.0': - resolution: {integrity: sha512-F5pabdH7dluxoj7PGuQjPYuoNU+yxnctcJzqrb/CZ122FLP3uJPrbiLufh+ZF9e5ui700rNyb7macJqnHlBV2w==} - cpu: [x64] - os: [darwin] - - '@rslint/native-darwin-x64@0.8.1': - resolution: {integrity: sha512-HV4FOwq3ofuoMkUxjEyGvaOGyr79OzFhAIpMcT9uOO6BxEA/PndepwBAPmkBt33aewm2oPKM2khsC582XTsxew==} + '@rslint/native-darwin-x64@0.9.0': + resolution: {integrity: sha512-xuluXYUKizRZD/70WILvn+OeNdBT6izU81vhiNHVYdEQmfsqaqE8fthKGmQvaRu/DNL3CgVRPR+PzOAcQzPpOw==} cpu: [x64] os: [darwin] - '@rslint/native-linux-arm64-gnu@0.8.0': - resolution: {integrity: sha512-SSgSjyaeXI032Wk8bq6VmkLQTWOEqHZH5MWAk3831pd/G2rWr2XcoDi5Wf6w0o2rSCeYzkYbIejOePYwIKT4Lg==} + '@rslint/native-linux-arm64-gnu@0.9.0': + resolution: {integrity: sha512-J9uHBg/8Z9WanEKBXaPNZz0h+P8qtOLwjVqwEcOwYm1yLHRY70A7XqI6cRVIx72gXKGWtNBT2BRw9p8CWQUhgg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rslint/native-linux-arm64-gnu@0.8.1': - resolution: {integrity: sha512-O9kvvw2O7WAzeBAp7KSfXVbyl4Q4hAY1rUSRpeJp9hOY3yQUipE98qF29QicbXTRsoZZooMTmrjV/0EiYGL8OA==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rslint/native-linux-arm64-musl@0.8.0': - resolution: {integrity: sha512-50VDZQFAc9kp6rbOUOjyppVjC3d3AdbOJyA6JxlhK3mp8a/8sPIqWG0BlfcN/7ZpwdZrFsQt2Ds+0yMXITfu5A==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rslint/native-linux-arm64-musl@0.8.1': - resolution: {integrity: sha512-I92YjEMPcdeXz29rGuWR7kKjlek3LG/kcLHaBop6ucYkAXbuwdCwALM/JKxjcnRjoEZA3qR4QCRu92Llbzh+Ig==} + '@rslint/native-linux-arm64-musl@0.9.0': + resolution: {integrity: sha512-3ICIPH1oZOuMuZp+4hRhU+Af34U/2MNFB1yN+yi/jfJP+qBEExQbeBOS4J6HOecx9RJXcFvPF2ZI68l4g8/DPQ==} cpu: [arm64] os: [linux] libc: [musl] - '@rslint/native-linux-x64-gnu@0.8.0': - resolution: {integrity: sha512-wfc/UfnuTBAofwLPK5MLB2Hus1YYnsxP2MVchp380fUvMfQuGFPzz1WOAUY66zqrsrDKpUJsh3V1bx7c8DTlJA==} + '@rslint/native-linux-x64-gnu@0.9.0': + resolution: {integrity: sha512-vlzcruA/t+0XvdK2S0bIS00H9Mpkrwo/hIFvpyUONgxi2WaO7XNDtgTWAsajB40WmvezYYLKs45LgkVXpxSCFA==} cpu: [x64] os: [linux] libc: [glibc] - '@rslint/native-linux-x64-gnu@0.8.1': - resolution: {integrity: sha512-9uh4XygsKs2lj7JWM2yi92qjrgrXM7slppAgTQnFfkiRoKASVt4M2anSiJfs2v5hU3UhsmVotXAOYtWoV5Hd3g==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rslint/native-linux-x64-musl@0.8.0': - resolution: {integrity: sha512-MTYcAMz6IZWb6ZmLo12pakCBA8mS3EW9cOI0jd3At6vs0Yia9YbeOAUiWbIC4Z9yyp75b8ZQCQMRSnY6rDnbaA==} + '@rslint/native-linux-x64-musl@0.9.0': + resolution: {integrity: sha512-+gPExuOtSPaP7jAWeMRnTobvQOhaqo9857K/7T2qvc15ksnYqqygMhzcVzm9Wt7L4KBoW6PR1uvwgmPaK4B0IA==} cpu: [x64] os: [linux] libc: [musl] - '@rslint/native-linux-x64-musl@0.8.1': - resolution: {integrity: sha512-pcWlxs9ZLaETAoDaYcO6f8jeuE+nZliIVrhCJ1eWX+aTB+WPKHVHK6dFMPjxqsvUtwbK1zfpTeo8rOaeGRrSfQ==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rslint/native-win32-arm64-msvc@0.8.0': - resolution: {integrity: sha512-hids2jgNWBxZf2mSBLZJxubWRLWlJapEfeJHVokzjpRpBZZNv7O06enoyXSb4Lswff9WaHssIqu1sfZIc9lC2g==} - cpu: [arm64] - os: [win32] - - '@rslint/native-win32-arm64-msvc@0.8.1': - resolution: {integrity: sha512-GGRcKGBOQs7WsxSfXWRQnY15nRyikaDajWoefhKnYVj+AMg6BEWWsdH3Q2xOOuVMGNCC/SoXUAGb9cGpV7Smdg==} + '@rslint/native-win32-arm64-msvc@0.9.0': + resolution: {integrity: sha512-YK5uTuk6zNXru2cOwivbZPH25C7u8RSQlKm5tOqwhaQ0ShCVDdh7z0SXvHvLdQ2VJen+30Vp1izAMZ7Zp/8KaQ==} cpu: [arm64] os: [win32] - '@rslint/native-win32-x64-msvc@0.8.0': - resolution: {integrity: sha512-bun7uURKl6NdChwmw/i2mk3Yj9klZQyh1uRbIQG0RDEJ9oTIbU5M3c7K5sd/Rukat0TVCGgbBAzR+YB0DAXPZQ==} - cpu: [x64] - os: [win32] - - '@rslint/native-win32-x64-msvc@0.8.1': - resolution: {integrity: sha512-rokvuC3MKTNMbGU5eh/p6a715xzl1yZvjh9gQByNPKGHrF3OUmqN1c6QGCtlNU8HGHekvMS9dUNzjTCoMenZjQ==} + '@rslint/native-win32-x64-msvc@0.9.0': + resolution: {integrity: sha512-7elW5V8zm3McqA0LCjBBR7SDwQ5hRW+hrnJcCmrspSnBeUPFqnJfvUvsQPgbJz3pdrkBzzjZMvUgEYyBQ9dl8A==} cpu: [x64] os: [win32] - '@rspack/binding-darwin-arm64@2.1.10': - resolution: {integrity: sha512-DZlcTpbIb2mjeS1aSG4k01UH33Zj7T+k8ZylPK6HmsKs4JvK4wgpWFC78WVv3p/Aj3MZS6DwtDLwpZ2Ihj/fpg==} - cpu: [arm64] - os: [darwin] - '@rspack/binding-darwin-arm64@2.1.7': resolution: {integrity: sha512-DwxzrXRctueP/3Pyom9JHcIsRShuEAlHb+mrE5OPT+4cdHI1UnJpbzEvEDLTo4IKJhDb3vjXdHLtjqtL0SYbeA==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-arm64@2.2.0-rc.0': - resolution: {integrity: sha512-Uvy3YnN1pCLe+2/8hF06KiCPegf8ztOuM3VE/p0MJKRitkL5DPoZVHyc40zl6e+O5WB/9tJ5tnEgRG9pDWxFng==} + '@rspack/binding-darwin-arm64@2.2.2': + resolution: {integrity: sha512-/le/AvV4HSinXTPs2Lqpujxt189Z5T10Ggt96QzckLRPvIchzqoavVDDjltzC7XcaZ87XCH/X06jNKgzkcBBNA==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@2.1.10': - resolution: {integrity: sha512-my/0h2LwxCRT6cg3oDDC2e0ZOxQLVajAdIcv0fqnQk5JRNvVuL89PuTutitnSqie1A0/JSL8OQz5XHwmoS3kow==} - cpu: [x64] - os: [darwin] - '@rspack/binding-darwin-x64@2.1.7': resolution: {integrity: sha512-kPbrYvR/XUHfAMgRVq3QnC71DW/qjwsPj+3hEUuEnRmlploPNy9u8Szf1IHKSVUSrVZBTgDyMoZQdxYLfhResw==} cpu: [x64] os: [darwin] - '@rspack/binding-darwin-x64@2.2.0-rc.0': - resolution: {integrity: sha512-UQO0PgLarsA0lv96uqCTAH1eAnAIPHb+qhMfds5ubWKZgKlr0taGQl253C3DN5pfzbHWfNQgAfVUaVMydm9czw==} + '@rspack/binding-darwin-x64@2.2.2': + resolution: {integrity: sha512-uFIcUPUXiPxM6ljenLafp5TemT8eLZm1riRn8fJYmpqNCK+aCcTaud18XHZpI5SjzzcY+xUHfVShgvNzKXuf2g==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@2.1.10': - resolution: {integrity: sha512-laevn9g+E5PAUEGqiKe6Ju5KApsuQYp+bPI17XS3Lkl8eqL5pS/BmHYU7QMlst4GzV8+wlruVTMh//+st6Vqzg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rspack/binding-linux-arm64-gnu@2.1.7': resolution: {integrity: sha512-VFB+YXM3kZ6IIuLV64H3vgnwqvQIIaqfR/aeGwuxYvwcZsrgblSBmXMeDULdgDjqP8Yr0VaFMBBiD9OtG5KdFw==} cpu: [arm64] os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-gnu@2.2.0-rc.0': - resolution: {integrity: sha512-ZggL6W9ckpvhqIPi7K3zDRiEaQd5Co2qRnN5J8OMmBkQlvYQek0CE/SZHFcZsDM0//6+0mkI+VjaTeWdvqJsaQ==} + '@rspack/binding-linux-arm64-gnu@2.2.2': + resolution: {integrity: sha512-Pjby4pDSMNJQK2VBzpgCj6lb+DGuenS1fEDb6xi5/apbJb9v5WE+e43Mz7i+XqgXS8e846pjaONV3KM5WKB1LQ==} cpu: [arm64] os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-musl@2.1.10': - resolution: {integrity: sha512-V71+Qz5G72+ROZXrJn5zxOszdG1AEbO8pcC/itXXtf4yRR6a3bVHKNKGhipBNxb8eI6cnD/01FH1h3ZG655jLw==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rspack/binding-linux-arm64-musl@2.1.7': resolution: {integrity: sha512-Mzbxyg0aJ+ITj526Iuz0enEDYY6WxhFIwEKXqwjQh+Vpd5v/+aPzPo83sSQVX/3puBV1sbmviTURbh6N9e1fvA==} cpu: [arm64] os: [linux] libc: [musl] - '@rspack/binding-linux-arm64-musl@2.2.0-rc.0': - resolution: {integrity: sha512-MfDTg9fn/17lRtGMsHLK8BQJs+AEtTsVMWOg1CMou/ls8IrucXoFZ9Ux0i2Jq1ph1ZiKgr4l7pMzdk3SXpNiQg==} + '@rspack/binding-linux-arm64-musl@2.2.2': + resolution: {integrity: sha512-0u9O7tTVT2z+F6o/eEY6f6+My8Jn9U56QiBwkfy90ZaoAfZyQSSTxqaK/zA7W43oFxQefeCpiPas27VUzrSakw==} cpu: [arm64] os: [linux] libc: [musl] - '@rspack/binding-linux-ppc64-gnu@2.1.10': - resolution: {integrity: sha512-U7HlNzHcDtZ+LYOtOJmtx67kHEybZzUUAaP7aEXjGYO5WTCgh/176sW2UYP0rmZLrgUNFUuzn+B98RLaClNaVg==} + '@rspack/binding-linux-ppc64-gnu@2.2.2': + resolution: {integrity: sha512-N3lVnhq5qOvpmP5n386JzR1GcE8HzAqq4/r440Z6yle9m7PhVFJ6oXVWxgaDTYV0mtv9YLJmaG+YrjYfUa1vuA==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rspack/binding-linux-ppc64-gnu@2.2.0-rc.0': - resolution: {integrity: sha512-n84s99eIMr/4xQ1XCctxtu4AnchukynuyJ4DaJ4vlcRKVdFAnPSpUH669rAxztsby5xa3ftAASmxwXhMUFzMsg==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-riscv64-gnu@2.1.10': - resolution: {integrity: sha512-GMGTJpy9/ecE+5F5IfxZH4bXv0Wx/b2TiehTlCbTksbL+pKpLHYy0rwGdjWDKbmBkhxMMqPiC7PDnn9LbdnnLA==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@rspack/binding-linux-riscv64-gnu@2.1.7': resolution: {integrity: sha512-mpazwgT/Pse1720mvEJsoXfPkJ+enj0xUqpbe/wL6aedwjGT+9jJNB8HTJXE4XBX0UO7umGqcJMeKA6YsD2CDA==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rspack/binding-linux-riscv64-gnu@2.2.0-rc.0': - resolution: {integrity: sha512-s5bg/LlwnMSVXZfR16KGO3jVWUpobbPp90qE2DXwfaFpcLmMweUnANERM2mCpIiW3MuVnTAXTEjvEcxfB4mXEw==} + '@rspack/binding-linux-riscv64-gnu@2.2.2': + resolution: {integrity: sha512-ReClZyp32/rJkUDV/oGDU0X6BCFyEkTR6r4stFwm/qOOaG6mUMRzZe4gur8Yh979p4Hiz9EdkmfEHY02GBXcaQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rspack/binding-linux-riscv64-musl@2.1.10': - resolution: {integrity: sha512-rkurnAWc04vIbzG1QCrPBWSJadZvaOt1mazFH3EdiJO8VUiu0I1T9zdiwuDOPrd50lOKIZlcTXbd5aaAkWEnvQ==} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@rspack/binding-linux-riscv64-musl@2.1.7': resolution: {integrity: sha512-oU/l3soPRsDEWn7KZic+npyTMM2N1kRdHjoJ+L5IUBXs8bjdTXPLoyTbTdIOza5ZSoT4+UeEiEryj4BB0tQE5w==} cpu: [riscv64] os: [linux] libc: [musl] - '@rspack/binding-linux-riscv64-musl@2.2.0-rc.0': - resolution: {integrity: sha512-XNjEnkrNv67CZ4/IhkPQVfNkz9JHevelgZspzuuJOOyn+Z9b1m8JN+shv5Kq06sSudN9aQpLLa6slbHlKGv9lA==} + '@rspack/binding-linux-riscv64-musl@2.2.2': + resolution: {integrity: sha512-mqsorvTNerr3r8zI35NFTPYATPDlhepdiUhZjKT6ylqpHlP7vLU9fp4aEMK/CuTv2f+IVsa0+iZqtMxHs2tSjw==} cpu: [riscv64] os: [linux] libc: [musl] - '@rspack/binding-linux-s390x-gnu@2.1.10': - resolution: {integrity: sha512-X+DyxkriZEAF/wihI7ERDv+CAS0mbMv36aEuQ+vXzTlvS6cSmpou/r29AHbvIF3NlG1UeAbDVlOs9QrMBZjpUQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-s390x-gnu@2.2.0-rc.0': - resolution: {integrity: sha512-OQpj1j6Jfy+YBYDSGwJisZZEXS3g0Y/M5xlb26yqlZBKA/7kamCMDccUPTKNpuJaRQXK1DUerBsA+AK8TELG3g==} + '@rspack/binding-linux-s390x-gnu@2.2.2': + resolution: {integrity: sha512-ql2Jub8QYWSugBppmj2u0SjcIj6fOQuAaLCYQOqU7zbvz/uuWTfoqmdWKExwrxeCU9Tzt7emVM0ETuVEpoca+A==} cpu: [s390x] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-gnu@2.1.10': - resolution: {integrity: sha512-Fat09V6jUuyo9qG7Wyj9cQ31VDfLmokXyBtGqKxY5OvSWHereB7QUub5btbPXHwbp6Iq4aAQyUbbLTzvR1YaBw==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rspack/binding-linux-x64-gnu@2.1.7': resolution: {integrity: sha512-7Gtpl3h3jtnOpk1mYQE8mRndXAO2ibI8mnAbs7klevdKey+ZHneWMoMi2yOMQhhI/ifWEFxDzyGJ8bdxo0XTsA==} cpu: [x64] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-gnu@2.2.0-rc.0': - resolution: {integrity: sha512-1QoW+7zjApCgL4v5P14AmnxfvOMCk131abSBCl/+u6h/aIainSwpf+O3ar0FqvkQaSPPOQJrg03ys57WyEwlAQ==} + '@rspack/binding-linux-x64-gnu@2.2.2': + resolution: {integrity: sha512-MNYKYEHrtIVEno2q5rgpou/JVffRwn109xPK3kxct95EojHsniNa8jwy6eEHeOazP4EN60Si7NElE3aQ6JssHw==} cpu: [x64] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-musl@2.1.10': - resolution: {integrity: sha512-lhHOnIJ4ClpIlA1f1L8aoxEZivYLjnjq5A6jKKz7BKsm+cHK8kqqEm6lO5KqA5xQT0Lonq1o28bmKHEj6JHInw==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rspack/binding-linux-x64-musl@2.1.7': resolution: {integrity: sha512-w+whI2Uy+DYkGN+MVkzMFWweL7B/s1gMqX+nvTE1vhOy3hGV0VyA9H6lqWjSD3I+eGkpYhN9Pr244cYnLpZOUQ==} cpu: [x64] os: [linux] libc: [musl] - '@rspack/binding-linux-x64-musl@2.2.0-rc.0': - resolution: {integrity: sha512-KLN4bIC3M1dSEuPBX1SPOEkBRyZnnIx8vBjfIFFpKa1bw/CsOHDF7Y6IAAsf9hir7dH3cUd4vaPSCVRM4KiTDw==} + '@rspack/binding-linux-x64-musl@2.2.2': + resolution: {integrity: sha512-y9/9CmE8lrECaF17GAhacibTL+SvlEPEotQnUuBFC/WFtXh8hU2E7a7bAkpYGSLH6kM0nrJZHO3hTvM1wdWOJw==} cpu: [x64] os: [linux] libc: [musl] - '@rspack/binding-wasm32-wasi@2.1.10': - resolution: {integrity: sha512-KY5YbWbuvYcoaLXnV+vzZOvGRCeb6jt4EpVpKdph1h1IJjwX/ju15EQ+GOe3iecZEdf0OttQcNVcwBkLkFT9ag==} - cpu: [wasm32] - '@rspack/binding-wasm32-wasi@2.1.7': resolution: {integrity: sha512-cDVgvzRdTgxaeM+a5Lx0+7/VAvunvwO0wNtQ3ATQGOtFCW5b7cUzhNPcytH5ZSJTnFWuxinlGwtar5yfcnkdZQ==} cpu: [wasm32] - '@rspack/binding-wasm32-wasi@2.2.0-rc.0': - resolution: {integrity: sha512-2Vvtckz5DNghQKQKwghfM4j30MOu7t9J7mbUCCi7mTUccpy7Cnr0HPmSV9Jx4sUj6vgQEV+8lIAIxNDNtr0Vhg==} + '@rspack/binding-wasm32-wasi@2.2.2': + resolution: {integrity: sha512-VbDIjjeFwZvMSKAOGY5IbU6lLzt6AHHHncTdMMkZ94Xk7O2BOHe9BXDV32Ln29TIW2C8m1fdxfPZWDiecVghUQ==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@2.1.10': - resolution: {integrity: sha512-z4GWzMLofaDGpAt9Z+MlN88LlUBDm+zM6R2GdOOPM6/4g/h3/+47OP7casmSL3AwTGYBEJqogwt08sRSosB6Cg==} - cpu: [arm64] - os: [win32] - '@rspack/binding-win32-arm64-msvc@2.1.7': resolution: {integrity: sha512-JDd85+iYwUvaG9Zrt5X7oIxRZRiTW+76FwkRakoXNy/5VAWQW32Jq4ESjSVz6l6mh0KnZxPq3TLMugacCPnLjw==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-arm64-msvc@2.2.0-rc.0': - resolution: {integrity: sha512-enPqTT2sdt6HgItyk6SA6ubvZ2UXkFIpwhsCuoL83z9vHoDw/Y8obC8L92nIuK6FDP17tokm/r1SFPhDZJIYcg==} + '@rspack/binding-win32-arm64-msvc@2.2.2': + resolution: {integrity: sha512-rfcNg0W3ZPZvXma1gTyEt9/Z8FxASIaQr+sMWTSaTPPaeU3xY1+0hYcrD0kUFNs3/5L4u63myI4R8qRXiuW3pA==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@2.1.10': - resolution: {integrity: sha512-7qcWdsZ+GuGtzKjqgy7wTN7Dso/ezIY8yhx1r2yIbcczdmXj4FhaEampMDp/25HwtKwIGBBoh6HHSt3JWxpTUg==} - cpu: [ia32] - os: [win32] - '@rspack/binding-win32-ia32-msvc@2.1.7': resolution: {integrity: sha512-y9PKEs6v9BLHV0i/4eaIRtxpATvSgcf/VYQkMT8mp+qWlPjUwDQNwU2ueWVGpff6INO+YAa7zobzziNFRgO7Lg==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-ia32-msvc@2.2.0-rc.0': - resolution: {integrity: sha512-qYeZLJDfboqkWmNcqazjUcld2QegyErDJVaCfAPm2mnneMmKhQWsOs/DmlqRfC4ePaQN9uOtu26iLwKy2o1sgw==} + '@rspack/binding-win32-ia32-msvc@2.2.2': + resolution: {integrity: sha512-TFPvr9RZw9oHIhooDhXHzWjKcHpGPTxkznSeM2poIWU0CdEuua2rVUfsrriTF1Dmx+9kMly61DQmyOHCbb+b2g==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@2.1.10': - resolution: {integrity: sha512-pgp23pLrzfhGnKycxzr7ifP17lAbWZEfnx1bX8gXtYrnpJ66DRNyTKSzxB6sa/HBWjS1L8PX5TjMZ44WfPydqQ==} - cpu: [x64] - os: [win32] - '@rspack/binding-win32-x64-msvc@2.1.7': resolution: {integrity: sha512-BjkOzcPY/K8YlRRvyywz0mDWk89MMxqAMhDmgBXCWorh1IjgKTsWDJ2lCGIM8M9CZXUG3khom8AfrOGwRT2I+g==} cpu: [x64] os: [win32] - '@rspack/binding-win32-x64-msvc@2.2.0-rc.0': - resolution: {integrity: sha512-bvzp27ZvpZW1vcCG/srk/K/6cffcR/kqDUcW8dWEMFlntPSBTml9lOC4ouSBpU7n/qIwG6hKE56FaTWWapc3Lw==} + '@rspack/binding-win32-x64-msvc@2.2.2': + resolution: {integrity: sha512-GvEGyL594dtWN9SoVnKWh0exrM8WLInaUjwcuA2JKbCi1ak/9iHxip/U1dY3DuVqBYBhmvYq96JPbl91xnzFjg==} cpu: [x64] os: [win32] - '@rspack/binding@2.1.10': - resolution: {integrity: sha512-vnu/UP5HnrND15lO9+VeG6eUrbTyycHNQNQ3XEiRiFojuoiGZkIZC3Hbzr8qQH44C6vScPODEPvvIVvLcO2LpQ==} - '@rspack/binding@2.1.7': resolution: {integrity: sha512-wYqi8TY30hsIzLry503o/Uqu7y9Ec7pEwN5TVmB7Pb3xHrR2eHsQPzdpF/GkCLUjQSgD2Es3CDVV1mr6zO/78g==} - '@rspack/binding@2.2.0-rc.0': - resolution: {integrity: sha512-/Q9ysTd5ajEbIS+Sv61trElR7pWAa5LvcWNrYT+AKI9APsVwy4Y3CIPjEkd7jYeNHl1PJWSLCOUy+BzRUICDUg==} - - '@rspack/core@2.1.10': - resolution: {integrity: sha512-YSS2/Xxz8uiG/KXDkqOoA3dTetNo/vysk7bAexQOrU8iuq7JuzDTTAwLKvWZnwmvME8M8m5wcM4YvfIwYmidHA==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 - '@swc/helpers': ^0.5.23 - peerDependenciesMeta: - '@module-federation/runtime-tools': - optional: true - '@swc/helpers': - optional: true + '@rspack/binding@2.2.2': + resolution: {integrity: sha512-gWjKDQfVQJSBh/I+y9WTlyERsiShSJ7eI6Yl0SJs/6gjx8t4ixuwWCsaEFFjwSL4nSn6ML5hNQ7UFY3gj72BWA==} '@rspack/core@2.1.7': resolution: {integrity: sha512-d5Ju3zXzGgbqQWvlMlLUtek2eFPIzsFe2QOF4nwTAknxo/4OZ64t+kPT9nM6fr3aZX93VK0R3v02/kZYIRrV9Q==} @@ -1050,8 +895,8 @@ packages: '@swc/helpers': optional: true - '@rspack/core@2.2.0-rc.0': - resolution: {integrity: sha512-2LAdAFF/ZdnBRltI+IievGhysby9LESxvELxS1ZVkPc1F6ZAJ1skIcCNOLmfZeoYwQ5nXZjdUCbCf9MFDMWJjg==} + '@rspack/core@2.2.2': + resolution: {integrity: sha512-/yztfDZR5syIPBrUpzBpL+6fhhl0IHBPcXlNr4tOMBULbocFIz7Z4/cqvf1ix0DBbKpIGx99v6N1IDbk2gi8hw==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 @@ -1062,89 +907,89 @@ packages: '@swc/helpers': optional: true - '@rstackjs/cli-darwin-arm64@0.6.4': - resolution: {integrity: sha512-mr+vVKE3uNzj9n7jzvWVDsEeDpoCCtk0pJN3evro1EVSsi703vzZuR0KNYI1VgjHvzO7re55cHCuQ0GhQHXPGw==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-darwin-arm64@0.7.2': + resolution: {integrity: sha512-po/JUgHx7DZ+Kmrbyy3L0/xr3rlZfVEk0Oy4D2xsjmAa3bHhP63B5XCOCyArLAZeMOqYPze9VaOcgWmGN5qWwQ==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [arm64] os: [darwin] - '@rstackjs/cli-darwin-x64@0.6.4': - resolution: {integrity: sha512-jmpV9ca1ftYh3kKsR4/7k5NlKjghBnQGOvvHvB6KxOWUF7Wwk/3Tntd49ERImtIEIV6DSqsnSXOCCwLftUjlMw==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-darwin-x64@0.7.2': + resolution: {integrity: sha512-RFgUgUUXC3ZLF2iKJplsK2Ty49VkVw+rR8y5Hgf+3BAUn9ffRCUAqscWQGPCrJZENVbTEUWDyEVCMNnUpM6+Ww==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [x64] os: [darwin] - '@rstackjs/cli-linux-arm64-gnu@0.6.4': - resolution: {integrity: sha512-U+X+Fjp1H/sE3uaZPkNadmSxLkJzqK+iQ9TaUWIBfvE2pM5OnXTwlRLEy4r9nswFdIA/FoU1ysDGr8amreBU6Q==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-linux-arm64-gnu@0.7.2': + resolution: {integrity: sha512-pNUbP/Bd962FznXLiJHnCcxpP/l1L9wmLsdIh43T8MQkY4m0Rv/s5tpA1rRcoqYHymhnVqWFcBAWxAPTSnOFFQ==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rstackjs/cli-linux-arm64-musl@0.6.4': - resolution: {integrity: sha512-98Jjp99CSmiKk+omjdJd4FE6HWfP3ieShzhbDd09LagpTP86eVnCL9UbRT7u5zed3G8IEQavOAHOiCDrkI9pgw==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-linux-arm64-musl@0.7.2': + resolution: {integrity: sha512-cOC1WNNAZEeUxA0Lvbkk0ZBGMQIhKcjlZZinwGkg6zHJ7jxW42/SvwjNdnXv1xEpQd59OGJ1aSR1/Gt7PpItzw==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [arm64] os: [linux] libc: [musl] - '@rstackjs/cli-linux-ppc64-gnu@0.6.4': - resolution: {integrity: sha512-Cak8uSTUEXLtWMRNswAh7B1ikQ6TtTP5bthEroeTQhRMYAmA1a5KeVnVNm7wttE5PDHKG0GsSHf8SgwxnuwNUA==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-linux-ppc64-gnu@0.7.2': + resolution: {integrity: sha512-jOk/KA3gpNapZO8y0Pc99XG7kjtgz6ndOGqKczgYD7VWBZcnMvD2KKI1GmeLxLf+9v0NiLtefj1CCtFEbqwXKg==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rstackjs/cli-linux-riscv64-gnu@0.6.4': - resolution: {integrity: sha512-9Oe2yXxYI9iEPbiPMhh94nXUTqmptdIij6gD/F//i1w+uXBqVGw+li6FTvtAsqUjMFO3AowbCYzhExHO8bYAfw==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-linux-riscv64-gnu@0.7.2': + resolution: {integrity: sha512-8fukS3qf1nrvYDQ4886gWphHsg9gyktSkUUudSEFkamKKKOCmdZn+tDUvEebxYiqQCUEC/mqkUc/jg7EQKvP7Q==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@rstackjs/cli-linux-riscv64-musl@0.6.4': - resolution: {integrity: sha512-oPX7MhLNQG/rm+Z23u13zrxrjkfg5iqO9Y9ot7xrpeBWpxxH4wm1kPpMTL3tY+bMihJy/IMhc4WOjDgQe6WqEA==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-linux-riscv64-musl@0.7.2': + resolution: {integrity: sha512-AciMUbdFgC/bDP05iuC13x4uPDISkyx2S9KiWDnjhs7bCjHv19bhPeOGLnpUWjAL86LxbHNuk+rM8wdt1da4gg==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [riscv64] os: [linux] libc: [musl] - '@rstackjs/cli-linux-s390x-gnu@0.6.4': - resolution: {integrity: sha512-hGlu3ZK6JjCxi2yrBhZhfWWBPrwpV1229/owDQDXYo/nvKZubp7+o8mrJoC0oFUdyvYvCQKGonWFimLOKjhDOw==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-linux-s390x-gnu@0.7.2': + resolution: {integrity: sha512-pj5V7Thbdc0FfK7Ngl3wLish7S0Yyy/ZmlH0Qd9UEMrNwMyMoyR+ZAJaWRjv7LFJQegPZNKBEgXfDc6Yeg7KjA==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rstackjs/cli-linux-x64-gnu@0.6.4': - resolution: {integrity: sha512-YCpS6zHFtJkYw4kwrYxSgjIMA6AuwkNxTIXaYkU59bvAzSJw0CZNpjbbvL6lielVrgJZ+majogBFIJJNHW38Qg==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-linux-x64-gnu@0.7.2': + resolution: {integrity: sha512-25Xzm2SXyDA1WkXrcHQym1ZI71ZK4n9AD32+0UT8IhVF+FGDBw0WG2UeOIr5XcaCCxgjGw1qec4aZ4GEd0/6vg==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [x64] os: [linux] libc: [glibc] - '@rstackjs/cli-linux-x64-musl@0.6.4': - resolution: {integrity: sha512-4Goc9RT5xb3D4xfHVnymAyhL92BkhCm5IIJ6EvNl0HqcgMEC9Tpf3uu4S1fqnNZxtqwrCyk6CxEkpJ7rUHZlAQ==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-linux-x64-musl@0.7.2': + resolution: {integrity: sha512-77E3zZ5nrIP86nh40mMOvAu547a8qPDfTcKUQU/4fVjcE7g7zX17gQGGOHubzoqWRxv5abTABkG/ovhxqZ8bwQ==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [x64] os: [linux] libc: [musl] - '@rstackjs/cli-win32-arm64-msvc@0.6.4': - resolution: {integrity: sha512-NJAXOMz6fbWaXwf+M+Z3yPddsh4xdXKFXVIwwZgu5LtzDTndBpGZIGqfWKRorsizrF8dVOb/0WL/YzdXKPP0RQ==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-win32-arm64-msvc@0.7.2': + resolution: {integrity: sha512-fg8vRphmnXZQIC0lo757rwbFJS1s7Ft9RT9BzaJrqEcMWinxHx9HtKCddJ1scEpgu5Al8Vws74KYu2XNcUFUbA==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [arm64] os: [win32] - '@rstackjs/cli-win32-ia32-msvc@0.6.4': - resolution: {integrity: sha512-sjDfDaPJtZED5F8uz1fohECOUCyd7WXdXYl3vEiY+juuAxyPG6GK/cqUq5NtXNO1JNlCJaxnpCYnZBUAW7cF6w==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-win32-ia32-msvc@0.7.2': + resolution: {integrity: sha512-veUcxZ+ZqGzkkRYfkKj0GHlIKxR3NKm/Va4taifZLFXcqDFrSAmoueXTfhIzsLrNII+g85gizyaMdjytWhw8Lw==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [ia32] os: [win32] - '@rstackjs/cli-win32-x64-msvc@0.6.4': - resolution: {integrity: sha512-C8O/i8n8UW3UUvGbIbVy6m1yf08bGFDA2LirJ3F1f5Ihl78AKQj78eLHjwQW+PFmpmUMP/Jwk3zaUvTRiC4GYw==} - engines: {node: '>=22.12.0'} + '@rstackjs/cli-win32-x64-msvc@0.7.2': + resolution: {integrity: sha512-E/+K2W+GtezTLaOZ87erMyWOEbivKZiN/m/Iqeg8UJrfp9Zkqm7yIhQnYwG+KxN0gp3qjB/zxlcYdN5fnnhOWQ==} + engines: {node: ^22.18.0 || >=24.3.0} cpu: [x64] os: [win32] @@ -1156,21 +1001,8 @@ packages: jiti: optional: true - '@rstest/core@0.11.5': - resolution: {integrity: sha512-ySXZaFqU1mJonm79ko7OwagG2AurULg1dLDErJguhv/sepEyjt39sq2Bpt42mOxHehiFcl0Pr0PrlaPltmYbbA==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - happy-dom: ^20.8.3 - jsdom: '*' - peerDependenciesMeta: - happy-dom: - optional: true - jsdom: - optional: true - - '@rstest/core@0.11.9': - resolution: {integrity: sha512-bU8jL1TruGsqHs0innQ4CheBmCLclBkifQ/6KhjofZe6ZQNv9/lsDUarnvUjF7ElByDju2rVyCuiQeDTQRatFg==} + '@rstest/core@0.11.11': + resolution: {integrity: sha512-7Ii2/2/ex1Oa0Kg5Qk5RKx2+e0I83BHLwH0/gn1B7IDwXCh5msFCF7yTyVGFuMltlm3E8Cf4QD7jadOEaBfXfw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -1352,8 +1184,8 @@ packages: cpu: [arm64] os: [android] - '@yuku-parser/binding-android-arm64@0.9.0': - resolution: {integrity: sha512-Wm/kEWpUkB1etH6N8+4Rcv3dlYO5asapNlaOEQBqsZc2LAl0TrCYMrx+pQTV+AmQE+JDbSYLzFjtHfLLvJ4W1Q==} + '@yuku-parser/binding-android-arm64@0.9.3': + resolution: {integrity: sha512-z3tDGTaUXD5Q4IuebFOY/QHxhR/SqujMhkMv9C5bh25upyFEXdafp0MsXQIIheWhVZzn5VMOniyxFni/7s9LgQ==} cpu: [arm64] os: [android] @@ -1362,8 +1194,8 @@ packages: cpu: [arm64] os: [darwin] - '@yuku-parser/binding-darwin-arm64@0.9.0': - resolution: {integrity: sha512-6OAkwsfjIwLE8f/Seu61MjoK3+WHl2KfdkUFxBq2kuz2+H1e1CFFRL5SXQb2WV1BA8kVbl6JFFsS48XJcUzxOQ==} + '@yuku-parser/binding-darwin-arm64@0.9.3': + resolution: {integrity: sha512-hzKvKSKS7z3ufnu1VkQYEoxmS6A5uNnkwukKnc2atxpWdq648nLVOqut4h1jUXjbM2WcoTfuZLF6AHAGFf8cmg==} cpu: [arm64] os: [darwin] @@ -1372,8 +1204,8 @@ packages: cpu: [x64] os: [darwin] - '@yuku-parser/binding-darwin-x64@0.9.0': - resolution: {integrity: sha512-TIR+Tkm56bDPl5U1QKR3NaAt5Rrr9TmvEX6/j4Nz1bGgWBcRkaWaPNm5ear+M+obMQqNsKhCGSUtpE0wTKzv1w==} + '@yuku-parser/binding-darwin-x64@0.9.3': + resolution: {integrity: sha512-OM2PiVlPATvzlj/KGHNlu+t8FC3YzM5joVNjhsz/EaigQ8x2UUQ1Q0agQLiv5GZ2L8TSzrLUwBCZ7YOvP8q+tw==} cpu: [x64] os: [darwin] @@ -1382,8 +1214,8 @@ packages: cpu: [x64] os: [freebsd] - '@yuku-parser/binding-freebsd-x64@0.9.0': - resolution: {integrity: sha512-KWUk89CD+ldIDl5Wa0cVEq5o/PY3MtcfrzEzy2yYFbezzaE/J7k9ioOBof7YwFSzPGDWgt2WZwC/DufwjSIifA==} + '@yuku-parser/binding-freebsd-x64@0.9.3': + resolution: {integrity: sha512-WMn9M4LHNVysGNwsAJ9gpRPqQIW2lcPrDNGcyk0agx3IYqCJq1MQugh6Be8Otc5U08eGdE39o8Kx9YWJmXz7GA==} cpu: [x64] os: [freebsd] @@ -1393,8 +1225,8 @@ packages: os: [linux] libc: [glibc] - '@yuku-parser/binding-linux-arm-gnu@0.9.0': - resolution: {integrity: sha512-T3xhIVqrjeOn+rEURRZnUg+T34wvB6hCKWg+rIhkAE14pjnCQ/8oUussDk68tGBdq4pZUPhtksw0D2As7xIq1Q==} + '@yuku-parser/binding-linux-arm-gnu@0.9.3': + resolution: {integrity: sha512-vqKjwiyW1FWvbykYMEQIcAJwA17WxK3rxxqDuyCvQwcNVaLEUxI4BXiUdlF3kHucc7MnoFQhoRPkySgOzlLM+Q==} cpu: [arm] os: [linux] libc: [glibc] @@ -1405,8 +1237,8 @@ packages: os: [linux] libc: [musl] - '@yuku-parser/binding-linux-arm-musl@0.9.0': - resolution: {integrity: sha512-g3EEh5tYUqhhrcJr+VLjHAKu91PlIq1WwWnlcy9UTVd9TjGX0ZZ8QA4HeYeEb/WwjAscITXF7viHMLHEkqVbzw==} + '@yuku-parser/binding-linux-arm-musl@0.9.3': + resolution: {integrity: sha512-qohilhYOT+zkt2gYzym4F1T6BzRdvPqS9/sFB03pmnVV8LrvjOXVsGwEBAa3CEvzJKhAZjdTmVz7zsVdjyHWLg==} cpu: [arm] os: [linux] libc: [musl] @@ -1417,8 +1249,8 @@ packages: os: [linux] libc: [glibc] - '@yuku-parser/binding-linux-arm64-gnu@0.9.0': - resolution: {integrity: sha512-/iubliwkPbZPMVV/REE+MjZ0O55RzJs1Qt8eTDWfqsGefJzCqbBEN2F63KP/Oryu6ZJaPLQ/VSYvPFjTeXfV9w==} + '@yuku-parser/binding-linux-arm64-gnu@0.9.3': + resolution: {integrity: sha512-tvTIyUvTGkeee68i4JIo9o27As+Ug6LXOZvElGgFbTs6+KBdb5LGhvugaIQljdfIsm2XnIbOLG6OnQSXHMLB9w==} cpu: [arm64] os: [linux] libc: [glibc] @@ -1429,8 +1261,8 @@ packages: os: [linux] libc: [musl] - '@yuku-parser/binding-linux-arm64-musl@0.9.0': - resolution: {integrity: sha512-F1hgfSXcPEl3F6fDi6f5arPfm3wrTitVHWWCVf9VUP33ZGlxeFfbc+8qDRARHnNT48OwIFmgrGhm13WmKFRWOw==} + '@yuku-parser/binding-linux-arm64-musl@0.9.3': + resolution: {integrity: sha512-OWZBHW1wuChBpFlrF+On1yiBcFPMRrj2g0VKsM/PCBGffu1OM0ORkS+vLS3Snu6wYwndM5Dd9Ctvux6eUlrQjA==} cpu: [arm64] os: [linux] libc: [musl] @@ -1441,8 +1273,8 @@ packages: os: [linux] libc: [glibc] - '@yuku-parser/binding-linux-x64-gnu@0.9.0': - resolution: {integrity: sha512-FNLAkP2WB/M3mnnG18f6Bm+CZtId6377g2tcQk79zDeGP2yssaQyXOFKji5lRqop/AVoZWNo8m45zPxxoEsJbw==} + '@yuku-parser/binding-linux-x64-gnu@0.9.3': + resolution: {integrity: sha512-/tbk1h0dlADOCngbiQO9V3SHwBIJkoGBq8BDEraSw2CC3nGxPEPTCCYUDp5738Ij2FxVwy1FWVuhFkHvpMrPbQ==} cpu: [x64] os: [linux] libc: [glibc] @@ -1453,8 +1285,8 @@ packages: os: [linux] libc: [musl] - '@yuku-parser/binding-linux-x64-musl@0.9.0': - resolution: {integrity: sha512-q4fxNn9dZWbKRl79NuekdXNNGz58gu2uy3GjJmghDghDPVukEGhaNqNjYN5XZq7mo7L6EDj5IcUtyMPQlhTWqg==} + '@yuku-parser/binding-linux-x64-musl@0.9.3': + resolution: {integrity: sha512-u3+0sCso/mcjDvtc3866D2giV7l34PDyDVBkMesAWa3DWbIWPlybehi2SSnmScgArV22ctqSSgUzdBBVJ6zYAg==} cpu: [x64] os: [linux] libc: [musl] @@ -1464,8 +1296,8 @@ packages: cpu: [arm64] os: [win32] - '@yuku-parser/binding-win32-arm64@0.9.0': - resolution: {integrity: sha512-tVzfdCycadoBrtONw9O2skhjGozQDJKHt/PLfH7pf5jVsCpi5OpWI4ZKNxQKhPI91CqUCqR2kVtXebFML0c7Zw==} + '@yuku-parser/binding-win32-arm64@0.9.3': + resolution: {integrity: sha512-xnGEvdhyjRkXozHtpXVpEEkyGZWAxJ3RoILv7XRV5SvTEztaTCk5GQyfcOzI9An/EJtcL4ERCI8QmS0TpDPJiA==} cpu: [arm64] os: [win32] @@ -1474,16 +1306,16 @@ packages: cpu: [x64] os: [win32] - '@yuku-parser/binding-win32-x64@0.9.0': - resolution: {integrity: sha512-mVXePNGj/N2MMQvtks3wE53QCpg0D2I6SpFwmVHT5gsAdOvlK2onLyFOkNCpIWDjpEu749z3QQZzBeIymkLsGA==} + '@yuku-parser/binding-win32-x64@0.9.3': + resolution: {integrity: sha512-N5eShGcuwnrXEprePFmEjtng6acZmtnC4zgazK9xxkavcx1q1uX8Nz8lU5RS973EMlNr902cIc6Cd2D4tqZDBg==} cpu: [x64] os: [win32] '@yuku-toolchain/types@0.8.3': resolution: {integrity: sha512-9LN3HYs3A9qSPVFunsxlbfwBcUgexti3TmhOzIxB/UH8zFuaHQJXTRDcN17DW6cp1GsyZtiZA7f18uIra36Jag==} - '@yuku-toolchain/types@0.9.1': - resolution: {integrity: sha512-GhfAIaKmtC4fCKJVnzP6bdGhWZSd7U9Sk7/lexEfROQPDNzuFE9lZKrcIWqzgGVcIMqKvtvFxnfEIaZ5WiroyQ==} + '@yuku-toolchain/types@0.9.3': + resolution: {integrity: sha512-rFE+5P4g2wxko5C85MugJOlVjBHEQq87dIkhLkniLXLp63PEtgaFjD954i5HXlfnyzLxPcZHsSOVDVgmo1HToA==} agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} @@ -2475,8 +2307,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rsbuild-plugin-dts@1.0.0-beta.1: - resolution: {integrity: sha512-hAEjOXhfIHR4erqjsqjRvA9Yqzc6Thry06tHheXDJUVwmR3VbN8BSMDC8kBZzyKdypDF0IJ98FmLQRiC194sMA==} + rsbuild-plugin-dts@1.0.0: + resolution: {integrity: sha512-FVoTsiTfSc0LPeSjrVhpvFOBRig0YXJq3Hp+bVxzh9/bzFvODzLRWOEux8q1Phe1oVCIIVSc2+Nb7kDcxIhosw==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@microsoft/api-extractor': ^7 @@ -2488,8 +2320,8 @@ packages: typescript: optional: true - rsbuild-plugin-dts@1.0.0-rc.1: - resolution: {integrity: sha512-erD9AHYfEr5I7yCI9z2qR3NJTnwl1JgmFErjiVeOo7cKjItzaG2QrOqmlYM0DAfzPTktTznPaqpmqkr1kI6pqA==} + rsbuild-plugin-dts@1.0.0-beta.1: + resolution: {integrity: sha512-hAEjOXhfIHR4erqjsqjRvA9Yqzc6Thry06tHheXDJUVwmR3VbN8BSMDC8kBZzyKdypDF0IJ98FmLQRiC194sMA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@microsoft/api-extractor': ^7 @@ -2501,9 +2333,9 @@ packages: typescript: optional: true - rstack@0.6.4: - resolution: {integrity: sha512-pDSqK4dPHpWmiLRmqBstJQ32WLFrWaRnWEgU03ev4ejC3uI9kuV2P6kXyNEuavCrYEXlBWL0Yl41lxljNRRq9w==} - engines: {node: '>=22.12.0'} + rstack@0.7.2: + resolution: {integrity: sha512-A0nL89XfrcA1tqhX7WmA+6p7ogMr4oWSYaPH1h+Kybl/e4+mEQAO/GCVA2BPsoUsSx8KltC3wUkmuhkKtoQojQ==} + engines: {node: ^22.18.0 || >=24.3.0} hasBin: true peerDependencies: '@rspress/core': ^2.0.17 @@ -2696,8 +2528,8 @@ packages: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - tinypool@2.1.0: - resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + tinypool@2.1.2: + resolution: {integrity: sha512-9YodfrxS9g9IbFr/KOjE5bAeJ0p61n3bW6mqvy0jtoeKd1kTW1Cxm0oulm6KX2lyM9Gl6WIe8nEbY7LWv5ZJww==} engines: {node: ^20.0.0 || >=22.0.0} tmp@0.2.7: @@ -2890,69 +2722,69 @@ packages: yuku-ast@0.8.3: resolution: {integrity: sha512-8x34yU5uhHUnJXzy2Qvjvec/vE9BzS0/2khVT1MsLmSLO/P8Q1Wp8IxHv+IhD+HMYETk6kherOSvP4JPWw2joQ==} - yuku-ast@0.9.1: - resolution: {integrity: sha512-JN45kc3sxzv/bDGug063IsIHu6LTkL1vDQUL/m1zvIFBIvMRtYivyRp5LjtMbZtIWnNjV6jaAvHPA1f70yD6gg==} + yuku-ast@0.9.3: + resolution: {integrity: sha512-Kt0PXlPCXdKF1fWFTl7N3DaxsVk6DHF8VAXHJMkwPtJnWYgbx20pYgGSweuC/86mIM7k1NUITQ4JffgOLUWTCw==} yuku-parser@0.8.3: resolution: {integrity: sha512-KPQcpF9aj77ywlJBIkQWCQ9DObdxnCA8AJdUOmA5CZZx042Xt4+dvbQmPJfWxF3E+KG5dVAZ2fBKuDJ8VsKWgA==} - yuku-parser@0.9.0: - resolution: {integrity: sha512-B8azpS7EuyRyNBRYHPhMiBDsvlI01mxDapQqkEjd3QjTdx6d+io9xiAx52xl0IIHV53GPseo39LUlsbKK/CS6g==} + yuku-parser@0.9.3: + resolution: {integrity: sha512-96wPoHnwaXfkZv7UIOUkDb+s7ZH8lv8Qtg+MxdvHUV1LFa5jV9iKOaams1942YQt+krFQrWiD6lSg2ermv5kHA==} snapshots: '@ast-grep/napi-darwin-arm64@0.37.0': optional: true - '@ast-grep/napi-darwin-arm64@0.45.1': + '@ast-grep/napi-darwin-arm64@0.45.2': optional: true '@ast-grep/napi-darwin-x64@0.37.0': optional: true - '@ast-grep/napi-darwin-x64@0.45.1': + '@ast-grep/napi-darwin-x64@0.45.2': optional: true '@ast-grep/napi-linux-arm64-gnu@0.37.0': optional: true - '@ast-grep/napi-linux-arm64-gnu@0.45.1': + '@ast-grep/napi-linux-arm64-gnu@0.45.2': optional: true '@ast-grep/napi-linux-arm64-musl@0.37.0': optional: true - '@ast-grep/napi-linux-arm64-musl@0.45.1': + '@ast-grep/napi-linux-arm64-musl@0.45.2': optional: true '@ast-grep/napi-linux-x64-gnu@0.37.0': optional: true - '@ast-grep/napi-linux-x64-gnu@0.45.1': + '@ast-grep/napi-linux-x64-gnu@0.45.2': optional: true '@ast-grep/napi-linux-x64-musl@0.37.0': optional: true - '@ast-grep/napi-linux-x64-musl@0.45.1': + '@ast-grep/napi-linux-x64-musl@0.45.2': optional: true '@ast-grep/napi-win32-arm64-msvc@0.37.0': optional: true - '@ast-grep/napi-win32-arm64-msvc@0.45.1': + '@ast-grep/napi-win32-arm64-msvc@0.45.2': optional: true '@ast-grep/napi-win32-ia32-msvc@0.37.0': optional: true - '@ast-grep/napi-win32-ia32-msvc@0.45.1': + '@ast-grep/napi-win32-ia32-msvc@0.45.2': optional: true '@ast-grep/napi-win32-x64-msvc@0.37.0': optional: true - '@ast-grep/napi-win32-x64-msvc@0.45.1': + '@ast-grep/napi-win32-x64-msvc@0.45.2': optional: true '@ast-grep/napi@0.37.0': @@ -2967,17 +2799,17 @@ snapshots: '@ast-grep/napi-win32-ia32-msvc': 0.37.0 '@ast-grep/napi-win32-x64-msvc': 0.37.0 - '@ast-grep/napi@0.45.1': + '@ast-grep/napi@0.45.2': optionalDependencies: - '@ast-grep/napi-darwin-arm64': 0.45.1 - '@ast-grep/napi-darwin-x64': 0.45.1 - '@ast-grep/napi-linux-arm64-gnu': 0.45.1 - '@ast-grep/napi-linux-arm64-musl': 0.45.1 - '@ast-grep/napi-linux-x64-gnu': 0.45.1 - '@ast-grep/napi-linux-x64-musl': 0.45.1 - '@ast-grep/napi-win32-arm64-msvc': 0.45.1 - '@ast-grep/napi-win32-ia32-msvc': 0.45.1 - '@ast-grep/napi-win32-x64-msvc': 0.45.1 + '@ast-grep/napi-darwin-arm64': 0.45.2 + '@ast-grep/napi-darwin-x64': 0.45.2 + '@ast-grep/napi-linux-arm64-gnu': 0.45.2 + '@ast-grep/napi-linux-arm64-musl': 0.45.2 + '@ast-grep/napi-linux-x64-gnu': 0.45.2 + '@ast-grep/napi-linux-x64-musl': 0.45.2 + '@ast-grep/napi-win32-arm64-msvc': 0.45.2 + '@ast-grep/napi-win32-ia32-msvc': 0.45.2 + '@ast-grep/napi-win32-x64-msvc': 0.45.2 '@azu/format-text@1.0.2': {} @@ -3394,13 +3226,6 @@ snapshots: dependencies: quansync: 1.0.0 - '@rsbuild/core@2.1.13': - dependencies: - '@rspack/core': 2.1.10(@swc/helpers@0.5.23) - '@swc/helpers': 0.5.23 - transitivePeerDependencies: - - '@module-federation/runtime-tools' - '@rsbuild/core@2.1.9': dependencies: '@rspack/core': 2.1.7(@swc/helpers@0.5.23) @@ -3408,198 +3233,123 @@ snapshots: transitivePeerDependencies: - '@module-federation/runtime-tools' - '@rsbuild/core@2.2.0-rc.0': + '@rsbuild/core@2.2.3': dependencies: - '@rspack/core': 2.2.0-rc.0(@swc/helpers@0.5.23) + '@rspack/core': 2.2.2(@swc/helpers@0.5.23) '@swc/helpers': 0.5.23 transitivePeerDependencies: - '@module-federation/runtime-tools' - '@rslib/core@1.0.0-beta.1(typescript@5.9.3)': + '@rslib/core@1.0.0(typescript@5.9.3)': dependencies: - '@rsbuild/core': 2.1.9 - rsbuild-plugin-dts: 1.0.0-beta.1(@rsbuild/core@2.1.9)(typescript@5.9.3) + '@rsbuild/core': 2.2.3 + rsbuild-plugin-dts: 1.0.0(@rsbuild/core@2.2.3)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - '@module-federation/runtime-tools' - core-js - '@rslib/core@1.0.0-rc.1(typescript@5.9.3)': + '@rslib/core@1.0.0-beta.1(typescript@5.9.3)': dependencies: - '@rsbuild/core': 2.2.0-rc.0 - rsbuild-plugin-dts: 1.0.0-rc.1(@rsbuild/core@2.2.0-rc.0)(typescript@5.9.3) + '@rsbuild/core': 2.1.9 + rsbuild-plugin-dts: 1.0.0-beta.1(@rsbuild/core@2.1.9)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - '@module-federation/runtime-tools' - core-js - '@rslint/core@0.8.0(jiti@2.7.0)': + '@rslint/core@0.9.0(jiti@2.7.0)': dependencies: picomatch: 4.0.5 optionalDependencies: - '@rslint/native-darwin-arm64': 0.8.0 - '@rslint/native-darwin-x64': 0.8.0 - '@rslint/native-linux-arm64-gnu': 0.8.0 - '@rslint/native-linux-arm64-musl': 0.8.0 - '@rslint/native-linux-x64-gnu': 0.8.0 - '@rslint/native-linux-x64-musl': 0.8.0 - '@rslint/native-win32-arm64-msvc': 0.8.0 - '@rslint/native-win32-x64-msvc': 0.8.0 + '@rslint/native-darwin-arm64': 0.9.0 + '@rslint/native-darwin-x64': 0.9.0 + '@rslint/native-linux-arm64-gnu': 0.9.0 + '@rslint/native-linux-arm64-musl': 0.9.0 + '@rslint/native-linux-x64-gnu': 0.9.0 + '@rslint/native-linux-x64-musl': 0.9.0 + '@rslint/native-win32-arm64-msvc': 0.9.0 + '@rslint/native-win32-x64-msvc': 0.9.0 jiti: 2.7.0 - '@rslint/core@0.8.1(jiti@2.7.0)': - dependencies: - picomatch: 4.0.5 - optionalDependencies: - '@rslint/native-darwin-arm64': 0.8.1 - '@rslint/native-darwin-x64': 0.8.1 - '@rslint/native-linux-arm64-gnu': 0.8.1 - '@rslint/native-linux-arm64-musl': 0.8.1 - '@rslint/native-linux-x64-gnu': 0.8.1 - '@rslint/native-linux-x64-musl': 0.8.1 - '@rslint/native-win32-arm64-msvc': 0.8.1 - '@rslint/native-win32-x64-msvc': 0.8.1 - jiti: 2.7.0 - - '@rslint/native-darwin-arm64@0.8.0': + '@rslint/native-darwin-arm64@0.9.0': optional: true - '@rslint/native-darwin-arm64@0.8.1': + '@rslint/native-darwin-x64@0.9.0': optional: true - '@rslint/native-darwin-x64@0.8.0': + '@rslint/native-linux-arm64-gnu@0.9.0': optional: true - '@rslint/native-darwin-x64@0.8.1': + '@rslint/native-linux-arm64-musl@0.9.0': optional: true - '@rslint/native-linux-arm64-gnu@0.8.0': + '@rslint/native-linux-x64-gnu@0.9.0': optional: true - '@rslint/native-linux-arm64-gnu@0.8.1': + '@rslint/native-linux-x64-musl@0.9.0': optional: true - '@rslint/native-linux-arm64-musl@0.8.0': + '@rslint/native-win32-arm64-msvc@0.9.0': optional: true - '@rslint/native-linux-arm64-musl@0.8.1': - optional: true - - '@rslint/native-linux-x64-gnu@0.8.0': - optional: true - - '@rslint/native-linux-x64-gnu@0.8.1': - optional: true - - '@rslint/native-linux-x64-musl@0.8.0': - optional: true - - '@rslint/native-linux-x64-musl@0.8.1': - optional: true - - '@rslint/native-win32-arm64-msvc@0.8.0': - optional: true - - '@rslint/native-win32-arm64-msvc@0.8.1': - optional: true - - '@rslint/native-win32-x64-msvc@0.8.0': - optional: true - - '@rslint/native-win32-x64-msvc@0.8.1': - optional: true - - '@rspack/binding-darwin-arm64@2.1.10': + '@rslint/native-win32-x64-msvc@0.9.0': optional: true '@rspack/binding-darwin-arm64@2.1.7': optional: true - '@rspack/binding-darwin-arm64@2.2.0-rc.0': - optional: true - - '@rspack/binding-darwin-x64@2.1.10': + '@rspack/binding-darwin-arm64@2.2.2': optional: true '@rspack/binding-darwin-x64@2.1.7': optional: true - '@rspack/binding-darwin-x64@2.2.0-rc.0': - optional: true - - '@rspack/binding-linux-arm64-gnu@2.1.10': + '@rspack/binding-darwin-x64@2.2.2': optional: true '@rspack/binding-linux-arm64-gnu@2.1.7': optional: true - '@rspack/binding-linux-arm64-gnu@2.2.0-rc.0': - optional: true - - '@rspack/binding-linux-arm64-musl@2.1.10': + '@rspack/binding-linux-arm64-gnu@2.2.2': optional: true '@rspack/binding-linux-arm64-musl@2.1.7': optional: true - '@rspack/binding-linux-arm64-musl@2.2.0-rc.0': - optional: true - - '@rspack/binding-linux-ppc64-gnu@2.1.10': - optional: true - - '@rspack/binding-linux-ppc64-gnu@2.2.0-rc.0': + '@rspack/binding-linux-arm64-musl@2.2.2': optional: true - '@rspack/binding-linux-riscv64-gnu@2.1.10': + '@rspack/binding-linux-ppc64-gnu@2.2.2': optional: true '@rspack/binding-linux-riscv64-gnu@2.1.7': optional: true - '@rspack/binding-linux-riscv64-gnu@2.2.0-rc.0': - optional: true - - '@rspack/binding-linux-riscv64-musl@2.1.10': + '@rspack/binding-linux-riscv64-gnu@2.2.2': optional: true '@rspack/binding-linux-riscv64-musl@2.1.7': optional: true - '@rspack/binding-linux-riscv64-musl@2.2.0-rc.0': - optional: true - - '@rspack/binding-linux-s390x-gnu@2.1.10': - optional: true - - '@rspack/binding-linux-s390x-gnu@2.2.0-rc.0': + '@rspack/binding-linux-riscv64-musl@2.2.2': optional: true - '@rspack/binding-linux-x64-gnu@2.1.10': + '@rspack/binding-linux-s390x-gnu@2.2.2': optional: true '@rspack/binding-linux-x64-gnu@2.1.7': optional: true - '@rspack/binding-linux-x64-gnu@2.2.0-rc.0': - optional: true - - '@rspack/binding-linux-x64-musl@2.1.10': + '@rspack/binding-linux-x64-gnu@2.2.2': optional: true '@rspack/binding-linux-x64-musl@2.1.7': optional: true - '@rspack/binding-linux-x64-musl@2.2.0-rc.0': - optional: true - - '@rspack/binding-wasm32-wasi@2.1.10': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + '@rspack/binding-linux-x64-musl@2.2.2': optional: true '@rspack/binding-wasm32-wasi@2.1.7': @@ -3609,57 +3359,31 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) optional: true - '@rspack/binding-wasm32-wasi@2.2.0-rc.0': + '@rspack/binding-wasm32-wasi@2.2.2': dependencies: '@emnapi/core': 1.11.3 '@emnapi/runtime': 1.11.3 '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) optional: true - '@rspack/binding-win32-arm64-msvc@2.1.10': - optional: true - '@rspack/binding-win32-arm64-msvc@2.1.7': optional: true - '@rspack/binding-win32-arm64-msvc@2.2.0-rc.0': - optional: true - - '@rspack/binding-win32-ia32-msvc@2.1.10': + '@rspack/binding-win32-arm64-msvc@2.2.2': optional: true '@rspack/binding-win32-ia32-msvc@2.1.7': optional: true - '@rspack/binding-win32-ia32-msvc@2.2.0-rc.0': - optional: true - - '@rspack/binding-win32-x64-msvc@2.1.10': + '@rspack/binding-win32-ia32-msvc@2.2.2': optional: true '@rspack/binding-win32-x64-msvc@2.1.7': optional: true - '@rspack/binding-win32-x64-msvc@2.2.0-rc.0': + '@rspack/binding-win32-x64-msvc@2.2.2': optional: true - '@rspack/binding@2.1.10': - optionalDependencies: - '@rspack/binding-darwin-arm64': 2.1.10 - '@rspack/binding-darwin-x64': 2.1.10 - '@rspack/binding-linux-arm64-gnu': 2.1.10 - '@rspack/binding-linux-arm64-musl': 2.1.10 - '@rspack/binding-linux-ppc64-gnu': 2.1.10 - '@rspack/binding-linux-riscv64-gnu': 2.1.10 - '@rspack/binding-linux-riscv64-musl': 2.1.10 - '@rspack/binding-linux-s390x-gnu': 2.1.10 - '@rspack/binding-linux-x64-gnu': 2.1.10 - '@rspack/binding-linux-x64-musl': 2.1.10 - '@rspack/binding-wasm32-wasi': 2.1.10 - '@rspack/binding-win32-arm64-msvc': 2.1.10 - '@rspack/binding-win32-ia32-msvc': 2.1.10 - '@rspack/binding-win32-x64-msvc': 2.1.10 - '@rspack/binding@2.1.7': optionalDependencies: '@rspack/binding-darwin-arm64': 2.1.7 @@ -3675,28 +3399,22 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 2.1.7 '@rspack/binding-win32-x64-msvc': 2.1.7 - '@rspack/binding@2.2.0-rc.0': + '@rspack/binding@2.2.2': optionalDependencies: - '@rspack/binding-darwin-arm64': 2.2.0-rc.0 - '@rspack/binding-darwin-x64': 2.2.0-rc.0 - '@rspack/binding-linux-arm64-gnu': 2.2.0-rc.0 - '@rspack/binding-linux-arm64-musl': 2.2.0-rc.0 - '@rspack/binding-linux-ppc64-gnu': 2.2.0-rc.0 - '@rspack/binding-linux-riscv64-gnu': 2.2.0-rc.0 - '@rspack/binding-linux-riscv64-musl': 2.2.0-rc.0 - '@rspack/binding-linux-s390x-gnu': 2.2.0-rc.0 - '@rspack/binding-linux-x64-gnu': 2.2.0-rc.0 - '@rspack/binding-linux-x64-musl': 2.2.0-rc.0 - '@rspack/binding-wasm32-wasi': 2.2.0-rc.0 - '@rspack/binding-win32-arm64-msvc': 2.2.0-rc.0 - '@rspack/binding-win32-ia32-msvc': 2.2.0-rc.0 - '@rspack/binding-win32-x64-msvc': 2.2.0-rc.0 - - '@rspack/core@2.1.10(@swc/helpers@0.5.23)': - dependencies: - '@rspack/binding': 2.1.10 - optionalDependencies: - '@swc/helpers': 0.5.23 + '@rspack/binding-darwin-arm64': 2.2.2 + '@rspack/binding-darwin-x64': 2.2.2 + '@rspack/binding-linux-arm64-gnu': 2.2.2 + '@rspack/binding-linux-arm64-musl': 2.2.2 + '@rspack/binding-linux-ppc64-gnu': 2.2.2 + '@rspack/binding-linux-riscv64-gnu': 2.2.2 + '@rspack/binding-linux-riscv64-musl': 2.2.2 + '@rspack/binding-linux-s390x-gnu': 2.2.2 + '@rspack/binding-linux-x64-gnu': 2.2.2 + '@rspack/binding-linux-x64-musl': 2.2.2 + '@rspack/binding-wasm32-wasi': 2.2.2 + '@rspack/binding-win32-arm64-msvc': 2.2.2 + '@rspack/binding-win32-ia32-msvc': 2.2.2 + '@rspack/binding-win32-x64-msvc': 2.2.2 '@rspack/core@2.1.7(@swc/helpers@0.5.23)': dependencies: @@ -3704,66 +3422,58 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.23 - '@rspack/core@2.2.0-rc.0(@swc/helpers@0.5.23)': + '@rspack/core@2.2.2(@swc/helpers@0.5.23)': dependencies: - '@rspack/binding': 2.2.0-rc.0 + '@rspack/binding': 2.2.2 optionalDependencies: '@swc/helpers': 0.5.23 - '@rstackjs/cli-darwin-arm64@0.6.4': + '@rstackjs/cli-darwin-arm64@0.7.2': optional: true - '@rstackjs/cli-darwin-x64@0.6.4': + '@rstackjs/cli-darwin-x64@0.7.2': optional: true - '@rstackjs/cli-linux-arm64-gnu@0.6.4': + '@rstackjs/cli-linux-arm64-gnu@0.7.2': optional: true - '@rstackjs/cli-linux-arm64-musl@0.6.4': + '@rstackjs/cli-linux-arm64-musl@0.7.2': optional: true - '@rstackjs/cli-linux-ppc64-gnu@0.6.4': + '@rstackjs/cli-linux-ppc64-gnu@0.7.2': optional: true - '@rstackjs/cli-linux-riscv64-gnu@0.6.4': + '@rstackjs/cli-linux-riscv64-gnu@0.7.2': optional: true - '@rstackjs/cli-linux-riscv64-musl@0.6.4': + '@rstackjs/cli-linux-riscv64-musl@0.7.2': optional: true - '@rstackjs/cli-linux-s390x-gnu@0.6.4': + '@rstackjs/cli-linux-s390x-gnu@0.7.2': optional: true - '@rstackjs/cli-linux-x64-gnu@0.6.4': + '@rstackjs/cli-linux-x64-gnu@0.7.2': optional: true - '@rstackjs/cli-linux-x64-musl@0.6.4': + '@rstackjs/cli-linux-x64-musl@0.7.2': optional: true - '@rstackjs/cli-win32-arm64-msvc@0.6.4': + '@rstackjs/cli-win32-arm64-msvc@0.7.2': optional: true - '@rstackjs/cli-win32-ia32-msvc@0.6.4': + '@rstackjs/cli-win32-ia32-msvc@0.7.2': optional: true - '@rstackjs/cli-win32-x64-msvc@0.6.4': + '@rstackjs/cli-win32-x64-msvc@0.7.2': optional: true '@rstackjs/load-config@0.1.2(jiti@2.7.0)': optionalDependencies: jiti: 2.7.0 - '@rstest/core@0.11.5': + '@rstest/core@0.11.11': dependencies: - '@rsbuild/core': 2.1.9 - '@types/chai': 5.2.3 - transitivePeerDependencies: - - '@module-federation/runtime-tools' - - core-js - - '@rstest/core@0.11.9': - dependencies: - '@rsbuild/core': 2.1.13 + '@rsbuild/core': 2.2.3 '@types/chai': 5.2.3 transitivePeerDependencies: - '@module-federation/runtime-tools' @@ -4007,78 +3717,78 @@ snapshots: '@yuku-parser/binding-android-arm64@0.8.3': optional: true - '@yuku-parser/binding-android-arm64@0.9.0': + '@yuku-parser/binding-android-arm64@0.9.3': optional: true '@yuku-parser/binding-darwin-arm64@0.8.3': optional: true - '@yuku-parser/binding-darwin-arm64@0.9.0': + '@yuku-parser/binding-darwin-arm64@0.9.3': optional: true '@yuku-parser/binding-darwin-x64@0.8.3': optional: true - '@yuku-parser/binding-darwin-x64@0.9.0': + '@yuku-parser/binding-darwin-x64@0.9.3': optional: true '@yuku-parser/binding-freebsd-x64@0.8.3': optional: true - '@yuku-parser/binding-freebsd-x64@0.9.0': + '@yuku-parser/binding-freebsd-x64@0.9.3': optional: true '@yuku-parser/binding-linux-arm-gnu@0.8.3': optional: true - '@yuku-parser/binding-linux-arm-gnu@0.9.0': + '@yuku-parser/binding-linux-arm-gnu@0.9.3': optional: true '@yuku-parser/binding-linux-arm-musl@0.8.3': optional: true - '@yuku-parser/binding-linux-arm-musl@0.9.0': + '@yuku-parser/binding-linux-arm-musl@0.9.3': optional: true '@yuku-parser/binding-linux-arm64-gnu@0.8.3': optional: true - '@yuku-parser/binding-linux-arm64-gnu@0.9.0': + '@yuku-parser/binding-linux-arm64-gnu@0.9.3': optional: true '@yuku-parser/binding-linux-arm64-musl@0.8.3': optional: true - '@yuku-parser/binding-linux-arm64-musl@0.9.0': + '@yuku-parser/binding-linux-arm64-musl@0.9.3': optional: true '@yuku-parser/binding-linux-x64-gnu@0.8.3': optional: true - '@yuku-parser/binding-linux-x64-gnu@0.9.0': + '@yuku-parser/binding-linux-x64-gnu@0.9.3': optional: true '@yuku-parser/binding-linux-x64-musl@0.8.3': optional: true - '@yuku-parser/binding-linux-x64-musl@0.9.0': + '@yuku-parser/binding-linux-x64-musl@0.9.3': optional: true '@yuku-parser/binding-win32-arm64@0.8.3': optional: true - '@yuku-parser/binding-win32-arm64@0.9.0': + '@yuku-parser/binding-win32-arm64@0.9.3': optional: true '@yuku-parser/binding-win32-x64@0.8.3': optional: true - '@yuku-parser/binding-win32-x64@0.9.0': + '@yuku-parser/binding-win32-x64@0.9.3': optional: true '@yuku-toolchain/types@0.8.3': {} - '@yuku-toolchain/types@0.9.1': {} + '@yuku-toolchain/types@0.9.3': {} agent-base@7.1.4: {} @@ -5102,43 +4812,43 @@ snapshots: reusify@1.1.0: {} - rsbuild-plugin-dts@1.0.0-beta.1(@rsbuild/core@2.1.9)(typescript@5.9.3): + rsbuild-plugin-dts@1.0.0(@rsbuild/core@2.2.3)(typescript@5.9.3): dependencies: - '@ast-grep/napi': 0.37.0 - '@rsbuild/core': 2.1.9 + '@ast-grep/napi': 0.45.2 + '@rsbuild/core': 2.2.3 optionalDependencies: typescript: 5.9.3 - rsbuild-plugin-dts@1.0.0-rc.1(@rsbuild/core@2.2.0-rc.0)(typescript@5.9.3): + rsbuild-plugin-dts@1.0.0-beta.1(@rsbuild/core@2.1.9)(typescript@5.9.3): dependencies: - '@ast-grep/napi': 0.45.1 - '@rsbuild/core': 2.2.0-rc.0 + '@ast-grep/napi': 0.37.0 + '@rsbuild/core': 2.1.9 optionalDependencies: typescript: 5.9.3 - rstack@0.6.4(jiti@2.7.0)(typescript@5.9.3): + rstack@0.7.2(jiti@2.7.0)(typescript@5.9.3): dependencies: - '@rsbuild/core': 2.1.13 - '@rslib/core': 1.0.0-rc.1(typescript@5.9.3) - '@rslint/core': 0.8.1(jiti@2.7.0) - '@rstest/core': 0.11.9 + '@rsbuild/core': 2.2.3 + '@rslib/core': 1.0.0(typescript@5.9.3) + '@rslint/core': 0.9.0(jiti@2.7.0) + '@rstest/core': 0.11.11 prettier: 3.9.6 - tinypool: 2.1.0 - yuku-parser: 0.9.0 + tinypool: 2.1.2 + yuku-parser: 0.9.3 optionalDependencies: - '@rstackjs/cli-darwin-arm64': 0.6.4 - '@rstackjs/cli-darwin-x64': 0.6.4 - '@rstackjs/cli-linux-arm64-gnu': 0.6.4 - '@rstackjs/cli-linux-arm64-musl': 0.6.4 - '@rstackjs/cli-linux-ppc64-gnu': 0.6.4 - '@rstackjs/cli-linux-riscv64-gnu': 0.6.4 - '@rstackjs/cli-linux-riscv64-musl': 0.6.4 - '@rstackjs/cli-linux-s390x-gnu': 0.6.4 - '@rstackjs/cli-linux-x64-gnu': 0.6.4 - '@rstackjs/cli-linux-x64-musl': 0.6.4 - '@rstackjs/cli-win32-arm64-msvc': 0.6.4 - '@rstackjs/cli-win32-ia32-msvc': 0.6.4 - '@rstackjs/cli-win32-x64-msvc': 0.6.4 + '@rstackjs/cli-darwin-arm64': 0.7.2 + '@rstackjs/cli-darwin-x64': 0.7.2 + '@rstackjs/cli-linux-arm64-gnu': 0.7.2 + '@rstackjs/cli-linux-arm64-musl': 0.7.2 + '@rstackjs/cli-linux-ppc64-gnu': 0.7.2 + '@rstackjs/cli-linux-riscv64-gnu': 0.7.2 + '@rstackjs/cli-linux-riscv64-musl': 0.7.2 + '@rstackjs/cli-linux-s390x-gnu': 0.7.2 + '@rstackjs/cli-linux-x64-gnu': 0.7.2 + '@rstackjs/cli-linux-x64-musl': 0.7.2 + '@rstackjs/cli-win32-arm64-msvc': 0.7.2 + '@rstackjs/cli-win32-ia32-msvc': 0.7.2 + '@rstackjs/cli-win32-x64-msvc': 0.7.2 transitivePeerDependencies: - '@microsoft/api-extractor' - '@module-federation/runtime-tools' @@ -5360,7 +5070,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.5) picomatch: 4.0.5 - tinypool@2.1.0: {} + tinypool@2.1.2: {} tmp@0.2.7: {} @@ -5537,9 +5247,9 @@ snapshots: dependencies: '@yuku-toolchain/types': 0.8.3 - yuku-ast@0.9.1: + yuku-ast@0.9.3: dependencies: - '@yuku-toolchain/types': 0.9.1 + '@yuku-toolchain/types': 0.9.3 yuku-parser@0.8.3: dependencies: @@ -5559,20 +5269,20 @@ snapshots: '@yuku-parser/binding-win32-arm64': 0.8.3 '@yuku-parser/binding-win32-x64': 0.8.3 - yuku-parser@0.9.0: + yuku-parser@0.9.3: dependencies: - '@yuku-toolchain/types': 0.9.1 - yuku-ast: 0.9.1 + '@yuku-toolchain/types': 0.9.3 + yuku-ast: 0.9.3 optionalDependencies: - '@yuku-parser/binding-android-arm64': 0.9.0 - '@yuku-parser/binding-darwin-arm64': 0.9.0 - '@yuku-parser/binding-darwin-x64': 0.9.0 - '@yuku-parser/binding-freebsd-x64': 0.9.0 - '@yuku-parser/binding-linux-arm-gnu': 0.9.0 - '@yuku-parser/binding-linux-arm-musl': 0.9.0 - '@yuku-parser/binding-linux-arm64-gnu': 0.9.0 - '@yuku-parser/binding-linux-arm64-musl': 0.9.0 - '@yuku-parser/binding-linux-x64-gnu': 0.9.0 - '@yuku-parser/binding-linux-x64-musl': 0.9.0 - '@yuku-parser/binding-win32-arm64': 0.9.0 - '@yuku-parser/binding-win32-x64': 0.9.0 + '@yuku-parser/binding-android-arm64': 0.9.3 + '@yuku-parser/binding-darwin-arm64': 0.9.3 + '@yuku-parser/binding-darwin-x64': 0.9.3 + '@yuku-parser/binding-freebsd-x64': 0.9.3 + '@yuku-parser/binding-linux-arm-gnu': 0.9.3 + '@yuku-parser/binding-linux-arm-musl': 0.9.3 + '@yuku-parser/binding-linux-arm64-gnu': 0.9.3 + '@yuku-parser/binding-linux-arm64-musl': 0.9.3 + '@yuku-parser/binding-linux-x64-gnu': 0.9.3 + '@yuku-parser/binding-linux-x64-musl': 0.9.3 + '@yuku-parser/binding-win32-arm64': 0.9.3 + '@yuku-parser/binding-win32-x64': 0.9.3 From d86fd9d846d90f7d20f9e5033f6b5ff9ba639479 Mon Sep 17 00:00:00 2001 From: fi3ework Date: Thu, 3 Sep 2026 17:59:40 +0800 Subject: [PATCH 4/9] test(vscode): give each fixture a pnpm-workspace.yaml so Renovate updates its lockfile --- packages/vscode/AGENTS.md | 2 +- .../e2e/fixtures/rslint/pnpm-workspace.yaml | 5 +++++ .../e2e/fixtures/rstack/pnpm-workspace.yaml | 5 +++++ .../e2e/fixtures/rstest/pnpm-workspace.yaml | 5 +++++ .../vscode/e2e/lint/fixtures/pnpm-workspace.yaml | 5 +++++ .../fixtures/workspace-1/pnpm-workspace.yaml | 5 +++++ .../fixtures/workspace-2/pnpm-workspace.yaml | 5 +++++ packages/vscode/e2e/setupFixtures.mjs | 15 ++++++++------- 8 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 packages/vscode/e2e/fixtures/rslint/pnpm-workspace.yaml create mode 100644 packages/vscode/e2e/fixtures/rstack/pnpm-workspace.yaml create mode 100644 packages/vscode/e2e/fixtures/rstest/pnpm-workspace.yaml create mode 100644 packages/vscode/e2e/lint/fixtures/pnpm-workspace.yaml create mode 100644 packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-workspace.yaml create mode 100644 packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-workspace.yaml diff --git a/packages/vscode/AGENTS.md b/packages/vscode/AGENTS.md index 96598cc..1f74fee 100644 --- a/packages/vscode/AGENTS.md +++ b/packages/vscode/AGENTS.md @@ -54,6 +54,6 @@ One extension replacing the standalone `rstack.rslint` and `rstack.rstest` exten ## Testing - E2E suites ported from upstream keep upstream's assertion semantics; every intentional deviation is documented in a comment in the test itself. A failing ported test is a regression, not a test to adjust. -- E2E fixtures install published npm packages (not workspace links): the extension must work against what users actually install. Each standalone fixture commits its `pnpm-lock.yaml` for deterministic installs; Renovate updates the manifests and lockfiles, while fixture `node_modules` remain disposable and uncommitted. +- E2E fixtures install published npm packages (not workspace links): the extension must work against what users actually install. Each standalone fixture commits its `pnpm-lock.yaml` for deterministic installs and carries a package-less `pnpm-workspace.yaml` root marker so Renovate's plain `pnpm install --lockfile-only` stops there instead of updating the repository workspace; Renovate updates the manifests and lockfiles, while fixture `node_modules` remain disposable and uncommitted. - Prefer running the E2E slice that covers the change over the full chain: `pnpm test:e2e ` (or the `test:e2e:` aliases). Slices are declared in the `SLICES` table in `e2e/run.mjs` (name, fixtures, entry) — the package.json scripts are thin forwards and carry no slice knowledge. `RSTACK_LINT_E2E_SUITES=` filters lint suites. - Run E2E locally as `VSCODE_CLI=1 pnpm test:e2e `. Without it, the launched VS Code overwrites the extension host's `PATH` with a login-shell snapshot; on a machine whose login-shell `node` is below the runtime floor, the User Node preflight (correctly) refuses and every fmt test times out waiting for a server. CI is unaffected — its PATH `node` is new enough either way. The heavier alternative, `--force-disable-user-env` in `e2e/runTest.ts`, was deliberately not taken: it would change env fidelity for every slice. diff --git a/packages/vscode/e2e/fixtures/rslint/pnpm-workspace.yaml b/packages/vscode/e2e/fixtures/rslint/pnpm-workspace.yaml new file mode 100644 index 0000000..a85bf76 --- /dev/null +++ b/packages/vscode/e2e/fixtures/rslint/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +# This workspace-root marker makes pnpm stop here instead of walking up to the +# repository workspace; Renovate runs `pnpm install --lockfile-only` here without +# `--ignore-workspace`. +# Fixtures track toolchain releases that may be only hours old. +minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/fixtures/rstack/pnpm-workspace.yaml b/packages/vscode/e2e/fixtures/rstack/pnpm-workspace.yaml new file mode 100644 index 0000000..a85bf76 --- /dev/null +++ b/packages/vscode/e2e/fixtures/rstack/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +# This workspace-root marker makes pnpm stop here instead of walking up to the +# repository workspace; Renovate runs `pnpm install --lockfile-only` here without +# `--ignore-workspace`. +# Fixtures track toolchain releases that may be only hours old. +minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/fixtures/rstest/pnpm-workspace.yaml b/packages/vscode/e2e/fixtures/rstest/pnpm-workspace.yaml new file mode 100644 index 0000000..a85bf76 --- /dev/null +++ b/packages/vscode/e2e/fixtures/rstest/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +# This workspace-root marker makes pnpm stop here instead of walking up to the +# repository workspace; Renovate runs `pnpm install --lockfile-only` here without +# `--ignore-workspace`. +# Fixtures track toolchain releases that may be only hours old. +minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/lint/fixtures/pnpm-workspace.yaml b/packages/vscode/e2e/lint/fixtures/pnpm-workspace.yaml new file mode 100644 index 0000000..a85bf76 --- /dev/null +++ b/packages/vscode/e2e/lint/fixtures/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +# This workspace-root marker makes pnpm stop here instead of walking up to the +# repository workspace; Renovate runs `pnpm install --lockfile-only` here without +# `--ignore-workspace`. +# Fixtures track toolchain releases that may be only hours old. +minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-workspace.yaml b/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-workspace.yaml new file mode 100644 index 0000000..a85bf76 --- /dev/null +++ b/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +# This workspace-root marker makes pnpm stop here instead of walking up to the +# repository workspace; Renovate runs `pnpm install --lockfile-only` here without +# `--ignore-workspace`. +# Fixtures track toolchain releases that may be only hours old. +minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-workspace.yaml b/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-workspace.yaml new file mode 100644 index 0000000..a85bf76 --- /dev/null +++ b/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +# This workspace-root marker makes pnpm stop here instead of walking up to the +# repository workspace; Renovate runs `pnpm install --lockfile-only` here without +# `--ignore-workspace`. +# Fixtures track toolchain releases that may be only hours old. +minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/setupFixtures.mjs b/packages/vscode/e2e/setupFixtures.mjs index 49e5bef..f48a6d1 100644 --- a/packages/vscode/e2e/setupFixtures.mjs +++ b/packages/vscode/e2e/setupFixtures.mjs @@ -3,9 +3,11 @@ // The fixtures install **published npm versions** of // `@rslint/core` / `@rstest/core` / `rstack` — the extension resolves all three // from the project, so a fixture that linked this repo's own node_modules would -// test nothing. Each fixture is its own independent install; `--ignore-workspace` -// makes sure pnpm never folds them into a parent workspace. Their lockfiles are -// committed for deterministic installs and updated with the manifests by +// test nothing. Each fixture is its own independent install: `--ignore-workspace` +// keeps test setup out of the parent workspace, while its pnpm-workspace.yaml +// marker makes Renovate's plain `pnpm install --lockfile-only` stop at the +// fixture instead of walking up to the repository workspace. Their lockfiles +// are committed for deterministic installs and updated with the manifests by // Renovate. // // Idempotent: pnpm is a no-op when the fixture is already up to date, so @@ -67,10 +69,9 @@ const install = (name) => { '--config.confirmModulesPurge=false', // Fixtures deliberately install pinned published versions of the Rstack // toolchain, which are often hours old — disable pnpm's - // minimum-release-age supply-chain gate for these sandboxes. It must be - // a CLI flag: `--ignore-workspace` also ignores a local - // pnpm-workspace.yaml, and pnpm would otherwise auto-write exclusion - // files into the fixture. + // minimum-release-age supply-chain gate for these sandboxes. The local + // workspace marker mirrors this for Renovate, but `--ignore-workspace` + // ignores that file here, so test setup still needs the CLI flag. '--config.minimumReleaseAge=0', // pnpm's build-script gate exits non-zero on unapproved postinstalls // (e.g. core-js in the rstest fixture). These sandboxes install real From 1d06b06162223a07acbb3c3f693f8bb02a1fff1a Mon Sep 17 00:00:00 2001 From: fi3ework Date: Thu, 3 Sep 2026 18:05:41 +0800 Subject: [PATCH 5/9] test(vscode): pin fixture toolchain versions exactly instead of committing lockfiles --- .github/renovate.json5 | 13 +- .gitignore | 7 +- CONTRIBUTING.md | 4 +- packages/vscode/AGENTS.md | 2 +- .../vscode/e2e/fixtures/rslint/package.json | 2 +- .../vscode/e2e/fixtures/rslint/pnpm-lock.yaml | 113 --- .../e2e/fixtures/rslint/pnpm-workspace.yaml | 5 - .../vscode/e2e/fixtures/rstack/pnpm-lock.yaml | 855 ------------------ .../e2e/fixtures/rstack/pnpm-workspace.yaml | 5 - .../vscode/e2e/fixtures/rstest/package.json | 2 +- .../vscode/e2e/fixtures/rstest/pnpm-lock.yaml | 301 ------ .../e2e/fixtures/rstest/pnpm-workspace.yaml | 5 - .../vscode/e2e/lint/fixtures/package.json | 2 +- .../vscode/e2e/lint/fixtures/pnpm-lock.yaml | 123 --- .../e2e/lint/fixtures/pnpm-workspace.yaml | 5 - .../rstest/fixtures/workspace-1/package.json | 2 +- .../fixtures/workspace-1/pnpm-lock.yaml | 293 ------ .../fixtures/workspace-1/pnpm-workspace.yaml | 5 - .../rstest/fixtures/workspace-2/package.json | 2 +- .../fixtures/workspace-2/pnpm-lock.yaml | 293 ------ .../fixtures/workspace-2/pnpm-workspace.yaml | 5 - packages/vscode/e2e/run.mjs | 8 +- packages/vscode/e2e/setupFixtures.mjs | 23 +- 23 files changed, 34 insertions(+), 2041 deletions(-) delete mode 100644 packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml delete mode 100644 packages/vscode/e2e/fixtures/rslint/pnpm-workspace.yaml delete mode 100644 packages/vscode/e2e/fixtures/rstack/pnpm-lock.yaml delete mode 100644 packages/vscode/e2e/fixtures/rstack/pnpm-workspace.yaml delete mode 100644 packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml delete mode 100644 packages/vscode/e2e/fixtures/rstest/pnpm-workspace.yaml delete mode 100644 packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml delete mode 100644 packages/vscode/e2e/lint/fixtures/pnpm-workspace.yaml delete mode 100644 packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml delete mode 100644 packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-workspace.yaml delete mode 100644 packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml delete mode 100644 packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-workspace.yaml diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 29b2e44..22dac03 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -6,8 +6,8 @@ 'schedule:weekly', 'helpers:pinGitHubActionDigests', ], - // E2E fixtures pin published packages with committed lockfiles; their Rstack - // dependencies are updated by the `rstack toolchain` group below. + // E2E fixtures pin exact published versions; their Rstack dependencies are + // updated by the `rstack toolchain` group below. ignorePaths: ['**/node_modules/**'], packageRules: [ // Use chore as semantic commit type for commit messages @@ -32,10 +32,11 @@ // waiver list staying in sync. Listed after `all-patch` so these land in // their own PR instead of the weekly patch roll-up. // - // This includes `@rslint/core`, `@rstest/core` and `rstack`, whose ranges - // sit alongside the runtime `SUPPORT_MATRIX` (shared/versionCheck.ts). - // That matrix is a floor, not a pin: raising a devDependency does not move - // it. Lowering the floor stays a deliberate, separate edit. + // This includes `@rslint/core`, `@rstest/core` and `rstack`, which appear as + // root/development ranges and exact fixture pins. The runtime + // `SUPPORT_MATRIX` (shared/versionCheck.ts) is a floor, not a pin: raising a + // dependency does not move it. Lowering the floor stays a deliberate, + // separate edit. { groupName: 'rstack toolchain', groupSlug: 'rstack', diff --git a/.gitignore b/.gitignore index 6e645bd..0c3f7bf 100644 --- a/.gitignore +++ b/.gitignore @@ -150,9 +150,12 @@ tests-dist/ # F5 playground's materialized Node (see .vscode/tasks.json "playground node") packages/vscode/.playground/ -# E2E fixtures install published npm versions from committed lockfiles; -# their node_modules directories stay disposable. +# E2E fixtures pin exact published versions and install them fresh; +# their generated node_modules directories and lockfiles stay disposable. packages/vscode/e2e/fixtures/*/node_modules/ +packages/vscode/e2e/fixtures/*/pnpm-lock.yaml +packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml +packages/vscode/e2e/rstest/fixtures/*/pnpm-lock.yaml # Build-time copy of the workspace root LICENSE (see rslib.config.mts) packages/vscode/LICENSE diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 550c4f4..a4b43b6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,9 +19,9 @@ pnpm install # also installs the git hooks (rs hooks) | `pnpm lint` | Lint + type check (`rs lint --type-check`) | | `pnpm fmt` | Format the repo (`rs fmt`) | | `pnpm test:unit` | Unit tests | -| `pnpm test:e2e` | Full E2E chain (installs fixtures from committed lockfiles, launches a real VS Code) | +| `pnpm test:e2e` | Full E2E chain (fresh-installs exactly pinned fixtures, launches a real VS Code) | -To try the extension: press F5 in VS Code at the repo root — the playground launch config starts a watch build, lets you pick a fixture project, and opens an Extension Development Host on it. Run `pnpm --filter rstack test:e2e:fixtures` once beforehand to install the fixture dependencies from their committed lockfiles. +To try the extension: press F5 in VS Code at the repo root — the playground launch config starts a watch build, lets you pick a fixture project, and opens an Extension Development Host on it. Run `pnpm --filter rstack test:e2e:fixtures` once beforehand to install the exactly pinned fixture dependencies. ## Submitting changes diff --git a/packages/vscode/AGENTS.md b/packages/vscode/AGENTS.md index 1f74fee..3aa73be 100644 --- a/packages/vscode/AGENTS.md +++ b/packages/vscode/AGENTS.md @@ -54,6 +54,6 @@ One extension replacing the standalone `rstack.rslint` and `rstack.rstest` exten ## Testing - E2E suites ported from upstream keep upstream's assertion semantics; every intentional deviation is documented in a comment in the test itself. A failing ported test is a regression, not a test to adjust. -- E2E fixtures install published npm packages (not workspace links): the extension must work against what users actually install. Each standalone fixture commits its `pnpm-lock.yaml` for deterministic installs and carries a package-less `pnpm-workspace.yaml` root marker so Renovate's plain `pnpm install --lockfile-only` stops there instead of updating the repository workspace; Renovate updates the manifests and lockfiles, while fixture `node_modules` remain disposable and uncommitted. +- E2E fixtures install exact versions of published npm packages (not workspace links): the extension must work against what users actually install. Renovate updates the exact toolchain pins; generated fixture lockfiles and `node_modules` remain disposable and uncommitted. - Prefer running the E2E slice that covers the change over the full chain: `pnpm test:e2e ` (or the `test:e2e:` aliases). Slices are declared in the `SLICES` table in `e2e/run.mjs` (name, fixtures, entry) — the package.json scripts are thin forwards and carry no slice knowledge. `RSTACK_LINT_E2E_SUITES=` filters lint suites. - Run E2E locally as `VSCODE_CLI=1 pnpm test:e2e `. Without it, the launched VS Code overwrites the extension host's `PATH` with a login-shell snapshot; on a machine whose login-shell `node` is below the runtime floor, the User Node preflight (correctly) refuses and every fmt test times out waiting for a server. CI is unaffected — its PATH `node` is new enough either way. The heavier alternative, `--force-disable-user-env` in `e2e/runTest.ts`, was deliberately not taken: it would change env fidelity for every slice. diff --git a/packages/vscode/e2e/fixtures/rslint/package.json b/packages/vscode/e2e/fixtures/rslint/package.json index 685cc60..a8f7d8a 100644 --- a/packages/vscode/e2e/fixtures/rslint/package.json +++ b/packages/vscode/e2e/fixtures/rslint/package.json @@ -5,6 +5,6 @@ "type": "module", "description": "E2E fixture: a project detected as Rslint only, installed from the npm registry.", "dependencies": { - "@rslint/core": "^0.9.0" + "@rslint/core": "0.9.0" } } diff --git a/packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml b/packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml deleted file mode 100644 index 76fb38d..0000000 --- a/packages/vscode/e2e/fixtures/rslint/pnpm-lock.yaml +++ /dev/null @@ -1,113 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@rslint/core': - specifier: ^0.9.0 - version: 0.9.0 - -packages: - - '@rslint/core@0.9.0': - resolution: {integrity: sha512-rY8F6kdQ/XkBiflaNzglJdMfxl0Lv/NFXppK0kAhx2P2CvogsXIA/z82Wxtk+Cg9uFHou67N9/iqmWXgdtSoDw==} - hasBin: true - peerDependencies: - jiti: ^2.7.0 - peerDependenciesMeta: - jiti: - optional: true - - '@rslint/native-darwin-arm64@0.9.0': - resolution: {integrity: sha512-xhdBrVALZTX0v4ZghKY7RGO87DpItk4DVvKm3MGih4w1o2WF2u+6n/mohvG7/ts7c8T88HIbLfK4luQ8kMDCsg==} - cpu: [arm64] - os: [darwin] - - '@rslint/native-darwin-x64@0.9.0': - resolution: {integrity: sha512-xuluXYUKizRZD/70WILvn+OeNdBT6izU81vhiNHVYdEQmfsqaqE8fthKGmQvaRu/DNL3CgVRPR+PzOAcQzPpOw==} - cpu: [x64] - os: [darwin] - - '@rslint/native-linux-arm64-gnu@0.9.0': - resolution: {integrity: sha512-J9uHBg/8Z9WanEKBXaPNZz0h+P8qtOLwjVqwEcOwYm1yLHRY70A7XqI6cRVIx72gXKGWtNBT2BRw9p8CWQUhgg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rslint/native-linux-arm64-musl@0.9.0': - resolution: {integrity: sha512-3ICIPH1oZOuMuZp+4hRhU+Af34U/2MNFB1yN+yi/jfJP+qBEExQbeBOS4J6HOecx9RJXcFvPF2ZI68l4g8/DPQ==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rslint/native-linux-x64-gnu@0.9.0': - resolution: {integrity: sha512-vlzcruA/t+0XvdK2S0bIS00H9Mpkrwo/hIFvpyUONgxi2WaO7XNDtgTWAsajB40WmvezYYLKs45LgkVXpxSCFA==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rslint/native-linux-x64-musl@0.9.0': - resolution: {integrity: sha512-+gPExuOtSPaP7jAWeMRnTobvQOhaqo9857K/7T2qvc15ksnYqqygMhzcVzm9Wt7L4KBoW6PR1uvwgmPaK4B0IA==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rslint/native-win32-arm64-msvc@0.9.0': - resolution: {integrity: sha512-YK5uTuk6zNXru2cOwivbZPH25C7u8RSQlKm5tOqwhaQ0ShCVDdh7z0SXvHvLdQ2VJen+30Vp1izAMZ7Zp/8KaQ==} - cpu: [arm64] - os: [win32] - - '@rslint/native-win32-x64-msvc@0.9.0': - resolution: {integrity: sha512-7elW5V8zm3McqA0LCjBBR7SDwQ5hRW+hrnJcCmrspSnBeUPFqnJfvUvsQPgbJz3pdrkBzzjZMvUgEYyBQ9dl8A==} - cpu: [x64] - os: [win32] - - picomatch@4.0.7: - resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} - engines: {node: '>=12'} - -snapshots: - - '@rslint/core@0.9.0': - dependencies: - picomatch: 4.0.7 - optionalDependencies: - '@rslint/native-darwin-arm64': 0.9.0 - '@rslint/native-darwin-x64': 0.9.0 - '@rslint/native-linux-arm64-gnu': 0.9.0 - '@rslint/native-linux-arm64-musl': 0.9.0 - '@rslint/native-linux-x64-gnu': 0.9.0 - '@rslint/native-linux-x64-musl': 0.9.0 - '@rslint/native-win32-arm64-msvc': 0.9.0 - '@rslint/native-win32-x64-msvc': 0.9.0 - - '@rslint/native-darwin-arm64@0.9.0': - optional: true - - '@rslint/native-darwin-x64@0.9.0': - optional: true - - '@rslint/native-linux-arm64-gnu@0.9.0': - optional: true - - '@rslint/native-linux-arm64-musl@0.9.0': - optional: true - - '@rslint/native-linux-x64-gnu@0.9.0': - optional: true - - '@rslint/native-linux-x64-musl@0.9.0': - optional: true - - '@rslint/native-win32-arm64-msvc@0.9.0': - optional: true - - '@rslint/native-win32-x64-msvc@0.9.0': - optional: true - - picomatch@4.0.7: {} diff --git a/packages/vscode/e2e/fixtures/rslint/pnpm-workspace.yaml b/packages/vscode/e2e/fixtures/rslint/pnpm-workspace.yaml deleted file mode 100644 index a85bf76..0000000 --- a/packages/vscode/e2e/fixtures/rslint/pnpm-workspace.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# This workspace-root marker makes pnpm stop here instead of walking up to the -# repository workspace; Renovate runs `pnpm install --lockfile-only` here without -# `--ignore-workspace`. -# Fixtures track toolchain releases that may be only hours old. -minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/fixtures/rstack/pnpm-lock.yaml b/packages/vscode/e2e/fixtures/rstack/pnpm-lock.yaml deleted file mode 100644 index 976938b..0000000 --- a/packages/vscode/e2e/fixtures/rstack/pnpm-lock.yaml +++ /dev/null @@ -1,855 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - rstack: - specifier: 0.7.2 - version: 0.7.2(jiti@2.7.0) - devDependencies: - jiti: - specifier: ^2.0.0 - version: 2.7.0 - -packages: - - '@ast-grep/napi-darwin-arm64@0.45.1': - resolution: {integrity: sha512-CthYcA0H3z5A2EHKH4rhSuFzpYUtxqUMnohmejxtMS6wiAgriKhOCopxN8XKclspYMtQyX2GC/PbvcU3dIbQHw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@ast-grep/napi-darwin-x64@0.45.1': - resolution: {integrity: sha512-PhlXMDEEH5fMjXjYcrbeNgGqrojj4zN8C7eMQC6M4pVkuW74uPhrblD4KUbNunp5I2LkWCdKOs36jhBaZe1iPw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@ast-grep/napi-linux-arm64-gnu@0.45.1': - resolution: {integrity: sha512-XScjs95/SrsV6kLl9MnF2qbqwKU79bcBA3JHi6xUu+hf0uZ0lc6MsZ595cEy5yw9PYRhgqwrT3wta9p4qU4jpg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@ast-grep/napi-linux-arm64-musl@0.45.1': - resolution: {integrity: sha512-qjH5CN5KIUdJW2dHfp8W57QsP6H0mA6E/rboKEzAxw6Ant1q2ZKqE3bLHUZMDoZXOBGdCODSZm0bTDcctiP49g==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@ast-grep/napi-linux-x64-gnu@0.45.1': - resolution: {integrity: sha512-nPP0y5EnehCgmYqvVDKSvH4vHbEFdAi8L+Kq2Sz94vK32yv4eOWf9vWhgoPscWpw76GWuwhpDvME8SZARnS3DQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@ast-grep/napi-linux-x64-musl@0.45.1': - resolution: {integrity: sha512-sg50LKH7TskWd/boWVFp9gwKc3Jd8sg0f8P6T2VQemX/EOj+OFaMJ2+y7Ok17WI/dODkrZgAPUwq7RAvMzLtqg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@ast-grep/napi-win32-arm64-msvc@0.45.1': - resolution: {integrity: sha512-wnTmD34OD9bUpdBVTb58P0y+YPb/2C2g07zj96LSk5R4pdcEMrCFsrWZlaNwtEV4q7L9BfLgrxq3MBGI8c6doA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@ast-grep/napi-win32-ia32-msvc@0.45.1': - resolution: {integrity: sha512-gRyJwRPY1mWRtnJ6AMncV2pNU+B2indjLCb9z/+aZrUN5u/gOxYryEzvRatyC9rVUMeQGJD+k0htpsqIwgXVbA==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@ast-grep/napi-win32-x64-msvc@0.45.1': - resolution: {integrity: sha512-mzfMmCO7tSNks+NGkGkSnDBKxBjHoOLAMJt2IbAkMYATxHC0RqfBoN7Qtd02VGhHWEfwWLPv/wU6MrvweZ3jdQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@ast-grep/napi@0.45.1': - resolution: {integrity: sha512-4cmGQEHoP9GLHEhGvd1vgSzO3Y6KF7FczDk4+q/VfXV9/9sNxNVgNHC8t3BglhIADDcoHrCMc9aw4lHG+M240A==} - engines: {node: '>= 10'} - - '@emnapi/core@1.11.3': - resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} - - '@emnapi/runtime@1.11.3': - resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} - - '@emnapi/wasi-threads@1.2.3': - resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} - - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - - '@rsbuild/core@2.2.2': - resolution: {integrity: sha512-T82jUaeMUFhcBqpmKvRiNAcWMp6abxkvMEwiZi4x+gf7NAbyiF5jrbLnQLm1y4909eANsTSHenp99HlRPIByLw==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - core-js: '>= 3.0.0' - peerDependenciesMeta: - core-js: - optional: true - - '@rslib/core@1.0.0-rc.2': - resolution: {integrity: sha512-6Bex+f8THioCRtfVg8cswHWR4T1xwY+VxRXoOXIgGBROTMlCuoS2/TzcLwYHmU1q1FXfXM8zAs0XuEnUAoDXzQ==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7 - typescript: ^5 || ^6 || ^7 - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - typescript: - optional: true - - '@rslint/core@0.9.0': - resolution: {integrity: sha512-rY8F6kdQ/XkBiflaNzglJdMfxl0Lv/NFXppK0kAhx2P2CvogsXIA/z82Wxtk+Cg9uFHou67N9/iqmWXgdtSoDw==} - hasBin: true - peerDependencies: - jiti: ^2.7.0 - peerDependenciesMeta: - jiti: - optional: true - - '@rslint/native-darwin-arm64@0.9.0': - resolution: {integrity: sha512-xhdBrVALZTX0v4ZghKY7RGO87DpItk4DVvKm3MGih4w1o2WF2u+6n/mohvG7/ts7c8T88HIbLfK4luQ8kMDCsg==} - cpu: [arm64] - os: [darwin] - - '@rslint/native-darwin-x64@0.9.0': - resolution: {integrity: sha512-xuluXYUKizRZD/70WILvn+OeNdBT6izU81vhiNHVYdEQmfsqaqE8fthKGmQvaRu/DNL3CgVRPR+PzOAcQzPpOw==} - cpu: [x64] - os: [darwin] - - '@rslint/native-linux-arm64-gnu@0.9.0': - resolution: {integrity: sha512-J9uHBg/8Z9WanEKBXaPNZz0h+P8qtOLwjVqwEcOwYm1yLHRY70A7XqI6cRVIx72gXKGWtNBT2BRw9p8CWQUhgg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rslint/native-linux-arm64-musl@0.9.0': - resolution: {integrity: sha512-3ICIPH1oZOuMuZp+4hRhU+Af34U/2MNFB1yN+yi/jfJP+qBEExQbeBOS4J6HOecx9RJXcFvPF2ZI68l4g8/DPQ==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rslint/native-linux-x64-gnu@0.9.0': - resolution: {integrity: sha512-vlzcruA/t+0XvdK2S0bIS00H9Mpkrwo/hIFvpyUONgxi2WaO7XNDtgTWAsajB40WmvezYYLKs45LgkVXpxSCFA==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rslint/native-linux-x64-musl@0.9.0': - resolution: {integrity: sha512-+gPExuOtSPaP7jAWeMRnTobvQOhaqo9857K/7T2qvc15ksnYqqygMhzcVzm9Wt7L4KBoW6PR1uvwgmPaK4B0IA==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rslint/native-win32-arm64-msvc@0.9.0': - resolution: {integrity: sha512-YK5uTuk6zNXru2cOwivbZPH25C7u8RSQlKm5tOqwhaQ0ShCVDdh7z0SXvHvLdQ2VJen+30Vp1izAMZ7Zp/8KaQ==} - cpu: [arm64] - os: [win32] - - '@rslint/native-win32-x64-msvc@0.9.0': - resolution: {integrity: sha512-7elW5V8zm3McqA0LCjBBR7SDwQ5hRW+hrnJcCmrspSnBeUPFqnJfvUvsQPgbJz3pdrkBzzjZMvUgEYyBQ9dl8A==} - cpu: [x64] - os: [win32] - - '@rspack/binding-darwin-arm64@2.2.2': - resolution: {integrity: sha512-/le/AvV4HSinXTPs2Lqpujxt189Z5T10Ggt96QzckLRPvIchzqoavVDDjltzC7XcaZ87XCH/X06jNKgzkcBBNA==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-x64@2.2.2': - resolution: {integrity: sha512-uFIcUPUXiPxM6ljenLafp5TemT8eLZm1riRn8fJYmpqNCK+aCcTaud18XHZpI5SjzzcY+xUHfVShgvNzKXuf2g==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@2.2.2': - resolution: {integrity: sha512-Pjby4pDSMNJQK2VBzpgCj6lb+DGuenS1fEDb6xi5/apbJb9v5WE+e43Mz7i+XqgXS8e846pjaONV3KM5WKB1LQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-arm64-musl@2.2.2': - resolution: {integrity: sha512-0u9O7tTVT2z+F6o/eEY6f6+My8Jn9U56QiBwkfy90ZaoAfZyQSSTxqaK/zA7W43oFxQefeCpiPas27VUzrSakw==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rspack/binding-linux-ppc64-gnu@2.2.2': - resolution: {integrity: sha512-N3lVnhq5qOvpmP5n386JzR1GcE8HzAqq4/r440Z6yle9m7PhVFJ6oXVWxgaDTYV0mtv9YLJmaG+YrjYfUa1vuA==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-riscv64-gnu@2.2.2': - resolution: {integrity: sha512-ReClZyp32/rJkUDV/oGDU0X6BCFyEkTR6r4stFwm/qOOaG6mUMRzZe4gur8Yh979p4Hiz9EdkmfEHY02GBXcaQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-riscv64-musl@2.2.2': - resolution: {integrity: sha512-mqsorvTNerr3r8zI35NFTPYATPDlhepdiUhZjKT6ylqpHlP7vLU9fp4aEMK/CuTv2f+IVsa0+iZqtMxHs2tSjw==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rspack/binding-linux-s390x-gnu@2.2.2': - resolution: {integrity: sha512-ql2Jub8QYWSugBppmj2u0SjcIj6fOQuAaLCYQOqU7zbvz/uuWTfoqmdWKExwrxeCU9Tzt7emVM0ETuVEpoca+A==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-x64-gnu@2.2.2': - resolution: {integrity: sha512-MNYKYEHrtIVEno2q5rgpou/JVffRwn109xPK3kxct95EojHsniNa8jwy6eEHeOazP4EN60Si7NElE3aQ6JssHw==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-x64-musl@2.2.2': - resolution: {integrity: sha512-y9/9CmE8lrECaF17GAhacibTL+SvlEPEotQnUuBFC/WFtXh8hU2E7a7bAkpYGSLH6kM0nrJZHO3hTvM1wdWOJw==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rspack/binding-wasm32-wasi@2.2.2': - resolution: {integrity: sha512-VbDIjjeFwZvMSKAOGY5IbU6lLzt6AHHHncTdMMkZ94Xk7O2BOHe9BXDV32Ln29TIW2C8m1fdxfPZWDiecVghUQ==} - cpu: [wasm32] - - '@rspack/binding-win32-arm64-msvc@2.2.2': - resolution: {integrity: sha512-rfcNg0W3ZPZvXma1gTyEt9/Z8FxASIaQr+sMWTSaTPPaeU3xY1+0hYcrD0kUFNs3/5L4u63myI4R8qRXiuW3pA==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@2.2.2': - resolution: {integrity: sha512-TFPvr9RZw9oHIhooDhXHzWjKcHpGPTxkznSeM2poIWU0CdEuua2rVUfsrriTF1Dmx+9kMly61DQmyOHCbb+b2g==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-x64-msvc@2.2.2': - resolution: {integrity: sha512-GvEGyL594dtWN9SoVnKWh0exrM8WLInaUjwcuA2JKbCi1ak/9iHxip/U1dY3DuVqBYBhmvYq96JPbl91xnzFjg==} - cpu: [x64] - os: [win32] - - '@rspack/binding@2.2.2': - resolution: {integrity: sha512-gWjKDQfVQJSBh/I+y9WTlyERsiShSJ7eI6Yl0SJs/6gjx8t4ixuwWCsaEFFjwSL4nSn6ML5hNQ7UFY3gj72BWA==} - - '@rspack/core@2.2.2': - resolution: {integrity: sha512-/yztfDZR5syIPBrUpzBpL+6fhhl0IHBPcXlNr4tOMBULbocFIz7Z4/cqvf1ix0DBbKpIGx99v6N1IDbk2gi8hw==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 - '@swc/helpers': ^0.5.23 - peerDependenciesMeta: - '@module-federation/runtime-tools': - optional: true - '@swc/helpers': - optional: true - - '@rstackjs/cli-darwin-arm64@0.7.2': - resolution: {integrity: sha512-po/JUgHx7DZ+Kmrbyy3L0/xr3rlZfVEk0Oy4D2xsjmAa3bHhP63B5XCOCyArLAZeMOqYPze9VaOcgWmGN5qWwQ==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [arm64] - os: [darwin] - - '@rstackjs/cli-darwin-x64@0.7.2': - resolution: {integrity: sha512-RFgUgUUXC3ZLF2iKJplsK2Ty49VkVw+rR8y5Hgf+3BAUn9ffRCUAqscWQGPCrJZENVbTEUWDyEVCMNnUpM6+Ww==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [x64] - os: [darwin] - - '@rstackjs/cli-linux-arm64-gnu@0.7.2': - resolution: {integrity: sha512-pNUbP/Bd962FznXLiJHnCcxpP/l1L9wmLsdIh43T8MQkY4m0Rv/s5tpA1rRcoqYHymhnVqWFcBAWxAPTSnOFFQ==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rstackjs/cli-linux-arm64-musl@0.7.2': - resolution: {integrity: sha512-cOC1WNNAZEeUxA0Lvbkk0ZBGMQIhKcjlZZinwGkg6zHJ7jxW42/SvwjNdnXv1xEpQd59OGJ1aSR1/Gt7PpItzw==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rstackjs/cli-linux-ppc64-gnu@0.7.2': - resolution: {integrity: sha512-jOk/KA3gpNapZO8y0Pc99XG7kjtgz6ndOGqKczgYD7VWBZcnMvD2KKI1GmeLxLf+9v0NiLtefj1CCtFEbqwXKg==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rstackjs/cli-linux-riscv64-gnu@0.7.2': - resolution: {integrity: sha512-8fukS3qf1nrvYDQ4886gWphHsg9gyktSkUUudSEFkamKKKOCmdZn+tDUvEebxYiqQCUEC/mqkUc/jg7EQKvP7Q==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rstackjs/cli-linux-riscv64-musl@0.7.2': - resolution: {integrity: sha512-AciMUbdFgC/bDP05iuC13x4uPDISkyx2S9KiWDnjhs7bCjHv19bhPeOGLnpUWjAL86LxbHNuk+rM8wdt1da4gg==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rstackjs/cli-linux-s390x-gnu@0.7.2': - resolution: {integrity: sha512-pj5V7Thbdc0FfK7Ngl3wLish7S0Yyy/ZmlH0Qd9UEMrNwMyMoyR+ZAJaWRjv7LFJQegPZNKBEgXfDc6Yeg7KjA==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rstackjs/cli-linux-x64-gnu@0.7.2': - resolution: {integrity: sha512-25Xzm2SXyDA1WkXrcHQym1ZI71ZK4n9AD32+0UT8IhVF+FGDBw0WG2UeOIr5XcaCCxgjGw1qec4aZ4GEd0/6vg==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rstackjs/cli-linux-x64-musl@0.7.2': - resolution: {integrity: sha512-77E3zZ5nrIP86nh40mMOvAu547a8qPDfTcKUQU/4fVjcE7g7zX17gQGGOHubzoqWRxv5abTABkG/ovhxqZ8bwQ==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rstackjs/cli-win32-arm64-msvc@0.7.2': - resolution: {integrity: sha512-fg8vRphmnXZQIC0lo757rwbFJS1s7Ft9RT9BzaJrqEcMWinxHx9HtKCddJ1scEpgu5Al8Vws74KYu2XNcUFUbA==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [arm64] - os: [win32] - - '@rstackjs/cli-win32-ia32-msvc@0.7.2': - resolution: {integrity: sha512-veUcxZ+ZqGzkkRYfkKj0GHlIKxR3NKm/Va4taifZLFXcqDFrSAmoueXTfhIzsLrNII+g85gizyaMdjytWhw8Lw==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [ia32] - os: [win32] - - '@rstackjs/cli-win32-x64-msvc@0.7.2': - resolution: {integrity: sha512-E/+K2W+GtezTLaOZ87erMyWOEbivKZiN/m/Iqeg8UJrfp9Zkqm7yIhQnYwG+KxN0gp3qjB/zxlcYdN5fnnhOWQ==} - engines: {node: ^22.18.0 || >=24.3.0} - cpu: [x64] - os: [win32] - - '@rstest/core@0.11.11': - resolution: {integrity: sha512-7Ii2/2/ex1Oa0Kg5Qk5RKx2+e0I83BHLwH0/gn1B7IDwXCh5msFCF7yTyVGFuMltlm3E8Cf4QD7jadOEaBfXfw==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - happy-dom: ^20.8.3 - jsdom: '>=15.0.0' - peerDependenciesMeta: - happy-dom: - optional: true - jsdom: - optional: true - - '@swc/helpers@0.5.23': - resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} - - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - - '@yuku-parser/binding-android-arm64@0.9.3': - resolution: {integrity: sha512-z3tDGTaUXD5Q4IuebFOY/QHxhR/SqujMhkMv9C5bh25upyFEXdafp0MsXQIIheWhVZzn5VMOniyxFni/7s9LgQ==} - cpu: [arm64] - os: [android] - - '@yuku-parser/binding-darwin-arm64@0.9.3': - resolution: {integrity: sha512-hzKvKSKS7z3ufnu1VkQYEoxmS6A5uNnkwukKnc2atxpWdq648nLVOqut4h1jUXjbM2WcoTfuZLF6AHAGFf8cmg==} - cpu: [arm64] - os: [darwin] - - '@yuku-parser/binding-darwin-x64@0.9.3': - resolution: {integrity: sha512-OM2PiVlPATvzlj/KGHNlu+t8FC3YzM5joVNjhsz/EaigQ8x2UUQ1Q0agQLiv5GZ2L8TSzrLUwBCZ7YOvP8q+tw==} - cpu: [x64] - os: [darwin] - - '@yuku-parser/binding-freebsd-x64@0.9.3': - resolution: {integrity: sha512-WMn9M4LHNVysGNwsAJ9gpRPqQIW2lcPrDNGcyk0agx3IYqCJq1MQugh6Be8Otc5U08eGdE39o8Kx9YWJmXz7GA==} - cpu: [x64] - os: [freebsd] - - '@yuku-parser/binding-linux-arm-gnu@0.9.3': - resolution: {integrity: sha512-vqKjwiyW1FWvbykYMEQIcAJwA17WxK3rxxqDuyCvQwcNVaLEUxI4BXiUdlF3kHucc7MnoFQhoRPkySgOzlLM+Q==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@yuku-parser/binding-linux-arm-musl@0.9.3': - resolution: {integrity: sha512-qohilhYOT+zkt2gYzym4F1T6BzRdvPqS9/sFB03pmnVV8LrvjOXVsGwEBAa3CEvzJKhAZjdTmVz7zsVdjyHWLg==} - cpu: [arm] - os: [linux] - libc: [musl] - - '@yuku-parser/binding-linux-arm64-gnu@0.9.3': - resolution: {integrity: sha512-tvTIyUvTGkeee68i4JIo9o27As+Ug6LXOZvElGgFbTs6+KBdb5LGhvugaIQljdfIsm2XnIbOLG6OnQSXHMLB9w==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@yuku-parser/binding-linux-arm64-musl@0.9.3': - resolution: {integrity: sha512-OWZBHW1wuChBpFlrF+On1yiBcFPMRrj2g0VKsM/PCBGffu1OM0ORkS+vLS3Snu6wYwndM5Dd9Ctvux6eUlrQjA==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@yuku-parser/binding-linux-x64-gnu@0.9.3': - resolution: {integrity: sha512-/tbk1h0dlADOCngbiQO9V3SHwBIJkoGBq8BDEraSw2CC3nGxPEPTCCYUDp5738Ij2FxVwy1FWVuhFkHvpMrPbQ==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@yuku-parser/binding-linux-x64-musl@0.9.3': - resolution: {integrity: sha512-u3+0sCso/mcjDvtc3866D2giV7l34PDyDVBkMesAWa3DWbIWPlybehi2SSnmScgArV22ctqSSgUzdBBVJ6zYAg==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@yuku-parser/binding-win32-arm64@0.9.3': - resolution: {integrity: sha512-xnGEvdhyjRkXozHtpXVpEEkyGZWAxJ3RoILv7XRV5SvTEztaTCk5GQyfcOzI9An/EJtcL4ERCI8QmS0TpDPJiA==} - cpu: [arm64] - os: [win32] - - '@yuku-parser/binding-win32-x64@0.9.3': - resolution: {integrity: sha512-N5eShGcuwnrXEprePFmEjtng6acZmtnC4zgazK9xxkavcx1q1uX8Nz8lU5RS973EMlNr902cIc6Cd2D4tqZDBg==} - cpu: [x64] - os: [win32] - - '@yuku-toolchain/types@0.9.3': - resolution: {integrity: sha512-rFE+5P4g2wxko5C85MugJOlVjBHEQq87dIkhLkniLXLp63PEtgaFjD954i5HXlfnyzLxPcZHsSOVDVgmo1HToA==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - jiti@2.7.0: - resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} - hasBin: true - - picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} - engines: {node: '>=12'} - - prettier@3.9.6: - resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} - engines: {node: '>=14'} - hasBin: true - - rsbuild-plugin-dts@1.0.0-rc.2: - resolution: {integrity: sha512-Mqalmu3j7UcDLUl3O5Y502V5Id6cbKyNn/nUxQIxar7gK2KjdPyw58WRfMQ7/4r4oHmeBeIgeSCb50M648ysoA==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - '@microsoft/api-extractor': ^7 - '@rsbuild/core': ^2.0.0 - typescript: ^5 || ^6 || ^7 - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - typescript: - optional: true - - rstack@0.7.2: - resolution: {integrity: sha512-A0nL89XfrcA1tqhX7WmA+6p7ogMr4oWSYaPH1h+Kybl/e4+mEQAO/GCVA2BPsoUsSx8KltC3wUkmuhkKtoQojQ==} - engines: {node: ^22.18.0 || >=24.3.0} - hasBin: true - peerDependencies: - '@rspress/core': ^2.0.17 - peerDependenciesMeta: - '@rspress/core': - optional: true - - tinypool@2.1.2: - resolution: {integrity: sha512-9YodfrxS9g9IbFr/KOjE5bAeJ0p61n3bW6mqvy0jtoeKd1kTW1Cxm0oulm6KX2lyM9Gl6WIe8nEbY7LWv5ZJww==} - engines: {node: ^20.0.0 || >=22.0.0} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - yuku-ast@0.9.3: - resolution: {integrity: sha512-Kt0PXlPCXdKF1fWFTl7N3DaxsVk6DHF8VAXHJMkwPtJnWYgbx20pYgGSweuC/86mIM7k1NUITQ4JffgOLUWTCw==} - - yuku-parser@0.9.3: - resolution: {integrity: sha512-96wPoHnwaXfkZv7UIOUkDb+s7ZH8lv8Qtg+MxdvHUV1LFa5jV9iKOaams1942YQt+krFQrWiD6lSg2ermv5kHA==} - -snapshots: - - '@ast-grep/napi-darwin-arm64@0.45.1': - optional: true - - '@ast-grep/napi-darwin-x64@0.45.1': - optional: true - - '@ast-grep/napi-linux-arm64-gnu@0.45.1': - optional: true - - '@ast-grep/napi-linux-arm64-musl@0.45.1': - optional: true - - '@ast-grep/napi-linux-x64-gnu@0.45.1': - optional: true - - '@ast-grep/napi-linux-x64-musl@0.45.1': - optional: true - - '@ast-grep/napi-win32-arm64-msvc@0.45.1': - optional: true - - '@ast-grep/napi-win32-ia32-msvc@0.45.1': - optional: true - - '@ast-grep/napi-win32-x64-msvc@0.45.1': - optional: true - - '@ast-grep/napi@0.45.1': - optionalDependencies: - '@ast-grep/napi-darwin-arm64': 0.45.1 - '@ast-grep/napi-darwin-x64': 0.45.1 - '@ast-grep/napi-linux-arm64-gnu': 0.45.1 - '@ast-grep/napi-linux-arm64-musl': 0.45.1 - '@ast-grep/napi-linux-x64-gnu': 0.45.1 - '@ast-grep/napi-linux-x64-musl': 0.45.1 - '@ast-grep/napi-win32-arm64-msvc': 0.45.1 - '@ast-grep/napi-win32-ia32-msvc': 0.45.1 - '@ast-grep/napi-win32-x64-msvc': 0.45.1 - - '@emnapi/core@1.11.3': - dependencies: - '@emnapi/wasi-threads': 1.2.3 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@rsbuild/core@2.2.2': - dependencies: - '@rspack/core': 2.2.2(@swc/helpers@0.5.23) - '@swc/helpers': 0.5.23 - transitivePeerDependencies: - - '@module-federation/runtime-tools' - - '@rslib/core@1.0.0-rc.2': - dependencies: - '@rsbuild/core': 2.2.2 - rsbuild-plugin-dts: 1.0.0-rc.2(@rsbuild/core@2.2.2) - transitivePeerDependencies: - - '@module-federation/runtime-tools' - - core-js - - '@rslint/core@0.9.0(jiti@2.7.0)': - dependencies: - picomatch: 4.0.5 - optionalDependencies: - '@rslint/native-darwin-arm64': 0.9.0 - '@rslint/native-darwin-x64': 0.9.0 - '@rslint/native-linux-arm64-gnu': 0.9.0 - '@rslint/native-linux-arm64-musl': 0.9.0 - '@rslint/native-linux-x64-gnu': 0.9.0 - '@rslint/native-linux-x64-musl': 0.9.0 - '@rslint/native-win32-arm64-msvc': 0.9.0 - '@rslint/native-win32-x64-msvc': 0.9.0 - jiti: 2.7.0 - - '@rslint/native-darwin-arm64@0.9.0': - optional: true - - '@rslint/native-darwin-x64@0.9.0': - optional: true - - '@rslint/native-linux-arm64-gnu@0.9.0': - optional: true - - '@rslint/native-linux-arm64-musl@0.9.0': - optional: true - - '@rslint/native-linux-x64-gnu@0.9.0': - optional: true - - '@rslint/native-linux-x64-musl@0.9.0': - optional: true - - '@rslint/native-win32-arm64-msvc@0.9.0': - optional: true - - '@rslint/native-win32-x64-msvc@0.9.0': - optional: true - - '@rspack/binding-darwin-arm64@2.2.2': - optional: true - - '@rspack/binding-darwin-x64@2.2.2': - optional: true - - '@rspack/binding-linux-arm64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-arm64-musl@2.2.2': - optional: true - - '@rspack/binding-linux-ppc64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-riscv64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-riscv64-musl@2.2.2': - optional: true - - '@rspack/binding-linux-s390x-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-x64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-x64-musl@2.2.2': - optional: true - - '@rspack/binding-wasm32-wasi@2.2.2': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) - optional: true - - '@rspack/binding-win32-arm64-msvc@2.2.2': - optional: true - - '@rspack/binding-win32-ia32-msvc@2.2.2': - optional: true - - '@rspack/binding-win32-x64-msvc@2.2.2': - optional: true - - '@rspack/binding@2.2.2': - optionalDependencies: - '@rspack/binding-darwin-arm64': 2.2.2 - '@rspack/binding-darwin-x64': 2.2.2 - '@rspack/binding-linux-arm64-gnu': 2.2.2 - '@rspack/binding-linux-arm64-musl': 2.2.2 - '@rspack/binding-linux-ppc64-gnu': 2.2.2 - '@rspack/binding-linux-riscv64-gnu': 2.2.2 - '@rspack/binding-linux-riscv64-musl': 2.2.2 - '@rspack/binding-linux-s390x-gnu': 2.2.2 - '@rspack/binding-linux-x64-gnu': 2.2.2 - '@rspack/binding-linux-x64-musl': 2.2.2 - '@rspack/binding-wasm32-wasi': 2.2.2 - '@rspack/binding-win32-arm64-msvc': 2.2.2 - '@rspack/binding-win32-ia32-msvc': 2.2.2 - '@rspack/binding-win32-x64-msvc': 2.2.2 - - '@rspack/core@2.2.2(@swc/helpers@0.5.23)': - dependencies: - '@rspack/binding': 2.2.2 - optionalDependencies: - '@swc/helpers': 0.5.23 - - '@rstackjs/cli-darwin-arm64@0.7.2': - optional: true - - '@rstackjs/cli-darwin-x64@0.7.2': - optional: true - - '@rstackjs/cli-linux-arm64-gnu@0.7.2': - optional: true - - '@rstackjs/cli-linux-arm64-musl@0.7.2': - optional: true - - '@rstackjs/cli-linux-ppc64-gnu@0.7.2': - optional: true - - '@rstackjs/cli-linux-riscv64-gnu@0.7.2': - optional: true - - '@rstackjs/cli-linux-riscv64-musl@0.7.2': - optional: true - - '@rstackjs/cli-linux-s390x-gnu@0.7.2': - optional: true - - '@rstackjs/cli-linux-x64-gnu@0.7.2': - optional: true - - '@rstackjs/cli-linux-x64-musl@0.7.2': - optional: true - - '@rstackjs/cli-win32-arm64-msvc@0.7.2': - optional: true - - '@rstackjs/cli-win32-ia32-msvc@0.7.2': - optional: true - - '@rstackjs/cli-win32-x64-msvc@0.7.2': - optional: true - - '@rstest/core@0.11.11': - dependencies: - '@rsbuild/core': 2.2.2 - '@types/chai': 5.2.3 - transitivePeerDependencies: - - '@module-federation/runtime-tools' - - core-js - - '@swc/helpers@0.5.23': - dependencies: - tslib: 2.8.1 - - '@tybys/wasm-util@0.10.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@types/chai@5.2.3': - dependencies: - '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 - - '@types/deep-eql@4.0.2': {} - - '@yuku-parser/binding-android-arm64@0.9.3': - optional: true - - '@yuku-parser/binding-darwin-arm64@0.9.3': - optional: true - - '@yuku-parser/binding-darwin-x64@0.9.3': - optional: true - - '@yuku-parser/binding-freebsd-x64@0.9.3': - optional: true - - '@yuku-parser/binding-linux-arm-gnu@0.9.3': - optional: true - - '@yuku-parser/binding-linux-arm-musl@0.9.3': - optional: true - - '@yuku-parser/binding-linux-arm64-gnu@0.9.3': - optional: true - - '@yuku-parser/binding-linux-arm64-musl@0.9.3': - optional: true - - '@yuku-parser/binding-linux-x64-gnu@0.9.3': - optional: true - - '@yuku-parser/binding-linux-x64-musl@0.9.3': - optional: true - - '@yuku-parser/binding-win32-arm64@0.9.3': - optional: true - - '@yuku-parser/binding-win32-x64@0.9.3': - optional: true - - '@yuku-toolchain/types@0.9.3': {} - - assertion-error@2.0.1: {} - - jiti@2.7.0: {} - - picomatch@4.0.5: {} - - prettier@3.9.6: {} - - rsbuild-plugin-dts@1.0.0-rc.2(@rsbuild/core@2.2.2): - dependencies: - '@ast-grep/napi': 0.45.1 - '@rsbuild/core': 2.2.2 - - rstack@0.7.2(jiti@2.7.0): - dependencies: - '@rsbuild/core': 2.2.2 - '@rslib/core': 1.0.0-rc.2 - '@rslint/core': 0.9.0(jiti@2.7.0) - '@rstest/core': 0.11.11 - prettier: 3.9.6 - tinypool: 2.1.2 - yuku-parser: 0.9.3 - optionalDependencies: - '@rstackjs/cli-darwin-arm64': 0.7.2 - '@rstackjs/cli-darwin-x64': 0.7.2 - '@rstackjs/cli-linux-arm64-gnu': 0.7.2 - '@rstackjs/cli-linux-arm64-musl': 0.7.2 - '@rstackjs/cli-linux-ppc64-gnu': 0.7.2 - '@rstackjs/cli-linux-riscv64-gnu': 0.7.2 - '@rstackjs/cli-linux-riscv64-musl': 0.7.2 - '@rstackjs/cli-linux-s390x-gnu': 0.7.2 - '@rstackjs/cli-linux-x64-gnu': 0.7.2 - '@rstackjs/cli-linux-x64-musl': 0.7.2 - '@rstackjs/cli-win32-arm64-msvc': 0.7.2 - '@rstackjs/cli-win32-ia32-msvc': 0.7.2 - '@rstackjs/cli-win32-x64-msvc': 0.7.2 - transitivePeerDependencies: - - '@microsoft/api-extractor' - - '@module-federation/runtime-tools' - - core-js - - happy-dom - - jiti - - jsdom - - typescript - - tinypool@2.1.2: {} - - tslib@2.8.1: {} - - yuku-ast@0.9.3: - dependencies: - '@yuku-toolchain/types': 0.9.3 - - yuku-parser@0.9.3: - dependencies: - '@yuku-toolchain/types': 0.9.3 - yuku-ast: 0.9.3 - optionalDependencies: - '@yuku-parser/binding-android-arm64': 0.9.3 - '@yuku-parser/binding-darwin-arm64': 0.9.3 - '@yuku-parser/binding-darwin-x64': 0.9.3 - '@yuku-parser/binding-freebsd-x64': 0.9.3 - '@yuku-parser/binding-linux-arm-gnu': 0.9.3 - '@yuku-parser/binding-linux-arm-musl': 0.9.3 - '@yuku-parser/binding-linux-arm64-gnu': 0.9.3 - '@yuku-parser/binding-linux-arm64-musl': 0.9.3 - '@yuku-parser/binding-linux-x64-gnu': 0.9.3 - '@yuku-parser/binding-linux-x64-musl': 0.9.3 - '@yuku-parser/binding-win32-arm64': 0.9.3 - '@yuku-parser/binding-win32-x64': 0.9.3 diff --git a/packages/vscode/e2e/fixtures/rstack/pnpm-workspace.yaml b/packages/vscode/e2e/fixtures/rstack/pnpm-workspace.yaml deleted file mode 100644 index a85bf76..0000000 --- a/packages/vscode/e2e/fixtures/rstack/pnpm-workspace.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# This workspace-root marker makes pnpm stop here instead of walking up to the -# repository workspace; Renovate runs `pnpm install --lockfile-only` here without -# `--ignore-workspace`. -# Fixtures track toolchain releases that may be only hours old. -minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/fixtures/rstest/package.json b/packages/vscode/e2e/fixtures/rstest/package.json index 599c111..8ed8c99 100644 --- a/packages/vscode/e2e/fixtures/rstest/package.json +++ b/packages/vscode/e2e/fixtures/rstest/package.json @@ -5,6 +5,6 @@ "type": "module", "description": "E2E fixture: a project detected as Rstest only, installed from the npm registry.", "dependencies": { - "@rstest/core": "^0.11.11" + "@rstest/core": "0.11.11" } } diff --git a/packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml b/packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml deleted file mode 100644 index e3c7b01..0000000 --- a/packages/vscode/e2e/fixtures/rstest/pnpm-lock.yaml +++ /dev/null @@ -1,301 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@rstest/core': - specifier: ^0.11.11 - version: 0.11.11(core-js@3.46.0) - -packages: - - '@emnapi/core@1.11.3': - resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} - - '@emnapi/runtime@1.11.3': - resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} - - '@emnapi/wasi-threads@1.2.3': - resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} - - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - - '@rsbuild/core@2.2.3': - resolution: {integrity: sha512-oJrYtYDhb7AMwY8HIda2hgMuuxHkYPYar4svdS5uTq0fXY0M1wLfllkTQz0d729pNJ4S//6GUM1WX5LsW2mFLw==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - core-js: '>= 3.0.0' - peerDependenciesMeta: - core-js: - optional: true - - '@rspack/binding-darwin-arm64@2.2.2': - resolution: {integrity: sha512-/le/AvV4HSinXTPs2Lqpujxt189Z5T10Ggt96QzckLRPvIchzqoavVDDjltzC7XcaZ87XCH/X06jNKgzkcBBNA==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-x64@2.2.2': - resolution: {integrity: sha512-uFIcUPUXiPxM6ljenLafp5TemT8eLZm1riRn8fJYmpqNCK+aCcTaud18XHZpI5SjzzcY+xUHfVShgvNzKXuf2g==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@2.2.2': - resolution: {integrity: sha512-Pjby4pDSMNJQK2VBzpgCj6lb+DGuenS1fEDb6xi5/apbJb9v5WE+e43Mz7i+XqgXS8e846pjaONV3KM5WKB1LQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-arm64-musl@2.2.2': - resolution: {integrity: sha512-0u9O7tTVT2z+F6o/eEY6f6+My8Jn9U56QiBwkfy90ZaoAfZyQSSTxqaK/zA7W43oFxQefeCpiPas27VUzrSakw==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rspack/binding-linux-ppc64-gnu@2.2.2': - resolution: {integrity: sha512-N3lVnhq5qOvpmP5n386JzR1GcE8HzAqq4/r440Z6yle9m7PhVFJ6oXVWxgaDTYV0mtv9YLJmaG+YrjYfUa1vuA==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-riscv64-gnu@2.2.2': - resolution: {integrity: sha512-ReClZyp32/rJkUDV/oGDU0X6BCFyEkTR6r4stFwm/qOOaG6mUMRzZe4gur8Yh979p4Hiz9EdkmfEHY02GBXcaQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-riscv64-musl@2.2.2': - resolution: {integrity: sha512-mqsorvTNerr3r8zI35NFTPYATPDlhepdiUhZjKT6ylqpHlP7vLU9fp4aEMK/CuTv2f+IVsa0+iZqtMxHs2tSjw==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rspack/binding-linux-s390x-gnu@2.2.2': - resolution: {integrity: sha512-ql2Jub8QYWSugBppmj2u0SjcIj6fOQuAaLCYQOqU7zbvz/uuWTfoqmdWKExwrxeCU9Tzt7emVM0ETuVEpoca+A==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-x64-gnu@2.2.2': - resolution: {integrity: sha512-MNYKYEHrtIVEno2q5rgpou/JVffRwn109xPK3kxct95EojHsniNa8jwy6eEHeOazP4EN60Si7NElE3aQ6JssHw==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-x64-musl@2.2.2': - resolution: {integrity: sha512-y9/9CmE8lrECaF17GAhacibTL+SvlEPEotQnUuBFC/WFtXh8hU2E7a7bAkpYGSLH6kM0nrJZHO3hTvM1wdWOJw==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rspack/binding-wasm32-wasi@2.2.2': - resolution: {integrity: sha512-VbDIjjeFwZvMSKAOGY5IbU6lLzt6AHHHncTdMMkZ94Xk7O2BOHe9BXDV32Ln29TIW2C8m1fdxfPZWDiecVghUQ==} - cpu: [wasm32] - - '@rspack/binding-win32-arm64-msvc@2.2.2': - resolution: {integrity: sha512-rfcNg0W3ZPZvXma1gTyEt9/Z8FxASIaQr+sMWTSaTPPaeU3xY1+0hYcrD0kUFNs3/5L4u63myI4R8qRXiuW3pA==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@2.2.2': - resolution: {integrity: sha512-TFPvr9RZw9oHIhooDhXHzWjKcHpGPTxkznSeM2poIWU0CdEuua2rVUfsrriTF1Dmx+9kMly61DQmyOHCbb+b2g==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-x64-msvc@2.2.2': - resolution: {integrity: sha512-GvEGyL594dtWN9SoVnKWh0exrM8WLInaUjwcuA2JKbCi1ak/9iHxip/U1dY3DuVqBYBhmvYq96JPbl91xnzFjg==} - cpu: [x64] - os: [win32] - - '@rspack/binding@2.2.2': - resolution: {integrity: sha512-gWjKDQfVQJSBh/I+y9WTlyERsiShSJ7eI6Yl0SJs/6gjx8t4ixuwWCsaEFFjwSL4nSn6ML5hNQ7UFY3gj72BWA==} - - '@rspack/core@2.2.2': - resolution: {integrity: sha512-/yztfDZR5syIPBrUpzBpL+6fhhl0IHBPcXlNr4tOMBULbocFIz7Z4/cqvf1ix0DBbKpIGx99v6N1IDbk2gi8hw==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 - '@swc/helpers': ^0.5.23 - peerDependenciesMeta: - '@module-federation/runtime-tools': - optional: true - '@swc/helpers': - optional: true - - '@rstest/core@0.11.11': - resolution: {integrity: sha512-7Ii2/2/ex1Oa0Kg5Qk5RKx2+e0I83BHLwH0/gn1B7IDwXCh5msFCF7yTyVGFuMltlm3E8Cf4QD7jadOEaBfXfw==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - happy-dom: ^20.8.3 - jsdom: '>=15.0.0' - peerDependenciesMeta: - happy-dom: - optional: true - jsdom: - optional: true - - '@swc/helpers@0.5.23': - resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} - - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - core-js@3.46.0: - resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - -snapshots: - - '@emnapi/core@1.11.3': - dependencies: - '@emnapi/wasi-threads': 1.2.3 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@rsbuild/core@2.2.3(core-js@3.46.0)': - dependencies: - '@rspack/core': 2.2.2(@swc/helpers@0.5.23) - '@swc/helpers': 0.5.23 - optionalDependencies: - core-js: 3.46.0 - transitivePeerDependencies: - - '@module-federation/runtime-tools' - - '@rspack/binding-darwin-arm64@2.2.2': - optional: true - - '@rspack/binding-darwin-x64@2.2.2': - optional: true - - '@rspack/binding-linux-arm64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-arm64-musl@2.2.2': - optional: true - - '@rspack/binding-linux-ppc64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-riscv64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-riscv64-musl@2.2.2': - optional: true - - '@rspack/binding-linux-s390x-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-x64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-x64-musl@2.2.2': - optional: true - - '@rspack/binding-wasm32-wasi@2.2.2': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) - optional: true - - '@rspack/binding-win32-arm64-msvc@2.2.2': - optional: true - - '@rspack/binding-win32-ia32-msvc@2.2.2': - optional: true - - '@rspack/binding-win32-x64-msvc@2.2.2': - optional: true - - '@rspack/binding@2.2.2': - optionalDependencies: - '@rspack/binding-darwin-arm64': 2.2.2 - '@rspack/binding-darwin-x64': 2.2.2 - '@rspack/binding-linux-arm64-gnu': 2.2.2 - '@rspack/binding-linux-arm64-musl': 2.2.2 - '@rspack/binding-linux-ppc64-gnu': 2.2.2 - '@rspack/binding-linux-riscv64-gnu': 2.2.2 - '@rspack/binding-linux-riscv64-musl': 2.2.2 - '@rspack/binding-linux-s390x-gnu': 2.2.2 - '@rspack/binding-linux-x64-gnu': 2.2.2 - '@rspack/binding-linux-x64-musl': 2.2.2 - '@rspack/binding-wasm32-wasi': 2.2.2 - '@rspack/binding-win32-arm64-msvc': 2.2.2 - '@rspack/binding-win32-ia32-msvc': 2.2.2 - '@rspack/binding-win32-x64-msvc': 2.2.2 - - '@rspack/core@2.2.2(@swc/helpers@0.5.23)': - dependencies: - '@rspack/binding': 2.2.2 - optionalDependencies: - '@swc/helpers': 0.5.23 - - '@rstest/core@0.11.11(core-js@3.46.0)': - dependencies: - '@rsbuild/core': 2.2.3(core-js@3.46.0) - '@types/chai': 5.2.3 - transitivePeerDependencies: - - '@module-federation/runtime-tools' - - core-js - - '@swc/helpers@0.5.23': - dependencies: - tslib: 2.8.1 - - '@tybys/wasm-util@0.10.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@types/chai@5.2.3': - dependencies: - '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 - - '@types/deep-eql@4.0.2': {} - - assertion-error@2.0.1: {} - - core-js@3.46.0: - optional: true - - tslib@2.8.1: {} diff --git a/packages/vscode/e2e/fixtures/rstest/pnpm-workspace.yaml b/packages/vscode/e2e/fixtures/rstest/pnpm-workspace.yaml deleted file mode 100644 index a85bf76..0000000 --- a/packages/vscode/e2e/fixtures/rstest/pnpm-workspace.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# This workspace-root marker makes pnpm stop here instead of walking up to the -# repository workspace; Renovate runs `pnpm install --lockfile-only` here without -# `--ignore-workspace`. -# Fixtures track toolchain releases that may be only hours old. -minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/lint/fixtures/package.json b/packages/vscode/e2e/lint/fixtures/package.json index de8b07e..6bd1a10 100644 --- a/packages/vscode/e2e/lint/fixtures/package.json +++ b/packages/vscode/e2e/lint/fixtures/package.json @@ -4,7 +4,7 @@ "private": true, "description": "Shared install root for the Rslint E2E fixture workspaces. The extension ships no binary: every fixture resolves @rslint/core - including its native Go binary, config-loader and eslint-plugin host - from this one published-npm install. jiti backs the config-file-loader's TypeScript-config fallback.", "dependencies": { - "@rslint/core": "^0.9.0", + "@rslint/core": "0.9.0", "jiti": "^2.7.0" } } diff --git a/packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml b/packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml deleted file mode 100644 index 99f9a31..0000000 --- a/packages/vscode/e2e/lint/fixtures/pnpm-lock.yaml +++ /dev/null @@ -1,123 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@rslint/core': - specifier: ^0.9.0 - version: 0.9.0(jiti@2.7.0) - jiti: - specifier: ^2.7.0 - version: 2.7.0 - -packages: - - '@rslint/core@0.9.0': - resolution: {integrity: sha512-rY8F6kdQ/XkBiflaNzglJdMfxl0Lv/NFXppK0kAhx2P2CvogsXIA/z82Wxtk+Cg9uFHou67N9/iqmWXgdtSoDw==} - hasBin: true - peerDependencies: - jiti: ^2.7.0 - peerDependenciesMeta: - jiti: - optional: true - - '@rslint/native-darwin-arm64@0.9.0': - resolution: {integrity: sha512-xhdBrVALZTX0v4ZghKY7RGO87DpItk4DVvKm3MGih4w1o2WF2u+6n/mohvG7/ts7c8T88HIbLfK4luQ8kMDCsg==} - cpu: [arm64] - os: [darwin] - - '@rslint/native-darwin-x64@0.9.0': - resolution: {integrity: sha512-xuluXYUKizRZD/70WILvn+OeNdBT6izU81vhiNHVYdEQmfsqaqE8fthKGmQvaRu/DNL3CgVRPR+PzOAcQzPpOw==} - cpu: [x64] - os: [darwin] - - '@rslint/native-linux-arm64-gnu@0.9.0': - resolution: {integrity: sha512-J9uHBg/8Z9WanEKBXaPNZz0h+P8qtOLwjVqwEcOwYm1yLHRY70A7XqI6cRVIx72gXKGWtNBT2BRw9p8CWQUhgg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rslint/native-linux-arm64-musl@0.9.0': - resolution: {integrity: sha512-3ICIPH1oZOuMuZp+4hRhU+Af34U/2MNFB1yN+yi/jfJP+qBEExQbeBOS4J6HOecx9RJXcFvPF2ZI68l4g8/DPQ==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rslint/native-linux-x64-gnu@0.9.0': - resolution: {integrity: sha512-vlzcruA/t+0XvdK2S0bIS00H9Mpkrwo/hIFvpyUONgxi2WaO7XNDtgTWAsajB40WmvezYYLKs45LgkVXpxSCFA==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rslint/native-linux-x64-musl@0.9.0': - resolution: {integrity: sha512-+gPExuOtSPaP7jAWeMRnTobvQOhaqo9857K/7T2qvc15ksnYqqygMhzcVzm9Wt7L4KBoW6PR1uvwgmPaK4B0IA==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rslint/native-win32-arm64-msvc@0.9.0': - resolution: {integrity: sha512-YK5uTuk6zNXru2cOwivbZPH25C7u8RSQlKm5tOqwhaQ0ShCVDdh7z0SXvHvLdQ2VJen+30Vp1izAMZ7Zp/8KaQ==} - cpu: [arm64] - os: [win32] - - '@rslint/native-win32-x64-msvc@0.9.0': - resolution: {integrity: sha512-7elW5V8zm3McqA0LCjBBR7SDwQ5hRW+hrnJcCmrspSnBeUPFqnJfvUvsQPgbJz3pdrkBzzjZMvUgEYyBQ9dl8A==} - cpu: [x64] - os: [win32] - - jiti@2.7.0: - resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} - hasBin: true - - picomatch@4.0.7: - resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} - engines: {node: '>=12'} - -snapshots: - - '@rslint/core@0.9.0(jiti@2.7.0)': - dependencies: - picomatch: 4.0.7 - optionalDependencies: - '@rslint/native-darwin-arm64': 0.9.0 - '@rslint/native-darwin-x64': 0.9.0 - '@rslint/native-linux-arm64-gnu': 0.9.0 - '@rslint/native-linux-arm64-musl': 0.9.0 - '@rslint/native-linux-x64-gnu': 0.9.0 - '@rslint/native-linux-x64-musl': 0.9.0 - '@rslint/native-win32-arm64-msvc': 0.9.0 - '@rslint/native-win32-x64-msvc': 0.9.0 - jiti: 2.7.0 - - '@rslint/native-darwin-arm64@0.9.0': - optional: true - - '@rslint/native-darwin-x64@0.9.0': - optional: true - - '@rslint/native-linux-arm64-gnu@0.9.0': - optional: true - - '@rslint/native-linux-arm64-musl@0.9.0': - optional: true - - '@rslint/native-linux-x64-gnu@0.9.0': - optional: true - - '@rslint/native-linux-x64-musl@0.9.0': - optional: true - - '@rslint/native-win32-arm64-msvc@0.9.0': - optional: true - - '@rslint/native-win32-x64-msvc@0.9.0': - optional: true - - jiti@2.7.0: {} - - picomatch@4.0.7: {} diff --git a/packages/vscode/e2e/lint/fixtures/pnpm-workspace.yaml b/packages/vscode/e2e/lint/fixtures/pnpm-workspace.yaml deleted file mode 100644 index a85bf76..0000000 --- a/packages/vscode/e2e/lint/fixtures/pnpm-workspace.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# This workspace-root marker makes pnpm stop here instead of walking up to the -# repository workspace; Renovate runs `pnpm install --lockfile-only` here without -# `--ignore-workspace`. -# Fixtures track toolchain releases that may be only hours old. -minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-1/package.json b/packages/vscode/e2e/rstest/fixtures/workspace-1/package.json index 13c68b0..0cdf478 100644 --- a/packages/vscode/e2e/rstest/fixtures/workspace-1/package.json +++ b/packages/vscode/e2e/rstest/fixtures/workspace-1/package.json @@ -4,6 +4,6 @@ "private": true, "description": "E2E fixture for the ported Rstest suites: upstream `tests/fixtures/workspace-1`, made self-contained on the published `@rstest/core`.", "dependencies": { - "@rstest/core": "^0.11.11" + "@rstest/core": "0.11.11" } } diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml b/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml deleted file mode 100644 index 80c3d88..0000000 --- a/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-lock.yaml +++ /dev/null @@ -1,293 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@rstest/core': - specifier: ^0.11.11 - version: 0.11.11 - -packages: - - '@emnapi/core@1.11.3': - resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} - - '@emnapi/runtime@1.11.3': - resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} - - '@emnapi/wasi-threads@1.2.3': - resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} - - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - - '@rsbuild/core@2.2.3': - resolution: {integrity: sha512-oJrYtYDhb7AMwY8HIda2hgMuuxHkYPYar4svdS5uTq0fXY0M1wLfllkTQz0d729pNJ4S//6GUM1WX5LsW2mFLw==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - core-js: '>= 3.0.0' - peerDependenciesMeta: - core-js: - optional: true - - '@rspack/binding-darwin-arm64@2.2.2': - resolution: {integrity: sha512-/le/AvV4HSinXTPs2Lqpujxt189Z5T10Ggt96QzckLRPvIchzqoavVDDjltzC7XcaZ87XCH/X06jNKgzkcBBNA==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-x64@2.2.2': - resolution: {integrity: sha512-uFIcUPUXiPxM6ljenLafp5TemT8eLZm1riRn8fJYmpqNCK+aCcTaud18XHZpI5SjzzcY+xUHfVShgvNzKXuf2g==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@2.2.2': - resolution: {integrity: sha512-Pjby4pDSMNJQK2VBzpgCj6lb+DGuenS1fEDb6xi5/apbJb9v5WE+e43Mz7i+XqgXS8e846pjaONV3KM5WKB1LQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-arm64-musl@2.2.2': - resolution: {integrity: sha512-0u9O7tTVT2z+F6o/eEY6f6+My8Jn9U56QiBwkfy90ZaoAfZyQSSTxqaK/zA7W43oFxQefeCpiPas27VUzrSakw==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rspack/binding-linux-ppc64-gnu@2.2.2': - resolution: {integrity: sha512-N3lVnhq5qOvpmP5n386JzR1GcE8HzAqq4/r440Z6yle9m7PhVFJ6oXVWxgaDTYV0mtv9YLJmaG+YrjYfUa1vuA==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-riscv64-gnu@2.2.2': - resolution: {integrity: sha512-ReClZyp32/rJkUDV/oGDU0X6BCFyEkTR6r4stFwm/qOOaG6mUMRzZe4gur8Yh979p4Hiz9EdkmfEHY02GBXcaQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-riscv64-musl@2.2.2': - resolution: {integrity: sha512-mqsorvTNerr3r8zI35NFTPYATPDlhepdiUhZjKT6ylqpHlP7vLU9fp4aEMK/CuTv2f+IVsa0+iZqtMxHs2tSjw==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rspack/binding-linux-s390x-gnu@2.2.2': - resolution: {integrity: sha512-ql2Jub8QYWSugBppmj2u0SjcIj6fOQuAaLCYQOqU7zbvz/uuWTfoqmdWKExwrxeCU9Tzt7emVM0ETuVEpoca+A==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-x64-gnu@2.2.2': - resolution: {integrity: sha512-MNYKYEHrtIVEno2q5rgpou/JVffRwn109xPK3kxct95EojHsniNa8jwy6eEHeOazP4EN60Si7NElE3aQ6JssHw==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-x64-musl@2.2.2': - resolution: {integrity: sha512-y9/9CmE8lrECaF17GAhacibTL+SvlEPEotQnUuBFC/WFtXh8hU2E7a7bAkpYGSLH6kM0nrJZHO3hTvM1wdWOJw==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rspack/binding-wasm32-wasi@2.2.2': - resolution: {integrity: sha512-VbDIjjeFwZvMSKAOGY5IbU6lLzt6AHHHncTdMMkZ94Xk7O2BOHe9BXDV32Ln29TIW2C8m1fdxfPZWDiecVghUQ==} - cpu: [wasm32] - - '@rspack/binding-win32-arm64-msvc@2.2.2': - resolution: {integrity: sha512-rfcNg0W3ZPZvXma1gTyEt9/Z8FxASIaQr+sMWTSaTPPaeU3xY1+0hYcrD0kUFNs3/5L4u63myI4R8qRXiuW3pA==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@2.2.2': - resolution: {integrity: sha512-TFPvr9RZw9oHIhooDhXHzWjKcHpGPTxkznSeM2poIWU0CdEuua2rVUfsrriTF1Dmx+9kMly61DQmyOHCbb+b2g==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-x64-msvc@2.2.2': - resolution: {integrity: sha512-GvEGyL594dtWN9SoVnKWh0exrM8WLInaUjwcuA2JKbCi1ak/9iHxip/U1dY3DuVqBYBhmvYq96JPbl91xnzFjg==} - cpu: [x64] - os: [win32] - - '@rspack/binding@2.2.2': - resolution: {integrity: sha512-gWjKDQfVQJSBh/I+y9WTlyERsiShSJ7eI6Yl0SJs/6gjx8t4ixuwWCsaEFFjwSL4nSn6ML5hNQ7UFY3gj72BWA==} - - '@rspack/core@2.2.2': - resolution: {integrity: sha512-/yztfDZR5syIPBrUpzBpL+6fhhl0IHBPcXlNr4tOMBULbocFIz7Z4/cqvf1ix0DBbKpIGx99v6N1IDbk2gi8hw==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 - '@swc/helpers': ^0.5.23 - peerDependenciesMeta: - '@module-federation/runtime-tools': - optional: true - '@swc/helpers': - optional: true - - '@rstest/core@0.11.11': - resolution: {integrity: sha512-7Ii2/2/ex1Oa0Kg5Qk5RKx2+e0I83BHLwH0/gn1B7IDwXCh5msFCF7yTyVGFuMltlm3E8Cf4QD7jadOEaBfXfw==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - happy-dom: ^20.8.3 - jsdom: '>=15.0.0' - peerDependenciesMeta: - happy-dom: - optional: true - jsdom: - optional: true - - '@swc/helpers@0.5.23': - resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} - - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - -snapshots: - - '@emnapi/core@1.11.3': - dependencies: - '@emnapi/wasi-threads': 1.2.3 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@rsbuild/core@2.2.3': - dependencies: - '@rspack/core': 2.2.2(@swc/helpers@0.5.23) - '@swc/helpers': 0.5.23 - transitivePeerDependencies: - - '@module-federation/runtime-tools' - - '@rspack/binding-darwin-arm64@2.2.2': - optional: true - - '@rspack/binding-darwin-x64@2.2.2': - optional: true - - '@rspack/binding-linux-arm64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-arm64-musl@2.2.2': - optional: true - - '@rspack/binding-linux-ppc64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-riscv64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-riscv64-musl@2.2.2': - optional: true - - '@rspack/binding-linux-s390x-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-x64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-x64-musl@2.2.2': - optional: true - - '@rspack/binding-wasm32-wasi@2.2.2': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) - optional: true - - '@rspack/binding-win32-arm64-msvc@2.2.2': - optional: true - - '@rspack/binding-win32-ia32-msvc@2.2.2': - optional: true - - '@rspack/binding-win32-x64-msvc@2.2.2': - optional: true - - '@rspack/binding@2.2.2': - optionalDependencies: - '@rspack/binding-darwin-arm64': 2.2.2 - '@rspack/binding-darwin-x64': 2.2.2 - '@rspack/binding-linux-arm64-gnu': 2.2.2 - '@rspack/binding-linux-arm64-musl': 2.2.2 - '@rspack/binding-linux-ppc64-gnu': 2.2.2 - '@rspack/binding-linux-riscv64-gnu': 2.2.2 - '@rspack/binding-linux-riscv64-musl': 2.2.2 - '@rspack/binding-linux-s390x-gnu': 2.2.2 - '@rspack/binding-linux-x64-gnu': 2.2.2 - '@rspack/binding-linux-x64-musl': 2.2.2 - '@rspack/binding-wasm32-wasi': 2.2.2 - '@rspack/binding-win32-arm64-msvc': 2.2.2 - '@rspack/binding-win32-ia32-msvc': 2.2.2 - '@rspack/binding-win32-x64-msvc': 2.2.2 - - '@rspack/core@2.2.2(@swc/helpers@0.5.23)': - dependencies: - '@rspack/binding': 2.2.2 - optionalDependencies: - '@swc/helpers': 0.5.23 - - '@rstest/core@0.11.11': - dependencies: - '@rsbuild/core': 2.2.3 - '@types/chai': 5.2.3 - transitivePeerDependencies: - - '@module-federation/runtime-tools' - - core-js - - '@swc/helpers@0.5.23': - dependencies: - tslib: 2.8.1 - - '@tybys/wasm-util@0.10.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@types/chai@5.2.3': - dependencies: - '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 - - '@types/deep-eql@4.0.2': {} - - assertion-error@2.0.1: {} - - tslib@2.8.1: {} diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-workspace.yaml b/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-workspace.yaml deleted file mode 100644 index a85bf76..0000000 --- a/packages/vscode/e2e/rstest/fixtures/workspace-1/pnpm-workspace.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# This workspace-root marker makes pnpm stop here instead of walking up to the -# repository workspace; Renovate runs `pnpm install --lockfile-only` here without -# `--ignore-workspace`. -# Fixtures track toolchain releases that may be only hours old. -minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-2/package.json b/packages/vscode/e2e/rstest/fixtures/workspace-2/package.json index 36bee2d..dbb82cb 100644 --- a/packages/vscode/e2e/rstest/fixtures/workspace-2/package.json +++ b/packages/vscode/e2e/rstest/fixtures/workspace-2/package.json @@ -4,6 +4,6 @@ "private": true, "description": "E2E fixture for the ported Rstest suites: upstream `tests/fixtures/workspace-2`. One install at the root serves both nested projects via the normal node_modules walk-up.", "dependencies": { - "@rstest/core": "^0.11.11" + "@rstest/core": "0.11.11" } } diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml b/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml deleted file mode 100644 index 80c3d88..0000000 --- a/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-lock.yaml +++ /dev/null @@ -1,293 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@rstest/core': - specifier: ^0.11.11 - version: 0.11.11 - -packages: - - '@emnapi/core@1.11.3': - resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} - - '@emnapi/runtime@1.11.3': - resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} - - '@emnapi/wasi-threads@1.2.3': - resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} - - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - - '@rsbuild/core@2.2.3': - resolution: {integrity: sha512-oJrYtYDhb7AMwY8HIda2hgMuuxHkYPYar4svdS5uTq0fXY0M1wLfllkTQz0d729pNJ4S//6GUM1WX5LsW2mFLw==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - core-js: '>= 3.0.0' - peerDependenciesMeta: - core-js: - optional: true - - '@rspack/binding-darwin-arm64@2.2.2': - resolution: {integrity: sha512-/le/AvV4HSinXTPs2Lqpujxt189Z5T10Ggt96QzckLRPvIchzqoavVDDjltzC7XcaZ87XCH/X06jNKgzkcBBNA==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-x64@2.2.2': - resolution: {integrity: sha512-uFIcUPUXiPxM6ljenLafp5TemT8eLZm1riRn8fJYmpqNCK+aCcTaud18XHZpI5SjzzcY+xUHfVShgvNzKXuf2g==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@2.2.2': - resolution: {integrity: sha512-Pjby4pDSMNJQK2VBzpgCj6lb+DGuenS1fEDb6xi5/apbJb9v5WE+e43Mz7i+XqgXS8e846pjaONV3KM5WKB1LQ==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-arm64-musl@2.2.2': - resolution: {integrity: sha512-0u9O7tTVT2z+F6o/eEY6f6+My8Jn9U56QiBwkfy90ZaoAfZyQSSTxqaK/zA7W43oFxQefeCpiPas27VUzrSakw==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rspack/binding-linux-ppc64-gnu@2.2.2': - resolution: {integrity: sha512-N3lVnhq5qOvpmP5n386JzR1GcE8HzAqq4/r440Z6yle9m7PhVFJ6oXVWxgaDTYV0mtv9YLJmaG+YrjYfUa1vuA==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-riscv64-gnu@2.2.2': - resolution: {integrity: sha512-ReClZyp32/rJkUDV/oGDU0X6BCFyEkTR6r4stFwm/qOOaG6mUMRzZe4gur8Yh979p4Hiz9EdkmfEHY02GBXcaQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-riscv64-musl@2.2.2': - resolution: {integrity: sha512-mqsorvTNerr3r8zI35NFTPYATPDlhepdiUhZjKT6ylqpHlP7vLU9fp4aEMK/CuTv2f+IVsa0+iZqtMxHs2tSjw==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rspack/binding-linux-s390x-gnu@2.2.2': - resolution: {integrity: sha512-ql2Jub8QYWSugBppmj2u0SjcIj6fOQuAaLCYQOqU7zbvz/uuWTfoqmdWKExwrxeCU9Tzt7emVM0ETuVEpoca+A==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-x64-gnu@2.2.2': - resolution: {integrity: sha512-MNYKYEHrtIVEno2q5rgpou/JVffRwn109xPK3kxct95EojHsniNa8jwy6eEHeOazP4EN60Si7NElE3aQ6JssHw==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-x64-musl@2.2.2': - resolution: {integrity: sha512-y9/9CmE8lrECaF17GAhacibTL+SvlEPEotQnUuBFC/WFtXh8hU2E7a7bAkpYGSLH6kM0nrJZHO3hTvM1wdWOJw==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rspack/binding-wasm32-wasi@2.2.2': - resolution: {integrity: sha512-VbDIjjeFwZvMSKAOGY5IbU6lLzt6AHHHncTdMMkZ94Xk7O2BOHe9BXDV32Ln29TIW2C8m1fdxfPZWDiecVghUQ==} - cpu: [wasm32] - - '@rspack/binding-win32-arm64-msvc@2.2.2': - resolution: {integrity: sha512-rfcNg0W3ZPZvXma1gTyEt9/Z8FxASIaQr+sMWTSaTPPaeU3xY1+0hYcrD0kUFNs3/5L4u63myI4R8qRXiuW3pA==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@2.2.2': - resolution: {integrity: sha512-TFPvr9RZw9oHIhooDhXHzWjKcHpGPTxkznSeM2poIWU0CdEuua2rVUfsrriTF1Dmx+9kMly61DQmyOHCbb+b2g==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-x64-msvc@2.2.2': - resolution: {integrity: sha512-GvEGyL594dtWN9SoVnKWh0exrM8WLInaUjwcuA2JKbCi1ak/9iHxip/U1dY3DuVqBYBhmvYq96JPbl91xnzFjg==} - cpu: [x64] - os: [win32] - - '@rspack/binding@2.2.2': - resolution: {integrity: sha512-gWjKDQfVQJSBh/I+y9WTlyERsiShSJ7eI6Yl0SJs/6gjx8t4ixuwWCsaEFFjwSL4nSn6ML5hNQ7UFY3gj72BWA==} - - '@rspack/core@2.2.2': - resolution: {integrity: sha512-/yztfDZR5syIPBrUpzBpL+6fhhl0IHBPcXlNr4tOMBULbocFIz7Z4/cqvf1ix0DBbKpIGx99v6N1IDbk2gi8hw==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 - '@swc/helpers': ^0.5.23 - peerDependenciesMeta: - '@module-federation/runtime-tools': - optional: true - '@swc/helpers': - optional: true - - '@rstest/core@0.11.11': - resolution: {integrity: sha512-7Ii2/2/ex1Oa0Kg5Qk5RKx2+e0I83BHLwH0/gn1B7IDwXCh5msFCF7yTyVGFuMltlm3E8Cf4QD7jadOEaBfXfw==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - happy-dom: ^20.8.3 - jsdom: '>=15.0.0' - peerDependenciesMeta: - happy-dom: - optional: true - jsdom: - optional: true - - '@swc/helpers@0.5.23': - resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} - - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - -snapshots: - - '@emnapi/core@1.11.3': - dependencies: - '@emnapi/wasi-threads': 1.2.3 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@rsbuild/core@2.2.3': - dependencies: - '@rspack/core': 2.2.2(@swc/helpers@0.5.23) - '@swc/helpers': 0.5.23 - transitivePeerDependencies: - - '@module-federation/runtime-tools' - - '@rspack/binding-darwin-arm64@2.2.2': - optional: true - - '@rspack/binding-darwin-x64@2.2.2': - optional: true - - '@rspack/binding-linux-arm64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-arm64-musl@2.2.2': - optional: true - - '@rspack/binding-linux-ppc64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-riscv64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-riscv64-musl@2.2.2': - optional: true - - '@rspack/binding-linux-s390x-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-x64-gnu@2.2.2': - optional: true - - '@rspack/binding-linux-x64-musl@2.2.2': - optional: true - - '@rspack/binding-wasm32-wasi@2.2.2': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) - optional: true - - '@rspack/binding-win32-arm64-msvc@2.2.2': - optional: true - - '@rspack/binding-win32-ia32-msvc@2.2.2': - optional: true - - '@rspack/binding-win32-x64-msvc@2.2.2': - optional: true - - '@rspack/binding@2.2.2': - optionalDependencies: - '@rspack/binding-darwin-arm64': 2.2.2 - '@rspack/binding-darwin-x64': 2.2.2 - '@rspack/binding-linux-arm64-gnu': 2.2.2 - '@rspack/binding-linux-arm64-musl': 2.2.2 - '@rspack/binding-linux-ppc64-gnu': 2.2.2 - '@rspack/binding-linux-riscv64-gnu': 2.2.2 - '@rspack/binding-linux-riscv64-musl': 2.2.2 - '@rspack/binding-linux-s390x-gnu': 2.2.2 - '@rspack/binding-linux-x64-gnu': 2.2.2 - '@rspack/binding-linux-x64-musl': 2.2.2 - '@rspack/binding-wasm32-wasi': 2.2.2 - '@rspack/binding-win32-arm64-msvc': 2.2.2 - '@rspack/binding-win32-ia32-msvc': 2.2.2 - '@rspack/binding-win32-x64-msvc': 2.2.2 - - '@rspack/core@2.2.2(@swc/helpers@0.5.23)': - dependencies: - '@rspack/binding': 2.2.2 - optionalDependencies: - '@swc/helpers': 0.5.23 - - '@rstest/core@0.11.11': - dependencies: - '@rsbuild/core': 2.2.3 - '@types/chai': 5.2.3 - transitivePeerDependencies: - - '@module-federation/runtime-tools' - - core-js - - '@swc/helpers@0.5.23': - dependencies: - tslib: 2.8.1 - - '@tybys/wasm-util@0.10.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@types/chai@5.2.3': - dependencies: - '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 - - '@types/deep-eql@4.0.2': {} - - assertion-error@2.0.1: {} - - tslib@2.8.1: {} diff --git a/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-workspace.yaml b/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-workspace.yaml deleted file mode 100644 index a85bf76..0000000 --- a/packages/vscode/e2e/rstest/fixtures/workspace-2/pnpm-workspace.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# This workspace-root marker makes pnpm stop here instead of walking up to the -# repository workspace; Renovate runs `pnpm install --lockfile-only` here without -# `--ignore-workspace`. -# Fixtures track toolchain releases that may be only hours old. -minimumReleaseAge: 0 diff --git a/packages/vscode/e2e/run.mjs b/packages/vscode/e2e/run.mjs index 7b82672..7b4d36c 100644 --- a/packages/vscode/e2e/run.mjs +++ b/packages/vscode/e2e/run.mjs @@ -6,10 +6,10 @@ // `test:e2e*` scripts are thin forwards to this file and carry none of that // knowledge. The shared `tsc -p tsconfig.e2e.json` pass runs first (the // cheap, likely-to-fail step), then the selected slices' fixtures install in -// one `setupFixtures.mjs` invocation from committed lockfiles (idempotent — -// pnpm no-ops on an up-to-date fixture, and unknown names throw there), then -// the entries run sequentially — each `compile`d entry launches its own VS -// Code via `@vscode/test-electron`. +// one `setupFixtures.mjs` invocation (idempotent — pnpm no-ops on an +// up-to-date fixture, and unknown names throw there), then the entries run +// sequentially — each `compile`d entry launches its own VS Code via +// `@vscode/test-electron`. import { spawnSync } from 'node:child_process'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; diff --git a/packages/vscode/e2e/setupFixtures.mjs b/packages/vscode/e2e/setupFixtures.mjs index f48a6d1..8a95cef 100644 --- a/packages/vscode/e2e/setupFixtures.mjs +++ b/packages/vscode/e2e/setupFixtures.mjs @@ -1,14 +1,13 @@ // Installs the E2E fixture workspaces. // -// The fixtures install **published npm versions** of +// The fixtures install **exact published npm versions** of // `@rslint/core` / `@rstest/core` / `rstack` — the extension resolves all three // from the project, so a fixture that linked this repo's own node_modules would -// test nothing. Each fixture is its own independent install: `--ignore-workspace` -// keeps test setup out of the parent workspace, while its pnpm-workspace.yaml -// marker makes Renovate's plain `pnpm install --lockfile-only` stop at the -// fixture instead of walking up to the repository workspace. Their lockfiles -// are committed for deterministic installs and updated with the manifests by -// Renovate. +// test nothing. `rstack@0.7.2` itself pins `@rslint/core@0.9.0` exactly, so the +// Rstack fixture pins its lint core transitively. Each fixture is its own +// independent install; `--ignore-workspace` keeps test setup out of the parent +// workspace. Exact toolchain pins make installs reproducible without committed +// lockfiles, and Renovate bumps those pins. // // Idempotent: pnpm is a no-op when the fixture is already up to date, so // `test:e2e` can always run it. @@ -59,9 +58,9 @@ const install = (name) => { // A fixture is a standalone project, never a workspace member of this // repo: the whole point is a plain, published-versions install. '--ignore-workspace', - // Fixture lockfiles are committed for deterministic installs; Renovate - // updates each manifest and lockfile together. - '--frozen-lockfile', + // Fixtures pin exact toolchain versions rather than committing lockfiles; + // Renovate updates the pins. + '--no-frozen-lockfile', '--prefer-offline', // Changing a fixture's install config makes pnpm want to purge // `node_modules`, which it refuses to do without a TTY. The directory is @@ -69,9 +68,7 @@ const install = (name) => { '--config.confirmModulesPurge=false', // Fixtures deliberately install pinned published versions of the Rstack // toolchain, which are often hours old — disable pnpm's - // minimum-release-age supply-chain gate for these sandboxes. The local - // workspace marker mirrors this for Renovate, but `--ignore-workspace` - // ignores that file here, so test setup still needs the CLI flag. + // minimum-release-age supply-chain gate for these sandboxes. '--config.minimumReleaseAge=0', // pnpm's build-script gate exits non-zero on unapproved postinstalls // (e.g. core-js in the rstest fixture). These sandboxes install real From 5947fffd3a37b2220704253b7efb91d18c6802e9 Mon Sep 17 00:00:00 2001 From: fi3ework Date: Thu, 3 Sep 2026 18:37:27 +0800 Subject: [PATCH 6/9] fix(vscode): keep the @rstest/core floor at 0.6.0 --- README.md | 10 +++++----- packages/vscode/README.md | 10 +++++----- packages/vscode/src/shared/versionCheck.ts | 5 ++--- packages/vscode/tests/versionCheck.test.ts | 8 ++++---- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 0abbd04..e137a37 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,11 @@ Or search for `rstack.rstack` in the editor's Extensions view. The extension resolves the tools from your project's `node_modules` and checks them against a support matrix at runtime: -| Package | Required | -| -------------- | ----------- | -| `@rslint/core` | `>=0.9.0` | -| `@rstest/core` | `>=0.11.11` | -| `rstack` | `>=0.7.2` | +| Package | Required | +| -------------- | --------- | +| `@rslint/core` | `>=0.9.0` | +| `@rstest/core` | `>=0.6.0` | +| `rstack` | `>=0.7.2` | ## Documentation diff --git a/packages/vscode/README.md b/packages/vscode/README.md index a3f1fb0..089917c 100644 --- a/packages/vscode/README.md +++ b/packages/vscode/README.md @@ -36,11 +36,11 @@ A restart re-resolves every binary and package version and respawns every tool p The project-resolved packages are checked against a support matrix at runtime; a mismatch shows up as the `version mismatch` status bar state. -| Package | Required | -| -------------- | ----------- | -| `@rslint/core` | `>=0.9.0` | -| `@rstest/core` | `>=0.11.11` | -| `rstack` | `>=0.7.2` | +| Package | Required | +| -------------- | --------- | +| `@rslint/core` | `>=0.9.0` | +| `@rstest/core` | `>=0.6.0` | +| `rstack` | `>=0.7.2` | ## Auto-fix on save (Rslint) diff --git a/packages/vscode/src/shared/versionCheck.ts b/packages/vscode/src/shared/versionCheck.ts index a13af60..db37682 100644 --- a/packages/vscode/src/shared/versionCheck.ts +++ b/packages/vscode/src/shared/versionCheck.ts @@ -9,11 +9,10 @@ import { readPackageJson } from './packageResolve'; * * Launch floors (verified against npm): * - `@rslint/core >= 0.9.0` — the latest released core and protocol surface. - * - `@rstest/core >= 0.11.11` — the latest released core. + * - `@rstest/core >= 0.6.0` — the existing `MIN_CORE_VERSION` upstream. * - `rstack >= 0.7.2` — the latest release, including its current lint and * Rstest shims and `rs fmt --lsp`. * - * The extension is pre-1.0 and supports only the latest released toolchain. * The rstack floor is **uniform across consumers by decision**: lint, Rstest * and fmt all check the same entry, so "which rstack does the extension * support?" has one answer. Per-stack floors were considered and rejected; @@ -21,7 +20,7 @@ import { readPackageJson } from './packageResolve'; */ export const SUPPORT_MATRIX = { '@rslint/core': '>=0.9.0', - '@rstest/core': '>=0.11.11', + '@rstest/core': '>=0.6.0', rstack: '>=0.7.2', } as const; diff --git a/packages/vscode/tests/versionCheck.test.ts b/packages/vscode/tests/versionCheck.test.ts index 1594ad7..7532a50 100644 --- a/packages/vscode/tests/versionCheck.test.ts +++ b/packages/vscode/tests/versionCheck.test.ts @@ -11,7 +11,7 @@ describe('support matrix', () => { it('pins the launch support floors', () => { expect(SUPPORT_MATRIX).toEqual({ '@rslint/core': '>=0.9.0', - '@rstest/core': '>=0.11.11', + '@rstest/core': '>=0.6.0', rstack: '>=0.7.2', }); }); @@ -21,7 +21,7 @@ describe('checkPackageVersion', () => { it('accepts versions at and above the floor', () => { expect(checkPackageVersion('@rslint/core', '0.9.0').kind).toBe('ok'); expect(checkPackageVersion('@rslint/core', '1.2.3').kind).toBe('ok'); - expect(checkPackageVersion('@rstest/core', '0.11.11').kind).toBe('ok'); + expect(checkPackageVersion('@rstest/core', '0.11.5').kind).toBe('ok'); expect(checkPackageVersion('rstack', '0.7.2').kind).toBe('ok'); }); @@ -30,11 +30,11 @@ describe('checkPackageVersion', () => { }); it('rejects versions below the floor', () => { - const result = checkPackageVersion('@rstest/core', '0.11.10'); + const result = checkPackageVersion('@rstest/core', '0.5.9'); expect(result.kind).toBe('mismatch'); if (result.kind === 'mismatch') { expect(formatVersionMismatch('@rstest/core', result)).toContain( - '>=0.11.11', + '>=0.6.0', ); } }); From 75dcea47fe221aa7d2ea039dc18af9ba7da0aa73 Mon Sep 17 00:00:00 2001 From: fi3ework Date: Thu, 3 Sep 2026 18:56:53 +0800 Subject: [PATCH 7/9] fix(vscode): set the rstack floor to the first fixed release, 0.7.0 --- README.md | 2 +- docs/adr/0003-lint-through-editor-worker.md | 2 +- packages/vscode/AGENTS.md | 2 +- packages/vscode/README.md | 2 +- packages/vscode/src/shared/versionCheck.ts | 9 +++++---- packages/vscode/tests/stacks/test/bridge.test.ts | 4 ++-- packages/vscode/tests/versionCheck.test.ts | 4 ++-- 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index e137a37..75820f8 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The extension resolves the tools from your project's `node_modules` and checks t | -------------- | --------- | | `@rslint/core` | `>=0.9.0` | | `@rstest/core` | `>=0.6.0` | -| `rstack` | `>=0.7.2` | +| `rstack` | `>=0.7.0` | ## Documentation diff --git a/docs/adr/0003-lint-through-editor-worker.md b/docs/adr/0003-lint-through-editor-worker.md index 3fcdbc1..0a3ed37 100644 --- a/docs/adr/0003-lint-through-editor-worker.md +++ b/docs/adr/0003-lint-through-editor-worker.md @@ -23,7 +23,7 @@ Rslint's language server is two halves: the Go process (`rslint --lsp`) lints na ## Consequences - **Lint gains a Node floor it never had.** A native folder that lints on VS Code's Node today reports `version mismatch` and starts nothing when no User Node runtime clears `^22.18.0 || >=23.6.0`. Accepted deliberately: one worker, one path, one floor (ADR 0001 already rejected per-project floors), and this is the debt that ADR named. -- **Resolution follows one chain, mirroring `rs lint`.** For a bridged folder: `rstack` from the folder root → `@rslint/core` from rstack's directory (the transitive copy `rs lint` itself imports; a pnpm project declaring only `rstack` cannot resolve `@rslint/core` from its root) → the Go binary through that core's `resolveRslintBinary()`. For a native folder the chain starts at `@rslint/core` from the **document's own directory** (the #1617 sync; before it, from the folder root). The extension walks the chain as far as the **core directory** — `fs.stat`, `package.json` reads and semver comparisons, no project code loaded, so inside the load bound and legitimately on the VS Code Node runtime, exactly as fmt resolves the `rs` bin — and gates there; the worker receives `--core [--config ]` and takes the last hop itself, calling that core's `resolveRslintBinary()` on the User Node runtime, since it is a JS export of the project's package. Floors follow the "latest release only" rule: `@rslint/core >= 0.9.0` and `rstack >= 0.7.2` toolchain-wide; one answer to "which rstack does the extension support" is worth more than keeping older releases running. +- **Resolution follows one chain, mirroring `rs lint`.** For a bridged folder: `rstack` from the folder root → `@rslint/core` from rstack's directory (the transitive copy `rs lint` itself imports; a pnpm project declaring only `rstack` cannot resolve `@rslint/core` from its root) → the Go binary through that core's `resolveRslintBinary()`. For a native folder the chain starts at `@rslint/core` from the **document's own directory** (the #1617 sync; before it, from the folder root). The extension walks the chain as far as the **core directory** — `fs.stat`, `package.json` reads and semver comparisons, no project code loaded, so inside the load bound and legitimately on the VS Code Node runtime, exactly as fmt resolves the `rs` bin — and gates there; the worker receives `--core [--config ]` and takes the last hop itself, calling that core's `resolveRslintBinary()` on the User Node runtime, since it is a JS export of the project's package. Floors follow the evidence in `SUPPORT_MATRIX`: `@rslint/core >= 0.9.0` supplies `basePath`, and `rstack >= 0.7.0` is the first release whose shim uses it; one answer to "which rstack does the extension support" is worth more than keeping older releases running. - **One override, and it names a core, not a binary.** `rstack.rslint.binPath` / `customBinPath` are removed in favour of `rstack.rslint.corePath` — the setting upstream introduced in rslint #1617: a path to an `@rslint/core` package directory, resource-scoped, from which the binary, config host, protocol version and plugin host all derive. In a bridged folder it overrides the rstack → `@rslint/core` hop only; the shim stays rstack's. A binary chosen independently of its core cannot be supported: the two must speak the same protocol. The rest of #1617 — per-document core resolution, one runtime per physical installation — has since been synced (issue #13): a **Lint runtime** is now one Rslint core inside one workspace folder, resolved per open document and refcounted by it, so a folder runs as many workers as its files have distinct cores (a bridged folder always exactly one, rstack's) and none at all while nothing is open. The worker never noticed: it still takes explicit `--core` / `--config` paths, which is precisely why that change did not touch it. - **Ownership is per folder, native wins.** One server holds one config choice for its lifetime (protocol 3 locks `configPath` per process), and explicit and automatic modes cannot mix, so a folder is bridged only when no `rslint.config.*` exists anywhere in it and a `rstack.config.*` sits at its root; a subdirectory `rstack.config.*` lights nothing (`rs lint` in a terminal reads its cwd only — the same reason ADR 0002 rejected deepest-config-wins for fmt). Detection lights a bridged folder on the file's presence and never reads it: a `rstack.config.*` without `define.lint()` runs an empty config, as `rs lint` does. - **Config changes refresh, mode changes restart.** Rslint has a live refresh (`rslint/configRefresh` with the same `configPath`), unlike `rs fmt --lsp`, so the extension keeps its watcher-driven refresh — extended, for a bridged folder, with the root `rstack.config.*` — and the worker re-stamps `protocolVersion` and its `configPath` on every refresh (the extension does not know either). Only a native ↔ bridged flip, or a dependency change the refresh cannot absorb, restarts the server. This is the "diverge only when the tool forces it" rule: rslint can refresh, fmt cannot. diff --git a/packages/vscode/AGENTS.md b/packages/vscode/AGENTS.md index 3aa73be..e0cfc4b 100644 --- a/packages/vscode/AGENTS.md +++ b/packages/vscode/AGENTS.md @@ -23,7 +23,7 @@ One extension replacing the standalone `rstack.rslint` and `rstack.rstest` exten ## Rules -- **Pre-1.0.0 the extension breaks freely.** No compatibility is owed with earlier unpublished states of this extension — settings, command ids and behavior may change without deprecation paths, and dead compat code for them is removed, not kept. Only the **latest released** `rstack`, `@rstest/core` and `@rslint/core` need support: whenever a change touches a floor in `SUPPORT_MATRIX`, set it to the latest release at that time — do not reason about which older release would still work — and raise it without a transition story (the floor status names the required version). No settings migration exists either — not for earlier states of this extension, and not for the two retired standalone extensions (removed in #15; users re-enter their settings under `rstack.*`). +- **Pre-1.0.0 the extension breaks freely.** No compatibility is owed with earlier unpublished states of this extension — settings, command ids and behavior may change without deprecation paths, and dead compat code for them is removed, not kept. Only the **latest released** `rstack`, `@rstest/core` and `@rslint/core` need support: a floor is set to the first release that fixes or provides what the extension needs, and the matrix comment states that reason for every entry; never set a floor higher than the evidence supports. Raise a floor without a transition story (the floor status names the required version). No settings migration exists either — not for earlier states of this extension, and not for the two retired standalone extensions (removed in #15; users re-enter their settings under `rstack.*`). - **The three tools are treated uniformly by default.** Detection, dependency-change retry, restart semantics, version gating and status reporting follow one shared pattern across the lint/test/fmt stacks; a stack diverges only when its tool forces it, and the divergence is recorded here as a gotcha. When adding behavior to one stack, first ask whether it belongs to all three. This is about behavior, not code — the upstream copies still must not be deduplicated. - **Not installed is a state, not an error — uniformly.** A folder or project whose dependencies are not installed (no `rstack`, no `@rstest/core`, no `@rslint/core`, a config importing a package that is not there) is the normal state of a fresh clone and of scaffolded templates beside their generator (`create-rstack`'s `template-*`, which declare their own dependencies and are never installed). Every stack reports it the same way: a `disabled` status whose reason names the restart command as the way out (ADR 0002: an install that changes no lockfile fires no detection pass), one `warn` line in the output channel without a stack trace, never a `crashed` status and never a notification. The words come from one place, `shared/notInstalled.ts` (the `formatVersionMismatch` precedent) — each stack keeps its own status machinery, none its own wording; the restart hint is derived from `stackCommandTitle`, which `tests/extension.test.ts` checks against the manifest. Lint's report lives in the `onDocumentFailure` hook (`stacks/lint/index.ts`), which owns the log line too, so the upstream-tracked `RuntimeManager` only defers to it. Rstest classifies the config-import case in the worker (`missingDependencyCauseOf`: Node's `code`, a bare — package-name — specifier, and for a subpath a walk-up proving the package really is absent, so a typo'd relative import or a missing subpath of an installed package stays a real error) because the IPC channel drops the `code` — `NormalizedConfigResult` carries the verdict as data end to end, and `Project` branches on it. The config-import case is implemented for Rstest only today — lint and fmt load configs inside their own servers and cannot classify there yet (#30). - One stack failing to register or crashing must never take another stack (or the shell) down. diff --git a/packages/vscode/README.md b/packages/vscode/README.md index 089917c..8d2153d 100644 --- a/packages/vscode/README.md +++ b/packages/vscode/README.md @@ -40,7 +40,7 @@ The project-resolved packages are checked against a support matrix at runtime; a | -------------- | --------- | | `@rslint/core` | `>=0.9.0` | | `@rstest/core` | `>=0.6.0` | -| `rstack` | `>=0.7.2` | +| `rstack` | `>=0.7.0` | ## Auto-fix on save (Rslint) diff --git a/packages/vscode/src/shared/versionCheck.ts b/packages/vscode/src/shared/versionCheck.ts index db37682..6e98d66 100644 --- a/packages/vscode/src/shared/versionCheck.ts +++ b/packages/vscode/src/shared/versionCheck.ts @@ -8,10 +8,11 @@ import { readPackageJson } from './packageResolve'; * status bar state with actual vs required versions. * * Launch floors (verified against npm): - * - `@rslint/core >= 0.9.0` — the latest released core and protocol surface. + * - `@rslint/core >= 0.9.0` — supplies the `basePath` support required by + * rstack 0.7.x's lint shim. * - `@rstest/core >= 0.6.0` — the existing `MIN_CORE_VERSION` upstream. - * - `rstack >= 0.7.2` — the latest release, including its current lint and - * Rstest shims and `rs fmt --lsp`. + * - `rstack >= 0.7.0` — the first release whose lint shim sets `basePath` and + * pins `@rslint/core` 0.9.0, preserving project-relative config paths (#431). * * The rstack floor is **uniform across consumers by decision**: lint, Rstest * and fmt all check the same entry, so "which rstack does the extension @@ -21,7 +22,7 @@ import { readPackageJson } from './packageResolve'; export const SUPPORT_MATRIX = { '@rslint/core': '>=0.9.0', '@rstest/core': '>=0.6.0', - rstack: '>=0.7.2', + rstack: '>=0.7.0', } as const; export type SupportedPackage = keyof typeof SUPPORT_MATRIX; diff --git a/packages/vscode/tests/stacks/test/bridge.test.ts b/packages/vscode/tests/stacks/test/bridge.test.ts index 364af63..b5ac5f2 100644 --- a/packages/vscode/tests/stacks/test/bridge.test.ts +++ b/packages/vscode/tests/stacks/test/bridge.test.ts @@ -197,14 +197,14 @@ describe('resolveRstackShim', () => { }); it('refuses an rstack older than the support matrix floor', () => { - const configDir = createWorkspace({ version: '0.7.1' }); + const configDir = createWorkspace({ version: '0.6.5' }); expect(resolveRstackShim(configDir)).toBeUndefined(); expect(reported).toEqual([ { kind: 'version-mismatch', detail: - 'rstack 0.7.1 is not supported, this extension requires >=0.7.2', + 'rstack 0.6.5 is not supported, this extension requires >=0.7.0', }, ]); }); diff --git a/packages/vscode/tests/versionCheck.test.ts b/packages/vscode/tests/versionCheck.test.ts index 7532a50..b030bf9 100644 --- a/packages/vscode/tests/versionCheck.test.ts +++ b/packages/vscode/tests/versionCheck.test.ts @@ -12,7 +12,7 @@ describe('support matrix', () => { expect(SUPPORT_MATRIX).toEqual({ '@rslint/core': '>=0.9.0', '@rstest/core': '>=0.6.0', - rstack: '>=0.7.2', + rstack: '>=0.7.0', }); }); }); @@ -22,7 +22,7 @@ describe('checkPackageVersion', () => { expect(checkPackageVersion('@rslint/core', '0.9.0').kind).toBe('ok'); expect(checkPackageVersion('@rslint/core', '1.2.3').kind).toBe('ok'); expect(checkPackageVersion('@rstest/core', '0.11.5').kind).toBe('ok'); - expect(checkPackageVersion('rstack', '0.7.2').kind).toBe('ok'); + expect(checkPackageVersion('rstack', '0.7.0').kind).toBe('ok'); }); it('accepts prereleases of a supported range', () => { From 4a2bfb6bad2279398c25ce0a7f9a5a2fc8b7d771 Mon Sep 17 00:00:00 2001 From: fi3ework Date: Thu, 3 Sep 2026 19:08:56 +0800 Subject: [PATCH 8/9] fix(vscode): keep the @rslint/core floor at 0.8.0 and separate floors from tested releases in AGENTS.md The floor is reverted because the worker reads the discovery protocol from the selected core and forwards payloads unchanged, so 0.8.x keeps working; bridged projects are already held to 0.9.0 by rstack >=0.7.0; AGENTS.md now distinguishes tested-latest from evidence-based floors. --- README.md | 2 +- docs/adr/0003-lint-through-editor-worker.md | 6 +++--- packages/vscode/AGENTS.md | 6 +++--- packages/vscode/README.md | 2 +- .../lint/suite-jsconfig/config-transaction.test.ts | 4 ++-- .../e2e/lint/suite-jsconfig/core-resolver.test.ts | 2 +- packages/vscode/src/shared/versionCheck.ts | 8 ++++---- packages/vscode/src/stacks/lint/CoreResolver.ts | 10 +++++----- .../vscode/tests/stacks/lint/coreResolver.test.ts | 4 ++-- packages/vscode/tests/stacks/lint/status.test.ts | 4 ++-- packages/vscode/tests/stacks/lint/worker.test.ts | 12 ++++++------ packages/vscode/tests/versionCheck.test.ts | 4 ++-- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 75820f8..a0ae50a 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ The extension resolves the tools from your project's `node_modules` and checks t | Package | Required | | -------------- | --------- | -| `@rslint/core` | `>=0.9.0` | +| `@rslint/core` | `>=0.8.0` | | `@rstest/core` | `>=0.6.0` | | `rstack` | `>=0.7.0` | diff --git a/docs/adr/0003-lint-through-editor-worker.md b/docs/adr/0003-lint-through-editor-worker.md index 0a3ed37..2673b8d 100644 --- a/docs/adr/0003-lint-through-editor-worker.md +++ b/docs/adr/0003-lint-through-editor-worker.md @@ -6,7 +6,7 @@ status: accepted Rslint's language server is two halves: the Go process (`rslint --lsp`) lints natively, but it hands config evaluation (`rslint/loadConfigs`, `activateConfigs`, `commit`/`abort`) and JS plugin rules (`rslint/pluginLint`) back to its client over reverse requests. Upstream's VS Code extension is that client, and so — as a near-verbatim copy — was ours: the project's `rslint.config.*` was evaluated inside the extension host, on the VS Code Node runtime, with a cwd that means nothing (ADR 0001's lint entry). Linting from a Rstack config (`define.lint()`) forces the issue: `rs lint`'s answer is a shim rstack ships (`/dist/rslintConfig.js`, treated as a stable path by agreement with rstack-cli) that calls `loadRstackConfig()` and finds `rstack.config.*` from **the evaluating process's cwd**. Evaluated in the extension host, it finds nothing. The first attempt (PR #10) worked around that by writing a **generated shim** into the project with the absolute config path baked in; it was rejected — the editor must not manufacture bridging artifacts. -**Decision.** The extension ships a **lint worker**: a vscode-free Node script, run once per lint server on a **User Node runtime** (ADR 0001's floor and candidate order, `rstack.nodeExecutable` as the shared escape hatch) with its cwd at the workspace folder root. The worker spawns the Go `rslint --lsp` of the resolved `@rslint/core`, proxies LSP over stdio to the extension, and answers Go's reverse requests itself with that core's `ConfigModuleHost` and `createPluginLintHost`. Its entry is `--lsp [--config ]`: with `--config` it pins the server to that module through the protocol-3 `configPath` of `rslint/configRefresh` (`@rslint/core >= 0.9.0`; the explicit path was introduced in rslint #1630); without it the server does its ordinary automatic discovery. A **bridged folder** runs the worker with `--config /dist/rslintConfig.js`; a **native folder** runs it without. From the extension's side, lint is now the shape fmt already has: a thin language client per server, and no project code loaded in the extension host — which retires the lint entry on ADR 0001's debt list. +**Decision.** The extension ships a **lint worker**: a vscode-free Node script, run once per lint server on a **User Node runtime** (ADR 0001's floor and candidate order, `rstack.nodeExecutable` as the shared escape hatch) with its cwd at the workspace folder root. The worker spawns the Go `rslint --lsp` of the resolved `@rslint/core`, proxies LSP over stdio to the extension, and answers Go's reverse requests itself with that core's `ConfigModuleHost` and `createPluginLintHost`. Its entry is `--lsp [--config ]`: with `--config` it pins the server to that module through the protocol-versioned `configPath` of `rslint/configRefresh` (`@rslint/core >= 0.8.0`; the explicit path was introduced for protocol 2 in rslint #1630); without it the server does its ordinary automatic discovery. A **bridged folder** runs the worker with `--config /dist/rslintConfig.js`; a **native folder** runs it without. From the extension's side, lint is now the shape fmt already has: a thin language client per server, and no project code loaded in the extension host — which retires the lint entry on ADR 0001's debt list. ## Considered options @@ -23,9 +23,9 @@ Rslint's language server is two halves: the Go process (`rslint --lsp`) lints na ## Consequences - **Lint gains a Node floor it never had.** A native folder that lints on VS Code's Node today reports `version mismatch` and starts nothing when no User Node runtime clears `^22.18.0 || >=23.6.0`. Accepted deliberately: one worker, one path, one floor (ADR 0001 already rejected per-project floors), and this is the debt that ADR named. -- **Resolution follows one chain, mirroring `rs lint`.** For a bridged folder: `rstack` from the folder root → `@rslint/core` from rstack's directory (the transitive copy `rs lint` itself imports; a pnpm project declaring only `rstack` cannot resolve `@rslint/core` from its root) → the Go binary through that core's `resolveRslintBinary()`. For a native folder the chain starts at `@rslint/core` from the **document's own directory** (the #1617 sync; before it, from the folder root). The extension walks the chain as far as the **core directory** — `fs.stat`, `package.json` reads and semver comparisons, no project code loaded, so inside the load bound and legitimately on the VS Code Node runtime, exactly as fmt resolves the `rs` bin — and gates there; the worker receives `--core [--config ]` and takes the last hop itself, calling that core's `resolveRslintBinary()` on the User Node runtime, since it is a JS export of the project's package. Floors follow the evidence in `SUPPORT_MATRIX`: `@rslint/core >= 0.9.0` supplies `basePath`, and `rstack >= 0.7.0` is the first release whose shim uses it; one answer to "which rstack does the extension support" is worth more than keeping older releases running. +- **Resolution follows one chain, mirroring `rs lint`.** For a bridged folder: `rstack` from the folder root → `@rslint/core` from rstack's directory (the transitive copy `rs lint` itself imports; a pnpm project declaring only `rstack` cannot resolve `@rslint/core` from its root) → the Go binary through that core's `resolveRslintBinary()`. For a native folder the chain starts at `@rslint/core` from the **document's own directory** (the #1617 sync; before it, from the folder root). The extension walks the chain as far as the **core directory** — `fs.stat`, `package.json` reads and semver comparisons, no project code loaded, so inside the load bound and legitimately on the VS Code Node runtime, exactly as fmt resolves the `rs` bin — and gates there; the worker receives `--core [--config ]` and takes the last hop itself, calling that core's `resolveRslintBinary()` on the User Node runtime, since it is a JS export of the project's package. Floors follow the evidence in `SUPPORT_MATRIX`: `@rslint/core >= 0.8.0` is the first release with explicit protocol-2 config selection, while `rstack >= 0.7.0` is the first release whose shim supplies `basePath` and itself pins `@rslint/core` 0.9.0; one answer to "which rstack does the extension support" is worth more than keeping older releases running. - **One override, and it names a core, not a binary.** `rstack.rslint.binPath` / `customBinPath` are removed in favour of `rstack.rslint.corePath` — the setting upstream introduced in rslint #1617: a path to an `@rslint/core` package directory, resource-scoped, from which the binary, config host, protocol version and plugin host all derive. In a bridged folder it overrides the rstack → `@rslint/core` hop only; the shim stays rstack's. A binary chosen independently of its core cannot be supported: the two must speak the same protocol. The rest of #1617 — per-document core resolution, one runtime per physical installation — has since been synced (issue #13): a **Lint runtime** is now one Rslint core inside one workspace folder, resolved per open document and refcounted by it, so a folder runs as many workers as its files have distinct cores (a bridged folder always exactly one, rstack's) and none at all while nothing is open. The worker never noticed: it still takes explicit `--core` / `--config` paths, which is precisely why that change did not touch it. -- **Ownership is per folder, native wins.** One server holds one config choice for its lifetime (protocol 3 locks `configPath` per process), and explicit and automatic modes cannot mix, so a folder is bridged only when no `rslint.config.*` exists anywhere in it and a `rstack.config.*` sits at its root; a subdirectory `rstack.config.*` lights nothing (`rs lint` in a terminal reads its cwd only — the same reason ADR 0002 rejected deepest-config-wins for fmt). Detection lights a bridged folder on the file's presence and never reads it: a `rstack.config.*` without `define.lint()` runs an empty config, as `rs lint` does. +- **Ownership is per folder, native wins.** One server holds one config choice for its lifetime (the supported config protocols lock `configPath` per process), and explicit and automatic modes cannot mix, so a folder is bridged only when no `rslint.config.*` exists anywhere in it and a `rstack.config.*` sits at its root; a subdirectory `rstack.config.*` lights nothing (`rs lint` in a terminal reads its cwd only — the same reason ADR 0002 rejected deepest-config-wins for fmt). Detection lights a bridged folder on the file's presence and never reads it: a `rstack.config.*` without `define.lint()` runs an empty config, as `rs lint` does. - **Config changes refresh, mode changes restart.** Rslint has a live refresh (`rslint/configRefresh` with the same `configPath`), unlike `rs fmt --lsp`, so the extension keeps its watcher-driven refresh — extended, for a bridged folder, with the root `rstack.config.*` — and the worker re-stamps `protocolVersion` and its `configPath` on every refresh (the extension does not know either). Only a native ↔ bridged flip, or a dependency change the refresh cannot absorb, restarts the server. This is the "diverge only when the tool forces it" rule: rslint can refresh, fmt cannot. - **Failure states mirror fmt.** Bridged folder: no `rstack` → `disabled`; `rstack` or the chained `@rslint/core` below floor, or no Node clearing the floor → `version mismatch`; worker or Go dying → `crashed`. Native folder missing `@rslint/core` stays `crashed` — the user asked for Rslint by name. - The lint copy diverges further from upstream: the reverse-request adapter and plugin pool move into the worker unchanged in logic, and the extension-side `Rslint.ts` keeps only the language-client half. Recorded as an adaptation in `packages/vscode/AGENTS.md`. diff --git a/packages/vscode/AGENTS.md b/packages/vscode/AGENTS.md index e0cfc4b..c86b7c6 100644 --- a/packages/vscode/AGENTS.md +++ b/packages/vscode/AGENTS.md @@ -17,13 +17,13 @@ One extension replacing the standalone `rstack.rslint` and `rstack.rstest` exten 4. **Status aggregation** — stacks own no UI chrome; they report to the shell's single status bar item, which always exists. In CI the test stack's `MasterLogger` also mirrors every entry to stderr (`RSTACK_E2E_MIRROR_LOGS=1`, set by `e2e/rstest/runTest.ts`) — the output channel is unreadable there; rationale in `stacks/test/logger.ts`. 5. **Worker-cwd decoupling** (test) — a project's cwd is explicit, not derived from the config file path; for native configs behavior stays byte-identical to upstream. 6. **Node runtime selection** (lint, test, fmt) — the Node a project-loading child process runs on is a **User Node runtime** chosen by the extension against one uniform floor, never assumed from PATH; the recovery path is the user's own shell, and the dividing line is the **load bound** (terms in CONTEXT.md; the full rule and rationale in `docs/adr/0001-node-runtime-selection.md`). All three callers — the lint worker, the rstest worker and the `rs fmt --lsp` server — take the decision from the one shared module (`shared/nodeResolution.ts`) and share one escape hatch, the resource-scoped `rstack.nodeExecutable` (`shared/nodeExecutableSetting.ts`); each appends its own consequence to the shared preflight message. -7. **Lint worker and Rstack bridge** — the extension host is only Rslint's language client. One vscode-free, editor-shipped lint worker per **Lint runtime** (one Rslint core inside one workspace folder — CONTEXT.md) runs on the User Node runtime, owns the Go LSP plus all five reverse requests, and derives the binary/config/plugin pieces from one explicit `@rslint/core` directory. Upstream's `CoreResolver` loads that core in the extension host; ours only walks to the directory (`fs.stat` + `package.json` + semver) and hands the path to the worker, and its `CoreInstallation` therefore carries paths, not module factories; upstream's installation cache goes with the module loading it memoized (`clear()` is a no-op kept for the `RuntimeManager` contract). A bridged folder passes only rstack's published `dist/rslintConfig.js` shim; neither the extension nor the worker re-implements Rstack config semantics. Because protocol 3 locks `configPath` per process, the shim is part of the runtime key (`folder + core identity + shim`), which upstream — having no bridge — keys on the core alone. Why: `docs/adr/0003-lint-through-editor-worker.md`. +7. **Lint worker and Rstack bridge** — the extension host is only Rslint's language client. One vscode-free, editor-shipped lint worker per **Lint runtime** (one Rslint core inside one workspace folder — CONTEXT.md) runs on the User Node runtime, owns the Go LSP plus all five reverse requests, and derives the binary/config/plugin pieces from one explicit `@rslint/core` directory. Upstream's `CoreResolver` loads that core in the extension host; ours only walks to the directory (`fs.stat` + `package.json` + semver) and hands the path to the worker, and its `CoreInstallation` therefore carries paths, not module factories; upstream's installation cache goes with the module loading it memoized (`clear()` is a no-op kept for the `RuntimeManager` contract). A bridged folder passes only rstack's published `dist/rslintConfig.js` shim; neither the extension nor the worker re-implements Rstack config semantics. Because every supported config protocol locks `configPath` per process, the shim is part of the runtime key (`folder + core identity + shim`), which upstream — having no bridge — keys on the core alone. Why: `docs/adr/0003-lint-through-editor-worker.md`. 8. **Self-documenting Rslint diagnostics** — client-side providers parse Inline directives into per-rule hover, DocumentLink and underline-decoration affordances (the hover renders `Rslint(rule-id)`, the shape VS Code gives the published diagnostics), and the router enriches today's `[rule-id] message` diagnostics with a derived Rule docs link. No rule metadata or network lookup is bundled (ADR 0004). The hover provider yields whenever the owning language client's resolved capabilities advertise `hoverProvider`; an optional `Rslint.onClosed` hook identity-safely prunes the controller's capability mirror; the diagnostic synthesis is removed once upstream publishes `code` / `codeDescription` natively. 9. **Color env parity with the CLI** (test) — upstream hard-codes `FORCE_COLOR: '1'` into the worker's spawn env; ours mirrors the CLI's `getForceColorEnv` (rstest `packages/core/src/utils/logger.ts`) instead (`stacks/test/shared/colorEnv.ts`): the master injects `FORCE_COLOR=1` into the composed spawn env only when neither `FORCE_COLOR` nor `NO_COLOR` is already set (marking the injection with `RSTACK_FORCE_COLOR_INJECTED`), and the worker retracts the marked injection right after config load if the config set `NO_COLOR` — the CLI's own decision point. Otherwise a project whose config sets `process.env.NO_COLOR` (rstack-cli does) hits Node's "'NO_COLOR' env is ignored" warning in every pool process. A user-set `FORCE_COLOR` beside a config-set `NO_COLOR` still warns, exactly as the bare CLI does. ## Rules -- **Pre-1.0.0 the extension breaks freely.** No compatibility is owed with earlier unpublished states of this extension — settings, command ids and behavior may change without deprecation paths, and dead compat code for them is removed, not kept. Only the **latest released** `rstack`, `@rstest/core` and `@rslint/core` need support: a floor is set to the first release that fixes or provides what the extension needs, and the matrix comment states that reason for every entry; never set a floor higher than the evidence supports. Raise a floor without a transition story (the floor status names the required version). No settings migration exists either — not for earlier states of this extension, and not for the two retired standalone extensions (removed in #15; users re-enter their settings under `rstack.*`). +- **Pre-1.0.0 the extension breaks freely.** No compatibility is owed with earlier unpublished states of this extension — settings, command ids and behavior may change without deprecation paths, and dead compat code for them is removed, not kept. No settings migration exists either — not for earlier states of this extension, and not for the two retired standalone extensions (removed in #15; users re-enter their settings under `rstack.*`). Testing and fixtures track only the latest published releases, pinned exactly and bumped by Renovate; a green E2E run speaks only for those releases. `SUPPORT_MATRIX` floors are the minimum versions the extension accepts: each entry is the lowest release evidence shows works with the current code, and its comment records that evidence. Move a floor only when a change makes older releases stop working, never because a devDependency or fixture moved. Raising a floor needs no transition story; the status names the required version. - **The three tools are treated uniformly by default.** Detection, dependency-change retry, restart semantics, version gating and status reporting follow one shared pattern across the lint/test/fmt stacks; a stack diverges only when its tool forces it, and the divergence is recorded here as a gotcha. When adding behavior to one stack, first ask whether it belongs to all three. This is about behavior, not code — the upstream copies still must not be deduplicated. - **Not installed is a state, not an error — uniformly.** A folder or project whose dependencies are not installed (no `rstack`, no `@rstest/core`, no `@rslint/core`, a config importing a package that is not there) is the normal state of a fresh clone and of scaffolded templates beside their generator (`create-rstack`'s `template-*`, which declare their own dependencies and are never installed). Every stack reports it the same way: a `disabled` status whose reason names the restart command as the way out (ADR 0002: an install that changes no lockfile fires no detection pass), one `warn` line in the output channel without a stack trace, never a `crashed` status and never a notification. The words come from one place, `shared/notInstalled.ts` (the `formatVersionMismatch` precedent) — each stack keeps its own status machinery, none its own wording; the restart hint is derived from `stackCommandTitle`, which `tests/extension.test.ts` checks against the manifest. Lint's report lives in the `onDocumentFailure` hook (`stacks/lint/index.ts`), which owns the log line too, so the upstream-tracked `RuntimeManager` only defers to it. Rstest classifies the config-import case in the worker (`missingDependencyCauseOf`: Node's `code`, a bare — package-name — specifier, and for a subpath a walk-up proving the package really is absent, so a typo'd relative import or a missing subpath of an installed package stays a real error) because the IPC channel drops the `code` — `NormalizedConfigResult` carries the verdict as data end to end, and `Project` branches on it. The config-import case is implemented for Rstest only today — lint and fmt load configs inside their own servers and cannot classify there yet (#30). - One stack failing to register or crashing must never take another stack (or the shell) down. @@ -42,7 +42,7 @@ One extension replacing the standalone `rstack.rslint` and `rstack.rstest` exten - The lint × `rstack.config.*` bridge stays thin on purpose: only a root Rstack config can claim a bridged folder, any native config anywhere in the folder wins ownership, and the worker evaluates rstack's published shim from the folder root. Never generate a shim, load the Rstack config in the extension host, or interpret `define.lint()` ourselves. - **Yarn Plug'n'Play is unsupported by decision, extension-wide.** Every stack resolves through physical `node_modules` (`shared/packageResolve.ts`, `resolution.ts`'s rstack → `@rslint/core` chain, the fmt bin probe, the rstest package lookup) and the lint worker's own `createRequire` from the core directory does too. Lint once carried a `.pnp.cjs` branch for the find-`@rslint/core` hop only; nothing after that hop (config evaluation, plugin resolution, the other stacks) had PnP hooks, so it never produced a working folder, and upstream removed its own PnP path in the same refactor that introduced `corePath`. Real support would be a PnP editor-SDK-shaped project across all three stacks, not a resolver branch — do not reintroduce one. - **A Lint runtime lives as long as a document needs it, and a folder with none is `running: idle`.** Since the #1617 sync, `RuntimeManager` refcounts each runtime by open document: the first document to resolve a core starts one, the last to release it closes it, so a detected folder with nothing open holds zero workers and zero Go processes. That folder still reports `running` — with the detail `idle` — because it is live and will start a runtime on the next `didOpen`; do **not** add a `StackState` kind for it (the shell's status bar and `when` clauses read the kinds, and idle is not a kind of health). A folder's state is the **worst of** its runtimes plus any document whose core resolution currently fails (last-good: that document keeps the runtime it already had), so one failing core is never masked by a healthy sibling — the same invariant fmt pins across folders, applied inside one and across them alike (lint's rank table matches fmt's: `disabled` there means "a package is not installed" — no `rstack`, or no `@rslint/core` — not the kill switch). Triggers: the shell's detection pass (which already covers lockfiles) plus one lint-owned watcher on `node_modules/@rslint/core/package.json` — upstream's glob minus the lockfiles detection owns. Failures report through the status only: upstream's `window.showWarningMessage` is dropped, since stacks own no UI chrome. Consequently `whenStackActive('rslint')` means "the controller registered its folders", not "a server is up" — E2E suites open a document and await diagnostics. -- The lint worker is deliberately vscode-free so it can move upstream whole. It takes explicit `--core` / `--config` native paths, writes logs only to stderr because stdout is LSP, and owns the Go child plus config/plugin lifecycles. Config edits use `rslint/configRefresh` with the same pinned path; a native ↔ bridged ownership change replaces the whole folder runtime because protocol 3 locks that choice for the process lifetime. +- The lint worker is deliberately vscode-free so it can move upstream whole. It takes explicit `--core` / `--config` native paths, writes logs only to stderr because stdout is LSP, and owns the Go child plus config/plugin lifecycles. Config edits use `rslint/configRefresh` with the same pinned path; a native ↔ bridged ownership change replaces the whole folder runtime because the supported config protocols lock that choice for the process lifetime. - The test × `rstack.config.*` bridge stays thin on purpose: it points the upstream machinery at rstack's shipped shim and lets the shim interpret the config inside the worker, same as the CLI. Bridged projects resolve `@rstest/core` from the resolved rstack package directory, mirroring lint, so rstack's dependency remains visible under isolated installs. Never re-implement rstack config semantics in the extension. - The fmt stack is an LSP client: one `rs fmt --lsp` server per detected workspace folder, spawned at the **folder root** even when a deeper `rstack.config.*` exists. Deepest-config-wins was removed deliberately — `rs fmt` loads one config from its cwd with no upward walk, so anchoring deeper made the editor disagree with `rs fmt` in a terminal; a subproject that needs its own fmt config becomes its own workspace folder. The stack registers **no** `DocumentFormattingEditProvider`: the client registers the provider from the server's `documentFormattingProvider` capability, and adding one by hand would double-register. A config create/change/delete **restarts** the owning folder's server (the server caches its config for its process lifetime and has no config-change message), which is also why the stack watches `RSTACK_CONFIG_GLOB` itself instead of relying on detection — a detection signature records which config files exist, not their contents. A detection pass keeps healthy servers and restarts failed ones in place (`isFailedFmtState`) — lockfile events notify even when the folder set is unchanged, precisely so a completed install or upgrade is retried without a manual restart. There is no stdin fallback below `SUPPORT_MATRIX.rstack`; that is a version gate, not an omission. **Nested workspace folders are a documented limitation, by decision**: when a folder and its subdirectory are both workspace folders and both detect fmt, the parent's per-folder selector also matches the nested folder's files, and which server VS Code hands the request to is not defined — the supported shape is subprojects as _sibling_ workspace folders (or only the subproject opened), not parent-plus-child. Routing (lint's `WorkspaceDocumentRouter` shape) was considered and deferred. Why all of it: `docs/adr/0002-fmt-lsp-on-user-node-runtime.md`. - fmt importing `stacks/lint/LanguageServerProcessOwner.ts` is not a refactor across the copies: that file has no lint imports and no lint behaviour, it only owns the native children of one language client — including the ones vscode-languageclient's automatic restart creates, which is exactly the leak an ad-hoc copy would reintroduce. Lint's `ManagedLanguageClient` is _restated_ in `stacks/fmt/index.ts` instead, because importing it from `Rslint.ts` would couple fmt to the lint stack's runtime graph. Keep that line where it is: shared process ownership yes, shared stack runtime no. diff --git a/packages/vscode/README.md b/packages/vscode/README.md index 8d2153d..11fa3c1 100644 --- a/packages/vscode/README.md +++ b/packages/vscode/README.md @@ -38,7 +38,7 @@ The project-resolved packages are checked against a support matrix at runtime; a | Package | Required | | -------------- | --------- | -| `@rslint/core` | `>=0.9.0` | +| `@rslint/core` | `>=0.8.0` | | `@rstest/core` | `>=0.6.0` | | `rstack` | `>=0.7.0` | diff --git a/packages/vscode/e2e/lint/suite-jsconfig/config-transaction.test.ts b/packages/vscode/e2e/lint/suite-jsconfig/config-transaction.test.ts index 0c01436..cc43d1f 100644 --- a/packages/vscode/e2e/lint/suite-jsconfig/config-transaction.test.ts +++ b/packages/vscode/e2e/lint/suite-jsconfig/config-transaction.test.ts @@ -6,8 +6,8 @@ // constant: `@rslint/core/config-loader` is resolved from the project at // runtime, so the adapter takes the loader's // `CONFIG_DISCOVERY_PROTOCOL_VERSION` as a constructor argument. The tests -// inject the devDependency's constant, which tracks the same `^0.9.0` floor -// as the fixtures. +// inject the devDependency's constant; the fixtures currently pin the same +// 0.9.0 release line. // - The watch-glob test asserts upstream's glob is kept verbatim, lockfiles // included. import * as assert from 'node:assert'; diff --git a/packages/vscode/e2e/lint/suite-jsconfig/core-resolver.test.ts b/packages/vscode/e2e/lint/suite-jsconfig/core-resolver.test.ts index cf7c5f0..21cb30c 100644 --- a/packages/vscode/e2e/lint/suite-jsconfig/core-resolver.test.ts +++ b/packages/vscode/e2e/lint/suite-jsconfig/core-resolver.test.ts @@ -116,7 +116,7 @@ suite('local core resolver', () => { /** * Upstream's `createPackageDirectory` — a manifest is all the host reads. - * Versions must clear the SUPPORT_MATRIX floor (`@rslint/core >= 0.9.0`) + * Versions must clear the SUPPORT_MATRIX floor (`@rslint/core >= 0.8.0`) * wherever the test expects resolution to succeed. */ async function createCore( diff --git a/packages/vscode/src/shared/versionCheck.ts b/packages/vscode/src/shared/versionCheck.ts index 6e98d66..47b1db5 100644 --- a/packages/vscode/src/shared/versionCheck.ts +++ b/packages/vscode/src/shared/versionCheck.ts @@ -8,11 +8,11 @@ import { readPackageJson } from './packageResolve'; * status bar state with actual vs required versions. * * Launch floors (verified against npm): - * - `@rslint/core >= 0.9.0` — supplies the `basePath` support required by - * rstack 0.7.x's lint shim. + * - `@rslint/core >= 0.8.0` — explicit protocol-2 config selection. * - `@rstest/core >= 0.6.0` — the existing `MIN_CORE_VERSION` upstream. * - `rstack >= 0.7.0` — the first release whose lint shim sets `basePath` and - * pins `@rslint/core` 0.9.0, preserving project-relative config paths (#431). + * itself pins `@rslint/core` 0.9.0, preserving project-relative config + * paths (#431). * * The rstack floor is **uniform across consumers by decision**: lint, Rstest * and fmt all check the same entry, so "which rstack does the extension @@ -20,7 +20,7 @@ import { readPackageJson } from './packageResolve'; * the status message names the required version either way. */ export const SUPPORT_MATRIX = { - '@rslint/core': '>=0.9.0', + '@rslint/core': '>=0.8.0', '@rstest/core': '>=0.6.0', rstack: '>=0.7.0', } as const; diff --git a/packages/vscode/src/stacks/lint/CoreResolver.ts b/packages/vscode/src/stacks/lint/CoreResolver.ts index fe63a43..b3f33c8 100644 --- a/packages/vscode/src/stacks/lint/CoreResolver.ts +++ b/packages/vscode/src/stacks/lint/CoreResolver.ts @@ -40,11 +40,11 @@ import { RslintVersionMismatchError } from './status'; * One **Rslint core** the extension is willing to run, plus the folder-level * config choice the Lint worker needs on its command line. * - * `shimPath` is part of the runtime's identity, not decoration: protocol 3 - * locks `configPath` for the server's lifetime (ADR 0003), so a folder that - * flips native ↔ bridged must get a *new* runtime even when both modes resolve - * the same physical core. Upstream has no bridged mode and keys on the core - * alone. + * `shimPath` is part of the runtime's identity, not decoration: the supported + * config protocols lock `configPath` for the server's lifetime (ADR 0003), so + * a folder that flips native ↔ bridged must get a *new* runtime even when both + * modes resolve the same physical core. Upstream has no bridged mode and keys + * on the core alone. */ export interface CoreInstallation { /** Stable physical identity. Never merge cores by version text alone. */ diff --git a/packages/vscode/tests/stacks/lint/coreResolver.test.ts b/packages/vscode/tests/stacks/lint/coreResolver.test.ts index 39fe11f..2434316 100644 --- a/packages/vscode/tests/stacks/lint/coreResolver.test.ts +++ b/packages/vscode/tests/stacks/lint/coreResolver.test.ts @@ -109,10 +109,10 @@ describe('CoreResolver', () => { }); it('refuses a core below the floor and names its directory', async () => { - // With several cores in one folder, "0.8.2 is not supported" alone would + // With several cores in one folder, "0.7.3 is not supported" alone would // not say which one to fix. const root = temporaryDirectory(); - const core = installPackage(root, '@rslint/core', '0.8.2'); + const core = installPackage(root, '@rslint/core', '0.7.3'); const resolve = () => new CoreResolver().resolve( documentAt(path.join(root, 'src', 'index.ts')), diff --git a/packages/vscode/tests/stacks/lint/status.test.ts b/packages/vscode/tests/stacks/lint/status.test.ts index 76320c3..6c54021 100644 --- a/packages/vscode/tests/stacks/lint/status.test.ts +++ b/packages/vscode/tests/stacks/lint/status.test.ts @@ -72,13 +72,13 @@ describe('Rslint status classification', () => { expect( statusForRslintStartFailure( new RslintVersionMismatchError( - '@rslint/core 0.8.2 is not supported, this extension requires >=0.9.0', + '@rslint/core 0.7.3 is not supported, this extension requires >=0.8.0', ), ), ).toEqual({ kind: 'version-mismatch', detail: - '@rslint/core 0.8.2 is not supported, this extension requires >=0.9.0', + '@rslint/core 0.7.3 is not supported, this extension requires >=0.8.0', }); }); diff --git a/packages/vscode/tests/stacks/lint/worker.test.ts b/packages/vscode/tests/stacks/lint/worker.test.ts index 733bc97..85128ac 100644 --- a/packages/vscode/tests/stacks/lint/worker.test.ts +++ b/packages/vscode/tests/stacks/lint/worker.test.ts @@ -91,8 +91,8 @@ describe('lint worker config refresh', () => { it('stamps the core protocol and pins the explicit shim on every refresh', () => { const configPath = path.resolve('/project/rslintConfig.js'); for (const reason of ['initial', 'config-change', 'dependency-change']) { - expect(stampConfigRefresh({ reason }, 3, configPath)).toEqual({ - protocolVersion: 3, + expect(stampConfigRefresh({ reason }, 2, configPath)).toEqual({ + protocolVersion: 2, reason, configPath, }); @@ -100,8 +100,8 @@ describe('lint worker config refresh', () => { }); it('leaves native discovery without an explicit config path', () => { - expect(stampConfigRefresh({ reason: 'initial' }, 3)).toEqual({ - protocolVersion: 3, + expect(stampConfigRefresh({ reason: 'initial' }, 2)).toEqual({ + protocolVersion: 2, reason: 'initial', }); }); @@ -138,7 +138,7 @@ describe('lint worker config refresh', () => { try { registerEditorProxy(workerConnection, goConnection, { - protocolVersion: 3, + protocolVersion: 2, configPath, observeRefresh: (reason) => observedReasons.push(reason), requestStop: () => undefined, @@ -156,7 +156,7 @@ describe('lint worker config refresh', () => { method: 'rslint/configRefresh', hasParams: true, params: { - protocolVersion: 3, + protocolVersion: 2, reason: 'config-change', configPath, }, diff --git a/packages/vscode/tests/versionCheck.test.ts b/packages/vscode/tests/versionCheck.test.ts index b030bf9..a254f11 100644 --- a/packages/vscode/tests/versionCheck.test.ts +++ b/packages/vscode/tests/versionCheck.test.ts @@ -10,7 +10,7 @@ import { describe('support matrix', () => { it('pins the launch support floors', () => { expect(SUPPORT_MATRIX).toEqual({ - '@rslint/core': '>=0.9.0', + '@rslint/core': '>=0.8.0', '@rstest/core': '>=0.6.0', rstack: '>=0.7.0', }); @@ -19,7 +19,7 @@ describe('support matrix', () => { describe('checkPackageVersion', () => { it('accepts versions at and above the floor', () => { - expect(checkPackageVersion('@rslint/core', '0.9.0').kind).toBe('ok'); + expect(checkPackageVersion('@rslint/core', '0.8.0').kind).toBe('ok'); expect(checkPackageVersion('@rslint/core', '1.2.3').kind).toBe('ok'); expect(checkPackageVersion('@rstest/core', '0.11.5').kind).toBe('ok'); expect(checkPackageVersion('rstack', '0.7.0').kind).toBe('ok'); From 276650544f281baed7399458299fb853c3661cae Mon Sep 17 00:00:00 2001 From: fi3ework Date: Thu, 3 Sep 2026 19:26:06 +0800 Subject: [PATCH 9/9] fix(vscode): align the User Node runtime range with rstack 0.7 engines --- docs/adr/0001-node-runtime-selection.md | 12 +++--- docs/adr/0002-fmt-lsp-on-user-node-runtime.md | 2 +- docs/adr/0003-lint-through-editor-worker.md | 2 +- packages/vscode/AGENTS.md | 2 +- packages/vscode/src/shared/nodeResolution.ts | 7 ++-- packages/vscode/src/shared/versionCheck.ts | 13 ++++--- .../tests/shared/nodeResolution.test.ts | 38 ++++++++++--------- .../vscode/tests/stacks/test/master.test.ts | 6 +-- packages/vscode/tests/versionCheck.test.ts | 30 +++++++++++++-- 9 files changed, 70 insertions(+), 42 deletions(-) diff --git a/docs/adr/0001-node-runtime-selection.md b/docs/adr/0001-node-runtime-selection.md index 94a66e4..35bfd4a 100644 --- a/docs/adr/0001-node-runtime-selection.md +++ b/docs/adr/0001-node-runtime-selection.md @@ -1,16 +1,18 @@ # Node runtime selection -The Node.js a test worker runs on is a **User Node runtime** — chosen by the extension from the user's own environment, the PATH `node` first and then the `node` the user's interactive shell would give them — and it must satisfy a uniform floor, `^22.18.0 || >=23.6.0`. The **VS Code Node runtime** is never a candidate. When nothing satisfies the floor, the test stack reports a status and runs nothing. +The Node.js a test worker runs on is a **User Node runtime** — chosen by the extension from the user's own environment, the PATH `node` first and then the `node` the user's interactive shell would give them — and it must satisfy a uniform floor, `^22.18.0 || >=24.3.0`. The **VS Code Node runtime** is never a candidate. When nothing satisfies the floor, the test stack reports a status and runs nothing. -## Why the floor is `^22.18.0 || >=23.6.0` +## Why the floor is `^22.18.0 || >=24.3.0` -The strictest thing a worker does is load an `rstack.config.*`, which rstack's shipped shim loads through `@rstackjs/load-config` with `loader: 'native'`. That path rethrows with no jiti fallback (`rstack-cli` `packages/rstack/src/config.ts:174`, bundled verbatim into `rstack@0.4.0`'s `dist/687.js`), and `native` never consults `process.features.typescript` — it calls `import()` directly. So the worker needs Node's native TypeScript stripping, which was unflagged in 23.6.0 and backported to the LTS line in 22.18.0. That release history is why the floor is a disjunction rather than a single version: 23.0–23.5 compare above 22.18.0 yet predate the unflagging, and `^22.18.0 || >=23.6.0` names exactly the versions that strip by default. +The strictest thing a worker does is load an `rstack.config.*`, which rstack's shipped shim loads through `@rstackjs/load-config` with `loader: 'native'`. That path rethrows with no jiti fallback (`rstack-cli` `packages/rstack/src/config.ts:174`, bundled verbatim into `rstack@0.4.0`'s `dist/687.js`), and `native` never consults `process.features.typescript` — it calls `import()` directly. So the worker needs Node's native TypeScript stripping, which was unflagged in 23.6.0 and backported to the LTS line in 22.18.0; that is the type-stripping lower bound. -Native type stripping is the _only_ thing on the worker's path that needs more than the declared `engines` of the packages involved: `@rstest/core` 0.11.6 and `@rsbuild/core` declare `^20.19.0 || >=22.12.0`, `rstack` 0.4.0 declares `>=22.12.0`, and `Module.registerHooks` (used by rstack's `freshImport`, added in 22.15) has a three-level fallback. +The supported rstack line adds a narrower declared contract. Since rstack 0.7.0, `engines.node` is `^22.18.0 || >=24.3.0`: Node 23 is unsupported, and Node 24.0–24.2 still emits the experimental type-stripping warning that 24.3.0 removes ([rstackjs/rstack-cli#427](https://github.com/rstackjs/rstack-cli/pull/427)). The extension therefore intersects native type-stripping availability with rstack's declared engines rather than accepting a runtime the supported toolchain rejects. The range follows those engines as that contract changes. + +Other packages on the worker path allow older runtimes: `@rstest/core` and `@rsbuild/core` declare `^20.19.0 || >=22.12.0`, and `Module.registerHooks` (used by rstack's `freshImport`, added in 22.15) has a three-level fallback. ## Considered options -**A per-project floor** — 22.18.0 only for projects driven by an `rstack.config.*`, 22.12.0 for a native `rstest.config.*`. Rejected: it buys back Node 20.19–22.17 at the cost of a second code path through every call site. Node 20 left support on 2026-04-30, so the users it genuinely serves are those on Node 22.12–22.17 — a supported LTS line, needing only a patch-level update within 22.x. That is a low-friction ask, and one uniform floor is a support contract the README and the status bar can each state in one sentence. +**A per-project floor** — the full rstack floor only for projects driven by an `rstack.config.*`, with looser floors where package contracts allow. Rejected: it buys back Node 20.19–22.17, Node 23 and Node 24.0–24.2 at the cost of a second code path through every call site. Node 20 is out of support; Node 23 is an unsupported odd-numbered line; and users on Node 22 or 24 need only a patch-level update within that line. That is a low-friction ask, and one uniform floor is a support contract the README and the status bar can each state in one sentence. **A capability probe instead of a version check** — asking each candidate for `process.features.typescript` rather than comparing semver. Rejected: `process.features.typescript` is itself Stability 1.2 (release candidate) and its value set has moved (`"transform"` existed on 22.18–25.1, removed in 26.0.0). More decisively, `loader: 'native'` never reads it, so the probe would not be testing the condition that actually fails. A floor is a contract; contracts are declared, not sniffed. diff --git a/docs/adr/0002-fmt-lsp-on-user-node-runtime.md b/docs/adr/0002-fmt-lsp-on-user-node-runtime.md index 839ff08..04d1704 100644 --- a/docs/adr/0002-fmt-lsp-on-user-node-runtime.md +++ b/docs/adr/0002-fmt-lsp-on-user-node-runtime.md @@ -1,6 +1,6 @@ # Formatting through the `rs fmt` language server -Document formatting is served by **`rs fmt --lsp`** — one language server per detected workspace folder, spawned with its cwd at the folder root, running on a **User Node runtime** that satisfies the floor ADR 0001 sets (`^22.18.0 || >=23.6.0`). It replaces a spawn-per-request `rs fmt --stdin-filepath` MVP that ran on the VS Code Node runtime and kept one pre-spawned process warm for the active editor. The floor for the project's `rstack` rises to `>=0.5.2`, the first release that ships `--lsp`; older releases surface as `version mismatch` and format nothing. The raise is **toolchain-wide by decision**, not fmt-scoped: `SUPPORT_MATRIX.rstack` is one entry and the Rstest bridge gates on the same one, so a project on `rstack` 0.3.5–0.5.1 also stops running tests until it upgrades. A per-stack floor was considered and rejected — "which rstack does the extension support?" should have one answer, and the mismatch status names the required version. +Document formatting is served by **`rs fmt --lsp`** — one language server per detected workspace folder, spawned with its cwd at the folder root, running on a **User Node runtime** that satisfies the floor ADR 0001 sets. It replaces a spawn-per-request `rs fmt --stdin-filepath` MVP that ran on the VS Code Node runtime and kept one pre-spawned process warm for the active editor. The floor for the project's `rstack` rises to `>=0.5.2`, the first release that ships `--lsp`; older releases surface as `version mismatch` and format nothing. The raise is **toolchain-wide by decision**, not fmt-scoped: `SUPPORT_MATRIX.rstack` is one entry and the Rstest bridge gates on the same one, so a project on `rstack` 0.3.5–0.5.1 also stops running tests until it upgrades. A per-stack floor was considered and rejected — "which rstack does the extension support?" should have one answer, and the mismatch status names the required version. ## Why a server rather than a process per request diff --git a/docs/adr/0003-lint-through-editor-worker.md b/docs/adr/0003-lint-through-editor-worker.md index 2673b8d..98f88b8 100644 --- a/docs/adr/0003-lint-through-editor-worker.md +++ b/docs/adr/0003-lint-through-editor-worker.md @@ -22,7 +22,7 @@ Rslint's language server is two halves: the Go process (`rslint --lsp`) lints na ## Consequences -- **Lint gains a Node floor it never had.** A native folder that lints on VS Code's Node today reports `version mismatch` and starts nothing when no User Node runtime clears `^22.18.0 || >=23.6.0`. Accepted deliberately: one worker, one path, one floor (ADR 0001 already rejected per-project floors), and this is the debt that ADR named. +- **Lint gains a Node floor it never had.** A native folder that lints on VS Code's Node today reports `version mismatch` and starts nothing when no User Node runtime clears the ADR 0001 floor. Accepted deliberately: one worker, one path, one floor (ADR 0001 already rejected per-project floors), and this is the debt that ADR named. - **Resolution follows one chain, mirroring `rs lint`.** For a bridged folder: `rstack` from the folder root → `@rslint/core` from rstack's directory (the transitive copy `rs lint` itself imports; a pnpm project declaring only `rstack` cannot resolve `@rslint/core` from its root) → the Go binary through that core's `resolveRslintBinary()`. For a native folder the chain starts at `@rslint/core` from the **document's own directory** (the #1617 sync; before it, from the folder root). The extension walks the chain as far as the **core directory** — `fs.stat`, `package.json` reads and semver comparisons, no project code loaded, so inside the load bound and legitimately on the VS Code Node runtime, exactly as fmt resolves the `rs` bin — and gates there; the worker receives `--core [--config ]` and takes the last hop itself, calling that core's `resolveRslintBinary()` on the User Node runtime, since it is a JS export of the project's package. Floors follow the evidence in `SUPPORT_MATRIX`: `@rslint/core >= 0.8.0` is the first release with explicit protocol-2 config selection, while `rstack >= 0.7.0` is the first release whose shim supplies `basePath` and itself pins `@rslint/core` 0.9.0; one answer to "which rstack does the extension support" is worth more than keeping older releases running. - **One override, and it names a core, not a binary.** `rstack.rslint.binPath` / `customBinPath` are removed in favour of `rstack.rslint.corePath` — the setting upstream introduced in rslint #1617: a path to an `@rslint/core` package directory, resource-scoped, from which the binary, config host, protocol version and plugin host all derive. In a bridged folder it overrides the rstack → `@rslint/core` hop only; the shim stays rstack's. A binary chosen independently of its core cannot be supported: the two must speak the same protocol. The rest of #1617 — per-document core resolution, one runtime per physical installation — has since been synced (issue #13): a **Lint runtime** is now one Rslint core inside one workspace folder, resolved per open document and refcounted by it, so a folder runs as many workers as its files have distinct cores (a bridged folder always exactly one, rstack's) and none at all while nothing is open. The worker never noticed: it still takes explicit `--core` / `--config` paths, which is precisely why that change did not touch it. - **Ownership is per folder, native wins.** One server holds one config choice for its lifetime (the supported config protocols lock `configPath` per process), and explicit and automatic modes cannot mix, so a folder is bridged only when no `rslint.config.*` exists anywhere in it and a `rstack.config.*` sits at its root; a subdirectory `rstack.config.*` lights nothing (`rs lint` in a terminal reads its cwd only — the same reason ADR 0002 rejected deepest-config-wins for fmt). Detection lights a bridged folder on the file's presence and never reads it: a `rstack.config.*` without `define.lint()` runs an empty config, as `rs lint` does. diff --git a/packages/vscode/AGENTS.md b/packages/vscode/AGENTS.md index c86b7c6..246962c 100644 --- a/packages/vscode/AGENTS.md +++ b/packages/vscode/AGENTS.md @@ -48,7 +48,7 @@ One extension replacing the standalone `rstack.rslint` and `rstack.rstest` exten - fmt importing `stacks/lint/LanguageServerProcessOwner.ts` is not a refactor across the copies: that file has no lint imports and no lint behaviour, it only owns the native children of one language client — including the ones vscode-languageclient's automatic restart creates, which is exactly the leak an ad-hoc copy would reintroduce. Lint's `ManagedLanguageClient` is _restated_ in `stacks/fmt/index.ts` instead, because importing it from `Rslint.ts` would couple fmt to the lint stack's runtime graph. Keep that line where it is: shared process ownership yes, shared stack runtime no. - The VSIX is platform-targeted for exactly one reason: the test stack's AST collection loads a native parser binding. Do not add another native dependency — it multiplies the release matrix. - `shared/nodeResolution.ts` takes its shell, its cwd and its notify callback as options instead of importing `vscode` and a stack's `logger` singleton, unlike its neighbours. That is not stylistic: it keeps `resolveUserNode` a pure decision table over its inputs, which is what makes the case-by-case unit tests possible without a `vscode` stub. It sat in `stacks/test/` until fmt became the second stack running project code on a User Node runtime — the exact condition its old note named — and moved on that trigger, not before. Its host-scoped preflight memo is reset by the shell's restart pass only when **no** consumer stack (`USER_NODE_STACKS`) survives the pass — a single-stack `rstack.fmt.restart` beside a live Rstest controller deliberately keeps the memo, since the survivor's existing workers were built on that decision; the full `rstack.restart` always clears it. `stacks/fmt/binEntry.ts` and `stacks/fmt/status.ts` are separate pure modules for the same testability reason — `stacks/fmt/index.ts` evaluates `vscode`, and `status.ts` pins the fold's invariant (a healthy sibling folder never masks another folder's failure) in a unit test the single-folder E2E fixtures cannot. -- The uniform Node floor deliberately exceeds `@rstest/core`'s own `engines` (`^20.19.0 || >=22.12.0`), because the strictest thing any of these processes does — either worker through rstack's shim, or the `rs fmt` server through `@rstackjs/load-config` — is load an `rstack.config.*` with `loader: 'native'`, no jiti fallback, and so needs native type stripping (22.18+; on the 23.x line only from 23.6). Do not specialise the floor per project — that was considered and rejected. Why, and what else was rejected: `docs/adr/0001-node-runtime-selection.md`. +- The uniform Node floor deliberately exceeds `@rstest/core`'s own `engines` (`^20.19.0 || >=22.12.0`) and also mirrors the supported rstack line's `engines.node` (`rstack >= 0.7.0`). Do not specialise the floor per project — that was considered and rejected. Why, and what else was rejected: `docs/adr/0001-node-runtime-selection.md`. - Bun is not a supported worker runtime (it segfaults running `@rstest/core`). If that is ever revisited, gate it on an explicit setting — never on `bun.lock`, since bun-as-package-manager still runs the `rs` bin through its `#!/usr/bin/env node` shebang. ## Testing diff --git a/packages/vscode/src/shared/nodeResolution.ts b/packages/vscode/src/shared/nodeResolution.ts index f3430ce..0404e77 100644 --- a/packages/vscode/src/shared/nodeResolution.ts +++ b/packages/vscode/src/shared/nodeResolution.ts @@ -21,10 +21,9 @@ import { * than per-project or per-stack. It is set by the strictest thing any of these * children do — load an `rstack.config.*` — and applying it uniformly, * including to projects whose config an older engine could load, is a - * deliberate simplification. It costs Node 20.19–22.17 — but Node 20 left - * support on 2026-04-30 (`nodejs/Release`), so the users it actually turns away - * sit on 22.12–22.17, a supported LTS line where the remedy is a patch-level - * update within 22.x. See `docs/adr/0001-node-runtime-selection.md`. + * deliberate simplification. It excludes Node 20.19–22.17, and the exact + * exclusions above that follow rstack's engines — see + * `docs/adr/0001-node-runtime-selection.md`. * * There is deliberately NO fallback to the VS Code Node runtime * (`process.execPath` + `ELECTRON_RUN_AS_NODE`). It would silently move the diff --git a/packages/vscode/src/shared/versionCheck.ts b/packages/vscode/src/shared/versionCheck.ts index 47b1db5..39063ed 100644 --- a/packages/vscode/src/shared/versionCheck.ts +++ b/packages/vscode/src/shared/versionCheck.ts @@ -59,17 +59,18 @@ export const readPackageVersion = ( * * Native type stripping is what lets a worker load an `rstack.config.*` — * rstack's shim loads it with `loader: 'native'` and no jiti fallback. It was - * unflagged in 23.6.0 and backported to the LTS line in 22.18.0, so 23.0–23.5 - * compare above 22.18.0 yet predate it — hence a disjunction, not a plain - * floor. Verified: 22.17.1 reports `process.features.typescript` false, - * 22.18.0 reports `strip`. See `shared/nodeResolution.ts` for how candidates + * unflagged in 23.6.0 and backported to the LTS line in 22.18.0. The supported + * rstack line declares the same range in `engines.node`: Node 23 is unsupported, + * while Node 24.0–24.2 still emits the experimental type-stripping warning + * (rstackjs/rstack-cli#427). This range intersects the runtime capability with + * that declared contract. See `shared/nodeResolution.ts` for how candidates * are probed. * * `scripts/playgroundNode.mjs` regex-parses this exact declaration (it is a * plain .mjs with no access to TS exports) — keep the single-quoted literal * form if this constant moves or is reformatted. */ -export const NODE_RUNTIME_RANGE = '^22.18.0 || >=23.6.0'; +export const NODE_RUNTIME_RANGE = '^22.18.0 || >=24.3.0'; /** * `NODE_RUNTIME_RANGE` for human eyes, interpolated into the user-facing @@ -78,7 +79,7 @@ export const NODE_RUNTIME_RANGE = '^22.18.0 || >=23.6.0'; * to learn why they were refused. Logs keep the raw range, the precise * register there. Keep the two in lockstep. */ -export const NODE_RUNTIME_LABEL = '22.18+ (excluding 23.0–23.5)'; +export const NODE_RUNTIME_LABEL = '22.18–22.x or 24.3+'; /** * Classifies a version against a range; it does not decide what the classes diff --git a/packages/vscode/tests/shared/nodeResolution.test.ts b/packages/vscode/tests/shared/nodeResolution.test.ts index 556a002..db72f16 100644 --- a/packages/vscode/tests/shared/nodeResolution.test.ts +++ b/packages/vscode/tests/shared/nodeResolution.test.ts @@ -71,7 +71,7 @@ describe('resolveUserNode', () => { ...base, probe: versionsOf({ node: { kind: 'ok' }, - '/versions/24/bin/node': ok('24.0.0'), + '/versions/24/bin/node': ok('24.3.0'), }), probeShellPath: shellFinds('/versions/24/bin/node'), }); @@ -92,7 +92,7 @@ describe('resolveUserNode', () => { // that the node floor now follows the same rule as every package floor. const resolution = await resolveUserNode({ ...base, - probe: versionsOf({ node: ok('24.0.0-nightly20260101') }), + probe: versionsOf({ node: ok('24.4.0-nightly20260101') }), probeShellPath: never, }); expect(resolution.source).toBe('path'); @@ -103,35 +103,37 @@ describe('resolveUserNode', () => { ...base, probe: versionsOf({ node: ok('20.19.4'), - '/versions/24/bin/node': ok('24.0.0'), + '/versions/24/bin/node': ok('24.3.0'), }), probeShellPath: shellFinds('/versions/24/bin/node'), }); expect(resolution).toEqual({ executable: '/versions/24/bin/node', source: 'shell', - version: '24.0.0', + version: '24.3.0', }); }); - it('falls through a pre-23.6 Node 23, which does not strip types', async () => { - // 23.0–23.5 sit above 22.18.0 yet predate default type stripping — the - // hole `NODE_RUNTIME_RANGE`'s disjunction encodes. + it("falls through a Node 24.0–24.2 that rstack's engines exclude", async () => { const resolution = await resolveUserNode({ ...base, probe: versionsOf({ - node: ok('23.5.0'), - '/versions/24/bin/node': ok('24.0.0'), + node: ok('24.2.0'), + '/versions/24/bin/node': ok('24.3.0'), }), probeShellPath: shellFinds('/versions/24/bin/node'), }); - expect(resolution.source).toBe('shell'); + expect(resolution).toEqual({ + executable: '/versions/24/bin/node', + source: 'shell', + version: '24.3.0', + }); }); it('falls back to the shell node when no PATH node runs at all', async () => { const resolution = await resolveUserNode({ ...base, - probe: versionsOf({ '/versions/24/bin/node': ok('24.0.0') }), + probe: versionsOf({ '/versions/24/bin/node': ok('24.3.0') }), probeShellPath: shellFinds('/versions/24/bin/node'), }); expect(resolution.source).toBe('shell'); @@ -148,7 +150,7 @@ describe('resolveUserNode', () => { return Promise.resolve({ kind: 'not-found' }); calls++; return Promise.resolve( - calls < 3 ? { kind: 'not-found' } : ok('24.0.0'), + calls < 3 ? { kind: 'not-found' } : ok('24.3.0'), ); }, probeShellPath: never, @@ -297,7 +299,7 @@ describe('resolveUserNodeOnce', () => { const options = { ...base, - probe: versionsOf({ node: ok('24.0.0') }), + probe: versionsOf({ node: ok('24.3.0') }), probeShellPath: never, }; @@ -335,7 +337,7 @@ describe('resolveUserNodeOnce', () => { ...base, probe: versionsOf({ node: ok('20.19.4'), - '/versions/24/bin/node': ok('24.0.0'), + '/versions/24/bin/node': ok('24.3.0'), }), probeShellPath: shellFinds('/versions/24/bin/node'), notify: (message: string) => notices.push(message), @@ -365,7 +367,7 @@ describe('resolveUserNodeOnce', () => { probe: () => { calls++; return new Promise((resolve) => - setTimeout(() => resolve(ok('24.0.0')), 10), + setTimeout(() => resolve(ok('24.3.0')), 10), ); }, probeShellPath: never, @@ -390,7 +392,7 @@ describe('configuredNodeBelowFloor', () => { it('passes an explicit executable that clears the floor', async () => { expect( - await configuredNodeBelowFloor(configured, answers(ok('24.0.0'))), + await configuredNodeBelowFloor(configured, answers(ok('24.3.0'))), ).toBeUndefined(); }); @@ -424,7 +426,7 @@ describe('configuredNodeBelowFloor', () => { const counting = { probe: () => { calls++; - return Promise.resolve(ok('24.0.0')); + return Promise.resolve(ok('24.3.0')); }, }; await configuredNodeBelowFloor(configured, counting); @@ -441,7 +443,7 @@ describe('configuredNodeBelowFloor', () => { await configuredNodeBelowFloor('/opt/old/node', answers(ok('20.19.4'))), ).toBeDefined(); expect( - await configuredNodeBelowFloor('/opt/new/node', answers(ok('24.0.0'))), + await configuredNodeBelowFloor('/opt/new/node', answers(ok('24.3.0'))), ).toBeUndefined(); }); }); diff --git a/packages/vscode/tests/stacks/test/master.test.ts b/packages/vscode/tests/stacks/test/master.test.ts index 03bd7e8..3c65594 100644 --- a/packages/vscode/tests/stacks/test/master.test.ts +++ b/packages/vscode/tests/stacks/test/master.test.ts @@ -399,7 +399,7 @@ describe('RstestApi with a configured nodeExecutable', () => { const settleVerdict = () => configuredNodeBelowFloor(configuredNode); it('should stay silent when the configured executable clears the floor', async () => { - await seedProbe({ kind: 'ok', version: '24.0.0' }); + await seedProbe({ kind: 'ok', version: '24.3.0' }); const { nodeExecutable } = await resolveWorkerNodeCommand(createApi()); await settleVerdict(); expect(nodeExecutable).toBe(configuredNode); @@ -447,7 +447,7 @@ describe('RstestApi with a configured nodeExecutable', () => { // The seed keeps the configured executable's probe off the real spawn // path, so the abort observed is the disposed check and not an earlier // resolution failure. - await seedProbe({ kind: 'ok', version: '24.0.0' }); + await seedProbe({ kind: 'ok', version: '24.3.0' }); const api = createApi(packageDir); const spawning = api.createChildProcess(); api.dispose(); @@ -466,7 +466,7 @@ describe('RstestApi worker spawn failures', () => { const seedConfiguredNode = (executable: string) => { settings['rstack.nodeExecutable'] = executable; - return seedNodeProbe(executable, { kind: 'ok', version: '24.0.0' }); + return seedNodeProbe(executable, { kind: 'ok', version: '24.3.0' }); }; beforeEach(() => { diff --git a/packages/vscode/tests/versionCheck.test.ts b/packages/vscode/tests/versionCheck.test.ts index a254f11..1a44685 100644 --- a/packages/vscode/tests/versionCheck.test.ts +++ b/packages/vscode/tests/versionCheck.test.ts @@ -1,8 +1,12 @@ +import fs from 'node:fs'; +import { createRequire } from 'node:module'; import { describe, expect, it } from '@rstest/core'; +import semver from 'semver'; import { checkPackageVersion, checkVersion, formatVersionMismatch, + NODE_RUNTIME_LABEL, NODE_RUNTIME_RANGE, SUPPORT_MATRIX, } from '../src/shared/versionCheck'; @@ -46,10 +50,30 @@ describe('checkPackageVersion', () => { }); describe('node runtime range', () => { - it('pins every edge, including the 23.x type-stripping hole', () => { + it('pins every edge, including the rstack engine exclusions', () => { expect(checkVersion('22.17.1', NODE_RUNTIME_RANGE).kind).toBe('mismatch'); expect(checkVersion('22.18.0', NODE_RUNTIME_RANGE).kind).toBe('ok'); - expect(checkVersion('23.5.0', NODE_RUNTIME_RANGE).kind).toBe('mismatch'); - expect(checkVersion('23.6.0', NODE_RUNTIME_RANGE).kind).toBe('ok'); + expect(checkVersion('23.6.0', NODE_RUNTIME_RANGE).kind).toBe('mismatch'); + expect(checkVersion('24.2.0', NODE_RUNTIME_RANGE).kind).toBe('mismatch'); + expect(checkVersion('24.3.0', NODE_RUNTIME_RANGE).kind).toBe('ok'); + }); + + it("never admits a runtime the development rstack's engines reject", () => { + const require = createRequire(__filename); + const packageJson = JSON.parse( + fs.readFileSync(require.resolve('rstack/package.json'), 'utf8'), + ) as { engines?: { node?: string } }; + const engineRange = packageJson.engines?.node; + if (!engineRange) throw new Error('rstack does not declare engines.node'); + + // This is an alarm, not an auto-move: the floor remains an ADR 0001 + // decision; this only proves it never admits a runtime rstack rejects. + expect(semver.subset(NODE_RUNTIME_RANGE, engineRange)).toBe(true); + }); + + it('keeps the human label aligned with the range', () => { + expect(NODE_RUNTIME_LABEL).toContain('22.18'); + expect(NODE_RUNTIME_LABEL).toContain('24.3'); + expect(NODE_RUNTIME_LABEL).not.toContain('23.'); }); });