@microsoft/rush 5.172.1 → 5.174.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.json CHANGED
@@ -1,6 +1,58 @@
1
1
  {
2
2
  "name": "@microsoft/rush",
3
3
  "entries": [
4
+ {
5
+ "version": "5.174.0",
6
+ "tag": "@microsoft/rush_v5.174.0",
7
+ "date": "Thu, 16 Apr 2026 05:25:41 GMT",
8
+ "comments": {
9
+ "none": [
10
+ {
11
+ "comment": "rush-resolver-cache-plugin: add pnpm 10 / lockfile v9 compatibility"
12
+ },
13
+ {
14
+ "comment": "Deprecate `minimumReleaseAge` in `common/config/rush/pnpm-config.json`; use `minimumReleaseAgeMinutes` instead"
15
+ },
16
+ {
17
+ "comment": "Add support for pnpm global catalog detection to `rush change`. Now, when a dependencyis changed in the pnpm global catalog, changelogs will be required for affected published packages."
18
+ },
19
+ {
20
+ "comment": "Fix a bug where the injected dependency state hash updated on devDependency changes that don't impact the lockfile."
21
+ },
22
+ {
23
+ "comment": "Add \"strictChangefileValidation\" experiment and \"--verify-all\" flag for \"rush change\". When the experiment is enabled, \"rush change --verify\" and \"rush change --verify-all\" will report errors if change files reference nonexistent projects or target non-main projects in a lockstepped version policy."
24
+ }
25
+ ],
26
+ "minor": [
27
+ {
28
+ "comment": "Add support for pnpm `trustPolicy`, `trustPolicyExclude`, and `trustPolicyIgnoreAfterMinutes` settings in `pnpm-config.json`."
29
+ }
30
+ ]
31
+ }
32
+ },
33
+ {
34
+ "version": "5.173.0",
35
+ "tag": "@microsoft/rush_v5.173.0",
36
+ "date": "Fri, 10 Apr 2026 22:46:54 GMT",
37
+ "comments": {
38
+ "none": [
39
+ {
40
+ "comment": "Move stale autoinstaller `node_modules` folders into Rush's recycler before asynchronously deleting them, instead of synchronously deleting them in place."
41
+ },
42
+ {
43
+ "comment": "Filter npm-incompatible properties from .npmrc when installing rush-lib via npm, to eliminate spurious \"Unknown env config\" and \"Unknown project config\" warnings."
44
+ },
45
+ {
46
+ "comment": "When cobuilds are remote executing, check them after locally executable tasks."
47
+ }
48
+ ],
49
+ "minor": [
50
+ {
51
+ "comment": "Add async variants of disk-touching APIs in `PackageJsonEditor` (`loadAsync`, `saveIfModifiedAsync`), `CommonVersionsConfiguration` (`loadFromFileAsync`, `saveAsync`), and `VersionPolicy` (`setDependenciesBeforePublishAsync`, `setDependenciesBeforeCommitAsync`); deprecate corresponding sync methods."
52
+ }
53
+ ]
54
+ }
55
+ },
4
56
  {
5
57
  "version": "5.172.1",
6
58
  "tag": "@microsoft/rush_v5.172.1",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,34 @@
1
1
  # Change Log - @microsoft/rush
2
2
 
3
- This log was last generated on Wed, 25 Mar 2026 01:01:07 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 16 Apr 2026 05:25:41 GMT and should not be manually modified.
4
+
5
+ ## 5.174.0
6
+ Thu, 16 Apr 2026 05:25:41 GMT
7
+
8
+ ### Minor changes
9
+
10
+ - Add support for pnpm `trustPolicy`, `trustPolicyExclude`, and `trustPolicyIgnoreAfterMinutes` settings in `pnpm-config.json`.
11
+
12
+ ### Updates
13
+
14
+ - rush-resolver-cache-plugin: add pnpm 10 / lockfile v9 compatibility
15
+ - Deprecate `minimumReleaseAge` in `common/config/rush/pnpm-config.json`; use `minimumReleaseAgeMinutes` instead
16
+ - Add support for pnpm global catalog detection to `rush change`. Now, when a dependencyis changed in the pnpm global catalog, changelogs will be required for affected published packages.
17
+ - Fix a bug where the injected dependency state hash updated on devDependency changes that don't impact the lockfile.
18
+ - Add "strictChangefileValidation" experiment and "--verify-all" flag for "rush change". When the experiment is enabled, "rush change --verify" and "rush change --verify-all" will report errors if change files reference nonexistent projects or target non-main projects in a lockstepped version policy.
19
+
20
+ ## 5.173.0
21
+ Fri, 10 Apr 2026 22:46:54 GMT
22
+
23
+ ### Minor changes
24
+
25
+ - Add async variants of disk-touching APIs in `PackageJsonEditor` (`loadAsync`, `saveIfModifiedAsync`), `CommonVersionsConfiguration` (`loadFromFileAsync`, `saveAsync`), and `VersionPolicy` (`setDependenciesBeforePublishAsync`, `setDependenciesBeforeCommitAsync`); deprecate corresponding sync methods.
26
+
27
+ ### Updates
28
+
29
+ - Move stale autoinstaller `node_modules` folders into Rush's recycler before asynchronously deleting them, instead of synchronously deleting them in place.
30
+ - Filter npm-incompatible properties from .npmrc when installing rush-lib via npm, to eliminate spurious "Unknown env config" and "Unknown project config" warnings.
31
+ - When cobuilds are remote executing, check them after locally executable tasks.
4
32
 
5
33
  ## 5.172.1
6
34
  Wed, 25 Mar 2026 01:01:07 GMT
@@ -79,7 +79,10 @@ class RushVersionSelector {
79
79
  // different implementations of the same version of the same package.
80
80
  // This was needed for: https://github.com/microsoft/rushstack/issues/691
81
81
  commonRushConfigFolder: configuration ? configuration.commonRushConfigFolder : undefined,
82
- suppressOutput: true
82
+ suppressOutput: true,
83
+ // Filter out npm-incompatible properties (e.g. pnpm-specific settings) from .npmrc
84
+ // since this installation always uses npm regardless of the repo's package manager.
85
+ filterNpmIncompatibleProperties: true
83
86
  });
84
87
  console.log(`Successfully installed Rush version ${version} in ${expectedRushPath}.`);
85
88
  // If we've made it here without exception, write the flag file
@@ -1 +1 @@
1
- {"version":3,"file":"RushVersionSelector.js","sourceRoot":"","sources":["../src/RushVersionSelector.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3D,gDAAkC;AAElC,+CAAiC;AAEjC,oEAAgE;AAChE,2EAAwE;AACxE,kDAAwF;AAExF,+DAA4D;AAG5D,MAAM,oBAAoB,GAAW,CAAC,CAAC;AAEvC,MAAa,mBAAmB;IAI9B,YAAmB,qBAA6B;QAC9C,IAAI,CAAC,iBAAiB,GAAG,IAAI,4BAAiB,EAAE,CAAC;QACjD,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,+BAA+B,CAC1C,OAAe,EACf,aAAmD,EACnD,cAA8B;QAE9B,MAAM,mBAAmB,GAAY,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,QAAQ,OAAO,EAAE,CAAC,CAAC;QAEvG,MAAM,aAAa,GAAc,IAAI,oBAAS,CAAC,gBAAgB,EAAE,cAAc,EAAE;YAC/E,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;SAC5B,CAAC,CAAC;QAEH,IAAI,cAAc,GAAY,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;QACjE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,uBAAuB;YACvB,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,4CAA4C,CAAC,CAAC;YAEjF,MAAM,YAAY,GAAW,QAAQ,OAAO,EAAE,CAAC;YAE/C,OAAO,CAAC,GAAG,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;YAE1D,MAAM,IAAI,GAAa,MAAM,4BAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YACnF,cAAc,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;YACpD,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,MAAM,qBAAS,CAAC,8BAA8B,CAAC;oBAC7C,SAAS,EAAE,gBAAgB;oBAC3B,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB;oBAC5E,OAAO,EAAE,OAAO;oBAChB,gBAAgB,EAAE,oBAAoB;oBACtC,kBAAkB,EAAE,oBAAoB;oBACxC,wFAAwF;oBACxF,mFAAmF;oBACnF,mFAAmF;oBACnF,gFAAgF;oBAChF,qEAAqE;oBACrE,yEAAyE;oBACzE,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS;oBACxF,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,uCAAuC,OAAO,OAAO,gBAAgB,GAAG,CAAC,CAAC;gBAEtF,+DAA+D;gBAC/D,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC;gBAElC,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YACjC,0FAA0F;YAC1F,6CAA6C;YAC7C,yCAAmB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5F,CAAC;aAAM,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YACvC,0FAA0F;YAC1F,6CAA6C;YAC7C,yCAAmB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7F,CAAC;aAAM,CAAC;YACN,+FAA+F;YAC/F,8EAA8E;YAC9E,yCAAyC;YACzC,MAAM,iBAAiB,GAAW,MAAM,0BAAM,CAAC,kBAAkB,CAAC;gBAChE,UAAU,EAAE,+BAA+B;gBAC3C,cAAc,EAAE,gBAAgB;aACjC,CAAC,CAAC;YACH,MAAM,iBAAiB,GAAyC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC3F,uFAAuF;YACvF,yCAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;CACF;AAnFD,kDAmFC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'node:path';\n\nimport * as semver from 'semver';\n\nimport { LockFile, Import } from '@rushstack/node-core-library';\nimport { Utilities } from '@microsoft/rush-lib/lib/utilities/Utilities';\nimport { _FlagFile, _RushGlobalFolder, type ILaunchOptions } from '@microsoft/rush-lib';\n\nimport { RushCommandSelector } from './RushCommandSelector';\nimport type { MinimalRushConfiguration } from './MinimalRushConfiguration';\n\nconst MAX_INSTALL_ATTEMPTS: number = 3;\n\nexport class RushVersionSelector {\n private _rushGlobalFolder: _RushGlobalFolder;\n private _currentPackageVersion: string;\n\n public constructor(currentPackageVersion: string) {\n this._rushGlobalFolder = new _RushGlobalFolder();\n this._currentPackageVersion = currentPackageVersion;\n }\n\n public async ensureRushVersionInstalledAsync(\n version: string,\n configuration: MinimalRushConfiguration | undefined,\n executeOptions: ILaunchOptions\n ): Promise<void> {\n const isLegacyRushVersion: boolean = semver.lt(version, '4.0.0');\n const expectedRushPath: string = path.join(this._rushGlobalFolder.nodeSpecificPath, `rush-${version}`);\n\n const installMarker: _FlagFile = new _FlagFile(expectedRushPath, 'last-install', {\n node: process.versions.node\n });\n\n let installIsValid: boolean = await installMarker.isValidAsync();\n if (!installIsValid) {\n // Need to install Rush\n console.log(`Rush version ${version} is not currently installed. Installing...`);\n\n const resourceName: string = `rush-${version}`;\n\n console.log(`Trying to acquire lock for ${resourceName}`);\n\n const lock: LockFile = await LockFile.acquireAsync(expectedRushPath, resourceName);\n installIsValid = await installMarker.isValidAsync();\n if (installIsValid) {\n console.log('Another process performed the installation.');\n } else {\n await Utilities.installPackageInDirectoryAsync({\n directory: expectedRushPath,\n packageName: isLegacyRushVersion ? '@microsoft/rush' : '@microsoft/rush-lib',\n version: version,\n tempPackageTitle: 'rush-local-install',\n maxInstallAttempts: MAX_INSTALL_ATTEMPTS,\n // This is using a local configuration to install a package in a shared global location.\n // Generally that's a bad practice, but in this case if we can successfully install\n // the package at all, we can reasonably assume it's good for all the repositories.\n // In particular, we'll assume that two different NPM registries cannot have two\n // different implementations of the same version of the same package.\n // This was needed for: https://github.com/microsoft/rushstack/issues/691\n commonRushConfigFolder: configuration ? configuration.commonRushConfigFolder : undefined,\n suppressOutput: true\n });\n\n console.log(`Successfully installed Rush version ${version} in ${expectedRushPath}.`);\n\n // If we've made it here without exception, write the flag file\n await installMarker.createAsync();\n\n lock.release();\n }\n }\n\n if (semver.lt(version, '3.0.20')) {\n // In old versions, requiring the entry point invoked the command-line parser immediately,\n // so fail if \"rushx\" or \"rush-pnpm\" was used\n RushCommandSelector.failIfNotInvokedAsRush(version);\n require(path.join(expectedRushPath, 'node_modules', '@microsoft', 'rush', 'lib', 'rush'));\n } else if (semver.lt(version, '4.0.0')) {\n // In old versions, requiring the entry point invoked the command-line parser immediately,\n // so fail if \"rushx\" or \"rush-pnpm\" was used\n RushCommandSelector.failIfNotInvokedAsRush(version);\n require(path.join(expectedRushPath, 'node_modules', '@microsoft', 'rush', 'lib', 'start'));\n } else {\n // Explicitly resolve the entry point for rush-lib, rather than using a simple require, because\n // newer versions of rush-lib use the package.json `exports` field, which maps\n // `lib/index` to `lib-commonjs/index.js`\n const rushLibEntrypoint: string = await Import.resolveModuleAsync({\n modulePath: '@microsoft/rush-lib/lib/index',\n baseFolderPath: expectedRushPath\n });\n const rushCliEntrypoint: typeof import('@microsoft/rush-lib') = require(rushLibEntrypoint);\n // For newer rush-lib, RushCommandSelector can test whether \"rushx\" is supported or not\n RushCommandSelector.execute(this._currentPackageVersion, rushCliEntrypoint, executeOptions);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"RushVersionSelector.js","sourceRoot":"","sources":["../src/RushVersionSelector.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'node:path';\n\nimport * as semver from 'semver';\n\nimport { LockFile, Import } from '@rushstack/node-core-library';\nimport { Utilities } from '@microsoft/rush-lib/lib/utilities/Utilities';\nimport { _FlagFile, _RushGlobalFolder, type ILaunchOptions } from '@microsoft/rush-lib';\n\nimport { RushCommandSelector } from './RushCommandSelector';\nimport type { MinimalRushConfiguration } from './MinimalRushConfiguration';\n\nconst MAX_INSTALL_ATTEMPTS: number = 3;\n\nexport class RushVersionSelector {\n private _rushGlobalFolder: _RushGlobalFolder;\n private _currentPackageVersion: string;\n\n public constructor(currentPackageVersion: string) {\n this._rushGlobalFolder = new _RushGlobalFolder();\n this._currentPackageVersion = currentPackageVersion;\n }\n\n public async ensureRushVersionInstalledAsync(\n version: string,\n configuration: MinimalRushConfiguration | undefined,\n executeOptions: ILaunchOptions\n ): Promise<void> {\n const isLegacyRushVersion: boolean = semver.lt(version, '4.0.0');\n const expectedRushPath: string = path.join(this._rushGlobalFolder.nodeSpecificPath, `rush-${version}`);\n\n const installMarker: _FlagFile = new _FlagFile(expectedRushPath, 'last-install', {\n node: process.versions.node\n });\n\n let installIsValid: boolean = await installMarker.isValidAsync();\n if (!installIsValid) {\n // Need to install Rush\n console.log(`Rush version ${version} is not currently installed. Installing...`);\n\n const resourceName: string = `rush-${version}`;\n\n console.log(`Trying to acquire lock for ${resourceName}`);\n\n const lock: LockFile = await LockFile.acquireAsync(expectedRushPath, resourceName);\n installIsValid = await installMarker.isValidAsync();\n if (installIsValid) {\n console.log('Another process performed the installation.');\n } else {\n await Utilities.installPackageInDirectoryAsync({\n directory: expectedRushPath,\n packageName: isLegacyRushVersion ? '@microsoft/rush' : '@microsoft/rush-lib',\n version: version,\n tempPackageTitle: 'rush-local-install',\n maxInstallAttempts: MAX_INSTALL_ATTEMPTS,\n // This is using a local configuration to install a package in a shared global location.\n // Generally that's a bad practice, but in this case if we can successfully install\n // the package at all, we can reasonably assume it's good for all the repositories.\n // In particular, we'll assume that two different NPM registries cannot have two\n // different implementations of the same version of the same package.\n // This was needed for: https://github.com/microsoft/rushstack/issues/691\n commonRushConfigFolder: configuration ? configuration.commonRushConfigFolder : undefined,\n suppressOutput: true,\n // Filter out npm-incompatible properties (e.g. pnpm-specific settings) from .npmrc\n // since this installation always uses npm regardless of the repo's package manager.\n filterNpmIncompatibleProperties: true\n });\n\n console.log(`Successfully installed Rush version ${version} in ${expectedRushPath}.`);\n\n // If we've made it here without exception, write the flag file\n await installMarker.createAsync();\n\n lock.release();\n }\n }\n\n if (semver.lt(version, '3.0.20')) {\n // In old versions, requiring the entry point invoked the command-line parser immediately,\n // so fail if \"rushx\" or \"rush-pnpm\" was used\n RushCommandSelector.failIfNotInvokedAsRush(version);\n require(path.join(expectedRushPath, 'node_modules', '@microsoft', 'rush', 'lib', 'rush'));\n } else if (semver.lt(version, '4.0.0')) {\n // In old versions, requiring the entry point invoked the command-line parser immediately,\n // so fail if \"rushx\" or \"rush-pnpm\" was used\n RushCommandSelector.failIfNotInvokedAsRush(version);\n require(path.join(expectedRushPath, 'node_modules', '@microsoft', 'rush', 'lib', 'start'));\n } else {\n // Explicitly resolve the entry point for rush-lib, rather than using a simple require, because\n // newer versions of rush-lib use the package.json `exports` field, which maps\n // `lib/index` to `lib-commonjs/index.js`\n const rushLibEntrypoint: string = await Import.resolveModuleAsync({\n modulePath: '@microsoft/rush-lib/lib/index',\n baseFolderPath: expectedRushPath\n });\n const rushCliEntrypoint: typeof import('@microsoft/rush-lib') = require(rushLibEntrypoint);\n // For newer rush-lib, RushCommandSelector can test whether \"rushx\" is supported or not\n RushCommandSelector.execute(this._currentPackageVersion, rushCliEntrypoint, executeOptions);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RushVersionSelector.d.ts","sourceRoot":"","sources":["../src/RushVersionSelector.ts"],"names":[],"mappings":"AASA,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGxF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAI3E,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,sBAAsB,CAAS;gBAEpB,qBAAqB,EAAE,MAAM;IAKnC,+BAA+B,CAC1C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,wBAAwB,GAAG,SAAS,EACnD,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,IAAI,CAAC;CAsEjB"}
1
+ {"version":3,"file":"RushVersionSelector.d.ts","sourceRoot":"","sources":["../src/RushVersionSelector.ts"],"names":[],"mappings":"AASA,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGxF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAI3E,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,sBAAsB,CAAS;gBAEpB,qBAAqB,EAAE,MAAM;IAKnC,+BAA+B,CAC1C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,wBAAwB,GAAG,SAAS,EACnD,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,IAAI,CAAC;CAyEjB"}
@@ -43,7 +43,10 @@ export class RushVersionSelector {
43
43
  // different implementations of the same version of the same package.
44
44
  // This was needed for: https://github.com/microsoft/rushstack/issues/691
45
45
  commonRushConfigFolder: configuration ? configuration.commonRushConfigFolder : undefined,
46
- suppressOutput: true
46
+ suppressOutput: true,
47
+ // Filter out npm-incompatible properties (e.g. pnpm-specific settings) from .npmrc
48
+ // since this installation always uses npm regardless of the repo's package manager.
49
+ filterNpmIncompatibleProperties: true
47
50
  });
48
51
  console.log(`Successfully installed Rush version ${version} in ${expectedRushPath}.`);
49
52
  // If we've made it here without exception, write the flag file
@@ -1 +1 @@
1
- {"version":3,"file":"RushVersionSelector.js","sourceRoot":"","sources":["../src/RushVersionSelector.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,2DAA2D;AAE3D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAuB,MAAM,qBAAqB,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,oBAAoB,GAAW,CAAC,CAAC;AAEvC,MAAM,OAAO,mBAAmB;IAI9B,YAAmB,qBAA6B;QAC9C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACjD,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,+BAA+B,CAC1C,OAAe,EACf,aAAmD,EACnD,cAA8B;QAE9B,MAAM,mBAAmB,GAAY,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,QAAQ,OAAO,EAAE,CAAC,CAAC;QAEvG,MAAM,aAAa,GAAc,IAAI,SAAS,CAAC,gBAAgB,EAAE,cAAc,EAAE;YAC/E,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;SAC5B,CAAC,CAAC;QAEH,IAAI,cAAc,GAAY,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;QACjE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,uBAAuB;YACvB,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,4CAA4C,CAAC,CAAC;YAEjF,MAAM,YAAY,GAAW,QAAQ,OAAO,EAAE,CAAC;YAE/C,OAAO,CAAC,GAAG,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;YAE1D,MAAM,IAAI,GAAa,MAAM,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YACnF,cAAc,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE,CAAC;YACpD,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,CAAC,8BAA8B,CAAC;oBAC7C,SAAS,EAAE,gBAAgB;oBAC3B,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB;oBAC5E,OAAO,EAAE,OAAO;oBAChB,gBAAgB,EAAE,oBAAoB;oBACtC,kBAAkB,EAAE,oBAAoB;oBACxC,wFAAwF;oBACxF,mFAAmF;oBACnF,mFAAmF;oBACnF,gFAAgF;oBAChF,qEAAqE;oBACrE,yEAAyE;oBACzE,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS;oBACxF,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,uCAAuC,OAAO,OAAO,gBAAgB,GAAG,CAAC,CAAC;gBAEtF,+DAA+D;gBAC/D,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC;gBAElC,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YACjC,0FAA0F;YAC1F,6CAA6C;YAC7C,mBAAmB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5F,CAAC;aAAM,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YACvC,0FAA0F;YAC1F,6CAA6C;YAC7C,mBAAmB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7F,CAAC;aAAM,CAAC;YACN,+FAA+F;YAC/F,8EAA8E;YAC9E,yCAAyC;YACzC,MAAM,iBAAiB,GAAW,MAAM,MAAM,CAAC,kBAAkB,CAAC;gBAChE,UAAU,EAAE,+BAA+B;gBAC3C,cAAc,EAAE,gBAAgB;aACjC,CAAC,CAAC;YACH,MAAM,iBAAiB,GAAyC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC3F,uFAAuF;YACvF,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'node:path';\n\nimport * as semver from 'semver';\n\nimport { LockFile, Import } from '@rushstack/node-core-library';\nimport { Utilities } from '@microsoft/rush-lib/lib/utilities/Utilities';\nimport { _FlagFile, _RushGlobalFolder, type ILaunchOptions } from '@microsoft/rush-lib';\n\nimport { RushCommandSelector } from './RushCommandSelector';\nimport type { MinimalRushConfiguration } from './MinimalRushConfiguration';\n\nconst MAX_INSTALL_ATTEMPTS: number = 3;\n\nexport class RushVersionSelector {\n private _rushGlobalFolder: _RushGlobalFolder;\n private _currentPackageVersion: string;\n\n public constructor(currentPackageVersion: string) {\n this._rushGlobalFolder = new _RushGlobalFolder();\n this._currentPackageVersion = currentPackageVersion;\n }\n\n public async ensureRushVersionInstalledAsync(\n version: string,\n configuration: MinimalRushConfiguration | undefined,\n executeOptions: ILaunchOptions\n ): Promise<void> {\n const isLegacyRushVersion: boolean = semver.lt(version, '4.0.0');\n const expectedRushPath: string = path.join(this._rushGlobalFolder.nodeSpecificPath, `rush-${version}`);\n\n const installMarker: _FlagFile = new _FlagFile(expectedRushPath, 'last-install', {\n node: process.versions.node\n });\n\n let installIsValid: boolean = await installMarker.isValidAsync();\n if (!installIsValid) {\n // Need to install Rush\n console.log(`Rush version ${version} is not currently installed. Installing...`);\n\n const resourceName: string = `rush-${version}`;\n\n console.log(`Trying to acquire lock for ${resourceName}`);\n\n const lock: LockFile = await LockFile.acquireAsync(expectedRushPath, resourceName);\n installIsValid = await installMarker.isValidAsync();\n if (installIsValid) {\n console.log('Another process performed the installation.');\n } else {\n await Utilities.installPackageInDirectoryAsync({\n directory: expectedRushPath,\n packageName: isLegacyRushVersion ? '@microsoft/rush' : '@microsoft/rush-lib',\n version: version,\n tempPackageTitle: 'rush-local-install',\n maxInstallAttempts: MAX_INSTALL_ATTEMPTS,\n // This is using a local configuration to install a package in a shared global location.\n // Generally that's a bad practice, but in this case if we can successfully install\n // the package at all, we can reasonably assume it's good for all the repositories.\n // In particular, we'll assume that two different NPM registries cannot have two\n // different implementations of the same version of the same package.\n // This was needed for: https://github.com/microsoft/rushstack/issues/691\n commonRushConfigFolder: configuration ? configuration.commonRushConfigFolder : undefined,\n suppressOutput: true\n });\n\n console.log(`Successfully installed Rush version ${version} in ${expectedRushPath}.`);\n\n // If we've made it here without exception, write the flag file\n await installMarker.createAsync();\n\n lock.release();\n }\n }\n\n if (semver.lt(version, '3.0.20')) {\n // In old versions, requiring the entry point invoked the command-line parser immediately,\n // so fail if \"rushx\" or \"rush-pnpm\" was used\n RushCommandSelector.failIfNotInvokedAsRush(version);\n require(path.join(expectedRushPath, 'node_modules', '@microsoft', 'rush', 'lib', 'rush'));\n } else if (semver.lt(version, '4.0.0')) {\n // In old versions, requiring the entry point invoked the command-line parser immediately,\n // so fail if \"rushx\" or \"rush-pnpm\" was used\n RushCommandSelector.failIfNotInvokedAsRush(version);\n require(path.join(expectedRushPath, 'node_modules', '@microsoft', 'rush', 'lib', 'start'));\n } else {\n // Explicitly resolve the entry point for rush-lib, rather than using a simple require, because\n // newer versions of rush-lib use the package.json `exports` field, which maps\n // `lib/index` to `lib-commonjs/index.js`\n const rushLibEntrypoint: string = await Import.resolveModuleAsync({\n modulePath: '@microsoft/rush-lib/lib/index',\n baseFolderPath: expectedRushPath\n });\n const rushCliEntrypoint: typeof import('@microsoft/rush-lib') = require(rushLibEntrypoint);\n // For newer rush-lib, RushCommandSelector can test whether \"rushx\" is supported or not\n RushCommandSelector.execute(this._currentPackageVersion, rushCliEntrypoint, executeOptions);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"RushVersionSelector.js","sourceRoot":"","sources":["../src/RushVersionSelector.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'node:path';\n\nimport * as semver from 'semver';\n\nimport { LockFile, Import } from '@rushstack/node-core-library';\nimport { Utilities } from '@microsoft/rush-lib/lib/utilities/Utilities';\nimport { _FlagFile, _RushGlobalFolder, type ILaunchOptions } from '@microsoft/rush-lib';\n\nimport { RushCommandSelector } from './RushCommandSelector';\nimport type { MinimalRushConfiguration } from './MinimalRushConfiguration';\n\nconst MAX_INSTALL_ATTEMPTS: number = 3;\n\nexport class RushVersionSelector {\n private _rushGlobalFolder: _RushGlobalFolder;\n private _currentPackageVersion: string;\n\n public constructor(currentPackageVersion: string) {\n this._rushGlobalFolder = new _RushGlobalFolder();\n this._currentPackageVersion = currentPackageVersion;\n }\n\n public async ensureRushVersionInstalledAsync(\n version: string,\n configuration: MinimalRushConfiguration | undefined,\n executeOptions: ILaunchOptions\n ): Promise<void> {\n const isLegacyRushVersion: boolean = semver.lt(version, '4.0.0');\n const expectedRushPath: string = path.join(this._rushGlobalFolder.nodeSpecificPath, `rush-${version}`);\n\n const installMarker: _FlagFile = new _FlagFile(expectedRushPath, 'last-install', {\n node: process.versions.node\n });\n\n let installIsValid: boolean = await installMarker.isValidAsync();\n if (!installIsValid) {\n // Need to install Rush\n console.log(`Rush version ${version} is not currently installed. Installing...`);\n\n const resourceName: string = `rush-${version}`;\n\n console.log(`Trying to acquire lock for ${resourceName}`);\n\n const lock: LockFile = await LockFile.acquireAsync(expectedRushPath, resourceName);\n installIsValid = await installMarker.isValidAsync();\n if (installIsValid) {\n console.log('Another process performed the installation.');\n } else {\n await Utilities.installPackageInDirectoryAsync({\n directory: expectedRushPath,\n packageName: isLegacyRushVersion ? '@microsoft/rush' : '@microsoft/rush-lib',\n version: version,\n tempPackageTitle: 'rush-local-install',\n maxInstallAttempts: MAX_INSTALL_ATTEMPTS,\n // This is using a local configuration to install a package in a shared global location.\n // Generally that's a bad practice, but in this case if we can successfully install\n // the package at all, we can reasonably assume it's good for all the repositories.\n // In particular, we'll assume that two different NPM registries cannot have two\n // different implementations of the same version of the same package.\n // This was needed for: https://github.com/microsoft/rushstack/issues/691\n commonRushConfigFolder: configuration ? configuration.commonRushConfigFolder : undefined,\n suppressOutput: true,\n // Filter out npm-incompatible properties (e.g. pnpm-specific settings) from .npmrc\n // since this installation always uses npm regardless of the repo's package manager.\n filterNpmIncompatibleProperties: true\n });\n\n console.log(`Successfully installed Rush version ${version} in ${expectedRushPath}.`);\n\n // If we've made it here without exception, write the flag file\n await installMarker.createAsync();\n\n lock.release();\n }\n }\n\n if (semver.lt(version, '3.0.20')) {\n // In old versions, requiring the entry point invoked the command-line parser immediately,\n // so fail if \"rushx\" or \"rush-pnpm\" was used\n RushCommandSelector.failIfNotInvokedAsRush(version);\n require(path.join(expectedRushPath, 'node_modules', '@microsoft', 'rush', 'lib', 'rush'));\n } else if (semver.lt(version, '4.0.0')) {\n // In old versions, requiring the entry point invoked the command-line parser immediately,\n // so fail if \"rushx\" or \"rush-pnpm\" was used\n RushCommandSelector.failIfNotInvokedAsRush(version);\n require(path.join(expectedRushPath, 'node_modules', '@microsoft', 'rush', 'lib', 'start'));\n } else {\n // Explicitly resolve the entry point for rush-lib, rather than using a simple require, because\n // newer versions of rush-lib use the package.json `exports` field, which maps\n // `lib/index` to `lib-commonjs/index.js`\n const rushLibEntrypoint: string = await Import.resolveModuleAsync({\n modulePath: '@microsoft/rush-lib/lib/index',\n baseFolderPath: expectedRushPath\n });\n const rushCliEntrypoint: typeof import('@microsoft/rush-lib') = require(rushLibEntrypoint);\n // For newer rush-lib, RushCommandSelector can test whether \"rushx\" is supported or not\n RushCommandSelector.execute(this._currentPackageVersion, rushCliEntrypoint, executeOptions);\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/rush",
3
- "version": "5.172.1",
3
+ "version": "5.174.0",
4
4
  "description": "A professional solution for consolidating all your JavaScript projects in one Git repo",
5
5
  "keywords": [
6
6
  "install",
@@ -31,19 +31,18 @@
31
31
  "license": "MIT",
32
32
  "dependencies": {
33
33
  "semver": "~7.5.4",
34
- "@microsoft/rush-lib": "5.172.1",
35
- "@rushstack/terminal": "0.22.3",
36
- "@rushstack/node-core-library": "5.20.3"
34
+ "@microsoft/rush-lib": "5.174.0",
35
+ "@rushstack/terminal": "0.22.5",
36
+ "@rushstack/node-core-library": "5.22.0"
37
37
  },
38
38
  "devDependencies": {
39
39
  "eslint": "~9.37.0",
40
- "@types/heft-jest": "1.0.1",
41
40
  "@types/semver": "7.5.0",
42
- "@rushstack/heft": "1.2.7",
43
- "local-node-rig": "1.0.0",
44
- "@rushstack/rush-amazon-s3-build-cache-plugin": "5.172.1",
45
- "@rushstack/rush-azure-storage-build-cache-plugin": "5.172.1",
46
- "@rushstack/rush-http-build-cache-plugin": "5.172.1"
41
+ "@rushstack/heft": "1.2.12",
42
+ "@rushstack/rush-http-build-cache-plugin": "5.174.0",
43
+ "@rushstack/rush-amazon-s3-build-cache-plugin": "5.174.0",
44
+ "@rushstack/rush-azure-storage-build-cache-plugin": "5.174.0",
45
+ "local-node-rig": "1.0.0"
47
46
  },
48
47
  "exports": {
49
48
  "./lib/*": {