@rushstack/rush-sdk 5.109.0 → 5.109.1-pr3481.22

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 (35) hide show
  1. package/dist/rush-lib.d.ts +166 -20
  2. package/lib/api/ExperimentsConfiguration.d.ts +5 -0
  3. package/lib/api/LastInstallFlag.d.ts +58 -21
  4. package/lib/api/LastLinkFlag.d.ts +2 -6
  5. package/lib/api/RushConfiguration.d.ts +52 -0
  6. package/lib/api/RushConfigurationProject.d.ts +6 -0
  7. package/lib/api/base/BaseFlag.d.ts +50 -0
  8. package/lib/api/base/BaseFlag.js +1 -0
  9. package/lib/api/packageManager/PnpmPackageManager.d.ts +14 -0
  10. package/lib/cli/RushXCommandLine.d.ts +7 -0
  11. package/lib/cli/actions/InstallAction.d.ts +7 -0
  12. package/lib/cli/actions/ListAction.d.ts +4 -0
  13. package/lib/cli/actions/UpdateAction.d.ts +7 -0
  14. package/lib/cli/parsing/SelectionParameterSet.d.ts +17 -3
  15. package/lib/index.d.ts +2 -1
  16. package/lib/logic/PurgeManager.d.ts +1 -0
  17. package/lib/logic/RushConstants.d.ts +6 -0
  18. package/lib/logic/UnlinkManager.d.ts +2 -2
  19. package/lib/logic/base/BaseInstallManagerTypes.d.ts +23 -0
  20. package/lib/logic/installManager/InstallHelpers.d.ts +1 -0
  21. package/lib/logic/pnpm/IPnpmfile.d.ts +16 -0
  22. package/lib/logic/pnpm/PnpmProjectShrinkwrapFile.d.ts +8 -1
  23. package/lib/logic/pnpm/PnpmShrinkwrapFile.d.ts +17 -0
  24. package/lib/logic/pnpm/SplitWorkspaceGlobalPnpmfileShim.d.ts +3 -0
  25. package/lib/logic/pnpm/SplitWorkspaceGlobalPnpmfileShim.js +1 -0
  26. package/lib/logic/pnpm/SplitWorkspacePnpmfileConfiguration.d.ts +23 -0
  27. package/lib/logic/pnpm/SplitWorkspacePnpmfileConfiguration.js +1 -0
  28. package/lib/logic/selectors/SplitWorkspaceProjectSelectorParser.d.ts +10 -0
  29. package/lib/logic/selectors/SplitWorkspaceProjectSelectorParser.js +1 -0
  30. package/lib/logic/versionMismatch/VersionMismatchFinderProject.d.ts +2 -0
  31. package/lib/utilities/PathConstants.d.ts +1 -0
  32. package/lib/utilities/Utilities.d.ts +6 -0
  33. package/lib/utilities/npmrcUtilities.d.ts +1 -1
  34. package/lib/utilities/objectUtilities.d.ts +5 -0
  35. package/package.json +2 -2
@@ -132,6 +132,55 @@ export declare class ApprovedPackagesPolicy {
132
132
  constructor(rushConfiguration: RushConfiguration, rushConfigurationJson: IRushConfigurationJson);
133
133
  }
134
134
 
135
+ /**
136
+ * A base class for flag file.
137
+ * @internal
138
+ */
139
+ export declare class _BaseFlag<T extends object = JsonObject> {
140
+ /**
141
+ * Flag file path
142
+ */
143
+ readonly path: string;
144
+ /**
145
+ * Content of the flag
146
+ */
147
+ protected _state: T;
148
+ /**
149
+ * Whether the current state is modified
150
+ */
151
+ protected _isModified: boolean;
152
+ /**
153
+ * Creates a new flag file
154
+ * @param folderPath - the folder that this flag is managing
155
+ * @param state - optional, the state that should be managed or compared
156
+ */
157
+ constructor(folderPath: string, state?: Partial<T>);
158
+ /**
159
+ * Returns true if the file exists and the contents match the current state.
160
+ */
161
+ isValid(): boolean;
162
+ /**
163
+ * Writes the flag file to disk with the current state
164
+ */
165
+ create(): void;
166
+ /**
167
+ * Merge new data into current state by "merge"
168
+ */
169
+ mergeFromObject(data: JsonObject): void;
170
+ /**
171
+ * Writes the flag file to disk with the current state if modified
172
+ */
173
+ saveIfModified(): void;
174
+ /**
175
+ * Removes the flag file
176
+ */
177
+ clear(): void;
178
+ /**
179
+ * Returns Name of the flag file
180
+ */
181
+ protected get flagName(): string;
182
+ }
183
+
135
184
  /**
136
185
  * Use this class to load and save the "common/config/rush/build-cache.json" config file.
137
186
  * This file provides configuration options for cached project build output.
@@ -1307,6 +1356,11 @@ export declare interface IExperimentsJson {
1307
1356
  * in common/config/rush/command-line.json.
1308
1357
  */
1309
1358
  phasedCommands?: boolean;
1359
+ /**
1360
+ * If true, rush install or rush update implicitly specify --ignore-scripts during pnpm install,
1361
+ * and run install lifecycle scripts by pnpm rebuild --pending after pnpm install successfully.
1362
+ */
1363
+ deferredInstallationScripts?: boolean;
1310
1364
  /**
1311
1365
  * If true, perform a clean install after when running `rush install` or `rush update` if the
1312
1366
  * `.npmrc` file has changed since the last install.
@@ -1386,6 +1440,51 @@ declare interface IIndividualVersionJson extends IVersionPolicyJson {
1386
1440
  lockedMajor?: number;
1387
1441
  }
1388
1442
 
1443
+ /**
1444
+ * This represents the JSON data structure for the "last-install.flag" file.
1445
+ * @internal
1446
+ */
1447
+ export declare interface _ILastInstallFlagJson {
1448
+ /**
1449
+ * Current node version
1450
+ */
1451
+ node: string;
1452
+ /**
1453
+ * Current package manager name
1454
+ */
1455
+ packageManager: PackageManagerName;
1456
+ /**
1457
+ * Current package manager version
1458
+ */
1459
+ packageManagerVersion: string;
1460
+ /**
1461
+ * Current rush json folder
1462
+ */
1463
+ rushJsonFolder: string;
1464
+ /**
1465
+ * The content of package.json, used in the flag file of autoinstaller
1466
+ */
1467
+ packageJson?: IPackageJson;
1468
+ /**
1469
+ * Same with pnpmOptions.pnpmStorePath in rush.json
1470
+ */
1471
+ storePath?: string;
1472
+ /**
1473
+ * True when "useWorkspaces" is true in rush.json
1474
+ */
1475
+ workspaces?: true;
1476
+ /**
1477
+ * True when user explicitly specify "--ignore-scripts" CLI parameter or deferredInstallationScripts
1478
+ */
1479
+ ignoreScripts?: true;
1480
+ /**
1481
+ * When specified, it is a list of selected projects during partial install
1482
+ * It is undefined when full install
1483
+ */
1484
+ selectedProjectNames?: string[];
1485
+ [key: string]: unknown;
1486
+ }
1487
+
1389
1488
  /**
1390
1489
  * Options to pass to the rush "launch" functions.
1391
1490
  *
@@ -1984,6 +2083,7 @@ declare interface IRushConfigurationProjectJson {
1984
2083
  skipRushCheck?: boolean;
1985
2084
  publishFolder?: string;
1986
2085
  tags?: string[];
2086
+ splitWorkspace?: boolean;
1987
2087
  }
1988
2088
 
1989
2089
  /**
@@ -2008,6 +2108,16 @@ declare interface IRushConfigurationProjectOptions {
2008
2108
  allowedProjectTags: Set<string> | undefined;
2009
2109
  }
2010
2110
 
2111
+ /**
2112
+ * The filter parameters to search from all projects.
2113
+ */
2114
+ declare interface IRushConfigurationProjectsFilter {
2115
+ /**
2116
+ * If true, filter out projects that specify splitWorkspace as true.
2117
+ */
2118
+ splitWorkspace: boolean;
2119
+ }
2120
+
2011
2121
  /**
2012
2122
  * Part of IRushConfigurationJson.
2013
2123
  */
@@ -2298,19 +2408,9 @@ export declare interface _IYarnOptionsJson extends IPackageManagerOptionsJsonBas
2298
2408
  * it can invalidate the last install.
2299
2409
  * @internal
2300
2410
  */
2301
- export declare class _LastInstallFlag {
2302
- private _state;
2303
- /**
2304
- * Returns the full path to the flag file
2305
- */
2306
- readonly path: string;
2307
- /**
2308
- * Creates a new LastInstall flag
2309
- * @param folderPath - the folder that this flag is managing
2310
- * @param state - optional, the state that should be managed or compared
2311
- */
2312
- constructor(folderPath: string, state?: JsonObject);
2411
+ export declare class _LastInstallFlag extends _BaseFlag<_ILastInstallFlagJson> {
2313
2412
  /**
2413
+ * @override
2314
2414
  * Returns true if the file exists and the contents match the current state.
2315
2415
  */
2316
2416
  isValid(options?: _ILockfileValidityCheckOptions): boolean;
@@ -2324,14 +2424,6 @@ export declare class _LastInstallFlag {
2324
2424
  rushVerb: string;
2325
2425
  }): boolean;
2326
2426
  private _isValid;
2327
- /**
2328
- * Writes the flag file to disk with the current state
2329
- */
2330
- create(): void;
2331
- /**
2332
- * Removes the flag file
2333
- */
2334
- clear(): void;
2335
2427
  /**
2336
2428
  * Returns the name of the flag file
2337
2429
  */
@@ -3259,6 +3351,8 @@ export declare class RushConfiguration {
3259
3351
  private _projects;
3260
3352
  private _projectsByName;
3261
3353
  private _projectsByTag;
3354
+ private _filteredProjectsCache;
3355
+ private _hasSplitWorkspaceProject;
3262
3356
  private _commonVersionsConfigurationsByVariant;
3263
3357
  /**
3264
3358
  * The name of the package manager being used to install dependencies
@@ -3313,6 +3407,12 @@ export declare class RushConfiguration {
3313
3407
  * Example: `C:\MyRepo\common\temp`
3314
3408
  */
3315
3409
  readonly commonTempFolder: string;
3410
+ /**
3411
+ * The folder where temporary files will be stored. This is always a subfolder called "temp"
3412
+ * under the common folder.
3413
+ * Example: `C:\MyRepo\common\temp-split`
3414
+ */
3415
+ readonly commonTempSplitFolder: string;
3316
3416
  /**
3317
3417
  * The folder where automation scripts are stored. This is always a subfolder called "scripts"
3318
3418
  * under the common folder.
@@ -3367,6 +3467,21 @@ export declare class RushConfiguration {
3367
3467
  * or `C:\MyRepo\common\temp\pnpm-lock-preinstall.yaml`
3368
3468
  */
3369
3469
  readonly tempShrinkwrapPreinstallFilename: string;
3470
+ /**
3471
+ * The filename (without any path) of the shrinkwrap file for split workspace that is used by the package manager.
3472
+ * @remarks
3473
+ * This property merely reports the filename; the file itself may not actually exist.
3474
+ * Example: `pnpm-lock.yaml`
3475
+ */
3476
+ readonly splitWorkspaceShrinkwrapFilename: string;
3477
+ /**
3478
+ * The full path of the temporary shrinkwrap file for split workspace that is used during
3479
+ * "rush install". This file may get rewritten by the package manager during installation.
3480
+ * @remarks
3481
+ * This property merely reports the filename; the file itself may not actually exist.
3482
+ * Example: `C:\MyRepo\common\temp-split\pnpm-lock.yaml`
3483
+ */
3484
+ readonly tempSplitWorkspaceShrinkwrapFilename: string;
3370
3485
  /**
3371
3486
  * The filename of the variant dependency data file. By default this is
3372
3487
  * called 'current-variant.json' resides in the Rush common folder.
@@ -3633,6 +3748,11 @@ export declare class RushConfiguration {
3633
3748
  * @beta
3634
3749
  */
3635
3750
  get projectsByTag(): ReadonlyMap<string, ReadonlySet<RushConfigurationProject>>;
3751
+ /**
3752
+ * Search for projects according to filter
3753
+ * @beta
3754
+ */
3755
+ getFilteredProjects(filter: IRushConfigurationProjectsFilter): RushConfigurationProject[];
3636
3756
  /**
3637
3757
  * Settings from the common-versions.json config file.
3638
3758
  * @remarks
@@ -3651,6 +3771,10 @@ export declare class RushConfiguration {
3651
3771
  * or "rush update".
3652
3772
  */
3653
3773
  get currentInstalledVariant(): string | undefined;
3774
+ /**
3775
+ * Is there any split workspace project.
3776
+ */
3777
+ get hasSplitWorkspaceProject(): boolean;
3654
3778
  /**
3655
3779
  * Gets the path to the common-versions.json config file for a specific variant.
3656
3780
  * @param variant - The name of the current variant in use by the active command.
@@ -3683,6 +3807,11 @@ export declare class RushConfiguration {
3683
3807
  * @param variant - The name of the current variant in use by the active command.
3684
3808
  */
3685
3809
  getCommittedShrinkwrapFilename(variant?: string | undefined): string;
3810
+ /**
3811
+ * Gets the committed shrinkwrap file name for split workspace.
3812
+ * @param variant - The name of the current variant in use by the active command.
3813
+ */
3814
+ getCommittedSplitWorkspaceShrinkwrapFilename(): string;
3686
3815
  /**
3687
3816
  * Gets the absolute path for "pnpmfile.js" for a specific variant.
3688
3817
  * @param variant - The name of the current variant in use by the active command.
@@ -3718,6 +3847,12 @@ export declare class RushConfiguration {
3718
3847
  */
3719
3848
  tryGetProjectForPath(currentFolderPath: string): RushConfigurationProject | undefined;
3720
3849
  private _getVariantConfigFolderPath;
3850
+ /**
3851
+ * Split workspace can only works on PNPM with "useWorkspaces" enabled.
3852
+ * The workspace project can NOT depend on a split workspace project.
3853
+ * The split workspace project CAN depend on a workspace project.
3854
+ */
3855
+ private _validateSplitWorkspaceRelationships;
3721
3856
  }
3722
3857
 
3723
3858
  /**
@@ -3833,6 +3968,11 @@ export declare class RushConfigurationProject {
3833
3968
  * @beta
3834
3969
  */
3835
3970
  readonly tags: ReadonlySet<string>;
3971
+ /**
3972
+ * Whether this project is a split workspace project.
3973
+ * @beta
3974
+ */
3975
+ readonly splitWorkspace: boolean;
3836
3976
  /** @internal */
3837
3977
  constructor(options: IRushConfigurationProjectOptions);
3838
3978
  /**
@@ -3942,6 +4082,12 @@ export declare class RushConstants {
3942
4082
  * Example: `C:\MyRepo\common\temp`
3943
4083
  */
3944
4084
  static readonly rushTempFolderName: string;
4085
+ /**
4086
+ * The folder name ("temp-split") under the common folder, or under the .rush folder in each project's directory where
4087
+ * temporary files will be stored.
4088
+ * Example: `C:\MyRepo\common\temp-split`
4089
+ */
4090
+ static readonly rushTempSplitFolderName: string;
3945
4091
  /**
3946
4092
  * The folder name ("projects") where temporary projects will be stored.
3947
4093
  * Example: `C:\MyRepo\common\temp\projects`
@@ -41,6 +41,11 @@ export interface IExperimentsJson {
41
41
  * in common/config/rush/command-line.json.
42
42
  */
43
43
  phasedCommands?: boolean;
44
+ /**
45
+ * If true, rush install or rush update implicitly specify --ignore-scripts during pnpm install,
46
+ * and run install lifecycle scripts by pnpm rebuild --pending after pnpm install successfully.
47
+ */
48
+ deferredInstallationScripts?: boolean;
44
49
  /**
45
50
  * If true, perform a clean install after when running `rush install` or `rush update` if the
46
51
  * `.npmrc` file has changed since the last install.
@@ -1,6 +1,52 @@
1
- import { type JsonObject } from '@rushstack/node-core-library';
1
+ import { type IPackageJson } from '@rushstack/node-core-library';
2
+ import { BaseFlag } from './base/BaseFlag';
3
+ import type { PackageManagerName } from './packageManager/PackageManager';
2
4
  import type { RushConfiguration } from './RushConfiguration';
3
5
  export declare const LAST_INSTALL_FLAG_FILE_NAME: string;
6
+ /**
7
+ * This represents the JSON data structure for the "last-install.flag" file.
8
+ * @internal
9
+ */
10
+ export interface ILastInstallFlagJson {
11
+ /**
12
+ * Current node version
13
+ */
14
+ node: string;
15
+ /**
16
+ * Current package manager name
17
+ */
18
+ packageManager: PackageManagerName;
19
+ /**
20
+ * Current package manager version
21
+ */
22
+ packageManagerVersion: string;
23
+ /**
24
+ * Current rush json folder
25
+ */
26
+ rushJsonFolder: string;
27
+ /**
28
+ * The content of package.json, used in the flag file of autoinstaller
29
+ */
30
+ packageJson?: IPackageJson;
31
+ /**
32
+ * Same with pnpmOptions.pnpmStorePath in rush.json
33
+ */
34
+ storePath?: string;
35
+ /**
36
+ * True when "useWorkspaces" is true in rush.json
37
+ */
38
+ workspaces?: true;
39
+ /**
40
+ * True when user explicitly specify "--ignore-scripts" CLI parameter or deferredInstallationScripts
41
+ */
42
+ ignoreScripts?: true;
43
+ /**
44
+ * When specified, it is a list of selected projects during partial install
45
+ * It is undefined when full install
46
+ */
47
+ selectedProjectNames?: string[];
48
+ [key: string]: unknown;
49
+ }
4
50
  /**
5
51
  * @internal
6
52
  */
@@ -15,19 +61,9 @@ export interface ILockfileValidityCheckOptions {
15
61
  * it can invalidate the last install.
16
62
  * @internal
17
63
  */
18
- export declare class LastInstallFlag {
19
- private _state;
20
- /**
21
- * Returns the full path to the flag file
22
- */
23
- readonly path: string;
24
- /**
25
- * Creates a new LastInstall flag
26
- * @param folderPath - the folder that this flag is managing
27
- * @param state - optional, the state that should be managed or compared
28
- */
29
- constructor(folderPath: string, state?: JsonObject);
64
+ export declare class LastInstallFlag extends BaseFlag<ILastInstallFlagJson> {
30
65
  /**
66
+ * @override
31
67
  * Returns true if the file exists and the contents match the current state.
32
68
  */
33
69
  isValid(options?: ILockfileValidityCheckOptions): boolean;
@@ -41,14 +77,6 @@ export declare class LastInstallFlag {
41
77
  rushVerb: string;
42
78
  }): boolean;
43
79
  private _isValid;
44
- /**
45
- * Writes the flag file to disk with the current state
46
- */
47
- create(): void;
48
- /**
49
- * Removes the flag file
50
- */
51
- clear(): void;
52
80
  /**
53
81
  * Returns the name of the flag file
54
82
  */
@@ -69,5 +97,14 @@ export declare class LastInstallFlagFactory {
69
97
  * @internal
70
98
  */
71
99
  static getCommonTempFlag(rushConfiguration: RushConfiguration, extraState?: Record<string, string>): LastInstallFlag;
100
+ /**
101
+ * Gets the LastInstall flag and sets the current state. This state is used to compare
102
+ * against the last-known-good state tracked by the LastInstall flag.
103
+ * @param rushConfiguration - the configuration of the Rush repo to get the install
104
+ * state from
105
+ *
106
+ * @internal
107
+ */
108
+ static getCommonTempSplitFlag(rushConfiguration: RushConfiguration): LastInstallFlag;
72
109
  }
73
110
  //# sourceMappingURL=LastInstallFlag.d.ts.map
@@ -1,4 +1,4 @@
1
- import { LastInstallFlag } from './LastInstallFlag';
1
+ import { BaseFlag } from './base/BaseFlag';
2
2
  import type { RushConfiguration } from './RushConfiguration';
3
3
  export declare const LAST_LINK_FLAG_FILE_NAME: string;
4
4
  /**
@@ -6,11 +6,7 @@ export declare const LAST_LINK_FLAG_FILE_NAME: string;
6
6
  * indicates that linking was completed successfully.
7
7
  * @internal
8
8
  */
9
- export declare class LastLinkFlag extends LastInstallFlag {
10
- /**
11
- * @override
12
- */
13
- isValid(): boolean;
9
+ export declare class LastLinkFlag extends BaseFlag {
14
10
  /**
15
11
  * @override
16
12
  */
@@ -118,6 +118,15 @@ export interface IRushConfigurationJson {
118
118
  export interface ICurrentVariantJson {
119
119
  variant: string | JsonNull;
120
120
  }
121
+ /**
122
+ * The filter parameters to search from all projects.
123
+ */
124
+ export interface IRushConfigurationProjectsFilter {
125
+ /**
126
+ * If true, filter out projects that specify splitWorkspace as true.
127
+ */
128
+ splitWorkspace: boolean;
129
+ }
121
130
  /**
122
131
  * Options for `RushConfiguration.tryFindRushJsonLocation`.
123
132
  * @public
@@ -144,6 +153,8 @@ export declare class RushConfiguration {
144
153
  private _projects;
145
154
  private _projectsByName;
146
155
  private _projectsByTag;
156
+ private _filteredProjectsCache;
157
+ private _hasSplitWorkspaceProject;
147
158
  private _commonVersionsConfigurationsByVariant;
148
159
  /**
149
160
  * The name of the package manager being used to install dependencies
@@ -198,6 +209,12 @@ export declare class RushConfiguration {
198
209
  * Example: `C:\MyRepo\common\temp`
199
210
  */
200
211
  readonly commonTempFolder: string;
212
+ /**
213
+ * The folder where temporary files will be stored. This is always a subfolder called "temp"
214
+ * under the common folder.
215
+ * Example: `C:\MyRepo\common\temp-split`
216
+ */
217
+ readonly commonTempSplitFolder: string;
201
218
  /**
202
219
  * The folder where automation scripts are stored. This is always a subfolder called "scripts"
203
220
  * under the common folder.
@@ -252,6 +269,21 @@ export declare class RushConfiguration {
252
269
  * or `C:\MyRepo\common\temp\pnpm-lock-preinstall.yaml`
253
270
  */
254
271
  readonly tempShrinkwrapPreinstallFilename: string;
272
+ /**
273
+ * The filename (without any path) of the shrinkwrap file for split workspace that is used by the package manager.
274
+ * @remarks
275
+ * This property merely reports the filename; the file itself may not actually exist.
276
+ * Example: `pnpm-lock.yaml`
277
+ */
278
+ readonly splitWorkspaceShrinkwrapFilename: string;
279
+ /**
280
+ * The full path of the temporary shrinkwrap file for split workspace that is used during
281
+ * "rush install". This file may get rewritten by the package manager during installation.
282
+ * @remarks
283
+ * This property merely reports the filename; the file itself may not actually exist.
284
+ * Example: `C:\MyRepo\common\temp-split\pnpm-lock.yaml`
285
+ */
286
+ readonly tempSplitWorkspaceShrinkwrapFilename: string;
255
287
  /**
256
288
  * The filename of the variant dependency data file. By default this is
257
289
  * called 'current-variant.json' resides in the Rush common folder.
@@ -518,6 +550,11 @@ export declare class RushConfiguration {
518
550
  * @beta
519
551
  */
520
552
  get projectsByTag(): ReadonlyMap<string, ReadonlySet<RushConfigurationProject>>;
553
+ /**
554
+ * Search for projects according to filter
555
+ * @beta
556
+ */
557
+ getFilteredProjects(filter: IRushConfigurationProjectsFilter): RushConfigurationProject[];
521
558
  /**
522
559
  * Settings from the common-versions.json config file.
523
560
  * @remarks
@@ -536,6 +573,10 @@ export declare class RushConfiguration {
536
573
  * or "rush update".
537
574
  */
538
575
  get currentInstalledVariant(): string | undefined;
576
+ /**
577
+ * Is there any split workspace project.
578
+ */
579
+ get hasSplitWorkspaceProject(): boolean;
539
580
  /**
540
581
  * Gets the path to the common-versions.json config file for a specific variant.
541
582
  * @param variant - The name of the current variant in use by the active command.
@@ -568,6 +609,11 @@ export declare class RushConfiguration {
568
609
  * @param variant - The name of the current variant in use by the active command.
569
610
  */
570
611
  getCommittedShrinkwrapFilename(variant?: string | undefined): string;
612
+ /**
613
+ * Gets the committed shrinkwrap file name for split workspace.
614
+ * @param variant - The name of the current variant in use by the active command.
615
+ */
616
+ getCommittedSplitWorkspaceShrinkwrapFilename(): string;
571
617
  /**
572
618
  * Gets the absolute path for "pnpmfile.js" for a specific variant.
573
619
  * @param variant - The name of the current variant in use by the active command.
@@ -603,5 +649,11 @@ export declare class RushConfiguration {
603
649
  */
604
650
  tryGetProjectForPath(currentFolderPath: string): RushConfigurationProject | undefined;
605
651
  private _getVariantConfigFolderPath;
652
+ /**
653
+ * Split workspace can only works on PNPM with "useWorkspaces" enabled.
654
+ * The workspace project can NOT depend on a split workspace project.
655
+ * The split workspace project CAN depend on a workspace project.
656
+ */
657
+ private _validateSplitWorkspaceRelationships;
606
658
  }
607
659
  //# sourceMappingURL=RushConfiguration.d.ts.map
@@ -16,6 +16,7 @@ export interface IRushConfigurationProjectJson {
16
16
  skipRushCheck?: boolean;
17
17
  publishFolder?: string;
18
18
  tags?: string[];
19
+ splitWorkspace?: boolean;
19
20
  }
20
21
  /**
21
22
  * @internal
@@ -151,6 +152,11 @@ export declare class RushConfigurationProject {
151
152
  * @beta
152
153
  */
153
154
  readonly tags: ReadonlySet<string>;
155
+ /**
156
+ * Whether this project is a split workspace project.
157
+ * @beta
158
+ */
159
+ readonly splitWorkspace: boolean;
154
160
  /** @internal */
155
161
  constructor(options: IRushConfigurationProjectOptions);
156
162
  /**
@@ -0,0 +1,50 @@
1
+ import { type JsonObject } from '@rushstack/node-core-library';
2
+ /**
3
+ * A base class for flag file.
4
+ * @internal
5
+ */
6
+ export declare class BaseFlag<T extends object = JsonObject> {
7
+ /**
8
+ * Flag file path
9
+ */
10
+ readonly path: string;
11
+ /**
12
+ * Content of the flag
13
+ */
14
+ protected _state: T;
15
+ /**
16
+ * Whether the current state is modified
17
+ */
18
+ protected _isModified: boolean;
19
+ /**
20
+ * Creates a new flag file
21
+ * @param folderPath - the folder that this flag is managing
22
+ * @param state - optional, the state that should be managed or compared
23
+ */
24
+ constructor(folderPath: string, state?: Partial<T>);
25
+ /**
26
+ * Returns true if the file exists and the contents match the current state.
27
+ */
28
+ isValid(): boolean;
29
+ /**
30
+ * Writes the flag file to disk with the current state
31
+ */
32
+ create(): void;
33
+ /**
34
+ * Merge new data into current state by "merge"
35
+ */
36
+ mergeFromObject(data: JsonObject): void;
37
+ /**
38
+ * Writes the flag file to disk with the current state if modified
39
+ */
40
+ saveIfModified(): void;
41
+ /**
42
+ * Removes the flag file
43
+ */
44
+ clear(): void;
45
+ /**
46
+ * Returns Name of the flag file
47
+ */
48
+ protected get flagName(): string;
49
+ }
50
+ //# sourceMappingURL=BaseFlag.d.ts.map
@@ -0,0 +1 @@
1
+ module.exports = require("../../../lib-shim/index")._rushSdk_loadInternalModule("api/base/BaseFlag");
@@ -11,7 +11,21 @@ export declare class PnpmPackageManager extends PackageManager {
11
11
  * Example: `pnpmfile.js` or `.pnpmfile.cjs`
12
12
  */
13
13
  readonly pnpmfileFilename: string;
14
+ /**
15
+ * The filename of the shrinkwrap file of split workspace that is used by the package manager.
16
+ *
17
+ * @remarks
18
+ * Example: `.pnpmfile-split-workspace.cjs`
19
+ */
20
+ splitWorkspacePnpmfileFilename: string;
14
21
  /** @internal */
15
22
  constructor(version: string);
23
+ /**
24
+ * The filename of the global shrinkwrap file that is used by the package manager.
25
+ *
26
+ * @remarks
27
+ * Example: `global-pnpmfile.cjs`
28
+ */
29
+ get globalPnpmfileFilename(): string;
16
30
  }
17
31
  //# sourceMappingURL=PnpmPackageManager.d.ts.map
@@ -1,4 +1,11 @@
1
1
  import { type ILaunchOptions } from '../api/Rush';
2
+ /**
3
+ * @internal
4
+ */
5
+ export interface ILaunchRushXInternalOptions {
6
+ isManaged: boolean;
7
+ alreadyReportedNodeTooNewError?: boolean;
8
+ }
2
9
  export declare class RushXCommandLine {
3
10
  static launchRushX(launcherVersion: string, options: ILaunchOptions): void;
4
11
  private static _launchRushXInternal;
@@ -3,6 +3,13 @@ import type { IInstallManagerOptions } from '../../logic/base/BaseInstallManager
3
3
  import type { RushCommandLineParser } from '../RushCommandLineParser';
4
4
  export declare class InstallAction extends BaseInstallAction {
5
5
  private readonly _checkOnlyParameter;
6
+ private _ignoreScriptsParameter;
7
+ /**
8
+ * Whether split workspace projects are included in install
9
+ *
10
+ * This parameter only supported when there is split workspace project
11
+ */
12
+ private _includeSplitWorkspaceParameter?;
6
13
  constructor(parser: RushCommandLineParser);
7
14
  protected buildInstallOptionsAsync(): Promise<IInstallManagerOptions>;
8
15
  }
@@ -34,6 +34,10 @@ export interface IJsonEntry {
34
34
  * @see {@link ../../api/RushConfigurationProject#RushConfigurationProject.tags | RushConfigurationProject.tags}
35
35
  */
36
36
  tags: string[];
37
+ /**
38
+ * @see {@link ../../api/RushConfigurationProject#RushConfigurationProject.splitWorkspace | RushConfigurationProject.splitWorkspace}
39
+ */
40
+ splitWorkspace: boolean;
37
41
  }
38
42
  export interface IJsonOutput {
39
43
  projects: IJsonEntry[];
@@ -4,6 +4,13 @@ import type { RushCommandLineParser } from '../RushCommandLineParser';
4
4
  export declare class UpdateAction extends BaseInstallAction {
5
5
  private readonly _fullParameter;
6
6
  private readonly _recheckParameter;
7
+ private _ignoreScriptsParameter;
8
+ /**
9
+ * Whether split workspace projects are included in update
10
+ *
11
+ * This parameter only supported when there is split workspace project
12
+ */
13
+ private _includeSplitWorkspaceParameter?;
7
14
  constructor(parser: RushCommandLineParser);
8
15
  protected runAsync(): Promise<void>;
9
16
  protected buildInstallOptionsAsync(): Promise<IInstallManagerOptions>;
@@ -20,7 +20,15 @@ export declare class SelectionParameterSet {
20
20
  private readonly _fromVersionPolicy;
21
21
  private readonly _toVersionPolicy;
22
22
  private readonly _selectorParserByScope;
23
+ private readonly _selectors;
24
+ private _isSelectionSpecified;
23
25
  constructor(rushConfiguration: RushConfiguration, action: CommandLineParameterProvider, gitOptions: IGitSelectorParserOptions);
26
+ /**
27
+ * Check if any of the selection parameters have a value specified on the command line
28
+ *
29
+ * Returns true if specifying any selection parameters, otherwise false.
30
+ */
31
+ get isSelectionSpecified(): boolean;
24
32
  /**
25
33
  * Computes the set of selected projects based on all parameter values.
26
34
  *
@@ -28,14 +36,19 @@ export declare class SelectionParameterSet {
28
36
  */
29
37
  getSelectedProjectsAsync(terminal: ITerminal): Promise<Set<RushConfigurationProject>>;
30
38
  /**
31
- * Represents the selection as `--filter` parameters to pnpm.
39
+ * Represents the selection as `--filter` parameters to pnpm, and selected projects when partial install
32
40
  *
33
41
  * @remarks
34
42
  * This is a separate from the selection to allow the filters to be represented more concisely.
35
43
  *
36
- * @see https://pnpm.js.org/en/filtering
44
+ * @see https://pnpm.io/filtering
37
45
  */
38
- getPnpmFilterArgumentsAsync(terminal: ITerminal): Promise<string[]>;
46
+ getPnpmFilterArgumentsAsync(terminal: ITerminal): Promise<{
47
+ pnpmFilterArguments: string[];
48
+ splitWorkspacePnpmFilterArguments: string[];
49
+ selectedProjects: Set<RushConfigurationProject> | undefined;
50
+ hasSelectSplitWorkspaceProject: boolean;
51
+ }>;
39
52
  /**
40
53
  * Usage telemetry for selection parameters. Only saved locally, and if requested in the config.
41
54
  */
@@ -47,5 +60,6 @@ export declare class SelectionParameterSet {
47
60
  * Handles '.', unscoped names, and scoped names.
48
61
  */
49
62
  private _evaluateProjectParameterAsync;
63
+ toArguments(): string[];
50
64
  }
51
65
  //# sourceMappingURL=SelectionParameterSet.d.ts.map
package/lib/index.d.ts CHANGED
@@ -27,7 +27,8 @@ export { RepoStateFile } from './logic/RepoStateFile';
27
27
  export { LookupByPath, IPrefixMatch } from './logic/LookupByPath';
28
28
  export { EventHooks, Event } from './api/EventHooks';
29
29
  export { ChangeManager } from './api/ChangeManager';
30
- export { LastInstallFlag as _LastInstallFlag, ILockfileValidityCheckOptions as _ILockfileValidityCheckOptions } from './api/LastInstallFlag';
30
+ export { LastInstallFlag as _LastInstallFlag, ILastInstallFlagJson as _ILastInstallFlagJson, ILockfileValidityCheckOptions as _ILockfileValidityCheckOptions } from './api/LastInstallFlag';
31
+ export { BaseFlag as _BaseFlag } from './api/base/BaseFlag';
31
32
  export { VersionPolicyDefinitionName, BumpType, LockStepVersionPolicy, IndividualVersionPolicy, VersionPolicy } from './api/VersionPolicy';
32
33
  export { VersionPolicyConfiguration } from './api/VersionPolicyConfiguration';
33
34
  export { ILaunchOptions, Rush } from './api/Rush';
@@ -9,6 +9,7 @@ export declare class PurgeManager {
9
9
  private _rushGlobalFolder;
10
10
  private _rushUserFolderRecycler;
11
11
  readonly commonTempFolderRecycler: AsyncRecycler;
12
+ readonly commonTempSplitFolderRecycler: AsyncRecycler;
12
13
  constructor(rushConfiguration: RushConfiguration, rushGlobalFolder: RushGlobalFolder);
13
14
  /**
14
15
  * Performs the AsyncRecycler.deleteAll() operation. This should be called before
@@ -43,6 +43,12 @@ export declare class RushConstants {
43
43
  * Example: `C:\MyRepo\common\temp`
44
44
  */
45
45
  static readonly rushTempFolderName: string;
46
+ /**
47
+ * The folder name ("temp-split") under the common folder, or under the .rush folder in each project's directory where
48
+ * temporary files will be stored.
49
+ * Example: `C:\MyRepo\common\temp-split`
50
+ */
51
+ static readonly rushTempSplitFolderName: string;
46
52
  /**
47
53
  * The folder name ("projects") where temporary projects will be stored.
48
54
  * Example: `C:\MyRepo\common\temp\projects`
@@ -11,7 +11,7 @@ export declare class UnlinkManager {
11
11
  *
12
12
  * Returns true if anything was deleted.
13
13
  */
14
- unlink(force?: boolean): boolean;
14
+ unlinkAsync(force?: boolean): Promise<boolean>;
15
15
  /**
16
16
  * Delete:
17
17
  * - all the node_modules symlinks of configured Rush projects
@@ -19,6 +19,6 @@ export declare class UnlinkManager {
19
19
  *
20
20
  * Returns true if anything was deleted
21
21
  * */
22
- private _deleteProjectFiles;
22
+ private _deleteProjectFilesAsync;
23
23
  }
24
24
  //# sourceMappingURL=UnlinkManager.d.ts.map
@@ -1,3 +1,5 @@
1
+ import type { SelectionParameterSet } from '../../cli/parsing/SelectionParameterSet';
2
+ import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
1
3
  export interface IInstallManagerOptions {
2
4
  /**
3
5
  * Whether the global "--debug" flag was specified.
@@ -74,5 +76,26 @@ export interface IInstallManagerOptions {
74
76
  * Callback to invoke between preparing the common/temp folder and running installation.
75
77
  */
76
78
  beforeInstallAsync?: () => Promise<void>;
79
+ /**
80
+ * Whether to specify "--ignore-scripts" command-line parameter, which ignores
81
+ * install lifecycle scripts in package.json and its dependencies
82
+ */
83
+ ignoreScripts: boolean;
84
+ /**
85
+ * Whether to install for projects in split workspace
86
+ */
87
+ includeSplitWorkspace: boolean;
88
+ /**
89
+ * Filters to be passed to PNPM during installation for split workspace.
90
+ */
91
+ splitWorkspacePnpmFilterArguments: string[];
92
+ /**
93
+ * Selected projects during partial install.
94
+ */
95
+ selectedProjects?: Set<RushConfigurationProject>;
96
+ /**
97
+ * Selection parameters for partial install.
98
+ */
99
+ selectionParameters?: SelectionParameterSet;
77
100
  }
78
101
  //# sourceMappingURL=BaseInstallManagerTypes.d.ts.map
@@ -3,6 +3,7 @@ import type { RushConfiguration } from '../../api/RushConfiguration';
3
3
  import type { RushGlobalFolder } from '../../api/RushGlobalFolder';
4
4
  export declare class InstallHelpers {
5
5
  static generateCommonPackageJson(rushConfiguration: RushConfiguration, dependencies?: Map<string, string>): void;
6
+ static generateCommonSplitPackageJson(rushConfiguration: RushConfiguration): void;
6
7
  static getPackageManagerEnvironment(rushConfiguration: RushConfiguration, options?: {
7
8
  debug?: boolean;
8
9
  }): NodeJS.ProcessEnv;
@@ -1,5 +1,6 @@
1
1
  import type { LogBase } from '@pnpm/logger';
2
2
  import type { IPackageJson } from '@rushstack/node-core-library';
3
+ import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
3
4
  import type { IPnpmShrinkwrapYaml } from './PnpmShrinkwrapFile';
4
5
  /**
5
6
  * The `settings` parameter passed to {@link IPnpmfileShim.hooks.readPackage} and
@@ -19,6 +20,20 @@ export interface IPnpmfileShimSettings {
19
20
  workspaceVersions: Record<string, string>;
20
21
  userPnpmfilePath?: string;
21
22
  }
23
+ export interface IWorkspaceProjectInfo extends Pick<RushConfigurationProject, 'packageName' | 'projectRelativeFolder'> {
24
+ packageVersion: RushConfigurationProject['packageJson']['version'];
25
+ }
26
+ /**
27
+ * The `settings` parameter passed to {@link IPnpmfileShim.hooks.readPackage} and
28
+ * {@link IPnpmfileShim.hooks.afterAllResolved}.
29
+ */
30
+ export interface ISplitWorkspacePnpmfileShimSettings {
31
+ semverPath: string;
32
+ pathNormalizerPath: string;
33
+ workspaceProjects: Record<string, IWorkspaceProjectInfo>;
34
+ splitWorkspaceProjects: Record<string, IWorkspaceProjectInfo>;
35
+ userPnpmfilePath?: string;
36
+ }
22
37
  /**
23
38
  * The `context` parameter passed to {@link IPnpmfile.hooks.readPackage}, as defined by the
24
39
  * pnpmfile API contract.
@@ -26,6 +41,7 @@ export interface IPnpmfileShimSettings {
26
41
  export interface IPnpmfileContext {
27
42
  log: (message: string) => void;
28
43
  pnpmfileShimSettings?: IPnpmfileShimSettings;
44
+ splitWorkspacePnpmfileShimSettings?: ISplitWorkspacePnpmfileShimSettings;
29
45
  }
30
46
  /**
31
47
  * The `log` parameter passed to {@link IPnpmfile.hooks.filterLog}.
@@ -1,9 +1,15 @@
1
1
  import { BaseProjectShrinkwrapFile } from '../base/BaseProjectShrinkwrapFile';
2
- import type { PnpmShrinkwrapFile } from './PnpmShrinkwrapFile';
2
+ import { PnpmShrinkwrapFile } from './PnpmShrinkwrapFile';
3
+ import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
3
4
  /**
4
5
  *
5
6
  */
6
7
  export declare class PnpmProjectShrinkwrapFile extends BaseProjectShrinkwrapFile<PnpmShrinkwrapFile> {
8
+ /**
9
+ * When split workspace projects turn off shared-workspace-lockfiles, Pnpm creates individual
10
+ * shrinkwrap files for each project.
11
+ */
12
+ static generateIndividualProjectShrinkwrapAsync(project: RushConfigurationProject): Promise<void>;
7
13
  /**
8
14
  * Generate and write the project shrinkwrap file to <project>/.rush/temp/shrinkwrap-deps.json.
9
15
  * @returns True if the project shrinkwrap was created or updated, false otherwise.
@@ -16,6 +22,7 @@ export declare class PnpmProjectShrinkwrapFile extends BaseProjectShrinkwrapFile
16
22
  protected generateProjectShrinkwrapMap(): Map<string, string> | undefined;
17
23
  protected generateWorkspaceProjectShrinkwrapMap(): Map<string, string> | undefined;
18
24
  protected generateLegacyProjectShrinkwrapMap(): Map<string, string>;
25
+ protected generateIndividualProjectShrinkwrapMap(): Map<string, string>;
19
26
  private _addDependencyRecursive;
20
27
  private _resolveAndAddPeerDependencies;
21
28
  /**
@@ -4,6 +4,7 @@ import type { RushConfiguration } from '../../api/RushConfiguration';
4
4
  import type { IShrinkwrapFilePolicyValidatorOptions } from '../policy/ShrinkwrapFilePolicy';
5
5
  import type { IExperimentsJson } from '../../api/ExperimentsConfiguration';
6
6
  import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
7
+ import { SplitWorkspacePnpmfileConfiguration } from './SplitWorkspacePnpmfileConfiguration';
7
8
  import { PnpmProjectShrinkwrapFile } from './PnpmProjectShrinkwrapFile';
8
9
  import type { PackageManagerOptionsConfigurationBase } from '../base/BasePackageManagerOptionsConfiguration';
9
10
  export interface IPeerDependenciesMetaYaml {
@@ -86,6 +87,10 @@ export interface IPnpmShrinkwrapYaml {
86
87
  lockfileVersion?: string | number;
87
88
  /** The list of resolved version numbers for direct dependencies */
88
89
  dependencies: Record<string, string>;
90
+ /** The list of resolved version numbers for dev dependencies */
91
+ devDependencies: Record<string, string>;
92
+ /** The list of resolved version numbers for optional dependencies */
93
+ optionalDependencies: Record<string, string>;
89
94
  /** The list of importers for local workspace projects */
90
95
  importers: Record<string, IPnpmShrinkwrapImporterYaml>;
91
96
  /** The description of the solved graph */
@@ -112,6 +117,8 @@ export declare class PnpmShrinkwrapFile extends BaseShrinkwrapFile {
112
117
  readonly isWorkspaceCompatible: boolean;
113
118
  readonly registry: string;
114
119
  readonly dependencies: ReadonlyMap<string, IPnpmVersionSpecifier>;
120
+ readonly devDependencies: ReadonlyMap<string, IPnpmVersionSpecifier>;
121
+ readonly optionalDependencies: ReadonlyMap<string, IPnpmVersionSpecifier>;
115
122
  readonly importers: ReadonlyMap<string, IPnpmShrinkwrapImporterYaml>;
116
123
  readonly specifiers: ReadonlyMap<string, string>;
117
124
  readonly packages: ReadonlyMap<string, IPnpmShrinkwrapDependencyYaml>;
@@ -119,9 +126,14 @@ export declare class PnpmShrinkwrapFile extends BaseShrinkwrapFile {
119
126
  private readonly _shrinkwrapJson;
120
127
  private readonly _integrities;
121
128
  private _pnpmfileConfiguration;
129
+ private _splitWorkspaceGlobalPnpmfileConfiguration;
130
+ private _individualPackageName;
131
+ private _individualShrinkwrapImporter;
122
132
  private constructor();
123
133
  static loadFromFile(shrinkwrapYamlFilename: string): PnpmShrinkwrapFile | undefined;
124
134
  static loadFromString(shrinkwrapContent: string): PnpmShrinkwrapFile;
135
+ setIndividualPackage(packageName: string, splitWorkspaceGlobalPnpmfileConfiguration?: SplitWorkspacePnpmfileConfiguration): void;
136
+ get isIndividual(): boolean;
125
137
  getShrinkwrapHash(experimentsConfig?: IExperimentsJson): string;
126
138
  /** @override */
127
139
  validate(packageManagerOptionsConfig: PackageManagerOptionsConfigurationBase, policyOptions: IShrinkwrapFilePolicyValidatorOptions, experimentsConfig?: IExperimentsJson): void;
@@ -208,8 +220,12 @@ export declare class PnpmShrinkwrapFile extends BaseShrinkwrapFile {
208
220
  getImporterKeyByPath(workspaceRoot: string, projectFolder: string): string;
209
221
  getImporter(importerKey: string): IPnpmShrinkwrapImporterYaml | undefined;
210
222
  getIntegrityForImporter(importerKey: string): Map<string, string> | undefined;
223
+ getIntegrityForIndividualProject(): Map<string, string>;
211
224
  /** @override */
212
225
  isWorkspaceProjectModifiedAsync(project: RushConfigurationProject, variant?: string): Promise<boolean>;
226
+ isSplitWorkspaceProjectModified(project: RushConfigurationProject): boolean;
227
+ isSplitWorkspaceIndividualProjectModified(project: RushConfigurationProject): boolean;
228
+ private _isProjectModified;
213
229
  private _getIntegrityForPackage;
214
230
  private _addIntegrities;
215
231
  /**
@@ -219,5 +235,6 @@ export declare class PnpmShrinkwrapFile extends BaseShrinkwrapFile {
219
235
  private _getPackageId;
220
236
  private _parsePnpmDependencyKey;
221
237
  private _serializeInternal;
238
+ private _getIndividualShrinkwrapImporter;
222
239
  }
223
240
  //# sourceMappingURL=PnpmShrinkwrapFile.d.ts.map
@@ -0,0 +1,3 @@
1
+ import type { IPnpmfileHooks } from './IPnpmfile';
2
+ export declare const hooks: IPnpmfileHooks;
3
+ //# sourceMappingURL=SplitWorkspaceGlobalPnpmfileShim.d.ts.map
@@ -0,0 +1 @@
1
+ module.exports = require("../../../lib-shim/index")._rushSdk_loadInternalModule("logic/pnpm/SplitWorkspaceGlobalPnpmfileShim");
@@ -0,0 +1,23 @@
1
+ import { type IPackageJson } from '@rushstack/node-core-library';
2
+ import type { RushConfiguration } from '../../api/RushConfiguration';
3
+ /**
4
+ * Loads PNPM's pnpmfile.js configuration, and invokes it to preprocess package.json files,
5
+ * optionally utilizing a pnpmfile shim to inject preferred versions.
6
+ */
7
+ export declare class SplitWorkspacePnpmfileConfiguration {
8
+ private _context;
9
+ constructor(rushConfiguration: RushConfiguration);
10
+ /**
11
+ * Split workspace use global pnpmfile, because in split workspace, user may set `shared-workspace-lockfile=false`.
12
+ * That means each project owns their individual pnpmfile under project folder. While the global pnpmfile could be
13
+ * under the common/temp-split/ folder and be used by all split workspace projects.
14
+ */
15
+ static writeCommonTempSplitGlobalPnpmfileAsync(rushConfiguration: RushConfiguration): Promise<void>;
16
+ private static _getSplitWorkspacePnpmfileShimSettings;
17
+ /**
18
+ * Transform a package.json file using the pnpmfile.js hook.
19
+ * @returns the tranformed object, or the original input if pnpmfile.js was not found.
20
+ */
21
+ transform(packageJson: IPackageJson): IPackageJson;
22
+ }
23
+ //# sourceMappingURL=SplitWorkspacePnpmfileConfiguration.d.ts.map
@@ -0,0 +1 @@
1
+ module.exports = require("../../../lib-shim/index")._rushSdk_loadInternalModule("logic/pnpm/SplitWorkspacePnpmfileConfiguration");
@@ -0,0 +1,10 @@
1
+ import type { RushConfiguration } from '../../api/RushConfiguration';
2
+ import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
3
+ import type { IEvaluateSelectorOptions, ISelectorParser } from './ISelectorParser';
4
+ export declare class SplitWorkspaceProjectSelectorParser implements ISelectorParser<RushConfigurationProject> {
5
+ private readonly _rushConfiguration;
6
+ constructor(rushConfiguration: RushConfiguration);
7
+ evaluateSelectorAsync({ unscopedSelector, terminal, parameterName }: IEvaluateSelectorOptions): Promise<Iterable<RushConfigurationProject>>;
8
+ getCompletions(): Iterable<string>;
9
+ }
10
+ //# sourceMappingURL=SplitWorkspaceProjectSelectorParser.d.ts.map
@@ -0,0 +1 @@
1
+ module.exports = require("../../../lib-shim/index")._rushSdk_loadInternalModule("logic/selectors/SplitWorkspaceProjectSelectorParser");
@@ -4,8 +4,10 @@ import type { RushConfigurationProject } from '../../api/RushConfigurationProjec
4
4
  export declare class VersionMismatchFinderProject extends VersionMismatchFinderEntity {
5
5
  packageName: string;
6
6
  private _fileManager;
7
+ private _project;
7
8
  constructor(project: RushConfigurationProject);
8
9
  get filePath(): string;
10
+ get project(): RushConfigurationProject;
9
11
  get allDependencies(): ReadonlyArray<PackageJsonDependency>;
10
12
  tryGetDependency(packageName: string): PackageJsonDependency | undefined;
11
13
  tryGetDevDependency(packageName: string): PackageJsonDependency | undefined;
@@ -11,6 +11,7 @@ export declare const assetsFolderPath: string;
11
11
  */
12
12
  export declare const scriptsFolderName: string;
13
13
  export declare const pnpmfileShimFilename: string;
14
+ export declare const splitWorkspacePnpmfileShimFilename: string;
14
15
  export declare const installRunScriptFilename: string;
15
16
  export declare const installRunRushScriptFilename: string;
16
17
  export declare const installRunRushxScriptFilename: string;
@@ -106,6 +106,12 @@ export declare class Utilities {
106
106
  * hard disk.
107
107
  */
108
108
  static dangerouslyDeletePath(folderPath: string): void;
109
+ /**
110
+ * BE VERY CAREFUL CALLING THIS FUNCTION!
111
+ * If you specify the wrong folderPath (e.g. "/"), it could potentially delete your entire
112
+ * hard disk.
113
+ */
114
+ static dangerouslyDeletePathAsync(folderPath: string): Promise<void>;
109
115
  static isFileTimestampCurrent(dateToCompare: Date, inputFilenames: string[]): boolean;
110
116
  /**
111
117
  * Executes the command with the specified command-line parameters, and waits for it to complete.
@@ -11,6 +11,6 @@ export interface ILogger {
11
11
  * @returns
12
12
  * The text of the the synced .npmrc, if one exists. If one does not exist, then undefined is returned.
13
13
  */
14
- export declare function syncNpmrc(sourceNpmrcFolder: string, targetNpmrcFolder: string, useNpmrcPublish?: boolean, logger?: ILogger): string | undefined;
14
+ export declare function syncNpmrc(sourceNpmrcFolder: string, targetNpmrcFolder: string, useNpmrcPublish?: boolean, sourceNpmrcFilename?: string, logger?: ILogger): string | undefined;
15
15
  export declare function isVariableSetInNpmrcFile(sourceNpmrcFolder: string, variableKey: string): boolean;
16
16
  //# sourceMappingURL=npmrcUtilities.d.ts.map
@@ -4,4 +4,9 @@
4
4
  export declare function objectsAreDeepEqual<TObject>(a: TObject, b: TObject): boolean;
5
5
  export declare function cloneDeep<TObject>(obj: TObject): TObject;
6
6
  export declare function merge<TBase extends object, TOther>(base: TBase, other: TOther): (TBase & TOther) | TOther;
7
+ /**
8
+ * Performs a partial deep comparison between `obj` and `source` to
9
+ * determine if `obj` contains equivalent property values.
10
+ */
11
+ export declare function isMatch<TObject>(obj: TObject, source: TObject): boolean;
7
12
  //# sourceMappingURL=objectUtilities.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushstack/rush-sdk",
3
- "version": "5.109.0",
3
+ "version": "5.109.1-pr3481.22",
4
4
  "description": "An API for interacting with the Rush engine",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,7 +30,7 @@
30
30
  "devDependencies": {
31
31
  "@types/semver": "7.5.0",
32
32
  "@types/webpack-env": "1.18.0",
33
- "@microsoft/rush-lib": "5.109.0",
33
+ "@microsoft/rush-lib": "5.109.1-pr3481.22",
34
34
  "@rushstack/heft": "0.62.3",
35
35
  "local-node-rig": "1.0.0",
36
36
  "@rushstack/stream-collator": "4.1.10",