@aws-cdk/toolkit-lib 1.21.2 → 1.22.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.
Files changed (31) hide show
  1. package/.yarnrc.yml +3 -0
  2. package/build-info.json +2 -2
  3. package/db.json.gz +0 -0
  4. package/lib/actions/deploy/private/deployment-method.d.ts +39 -0
  5. package/lib/actions/deploy/private/deployment-method.js +36 -0
  6. package/lib/actions/deploy/private/index.d.ts +1 -0
  7. package/lib/actions/deploy/private/index.js +2 -1
  8. package/lib/api/aws-auth/awscli-compatible.js +12 -1
  9. package/lib/api/aws-auth/ec2-detection.d.ts +2 -0
  10. package/lib/api/aws-auth/ec2-detection.js +77 -0
  11. package/lib/api/aws-auth/sdk.d.ts +5 -3
  12. package/lib/api/aws-auth/sdk.js +7 -5
  13. package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +33 -0
  14. package/lib/api/cloudformation/evaluate-cloudformation-template.js +155 -20
  15. package/lib/api/deployments/deploy-stack.d.ts +2 -1
  16. package/lib/api/deployments/deploy-stack.js +75 -6
  17. package/lib/api/deployments/deployment-result.d.ts +6 -0
  18. package/lib/api/deployments/deployment-result.js +1 -1
  19. package/lib/api/deployments/deployments.d.ts +32 -3
  20. package/lib/api/deployments/deployments.js +47 -1
  21. package/lib/api/hotswap/cloud-control-resource.d.ts +5 -0
  22. package/lib/api/hotswap/cloud-control-resource.js +98 -0
  23. package/lib/api/hotswap/hotswap-deployments.js +31 -13
  24. package/lib/api/hotswap/lambda-functions.js +9 -12
  25. package/lib/index_bg.wasm +0 -0
  26. package/lib/toolkit/toolkit.js +57 -32
  27. package/package.json +40 -37
  28. package/lib/api/hotswap/bedrock-agentcore-runtimes.d.ts +0 -5
  29. package/lib/api/hotswap/bedrock-agentcore-runtimes.js +0 -145
  30. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -5
  31. package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
package/package.json CHANGED
@@ -7,27 +7,27 @@
7
7
  "directory": "packages/@aws-cdk/toolkit-lib"
8
8
  },
9
9
  "scripts": {
10
- "build": "npx projen build",
11
- "bump": "npx projen bump",
12
- "check-for-updates": "npx projen check-for-updates",
13
- "check-licenses": "npx projen check-licenses",
14
- "compile": "npx projen compile",
15
- "default": "npx projen default",
16
- "docs": "npx projen docs",
17
- "eslint": "npx projen eslint",
18
- "gather-versions": "npx projen gather-versions",
19
- "gen-fixture": "npx projen gen-fixture",
20
- "nx": "npx projen nx",
21
- "package": "npx projen package",
22
- "post-compile": "npx projen post-compile",
23
- "pre-compile": "npx projen pre-compile",
24
- "publish-local": "npx projen publish-local",
25
- "registry": "npx projen registry",
26
- "test": "npx projen test",
27
- "test:watch": "npx projen test:watch",
28
- "unbump": "npx projen unbump",
29
- "watch": "npx projen watch",
30
- "projen": "npx projen"
10
+ "build": "projen build",
11
+ "bump": "projen bump",
12
+ "check-for-updates": "projen check-for-updates",
13
+ "check-licenses": "projen check-licenses",
14
+ "compile": "projen compile",
15
+ "default": "projen default",
16
+ "docs": "projen docs",
17
+ "eslint": "projen eslint",
18
+ "gather-versions": "projen gather-versions",
19
+ "gen-fixture": "projen gen-fixture",
20
+ "nx": "projen nx",
21
+ "package": "projen package",
22
+ "post-compile": "projen post-compile",
23
+ "pre-compile": "projen pre-compile",
24
+ "publish-local": "projen publish-local",
25
+ "registry": "projen registry",
26
+ "test": "projen test",
27
+ "test:watch": "projen test:watch",
28
+ "unbump": "projen unbump",
29
+ "watch": "projen watch",
30
+ "projen": "projen"
31
31
  },
32
32
  "author": {
33
33
  "name": "Amazon Web Services",
@@ -35,19 +35,19 @@
35
35
  "organization": true
36
36
  },
37
37
  "devDependencies": {
38
- "@aws-cdk/aws-service-spec": "^0.1.169",
39
- "@aws-cdk/cli-plugin-contract": "2.182.1",
40
- "@cdklabs/eslint-plugin": "^1.5.10",
38
+ "@aws-cdk/aws-service-spec": "^0.1.171",
39
+ "@aws-cdk/cli-plugin-contract": "2.182.2",
40
+ "@cdklabs/eslint-plugin": "^2.0.0",
41
41
  "@jest/environment": "^29.7.0",
42
42
  "@jest/globals": "^29.7.0",
43
43
  "@jest/types": "^29.6.3",
44
- "@microsoft/api-extractor": "^7.58.1",
44
+ "@microsoft/api-extractor": "^7.58.2",
45
45
  "@smithy/util-stream": "^4.5.22",
46
46
  "@stylistic/eslint-plugin": "^3",
47
- "@types/fs-extra": "^11.0.4",
47
+ "@types/fs-extra": "^11",
48
48
  "@types/jest": "^29.5.14",
49
49
  "@types/jest-when": "^3.5.5",
50
- "@types/node": "^16",
50
+ "@types/node": "^20",
51
51
  "@types/picomatch": "^4",
52
52
  "@types/split2": "^4.2.3",
53
53
  "@typescript-eslint/eslint-plugin": "^8",
@@ -59,11 +59,11 @@
59
59
  "constructs": "^10.0.0",
60
60
  "eslint": "^9",
61
61
  "eslint-config-prettier": "^10.1.8",
62
- "eslint-import-resolver-typescript": "^3.10.1",
62
+ "eslint-import-resolver-typescript": "^4.4.4",
63
63
  "eslint-plugin-import": "^2.32.0",
64
- "eslint-plugin-jest": "^29.15.1",
64
+ "eslint-plugin-jest": "^29.15.2",
65
65
  "eslint-plugin-jsdoc": "^62.9.0",
66
- "eslint-plugin-prettier": "^5.5.5",
66
+ "eslint-plugin-prettier": "^4.2.5",
67
67
  "fast-check": "^4.6.0",
68
68
  "jest": "^29.7.0",
69
69
  "jest-environment-node": "^29.7.0",
@@ -71,7 +71,9 @@
71
71
  "jest-when": "^3.7.0",
72
72
  "license-checker": "^25.0.1",
73
73
  "nock": "13",
74
+ "nx": "^22.6.4",
74
75
  "prettier": "^2.8",
76
+ "projen": "^0.99.48",
75
77
  "ts-jest": "^29.4.9",
76
78
  "tsx": "^4.21.0",
77
79
  "typescript": "5.9"
@@ -81,8 +83,8 @@
81
83
  },
82
84
  "dependencies": {
83
85
  "@aws-cdk/cdk-assets-lib": "^1",
84
- "@aws-cdk/cloud-assembly-api": "2.2.1",
85
- "@aws-cdk/cloud-assembly-schema": ">=53.14.0",
86
+ "@aws-cdk/cloud-assembly-api": "2.2.2",
87
+ "@aws-cdk/cloud-assembly-schema": ">=53.16.0",
86
88
  "@aws-cdk/cloudformation-diff": "^2",
87
89
  "@aws-cdk/cx-api": "^2",
88
90
  "@aws-sdk/client-appsync": "^3",
@@ -113,12 +115,12 @@
113
115
  "@smithy/util-retry": "^4",
114
116
  "@smithy/util-waiter": "^4",
115
117
  "archiver": "^7.0.1",
116
- "cdk-from-cfn": "^0.293.0",
118
+ "cdk-from-cfn": "^0.295.0",
117
119
  "chalk": "^4",
118
120
  "chokidar": "^4",
119
121
  "fast-deep-equal": "^3.1.3",
120
122
  "fast-glob": "^3.3.3",
121
- "fs-extra": "^9",
123
+ "fs-extra": "^11",
122
124
  "p-limit": "^3",
123
125
  "picomatch": "^4",
124
126
  "semver": "^7.7.4",
@@ -137,7 +139,7 @@
137
139
  "devEngines": {
138
140
  "packageManager": {
139
141
  "name": "yarn",
140
- "version": "1.22.22",
142
+ "version": ">=4",
141
143
  "onFail": "ignore"
142
144
  }
143
145
  },
@@ -147,7 +149,8 @@
147
149
  "publishConfig": {
148
150
  "access": "public"
149
151
  },
150
- "version": "1.21.2",
152
+ "version": "1.22.0",
153
+ "packageManager": "yarn@4.13.0",
151
154
  "types": "lib/index.d.ts",
152
155
  "exports": {
153
156
  ".": {
@@ -156,5 +159,5 @@
156
159
  },
157
160
  "./package.json": "./package.json"
158
161
  },
159
- "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
162
+ "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"yarn projen\"."
160
163
  }
@@ -1,5 +0,0 @@
1
- import type { HotswapChange } from './common';
2
- import type { ResourceChange } from '../../payloads/hotswap';
3
- import type { EvaluateCloudFormationTemplate } from '../cloudformation';
4
- export declare function isHotswappableBedrockAgentCoreRuntimeChange(logicalId: string, change: ResourceChange, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise<HotswapChange[]>;
5
- //# sourceMappingURL=bedrock-agentcore-runtimes.d.ts.map
@@ -1,145 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isHotswappableBedrockAgentCoreRuntimeChange = isHotswappableBedrockAgentCoreRuntimeChange;
4
- const common_1 = require("./common");
5
- const toolkit_error_1 = require("../../toolkit/toolkit-error");
6
- async function isHotswappableBedrockAgentCoreRuntimeChange(logicalId, change, evaluateCfnTemplate) {
7
- if (change.newValue.Type !== 'AWS::BedrockAgentCore::Runtime') {
8
- return [];
9
- }
10
- const ret = [];
11
- const classifiedChanges = (0, common_1.classifyChanges)(change, [
12
- 'AgentRuntimeArtifact',
13
- 'EnvironmentVariables',
14
- 'Description',
15
- ]);
16
- classifiedChanges.reportNonHotswappablePropertyChanges(ret);
17
- const namesOfHotswappableChanges = Object.keys(classifiedChanges.hotswappableProps);
18
- if (namesOfHotswappableChanges.length === 0) {
19
- return ret;
20
- }
21
- const agentRuntimeId = await evaluateCfnTemplate.findPhysicalNameFor(logicalId);
22
- if (!agentRuntimeId) {
23
- return ret;
24
- }
25
- const runtimeChange = await evaluateBedrockAgentCoreRuntimeProps(classifiedChanges.hotswappableProps, evaluateCfnTemplate);
26
- ret.push({
27
- change: {
28
- cause: change,
29
- resources: [{
30
- logicalId,
31
- resourceType: change.newValue.Type,
32
- physicalName: agentRuntimeId,
33
- metadata: evaluateCfnTemplate.metadataFor(logicalId),
34
- }],
35
- },
36
- hotswappable: true,
37
- service: 'bedrock-agentcore',
38
- apply: async (sdk) => {
39
- const bedrockAgentCore = sdk.bedrockAgentCoreControl();
40
- const currentRuntime = await bedrockAgentCore.getAgentRuntime({
41
- agentRuntimeId,
42
- });
43
- // While UpdateAgentRuntimeRequest type allows undefined,
44
- // the API will fail at runtime if these required properties are not provided.
45
- if (!currentRuntime.agentRuntimeArtifact) {
46
- throw new toolkit_error_1.ToolkitError('RuntimeMissingArtifact', 'Current runtime does not have an artifact');
47
- }
48
- if (!currentRuntime.roleArn) {
49
- throw new toolkit_error_1.ToolkitError('RuntimeMissingRoleArn', 'Current runtime does not have a roleArn');
50
- }
51
- if (!currentRuntime.networkConfiguration) {
52
- throw new toolkit_error_1.ToolkitError('RuntimeMissingNetworkConfig', 'Current runtime does not have a networkConfiguration');
53
- }
54
- // All properties must be explicitly specified, otherwise they will be reset to
55
- // default values. We pass all properties from the current runtime and override
56
- // only the ones that have changed.
57
- await bedrockAgentCore.updateAgentRuntime({
58
- agentRuntimeId,
59
- agentRuntimeArtifact: runtimeChange.artifact
60
- ? toSdkAgentRuntimeArtifact(runtimeChange.artifact)
61
- : currentRuntime.agentRuntimeArtifact,
62
- roleArn: currentRuntime.roleArn,
63
- networkConfiguration: currentRuntime.networkConfiguration,
64
- description: runtimeChange.description ?? currentRuntime.description,
65
- authorizerConfiguration: currentRuntime.authorizerConfiguration,
66
- requestHeaderConfiguration: currentRuntime.requestHeaderConfiguration,
67
- protocolConfiguration: currentRuntime.protocolConfiguration,
68
- lifecycleConfiguration: currentRuntime.lifecycleConfiguration,
69
- environmentVariables: runtimeChange.environmentVariables ?? currentRuntime.environmentVariables,
70
- });
71
- },
72
- });
73
- return ret;
74
- }
75
- async function evaluateBedrockAgentCoreRuntimeProps(hotswappablePropChanges, evaluateCfnTemplate) {
76
- const runtimeChange = {};
77
- for (const updatedPropName in hotswappablePropChanges) {
78
- const updatedProp = hotswappablePropChanges[updatedPropName];
79
- switch (updatedPropName) {
80
- case 'AgentRuntimeArtifact':
81
- runtimeChange.artifact = await evaluateAgentRuntimeArtifact(updatedProp.newValue, evaluateCfnTemplate);
82
- break;
83
- case 'Description':
84
- runtimeChange.description = await evaluateCfnTemplate.evaluateCfnExpression(updatedProp.newValue);
85
- break;
86
- case 'EnvironmentVariables':
87
- runtimeChange.environmentVariables = await evaluateCfnTemplate.evaluateCfnExpression(updatedProp.newValue);
88
- break;
89
- default:
90
- // never reached
91
- throw new toolkit_error_1.ToolkitError('UnexpectedHotswapProperty', 'Unexpected hotswappable property for BedrockAgentCore Runtime. Please report this at github.com/aws/aws-cdk/issues/new/choose');
92
- }
93
- }
94
- return runtimeChange;
95
- }
96
- async function evaluateAgentRuntimeArtifact(artifactValue, evaluateCfnTemplate) {
97
- if (artifactValue.CodeConfiguration) {
98
- const codeConfig = artifactValue.CodeConfiguration;
99
- const code = codeConfig.Code;
100
- const s3Location = code.S3 ? {
101
- bucket: await evaluateCfnTemplate.evaluateCfnExpression(code.S3.Bucket),
102
- prefix: await evaluateCfnTemplate.evaluateCfnExpression(code.S3.Prefix),
103
- versionId: code.S3.VersionId
104
- ? await evaluateCfnTemplate.evaluateCfnExpression(code.S3.VersionId)
105
- : undefined,
106
- } : undefined;
107
- return {
108
- codeConfiguration: {
109
- code: s3Location ? { s3: s3Location } : {},
110
- runtime: await evaluateCfnTemplate.evaluateCfnExpression(codeConfig.Runtime),
111
- entryPoint: await evaluateCfnTemplate.evaluateCfnExpression(codeConfig.EntryPoint),
112
- },
113
- };
114
- }
115
- if (artifactValue.ContainerConfiguration) {
116
- return {
117
- containerConfiguration: {
118
- containerUri: await evaluateCfnTemplate.evaluateCfnExpression(artifactValue.ContainerConfiguration.ContainerUri),
119
- },
120
- };
121
- }
122
- return undefined;
123
- }
124
- function toSdkAgentRuntimeArtifact(artifact) {
125
- if (artifact.codeConfiguration) {
126
- const code = artifact.codeConfiguration.code.s3
127
- ? { s3: artifact.codeConfiguration.code.s3 }
128
- : undefined;
129
- return {
130
- codeConfiguration: {
131
- code,
132
- runtime: artifact.codeConfiguration.runtime,
133
- entryPoint: artifact.codeConfiguration.entryPoint,
134
- },
135
- };
136
- }
137
- if (artifact.containerConfiguration) {
138
- return {
139
- containerConfiguration: artifact.containerConfiguration,
140
- };
141
- }
142
- // never reached
143
- throw new toolkit_error_1.ToolkitError('RuntimeArtifactMissingConfig', 'AgentRuntimeArtifact must have either codeConfiguration or containerConfiguration');
144
- }
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVkcm9jay1hZ2VudGNvcmUtcnVudGltZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJiZWRyb2NrLWFnZW50Y29yZS1ydW50aW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLGtHQW9GQztBQTFGRCxxQ0FBMkM7QUFFM0MsK0RBQTJEO0FBSXBELEtBQUssVUFBVSwyQ0FBMkMsQ0FDL0QsU0FBaUIsRUFDakIsTUFBc0IsRUFDdEIsbUJBQW1EO0lBRW5ELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssZ0NBQWdDLEVBQUUsQ0FBQztRQUM5RCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBb0IsRUFBRSxDQUFDO0lBQ2hDLE1BQU0saUJBQWlCLEdBQUcsSUFBQSx3QkFBZSxFQUFDLE1BQU0sRUFBRTtRQUNoRCxzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLGFBQWE7S0FDZCxDQUFDLENBQUM7SUFDSCxpQkFBaUIsQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU1RCxNQUFNLDBCQUEwQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRixJQUFJLDBCQUEwQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyxNQUFNLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLG9DQUFvQyxDQUM5RCxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFDbkMsbUJBQW1CLENBQ3BCLENBQUM7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsTUFBTSxFQUFFO1lB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dHlEaWZmZXJlbmNlIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQgdHlwZSB7XG4gIEFnZW50UnVudGltZUFydGlmYWN0IGFzIFNka0FnZW50UnVudGltZUFydGlmYWN0LFxuICBBZ2VudE1hbmFnZWRSdW50aW1lVHlwZSxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWJlZHJvY2stYWdlbnRjb3JlLWNvbnRyb2wnO1xuaW1wb3J0IHR5cGUgeyBIb3Rzd2FwQ2hhbmdlIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgY2xhc3NpZnlDaGFuZ2VzIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUNoYW5nZSB9IGZyb20gJy4uLy4uL3BheWxvYWRzL2hvdHN3YXAnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB0eXBlIHsgU0RLIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSB9IGZyb20gJy4uL2Nsb3VkZm9ybWF0aW9uJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzSG90c3dhcHBhYmxlQmVkcm9ja0FnZW50Q29yZVJ1bnRpbWVDaGFuZ2UoXG4gIGxvZ2ljYWxJZDogc3RyaW5nLFxuICBjaGFuZ2U6IFJlc291cmNlQ2hhbmdlLFxuICBldmFsdWF0ZUNmblRlbXBsYXRlOiBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4pOiBQcm9taXNlPEhvdHN3YXBDaGFuZ2VbXT4ge1xuICBpZiAoY2hhbmdlLm5ld1ZhbHVlLlR5cGUgIT09ICdBV1M6OkJlZHJvY2tBZ2VudENvcmU6OlJ1bnRpbWUnKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgcmV0OiBIb3Rzd2FwQ2hhbmdlW10gPSBbXTtcbiAgY29uc3QgY2xhc3NpZmllZENoYW5nZXMgPSBjbGFzc2lmeUNoYW5nZXMoY2hhbmdlLCBbXG4gICAgJ0FnZW50UnVudGltZUFydGlmYWN0JyxcbiAgICAnRW52aXJvbm1lbnRWYXJpYWJsZXMnLFxuICAgICdEZXNjcmlwdGlvbicsXG4gIF0pO1xuICBjbGFzc2lmaWVkQ2hhbmdlcy5yZXBvcnROb25Ib3Rzd2FwcGFibGVQcm9wZXJ0eUNoYW5nZXMocmV0KTtcblxuICBjb25zdCBuYW1lc09mSG90c3dhcHBhYmxlQ2hhbmdlcyA9IE9iamVjdC5rZXlzKGNsYXNzaWZpZWRDaGFuZ2VzLmhvdHN3YXBwYWJsZVByb3BzKTtcbiAgaWYgKG5hbWVzT2ZIb3Rzd2FwcGFibGVDaGFuZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBjb25zdCBhZ2VudFJ1bnRpbWVJZCA9IGF3YWl0IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuZmluZFBoeXNpY2FsTmFtZUZvcihsb2dpY2FsSWQpO1xuICBpZiAoIWFnZW50UnVudGltZUlkKSB7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIGNvbnN0IHJ1bnRpbWVDaGFuZ2UgPSBhd2FpdCBldmFsdWF0ZUJlZHJvY2tBZ2VudENvcmVSdW50aW1lUHJvcHMoXG4gICAgY2xhc3NpZmllZENoYW5nZXMuaG90c3dhcHBhYmxlUHJvcHMsXG4gICAgZXZhbHVhdGVDZm5UZW1wbGF0ZSxcbiAgKTtcblxuICByZXQucHVzaCh7XG4gICAgY2hhbmdlOiB7XG4gICAgICBjYXVzZTogY2hhbmdlLFxuICAgICAgcmVzb3VyY2VzOiBbe1xuICAgICAgICBsb2dpY2FsSWQsXG4gICAgICAgIHJlc291cmNlVHlwZTogY2hhbmdlLm5ld1ZhbHVlLlR5cGUsXG4gICAgICAgIHBoeXNpY2FsTmFtZTogYWdlbnRSdW50aW1lSWQsXG4gICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICB9XSxcbiAgICB9LFxuICAgIGhvdHN3YXBwYWJsZTogdHJ1ZSxcbiAgICBzZXJ2aWNlOiAnYmVkcm9jay1hZ2VudGNvcmUnLFxuICAgIGFwcGx5OiBhc3luYyAoc2RrOiBTREspID0+IHtcbiAgICAgIGNvbnN0IGJlZHJvY2tBZ2VudENvcmUgPSBzZGsuYmVkcm9ja0FnZW50Q29yZUNvbnRyb2woKTtcblxuICAgICAgY29uc3QgY3VycmVudFJ1bnRpbWUgPSBhd2FpdCBiZWRyb2NrQWdlbnRDb3JlLmdldEFnZW50UnVudGltZSh7XG4gICAgICAgIGFnZW50UnVudGltZUlkLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFdoaWxlIFVwZGF0ZUFnZW50UnVudGltZVJlcXVlc3QgdHlwZSBhbGxvd3MgdW5kZWZpbmVkLFxuICAgICAgLy8gdGhlIEFQSSB3aWxsIGZhaWwgYXQgcnVudGltZSBpZiB0aGVzZSByZXF1aXJlZCBwcm9wZXJ0aWVzIGFyZSBub3QgcHJvdmlkZWQuXG4gICAgICBpZiAoIWN1cnJlbnRSdW50aW1lLmFnZW50UnVudGltZUFydGlmYWN0KSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ1J1bnRpbWVNaXNzaW5nQXJ0aWZhY3QnLCAnQ3VycmVudCBydW50aW1lIGRvZXMgbm90IGhhdmUgYW4gYXJ0aWZhY3QnKTtcbiAgICAgIH1cbiAgICAgIGlmICghY3VycmVudFJ1bnRpbWUucm9sZUFybikge1xuICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdSdW50aW1lTWlzc2luZ1JvbGVBcm4nLCAnQ3VycmVudCBydW50aW1lIGRvZXMgbm90IGhhdmUgYSByb2xlQXJuJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWN1cnJlbnRSdW50aW1lLm5ldHdvcmtDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ1J1bnRpbWVNaXNzaW5nTmV0d29ya0NvbmZpZycsICdDdXJyZW50IHJ1bnRpbWUgZG9lcyBub3QgaGF2ZSBhIG5ldHdvcmtDb25maWd1cmF0aW9uJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFsbCBwcm9wZXJ0aWVzIG11c3QgYmUgZXhwbGljaXRseSBzcGVjaWZpZWQsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgcmVzZXQgdG9cbiAgICAgIC8vIGRlZmF1bHQgdmFsdWVzLiBXZSBwYXNzIGFsbCBwcm9wZXJ0aWVzIGZyb20gdGhlIGN1cnJlbnQgcnVudGltZSBhbmQgb3ZlcnJpZGVcbiAgICAgIC8vIG9ubHkgdGhlIG9uZXMgdGhhdCBoYXZlIGNoYW5nZWQuXG4gICAgICBhd2FpdCBiZWRyb2NrQWdlbnRDb3JlLnVwZGF0ZUFnZW50UnVudGltZSh7XG4gICAgICAgIGFnZW50UnVudGltZUlkLFxuICAgICAgICBhZ2VudFJ1bnRpbWVBcnRpZmFjdDogcnVudGltZUNoYW5nZS5hcnRpZmFjdFxuICAgICAgICAgID8gdG9TZGtBZ2VudFJ1bnRpbWVBcnRpZmFjdChydW50aW1lQ2hhbmdlLmFydGlmYWN0KVxuICAgICAgICAgIDogY3VycmVudFJ1bnRpbWUuYWdlbnRSdW50aW1lQXJ0aWZhY3QsXG4gICAgICAgIHJvbGVBcm46IGN1cnJlbnRSdW50aW1lLnJvbGVBcm4sXG4gICAgICAgIG5ldHdvcmtDb25maWd1cmF0aW9uOiBjdXJyZW50UnVudGltZS5uZXR3b3JrQ29uZmlndXJhdGlvbixcbiAgICAgICAgZGVzY3JpcHRpb246IHJ1bnRpbWVDaGFuZ2UuZGVzY3JpcHRpb24gPz8gY3VycmVudFJ1bnRpbWUuZGVzY3JpcHRpb24sXG4gICAgICAgIGF1dGhvcml6ZXJDb25maWd1cmF0aW9uOiBjdXJyZW50UnVudGltZS5hdXRob3JpemVyQ29uZmlndXJhdGlvbixcbiAgICAgICAgcmVxdWVzdEhlYWRlckNvbmZpZ3VyYXRpb246IGN1cnJlbnRSdW50aW1lLnJlcXVlc3RIZWFkZXJDb25maWd1cmF0aW9uLFxuICAgICAgICBwcm90b2NvbENvbmZpZ3VyYXRpb246IGN1cnJlbnRSdW50aW1lLnByb3RvY29sQ29uZmlndXJhdGlvbixcbiAgICAgICAgbGlmZWN5Y2xlQ29uZmlndXJhdGlvbjogY3VycmVudFJ1bnRpbWUubGlmZWN5Y2xlQ29uZmlndXJhdGlvbixcbiAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHJ1bnRpbWVDaGFuZ2UuZW52aXJvbm1lbnRWYXJpYWJsZXMgPz8gY3VycmVudFJ1bnRpbWUuZW52aXJvbm1lbnRWYXJpYWJsZXMsXG4gICAgICB9KTtcbiAgICB9LFxuICB9KTtcblxuICByZXR1cm4gcmV0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBldmFsdWF0ZUJlZHJvY2tBZ2VudENvcmVSdW50aW1lUHJvcHMoXG4gIGhvdHN3YXBwYWJsZVByb3BDaGFuZ2VzOiBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eURpZmZlcmVuY2U8dW5rbm93bj4+LFxuICBldmFsdWF0ZUNmblRlbXBsYXRlOiBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4pOiBQcm9taXNlPEJlZHJvY2tBZ2VudENvcmVSdW50aW1lQ2hhbmdlPiB7XG4gIGNvbnN0IHJ1bnRpbWVDaGFuZ2U6IEJlZHJvY2tBZ2VudENvcmVSdW50aW1lQ2hhbmdlID0ge307XG5cbiAgZm9yIChjb25zdCB1cGRhdGVkUHJvcE5hbWUgaW4gaG90c3dhcHBhYmxlUHJvcENoYW5nZXMpIHtcbiAgICBjb25zdCB1cGRhdGVkUHJvcCA9IGhvdHN3YXBwYWJsZVByb3BDaGFuZ2VzW3VwZGF0ZWRQcm9wTmFtZV07XG5cbiAgICBzd2l0Y2ggKHVwZGF0ZWRQcm9wTmFtZSkge1xuICAgICAgY2FzZSAnQWdlbnRSdW50aW1lQXJ0aWZhY3QnOlxuICAgICAgICBydW50aW1lQ2hhbmdlLmFydGlmYWN0ID0gYXdhaXQgZXZhbHVhdGVBZ2VudFJ1bnRpbWVBcnRpZmFjdChcbiAgICAgICAgICB1cGRhdGVkUHJvcC5uZXdWYWx1ZSBhcyBDZm5BZ2VudFJ1bnRpbWVBcnRpZmFjdCxcbiAgICAgICAgICBldmFsdWF0ZUNmblRlbXBsYXRlLFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRGVzY3JpcHRpb24nOlxuICAgICAgICBydW50aW1lQ2hhbmdlLmRlc2NyaXB0aW9uID0gYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5ldmFsdWF0ZUNmbkV4cHJlc3Npb24odXBkYXRlZFByb3AubmV3VmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRW52aXJvbm1lbnRWYXJpYWJsZXMnOlxuICAgICAgICBydW50aW1lQ2hhbmdlLmVudmlyb25tZW50VmFyaWFibGVzID0gYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5ldmFsdWF0ZUNmbkV4cHJlc3Npb24odXBkYXRlZFByb3AubmV3VmFsdWUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gbmV2ZXIgcmVhY2hlZFxuICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgICAgICdVbmV4cGVjdGVkSG90c3dhcFByb3BlcnR5JyxcbiAgICAgICAgICAnVW5leHBlY3RlZCBob3Rzd2FwcGFibGUgcHJvcGVydHkgZm9yIEJlZHJvY2tBZ2VudENvcmUgUnVudGltZS4gUGxlYXNlIHJlcG9ydCB0aGlzIGF0IGdpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzL25ldy9jaG9vc2UnLFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBydW50aW1lQ2hhbmdlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBldmFsdWF0ZUFnZW50UnVudGltZUFydGlmYWN0KFxuICBhcnRpZmFjdFZhbHVlOiBDZm5BZ2VudFJ1bnRpbWVBcnRpZmFjdCxcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuKTogUHJvbWlzZTxBZ2VudFJ1bnRpbWVBcnRpZmFjdCB8IHVuZGVmaW5lZD4ge1xuICBpZiAoYXJ0aWZhY3RWYWx1ZS5Db2RlQ29uZmlndXJhdGlvbikge1xuICAgIGNvbnN0IGNvZGVDb25maWcgPSBhcnRpZmFjdFZhbHVlLkNvZGVDb25maWd1cmF0aW9uO1xuICAgIGNvbnN0IGNvZGUgPSBjb2RlQ29uZmlnLkNvZGU7XG5cbiAgICBjb25zdCBzM0xvY2F0aW9uID0gY29kZS5TMyA/IHtcbiAgICAgIGJ1Y2tldDogYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5ldmFsdWF0ZUNmbkV4cHJlc3Npb24oY29kZS5TMy5CdWNrZXQpLFxuICAgICAgcHJlZml4OiBhd2FpdCBldmFsdWF0ZUNmblRlbXBsYXRlLmV2YWx1YXRlQ2ZuRXhwcmVzc2lvbihjb2RlLlMzLlByZWZpeCksXG4gICAgICB2ZXJzaW9uSWQ6IGNvZGUuUzMuVmVyc2lvbklkXG4gICAgICAgID8gYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5ldmFsdWF0ZUNmbkV4cHJlc3Npb24oY29kZS5TMy5WZXJzaW9uSWQpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0gOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29kZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgY29kZTogczNMb2NhdGlvbiA/IHsgczM6IHMzTG9jYXRpb24gfSA6IHt9LFxuICAgICAgICBydW50aW1lOiBhd2FpdCBldmFsdWF0ZUNmblRlbXBsYXRlLmV2YWx1YXRlQ2ZuRXhwcmVzc2lvbihjb2RlQ29uZmlnLlJ1bnRpbWUpLFxuICAgICAgICBlbnRyeVBvaW50OiBhd2FpdCBldmFsdWF0ZUNmblRlbXBsYXRlLmV2YWx1YXRlQ2ZuRXhwcmVzc2lvbihjb2RlQ29uZmlnLkVudHJ5UG9pbnQpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGFydGlmYWN0VmFsdWUuQ29udGFpbmVyQ29uZmlndXJhdGlvbikge1xuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXJDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGNvbnRhaW5lclVyaTogYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5ldmFsdWF0ZUNmbkV4cHJlc3Npb24oXG4gICAgICAgICAgYXJ0aWZhY3RWYWx1ZS5Db250YWluZXJDb25maWd1cmF0aW9uLkNvbnRhaW5lclVyaSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHRvU2RrQWdlbnRSdW50aW1lQXJ0aWZhY3QoYXJ0aWZhY3Q6IEFnZW50UnVudGltZUFydGlmYWN0KTogU2RrQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICBpZiAoYXJ0aWZhY3QuY29kZUNvbmZpZ3VyYXRpb24pIHtcbiAgICBjb25zdCBjb2RlID0gYXJ0aWZhY3QuY29kZUNvbmZpZ3VyYXRpb24uY29kZS5zM1xuICAgICAgPyB7IHMzOiBhcnRpZmFjdC5jb2RlQ29uZmlndXJhdGlvbi5jb2RlLnMzIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGNvZGUsXG4gICAgICAgIHJ1bnRpbWU6IGFydGlmYWN0LmNvZGVDb25maWd1cmF0aW9uLnJ1bnRpbWUgYXMgQWdlbnRNYW5hZ2VkUnVudGltZVR5cGUsXG4gICAgICAgIGVudHJ5UG9pbnQ6IGFydGlmYWN0LmNvZGVDb25maWd1cmF0aW9uLmVudHJ5UG9pbnQsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpZiAoYXJ0aWZhY3QuY29udGFpbmVyQ29uZmlndXJhdGlvbikge1xuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXJDb25maWd1cmF0aW9uOiBhcnRpZmFjdC5jb250YWluZXJDb25maWd1cmF0aW9uLFxuICAgIH07XG4gIH1cblxuICAvLyBuZXZlciByZWFjaGVkXG4gIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ1J1bnRpbWVBcnRpZmFjdE1pc3NpbmdDb25maWcnLCAnQWdlbnRSdW50aW1lQXJ0aWZhY3QgbXVzdCBoYXZlIGVpdGhlciBjb2RlQ29uZmlndXJhdGlvbiBvciBjb250YWluZXJDb25maWd1cmF0aW9uJyk7XG59XG5cbmludGVyZmFjZSBDZm5BZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIHJlYWRvbmx5IENvZGVDb25maWd1cmF0aW9uPzoge1xuICAgIHJlYWRvbmx5IENvZGU6IHtcbiAgICAgIHJlYWRvbmx5IFMzPzoge1xuICAgICAgICByZWFkb25seSBCdWNrZXQ6IHVua25vd247XG4gICAgICAgIHJlYWRvbmx5IFByZWZpeDogdW5rbm93bjtcbiAgICAgICAgcmVhZG9ubHkgVmVyc2lvbklkPzogdW5rbm93bjtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZWFkb25seSBSdW50aW1lOiB1bmtub3duO1xuICAgIHJlYWRvbmx5IEVudHJ5UG9pbnQ6IHVua25vd247XG4gIH07XG4gIHJlYWRvbmx5IENvbnRhaW5lckNvbmZpZ3VyYXRpb24/OiB7XG4gICAgcmVhZG9ubHkgQ29udGFpbmVyVXJpOiB1bmtub3duO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICByZWFkb25seSBjb2RlQ29uZmlndXJhdGlvbj86IHtcbiAgICByZWFkb25seSBjb2RlOiB7XG4gICAgICByZWFkb25seSBzMz86IHtcbiAgICAgICAgcmVhZG9ubHkgYnVja2V0OiBzdHJpbmc7XG4gICAgICAgIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xuICAgICAgICByZWFkb25seSB2ZXJzaW9uSWQ/OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVhZG9ubHkgcnVudGltZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGVudHJ5UG9pbnQ6IHN0cmluZ1tdO1xuICB9O1xuICByZWFkb25seSBjb250YWluZXJDb25maWd1cmF0aW9uPzoge1xuICAgIHJlYWRvbmx5IGNvbnRhaW5lclVyaTogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgQmVkcm9ja0FnZW50Q29yZVJ1bnRpbWVDaGFuZ2Uge1xuICBhcnRpZmFjdD86IEFnZW50UnVudGltZUFydGlmYWN0O1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZW52aXJvbm1lbnRWYXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuIl19
@@ -1,5 +0,0 @@
1
- import { type HotswapChange } from './common';
2
- import type { ResourceChange } from '../../payloads/hotswap';
3
- import type { EvaluateCloudFormationTemplate } from '../cloudformation';
4
- export declare function isHotswappableStateMachineChange(logicalId: string, change: ResourceChange, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise<HotswapChange[]>;
5
- //# sourceMappingURL=stepfunctions-state-machines.d.ts.map
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isHotswappableStateMachineChange = isHotswappableStateMachineChange;
4
- const common_1 = require("./common");
5
- async function isHotswappableStateMachineChange(logicalId, change, evaluateCfnTemplate) {
6
- if (change.newValue.Type !== 'AWS::StepFunctions::StateMachine') {
7
- return [];
8
- }
9
- const ret = [];
10
- const classifiedChanges = (0, common_1.classifyChanges)(change, ['DefinitionString']);
11
- classifiedChanges.reportNonHotswappablePropertyChanges(ret);
12
- const namesOfHotswappableChanges = Object.keys(classifiedChanges.hotswappableProps);
13
- if (namesOfHotswappableChanges.length > 0) {
14
- const stateMachineNameInCfnTemplate = change.newValue?.Properties?.StateMachineName;
15
- const stateMachineArn = stateMachineNameInCfnTemplate
16
- ? await evaluateCfnTemplate.evaluateCfnExpression({
17
- 'Fn::Sub': 'arn:${AWS::Partition}:states:${AWS::Region}:${AWS::AccountId}:stateMachine:' +
18
- stateMachineNameInCfnTemplate,
19
- })
20
- : await evaluateCfnTemplate.findPhysicalNameFor(logicalId);
21
- // nothing to do
22
- if (!stateMachineArn) {
23
- return ret;
24
- }
25
- ret.push({
26
- change: {
27
- cause: change,
28
- resources: [{
29
- logicalId,
30
- resourceType: change.newValue.Type,
31
- physicalName: stateMachineArn?.split(':')[6],
32
- metadata: evaluateCfnTemplate.metadataFor(logicalId),
33
- }],
34
- },
35
- hotswappable: true,
36
- service: 'stepfunctions-service',
37
- apply: async (sdk) => {
38
- // not passing the optional properties leaves them unchanged
39
- await sdk.stepFunctions().updateStateMachine({
40
- stateMachineArn,
41
- definition: await evaluateCfnTemplate.evaluateCfnExpression(change.propertyUpdates.DefinitionString.newValue),
42
- });
43
- },
44
- });
45
- }
46
- return ret;
47
- }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcGZ1bmN0aW9ucy1zdGF0ZS1tYWNoaW5lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0ZXBmdW5jdGlvbnMtc3RhdGUtbWFjaGluZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSw0RUFtREM7QUF4REQscUNBQStEO0FBS3hELEtBQUssVUFBVSxnQ0FBZ0MsQ0FDcEQsU0FBaUIsRUFDakIsTUFBc0IsRUFDdEIsbUJBQW1EO0lBRW5ELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssa0NBQWtDLEVBQUUsQ0FBQztRQUNoRSxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBb0IsRUFBRSxDQUFDO0lBQ2hDLE1BQU0saUJBQWlCLEdBQUcsSUFBQSx3QkFBZSxFQUFDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUN4RSxpQkFBaUIsQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU1RCxNQUFNLDBCQUEwQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRixJQUFJLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxNQUFNLDZCQUE2QixHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDO1FBQ3BGLE1BQU0sZUFBZSxHQUFHLDZCQUE2QjtZQUNuRCxDQUFDLENBQUMsTUFBTSxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDaEQsU0FBUyxFQUNMLDZFQUE2RTtvQkFDN0UsNkJBQTZCO2FBQ2xDLENBQUM7WUFDRixDQUFDLENBQUMsTUFBTSxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLE1BQU07Z0JBQ2IsU0FBUyxFQUFFLENBQUM7d0JBQ1YsU0FBUzt3QkFDVCxZQUFZLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJO3dCQUNsQyxZQUFZLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzVDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO3FCQUNyRCxDQUFDO2FBQ0g7WUFDRCxZQUFZLEVBQUUsSUFBSTtZQUNsQixPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBUSxFQUFFLEVBQUU7Z0JBQ3hCLDREQUE0RDtnQkFDNUQsTUFBTSxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzNDLGVBQWU7b0JBQ2YsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7aUJBQzlHLENBQUMsQ0FBQztZQUNMLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBIb3Rzd2FwQ2hhbmdlLCBjbGFzc2lmeUNoYW5nZXMgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vcGF5bG9hZHMvaG90c3dhcCc7XG5pbXBvcnQgdHlwZSB7IFNESyB9IGZyb20gJy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUgfSBmcm9tICcuLi9jbG91ZGZvcm1hdGlvbic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0hvdHN3YXBwYWJsZVN0YXRlTWFjaGluZUNoYW5nZShcbiAgbG9naWNhbElkOiBzdHJpbmcsXG4gIGNoYW5nZTogUmVzb3VyY2VDaGFuZ2UsXG4gIGV2YWx1YXRlQ2ZuVGVtcGxhdGU6IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSxcbik6IFByb21pc2U8SG90c3dhcENoYW5nZVtdPiB7XG4gIGlmIChjaGFuZ2UubmV3VmFsdWUuVHlwZSAhPT0gJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCByZXQ6IEhvdHN3YXBDaGFuZ2VbXSA9IFtdO1xuICBjb25zdCBjbGFzc2lmaWVkQ2hhbmdlcyA9IGNsYXNzaWZ5Q2hhbmdlcyhjaGFuZ2UsIFsnRGVmaW5pdGlvblN0cmluZyddKTtcbiAgY2xhc3NpZmllZENoYW5nZXMucmVwb3J0Tm9uSG90c3dhcHBhYmxlUHJvcGVydHlDaGFuZ2VzKHJldCk7XG5cbiAgY29uc3QgbmFtZXNPZkhvdHN3YXBwYWJsZUNoYW5nZXMgPSBPYmplY3Qua2V5cyhjbGFzc2lmaWVkQ2hhbmdlcy5ob3Rzd2FwcGFibGVQcm9wcyk7XG4gIGlmIChuYW1lc09mSG90c3dhcHBhYmxlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgc3RhdGVNYWNoaW5lTmFtZUluQ2ZuVGVtcGxhdGUgPSBjaGFuZ2UubmV3VmFsdWU/LlByb3BlcnRpZXM/LlN0YXRlTWFjaGluZU5hbWU7XG4gICAgY29uc3Qgc3RhdGVNYWNoaW5lQXJuID0gc3RhdGVNYWNoaW5lTmFtZUluQ2ZuVGVtcGxhdGVcbiAgICAgID8gYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5ldmFsdWF0ZUNmbkV4cHJlc3Npb24oe1xuICAgICAgICAnRm46OlN1Yic6XG4gICAgICAgICAgICAnYXJuOiR7QVdTOjpQYXJ0aXRpb259OnN0YXRlczoke0FXUzo6UmVnaW9ufToke0FXUzo6QWNjb3VudElkfTpzdGF0ZU1hY2hpbmU6JyArXG4gICAgICAgICAgICBzdGF0ZU1hY2hpbmVOYW1lSW5DZm5UZW1wbGF0ZSxcbiAgICAgIH0pXG4gICAgICA6IGF3YWl0IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuZmluZFBoeXNpY2FsTmFtZUZvcihsb2dpY2FsSWQpO1xuXG4gICAgLy8gbm90aGluZyB0byBkb1xuICAgIGlmICghc3RhdGVNYWNoaW5lQXJuKSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIHJldC5wdXNoKHtcbiAgICAgIGNoYW5nZToge1xuICAgICAgICBjYXVzZTogY2hhbmdlLFxuICAgICAgICByZXNvdXJjZXM6IFt7XG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogY2hhbmdlLm5ld1ZhbHVlLlR5cGUsXG4gICAgICAgICAgcGh5c2ljYWxOYW1lOiBzdGF0ZU1hY2hpbmVBcm4/LnNwbGl0KCc6JylbNl0sXG4gICAgICAgICAgbWV0YWRhdGE6IGV2YWx1YXRlQ2ZuVGVtcGxhdGUubWV0YWRhdGFGb3IobG9naWNhbElkKSxcbiAgICAgICAgfV0sXG4gICAgICB9LFxuICAgICAgaG90c3dhcHBhYmxlOiB0cnVlLFxuICAgICAgc2VydmljZTogJ3N0ZXBmdW5jdGlvbnMtc2VydmljZScsXG4gICAgICBhcHBseTogYXN5bmMgKHNkazogU0RLKSA9PiB7XG4gICAgICAgIC8vIG5vdCBwYXNzaW5nIHRoZSBvcHRpb25hbCBwcm9wZXJ0aWVzIGxlYXZlcyB0aGVtIHVuY2hhbmdlZFxuICAgICAgICBhd2FpdCBzZGsuc3RlcEZ1bmN0aW9ucygpLnVwZGF0ZVN0YXRlTWFjaGluZSh7XG4gICAgICAgICAgc3RhdGVNYWNoaW5lQXJuLFxuICAgICAgICAgIGRlZmluaXRpb246IGF3YWl0IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuZXZhbHVhdGVDZm5FeHByZXNzaW9uKGNoYW5nZS5wcm9wZXJ0eVVwZGF0ZXMuRGVmaW5pdGlvblN0cmluZy5uZXdWYWx1ZSksXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG4iXX0=