aws-cdk 2.1005.0 → 2.1007.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 (178) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_LICENSES +86 -86
  3. package/build-info.json +2 -2
  4. package/db.json.gz +0 -0
  5. package/lib/api/aws-auth/awscli-compatible.js +9 -10
  6. package/lib/api/aws-auth/credential-plugins.js +6 -7
  7. package/lib/api/aws-auth/sdk-logger.js +3 -4
  8. package/lib/api/aws-auth/sdk-provider.js +11 -13
  9. package/lib/api/aws-auth/sdk.js +8 -9
  10. package/lib/api/aws-auth/tracing.js +3 -4
  11. package/lib/api/aws-auth/user-agent.js +4 -5
  12. package/lib/api/bootstrap/bootstrap-environment.d.ts +1 -1
  13. package/lib/api/bootstrap/bootstrap-environment.js +42 -46
  14. package/lib/api/bootstrap/bootstrap-props.d.ts +1 -1
  15. package/lib/api/bootstrap/bootstrap-props.js +1 -1
  16. package/lib/api/bootstrap/deploy-bootstrap.d.ts +1 -1
  17. package/lib/api/bootstrap/deploy-bootstrap.js +11 -14
  18. package/lib/api/{evaluate-cloudformation-template.d.ts → cloudformation/evaluate-cloudformation-template.d.ts} +4 -8
  19. package/lib/api/{evaluate-cloudformation-template.js → cloudformation/evaluate-cloudformation-template.js} +16 -25
  20. package/lib/api/cloudformation/index.d.ts +4 -0
  21. package/lib/api/cloudformation/index.js +21 -0
  22. package/lib/api/{deployments → cloudformation}/nested-stack-helpers.d.ts +3 -9
  23. package/lib/api/cloudformation/nested-stack-helpers.js +86 -0
  24. package/lib/api/cloudformation/stack-helpers.d.ts +88 -0
  25. package/lib/api/cloudformation/stack-helpers.js +158 -0
  26. package/lib/api/{util → cloudformation}/template-body-parameter.d.ts +3 -2
  27. package/lib/api/cloudformation/template-body-parameter.js +104 -0
  28. package/lib/api/context.js +3 -3
  29. package/lib/api/cxapp/cloud-assembly.d.ts +6 -4
  30. package/lib/api/cxapp/cloud-assembly.js +25 -26
  31. package/lib/api/cxapp/cloud-executable.d.ts +5 -0
  32. package/lib/api/cxapp/cloud-executable.js +9 -10
  33. package/lib/api/cxapp/environments.js +4 -4
  34. package/lib/api/cxapp/exec.d.ts +5 -4
  35. package/lib/api/cxapp/exec.js +76 -72
  36. package/lib/api/deployments/asset-publishing.d.ts +0 -2
  37. package/lib/api/deployments/asset-publishing.js +24 -31
  38. package/lib/api/deployments/assets.d.ts +1 -1
  39. package/lib/api/deployments/assets.js +12 -13
  40. package/lib/api/deployments/{cloudformation.d.ts → cfn-api.d.ts} +5 -102
  41. package/lib/api/deployments/cfn-api.js +438 -0
  42. package/lib/api/deployments/checks.d.ts +1 -1
  43. package/lib/api/deployments/checks.js +12 -13
  44. package/lib/api/deployments/deploy-stack.d.ts +2 -3
  45. package/lib/api/deployments/deploy-stack.js +34 -45
  46. package/lib/api/deployments/deployment-result.js +3 -3
  47. package/lib/api/deployments/deployments.d.ts +3 -3
  48. package/lib/api/deployments/deployments.js +35 -42
  49. package/lib/api/deployments/hotswap-deployments.d.ts +2 -2
  50. package/lib/api/deployments/hotswap-deployments.js +122 -69
  51. package/lib/api/deployments/index.d.ts +1 -2
  52. package/lib/api/deployments/index.js +2 -3
  53. package/lib/api/environment/environment-access.d.ts +2 -2
  54. package/lib/api/environment/environment-access.js +18 -20
  55. package/lib/api/environment/environment-resources.d.ts +1 -1
  56. package/lib/api/environment/environment-resources.js +17 -19
  57. package/lib/api/environment/index.d.ts +1 -0
  58. package/lib/api/environment/index.js +2 -1
  59. package/lib/api/environment/placeholders.js +23 -0
  60. package/lib/api/garbage-collection/garbage-collector.d.ts +1 -1
  61. package/lib/api/garbage-collection/garbage-collector.js +56 -66
  62. package/lib/api/garbage-collection/progress-printer.d.ts +1 -1
  63. package/lib/api/garbage-collection/progress-printer.js +7 -7
  64. package/lib/api/garbage-collection/stack-refresh.d.ts +1 -1
  65. package/lib/api/garbage-collection/stack-refresh.js +12 -15
  66. package/lib/api/hotswap/appsync-mapping-templates.d.ts +3 -3
  67. package/lib/api/hotswap/appsync-mapping-templates.js +25 -22
  68. package/lib/api/hotswap/code-build-projects.d.ts +3 -3
  69. package/lib/api/hotswap/code-build-projects.js +12 -7
  70. package/lib/api/hotswap/common.d.ts +13 -61
  71. package/lib/api/hotswap/common.js +40 -70
  72. package/lib/api/hotswap/ecs-services.d.ts +4 -4
  73. package/lib/api/hotswap/ecs-services.js +38 -21
  74. package/lib/api/hotswap/lambda-functions.d.ts +3 -3
  75. package/lib/api/hotswap/lambda-functions.js +23 -19
  76. package/lib/api/hotswap/s3-bucket-deployments.d.ts +3 -3
  77. package/lib/api/hotswap/s3-bucket-deployments.js +11 -7
  78. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +3 -3
  79. package/lib/api/hotswap/stepfunctions-state-machines.js +8 -4
  80. package/lib/api/logs/find-cloudwatch-logs.js +6 -7
  81. package/lib/api/logs/logs-monitor.js +5 -8
  82. package/lib/api/plugin/plugin.js +6 -10
  83. package/lib/api/resource-import/importer.d.ts +8 -8
  84. package/lib/api/resource-import/importer.js +27 -42
  85. package/lib/api/resource-import/migrator.d.ts +3 -3
  86. package/lib/api/resource-import/migrator.js +6 -6
  87. package/lib/api/settings.d.ts +0 -3
  88. package/lib/api/settings.js +4 -40
  89. package/lib/api/stack-events/stack-activity-monitor.d.ts +1 -1
  90. package/lib/api/stack-events/stack-activity-monitor.js +12 -15
  91. package/lib/api/stack-events/stack-event-poller.js +9 -10
  92. package/lib/api/toolkit-info.d.ts +2 -2
  93. package/lib/api/toolkit-info.js +20 -24
  94. package/lib/{tree.d.ts → api/tree.d.ts} +2 -2
  95. package/lib/api/tree.js +37 -0
  96. package/lib/api/util/rwlock.js +4 -4
  97. package/lib/api/work-graph/work-graph-builder.js +4 -4
  98. package/lib/api/work-graph/work-graph.d.ts +1 -1
  99. package/lib/api/work-graph/work-graph.js +13 -15
  100. package/lib/cli/activity-printer/base.d.ts +2 -2
  101. package/lib/cli/activity-printer/base.js +6 -8
  102. package/lib/cli/activity-printer/current.js +7 -11
  103. package/lib/cli/activity-printer/history.js +2 -3
  104. package/lib/cli/cdk-toolkit.d.ts +16 -19
  105. package/lib/cli/cdk-toolkit.js +118 -74
  106. package/lib/cli/ci-systems.js +2 -3
  107. package/lib/cli/cli-config.js +4 -4
  108. package/lib/cli/cli.js +49 -50
  109. package/lib/cli/convert-to-user-input.js +110 -111
  110. package/lib/{toolkit → cli/io-host}/cli-io-host.d.ts +6 -2
  111. package/lib/cli/io-host/cli-io-host.js +356 -0
  112. package/lib/cli/io-host/index.d.ts +1 -0
  113. package/lib/{toolkit/error.js → cli/io-host/index.js} +2 -2
  114. package/lib/cli/messages.d.ts +1 -1
  115. package/lib/cli/messages.js +2 -3
  116. package/lib/cli/pretty-print-error.d.ts +1 -0
  117. package/lib/cli/pretty-print-error.js +35 -0
  118. package/lib/cli/root-dir.js +4 -4
  119. package/lib/cli/user-configuration.js +57 -14
  120. package/lib/cli/util/npm.js +3 -3
  121. package/lib/cli/util/yargs-helpers.d.ts +1 -1
  122. package/lib/cli/util/yargs-helpers.js +3 -3
  123. package/lib/cli/version.js +4 -4
  124. package/lib/commands/context.js +7 -8
  125. package/lib/commands/diff.d.ts +1 -0
  126. package/lib/commands/diff.js +7 -0
  127. package/lib/commands/init/index.d.ts +1 -0
  128. package/lib/commands/init/index.js +18 -0
  129. package/lib/commands/init/init-hooks.js +63 -0
  130. package/lib/commands/init/init.js +435 -0
  131. package/lib/{os.js → commands/init/os.js} +4 -4
  132. package/lib/{list-stacks.d.ts → commands/list-stacks.d.ts} +1 -1
  133. package/lib/{list-stacks.js → commands/list-stacks.js} +2 -2
  134. package/lib/commands/migrate.js +29 -32
  135. package/lib/context-providers/ami.d.ts +3 -1
  136. package/lib/context-providers/ami.js +8 -8
  137. package/lib/context-providers/availability-zones.d.ts +3 -1
  138. package/lib/context-providers/availability-zones.js +4 -4
  139. package/lib/context-providers/cc-api-provider.d.ts +8 -12
  140. package/lib/context-providers/cc-api-provider.js +94 -66
  141. package/lib/context-providers/endpoint-service-availability-zones.d.ts +3 -1
  142. package/lib/context-providers/endpoint-service-availability-zones.js +6 -6
  143. package/lib/context-providers/hosted-zones.d.ts +3 -1
  144. package/lib/context-providers/hosted-zones.js +11 -11
  145. package/lib/context-providers/index.d.ts +19 -5
  146. package/lib/context-providers/index.js +35 -17
  147. package/lib/context-providers/keys.d.ts +3 -1
  148. package/lib/context-providers/keys.js +8 -8
  149. package/lib/context-providers/load-balancers.js +15 -18
  150. package/lib/context-providers/security-groups.js +10 -12
  151. package/lib/context-providers/ssm-parameters.d.ts +3 -1
  152. package/lib/context-providers/ssm-parameters.js +7 -7
  153. package/lib/context-providers/vpcs.d.ts +3 -1
  154. package/lib/context-providers/vpcs.js +14 -15
  155. package/lib/index.js +124098 -123198
  156. package/lib/init-templates/.init-version.json +1 -1
  157. package/lib/init-templates/.recommended-feature-flags.json +3 -1
  158. package/lib/legacy-exports-source.d.ts +4 -5
  159. package/lib/legacy-exports-source.js +6 -7
  160. package/lib/logging.js +2 -2
  161. package/lib/notices.d.ts +1 -1
  162. package/lib/notices.js +26 -32
  163. package/package.json +29 -29
  164. package/lib/api/deployments/cloudformation.js +0 -597
  165. package/lib/api/deployments/nested-stack-helpers.js +0 -88
  166. package/lib/api/util/placeholders.js +0 -24
  167. package/lib/api/util/template-body-parameter.js +0 -103
  168. package/lib/diff.d.ts +0 -28
  169. package/lib/diff.js +0 -165
  170. package/lib/init-hooks.js +0 -63
  171. package/lib/init.js +0 -437
  172. package/lib/toolkit/cli-io-host.js +0 -353
  173. package/lib/toolkit/error.d.ts +0 -1
  174. package/lib/tree.js +0 -40
  175. /package/lib/api/{util → environment}/placeholders.d.ts +0 -0
  176. /package/lib/{init-hooks.d.ts → commands/init/init-hooks.d.ts} +0 -0
  177. /package/lib/{init.d.ts → commands/init/init.d.ts} +0 -0
  178. /package/lib/{os.d.ts → commands/init/os.d.ts} +0 -0
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudFormationStack = void 0;
4
+ const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
5
+ const util_1 = require("../../util");
6
+ const stack_events_1 = require("../stack-events");
7
+ /**
8
+ * Represents an (existing) Stack in CloudFormation
9
+ *
10
+ * Bundle and cache some information that we need during deployment (so we don't have to make
11
+ * repeated calls to CloudFormation).
12
+ */
13
+ class CloudFormationStack {
14
+ static async lookup(cfn, stackName, retrieveProcessedTemplate = false) {
15
+ try {
16
+ const response = await cfn.describeStacks({ StackName: stackName });
17
+ return new CloudFormationStack(cfn, stackName, response.Stacks && response.Stacks[0], retrieveProcessedTemplate);
18
+ }
19
+ catch (e) {
20
+ if (e.name === 'ValidationError' && (0, util_1.formatErrorMessage)(e) === `Stack with id ${stackName} does not exist`) {
21
+ return new CloudFormationStack(cfn, stackName, undefined);
22
+ }
23
+ throw e;
24
+ }
25
+ }
26
+ /**
27
+ * Return a copy of the given stack that does not exist
28
+ *
29
+ * It's a little silly that it needs arguments to do that, but there we go.
30
+ */
31
+ static doesNotExist(cfn, stackName) {
32
+ return new CloudFormationStack(cfn, stackName);
33
+ }
34
+ /**
35
+ * From static information (for testing)
36
+ */
37
+ static fromStaticInformation(cfn, stackName, stack) {
38
+ return new CloudFormationStack(cfn, stackName, stack);
39
+ }
40
+ constructor(cfn, stackName, stack, retrieveProcessedTemplate = false) {
41
+ this.cfn = cfn;
42
+ this.stackName = stackName;
43
+ this.stack = stack;
44
+ this.retrieveProcessedTemplate = retrieveProcessedTemplate;
45
+ }
46
+ /**
47
+ * Retrieve the stack's deployed template
48
+ *
49
+ * Cached, so will only be retrieved once. Will return an empty
50
+ * structure if the stack does not exist.
51
+ */
52
+ async template() {
53
+ if (!this.exists) {
54
+ return {};
55
+ }
56
+ if (this._template === undefined) {
57
+ const response = await this.cfn.getTemplate({
58
+ StackName: this.stackName,
59
+ TemplateStage: this.retrieveProcessedTemplate ? 'Processed' : 'Original',
60
+ });
61
+ this._template = (response.TemplateBody && (0, util_1.deserializeStructure)(response.TemplateBody)) || {};
62
+ }
63
+ return this._template;
64
+ }
65
+ /**
66
+ * Whether the stack exists
67
+ */
68
+ get exists() {
69
+ return this.stack !== undefined;
70
+ }
71
+ /**
72
+ * The stack's ID
73
+ *
74
+ * Throws if the stack doesn't exist.
75
+ */
76
+ get stackId() {
77
+ this.assertExists();
78
+ return this.stack.StackId;
79
+ }
80
+ /**
81
+ * The stack's current outputs
82
+ *
83
+ * Empty object if the stack doesn't exist
84
+ */
85
+ get outputs() {
86
+ if (!this.exists) {
87
+ return {};
88
+ }
89
+ const result = {};
90
+ (this.stack.Outputs || []).forEach((output) => {
91
+ result[output.OutputKey] = output.OutputValue;
92
+ });
93
+ return result;
94
+ }
95
+ /**
96
+ * The stack's status
97
+ *
98
+ * Special status NOT_FOUND if the stack does not exist.
99
+ */
100
+ get stackStatus() {
101
+ if (!this.exists) {
102
+ return new stack_events_1.StackStatus('NOT_FOUND', 'Stack not found during lookup');
103
+ }
104
+ return stack_events_1.StackStatus.fromStackDescription(this.stack);
105
+ }
106
+ /**
107
+ * The stack's current tags
108
+ *
109
+ * Empty list if the stack does not exist
110
+ */
111
+ get tags() {
112
+ return this.stack?.Tags || [];
113
+ }
114
+ /**
115
+ * SNS Topic ARNs that will receive stack events.
116
+ *
117
+ * Empty list if the stack does not exist
118
+ */
119
+ get notificationArns() {
120
+ return this.stack?.NotificationARNs ?? [];
121
+ }
122
+ /**
123
+ * Return the names of all current parameters to the stack
124
+ *
125
+ * Empty list if the stack does not exist.
126
+ */
127
+ get parameterNames() {
128
+ return Object.keys(this.parameters);
129
+ }
130
+ /**
131
+ * Return the names and values of all current parameters to the stack
132
+ *
133
+ * Empty object if the stack does not exist.
134
+ */
135
+ get parameters() {
136
+ if (!this.exists) {
137
+ return {};
138
+ }
139
+ const ret = {};
140
+ for (const param of this.stack.Parameters ?? []) {
141
+ ret[param.ParameterKey] = param.ResolvedValue ?? param.ParameterValue;
142
+ }
143
+ return ret;
144
+ }
145
+ /**
146
+ * Return the termination protection of the stack
147
+ */
148
+ get terminationProtection() {
149
+ return this.stack?.EnableTerminationProtection;
150
+ }
151
+ assertExists() {
152
+ if (!this.exists) {
153
+ throw new api_1.ToolkitError(`No stack named '${this.stackName}'`);
154
+ }
155
+ }
156
+ }
157
+ exports.CloudFormationStack = CloudFormationStack;
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2staGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMEVBQWdGO0FBQ2hGLHFDQUFzRTtBQUV0RSxrREFBOEM7QUFJOUM7Ozs7O0dBS0c7QUFDSCxNQUFhLG1CQUFtQjtJQUN2QixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDeEIsR0FBMEIsRUFDMUIsU0FBaUIsRUFDakIsNEJBQXFDLEtBQUs7UUFFMUMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDcEUsT0FBTyxJQUFJLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDbkgsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLGlCQUFpQixJQUFJLElBQUEseUJBQWtCLEVBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLFNBQVMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDMUcsT0FBTyxJQUFJLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUNELE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUEwQixFQUFFLFNBQWlCO1FBQ3RFLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQTBCLEVBQUUsU0FBaUIsRUFBRSxLQUFZO1FBQzdGLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFJRCxZQUNtQixHQUEwQixFQUMzQixTQUFpQixFQUNoQixLQUFhLEVBQ2IsNEJBQXFDLEtBQUs7UUFIMUMsUUFBRyxHQUFILEdBQUcsQ0FBdUI7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUFpQjtJQUU3RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsUUFBUTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO2dCQUMxQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLGFBQWEsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVTthQUN6RSxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksSUFBSSxJQUFBLDJCQUFvQixFQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLE9BQU87UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQU0sQ0FBQyxPQUFRLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLE9BQU87UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBK0IsRUFBRSxDQUFDO1FBQzlDLENBQUMsSUFBSSxDQUFDLEtBQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDN0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBWSxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLFdBQVc7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksMEJBQVcsQ0FBQyxXQUFXLEVBQUUsK0JBQStCLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsT0FBTywwQkFBVyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFNLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsY0FBYztRQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxVQUFVO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztRQUN2QyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2pELEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsY0FBZSxDQUFDO1FBQzFFLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcscUJBQXFCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSwyQkFBMkIsQ0FBQztJQUNqRCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxrQkFBWSxDQUFDLG1CQUFtQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBcEtELGtEQW9LQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RhY2ssIFRhZyB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vQGF3cy1jZGsvdG1wLXRvb2xraXQtaGVscGVycy9zcmMvYXBpJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaSc7XG5pbXBvcnQgeyBmb3JtYXRFcnJvck1lc3NhZ2UsIGRlc2VyaWFsaXplU3RydWN0dXJlIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IElDbG91ZEZvcm1hdGlvbkNsaWVudCB9IGZyb20gJy4uL2F3cy1hdXRoJztcbmltcG9ydCB7IFN0YWNrU3RhdHVzIH0gZnJvbSAnLi4vc3RhY2stZXZlbnRzJztcblxuZXhwb3J0IHsgVGVtcGxhdGUsIFRlbXBsYXRlUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vQGF3cy1jZGsvdG1wLXRvb2xraXQtaGVscGVycy9zcmMvYXBpJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIChleGlzdGluZykgU3RhY2sgaW4gQ2xvdWRGb3JtYXRpb25cbiAqXG4gKiBCdW5kbGUgYW5kIGNhY2hlIHNvbWUgaW5mb3JtYXRpb24gdGhhdCB3ZSBuZWVkIGR1cmluZyBkZXBsb3ltZW50IChzbyB3ZSBkb24ndCBoYXZlIHRvIG1ha2VcbiAqIHJlcGVhdGVkIGNhbGxzIHRvIENsb3VkRm9ybWF0aW9uKS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkRm9ybWF0aW9uU3RhY2sge1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGxvb2t1cChcbiAgICBjZm46IElDbG91ZEZvcm1hdGlvbkNsaWVudCxcbiAgICBzdGFja05hbWU6IHN0cmluZyxcbiAgICByZXRyaWV2ZVByb2Nlc3NlZFRlbXBsYXRlOiBib29sZWFuID0gZmFsc2UsXG4gICk6IFByb21pc2U8Q2xvdWRGb3JtYXRpb25TdGFjaz4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNmbi5kZXNjcmliZVN0YWNrcyh7IFN0YWNrTmFtZTogc3RhY2tOYW1lIH0pO1xuICAgICAgcmV0dXJuIG5ldyBDbG91ZEZvcm1hdGlvblN0YWNrKGNmbiwgc3RhY2tOYW1lLCByZXNwb25zZS5TdGFja3MgJiYgcmVzcG9uc2UuU3RhY2tzWzBdLCByZXRyaWV2ZVByb2Nlc3NlZFRlbXBsYXRlKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlLm5hbWUgPT09ICdWYWxpZGF0aW9uRXJyb3InICYmIGZvcm1hdEVycm9yTWVzc2FnZShlKSA9PT0gYFN0YWNrIHdpdGggaWQgJHtzdGFja05hbWV9IGRvZXMgbm90IGV4aXN0YCkge1xuICAgICAgICByZXR1cm4gbmV3IENsb3VkRm9ybWF0aW9uU3RhY2soY2ZuLCBzdGFja05hbWUsIHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBjb3B5IG9mIHRoZSBnaXZlbiBzdGFjayB0aGF0IGRvZXMgbm90IGV4aXN0XG4gICAqXG4gICAqIEl0J3MgYSBsaXR0bGUgc2lsbHkgdGhhdCBpdCBuZWVkcyBhcmd1bWVudHMgdG8gZG8gdGhhdCwgYnV0IHRoZXJlIHdlIGdvLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkb2VzTm90RXhpc3QoY2ZuOiBJQ2xvdWRGb3JtYXRpb25DbGllbnQsIHN0YWNrTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBDbG91ZEZvcm1hdGlvblN0YWNrKGNmbiwgc3RhY2tOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGcm9tIHN0YXRpYyBpbmZvcm1hdGlvbiAoZm9yIHRlc3RpbmcpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TdGF0aWNJbmZvcm1hdGlvbihjZm46IElDbG91ZEZvcm1hdGlvbkNsaWVudCwgc3RhY2tOYW1lOiBzdHJpbmcsIHN0YWNrOiBTdGFjaykge1xuICAgIHJldHVybiBuZXcgQ2xvdWRGb3JtYXRpb25TdGFjayhjZm4sIHN0YWNrTmFtZSwgc3RhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGVtcGxhdGU6IGFueTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZm46IElDbG91ZEZvcm1hdGlvbkNsaWVudCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFjaz86IFN0YWNrLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmV0cmlldmVQcm9jZXNzZWRUZW1wbGF0ZTogYm9vbGVhbiA9IGZhbHNlLFxuICApIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgc3RhY2sncyBkZXBsb3llZCB0ZW1wbGF0ZVxuICAgKlxuICAgKiBDYWNoZWQsIHNvIHdpbGwgb25seSBiZSByZXRyaWV2ZWQgb25jZS4gV2lsbCByZXR1cm4gYW4gZW1wdHlcbiAgICogc3RydWN0dXJlIGlmIHRoZSBzdGFjayBkb2VzIG5vdCBleGlzdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB0ZW1wbGF0ZSgpOiBQcm9taXNlPFRlbXBsYXRlPiB7XG4gICAgaWYgKCF0aGlzLmV4aXN0cykge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90ZW1wbGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2ZuLmdldFRlbXBsYXRlKHtcbiAgICAgICAgU3RhY2tOYW1lOiB0aGlzLnN0YWNrTmFtZSxcbiAgICAgICAgVGVtcGxhdGVTdGFnZTogdGhpcy5yZXRyaWV2ZVByb2Nlc3NlZFRlbXBsYXRlID8gJ1Byb2Nlc3NlZCcgOiAnT3JpZ2luYWwnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl90ZW1wbGF0ZSA9IChyZXNwb25zZS5UZW1wbGF0ZUJvZHkgJiYgZGVzZXJpYWxpemVTdHJ1Y3R1cmUocmVzcG9uc2UuVGVtcGxhdGVCb2R5KSkgfHwge307XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdGFjayBleGlzdHNcbiAgICovXG4gIHB1YmxpYyBnZXQgZXhpc3RzKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0YWNrJ3MgSURcbiAgICpcbiAgICogVGhyb3dzIGlmIHRoZSBzdGFjayBkb2Vzbid0IGV4aXN0LlxuICAgKi9cbiAgcHVibGljIGdldCBzdGFja0lkKCkge1xuICAgIHRoaXMuYXNzZXJ0RXhpc3RzKCk7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2shLlN0YWNrSWQhO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjaydzIGN1cnJlbnQgb3V0cHV0c1xuICAgKlxuICAgKiBFbXB0eSBvYmplY3QgaWYgdGhlIHN0YWNrIGRvZXNuJ3QgZXhpc3RcbiAgICovXG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuZXhpc3RzKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAodGhpcy5zdGFjayEuT3V0cHV0cyB8fCBbXSkuZm9yRWFjaCgob3V0cHV0KSA9PiB7XG4gICAgICByZXN1bHRbb3V0cHV0Lk91dHB1dEtleSFdID0gb3V0cHV0Lk91dHB1dFZhbHVlITtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjaydzIHN0YXR1c1xuICAgKlxuICAgKiBTcGVjaWFsIHN0YXR1cyBOT1RfRk9VTkQgaWYgdGhlIHN0YWNrIGRvZXMgbm90IGV4aXN0LlxuICAgKi9cbiAgcHVibGljIGdldCBzdGFja1N0YXR1cygpOiBTdGFja1N0YXR1cyB7XG4gICAgaWYgKCF0aGlzLmV4aXN0cykge1xuICAgICAgcmV0dXJuIG5ldyBTdGFja1N0YXR1cygnTk9UX0ZPVU5EJywgJ1N0YWNrIG5vdCBmb3VuZCBkdXJpbmcgbG9va3VwJyk7XG4gICAgfVxuICAgIHJldHVybiBTdGFja1N0YXR1cy5mcm9tU3RhY2tEZXNjcmlwdGlvbih0aGlzLnN0YWNrISk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0YWNrJ3MgY3VycmVudCB0YWdzXG4gICAqXG4gICAqIEVtcHR5IGxpc3QgaWYgdGhlIHN0YWNrIGRvZXMgbm90IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgZ2V0IHRhZ3MoKTogVGFnW10ge1xuICAgIHJldHVybiB0aGlzLnN0YWNrPy5UYWdzIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNOUyBUb3BpYyBBUk5zIHRoYXQgd2lsbCByZWNlaXZlIHN0YWNrIGV2ZW50cy5cbiAgICpcbiAgICogRW1wdHkgbGlzdCBpZiB0aGUgc3RhY2sgZG9lcyBub3QgZXhpc3RcbiAgICovXG4gIHB1YmxpYyBnZXQgbm90aWZpY2F0aW9uQXJucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2s/Lk5vdGlmaWNhdGlvbkFSTnMgPz8gW107XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBuYW1lcyBvZiBhbGwgY3VycmVudCBwYXJhbWV0ZXJzIHRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBFbXB0eSBsaXN0IGlmIHRoZSBzdGFjayBkb2VzIG5vdCBleGlzdC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcGFyYW1ldGVyTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnBhcmFtZXRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbmFtZXMgYW5kIHZhbHVlcyBvZiBhbGwgY3VycmVudCBwYXJhbWV0ZXJzIHRvIHRoZSBzdGFja1xuICAgKlxuICAgKiBFbXB0eSBvYmplY3QgaWYgdGhlIHN0YWNrIGRvZXMgbm90IGV4aXN0LlxuICAgKi9cbiAgcHVibGljIGdldCBwYXJhbWV0ZXJzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5leGlzdHMpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcmV0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgZm9yIChjb25zdCBwYXJhbSBvZiB0aGlzLnN0YWNrIS5QYXJhbWV0ZXJzID8/IFtdKSB7XG4gICAgICByZXRbcGFyYW0uUGFyYW1ldGVyS2V5IV0gPSBwYXJhbS5SZXNvbHZlZFZhbHVlID8/IHBhcmFtLlBhcmFtZXRlclZhbHVlITtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHRlcm1pbmF0aW9uIHByb3RlY3Rpb24gb2YgdGhlIHN0YWNrXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRlcm1pbmF0aW9uUHJvdGVjdGlvbigpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjaz8uRW5hYmxlVGVybWluYXRpb25Qcm90ZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NlcnRFeGlzdHMoKSB7XG4gICAgaWYgKCF0aGlzLmV4aXN0cykge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgTm8gc3RhY2sgbmFtZWQgJyR7dGhpcy5zdGFja05hbWV9J2ApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,5 +1,6 @@
1
1
  import { type CloudFormationStackArtifact, type Environment } from '@aws-cdk/cx-api';
2
- import { type AssetManifestBuilder } from '../deployments';
2
+ import { type IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
3
+ import type { AssetManifestBuilder } from '../deployments';
3
4
  import type { EnvironmentResources } from '../environment';
4
5
  export type TemplateBodyParameter = {
5
6
  TemplateBody?: string;
@@ -18,4 +19,4 @@ export type TemplateBodyParameter = {
18
19
  * @param stack the synthesized stack that provides the CloudFormation template
19
20
  * @param toolkitInfo information about the toolkit stack
20
21
  */
21
- export declare function makeBodyParameter(stack: CloudFormationStackArtifact, resolvedEnvironment: Environment, assetManifest: AssetManifestBuilder, resources: EnvironmentResources, overrideTemplate?: any): Promise<TemplateBodyParameter>;
22
+ export declare function makeBodyParameter(ioHelper: IoHelper, stack: CloudFormationStackArtifact, resolvedEnvironment: Environment, assetManifest: AssetManifestBuilder, resources: EnvironmentResources, overrideTemplate?: any): Promise<TemplateBodyParameter>;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeBodyParameter = makeBodyParameter;
4
+ const fs = require("node:fs/promises");
5
+ const path = require("node:path");
6
+ const util = require("node:util");
7
+ const cx_api_1 = require("@aws-cdk/cx-api");
8
+ const client_s3_1 = require("@aws-sdk/client-s3");
9
+ const middleware_endpoint_1 = require("@smithy/middleware-endpoint");
10
+ const chalk = require("chalk");
11
+ const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
12
+ const private_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private");
13
+ const util_1 = require("../../util");
14
+ const LARGE_TEMPLATE_SIZE_KB = 50;
15
+ /**
16
+ * Prepares the body parameter for +CreateChangeSet+.
17
+ *
18
+ * If the template is small enough to be inlined into the API call, just return
19
+ * it immediately.
20
+ *
21
+ * Otherwise, add it to the asset manifest to get uploaded to the staging
22
+ * bucket and return its coordinates. If there is no staging bucket, an error
23
+ * is thrown.
24
+ *
25
+ * @param stack the synthesized stack that provides the CloudFormation template
26
+ * @param toolkitInfo information about the toolkit stack
27
+ */
28
+ async function makeBodyParameter(ioHelper, stack, resolvedEnvironment, assetManifest, resources, overrideTemplate) {
29
+ // If the template has already been uploaded to S3, just use it from there.
30
+ if (stack.stackTemplateAssetObjectUrl && !overrideTemplate) {
31
+ return {
32
+ TemplateURL: await restUrlFromManifest(stack.stackTemplateAssetObjectUrl, resolvedEnvironment),
33
+ };
34
+ }
35
+ // Otherwise, pass via API call (if small) or upload here (if large)
36
+ const templateJson = (0, util_1.toYAML)(overrideTemplate ?? stack.template);
37
+ if (templateJson.length <= LARGE_TEMPLATE_SIZE_KB * 1024) {
38
+ return { TemplateBody: templateJson };
39
+ }
40
+ const toolkitInfo = await resources.lookupToolkit();
41
+ if (!toolkitInfo.found) {
42
+ await ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_ERROR.msg(util.format(`The template for stack "${stack.displayName}" is ${Math.round(templateJson.length / 1024)}KiB. ` +
43
+ `Templates larger than ${LARGE_TEMPLATE_SIZE_KB}KiB must be uploaded to S3.\n` +
44
+ 'Run the following command in order to setup an S3 bucket in this environment, and then re-deploy:\n\n', chalk.blue(`\t$ cdk bootstrap ${resolvedEnvironment.name}\n`))));
45
+ throw new api_1.ToolkitError('Template too large to deploy ("cdk bootstrap" is required)');
46
+ }
47
+ const templateHash = (0, util_1.contentHash)(templateJson);
48
+ const key = `cdk/${stack.id}/${templateHash}.yml`;
49
+ let templateFile = stack.templateFile;
50
+ if (overrideTemplate) {
51
+ // Add a variant of this template
52
+ templateFile = `${stack.templateFile}-${templateHash}.yaml`;
53
+ const templateFilePath = path.join(stack.assembly.directory, templateFile);
54
+ await fs.writeFile(templateFilePath, templateJson, { encoding: 'utf-8' });
55
+ }
56
+ assetManifest.addFileAsset(templateHash, {
57
+ path: templateFile,
58
+ }, {
59
+ bucketName: toolkitInfo.bucketName,
60
+ objectKey: key,
61
+ });
62
+ const templateURL = `${toolkitInfo.bucketUrl}/${key}`;
63
+ await ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_DEBUG.msg(`Storing template in S3 at: ${templateURL}`));
64
+ return { TemplateURL: templateURL };
65
+ }
66
+ /**
67
+ * Format an S3 URL in the manifest for use with CloudFormation
68
+ *
69
+ * Replaces environment placeholders (which this field may contain),
70
+ * and reformats s3://.../... urls into S3 REST URLs (which CloudFormation
71
+ * expects)
72
+ */
73
+ async function restUrlFromManifest(url, environment) {
74
+ const doNotUseMarker = '**DONOTUSE**';
75
+ const region = environment.region;
76
+ // This URL may contain placeholders, so still substitute those.
77
+ url = cx_api_1.EnvironmentPlaceholders.replace(url, {
78
+ accountId: environment.account,
79
+ region,
80
+ partition: doNotUseMarker,
81
+ });
82
+ // Yes, this is extremely crude, but we don't actually need this so I'm not inclined to spend
83
+ // a lot of effort trying to thread the right value to this location.
84
+ if (url.indexOf(doNotUseMarker) > -1) {
85
+ throw new api_1.ToolkitError("Cannot use '${AWS::Partition}' in the 'stackTemplateAssetObjectUrl' field");
86
+ }
87
+ const s3Url = url.match(/s3:\/\/([^/]+)\/(.*)$/);
88
+ if (!s3Url) {
89
+ return url;
90
+ }
91
+ // We need to pass an 'https://s3.REGION.amazonaws.com[.cn]/bucket/object' URL to CloudFormation, but we
92
+ // got an 's3://bucket/object' URL instead. Construct the rest API URL here.
93
+ const bucketName = s3Url[1];
94
+ const objectKey = s3Url[2];
95
+ // SDK v3 no longer allows for getting endpoints from only region.
96
+ // A command and client config must now be provided.
97
+ const s3 = new client_s3_1.S3Client({ region });
98
+ const endpoint = await (0, middleware_endpoint_1.getEndpointFromInstructions)({}, client_s3_1.HeadObjectCommand, {
99
+ ...s3.config,
100
+ });
101
+ endpoint.url.hostname;
102
+ return `${endpoint.url.origin}/${bucketName}/${objectKey}`;
103
+ }
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtYm9keS1wYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZW1wbGF0ZS1ib2R5LXBhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlDQSw4Q0E2REM7QUE5RkQsdUNBQXVDO0FBQ3ZDLGtDQUFrQztBQUNsQyxrQ0FBa0M7QUFDbEMsNENBQThHO0FBQzlHLGtEQUFpRTtBQUNqRSxxRUFBMEU7QUFDMUUsK0JBQStCO0FBQy9CLDBFQUFnRjtBQUNoRix5RkFBZ0c7QUFDaEcscUNBQWlEO0FBU2pELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBRWxDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsUUFBa0IsRUFDbEIsS0FBa0MsRUFDbEMsbUJBQWdDLEVBQ2hDLGFBQW1DLEVBQ25DLFNBQStCLEVBQy9CLGdCQUFzQjtJQUV0QiwyRUFBMkU7SUFDM0UsSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNELE9BQU87WUFDTCxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsbUJBQW1CLENBQUM7U0FDL0YsQ0FBQztJQUNKLENBQUM7SUFFRCxvRUFBb0U7SUFDcEUsTUFBTSxZQUFZLEdBQUcsSUFBQSxhQUFNLEVBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWhFLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxzQkFBc0IsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxDQUFDLE1B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QUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxpREFBMkIsRUFBQyxFQUFFLEVBQUUsNkJBQWlCLEVBQUU7UUFDeEUsR0FBRyxFQUFFLENBQUMsTUFBTTtLQUNiLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBRXRCLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxVQUFVLElBQUksU0FBUyxFQUFFLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICdub2RlOnV0aWwnO1xuaW1wb3J0IHsgdHlwZSBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIHR5cGUgRW52aXJvbm1lbnQsIEVudmlyb25tZW50UGxhY2Vob2xkZXJzIH0gZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB7IEhlYWRPYmplY3RDb21tYW5kLCBTM0NsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5pbXBvcnQgeyBnZXRFbmRwb2ludEZyb21JbnN0cnVjdGlvbnMgfSBmcm9tICdAc21pdGh5L21pZGRsZXdhcmUtZW5kcG9pbnQnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vQGF3cy1jZGsvdG1wLXRvb2xraXQtaGVscGVycy9zcmMvYXBpJztcbmltcG9ydCB7IElPLCB0eXBlIElvSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vQGF3cy1jZGsvdG1wLXRvb2xraXQtaGVscGVycy9zcmMvYXBpL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgY29udGVudEhhc2gsIHRvWUFNTCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBBc3NldE1hbmlmZXN0QnVpbGRlciB9IGZyb20gJy4uL2RlcGxveW1lbnRzJztcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnRSZXNvdXJjZXMgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlQm9keVBhcmFtZXRlciA9IHtcbiAgVGVtcGxhdGVCb2R5Pzogc3RyaW5nO1xuICBUZW1wbGF0ZVVSTD86IHN0cmluZztcbn07XG5cbmNvbnN0IExBUkdFX1RFTVBMQVRFX1NJWkVfS0IgPSA1MDtcblxuLyoqXG4gKiBQcmVwYXJlcyB0aGUgYm9keSBwYXJhbWV0ZXIgZm9yICtDcmVhdGVDaGFuZ2VTZXQrLlxuICpcbiAqIElmIHRoZSB0ZW1wbGF0ZSBpcyBzbWFsbCBlbm91Z2ggdG8gYmUgaW5saW5lZCBpbnRvIHRoZSBBUEkgY2FsbCwganVzdCByZXR1cm5cbiAqIGl0IGltbWVkaWF0ZWx5LlxuICpcbiAqIE90aGVyd2lzZSwgYWRkIGl0IHRvIHRoZSBhc3NldCBtYW5pZmVzdCB0byBnZXQgdXBsb2FkZWQgdG8gdGhlIHN0YWdpbmdcbiAqIGJ1Y2tldCBhbmQgcmV0dXJuIGl0cyBjb29yZGluYXRlcy4gSWYgdGhlcmUgaXMgbm8gc3RhZ2luZyBidWNrZXQsIGFuIGVycm9yXG4gKiBpcyB0aHJvd24uXG4gKlxuICogQHBhcmFtIHN0YWNrICAgICB0aGUgc3ludGhlc2l6ZWQgc3RhY2sgdGhhdCBwcm92aWRlcyB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVcbiAqIEBwYXJhbSB0b29sa2l0SW5mbyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdG9vbGtpdCBzdGFja1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZUJvZHlQYXJhbWV0ZXIoXG4gIGlvSGVscGVyOiBJb0hlbHBlcixcbiAgc3RhY2s6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbiAgcmVzb2x2ZWRFbnZpcm9ubWVudDogRW52aXJvbm1lbnQsXG4gIGFzc2V0TWFuaWZlc3Q6IEFzc2V0TWFuaWZlc3RCdWlsZGVyLFxuICByZXNvdXJjZXM6IEVudmlyb25tZW50UmVzb3VyY2VzLFxuICBvdmVycmlkZVRlbXBsYXRlPzogYW55LFxuKTogUHJvbWlzZTxUZW1wbGF0ZUJvZHlQYXJhbWV0ZXI+IHtcbiAgLy8gSWYgdGhlIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gdXBsb2FkZWQgdG8gUzMsIGp1c3QgdXNlIGl0IGZyb20gdGhlcmUuXG4gIGlmIChzdGFjay5zdGFja1RlbXBsYXRlQXNzZXRPYmplY3RVcmwgJiYgIW92ZXJyaWRlVGVtcGxhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgVGVtcGxhdGVVUkw6IGF3YWl0IHJlc3RVcmxGcm9tTWFuaWZlc3Qoc3RhY2suc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsLCByZXNvbHZlZEVudmlyb25tZW50KSxcbiAgICB9O1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBwYXNzIHZpYSBBUEkgY2FsbCAoaWYgc21hbGwpIG9yIHVwbG9hZCBoZXJlIChpZiBsYXJnZSlcbiAgY29uc3QgdGVtcGxhdGVKc29uID0gdG9ZQU1MKG92ZXJyaWRlVGVtcGxhdGUgPz8gc3RhY2sudGVtcGxhdGUpO1xuXG4gIGlmICh0ZW1wbGF0ZUpzb24ubGVuZ3RoIDw9IExBUkdFX1RFTVBMQVRFX1NJWkVfS0IgKiAxMDI0KSB7XG4gICAgcmV0dXJuIHsgVGVtcGxhdGVCb2R5OiB0ZW1wbGF0ZUpzb24gfTtcbiAgfVxuXG4gIGNvbnN0IHRvb2xraXRJbmZvID0gYXdhaXQgcmVzb3VyY2VzLmxvb2t1cFRvb2xraXQoKTtcbiAgaWYgKCF0b29sa2l0SW5mby5mb3VuZCkge1xuICAgIGF3YWl0IGlvSGVscGVyLm5vdGlmeShcbiAgICAgIElPLkRFRkFVTFRfVE9PTEtJVF9FUlJPUi5tc2codXRpbC5mb3JtYXQoXG4gICAgICAgIGBUaGUgdGVtcGxhdGUgZm9yIHN0YWNrIFwiJHtzdGFjay5kaXNwbGF5TmFtZX1cIiBpcyAke01hdGgucm91bmQodGVtcGxhdGVKc29uLmxlbmd0aCAvIDEwMjQpfUtpQi4gYCArXG4gICAgICAgIGBUZW1wbGF0ZXMgbGFyZ2VyIHRoYW4gJHtMQVJHRV9URU1QTEFURV9TSVpFX0tCfUtpQiBtdXN0IGJlIHVwbG9hZGVkIHRvIFMzLlxcbmAgK1xuICAgICAgICAnUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBpbiBvcmRlciB0byBzZXR1cCBhbiBTMyBidWNrZXQgaW4gdGhpcyBlbnZpcm9ubWVudCwgYW5kIHRoZW4gcmUtZGVwbG95OlxcblxcbicsXG4gICAgICAgIGNoYWxrLmJsdWUoYFxcdCQgY2RrIGJvb3RzdHJhcCAke3Jlc29sdmVkRW52aXJvbm1lbnQubmFtZX1cXG5gKSxcbiAgICAgICkpLFxuICAgICk7XG5cbiAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdUZW1wbGF0ZSB0b28gbGFyZ2UgdG8gZGVwbG95IChcImNkayBib290c3RyYXBcIiBpcyByZXF1aXJlZCknKTtcbiAgfVxuXG4gIGNvbnN0IHRlbXBsYXRlSGFzaCA9IGNvbnRlbnRIYXNoKHRlbXBsYXRlSnNvbik7XG4gIGNvbnN0IGtleSA9IGBjZGsvJHtzdGFjay5pZH0vJHt0ZW1wbGF0ZUhhc2h9LnltbGA7XG5cbiAgbGV0IHRlbXBsYXRlRmlsZSA9IHN0YWNrLnRlbXBsYXRlRmlsZTtcbiAgaWYgKG92ZXJyaWRlVGVtcGxhdGUpIHtcbiAgICAvLyBBZGQgYSB2YXJpYW50IG9mIHRoaXMgdGVtcGxhdGVcbiAgICB0ZW1wbGF0ZUZpbGUgPSBgJHtzdGFjay50ZW1wbGF0ZUZpbGV9LSR7dGVtcGxhdGVIYXNofS55YW1sYDtcbiAgICBjb25zdCB0ZW1wbGF0ZUZpbGVQYXRoID0gcGF0aC5qb2luKHN0YWNrLmFzc2VtYmx5LmRpcmVjdG9yeSwgdGVtcGxhdGVGaWxlKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUodGVtcGxhdGVGaWxlUGF0aCwgdGVtcGxhdGVKc29uLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICB9XG5cbiAgYXNzZXRNYW5pZmVzdC5hZGRGaWxlQXNzZXQoXG4gICAgdGVtcGxhdGVIYXNoLFxuICAgIHtcbiAgICAgIHBhdGg6IHRlbXBsYXRlRmlsZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGJ1Y2tldE5hbWU6IHRvb2xraXRJbmZvLmJ1Y2tldE5hbWUsXG4gICAgICBvYmplY3RLZXk6IGtleSxcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHRlbXBsYXRlVVJMID0gYCR7dG9vbGtpdEluZm8uYnVja2V0VXJsfS8ke2tleX1gO1xuICBhd2FpdCBpb0hlbHBlci5ub3RpZnkoSU8uREVGQVVMVF9UT09MS0lUX0RFQlVHLm1zZyhgU3RvcmluZyB0ZW1wbGF0ZSBpbiBTMyBhdDogJHt0ZW1wbGF0ZVVSTH1gKSk7XG4gIHJldHVybiB7IFRlbXBsYXRlVVJMOiB0ZW1wbGF0ZVVSTCB9O1xufVxuXG4vKipcbiAqIEZvcm1hdCBhbiBTMyBVUkwgaW4gdGhlIG1hbmlmZXN0IGZvciB1c2Ugd2l0aCBDbG91ZEZvcm1hdGlvblxuICpcbiAqIFJlcGxhY2VzIGVudmlyb25tZW50IHBsYWNlaG9sZGVycyAod2hpY2ggdGhpcyBmaWVsZCBtYXkgY29udGFpbiksXG4gKiBhbmQgcmVmb3JtYXRzIHMzOi8vLi4uLy4uLiB1cmxzIGludG8gUzMgUkVTVCBVUkxzICh3aGljaCBDbG91ZEZvcm1hdGlvblxuICogZXhwZWN0cylcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzdFVybEZyb21NYW5pZmVzdCh1cmw6IHN0cmluZywgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZG9Ob3RVc2VNYXJrZXIgPSAnKipET05PVFVTRSoqJztcbiAgY29uc3QgcmVnaW9uID0gZW52aXJvbm1lbnQucmVnaW9uO1xuICAvLyBUaGlzIFVSTCBtYXkgY29udGFpbiBwbGFjZWhvbGRlcnMsIHNvIHN0aWxsIHN1YnN0aXR1dGUgdGhvc2UuXG4gIHVybCA9IEVudmlyb25tZW50UGxhY2Vob2xkZXJzLnJlcGxhY2UodXJsLCB7XG4gICAgYWNjb3VudElkOiBlbnZpcm9ubWVudC5hY2NvdW50LFxuICAgIHJlZ2lvbixcbiAgICBwYXJ0aXRpb246IGRvTm90VXNlTWFya2VyLFxuICB9KTtcblxuICAvLyBZZXMsIHRoaXMgaXMgZXh0cmVtZWx5IGNydWRlLCBidXQgd2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0aGlzIHNvIEknbSBub3QgaW5jbGluZWQgdG8gc3BlbmRcbiAgLy8gYSBsb3Qgb2YgZWZmb3J0IHRyeWluZyB0byB0aHJlYWQgdGhlIHJpZ2h0IHZhbHVlIHRvIHRoaXMgbG9jYXRpb24uXG4gIGlmICh1cmwuaW5kZXhPZihkb05vdFVzZU1hcmtlcikgPiAtMSkge1xuICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXCJDYW5ub3QgdXNlICcke0FXUzo6UGFydGl0aW9ufScgaW4gdGhlICdzdGFja1RlbXBsYXRlQXNzZXRPYmplY3RVcmwnIGZpZWxkXCIpO1xuICB9XG5cbiAgY29uc3QgczNVcmwgPSB1cmwubWF0Y2goL3MzOlxcL1xcLyhbXi9dKylcXC8oLiopJC8pO1xuICBpZiAoIXMzVXJsKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIC8vIFdlIG5lZWQgdG8gcGFzcyBhbiAnaHR0cHM6Ly9zMy5SRUdJT04uYW1hem9uYXdzLmNvbVsuY25dL2J1Y2tldC9vYmplY3QnIFVSTCB0byBDbG91ZEZvcm1hdGlvbiwgYnV0IHdlXG4gIC8vIGdvdCBhbiAnczM6Ly9idWNrZXQvb2JqZWN0JyBVUkwgaW5zdGVhZC4gQ29uc3RydWN0IHRoZSByZXN0IEFQSSBVUkwgaGVyZS5cbiAgY29uc3QgYnVja2V0TmFtZSA9IHMzVXJsWzFdO1xuICBjb25zdCBvYmplY3RLZXkgPSBzM1VybFsyXTtcblxuICAvLyBTREsgdjMgbm8gbG9uZ2VyIGFsbG93cyBmb3IgZ2V0dGluZyBlbmRwb2ludHMgZnJvbSBvbmx5IHJlZ2lvbi5cbiAgLy8gQSBjb21tYW5kIGFuZCBjbGllbnQgY29uZmlnIG11c3Qgbm93IGJlIHByb3ZpZGVkLlxuICBjb25zdCBzMyA9IG5ldyBTM0NsaWVudCh7IHJlZ2lvbiB9KTtcbiAgY29uc3QgZW5kcG9pbnQgPSBhd2FpdCBnZXRFbmRwb2ludEZyb21JbnN0cnVjdGlvbnMoe30sIEhlYWRPYmplY3RDb21tYW5kLCB7XG4gICAgLi4uczMuY29uZmlnLFxuICB9KTtcbiAgZW5kcG9pbnQudXJsLmhvc3RuYW1lO1xuXG4gIHJldHVybiBgJHtlbmRwb2ludC51cmwub3JpZ2lufS8ke2J1Y2tldE5hbWV9LyR7b2JqZWN0S2V5fWA7XG59XG4iXX0=
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Context = exports.PROJECT_CONTEXT = exports.TRANSIENT_CONTEXT_KEY = void 0;
4
4
  const settings_1 = require("./settings");
5
- const error_1 = require("../toolkit/error");
5
+ const api_1 = require("../../../@aws-cdk/tmp-toolkit-helpers/src/api");
6
6
  var settings_2 = require("./settings");
7
7
  Object.defineProperty(exports, "TRANSIENT_CONTEXT_KEY", { enumerable: true, get: function () { return settings_2.TRANSIENT_CONTEXT_KEY; } });
8
8
  exports.PROJECT_CONTEXT = 'cdk.context.json';
@@ -72,11 +72,11 @@ class Context {
72
72
  }
73
73
  const bag = this.bags[index];
74
74
  if (bag.readOnly) {
75
- throw new error_1.ToolkitError(`Context file ${fileName} is read only!`);
75
+ throw new api_1.ToolkitError(`Context file ${fileName} is read only!`);
76
76
  }
77
77
  await bag.save(fileName);
78
78
  return this;
79
79
  }
80
80
  }
81
81
  exports.Context = Context;
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXNDO0FBQ3RDLDRDQUFnRDtBQUVoRCx1Q0FBbUQ7QUFBMUMsaUhBQUEscUJBQXFCLE9BQUE7QUFDakIsUUFBQSxlQUFlLEdBQUcsa0JBQWtCLENBQUM7QUFlbEQ7Ozs7Ozs7R0FPRztBQUNILE1BQWEsT0FBTztJQUlsQixZQUFZLEdBQUcsSUFBa0I7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksbUJBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFNBQVM7WUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixJQUFJLEdBQUcsR0FBRyxJQUFJLG1CQUFRLEVBQUUsQ0FBQztRQUV6QiwyRUFBMkU7UUFDM0UsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDM0MsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQVc7UUFDcEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ2hDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVCLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNqQixTQUFTO1lBQ1gsQ0FBQztZQUVELG9EQUFvRDtZQUNwRCxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEIsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFXO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLO1FBQ1YsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFnQjtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvQyxxREFBcUQ7UUFDckQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxvQkFBWSxDQUFDLGdCQUFnQixRQUFRLGdCQUFnQixDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQWhGRCwwQkFnRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vdG9vbGtpdC9lcnJvcic7XG5cbmV4cG9ydCB7IFRSQU5TSUVOVF9DT05URVhUX0tFWSB9IGZyb20gJy4vc2V0dGluZ3MnO1xuZXhwb3J0IGNvbnN0IFBST0pFQ1RfQ09OVEVYVCA9ICdjZGsuY29udGV4dC5qc29uJztcblxuaW50ZXJmYWNlIENvbnRleHRCYWcge1xuICAvKipcbiAgICogVGhlIGZpbGUgbmFtZSBvZiB0aGUgY29udGV4dC4gV2lsbCBiZSB1c2VkIHRvIHBvdGVudGlhbGx5XG4gICAqIHNhdmUgbmV3IGNvbnRleHQgYmFjayB0byB0aGUgb3JpZ2luYWwgZmlsZS5cbiAgICovXG4gIGZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dCB2YWx1ZXMuXG4gICAqL1xuICBiYWc6IFNldHRpbmdzO1xufVxuXG4vKipcbiAqIENsYXNzIHRoYXQgc3VwcG9ydHMgb3ZlcmxheWluZyBwcm9wZXJ0eSBiYWdzXG4gKlxuICogUmVhZHMgY29tZSBmcm9tIHRoZSBmaXJzdCBwcm9wZXJ0eSBiYWcgdGhhdCBjYW4gaGFzIHRoZSBnaXZlbiBrZXksXG4gKiB3cml0ZXMgZ28gdG8gdGhlIGZpcnN0IHByb3BlcnR5IGJhZyB0aGF0IGlzIG5vdCByZWFkb25seS4gQSB3cml0ZVxuICogd2lsbCByZW1vdmUgdGhlIHZhbHVlIGZyb20gYWxsIHByb3BlcnR5IGJhZ3MgYWZ0ZXIgdGhlIGZpcnN0XG4gKiB3cml0YWJsZSBvbmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250ZXh0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBiYWdzOiBTZXR0aW5nc1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVOYW1lczogKHN0cmluZyB8IHVuZGVmaW5lZClbXTtcblxuICBjb25zdHJ1Y3RvciguLi5iYWdzOiBDb250ZXh0QmFnW10pIHtcbiAgICB0aGlzLmJhZ3MgPSBiYWdzLmxlbmd0aCA+IDAgPyBiYWdzLm1hcCgoYikgPT4gYi5iYWcpIDogW25ldyBTZXR0aW5ncygpXTtcbiAgICB0aGlzLmZpbGVOYW1lcyA9XG4gICAgICBiYWdzLmxlbmd0aCA+IDAgPyBiYWdzLm1hcCgoYikgPT4gYi5maWxlTmFtZSkgOiBbJ2RlZmF1bHQnXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuYWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlzLmluZGV4T2Yoa2V5KSA+IC0xO1xuICB9XG5cbiAgcHVibGljIGdldCBhbGwoKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgbGV0IHJldCA9IG5ldyBTZXR0aW5ncygpO1xuXG4gICAgLy8gSW4gcmV2ZXJzZSBvcmRlciBzbyBrZXlzIHRvIHRoZSBsZWZ0IG92ZXJ3cml0ZSBrZXlzIHRvIHRoZSByaWdodCBvZiB0aGVtXG4gICAgZm9yIChjb25zdCBiYWcgb2YgWy4uLnRoaXMuYmFnc10ucmV2ZXJzZSgpKSB7XG4gICAgICByZXQgPSByZXQubWVyZ2UoYmFnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0LmFsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIGZvciAoY29uc3QgYmFnIG9mIHRoaXMuYmFncykge1xuICAgICAgY29uc3QgdiA9IGJhZy5nZXQoW2tleV0pO1xuICAgICAgaWYgKHYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGJhZyBvZiB0aGlzLmJhZ3MpIHtcbiAgICAgIGlmIChiYWcucmVhZE9ubHkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEFsbCBiYWdzIHBhc3QgdGhlIGZpcnN0IG9uZSBoYXZlIHRoZSB2YWx1ZSBlcmFzZWRcbiAgICAgIGJhZy5zZXQoW2tleV0sIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1bnNldChrZXk6IHN0cmluZykge1xuICAgIHRoaXMuc2V0KGtleSwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmtleXMpIHtcbiAgICAgIHRoaXMudW5zZXQoa2V5KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBhIHNwZWNpZmljIGNvbnRleHQgZmlsZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmUoZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8dGhpcz4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWxlTmFtZXMuaW5kZXhPZihmaWxlTmFtZSk7XG5cbiAgICAvLyBGaWxlIG5vdCBmb3VuZCwgZG9uJ3QgZG8gYW55dGhpbmcgaW4gdGhpcyBzY2VuYXJpb1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IGJhZyA9IHRoaXMuYmFnc1tpbmRleF07XG4gICAgaWYgKGJhZy5yZWFkT25seSkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgQ29udGV4dCBmaWxlICR7ZmlsZU5hbWV9IGlzIHJlYWQgb25seSFgKTtcbiAgICB9XG5cbiAgICBhd2FpdCBiYWcuc2F2ZShmaWxlTmFtZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXNDO0FBQ3RDLHVFQUE2RTtBQUU3RSx1Q0FBbUQ7QUFBMUMsaUhBQUEscUJBQXFCLE9BQUE7QUFDakIsUUFBQSxlQUFlLEdBQUcsa0JBQWtCLENBQUM7QUFlbEQ7Ozs7Ozs7R0FPRztBQUNILE1BQWEsT0FBTztJQUlsQixZQUFZLEdBQUcsSUFBa0I7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksbUJBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFNBQVM7WUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixJQUFJLEdBQUcsR0FBRyxJQUFJLG1CQUFRLEVBQUUsQ0FBQztRQUV6QiwyRUFBMkU7UUFDM0UsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDM0MsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQVc7UUFDcEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ2hDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVCLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNqQixTQUFTO1lBQ1gsQ0FBQztZQUVELG9EQUFvRDtZQUNwRCxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEIsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFXO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLO1FBQ1YsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFnQjtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvQyxxREFBcUQ7UUFDckQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxrQkFBWSxDQUFDLGdCQUFnQixRQUFRLGdCQUFnQixDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQWhGRCwwQkFnRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vQGF3cy1jZGsvdG1wLXRvb2xraXQtaGVscGVycy9zcmMvYXBpJztcblxuZXhwb3J0IHsgVFJBTlNJRU5UX0NPTlRFWFRfS0VZIH0gZnJvbSAnLi9zZXR0aW5ncyc7XG5leHBvcnQgY29uc3QgUFJPSkVDVF9DT05URVhUID0gJ2Nkay5jb250ZXh0Lmpzb24nO1xuXG5pbnRlcmZhY2UgQ29udGV4dEJhZyB7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSBuYW1lIG9mIHRoZSBjb250ZXh0LiBXaWxsIGJlIHVzZWQgdG8gcG90ZW50aWFsbHlcbiAgICogc2F2ZSBuZXcgY29udGV4dCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBmaWxlLlxuICAgKi9cbiAgZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0IHZhbHVlcy5cbiAgICovXG4gIGJhZzogU2V0dGluZ3M7XG59XG5cbi8qKlxuICogQ2xhc3MgdGhhdCBzdXBwb3J0cyBvdmVybGF5aW5nIHByb3BlcnR5IGJhZ3NcbiAqXG4gKiBSZWFkcyBjb21lIGZyb20gdGhlIGZpcnN0IHByb3BlcnR5IGJhZyB0aGF0IGNhbiBoYXMgdGhlIGdpdmVuIGtleSxcbiAqIHdyaXRlcyBnbyB0byB0aGUgZmlyc3QgcHJvcGVydHkgYmFnIHRoYXQgaXMgbm90IHJlYWRvbmx5LiBBIHdyaXRlXG4gKiB3aWxsIHJlbW92ZSB0aGUgdmFsdWUgZnJvbSBhbGwgcHJvcGVydHkgYmFncyBhZnRlciB0aGUgZmlyc3RcbiAqIHdyaXRhYmxlIG9uZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRleHQge1xuICBwcml2YXRlIHJlYWRvbmx5IGJhZ3M6IFNldHRpbmdzW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZU5hbWVzOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdO1xuXG4gIGNvbnN0cnVjdG9yKC4uLmJhZ3M6IENvbnRleHRCYWdbXSkge1xuICAgIHRoaXMuYmFncyA9IGJhZ3MubGVuZ3RoID4gMCA/IGJhZ3MubWFwKChiKSA9PiBiLmJhZykgOiBbbmV3IFNldHRpbmdzKCldO1xuICAgIHRoaXMuZmlsZU5hbWVzID1cbiAgICAgIGJhZ3MubGVuZ3RoID4gMCA/IGJhZ3MubWFwKChiKSA9PiBiLmZpbGVOYW1lKSA6IFsnZGVmYXVsdCddO1xuICB9XG5cbiAgcHVibGljIGdldCBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5hbGwpO1xuICB9XG5cbiAgcHVibGljIGhhcyhrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmtleXMuaW5kZXhPZihrZXkpID4gLTE7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbCgpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBsZXQgcmV0ID0gbmV3IFNldHRpbmdzKCk7XG5cbiAgICAvLyBJbiByZXZlcnNlIG9yZGVyIHNvIGtleXMgdG8gdGhlIGxlZnQgb3ZlcndyaXRlIGtleXMgdG8gdGhlIHJpZ2h0IG9mIHRoZW1cbiAgICBmb3IgKGNvbnN0IGJhZyBvZiBbLi4udGhpcy5iYWdzXS5yZXZlcnNlKCkpIHtcbiAgICAgIHJldCA9IHJldC5tZXJnZShiYWcpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQuYWxsO1xuICB9XG5cbiAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgZm9yIChjb25zdCBiYWcgb2YgdGhpcy5iYWdzKSB7XG4gICAgICBjb25zdCB2ID0gYmFnLmdldChba2V5XSk7XG4gICAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGZvciAoY29uc3QgYmFnIG9mIHRoaXMuYmFncykge1xuICAgICAgaWYgKGJhZy5yZWFkT25seSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsIGJhZ3MgcGFzdCB0aGUgZmlyc3Qgb25lIGhhdmUgdGhlIHZhbHVlIGVyYXNlZFxuICAgICAgYmFnLnNldChba2V5XSwgdmFsdWUpO1xuICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVuc2V0KGtleTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXQoa2V5LCB1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMua2V5cykge1xuICAgICAgdGhpcy51bnNldChrZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgc3BlY2lmaWMgY29udGV4dCBmaWxlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2F2ZShmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx0aGlzPiB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbGVOYW1lcy5pbmRleE9mKGZpbGVOYW1lKTtcblxuICAgIC8vIEZpbGUgbm90IGZvdW5kLCBkb24ndCBkbyBhbnl0aGluZyBpbiB0aGlzIHNjZW5hcmlvXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgY29uc3QgYmFnID0gdGhpcy5iYWdzW2luZGV4XTtcbiAgICBpZiAoYmFnLnJlYWRPbmx5KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBDb250ZXh0IGZpbGUgJHtmaWxlTmFtZX0gaXMgcmVhZCBvbmx5IWApO1xuICAgIH1cblxuICAgIGF3YWl0IGJhZy5zYXZlKGZpbGVOYW1lKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19
@@ -1,5 +1,6 @@
1
1
  import type * as cxapi from '@aws-cdk/cx-api';
2
- import { type StackDetails } from '@aws-cdk/tmp-toolkit-helpers';
2
+ import { type StackDetails } from '../../../../@aws-cdk/tmp-toolkit-helpers';
3
+ import { type IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
3
4
  export declare enum DefaultSelection {
4
5
  /**
5
6
  * Returns an empty selection in case there are no selectors.
@@ -77,12 +78,13 @@ export declare class CloudAssembly {
77
78
  * The directory this CloudAssembly was read from
78
79
  */
79
80
  readonly directory: string;
80
- constructor(assembly: cxapi.CloudAssembly);
81
+ private readonly ioHelper;
82
+ constructor(assembly: cxapi.CloudAssembly, ioHelper: IoHelper);
81
83
  selectStacks(selector: StackSelector, options: SelectStacksOptions): Promise<StackCollection>;
82
84
  private selectTopLevelStacks;
83
- protected selectMatchingStacks(stacks: cxapi.CloudFormationStackArtifact[], patterns: string[], extend?: ExtendedStackSelection): StackCollection;
85
+ protected selectMatchingStacks(stacks: cxapi.CloudFormationStackArtifact[], patterns: string[], extend?: ExtendedStackSelection): Promise<StackCollection>;
84
86
  private selectDefaultStacks;
85
- protected extendStacks(matched: cxapi.CloudFormationStackArtifact[], all: cxapi.CloudFormationStackArtifact[], extend?: ExtendedStackSelection): StackCollection;
87
+ protected extendStacks(matched: cxapi.CloudFormationStackArtifact[], all: cxapi.CloudFormationStackArtifact[], extend?: ExtendedStackSelection): Promise<StackCollection>;
86
88
  /**
87
89
  * Select a single stack by its ID
88
90
  */