From 0cafd19715afdf32ece91765e8931df356ee96b6 Mon Sep 17 00:00:00 2001 From: Rushbot Date: Tue, 6 Oct 2026 09:55:27 +0000 Subject: [PATCH 1/3] chore: bump decoupled local dependencies --- apps/api-extractor/package.json | 2 +- apps/heft/package.json | 2 +- common/autoinstallers/plugins/package.json | 2 +- common/autoinstallers/plugins/pnpm-lock.yaml | 116 ++- .../build-tests-subspace/pnpm-lock.yaml | 10 +- .../build-tests-subspace/repo-state.json | 4 +- .../config/subspaces/default/pnpm-lock.yaml | 285 +++---- .../config/subspaces/default/repo-state.json | 2 +- .../config/validation/rush-package-lock.json | 279 ++++--- common/scripts/install-run-rush.js | 780 +++++++++++++++++- common/scripts/install-run.js | 303 ++++++- eslint/eslint-config/package.json | 2 +- eslint/eslint-patch/package.json | 2 +- eslint/eslint-plugin-packlets/package.json | 2 +- eslint/eslint-plugin-security/package.json | 2 +- eslint/eslint-plugin/package.json | 2 +- eslint/local-eslint-config/package.json | 2 +- libraries/api-extractor-model/package.json | 2 +- libraries/heft-config-file/package.json | 2 +- libraries/node-core-library/package.json | 2 +- libraries/operation-graph/package.json | 2 +- libraries/problem-matcher/package.json | 2 +- libraries/rig-package/package.json | 2 +- libraries/terminal/package.json | 2 +- libraries/tree-pattern/package.json | 2 +- libraries/ts-command-line/package.json | 2 +- rigs/decoupled-local-node-rig/package.json | 6 +- rush.json | 2 +- 28 files changed, 1407 insertions(+), 416 deletions(-) diff --git a/apps/api-extractor/package.json b/apps/api-extractor/package.json index 9fe738e01e..727242e530 100644 --- a/apps/api-extractor/package.json +++ b/apps/api-extractor/package.json @@ -81,7 +81,7 @@ "typescript": "5.9.3" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "@types/resolve": "1.20.2", "@types/semver": "7.7.1", "decoupled-local-node-rig": "workspace:*", diff --git a/apps/heft/package.json b/apps/heft/package.json index 8dd5b1cce9..524f0fc58c 100644 --- a/apps/heft/package.json +++ b/apps/heft/package.json @@ -75,7 +75,7 @@ }, "devDependencies": { "@microsoft/api-extractor": "workspace:*", - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "@types/watchpack": "2.4.0", "decoupled-local-node-rig": "workspace:*", "eslint": "~9.37.0" diff --git a/common/autoinstallers/plugins/package.json b/common/autoinstallers/plugins/package.json index a6c2f431ed..40e94b9563 100644 --- a/common/autoinstallers/plugins/package.json +++ b/common/autoinstallers/plugins/package.json @@ -3,6 +3,6 @@ "version": "1.0.0", "private": true, "dependencies": { - "@rushstack/rush-published-versions-json-plugin": "0.1.21" + "@rushstack/rush-published-versions-json-plugin": "0.1.23" } } diff --git a/common/autoinstallers/plugins/pnpm-lock.yaml b/common/autoinstallers/plugins/pnpm-lock.yaml index a529009d16..17696a3816 100644 --- a/common/autoinstallers/plugins/pnpm-lock.yaml +++ b/common/autoinstallers/plugins/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@rushstack/rush-published-versions-json-plugin': - specifier: 0.1.21 - version: 0.1.21 + specifier: 0.1.23 + version: 0.1.23 packages: @@ -26,12 +26,12 @@ packages: resolution: {integrity: sha1-og6LnKAgZjsCLATRKM0Ve492oFo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/types/-/types-900.0.0.tgz} engines: {node: '>=18.12'} - '@rushstack/credential-cache@0.2.26': - resolution: {integrity: sha1-wJGKNK6VhD/LGVbjY690jfFhVcg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/credential-cache/-/credential-cache-0.2.26.tgz} + '@rushstack/credential-cache@0.2.30': + resolution: {integrity: sha512-0B8ae/DomcV7pbKEzCg3tSzlhTKFao9bUPsh+Akp0H6UWt1xx+1uHLRxIKj0BZyECTUhecq58Bl7AY/mu64pYg==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/credential-cache/-/credential-cache-0.2.30.tgz} engines: {node: '>=20.9.0'} - '@rushstack/lookup-by-path@0.10.15': - resolution: {integrity: sha1-6I12Vc4kr7Vzx2StoAqUlrDJ2Ts=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/lookup-by-path/-/lookup-by-path-0.10.15.tgz} + '@rushstack/lookup-by-path@0.10.19': + resolution: {integrity: sha512-QChzKd4r9hkoHEvmQ3+uKpmeuRpqrw+hwPoQZV+znYfCLcw+gHKfuBqpzRIngMq+RlgxGi3PLiIjsqnkdzxR+A==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/lookup-by-path/-/lookup-by-path-0.10.19.tgz} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -39,8 +39,8 @@ packages: '@types/node': optional: true - '@rushstack/node-core-library@5.24.1': - resolution: {integrity: sha1-liVjrLQfS2T9TeRWr+VSr8T2khk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/node-core-library/-/node-core-library-5.24.1.tgz} + '@rushstack/node-core-library@5.25.1': + resolution: {integrity: sha512-ozoRDwIx3jStOYpx86rFyXH4SaUR+DVT6HubQ59avLplJkWXSm5InztYH7RrOzzq9PJXTdq9/+lKX06SfkLVsA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/node-core-library/-/node-core-library-5.25.1.tgz} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -48,17 +48,8 @@ packages: '@types/node': optional: true - '@rushstack/node-core-library@5.24.2': - resolution: {integrity: sha512-sgSqy/lqce+uMrggF/wEIISIfpMX8pAXE5qSzGgDYFrWJkrsttrw/MzU4GFVNcbHSkPz5KbSh/A4/JSpDHoNQA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/node-core-library/-/node-core-library-5.24.2.tgz} - engines: {node: '>=20.9.0'} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - '@rushstack/package-deps-hash@4.7.28': - resolution: {integrity: sha1-f31YqiftxGUwwAnTeIObe8XDHc8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/package-deps-hash/-/package-deps-hash-4.7.28.tgz} + '@rushstack/package-deps-hash@4.8.0': + resolution: {integrity: sha512-pKQdS6rNJYmn7ovZV+TBfX/XKwLnFYAbI7w2qFmIesxLsZTL3KAD4BIsoDnlVVe9xlEvh3qB18U8mBtsp3jVCw==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/package-deps-hash/-/package-deps-hash-4.8.0.tgz} engines: {node: '>=20.9.0'} '@rushstack/problem-matcher@0.2.1': @@ -69,25 +60,24 @@ packages: '@types/node': optional: true - '@rushstack/rush-published-versions-json-plugin@0.1.21': - resolution: {integrity: sha512-+XdUL7mxalnYqKDbUQlCEhKbZpS6GBpu/9lKAVcuD2pnKI5j7+rQreeIrDLwWO5c5yCeQIoDN9K25/VC2QT3cA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/rush-published-versions-json-plugin/-/rush-published-versions-json-plugin-0.1.21.tgz} + '@rushstack/rush-published-versions-json-plugin@0.1.23': + resolution: {integrity: sha512-PCQfmnhBqtjuASlPjU8aoUWRyiZiqMXsaKOm+VgjuaV4sLnMI4tvTkRVbgfozXJ1Awda3CF+CV+W4tvua8wGFQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/rush-published-versions-json-plugin/-/rush-published-versions-json-plugin-0.1.23.tgz} engines: {node: '>=20.9.0'} - '@rushstack/rush-sdk@5.179.0': - resolution: {integrity: sha1-fJvXq9lFU0JOaMdXcBjNDyP5P/U=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/rush-sdk/-/rush-sdk-5.179.0.tgz} - engines: {node: '>=20.9.0'} - - '@rushstack/terminal@0.24.4': - resolution: {integrity: sha1-xVWqe4Vu6wrSyQqmmC6/61irX6s=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/terminal/-/terminal-0.24.4.tgz} - engines: {node: '>=20.9.0'} + '@rushstack/rush-reporter@0.4.1': + resolution: {integrity: sha512-Go8OBCXquwSMgYCi1IZEPKYf+kkAU9oJTUVjygb1Hb3eDDIR7QY4wgib0dkqsPfF29+dkllZ3/F1JMDqPBGfnQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/rush-reporter/-/rush-reporter-0.4.1.tgz} peerDependencies: '@types/node': '*' peerDependenciesMeta: '@types/node': optional: true - '@rushstack/terminal@0.24.5': - resolution: {integrity: sha512-AkbHjc48S7g4HkFO2wKHVMuJiZs/KaRI/rjcSpEj7o6SXgRYZrpXDE10NFa8ov/bxm4F5x+A8iqxkAGfEUTuTA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/terminal/-/terminal-0.24.5.tgz} + '@rushstack/rush-sdk@5.181.0': + resolution: {integrity: sha512-8lqvE3+8C6I+xZUjo0Uw1QqhDORB6hFRf5gf2U8Rd0x/A2OkNnDadLsDQiljb5WXlb0QFEv2epHLC4d2S/VQ2A==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/rush-sdk/-/rush-sdk-5.181.0.tgz} + engines: {node: '>=20.9.0'} + + '@rushstack/terminal@0.24.7': + resolution: {integrity: sha512-o8J9nHOIwfYb0s0eG2WYhx7ed3YIvBXQHVFxYdXCmVdBOkTkdArJcgVzRS8ewUepmlic4nGgJPjKIVaNKSqEnA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/terminal/-/terminal-0.24.7.tgz} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -146,8 +136,8 @@ packages: resolution: {integrity: sha1-6OtidIOgpD2jwD8+NVSL5csMwVM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/import-lazy/-/import-lazy-4.0.0.tgz} engines: {node: '>=8'} - is-core-module@2.16.2: - resolution: {integrity: sha1-PgdFCoCA684/vwysSU9NKrMk4II=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/is-core-module/-/is-core-module-2.16.2.tgz} + is-core-module@2.17.0: + resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/is-core-module/-/is-core-module-2.17.0.tgz} engines: {node: '>= 0.4'} jju@1.4.0: @@ -203,15 +193,15 @@ snapshots: '@pnpm/types@900.0.0': {} - '@rushstack/credential-cache@0.2.26': + '@rushstack/credential-cache@0.2.30': dependencies: - '@rushstack/node-core-library': 5.24.1 + '@rushstack/node-core-library': 5.25.1 transitivePeerDependencies: - '@types/node' - '@rushstack/lookup-by-path@0.10.15': {} + '@rushstack/lookup-by-path@0.10.19': {} - '@rushstack/node-core-library@5.24.1': + '@rushstack/node-core-library@5.25.1': dependencies: ajv: 8.20.0 ajv-draft-04: 1.0.0(ajv@8.20.0) @@ -222,54 +212,42 @@ snapshots: resolve: 1.22.12 semver: 7.7.4 - '@rushstack/node-core-library@5.24.2': + '@rushstack/package-deps-hash@4.8.0': dependencies: - ajv: 8.20.0 - ajv-draft-04: 1.0.0(ajv@8.20.0) - ajv-formats: 3.0.1(ajv@8.20.0) - fs-extra: 11.3.6 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.12 - semver: 7.7.4 - - '@rushstack/package-deps-hash@4.7.28': - dependencies: - '@rushstack/node-core-library': 5.24.1 + '@rushstack/node-core-library': 5.25.1 transitivePeerDependencies: - '@types/node' '@rushstack/problem-matcher@0.2.1': {} - '@rushstack/rush-published-versions-json-plugin@0.1.21': + '@rushstack/rush-published-versions-json-plugin@0.1.23': dependencies: - '@rushstack/node-core-library': 5.24.2 - '@rushstack/rush-sdk': 5.179.0 - '@rushstack/terminal': 0.24.5 + '@rushstack/node-core-library': 5.25.1 + '@rushstack/rush-sdk': 5.181.0 + '@rushstack/terminal': 0.24.7 transitivePeerDependencies: - '@types/node' - '@rushstack/rush-sdk@5.179.0': + '@rushstack/rush-reporter@0.4.1': + dependencies: + semver: 7.7.4 + + '@rushstack/rush-sdk@5.181.0': dependencies: '@pnpm/lockfile.types-900': '@pnpm/lockfile.types@900.0.0' - '@rushstack/credential-cache': 0.2.26 - '@rushstack/lookup-by-path': 0.10.15 - '@rushstack/node-core-library': 5.24.1 - '@rushstack/package-deps-hash': 4.7.28 - '@rushstack/terminal': 0.24.4 + '@rushstack/credential-cache': 0.2.30 + '@rushstack/lookup-by-path': 0.10.19 + '@rushstack/node-core-library': 5.25.1 + '@rushstack/package-deps-hash': 4.8.0 + '@rushstack/rush-reporter': 0.4.1 + '@rushstack/terminal': 0.24.7 tapable: 2.2.1 transitivePeerDependencies: - '@types/node' - '@rushstack/terminal@0.24.4': - dependencies: - '@rushstack/node-core-library': 5.24.1 - '@rushstack/problem-matcher': 0.2.1 - supports-color: 8.1.1 - - '@rushstack/terminal@0.24.5': + '@rushstack/terminal@0.24.7': dependencies: - '@rushstack/node-core-library': 5.24.2 + '@rushstack/node-core-library': 5.25.1 '@rushstack/problem-matcher': 0.2.1 supports-color: 8.1.1 @@ -312,7 +290,7 @@ snapshots: import-lazy@4.0.0: {} - is-core-module@2.16.2: + is-core-module@2.17.0: dependencies: hasown: 2.0.4 @@ -333,7 +311,7 @@ snapshots: resolve@1.22.12: dependencies: es-errors: 1.3.0 - is-core-module: 2.16.2 + is-core-module: 2.17.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 diff --git a/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml b/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml index 3c83eb0822..e48386e7e5 100644 --- a/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml +++ b/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml @@ -919,7 +919,7 @@ packages: resolution: {directory: ../../../heft-plugins/heft-api-extractor-plugin, type: directory} engines: {node: '>=20.9.0'} peerDependencies: - '@rushstack/heft': 1.3.1 + '@rushstack/heft': 1.3.3 '@rushstack/heft-config-file@file:../../../libraries/heft-config-file': resolution: {directory: ../../../libraries/heft-config-file, type: directory} @@ -929,7 +929,7 @@ packages: resolution: {directory: ../../../heft-plugins/heft-jest-plugin, type: directory} engines: {node: '>=20.9.0'} peerDependencies: - '@rushstack/heft': ^1.3.1 + '@rushstack/heft': ^1.3.3 '@types/jest': ^30.0.0 jest-environment-jsdom: ^30.3.0 jest-environment-node: ^30.3.0 @@ -945,18 +945,18 @@ packages: resolution: {directory: ../../../heft-plugins/heft-lint-plugin, type: directory} engines: {node: '>=20.9.0'} peerDependencies: - '@rushstack/heft': 1.3.1 + '@rushstack/heft': 1.3.3 '@rushstack/heft-node-rig@file:../../../rigs/heft-node-rig': resolution: {directory: ../../../rigs/heft-node-rig, type: directory} peerDependencies: - '@rushstack/heft': ^1.3.1 + '@rushstack/heft': ^1.3.3 '@rushstack/heft-typescript-plugin@file:../../../heft-plugins/heft-typescript-plugin': resolution: {directory: ../../../heft-plugins/heft-typescript-plugin, type: directory} engines: {node: '>=20.9.0'} peerDependencies: - '@rushstack/heft': 1.3.1 + '@rushstack/heft': 1.3.3 '@rushstack/heft@file:../../../apps/heft': resolution: {directory: ../../../apps/heft, type: directory} diff --git a/common/config/subspaces/build-tests-subspace/repo-state.json b/common/config/subspaces/build-tests-subspace/repo-state.json index 480115afcb..c55410af06 100644 --- a/common/config/subspaces/build-tests-subspace/repo-state.json +++ b/common/config/subspaces/build-tests-subspace/repo-state.json @@ -1,6 +1,6 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "6356c667c81c04e4030f9ad1eddfa1c41d3d6328", + "pnpmShrinkwrapHash": "77334f3044ae8f350cc38031dc8902c5fef466df", "preferredVersionsHash": "550b4cee0bef4e97db6c6aad726df5149d20e7d9", - "packageJsonInjectedDependenciesHash": "72e1c17662a28e2c2e8e58cc1d7a4f93e0ceb2c4" + "packageJsonInjectedDependenciesHash": "dcb9a4c88f5e9d450f7afb9a4b686850ce152453" } diff --git a/common/config/subspaces/default/pnpm-lock.yaml b/common/config/subspaces/default/pnpm-lock.yaml index 9254358cf5..8fcb6ae40f 100644 --- a/common/config/subspaces/default/pnpm-lock.yaml +++ b/common/config/subspaces/default/pnpm-lock.yaml @@ -102,8 +102,8 @@ importers: version: 5.9.3 devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) '@types/resolve': specifier: 1.20.2 version: 1.20.2 @@ -182,8 +182,8 @@ importers: specifier: workspace:* version: link:../api-extractor '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) '@types/watchpack': specifier: 2.4.0 version: 2.4.0 @@ -3040,8 +3040,8 @@ importers: version: 0.5.3(eslint@9.37.0)(typescript@5.8.2) devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig @@ -3055,8 +3055,8 @@ importers: ../../../eslint/eslint-patch: devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) '@types/eslint-8': specifier: npm:@types/eslint@8.56.10 version: '@types/eslint@8.56.10' @@ -3092,8 +3092,8 @@ importers: version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) '@typescript-eslint/parser': specifier: ~8.56.1 version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) @@ -3123,8 +3123,8 @@ importers: version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) '@typescript-eslint/parser': specifier: ~8.56.1 version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) @@ -3148,8 +3148,8 @@ importers: version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) '@typescript-eslint/parser': specifier: ~8.56.1 version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) @@ -3206,8 +3206,8 @@ importers: version: 5.2.0(eslint@9.37.0) devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig @@ -3767,8 +3767,8 @@ importers: version: link:../node-core-library devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig @@ -3833,8 +3833,8 @@ importers: version: 10.3.0 devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig @@ -3956,8 +3956,8 @@ importers: version: 7.7.4 devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) '@rushstack/problem-matcher': specifier: workspace:* version: link:../problem-matcher @@ -4012,8 +4012,8 @@ importers: version: link:../terminal devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig @@ -4098,8 +4098,8 @@ importers: ../../../libraries/problem-matcher: devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig @@ -4139,8 +4139,8 @@ importers: version: 1.22.11 devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) '@types/jju': specifier: 1.4.1 version: 1.4.1 @@ -4656,8 +4656,8 @@ importers: version: 8.1.1 devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) '@types/supports-color': specifier: 8.1.3 version: 8.1.3 @@ -4671,8 +4671,8 @@ importers: ../../../libraries/tree-pattern: devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig @@ -4696,8 +4696,8 @@ importers: version: 0.3.2 devDependencies: '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@22.9.3) + specifier: 1.3.3 + version: 1.3.3(@types/node@22.9.3) '@rushstack/node-core-library': specifier: workspace:* version: link:../node-core-library @@ -4819,8 +4819,8 @@ importers: ../../../rigs/decoupled-local-node-rig: dependencies: '@microsoft/api-extractor': - specifier: 7.59.2 - version: 7.59.2(@types/node@20.17.19) + specifier: 7.59.4 + version: 7.59.4(@types/node@20.17.19) '@rushstack/eslint-config': specifier: 4.8.0 version: 4.8.0(eslint@9.37.0)(typescript@5.8.2) @@ -4831,11 +4831,11 @@ importers: specifier: 0.23.5 version: 0.23.5(eslint@9.37.0)(typescript@5.8.2) '@rushstack/heft': - specifier: 1.3.1 - version: 1.3.1(@types/node@20.17.19) + specifier: 1.3.3 + version: 1.3.3(@types/node@20.17.19) '@rushstack/heft-node-rig': - specifier: 2.11.51 - version: 2.11.51(@rushstack/heft@1.3.1(@types/node@20.17.19))(@types/node@20.17.19)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0) + specifier: 2.11.53 + version: 2.11.53(@rushstack/heft@1.3.3(@types/node@20.17.19))(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0) '@types/jest': specifier: 30.0.0 version: 30.0.0 @@ -8710,12 +8710,12 @@ packages: '@mdx-js/util@1.6.22': resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} - '@microsoft/api-extractor-model@7.33.13': - resolution: {integrity: sha512-OVL/dDvHstFJMJb2amgI7S9p9wAVMyrt18R2aSBOP9tVAARWiEJAM3wVsgxXymMOvnvKO/np9X7PeJpNZv3eLg==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/api-extractor-model/-/api-extractor-model-7.33.13.tgz} + '@microsoft/api-extractor-model@7.33.15': + resolution: {integrity: sha512-UpCnItIJwu03iNTWtJVKv8Qbf0MXN7WLQZUail9cpAQmnZiIX36YPRRoRxz0pocwytzUpmJhstsLkyW5tsaHBA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/api-extractor-model/-/api-extractor-model-7.33.15.tgz} engines: {node: '>=20.9.0'} - '@microsoft/api-extractor@7.59.2': - resolution: {integrity: sha512-hhkH6p2AmJtneC1cyxDTzUBg3DJHxvsCW5ciTrFSY8H9nTWB+lwa1nmmmTAqNFc9mufMATlH6hwdOI/Jc1wjfw==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/api-extractor/-/api-extractor-7.59.2.tgz} + '@microsoft/api-extractor@7.59.4': + resolution: {integrity: sha512-XqseDKIw736qlhQwS9SOpbY4veOiP2Nc7YiWmgXXBmeA3kY9qGXw+Tu7DFpU9FvXywE1z8SvLJKUVxFpcX0kig==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/api-extractor/-/api-extractor-7.59.4.tgz} engines: {node: '>=20.9.0'} hasBin: true @@ -9480,21 +9480,21 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - '@rushstack/heft-api-extractor-plugin@1.3.28': - resolution: {integrity: sha512-lwJ7Sgm/YsHxPgmuLsnfVSdOjW1yOvPKQADZcK11JnmNuFEBh7OV3vMA4taRJgc+HicMRUzy/Wcuuxtkxc+N6w==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-api-extractor-plugin/-/heft-api-extractor-plugin-1.3.28.tgz} + '@rushstack/heft-api-extractor-plugin@1.3.30': + resolution: {integrity: sha512-91/nwiWHcejalOLbwNS0OaEwSqeR0/SY/vH2CFyxfJaSiFCsVLlYfuZzu6YgLKn7roJVFI+D8+P+qZCpWrSJ+w==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-api-extractor-plugin/-/heft-api-extractor-plugin-1.3.30.tgz} engines: {node: '>=20.9.0'} peerDependencies: - '@rushstack/heft': 1.3.1 + '@rushstack/heft': 1.3.3 - '@rushstack/heft-config-file@0.20.15': - resolution: {integrity: sha512-9IvjiLsVzAb+iZ1Xav/IQs+wDmaeVRiWj13B7i9Gx2mG+aikYw3eG6l9fPsDQphogkpid6k3Y5/ERuen3MoKdQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-config-file/-/heft-config-file-0.20.15.tgz} + '@rushstack/heft-config-file@0.20.17': + resolution: {integrity: sha512-zg2kIyWSZs3yauGi6f6auvkwJKO9+SMpG0T/siMiMLsEL1cvV6iRzzoQcyDGzx3vPwiDhwbMtWsNs3hs9vQWwg==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-config-file/-/heft-config-file-0.20.17.tgz} engines: {node: '>=20.9.0'} - '@rushstack/heft-jest-plugin@2.0.18': - resolution: {integrity: sha512-mOFicBMJCU9q5t/xuQTVF0naz1TV85i8PbuChFfk+mxfQ1hC2NJpLbgHuNXqYjykB45fB6b/RXHuTZwK4OlJxg==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-jest-plugin/-/heft-jest-plugin-2.0.18.tgz} + '@rushstack/heft-jest-plugin@2.0.20': + resolution: {integrity: sha512-ERIwK2SSZ86rOVKL98Q+OxrtYQWWCFImDM3doqkebqTxrINBOWL+itK1eFjP9nq59bGdl0Nx9GcusjIXBnNnEg==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-jest-plugin/-/heft-jest-plugin-2.0.20.tgz} engines: {node: '>=20.9.0'} peerDependencies: - '@rushstack/heft': ^1.3.1 + '@rushstack/heft': ^1.3.3 '@types/jest': ^30.0.0 jest-environment-jsdom: ^30.3.0 jest-environment-node: ^30.3.0 @@ -9506,25 +9506,25 @@ packages: jest-environment-node: optional: true - '@rushstack/heft-lint-plugin@1.3.0': - resolution: {integrity: sha512-zCPBp5ltpsrBaAvC+IES7fR+kd3vNTIX8Fsqn21TZw+BH+f0Zk3rX4kWH6xf2fpNtae4SZpzOQjwQ4OX+Eo4WA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-lint-plugin/-/heft-lint-plugin-1.3.0.tgz} + '@rushstack/heft-lint-plugin@1.4.0': + resolution: {integrity: sha512-UZDwsyQxV/jjRZbFP5OX27EfOVfoOXvhPwVfKTIsu9IJNkm4sgnRb/NNnipUWzwXi5riRYKDNDpq7h2nh5/X0w==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-lint-plugin/-/heft-lint-plugin-1.4.0.tgz} engines: {node: '>=20.9.0'} peerDependencies: - '@rushstack/heft': 1.3.1 + '@rushstack/heft': 1.3.3 - '@rushstack/heft-node-rig@2.11.51': - resolution: {integrity: sha512-DScCg/UrqyrbuiXhBmrOuF45sUhvqjxK5+EAHdGEzeK+ep8Q5R5eYmWHhYR2pFcUHSRegy6DJgjHhsBzIdthQQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-node-rig/-/heft-node-rig-2.11.51.tgz} + '@rushstack/heft-node-rig@2.11.53': + resolution: {integrity: sha512-uaWdjdNSJBnhKF5kfioS0gZrUyE6M1uP8jYubmRKFqF59nt0JhSTw3PzUVfibAzkoce+9wYe4RrRzYiRIx+mxQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-node-rig/-/heft-node-rig-2.11.53.tgz} peerDependencies: - '@rushstack/heft': ^1.3.1 + '@rushstack/heft': ^1.3.3 - '@rushstack/heft-typescript-plugin@1.3.23': - resolution: {integrity: sha512-URH3ox8EPh97tvM0Z4xXiLPQtMyGWaM0VFgbktb47FN0LGcO62fii5r/rus4HxWmSdj1TUPYLOCm1xLjpz8cag==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-typescript-plugin/-/heft-typescript-plugin-1.3.23.tgz} + '@rushstack/heft-typescript-plugin@1.3.25': + resolution: {integrity: sha512-wZD3d/mHnKyhf6ipcBF5UZIxkBJDWD40Yj6QpDJRoaK36KiIw2rcAO56jKPGoMV1f/tDgHZ8bf33grIGhrB+qA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-typescript-plugin/-/heft-typescript-plugin-1.3.25.tgz} engines: {node: '>=20.9.0'} peerDependencies: - '@rushstack/heft': 1.3.1 + '@rushstack/heft': 1.3.3 - '@rushstack/heft@1.3.1': - resolution: {integrity: sha512-mOSxHxnLi5LSwvIxZV2zTzqXjIqcFDLNpOc+R3sJnBTkK2GluprCVUApOBY2seoTQbcVhMxptniobyyPUuQ8dg==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft/-/heft-1.3.1.tgz} + '@rushstack/heft@1.3.3': + resolution: {integrity: sha512-4kiFaYlnTbJWrMKZE6jOqg4fNqSZYPaaVuslq6bG3dtfyABI8SB4pB44eyFSIzHNwIs03C8+FUTdx4EwZBafEw==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft/-/heft-1.3.3.tgz} engines: {node: '>=20.9.0'} hasBin: true @@ -9536,8 +9536,8 @@ packages: '@types/node': optional: true - '@rushstack/node-core-library@5.24.2': - resolution: {integrity: sha512-sgSqy/lqce+uMrggF/wEIISIfpMX8pAXE5qSzGgDYFrWJkrsttrw/MzU4GFVNcbHSkPz5KbSh/A4/JSpDHoNQA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/node-core-library/-/node-core-library-5.24.2.tgz} + '@rushstack/node-core-library@5.25.1': + resolution: {integrity: sha512-ozoRDwIx3jStOYpx86rFyXH4SaUR+DVT6HubQ59avLplJkWXSm5InztYH7RrOzzq9PJXTdq9/+lKX06SfkLVsA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/node-core-library/-/node-core-library-5.25.1.tgz} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -9545,8 +9545,8 @@ packages: '@types/node': optional: true - '@rushstack/operation-graph@0.7.3': - resolution: {integrity: sha512-2QxEyLccvWzGPS3dkVN7Y3YyyI2a6C7M0SWc5t+GCeavsAls8URRltutmCNBonUMk4An2JqnQ3zM3vs8eUzp3Q==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/operation-graph/-/operation-graph-0.7.3.tgz} + '@rushstack/operation-graph@0.7.5': + resolution: {integrity: sha512-jtXI+3KetcWZAbganAUkzZu5c/lzwkmfBWC9k5TPmCDhlrpdegCJ92B5jcOngT/iDFhoQv3tP0CNETGGvUBFRQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/operation-graph/-/operation-graph-0.7.5.tgz} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -9562,8 +9562,9 @@ packages: '@types/node': optional: true - '@rushstack/rig-package@0.7.3': - resolution: {integrity: sha1-0opUQLHp9DBGcnunAJ0Y2ZMU8lE=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/rig-package/-/rig-package-0.7.3.tgz} + '@rushstack/rig-package@0.7.4': + resolution: {integrity: sha512-SHZdzc9b2ptUb5uvRWALtAceD/QKZ4UAnZjcaKviTMPmHBnW14gs7XDocn6sDv2EqgnxxFPFkpV7/I3cUijCbw==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/rig-package/-/rig-package-0.7.4.tgz} + engines: {node: '>=20.9.0'} '@rushstack/set-webpack-public-path-plugin@4.1.16': resolution: {integrity: sha512-9YD76OHSYr3pqJwc3wcxIFL1kSxPUyw3xThaZrJDBumMRdAEx7Wj3J0xkPtri5BS06yi49fIC1Di75CxeworzA==} @@ -9573,8 +9574,8 @@ packages: '@types/webpack': optional: true - '@rushstack/terminal@0.24.5': - resolution: {integrity: sha512-AkbHjc48S7g4HkFO2wKHVMuJiZs/KaRI/rjcSpEj7o6SXgRYZrpXDE10NFa8ov/bxm4F5x+A8iqxkAGfEUTuTA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/terminal/-/terminal-0.24.5.tgz} + '@rushstack/terminal@0.24.7': + resolution: {integrity: sha512-o8J9nHOIwfYb0s0eG2WYhx7ed3YIvBXQHVFxYdXCmVdBOkTkdArJcgVzRS8ewUepmlic4nGgJPjKIVaNKSqEnA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/terminal/-/terminal-0.24.7.tgz} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -9588,8 +9589,8 @@ packages: '@rushstack/tree-pattern@0.4.1': resolution: {integrity: sha1-cRI62zQgksnfv93gMf9SsR3OQxo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/tree-pattern/-/tree-pattern-0.4.1.tgz} - '@rushstack/ts-command-line@5.3.15': - resolution: {integrity: sha512-9oUS23ebDfbl8ED6CANdQ3qqBc/xhrQvzhQAv61oN391FvNRww6RzdUbo97NEXaMm7lNEQsTjdE3zqtgiMv/eQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/ts-command-line/-/ts-command-line-5.3.15.tgz} + '@rushstack/ts-command-line@5.3.17': + resolution: {integrity: sha512-pIwhWawZXAT0nTXwvcE/InQ7uaVAgSeIzILMb2mBrI01Hz1yEvxrhV2+DE2Fzux8aZY9OJTdLsI+sk9kZDuAJw==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/ts-command-line/-/ts-command-line-5.3.17.tgz} engines: {node: '>=20.9.0'} '@rushstack/webpack-plugin-utilities@0.3.16': @@ -23803,23 +23804,23 @@ snapshots: '@mdx-js/util@1.6.22': {} - '@microsoft/api-extractor-model@7.33.13(@types/node@20.17.19)': + '@microsoft/api-extractor-model@7.33.15(@types/node@20.17.19)': dependencies: '@microsoft/tsdoc': 0.17.0 '@microsoft/tsdoc-config': 0.18.2 - '@rushstack/node-core-library': 5.24.2(@types/node@20.17.19) + '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.59.2(@types/node@20.17.19)': + '@microsoft/api-extractor@7.59.4(@types/node@20.17.19)': dependencies: - '@microsoft/api-extractor-model': 7.33.13(@types/node@20.17.19) + '@microsoft/api-extractor-model': 7.33.15(@types/node@20.17.19) '@microsoft/tsdoc': 0.17.0 '@microsoft/tsdoc-config': 0.18.2 - '@rushstack/node-core-library': 5.24.2(@types/node@20.17.19) - '@rushstack/rig-package': 0.7.3 - '@rushstack/terminal': 0.24.5(@types/node@20.17.19) - '@rushstack/ts-command-line': 5.3.15(@types/node@20.17.19) + '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) + '@rushstack/rig-package': 0.7.4 + '@rushstack/terminal': 0.24.7(@types/node@20.17.19) + '@rushstack/ts-command-line': 5.3.17(@types/node@20.17.19) diff: 8.0.4 minimatch: 10.2.3 resolve: 1.22.11 @@ -24930,41 +24931,41 @@ snapshots: - supports-color - typescript - '@rushstack/heft-api-extractor-plugin@1.3.28(@rushstack/heft@1.3.1(@types/node@20.17.19))(@types/node@20.17.19)': + '@rushstack/heft-api-extractor-plugin@1.3.30(@rushstack/heft@1.3.3(@types/node@20.17.19))(@types/node@20.17.19)': dependencies: - '@rushstack/heft': 1.3.1(@types/node@20.17.19) - '@rushstack/node-core-library': 5.24.2(@types/node@20.17.19) + '@rushstack/heft': 1.3.3(@types/node@20.17.19) + '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) semver: 7.7.4 transitivePeerDependencies: - '@types/node' - '@rushstack/heft-config-file@0.20.15(@types/node@20.17.19)': + '@rushstack/heft-config-file@0.20.17(@types/node@20.17.19)': dependencies: - '@rushstack/node-core-library': 5.24.2(@types/node@20.17.19) - '@rushstack/rig-package': 0.7.3 - '@rushstack/terminal': 0.24.5(@types/node@20.17.19) + '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) + '@rushstack/rig-package': 0.7.4 + '@rushstack/terminal': 0.24.7(@types/node@20.17.19) jsonpath-plus: 10.3.0 transitivePeerDependencies: - '@types/node' - '@rushstack/heft-config-file@0.20.15(@types/node@22.9.3)': + '@rushstack/heft-config-file@0.20.17(@types/node@22.9.3)': dependencies: - '@rushstack/node-core-library': 5.24.2(@types/node@22.9.3) - '@rushstack/rig-package': 0.7.3 - '@rushstack/terminal': 0.24.5(@types/node@22.9.3) + '@rushstack/node-core-library': 5.25.1(@types/node@22.9.3) + '@rushstack/rig-package': 0.7.4 + '@rushstack/terminal': 0.24.7(@types/node@22.9.3) jsonpath-plus: 10.3.0 transitivePeerDependencies: - '@types/node' - '@rushstack/heft-jest-plugin@2.0.18(@rushstack/heft@1.3.1(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0)(jest-environment-node@30.3.0)': + '@rushstack/heft-jest-plugin@2.0.20(@rushstack/heft@1.3.3(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0)(jest-environment-node@30.3.0)': dependencies: '@jest/core': 30.3.0(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)) '@jest/reporters': 30.3.0 '@jest/transform': 30.3.0 - '@rushstack/heft': 1.3.1(@types/node@20.17.19) - '@rushstack/heft-config-file': 0.20.15(@types/node@20.17.19) - '@rushstack/node-core-library': 5.24.2(@types/node@20.17.19) - '@rushstack/terminal': 0.24.5(@types/node@20.17.19) + '@rushstack/heft': 1.3.3(@types/node@20.17.19) + '@rushstack/heft-config-file': 0.20.17(@types/node@20.17.19) + '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) + '@rushstack/terminal': 0.24.7(@types/node@20.17.19) jest-config: 30.3.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)) jest-resolve: 30.3.0 jest-snapshot: 30.3.0 @@ -24980,24 +24981,24 @@ snapshots: - supports-color - ts-node - '@rushstack/heft-lint-plugin@1.3.0(@rushstack/heft@1.3.1(@types/node@20.17.19))(@types/node@20.17.19)': + '@rushstack/heft-lint-plugin@1.4.0(@rushstack/heft@1.3.3(@types/node@20.17.19))(@types/node@20.17.19)': dependencies: - '@rushstack/heft': 1.3.1(@types/node@20.17.19) - '@rushstack/node-core-library': 5.24.2(@types/node@20.17.19) + '@rushstack/heft': 1.3.3(@types/node@20.17.19) + '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) json-stable-stringify-without-jsonify: 1.0.1 semver: 7.7.4 transitivePeerDependencies: - '@types/node' - '@rushstack/heft-node-rig@2.11.51(@rushstack/heft@1.3.1(@types/node@20.17.19))(@types/node@20.17.19)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0)': + '@rushstack/heft-node-rig@2.11.53(@rushstack/heft@1.3.3(@types/node@20.17.19))(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0)': dependencies: - '@microsoft/api-extractor': 7.59.2(@types/node@20.17.19) + '@microsoft/api-extractor': 7.59.4(@types/node@20.17.19) '@rushstack/eslint-config': 4.8.0(eslint@9.37.0)(typescript@5.8.2) - '@rushstack/heft': 1.3.1(@types/node@20.17.19) - '@rushstack/heft-api-extractor-plugin': 1.3.28(@rushstack/heft@1.3.1(@types/node@20.17.19))(@types/node@20.17.19) - '@rushstack/heft-jest-plugin': 2.0.18(@rushstack/heft@1.3.1(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0)(jest-environment-node@30.3.0) - '@rushstack/heft-lint-plugin': 1.3.0(@rushstack/heft@1.3.1(@types/node@20.17.19))(@types/node@20.17.19) - '@rushstack/heft-typescript-plugin': 1.3.23(@rushstack/heft@1.3.1(@types/node@20.17.19))(@types/node@20.17.19) + '@rushstack/heft': 1.3.3(@types/node@20.17.19) + '@rushstack/heft-api-extractor-plugin': 1.3.30(@rushstack/heft@1.3.3(@types/node@20.17.19))(@types/node@20.17.19) + '@rushstack/heft-jest-plugin': 2.0.20(@rushstack/heft@1.3.3(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0)(jest-environment-node@30.3.0) + '@rushstack/heft-lint-plugin': 1.4.0(@rushstack/heft@1.3.3(@types/node@20.17.19))(@types/node@20.17.19) + '@rushstack/heft-typescript-plugin': 1.3.25(@rushstack/heft@1.3.3(@types/node@20.17.19))(@types/node@20.17.19) '@types/jest': 30.0.0 eslint: 9.37.0 jest-environment-node: 30.3.0 @@ -25012,25 +25013,25 @@ snapshots: - supports-color - ts-node - '@rushstack/heft-typescript-plugin@1.3.23(@rushstack/heft@1.3.1(@types/node@20.17.19))(@types/node@20.17.19)': + '@rushstack/heft-typescript-plugin@1.3.25(@rushstack/heft@1.3.3(@types/node@20.17.19))(@types/node@20.17.19)': dependencies: - '@rushstack/heft': 1.3.1(@types/node@20.17.19) - '@rushstack/heft-config-file': 0.20.15(@types/node@20.17.19) - '@rushstack/node-core-library': 5.24.2(@types/node@20.17.19) + '@rushstack/heft': 1.3.3(@types/node@20.17.19) + '@rushstack/heft-config-file': 0.20.17(@types/node@20.17.19) + '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) '@types/tapable': 1.0.6 semver: 7.7.4 tapable: 1.1.3 transitivePeerDependencies: - '@types/node' - '@rushstack/heft@1.3.1(@types/node@20.17.19)': + '@rushstack/heft@1.3.3(@types/node@20.17.19)': dependencies: - '@rushstack/heft-config-file': 0.20.15(@types/node@20.17.19) - '@rushstack/node-core-library': 5.24.2(@types/node@20.17.19) - '@rushstack/operation-graph': 0.7.3(@types/node@20.17.19) - '@rushstack/rig-package': 0.7.3 - '@rushstack/terminal': 0.24.5(@types/node@20.17.19) - '@rushstack/ts-command-line': 5.3.15(@types/node@20.17.19) + '@rushstack/heft-config-file': 0.20.17(@types/node@20.17.19) + '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) + '@rushstack/operation-graph': 0.7.5(@types/node@20.17.19) + '@rushstack/rig-package': 0.7.4 + '@rushstack/terminal': 0.24.7(@types/node@20.17.19) + '@rushstack/ts-command-line': 5.3.17(@types/node@20.17.19) '@types/tapable': 1.0.6 fast-glob: 3.3.3 git-repo-info: 2.1.1 @@ -25040,14 +25041,14 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@rushstack/heft@1.3.1(@types/node@22.9.3)': + '@rushstack/heft@1.3.3(@types/node@22.9.3)': dependencies: - '@rushstack/heft-config-file': 0.20.15(@types/node@22.9.3) - '@rushstack/node-core-library': 5.24.2(@types/node@22.9.3) - '@rushstack/operation-graph': 0.7.3(@types/node@22.9.3) - '@rushstack/rig-package': 0.7.3 - '@rushstack/terminal': 0.24.5(@types/node@22.9.3) - '@rushstack/ts-command-line': 5.3.15(@types/node@22.9.3) + '@rushstack/heft-config-file': 0.20.17(@types/node@22.9.3) + '@rushstack/node-core-library': 5.25.1(@types/node@22.9.3) + '@rushstack/operation-graph': 0.7.5(@types/node@22.9.3) + '@rushstack/rig-package': 0.7.4 + '@rushstack/terminal': 0.24.7(@types/node@22.9.3) + '@rushstack/ts-command-line': 5.3.17(@types/node@22.9.3) '@types/tapable': 1.0.6 fast-glob: 3.3.3 git-repo-info: 2.1.1 @@ -25081,7 +25082,7 @@ snapshots: optionalDependencies: '@types/node': 22.9.3 - '@rushstack/node-core-library@5.24.2(@types/node@20.17.19)': + '@rushstack/node-core-library@5.25.1(@types/node@20.17.19)': dependencies: ajv: 8.20.0 ajv-draft-04: 1.0.0(ajv@8.20.0) @@ -25094,7 +25095,7 @@ snapshots: optionalDependencies: '@types/node': 20.17.19 - '@rushstack/node-core-library@5.24.2(@types/node@22.9.3)': + '@rushstack/node-core-library@5.25.1(@types/node@22.9.3)': dependencies: ajv: 8.20.0 ajv-draft-04: 1.0.0(ajv@8.20.0) @@ -25107,17 +25108,17 @@ snapshots: optionalDependencies: '@types/node': 22.9.3 - '@rushstack/operation-graph@0.7.3(@types/node@20.17.19)': + '@rushstack/operation-graph@0.7.5(@types/node@20.17.19)': dependencies: - '@rushstack/node-core-library': 5.24.2(@types/node@20.17.19) - '@rushstack/terminal': 0.24.5(@types/node@20.17.19) + '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) + '@rushstack/terminal': 0.24.7(@types/node@20.17.19) optionalDependencies: '@types/node': 20.17.19 - '@rushstack/operation-graph@0.7.3(@types/node@22.9.3)': + '@rushstack/operation-graph@0.7.5(@types/node@22.9.3)': dependencies: - '@rushstack/node-core-library': 5.24.2(@types/node@22.9.3) - '@rushstack/terminal': 0.24.5(@types/node@22.9.3) + '@rushstack/node-core-library': 5.25.1(@types/node@22.9.3) + '@rushstack/terminal': 0.24.7(@types/node@22.9.3) optionalDependencies: '@types/node': 22.9.3 @@ -25129,7 +25130,7 @@ snapshots: optionalDependencies: '@types/node': 22.9.3 - '@rushstack/rig-package@0.7.3': + '@rushstack/rig-package@0.7.4': dependencies: jju: 1.4.0 resolve: 1.22.11 @@ -25154,17 +25155,17 @@ snapshots: - '@types/node' - webpack - '@rushstack/terminal@0.24.5(@types/node@20.17.19)': + '@rushstack/terminal@0.24.7(@types/node@20.17.19)': dependencies: - '@rushstack/node-core-library': 5.24.2(@types/node@20.17.19) + '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) '@rushstack/problem-matcher': 0.2.1(@types/node@20.17.19) supports-color: 8.1.1 optionalDependencies: '@types/node': 20.17.19 - '@rushstack/terminal@0.24.5(@types/node@22.9.3)': + '@rushstack/terminal@0.24.7(@types/node@22.9.3)': dependencies: - '@rushstack/node-core-library': 5.24.2(@types/node@22.9.3) + '@rushstack/node-core-library': 5.25.1(@types/node@22.9.3) '@rushstack/problem-matcher': 0.2.1(@types/node@22.9.3) supports-color: 8.1.1 optionalDependencies: @@ -25174,18 +25175,18 @@ snapshots: '@rushstack/tree-pattern@0.4.1': {} - '@rushstack/ts-command-line@5.3.15(@types/node@20.17.19)': + '@rushstack/ts-command-line@5.3.17(@types/node@20.17.19)': dependencies: - '@rushstack/terminal': 0.24.5(@types/node@20.17.19) + '@rushstack/terminal': 0.24.7(@types/node@20.17.19) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - '@rushstack/ts-command-line@5.3.15(@types/node@22.9.3)': + '@rushstack/ts-command-line@5.3.17(@types/node@22.9.3)': dependencies: - '@rushstack/terminal': 0.24.5(@types/node@22.9.3) + '@rushstack/terminal': 0.24.7(@types/node@22.9.3) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 diff --git a/common/config/subspaces/default/repo-state.json b/common/config/subspaces/default/repo-state.json index c4bdac4d9b..5694a332b3 100644 --- a/common/config/subspaces/default/repo-state.json +++ b/common/config/subspaces/default/repo-state.json @@ -1,5 +1,5 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "0bba018dc100225f133b4d52644f2ce57c457132", + "pnpmShrinkwrapHash": "5ed0eabdfff6ff042769698020ac33348d56a95b", "preferredVersionsHash": "029c99bd6e65c5e1f25e2848340509811ff9753c" } diff --git a/common/config/validation/rush-package-lock.json b/common/config/validation/rush-package-lock.json index b2fce6d630..4254fecd87 100644 --- a/common/config/validation/rush-package-lock.json +++ b/common/config/validation/rush-package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@microsoft/rush": "5.179.0" + "@microsoft/rush": "5.181.0" } }, "node_modules/@azure/abort-controller": { @@ -191,19 +191,19 @@ } }, "node_modules/@azure/msal-browser": { - "version": "5.22.0", - "integrity": "sha1-S4Ni+o92jHE9PU7kpMCqEXzPXuo=", + "version": "5.24.0", + "integrity": "sha512-jS1stt81tslcVZi7fqVD+g6vr8w/IWqFl/vAB2dx/6EOroQDuCR4+z0o3C+d6a/GpLATvdoO+kwnDcYzsBXKQA==", "license": "MIT", "dependencies": { - "@azure/msal-common": "16.14.1" + "@azure/msal-common": "16.14.2" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "16.14.1", - "integrity": "sha1-LJh/MdqFjlROcrb6qYb+zbPeIPg=", + "version": "16.14.2", + "integrity": "sha512-HOBR0Gfo39TMrkxNG8k6cfjRkrRjXZc3JQs3ebMWQc9S4cihuknMYra3sgmzbZB752oQBqBN9+WF7c826p2vIQ==", "license": "MIT", "engines": { "node": ">=0.8.0" @@ -221,6 +221,14 @@ "node": ">=20" } }, + "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { + "version": "16.14.1", + "integrity": "sha1-LJh/MdqFjlROcrb6qYb+zbPeIPg=", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@azure/storage-blob": { "version": "12.31.0", "integrity": "sha1-l7Cb4r9qtZc5uGLt2BJHmDYs5yA=", @@ -489,14 +497,14 @@ } }, "node_modules/@microsoft/rush": { - "version": "5.179.0", - "integrity": "sha1-FP5o1+jfKzpvC78Q0I26+mFBTxo=", + "version": "5.181.0", + "integrity": "sha512-sS2JLpw++WYu9eVxwgAEybGfrucz2oSHG/42iI4zgZul85f3YgEzRLETxo3s/3NtPF9ilBx07KaLmtevut9a2g==", "license": "MIT", "dependencies": { - "@microsoft/rush-lib": "5.179.0", - "@rushstack/node-core-library": "5.24.1", - "@rushstack/rush-reporter": "0.2.0", - "@rushstack/terminal": "0.24.4", + "@microsoft/rush-lib": "5.181.0", + "@rushstack/node-core-library": "5.25.1", + "@rushstack/rush-reporter": "0.4.1", + "@rushstack/terminal": "0.24.7", "semver": "~7.7.4" }, "bin": { @@ -509,8 +517,8 @@ } }, "node_modules/@microsoft/rush-lib": { - "version": "5.179.0", - "integrity": "sha1-XDRVgeFmnpGlhBvP2ZzrUk7GN6Y=", + "version": "5.181.0", + "integrity": "sha512-id/A2XUzBNtYvAar8RWyPjH0uxyPqm3vh0KicazxMUrvEVziaJ2Fx/vMg/QqtcqBsqCD7LhPHlDRhUsv2SSvsA==", "license": "MIT", "dependencies": { "@inquirer/checkbox": "~5.1.3", @@ -519,24 +527,24 @@ "@inquirer/search": "~4.1.7", "@inquirer/select": "~5.1.3", "@pnpm/link-bins": "~5.3.7", - "@rushstack/credential-cache": "0.2.26", - "@rushstack/heft-config-file": "0.20.14", - "@rushstack/lookup-by-path": "0.10.15", - "@rushstack/node-core-library": "5.24.1", - "@rushstack/npm-check-fork": "0.2.26", - "@rushstack/package-deps-hash": "4.7.28", - "@rushstack/package-extractor": "0.13.14", - "@rushstack/rig-package": "0.7.3", - "@rushstack/rush-amazon-s3-build-cache-plugin": "5.179.0", - "@rushstack/rush-azure-storage-build-cache-plugin": "5.179.0", - "@rushstack/rush-http-build-cache-plugin": "5.179.0", - "@rushstack/rush-pnpm-kit-v10": "0.2.27", - "@rushstack/rush-pnpm-kit-v8": "0.2.27", - "@rushstack/rush-pnpm-kit-v9": "0.2.27", - "@rushstack/rush-reporter": "0.2.0", - "@rushstack/stream-collator": "4.2.26", - "@rushstack/terminal": "0.24.4", - "@rushstack/ts-command-line": "5.3.14", + "@rushstack/credential-cache": "0.2.30", + "@rushstack/heft-config-file": "0.20.17", + "@rushstack/lookup-by-path": "0.10.19", + "@rushstack/node-core-library": "5.25.1", + "@rushstack/npm-check-fork": "0.2.30", + "@rushstack/package-deps-hash": "4.8.0", + "@rushstack/package-extractor": "0.13.18", + "@rushstack/rig-package": "0.7.4", + "@rushstack/rush-amazon-s3-build-cache-plugin": "5.181.0", + "@rushstack/rush-azure-storage-build-cache-plugin": "5.181.0", + "@rushstack/rush-http-build-cache-plugin": "5.181.0", + "@rushstack/rush-pnpm-kit-v10": "0.2.31", + "@rushstack/rush-pnpm-kit-v8": "0.2.31", + "@rushstack/rush-pnpm-kit-v9": "0.2.31", + "@rushstack/rush-reporter": "0.4.1", + "@rushstack/stream-collator": "4.2.30", + "@rushstack/terminal": "0.24.7", + "@rushstack/ts-command-line": "5.3.17", "@yarnpkg/lockfile": "~1.0.2", "dependency-path": "~9.2.8", "dotenv": "~16.4.7", @@ -544,7 +552,7 @@ "git-repo-info": "~2.1.0", "https-proxy-agent": "~5.0.0", "ignore": "~5.1.6", - "js-yaml": "~4.1.0", + "js-yaml": "~4.3.2", "npm-package-arg": "~6.1.0", "object-hash": "3.0.0", "pnpm-sync-lib": "0.3.4", @@ -562,8 +570,8 @@ } }, "node_modules/@nodable/entities": { - "version": "3.0.0", - "integrity": "sha1-aUcDvIZNMOrtVcLj3vANvWFJNnA=", + "version": "3.1.0", + "integrity": "sha512-LsS/DjHr+uDM647Gru/cA8+J3a3HfhttwCKLyuoyN7yXTFCxKBtSgMQBvrW9yNPa2/zDRUNuGPaH5QUFoa4arQ==", "funding": [ { "type": "github", @@ -1476,24 +1484,24 @@ } }, "node_modules/@rushstack/credential-cache": { - "version": "0.2.26", - "integrity": "sha1-wJGKNK6VhD/LGVbjY690jfFhVcg=", + "version": "0.2.30", + "integrity": "sha512-0B8ae/DomcV7pbKEzCg3tSzlhTKFao9bUPsh+Akp0H6UWt1xx+1uHLRxIKj0BZyECTUhecq58Bl7AY/mu64pYg==", "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.24.1" + "@rushstack/node-core-library": "5.25.1" }, "engines": { "node": ">=20.9.0" } }, "node_modules/@rushstack/heft-config-file": { - "version": "0.20.14", - "integrity": "sha1-q3F0Z324cc3gmSwk3D0U6g2a4L4=", + "version": "0.20.17", + "integrity": "sha512-zg2kIyWSZs3yauGi6f6auvkwJKO9+SMpG0T/siMiMLsEL1cvV6iRzzoQcyDGzx3vPwiDhwbMtWsNs3hs9vQWwg==", "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.24.1", - "@rushstack/rig-package": "0.7.3", - "@rushstack/terminal": "0.24.4", + "@rushstack/node-core-library": "5.25.1", + "@rushstack/rig-package": "0.7.4", + "@rushstack/terminal": "0.24.7", "jsonpath-plus": "~10.3.0" }, "engines": { @@ -1501,8 +1509,8 @@ } }, "node_modules/@rushstack/lookup-by-path": { - "version": "0.10.15", - "integrity": "sha1-6I12Vc4kr7Vzx2StoAqUlrDJ2Ts=", + "version": "0.10.19", + "integrity": "sha512-QChzKd4r9hkoHEvmQ3+uKpmeuRpqrw+hwPoQZV+znYfCLcw+gHKfuBqpzRIngMq+RlgxGi3PLiIjsqnkdzxR+A==", "license": "MIT", "engines": { "node": ">=20.9.0" @@ -1517,8 +1525,8 @@ } }, "node_modules/@rushstack/node-core-library": { - "version": "5.24.1", - "integrity": "sha1-liVjrLQfS2T9TeRWr+VSr8T2khk=", + "version": "5.25.1", + "integrity": "sha512-ozoRDwIx3jStOYpx86rFyXH4SaUR+DVT6HubQ59avLplJkWXSm5InztYH7RrOzzq9PJXTdq9/+lKX06SfkLVsA==", "license": "MIT", "dependencies": { "ajv": "~8.20.0", @@ -1543,11 +1551,11 @@ } }, "node_modules/@rushstack/npm-check-fork": { - "version": "0.2.26", - "integrity": "sha1-2bwgqfYkDGYROC4kSAvwNPnMlOE=", + "version": "0.2.30", + "integrity": "sha512-Kis//EpY/264mIRjszxmRBcv8DHA5WC4sTAJkDY+e4vECnQ6XUzWY19mO1GX7ivP5VtTO43YpDSw49kSqx3Acg==", "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.24.1", + "@rushstack/node-core-library": "5.25.1", "semver": "~7.7.4" }, "engines": { @@ -1555,25 +1563,25 @@ } }, "node_modules/@rushstack/package-deps-hash": { - "version": "4.7.28", - "integrity": "sha1-f31YqiftxGUwwAnTeIObe8XDHc8=", + "version": "4.8.0", + "integrity": "sha512-pKQdS6rNJYmn7ovZV+TBfX/XKwLnFYAbI7w2qFmIesxLsZTL3KAD4BIsoDnlVVe9xlEvh3qB18U8mBtsp3jVCw==", "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.24.1" + "@rushstack/node-core-library": "5.25.1" }, "engines": { "node": ">=20.9.0" } }, "node_modules/@rushstack/package-extractor": { - "version": "0.13.14", - "integrity": "sha1-ffFOVpfECsec1q2jlqxA469Lp9A=", + "version": "0.13.18", + "integrity": "sha512-ZB8mAkVq7HFq6sFUnSqAaG5Kj/SbYhvVBZJf7fob0HED3sHW8vmGCM0T4rn8fdShIqurclP8N0bKrKpBRNJlRw==", "license": "MIT", "dependencies": { "@pnpm/link-bins": "~5.3.7", - "@rushstack/node-core-library": "5.24.1", - "@rushstack/terminal": "0.24.4", - "@rushstack/ts-command-line": "5.3.14", + "@rushstack/node-core-library": "5.25.1", + "@rushstack/terminal": "0.24.7", + "@rushstack/ts-command-line": "5.3.17", "ignore": "~5.1.6", "jszip": "~3.8.0", "minimatch": "10.2.3", @@ -1598,23 +1606,26 @@ } }, "node_modules/@rushstack/rig-package": { - "version": "0.7.3", - "integrity": "sha1-0opUQLHp9DBGcnunAJ0Y2ZMU8lE=", + "version": "0.7.4", + "integrity": "sha512-SHZdzc9b2ptUb5uvRWALtAceD/QKZ4UAnZjcaKviTMPmHBnW14gs7XDocn6sDv2EqgnxxFPFkpV7/I3cUijCbw==", "license": "MIT", "dependencies": { "jju": "~1.4.0", "resolve": "~1.22.1" + }, + "engines": { + "node": ">=20.9.0" } }, "node_modules/@rushstack/rush-amazon-s3-build-cache-plugin": { - "version": "5.179.0", - "integrity": "sha1-NZ4wO0V+FaLRsyoI5OKfgpaQ5jQ=", + "version": "5.181.0", + "integrity": "sha512-itaD/ao/836Dr4JS1XbCHZfr3SxltRdmmNHRTyY8XoYrX8/GTsYpMcbdGN154HrOkx3eCOFwIU6AmeLjqlHlDQ==", "license": "MIT", "dependencies": { - "@rushstack/credential-cache": "0.2.26", - "@rushstack/node-core-library": "5.24.1", - "@rushstack/rush-sdk": "5.179.0", - "@rushstack/terminal": "0.24.4", + "@rushstack/credential-cache": "0.2.30", + "@rushstack/node-core-library": "5.25.1", + "@rushstack/rush-sdk": "5.181.0", + "@rushstack/terminal": "0.24.7", "https-proxy-agent": "~5.0.0" }, "engines": { @@ -1622,29 +1633,29 @@ } }, "node_modules/@rushstack/rush-azure-storage-build-cache-plugin": { - "version": "5.179.0", - "integrity": "sha1-b57oX/NAbQRZNaCQqkHyXkeDObA=", + "version": "5.181.0", + "integrity": "sha512-zSakKQ0ohAnmux8wN8jCIi20YcGgFQGvTIlHojm9NItezL/7kTLhTWcMXwGqI1caGws9w3xUYHLfQn39Td9e6A==", "license": "MIT", "dependencies": { "@azure/identity": "~4.13.1", "@azure/storage-blob": "~12.31.0", - "@rushstack/credential-cache": "0.2.26", - "@rushstack/node-core-library": "5.24.1", - "@rushstack/rush-sdk": "5.179.0", - "@rushstack/terminal": "0.24.4" + "@rushstack/credential-cache": "0.2.30", + "@rushstack/node-core-library": "5.25.1", + "@rushstack/rush-sdk": "5.181.0", + "@rushstack/terminal": "0.24.7" }, "engines": { "node": ">=20.9.0" } }, "node_modules/@rushstack/rush-http-build-cache-plugin": { - "version": "5.179.0", - "integrity": "sha1-z2Q4mrKX681rnKIFDRlyBYKCN0s=", + "version": "5.181.0", + "integrity": "sha512-zJMXP9+SZQu9iAv8EqeHzJQ7UI0ges2aIMjY/MF4dDhZDETomPj8oGI+gIIwHYfGnqoYmoU/mRnz0FYdHcnwHw==", "license": "MIT", "dependencies": { - "@rushstack/credential-cache": "0.2.26", - "@rushstack/node-core-library": "5.24.1", - "@rushstack/rush-sdk": "5.179.0", + "@rushstack/credential-cache": "0.2.30", + "@rushstack/node-core-library": "5.25.1", + "@rushstack/rush-sdk": "5.181.0", "https-proxy-agent": "~5.0.0" }, "engines": { @@ -1652,8 +1663,8 @@ } }, "node_modules/@rushstack/rush-pnpm-kit-v10": { - "version": "0.2.27", - "integrity": "sha1-pLMACADumX+KNlpMFewcHl4T+Ts=", + "version": "0.2.31", + "integrity": "sha512-e2ZuXTValGE/yTTebuiUQIuNTxOXC3q94UjYpZnD5wMq8/LAOSfa5nwY8uxajbT5OBS4fm6hvhjTe5EXeZmOfw==", "license": "MIT", "dependencies": { "@pnpm/dependency-path-pnpm-v10": "npm:@pnpm/dependency-path@~1000.0.9", @@ -1665,8 +1676,8 @@ } }, "node_modules/@rushstack/rush-pnpm-kit-v8": { - "version": "0.2.27", - "integrity": "sha1-FTinB/FviIs75Ax5MaYrtIUvmcQ=", + "version": "0.2.31", + "integrity": "sha512-dyHkz88gnicA3iDumA1Or1keB9Hc5kfBPzWQh+QsfN3xRzh/cfdogO7pQyIYkBE3OoNnprWmhGsHQ5MYHSYyPw==", "license": "MIT", "dependencies": { "@pnpm/dependency-path-pnpm-v8": "npm:@pnpm/dependency-path@~2.1.8", @@ -1850,8 +1861,8 @@ } }, "node_modules/@rushstack/rush-pnpm-kit-v9": { - "version": "0.2.27", - "integrity": "sha1-fhj7kcyIN4Q8HrZriBTqXe3QTy4=", + "version": "0.2.31", + "integrity": "sha512-RXXO2uHU8g0nxrUzGFuH2BeWDFEJoznDVvmt5BjZxXHBDfdrU0zrIxOXwTwyyPuTluvcOCI95wBavxq3q/F0Ag==", "license": "MIT", "dependencies": { "@pnpm/dependency-path-pnpm-v9": "npm:@pnpm/dependency-path@~5.1.7", @@ -1863,8 +1874,8 @@ } }, "node_modules/@rushstack/rush-reporter": { - "version": "0.2.0", - "integrity": "sha1-l7qYfZnbGhbfeBXJt0Q3glYo9cY=", + "version": "0.4.1", + "integrity": "sha512-Go8OBCXquwSMgYCi1IZEPKYf+kkAU9oJTUVjygb1Hb3eDDIR7QY4wgib0dkqsPfF29+dkllZ3/F1JMDqPBGfnQ==", "license": "MIT", "dependencies": { "semver": "~7.7.4" @@ -1879,16 +1890,17 @@ } }, "node_modules/@rushstack/rush-sdk": { - "version": "5.179.0", - "integrity": "sha1-fJvXq9lFU0JOaMdXcBjNDyP5P/U=", + "version": "5.181.0", + "integrity": "sha512-8lqvE3+8C6I+xZUjo0Uw1QqhDORB6hFRf5gf2U8Rd0x/A2OkNnDadLsDQiljb5WXlb0QFEv2epHLC4d2S/VQ2A==", "license": "MIT", "dependencies": { "@pnpm/lockfile.types-900": "npm:@pnpm/lockfile.types@~900.0.0", - "@rushstack/credential-cache": "0.2.26", - "@rushstack/lookup-by-path": "0.10.15", - "@rushstack/node-core-library": "5.24.1", - "@rushstack/package-deps-hash": "4.7.28", - "@rushstack/terminal": "0.24.4", + "@rushstack/credential-cache": "0.2.30", + "@rushstack/lookup-by-path": "0.10.19", + "@rushstack/node-core-library": "5.25.1", + "@rushstack/package-deps-hash": "4.8.0", + "@rushstack/rush-reporter": "0.4.1", + "@rushstack/terminal": "0.24.7", "tapable": "2.2.1" }, "engines": { @@ -1896,23 +1908,23 @@ } }, "node_modules/@rushstack/stream-collator": { - "version": "4.2.26", - "integrity": "sha1-mPqatm6U01cvCgRiUUsts9GwcZk=", + "version": "4.2.30", + "integrity": "sha512-tGcIfmvA51wc7EvCXzfRoEEzX20lnBHFl23BXIIm3PQHwrM6NvizfTThVhRjVtOfWVllPbEsB1pWAqCEhgQU2A==", "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.24.1", - "@rushstack/terminal": "0.24.4" + "@rushstack/node-core-library": "5.25.1", + "@rushstack/terminal": "0.24.7" }, "engines": { "node": ">=20.9.0" } }, "node_modules/@rushstack/terminal": { - "version": "0.24.4", - "integrity": "sha1-xVWqe4Vu6wrSyQqmmC6/61irX6s=", + "version": "0.24.7", + "integrity": "sha512-o8J9nHOIwfYb0s0eG2WYhx7ed3YIvBXQHVFxYdXCmVdBOkTkdArJcgVzRS8ewUepmlic4nGgJPjKIVaNKSqEnA==", "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.24.1", + "@rushstack/node-core-library": "5.25.1", "@rushstack/problem-matcher": "0.2.1", "supports-color": "~8.1.1" }, @@ -1929,11 +1941,11 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "5.3.14", - "integrity": "sha1-hLd0oV8PTyv+fFfPUc2MtzHVUNg=", + "version": "5.3.17", + "integrity": "sha512-pIwhWawZXAT0nTXwvcE/InQ7uaVAgSeIzILMb2mBrI01Hz1yEvxrhV2+DE2Fzux8aZY9OJTdLsI+sk9kZDuAJw==", "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.24.4", + "@rushstack/terminal": "0.24.7", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" @@ -2029,7 +2041,6 @@ "version": "8.20.0", "integrity": "sha1-MEs2Nq3Yi6fZNnYN1Q7OAG3qlfk=", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -2128,8 +2139,8 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.9", - "integrity": "sha1-fHJDiAm1+lur9UGZofHCgaaYT88=", + "version": "5.0.12", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -2160,8 +2171,8 @@ "license": "MIT" }, "node_modules/bundle-name": { - "version": "4.1.0", - "integrity": "sha1-87lrNBYNZDGhnXaIE1r3z7h5eIk=", + "version": "4.1.1", + "integrity": "sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==", "license": "MIT", "dependencies": { "run-applescript": "^7.0.0" @@ -2483,8 +2494,8 @@ } }, "node_modules/fast-uri": { - "version": "3.1.7", - "integrity": "sha1-dDFX2Vfzy7TGUxDgM9wq1K19xgo=", + "version": "3.1.8", + "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==", "funding": [ { "type": "github", @@ -2521,8 +2532,8 @@ } }, "node_modules/fast-xml-parser": { - "version": "5.11.1", - "integrity": "sha1-DuZy/M4XEMOBhbgpDXfpiAb/C/s=", + "version": "5.11.2", + "integrity": "sha512-R9iDuNrQYeQut46cn2r2wHKn4HYzVDvDm5J1wW+koZewykv0yuO2HChTYeZtrULyHIDM9cj9TUXloCsueCQUog==", "funding": [ { "type": "github", @@ -2531,7 +2542,7 @@ ], "license": "MIT", "dependencies": { - "@nodable/entities": "^3.0.0", + "@nodable/entities": "^3.0.1", "fast-xml-builder": "^1.2.0", "is-unsafe": "^2.0.0", "path-expression-matcher": "^1.6.2", @@ -2650,8 +2661,8 @@ "license": "MIT" }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.1.4", - "integrity": "sha1-WJ2rEcABjQNmvmTNi/Esjb7MgyY=", + "version": "2.1.7", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -2771,8 +2782,8 @@ "license": "MIT" }, "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.1.4", - "integrity": "sha1-WJ2rEcABjQNmvmTNi/Esjb7MgyY=", + "version": "2.1.7", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -2835,11 +2846,11 @@ "license": "MIT" }, "node_modules/is-core-module": { - "version": "2.16.2", - "integrity": "sha1-PgdFCoCA684/vwysSU9NKrMk4II=", + "version": "2.17.0", + "integrity": "sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==", "license": "MIT", "dependencies": { - "hasown": "^2.0.3" + "hasown": "^2.0.4" }, "engines": { "node": ">= 0.4" @@ -2995,8 +3006,18 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.1", - "integrity": "sha1-hUwpJGdwW2mUduGi3swMijRYgGs=", + "version": "4.3.2", + "integrity": "sha1-jkT7FKJkPFlya7FXh7XxUSyz0/s=", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -3743,8 +3764,8 @@ "license": "MIT" }, "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "1.1.18", - "integrity": "sha1-POdNiYhRNr4VNTQfjD1EJcKaXKs=", + "version": "1.1.21", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -3930,8 +3951,8 @@ "license": "MIT" }, "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.18", - "integrity": "sha1-POdNiYhRNr4VNTQfjD1EJcKaXKs=", + "version": "1.1.21", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -4124,8 +4145,8 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.23", - "integrity": "sha1-sGnmh7EpGjLxJok+12onp0XuITM=", + "version": "3.0.24", + "integrity": "sha512-cLS9TtWkIQFyLkJ3/5aFQAOHOSKTlOs/7WDut/XPSdjom1fJhUdkepeJAKXa9Y05+FabHd0sti+Et559vDtkpQ==", "license": "CC0-1.0" }, "node_modules/split2": { @@ -4463,8 +4484,8 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.9.0", - "integrity": "sha1-eCdK/ZNZih391hMN9qVm3vy/mqQ=", + "version": "2.9.1", + "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==", "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/common/scripts/install-run-rush.js b/common/scripts/install-run-rush.js index d4545bd203..c76afb5640 100644 --- a/common/scripts/install-run-rush.js +++ b/common/scripts/install-run-rush.js @@ -16,6 +16,652 @@ /******/ "use strict"; /******/ var __webpack_modules__ = ({ +/***/ 27702 +/*!****************************************************************!*\ + !*** ./lib-intermediate-esm/logic/RushCommandLineConstants.js ***! + \****************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ NATIVE_RUSH_COMMANDS: () => (/* binding */ NATIVE_RUSH_COMMANDS) +/* harmony export */ }); +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. +const NATIVE_RUSH_COMMANDS = new Set([ + 'add', + 'alert', + 'bridge-package', + 'change', + 'check', + 'deploy', + 'init', + 'init-autoinstaller', + 'init-deploy', + 'init-subspace', + 'install', + 'install-autoinstaller', + 'link', + 'link-package', + 'list', + 'publish', + 'purge', + 'remove', + 'scan', + 'setup', + 'unlink', + 'update', + 'update-autoinstaller', + 'update-cloud-credentials', + 'upgrade-interactive', + 'version' +]); +//# sourceMappingURL=RushCommandLineConstants.js.map + +/***/ }, + +/***/ 924320 +/*!*****************************************************************!*\ + !*** ./lib-intermediate-esm/scripts/InstallRunRushBootstrap.js ***! + \*****************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ createInstallRunRushBootstrap: () => (/* binding */ createInstallRunRushBootstrap) +/* harmony export */ }); +/* harmony import */ var node_crypto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:crypto */ 977598); +/* harmony import */ var node_crypto__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_crypto__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:fs */ 973024); +/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node:os */ 848161); +/* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(node_os__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! node:path */ 176760); +/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(node_path__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _logic_RushCommandLineConstants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../logic/RushCommandLineConstants */ 27702); +/* harmony import */ var _generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./generated/BootstrapProtocol */ 207008); +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. +// IMPORTANT: This file is bundled into install-run-rush.js and must use only Node.js built-ins. + + + + + + +const TRUNCATION_NOTICE_RESERVE_BYTES = 512; +const BOOTSTRAP_HANDOFF_FILE_PREFIX = 'rush-reporter-bootstrap-'; +const BOOTSTRAP_HANDOFF_FILE_SUFFIX = '.ndjson'; +const SUPPORTED_REPORTERS = new Set([ + 'default', + 'ai', + 'json', + 'plaintext', + 'file', + 'legacy' +]); +const SUPPORTED_LOG_LEVELS = new Set(['quiet', 'normal', 'verbose', 'debug']); +function readFlagValues(argv, flag, strict) { + const result = []; + const prefix = `${flag}=`; + for (let index = 0; index < argv.length; index++) { + const argument = argv[index]; + if (argument === '--') { + break; + } + let value; + if (argument.startsWith(prefix)) { + value = argument.slice(prefix.length); + } + else if (argument === flag) { + value = argv[index + 1]; + if (!value || value.startsWith('-')) { + if (strict) { + throw new Error(`${flag} requires a value.`); + } + continue; + } + index++; + } + if (value !== undefined) { + if (!value) { + if (strict) { + throw new Error(`${flag} requires a value.`); + } + continue; + } + if (strict && result.length > 0) { + throw new Error(`${flag} may be specified only once.`); + } + result.push(value); + } + } + return result; +} +function readMultipleFlagValues(argv, flag) { + const result = []; + const prefix = `${flag}=`; + for (let index = 0; index < argv.length; index++) { + const argument = argv[index]; + if (argument === '--') { + break; + } + let value; + if (argument.startsWith(prefix)) { + value = argument.slice(prefix.length); + } + else if (argument === flag) { + value = argv[index + 1]; + if (!value || value.startsWith('-')) { + throw new Error(`${flag} requires a value.`); + } + index++; + } + if (value !== undefined) { + if (!value) { + throw new Error(`${flag} requires a value.`); + } + result.push(value); + } + } + return result; +} +function readBootstrapConfiguration(filePath) { + let contents; + try { + contents = node_fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(filePath, 'utf8'); + } + catch (error) { + if (error.code === 'ENOENT') { + return undefined; + } + throw error; + } + // Remove trailing commas only outside quoted strings, after stripping comments. + return JSON.parse(stripJsonComments(contents).replace(/("(?:\\.|[^"\\])*")|,\s*(?=[}\]])/g, (match, quoted) => (quoted === undefined ? '' : match))); +} +function ownsImplicitOutput(options) { + let actionName; + for (let index = 0; index < options.argv.length; index++) { + const argument = options.argv[index]; + if (argument === '--') + break; + if (argument === '--reporter' || argument === '--log-level' || argument === '--output') { + if (options.argv[index + 1] && !options.argv[index + 1].startsWith('-')) + index++; + } + else if (!argument.startsWith('-')) { + actionName = argument; + break; + } + } + if (!actionName) + return false; + if (_logic_RushCommandLineConstants__WEBPACK_IMPORTED_MODULE_4__.NATIVE_RUSH_COMMANDS.has(actionName)) + return true; + const configFolder = node_path__WEBPACK_IMPORTED_MODULE_3__.join(options.rushJsonFolder, 'common', 'config', 'rush'); + const plugins = readBootstrapConfiguration(node_path__WEBPACK_IMPORTED_MODULE_3__.join(configFolder, 'rush-plugins.json')); + if (plugins?.plugins?.length) + return false; + const commandLine = readBootstrapConfiguration(node_path__WEBPACK_IMPORTED_MODULE_3__.join(configFolder, 'command-line.json')); + const command = commandLine?.commands?.find((candidate) => candidate.name === actionName); + if (!command && actionName !== 'build' && actionName !== 'rebuild') + return false; + const usesBuildParameters = actionName === 'rebuild' && !command; + return !commandLine?.parameters?.some((parameter) => parameter.longName === '--output' && + (parameter.associatedCommands?.includes(actionName) || + (usesBuildParameters && parameter.associatedCommands?.includes('build')))); +} +function repositoryUsesRushReporter(rushJsonFolder) { + const experimentsPath = node_path__WEBPACK_IMPORTED_MODULE_3__.join(rushJsonFolder, 'common', 'config', 'rush', 'experiments.json'); + let contents; + try { + contents = node_fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(experimentsPath, 'utf8'); + } + catch (error) { + const code = error.code; + if (code === 'ENOENT') { + return false; + } + throw error; + } + const matches = [ + ...stripJsonComments(contents).matchAll(/"useRushReporter"\s*:\s*(true|false)/g) + ]; + return matches.length > 0 && matches[matches.length - 1][1] === 'true'; +} +function stripJsonComments(text) { + let result = ''; + let inString = false; + let escaped = false; + let lineComment = false; + let blockComment = false; + for (let index = 0; index < text.length; index++) { + const character = text[index]; + const nextCharacter = text[index + 1]; + if (lineComment) { + if (character === '\n' || character === '\r') { + lineComment = false; + result += character; + } + continue; + } + if (blockComment) { + if (character === '*' && nextCharacter === '/') { + blockComment = false; + index++; + } + else if (character === '\n' || character === '\r') { + result += character; + } + continue; + } + if (inString) { + result += character; + if (escaped) { + escaped = false; + } + else if (character === '\\') { + escaped = true; + } + else if (character === '"') { + inString = false; + } + continue; + } + if (character === '"') { + inString = true; + result += character; + } + else if (character === '/' && nextCharacter === '/') { + lineComment = true; + index++; + } + else if (character === '/' && nextCharacter === '*') { + blockComment = true; + index++; + } + else { + result += character; + } + } + return result; +} +function parseVersion(version) { + const match = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/.exec(version); + if (!match) { + return undefined; + } + return { + core: [Number(match[1]), Number(match[2]), Number(match[3])], + prerelease: match[4]?.split('.') + }; +} +function comparePrerelease(left, right) { + if (!left) { + return right ? 1 : 0; + } + if (!right) { + return -1; + } + const length = Math.max(left.length, right.length); + for (let index = 0; index < length; index++) { + const leftPart = left[index]; + const rightPart = right[index]; + if (leftPart === undefined) { + return -1; + } + if (rightPart === undefined) { + return 1; + } + if (leftPart === rightPart) { + continue; + } + const leftNumeric = /^\d+$/.test(leftPart); + const rightNumeric = /^\d+$/.test(rightPart); + if (leftNumeric && rightNumeric) { + return Number(leftPart) - Number(rightPart); + } + if (leftNumeric !== rightNumeric) { + return leftNumeric ? -1 : 1; + } + return leftPart < rightPart ? -1 : 1; + } + return 0; +} +function supportsBootstrapHandoff(rushVersion, bootstrapVersion) { + const rush = parseVersion(rushVersion); + const bootstrap = parseVersion(bootstrapVersion); + if (!rush || !bootstrap) { + return false; + } + for (let index = 0; index < rush.core.length; index++) { + if (rush.core[index] !== bootstrap.core[index]) { + return rush.core[index] > bootstrap.core[index]; + } + } + return comparePrerelease(rush.prerelease, bootstrap.prerelease) >= 0; +} +function* chunkUtf8Text(text, maxChunkBytes) { + let chunkStart = 0; + let chunkBytes = 0; + let offset = 0; + while (offset < text.length) { + const codePoint = text.codePointAt(offset); + const codeUnits = codePoint > 0xffff ? 2 : 1; + const codePointBytes = codePoint <= 0x7f ? 1 : codePoint <= 0x7ff ? 2 : codePoint <= 0xffff ? 3 : 4; + if (chunkBytes > 0 && chunkBytes + codePointBytes > maxChunkBytes) { + yield text.slice(chunkStart, offset); + chunkStart = offset; + chunkBytes = 0; + } + chunkBytes += codePointBytes; + offset += codeUnits; + } + if (chunkStart < text.length) { + yield text.slice(chunkStart); + } +} +class InstallRunRushBootstrap { + enabled = true; + logger; + externalOutputCaptureMaxBytes; + externalOutputHandler; + externalOutputLiveStreams; + externalOutputOverflowHandler; + prepareToRun; + _entries; + _env; + _stdout; + _stderr; + _handoffDirectory; + _maxBytes; + _now; + _randomUUID; + _sessionId; + _sourceVersion; + _entryLimit; + _fallbackStdoutStream; + _usedBytes; + _nextSequence; + _nextEventNumber; + _droppedReplaceable; + _droppedRequired; + _failureFlushed; + constructor(options, liveStdout) { + this._entries = []; + this._env = options.env; + this._stdout = options.stdout ?? ((text) => process.stdout.write(text)); + this._stderr = options.stderr ?? ((text) => process.stderr.write(text)); + this._handoffDirectory = options.handoffDirectory ?? node_os__WEBPACK_IMPORTED_MODULE_2__.tmpdir(); + this._maxBytes = options.maxBytes ?? _generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__.BOOTSTRAP_BUFFER_MAX_BYTES; + this._now = options.now ?? (() => new Date().toISOString()); + this._randomUUID = options.randomUUID ?? (() => node_crypto__WEBPACK_IMPORTED_MODULE_0__.randomUUID()); + this._sessionId = `rush_bootstrap_${process.pid}_${this._randomUUID()}`; + this._sourceVersion = options.bootstrapVersion; + this._entryLimit = this._maxBytes - TRUNCATION_NOTICE_RESERVE_BYTES; + this._fallbackStdoutStream = liveStdout ? 'stdout' : 'stderr'; + if (this._entryLimit <= 0) { + throw new RangeError(`maxBytes must be greater than ${TRUNCATION_NOTICE_RESERVE_BYTES}.`); + } + this._usedBytes = 0; + this._nextSequence = 1; + this._nextEventNumber = 1; + this._droppedReplaceable = 0; + this._droppedRequired = 0; + this._failureFlushed = false; + this.externalOutputCaptureMaxBytes = this._maxBytes; + this.externalOutputLiveStreams = { stdout: liveStdout, stderr: true }; + this._addEvent({ + type: 'sessionStarted', + privacy: 'public', + payload: { rushVersion: options.rushVersion } + }); + this.logger = { + info: (text, privacy = 'public') => { + this._addEvent({ + type: 'activityChanged', + privacy, + payload: { kind: 'bootstrap', text } + }, { stream: this._fallbackStdoutStream, text: `${text}\n` }); + }, + error: (text) => { + const droppedRequiredBefore = this._droppedRequired; + this._addExternalOutput('stderr', `${text}\n`, false); + this._flushFailureOutput(); + if (this._droppedRequired > droppedRequiredBefore) { + this._stderr(`${text}\n`); + } + }, + warning: (text) => { + this._stderr(`${text}\n`); + } + }; + this.externalOutputHandler = (stream, text, wasRendered) => { + this._addExternalOutput(stream, text, wasRendered); + }; + this.externalOutputOverflowHandler = () => { + this._droppedRequired++; + }; + this.prepareToRun = () => { + this._writeHandoff(); + }; + } + _addEvent(event, fallbackWrite) { + const required = event.type !== 'activityChanged'; + const line = (0,_generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__.encodeBootstrapEnvelope)({ + eventId: `boot_${this._nextEventNumber++}`, + sessionId: this._sessionId, + sequence: this._nextSequence++, + timestamp: this._now(), + source: { packageName: 'install-run-rush', packageVersion: this._sourceVersion }, + privacy: event.privacy, + required, + type: event.type, + payload: event.payload + }); + const bytes = Buffer.byteLength(line, 'utf8') + 1; + if (this._usedBytes + bytes <= this._entryLimit) { + this._entries.push({ line, bytes, required, fallbackWrite }); + this._usedBytes += bytes; + return; + } + if (!required) { + this._droppedReplaceable++; + return; + } + for (let index = 0; this._usedBytes + bytes > this._entryLimit && index < this._entries.length;) { + const entry = this._entries[index]; + if (entry.required) { + index++; + } + else { + this._entries.splice(index, 1); + this._usedBytes -= entry.bytes; + this._droppedReplaceable++; + } + } + if (this._usedBytes + bytes <= this._entryLimit) { + this._entries.push({ line, bytes, required, fallbackWrite }); + this._usedBytes += bytes; + } + else { + this._droppedRequired++; + } + } + _addExternalOutput(stream, text, wasRendered) { + if (!text) { + return; + } + for (const chunk of chunkUtf8Text(text, _generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__.BOOTSTRAP_EXTERNAL_CHUNK_MAX_BYTES)) { + this._addEvent({ + type: 'externalOutput', + privacy: 'local-sensitive', + payload: { stream, text: chunk, ...(wasRendered ? { wasRendered: true } : {}) } + }, wasRendered + ? undefined + : { stream: stream === 'stdout' ? this._fallbackStdoutStream : stream, text: chunk }); + } + } + _flushFailureOutput() { + if (this._failureFlushed) { + return; + } + this._failureFlushed = true; + for (const entry of this._entries) { + const write = entry.fallbackWrite; + if (write) { + (write.stream === 'stdout' ? this._stdout : this._stderr)(write.text); + } + } + } + _writeHandoff() { + const serialized = this._serializeEvents(); + const nonce = this._randomUUID(); + const fileName = `${BOOTSTRAP_HANDOFF_FILE_PREFIX}${process.pid}-${nonce}${BOOTSTRAP_HANDOFF_FILE_SUFFIX}`; + const handoffPath = node_path__WEBPACK_IMPORTED_MODULE_3__.join(this._handoffDirectory, fileName); + node_fs__WEBPACK_IMPORTED_MODULE_1__.mkdirSync(this._handoffDirectory, { recursive: true }); + node_fs__WEBPACK_IMPORTED_MODULE_1__.writeFileSync(handoffPath, `${JSON.stringify({ kind: 'bootstrapHandoff', nonce })}\n${serialized}`, { + encoding: 'utf8', + mode: 0o600, + flag: 'wx' + }); + if (process.platform !== 'win32') { + node_fs__WEBPACK_IMPORTED_MODULE_1__.chmodSync(handoffPath, 0o600); + } + this._env[_generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__.RUSH_REPORTER_BOOTSTRAP_HANDOFF_ENV_VAR] = handoffPath; + this._env[_generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__.RUSH_REPORTER_BOOTSTRAP_NONCE_ENV_VAR] = nonce; + } + _serializeEvents() { + const truncated = this._droppedReplaceable + this._droppedRequired > 0; + if (truncated) { + const notice = (0,_generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__.encodeBootstrapEnvelope)({ + eventId: 'boot_bufferTruncated', + sessionId: this._sessionId, + sequence: this._nextSequence++, + timestamp: this._now(), + source: { packageName: 'install-run-rush', packageVersion: this._sourceVersion }, + privacy: 'public', + required: true, + type: 'extension', + payload: { + name: _generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__.BOOTSTRAP_BUFFER_TRUNCATED_EXTENSION_NAME, + droppedReplaceable: this._droppedReplaceable, + droppedOther: 0, + droppedRequired: this._droppedRequired, + failed: this._droppedRequired > 0 + } + }); + if (Buffer.byteLength(notice, 'utf8') + 1 > TRUNCATION_NOTICE_RESERVE_BYTES) { + throw new Error('The bootstrap truncation notice exceeded its reserved capacity.'); + } + this._entries.push({ + line: notice, + bytes: Buffer.byteLength(notice, 'utf8') + 1, + required: true + }); + } + if (this._droppedRequired > 0) { + throw new Error(`The Rush reporter bootstrap buffer exceeded ${this._maxBytes} bytes and could not preserve ` + + `${this._droppedRequired} required event(s).`); + } + return this._entries.length > 0 + ? `${this._entries.map((entry) => entry.line).join('\n')}\n` + : ''; + } +} +function createLegacyBootstrap(options) { + const stdout = options.stdout ?? ((text) => process.stdout.write(text)); + const stderr = options.stderr ?? ((text) => process.stderr.write(text)); + const warning = (text) => stderr(`${text}\n`); + return { + enabled: false, + // Legacy mode cannot create npm captures because it exposes no external output handler. + // Keep warning routing available so future diagnostic finalization remains stderr-only. + logger: options.quiet + ? { info: () => { }, error: (text) => stderr(`${text}\n`), warning } + : { + info: (text) => stdout(`${text}\n`), + error: (text) => stderr(`${text}\n`), + warning + }, + externalOutputHandler: undefined, + externalOutputCaptureMaxBytes: undefined, + externalOutputLiveStreams: undefined, + externalOutputOverflowHandler: undefined, + prepareToRun: undefined + }; +} +function createInstallRunRushBootstrap(options) { + if (_generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__.BOOTSTRAP_PROTOCOL_MAJOR < 1) { + throw new Error('The generated Rush reporter bootstrap protocol is invalid.'); + } + delete options.env[_generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__.RUSH_REPORTER_BOOTSTRAP_HANDOFF_ENV_VAR]; + delete options.env[_generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_5__.RUSH_REPORTER_BOOTSTRAP_NONCE_ENV_VAR]; + if (options.commandName !== 'rush') { + return createLegacyBootstrap(options); + } + const environmentReporter = options.env.RUSH_REPORTER?.trim().toLowerCase(); + if (environmentReporter === 'legacy') { + return createLegacyBootstrap(options); + } + const repositoryOptIn = repositoryUsesRushReporter(options.rushJsonFolder); + const reporterControlsOwned = repositoryOptIn || + readFlagValues(options.argv, '--reporter', false).some((value) => SUPPORTED_REPORTERS.has(value)); + if (!reporterControlsOwned) { + return createLegacyBootstrap(options); + } + const explicitReporter = readFlagValues(options.argv, '--reporter', true)[0]; + if (explicitReporter !== undefined && !SUPPORTED_REPORTERS.has(explicitReporter)) { + throw new Error(`Unsupported reporter ${JSON.stringify(explicitReporter)}. ` + + 'Supported values are default, ai, json, plaintext, file, and legacy.'); + } + if (explicitReporter === 'legacy') { + return createLegacyBootstrap(options); + } + const logLevelProbe = readFlagValues(options.argv, '--log-level', false); + const logLevelOwned = explicitReporter !== undefined || + (logLevelProbe.length > 0 && logLevelProbe.every((value) => SUPPORTED_LOG_LEVELS.has(value))); + const explicitLogLevel = logLevelOwned + ? readFlagValues(options.argv, '--log-level', true)[0] + : undefined; + if (explicitLogLevel !== undefined && !SUPPORTED_LOG_LEVELS.has(explicitLogLevel)) { + throw new Error(`Unsupported log level ${JSON.stringify(explicitLogLevel)}. ` + + 'Supported values are quiet, normal, verbose, and debug.'); + } + const explicitOptIn = explicitReporter !== undefined; + if (!supportsBootstrapHandoff(options.rushVersion, options.bootstrapVersion)) { + if (explicitOptIn) { + throw new Error(`Rush version ${options.rushVersion} does not support the reporter bootstrap requested by ` + + `${JSON.stringify(`--reporter=${explicitReporter}`)}. Update the repository Rush version or ` + + 'use --reporter=legacy.'); + } + return createLegacyBootstrap(options); + } + const separatorIndex = options.argv.indexOf('--'); + const commandArgs = separatorIndex < 0 ? options.argv : options.argv.slice(0, separatorIndex); + const isHelp = commandArgs.includes('--help') || commandArgs.includes('-h'); + const outputs = !isHelp && (explicitOptIn || ownsImplicitOutput(options)) + ? readMultipleFlagValues(options.argv, '--output') + : []; + const outputOwnsStdout = outputs.some((output) => { + const match = /^([a-z][a-z0-9]*):\/\/(.*)$/i.exec(output); + if (!match) { + throw new Error(`Invalid --output control: ${JSON.stringify(output)}`); + } + return match[2].split('?', 1)[0] === 'stdout'; + }); + const stdoutReserved = explicitReporter === 'json' || + explicitReporter === 'ai' || + explicitReporter === 'file' || + commandArgs.includes('--json') || + outputOwnsStdout; + return new InstallRunRushBootstrap(options, !stdoutReserved); +} +//# sourceMappingURL=InstallRunRushBootstrap.js.map + +/***/ }, + /***/ 207008 /*!*********************************************************************!*\ !*** ./lib-intermediate-esm/scripts/generated/BootstrapProtocol.js ***! @@ -24,7 +670,12 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ BOOTSTRAP_BUFFER_MAX_BYTES: () => (/* binding */ BOOTSTRAP_BUFFER_MAX_BYTES), +/* harmony export */ BOOTSTRAP_BUFFER_TRUNCATED_EXTENSION_NAME: () => (/* binding */ BOOTSTRAP_BUFFER_TRUNCATED_EXTENSION_NAME), +/* harmony export */ BOOTSTRAP_EXTERNAL_CHUNK_MAX_BYTES: () => (/* binding */ BOOTSTRAP_EXTERNAL_CHUNK_MAX_BYTES), /* harmony export */ BOOTSTRAP_PROTOCOL_MAJOR: () => (/* binding */ BOOTSTRAP_PROTOCOL_MAJOR), +/* harmony export */ RUSH_REPORTER_BOOTSTRAP_HANDOFF_ENV_VAR: () => (/* binding */ RUSH_REPORTER_BOOTSTRAP_HANDOFF_ENV_VAR), +/* harmony export */ RUSH_REPORTER_BOOTSTRAP_NONCE_ENV_VAR: () => (/* binding */ RUSH_REPORTER_BOOTSTRAP_NONCE_ENV_VAR), /* harmony export */ encodeBootstrapEnvelope: () => (/* binding */ encodeBootstrapEnvelope) /* harmony export */ }); // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. @@ -62,10 +713,57 @@ function encodeBootstrapEnvelope(input) { payload: input.payload === undefined ? {} : input.payload }); } +/** + * The maximum size of the buffered bootstrap event stream, in bytes (1 MiB). + * + * @beta + */ +const BOOTSTRAP_BUFFER_MAX_BYTES = 1024 * 1024; +/** + * The maximum size of a single raw external-output chunk, in bytes (64 KiB). + * + * @beta + */ +const BOOTSTRAP_EXTERNAL_CHUNK_MAX_BYTES = 64 * 1024; +/** + * The private environment variable used to hand the bootstrap NDJSON file path + * to the installed frontend. + * + * @beta + */ +const RUSH_REPORTER_BOOTSTRAP_HANDOFF_ENV_VAR = '_RUSH_REPORTER_BOOTSTRAP_HANDOFF'; +/** + * The private environment variable carrying the one-time nonce that must match + * the handoff file's header line. + * + * @remarks + * The nonce proves the handoff file was written by the same bootstrap process + * that set the environment variable: a stale or foreign handoff file (same + * temp directory, different invocation) is rejected rather than replayed. + * + * @beta + */ +const RUSH_REPORTER_BOOTSTRAP_NONCE_ENV_VAR = '_RUSH_REPORTER_BOOTSTRAP_NONCE'; +/** + * The namespaced extension event name that describes bootstrap buffer truncation. + * + * @beta + */ +const BOOTSTRAP_BUFFER_TRUNCATED_EXTENSION_NAME = 'rush.reporter.buffer-truncated'; //# sourceMappingURL=BootstrapProtocol.js.map /***/ }, +/***/ 977598 +/*!******************************!*\ + !*** external "node:crypto" ***! + \******************************/ +(module) { + +module.exports = require("node:crypto"); + +/***/ }, + /***/ 973024 /*!**************************!*\ !*** external "node:fs" ***! @@ -76,6 +774,16 @@ module.exports = require("node:fs"); /***/ }, +/***/ 848161 +/*!**************************!*\ + !*** external "node:os" ***! + \**************************/ +(module) { + +module.exports = require("node:os"); + +/***/ }, + /***/ 176760 /*!****************************!*\ !*** external "node:path" ***! @@ -171,28 +879,32 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_path__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:fs */ 973024); /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./generated/BootstrapProtocol */ 207008); +/* harmony import */ var _InstallRunRushBootstrap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./InstallRunRushBootstrap */ 924320); +/* harmony import */ var _generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./generated/BootstrapProtocol */ 207008); // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. // See LICENSE in the project root for license information. /* eslint-disable no-console */ -const { installAndRun, findRushJsonFolder, RUSH_JSON_FILENAME, runWithErrorAndStatusCode } = require('./install-run'); + +const { installAndRun, findRushJsonFolder, RUSH_JSON_FILENAME } = require('./install-run'); const PACKAGE_NAME = '@microsoft/rush'; const RUSH_PREVIEW_VERSION = 'RUSH_PREVIEW_VERSION'; const RUSH_QUIET_MODE = 'RUSH_QUIET_MODE'; const INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE = 'INSTALL_RUN_RUSH_LOCKFILE_PATH'; function _validateBundledBootstrapProtocol() { - if (_generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_2__.BOOTSTRAP_PROTOCOL_MAJOR < 1 || typeof _generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_2__.encodeBootstrapEnvelope !== 'function') { + if (_generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_3__.BOOTSTRAP_PROTOCOL_MAJOR < 1 || typeof _generated_BootstrapProtocol__WEBPACK_IMPORTED_MODULE_3__.encodeBootstrapEnvelope !== 'function') { throw new Error('The bundled Rush reporter bootstrap protocol is invalid.'); } } -function _getRushVersion(logger) { +function _getRushVersion() { const rushPreviewVersion = process.env[RUSH_PREVIEW_VERSION]; if (rushPreviewVersion !== undefined) { - logger.info(`Using Rush version from environment variable ${RUSH_PREVIEW_VERSION}=${rushPreviewVersion}`); - return rushPreviewVersion; + return { + version: rushPreviewVersion, + sourceMessage: `Using Rush version from environment variable ${RUSH_PREVIEW_VERSION}=${rushPreviewVersion}` + }; } const rushJsonFolder = findRushJsonFolder(); const rushJsonPath = node_path__WEBPACK_IMPORTED_MODULE_0__.join(rushJsonFolder, RUSH_JSON_FILENAME); @@ -201,7 +913,7 @@ function _getRushVersion(logger) { // Use a regular expression to parse out the rushVersion value because rush.json supports comments, // but JSON.parse does not and we don't want to pull in more dependencies than we need to in this script. const rushJsonMatches = rushJsonContents.match(/\"rushVersion\"\s*\:\s*\"([0-9a-zA-Z.+\-]+)\"/); - return rushJsonMatches[1]; + return { version: rushJsonMatches[1] }; } catch (e) { throw new Error(`Unable to determine the required version of Rush from ${RUSH_JSON_FILENAME} (${rushJsonFolder}). ` + @@ -220,7 +932,6 @@ function _getBin(scriptName) { } } function _run() { - _validateBundledBootstrapProtocol(); const [nodePath /* Ex: /bin/node */, scriptPath /* /repo/common/scripts/install-run-rush.js */, ...packageBinArgs /* [build, --to, myproject] */] = process.argv; // Detect if this script was directly invoked, or if the install-run-rushx script was invokved to select the // appropriate binary inside the rush package to run @@ -233,7 +944,10 @@ function _run() { const quietModeEnvValue = process.env[RUSH_QUIET_MODE]; let quiet = quietModeEnvValue === '1' || quietModeEnvValue === 'true'; for (const arg of packageBinArgs) { - if (arg === '-q' || arg === '--quiet') { + if (arg === '--') { + break; + } + else if (arg === '-q' || arg === '--quiet') { // The -q/--quiet flag is supported by both `rush` and `rushx`, and will suppress // any normal informational/diagnostic information printed during startup. // @@ -261,18 +975,48 @@ function _run() { } process.exit(1); } - const logger = quiet - ? { info: () => { }, error: console.error } - : { info: console.log, error: console.error }; - runWithErrorAndStatusCode(logger, () => { - const version = _getRushVersion(logger); - logger.info(`The ${RUSH_JSON_FILENAME} configuration requests Rush version ${version}`); + let bootstrap; + process.exitCode = 1; + try { + _validateBundledBootstrapProtocol(); + const rushJsonFolder = findRushJsonFolder(); + const rushVersion = _getRushVersion(); + bootstrap = (0,_InstallRunRushBootstrap__WEBPACK_IMPORTED_MODULE_2__.createInstallRunRushBootstrap)({ + argv: packageBinArgs, + env: process.env, + rushJsonFolder, + rushVersion: rushVersion.version, + bootstrapVersion: "5.180.0", + commandName: bin, + quiet + }); + const logger = bootstrap.logger; + if (rushVersion.sourceMessage) { + logger.info(rushVersion.sourceMessage); + } + logger.info(`The ${RUSH_JSON_FILENAME} configuration requests Rush version ${rushVersion.version}`); const lockFilePath = process.env[INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE]; if (lockFilePath) { - logger.info(`Found ${INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE}="${lockFilePath}", installing with lockfile.`); + logger.info(`Found ${INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE}="${lockFilePath}", installing with lockfile.`, 'local-sensitive'); } - return installAndRun(logger, PACKAGE_NAME, version, bin, packageBinArgs, lockFilePath); - }); + process.exitCode = installAndRun(logger, PACKAGE_NAME, rushVersion.version, bin, packageBinArgs, lockFilePath, { + onExternalOutput: bootstrap.externalOutputHandler, + onExternalOutputOverflow: bootstrap.externalOutputOverflowHandler, + externalOutputCaptureMaxBytes: bootstrap.externalOutputCaptureMaxBytes, + externalOutputLiveStreams: bootstrap.externalOutputLiveStreams, + prepareToRun: bootstrap.prepareToRun + }); + } + catch (error) { + const logger = bootstrap?.logger ?? + (quiet + ? { info: () => { }, error: (text) => console.error(text) } + : { + info: (text) => console.log(text), + error: (text) => console.error(text) + }); + logger.error(`\n\n${String(error)}\n`); + } } _run(); //# sourceMappingURL=install-run-rush.js.map diff --git a/common/scripts/install-run.js b/common/scripts/install-run.js index ec8851f5dc..eb0780b88f 100644 --- a/common/scripts/install-run.js +++ b/common/scripts/install-run.js @@ -25,11 +25,43 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ IS_WINDOWS: () => (/* binding */ IS_WINDOWS), -/* harmony export */ escapeArgumentIfNeeded: () => (/* binding */ escapeArgumentIfNeeded) +/* harmony export */ escapeArgumentIfNeeded: () => (/* binding */ escapeArgumentIfNeeded), +/* harmony export */ quoteShellArgumentIfNeeded: () => (/* binding */ quoteShellArgumentIfNeeded) /* harmony export */ }); // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. // See LICENSE in the project root for license information. const IS_WINDOWS = process.platform === 'win32'; +// The characters that Python's shlex.quote() leaves unquoted. +const POSIX_SAFE_ARGUMENT_REGEXP = /^[A-Za-z0-9_@%+=:,./-]+$/; +// Whitespace, and the characters that cmd.exe or the MSVC argument parser treat specially. +const WINDOWS_UNSAFE_ARGUMENT_REGEXP = /[\s"&|<>()^]/; +// A run of backslashes, followed by a double quote or the end of the value. +const WINDOWS_BACKSLASHES_BEFORE_QUOTE_REGEXP = /(\\*)("|$)/g; +/** + * Quotes an argument so that the shell that runs a lifecycle command (`sh -c` on POSIX, + * `cmd.exe /d /s /c` on Windows) passes it to the command as one literal argument. + * An argument that needs no quoting is returned unchanged. + * + * @remarks + * On Windows, the argument is wrapped in double quotes. An embedded double quote is written as `""`, + * which keeps cmd.exe's quote state in step with the argument parser's, and the backslashes before it, + * or before the closing quote, are doubled. cmd.exe still expands `%NAME%` inside double quotes. + */ +function quoteShellArgumentIfNeeded(argument, isWindows = IS_WINDOWS) { + if (isWindows) { + if (argument && !WINDOWS_UNSAFE_ARGUMENT_REGEXP.test(argument)) { + return argument; + } + const escapedArgument = argument.replace(WINDOWS_BACKSLASHES_BEFORE_QUOTE_REGEXP, (match, backslashes, quote) => `${backslashes}${backslashes}${quote ? '""' : ''}`); + return `"${escapedArgument}"`; + } + else { + if (POSIX_SAFE_ARGUMENT_REGEXP.test(argument)) { + return argument; + } + return `'${argument.replace(/'/g, `'\\''`)}'`; + } +} function escapeArgumentIfNeeded(command, isWindows = IS_WINDOWS) { if (command.includes(' ')) { if (isWindows) { @@ -452,8 +484,8 @@ function trimNpmrcFileLines(npmrcFileLines, env, supportEnvVarFallbackSyntax, fi } function _copyAndTrimNpmrcFile(options) { const { logger, sourceNpmrcPath, targetNpmrcPath } = options; - logger.info(`Transforming ${sourceNpmrcPath}`); // Verbose - logger.info(` --> "${targetNpmrcPath}"`); + logger.info(`Transforming ${sourceNpmrcPath}`, 'local-sensitive'); // Verbose + logger.info(` --> "${targetNpmrcPath}"`, 'local-sensitive'); const combinedNpmrc = _trimNpmrcFile(options); node_fs__WEBPACK_IMPORTED_MODULE_0__.writeFileSync(targetNpmrcPath, combinedNpmrc); return combinedNpmrc; @@ -461,9 +493,9 @@ function _copyAndTrimNpmrcFile(options) { function syncNpmrc(options) { const { sourceNpmrcFolder, targetNpmrcFolder, useNpmrcPublish, logger = { // eslint-disable-next-line no-console - info: console.log, + info: (text) => console.log(text), // eslint-disable-next-line no-console - error: console.error + error: (text) => console.error(text) }, createIfMissing = false } = options; const sourceNpmrcPath = node_path__WEBPACK_IMPORTED_MODULE_1__.join(sourceNpmrcFolder, !useNpmrcPublish ? '.npmrc' : '.npmrc-publish'); const targetNpmrcPath = node_path__WEBPACK_IMPORTED_MODULE_1__.join(targetNpmrcFolder, '.npmrc'); @@ -482,7 +514,7 @@ function syncNpmrc(options) { } else if (node_fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(targetNpmrcPath)) { // If the source .npmrc doesn't exist and there is one in the target, delete the one in the target - logger.info(`Deleting ${targetNpmrcPath}`); // Verbose + logger.info(`Deleting ${targetNpmrcPath}`, 'local-sensitive'); // Verbose node_fs__WEBPACK_IMPORTED_MODULE_0__.unlinkSync(targetNpmrcPath); } } @@ -585,6 +617,16 @@ module.exports = require("node:os"); module.exports = require("node:path"); +/***/ }, + +/***/ 446193 +/*!**************************************!*\ + !*** external "node:string_decoder" ***! + \**************************************/ +(module) { + +module.exports = require("node:string_decoder"); + /***/ } /******/ }); @@ -669,7 +711,9 @@ var __webpack_exports__ = {}; \*****************************************************/ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ NPM_OUTPUT_CAPTURE_SCRIPT: () => (/* binding */ NPM_OUTPUT_CAPTURE_SCRIPT), /* harmony export */ RUSH_JSON_FILENAME: () => (/* binding */ RUSH_JSON_FILENAME), +/* harmony export */ finalizeCapturedNpmOutput: () => (/* binding */ finalizeCapturedNpmOutput), /* harmony export */ findRushJsonFolder: () => (/* binding */ findRushJsonFolder), /* harmony export */ getNpmPath: () => (/* binding */ getNpmPath), /* harmony export */ installAndRun: () => (/* binding */ installAndRun), @@ -683,8 +727,10 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(node_os__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! node:path */ 176760); /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(node_path__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utilities/npmrcUtilities */ 359480); -/* harmony import */ var _utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utilities/executionUtilities */ 953844); +/* harmony import */ var node_string_decoder__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! node:string_decoder */ 446193); +/* harmony import */ var node_string_decoder__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(node_string_decoder__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utilities/npmrcUtilities */ 359480); +/* harmony import */ var _utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utilities/executionUtilities */ 953844); // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. // See LICENSE in the project root for license information. /* eslint-disable no-console */ @@ -694,12 +740,76 @@ __webpack_require__.r(__webpack_exports__); + const RUSH_JSON_FILENAME = 'rush.json'; const RUSH_TEMP_FOLDER_ENV_VARIABLE_NAME = 'RUSH_TEMP_FOLDER'; const INSTALL_RUN_LOCKFILE_PATH_VARIABLE = 'INSTALL_RUN_LOCKFILE_PATH'; const INSTALLED_FLAG_FILENAME = 'installed.flag'; const NODE_MODULES_FOLDER_NAME = 'node_modules'; const PACKAGE_JSON_FILENAME = 'package.json'; +let _externalOutputCaptureId = 0; +const NPM_OUTPUT_CAPTURE_SCRIPT = ` +const childProcess = require('node:child_process'); +const fs = require('node:fs'); +const { StringDecoder } = require('node:string_decoder'); +const [ + command, + argsJson, + capturePath, + useShell, + maxBytesText, + renderStdoutText, + renderStderrText +] = process.argv.slice(1); +const child = childProcess.spawn(command, JSON.parse(argsJson), { + cwd: process.cwd(), + env: process.env, + shell: useShell === '1', + windowsVerbatimArguments: false, + stdio: ['inherit', 'pipe', 'pipe'] +}); +const decoders = { stdout: new StringDecoder('utf8'), stderr: new StringDecoder('utf8') }; +const maxBytes = Number(maxBytesText); +let capturedBytes = 0; +let overflowed = false; +const renderedStreams = { stdout: renderStdoutText === '1', stderr: renderStderrText === '1' }; +function capture(stream, text) { + if (!text || overflowed) { + return; + } + const record = JSON.stringify({ stream, text, wasRendered: renderedStreams[stream] }) + '\\n'; + const recordBytes = Buffer.byteLength(record); + if (capturedBytes + recordBytes <= maxBytes) { + fs.appendFileSync(capturePath, record); + capturedBytes += recordBytes; + } else { + overflowed = true; + fs.appendFileSync(capturePath, JSON.stringify({ overflow: true }) + '\\n'); + } +} +function forwardAndCapture(stream, chunk) { + if (renderedStreams[stream]) { + (stream === 'stdout' ? process.stdout : process.stderr).write(chunk); + } + capture(stream, decoders[stream].write(chunk)); +} +child.stdout.on('data', (chunk) => forwardAndCapture('stdout', chunk)); +child.stderr.on('data', (chunk) => forwardAndCapture('stderr', chunk)); +child.on('error', (error) => { + process.stderr.write(String(error) + '\\n'); + process.exitCode = 1; +}); +child.on('close', (code, signal) => { + capture('stdout', decoders.stdout.end()); + capture('stderr', decoders.stderr.end()); + if (signal) { + process.stderr.write('npm was terminated by signal: ' + signal + '\\n'); + process.exitCode = 1; + } else { + process.exitCode = code === null ? 1 : code; + } +}); +`; /** * Parse a package specifier (in the form of name\@version) into name and version parts. */ @@ -732,7 +842,7 @@ let _npmPath = undefined; function getNpmPath() { if (!_npmPath) { try { - if (_utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_5__.IS_WINDOWS) { + if (_utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_6__.IS_WINDOWS) { // We're on Windows const whereOutput = node_child_process__WEBPACK_IMPORTED_MODULE_0__.execSync('where npm', { stdio: [] }).toString(); const lines = whereOutput.split(node_os__WEBPACK_IMPORTED_MODULE_2__.EOL).filter((line) => !!line); @@ -828,7 +938,7 @@ function _resolvePackageVersion(logger, rushCommonFolder, { name, version }) { try { const rushTempFolder = _getRushTempFolder(rushCommonFolder); const sourceNpmrcFolder = node_path__WEBPACK_IMPORTED_MODULE_3__.join(rushCommonFolder, 'config', 'rush'); - (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)({ + (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_5__.syncNpmrc)({ sourceNpmrcFolder, targetNpmrcFolder: rushTempFolder, logger, @@ -984,31 +1094,140 @@ function _createPackageJson(packageInstallFolder, name, version) { /** * Run "npm install" in the package install folder. */ -function _installPackage(logger, packageInstallFolder, name, version, npmCommand) { +function _installPackage(logger, packageInstallFolder, name, version, npmCommand, onExternalOutput, onExternalOutputOverflow, externalOutputCaptureMaxBytes, externalOutputLiveStreams) { + let capturePath; try { logger.info(`Installing ${name}...`); - _runNpmConfirmSuccess([npmCommand], { - stdio: 'inherit', - cwd: packageInstallFolder, - env: process.env - }, `npm ${npmCommand}`); - logger.info(`Successfully installed ${name}@${version}`); + if (onExternalOutput) { + capturePath = node_path__WEBPACK_IMPORTED_MODULE_3__.join(packageInstallFolder, `.install-run-output-${process.pid}-${_externalOutputCaptureId++}.log`); + node_fs__WEBPACK_IMPORTED_MODULE_1__.closeSync(node_fs__WEBPACK_IMPORTED_MODULE_1__.openSync(capturePath, 'wx', 0o600)); + } + if (capturePath) { + _runNpmWithCaptureConfirmSuccess([npmCommand], { + stdio: 'inherit', + cwd: packageInstallFolder, + env: process.env + }, capturePath, externalOutputCaptureMaxBytes ?? 1024 * 1024, externalOutputLiveStreams ?? { stdout: true, stderr: true }, `npm ${npmCommand}`); + } + else { + _runNpmConfirmSuccess([npmCommand], { + stdio: 'inherit', + cwd: packageInstallFolder, + env: process.env + }, `npm ${npmCommand}`); + } } catch (e) { throw new Error(`Unable to install package: ${e}`); } + finally { + if (capturePath !== undefined) { + finalizeCapturedNpmOutput(capturePath, logger, onExternalOutput, onExternalOutputOverflow); + } + } + logger.info(`Successfully installed ${name}@${version}`); +} +function _reportCaptureDamage(logger, capturePath, detail) { + const message = `Warning: npm output capture ${JSON.stringify(capturePath)} ${detail}`; + try { + if (logger.warning) { + logger.warning(message, 'local-sensitive'); + } + else { + logger.error(message, 'local-sensitive'); + } + } + catch { + try { + process.stderr.write(`${message}\n`); + } + catch { + // Capture diagnostics are best-effort and must not change the install result. + } + } +} +function finalizeCapturedNpmOutput(capturePath, logger, onExternalOutput, onExternalOutputOverflow) { + let firstDamageDetail; + let damageCount = 0; + try { + _readCapturedNpmOutput(capturePath, onExternalOutput, onExternalOutputOverflow, (detail) => { + firstDamageDetail ??= detail; + damageCount++; + }); + } + catch (error) { + firstDamageDetail ??= `could not be read: ${String(error)}.`; + damageCount++; + } + if (firstDamageDetail) { + const additionalDamage = damageCount > 1 ? ` ${damageCount - 1} additional capture issue(s) were discarded.` : ''; + _reportCaptureDamage(logger, capturePath, `${firstDamageDetail}${additionalDamage}`); + } + try { + _deleteFile(capturePath); + } + catch (error) { + _reportCaptureDamage(logger, capturePath, `could not be deleted: ${String(error)}.`); + } +} +function _readCapturedNpmOutput(capturePath, onExternalOutput, onExternalOutputOverflow, onCaptureDamage) { + const fileDescriptor = node_fs__WEBPACK_IMPORTED_MODULE_1__.openSync(capturePath, 'r'); + const buffer = Buffer.allocUnsafe(64 * 1024); + const decoder = new node_string_decoder__WEBPACK_IMPORTED_MODULE_4__.StringDecoder('utf8'); + let pending = ''; + try { + for (;;) { + const bytesRead = node_fs__WEBPACK_IMPORTED_MODULE_1__.readSync(fileDescriptor, buffer, 0, buffer.length, null); + if (bytesRead === 0) { + break; + } + pending += decoder.write(buffer.subarray(0, bytesRead)); + let newlineIndex; + while ((newlineIndex = pending.indexOf('\n')) >= 0) { + const line = pending.slice(0, newlineIndex); + pending = pending.slice(newlineIndex + 1); + if (line) { + let record; + try { + record = JSON.parse(line); + } + catch (error) { + onCaptureDamage(`contains a corrupt record that was discarded: ${String(error)}.`); + continue; + } + if (record.overflow === true) { + onExternalOutputOverflow?.(); + } + else if ((record.stream === 'stdout' || record.stream === 'stderr') && + typeof record.text === 'string') { + onExternalOutput(record.stream, record.text, record.wasRendered === true); + } + else { + onCaptureDamage('contains an invalid record that was discarded.'); + } + } + } + } + pending += decoder.end(); + if (pending.trim()) { + onCaptureDamage('ended with a partial record that was discarded.'); + } + } + finally { + node_fs__WEBPACK_IMPORTED_MODULE_1__.closeSync(fileDescriptor); + } } /** * Get the ".bin" path for the package. */ function _getBinPath(packageInstallFolder, binName) { const binFolderPath = node_path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME, '.bin'); - const resolvedBinName = _utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_5__.IS_WINDOWS ? `${binName}.cmd` : binName; + const resolvedBinName = _utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_6__.IS_WINDOWS ? `${binName}.cmd` : binName; return node_path__WEBPACK_IMPORTED_MODULE_3__.resolve(binFolderPath, resolvedBinName); } function _buildShellCommand(command, args) { - const escapedCommand = (0,_utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_5__.escapeArgumentIfNeeded)(command); - const escapedArgs = args.map((arg) => (0,_utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_5__.escapeArgumentIfNeeded)(arg)); + const escapedCommand = (0,_utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_6__.escapeArgumentIfNeeded)(command); + const escapedArgs = args.map((arg) => (0,_utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_6__.escapeArgumentIfNeeded)(arg)); return [escapedCommand, ...escapedArgs].join(' '); } /** @@ -1029,7 +1248,7 @@ function _writeFlagFile(packageInstallFolder) { function _runNpmConfirmSuccess(args, options, commandNameForLogging) { const command = getNpmPath(); let result; - if (_utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_5__.IS_WINDOWS) { + if (_utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_6__.IS_WINDOWS) { result = node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(_buildShellCommand(command, args), { ...options, shell: true, @@ -1039,6 +1258,28 @@ function _runNpmConfirmSuccess(args, options, commandNameForLogging) { else { result = node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(command, args, options); } + _throwIfSpawnFailed(result, commandNameForLogging); + return result; +} +function _runNpmWithCaptureConfirmSuccess(args, options, capturePath, captureMaxBytes, liveStreams, commandNameForLogging) { + const npmPath = getNpmPath(); + const command = _utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_6__.IS_WINDOWS ? _buildShellCommand(npmPath, args) : npmPath; + const commandArgs = _utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_6__.IS_WINDOWS ? [] : args; + const result = node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(process.execPath, [ + '-e', + NPM_OUTPUT_CAPTURE_SCRIPT, + command, + JSON.stringify(commandArgs), + capturePath, + _utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_6__.IS_WINDOWS ? '1' : '0', + String(captureMaxBytes), + liveStreams.stdout ? '1' : '0', + liveStreams.stderr ? '1' : '0' + ], options); + _throwIfSpawnFailed(result, commandNameForLogging); + return result; +} +function _throwIfSpawnFailed(result, commandNameForLogging) { if (result.status !== 0) { if (!result.status) { // Is status null or undefined? @@ -1056,9 +1297,8 @@ function _runNpmConfirmSuccess(args, options, commandNameForLogging) { throw new Error(`"${commandNameForLogging}" returned error code ${result.status}`); } } - return result; } -function installAndRun(logger, packageName, packageVersion, packageBinName, packageBinArgs, lockFilePath = process.env[INSTALL_RUN_LOCKFILE_PATH_VARIABLE]) { +function installAndRun(logger, packageName, packageVersion, packageBinName, packageBinArgs, lockFilePath = process.env[INSTALL_RUN_LOCKFILE_PATH_VARIABLE], options = {}) { const rushJsonFolder = findRushJsonFolder(); const rushCommonFolder = node_path__WEBPACK_IMPORTED_MODULE_3__.join(rushJsonFolder, 'common'); const rushTempFolder = _getRushTempFolder(rushCommonFolder); @@ -1067,7 +1307,7 @@ function installAndRun(logger, packageName, packageVersion, packageBinName, pack // The package isn't already installed _cleanInstallFolder(rushTempFolder, packageInstallFolder, lockFilePath); const sourceNpmrcFolder = node_path__WEBPACK_IMPORTED_MODULE_3__.join(rushCommonFolder, 'config', 'rush'); - (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)({ + (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_5__.syncNpmrc)({ sourceNpmrcFolder, targetNpmrcFolder: packageInstallFolder, logger, @@ -1078,12 +1318,16 @@ function installAndRun(logger, packageName, packageVersion, packageBinName, pack }); _createPackageJson(packageInstallFolder, packageName, packageVersion); const installCommand = lockFilePath ? 'ci' : 'install'; - _installPackage(logger, packageInstallFolder, packageName, packageVersion, installCommand); + _installPackage(logger, packageInstallFolder, packageName, packageVersion, installCommand, options.onExternalOutput, options.onExternalOutputOverflow, options.externalOutputCaptureMaxBytes, options.externalOutputLiveStreams); _writeFlagFile(packageInstallFolder); } - const statusMessage = `Invoking "${packageBinName} ${packageBinArgs.join(' ')}"`; + const invocation = options.onExternalOutput + ? packageBinName + : `${packageBinName} ${packageBinArgs.join(' ')}`; + const statusMessage = `Invoking "${invocation}"`; const statusMessageLine = new Array(statusMessage.length + 1).join('-'); logger.info('\n' + statusMessage + '\n' + statusMessageLine + '\n'); + options.prepareToRun?.(); const binPath = _getBinPath(packageInstallFolder, packageBinName); const binFolderPath = node_path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME, '.bin'); // Windows environment variables are case-insensitive. Instead of using SpawnSyncOptions.env, we need to @@ -1097,7 +1341,7 @@ function installAndRun(logger, packageName, packageVersion, packageBinName, pack cwd: process.cwd(), env: process.env }; - if (_utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_5__.IS_WINDOWS) { + if (_utilities_executionUtilities__WEBPACK_IMPORTED_MODULE_6__.IS_WINDOWS) { result = node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(_buildShellCommand(binPath, packageBinArgs), { ...spawnOptions, windowsVerbatimArguments: false, @@ -1146,7 +1390,10 @@ function _run() { console.log('Example: install-run.js qrcode@1.2.2 qrcode https://rushjs.io'); process.exit(1); } - const logger = { info: console.log, error: console.error }; + const logger = { + info: (text) => console.log(text), + error: (text) => console.error(text) + }; runWithErrorAndStatusCode(logger, () => { const rushJsonFolder = findRushJsonFolder(); const rushCommonFolder = _ensureAndJoinPath(rushJsonFolder, 'common'); diff --git a/eslint/eslint-config/package.json b/eslint/eslint-config/package.json index 3555f0b357..877cd502da 100644 --- a/eslint/eslint-config/package.json +++ b/eslint/eslint-config/package.json @@ -64,7 +64,7 @@ "eslint-plugin-tsdoc": "~0.5.3" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "decoupled-local-node-rig": "workspace:*", "eslint": "~9.37.0", "typescript": "~5.8.2" diff --git a/eslint/eslint-patch/package.json b/eslint/eslint-patch/package.json index eb32d7ef1c..18c8bd21f1 100644 --- a/eslint/eslint-patch/package.json +++ b/eslint/eslint-patch/package.json @@ -71,7 +71,7 @@ "patch" ], "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "@types/eslint-8": "npm:@types/eslint@8.56.10", "@types/eslint-9": "npm:@types/eslint@9.6.1", "@typescript-eslint/types": "~8.56.1", diff --git a/eslint/eslint-plugin-packlets/package.json b/eslint/eslint-plugin-packlets/package.json index 851bb9b457..bf181548b0 100644 --- a/eslint/eslint-plugin-packlets/package.json +++ b/eslint/eslint-plugin-packlets/package.json @@ -57,7 +57,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "@typescript-eslint/parser": "~8.56.1", "decoupled-local-node-rig": "workspace:*", "eslint": "~9.37.0", diff --git a/eslint/eslint-plugin-security/package.json b/eslint/eslint-plugin-security/package.json index e259855b61..c6e1bababc 100644 --- a/eslint/eslint-plugin-security/package.json +++ b/eslint/eslint-plugin-security/package.json @@ -56,7 +56,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "@typescript-eslint/parser": "~8.56.1", "@typescript-eslint/rule-tester": "~8.56.1", "@typescript-eslint/typescript-estree": "~8.56.1", diff --git a/eslint/eslint-plugin/package.json b/eslint/eslint-plugin/package.json index 4344be6b59..cc16075195 100644 --- a/eslint/eslint-plugin/package.json +++ b/eslint/eslint-plugin/package.json @@ -60,7 +60,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "@typescript-eslint/parser": "~8.56.1", "@typescript-eslint/rule-tester": "~8.56.1", "decoupled-local-node-rig": "workspace:*", diff --git a/eslint/local-eslint-config/package.json b/eslint/local-eslint-config/package.json index 52c31c6ec0..b9b91696da 100644 --- a/eslint/local-eslint-config/package.json +++ b/eslint/local-eslint-config/package.json @@ -14,7 +14,7 @@ "devDependencies": { "eslint": "~9.37.0", "typescript": "~5.8.2", - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "decoupled-local-node-rig": "workspace:*" }, "dependencies": { diff --git a/libraries/api-extractor-model/package.json b/libraries/api-extractor-model/package.json index ce4fc2eada..26b323718c 100644 --- a/libraries/api-extractor-model/package.json +++ b/libraries/api-extractor-model/package.json @@ -49,7 +49,7 @@ "@rushstack/node-core-library": "workspace:*" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "decoupled-local-node-rig": "workspace:*", "eslint": "~9.37.0" }, diff --git a/libraries/heft-config-file/package.json b/libraries/heft-config-file/package.json index 48399152f3..403d4ac677 100644 --- a/libraries/heft-config-file/package.json +++ b/libraries/heft-config-file/package.json @@ -51,7 +51,7 @@ "jsonpath-plus": "~10.3.0" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "decoupled-local-node-rig": "workspace:*", "eslint": "~9.37.0" }, diff --git a/libraries/node-core-library/package.json b/libraries/node-core-library/package.json index 9c53a10fd0..db2c32aa93 100644 --- a/libraries/node-core-library/package.json +++ b/libraries/node-core-library/package.json @@ -53,7 +53,7 @@ "ajv-formats": "~3.0.1" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "@rushstack/problem-matcher": "workspace:*", "@types/fs-extra": "7.0.0", "@types/jju": "1.4.1", diff --git a/libraries/operation-graph/package.json b/libraries/operation-graph/package.json index 98313c76ed..ecc57fb352 100644 --- a/libraries/operation-graph/package.json +++ b/libraries/operation-graph/package.json @@ -47,7 +47,7 @@ "@rushstack/terminal": "workspace:*" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "decoupled-local-node-rig": "workspace:*", "eslint": "~9.37.0" }, diff --git a/libraries/problem-matcher/package.json b/libraries/problem-matcher/package.json index 3c20c9f1a3..06f588a957 100644 --- a/libraries/problem-matcher/package.json +++ b/libraries/problem-matcher/package.json @@ -43,7 +43,7 @@ "_phase:test": "heft run --only test -- --clean" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "decoupled-local-node-rig": "workspace:*", "eslint": "~9.37.0" }, diff --git a/libraries/rig-package/package.json b/libraries/rig-package/package.json index 970c064fe1..e79683a5e5 100644 --- a/libraries/rig-package/package.json +++ b/libraries/rig-package/package.json @@ -48,7 +48,7 @@ "resolve": "~1.22.1" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "@types/jju": "1.4.1", "@types/resolve": "1.20.2", "ajv": "~8.20.0", diff --git a/libraries/terminal/package.json b/libraries/terminal/package.json index 591ae16b60..6244dfc885 100644 --- a/libraries/terminal/package.json +++ b/libraries/terminal/package.json @@ -48,7 +48,7 @@ "supports-color": "~8.1.1" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "@types/supports-color": "8.1.3", "decoupled-local-node-rig": "workspace:*", "eslint": "~9.37.0" diff --git a/libraries/tree-pattern/package.json b/libraries/tree-pattern/package.json index 8f1f790dca..c091ea0929 100644 --- a/libraries/tree-pattern/package.json +++ b/libraries/tree-pattern/package.json @@ -43,7 +43,7 @@ "_phase:test": "heft run --only test -- --clean" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "decoupled-local-node-rig": "workspace:*", "eslint": "~9.37.0" }, diff --git a/libraries/ts-command-line/package.json b/libraries/ts-command-line/package.json index 17aff341ea..c7c49f2e76 100644 --- a/libraries/ts-command-line/package.json +++ b/libraries/ts-command-line/package.json @@ -49,7 +49,7 @@ "string-argv": "~0.3.1" }, "devDependencies": { - "@rushstack/heft": "1.3.1", + "@rushstack/heft": "1.3.3", "@rushstack/node-core-library": "workspace:*", "decoupled-local-node-rig": "workspace:*", "eslint": "~9.37.0" diff --git a/rigs/decoupled-local-node-rig/package.json b/rigs/decoupled-local-node-rig/package.json index a183662d40..f31118237c 100644 --- a/rigs/decoupled-local-node-rig/package.json +++ b/rigs/decoupled-local-node-rig/package.json @@ -9,12 +9,12 @@ "_phase:build": "" }, "dependencies": { - "@microsoft/api-extractor": "7.59.2", + "@microsoft/api-extractor": "7.59.4", "@rushstack/eslint-config": "4.8.0", "@rushstack/eslint-patch": "1.16.1", "@rushstack/eslint-plugin": "0.23.5", - "@rushstack/heft-node-rig": "2.11.51", - "@rushstack/heft": "1.3.1", + "@rushstack/heft-node-rig": "2.11.53", + "@rushstack/heft": "1.3.3", "@types/jest": "30.0.0", "@types/node": "20.17.19", "@typescript-eslint/eslint-plugin": "~8.56.1", diff --git a/rush.json b/rush.json index 3169d424bd..7ad4b933b1 100644 --- a/rush.json +++ b/rush.json @@ -16,7 +16,7 @@ * path segment in the "$schema" field for all your Rush config files. This will ensure * correct error-underlining and tab-completion for editors such as VS Code. */ - "rushVersion": "5.179.0", + "rushVersion": "5.181.0", /** * The next field selects which package manager should be installed and determines its version. From 56efa6643e042b8e9776762e0472524f4cc50b17 Mon Sep 17 00:00:00 2001 From: Rushbot Date: Tue, 6 Oct 2026 09:55:33 +0000 Subject: [PATCH 2/3] chore: generate change files for decoupled dependency bump --- ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ ...mated-bump-decoupled-deps_2026-10-06-09-55-32.json | 11 +++++++++++ 16 files changed, 176 insertions(+) create mode 100644 common/changes/@microsoft/api-extractor-model/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@microsoft/api-extractor/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/eslint-config/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/eslint-patch/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/eslint-plugin-packlets/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/eslint-plugin-security/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/heft-config-file/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/heft/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/node-core-library/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/operation-graph/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/problem-matcher/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/rig-package/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/terminal/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/tree-pattern/automated-bump-decoupled-deps_2026-10-06-09-55-32.json create mode 100644 common/changes/@rushstack/ts-command-line/automated-bump-decoupled-deps_2026-10-06-09-55-32.json diff --git a/common/changes/@microsoft/api-extractor-model/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@microsoft/api-extractor-model/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..300fd9139c --- /dev/null +++ b/common/changes/@microsoft/api-extractor-model/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/api-extractor-model" + } + ], + "packageName": "@microsoft/api-extractor-model", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@microsoft/api-extractor/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@microsoft/api-extractor/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..c767a964ce --- /dev/null +++ b/common/changes/@microsoft/api-extractor/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/api-extractor" + } + ], + "packageName": "@microsoft/api-extractor", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-config/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/eslint-config/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..68c35e7fe3 --- /dev/null +++ b/common/changes/@rushstack/eslint-config/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-config" + } + ], + "packageName": "@rushstack/eslint-config", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-patch/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/eslint-patch/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..4182a0eb14 --- /dev/null +++ b/common/changes/@rushstack/eslint-patch/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-patch" + } + ], + "packageName": "@rushstack/eslint-patch", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-plugin-packlets/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/eslint-plugin-packlets/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..7ee8e7c8b8 --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin-packlets/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-plugin-packlets" + } + ], + "packageName": "@rushstack/eslint-plugin-packlets", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-plugin-security/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/eslint-plugin-security/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..4b6878d554 --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin-security/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-plugin-security" + } + ], + "packageName": "@rushstack/eslint-plugin-security", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..eb5d63adac --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-plugin" + } + ], + "packageName": "@rushstack/eslint-plugin", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-config-file/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/heft-config-file/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..5ebf376352 --- /dev/null +++ b/common/changes/@rushstack/heft-config-file/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-config-file" + } + ], + "packageName": "@rushstack/heft-config-file", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/heft/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..d773a7585e --- /dev/null +++ b/common/changes/@rushstack/heft/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft" + } + ], + "packageName": "@rushstack/heft", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/node-core-library/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/node-core-library/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..bf210f74ba --- /dev/null +++ b/common/changes/@rushstack/node-core-library/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/node-core-library" + } + ], + "packageName": "@rushstack/node-core-library", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/operation-graph/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/operation-graph/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..bebea85d5d --- /dev/null +++ b/common/changes/@rushstack/operation-graph/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/operation-graph" + } + ], + "packageName": "@rushstack/operation-graph", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/problem-matcher/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/problem-matcher/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..67a23d5885 --- /dev/null +++ b/common/changes/@rushstack/problem-matcher/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/problem-matcher" + } + ], + "packageName": "@rushstack/problem-matcher", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rig-package/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/rig-package/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..cc5c78afc2 --- /dev/null +++ b/common/changes/@rushstack/rig-package/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rig-package" + } + ], + "packageName": "@rushstack/rig-package", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/terminal/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/terminal/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..da1765f19f --- /dev/null +++ b/common/changes/@rushstack/terminal/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/terminal" + } + ], + "packageName": "@rushstack/terminal", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/tree-pattern/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/tree-pattern/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..85eb782e9c --- /dev/null +++ b/common/changes/@rushstack/tree-pattern/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/tree-pattern" + } + ], + "packageName": "@rushstack/tree-pattern", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/ts-command-line/automated-bump-decoupled-deps_2026-10-06-09-55-32.json b/common/changes/@rushstack/ts-command-line/automated-bump-decoupled-deps_2026-10-06-09-55-32.json new file mode 100644 index 0000000000..e4b2e545b2 --- /dev/null +++ b/common/changes/@rushstack/ts-command-line/automated-bump-decoupled-deps_2026-10-06-09-55-32.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/ts-command-line" + } + ], + "packageName": "@rushstack/ts-command-line", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file From f40527ddd44848db5ee8728e293d4888c12f1467 Mon Sep 17 00:00:00 2001 From: Sean Larkin <3408176+TheLarkInn@users.noreply.github.com> Date: Tue, 6 Oct 2026 11:59:15 +0000 Subject: [PATCH 3/3] Harden tests that time out on busy Windows runners Rush 5.181.0 fixed the critical-path priority in AsyncOperationQueue. `rush retest` now runs the test operations after the builds, so the heaviest suites overlap at the end of CI, and some tests run twice as slowly on the 4-vCPU Windows runners. - NativeBuildTestFixture: raise the daemon idle timeout from 30 s to 600 s. The timer counts from the end of the last request, and a status ping doesn't reset it, so a slow gap let the daemon exit between two requests of a test. closeAsync() still stops the daemon. - RushProjectConfiguration and PhasedCommandEngineAbort tests: 30 s timeout, not 5 s. - OutputFolderDigester threshold test: give the serial digester a 60 s threshold, so a slow digest can't start its pool. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2fdae5a5-bbb9-4f39-a3e0-c0d21203e97a --- .../src/test/NativeBuildTestFixture.ts | 5 ++++- ...utomated-bump-decoupled-deps_2026-10-06-11-53.json | 11 +++++++++++ ...utomated-bump-decoupled-deps_2026-10-06-11-53.json | 11 +++++++++++ ...utomated-bump-decoupled-deps_2026-10-06-11-53.json | 11 +++++++++++ .../src/test/OutputFolderDigestPool.test.ts | 6 +++++- .../src/test/PhasedCommandEngineAbort.test.ts | 4 ++++ .../src/api/test/RushProjectConfiguration.test.ts | 4 ++++ 7 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 common/changes/@microsoft/rush/automated-bump-decoupled-deps_2026-10-06-11-53.json create mode 100644 common/changes/@rushstack/rush-cli-client/automated-bump-decoupled-deps_2026-10-06-11-53.json create mode 100644 common/changes/@rushstack/rush-daemon/automated-bump-decoupled-deps_2026-10-06-11-53.json diff --git a/apps/rush-cli-client/src/test/NativeBuildTestFixture.ts b/apps/rush-cli-client/src/test/NativeBuildTestFixture.ts index 7215331fa5..7e1f225a92 100644 --- a/apps/rush-cli-client/src/test/NativeBuildTestFixture.ts +++ b/apps/rush-cli-client/src/test/NativeBuildTestFixture.ts @@ -66,7 +66,10 @@ export function createNativeBuildTestFixture(): INativeBuildTestFixture { rushVersion: Rush.version, suppressNodeLtsWarning: true, npmVersion: '10.0.0', - daemon: { enabled: true, autoStart: true, idleTimeoutSeconds: 30 }, + // The idle timer counts from the end of the last request; a status ping doesn't reset it. A busy + // Windows runner can leave more than 30 s between a test's requests, and a new daemon then serves the + // next one. closeAsync() stops the daemon. + daemon: { enabled: true, autoStart: true, idleTimeoutSeconds: 600 }, projectFolderMinDepth: 1, projects: ['a', 'b'].map((name) => ({ packageName: name, projectFolder: name })) }) diff --git a/common/changes/@microsoft/rush/automated-bump-decoupled-deps_2026-10-06-11-53.json b/common/changes/@microsoft/rush/automated-bump-decoupled-deps_2026-10-06-11-53.json new file mode 100644 index 0000000000..41fa6e17d4 --- /dev/null +++ b/common/changes/@microsoft/rush/automated-bump-decoupled-deps_2026-10-06-11-53.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "", + "type": "none" + } + ], + "packageName": "@microsoft/rush", + "email": "3408176+TheLarkInn@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/rush-cli-client/automated-bump-decoupled-deps_2026-10-06-11-53.json b/common/changes/@rushstack/rush-cli-client/automated-bump-decoupled-deps_2026-10-06-11-53.json new file mode 100644 index 0000000000..7572c2d50e --- /dev/null +++ b/common/changes/@rushstack/rush-cli-client/automated-bump-decoupled-deps_2026-10-06-11-53.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@rushstack/rush-cli-client", + "comment": "", + "type": "none" + } + ], + "packageName": "@rushstack/rush-cli-client", + "email": "3408176+TheLarkInn@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/rush-daemon/automated-bump-decoupled-deps_2026-10-06-11-53.json b/common/changes/@rushstack/rush-daemon/automated-bump-decoupled-deps_2026-10-06-11-53.json new file mode 100644 index 0000000000..d6b883586d --- /dev/null +++ b/common/changes/@rushstack/rush-daemon/automated-bump-decoupled-deps_2026-10-06-11-53.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@rushstack/rush-daemon", + "comment": "", + "type": "none" + } + ], + "packageName": "@rushstack/rush-daemon", + "email": "3408176+TheLarkInn@users.noreply.github.com" +} diff --git a/libraries/rush-daemon/src/test/OutputFolderDigestPool.test.ts b/libraries/rush-daemon/src/test/OutputFolderDigestPool.test.ts index c579135d15..64f0a31191 100644 --- a/libraries/rush-daemon/src/test/OutputFolderDigestPool.test.ts +++ b/libraries/rush-daemon/src/test/OutputFolderDigestPool.test.ts @@ -418,7 +418,11 @@ describe(OutputFolderDigester.name, () => { it('starts a pool only after a digest on the calling thread takes longer than the threshold', () => { const folderSets: IOutputFolderSet[] = createProjects(root); - const serial: OutputFolderDigester = new OutputFolderDigester({ threadCount: 2 }); + // A threshold that no digest of these small folders reaches, even on a busy machine. + const serial: OutputFolderDigester = new OutputFolderDigester({ + threadCount: 2, + poolStartThresholdMs: 60_000 + }); expect(serial.digest(folderSets)).toEqual(digestOnCallingThread(folderSets)); expect(serial.isParallel).toBe(false); diff --git a/libraries/rush-daemon/src/test/PhasedCommandEngineAbort.test.ts b/libraries/rush-daemon/src/test/PhasedCommandEngineAbort.test.ts index eb60122416..e041d2597d 100644 --- a/libraries/rush-daemon/src/test/PhasedCommandEngineAbort.test.ts +++ b/libraries/rush-daemon/src/test/PhasedCommandEngineAbort.test.ts @@ -15,6 +15,10 @@ import { NoOpTerminalProvider } from '@rushstack/terminal'; import { DaemonGraphTestFixture } from './DaemonGraphTestFixture'; +// Each case creates a Git repository and loads a real Rush configuration, which can take more than the +// default 5 s on a busy Windows runner. +jest.setTimeout(30_000); + const STEP_PREFIX: string = 'rush:phasedScriptAction:'; /** The steps that the native preparation measures for the fixture's `build`, in their order. */ diff --git a/libraries/rush-lib/src/api/test/RushProjectConfiguration.test.ts b/libraries/rush-lib/src/api/test/RushProjectConfiguration.test.ts index 69a08b77bb..3b4b579590 100644 --- a/libraries/rush-lib/src/api/test/RushProjectConfiguration.test.ts +++ b/libraries/rush-lib/src/api/test/RushProjectConfiguration.test.ts @@ -14,6 +14,10 @@ import type { RushConfigurationProject } from '../RushConfigurationProject'; import { RushProjectConfiguration } from '../RushProjectConfiguration'; import { PhasedCommandEngineProjectConfigurationError } from '../PhasedCommandEngineProjectConfigurationError'; +// Several cases write, link and stat many files, which can take more than the default 5 s on a busy +// Windows runner. +jest.setTimeout(30_000); + // eslint-disable-next-line @typescript-eslint/no-explicit-any function stripSymbolsFromObject(obj: any | undefined): void { if (obj) {