@rushstack/rush-sdk 5.78.1 → 5.80.0-pr3481.7

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.
Files changed (2) hide show
  1. package/dist/rush-lib.d.ts +373 -27
  2. package/package.json +9 -9
@@ -136,6 +136,59 @@ export declare class ApprovedPackagesPolicy {
136
136
  get nonbrowserApprovedPackages(): ApprovedPackagesConfiguration;
137
137
  }
138
138
 
139
+ /**
140
+ * A base class for flag file.
141
+ * @internal
142
+ */
143
+ export declare class _BaseFlag<T extends object = JsonObject> {
144
+ /**
145
+ * Flag file path
146
+ */
147
+ protected _path: string;
148
+ /**
149
+ * Content of the flag
150
+ */
151
+ protected _state: T;
152
+ /**
153
+ * Whether the current state is modified
154
+ */
155
+ protected _isModified: boolean;
156
+ /**
157
+ * Creates a new flag file
158
+ * @param folderPath - the folder that this flag is managing
159
+ * @param state - optional, the state that should be managed or compared
160
+ */
161
+ constructor(folderPath: string, state?: Partial<T>);
162
+ /**
163
+ * Returns true if the file exists and the contents match the current state.
164
+ */
165
+ isValid(): boolean;
166
+ /**
167
+ * Writes the flag file to disk with the current state
168
+ */
169
+ create(): void;
170
+ /**
171
+ * Merge new data into current state by lodash "merge"
172
+ */
173
+ mergeFromObject(data: JsonObject): void;
174
+ /**
175
+ * Writes the flag file to disk with the current state if modified
176
+ */
177
+ saveIfModified(): void;
178
+ /**
179
+ * Removes the flag file
180
+ */
181
+ clear(): void;
182
+ /**
183
+ * Returns the full path to the flag file
184
+ */
185
+ get path(): string;
186
+ /**
187
+ * Returns the name of the flag file
188
+ */
189
+ protected get flagName(): string;
190
+ }
191
+
139
192
  /**
140
193
  * Use this class to load and save the "common/config/rush/build-cache.json" config file.
141
194
  * This file provides configuration options for cached project build output.
@@ -887,6 +940,11 @@ export declare interface IExperimentsJson {
887
940
  * in common/config/rush/command-line.json.
888
941
  */
889
942
  phasedCommands?: boolean;
943
+ /**
944
+ * If true, rush install or rush update implicitly specify --ignore-scripts during pnpm install,
945
+ * and run install lifecycle scripts by pnpm rebuild --pending after pnpm install successfully.
946
+ */
947
+ deferredInstallationScripts?: boolean;
890
948
  }
891
949
 
892
950
  /**
@@ -953,6 +1011,50 @@ declare interface IIndividualVersionJson extends IVersionPolicyJson {
953
1011
  lockedMajor?: number;
954
1012
  }
955
1013
 
1014
+ /**
1015
+ * This represents the JSON data structure for the "last-install.flag" file.
1016
+ * @internal
1017
+ */
1018
+ export declare interface _ILastInstallFlagJson {
1019
+ /**
1020
+ * Current node version
1021
+ */
1022
+ node: string;
1023
+ /**
1024
+ * Current package manager name
1025
+ */
1026
+ packageManager: PackageManagerName;
1027
+ /**
1028
+ * Current package manager version
1029
+ */
1030
+ packageManagerVersion: string;
1031
+ /**
1032
+ * Current rush json folder
1033
+ */
1034
+ rushJsonFolder: string;
1035
+ /**
1036
+ * The content of package.json, used in the flag file of autoinstaller
1037
+ */
1038
+ packageJson?: IPackageJson;
1039
+ /**
1040
+ * Same with pnpmOptions.pnpmStorePath in rush.json
1041
+ */
1042
+ storePath?: string;
1043
+ /**
1044
+ * True when "useWorkspaces" is true in rush.json
1045
+ */
1046
+ workspaces?: true;
1047
+ /**
1048
+ * True when user explicitly specify "--ignore-scripts" CLI parameter or deferredInstallationScripts
1049
+ */
1050
+ ignoreScripts?: true;
1051
+ /**
1052
+ * When specified, it is a list of selected projects during partial install
1053
+ * It is undefined when full install
1054
+ */
1055
+ selectedProjectNames?: string[];
1056
+ }
1057
+
956
1058
  /**
957
1059
  * Options to pass to the rush "launch" functions.
958
1060
  *
@@ -1086,6 +1188,10 @@ export declare interface IOperationExecutionResult {
1086
1188
  * Object used to report a summary at the end of the Rush invocation.
1087
1189
  */
1088
1190
  readonly stdioSummarizer: StdioSummarizer;
1191
+ /**
1192
+ * The value indicates the duration of the same operation without cache hit.
1193
+ */
1194
+ readonly nonCachedDurationMs: number | undefined;
1089
1195
  }
1090
1196
 
1091
1197
  /**
@@ -1169,6 +1275,31 @@ export declare interface IOperationRunnerContext {
1169
1275
  * Object used to report a summary at the end of the Rush invocation.
1170
1276
  */
1171
1277
  stdioSummarizer: StdioSummarizer;
1278
+ /**
1279
+ * Object used to record state of the operation.
1280
+ *
1281
+ * @internal
1282
+ */
1283
+ _operationStateFile?: _OperationStateFile;
1284
+ /**
1285
+ * Object used to track elapsed time.
1286
+ */
1287
+ stopwatch: IStopwatchResult;
1288
+ }
1289
+
1290
+ /**
1291
+ * @internal
1292
+ */
1293
+ export declare interface _IOperationStateFileOptions {
1294
+ rushProject: RushConfigurationProject;
1295
+ phase: IPhase;
1296
+ }
1297
+
1298
+ /**
1299
+ * @internal
1300
+ */
1301
+ export declare interface _IOperationStateJson {
1302
+ nonCachedDurationMs: number;
1172
1303
  }
1173
1304
 
1174
1305
  /**
@@ -1241,11 +1372,11 @@ export declare interface IPhasedCommand extends IRushCommand {
1241
1372
  */
1242
1373
  export declare interface _IPnpmOptionsJson extends IPackageManagerOptionsJsonBase {
1243
1374
  /**
1244
- * The store resolution method for PNPM to use
1375
+ * {@inheritDoc PnpmOptionsConfiguration.pnpmStore}
1245
1376
  */
1246
1377
  pnpmStore?: PnpmStoreOptions;
1247
1378
  /**
1248
- * Should PNPM fail if peer dependencies aren't installed?
1379
+ * {@inheritDoc PnpmOptionsConfiguration.strictPeerDependencies}
1249
1380
  */
1250
1381
  strictPeerDependencies?: boolean;
1251
1382
  /**
@@ -1256,6 +1387,52 @@ export declare interface _IPnpmOptionsJson extends IPackageManagerOptionsJsonBas
1256
1387
  * {@inheritDoc PnpmOptionsConfiguration.useWorkspaces}
1257
1388
  */
1258
1389
  useWorkspaces?: boolean;
1390
+ /**
1391
+ * {@inheritDoc PnpmOptionsConfiguration.globalOverrides}
1392
+ */
1393
+ globalOverrides?: Record<string, string>;
1394
+ /**
1395
+ * {@inheritDoc PnpmOptionsConfiguration.globalPeerDependencyRules}
1396
+ */
1397
+ globalPeerDependencyRules?: IPnpmPeerDependencyRules;
1398
+ /**
1399
+ * {@inheritDoc PnpmOptionsConfiguration.globalPackageExtensions}
1400
+ */
1401
+ globalPackageExtensions?: Record<string, IPnpmPackageExtension>;
1402
+ /**
1403
+ * {@inheritDoc PnpmOptionsConfiguration.globalNeverBuiltDependencies}
1404
+ */
1405
+ globalNeverBuiltDependencies?: string[];
1406
+ /**
1407
+ * {@inheritDoc PnpmOptionsConfiguration.globalAllowedDeprecatedVersions}
1408
+ */
1409
+ globalAllowedDeprecatedVersions?: Record<string, string>;
1410
+ /**
1411
+ * {@inheritDoc PnpmOptionsConfiguration.unsupportedPackageJsonSettings}
1412
+ */
1413
+ unsupportedPackageJsonSettings?: unknown;
1414
+ }
1415
+
1416
+ declare interface IPnpmPackageExtension {
1417
+ dependencies?: Record<string, string>;
1418
+ optionalDependencies?: Record<string, string>;
1419
+ peerDependencies?: Record<string, string>;
1420
+ peerDependenciesMeta?: IPnpmPeerDependenciesMeta;
1421
+ }
1422
+
1423
+ declare interface IPnpmPeerDependenciesMeta {
1424
+ [packageName: string]: {
1425
+ optional?: boolean;
1426
+ };
1427
+ }
1428
+
1429
+ /**
1430
+ * @beta
1431
+ */
1432
+ declare interface IPnpmPeerDependencyRules {
1433
+ ignoreMissing?: string[];
1434
+ allowAny?: string[];
1435
+ allowedVersions?: Record<string, string>;
1259
1436
  }
1260
1437
 
1261
1438
  declare interface IRawRepoState {
@@ -1318,6 +1495,7 @@ declare interface IRushConfigurationProjectJson {
1318
1495
  skipRushCheck?: boolean;
1319
1496
  publishFolder?: string;
1320
1497
  tags?: string[];
1498
+ splitWorkspace?: boolean;
1321
1499
  }
1322
1500
 
1323
1501
  /**
@@ -1342,6 +1520,16 @@ declare interface IRushConfigurationProjectOptions {
1342
1520
  allowedProjectTags: Set<string> | undefined;
1343
1521
  }
1344
1522
 
1523
+ /**
1524
+ * The filter parameters to search from all projects.
1525
+ */
1526
+ declare interface IRushConfigurationProjectsFilter {
1527
+ /**
1528
+ * If true, filter out projects that specify splitWorkspace as true.
1529
+ */
1530
+ splitWorkspace: boolean;
1531
+ }
1532
+
1345
1533
  /**
1346
1534
  * Part of IRushConfigurationJson.
1347
1535
  */
@@ -1350,6 +1538,7 @@ declare interface IRushGitPolicyJson {
1350
1538
  sampleEmail?: string;
1351
1539
  versionBumpCommitMessage?: string;
1352
1540
  changeLogUpdateCommitMessage?: string;
1541
+ changefilesCommitMessage?: string;
1353
1542
  tagSeparator?: string;
1354
1543
  }
1355
1544
 
@@ -1431,7 +1620,7 @@ declare interface IRushVariantOptionsJson {
1431
1620
 
1432
1621
  /**
1433
1622
  * Represents a readonly view of a `Stopwatch`.
1434
- * @alpha
1623
+ * @beta
1435
1624
  */
1436
1625
  export declare interface IStopwatchResult {
1437
1626
  /**
@@ -1548,6 +1737,10 @@ export declare interface ITelemetryOperationResult {
1548
1737
  * If the operation was blocked, will be `undefined`.
1549
1738
  */
1550
1739
  endTimestampMs?: number;
1740
+ /**
1741
+ * Duration in milliseconds when the operation does not hit cache
1742
+ */
1743
+ nonCachedDurationMs?: number;
1551
1744
  }
1552
1745
 
1553
1746
  /**
@@ -1600,16 +1793,9 @@ export declare interface _IYarnOptionsJson extends IPackageManagerOptionsJsonBas
1600
1793
  * it can invalidate the last install.
1601
1794
  * @internal
1602
1795
  */
1603
- export declare class _LastInstallFlag {
1604
- private _path;
1605
- private _state;
1606
- /**
1607
- * Creates a new LastInstall flag
1608
- * @param folderPath - the folder that this flag is managing
1609
- * @param state - optional, the state that should be managed or compared
1610
- */
1611
- constructor(folderPath: string, state?: JsonObject);
1796
+ export declare class _LastInstallFlag extends _BaseFlag<_ILastInstallFlagJson> {
1612
1797
  /**
1798
+ * @override
1613
1799
  * Returns true if the file exists and the contents match the current state.
1614
1800
  */
1615
1801
  isValid(): boolean;
@@ -1619,20 +1805,8 @@ export declare class _LastInstallFlag {
1619
1805
  *
1620
1806
  * @internal
1621
1807
  */
1622
- checkValidAndReportStoreIssues(): boolean;
1808
+ checkValidAndReportStoreIssues(rushVerb: string): boolean;
1623
1809
  private _isValid;
1624
- /**
1625
- * Writes the flag file to disk with the current state
1626
- */
1627
- create(): void;
1628
- /**
1629
- * Removes the flag file
1630
- */
1631
- clear(): void;
1632
- /**
1633
- * Returns the full path to the flag file
1634
- */
1635
- get path(): string;
1636
1810
  /**
1637
1811
  * Returns the name of the flag file
1638
1812
  */
@@ -1860,6 +2034,32 @@ export declare class Operation {
1860
2034
  deleteDependency(dependency: Operation): void;
1861
2035
  }
1862
2036
 
2037
+ /**
2038
+ * A helper class for managing the state file of a operation.
2039
+ *
2040
+ * @internal
2041
+ */
2042
+ export declare class _OperationStateFile {
2043
+ private readonly _rushProject;
2044
+ private readonly _filename;
2045
+ private _state;
2046
+ constructor(options: _IOperationStateFileOptions);
2047
+ private static _getFilename;
2048
+ /**
2049
+ * ProjectBuildCache expects the relative path for better logging
2050
+ *
2051
+ * @internal
2052
+ */
2053
+ static getFilenameRelativeToProjectRoot(phase: IPhase): string;
2054
+ /**
2055
+ * Returns the filename of the metadata file.
2056
+ */
2057
+ get filename(): string;
2058
+ get state(): _IOperationStateJson | undefined;
2059
+ writeAsync(json: _IOperationStateJson): Promise<void>;
2060
+ tryRestoreAsync(): Promise<_IOperationStateJson | undefined>;
2061
+ }
2062
+
1863
2063
  /**
1864
2064
  * Enumeration defining potential states of an operation
1865
2065
  * @beta
@@ -2042,6 +2242,8 @@ export declare class PhasedCommandHooks {
2042
2242
 
2043
2243
  /**
2044
2244
  * Options that are only used when the PNPM package manager is selected.
2245
+ * Use this class to load "common/config/rush/pnpm-config.json" file,
2246
+ * or, load json from "pnpmOptions" field in "rush.json" for legacy support.
2045
2247
  *
2046
2248
  * @remarks
2047
2249
  * It is valid to define these options in rush.json even if the PNPM package manager
@@ -2050,6 +2252,7 @@ export declare class PhasedCommandHooks {
2050
2252
  * @public
2051
2253
  */
2052
2254
  export declare class PnpmOptionsConfiguration extends PackageManagerOptionsConfigurationBase {
2255
+ private static _jsonSchema;
2053
2256
  /**
2054
2257
  * The method used to resolve the store used by PNPM.
2055
2258
  *
@@ -2099,11 +2302,92 @@ export declare class PnpmOptionsConfiguration extends PackageManagerOptionsConfi
2099
2302
  * If true, then Rush will use the workspaces feature to install and link packages when invoking PNPM.
2100
2303
  *
2101
2304
  * @remarks
2102
- * The default value is false. (For now.)
2305
+ * The default value is true. (For now.)
2103
2306
  */
2104
2307
  readonly useWorkspaces: boolean;
2308
+ /**
2309
+ * The "globalOverrides" setting provides a simple mechanism for overriding version selections
2310
+ * for all dependencies of all projects in the monorepo workspace. The settings are copied
2311
+ * into the `pnpm.overrides` field of the `common/temp/package.json` file that is generated
2312
+ * by Rush during installation.
2313
+ *
2314
+ * Order of precedence: `.pnpmfile.cjs` has the highest precedence, followed by
2315
+ * `unsupportedPackageJsonSettings`, `globalPeerDependencyRules`, `globalPackageExtensions`,
2316
+ * and `globalOverrides` has lowest precedence.
2317
+ *
2318
+ * PNPM documentation: https://pnpm.io/package_json#pnpmoverrides
2319
+ */
2320
+ readonly globalOverrides: Record<string, string> | undefined;
2321
+ /**
2322
+ * The `globalPeerDependencyRules` setting provides various settings for suppressing validation errors
2323
+ * that are reported during installation with `strictPeerDependencies=true`. The settings are copied
2324
+ * into the `pnpm.peerDependencyRules` field of the `common/temp/package.json` file that is generated
2325
+ * by Rush during installation.
2326
+ *
2327
+ * Order of precedence: `.pnpmfile.cjs` has the highest precedence, followed by
2328
+ * `unsupportedPackageJsonSettings`, `globalPeerDependencyRules`, `globalPackageExtensions`,
2329
+ * and `globalOverrides` has lowest precedence.
2330
+ *
2331
+ * https://pnpm.io/package_json#pnpmpeerdependencyrules
2332
+ */
2333
+ readonly globalPeerDependencyRules: IPnpmPeerDependencyRules | undefined;
2334
+ /**
2335
+ * The `globalPackageExtension` setting provides a way to patch arbitrary package.json fields
2336
+ * for any PNPM dependency of the monorepo. The settings are copied into the `pnpm.packageExtensions`
2337
+ * field of the `common/temp/package.json` file that is generated by Rush during installation.
2338
+ * The `globalPackageExtension` setting has similar capabilities as `.pnpmfile.cjs` but without
2339
+ * the downsides of an executable script (nondeterminism, unreliable caching, performance concerns).
2340
+ *
2341
+ * Order of precedence: `.pnpmfile.cjs` has the highest precedence, followed by
2342
+ * `unsupportedPackageJsonSettings`, `globalPeerDependencyRules`, `globalPackageExtensions`,
2343
+ * and `globalOverrides` has lowest precedence.
2344
+ *
2345
+ * PNPM documentation: https://pnpm.io/package_json#pnpmpackageextensions
2346
+ */
2347
+ readonly globalPackageExtensions: Record<string, IPnpmPackageExtension> | undefined;
2348
+ /**
2349
+ * The `globalNeverBuiltDependencies` setting suppresses the `preinstall`, `install`, and `postinstall`
2350
+ * lifecycle events for the specified NPM dependencies. This is useful for scripts with poor practices
2351
+ * such as downloading large binaries without retries or attempting to invoke OS tools such as
2352
+ * a C++ compiler. (PNPM's terminology refers to these lifecycle events as "building" a package;
2353
+ * it has nothing to do with build system operations such as `rush build` or `rushx build`.)
2354
+ * The settings are copied into the `pnpm.neverBuiltDependencies` field of the `common/temp/package.json`
2355
+ * file that is generated by Rush during installation.
2356
+ *
2357
+ * PNPM documentation: https://pnpm.io/package_json#pnpmneverbuiltdependencies
2358
+ */
2359
+ readonly globalNeverBuiltDependencies: string[] | undefined;
2360
+ /**
2361
+ * The `globalAllowedDeprecatedVersions` setting suppresses installation warnings for package
2362
+ * versions that the NPM registry reports as being deprecated. This is useful if the
2363
+ * deprecated package is an indirect dependency of an external package that has not released a fix.
2364
+ * The settings are copied into the `pnpm.allowedDeprecatedVersions` field of the `common/temp/package.json`
2365
+ * file that is generated by Rush during installation.
2366
+ *
2367
+ * PNPM documentation: https://pnpm.io/package_json#pnpmalloweddeprecatedversions
2368
+ *
2369
+ * If you are working to eliminate a deprecated version, it's better to specify `allowedDeprecatedVersions`
2370
+ * in the package.json file for individual Rush projects.
2371
+ */
2372
+ readonly globalAllowedDeprecatedVersions: Record<string, string> | undefined;
2373
+ /**
2374
+ * (USE AT YOUR OWN RISK) This is a free-form property bag that will be copied into
2375
+ * the `common/temp/package.json` file that is generated by Rush during installation.
2376
+ * This provides a way to experiment with new PNPM features. These settings will override
2377
+ * any other Rush configuration associated with a given JSON field except for `.pnpmfile.cjs`.
2378
+ *
2379
+ * USAGE OF THIS SETTING IS NOT SUPPORTED BY THE RUSH MAINTAINERS AND MAY CAUSE RUSH
2380
+ * TO MALFUNCTION. If you encounter a missing PNPM setting that you believe should
2381
+ * be supported, please create a GitHub issue or PR. Note that Rush does not aim to
2382
+ * support every possible PNPM setting, but rather to promote a battle-tested installation
2383
+ * strategy that is known to provide a good experience for large teams with lots of projects.
2384
+ */
2385
+ readonly unsupportedPackageJsonSettings: unknown | undefined;
2386
+ private constructor();
2105
2387
  /** @internal */
2106
- constructor(json: _IPnpmOptionsJson, commonTempFolder: string);
2388
+ static loadFromJsonFileOrThrow(jsonFilename: string, commonTempFolder: string): PnpmOptionsConfiguration;
2389
+ /** @internal */
2390
+ static loadFromJsonObject(json: _IPnpmOptionsJson, commonTempFolder: string): PnpmOptionsConfiguration;
2107
2391
  }
2108
2392
 
2109
2393
  /**
@@ -2285,6 +2569,7 @@ export declare class RushConfiguration {
2285
2569
  private _changesFolder;
2286
2570
  private _commonFolder;
2287
2571
  private _commonTempFolder;
2572
+ private _commonTempSplitFolder;
2288
2573
  private _commonScriptsFolder;
2289
2574
  private _commonRushConfigFolder;
2290
2575
  private _packageManager;
@@ -2293,8 +2578,10 @@ export declare class RushConfiguration {
2293
2578
  private _npmTmpFolder;
2294
2579
  private _yarnCacheFolder;
2295
2580
  private _shrinkwrapFilename;
2581
+ private _splitWorkspaceShrinkwrapFilename;
2296
2582
  private _tempShrinkwrapFilename;
2297
2583
  private _tempShrinkwrapPreinstallFilename;
2584
+ private _tempSplitWorkspaceShrinkwrapFilename;
2298
2585
  private _currentVariantJsonFilename;
2299
2586
  private _packageManagerToolVersion;
2300
2587
  private _packageManagerToolFilename;
@@ -2310,6 +2597,7 @@ export declare class RushConfiguration {
2310
2597
  private _gitSampleEmail;
2311
2598
  private _gitVersionBumpCommitMessage;
2312
2599
  private _gitChangeLogUpdateCommitMessage;
2600
+ private _gitChangefilesCommitMessage;
2313
2601
  private _gitTagSeparator;
2314
2602
  private _hotfixChangeEnabled;
2315
2603
  private _repositoryUrls;
@@ -2325,6 +2613,8 @@ export declare class RushConfiguration {
2325
2613
  private _projects;
2326
2614
  private _projectsByName;
2327
2615
  private _projectsByTag;
2616
+ private _filteredProjectsCache;
2617
+ private _hasSplitWorkspaceProject;
2328
2618
  private _commonVersionsConfigurationsByVariant;
2329
2619
  private _versionPolicyConfiguration;
2330
2620
  private _versionPolicyConfigurationFilePath;
@@ -2417,6 +2707,12 @@ export declare class RushConfiguration {
2417
2707
  * Example: `C:\MyRepo\common\temp`
2418
2708
  */
2419
2709
  get commonTempFolder(): string;
2710
+ /**
2711
+ * The folder where temporary files will be stored. This is always a subfolder called "temp"
2712
+ * under the common folder.
2713
+ * Example: `C:\MyRepo\common\temp-split`
2714
+ */
2715
+ get commonTempSplitFolder(): string;
2420
2716
  /**
2421
2717
  * The folder where automation scripts are stored. This is always a subfolder called "scripts"
2422
2718
  * under the common folder.
@@ -2474,6 +2770,7 @@ export declare class RushConfiguration {
2474
2770
  * Example: `npm-shrinkwrap.json` or `pnpm-lock.yaml`
2475
2771
  */
2476
2772
  get shrinkwrapFilename(): string;
2773
+ get splitWorkspaceShrinkwrapFilename(): string;
2477
2774
  /**
2478
2775
  * The full path of the temporary shrinkwrap file that is used during "rush install".
2479
2776
  * This file may get rewritten by the package manager during installation.
@@ -2482,6 +2779,14 @@ export declare class RushConfiguration {
2482
2779
  * Example: `C:\MyRepo\common\temp\npm-shrinkwrap.json` or `C:\MyRepo\common\temp\pnpm-lock.yaml`
2483
2780
  */
2484
2781
  get tempShrinkwrapFilename(): string;
2782
+ /**
2783
+ * The full path of the temporary shrinkwrap file for split workspace that is used during
2784
+ * "rush install". This file may get rewritten by the package manager during installation.
2785
+ * @remarks
2786
+ * This property merely reports the filename; the file itself may not actually exist.
2787
+ * Example: `C:\MyRepo\common\temp-split\pnpm-lock.yaml`
2788
+ */
2789
+ get tempSplitWorkspaceShrinkwrapFilename(): string;
2485
2790
  /**
2486
2791
  * The full path of a backup copy of tempShrinkwrapFilename. This backup copy is made
2487
2792
  * before installation begins, and can be compared to determine how the package manager
@@ -2582,6 +2887,11 @@ export declare class RushConfiguration {
2582
2887
  * The commit message to use when committing change log files 'rush version'
2583
2888
  */
2584
2889
  get gitChangeLogUpdateCommitMessage(): string | undefined;
2890
+ /**
2891
+ * [Part of the "gitPolicy" feature.]
2892
+ * The commit message to use when committing change log files 'rush version'
2893
+ */
2894
+ get gitChangefilesCommitMessage(): string | undefined;
2585
2895
  /**
2586
2896
  * [Part of the "gitPolicy" feature.]
2587
2897
  * The separator between package name and version in git tag.
@@ -2641,6 +2951,11 @@ export declare class RushConfiguration {
2641
2951
  * @beta
2642
2952
  */
2643
2953
  get projectsByTag(): ReadonlyMap<string, ReadonlySet<RushConfigurationProject>>;
2954
+ /**
2955
+ * Search for projects according to filter
2956
+ * @beta
2957
+ */
2958
+ getFilteredProjects(filter: IRushConfigurationProjectsFilter): RushConfigurationProject[];
2644
2959
  /**
2645
2960
  * {@inheritDoc NpmOptionsConfiguration}
2646
2961
  */
@@ -2687,6 +3002,10 @@ export declare class RushConfiguration {
2687
3002
  * The rush hooks. It allows customized scripts to run at the specified point.
2688
3003
  */
2689
3004
  get packageNameParser(): PackageNameParser;
3005
+ /**
3006
+ * Is there any split workspace project.
3007
+ */
3008
+ get hasSplitWorkspaceProject(): boolean;
2690
3009
  /**
2691
3010
  * Gets the path to the common-versions.json config file for a specific variant.
2692
3011
  * @param variant - The name of the current variant in use by the active command.
@@ -2719,6 +3038,11 @@ export declare class RushConfiguration {
2719
3038
  * @param variant - The name of the current variant in use by the active command.
2720
3039
  */
2721
3040
  getCommittedShrinkwrapFilename(variant?: string | undefined): string;
3041
+ /**
3042
+ * Gets the committed shrinkwrap file name for split workspace.
3043
+ * @param variant - The name of the current variant in use by the active command.
3044
+ */
3045
+ getCommittedSplitWorkspaceShrinkwrapFilename(): string;
2722
3046
  /**
2723
3047
  * Gets the absolute path for "pnpmfile.js" for a specific variant.
2724
3048
  * @param variant - The name of the current variant in use by the active command.
@@ -2773,6 +3097,12 @@ export declare class RushConfiguration {
2773
3097
  */
2774
3098
  tryGetProjectForPath(currentFolderPath: string): RushConfigurationProject | undefined;
2775
3099
  private _getVariantConfigFolderPath;
3100
+ /**
3101
+ * Split workspace can only works on PNPM with "useWorkspaces" enabled.
3102
+ * The workspace project can NOT depend on a split workspace project.
3103
+ * The split workspace project CAN depend on a workspace project.
3104
+ */
3105
+ private _validateSplitWorkspaceRelationships;
2776
3106
  }
2777
3107
 
2778
3108
  /**
@@ -2798,6 +3128,7 @@ export declare class RushConfigurationProject {
2798
3128
  private readonly _publishFolder;
2799
3129
  private readonly _rushConfiguration;
2800
3130
  private readonly _tags;
3131
+ private readonly _splitWorkspace;
2801
3132
  private _versionPolicy;
2802
3133
  private _dependencyProjects;
2803
3134
  private _consumingProjects;
@@ -2965,6 +3296,11 @@ export declare class RushConfigurationProject {
2965
3296
  * @beta
2966
3297
  */
2967
3298
  get tags(): ReadonlySet<string>;
3299
+ /**
3300
+ * Whether this project is a split workspace project.
3301
+ * @beta
3302
+ */
3303
+ get splitWorkspace(): boolean;
2968
3304
  }
2969
3305
 
2970
3306
  /**
@@ -3012,6 +3348,12 @@ export declare class RushConstants {
3012
3348
  * Example: `C:\MyRepo\common\temp`
3013
3349
  */
3014
3350
  static readonly rushTempFolderName: string;
3351
+ /**
3352
+ * The folder name ("temp-split") under the common folder, or under the .rush folder in each project's directory where
3353
+ * temporary files will be stored.
3354
+ * Example: `C:\MyRepo\common\temp-split`
3355
+ */
3356
+ static readonly rushTempSplitFolderName: string;
3015
3357
  /**
3016
3358
  * The folder name ("projects") where temporary projects will be stored.
3017
3359
  * Example: `C:\MyRepo\common\temp\projects`
@@ -3086,6 +3428,10 @@ export declare class RushConstants {
3086
3428
  * Experiments configuration file.
3087
3429
  */
3088
3430
  static readonly experimentsFilename: string;
3431
+ /**
3432
+ * Pnpm configuration file
3433
+ */
3434
+ static readonly pnpmConfigFilename: string;
3089
3435
  /**
3090
3436
  * Rush plugins configuration file name.
3091
3437
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushstack/rush-sdk",
3
- "version": "5.78.1",
3
+ "version": "5.80.0-pr3481.7",
4
4
  "description": "An API for interacting with the Rush engine",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,18 +12,18 @@
12
12
  "typings": "dist/rush-lib.d.ts",
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
- "@rushstack/node-core-library": "3.52.0",
15
+ "@rushstack/node-core-library": "3.53.0",
16
16
  "@types/node-fetch": "1.6.9",
17
17
  "tapable": "2.2.1"
18
18
  },
19
19
  "devDependencies": {
20
- "@microsoft/rush-lib": "5.78.1",
21
- "@rushstack/eslint-config": "3.0.1",
22
- "@rushstack/heft": "0.47.10",
23
- "@rushstack/heft-node-rig": "1.10.12",
24
- "@rushstack/stream-collator": "4.0.205",
25
- "@rushstack/ts-command-line": "4.12.3",
26
- "@rushstack/terminal": "0.3.74",
20
+ "@microsoft/rush-lib": "5.80.0-pr3481.7",
21
+ "@rushstack/eslint-config": "3.1.0",
22
+ "@rushstack/heft": "0.48.0",
23
+ "@rushstack/heft-node-rig": "1.11.0",
24
+ "@rushstack/stream-collator": "4.0.207",
25
+ "@rushstack/ts-command-line": "4.12.4",
26
+ "@rushstack/terminal": "0.3.76",
27
27
  "@types/heft-jest": "1.0.1",
28
28
  "@types/semver": "7.3.5",
29
29
  "@types/webpack-env": "1.13.0"