@aws-cdk-testing/cli-integ 3.29.1 → 3.30.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 (27) hide show
  1. package/.yarnrc.yml +3 -0
  2. package/README.md +1 -1
  3. package/lib/regions.d.ts +4 -0
  4. package/lib/regions.js +11 -2
  5. package/lib/shell.d.ts +5 -0
  6. package/lib/shell.js +20 -7
  7. package/npm-shrinkwrap.json +1730 -2463
  8. package/package.json +55 -45
  9. package/resources/cdk-apps/app/app.js +57 -0
  10. package/resources/cdk-apps/import-existing-resources-app/app.js +26 -0
  11. package/resources/cdk-apps/import-existing-resources-app/cdk.json +3 -0
  12. package/resources/cdk-apps/nested-stack-with-fn-join-export/app.js +0 -2
  13. package/tests/cli-integ-tests/deploy/cdk-deploy-skips-unnecessary-updates-for-nested-stacks.integtest.js +10 -8
  14. package/tests/cli-integ-tests/deploy/cdk-deploy-with-any-change-approval-shows-diff.integtest.js +1 -2
  15. package/tests/cli-integ-tests/deploy/cdk-deploy-with-change-set-approval-diff.integtest.d.ts +1 -0
  16. package/tests/cli-integ-tests/deploy/cdk-deploy-with-change-set-approval-diff.integtest.js +44 -0
  17. package/tests/cli-integ-tests/deploy/cdk-import-existing-resources-error-message-includes-construct-paths.integtest.d.ts +1 -0
  18. package/tests/cli-integ-tests/deploy/cdk-import-existing-resources-error-message-includes-construct-paths.integtest.js +43 -0
  19. package/tests/cli-integ-tests/hotswap/cdk-hotswap-deployment-supports-cloudcontrol-based-resources.integtest.d.ts +1 -0
  20. package/tests/cli-integ-tests/hotswap/cdk-hotswap-deployment-supports-cloudcontrol-based-resources.integtest.js +41 -0
  21. package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run-detect-changes.integtest.js +3 -2
  22. package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run-filter-by-patterns.integtest.js +3 -2
  23. package/tests/cli-integ-tests/refactor/cdk-refactor-dry-run-no-changes.integtest.js +3 -2
  24. package/tests/cli-integ-tests/refactor/cdk-refactor-large-template.integtest.js +3 -2
  25. package/tests/cli-integ-tests/refactor/cdk-refactor-move-same-to-different-stacks.integtest.js +3 -2
  26. package/tests/cli-integ-tests/refactor/cdk-refactor-no-ambiguities-execution.integtest.js +3 -2
  27. package/tests/cli-integ-tests/refactor/cdk-refactor-with-ambiguities-execution.integtest.js +3 -2
package/package.json CHANGED
@@ -15,23 +15,23 @@
15
15
  "test-root": "bin/test-root"
16
16
  },
17
17
  "scripts": {
18
- "build": "npx projen build",
19
- "bump": "npx projen bump",
20
- "check-for-updates": "npx projen check-for-updates",
21
- "check-licenses": "npx projen check-licenses",
22
- "compile": "npx projen compile",
23
- "default": "npx projen default",
24
- "eslint": "npx projen eslint",
25
- "gather-versions": "npx projen gather-versions",
26
- "nx": "npx projen nx",
27
- "package": "npx projen package",
28
- "post-compile": "npx projen post-compile",
29
- "pre-compile": "npx projen pre-compile",
30
- "test": "npx projen test",
31
- "test:watch": "npx projen test:watch",
32
- "unbump": "npx projen unbump",
33
- "watch": "npx projen watch",
34
- "projen": "npx projen"
18
+ "build": "projen build",
19
+ "bump": "projen bump",
20
+ "check-for-updates": "projen check-for-updates",
21
+ "check-licenses": "projen check-licenses",
22
+ "compile": "projen compile",
23
+ "default": "projen default",
24
+ "eslint": "projen eslint",
25
+ "gather-versions": "projen gather-versions",
26
+ "nx": "projen nx",
27
+ "package": "projen package",
28
+ "post-compile": "projen post-compile",
29
+ "pre-compile": "projen pre-compile",
30
+ "test": "projen test",
31
+ "test:watch": "projen test:watch",
32
+ "unbump": "projen unbump",
33
+ "watch": "projen watch",
34
+ "projen": "projen"
35
35
  },
36
36
  "author": {
37
37
  "name": "Amazon Web Services",
@@ -39,13 +39,13 @@
39
39
  "organization": true
40
40
  },
41
41
  "devDependencies": {
42
- "@aws-cdk/toolkit-lib": "1.21.1",
42
+ "@aws-cdk/toolkit-lib": "1.22.0",
43
43
  "@aws-cdk/yarn-cling": "0.0.0",
44
- "@cdklabs/eslint-plugin": "^1.5.9",
44
+ "@cdklabs/eslint-plugin": "^2.0.0",
45
45
  "@stylistic/eslint-plugin": "^3",
46
- "@types/fs-extra": "^9",
46
+ "@types/fs-extra": "^11",
47
47
  "@types/jest": "^29.5.14",
48
- "@types/node": "^16",
48
+ "@types/node": "^20",
49
49
  "@types/semver": "^7",
50
50
  "@types/yargs": "^16",
51
51
  "@typescript-eslint/eslint-plugin": "^8",
@@ -53,40 +53,42 @@
53
53
  "commit-and-tag-version": "^12",
54
54
  "constructs": "^10.0.0",
55
55
  "eslint": "^9",
56
- "eslint-config-prettier": "^9.1.2",
57
- "eslint-import-resolver-typescript": "^3.10.1",
56
+ "eslint-config-prettier": "^10.1.8",
57
+ "eslint-import-resolver-typescript": "^4.4.4",
58
58
  "eslint-plugin-import": "^2.32.0",
59
- "eslint-plugin-jest": "^29.15.1",
60
- "eslint-plugin-jsdoc": "^62.8.1",
61
- "eslint-plugin-prettier": "^5.5.5",
59
+ "eslint-plugin-jest": "^29.15.2",
60
+ "eslint-plugin-jsdoc": "^62.9.0",
61
+ "eslint-plugin-prettier": "^4.2.5",
62
62
  "jest": "^29.7.0",
63
63
  "jest-junit": "^16",
64
64
  "license-checker": "^25.0.1",
65
+ "nx": "^22.6.4",
65
66
  "prettier": "^2.8",
67
+ "projen": "^0.99.48",
66
68
  "ts-jest": "^29.2.5",
67
69
  "typescript": "5.9"
68
70
  },
69
71
  "dependencies": {
70
- "@aws-sdk/client-cloudformation": "^3.1019.0",
71
- "@aws-sdk/client-codeartifact": "^3.1019.0",
72
- "@aws-sdk/client-ecr": "^3.1019.0",
73
- "@aws-sdk/client-ecr-public": "^3.1019.0",
74
- "@aws-sdk/client-ecs": "^3.1019.0",
75
- "@aws-sdk/client-iam": "^3.1019.0",
76
- "@aws-sdk/client-lambda": "^3.1019.0",
77
- "@aws-sdk/client-s3": "^3.1019.0",
78
- "@aws-sdk/client-secrets-manager": "^3.1019.0",
79
- "@aws-sdk/client-sns": "^3.1019.0",
80
- "@aws-sdk/client-sso": "^3.1019.0",
81
- "@aws-sdk/client-sts": "^3.1019.0",
82
- "@aws-sdk/credential-providers": "^3.1019.0",
83
- "@cdklabs/cdk-atmosphere-client": "^0.0.94",
72
+ "@aws-sdk/client-cloudformation": "^3.1028.0",
73
+ "@aws-sdk/client-codeartifact": "^3.1029.0",
74
+ "@aws-sdk/client-ecr": "^3.1028.0",
75
+ "@aws-sdk/client-ecr-public": "^3.1028.0",
76
+ "@aws-sdk/client-ecs": "^3.1028.0",
77
+ "@aws-sdk/client-iam": "^3.1028.0",
78
+ "@aws-sdk/client-lambda": "^3.1028.0",
79
+ "@aws-sdk/client-s3": "^3.1028.0",
80
+ "@aws-sdk/client-secrets-manager": "^3.1028.0",
81
+ "@aws-sdk/client-sns": "^3.1028.0",
82
+ "@aws-sdk/client-sso": "^3.1028.0",
83
+ "@aws-sdk/client-sts": "^3.1028.0",
84
+ "@aws-sdk/credential-providers": "^3.1029.0",
85
+ "@cdklabs/cdk-atmosphere-client": "^0.0.96",
84
86
  "@octokit/rest": "^20",
85
- "@smithy/types": "^4.13.1",
86
- "@smithy/util-retry": "^4.2.12",
87
+ "@smithy/types": "^4.14.0",
88
+ "@smithy/util-retry": "^4.3.1",
87
89
  "chalk": "^4",
88
90
  "fast-glob": "^3.3.3",
89
- "fs-extra": "^9",
91
+ "fs-extra": "^11",
90
92
  "jest": "^29",
91
93
  "jest-junit": "^16",
92
94
  "make-runnable": "^1",
@@ -109,13 +111,21 @@
109
111
  "engines": {
110
112
  "node": ">= 18.0.0"
111
113
  },
114
+ "devEngines": {
115
+ "packageManager": {
116
+ "name": "yarn",
117
+ "version": ">=4",
118
+ "onFail": "ignore"
119
+ }
120
+ },
112
121
  "main": "lib/index.js",
113
122
  "license": "Apache-2.0",
114
123
  "homepage": "https://github.com/aws/aws-cdk",
115
124
  "publishConfig": {
116
125
  "access": "public"
117
126
  },
118
- "version": "3.29.1",
127
+ "version": "3.30.0",
128
+ "packageManager": "yarn@4.13.0",
119
129
  "types": "lib/index.d.ts",
120
- "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
130
+ "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"yarn projen\"."
121
131
  }
@@ -33,6 +33,9 @@ if (process.env.PACKAGE_LAYOUT_VERSION === '1') {
33
33
  aws_ecr_assets: docker,
34
34
  aws_appsync: appsync,
35
35
  aws_bedrockagentcore: bedrockagentcore,
36
+ aws_events: events,
37
+ aws_dynamodb: dynamodb,
38
+ aws_bedrock: bedrock,
36
39
  Stack
37
40
  } = require('aws-cdk-lib');
38
41
  }
@@ -711,6 +714,59 @@ class AgentCoreHotswapStack extends cdk.Stack {
711
714
  }
712
715
  }
713
716
 
717
+ class CloudControlHotswapStack extends cdk.Stack {
718
+ constructor(parent, id, props) {
719
+ super(parent, id, props);
720
+
721
+ // DynamoDB table — a dependency that other resources reference
722
+ const table = new dynamodb.Table(this, 'Table', {
723
+ partitionKey: { name: 'pk', type: dynamodb.AttributeType.STRING },
724
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
725
+ });
726
+
727
+ // ElastiCache serverless cache — another dependency resource
728
+ const cache = new cdk.CfnResource(this, 'Cache', {
729
+ type: 'AWS::ElastiCache::ServerlessCache',
730
+ properties: {
731
+ Engine: 'valkey',
732
+ ServerlessCacheName: `${cdk.Stack.of(this).stackName}-cache`.substring(0, 40).toLowerCase(),
733
+ },
734
+ });
735
+
736
+ // SQS Queue — hotswapped via CCAPI, references the DynamoDB table ARN in its tag
737
+ const queue = new sqs.Queue(this, 'Queue', {
738
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
739
+ });
740
+ cdk.Tags.of(queue).add('DynamoTableArn', table.tableArn);
741
+ cdk.Tags.of(queue).add('DynamicTag', process.env.DYNAMIC_CC_PROPERTY_VALUE ?? 'original');
742
+
743
+ // Bedrock Agent — hotswapped via CCAPI, references the DynamoDB table name
744
+ const agentRole = new iam.Role(this, 'AgentRole', {
745
+ assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com'),
746
+ });
747
+ const agent = new bedrock.CfnAgent(this, 'Agent', {
748
+ agentName: `${cdk.Stack.of(this).stackName}-agent`.substring(0, 40),
749
+ agentResourceRoleArn: agentRole.roleArn,
750
+ instruction: process.env.DYNAMIC_CC_PROPERTY_VALUE
751
+ ? `You help query the table ${table.tableName}. ${process.env.DYNAMIC_CC_PROPERTY_VALUE}`
752
+ : `You help query the table ${table.tableName}. original`,
753
+ foundationModel: 'anthropic.claude-instant-v1',
754
+ });
755
+
756
+ // Events Rule — hotswapped via CCAPI, references the ElastiCache cache ARN
757
+ const rule = new events.Rule(this, 'Rule', {
758
+ schedule: events.Schedule.rate(cdk.Duration.hours(1)),
759
+ description: process.env.DYNAMIC_CC_PROPERTY_VALUE
760
+ ? `Rule for cache ${cache.getAtt('ARN')}. ${process.env.DYNAMIC_CC_PROPERTY_VALUE}`
761
+ : `Rule for cache ${cache.getAtt('ARN')}. original`,
762
+ });
763
+
764
+ new cdk.CfnOutput(this, 'QueueUrl', { value: queue.queueUrl });
765
+ new cdk.CfnOutput(this, 'AgentName', { value: agent.ref });
766
+ new cdk.CfnOutput(this, 'RuleName', { value: rule.ruleName });
767
+ }
768
+ }
769
+
714
770
  class DockerStack extends cdk.Stack {
715
771
  constructor(parent, id, props) {
716
772
  super(parent, id, props);
@@ -990,6 +1046,7 @@ switch (stackSet) {
990
1046
  new LambdaHotswapStack(app, `${stackPrefix}-lambda-hotswap`);
991
1047
  new EcsHotswapStack(app, `${stackPrefix}-ecs-hotswap`);
992
1048
  new AgentCoreHotswapStack(app, `${stackPrefix}-agentcore-hotswap`);
1049
+ new CloudControlHotswapStack(app, `${stackPrefix}-cc-hotswap`);
993
1050
  new AppSyncHotswapStack(app, `${stackPrefix}-appsync-hotswap`);
994
1051
  new DockerStack(app, `${stackPrefix}-docker`);
995
1052
  new DockerInUseStack(app, `${stackPrefix}-docker-in-use`);
@@ -0,0 +1,26 @@
1
+ const cdk = require('aws-cdk-lib/core');
2
+ const iam = require('aws-cdk-lib/aws-iam');
3
+
4
+ const stackPrefix = process.env.STACK_NAME_PREFIX;
5
+ if (!stackPrefix) {
6
+ throw new Error('the STACK_NAME_PREFIX environment variable is required');
7
+ }
8
+
9
+ class ImportExistingResourcesStack extends cdk.Stack {
10
+ constructor(scope, id, props) {
11
+ super(scope, id, props);
12
+
13
+ const retain = process.env.REMOVAL_POLICY === 'retain';
14
+
15
+ const role = new iam.Role(this, 'MyRole', {
16
+ assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
17
+ roleName: `${stackPrefix}-import-role`,
18
+ });
19
+ role.applyRemovalPolicy(retain ? cdk.RemovalPolicy.RETAIN : cdk.RemovalPolicy.DESTROY);
20
+ }
21
+ }
22
+
23
+ const app = new cdk.App();
24
+ new ImportExistingResourcesStack(app, `${stackPrefix}-import-existing`);
25
+
26
+ app.synth();
@@ -0,0 +1,3 @@
1
+ {
2
+ "app": "node app"
3
+ }
@@ -2,8 +2,6 @@ const cdk = require('aws-cdk-lib');
2
2
  const { aws_cloudformation: cfn, aws_sns: sns, aws_ssm: ssm } = cdk;
3
3
 
4
4
  /**
5
- * Reproduces https://t.corp.amazon.com/D423570178
6
- *
7
5
  * When IncludeNestedStacks is true, CloudFormation validates all nested stacks
8
6
  * together. Export names using Fn::Join with a runtime reference get collapsed
9
7
  * to the placeholder {{IntrinsicFunction://Fn::Join}}, causing a false
@@ -3,16 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
4
4
  const lib_1 = require("../../../lib");
5
5
  (0, lib_1.integTest)('deploy skips unnecessary updates for nested stacks', (0, lib_1.withDefaultFixture)(async (fixture) => {
6
- // we are using a stack with a nested stack because CFN will always attempt to
7
- // update a nested stack, which will allow us to verify that updates are actually
8
- // skipped unless --force is specified.
6
+ // Deploy a stack with a nested stack. CFN will always report nested
7
+ // stacks as changed, even when nothing actually changed. With the
8
+ // two-phase change set flow, this means every deploy creates and
9
+ // executes a new change set.
9
10
  const stackArn = await fixture.cdkDeploy('with-nested-stack', { captureStderr: false });
10
- const changeSet1 = await getLatestChangeSet();
11
- // Deploy the same stack again, there should be no new change set created
11
+ // Deploy the same stack again — CFN always reports nested stack
12
+ // resources as changed, so the deploy goes through successfully
13
+ // without any actual resource changes.
12
14
  await fixture.cdkDeploy('with-nested-stack');
13
15
  const changeSet2 = await getLatestChangeSet();
14
- expect(changeSet2.ChangeSetId).toEqual(changeSet1.ChangeSetId);
15
- // Deploy the stack again with --force, now we should create a changeset
16
+ expect(changeSet2.StackStatus).toEqual('UPDATE_COMPLETE');
17
+ // Deploy the stack again with --force
16
18
  await fixture.cdkDeploy('with-nested-stack', { options: ['--force'] });
17
19
  const changeSet3 = await getLatestChangeSet();
18
20
  expect(changeSet3.ChangeSetId).not.toEqual(changeSet2.ChangeSetId);
@@ -30,4 +32,4 @@ const lib_1 = require("../../../lib");
30
32
  return response.Stacks?.[0];
31
33
  }
32
34
  }));
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS1za2lwcy11bm5lY2Vzc2FyeS11cGRhdGVzLWZvci1uZXN0ZWQtc3RhY2tzLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1kZXBsb3ktc2tpcHMtdW5uZWNlc3NhcnktdXBkYXRlcy1mb3ItbmVzdGVkLXN0YWNrcy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwRUFBdUU7QUFDdkUsc0NBQTZEO0FBRTdELElBQUEsZUFBUyxFQUNQLG9EQUFvRCxFQUNwRCxJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuQyw4RUFBOEU7SUFDOUUsaUZBQWlGO0lBQ2pGLHVDQUF1QztJQUN2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4RixNQUFNLFVBQVUsR0FBRyxNQUFNLGtCQUFrQixFQUFFLENBQUM7SUFFOUMseUVBQXlFO0lBQ3pFLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQztJQUM5QyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFL0Qsd0VBQXdFO0lBQ3hFLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RSxNQUFNLFVBQVUsR0FBRyxNQUFNLGtCQUFrQixFQUFFLENBQUM7SUFDOUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRSx1RUFBdUU7SUFDdkUsMkNBQTJDO0lBQzNDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkYsTUFBTSxVQUFVLEdBQUcsTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFbkUsS0FBSyxVQUFVLGtCQUFrQjtRQUMvQixNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLDZDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaWJlU3RhY2tzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmludGVnVGVzdChcbiAgJ2RlcGxveSBza2lwcyB1bm5lY2Vzc2FyeSB1cGRhdGVzIGZvciBuZXN0ZWQgc3RhY2tzJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gd2UgYXJlIHVzaW5nIGEgc3RhY2sgd2l0aCBhIG5lc3RlZCBzdGFjayBiZWNhdXNlIENGTiB3aWxsIGFsd2F5cyBhdHRlbXB0IHRvXG4gICAgLy8gdXBkYXRlIGEgbmVzdGVkIHN0YWNrLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHZlcmlmeSB0aGF0IHVwZGF0ZXMgYXJlIGFjdHVhbGx5XG4gICAgLy8gc2tpcHBlZCB1bmxlc3MgLS1mb3JjZSBpcyBzcGVjaWZpZWQuXG4gICAgY29uc3Qgc3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snLCB7IGNhcHR1cmVTdGRlcnI6IGZhbHNlIH0pO1xuICAgIGNvbnN0IGNoYW5nZVNldDEgPSBhd2FpdCBnZXRMYXRlc3RDaGFuZ2VTZXQoKTtcblxuICAgIC8vIERlcGxveSB0aGUgc2FtZSBzdGFjayBhZ2FpbiwgdGhlcmUgc2hvdWxkIGJlIG5vIG5ldyBjaGFuZ2Ugc2V0IGNyZWF0ZWRcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snKTtcbiAgICBjb25zdCBjaGFuZ2VTZXQyID0gYXdhaXQgZ2V0TGF0ZXN0Q2hhbmdlU2V0KCk7XG4gICAgZXhwZWN0KGNoYW5nZVNldDIuQ2hhbmdlU2V0SWQpLnRvRXF1YWwoY2hhbmdlU2V0MS5DaGFuZ2VTZXRJZCk7XG5cbiAgICAvLyBEZXBsb3kgdGhlIHN0YWNrIGFnYWluIHdpdGggLS1mb3JjZSwgbm93IHdlIHNob3VsZCBjcmVhdGUgYSBjaGFuZ2VzZXRcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snLCB7IG9wdGlvbnM6IFsnLS1mb3JjZSddIH0pO1xuICAgIGNvbnN0IGNoYW5nZVNldDMgPSBhd2FpdCBnZXRMYXRlc3RDaGFuZ2VTZXQoKTtcbiAgICBleHBlY3QoY2hhbmdlU2V0My5DaGFuZ2VTZXRJZCkubm90LnRvRXF1YWwoY2hhbmdlU2V0Mi5DaGFuZ2VTZXRJZCk7XG5cbiAgICAvLyBEZXBsb3kgdGhlIHN0YWNrIGFnYWluIHdpdGggdGFncywgZXhwZWN0ZWQgdG8gY3JlYXRlIGEgbmV3IGNoYW5nZXNldFxuICAgIC8vIGV2ZW4gdGhvdWdoIHRoZSByZXNvdXJjZXMgZGlkbid0IGNoYW5nZS5cbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snLCB7IG9wdGlvbnM6IFsnLS10YWdzJywgJ2tleT12YWx1ZSddIH0pO1xuICAgIGNvbnN0IGNoYW5nZVNldDQgPSBhd2FpdCBnZXRMYXRlc3RDaGFuZ2VTZXQoKTtcbiAgICBleHBlY3QoY2hhbmdlU2V0NC5DaGFuZ2VTZXRJZCkubm90LnRvRXF1YWwoY2hhbmdlU2V0My5DaGFuZ2VTZXRJZCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RDaGFuZ2VTZXQoKSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uLnNlbmQobmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZCh7IFN0YWNrTmFtZTogc3RhY2tBcm4gfSkpO1xuICAgICAgaWYgKCFyZXNwb25zZS5TdGFja3M/LlswXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpZCBub3QgZ2V0IGEgQ2hhbmdlU2V0IGF0IGFsbCcpO1xuICAgICAgfVxuICAgICAgZml4dHVyZS5sb2coYEZvdW5kIENoYW5nZSBTZXQgJHtyZXNwb25zZS5TdGFja3M/LlswXS5DaGFuZ2VTZXRJZH1gKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5TdGFja3M/LlswXTtcbiAgICB9XG4gIH0pLFxuKTtcbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS1za2lwcy11bm5lY2Vzc2FyeS11cGRhdGVzLWZvci1uZXN0ZWQtc3RhY2tzLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1kZXBsb3ktc2tpcHMtdW5uZWNlc3NhcnktdXBkYXRlcy1mb3ItbmVzdGVkLXN0YWNrcy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwRUFBdUU7QUFDdkUsc0NBQTZEO0FBRTdELElBQUEsZUFBUyxFQUNQLG9EQUFvRCxFQUNwRCxJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuQyxvRUFBb0U7SUFDcEUsa0VBQWtFO0lBQ2xFLGlFQUFpRTtJQUNqRSw2QkFBNkI7SUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFeEYsZ0VBQWdFO0lBQ2hFLGdFQUFnRTtJQUNoRSx1Q0FBdUM7SUFDdkMsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFMUQsc0NBQXNDO0lBQ3RDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RSxNQUFNLFVBQVUsR0FBRyxNQUFNLGtCQUFrQixFQUFFLENBQUM7SUFDOUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRSx1RUFBdUU7SUFDdkUsMkNBQTJDO0lBQzNDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkYsTUFBTSxVQUFVLEdBQUcsTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFbkUsS0FBSyxVQUFVLGtCQUFrQjtRQUMvQixNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLDZDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaWJlU3RhY2tzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmludGVnVGVzdChcbiAgJ2RlcGxveSBza2lwcyB1bm5lY2Vzc2FyeSB1cGRhdGVzIGZvciBuZXN0ZWQgc3RhY2tzJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gRGVwbG95IGEgc3RhY2sgd2l0aCBhIG5lc3RlZCBzdGFjay4gQ0ZOIHdpbGwgYWx3YXlzIHJlcG9ydCBuZXN0ZWRcbiAgICAvLyBzdGFja3MgYXMgY2hhbmdlZCwgZXZlbiB3aGVuIG5vdGhpbmcgYWN0dWFsbHkgY2hhbmdlZC4gV2l0aCB0aGVcbiAgICAvLyB0d28tcGhhc2UgY2hhbmdlIHNldCBmbG93LCB0aGlzIG1lYW5zIGV2ZXJ5IGRlcGxveSBjcmVhdGVzIGFuZFxuICAgIC8vIGV4ZWN1dGVzIGEgbmV3IGNoYW5nZSBzZXQuXG4gICAgY29uc3Qgc3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snLCB7IGNhcHR1cmVTdGRlcnI6IGZhbHNlIH0pO1xuXG4gICAgLy8gRGVwbG95IHRoZSBzYW1lIHN0YWNrIGFnYWluIOKAlCBDRk4gYWx3YXlzIHJlcG9ydHMgbmVzdGVkIHN0YWNrXG4gICAgLy8gcmVzb3VyY2VzIGFzIGNoYW5nZWQsIHNvIHRoZSBkZXBsb3kgZ29lcyB0aHJvdWdoIHN1Y2Nlc3NmdWxseVxuICAgIC8vIHdpdGhvdXQgYW55IGFjdHVhbCByZXNvdXJjZSBjaGFuZ2VzLlxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd3aXRoLW5lc3RlZC1zdGFjaycpO1xuICAgIGNvbnN0IGNoYW5nZVNldDIgPSBhd2FpdCBnZXRMYXRlc3RDaGFuZ2VTZXQoKTtcbiAgICBleHBlY3QoY2hhbmdlU2V0Mi5TdGFja1N0YXR1cykudG9FcXVhbCgnVVBEQVRFX0NPTVBMRVRFJyk7XG5cbiAgICAvLyBEZXBsb3kgdGhlIHN0YWNrIGFnYWluIHdpdGggLS1mb3JjZVxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd3aXRoLW5lc3RlZC1zdGFjaycsIHsgb3B0aW9uczogWyctLWZvcmNlJ10gfSk7XG4gICAgY29uc3QgY2hhbmdlU2V0MyA9IGF3YWl0IGdldExhdGVzdENoYW5nZVNldCgpO1xuICAgIGV4cGVjdChjaGFuZ2VTZXQzLkNoYW5nZVNldElkKS5ub3QudG9FcXVhbChjaGFuZ2VTZXQyLkNoYW5nZVNldElkKTtcblxuICAgIC8vIERlcGxveSB0aGUgc3RhY2sgYWdhaW4gd2l0aCB0YWdzLCBleHBlY3RlZCB0byBjcmVhdGUgYSBuZXcgY2hhbmdlc2V0XG4gICAgLy8gZXZlbiB0aG91Z2ggdGhlIHJlc291cmNlcyBkaWRuJ3QgY2hhbmdlLlxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd3aXRoLW5lc3RlZC1zdGFjaycsIHsgb3B0aW9uczogWyctLXRhZ3MnLCAna2V5PXZhbHVlJ10gfSk7XG4gICAgY29uc3QgY2hhbmdlU2V0NCA9IGF3YWl0IGdldExhdGVzdENoYW5nZVNldCgpO1xuICAgIGV4cGVjdChjaGFuZ2VTZXQ0LkNoYW5nZVNldElkKS5ub3QudG9FcXVhbChjaGFuZ2VTZXQzLkNoYW5nZVNldElkKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldExhdGVzdENoYW5nZVNldCgpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24uc2VuZChuZXcgRGVzY3JpYmVTdGFja3NDb21tYW5kKHsgU3RhY2tOYW1lOiBzdGFja0FybiB9KSk7XG4gICAgICBpZiAoIXJlc3BvbnNlLlN0YWNrcz8uWzBdKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBnZXQgYSBDaGFuZ2VTZXQgYXQgYWxsJyk7XG4gICAgICB9XG4gICAgICBmaXh0dXJlLmxvZyhgRm91bmQgQ2hhbmdlIFNldCAke3Jlc3BvbnNlLlN0YWNrcz8uWzBdLkNoYW5nZVNldElkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLlN0YWNrcz8uWzBdO1xuICAgIH1cbiAgfSksXG4pO1xuIl19
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const lib_1 = require("../../../lib");
4
- jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
5
4
  (0, lib_1.integTest)('deploy with any-change approval shows diff', (0, lib_1.withDefaultFixture)(async (fixture) => {
6
5
  // Deploy with --require-approval=any-change and --yes to auto-confirm.
7
6
  // The output should contain the stack diff so the user knows what they're approving.
@@ -15,4 +14,4 @@ jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-c
15
14
  expect(output).toContain('Do you wish to deploy these changes');
16
15
  expect(output).toContain('(auto-confirmed)');
17
16
  }));
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS13aXRoLWFueS1jaGFuZ2UtYXBwcm92YWwtc2hvd3MtZGlmZi5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstZGVwbG95LXdpdGgtYW55LWNoYW5nZS1hcHByb3ZhbC1zaG93cy1kaWZmLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQUE2RDtBQUU3RCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyx5RUFBeUU7QUFFM0csSUFBQSxlQUFTLEVBQ1AsNENBQTRDLEVBQzVDLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLHVFQUF1RTtJQUN2RSxxRkFBcUY7SUFDckYsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtRQUMvQyxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxPQUFPLENBQUM7UUFDbkQsb0JBQW9CLEVBQUUsS0FBSztLQUM1QixDQUFDLENBQUM7SUFFSCxvRkFBb0Y7SUFDcEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUMxRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7SUFDaEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmplc3Quc2V0VGltZW91dCgyICogNjAgKiA2MF8wMDApOyAvLyBJbmNsdWRlcyB0aGUgdGltZSB0byBhY3F1aXJlIGxvY2tzLCB3b3JzdC1jYXNlIHNpbmdsZS10aHJlYWRlZCBydW50aW1lXG5cbmludGVnVGVzdChcbiAgJ2RlcGxveSB3aXRoIGFueS1jaGFuZ2UgYXBwcm92YWwgc2hvd3MgZGlmZicsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIC8vIERlcGxveSB3aXRoIC0tcmVxdWlyZS1hcHByb3ZhbD1hbnktY2hhbmdlIGFuZCAtLXllcyB0byBhdXRvLWNvbmZpcm0uXG4gICAgLy8gVGhlIG91dHB1dCBzaG91bGQgY29udGFpbiB0aGUgc3RhY2sgZGlmZiBzbyB0aGUgdXNlciBrbm93cyB3aGF0IHRoZXkncmUgYXBwcm92aW5nLlxuICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd0ZXN0LTInLCB7XG4gICAgICBvcHRpb25zOiBbJy0tcmVxdWlyZS1hcHByb3ZhbD1hbnktY2hhbmdlJywgJy0teWVzJ10sXG4gICAgICBuZXZlclJlcXVpcmVBcHByb3ZhbDogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBUaGUgZGVwbG95IGNvbmZpcm1hdGlvbiBtZXNzYWdlIHNob3VsZCBjb250YWluIHRoZSBkaWZmIHdpdGggcmVzb3VyY2UgaW5mb3JtYXRpb25cbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ0FXUzo6U05TOjpUb3BpYycpO1xuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignXCItLXJlcXVpcmUtYXBwcm92YWxcIiBpcyBzZXQgdG8gXFwnYW55LWNoYW5nZVxcJycpO1xuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignRG8geW91IHdpc2ggdG8gZGVwbG95IHRoZXNlIGNoYW5nZXMnKTtcbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJyhhdXRvLWNvbmZpcm1lZCknKTtcbiAgfSksXG4pO1xuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS13aXRoLWFueS1jaGFuZ2UtYXBwcm92YWwtc2hvd3MtZGlmZi5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstZGVwbG95LXdpdGgtYW55LWNoYW5nZS1hcHByb3ZhbC1zaG93cy1kaWZmLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQUE2RDtBQUU3RCxJQUFBLGVBQVMsRUFDUCw0Q0FBNEMsRUFDNUMsSUFBQSx3QkFBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkMsdUVBQXVFO0lBQ3ZFLHFGQUFxRjtJQUNyRixNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1FBQy9DLE9BQU8sRUFBRSxDQUFDLCtCQUErQixFQUFFLE9BQU8sQ0FBQztRQUNuRCxvQkFBb0IsRUFBRSxLQUFLO0tBQzVCLENBQUMsQ0FBQztJQUVILG9GQUFvRjtJQUNwRixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUNoRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVnVGVzdCwgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuaW50ZWdUZXN0KFxuICAnZGVwbG95IHdpdGggYW55LWNoYW5nZSBhcHByb3ZhbCBzaG93cyBkaWZmJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gRGVwbG95IHdpdGggLS1yZXF1aXJlLWFwcHJvdmFsPWFueS1jaGFuZ2UgYW5kIC0teWVzIHRvIGF1dG8tY29uZmlybS5cbiAgICAvLyBUaGUgb3V0cHV0IHNob3VsZCBjb250YWluIHRoZSBzdGFjayBkaWZmIHNvIHRoZSB1c2VyIGtub3dzIHdoYXQgdGhleSdyZSBhcHByb3ZpbmcuXG4gICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3Rlc3QtMicsIHtcbiAgICAgIG9wdGlvbnM6IFsnLS1yZXF1aXJlLWFwcHJvdmFsPWFueS1jaGFuZ2UnLCAnLS15ZXMnXSxcbiAgICAgIG5ldmVyUmVxdWlyZUFwcHJvdmFsOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIC8vIFRoZSBkZXBsb3kgY29uZmlybWF0aW9uIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4gdGhlIGRpZmYgd2l0aCByZXNvdXJjZSBpbmZvcm1hdGlvblxuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignQVdTOjpTTlM6OlRvcGljJyk7XG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdcIi0tcmVxdWlyZS1hcHByb3ZhbFwiIGlzIHNldCB0byBcXCdhbnktY2hhbmdlXFwnJyk7XG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdEbyB5b3Ugd2lzaCB0byBkZXBsb3kgdGhlc2UgY2hhbmdlcycpO1xuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignKGF1dG8tY29uZmlybWVkKScpO1xuICB9KSxcbik7XG4iXX0=
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
4
+ const lib_1 = require("../../../lib");
5
+ (0, lib_1.integTest)('deploy with change-set method uses change set for approval diff', (0, lib_1.withDefaultFixture)(async (fixture) => {
6
+ let changeSetVerified = false;
7
+ const stackName = fixture.fullStackName('test-2');
8
+ const changeSetName = `${fixture.stackNamePrefix}-approval-diff-test`;
9
+ // Deploy with --require-approval=any-change without --yes.
10
+ // The CLI will create a change set for the approval diff, pause for confirmation,
11
+ // and then execute the same change set after the user confirms.
12
+ const output = await fixture.cdkDeploy('test-2', {
13
+ options: ['--require-approval=any-change', '--method=change-set', `--change-set-name=${changeSetName}`],
14
+ neverRequireApproval: false,
15
+ interact: [
16
+ {
17
+ prompt: /Do you wish to deploy these changes/,
18
+ input: 'y',
19
+ beforeInput: async () => {
20
+ // While the CLI is paused at the approval prompt, verify that
21
+ // the named change set has been created and is ready for execution.
22
+ const response = await fixture.aws.cloudFormation.send(new client_cloudformation_1.ListChangeSetsCommand({ StackName: stackName }));
23
+ const changeSets = response.Summaries ?? [];
24
+ const namedChangeSet = changeSets.find(cs => cs.ChangeSetName === changeSetName);
25
+ expect(namedChangeSet).toBeDefined();
26
+ expect(namedChangeSet?.Status).toEqual('CREATE_COMPLETE');
27
+ changeSetVerified = true;
28
+ },
29
+ },
30
+ ],
31
+ modEnv: {
32
+ FORCE_COLOR: '0',
33
+ },
34
+ });
35
+ // The approval diff should contain resource information from the change set
36
+ expect(output).toContain('AWS::SNS::Topic');
37
+ expect(output).toContain('Do you wish to deploy these changes');
38
+ // Verify the beforeInput callback actually ran
39
+ expect(changeSetVerified).toBe(true);
40
+ // Verify the stack was actually deployed
41
+ const response = await fixture.aws.cloudFormation.send(new client_cloudformation_1.DescribeStacksCommand({ StackName: fixture.fullStackName('test-2') }));
42
+ expect(response.Stacks?.[0].StackStatus).toEqual('CREATE_COMPLETE');
43
+ }));
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS13aXRoLWNoYW5nZS1zZXQtYXBwcm92YWwtZGlmZi5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstZGVwbG95LXdpdGgtY2hhbmdlLXNldC1hcHByb3ZhbC1kaWZmLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBFQUE4RjtBQUM5RixzQ0FBNkQ7QUFFN0QsSUFBQSxlQUFTLEVBQ1AsaUVBQWlFLEVBQ2pFLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzlCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxPQUFPLENBQUMsZUFBZSxxQkFBcUIsQ0FBQztJQUV0RSwyREFBMkQ7SUFDM0Qsa0ZBQWtGO0lBQ2xGLGdFQUFnRTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1FBQy9DLE9BQU8sRUFBRSxDQUFDLCtCQUErQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixhQUFhLEVBQUUsQ0FBQztRQUN2RyxvQkFBb0IsRUFBRSxLQUFLO1FBQzNCLFFBQVEsRUFBRTtZQUNSO2dCQUNFLE1BQU0sRUFBRSxxQ0FBcUM7Z0JBQzdDLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRTtvQkFDdEIsOERBQThEO29CQUM5RCxvRUFBb0U7b0JBQ3BFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNwRCxJQUFJLDZDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQ3BELENBQUM7b0JBQ0YsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7b0JBQzVDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxDQUFDO29CQUNqRixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQzFELGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDM0IsQ0FBQzthQUNGO1NBQ0Y7UUFDRCxNQUFNLEVBQUU7WUFDTixXQUFXLEVBQUUsR0FBRztTQUNqQjtLQUNGLENBQUMsQ0FBQztJQUVILDRFQUE0RTtJQUM1RSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBRWhFLCtDQUErQztJQUMvQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckMseUNBQXlDO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNwRCxJQUFJLDZDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUMxRSxDQUFDO0lBQ0YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpYmVTdGFja3NDb21tYW5kLCBMaXN0Q2hhbmdlU2V0c0NvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5pbnRlZ1Rlc3QoXG4gICdkZXBsb3kgd2l0aCBjaGFuZ2Utc2V0IG1ldGhvZCB1c2VzIGNoYW5nZSBzZXQgZm9yIGFwcHJvdmFsIGRpZmYnLFxuICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBsZXQgY2hhbmdlU2V0VmVyaWZpZWQgPSBmYWxzZTtcbiAgICBjb25zdCBzdGFja05hbWUgPSBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpO1xuICAgIGNvbnN0IGNoYW5nZVNldE5hbWUgPSBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tYXBwcm92YWwtZGlmZi10ZXN0YDtcblxuICAgIC8vIERlcGxveSB3aXRoIC0tcmVxdWlyZS1hcHByb3ZhbD1hbnktY2hhbmdlIHdpdGhvdXQgLS15ZXMuXG4gICAgLy8gVGhlIENMSSB3aWxsIGNyZWF0ZSBhIGNoYW5nZSBzZXQgZm9yIHRoZSBhcHByb3ZhbCBkaWZmLCBwYXVzZSBmb3IgY29uZmlybWF0aW9uLFxuICAgIC8vIGFuZCB0aGVuIGV4ZWN1dGUgdGhlIHNhbWUgY2hhbmdlIHNldCBhZnRlciB0aGUgdXNlciBjb25maXJtcy5cbiAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgndGVzdC0yJywge1xuICAgICAgb3B0aW9uczogWyctLXJlcXVpcmUtYXBwcm92YWw9YW55LWNoYW5nZScsICctLW1ldGhvZD1jaGFuZ2Utc2V0JywgYC0tY2hhbmdlLXNldC1uYW1lPSR7Y2hhbmdlU2V0TmFtZX1gXSxcbiAgICAgIG5ldmVyUmVxdWlyZUFwcHJvdmFsOiBmYWxzZSxcbiAgICAgIGludGVyYWN0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm9tcHQ6IC9EbyB5b3Ugd2lzaCB0byBkZXBsb3kgdGhlc2UgY2hhbmdlcy8sXG4gICAgICAgICAgaW5wdXQ6ICd5JyxcbiAgICAgICAgICBiZWZvcmVJbnB1dDogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gV2hpbGUgdGhlIENMSSBpcyBwYXVzZWQgYXQgdGhlIGFwcHJvdmFsIHByb21wdCwgdmVyaWZ5IHRoYXRcbiAgICAgICAgICAgIC8vIHRoZSBuYW1lZCBjaGFuZ2Ugc2V0IGhhcyBiZWVuIGNyZWF0ZWQgYW5kIGlzIHJlYWR5IGZvciBleGVjdXRpb24uXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uLnNlbmQoXG4gICAgICAgICAgICAgIG5ldyBMaXN0Q2hhbmdlU2V0c0NvbW1hbmQoeyBTdGFja05hbWU6IHN0YWNrTmFtZSB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VTZXRzID0gcmVzcG9uc2UuU3VtbWFyaWVzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgbmFtZWRDaGFuZ2VTZXQgPSBjaGFuZ2VTZXRzLmZpbmQoY3MgPT4gY3MuQ2hhbmdlU2V0TmFtZSA9PT0gY2hhbmdlU2V0TmFtZSk7XG4gICAgICAgICAgICBleHBlY3QobmFtZWRDaGFuZ2VTZXQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgICBleHBlY3QobmFtZWRDaGFuZ2VTZXQ/LlN0YXR1cykudG9FcXVhbCgnQ1JFQVRFX0NPTVBMRVRFJyk7XG4gICAgICAgICAgICBjaGFuZ2VTZXRWZXJpZmllZCA9IHRydWU7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgRk9SQ0VfQ09MT1I6ICcwJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBUaGUgYXBwcm92YWwgZGlmZiBzaG91bGQgY29udGFpbiByZXNvdXJjZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjaGFuZ2Ugc2V0XG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdBV1M6OlNOUzo6VG9waWMnKTtcbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ0RvIHlvdSB3aXNoIHRvIGRlcGxveSB0aGVzZSBjaGFuZ2VzJyk7XG5cbiAgICAvLyBWZXJpZnkgdGhlIGJlZm9yZUlucHV0IGNhbGxiYWNrIGFjdHVhbGx5IHJhblxuICAgIGV4cGVjdChjaGFuZ2VTZXRWZXJpZmllZCkudG9CZSh0cnVlKTtcblxuICAgIC8vIFZlcmlmeSB0aGUgc3RhY2sgd2FzIGFjdHVhbGx5IGRlcGxveWVkXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbi5zZW5kKFxuICAgICAgbmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZCh7IFN0YWNrTmFtZTogZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKSB9KSxcbiAgICApO1xuICAgIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnQ1JFQVRFX0NPTVBMRVRFJyk7XG4gIH0pLFxuKTtcbiJdfQ==
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const client_iam_1 = require("@aws-sdk/client-iam");
4
+ const lib_1 = require("../../../lib");
5
+ (0, lib_1.integTest)('import-existing-resources error message includes construct paths', (0, lib_1.withSpecificFixture)('import-existing-resources-app', async (fixture) => {
6
+ const roleName = `${fixture.stackNamePrefix}-import-role`;
7
+ try {
8
+ // Step 1: Deploy with RETAIN so the role exists and can survive stack deletion
9
+ await fixture.cdkDeploy('import-existing', {
10
+ modEnv: { REMOVAL_POLICY: 'retain' },
11
+ });
12
+ // Step 2: Delete the stack — the role survives because of RETAIN
13
+ await fixture.cdkDestroy('import-existing', {
14
+ modEnv: { REMOVAL_POLICY: 'retain' },
15
+ });
16
+ // Step 3: Re-deploy with DESTROY (no retain) and --import-existing-resources
17
+ // This should fail because CloudFormation requires DeletionPolicy=Retain for import
18
+ const stdErr = await fixture.cdkDeploy('import-existing', {
19
+ modEnv: { REMOVAL_POLICY: 'destroy' },
20
+ options: ['--import-existing-resources'],
21
+ allowErrExit: true,
22
+ });
23
+ expect(stdErr).toContain('Import of existing resources failed');
24
+ expect(stdErr).toContain('MyRole');
25
+ expect(stdErr).toContain('RemovalPolicy.RETAIN');
26
+ expect(stdErr).toContain('https://docs.aws.amazon.com/cdk/v2/guide/resources.html#resources-removal');
27
+ // Step 4: Deploy with RETAIN and --import-existing-resources — this should succeed
28
+ await fixture.cdkDeploy('import-existing', {
29
+ modEnv: { REMOVAL_POLICY: 'retain' },
30
+ options: ['--import-existing-resources'],
31
+ });
32
+ }
33
+ finally {
34
+ // Clean up: delete the role if it was retained
35
+ try {
36
+ await fixture.aws.iam.send(new client_iam_1.DeleteRoleCommand({ RoleName: roleName }));
37
+ }
38
+ catch {
39
+ // Role may already be deleted
40
+ }
41
+ }
42
+ }));
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMtZXJyb3ItbWVzc2FnZS1pbmNsdWRlcy1jb25zdHJ1Y3QtcGF0aHMuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMtZXJyb3ItbWVzc2FnZS1pbmNsdWRlcy1jb25zdHJ1Y3QtcGF0aHMuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0RBQXdEO0FBQ3hELHNDQUE4RDtBQUU5RCxJQUFBLGVBQVMsRUFDUCxrRUFBa0UsRUFDbEUsSUFBQSx5QkFBbUIsRUFBQywrQkFBK0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDckUsTUFBTSxRQUFRLEdBQUcsR0FBRyxPQUFPLENBQUMsZUFBZSxjQUFjLENBQUM7SUFFMUQsSUFBSSxDQUFDO1FBQ0gsK0VBQStFO1FBQy9FLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QyxNQUFNLEVBQUUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztRQUVILGlFQUFpRTtRQUNqRSxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7WUFDMUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRTtTQUNyQyxDQUFDLENBQUM7UUFFSCw2RUFBNkU7UUFDN0Usb0ZBQW9GO1FBQ3BGLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRTtZQUN4RCxNQUFNLEVBQUUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFO1lBQ3JDLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO1lBQ3hDLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7UUFFdEcsbUZBQW1GO1FBQ25GLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QyxNQUFNLEVBQUUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO1lBQ3BDLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7WUFBUyxDQUFDO1FBQ1QsK0NBQStDO1FBQy9DLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksOEJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCw4QkFBOEI7UUFDaEMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVsZXRlUm9sZUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtaWFtJztcbmltcG9ydCB7IGludGVnVGVzdCwgd2l0aFNwZWNpZmljRml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmludGVnVGVzdChcbiAgJ2ltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMgZXJyb3IgbWVzc2FnZSBpbmNsdWRlcyBjb25zdHJ1Y3QgcGF0aHMnLFxuICB3aXRoU3BlY2lmaWNGaXh0dXJlKCdpbXBvcnQtZXhpc3RpbmctcmVzb3VyY2VzLWFwcCcsIGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgY29uc3Qgcm9sZU5hbWUgPSBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0taW1wb3J0LXJvbGVgO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFN0ZXAgMTogRGVwbG95IHdpdGggUkVUQUlOIHNvIHRoZSByb2xlIGV4aXN0cyBhbmQgY2FuIHN1cnZpdmUgc3RhY2sgZGVsZXRpb25cbiAgICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnQtZXhpc3RpbmcnLCB7XG4gICAgICAgIG1vZEVudjogeyBSRU1PVkFMX1BPTElDWTogJ3JldGFpbicgfSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTdGVwIDI6IERlbGV0ZSB0aGUgc3RhY2sg4oCUIHRoZSByb2xlIHN1cnZpdmVzIGJlY2F1c2Ugb2YgUkVUQUlOXG4gICAgICBhd2FpdCBmaXh0dXJlLmNka0Rlc3Ryb3koJ2ltcG9ydC1leGlzdGluZycsIHtcbiAgICAgICAgbW9kRW52OiB7IFJFTU9WQUxfUE9MSUNZOiAncmV0YWluJyB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFN0ZXAgMzogUmUtZGVwbG95IHdpdGggREVTVFJPWSAobm8gcmV0YWluKSBhbmQgLS1pbXBvcnQtZXhpc3RpbmctcmVzb3VyY2VzXG4gICAgICAvLyBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2UgQ2xvdWRGb3JtYXRpb24gcmVxdWlyZXMgRGVsZXRpb25Qb2xpY3k9UmV0YWluIGZvciBpbXBvcnRcbiAgICAgIGNvbnN0IHN0ZEVyciA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnQtZXhpc3RpbmcnLCB7XG4gICAgICAgIG1vZEVudjogeyBSRU1PVkFMX1BPTElDWTogJ2Rlc3Ryb3knIH0sXG4gICAgICAgIG9wdGlvbnM6IFsnLS1pbXBvcnQtZXhpc3RpbmctcmVzb3VyY2VzJ10sXG4gICAgICAgIGFsbG93RXJyRXhpdDogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qoc3RkRXJyKS50b0NvbnRhaW4oJ0ltcG9ydCBvZiBleGlzdGluZyByZXNvdXJjZXMgZmFpbGVkJyk7XG4gICAgICBleHBlY3Qoc3RkRXJyKS50b0NvbnRhaW4oJ015Um9sZScpO1xuICAgICAgZXhwZWN0KHN0ZEVycikudG9Db250YWluKCdSZW1vdmFsUG9saWN5LlJFVEFJTicpO1xuICAgICAgZXhwZWN0KHN0ZEVycikudG9Db250YWluKCdodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL3YyL2d1aWRlL3Jlc291cmNlcy5odG1sI3Jlc291cmNlcy1yZW1vdmFsJyk7XG5cbiAgICAgIC8vIFN0ZXAgNDogRGVwbG95IHdpdGggUkVUQUlOIGFuZCAtLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMg4oCUIHRoaXMgc2hvdWxkIHN1Y2NlZWRcbiAgICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnQtZXhpc3RpbmcnLCB7XG4gICAgICAgIG1vZEVudjogeyBSRU1PVkFMX1BPTElDWTogJ3JldGFpbicgfSxcbiAgICAgICAgb3B0aW9uczogWyctLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMnXSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDbGVhbiB1cDogZGVsZXRlIHRoZSByb2xlIGlmIGl0IHdhcyByZXRhaW5lZFxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZml4dHVyZS5hd3MuaWFtLnNlbmQobmV3IERlbGV0ZVJvbGVDb21tYW5kKHsgUm9sZU5hbWU6IHJvbGVOYW1lIH0pKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBSb2xlIG1heSBhbHJlYWR5IGJlIGRlbGV0ZWRcbiAgICAgIH1cbiAgICB9XG4gIH0pLFxuKTtcbiJdfQ==
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
4
+ const lib_1 = require("../../../lib");
5
+ jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
6
+ (0, lib_1.integTest)('hotswap deployment supports CloudControl-based resources with attribute resolution', (0, lib_1.withDefaultFixture)(async (fixture) => {
7
+ // GIVEN
8
+ const stackName = 'cc-hotswap';
9
+ await fixture.cdkDeploy(stackName, {
10
+ captureStderr: false,
11
+ modEnv: {
12
+ DYNAMIC_CC_PROPERTY_VALUE: 'original value',
13
+ },
14
+ });
15
+ // WHEN
16
+ const deployOutput = await fixture.cdkDeploy(stackName, {
17
+ options: ['--hotswap'],
18
+ captureStderr: true,
19
+ onlyStderr: true,
20
+ modEnv: {
21
+ DYNAMIC_CC_PROPERTY_VALUE: 'new value',
22
+ },
23
+ });
24
+ const response = await fixture.aws.cloudFormation.send(new client_cloudformation_1.DescribeStacksCommand({
25
+ StackName: fixture.fullStackName(stackName),
26
+ }));
27
+ const queueUrl = response.Stacks?.[0].Outputs?.find((output) => output.OutputKey === 'QueueUrl')?.OutputValue;
28
+ const agentName = response.Stacks?.[0].Outputs?.find((output) => output.OutputKey === 'AgentName')?.OutputValue;
29
+ const ruleName = response.Stacks?.[0].Outputs?.find((output) => output.OutputKey === 'RuleName')?.OutputValue;
30
+ // THEN
31
+ // The deployment should not trigger a full deployment, thus the stack's status must remain
32
+ // "CREATE_COMPLETE"
33
+ expect(response.Stacks?.[0].StackStatus).toEqual('CREATE_COMPLETE');
34
+ // Verify hotswap was used
35
+ expect(deployOutput).toMatch(/hotswapped!/);
36
+ // Verify all three CCAPI-based resources were hotswapped
37
+ expect(queueUrl).toBeDefined();
38
+ expect(agentName).toBeDefined();
39
+ expect(ruleName).toBeDefined();
40
+ }));
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWhvdHN3YXAtZGVwbG95bWVudC1zdXBwb3J0cy1jbG91ZGNvbnRyb2wtYmFzZWQtcmVzb3VyY2VzLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1ob3Rzd2FwLWRlcGxveW1lbnQtc3VwcG9ydHMtY2xvdWRjb250cm9sLWJhc2VkLXJlc291cmNlcy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwRUFBdUU7QUFDdkUsc0NBQTZEO0FBRTdELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLHlFQUF5RTtBQUUzRyxJQUFBLGVBQVMsRUFDUCxvRkFBb0YsRUFDcEYsSUFBQSx3QkFBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkMsUUFBUTtJQUNSLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztJQUMvQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1FBQ2pDLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLE1BQU0sRUFBRTtZQUNOLHlCQUF5QixFQUFFLGdCQUFnQjtTQUM1QztLQUNGLENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxNQUFNLFlBQVksR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1FBQ3RELE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUN0QixhQUFhLEVBQUUsSUFBSTtRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixNQUFNLEVBQUU7WUFDTix5QkFBeUIsRUFBRSxXQUFXO1NBQ3ZDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3BELElBQUksNkNBQXFCLENBQUM7UUFDeEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO0tBQzVDLENBQUMsQ0FDSCxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDLEVBQUUsV0FBVyxDQUFDO0lBQzlHLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQztJQUNoSCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUMsRUFBRSxXQUFXLENBQUM7SUFFOUcsT0FBTztJQUVQLDJGQUEyRjtJQUMzRixvQkFBb0I7SUFDcEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRSwwQkFBMEI7SUFDMUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1Qyx5REFBeUQ7SUFDekQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaWJlU3RhY2tzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmplc3Quc2V0VGltZW91dCgyICogNjAgKiA2MF8wMDApOyAvLyBJbmNsdWRlcyB0aGUgdGltZSB0byBhY3F1aXJlIGxvY2tzLCB3b3JzdC1jYXNlIHNpbmdsZS10aHJlYWRlZCBydW50aW1lXG5cbmludGVnVGVzdChcbiAgJ2hvdHN3YXAgZGVwbG95bWVudCBzdXBwb3J0cyBDbG91ZENvbnRyb2wtYmFzZWQgcmVzb3VyY2VzIHdpdGggYXR0cmlidXRlIHJlc29sdXRpb24nLFxuICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrTmFtZSA9ICdjYy1ob3Rzd2FwJztcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveShzdGFja05hbWUsIHtcbiAgICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICAgICAgbW9kRW52OiB7XG4gICAgICAgIERZTkFNSUNfQ0NfUFJPUEVSVFlfVkFMVUU6ICdvcmlnaW5hbCB2YWx1ZScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGRlcGxveU91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KHN0YWNrTmFtZSwge1xuICAgICAgb3B0aW9uczogWyctLWhvdHN3YXAnXSxcbiAgICAgIGNhcHR1cmVTdGRlcnI6IHRydWUsXG4gICAgICBvbmx5U3RkZXJyOiB0cnVlLFxuICAgICAgbW9kRW52OiB7XG4gICAgICAgIERZTkFNSUNfQ0NfUFJPUEVSVFlfVkFMVUU6ICduZXcgdmFsdWUnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgIG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoe1xuICAgICAgICBTdGFja05hbWU6IGZpeHR1cmUuZnVsbFN0YWNrTmFtZShzdGFja05hbWUpLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IHF1ZXVlVXJsID0gcmVzcG9uc2UuU3RhY2tzPy5bMF0uT3V0cHV0cz8uZmluZCgob3V0cHV0KSA9PiBvdXRwdXQuT3V0cHV0S2V5ID09PSAnUXVldWVVcmwnKT8uT3V0cHV0VmFsdWU7XG4gICAgY29uc3QgYWdlbnROYW1lID0gcmVzcG9uc2UuU3RhY2tzPy5bMF0uT3V0cHV0cz8uZmluZCgob3V0cHV0KSA9PiBvdXRwdXQuT3V0cHV0S2V5ID09PSAnQWdlbnROYW1lJyk/Lk91dHB1dFZhbHVlO1xuICAgIGNvbnN0IHJ1bGVOYW1lID0gcmVzcG9uc2UuU3RhY2tzPy5bMF0uT3V0cHV0cz8uZmluZCgob3V0cHV0KSA9PiBvdXRwdXQuT3V0cHV0S2V5ID09PSAnUnVsZU5hbWUnKT8uT3V0cHV0VmFsdWU7XG5cbiAgICAvLyBUSEVOXG5cbiAgICAvLyBUaGUgZGVwbG95bWVudCBzaG91bGQgbm90IHRyaWdnZXIgYSBmdWxsIGRlcGxveW1lbnQsIHRodXMgdGhlIHN0YWNrJ3Mgc3RhdHVzIG11c3QgcmVtYWluXG4gICAgLy8gXCJDUkVBVEVfQ09NUExFVEVcIlxuICAgIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnQ1JFQVRFX0NPTVBMRVRFJyk7XG4gICAgLy8gVmVyaWZ5IGhvdHN3YXAgd2FzIHVzZWRcbiAgICBleHBlY3QoZGVwbG95T3V0cHV0KS50b01hdGNoKC9ob3Rzd2FwcGVkIS8pO1xuICAgIC8vIFZlcmlmeSBhbGwgdGhyZWUgQ0NBUEktYmFzZWQgcmVzb3VyY2VzIHdlcmUgaG90c3dhcHBlZFxuICAgIGV4cGVjdChxdWV1ZVVybCkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoYWdlbnROYW1lKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChydWxlTmFtZSkudG9CZURlZmluZWQoKTtcbiAgfSksXG4pO1xuIl19
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const lib_1 = require("../../../lib");
4
+ const regions_1 = require("../../../lib/regions");
4
5
  (0, lib_1.integTest)('cdk refactor - dry run - detects refactoring changes and prints the result', (0, lib_1.withSpecificFixture)('refactoring', async (fixture) => {
5
6
  // First, deploy the stacks
6
7
  await fixture.cdkDeploy('bucket-stack');
@@ -21,8 +22,8 @@ const lib_1 = require("../../../lib");
21
22
  });
22
23
  expect(stdErr).toContain('The following resources were moved or renamed:');
23
24
  expect(removeColor(stdErr)).toMatch(/│ AWS::SQS::Queue │ .*\/OldName\/Resource │ .*\/NewName\/Resource │/);
24
- }));
25
+ }, { aws: { regions: regions_1.STACK_REFACTORING_REGIONS } }));
25
26
  function removeColor(str) {
26
27
  return str.replace(/\x1B[[(?);]{0,2}(;?\d)*./g, '');
27
28
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXJlZmFjdG9yLWRyeS1ydW4tZGV0ZWN0LWNoYW5nZXMuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLXJlZmFjdG9yLWRyeS1ydW4tZGV0ZWN0LWNoYW5nZXMuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQThEO0FBRTlELElBQUEsZUFBUyxFQUNQLDRFQUE0RSxFQUM1RSxJQUFBLHlCQUFtQixFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkQsMkJBQTJCO0lBQzNCLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO1FBQy9CLE1BQU0sRUFBRTtZQUNOLHNCQUFzQixFQUFFLFNBQVM7U0FDbEM7S0FDRixDQUFDLENBQUM7SUFFSCxzREFBc0Q7SUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQztRQUM3QyxZQUFZLEVBQUUsSUFBSTtRQUNsQixxREFBcUQ7UUFDckQsOENBQThDO1FBQzlDLE1BQU0sRUFBRTtZQUNOLHNCQUFzQixFQUFFLFNBQVM7U0FDbEM7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDM0UsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0FBQzdHLENBQUMsQ0FBQyxDQUNILENBQUM7QUFFRixTQUFTLFdBQVcsQ0FBQyxHQUFXO0lBQzlCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoU3BlY2lmaWNGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuaW50ZWdUZXN0KFxuICAnY2RrIHJlZmFjdG9yIC0gZHJ5IHJ1biAtIGRldGVjdHMgcmVmYWN0b3JpbmcgY2hhbmdlcyBhbmQgcHJpbnRzIHRoZSByZXN1bHQnLFxuICB3aXRoU3BlY2lmaWNGaXh0dXJlKCdyZWZhY3RvcmluZycsIGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gRmlyc3QsIGRlcGxveSB0aGUgc3RhY2tzXG4gICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2J1Y2tldC1zdGFjaycpO1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdiYXNpYycsIHtcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBCQVNJQ19RVUVVRV9MT0dJQ0FMX0lEOiAnT2xkTmFtZScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gVGhlbiBzZWUgaWYgdGhlIHJlZmFjdG9yaW5nIHRvb2wgZGV0ZWN0cyB0aGUgY2hhbmdlXG4gICAgY29uc3Qgc3RkRXJyID0gYXdhaXQgZml4dHVyZS5jZGtSZWZhY3Rvcih7XG4gICAgICBvcHRpb25zOiBbJy0tZHJ5LXJ1bicsICctLXVuc3RhYmxlPXJlZmFjdG9yJ10sXG4gICAgICBhbGxvd0VyckV4aXQ6IHRydWUsXG4gICAgICAvLyBNYWtpbmcgc3VyZSB0aGUgc3ludGhlc2l6ZWQgc3RhY2sgaGFzIGEgcXVldWUgd2l0aFxuICAgICAgLy8gdGhlIG5ldyBuYW1lIHNvIHRoYXQgYSByZWZhY3RvciBpcyBkZXRlY3RlZFxuICAgICAgbW9kRW52OiB7XG4gICAgICAgIEJBU0lDX1FVRVVFX0xPR0lDQUxfSUQ6ICdOZXdOYW1lJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBleHBlY3Qoc3RkRXJyKS50b0NvbnRhaW4oJ1RoZSBmb2xsb3dpbmcgcmVzb3VyY2VzIHdlcmUgbW92ZWQgb3IgcmVuYW1lZDonKTtcbiAgICBleHBlY3QocmVtb3ZlQ29sb3Ioc3RkRXJyKSkudG9NYXRjaCgv4pSCIEFXUzo6U1FTOjpRdWV1ZSDilIIgLipcXC9PbGROYW1lXFwvUmVzb3VyY2Ug4pSCIC4qXFwvTmV3TmFtZVxcL1Jlc291cmNlIOKUgi8pO1xuICB9KSxcbik7XG5cbmZ1bmN0aW9uIHJlbW92ZUNvbG9yKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXHgxQltbKD8pO117MCwyfSg7P1xcZCkqLi9nLCAnJyk7XG59XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXJlZmFjdG9yLWRyeS1ydW4tZGV0ZWN0LWNoYW5nZXMuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLXJlZmFjdG9yLWRyeS1ydW4tZGV0ZWN0LWNoYW5nZXMuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQThEO0FBQzlELGtEQUFpRTtBQUVqRSxJQUFBLGVBQVMsRUFDUCw0RUFBNEUsRUFDNUUsSUFBQSx5QkFBbUIsRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25ELDJCQUEyQjtJQUMzQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtRQUMvQixNQUFNLEVBQUU7WUFDTixzQkFBc0IsRUFBRSxTQUFTO1NBQ2xDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsc0RBQXNEO0lBQ3RELE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLENBQUM7UUFDN0MsWUFBWSxFQUFFLElBQUk7UUFDbEIscURBQXFEO1FBQ3JELDhDQUE4QztRQUM5QyxNQUFNLEVBQUU7WUFDTixzQkFBc0IsRUFBRSxTQUFTO1NBQ2xDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMscUVBQXFFLENBQUMsQ0FBQztBQUM3RyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsbUNBQXlCLEVBQUUsRUFBRSxDQUFDLENBQ3BELENBQUM7QUFFRixTQUFTLFdBQVcsQ0FBQyxHQUFXO0lBQzlCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoU3BlY2lmaWNGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcbmltcG9ydCB7IFNUQUNLX1JFRkFDVE9SSU5HX1JFR0lPTlMgfSBmcm9tICcuLi8uLi8uLi9saWIvcmVnaW9ucyc7XG5cbmludGVnVGVzdChcbiAgJ2NkayByZWZhY3RvciAtIGRyeSBydW4gLSBkZXRlY3RzIHJlZmFjdG9yaW5nIGNoYW5nZXMgYW5kIHByaW50cyB0aGUgcmVzdWx0JyxcbiAgd2l0aFNwZWNpZmljRml4dHVyZSgncmVmYWN0b3JpbmcnLCBhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIC8vIEZpcnN0LCBkZXBsb3kgdGhlIHN0YWNrc1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdidWNrZXQtc3RhY2snKTtcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnYmFzaWMnLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQkFTSUNfUVVFVUVfTE9HSUNBTF9JRDogJ09sZE5hbWUnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFRoZW4gc2VlIGlmIHRoZSByZWZhY3RvcmluZyB0b29sIGRldGVjdHMgdGhlIGNoYW5nZVxuICAgIGNvbnN0IHN0ZEVyciA9IGF3YWl0IGZpeHR1cmUuY2RrUmVmYWN0b3Ioe1xuICAgICAgb3B0aW9uczogWyctLWRyeS1ydW4nLCAnLS11bnN0YWJsZT1yZWZhY3RvciddLFxuICAgICAgYWxsb3dFcnJFeGl0OiB0cnVlLFxuICAgICAgLy8gTWFraW5nIHN1cmUgdGhlIHN5bnRoZXNpemVkIHN0YWNrIGhhcyBhIHF1ZXVlIHdpdGhcbiAgICAgIC8vIHRoZSBuZXcgbmFtZSBzbyB0aGF0IGEgcmVmYWN0b3IgaXMgZGV0ZWN0ZWRcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBCQVNJQ19RVUVVRV9MT0dJQ0FMX0lEOiAnTmV3TmFtZScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0ZEVycikudG9Db250YWluKCdUaGUgZm9sbG93aW5nIHJlc291cmNlcyB3ZXJlIG1vdmVkIG9yIHJlbmFtZWQ6Jyk7XG4gICAgZXhwZWN0KHJlbW92ZUNvbG9yKHN0ZEVycikpLnRvTWF0Y2goL+KUgiBBV1M6OlNRUzo6UXVldWUg4pSCIC4qXFwvT2xkTmFtZVxcL1Jlc291cmNlIOKUgiAuKlxcL05ld05hbWVcXC9SZXNvdXJjZSDilIIvKTtcbiAgfSwgeyBhd3M6IHsgcmVnaW9uczogU1RBQ0tfUkVGQUNUT1JJTkdfUkVHSU9OUyB9IH0pLFxuKTtcblxuZnVuY3Rpb24gcmVtb3ZlQ29sb3Ioc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xceDFCW1soPyk7XXswLDJ9KDs/XFxkKSouL2csICcnKTtcbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const lib_1 = require("../../../lib");
4
+ const regions_1 = require("../../../lib/regions");
4
5
  (0, lib_1.integTest)('cdk refactor - dry run - filters stacks by pattern', (0, lib_1.withSpecificFixture)('refactoring-multiple-envs', async (fixture) => {
5
6
  // First, deploy the stacks
6
7
  await fixture.cdkDeploy('gamma-stack', {
@@ -26,5 +27,5 @@ const lib_1 = require("../../../lib");
26
27
  });
27
28
  const numberOfEnvironments = (stdErr.match(/Resource Type/g) || []).length;
28
29
  expect(numberOfEnvironments).toEqual(1);
29
- }));
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXJlZmFjdG9yLWRyeS1ydW4tZmlsdGVyLWJ5LXBhdHRlcm5zLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1yZWZhY3Rvci1kcnktcnVuLWZpbHRlci1ieS1wYXR0ZXJucy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBOEQ7QUFFOUQsSUFBQSxlQUFTLEVBQ1Asb0RBQW9ELEVBQ3BELElBQUEseUJBQW1CLEVBQUMsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ2pFLDJCQUEyQjtJQUMzQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFO1FBQ3JDLE1BQU0sRUFBRTtZQUNOLFNBQVMsRUFBRSxTQUFTO1NBQ3JCO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRTtRQUNwQyxNQUFNLEVBQUU7WUFDTixTQUFTLEVBQUUsU0FBUztTQUNyQjtLQUNGLENBQUMsQ0FBQztJQUVILHNEQUFzRDtJQUN0RCxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDdkMsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQztRQUM5RCxZQUFZLEVBQUUsSUFBSTtRQUNsQixhQUFhLEVBQUUsSUFBSTtRQUNuQixxREFBcUQ7UUFDckQsOENBQThDO1FBQzlDLE1BQU0sRUFBRTtZQUNOLFNBQVMsRUFBRSxTQUFTO1NBQ3JCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0UsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhTcGVjaWZpY0ZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5pbnRlZ1Rlc3QoXG4gICdjZGsgcmVmYWN0b3IgLSBkcnkgcnVuIC0gZmlsdGVycyBzdGFja3MgYnkgcGF0dGVybicsXG4gIHdpdGhTcGVjaWZpY0ZpeHR1cmUoJ3JlZmFjdG9yaW5nLW11bHRpcGxlLWVudnMnLCBhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIC8vIEZpcnN0LCBkZXBsb3kgdGhlIHN0YWNrc1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdnYW1tYS1zdGFjaycsIHtcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBCVUNLRVRfSUQ6ICdPbGROYW1lJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3Byb2Qtc3RhY2snLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQlVDS0VUX0lEOiAnT2xkTmFtZScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gVGhlbiBzZWUgaWYgdGhlIHJlZmFjdG9yaW5nIHRvb2wgZGV0ZWN0cyB0aGUgY2hhbmdlXG4gICAgY29uc3Qgc3RkRXJyID0gYXdhaXQgZml4dHVyZS5jZGtSZWZhY3Rvcih7XG4gICAgICBvcHRpb25zOiBbJyotZ2FtbWEtc3RhY2snLCAnLS1kcnktcnVuJywgJy0tdW5zdGFibGU9cmVmYWN0b3InXSxcbiAgICAgIGFsbG93RXJyRXhpdDogdHJ1ZSxcbiAgICAgIGNhcHR1cmVTdGRlcnI6IHRydWUsXG4gICAgICAvLyBNYWtpbmcgc3VyZSB0aGUgc3ludGhlc2l6ZWQgc3RhY2sgaGFzIGEgcXVldWUgd2l0aFxuICAgICAgLy8gdGhlIG5ldyBuYW1lIHNvIHRoYXQgYSByZWZhY3RvciBpcyBkZXRlY3RlZFxuICAgICAgbW9kRW52OiB7XG4gICAgICAgIEJVQ0tFVF9JRDogJ05ld05hbWUnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG51bWJlck9mRW52aXJvbm1lbnRzID0gKHN0ZEVyci5tYXRjaCgvUmVzb3VyY2UgVHlwZS9nKSB8fCBbXSkubGVuZ3RoO1xuICAgIGV4cGVjdChudW1iZXJPZkVudmlyb25tZW50cykudG9FcXVhbCgxKTtcbiAgfSksXG4pO1xuIl19
30
+ }, { aws: { regions: regions_1.STACK_REFACTORING_REGIONS } }));
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXJlZmFjdG9yLWRyeS1ydW4tZmlsdGVyLWJ5LXBhdHRlcm5zLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1yZWZhY3Rvci1kcnktcnVuLWZpbHRlci1ieS1wYXR0ZXJucy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBOEQ7QUFDOUQsa0RBQWlFO0FBRWpFLElBQUEsZUFBUyxFQUNQLG9EQUFvRCxFQUNwRCxJQUFBLHlCQUFtQixFQUFDLDJCQUEyQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNqRSwyQkFBMkI7SUFDM0IsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtRQUNyQyxNQUFNLEVBQUU7WUFDTixTQUFTLEVBQUUsU0FBUztTQUNyQjtLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUU7UUFDcEMsTUFBTSxFQUFFO1lBQ04sU0FBUyxFQUFFLFNBQVM7U0FDckI7S0FDRixDQUFDLENBQUM7SUFFSCxzREFBc0Q7SUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUscUJBQXFCLENBQUM7UUFDOUQsWUFBWSxFQUFFLElBQUk7UUFDbEIsYUFBYSxFQUFFLElBQUk7UUFDbkIscURBQXFEO1FBQ3JELDhDQUE4QztRQUM5QyxNQUFNLEVBQUU7WUFDTixTQUFTLEVBQUUsU0FBUztTQUNyQjtLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzNFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsbUNBQXlCLEVBQUUsRUFBRSxDQUFDLENBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhTcGVjaWZpY0ZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuaW1wb3J0IHsgU1RBQ0tfUkVGQUNUT1JJTkdfUkVHSU9OUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9yZWdpb25zJztcblxuaW50ZWdUZXN0KFxuICAnY2RrIHJlZmFjdG9yIC0gZHJ5IHJ1biAtIGZpbHRlcnMgc3RhY2tzIGJ5IHBhdHRlcm4nLFxuICB3aXRoU3BlY2lmaWNGaXh0dXJlKCdyZWZhY3RvcmluZy1tdWx0aXBsZS1lbnZzJywgYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICAvLyBGaXJzdCwgZGVwbG95IHRoZSBzdGFja3NcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnZ2FtbWEtc3RhY2snLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQlVDS0VUX0lEOiAnT2xkTmFtZScsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdwcm9kLXN0YWNrJywge1xuICAgICAgbW9kRW52OiB7XG4gICAgICAgIEJVQ0tFVF9JRDogJ09sZE5hbWUnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFRoZW4gc2VlIGlmIHRoZSByZWZhY3RvcmluZyB0b29sIGRldGVjdHMgdGhlIGNoYW5nZVxuICAgIGNvbnN0IHN0ZEVyciA9IGF3YWl0IGZpeHR1cmUuY2RrUmVmYWN0b3Ioe1xuICAgICAgb3B0aW9uczogWycqLWdhbW1hLXN0YWNrJywgJy0tZHJ5LXJ1bicsICctLXVuc3RhYmxlPXJlZmFjdG9yJ10sXG4gICAgICBhbGxvd0VyckV4aXQ6IHRydWUsXG4gICAgICBjYXB0dXJlU3RkZXJyOiB0cnVlLFxuICAgICAgLy8gTWFraW5nIHN1cmUgdGhlIHN5bnRoZXNpemVkIHN0YWNrIGhhcyBhIHF1ZXVlIHdpdGhcbiAgICAgIC8vIHRoZSBuZXcgbmFtZSBzbyB0aGF0IGEgcmVmYWN0b3IgaXMgZGV0ZWN0ZWRcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBCVUNLRVRfSUQ6ICdOZXdOYW1lJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBudW1iZXJPZkVudmlyb25tZW50cyA9IChzdGRFcnIubWF0Y2goL1Jlc291cmNlIFR5cGUvZykgfHwgW10pLmxlbmd0aDtcbiAgICBleHBlY3QobnVtYmVyT2ZFbnZpcm9ubWVudHMpLnRvRXF1YWwoMSk7XG4gIH0sIHsgYXdzOiB7IHJlZ2lvbnM6IFNUQUNLX1JFRkFDVE9SSU5HX1JFR0lPTlMgfSB9KSxcbik7XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const lib_1 = require("../../../lib");
4
+ const regions_1 = require("../../../lib/regions");
4
5
  (0, lib_1.integTest)('cdk refactor - dry-run - no refactoring changes detected', (0, lib_1.withSpecificFixture)('refactoring', async (fixture) => {
5
6
  const modEnv = {
6
7
  BASIC_QUEUE_LOGICAL_ID: 'OldName',
@@ -15,5 +16,5 @@ const lib_1 = require("../../../lib");
15
16
  modEnv,
16
17
  });
17
18
  expect(stdErr).toContain('Nothing to refactor');
18
- }));
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXJlZmFjdG9yLWRyeS1ydW4tbm8tY2hhbmdlcy5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstcmVmYWN0b3ItZHJ5LXJ1bi1uby1jaGFuZ2VzLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQUE4RDtBQUU5RCxJQUFBLGVBQVMsRUFDUCwwREFBMEQsRUFDMUQsSUFBQSx5QkFBbUIsRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25ELE1BQU0sTUFBTSxHQUFHO1FBQ2Isc0JBQXNCLEVBQUUsU0FBUztLQUNsQyxDQUFDO0lBRUYsMkJBQTJCO0lBQzNCLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU3QyxzREFBc0Q7SUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQztRQUM3QyxZQUFZLEVBQUUsSUFBSTtRQUNsQixNQUFNO0tBQ1AsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhTcGVjaWZpY0ZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5pbnRlZ1Rlc3QoXG4gICdjZGsgcmVmYWN0b3IgLSBkcnktcnVuIC0gbm8gcmVmYWN0b3JpbmcgY2hhbmdlcyBkZXRlY3RlZCcsXG4gIHdpdGhTcGVjaWZpY0ZpeHR1cmUoJ3JlZmFjdG9yaW5nJywgYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBjb25zdCBtb2RFbnYgPSB7XG4gICAgICBCQVNJQ19RVUVVRV9MT0dJQ0FMX0lEOiAnT2xkTmFtZScsXG4gICAgfTtcblxuICAgIC8vIEZpcnN0LCBkZXBsb3kgdGhlIHN0YWNrc1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdidWNrZXQtc3RhY2snKTtcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnYmFzaWMnLCB7IG1vZEVudiB9KTtcblxuICAgIC8vIFRoZW4gc2VlIGlmIHRoZSByZWZhY3RvcmluZyB0b29sIGRldGVjdHMgdGhlIGNoYW5nZVxuICAgIGNvbnN0IHN0ZEVyciA9IGF3YWl0IGZpeHR1cmUuY2RrUmVmYWN0b3Ioe1xuICAgICAgb3B0aW9uczogWyctLWRyeS1ydW4nLCAnLS11bnN0YWJsZT1yZWZhY3RvciddLFxuICAgICAgYWxsb3dFcnJFeGl0OiB0cnVlLFxuICAgICAgbW9kRW52LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0ZEVycikudG9Db250YWluKCdOb3RoaW5nIHRvIHJlZmFjdG9yJyk7XG4gIH0pLFxuKTtcbiJdfQ==
19
+ }, { aws: { regions: regions_1.STACK_REFACTORING_REGIONS } }));
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXJlZmFjdG9yLWRyeS1ydW4tbm8tY2hhbmdlcy5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstcmVmYWN0b3ItZHJ5LXJ1bi1uby1jaGFuZ2VzLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQUE4RDtBQUM5RCxrREFBaUU7QUFFakUsSUFBQSxlQUFTLEVBQ1AsMERBQTBELEVBQzFELElBQUEseUJBQW1CLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuRCxNQUFNLE1BQU0sR0FBRztRQUNiLHNCQUFzQixFQUFFLFNBQVM7S0FDbEMsQ0FBQztJQUVGLDJCQUEyQjtJQUMzQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFN0Msc0RBQXNEO0lBQ3RELE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLENBQUM7UUFDN0MsWUFBWSxFQUFFLElBQUk7UUFDbEIsTUFBTTtLQUNQLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNsRCxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsbUNBQXlCLEVBQUUsRUFBRSxDQUFDLENBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhTcGVjaWZpY0ZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuaW1wb3J0IHsgU1RBQ0tfUkVGQUNUT1JJTkdfUkVHSU9OUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9yZWdpb25zJztcblxuaW50ZWdUZXN0KFxuICAnY2RrIHJlZmFjdG9yIC0gZHJ5LXJ1biAtIG5vIHJlZmFjdG9yaW5nIGNoYW5nZXMgZGV0ZWN0ZWQnLFxuICB3aXRoU3BlY2lmaWNGaXh0dXJlKCdyZWZhY3RvcmluZycsIGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgY29uc3QgbW9kRW52ID0ge1xuICAgICAgQkFTSUNfUVVFVUVfTE9HSUNBTF9JRDogJ09sZE5hbWUnLFxuICAgIH07XG5cbiAgICAvLyBGaXJzdCwgZGVwbG95IHRoZSBzdGFja3NcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnYnVja2V0LXN0YWNrJyk7XG4gICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2Jhc2ljJywgeyBtb2RFbnYgfSk7XG5cbiAgICAvLyBUaGVuIHNlZSBpZiB0aGUgcmVmYWN0b3JpbmcgdG9vbCBkZXRlY3RzIHRoZSBjaGFuZ2VcbiAgICBjb25zdCBzdGRFcnIgPSBhd2FpdCBmaXh0dXJlLmNka1JlZmFjdG9yKHtcbiAgICAgIG9wdGlvbnM6IFsnLS1kcnktcnVuJywgJy0tdW5zdGFibGU9cmVmYWN0b3InXSxcbiAgICAgIGFsbG93RXJyRXhpdDogdHJ1ZSxcbiAgICAgIG1vZEVudixcbiAgICB9KTtcblxuICAgIGV4cGVjdChzdGRFcnIpLnRvQ29udGFpbignTm90aGluZyB0byByZWZhY3RvcicpO1xuICB9LCB7IGF3czogeyByZWdpb25zOiBTVEFDS19SRUZBQ1RPUklOR19SRUdJT05TIH0gfSksXG4pO1xuIl19