aws-cdk 2.1006.0 → 3.0.0
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/README.md +1 -1
- package/THIRD_PARTY_LICENSES +104 -86
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/api/aws-auth.d.ts +1 -0
- package/lib/api/{logs/index.js → aws-auth.js} +2 -3
- package/lib/api/bootstrap.d.ts +1 -0
- package/lib/api/bootstrap.js +18 -0
- package/lib/api/cloud-assembly.d.ts +1 -0
- package/lib/api/cloud-assembly.js +18 -0
- package/lib/api/cloudformation.d.ts +1 -0
- package/lib/api/cloudformation.js +18 -0
- package/lib/api/context.d.ts +1 -40
- package/lib/api/context.js +16 -80
- package/lib/api/deployments.d.ts +1 -0
- package/lib/api/deployments.js +18 -0
- package/lib/api/environment.d.ts +1 -0
- package/lib/api/environment.js +18 -0
- package/lib/api/garbage-collection.d.ts +1 -0
- package/lib/api/garbage-collection.js +18 -0
- package/lib/api/hotswap.d.ts +1 -0
- package/lib/api/hotswap.js +18 -0
- package/lib/api/index.d.ts +5 -1
- package/lib/api/index.js +6 -2
- package/lib/api/logs-monitor.d.ts +1 -0
- package/lib/api/logs-monitor.js +18 -0
- package/lib/api/notices.d.ts +1 -0
- package/lib/api/notices.js +18 -0
- package/lib/api/plugin.d.ts +1 -0
- package/lib/api/{resource-import/index.js → plugin.js} +2 -3
- package/lib/api/resource-import.d.ts +1 -0
- package/lib/api/resource-import.js +18 -0
- package/lib/api/rwlock.d.ts +1 -0
- package/lib/api/{garbage-collection/index.js → rwlock.js} +2 -2
- package/lib/api/settings.d.ts +1 -26
- package/lib/api/settings.js +16 -103
- package/lib/api/stack-events.d.ts +1 -0
- package/lib/api/stack-events.js +18 -0
- package/lib/api/tags.d.ts +1 -9
- package/lib/api/tags.js +16 -8
- package/lib/api/toolkit-info.d.ts +1 -52
- package/lib/api/toolkit-info.js +16 -152
- package/lib/api/tree.d.ts +1 -31
- package/lib/api/tree.js +16 -35
- package/lib/api/work-graph.d.ts +1 -0
- package/lib/api/work-graph.js +18 -0
- package/lib/api-private.d.ts +3 -0
- package/lib/api-private.js +22 -0
- package/lib/cli/cdk-toolkit.d.ts +20 -16
- package/lib/cli/cdk-toolkit.js +102 -37
- package/lib/cli/cli-config.js +2 -2
- package/lib/cli/cli.d.ts +1 -1
- package/lib/cli/cli.js +22 -19
- package/lib/cli/io-host/cli-io-host.js +2 -2
- package/lib/cli/pretty-print-error.js +3 -1
- package/lib/cli/util/npm.d.ts +4 -1
- package/lib/cli/util/npm.js +25 -13
- package/lib/cli/version.d.ts +1 -1
- package/lib/cli/version.js +21 -25
- package/lib/commands/context.js +3 -2
- package/lib/commands/diff.d.ts +1 -50
- package/lib/commands/diff.js +5 -213
- package/lib/commands/init/init.js +3 -2
- package/lib/commands/list-stacks.js +4 -4
- package/lib/context-providers/ami.d.ts +1 -13
- package/lib/context-providers/ami.js +16 -48
- package/lib/context-providers/availability-zones.d.ts +1 -13
- package/lib/context-providers/availability-zones.js +16 -25
- package/lib/context-providers/cc-api-provider.d.ts +1 -30
- package/lib/context-providers/cc-api-provider.js +16 -136
- package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -13
- package/lib/context-providers/endpoint-service-availability-zones.js +16 -31
- package/lib/context-providers/hosted-zones.d.ts +1 -12
- package/lib/context-providers/hosted-zones.js +16 -65
- package/lib/context-providers/index.d.ts +1 -44
- package/lib/context-providers/index.js +15 -126
- package/lib/context-providers/keys.d.ts +1 -13
- package/lib/context-providers/keys.js +16 -50
- package/lib/context-providers/load-balancers.d.ts +1 -20
- package/lib/context-providers/load-balancers.js +16 -154
- package/lib/context-providers/security-groups.d.ts +1 -9
- package/lib/context-providers/security-groups.js +16 -66
- package/lib/context-providers/ssm-parameters.d.ts +1 -25
- package/lib/context-providers/ssm-parameters.js +16 -57
- package/lib/context-providers/vpcs.d.ts +1 -13
- package/lib/context-providers/vpcs.js +16 -285
- package/lib/{api/cxapp → cxapp}/cloud-assembly.d.ts +3 -59
- package/lib/cxapp/cloud-assembly.js +108 -0
- package/lib/{api/cxapp → cxapp}/cloud-executable.d.ts +10 -3
- package/lib/cxapp/cloud-executable.js +92 -0
- package/lib/{api/cxapp → cxapp}/environments.d.ts +1 -2
- package/lib/{api/cxapp → cxapp}/environments.js +2 -2
- package/lib/cxapp/exec.d.ts +14 -0
- package/lib/cxapp/exec.js +157 -0
- package/lib/cxapp/index.d.ts +4 -0
- package/lib/{api/bootstrap → cxapp}/index.js +5 -3
- package/lib/index.js +134493 -125222
- package/lib/init-templates/.init-version.json +1 -1
- package/lib/init-templates/.recommended-feature-flags.json +3 -1
- package/lib/legacy-aws-auth.d.ts +74 -0
- package/lib/legacy-aws-auth.js +40 -0
- package/lib/legacy-exports-source.d.ts +13 -18
- package/lib/legacy-exports-source.js +42 -49
- package/lib/legacy-exports.d.ts +3 -6
- package/lib/legacy-exports.js +5 -5
- package/lib/legacy-types.d.ts +31 -0
- package/lib/legacy-types.js +3 -0
- package/package.json +19 -18
- package/lib/api/aws-auth/account-cache.d.ts +0 -36
- package/lib/api/aws-auth/account-cache.js +0 -99
- package/lib/api/aws-auth/awscli-compatible.d.ts +0 -42
- package/lib/api/aws-auth/awscli-compatible.js +0 -263
- package/lib/api/aws-auth/cached.d.ts +0 -11
- package/lib/api/aws-auth/cached.js +0 -26
- package/lib/api/aws-auth/credential-plugins.d.ts +0 -36
- package/lib/api/aws-auth/credential-plugins.js +0 -152
- package/lib/api/aws-auth/index.d.ts +0 -3
- package/lib/api/aws-auth/index.js +0 -20
- package/lib/api/aws-auth/provider-caching.d.ts +0 -13
- package/lib/api/aws-auth/provider-caching.js +0 -24
- package/lib/api/aws-auth/sdk-logger.d.ts +0 -69
- package/lib/api/aws-auth/sdk-logger.js +0 -124
- package/lib/api/aws-auth/sdk-provider.d.ts +0 -207
- package/lib/api/aws-auth/sdk-provider.js +0 -357
- package/lib/api/aws-auth/sdk.d.ts +0 -229
- package/lib/api/aws-auth/sdk.js +0 -373
- package/lib/api/aws-auth/tracing.d.ts +0 -11
- package/lib/api/aws-auth/tracing.js +0 -60
- package/lib/api/aws-auth/user-agent.d.ts +0 -7
- package/lib/api/aws-auth/user-agent.js +0 -20
- package/lib/api/aws-auth/util.d.ts +0 -6
- package/lib/api/aws-auth/util.js +0 -23
- package/lib/api/bootstrap/bootstrap-environment.d.ts +0 -35
- package/lib/api/bootstrap/bootstrap-environment.js +0 -321
- package/lib/api/bootstrap/bootstrap-props.d.ts +0 -130
- package/lib/api/bootstrap/bootstrap-props.js +0 -14
- package/lib/api/bootstrap/deploy-bootstrap.d.ts +0 -39
- package/lib/api/bootstrap/deploy-bootstrap.js +0 -141
- package/lib/api/bootstrap/index.d.ts +0 -2
- package/lib/api/bootstrap/legacy-template.d.ts +0 -2
- package/lib/api/bootstrap/legacy-template.js +0 -82
- package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +0 -85
- package/lib/api/cloudformation/evaluate-cloudformation-template.js +0 -440
- package/lib/api/cloudformation/index.d.ts +0 -4
- package/lib/api/cloudformation/index.js +0 -21
- package/lib/api/cloudformation/nested-stack-helpers.d.ts +0 -25
- package/lib/api/cloudformation/nested-stack-helpers.js +0 -86
- package/lib/api/cloudformation/stack-helpers.d.ts +0 -96
- package/lib/api/cloudformation/stack-helpers.js +0 -158
- package/lib/api/cloudformation/template-body-parameter.d.ts +0 -22
- package/lib/api/cloudformation/template-body-parameter.js +0 -104
- package/lib/api/cxapp/cloud-assembly.js +0 -304
- package/lib/api/cxapp/cloud-executable.js +0 -89
- package/lib/api/cxapp/exec.d.ts +0 -56
- package/lib/api/cxapp/exec.js +0 -272
- package/lib/api/deployments/asset-manifest-builder.d.ts +0 -8
- package/lib/api/deployments/asset-manifest-builder.js +0 -35
- package/lib/api/deployments/asset-publishing.d.ts +0 -60
- package/lib/api/deployments/asset-publishing.js +0 -141
- package/lib/api/deployments/assets.d.ts +0 -11
- package/lib/api/deployments/assets.js +0 -109
- package/lib/api/deployments/cfn-api.d.ts +0 -138
- package/lib/api/deployments/cfn-api.js +0 -438
- package/lib/api/deployments/checks.d.ts +0 -9
- package/lib/api/deployments/checks.js +0 -72
- package/lib/api/deployments/deploy-stack.d.ts +0 -155
- package/lib/api/deployments/deploy-stack.js +0 -478
- package/lib/api/deployments/deployment-method.d.ts +0 -24
- package/lib/api/deployments/deployment-method.js +0 -3
- package/lib/api/deployments/deployment-result.d.ts +0 -21
- package/lib/api/deployments/deployment-result.js +0 -10
- package/lib/api/deployments/deployments.d.ts +0 -296
- package/lib/api/deployments/deployments.js +0 -331
- package/lib/api/deployments/hotswap-deployments.d.ts +0 -17
- package/lib/api/deployments/hotswap-deployments.js +0 -441
- package/lib/api/deployments/index.d.ts +0 -4
- package/lib/api/deployments/index.js +0 -21
- package/lib/api/environment/environment-access.d.ts +0 -140
- package/lib/api/environment/environment-access.js +0 -202
- package/lib/api/environment/environment-resources.d.ts +0 -75
- package/lib/api/environment/environment-resources.js +0 -207
- package/lib/api/environment/index.d.ts +0 -3
- package/lib/api/environment/index.js +0 -20
- package/lib/api/environment/placeholders.d.ts +0 -10
- package/lib/api/environment/placeholders.js +0 -23
- package/lib/api/garbage-collection/garbage-collector.d.ts +0 -158
- package/lib/api/garbage-collection/garbage-collector.js +0 -599
- package/lib/api/garbage-collection/index.d.ts +0 -1
- package/lib/api/garbage-collection/progress-printer.d.ts +0 -23
- package/lib/api/garbage-collection/progress-printer.js +0 -70
- package/lib/api/garbage-collection/stack-refresh.d.ts +0 -49
- package/lib/api/garbage-collection/stack-refresh.js +0 -151
- package/lib/api/hotswap/appsync-mapping-templates.d.ts +0 -4
- package/lib/api/hotswap/appsync-mapping-templates.js +0 -162
- package/lib/api/hotswap/code-build-projects.d.ts +0 -4
- package/lib/api/hotswap/code-build-projects.js +0 -62
- package/lib/api/hotswap/common.d.ts +0 -89
- package/lib/api/hotswap/common.js +0 -128
- package/lib/api/hotswap/ecs-services.d.ts +0 -4
- package/lib/api/hotswap/ecs-services.js +0 -159
- package/lib/api/hotswap/lambda-functions.d.ts +0 -4
- package/lib/api/hotswap/lambda-functions.js +0 -297
- package/lib/api/hotswap/s3-bucket-deployments.d.ts +0 -5
- package/lib/api/hotswap/s3-bucket-deployments.js +0 -117
- package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -4
- package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
- package/lib/api/logs/find-cloudwatch-logs.d.ts +0 -25
- package/lib/api/logs/find-cloudwatch-logs.js +0 -95
- package/lib/api/logs/index.d.ts +0 -2
- package/lib/api/logs/logs-monitor.d.ts +0 -76
- package/lib/api/logs/logs-monitor.js +0 -187
- package/lib/api/plugin/context-provider-plugin.d.ts +0 -6
- package/lib/api/plugin/context-provider-plugin.js +0 -7
- package/lib/api/plugin/index.d.ts +0 -3
- package/lib/api/plugin/index.js +0 -20
- package/lib/api/plugin/mode.d.ts +0 -4
- package/lib/api/plugin/mode.js +0 -9
- package/lib/api/plugin/plugin.d.ts +0 -63
- package/lib/api/plugin/plugin.js +0 -102
- package/lib/api/resource-import/importer.d.ts +0 -220
- package/lib/api/resource-import/importer.js +0 -331
- package/lib/api/resource-import/index.d.ts +0 -2
- package/lib/api/resource-import/migrator.d.ts +0 -26
- package/lib/api/resource-import/migrator.js +0 -71
- package/lib/api/stack-events/index.d.ts +0 -3
- package/lib/api/stack-events/index.js +0 -20
- package/lib/api/stack-events/stack-activity-monitor.d.ts +0 -100
- package/lib/api/stack-events/stack-activity-monitor.js +0 -142
- package/lib/api/stack-events/stack-event-poller.d.ts +0 -69
- package/lib/api/stack-events/stack-event-poller.js +0 -128
- package/lib/api/stack-events/stack-progress-monitor.d.ts +0 -48
- package/lib/api/stack-events/stack-progress-monitor.js +0 -94
- package/lib/api/stack-events/stack-status.d.ts +0 -42
- package/lib/api/stack-events/stack-status.js +0 -88
- package/lib/api/util/rwlock.d.ts +0 -65
- package/lib/api/util/rwlock.js +0 -179
- package/lib/api/work-graph/index.d.ts +0 -3
- package/lib/api/work-graph/index.js +0 -20
- package/lib/api/work-graph/work-graph-builder.d.ts +0 -34
- package/lib/api/work-graph/work-graph-builder.js +0 -168
- package/lib/api/work-graph/work-graph-types.d.ts +0 -50
- package/lib/api/work-graph/work-graph-types.js +0 -13
- package/lib/api/work-graph/work-graph.d.ts +0 -72
- package/lib/api/work-graph/work-graph.js +0 -346
- package/lib/cli/activity-printer/base.d.ts +0 -50
- package/lib/cli/activity-printer/base.js +0 -114
- package/lib/cli/activity-printer/current.d.ts +0 -26
- package/lib/cli/activity-printer/current.js +0 -118
- package/lib/cli/activity-printer/display.d.ts +0 -13
- package/lib/cli/activity-printer/display.js +0 -80
- package/lib/cli/activity-printer/history.d.ts +0 -32
- package/lib/cli/activity-printer/history.js +0 -108
- package/lib/cli/activity-printer/index.d.ts +0 -3
- package/lib/cli/activity-printer/index.js +0 -20
- package/lib/notices.d.ts +0 -203
- package/lib/notices.js +0 -411
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { type Stack } from '@aws-sdk/client-cloudformation';
|
|
2
|
-
/**
|
|
3
|
-
* A utility class to inspect CloudFormation stack statuses.
|
|
4
|
-
*
|
|
5
|
-
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html
|
|
6
|
-
*/
|
|
7
|
-
export declare class StackStatus {
|
|
8
|
-
readonly name: string;
|
|
9
|
-
readonly reason?: string | undefined;
|
|
10
|
-
static fromStackDescription(description: Stack): StackStatus;
|
|
11
|
-
constructor(name: string, reason?: string | undefined);
|
|
12
|
-
get isCreationFailure(): boolean;
|
|
13
|
-
get isDeleted(): boolean;
|
|
14
|
-
get isFailure(): boolean;
|
|
15
|
-
get isInProgress(): boolean;
|
|
16
|
-
get isReviewInProgress(): boolean;
|
|
17
|
-
get isNotFound(): boolean;
|
|
18
|
-
get isDeploySuccess(): boolean;
|
|
19
|
-
get isRollbackSuccess(): boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Whether the stack is in a paused state due to `--no-rollback`.
|
|
22
|
-
*
|
|
23
|
-
* The possible actions here are retrying a new `--no-rollback` deployment, or initiating a rollback.
|
|
24
|
-
*/
|
|
25
|
-
get rollbackChoice(): RollbackChoice;
|
|
26
|
-
get isRollbackable(): boolean;
|
|
27
|
-
toString(): string;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Describe the current rollback options for this state
|
|
31
|
-
*/
|
|
32
|
-
export declare enum RollbackChoice {
|
|
33
|
-
START_ROLLBACK = 0,
|
|
34
|
-
CONTINUE_UPDATE_ROLLBACK = 1,
|
|
35
|
-
/**
|
|
36
|
-
* A sign that stack creation AND its rollback have failed.
|
|
37
|
-
*
|
|
38
|
-
* There is no way to recover from this, other than recreating the stack.
|
|
39
|
-
*/
|
|
40
|
-
ROLLBACK_FAILED = 2,
|
|
41
|
-
NONE = 3
|
|
42
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RollbackChoice = exports.StackStatus = void 0;
|
|
4
|
-
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
5
|
-
/**
|
|
6
|
-
* A utility class to inspect CloudFormation stack statuses.
|
|
7
|
-
*
|
|
8
|
-
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html
|
|
9
|
-
*/
|
|
10
|
-
class StackStatus {
|
|
11
|
-
static fromStackDescription(description) {
|
|
12
|
-
return new StackStatus(description.StackStatus, description.StackStatusReason);
|
|
13
|
-
}
|
|
14
|
-
constructor(name, reason) {
|
|
15
|
-
this.name = name;
|
|
16
|
-
this.reason = reason;
|
|
17
|
-
}
|
|
18
|
-
get isCreationFailure() {
|
|
19
|
-
return this.name === client_cloudformation_1.StackStatus.ROLLBACK_COMPLETE || this.name === client_cloudformation_1.StackStatus.ROLLBACK_FAILED;
|
|
20
|
-
}
|
|
21
|
-
get isDeleted() {
|
|
22
|
-
return this.name.startsWith('DELETE_');
|
|
23
|
-
}
|
|
24
|
-
get isFailure() {
|
|
25
|
-
return this.name.endsWith('FAILED');
|
|
26
|
-
}
|
|
27
|
-
get isInProgress() {
|
|
28
|
-
return this.name.endsWith('_IN_PROGRESS') && !this.isReviewInProgress;
|
|
29
|
-
}
|
|
30
|
-
get isReviewInProgress() {
|
|
31
|
-
return this.name === client_cloudformation_1.StackStatus.REVIEW_IN_PROGRESS;
|
|
32
|
-
}
|
|
33
|
-
get isNotFound() {
|
|
34
|
-
return this.name === 'NOT_FOUND';
|
|
35
|
-
}
|
|
36
|
-
get isDeploySuccess() {
|
|
37
|
-
return (!this.isNotFound &&
|
|
38
|
-
(this.name === client_cloudformation_1.StackStatus.CREATE_COMPLETE ||
|
|
39
|
-
this.name === client_cloudformation_1.StackStatus.UPDATE_COMPLETE ||
|
|
40
|
-
this.name === client_cloudformation_1.StackStatus.IMPORT_COMPLETE));
|
|
41
|
-
}
|
|
42
|
-
get isRollbackSuccess() {
|
|
43
|
-
return this.name === client_cloudformation_1.StackStatus.ROLLBACK_COMPLETE || this.name === client_cloudformation_1.StackStatus.UPDATE_ROLLBACK_COMPLETE;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Whether the stack is in a paused state due to `--no-rollback`.
|
|
47
|
-
*
|
|
48
|
-
* The possible actions here are retrying a new `--no-rollback` deployment, or initiating a rollback.
|
|
49
|
-
*/
|
|
50
|
-
get rollbackChoice() {
|
|
51
|
-
switch (this.name) {
|
|
52
|
-
case client_cloudformation_1.StackStatus.CREATE_FAILED:
|
|
53
|
-
case client_cloudformation_1.StackStatus.UPDATE_FAILED:
|
|
54
|
-
return RollbackChoice.START_ROLLBACK;
|
|
55
|
-
case client_cloudformation_1.StackStatus.UPDATE_ROLLBACK_FAILED:
|
|
56
|
-
return RollbackChoice.CONTINUE_UPDATE_ROLLBACK;
|
|
57
|
-
case client_cloudformation_1.StackStatus.ROLLBACK_FAILED:
|
|
58
|
-
// Unfortunately there is no option to continue a failed rollback without
|
|
59
|
-
// a stable target state.
|
|
60
|
-
return RollbackChoice.ROLLBACK_FAILED;
|
|
61
|
-
default:
|
|
62
|
-
return RollbackChoice.NONE;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
get isRollbackable() {
|
|
66
|
-
return [RollbackChoice.START_ROLLBACK, RollbackChoice.CONTINUE_UPDATE_ROLLBACK].includes(this.rollbackChoice);
|
|
67
|
-
}
|
|
68
|
-
toString() {
|
|
69
|
-
return this.name + (this.reason ? ` (${this.reason})` : '');
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
exports.StackStatus = StackStatus;
|
|
73
|
-
/**
|
|
74
|
-
* Describe the current rollback options for this state
|
|
75
|
-
*/
|
|
76
|
-
var RollbackChoice;
|
|
77
|
-
(function (RollbackChoice) {
|
|
78
|
-
RollbackChoice[RollbackChoice["START_ROLLBACK"] = 0] = "START_ROLLBACK";
|
|
79
|
-
RollbackChoice[RollbackChoice["CONTINUE_UPDATE_ROLLBACK"] = 1] = "CONTINUE_UPDATE_ROLLBACK";
|
|
80
|
-
/**
|
|
81
|
-
* A sign that stack creation AND its rollback have failed.
|
|
82
|
-
*
|
|
83
|
-
* There is no way to recover from this, other than recreating the stack.
|
|
84
|
-
*/
|
|
85
|
-
RollbackChoice[RollbackChoice["ROLLBACK_FAILED"] = 2] = "ROLLBACK_FAILED";
|
|
86
|
-
RollbackChoice[RollbackChoice["NONE"] = 3] = "NONE";
|
|
87
|
-
})(RollbackChoice || (exports.RollbackChoice = RollbackChoice = {}));
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stc3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhY2stc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBFQUF5RjtBQUV6Rjs7OztHQUlHO0FBQ0gsTUFBYSxXQUFXO0lBQ2YsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQWtCO1FBQ25ELE9BQU8sSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVksRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsWUFDa0IsSUFBWSxFQUNaLE1BQWU7UUFEZixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUztJQUVqQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLG1DQUFZLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxtQ0FBWSxDQUFDLGVBQWUsQ0FBQztJQUNwRyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLG1DQUFZLENBQUMsa0JBQWtCLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUNoQixDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssbUNBQVksQ0FBQyxlQUFlO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxLQUFLLG1DQUFZLENBQUMsZUFBZTtnQkFDMUMsSUFBSSxDQUFDLElBQUksS0FBSyxtQ0FBWSxDQUFDLGVBQWUsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxtQ0FBWSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssbUNBQVksQ0FBQyx3QkFBd0IsQ0FBQztJQUM3RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksY0FBYztRQUNoQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLG1DQUFZLENBQUMsYUFBYSxDQUFDO1lBQ2hDLEtBQUssbUNBQVksQ0FBQyxhQUFhO2dCQUM3QixPQUFPLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDdkMsS0FBSyxtQ0FBWSxDQUFDLHNCQUFzQjtnQkFDdEMsT0FBTyxjQUFjLENBQUMsd0JBQXdCLENBQUM7WUFDakQsS0FBSyxtQ0FBWSxDQUFDLGVBQWU7Z0JBQy9CLHlFQUF5RTtnQkFDekUseUJBQXlCO2dCQUN6QixPQUFPLGNBQWMsQ0FBQyxlQUFlLENBQUM7WUFDeEM7Z0JBQ0UsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGO0FBNUVELGtDQTRFQztBQUVEOztHQUVHO0FBQ0gsSUFBWSxjQVVYO0FBVkQsV0FBWSxjQUFjO0lBQ3hCLHVFQUFjLENBQUE7SUFDZCwyRkFBd0IsQ0FBQTtJQUN4Qjs7OztPQUlHO0lBQ0gseUVBQWUsQ0FBQTtJQUNmLG1EQUFJLENBQUE7QUFDTixDQUFDLEVBVlcsY0FBYyw4QkFBZCxjQUFjLFFBVXpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBTdGFjaywgU3RhY2tTdGF0dXMgYXMgX1N0YWNrU3RhdHVzIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgdG8gaW5zcGVjdCBDbG91ZEZvcm1hdGlvbiBzdGFjayBzdGF0dXNlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL3VzaW5nLWNmbi1kZXNjcmliaW5nLXN0YWNrcy5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFja1N0YXR1cyB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbVN0YWNrRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFN0YWNrKSB7XG4gICAgcmV0dXJuIG5ldyBTdGFja1N0YXR1cyhkZXNjcmlwdGlvbi5TdGFja1N0YXR1cyEsIGRlc2NyaXB0aW9uLlN0YWNrU3RhdHVzUmVhc29uKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHJlYXNvbj86IHN0cmluZyxcbiAgKSB7XG4gIH1cblxuICBnZXQgaXNDcmVhdGlvbkZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZSA9PT0gX1N0YWNrU3RhdHVzLlJPTExCQUNLX0NPTVBMRVRFIHx8IHRoaXMubmFtZSA9PT0gX1N0YWNrU3RhdHVzLlJPTExCQUNLX0ZBSUxFRDtcbiAgfVxuXG4gIGdldCBpc0RlbGV0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZS5zdGFydHNXaXRoKCdERUxFVEVfJyk7XG4gIH1cblxuICBnZXQgaXNGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWUuZW5kc1dpdGgoJ0ZBSUxFRCcpO1xuICB9XG5cbiAgZ2V0IGlzSW5Qcm9ncmVzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lLmVuZHNXaXRoKCdfSU5fUFJPR1JFU1MnKSAmJiAhdGhpcy5pc1Jldmlld0luUHJvZ3Jlc3M7XG4gIH1cblxuICBnZXQgaXNSZXZpZXdJblByb2dyZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5SRVZJRVdfSU5fUFJPR1JFU1M7XG4gIH1cblxuICBnZXQgaXNOb3RGb3VuZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSAnTk9UX0ZPVU5EJztcbiAgfVxuXG4gIGdldCBpc0RlcGxveVN1Y2Nlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmlzTm90Rm91bmQgJiZcbiAgICAgICh0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5DUkVBVEVfQ09NUExFVEUgfHxcbiAgICAgICAgdGhpcy5uYW1lID09PSBfU3RhY2tTdGF0dXMuVVBEQVRFX0NPTVBMRVRFIHx8XG4gICAgICAgIHRoaXMubmFtZSA9PT0gX1N0YWNrU3RhdHVzLklNUE9SVF9DT01QTEVURSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzUm9sbGJhY2tTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5ST0xMQkFDS19DT01QTEVURSB8fCB0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5VUERBVEVfUk9MTEJBQ0tfQ09NUExFVEU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc3RhY2sgaXMgaW4gYSBwYXVzZWQgc3RhdGUgZHVlIHRvIGAtLW5vLXJvbGxiYWNrYC5cbiAgICpcbiAgICogVGhlIHBvc3NpYmxlIGFjdGlvbnMgaGVyZSBhcmUgcmV0cnlpbmcgYSBuZXcgYC0tbm8tcm9sbGJhY2tgIGRlcGxveW1lbnQsIG9yIGluaXRpYXRpbmcgYSByb2xsYmFjay5cbiAgICovXG4gIGdldCByb2xsYmFja0Nob2ljZSgpOiBSb2xsYmFja0Nob2ljZSB7XG4gICAgc3dpdGNoICh0aGlzLm5hbWUpIHtcbiAgICAgIGNhc2UgX1N0YWNrU3RhdHVzLkNSRUFURV9GQUlMRUQ6XG4gICAgICBjYXNlIF9TdGFja1N0YXR1cy5VUERBVEVfRkFJTEVEOlxuICAgICAgICByZXR1cm4gUm9sbGJhY2tDaG9pY2UuU1RBUlRfUk9MTEJBQ0s7XG4gICAgICBjYXNlIF9TdGFja1N0YXR1cy5VUERBVEVfUk9MTEJBQ0tfRkFJTEVEOlxuICAgICAgICByZXR1cm4gUm9sbGJhY2tDaG9pY2UuQ09OVElOVUVfVVBEQVRFX1JPTExCQUNLO1xuICAgICAgY2FzZSBfU3RhY2tTdGF0dXMuUk9MTEJBQ0tfRkFJTEVEOlxuICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5IHRoZXJlIGlzIG5vIG9wdGlvbiB0byBjb250aW51ZSBhIGZhaWxlZCByb2xsYmFjayB3aXRob3V0XG4gICAgICAgIC8vIGEgc3RhYmxlIHRhcmdldCBzdGF0ZS5cbiAgICAgICAgcmV0dXJuIFJvbGxiYWNrQ2hvaWNlLlJPTExCQUNLX0ZBSUxFRDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBSb2xsYmFja0Nob2ljZS5OT05FO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc1JvbGxiYWNrYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gW1JvbGxiYWNrQ2hvaWNlLlNUQVJUX1JPTExCQUNLLCBSb2xsYmFja0Nob2ljZS5DT05USU5VRV9VUERBVEVfUk9MTEJBQ0tdLmluY2x1ZGVzKHRoaXMucm9sbGJhY2tDaG9pY2UpO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmFtZSArICh0aGlzLnJlYXNvbiA/IGAgKCR7dGhpcy5yZWFzb259KWAgOiAnJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZXNjcmliZSB0aGUgY3VycmVudCByb2xsYmFjayBvcHRpb25zIGZvciB0aGlzIHN0YXRlXG4gKi9cbmV4cG9ydCBlbnVtIFJvbGxiYWNrQ2hvaWNlIHtcbiAgU1RBUlRfUk9MTEJBQ0ssXG4gIENPTlRJTlVFX1VQREFURV9ST0xMQkFDSyxcbiAgLyoqXG4gICAqIEEgc2lnbiB0aGF0IHN0YWNrIGNyZWF0aW9uIEFORCBpdHMgcm9sbGJhY2sgaGF2ZSBmYWlsZWQuXG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIHdheSB0byByZWNvdmVyIGZyb20gdGhpcywgb3RoZXIgdGhhbiByZWNyZWF0aW5nIHRoZSBzdGFjay5cbiAgICovXG4gIFJPTExCQUNLX0ZBSUxFRCxcbiAgTk9ORSxcbn1cbiJdfQ==
|
package/lib/api/util/rwlock.d.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A single-writer/multi-reader lock on a directory
|
|
3
|
-
*
|
|
4
|
-
* It uses marker files with PIDs in them as a locking marker; the PIDs will be
|
|
5
|
-
* checked for liveness, so that if the process exits without cleaning up the
|
|
6
|
-
* files the lock is implicitly released.
|
|
7
|
-
*
|
|
8
|
-
* This class is not 100% race safe, but in practice it should be a lot
|
|
9
|
-
* better than the 0 protection we have today.
|
|
10
|
-
*/
|
|
11
|
-
export declare class RWLock {
|
|
12
|
-
readonly directory: string;
|
|
13
|
-
private readonly pidString;
|
|
14
|
-
private readonly writerFile;
|
|
15
|
-
private readCounter;
|
|
16
|
-
constructor(directory: string);
|
|
17
|
-
/**
|
|
18
|
-
* Acquire a writer lock.
|
|
19
|
-
*
|
|
20
|
-
* No other readers or writers must exist for the given directory.
|
|
21
|
-
*/
|
|
22
|
-
acquireWrite(): Promise<IWriterLock>;
|
|
23
|
-
/**
|
|
24
|
-
* Acquire a read lock
|
|
25
|
-
*
|
|
26
|
-
* Will fail if there are any writers.
|
|
27
|
-
*/
|
|
28
|
-
acquireRead(): Promise<ILock>;
|
|
29
|
-
/**
|
|
30
|
-
* Obtains the name fo a (new) `readerFile` to use. This includes a counter so
|
|
31
|
-
* that if multiple threads of the same PID attempt to concurrently acquire
|
|
32
|
-
* the same lock, they're guaranteed to use a different reader file name (only
|
|
33
|
-
* one thread will ever execute JS code at once, guaranteeing the readCounter
|
|
34
|
-
* is incremented "atomically" from the point of view of this PID.).
|
|
35
|
-
*/
|
|
36
|
-
private readerFile;
|
|
37
|
-
/**
|
|
38
|
-
* Do the actual acquiring of a read lock.
|
|
39
|
-
*/
|
|
40
|
-
private doAcquireRead;
|
|
41
|
-
private assertNoOtherWriters;
|
|
42
|
-
/**
|
|
43
|
-
* Check the current writer (if any)
|
|
44
|
-
*/
|
|
45
|
-
private currentWriter;
|
|
46
|
-
/**
|
|
47
|
-
* Check the current readers (if any)
|
|
48
|
-
*/
|
|
49
|
-
private currentReaders;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* An acquired lock
|
|
53
|
-
*/
|
|
54
|
-
export interface ILock {
|
|
55
|
-
release(): Promise<void>;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* An acquired writer lock
|
|
59
|
-
*/
|
|
60
|
-
export interface IWriterLock extends ILock {
|
|
61
|
-
/**
|
|
62
|
-
* Convert the writer lock to a reader lock
|
|
63
|
-
*/
|
|
64
|
-
convertToReaderLock(): Promise<ILock>;
|
|
65
|
-
}
|
package/lib/api/util/rwlock.js
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RWLock = void 0;
|
|
4
|
-
const fs_1 = require("fs");
|
|
5
|
-
const path = require("path");
|
|
6
|
-
const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
|
|
7
|
-
/**
|
|
8
|
-
* A single-writer/multi-reader lock on a directory
|
|
9
|
-
*
|
|
10
|
-
* It uses marker files with PIDs in them as a locking marker; the PIDs will be
|
|
11
|
-
* checked for liveness, so that if the process exits without cleaning up the
|
|
12
|
-
* files the lock is implicitly released.
|
|
13
|
-
*
|
|
14
|
-
* This class is not 100% race safe, but in practice it should be a lot
|
|
15
|
-
* better than the 0 protection we have today.
|
|
16
|
-
*/
|
|
17
|
-
/* istanbul ignore next: code paths are unpredictable */
|
|
18
|
-
class RWLock {
|
|
19
|
-
constructor(directory) {
|
|
20
|
-
this.directory = directory;
|
|
21
|
-
this.readCounter = 0;
|
|
22
|
-
this.pidString = `${process.pid}`;
|
|
23
|
-
this.writerFile = path.join(this.directory, 'synth.lock');
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Acquire a writer lock.
|
|
27
|
-
*
|
|
28
|
-
* No other readers or writers must exist for the given directory.
|
|
29
|
-
*/
|
|
30
|
-
async acquireWrite() {
|
|
31
|
-
await this.assertNoOtherWriters();
|
|
32
|
-
const readers = await this.currentReaders();
|
|
33
|
-
if (readers.length > 0) {
|
|
34
|
-
throw new api_1.ToolkitError(`Other CLIs (PID=${readers}) are currently reading from ${this.directory}. Invoke the CLI in sequence, or use '--output' to synth into different directories.`);
|
|
35
|
-
}
|
|
36
|
-
await writeFileAtomic(this.writerFile, this.pidString);
|
|
37
|
-
return {
|
|
38
|
-
release: async () => {
|
|
39
|
-
await deleteFile(this.writerFile);
|
|
40
|
-
},
|
|
41
|
-
convertToReaderLock: async () => {
|
|
42
|
-
// Acquire the read lock before releasing the write lock. Slightly less
|
|
43
|
-
// chance of racing!
|
|
44
|
-
const ret = await this.doAcquireRead();
|
|
45
|
-
await deleteFile(this.writerFile);
|
|
46
|
-
return ret;
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Acquire a read lock
|
|
52
|
-
*
|
|
53
|
-
* Will fail if there are any writers.
|
|
54
|
-
*/
|
|
55
|
-
async acquireRead() {
|
|
56
|
-
await this.assertNoOtherWriters();
|
|
57
|
-
return this.doAcquireRead();
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Obtains the name fo a (new) `readerFile` to use. This includes a counter so
|
|
61
|
-
* that if multiple threads of the same PID attempt to concurrently acquire
|
|
62
|
-
* the same lock, they're guaranteed to use a different reader file name (only
|
|
63
|
-
* one thread will ever execute JS code at once, guaranteeing the readCounter
|
|
64
|
-
* is incremented "atomically" from the point of view of this PID.).
|
|
65
|
-
*/
|
|
66
|
-
readerFile() {
|
|
67
|
-
return path.join(this.directory, `read.${this.pidString}.${++this.readCounter}.lock`);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Do the actual acquiring of a read lock.
|
|
71
|
-
*/
|
|
72
|
-
async doAcquireRead() {
|
|
73
|
-
const readerFile = this.readerFile();
|
|
74
|
-
await writeFileAtomic(readerFile, this.pidString);
|
|
75
|
-
return {
|
|
76
|
-
release: async () => {
|
|
77
|
-
await deleteFile(readerFile);
|
|
78
|
-
},
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
async assertNoOtherWriters() {
|
|
82
|
-
const writer = await this.currentWriter();
|
|
83
|
-
if (writer) {
|
|
84
|
-
throw new api_1.ToolkitError(`Another CLI (PID=${writer}) is currently synthing to ${this.directory}. Invoke the CLI in sequence, or use '--output' to synth into different directories.`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Check the current writer (if any)
|
|
89
|
-
*/
|
|
90
|
-
async currentWriter() {
|
|
91
|
-
const contents = await readFileIfExists(this.writerFile);
|
|
92
|
-
if (!contents) {
|
|
93
|
-
return undefined;
|
|
94
|
-
}
|
|
95
|
-
const pid = parseInt(contents, 10);
|
|
96
|
-
if (!processExists(pid)) {
|
|
97
|
-
// Do cleanup of a stray file now
|
|
98
|
-
await deleteFile(this.writerFile);
|
|
99
|
-
return undefined;
|
|
100
|
-
}
|
|
101
|
-
return pid;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Check the current readers (if any)
|
|
105
|
-
*/
|
|
106
|
-
async currentReaders() {
|
|
107
|
-
const re = /^read\.([^.]+)\.[^.]+\.lock$/;
|
|
108
|
-
const ret = new Array();
|
|
109
|
-
let children;
|
|
110
|
-
try {
|
|
111
|
-
children = await fs_1.promises.readdir(this.directory, { encoding: 'utf-8' });
|
|
112
|
-
}
|
|
113
|
-
catch (e) {
|
|
114
|
-
// Can't be locked if the directory doesn't exist
|
|
115
|
-
if (e.code === 'ENOENT') {
|
|
116
|
-
return [];
|
|
117
|
-
}
|
|
118
|
-
throw e;
|
|
119
|
-
}
|
|
120
|
-
for (const fname of children) {
|
|
121
|
-
const m = fname.match(re);
|
|
122
|
-
if (m) {
|
|
123
|
-
const pid = parseInt(m[1], 10);
|
|
124
|
-
if (processExists(pid)) {
|
|
125
|
-
ret.push(pid);
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
// Do cleanup of a stray file now
|
|
129
|
-
await deleteFile(path.join(this.directory, fname));
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return ret;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
exports.RWLock = RWLock;
|
|
137
|
-
/* istanbul ignore next: code paths are unpredictable */
|
|
138
|
-
async function readFileIfExists(filename) {
|
|
139
|
-
try {
|
|
140
|
-
return await fs_1.promises.readFile(filename, { encoding: 'utf-8' });
|
|
141
|
-
}
|
|
142
|
-
catch (e) {
|
|
143
|
-
if (e.code === 'ENOENT') {
|
|
144
|
-
return undefined;
|
|
145
|
-
}
|
|
146
|
-
throw e;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
let tmpCounter = 0;
|
|
150
|
-
/* istanbul ignore next: code paths are unpredictable */
|
|
151
|
-
async function writeFileAtomic(filename, contents) {
|
|
152
|
-
await fs_1.promises.mkdir(path.dirname(filename), { recursive: true });
|
|
153
|
-
const tmpFile = `${filename}.${process.pid}_${++tmpCounter}`;
|
|
154
|
-
await fs_1.promises.writeFile(tmpFile, contents, { encoding: 'utf-8' });
|
|
155
|
-
await fs_1.promises.rename(tmpFile, filename);
|
|
156
|
-
}
|
|
157
|
-
/* istanbul ignore next: code paths are unpredictable */
|
|
158
|
-
async function deleteFile(filename) {
|
|
159
|
-
try {
|
|
160
|
-
await fs_1.promises.unlink(filename);
|
|
161
|
-
}
|
|
162
|
-
catch (e) {
|
|
163
|
-
if (e.code === 'ENOENT') {
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
throw e;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
/* istanbul ignore next: code paths are unpredictable */
|
|
170
|
-
function processExists(pid) {
|
|
171
|
-
try {
|
|
172
|
-
process.kill(pid, 0);
|
|
173
|
-
return true;
|
|
174
|
-
}
|
|
175
|
-
catch (e) {
|
|
176
|
-
return false;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicndsb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicndsb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUFvQztBQUNwQyw2QkFBNkI7QUFDN0IsMEVBQWdGO0FBRWhGOzs7Ozs7Ozs7R0FTRztBQUNILHdEQUF3RDtBQUN4RCxNQUFhLE1BQU07SUFLakIsWUFBNEIsU0FBaUI7UUFBakIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUZyQyxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUd0QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVsQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLGtCQUFZLENBQUMsbUJBQW1CLE9BQU8sZ0NBQWdDLElBQUksQ0FBQyxTQUFTLHNGQUFzRixDQUFDLENBQUM7UUFDekwsQ0FBQztRQUVELE1BQU0sZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZELE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ2xCLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsbUJBQW1CLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQzlCLHVFQUF1RTtnQkFDdkUsb0JBQW9CO2dCQUNwQixNQUFNLEdBQUcs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UUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDN0QsTUFBTSxhQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQsd0RBQXdEO0FBQ3hELEtBQUssVUFBVSxVQUFVLENBQUMsUUFBZ0I7SUFDeEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxhQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN4QixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztBQUNILENBQUM7QUFFRCx3REFBd0Q7QUFDeEQsU0FBUyxhQUFhLENBQUMsR0FBVztJQUNoQyxJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaSc7XG5cbi8qKlxuICogQSBzaW5nbGUtd3JpdGVyL211bHRpLXJlYWRlciBsb2NrIG9uIGEgZGlyZWN0b3J5XG4gKlxuICogSXQgdXNlcyBtYXJrZXIgZmlsZXMgd2l0aCBQSURzIGluIHRoZW0gYXMgYSBsb2NraW5nIG1hcmtlcjsgdGhlIFBJRHMgd2lsbCBiZVxuICogY2hlY2tlZCBmb3IgbGl2ZW5lc3MsIHNvIHRoYXQgaWYgdGhlIHByb2Nlc3MgZXhpdHMgd2l0aG91dCBjbGVhbmluZyB1cCB0aGVcbiAqIGZpbGVzIHRoZSBsb2NrIGlzIGltcGxpY2l0bHkgcmVsZWFzZWQuXG4gKlxuICogVGhpcyBjbGFzcyBpcyBub3QgMTAwJSByYWNlIHNhZmUsIGJ1dCBpbiBwcmFjdGljZSBpdCBzaG91bGQgYmUgYSBsb3RcbiAqIGJldHRlciB0aGFuIHRoZSAwIHByb3RlY3Rpb24gd2UgaGF2ZSB0b2RheS5cbiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGNvZGUgcGF0aHMgYXJlIHVucHJlZGljdGFibGUgKi9cbmV4cG9ydCBjbGFzcyBSV0xvY2sge1xuICBwcml2YXRlIHJlYWRvbmx5IHBpZFN0cmluZzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHdyaXRlckZpbGU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkQ291bnRlciA9IDA7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nKSB7XG4gICAgdGhpcy5waWRTdHJpbmcgPSBgJHtwcm9jZXNzLnBpZH1gO1xuXG4gICAgdGhpcy53cml0ZXJGaWxlID0gcGF0aC5qb2luKHRoaXMuZGlyZWN0b3J5LCAnc3ludGgubG9jaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjcXVpcmUgYSB3cml0ZXIgbG9jay5cbiAgICpcbiAgICogTm8gb3RoZXIgcmVhZGVycyBvciB3cml0ZXJzIG11c3QgZXhpc3QgZm9yIHRoZSBnaXZlbiBkaXJlY3RvcnkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWNxdWlyZVdyaXRlKCk6IFByb21pc2U8SVdyaXRlckxvY2s+IHtcbiAgICBhd2FpdCB0aGlzLmFzc2VydE5vT3RoZXJXcml0ZXJzKCk7XG5cbiAgICBjb25zdCByZWFkZXJzID0gYXdhaXQgdGhpcy5jdXJyZW50UmVhZGVycygpO1xuICAgIGlmIChyZWFkZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYE90aGVyIENMSXMgKFBJRD0ke3JlYWRlcnN9KSBhcmUgY3VycmVudGx5IHJlYWRpbmcgZnJvbSAke3RoaXMuZGlyZWN0b3J5fS4gSW52b2tlIHRoZSBDTEkgaW4gc2VxdWVuY2UsIG9yIHVzZSAnLS1vdXRwdXQnIHRvIHN5bnRoIGludG8gZGlmZmVyZW50IGRpcmVjdG9yaWVzLmApO1xuICAgIH1cblxuICAgIGF3YWl0IHdyaXRlRmlsZUF0b21pYyh0aGlzLndyaXRlckZpbGUsIHRoaXMucGlkU3RyaW5nKTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWxlYXNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGRlbGV0ZUZpbGUodGhpcy53cml0ZXJGaWxlKTtcbiAgICAgIH0sXG4gICAgICBjb252ZXJ0VG9SZWFkZXJMb2NrOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIEFjcXVpcmUgdGhlIHJlYWQgbG9jayBiZWZvcmUgcmVsZWFzaW5nIHRoZSB3cml0ZSBsb2NrLiBTbGlnaHRseSBsZXNzXG4gICAgICAgIC8vIGNoYW5jZSBvZiByYWNpbmchXG4gICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IHRoaXMuZG9BY3F1aXJlUmVhZCgpO1xuICAgICAgICBhd2FpdCBkZWxldGVGaWxlKHRoaXMud3JpdGVyRmlsZSk7XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWNxdWlyZSBhIHJlYWQgbG9ja1xuICAgKlxuICAgKiBXaWxsIGZhaWwgaWYgdGhlcmUgYXJlIGFueSB3cml0ZXJzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGFjcXVpcmVSZWFkKCk6IFByb21pc2U8SUxvY2s+IHtcbiAgICBhd2FpdCB0aGlzLmFzc2VydE5vT3RoZXJXcml0ZXJzKCk7XG4gICAgcmV0dXJuIHRoaXMuZG9BY3F1aXJlUmVhZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbnMgdGhlIG5hbWUgZm8gYSAobmV3KSBgcmVhZGVyRmlsZWAgdG8gdXNlLiBUaGlzIGluY2x1ZGVzIGEgY291bnRlciBzb1xuICAgKiB0aGF0IGlmIG11bHRpcGxlIHRocmVhZHMgb2YgdGhlIHNhbWUgUElEIGF0dGVtcHQgdG8gY29uY3VycmVudGx5IGFjcXVpcmVcbiAgICogdGhlIHNhbWUgbG9jaywgdGhleSdyZSBndWFyYW50ZWVkIHRvIHVzZSBhIGRpZmZlcmVudCByZWFkZXIgZmlsZSBuYW1lIChvbmx5XG4gICAqIG9uZSB0aHJlYWQgd2lsbCBldmVyIGV4ZWN1dGUgSlMgY29kZSBhdCBvbmNlLCBndWFyYW50ZWVpbmcgdGhlIHJlYWRDb3VudGVyXG4gICAqIGlzIGluY3JlbWVudGVkIFwiYXRvbWljYWxseVwiIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhpcyBQSUQuKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZGVyRmlsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5kaXJlY3RvcnksIGByZWFkLiR7dGhpcy5waWRTdHJpbmd9LiR7Kyt0aGlzLnJlYWRDb3VudGVyfS5sb2NrYCk7XG4gIH1cblxuICAvKipcbiAgICogRG8gdGhlIGFjdHVhbCBhY3F1aXJpbmcgb2YgYSByZWFkIGxvY2suXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGRvQWNxdWlyZVJlYWQoKTogUHJvbWlzZTxJTG9jaz4ge1xuICAgIGNvbnN0IHJlYWRlckZpbGUgPSB0aGlzLnJlYWRlckZpbGUoKTtcbiAgICBhd2FpdCB3cml0ZUZpbGVBdG9taWMocmVhZGVyRmlsZSwgdGhpcy5waWRTdHJpbmcpO1xuICAgIHJldHVybiB7XG4gICAgICByZWxlYXNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGRlbGV0ZUZpbGUocmVhZGVyRmlsZSk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFzc2VydE5vT3RoZXJXcml0ZXJzKCkge1xuICAgIGNvbnN0IHdyaXRlciA9IGF3YWl0IHRoaXMuY3VycmVudFdyaXRlcigpO1xuICAgIGlmICh3cml0ZXIpIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYEFub3RoZXIgQ0xJIChQSUQ9JHt3cml0ZXJ9KSBpcyBjdXJyZW50bHkgc3ludGhpbmcgdG8gJHt0aGlzLmRpcmVjdG9yeX0uIEludm9rZSB0aGUgQ0xJIGluIHNlcXVlbmNlLCBvciB1c2UgJy0tb3V0cHV0JyB0byBzeW50aCBpbnRvIGRpZmZlcmVudCBkaXJlY3Rvcmllcy5gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIGN1cnJlbnQgd3JpdGVyIChpZiBhbnkpXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGN1cnJlbnRXcml0ZXIoKTogUHJvbWlzZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlSWZFeGlzdHModGhpcy53cml0ZXJGaWxlKTtcbiAgICBpZiAoIWNvbnRlbnRzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHBpZCA9IHBhcnNlSW50KGNvbnRlbnRzLCAxMCk7XG4gICAgaWYgKCFwcm9jZXNzRXhpc3RzKHBpZCkpIHtcbiAgICAgIC8vIERvIGNsZWFudXAgb2YgYSBzdHJheSBmaWxlIG5vd1xuICAgICAgYXdhaXQgZGVsZXRlRmlsZSh0aGlzLndyaXRlckZpbGUpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSBjdXJyZW50IHJlYWRlcnMgKGlmIGFueSlcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY3VycmVudFJlYWRlcnMoKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIGNvbnN0IHJlID0gL15yZWFkXFwuKFteLl0rKVxcLlteLl0rXFwubG9jayQvO1xuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG5cbiAgICBsZXQgY2hpbGRyZW47XG4gICAgdHJ5IHtcbiAgICAgIGNoaWxkcmVuID0gYXdhaXQgZnMucmVhZGRpcih0aGlzLmRpcmVjdG9yeSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIC8vIENhbid0IGJlIGxvY2tlZCBpZiB0aGUgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3RcbiAgICAgIGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmbmFtZSBvZiBjaGlsZHJlbikge1xuICAgICAgY29uc3QgbSA9IGZuYW1lLm1hdGNoKHJlKTtcbiAgICAgIGlmIChtKSB7XG4gICAgICAgIGNvbnN0IHBpZCA9IHBhcnNlSW50KG1bMV0sIDEwKTtcbiAgICAgICAgaWYgKHByb2Nlc3NFeGlzdHMocGlkKSkge1xuICAgICAgICAgIHJldC5wdXNoKHBpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRG8gY2xlYW51cCBvZiBhIHN0cmF5IGZpbGUgbm93XG4gICAgICAgICAgYXdhaXQgZGVsZXRlRmlsZShwYXRoLmpvaW4odGhpcy5kaXJlY3RvcnksIGZuYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGFjcXVpcmVkIGxvY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTG9jayB7XG4gIHJlbGVhc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBBbiBhY3F1aXJlZCB3cml0ZXIgbG9ja1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElXcml0ZXJMb2NrIGV4dGVuZHMgSUxvY2sge1xuICAvKipcbiAgICogQ29udmVydCB0aGUgd3JpdGVyIGxvY2sgdG8gYSByZWFkZXIgbG9ja1xuICAgKi9cbiAgY29udmVydFRvUmVhZGVyTG9jaygpOiBQcm9taXNlPElMb2NrPjtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGNvZGUgcGF0aHMgYXJlIHVucHJlZGljdGFibGUgKi9cbmFzeW5jIGZ1bmN0aW9uIHJlYWRGaWxlSWZFeGlzdHMoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLnJlYWRGaWxlKGZpbGVuYW1lLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBpZiAoZS5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG5sZXQgdG1wQ291bnRlciA9IDA7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY29kZSBwYXRocyBhcmUgdW5wcmVkaWN0YWJsZSAqL1xuYXN5bmMgZnVuY3Rpb24gd3JpdGVGaWxlQXRvbWljKGZpbGVuYW1lOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZnMubWtkaXIocGF0aC5kaXJuYW1lKGZpbGVuYW1lKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGNvbnN0IHRtcEZpbGUgPSBgJHtmaWxlbmFtZX0uJHtwcm9jZXNzLnBpZH1fJHsrK3RtcENvdW50ZXJ9YDtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHRtcEZpbGUsIGNvbnRlbnRzLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICBhd2FpdCBmcy5yZW5hbWUodG1wRmlsZSwgZmlsZW5hbWUpO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY29kZSBwYXRocyBhcmUgdW5wcmVkaWN0YWJsZSAqL1xuYXN5bmMgZnVuY3Rpb24gZGVsZXRlRmlsZShmaWxlbmFtZTogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMudW5saW5rKGZpbGVuYW1lKTtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgaWYgKGUuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY29kZSBwYXRocyBhcmUgdW5wcmVkaWN0YWJsZSAqL1xuZnVuY3Rpb24gcHJvY2Vzc0V4aXN0cyhwaWQ6IG51bWJlcikge1xuICB0cnkge1xuICAgIHByb2Nlc3Mua2lsbChwaWQsIDApO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./work-graph"), exports);
|
|
18
|
-
__exportStar(require("./work-graph-builder"), exports);
|
|
19
|
-
__exportStar(require("./work-graph-types"), exports);
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTZCO0FBQzdCLHVEQUFxQztBQUNyQyxxREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dvcmstZ3JhcGgnO1xuZXhwb3J0ICogZnJvbSAnLi93b3JrLWdyYXBoLWJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi93b3JrLWdyYXBoLXR5cGVzJztcbiJdfQ==
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as cxapi from '@aws-cdk/cx-api';
|
|
2
|
-
import { WorkGraph } from './work-graph';
|
|
3
|
-
import type { WorkNode } from './work-graph-types';
|
|
4
|
-
import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
|
|
5
|
-
export declare class WorkGraphBuilder {
|
|
6
|
-
private readonly prebuildAssets;
|
|
7
|
-
private readonly idPrefix;
|
|
8
|
-
/**
|
|
9
|
-
* Default priorities for nodes
|
|
10
|
-
*
|
|
11
|
-
* Assets builds have higher priority than the other two operations, to make good on our promise that
|
|
12
|
-
* '--prebuild-assets' will actually do assets before stacks (if it can). Unfortunately it is the
|
|
13
|
-
* default :(
|
|
14
|
-
*
|
|
15
|
-
* But between stack dependencies and publish dependencies, stack dependencies go first
|
|
16
|
-
*/
|
|
17
|
-
static PRIORITIES: Record<WorkNode['type'], number>;
|
|
18
|
-
private readonly graph;
|
|
19
|
-
private readonly ioHelper;
|
|
20
|
-
constructor(ioHelper: IoHelper, prebuildAssets: boolean, idPrefix?: string);
|
|
21
|
-
private addStack;
|
|
22
|
-
/**
|
|
23
|
-
* Oof, see this parameter list
|
|
24
|
-
*/
|
|
25
|
-
private addAsset;
|
|
26
|
-
build(artifacts: cxapi.CloudArtifact[]): WorkGraph;
|
|
27
|
-
private stackArtifactIds;
|
|
28
|
-
private stackArtifactId;
|
|
29
|
-
/**
|
|
30
|
-
* We may have accidentally introduced cycles in an attempt to make the messages printed to the
|
|
31
|
-
* console not interfere with each other too much. Remove them again.
|
|
32
|
-
*/
|
|
33
|
-
private removeStackPublishCycles;
|
|
34
|
-
}
|