@rushstack/rush-sdk 5.100.0 → 5.100.1-pr3481.18

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 (34) 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 +3 -7
  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/actions/InstallAction.d.ts +7 -0
  11. package/lib/cli/actions/ListAction.d.ts +4 -0
  12. package/lib/cli/actions/UpdateAction.d.ts +7 -0
  13. package/lib/cli/parsing/SelectionParameterSet.d.ts +17 -3
  14. package/lib/index.d.ts +2 -1
  15. package/lib/logic/PurgeManager.d.ts +1 -0
  16. package/lib/logic/RushConstants.d.ts +6 -0
  17. package/lib/logic/UnlinkManager.d.ts +2 -2
  18. package/lib/logic/base/BaseInstallManagerTypes.d.ts +23 -0
  19. package/lib/logic/installManager/InstallHelpers.d.ts +1 -0
  20. package/lib/logic/pnpm/IPnpmfile.d.ts +16 -0
  21. package/lib/logic/pnpm/PnpmProjectShrinkwrapFile.d.ts +7 -0
  22. package/lib/logic/pnpm/PnpmShrinkwrapFile.d.ts +22 -0
  23. package/lib/logic/pnpm/SplitWorkspaceGlobalPnpmfileShim.d.ts +3 -0
  24. package/lib/logic/pnpm/SplitWorkspaceGlobalPnpmfileShim.js +1 -0
  25. package/lib/logic/pnpm/SplitWorkspacePnpmfileConfiguration.d.ts +23 -0
  26. package/lib/logic/pnpm/SplitWorkspacePnpmfileConfiguration.js +1 -0
  27. package/lib/logic/selectors/SplitWorkspaceProjectSelectorParser.d.ts +10 -0
  28. package/lib/logic/selectors/SplitWorkspaceProjectSelectorParser.js +1 -0
  29. package/lib/logic/versionMismatch/VersionMismatchFinderProject.d.ts +2 -0
  30. package/lib/utilities/PathConstants.d.ts +1 -0
  31. package/lib/utilities/Utilities.d.ts +6 -0
  32. package/lib/utilities/npmrcUtilities.d.ts +1 -1
  33. package/lib/utilities/objectUtilities.d.ts +5 -0
  34. package/package.json +9 -9
@@ -131,6 +131,55 @@ export declare class ApprovedPackagesPolicy {
131
131
  constructor(rushConfiguration: RushConfiguration, rushConfigurationJson: IRushConfigurationJson);
132
132
  }
133
133
 
134
+ /**
135
+ * A base class for flag file.
136
+ * @internal
137
+ */
138
+ export declare class _BaseFlag<T extends object = JsonObject> {
139
+ /**
140
+ * Flag file path
141
+ */
142
+ readonly path: string;
143
+ /**
144
+ * Content of the flag
145
+ */
146
+ protected _state: T;
147
+ /**
148
+ * Whether the current state is modified
149
+ */
150
+ protected _isModified: boolean;
151
+ /**
152
+ * Creates a new flag file
153
+ * @param folderPath - the folder that this flag is managing
154
+ * @param state - optional, the state that should be managed or compared
155
+ */
156
+ constructor(folderPath: string, state?: Partial<T>);
157
+ /**
158
+ * Returns true if the file exists and the contents match the current state.
159
+ */
160
+ isValid(): boolean;
161
+ /**
162
+ * Writes the flag file to disk with the current state
163
+ */
164
+ create(): void;
165
+ /**
166
+ * Merge new data into current state by "merge"
167
+ */
168
+ mergeFromObject(data: JsonObject): void;
169
+ /**
170
+ * Writes the flag file to disk with the current state if modified
171
+ */
172
+ saveIfModified(): void;
173
+ /**
174
+ * Removes the flag file
175
+ */
176
+ clear(): void;
177
+ /**
178
+ * Returns Name of the flag file
179
+ */
180
+ protected get flagName(): string;
181
+ }
182
+
134
183
  /**
135
184
  * Use this class to load and save the "common/config/rush/build-cache.json" config file.
136
185
  * This file provides configuration options for cached project build output.
@@ -886,6 +935,11 @@ export declare interface IExperimentsJson {
886
935
  * in common/config/rush/command-line.json.
887
936
  */
888
937
  phasedCommands?: boolean;
938
+ /**
939
+ * If true, rush install or rush update implicitly specify --ignore-scripts during pnpm install,
940
+ * and run install lifecycle scripts by pnpm rebuild --pending after pnpm install successfully.
941
+ */
942
+ deferredInstallationScripts?: boolean;
889
943
  /**
890
944
  * If true, perform a clean install after when running `rush install` or `rush update` if the
891
945
  * `.npmrc` file has changed since the last install.
@@ -965,6 +1019,51 @@ declare interface IIndividualVersionJson extends IVersionPolicyJson {
965
1019
  lockedMajor?: number;
966
1020
  }
967
1021
 
1022
+ /**
1023
+ * This represents the JSON data structure for the "last-install.flag" file.
1024
+ * @internal
1025
+ */
1026
+ export declare interface _ILastInstallFlagJson {
1027
+ /**
1028
+ * Current node version
1029
+ */
1030
+ node: string;
1031
+ /**
1032
+ * Current package manager name
1033
+ */
1034
+ packageManager: PackageManagerName;
1035
+ /**
1036
+ * Current package manager version
1037
+ */
1038
+ packageManagerVersion: string;
1039
+ /**
1040
+ * Current rush json folder
1041
+ */
1042
+ rushJsonFolder: string;
1043
+ /**
1044
+ * The content of package.json, used in the flag file of autoinstaller
1045
+ */
1046
+ packageJson?: IPackageJson;
1047
+ /**
1048
+ * Same with pnpmOptions.pnpmStorePath in rush.json
1049
+ */
1050
+ storePath?: string;
1051
+ /**
1052
+ * True when "useWorkspaces" is true in rush.json
1053
+ */
1054
+ workspaces?: true;
1055
+ /**
1056
+ * True when user explicitly specify "--ignore-scripts" CLI parameter or deferredInstallationScripts
1057
+ */
1058
+ ignoreScripts?: true;
1059
+ /**
1060
+ * When specified, it is a list of selected projects during partial install
1061
+ * It is undefined when full install
1062
+ */
1063
+ selectedProjectNames?: string[];
1064
+ [key: string]: unknown;
1065
+ }
1066
+
968
1067
  /**
969
1068
  * Options to pass to the rush "launch" functions.
970
1069
  *
@@ -1464,6 +1563,7 @@ declare interface IRushConfigurationProjectJson {
1464
1563
  skipRushCheck?: boolean;
1465
1564
  publishFolder?: string;
1466
1565
  tags?: string[];
1566
+ splitWorkspace?: boolean;
1467
1567
  }
1468
1568
 
1469
1569
  /**
@@ -1488,6 +1588,16 @@ declare interface IRushConfigurationProjectOptions {
1488
1588
  allowedProjectTags: Set<string> | undefined;
1489
1589
  }
1490
1590
 
1591
+ /**
1592
+ * The filter parameters to search from all projects.
1593
+ */
1594
+ declare interface IRushConfigurationProjectsFilter {
1595
+ /**
1596
+ * If true, filter out projects that specify splitWorkspace as true.
1597
+ */
1598
+ splitWorkspace: boolean;
1599
+ }
1600
+
1491
1601
  /**
1492
1602
  * Part of IRushConfigurationJson.
1493
1603
  */
@@ -1751,19 +1861,9 @@ export declare interface _IYarnOptionsJson extends IPackageManagerOptionsJsonBas
1751
1861
  * it can invalidate the last install.
1752
1862
  * @internal
1753
1863
  */
1754
- export declare class _LastInstallFlag {
1755
- private _state;
1756
- /**
1757
- * Returns the full path to the flag file
1758
- */
1759
- readonly path: string;
1760
- /**
1761
- * Creates a new LastInstall flag
1762
- * @param folderPath - the folder that this flag is managing
1763
- * @param state - optional, the state that should be managed or compared
1764
- */
1765
- constructor(folderPath: string, state?: JsonObject);
1864
+ export declare class _LastInstallFlag extends _BaseFlag<_ILastInstallFlagJson> {
1766
1865
  /**
1866
+ * @override
1767
1867
  * Returns true if the file exists and the contents match the current state.
1768
1868
  */
1769
1869
  isValid(options?: _ILockfileValidityCheckOptions): boolean;
@@ -1777,14 +1877,6 @@ export declare class _LastInstallFlag {
1777
1877
  rushVerb: string;
1778
1878
  }): boolean;
1779
1879
  private _isValid;
1780
- /**
1781
- * Writes the flag file to disk with the current state
1782
- */
1783
- create(): void;
1784
- /**
1785
- * Removes the flag file
1786
- */
1787
- clear(): void;
1788
1880
  /**
1789
1881
  * Returns the name of the flag file
1790
1882
  */
@@ -2637,6 +2729,8 @@ export declare class RushConfiguration {
2637
2729
  private _projects;
2638
2730
  private _projectsByName;
2639
2731
  private _projectsByTag;
2732
+ private _filteredProjectsCache;
2733
+ private _hasSplitWorkspaceProject;
2640
2734
  private _commonVersionsConfigurationsByVariant;
2641
2735
  /**
2642
2736
  * The name of the package manager being used to install dependencies
@@ -2691,6 +2785,12 @@ export declare class RushConfiguration {
2691
2785
  * Example: `C:\MyRepo\common\temp`
2692
2786
  */
2693
2787
  readonly commonTempFolder: string;
2788
+ /**
2789
+ * The folder where temporary files will be stored. This is always a subfolder called "temp"
2790
+ * under the common folder.
2791
+ * Example: `C:\MyRepo\common\temp-split`
2792
+ */
2793
+ readonly commonTempSplitFolder: string;
2694
2794
  /**
2695
2795
  * The folder where automation scripts are stored. This is always a subfolder called "scripts"
2696
2796
  * under the common folder.
@@ -2745,6 +2845,21 @@ export declare class RushConfiguration {
2745
2845
  * or `C:\MyRepo\common\temp\pnpm-lock-preinstall.yaml`
2746
2846
  */
2747
2847
  readonly tempShrinkwrapPreinstallFilename: string;
2848
+ /**
2849
+ * The filename (without any path) of the shrinkwrap file for split workspace that is used by the package manager.
2850
+ * @remarks
2851
+ * This property merely reports the filename; the file itself may not actually exist.
2852
+ * Example: `pnpm-lock.yaml`
2853
+ */
2854
+ readonly splitWorkspaceShrinkwrapFilename: string;
2855
+ /**
2856
+ * The full path of the temporary shrinkwrap file for split workspace that is used during
2857
+ * "rush install". This file may get rewritten by the package manager during installation.
2858
+ * @remarks
2859
+ * This property merely reports the filename; the file itself may not actually exist.
2860
+ * Example: `C:\MyRepo\common\temp-split\pnpm-lock.yaml`
2861
+ */
2862
+ readonly tempSplitWorkspaceShrinkwrapFilename: string;
2748
2863
  /**
2749
2864
  * The filename of the variant dependency data file. By default this is
2750
2865
  * called 'current-variant.json' resides in the Rush common folder.
@@ -3001,6 +3116,11 @@ export declare class RushConfiguration {
3001
3116
  * @beta
3002
3117
  */
3003
3118
  get projectsByTag(): ReadonlyMap<string, ReadonlySet<RushConfigurationProject>>;
3119
+ /**
3120
+ * Search for projects according to filter
3121
+ * @beta
3122
+ */
3123
+ getFilteredProjects(filter: IRushConfigurationProjectsFilter): RushConfigurationProject[];
3004
3124
  /**
3005
3125
  * Settings from the common-versions.json config file.
3006
3126
  * @remarks
@@ -3019,6 +3139,10 @@ export declare class RushConfiguration {
3019
3139
  * or "rush update".
3020
3140
  */
3021
3141
  get currentInstalledVariant(): string | undefined;
3142
+ /**
3143
+ * Is there any split workspace project.
3144
+ */
3145
+ get hasSplitWorkspaceProject(): boolean;
3022
3146
  /**
3023
3147
  * Gets the path to the common-versions.json config file for a specific variant.
3024
3148
  * @param variant - The name of the current variant in use by the active command.
@@ -3051,6 +3175,11 @@ export declare class RushConfiguration {
3051
3175
  * @param variant - The name of the current variant in use by the active command.
3052
3176
  */
3053
3177
  getCommittedShrinkwrapFilename(variant?: string | undefined): string;
3178
+ /**
3179
+ * Gets the committed shrinkwrap file name for split workspace.
3180
+ * @param variant - The name of the current variant in use by the active command.
3181
+ */
3182
+ getCommittedSplitWorkspaceShrinkwrapFilename(): string;
3054
3183
  /**
3055
3184
  * Gets the absolute path for "pnpmfile.js" for a specific variant.
3056
3185
  * @param variant - The name of the current variant in use by the active command.
@@ -3086,6 +3215,12 @@ export declare class RushConfiguration {
3086
3215
  */
3087
3216
  tryGetProjectForPath(currentFolderPath: string): RushConfigurationProject | undefined;
3088
3217
  private _getVariantConfigFolderPath;
3218
+ /**
3219
+ * Split workspace can only works on PNPM with "useWorkspaces" enabled.
3220
+ * The workspace project can NOT depend on a split workspace project.
3221
+ * The split workspace project CAN depend on a workspace project.
3222
+ */
3223
+ private _validateSplitWorkspaceRelationships;
3089
3224
  }
3090
3225
 
3091
3226
  /**
@@ -3201,6 +3336,11 @@ export declare class RushConfigurationProject {
3201
3336
  * @beta
3202
3337
  */
3203
3338
  readonly tags: ReadonlySet<string>;
3339
+ /**
3340
+ * Whether this project is a split workspace project.
3341
+ * @beta
3342
+ */
3343
+ readonly splitWorkspace: boolean;
3204
3344
  /** @internal */
3205
3345
  constructor(options: IRushConfigurationProjectOptions);
3206
3346
  /**
@@ -3310,6 +3450,12 @@ export declare class RushConstants {
3310
3450
  * Example: `C:\MyRepo\common\temp`
3311
3451
  */
3312
3452
  static readonly rushTempFolderName: string;
3453
+ /**
3454
+ * The folder name ("temp-split") under the common folder, or under the .rush folder in each project's directory where
3455
+ * temporary files will be stored.
3456
+ * Example: `C:\MyRepo\common\temp-split`
3457
+ */
3458
+ static readonly rushTempSplitFolderName: string;
3313
3459
  /**
3314
3460
  * The folder name ("projects") where temporary projects will be stored.
3315
3461
  * Example: `C:\MyRepo\common\temp\projects`
@@ -35,6 +35,11 @@ export interface IExperimentsJson {
35
35
  * in common/config/rush/command-line.json.
36
36
  */
37
37
  phasedCommands?: boolean;
38
+ /**
39
+ * If true, rush install or rush update implicitly specify --ignore-scripts during pnpm install,
40
+ * and run install lifecycle scripts by pnpm rebuild --pending after pnpm install successfully.
41
+ */
42
+ deferredInstallationScripts?: boolean;
38
43
  /**
39
44
  * If true, perform a clean install after when running `rush install` or `rush update` if the
40
45
  * `.npmrc` file has changed since the last install.
@@ -1,6 +1,52 @@
1
- import { JsonObject } from '@rushstack/node-core-library';
1
+ import { IPackageJson } from '@rushstack/node-core-library';
2
+ import { BaseFlag } from './base/BaseFlag';
3
+ import { PackageManagerName } from './packageManager/PackageManager';
2
4
  import { 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,16 +1,12 @@
1
- import { LastInstallFlag } from './LastInstallFlag';
2
- import { RushConfiguration } from './RushConfiguration';
1
+ import { BaseFlag } from './base/BaseFlag';
2
+ import type { RushConfiguration } from './RushConfiguration';
3
3
  export declare const LAST_LINK_FLAG_FILE_NAME: string;
4
4
  /**
5
5
  * A helper class for managing the last-link flag, which is persistent and
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
  */
@@ -117,6 +117,15 @@ export interface IRushConfigurationJson {
117
117
  export interface ICurrentVariantJson {
118
118
  variant: string | JsonNull;
119
119
  }
120
+ /**
121
+ * The filter parameters to search from all projects.
122
+ */
123
+ export interface IRushConfigurationProjectsFilter {
124
+ /**
125
+ * If true, filter out projects that specify splitWorkspace as true.
126
+ */
127
+ splitWorkspace: boolean;
128
+ }
120
129
  /**
121
130
  * Options for `RushConfiguration.tryFindRushJsonLocation`.
122
131
  * @public
@@ -143,6 +152,8 @@ export declare class RushConfiguration {
143
152
  private _projects;
144
153
  private _projectsByName;
145
154
  private _projectsByTag;
155
+ private _filteredProjectsCache;
156
+ private _hasSplitWorkspaceProject;
146
157
  private _commonVersionsConfigurationsByVariant;
147
158
  /**
148
159
  * The name of the package manager being used to install dependencies
@@ -197,6 +208,12 @@ export declare class RushConfiguration {
197
208
  * Example: `C:\MyRepo\common\temp`
198
209
  */
199
210
  readonly commonTempFolder: string;
211
+ /**
212
+ * The folder where temporary files will be stored. This is always a subfolder called "temp"
213
+ * under the common folder.
214
+ * Example: `C:\MyRepo\common\temp-split`
215
+ */
216
+ readonly commonTempSplitFolder: string;
200
217
  /**
201
218
  * The folder where automation scripts are stored. This is always a subfolder called "scripts"
202
219
  * under the common folder.
@@ -251,6 +268,21 @@ export declare class RushConfiguration {
251
268
  * or `C:\MyRepo\common\temp\pnpm-lock-preinstall.yaml`
252
269
  */
253
270
  readonly tempShrinkwrapPreinstallFilename: string;
271
+ /**
272
+ * The filename (without any path) of the shrinkwrap file for split workspace that is used by the package manager.
273
+ * @remarks
274
+ * This property merely reports the filename; the file itself may not actually exist.
275
+ * Example: `pnpm-lock.yaml`
276
+ */
277
+ readonly splitWorkspaceShrinkwrapFilename: string;
278
+ /**
279
+ * The full path of the temporary shrinkwrap file for split workspace that is used during
280
+ * "rush install". This file may get rewritten by the package manager during installation.
281
+ * @remarks
282
+ * This property merely reports the filename; the file itself may not actually exist.
283
+ * Example: `C:\MyRepo\common\temp-split\pnpm-lock.yaml`
284
+ */
285
+ readonly tempSplitWorkspaceShrinkwrapFilename: string;
254
286
  /**
255
287
  * The filename of the variant dependency data file. By default this is
256
288
  * called 'current-variant.json' resides in the Rush common folder.
@@ -507,6 +539,11 @@ export declare class RushConfiguration {
507
539
  * @beta
508
540
  */
509
541
  get projectsByTag(): ReadonlyMap<string, ReadonlySet<RushConfigurationProject>>;
542
+ /**
543
+ * Search for projects according to filter
544
+ * @beta
545
+ */
546
+ getFilteredProjects(filter: IRushConfigurationProjectsFilter): RushConfigurationProject[];
510
547
  /**
511
548
  * Settings from the common-versions.json config file.
512
549
  * @remarks
@@ -525,6 +562,10 @@ export declare class RushConfiguration {
525
562
  * or "rush update".
526
563
  */
527
564
  get currentInstalledVariant(): string | undefined;
565
+ /**
566
+ * Is there any split workspace project.
567
+ */
568
+ get hasSplitWorkspaceProject(): boolean;
528
569
  /**
529
570
  * Gets the path to the common-versions.json config file for a specific variant.
530
571
  * @param variant - The name of the current variant in use by the active command.
@@ -557,6 +598,11 @@ export declare class RushConfiguration {
557
598
  * @param variant - The name of the current variant in use by the active command.
558
599
  */
559
600
  getCommittedShrinkwrapFilename(variant?: string | undefined): string;
601
+ /**
602
+ * Gets the committed shrinkwrap file name for split workspace.
603
+ * @param variant - The name of the current variant in use by the active command.
604
+ */
605
+ getCommittedSplitWorkspaceShrinkwrapFilename(): string;
560
606
  /**
561
607
  * Gets the absolute path for "pnpmfile.js" for a specific variant.
562
608
  * @param variant - The name of the current variant in use by the active command.
@@ -592,5 +638,11 @@ export declare class RushConfiguration {
592
638
  */
593
639
  tryGetProjectForPath(currentFolderPath: string): RushConfigurationProject | undefined;
594
640
  private _getVariantConfigFolderPath;
641
+ /**
642
+ * Split workspace can only works on PNPM with "useWorkspaces" enabled.
643
+ * The workspace project can NOT depend on a split workspace project.
644
+ * The split workspace project CAN depend on a workspace project.
645
+ */
646
+ private _validateSplitWorkspaceRelationships;
595
647
  }
596
648
  //# 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 { 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
@@ -3,6 +3,13 @@ import type { IInstallManagerOptions } from '../../logic/base/BaseInstallManager
3
3
  import { 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 { 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
@@ -25,7 +25,8 @@ export { RepoStateFile } from './logic/RepoStateFile';
25
25
  export { LookupByPath, IPrefixMatch } from './logic/LookupByPath';
26
26
  export { EventHooks, Event } from './api/EventHooks';
27
27
  export { ChangeManager } from './api/ChangeManager';
28
- export { LastInstallFlag as _LastInstallFlag, ILockfileValidityCheckOptions as _ILockfileValidityCheckOptions } from './api/LastInstallFlag';
28
+ export { LastInstallFlag as _LastInstallFlag, ILastInstallFlagJson as _ILastInstallFlagJson, ILockfileValidityCheckOptions as _ILockfileValidityCheckOptions } from './api/LastInstallFlag';
29
+ export { BaseFlag as _BaseFlag } from './api/base/BaseFlag';
29
30
  export { VersionPolicyDefinitionName, BumpType, LockStepVersionPolicy, IndividualVersionPolicy, VersionPolicy } from './api/VersionPolicy';
30
31
  export { VersionPolicyConfiguration } from './api/VersionPolicyConfiguration';
31
32
  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.
@@ -65,5 +67,26 @@ export interface IInstallManagerOptions {
65
67
  * Callback to invoke between preparing the common/temp folder and running installation.
66
68
  */
67
69
  beforeInstallAsync?: () => Promise<void>;
70
+ /**
71
+ * Whether to specify "--ignore-scripts" command-line parameter, which ignores
72
+ * install lifecycle scripts in package.json and its dependencies
73
+ */
74
+ ignoreScripts: boolean;
75
+ /**
76
+ * Whether to install for projects in split workspace
77
+ */
78
+ includeSplitWorkspace: boolean;
79
+ /**
80
+ * Filters to be passed to PNPM during installation for split workspace.
81
+ */
82
+ splitWorkspacePnpmFilterArguments: string[];
83
+ /**
84
+ * Selected projects during partial install.
85
+ */
86
+ selectedProjects?: Set<RushConfigurationProject>;
87
+ /**
88
+ * Selection parameters for partial install.
89
+ */
90
+ selectionParameters?: SelectionParameterSet;
68
91
  }
69
92
  //# sourceMappingURL=BaseInstallManagerTypes.d.ts.map
@@ -3,6 +3,7 @@ import { RushConfiguration } from '../../api/RushConfiguration';
3
3
  import { 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
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 { RushConfiguration } from '../../api/RushConfiguration';
4
4
  import { IShrinkwrapFilePolicyValidatorOptions } from '../policy/ShrinkwrapFilePolicy';
5
5
  import { IExperimentsJson } from '../../api/ExperimentsConfiguration';
6
6
  import { RushConfigurationProject } from '../../api/RushConfigurationProject';
7
+ import { SplitWorkspacePnpmfileConfiguration } from './SplitWorkspacePnpmfileConfiguration';
7
8
  import { PnpmProjectShrinkwrapFile } from './PnpmProjectShrinkwrapFile';
8
9
  import { 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 */
@@ -94,6 +99,10 @@ export interface IPnpmShrinkwrapYaml {
94
99
  registry: string;
95
100
  /** The list of specifiers used to resolve direct dependency versions */
96
101
  specifiers: Record<string, string>;
102
+ /** The list of override version number for dependencies */
103
+ overrides: {
104
+ [dependency: string]: string;
105
+ };
97
106
  }
98
107
  /**
99
108
  * Given an encoded "dependency key" from the PNPM shrinkwrap file, this parses it into an equivalent
@@ -108,15 +117,23 @@ export declare class PnpmShrinkwrapFile extends BaseShrinkwrapFile {
108
117
  readonly isWorkspaceCompatible: boolean;
109
118
  readonly registry: string;
110
119
  readonly dependencies: ReadonlyMap<string, IPnpmVersionSpecifier>;
120
+ readonly devDependencies: ReadonlyMap<string, IPnpmVersionSpecifier>;
121
+ readonly optionalDependencies: ReadonlyMap<string, IPnpmVersionSpecifier>;
111
122
  readonly importers: ReadonlyMap<string, IPnpmShrinkwrapImporterYaml>;
112
123
  readonly specifiers: ReadonlyMap<string, string>;
113
124
  readonly packages: ReadonlyMap<string, IPnpmShrinkwrapDependencyYaml>;
125
+ readonly overrides: ReadonlyMap<string, string>;
114
126
  private readonly _shrinkwrapJson;
115
127
  private readonly _integrities;
116
128
  private _pnpmfileConfiguration;
129
+ private _splitWorkspaceGlobalPnpmfileConfiguration;
130
+ private _individualPackageName;
131
+ private _individualShrinkwrapImporter;
117
132
  private constructor();
118
133
  static loadFromFile(shrinkwrapYamlFilename: string): PnpmShrinkwrapFile | undefined;
119
134
  static loadFromString(shrinkwrapContent: string): PnpmShrinkwrapFile;
135
+ setIndividualPackage(packageName: string, splitWorkspaceGlobalPnpmfileConfiguration?: SplitWorkspacePnpmfileConfiguration): void;
136
+ get isIndividual(): boolean;
120
137
  getShrinkwrapHash(experimentsConfig?: IExperimentsJson): string;
121
138
  /** @override */
122
139
  validate(packageManagerOptionsConfig: PackageManagerOptionsConfigurationBase, policyOptions: IShrinkwrapFilePolicyValidatorOptions, experimentsConfig?: IExperimentsJson): void;
@@ -203,8 +220,12 @@ export declare class PnpmShrinkwrapFile extends BaseShrinkwrapFile {
203
220
  getImporterKeyByPath(workspaceRoot: string, projectFolder: string): string;
204
221
  getImporter(importerKey: string): IPnpmShrinkwrapImporterYaml | undefined;
205
222
  getIntegrityForImporter(importerKey: string): Map<string, string> | undefined;
223
+ getIntegrityForIndividualProject(): Map<string, string>;
206
224
  /** @override */
207
225
  isWorkspaceProjectModifiedAsync(project: RushConfigurationProject, variant?: string): Promise<boolean>;
226
+ isSplitWorkspaceProjectModified(project: RushConfigurationProject): boolean;
227
+ isSplitWorkspaceIndividualProjectModified(project: RushConfigurationProject): boolean;
228
+ private _isProjectModified;
208
229
  private _getIntegrityForPackage;
209
230
  private _addIntegrities;
210
231
  /**
@@ -214,5 +235,6 @@ export declare class PnpmShrinkwrapFile extends BaseShrinkwrapFile {
214
235
  private _getPackageId;
215
236
  private _parsePnpmDependencyKey;
216
237
  private _serializeInternal;
238
+ private _getIndividualShrinkwrapImporter;
217
239
  }
218
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 { 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 { RushConfigurationProject } from '../../api/RushConfigurationProject';
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;
@@ -102,6 +102,12 @@ export declare class Utilities {
102
102
  * hard disk.
103
103
  */
104
104
  static dangerouslyDeletePath(folderPath: string): void;
105
+ /**
106
+ * BE VERY CAREFUL CALLING THIS FUNCTION!
107
+ * If you specify the wrong folderPath (e.g. "/"), it could potentially delete your entire
108
+ * hard disk.
109
+ */
110
+ static dangerouslyDeletePathAsync(folderPath: string): Promise<void>;
105
111
  static isFileTimestampCurrent(dateToCompare: Date, inputFilenames: string[]): boolean;
106
112
  /**
107
113
  * Executes the command with the specified command-line parameters, and waits for it to complete.
@@ -11,5 +11,5 @@ 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
  //# 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.100.0",
3
+ "version": "5.100.1-pr3481.18",
4
4
  "description": "An API for interacting with the Rush engine",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,18 +14,18 @@
14
14
  "dependencies": {
15
15
  "@types/node-fetch": "2.6.2",
16
16
  "tapable": "2.2.1",
17
- "@rushstack/node-core-library": "3.59.3"
17
+ "@rushstack/node-core-library": "3.59.4"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@types/semver": "7.3.5",
21
21
  "@types/webpack-env": "1.18.0",
22
- "@microsoft/rush-lib": "5.100.0",
23
- "@rushstack/eslint-config": "3.3.1",
24
- "@rushstack/heft": "0.54.0",
25
- "@rushstack/heft-node-rig": "2.2.6",
26
- "@rushstack/stream-collator": "4.0.246",
27
- "@rushstack/ts-command-line": "4.15.0",
28
- "@rushstack/terminal": "0.5.21"
22
+ "@microsoft/rush-lib": "5.100.1-pr3481.18",
23
+ "@rushstack/eslint-config": "3.3.2",
24
+ "@rushstack/heft": "0.56.0",
25
+ "@rushstack/heft-node-rig": "2.2.10",
26
+ "@rushstack/stream-collator": "4.0.250",
27
+ "@rushstack/ts-command-line": "4.15.1",
28
+ "@rushstack/terminal": "0.5.25"
29
29
  },
30
30
  "scripts": {
31
31
  "build": "heft build --clean",