@rushstack/rush-sdk 5.106.0 → 5.107.1
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 +11 -12
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/api/CustomTipsConfiguration.d.ts +5 -9
- package/lib/cli/scriptActions/PhasedScriptAction.d.ts +1 -0
- package/lib/logic/operations/OperationExecutionRecord.d.ts +9 -7
- package/lib/logic/operations/OperationStatus.d.ts +5 -1
- package/lib-shim/index.d.ts.map +1 -1
- package/lib-shim/index.js.map +1 -1
- package/lib-shim/loader.d.ts.map +1 -1
- package/lib-shim/loader.js +8 -6
- package/lib-shim/loader.js.map +1 -1
- package/package.json +9 -10
package/dist/rush-lib.d.ts
CHANGED
|
@@ -377,8 +377,8 @@ export declare class CredentialCache {
|
|
|
377
377
|
* @beta
|
|
378
378
|
*/
|
|
379
379
|
export declare enum CustomTipId {
|
|
380
|
-
TIP_PNPM_UNEXPECTED_STORE = "TIP_PNPM_UNEXPECTED_STORE",
|
|
381
380
|
TIP_RUSH_INCONSISTENT_VERSIONS = "TIP_RUSH_INCONSISTENT_VERSIONS",
|
|
381
|
+
TIP_PNPM_UNEXPECTED_STORE = "TIP_PNPM_UNEXPECTED_STORE",
|
|
382
382
|
TIP_PNPM_NO_MATCHING_VERSION = "TIP_PNPM_NO_MATCHING_VERSION",
|
|
383
383
|
TIP_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE = "TIP_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE",
|
|
384
384
|
TIP_PNPM_PEER_DEP_ISSUES = "TIP_PNPM_PEER_DEP_ISSUES",
|
|
@@ -396,12 +396,7 @@ export declare enum CustomTipId {
|
|
|
396
396
|
*/
|
|
397
397
|
export declare class CustomTipsConfiguration {
|
|
398
398
|
private static _jsonSchema;
|
|
399
|
-
|
|
400
|
-
private readonly _jsonFileName;
|
|
401
|
-
/**
|
|
402
|
-
* The JSON settings loaded from `custom-tips.json`.
|
|
403
|
-
*/
|
|
404
|
-
readonly configuration: Readonly<ICustomTipsJson>;
|
|
399
|
+
readonly providedCustomTipsByTipId: ReadonlyMap<CustomTipId, ICustomTipItemJson>;
|
|
405
400
|
/**
|
|
406
401
|
* A registry mapping custom tip IDs to their corresponding metadata.
|
|
407
402
|
*
|
|
@@ -422,7 +417,7 @@ export declare class CustomTipsConfiguration {
|
|
|
422
417
|
* See {@link ICustomTipInfo} for the structure of the metadata.
|
|
423
418
|
*/
|
|
424
419
|
static customTipRegistry: Readonly<Record<CustomTipId, ICustomTipInfo>>;
|
|
425
|
-
constructor(
|
|
420
|
+
constructor(configFilePath: string);
|
|
426
421
|
/**
|
|
427
422
|
* If custom-tips.json defines a tip for the specified tipId,
|
|
428
423
|
* display the tip on the terminal.
|
|
@@ -452,7 +447,6 @@ export declare class CustomTipsConfiguration {
|
|
|
452
447
|
* @internal
|
|
453
448
|
*/
|
|
454
449
|
_showErrorTip(terminal: ITerminal, tipId: CustomTipId): void;
|
|
455
|
-
private _formatMessageHeader;
|
|
456
450
|
private _writeMessageWithPipes;
|
|
457
451
|
}
|
|
458
452
|
|
|
@@ -798,7 +792,7 @@ export declare const EnvironmentVariableNames: {
|
|
|
798
792
|
* Events happen during Rush runs.
|
|
799
793
|
* @beta
|
|
800
794
|
*/
|
|
801
|
-
|
|
795
|
+
declare enum Event_2 {
|
|
802
796
|
/**
|
|
803
797
|
* Pre Rush install event
|
|
804
798
|
*/
|
|
@@ -816,6 +810,7 @@ export declare enum Event {
|
|
|
816
810
|
*/
|
|
817
811
|
postRushBuild = 4
|
|
818
812
|
}
|
|
813
|
+
export { Event_2 as Event }
|
|
819
814
|
|
|
820
815
|
/**
|
|
821
816
|
* This class represents Rush event hooks configured for this repo.
|
|
@@ -833,7 +828,7 @@ export declare class EventHooks {
|
|
|
833
828
|
* Return all the scripts associated with the specified event.
|
|
834
829
|
* @param event - Rush event
|
|
835
830
|
*/
|
|
836
|
-
get(event:
|
|
831
|
+
get(event: Event_2): string[];
|
|
837
832
|
}
|
|
838
833
|
|
|
839
834
|
/**
|
|
@@ -2614,9 +2609,13 @@ export declare class _OperationStateFile {
|
|
|
2614
2609
|
*/
|
|
2615
2610
|
export declare enum OperationStatus {
|
|
2616
2611
|
/**
|
|
2617
|
-
* The Operation is
|
|
2612
|
+
* The Operation is ready to execute. All its dependencies have succeeded.
|
|
2618
2613
|
*/
|
|
2619
2614
|
Ready = "READY",
|
|
2615
|
+
/**
|
|
2616
|
+
* The Operation is waiting for one or more dependencies to complete.
|
|
2617
|
+
*/
|
|
2618
|
+
Waiting = "WAITING",
|
|
2620
2619
|
/**
|
|
2621
2620
|
* The Operation is Queued
|
|
2622
2621
|
*/
|
package/dist/tsdoc-metadata.json
CHANGED
|
@@ -39,8 +39,8 @@ export interface ICustomTipItemJson {
|
|
|
39
39
|
* @beta
|
|
40
40
|
*/
|
|
41
41
|
export declare enum CustomTipId {
|
|
42
|
-
TIP_PNPM_UNEXPECTED_STORE = "TIP_PNPM_UNEXPECTED_STORE",
|
|
43
42
|
TIP_RUSH_INCONSISTENT_VERSIONS = "TIP_RUSH_INCONSISTENT_VERSIONS",
|
|
43
|
+
TIP_PNPM_UNEXPECTED_STORE = "TIP_PNPM_UNEXPECTED_STORE",
|
|
44
44
|
TIP_PNPM_NO_MATCHING_VERSION = "TIP_PNPM_NO_MATCHING_VERSION",
|
|
45
45
|
TIP_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE = "TIP_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE",
|
|
46
46
|
TIP_PNPM_PEER_DEP_ISSUES = "TIP_PNPM_PEER_DEP_ISSUES",
|
|
@@ -104,6 +104,8 @@ export interface ICustomTipInfo {
|
|
|
104
104
|
*/
|
|
105
105
|
isMatch?: (str: string) => boolean;
|
|
106
106
|
}
|
|
107
|
+
export declare const RUSH_CUSTOM_TIPS: Readonly<Record<`TIP_RUSH_${string}` & CustomTipId, ICustomTipInfo>>;
|
|
108
|
+
export declare const PNPM_CUSTOM_TIPS: Readonly<Record<`TIP_PNPM_${string}` & CustomTipId, ICustomTipInfo>>;
|
|
107
109
|
/**
|
|
108
110
|
* Used to access the `common/config/rush/custom-tips.json` config file,
|
|
109
111
|
* which allows repo maintainers to configure extra details to be printed alongside
|
|
@@ -112,12 +114,7 @@ export interface ICustomTipInfo {
|
|
|
112
114
|
*/
|
|
113
115
|
export declare class CustomTipsConfiguration {
|
|
114
116
|
private static _jsonSchema;
|
|
115
|
-
|
|
116
|
-
private readonly _jsonFileName;
|
|
117
|
-
/**
|
|
118
|
-
* The JSON settings loaded from `custom-tips.json`.
|
|
119
|
-
*/
|
|
120
|
-
readonly configuration: Readonly<ICustomTipsJson>;
|
|
117
|
+
readonly providedCustomTipsByTipId: ReadonlyMap<CustomTipId, ICustomTipItemJson>;
|
|
121
118
|
/**
|
|
122
119
|
* A registry mapping custom tip IDs to their corresponding metadata.
|
|
123
120
|
*
|
|
@@ -138,7 +135,7 @@ export declare class CustomTipsConfiguration {
|
|
|
138
135
|
* See {@link ICustomTipInfo} for the structure of the metadata.
|
|
139
136
|
*/
|
|
140
137
|
static customTipRegistry: Readonly<Record<CustomTipId, ICustomTipInfo>>;
|
|
141
|
-
constructor(
|
|
138
|
+
constructor(configFilePath: string);
|
|
142
139
|
/**
|
|
143
140
|
* If custom-tips.json defines a tip for the specified tipId,
|
|
144
141
|
* display the tip on the terminal.
|
|
@@ -168,7 +165,6 @@ export declare class CustomTipsConfiguration {
|
|
|
168
165
|
* @internal
|
|
169
166
|
*/
|
|
170
167
|
_showErrorTip(terminal: ITerminal, tipId: CustomTipId): void;
|
|
171
|
-
private _formatMessageHeader;
|
|
172
168
|
private _writeMessageWithPipes;
|
|
173
169
|
}
|
|
174
170
|
//# sourceMappingURL=CustomTipsConfiguration.d.ts.map
|
|
@@ -53,6 +53,7 @@ export declare class PhasedScriptAction extends BaseScriptAction<IPhasedCommandC
|
|
|
53
53
|
constructor(options: IPhasedScriptActionOptions);
|
|
54
54
|
runAsync(): Promise<void>;
|
|
55
55
|
private _runInitialPhases;
|
|
56
|
+
private _registerWatchModeInterface;
|
|
56
57
|
/**
|
|
57
58
|
* Runs the command in watch mode. Fundamentally is a simple loop:
|
|
58
59
|
* 1) Wait for a change to one or more projects in the selection
|
|
@@ -24,13 +24,6 @@ export declare class OperationExecutionRecord implements IOperationRunnerContext
|
|
|
24
24
|
* The associated operation.
|
|
25
25
|
*/
|
|
26
26
|
readonly operation: Operation;
|
|
27
|
-
/**
|
|
28
|
-
* The current execution status of an operation. Operations start in the 'ready' state,
|
|
29
|
-
* but can be 'blocked' if an upstream operation failed. It is 'executing' when
|
|
30
|
-
* the operation is executing. Once execution is complete, it is either 'success' or
|
|
31
|
-
* 'failure'.
|
|
32
|
-
*/
|
|
33
|
-
status: OperationStatus;
|
|
34
27
|
/**
|
|
35
28
|
* The error which occurred while executing this operation, this is stored in case we need
|
|
36
29
|
* it later (for example to re-print errors at end of execution).
|
|
@@ -85,6 +78,7 @@ export declare class OperationExecutionRecord implements IOperationRunnerContext
|
|
|
85
78
|
readonly _operationMetadataManager: OperationMetadataManager | undefined;
|
|
86
79
|
private readonly _context;
|
|
87
80
|
private _collatedWriter;
|
|
81
|
+
private _status;
|
|
88
82
|
constructor(operation: Operation, context: IOperationExecutionRecordContext);
|
|
89
83
|
get name(): string;
|
|
90
84
|
get debugMode(): boolean;
|
|
@@ -93,6 +87,14 @@ export declare class OperationExecutionRecord implements IOperationRunnerContext
|
|
|
93
87
|
get collatedWriter(): CollatedWriter;
|
|
94
88
|
get nonCachedDurationMs(): number | undefined;
|
|
95
89
|
get cobuildRunnerId(): string | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* The current execution status of an operation. Operations start in the 'ready' state,
|
|
92
|
+
* but can be 'blocked' if an upstream operation failed. It is 'executing' when
|
|
93
|
+
* the operation is executing. Once execution is complete, it is either 'success' or
|
|
94
|
+
* 'failure'.
|
|
95
|
+
*/
|
|
96
|
+
get status(): OperationStatus;
|
|
97
|
+
set status(newStatus: OperationStatus);
|
|
96
98
|
executeAsync({ onStart, onResult }: {
|
|
97
99
|
onStart: (record: OperationExecutionRecord) => Promise<OperationStatus | undefined>;
|
|
98
100
|
onResult: (record: OperationExecutionRecord) => Promise<void>;
|
|
@@ -4,9 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export declare enum OperationStatus {
|
|
6
6
|
/**
|
|
7
|
-
* The Operation is
|
|
7
|
+
* The Operation is ready to execute. All its dependencies have succeeded.
|
|
8
8
|
*/
|
|
9
9
|
Ready = "READY",
|
|
10
|
+
/**
|
|
11
|
+
* The Operation is waiting for one or more dependencies to complete.
|
|
12
|
+
*/
|
|
13
|
+
Waiting = "WAITING",
|
|
10
14
|
/**
|
|
11
15
|
* The Operation is Queued
|
|
12
16
|
*/
|
package/lib-shim/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA6MA;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAO1E"}
|
package/lib-shim/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3D,2CAA6B;AAC7B,oEAQsC;AAEtC,uCAQmB;AAEnB,MAAM,cAAc,GAAY,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,GAAG,CAAC;AACrG,MAAM,QAAQ,GAAa,IAAI,4BAAQ,CACrC,IAAI,2CAAuB,CAAC;IAC1B,cAAc;CACf,CAAC,CACH,CAAC;AASF,IAAI,YAAY,GAAW,EAAE,CAAC;AAE9B,qGAAqG;AACrG,gGAAgG;AAChG,IAAI,oBAAU,CAAC,aAAa,KAAK,SAAS,EAAE;IAC1C,oBAAU,CAAC,aAAa;QACtB,MAAM,CAAC,uBAAuB;YAC9B,MAAM,CAAC,sCAAsC;YAC7C,MAAM,CAAC,4CAA4C,CAAC;CACvD;AAED,6FAA6F;AAC7F,+FAA+F;AAC/F,IAAI,oBAAU,CAAC,aAAa,KAAK,SAAS,EAAE;IAC1C,MAAM,aAAa,GAA8B,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,QAAQ,CAAC;IAC1E,IAAI,aAAa,EAAE;QACjB,MAAM,mBAAmB,GACvB,qCAAiB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAEnE,IAAI,mBAAmB,KAAK,SAAS,EAAE;YACrC,MAAM,iBAAiB,GAAiB,IAAA,kBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;YAEjG,6DAA6D;YAC7D,IACE,CAAC,iBAAiB,CAAC,YAAY,IAAI,iBAAiB,CAAC,YAAY,CAAC,uBAAa,CAAC,KAAK,SAAS,CAAC;gBAC/F,CAAC,iBAAiB,CAAC,eAAe;oBAChC,iBAAiB,CAAC,eAAe,CAAC,uBAAa,CAAC,KAAK,SAAS,CAAC;gBACjE,CAAC,iBAAiB,CAAC,gBAAgB;oBACjC,iBAAiB,CAAC,gBAAgB,CAAC,uBAAa,CAAC,KAAK,SAAS,CAAC,EAClE;gBACA,mDAAmD;gBACnD,QAAQ,CAAC,gBAAgB,CAAC,eAAe,uBAAa,sBAAsB,CAAC,CAAC;gBAC9E,IAAI;oBACF,oBAAU,CAAC,aAAa,GAAG,IAAA,uCAA6B,EAAC,mBAAmB,CAAC,CAAC;iBAC/E;gBAAC,OAAO,KAAK,EAAE;oBACd,6CAA6C;oBAC7C,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,uBAAa,sBAAsB,CAAC,CAAC;iBAClF;gBAED,oFAAoF;gBACpF,qGAAqG;gBACrG,IAAI,oBAAU,CAAC,aAAa,KAAK,SAAS,EAAE;oBAC1C,gEAAgE;oBAChE,MAAM,CAAC,uBAAuB,GAAG,oBAAU,CAAC,aAAa,CAAC;oBAC1D,QAAQ,CAAC,gBAAgB,CAAC,UAAU,uBAAa,cAAc,CAAC,CAAC;iBAClE;aACF;SACF;KACF;CACF;AAED,gHAAgH;AAChH,4FAA4F;AAC5F,IAAI,oBAAU,CAAC,aAAa,KAAK,SAAS,EAAE;IAC1C,MAAM,WAAW,GAAuB,OAAO,CAAC,GAAG,CAAC,oCAA0B,CAAC,CAAC;IAChF,IAAI,WAAW,EAAE;QACf,QAAQ,CAAC,gBAAgB,CACvB,eAAe,uBAAa,qBAAqB,oCAA0B,sBAAsB,CAClG,CAAC;QACF,IAAI;YACF,oBAAU,CAAC,aAAa,GAAG,IAAA,kBAAQ,EAAC,WAAW,CAAC,CAAC;SAClD;QAAC,OAAO,KAAK,EAAE;YACd,8FAA8F;YAC9F,QAAQ,CAAC,gBAAgB,CACvB,kBAAkB,uBAAa,oBAAoB,oCAA0B,EAAE,CAChF,CAAC;SACH;QAED,IAAI,oBAAU,CAAC,aAAa,KAAK,SAAS,EAAE;YAC1C,gEAAgE;YAChE,MAAM,CAAC,sCAAsC,GAAG,oBAAU,CAAC,aAAa,CAAC;YACzE,QAAQ,CAAC,gBAAgB,CAAC,UAAU,uBAAa,qBAAqB,oCAA0B,EAAE,CAAC,CAAC;SACrG;KACF;CACF;AAED,oHAAoH;AACpH,4GAA4G;AAC5G,IAAI,oBAAU,CAAC,aAAa,KAAK,SAAS,EAAE;IAC1C,IAAI;QACF,MAAM,YAAY,GAAuB,IAAA,iCAAuB,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,KAAK,CACb,yEAAyE;gBACvE,qFAAqF,CACxF,CAAC;SACH;QACD,MAAM,YAAY,GAAW,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAe,4BAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzD,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;QAEjC,MAAM,0BAA0B,GAAW,IAAI,CAAC,IAAI,CAClD,YAAY,EACZ,2CAA2C,WAAW,EAAE,CACzD,CAAC;QAEF,IAAI;YACF,yFAAyF;YACzF,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,uBAAa,gCAAgC,CAAC,CAAC;YAC5F,oBAAU,CAAC,aAAa,GAAG,IAAA,uCAA6B,EAAC,0BAA0B,CAAC,CAAC;SACtF;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,8BAA8B,GAAW,EAAE,CAAC;YAChD,IAAI;gBACF,MAAM,uBAAuB,GAAW,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,oCAAoC,CAAC,CAAC;gBAEtG,QAAQ,CAAC,SAAS,CAAC,6EAA6E,CAAC,CAAC;gBAElG,MAAM,wBAAwB,GAA6B,8BAAU,CAAC,SAAS,CAC7E,MAAM,EACN,CAAC,uBAAuB,EAAE,QAAQ,CAAC,EACnC;oBACE,KAAK,EAAE,MAAM;iBACd,CACF,CAAC;gBAEF,8BAA8B,GAAG,wBAAwB,CAAC,MAAM,CAAC;gBACjE,IAAI,wBAAwB,CAAC,MAAM,KAAK,CAAC,EAAE;oBACzC,MAAM,IAAI,KAAK,CAAC,OAAO,uBAAa,4BAA4B,CAAC,CAAC;iBACnE;gBAED,sDAAsD;gBACtD,QAAQ,CAAC,gBAAgB,CACvB,mBAAmB,uBAAa,8CAA8C,CAC/E,CAAC;gBACF,oBAAU,CAAC,aAAa,GAAG,IAAA,uCAA6B,EAAC,0BAA0B,CAAC,CAAC;aACtF;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,GAAG,8BAA8B,EAAE,CAAC,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,OAAO,uBAAa,yBAAyB,CAAC,CAAC;aAChE;SACF;QAED,IAAI,oBAAU,CAAC,aAAa,KAAK,SAAS,EAAE;YAC1C,gEAAgE;YAChE,MAAM,CAAC,4CAA4C,GAAG,oBAAU,CAAC,aAAa,CAAC;YAC/E,QAAQ,CAAC,gBAAgB,CAAC,UAAU,uBAAa,gCAAgC,CAAC,CAAC;SACpF;KACF;IAAC,OAAO,CAAC,EAAE;QACV,WAAW;QACX,YAAY,GAAI,CAAW,CAAC,OAAO,CAAC;KACrC;CACF;AAED,IAAI,oBAAU,CAAC,aAAa,KAAK,SAAS,EAAE;IAC1C,qGAAqG;IACrG,wGAAwG;IACxG,2CAA2C;IAC3C,OAAO,CAAC,KAAK,CAAC;EACd,YAAY;CACb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB;AAED,uCAAuC;AACvC,KAAK,MAAM,QAAQ,IAAI,oBAAU,CAAC,aAAa,EAAE;IAC/C,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;QAC/D,MAAM,uBAAuB,GAAsB,oBAAU,CAAC,aAAa,CAAC;QAE5E,0CAA0C;QAC1C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE;YACvC,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE;gBACH,OAAO,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC,CAAC;KACJ;CACF;AAED;;GAEG;AACH,SAAgB,2BAA2B,CAAC,aAAqB;IAC/D,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,IAAI,CAAC,OAAO,qDAAqD,CAC1F,CAAC;KACH;IACD,OAAO,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC1D,CAAC;AAPD,kEAOC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'path';\nimport {\n JsonFile,\n JsonObject,\n IPackageJson,\n PackageJsonLookup,\n Executable,\n Terminal,\n ConsoleTerminalProvider\n} from '@rushstack/node-core-library';\nimport type { SpawnSyncReturns } from 'child_process';\nimport {\n RUSH_LIB_NAME,\n RUSH_LIB_PATH_ENV_VAR_NAME,\n RushLibModuleType,\n _require,\n requireRushLibUnderFolderPath,\n tryFindRushJsonLocation,\n sdkContext\n} from './helpers';\n\nconst verboseEnabled: boolean = typeof process !== 'undefined' && process.env.RUSH_SDK_DEBUG === '1';\nconst terminal: Terminal = new Terminal(\n new ConsoleTerminalProvider({\n verboseEnabled\n })\n);\n\ndeclare const global: NodeJS.Global &\n typeof globalThis & {\n ___rush___rushLibModule?: RushLibModuleType;\n ___rush___rushLibModuleFromEnvironment?: RushLibModuleType;\n ___rush___rushLibModuleFromInstallAndRunRush?: RushLibModuleType;\n };\n\nlet errorMessage: string = '';\n\n// SCENARIO 1: Rush's PluginManager has initialized \"rush-sdk\" with Rush's own instance of rush-lib.\n// The Rush host process will assign \"global.___rush___rushLibModule\" before loading the plugin.\nif (sdkContext.rushLibModule === undefined) {\n sdkContext.rushLibModule =\n global.___rush___rushLibModule ||\n global.___rush___rushLibModuleFromEnvironment ||\n global.___rush___rushLibModuleFromInstallAndRunRush;\n}\n\n// SCENARIO 2: The project importing \"rush-sdk\" has installed its own instance of \"rush-lib\"\n// as a package.json dependency. For example, this is used by the Jest tests for Rush plugins.\nif (sdkContext.rushLibModule === undefined) {\n const importingPath: string | null | undefined = module?.parent?.filename;\n if (importingPath) {\n const callerPackageFolder: string | undefined =\n PackageJsonLookup.instance.tryGetPackageFolderFor(importingPath);\n\n if (callerPackageFolder !== undefined) {\n const callerPackageJson: IPackageJson = _require(path.join(callerPackageFolder, 'package.json'));\n\n // Does the caller properly declare a dependency on rush-lib?\n if (\n (callerPackageJson.dependencies && callerPackageJson.dependencies[RUSH_LIB_NAME] !== undefined) ||\n (callerPackageJson.devDependencies &&\n callerPackageJson.devDependencies[RUSH_LIB_NAME] !== undefined) ||\n (callerPackageJson.peerDependencies &&\n callerPackageJson.peerDependencies[RUSH_LIB_NAME] !== undefined)\n ) {\n // Try to resolve rush-lib from the caller's folder\n terminal.writeVerboseLine(`Try to load ${RUSH_LIB_NAME} from caller package`);\n try {\n sdkContext.rushLibModule = requireRushLibUnderFolderPath(callerPackageFolder);\n } catch (error) {\n // If we fail to resolve it, ignore the error\n terminal.writeVerboseLine(`Failed to load ${RUSH_LIB_NAME} from caller package`);\n }\n\n // If two different libraries invoke `rush-sdk`, and one of them provides \"rush-lib\"\n // then the first version to be loaded wins. We do not support side-by-side instances of \"rush-lib\".\n if (sdkContext.rushLibModule !== undefined) {\n // to track which scenario is active and how it got initialized.\n global.___rush___rushLibModule = sdkContext.rushLibModule;\n terminal.writeVerboseLine(`Loaded ${RUSH_LIB_NAME} from caller`);\n }\n }\n }\n }\n}\n\n// SCENARIO 3: A tool or script has been invoked as a child process by an instance of \"rush-lib\" and can use the\n// version that invoked it. In this case, use process.env._RUSH_LIB_PATH to find \"rush-lib\".\nif (sdkContext.rushLibModule === undefined) {\n const rushLibPath: string | undefined = process.env[RUSH_LIB_PATH_ENV_VAR_NAME];\n if (rushLibPath) {\n terminal.writeVerboseLine(\n `Try to load ${RUSH_LIB_NAME} from process.env.${RUSH_LIB_PATH_ENV_VAR_NAME} from caller package`\n );\n try {\n sdkContext.rushLibModule = _require(rushLibPath);\n } catch (error) {\n // Log this as a warning, since it is unexpected to define an incorrect value of the variable.\n terminal.writeWarningLine(\n `Failed to load ${RUSH_LIB_NAME} via process.env.${RUSH_LIB_PATH_ENV_VAR_NAME}`\n );\n }\n\n if (sdkContext.rushLibModule !== undefined) {\n // to track which scenario is active and how it got initialized.\n global.___rush___rushLibModuleFromEnvironment = sdkContext.rushLibModule;\n terminal.writeVerboseLine(`Loaded ${RUSH_LIB_NAME} from process.env.${RUSH_LIB_PATH_ENV_VAR_NAME}`);\n }\n }\n}\n\n// SCENARIO 4: A standalone tool or script depends on \"rush-sdk\", and is meant to be used inside a monorepo folder.\n// In this case, we can use install-run-rush.js to obtain the appropriate rush-lib version for the monorepo.\nif (sdkContext.rushLibModule === undefined) {\n try {\n const rushJsonPath: string | undefined = tryFindRushJsonLocation(process.cwd());\n if (!rushJsonPath) {\n throw new Error(\n 'Unable to find rush.json in the current folder or its parent folders.\\n' +\n 'This tool is meant to be invoked from a working directory inside a Rush repository.'\n );\n }\n const monorepoRoot: string = path.dirname(rushJsonPath);\n\n const rushJson: JsonObject = JsonFile.load(rushJsonPath);\n const { rushVersion } = rushJson;\n\n const installRunNodeModuleFolder: string = path.join(\n monorepoRoot,\n `common/temp/install-run/@microsoft+rush@${rushVersion}`\n );\n\n try {\n // First, try to load the version of \"rush-lib\" that was installed by install-run-rush.js\n terminal.writeVerboseLine(`Trying to load ${RUSH_LIB_NAME} installed by install-run-rush`);\n sdkContext.rushLibModule = requireRushLibUnderFolderPath(installRunNodeModuleFolder);\n } catch (e) {\n let installAndRunRushStderrContent: string = '';\n try {\n const installAndRunRushJSPath: string = path.join(monorepoRoot, 'common/scripts/install-run-rush.js');\n\n terminal.writeLine('The Rush engine has not been installed yet. Invoking install-run-rush.js...');\n\n const installAndRunRushProcess: SpawnSyncReturns<string> = Executable.spawnSync(\n 'node',\n [installAndRunRushJSPath, '--help'],\n {\n stdio: 'pipe'\n }\n );\n\n installAndRunRushStderrContent = installAndRunRushProcess.stderr;\n if (installAndRunRushProcess.status !== 0) {\n throw new Error(`The ${RUSH_LIB_NAME} package failed to install`);\n }\n\n // Retry to load \"rush-lib\" after install-run-rush run\n terminal.writeVerboseLine(\n `Trying to load ${RUSH_LIB_NAME} installed by install-run-rush a second time`\n );\n sdkContext.rushLibModule = requireRushLibUnderFolderPath(installRunNodeModuleFolder);\n } catch (e) {\n console.error(`${installAndRunRushStderrContent}`);\n throw new Error(`The ${RUSH_LIB_NAME} package failed to load`);\n }\n }\n\n if (sdkContext.rushLibModule !== undefined) {\n // to track which scenario is active and how it got initialized.\n global.___rush___rushLibModuleFromInstallAndRunRush = sdkContext.rushLibModule;\n terminal.writeVerboseLine(`Loaded ${RUSH_LIB_NAME} installed by install-run-rush`);\n }\n } catch (e) {\n // no-catch\n errorMessage = (e as Error).message;\n }\n}\n\nif (sdkContext.rushLibModule === undefined) {\n // This error indicates that a project is trying to import \"@rushstack/rush-sdk\", but the Rush engine\n // instance cannot be found. If you are writing Jest tests for a Rush plugin, add \"@microsoft/rush-lib\"\n // to the devDependencies for your project.\n console.error(`Error: The @rushstack/rush-sdk package was not able to load the Rush engine:\n${errorMessage}\n`);\n process.exit(1);\n}\n\n// Based on TypeScript's __exportStar()\nfor (const property in sdkContext.rushLibModule) {\n if (property !== 'default' && !exports.hasOwnProperty(property)) {\n const rushLibModuleForClosure: RushLibModuleType = sdkContext.rushLibModule;\n\n // Based on TypeScript's __createBinding()\n Object.defineProperty(exports, property, {\n enumerable: true,\n get: function () {\n return rushLibModuleForClosure[property];\n }\n });\n }\n}\n\n/**\n * Used by the .js stubs for path-based imports of `@microsoft/rush-lib` internal APIs.\n */\nexport function _rushSdk_loadInternalModule(srcImportPath: string): unknown {\n if (!exports._RushInternals) {\n throw new Error(\n `Rush version ${exports.Rush.version} does not support internal API imports via rush-sdk`\n );\n }\n return exports._RushInternals.loadModule(srcImportPath);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'path';\nimport {\n JsonFile,\n JsonObject,\n IPackageJson,\n PackageJsonLookup,\n Executable,\n Terminal,\n ConsoleTerminalProvider\n} from '@rushstack/node-core-library';\nimport type { SpawnSyncReturns } from 'child_process';\nimport {\n RUSH_LIB_NAME,\n RUSH_LIB_PATH_ENV_VAR_NAME,\n RushLibModuleType,\n _require,\n requireRushLibUnderFolderPath,\n tryFindRushJsonLocation,\n sdkContext\n} from './helpers';\n\nconst verboseEnabled: boolean = typeof process !== 'undefined' && process.env.RUSH_SDK_DEBUG === '1';\nconst terminal: Terminal = new Terminal(\n new ConsoleTerminalProvider({\n verboseEnabled\n })\n);\n\ndeclare const global: typeof globalThis & {\n ___rush___rushLibModule?: RushLibModuleType;\n ___rush___rushLibModuleFromEnvironment?: RushLibModuleType;\n ___rush___rushLibModuleFromInstallAndRunRush?: RushLibModuleType;\n};\n\nlet errorMessage: string = '';\n\n// SCENARIO 1: Rush's PluginManager has initialized \"rush-sdk\" with Rush's own instance of rush-lib.\n// The Rush host process will assign \"global.___rush___rushLibModule\" before loading the plugin.\nif (sdkContext.rushLibModule === undefined) {\n sdkContext.rushLibModule =\n global.___rush___rushLibModule ||\n global.___rush___rushLibModuleFromEnvironment ||\n global.___rush___rushLibModuleFromInstallAndRunRush;\n}\n\n// SCENARIO 2: The project importing \"rush-sdk\" has installed its own instance of \"rush-lib\"\n// as a package.json dependency. For example, this is used by the Jest tests for Rush plugins.\nif (sdkContext.rushLibModule === undefined) {\n const importingPath: string | null | undefined = module?.parent?.filename;\n if (importingPath) {\n const callerPackageFolder: string | undefined =\n PackageJsonLookup.instance.tryGetPackageFolderFor(importingPath);\n\n if (callerPackageFolder !== undefined) {\n const callerPackageJson: IPackageJson = _require(path.join(callerPackageFolder, 'package.json'));\n\n // Does the caller properly declare a dependency on rush-lib?\n if (\n (callerPackageJson.dependencies && callerPackageJson.dependencies[RUSH_LIB_NAME] !== undefined) ||\n (callerPackageJson.devDependencies &&\n callerPackageJson.devDependencies[RUSH_LIB_NAME] !== undefined) ||\n (callerPackageJson.peerDependencies &&\n callerPackageJson.peerDependencies[RUSH_LIB_NAME] !== undefined)\n ) {\n // Try to resolve rush-lib from the caller's folder\n terminal.writeVerboseLine(`Try to load ${RUSH_LIB_NAME} from caller package`);\n try {\n sdkContext.rushLibModule = requireRushLibUnderFolderPath(callerPackageFolder);\n } catch (error) {\n // If we fail to resolve it, ignore the error\n terminal.writeVerboseLine(`Failed to load ${RUSH_LIB_NAME} from caller package`);\n }\n\n // If two different libraries invoke `rush-sdk`, and one of them provides \"rush-lib\"\n // then the first version to be loaded wins. We do not support side-by-side instances of \"rush-lib\".\n if (sdkContext.rushLibModule !== undefined) {\n // to track which scenario is active and how it got initialized.\n global.___rush___rushLibModule = sdkContext.rushLibModule;\n terminal.writeVerboseLine(`Loaded ${RUSH_LIB_NAME} from caller`);\n }\n }\n }\n }\n}\n\n// SCENARIO 3: A tool or script has been invoked as a child process by an instance of \"rush-lib\" and can use the\n// version that invoked it. In this case, use process.env._RUSH_LIB_PATH to find \"rush-lib\".\nif (sdkContext.rushLibModule === undefined) {\n const rushLibPath: string | undefined = process.env[RUSH_LIB_PATH_ENV_VAR_NAME];\n if (rushLibPath) {\n terminal.writeVerboseLine(\n `Try to load ${RUSH_LIB_NAME} from process.env.${RUSH_LIB_PATH_ENV_VAR_NAME} from caller package`\n );\n try {\n sdkContext.rushLibModule = _require(rushLibPath);\n } catch (error) {\n // Log this as a warning, since it is unexpected to define an incorrect value of the variable.\n terminal.writeWarningLine(\n `Failed to load ${RUSH_LIB_NAME} via process.env.${RUSH_LIB_PATH_ENV_VAR_NAME}`\n );\n }\n\n if (sdkContext.rushLibModule !== undefined) {\n // to track which scenario is active and how it got initialized.\n global.___rush___rushLibModuleFromEnvironment = sdkContext.rushLibModule;\n terminal.writeVerboseLine(`Loaded ${RUSH_LIB_NAME} from process.env.${RUSH_LIB_PATH_ENV_VAR_NAME}`);\n }\n }\n}\n\n// SCENARIO 4: A standalone tool or script depends on \"rush-sdk\", and is meant to be used inside a monorepo folder.\n// In this case, we can use install-run-rush.js to obtain the appropriate rush-lib version for the monorepo.\nif (sdkContext.rushLibModule === undefined) {\n try {\n const rushJsonPath: string | undefined = tryFindRushJsonLocation(process.cwd());\n if (!rushJsonPath) {\n throw new Error(\n 'Unable to find rush.json in the current folder or its parent folders.\\n' +\n 'This tool is meant to be invoked from a working directory inside a Rush repository.'\n );\n }\n const monorepoRoot: string = path.dirname(rushJsonPath);\n\n const rushJson: JsonObject = JsonFile.load(rushJsonPath);\n const { rushVersion } = rushJson;\n\n const installRunNodeModuleFolder: string = path.join(\n monorepoRoot,\n `common/temp/install-run/@microsoft+rush@${rushVersion}`\n );\n\n try {\n // First, try to load the version of \"rush-lib\" that was installed by install-run-rush.js\n terminal.writeVerboseLine(`Trying to load ${RUSH_LIB_NAME} installed by install-run-rush`);\n sdkContext.rushLibModule = requireRushLibUnderFolderPath(installRunNodeModuleFolder);\n } catch (e) {\n let installAndRunRushStderrContent: string = '';\n try {\n const installAndRunRushJSPath: string = path.join(monorepoRoot, 'common/scripts/install-run-rush.js');\n\n terminal.writeLine('The Rush engine has not been installed yet. Invoking install-run-rush.js...');\n\n const installAndRunRushProcess: SpawnSyncReturns<string> = Executable.spawnSync(\n 'node',\n [installAndRunRushJSPath, '--help'],\n {\n stdio: 'pipe'\n }\n );\n\n installAndRunRushStderrContent = installAndRunRushProcess.stderr;\n if (installAndRunRushProcess.status !== 0) {\n throw new Error(`The ${RUSH_LIB_NAME} package failed to install`);\n }\n\n // Retry to load \"rush-lib\" after install-run-rush run\n terminal.writeVerboseLine(\n `Trying to load ${RUSH_LIB_NAME} installed by install-run-rush a second time`\n );\n sdkContext.rushLibModule = requireRushLibUnderFolderPath(installRunNodeModuleFolder);\n } catch (e) {\n console.error(`${installAndRunRushStderrContent}`);\n throw new Error(`The ${RUSH_LIB_NAME} package failed to load`);\n }\n }\n\n if (sdkContext.rushLibModule !== undefined) {\n // to track which scenario is active and how it got initialized.\n global.___rush___rushLibModuleFromInstallAndRunRush = sdkContext.rushLibModule;\n terminal.writeVerboseLine(`Loaded ${RUSH_LIB_NAME} installed by install-run-rush`);\n }\n } catch (e) {\n // no-catch\n errorMessage = (e as Error).message;\n }\n}\n\nif (sdkContext.rushLibModule === undefined) {\n // This error indicates that a project is trying to import \"@rushstack/rush-sdk\", but the Rush engine\n // instance cannot be found. If you are writing Jest tests for a Rush plugin, add \"@microsoft/rush-lib\"\n // to the devDependencies for your project.\n console.error(`Error: The @rushstack/rush-sdk package was not able to load the Rush engine:\n${errorMessage}\n`);\n process.exit(1);\n}\n\n// Based on TypeScript's __exportStar()\nfor (const property in sdkContext.rushLibModule) {\n if (property !== 'default' && !exports.hasOwnProperty(property)) {\n const rushLibModuleForClosure: RushLibModuleType = sdkContext.rushLibModule;\n\n // Based on TypeScript's __createBinding()\n Object.defineProperty(exports, property, {\n enumerable: true,\n get: function () {\n return rushLibModuleForClosure[property];\n }\n });\n }\n}\n\n/**\n * Used by the .js stubs for path-based imports of `@microsoft/rush-lib` internal APIs.\n */\nexport function _rushSdk_loadInternalModule(srcImportPath: string): unknown {\n if (!exports._RushInternals) {\n throw new Error(\n `Rush version ${exports.Rush.version} does not support internal API imports via rush-sdk`\n );\n }\n return exports._RushInternals.loadModule(srcImportPath);\n}\n"]}
|
package/lib-shim/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";AAqBA;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,UAAU,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAEvD;;;;;;;;OAQG;IACH,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC;AAED;;;;GAIG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAwB9B;;OAEG;IACH,WAAkB,QAAQ,IAAI,OAAO,CAEpC;IAED;;;;;;;OAOG;WACiB,SAAS,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;CAiJ7E"}
|
package/lib-shim/loader.js
CHANGED
|
@@ -39,7 +39,7 @@ class RushSdkLoader {
|
|
|
39
39
|
* Throws an "AbortError" exception if abortSignal.aborted is true.
|
|
40
40
|
*/
|
|
41
41
|
static _checkForCancel(abortSignal, onNotifyEvent, progressPercent) {
|
|
42
|
-
if (!abortSignal.aborted) {
|
|
42
|
+
if (!(abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted)) {
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
45
|
if (onNotifyEvent) {
|
|
@@ -71,7 +71,7 @@ class RushSdkLoader {
|
|
|
71
71
|
*/
|
|
72
72
|
static async loadAsync(options) {
|
|
73
73
|
// SCENARIO 5: The rush-lib engine is loaded manually using rushSdkLoader.loadAsync().
|
|
74
|
-
var _a, _b
|
|
74
|
+
var _a, _b;
|
|
75
75
|
if (!options) {
|
|
76
76
|
options = {};
|
|
77
77
|
}
|
|
@@ -80,9 +80,9 @@ class RushSdkLoader {
|
|
|
80
80
|
}
|
|
81
81
|
const onNotifyEvent = options.onNotifyEvent;
|
|
82
82
|
let progressPercent = undefined;
|
|
83
|
-
const abortSignal =
|
|
83
|
+
const abortSignal = options.abortSignal;
|
|
84
84
|
try {
|
|
85
|
-
const rushJsonSearchFolder = (
|
|
85
|
+
const rushJsonSearchFolder = (_a = options.rushJsonSearchFolder) !== null && _a !== void 0 ? _a : process.cwd();
|
|
86
86
|
if (onNotifyEvent) {
|
|
87
87
|
onNotifyEvent({
|
|
88
88
|
logMessage: {
|
|
@@ -136,7 +136,9 @@ class RushSdkLoader {
|
|
|
136
136
|
if (installAndRunRushProcess.status !== 0) {
|
|
137
137
|
throw new Error(`The ${helpers_1.RUSH_LIB_NAME} package failed to install`);
|
|
138
138
|
}
|
|
139
|
-
|
|
139
|
+
if (abortSignal) {
|
|
140
|
+
RushSdkLoader._checkForCancel(abortSignal, onNotifyEvent, progressPercent);
|
|
141
|
+
}
|
|
140
142
|
// TODO: Implement incremental progress updates
|
|
141
143
|
progressPercent = 90;
|
|
142
144
|
// Retry to load "rush-lib" after install-run-rush run
|
|
@@ -176,7 +178,7 @@ class RushSdkLoader {
|
|
|
176
178
|
onNotifyEvent({
|
|
177
179
|
logMessage: {
|
|
178
180
|
kind: 'info',
|
|
179
|
-
text: 'The operation failed: ' + ((
|
|
181
|
+
text: 'The operation failed: ' + ((_b = e.message) !== null && _b !== void 0 ? _b : 'An unknown error occurred')
|
|
180
182
|
},
|
|
181
183
|
progressPercent
|
|
182
184
|
});
|
package/lib-shim/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'path';\nimport type { SpawnSyncReturns } from 'child_process';\nimport { JsonFile, JsonObject, Executable } from '@rushstack/node-core-library';\n\nimport {\n tryFindRushJsonLocation,\n RUSH_LIB_NAME,\n RushLibModuleType,\n requireRushLibUnderFolderPath,\n sdkContext\n} from './helpers';\n\ndeclare const global: NodeJS.Global &\n typeof globalThis & {\n ___rush___rushLibModule?: RushLibModuleType;\n ___rush___rushLibModuleFromEnvironment?: RushLibModuleType;\n ___rush___rushLibModuleFromInstallAndRunRush?: RushLibModuleType;\n };\n\n/**\n * Type of {@link ISdkCallbackEvent.logMessage}\n * @public\n */\nexport interface IProgressBarCallbackLogMessage {\n /**\n * A status message to print in the log window, or `undefined` if there are\n * no further messages. This string may contain newlines.\n */\n text: string;\n\n /**\n * The type of message. More message types may be added in the future.\n */\n kind: 'info' | 'debug';\n}\n\n/**\n * Event options for {@link ILoadSdkAsyncOptions.onNotifyEvent}\n * @public\n */\nexport interface ISdkCallbackEvent {\n /**\n * Allows the caller to display log information about the operation.\n */\n logMessage: IProgressBarCallbackLogMessage | undefined;\n\n /**\n * Allows the caller to display a progress bar for long-running operations.\n *\n * @remarks\n * If a long-running operation is required, then `progressPercent` will\n * start at 0.0 and count upwards and finish at 100.0 if the operation completes\n * successfully. If the long-running operation has not yet started, or\n * is not required, then the value will be `undefined`.\n */\n progressPercent: number | undefined;\n}\n\n/**\n * Type of {@link ILoadSdkAsyncOptions.onNotifyEvent}\n * @public\n */\nexport type SdkNotifyEventCallback = (sdkEvent: ISdkCallbackEvent) => void;\n\n/**\n * Options for {@link RushSdkLoader.loadAsync}\n * @public\n */\nexport interface ILoadSdkAsyncOptions {\n /**\n * The folder to start from when searching for the Rush workspace configuration.\n * If this folder does not contain a `rush.json` file, then each parent folder\n * will be searched. If `rush.json` is not found, then the SDK fails to load.\n */\n rushJsonSearchFolder?: string;\n\n /**\n * A cancellation token that the caller can use to prematurely abort the operation.\n */\n abortSignal?: AbortSignal;\n\n /**\n * Allows the caller to monitor the progress of the operation.\n */\n onNotifyEvent?: SdkNotifyEventCallback;\n}\n\n/**\n * Exposes operations that control how the `@microsoft/rush-lib` engine is\n * located and loaded.\n * @public\n */\nexport class RushSdkLoader {\n /**\n * Throws an \"AbortError\" exception if abortSignal.aborted is true.\n */\n private static _checkForCancel(\n abortSignal: AbortSignal,\n onNotifyEvent: SdkNotifyEventCallback | undefined,\n progressPercent: number | undefined\n ): void {\n if (!abortSignal.aborted) {\n return;\n }\n\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'info',\n text: `The operation was canceled`\n },\n progressPercent\n });\n }\n\n const error: Error = new Error('The operation was canceled');\n error.name = 'AbortError';\n throw error;\n }\n\n /**\n * Returns true if the Rush engine has already been loaded.\n */\n public static get isLoaded(): boolean {\n return sdkContext.rushLibModule !== undefined;\n }\n\n /**\n * Manually load the Rush engine based on rush.json found for `rushJsonSearchFolder`.\n * Throws an exception if {@link RushSdkLoader.isLoaded} is already `true`.\n *\n * @remarks\n * This API supports an callback that can be used display a progress bar,\n * log of operations, and allow the operation to be canceled prematurely.\n */\n public static async loadAsync(options?: ILoadSdkAsyncOptions): Promise<void> {\n // SCENARIO 5: The rush-lib engine is loaded manually using rushSdkLoader.loadAsync().\n\n if (!options) {\n options = {};\n }\n\n if (RushSdkLoader.isLoaded) {\n throw new Error('RushSdkLoader.loadAsync() failed because the Rush engine has already been loaded');\n }\n\n const onNotifyEvent: SdkNotifyEventCallback | undefined = options.onNotifyEvent;\n let progressPercent: number | undefined = undefined;\n\n const abortSignal: AbortSignal = options.abortSignal ?? { aborted: false };\n\n try {\n const rushJsonSearchFolder: string = options.rushJsonSearchFolder ?? process.cwd();\n\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'debug',\n text: `Searching for rush.json starting from: ` + rushJsonSearchFolder\n },\n progressPercent\n });\n }\n\n const rushJsonPath: string | undefined = tryFindRushJsonLocation(rushJsonSearchFolder);\n if (!rushJsonPath) {\n throw new Error(\n 'Unable to find rush.json in the specified folder or its parent folders:\\n' +\n `${rushJsonSearchFolder}\\n`\n );\n }\n const monorepoRoot: string = path.dirname(rushJsonPath);\n\n const rushJson: JsonObject = await JsonFile.loadAsync(rushJsonPath);\n const { rushVersion } = rushJson;\n\n const installRunNodeModuleFolder: string = path.join(\n monorepoRoot,\n `common/temp/install-run/@microsoft+rush@${rushVersion}`\n );\n\n try {\n // First, try to load the version of \"rush-lib\" that was installed by install-run-rush.js\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'info',\n text: `Trying to load ${RUSH_LIB_NAME} installed by install-run-rush`\n },\n progressPercent\n });\n }\n sdkContext.rushLibModule = requireRushLibUnderFolderPath(installRunNodeModuleFolder);\n } catch (e) {\n let installAndRunRushStderrContent: string = '';\n try {\n const installAndRunRushJSPath: string = path.join(\n monorepoRoot,\n 'common/scripts/install-run-rush.js'\n );\n\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'info',\n text: 'The Rush engine has not been installed yet. Invoking install-run-rush.js...'\n },\n progressPercent\n });\n }\n\n // Start the installation\n progressPercent = 0;\n\n const installAndRunRushProcess: SpawnSyncReturns<string> = Executable.spawnSync(\n 'node',\n [installAndRunRushJSPath, '--help'],\n {\n stdio: 'pipe'\n }\n );\n\n installAndRunRushStderrContent = installAndRunRushProcess.stderr;\n if (installAndRunRushProcess.status !== 0) {\n throw new Error(`The ${RUSH_LIB_NAME} package failed to install`);\n }\n\n RushSdkLoader._checkForCancel(abortSignal, onNotifyEvent, progressPercent);\n\n // TODO: Implement incremental progress updates\n progressPercent = 90;\n\n // Retry to load \"rush-lib\" after install-run-rush run\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'debug',\n text: `Trying to load ${RUSH_LIB_NAME} installed by install-run-rush a second time`\n },\n progressPercent\n });\n }\n\n sdkContext.rushLibModule = requireRushLibUnderFolderPath(installRunNodeModuleFolder);\n\n progressPercent = 100;\n } catch (e) {\n console.error(`${installAndRunRushStderrContent}`);\n throw new Error(`The ${RUSH_LIB_NAME} package failed to load`);\n }\n }\n\n if (sdkContext.rushLibModule !== undefined) {\n // to track which scenario is active and how it got initialized.\n global.___rush___rushLibModuleFromInstallAndRunRush = sdkContext.rushLibModule;\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'debug',\n text: `Loaded ${RUSH_LIB_NAME} installed by install-run-rush`\n },\n progressPercent\n });\n }\n }\n } catch (e) {\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'info',\n text: 'The operation failed: ' + (e.message ?? 'An unknown error occurred')\n },\n progressPercent\n });\n }\n throw e;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'path';\nimport type { SpawnSyncReturns } from 'child_process';\nimport { JsonFile, JsonObject, Executable } from '@rushstack/node-core-library';\n\nimport {\n tryFindRushJsonLocation,\n RUSH_LIB_NAME,\n RushLibModuleType,\n requireRushLibUnderFolderPath,\n sdkContext\n} from './helpers';\n\ndeclare const global: typeof globalThis & {\n ___rush___rushLibModule?: RushLibModuleType;\n ___rush___rushLibModuleFromEnvironment?: RushLibModuleType;\n ___rush___rushLibModuleFromInstallAndRunRush?: RushLibModuleType;\n};\n\n/**\n * Type of {@link ISdkCallbackEvent.logMessage}\n * @public\n */\nexport interface IProgressBarCallbackLogMessage {\n /**\n * A status message to print in the log window, or `undefined` if there are\n * no further messages. This string may contain newlines.\n */\n text: string;\n\n /**\n * The type of message. More message types may be added in the future.\n */\n kind: 'info' | 'debug';\n}\n\n/**\n * Event options for {@link ILoadSdkAsyncOptions.onNotifyEvent}\n * @public\n */\nexport interface ISdkCallbackEvent {\n /**\n * Allows the caller to display log information about the operation.\n */\n logMessage: IProgressBarCallbackLogMessage | undefined;\n\n /**\n * Allows the caller to display a progress bar for long-running operations.\n *\n * @remarks\n * If a long-running operation is required, then `progressPercent` will\n * start at 0.0 and count upwards and finish at 100.0 if the operation completes\n * successfully. If the long-running operation has not yet started, or\n * is not required, then the value will be `undefined`.\n */\n progressPercent: number | undefined;\n}\n\n/**\n * Type of {@link ILoadSdkAsyncOptions.onNotifyEvent}\n * @public\n */\nexport type SdkNotifyEventCallback = (sdkEvent: ISdkCallbackEvent) => void;\n\n/**\n * Options for {@link RushSdkLoader.loadAsync}\n * @public\n */\nexport interface ILoadSdkAsyncOptions {\n /**\n * The folder to start from when searching for the Rush workspace configuration.\n * If this folder does not contain a `rush.json` file, then each parent folder\n * will be searched. If `rush.json` is not found, then the SDK fails to load.\n */\n rushJsonSearchFolder?: string;\n\n /**\n * A cancellation token that the caller can use to prematurely abort the operation.\n */\n abortSignal?: AbortSignal;\n\n /**\n * Allows the caller to monitor the progress of the operation.\n */\n onNotifyEvent?: SdkNotifyEventCallback;\n}\n\n/**\n * Exposes operations that control how the `@microsoft/rush-lib` engine is\n * located and loaded.\n * @public\n */\nexport class RushSdkLoader {\n /**\n * Throws an \"AbortError\" exception if abortSignal.aborted is true.\n */\n private static _checkForCancel(\n abortSignal: AbortSignal,\n onNotifyEvent: SdkNotifyEventCallback | undefined,\n progressPercent: number | undefined\n ): void {\n if (!abortSignal?.aborted) {\n return;\n }\n\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'info',\n text: `The operation was canceled`\n },\n progressPercent\n });\n }\n\n const error: Error = new Error('The operation was canceled');\n error.name = 'AbortError';\n throw error;\n }\n\n /**\n * Returns true if the Rush engine has already been loaded.\n */\n public static get isLoaded(): boolean {\n return sdkContext.rushLibModule !== undefined;\n }\n\n /**\n * Manually load the Rush engine based on rush.json found for `rushJsonSearchFolder`.\n * Throws an exception if {@link RushSdkLoader.isLoaded} is already `true`.\n *\n * @remarks\n * This API supports an callback that can be used display a progress bar,\n * log of operations, and allow the operation to be canceled prematurely.\n */\n public static async loadAsync(options?: ILoadSdkAsyncOptions): Promise<void> {\n // SCENARIO 5: The rush-lib engine is loaded manually using rushSdkLoader.loadAsync().\n\n if (!options) {\n options = {};\n }\n\n if (RushSdkLoader.isLoaded) {\n throw new Error('RushSdkLoader.loadAsync() failed because the Rush engine has already been loaded');\n }\n\n const onNotifyEvent: SdkNotifyEventCallback | undefined = options.onNotifyEvent;\n let progressPercent: number | undefined = undefined;\n\n const abortSignal: AbortSignal | undefined = options.abortSignal;\n\n try {\n const rushJsonSearchFolder: string = options.rushJsonSearchFolder ?? process.cwd();\n\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'debug',\n text: `Searching for rush.json starting from: ` + rushJsonSearchFolder\n },\n progressPercent\n });\n }\n\n const rushJsonPath: string | undefined = tryFindRushJsonLocation(rushJsonSearchFolder);\n if (!rushJsonPath) {\n throw new Error(\n 'Unable to find rush.json in the specified folder or its parent folders:\\n' +\n `${rushJsonSearchFolder}\\n`\n );\n }\n const monorepoRoot: string = path.dirname(rushJsonPath);\n\n const rushJson: JsonObject = await JsonFile.loadAsync(rushJsonPath);\n const { rushVersion } = rushJson;\n\n const installRunNodeModuleFolder: string = path.join(\n monorepoRoot,\n `common/temp/install-run/@microsoft+rush@${rushVersion}`\n );\n\n try {\n // First, try to load the version of \"rush-lib\" that was installed by install-run-rush.js\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'info',\n text: `Trying to load ${RUSH_LIB_NAME} installed by install-run-rush`\n },\n progressPercent\n });\n }\n sdkContext.rushLibModule = requireRushLibUnderFolderPath(installRunNodeModuleFolder);\n } catch (e) {\n let installAndRunRushStderrContent: string = '';\n try {\n const installAndRunRushJSPath: string = path.join(\n monorepoRoot,\n 'common/scripts/install-run-rush.js'\n );\n\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'info',\n text: 'The Rush engine has not been installed yet. Invoking install-run-rush.js...'\n },\n progressPercent\n });\n }\n\n // Start the installation\n progressPercent = 0;\n\n const installAndRunRushProcess: SpawnSyncReturns<string> = Executable.spawnSync(\n 'node',\n [installAndRunRushJSPath, '--help'],\n {\n stdio: 'pipe'\n }\n );\n\n installAndRunRushStderrContent = installAndRunRushProcess.stderr;\n if (installAndRunRushProcess.status !== 0) {\n throw new Error(`The ${RUSH_LIB_NAME} package failed to install`);\n }\n\n if (abortSignal) {\n RushSdkLoader._checkForCancel(abortSignal, onNotifyEvent, progressPercent);\n }\n\n // TODO: Implement incremental progress updates\n progressPercent = 90;\n\n // Retry to load \"rush-lib\" after install-run-rush run\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'debug',\n text: `Trying to load ${RUSH_LIB_NAME} installed by install-run-rush a second time`\n },\n progressPercent\n });\n }\n\n sdkContext.rushLibModule = requireRushLibUnderFolderPath(installRunNodeModuleFolder);\n\n progressPercent = 100;\n } catch (e) {\n console.error(`${installAndRunRushStderrContent}`);\n throw new Error(`The ${RUSH_LIB_NAME} package failed to load`);\n }\n }\n\n if (sdkContext.rushLibModule !== undefined) {\n // to track which scenario is active and how it got initialized.\n global.___rush___rushLibModuleFromInstallAndRunRush = sdkContext.rushLibModule;\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'debug',\n text: `Loaded ${RUSH_LIB_NAME} installed by install-run-rush`\n },\n progressPercent\n });\n }\n }\n } catch (e) {\n if (onNotifyEvent) {\n onNotifyEvent({\n logMessage: {\n kind: 'info',\n text: 'The operation failed: ' + (e.message ?? 'An unknown error occurred')\n },\n progressPercent\n });\n }\n throw e;\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rushstack/rush-sdk",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.107.1",
|
|
4
4
|
"description": "An API for interacting with the Rush engine",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,19 +25,18 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@types/node-fetch": "2.6.2",
|
|
27
27
|
"tapable": "2.2.1",
|
|
28
|
-
"@rushstack/node-core-library": "3.
|
|
28
|
+
"@rushstack/node-core-library": "3.60.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@types/node": "14.18.36",
|
|
32
31
|
"@types/semver": "7.5.0",
|
|
33
32
|
"@types/webpack-env": "1.18.0",
|
|
34
|
-
"@microsoft/rush-lib": "5.
|
|
35
|
-
"@rushstack/eslint-config": "3.3.
|
|
36
|
-
"@rushstack/heft": "0.
|
|
37
|
-
"
|
|
38
|
-
"@rushstack/stream-collator": "4.
|
|
39
|
-
"@rushstack/ts-command-line": "4.
|
|
40
|
-
"@rushstack/terminal": "0.
|
|
33
|
+
"@microsoft/rush-lib": "5.107.1",
|
|
34
|
+
"@rushstack/eslint-config": "3.3.4",
|
|
35
|
+
"@rushstack/heft": "0.60.0",
|
|
36
|
+
"local-node-rig": "1.0.0",
|
|
37
|
+
"@rushstack/stream-collator": "4.1.2",
|
|
38
|
+
"@rushstack/ts-command-line": "4.16.0",
|
|
39
|
+
"@rushstack/terminal": "0.7.1"
|
|
41
40
|
},
|
|
42
41
|
"scripts": {
|
|
43
42
|
"build": "heft build --clean",
|