@rushstack/rush-sdk 5.107.0 → 5.107.1-pr3481.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/rush-lib.d.ts +166 -20
- package/lib/api/ExperimentsConfiguration.d.ts +5 -0
- package/lib/api/LastInstallFlag.d.ts +58 -21
- package/lib/api/LastLinkFlag.d.ts +3 -7
- package/lib/api/RushConfiguration.d.ts +52 -0
- package/lib/api/RushConfigurationProject.d.ts +6 -0
- package/lib/api/base/BaseFlag.d.ts +50 -0
- package/lib/api/base/BaseFlag.js +1 -0
- package/lib/api/packageManager/PnpmPackageManager.d.ts +14 -0
- package/lib/cli/actions/InstallAction.d.ts +7 -0
- package/lib/cli/actions/ListAction.d.ts +4 -0
- package/lib/cli/actions/UpdateAction.d.ts +7 -0
- package/lib/cli/parsing/SelectionParameterSet.d.ts +17 -3
- package/lib/index.d.ts +2 -1
- package/lib/logic/PurgeManager.d.ts +1 -0
- package/lib/logic/RushConstants.d.ts +6 -0
- package/lib/logic/UnlinkManager.d.ts +2 -2
- package/lib/logic/base/BaseInstallManagerTypes.d.ts +23 -0
- package/lib/logic/installManager/InstallHelpers.d.ts +1 -0
- package/lib/logic/pnpm/IPnpmfile.d.ts +16 -0
- package/lib/logic/pnpm/PnpmProjectShrinkwrapFile.d.ts +7 -0
- package/lib/logic/pnpm/PnpmShrinkwrapFile.d.ts +17 -0
- package/lib/logic/pnpm/SplitWorkspaceGlobalPnpmfileShim.d.ts +3 -0
- package/lib/logic/pnpm/SplitWorkspaceGlobalPnpmfileShim.js +1 -0
- package/lib/logic/pnpm/SplitWorkspacePnpmfileConfiguration.d.ts +23 -0
- package/lib/logic/pnpm/SplitWorkspacePnpmfileConfiguration.js +1 -0
- package/lib/logic/selectors/SplitWorkspaceProjectSelectorParser.d.ts +10 -0
- package/lib/logic/selectors/SplitWorkspaceProjectSelectorParser.js +1 -0
- package/lib/logic/versionMismatch/VersionMismatchFinderProject.d.ts +2 -0
- package/lib/utilities/PathConstants.d.ts +1 -0
- package/lib/utilities/Utilities.d.ts +6 -0
- package/lib/utilities/npmrcUtilities.d.ts +1 -1
- package/lib/utilities/objectUtilities.d.ts +5 -0
- package/package.json +6 -7
package/dist/rush-lib.d.ts
CHANGED
|
@@ -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.
|
|
@@ -1284,6 +1333,11 @@ export declare interface IExperimentsJson {
|
|
|
1284
1333
|
* in common/config/rush/command-line.json.
|
|
1285
1334
|
*/
|
|
1286
1335
|
phasedCommands?: boolean;
|
|
1336
|
+
/**
|
|
1337
|
+
* If true, rush install or rush update implicitly specify --ignore-scripts during pnpm install,
|
|
1338
|
+
* and run install lifecycle scripts by pnpm rebuild --pending after pnpm install successfully.
|
|
1339
|
+
*/
|
|
1340
|
+
deferredInstallationScripts?: boolean;
|
|
1287
1341
|
/**
|
|
1288
1342
|
* If true, perform a clean install after when running `rush install` or `rush update` if the
|
|
1289
1343
|
* `.npmrc` file has changed since the last install.
|
|
@@ -1363,6 +1417,51 @@ declare interface IIndividualVersionJson extends IVersionPolicyJson {
|
|
|
1363
1417
|
lockedMajor?: number;
|
|
1364
1418
|
}
|
|
1365
1419
|
|
|
1420
|
+
/**
|
|
1421
|
+
* This represents the JSON data structure for the "last-install.flag" file.
|
|
1422
|
+
* @internal
|
|
1423
|
+
*/
|
|
1424
|
+
export declare interface _ILastInstallFlagJson {
|
|
1425
|
+
/**
|
|
1426
|
+
* Current node version
|
|
1427
|
+
*/
|
|
1428
|
+
node: string;
|
|
1429
|
+
/**
|
|
1430
|
+
* Current package manager name
|
|
1431
|
+
*/
|
|
1432
|
+
packageManager: PackageManagerName;
|
|
1433
|
+
/**
|
|
1434
|
+
* Current package manager version
|
|
1435
|
+
*/
|
|
1436
|
+
packageManagerVersion: string;
|
|
1437
|
+
/**
|
|
1438
|
+
* Current rush json folder
|
|
1439
|
+
*/
|
|
1440
|
+
rushJsonFolder: string;
|
|
1441
|
+
/**
|
|
1442
|
+
* The content of package.json, used in the flag file of autoinstaller
|
|
1443
|
+
*/
|
|
1444
|
+
packageJson?: IPackageJson;
|
|
1445
|
+
/**
|
|
1446
|
+
* Same with pnpmOptions.pnpmStorePath in rush.json
|
|
1447
|
+
*/
|
|
1448
|
+
storePath?: string;
|
|
1449
|
+
/**
|
|
1450
|
+
* True when "useWorkspaces" is true in rush.json
|
|
1451
|
+
*/
|
|
1452
|
+
workspaces?: true;
|
|
1453
|
+
/**
|
|
1454
|
+
* True when user explicitly specify "--ignore-scripts" CLI parameter or deferredInstallationScripts
|
|
1455
|
+
*/
|
|
1456
|
+
ignoreScripts?: true;
|
|
1457
|
+
/**
|
|
1458
|
+
* When specified, it is a list of selected projects during partial install
|
|
1459
|
+
* It is undefined when full install
|
|
1460
|
+
*/
|
|
1461
|
+
selectedProjectNames?: string[];
|
|
1462
|
+
[key: string]: unknown;
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1366
1465
|
/**
|
|
1367
1466
|
* Options to pass to the rush "launch" functions.
|
|
1368
1467
|
*
|
|
@@ -1950,6 +2049,7 @@ declare interface IRushConfigurationProjectJson {
|
|
|
1950
2049
|
skipRushCheck?: boolean;
|
|
1951
2050
|
publishFolder?: string;
|
|
1952
2051
|
tags?: string[];
|
|
2052
|
+
splitWorkspace?: boolean;
|
|
1953
2053
|
}
|
|
1954
2054
|
|
|
1955
2055
|
/**
|
|
@@ -1974,6 +2074,16 @@ declare interface IRushConfigurationProjectOptions {
|
|
|
1974
2074
|
allowedProjectTags: Set<string> | undefined;
|
|
1975
2075
|
}
|
|
1976
2076
|
|
|
2077
|
+
/**
|
|
2078
|
+
* The filter parameters to search from all projects.
|
|
2079
|
+
*/
|
|
2080
|
+
declare interface IRushConfigurationProjectsFilter {
|
|
2081
|
+
/**
|
|
2082
|
+
* If true, filter out projects that specify splitWorkspace as true.
|
|
2083
|
+
*/
|
|
2084
|
+
splitWorkspace: boolean;
|
|
2085
|
+
}
|
|
2086
|
+
|
|
1977
2087
|
/**
|
|
1978
2088
|
* Part of IRushConfigurationJson.
|
|
1979
2089
|
*/
|
|
@@ -2264,19 +2374,9 @@ export declare interface _IYarnOptionsJson extends IPackageManagerOptionsJsonBas
|
|
|
2264
2374
|
* it can invalidate the last install.
|
|
2265
2375
|
* @internal
|
|
2266
2376
|
*/
|
|
2267
|
-
export declare class _LastInstallFlag {
|
|
2268
|
-
private _state;
|
|
2269
|
-
/**
|
|
2270
|
-
* Returns the full path to the flag file
|
|
2271
|
-
*/
|
|
2272
|
-
readonly path: string;
|
|
2273
|
-
/**
|
|
2274
|
-
* Creates a new LastInstall flag
|
|
2275
|
-
* @param folderPath - the folder that this flag is managing
|
|
2276
|
-
* @param state - optional, the state that should be managed or compared
|
|
2277
|
-
*/
|
|
2278
|
-
constructor(folderPath: string, state?: JsonObject);
|
|
2377
|
+
export declare class _LastInstallFlag extends _BaseFlag<_ILastInstallFlagJson> {
|
|
2279
2378
|
/**
|
|
2379
|
+
* @override
|
|
2280
2380
|
* Returns true if the file exists and the contents match the current state.
|
|
2281
2381
|
*/
|
|
2282
2382
|
isValid(options?: _ILockfileValidityCheckOptions): boolean;
|
|
@@ -2290,14 +2390,6 @@ export declare class _LastInstallFlag {
|
|
|
2290
2390
|
rushVerb: string;
|
|
2291
2391
|
}): boolean;
|
|
2292
2392
|
private _isValid;
|
|
2293
|
-
/**
|
|
2294
|
-
* Writes the flag file to disk with the current state
|
|
2295
|
-
*/
|
|
2296
|
-
create(): void;
|
|
2297
|
-
/**
|
|
2298
|
-
* Removes the flag file
|
|
2299
|
-
*/
|
|
2300
|
-
clear(): void;
|
|
2301
2393
|
/**
|
|
2302
2394
|
* Returns the name of the flag file
|
|
2303
2395
|
*/
|
|
@@ -3205,6 +3297,8 @@ export declare class RushConfiguration {
|
|
|
3205
3297
|
private _projects;
|
|
3206
3298
|
private _projectsByName;
|
|
3207
3299
|
private _projectsByTag;
|
|
3300
|
+
private _filteredProjectsCache;
|
|
3301
|
+
private _hasSplitWorkspaceProject;
|
|
3208
3302
|
private _commonVersionsConfigurationsByVariant;
|
|
3209
3303
|
/**
|
|
3210
3304
|
* The name of the package manager being used to install dependencies
|
|
@@ -3259,6 +3353,12 @@ export declare class RushConfiguration {
|
|
|
3259
3353
|
* Example: `C:\MyRepo\common\temp`
|
|
3260
3354
|
*/
|
|
3261
3355
|
readonly commonTempFolder: string;
|
|
3356
|
+
/**
|
|
3357
|
+
* The folder where temporary files will be stored. This is always a subfolder called "temp"
|
|
3358
|
+
* under the common folder.
|
|
3359
|
+
* Example: `C:\MyRepo\common\temp-split`
|
|
3360
|
+
*/
|
|
3361
|
+
readonly commonTempSplitFolder: string;
|
|
3262
3362
|
/**
|
|
3263
3363
|
* The folder where automation scripts are stored. This is always a subfolder called "scripts"
|
|
3264
3364
|
* under the common folder.
|
|
@@ -3313,6 +3413,21 @@ export declare class RushConfiguration {
|
|
|
3313
3413
|
* or `C:\MyRepo\common\temp\pnpm-lock-preinstall.yaml`
|
|
3314
3414
|
*/
|
|
3315
3415
|
readonly tempShrinkwrapPreinstallFilename: string;
|
|
3416
|
+
/**
|
|
3417
|
+
* The filename (without any path) of the shrinkwrap file for split workspace that is used by the package manager.
|
|
3418
|
+
* @remarks
|
|
3419
|
+
* This property merely reports the filename; the file itself may not actually exist.
|
|
3420
|
+
* Example: `pnpm-lock.yaml`
|
|
3421
|
+
*/
|
|
3422
|
+
readonly splitWorkspaceShrinkwrapFilename: string;
|
|
3423
|
+
/**
|
|
3424
|
+
* The full path of the temporary shrinkwrap file for split workspace that is used during
|
|
3425
|
+
* "rush install". This file may get rewritten by the package manager during installation.
|
|
3426
|
+
* @remarks
|
|
3427
|
+
* This property merely reports the filename; the file itself may not actually exist.
|
|
3428
|
+
* Example: `C:\MyRepo\common\temp-split\pnpm-lock.yaml`
|
|
3429
|
+
*/
|
|
3430
|
+
readonly tempSplitWorkspaceShrinkwrapFilename: string;
|
|
3316
3431
|
/**
|
|
3317
3432
|
* The filename of the variant dependency data file. By default this is
|
|
3318
3433
|
* called 'current-variant.json' resides in the Rush common folder.
|
|
@@ -3579,6 +3694,11 @@ export declare class RushConfiguration {
|
|
|
3579
3694
|
* @beta
|
|
3580
3695
|
*/
|
|
3581
3696
|
get projectsByTag(): ReadonlyMap<string, ReadonlySet<RushConfigurationProject>>;
|
|
3697
|
+
/**
|
|
3698
|
+
* Search for projects according to filter
|
|
3699
|
+
* @beta
|
|
3700
|
+
*/
|
|
3701
|
+
getFilteredProjects(filter: IRushConfigurationProjectsFilter): RushConfigurationProject[];
|
|
3582
3702
|
/**
|
|
3583
3703
|
* Settings from the common-versions.json config file.
|
|
3584
3704
|
* @remarks
|
|
@@ -3597,6 +3717,10 @@ export declare class RushConfiguration {
|
|
|
3597
3717
|
* or "rush update".
|
|
3598
3718
|
*/
|
|
3599
3719
|
get currentInstalledVariant(): string | undefined;
|
|
3720
|
+
/**
|
|
3721
|
+
* Is there any split workspace project.
|
|
3722
|
+
*/
|
|
3723
|
+
get hasSplitWorkspaceProject(): boolean;
|
|
3600
3724
|
/**
|
|
3601
3725
|
* Gets the path to the common-versions.json config file for a specific variant.
|
|
3602
3726
|
* @param variant - The name of the current variant in use by the active command.
|
|
@@ -3629,6 +3753,11 @@ export declare class RushConfiguration {
|
|
|
3629
3753
|
* @param variant - The name of the current variant in use by the active command.
|
|
3630
3754
|
*/
|
|
3631
3755
|
getCommittedShrinkwrapFilename(variant?: string | undefined): string;
|
|
3756
|
+
/**
|
|
3757
|
+
* Gets the committed shrinkwrap file name for split workspace.
|
|
3758
|
+
* @param variant - The name of the current variant in use by the active command.
|
|
3759
|
+
*/
|
|
3760
|
+
getCommittedSplitWorkspaceShrinkwrapFilename(): string;
|
|
3632
3761
|
/**
|
|
3633
3762
|
* Gets the absolute path for "pnpmfile.js" for a specific variant.
|
|
3634
3763
|
* @param variant - The name of the current variant in use by the active command.
|
|
@@ -3664,6 +3793,12 @@ export declare class RushConfiguration {
|
|
|
3664
3793
|
*/
|
|
3665
3794
|
tryGetProjectForPath(currentFolderPath: string): RushConfigurationProject | undefined;
|
|
3666
3795
|
private _getVariantConfigFolderPath;
|
|
3796
|
+
/**
|
|
3797
|
+
* Split workspace can only works on PNPM with "useWorkspaces" enabled.
|
|
3798
|
+
* The workspace project can NOT depend on a split workspace project.
|
|
3799
|
+
* The split workspace project CAN depend on a workspace project.
|
|
3800
|
+
*/
|
|
3801
|
+
private _validateSplitWorkspaceRelationships;
|
|
3667
3802
|
}
|
|
3668
3803
|
|
|
3669
3804
|
/**
|
|
@@ -3779,6 +3914,11 @@ export declare class RushConfigurationProject {
|
|
|
3779
3914
|
* @beta
|
|
3780
3915
|
*/
|
|
3781
3916
|
readonly tags: ReadonlySet<string>;
|
|
3917
|
+
/**
|
|
3918
|
+
* Whether this project is a split workspace project.
|
|
3919
|
+
* @beta
|
|
3920
|
+
*/
|
|
3921
|
+
readonly splitWorkspace: boolean;
|
|
3782
3922
|
/** @internal */
|
|
3783
3923
|
constructor(options: IRushConfigurationProjectOptions);
|
|
3784
3924
|
/**
|
|
@@ -3888,6 +4028,12 @@ export declare class RushConstants {
|
|
|
3888
4028
|
* Example: `C:\MyRepo\common\temp`
|
|
3889
4029
|
*/
|
|
3890
4030
|
static readonly rushTempFolderName: string;
|
|
4031
|
+
/**
|
|
4032
|
+
* The folder name ("temp-split") under the common folder, or under the .rush folder in each project's directory where
|
|
4033
|
+
* temporary files will be stored.
|
|
4034
|
+
* Example: `C:\MyRepo\common\temp-split`
|
|
4035
|
+
*/
|
|
4036
|
+
static readonly rushTempSplitFolderName: string;
|
|
3891
4037
|
/**
|
|
3892
4038
|
* The folder name ("projects") where temporary projects will be stored.
|
|
3893
4039
|
* 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 {
|
|
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 {
|
|
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
|
|
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 { 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.
|
|
44
|
+
* @see https://pnpm.io/filtering
|
|
37
45
|
*/
|
|
38
|
-
getPnpmFilterArgumentsAsync(terminal: ITerminal): Promise<
|
|
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
|
-
|
|
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
|
|
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.
|
|
@@ -69,5 +71,26 @@ export interface IInstallManagerOptions {
|
|
|
69
71
|
* Callback to invoke between preparing the common/temp folder and running installation.
|
|
70
72
|
*/
|
|
71
73
|
beforeInstallAsync?: () => Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Whether to specify "--ignore-scripts" command-line parameter, which ignores
|
|
76
|
+
* install lifecycle scripts in package.json and its dependencies
|
|
77
|
+
*/
|
|
78
|
+
ignoreScripts: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Whether to install for projects in split workspace
|
|
81
|
+
*/
|
|
82
|
+
includeSplitWorkspace: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Filters to be passed to PNPM during installation for split workspace.
|
|
85
|
+
*/
|
|
86
|
+
splitWorkspacePnpmFilterArguments: string[];
|
|
87
|
+
/**
|
|
88
|
+
* Selected projects during partial install.
|
|
89
|
+
*/
|
|
90
|
+
selectedProjects?: Set<RushConfigurationProject>;
|
|
91
|
+
/**
|
|
92
|
+
* Selection parameters for partial install.
|
|
93
|
+
*/
|
|
94
|
+
selectionParameters?: SelectionParameterSet;
|
|
72
95
|
}
|
|
73
96
|
//# 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 */
|
|
@@ -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 @@
|
|
|
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,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.107.
|
|
3
|
+
"version": "5.107.1-pr3481.20",
|
|
4
4
|
"description": "An API for interacting with the Rush engine",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,16 +28,15 @@
|
|
|
28
28
|
"@rushstack/node-core-library": "3.60.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@types/node": "18.17.15",
|
|
32
31
|
"@types/semver": "7.5.0",
|
|
33
32
|
"@types/webpack-env": "1.18.0",
|
|
34
|
-
"@microsoft/rush-lib": "5.107.
|
|
33
|
+
"@microsoft/rush-lib": "5.107.1-pr3481.20",
|
|
35
34
|
"@rushstack/eslint-config": "3.3.4",
|
|
36
|
-
"@rushstack/heft": "0.
|
|
37
|
-
"
|
|
38
|
-
"@rushstack/stream-collator": "4.1.
|
|
35
|
+
"@rushstack/heft": "0.60.0",
|
|
36
|
+
"local-node-rig": "1.0.0",
|
|
37
|
+
"@rushstack/stream-collator": "4.1.2",
|
|
39
38
|
"@rushstack/ts-command-line": "4.16.0",
|
|
40
|
-
"@rushstack/terminal": "0.7.
|
|
39
|
+
"@rushstack/terminal": "0.7.1"
|
|
41
40
|
},
|
|
42
41
|
"scripts": {
|
|
43
42
|
"build": "heft build --clean",
|