aws-cdk 2.1007.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/THIRD_PARTY_LICENSES +24 -6
  2. package/build-info.json +2 -2
  3. package/db.json.gz +0 -0
  4. package/lib/api/aws-auth.d.ts +1 -0
  5. package/lib/api/{logs/index.js → aws-auth.js} +2 -3
  6. package/lib/api/bootstrap.d.ts +1 -0
  7. package/lib/api/bootstrap.js +18 -0
  8. package/lib/api/cloud-assembly.d.ts +1 -0
  9. package/lib/api/cloud-assembly.js +18 -0
  10. package/lib/api/cloudformation.d.ts +1 -0
  11. package/lib/api/cloudformation.js +18 -0
  12. package/lib/api/context.d.ts +1 -40
  13. package/lib/api/context.js +16 -80
  14. package/lib/api/deployments.d.ts +1 -0
  15. package/lib/api/deployments.js +18 -0
  16. package/lib/api/environment.d.ts +1 -0
  17. package/lib/api/environment.js +18 -0
  18. package/lib/api/garbage-collection.d.ts +1 -0
  19. package/lib/api/garbage-collection.js +18 -0
  20. package/lib/api/hotswap.d.ts +1 -0
  21. package/lib/api/hotswap.js +18 -0
  22. package/lib/api/index.d.ts +5 -1
  23. package/lib/api/index.js +6 -2
  24. package/lib/api/logs-monitor.d.ts +1 -0
  25. package/lib/api/logs-monitor.js +18 -0
  26. package/lib/api/notices.d.ts +1 -0
  27. package/lib/api/notices.js +18 -0
  28. package/lib/api/plugin.d.ts +1 -0
  29. package/lib/api/{garbage-collection/index.js → plugin.js} +2 -2
  30. package/lib/api/resource-import.d.ts +1 -0
  31. package/lib/api/resource-import.js +18 -0
  32. package/lib/api/rwlock.d.ts +1 -0
  33. package/lib/api/{resource-import/index.js → rwlock.js} +2 -3
  34. package/lib/api/settings.d.ts +1 -26
  35. package/lib/api/settings.js +16 -103
  36. package/lib/api/stack-events.d.ts +1 -0
  37. package/lib/api/stack-events.js +18 -0
  38. package/lib/api/tags.d.ts +1 -9
  39. package/lib/api/tags.js +16 -8
  40. package/lib/api/toolkit-info.d.ts +1 -52
  41. package/lib/api/toolkit-info.js +16 -152
  42. package/lib/api/tree.d.ts +1 -31
  43. package/lib/api/tree.js +16 -35
  44. package/lib/api/work-graph.d.ts +1 -0
  45. package/lib/api/work-graph.js +18 -0
  46. package/lib/api-private.d.ts +3 -0
  47. package/lib/api-private.js +22 -0
  48. package/lib/cli/cdk-toolkit.d.ts +6 -5
  49. package/lib/cli/cdk-toolkit.js +74 -44
  50. package/lib/cli/cli.d.ts +1 -1
  51. package/lib/cli/cli.js +21 -19
  52. package/lib/cli/io-host/cli-io-host.js +2 -2
  53. package/lib/cli/pretty-print-error.js +3 -1
  54. package/lib/cli/util/npm.d.ts +4 -1
  55. package/lib/cli/util/npm.js +25 -13
  56. package/lib/cli/version.d.ts +1 -1
  57. package/lib/cli/version.js +21 -25
  58. package/lib/commands/context.js +3 -2
  59. package/lib/commands/init/init.js +3 -2
  60. package/lib/commands/list-stacks.js +4 -4
  61. package/lib/context-providers/ami.d.ts +1 -13
  62. package/lib/context-providers/ami.js +16 -48
  63. package/lib/context-providers/availability-zones.d.ts +1 -13
  64. package/lib/context-providers/availability-zones.js +16 -25
  65. package/lib/context-providers/cc-api-provider.d.ts +1 -30
  66. package/lib/context-providers/cc-api-provider.js +16 -142
  67. package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -13
  68. package/lib/context-providers/endpoint-service-availability-zones.js +16 -31
  69. package/lib/context-providers/hosted-zones.d.ts +1 -12
  70. package/lib/context-providers/hosted-zones.js +16 -65
  71. package/lib/context-providers/index.d.ts +1 -44
  72. package/lib/context-providers/index.js +15 -126
  73. package/lib/context-providers/keys.d.ts +1 -13
  74. package/lib/context-providers/keys.js +16 -50
  75. package/lib/context-providers/load-balancers.d.ts +1 -20
  76. package/lib/context-providers/load-balancers.js +16 -154
  77. package/lib/context-providers/security-groups.d.ts +1 -9
  78. package/lib/context-providers/security-groups.js +16 -66
  79. package/lib/context-providers/ssm-parameters.d.ts +1 -25
  80. package/lib/context-providers/ssm-parameters.js +16 -57
  81. package/lib/context-providers/vpcs.d.ts +1 -13
  82. package/lib/context-providers/vpcs.js +16 -285
  83. package/lib/cxapp/cloud-assembly.d.ts +79 -0
  84. package/lib/cxapp/cloud-assembly.js +108 -0
  85. package/lib/{api/cxapp → cxapp}/cloud-executable.d.ts +6 -4
  86. package/lib/cxapp/cloud-executable.js +92 -0
  87. package/lib/{api/cxapp → cxapp}/environments.d.ts +1 -2
  88. package/lib/{api/cxapp → cxapp}/environments.js +2 -2
  89. package/lib/cxapp/exec.d.ts +14 -0
  90. package/lib/cxapp/exec.js +157 -0
  91. package/lib/cxapp/index.d.ts +4 -0
  92. package/lib/{api/bootstrap → cxapp}/index.js +5 -3
  93. package/lib/index.js +133605 -124560
  94. package/lib/init-templates/.init-version.json +1 -1
  95. package/lib/init-templates/.recommended-feature-flags.json +2 -1
  96. package/lib/legacy-aws-auth.d.ts +74 -0
  97. package/lib/legacy-aws-auth.js +40 -0
  98. package/lib/legacy-exports-source.d.ts +13 -18
  99. package/lib/legacy-exports-source.js +42 -49
  100. package/lib/legacy-exports.d.ts +3 -6
  101. package/lib/legacy-exports.js +5 -5
  102. package/lib/legacy-types.d.ts +31 -0
  103. package/lib/legacy-types.js +3 -0
  104. package/package.json +8 -7
  105. package/lib/api/aws-auth/account-cache.d.ts +0 -36
  106. package/lib/api/aws-auth/account-cache.js +0 -99
  107. package/lib/api/aws-auth/awscli-compatible.d.ts +0 -42
  108. package/lib/api/aws-auth/awscli-compatible.js +0 -263
  109. package/lib/api/aws-auth/cached.d.ts +0 -11
  110. package/lib/api/aws-auth/cached.js +0 -26
  111. package/lib/api/aws-auth/credential-plugins.d.ts +0 -36
  112. package/lib/api/aws-auth/credential-plugins.js +0 -152
  113. package/lib/api/aws-auth/index.d.ts +0 -3
  114. package/lib/api/aws-auth/index.js +0 -20
  115. package/lib/api/aws-auth/provider-caching.d.ts +0 -13
  116. package/lib/api/aws-auth/provider-caching.js +0 -24
  117. package/lib/api/aws-auth/sdk-logger.d.ts +0 -69
  118. package/lib/api/aws-auth/sdk-logger.js +0 -124
  119. package/lib/api/aws-auth/sdk-provider.d.ts +0 -207
  120. package/lib/api/aws-auth/sdk-provider.js +0 -357
  121. package/lib/api/aws-auth/sdk.d.ts +0 -229
  122. package/lib/api/aws-auth/sdk.js +0 -373
  123. package/lib/api/aws-auth/tracing.d.ts +0 -11
  124. package/lib/api/aws-auth/tracing.js +0 -60
  125. package/lib/api/aws-auth/user-agent.d.ts +0 -7
  126. package/lib/api/aws-auth/user-agent.js +0 -20
  127. package/lib/api/aws-auth/util.d.ts +0 -6
  128. package/lib/api/aws-auth/util.js +0 -23
  129. package/lib/api/bootstrap/bootstrap-environment.d.ts +0 -35
  130. package/lib/api/bootstrap/bootstrap-environment.js +0 -321
  131. package/lib/api/bootstrap/bootstrap-props.d.ts +0 -130
  132. package/lib/api/bootstrap/bootstrap-props.js +0 -14
  133. package/lib/api/bootstrap/deploy-bootstrap.d.ts +0 -39
  134. package/lib/api/bootstrap/deploy-bootstrap.js +0 -141
  135. package/lib/api/bootstrap/index.d.ts +0 -2
  136. package/lib/api/bootstrap/legacy-template.d.ts +0 -2
  137. package/lib/api/bootstrap/legacy-template.js +0 -82
  138. package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +0 -85
  139. package/lib/api/cloudformation/evaluate-cloudformation-template.js +0 -440
  140. package/lib/api/cloudformation/index.d.ts +0 -4
  141. package/lib/api/cloudformation/index.js +0 -21
  142. package/lib/api/cloudformation/nested-stack-helpers.d.ts +0 -19
  143. package/lib/api/cloudformation/nested-stack-helpers.js +0 -86
  144. package/lib/api/cloudformation/stack-helpers.d.ts +0 -88
  145. package/lib/api/cloudformation/stack-helpers.js +0 -158
  146. package/lib/api/cloudformation/template-body-parameter.d.ts +0 -22
  147. package/lib/api/cloudformation/template-body-parameter.js +0 -104
  148. package/lib/api/cxapp/cloud-assembly.d.ts +0 -137
  149. package/lib/api/cxapp/cloud-assembly.js +0 -305
  150. package/lib/api/cxapp/cloud-executable.js +0 -89
  151. package/lib/api/cxapp/exec.d.ts +0 -57
  152. package/lib/api/cxapp/exec.js +0 -279
  153. package/lib/api/deployments/asset-manifest-builder.d.ts +0 -8
  154. package/lib/api/deployments/asset-manifest-builder.js +0 -35
  155. package/lib/api/deployments/asset-publishing.d.ts +0 -60
  156. package/lib/api/deployments/asset-publishing.js +0 -141
  157. package/lib/api/deployments/assets.d.ts +0 -11
  158. package/lib/api/deployments/assets.js +0 -109
  159. package/lib/api/deployments/cfn-api.d.ts +0 -138
  160. package/lib/api/deployments/cfn-api.js +0 -438
  161. package/lib/api/deployments/checks.d.ts +0 -9
  162. package/lib/api/deployments/checks.js +0 -72
  163. package/lib/api/deployments/deploy-stack.d.ts +0 -155
  164. package/lib/api/deployments/deploy-stack.js +0 -478
  165. package/lib/api/deployments/deployment-method.d.ts +0 -24
  166. package/lib/api/deployments/deployment-method.js +0 -3
  167. package/lib/api/deployments/deployment-result.d.ts +0 -21
  168. package/lib/api/deployments/deployment-result.js +0 -10
  169. package/lib/api/deployments/deployments.d.ts +0 -296
  170. package/lib/api/deployments/deployments.js +0 -331
  171. package/lib/api/deployments/hotswap-deployments.d.ts +0 -17
  172. package/lib/api/deployments/hotswap-deployments.js +0 -441
  173. package/lib/api/deployments/index.d.ts +0 -5
  174. package/lib/api/deployments/index.js +0 -22
  175. package/lib/api/environment/environment-access.d.ts +0 -140
  176. package/lib/api/environment/environment-access.js +0 -202
  177. package/lib/api/environment/environment-resources.d.ts +0 -75
  178. package/lib/api/environment/environment-resources.js +0 -207
  179. package/lib/api/environment/index.d.ts +0 -3
  180. package/lib/api/environment/index.js +0 -20
  181. package/lib/api/environment/placeholders.d.ts +0 -10
  182. package/lib/api/environment/placeholders.js +0 -23
  183. package/lib/api/garbage-collection/garbage-collector.d.ts +0 -158
  184. package/lib/api/garbage-collection/garbage-collector.js +0 -599
  185. package/lib/api/garbage-collection/index.d.ts +0 -1
  186. package/lib/api/garbage-collection/progress-printer.d.ts +0 -23
  187. package/lib/api/garbage-collection/progress-printer.js +0 -70
  188. package/lib/api/garbage-collection/stack-refresh.d.ts +0 -49
  189. package/lib/api/garbage-collection/stack-refresh.js +0 -151
  190. package/lib/api/hotswap/appsync-mapping-templates.d.ts +0 -4
  191. package/lib/api/hotswap/appsync-mapping-templates.js +0 -162
  192. package/lib/api/hotswap/code-build-projects.d.ts +0 -4
  193. package/lib/api/hotswap/code-build-projects.js +0 -62
  194. package/lib/api/hotswap/common.d.ts +0 -89
  195. package/lib/api/hotswap/common.js +0 -128
  196. package/lib/api/hotswap/ecs-services.d.ts +0 -4
  197. package/lib/api/hotswap/ecs-services.js +0 -159
  198. package/lib/api/hotswap/lambda-functions.d.ts +0 -4
  199. package/lib/api/hotswap/lambda-functions.js +0 -297
  200. package/lib/api/hotswap/s3-bucket-deployments.d.ts +0 -5
  201. package/lib/api/hotswap/s3-bucket-deployments.js +0 -117
  202. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -4
  203. package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
  204. package/lib/api/logs/find-cloudwatch-logs.d.ts +0 -25
  205. package/lib/api/logs/find-cloudwatch-logs.js +0 -95
  206. package/lib/api/logs/index.d.ts +0 -2
  207. package/lib/api/logs/logs-monitor.d.ts +0 -76
  208. package/lib/api/logs/logs-monitor.js +0 -187
  209. package/lib/api/plugin/context-provider-plugin.d.ts +0 -6
  210. package/lib/api/plugin/context-provider-plugin.js +0 -7
  211. package/lib/api/plugin/index.d.ts +0 -3
  212. package/lib/api/plugin/index.js +0 -20
  213. package/lib/api/plugin/mode.d.ts +0 -4
  214. package/lib/api/plugin/mode.js +0 -9
  215. package/lib/api/plugin/plugin.d.ts +0 -63
  216. package/lib/api/plugin/plugin.js +0 -102
  217. package/lib/api/resource-import/importer.d.ts +0 -215
  218. package/lib/api/resource-import/importer.js +0 -322
  219. package/lib/api/resource-import/index.d.ts +0 -2
  220. package/lib/api/resource-import/migrator.d.ts +0 -26
  221. package/lib/api/resource-import/migrator.js +0 -71
  222. package/lib/api/stack-events/index.d.ts +0 -3
  223. package/lib/api/stack-events/index.js +0 -20
  224. package/lib/api/stack-events/stack-activity-monitor.d.ts +0 -100
  225. package/lib/api/stack-events/stack-activity-monitor.js +0 -142
  226. package/lib/api/stack-events/stack-event-poller.d.ts +0 -69
  227. package/lib/api/stack-events/stack-event-poller.js +0 -128
  228. package/lib/api/stack-events/stack-progress-monitor.d.ts +0 -48
  229. package/lib/api/stack-events/stack-progress-monitor.js +0 -94
  230. package/lib/api/stack-events/stack-status.d.ts +0 -42
  231. package/lib/api/stack-events/stack-status.js +0 -88
  232. package/lib/api/util/rwlock.d.ts +0 -65
  233. package/lib/api/util/rwlock.js +0 -179
  234. package/lib/api/work-graph/index.d.ts +0 -3
  235. package/lib/api/work-graph/index.js +0 -20
  236. package/lib/api/work-graph/work-graph-builder.d.ts +0 -34
  237. package/lib/api/work-graph/work-graph-builder.js +0 -168
  238. package/lib/api/work-graph/work-graph-types.d.ts +0 -50
  239. package/lib/api/work-graph/work-graph-types.js +0 -13
  240. package/lib/api/work-graph/work-graph.d.ts +0 -72
  241. package/lib/api/work-graph/work-graph.js +0 -346
  242. package/lib/cli/activity-printer/base.d.ts +0 -50
  243. package/lib/cli/activity-printer/base.js +0 -114
  244. package/lib/cli/activity-printer/current.d.ts +0 -26
  245. package/lib/cli/activity-printer/current.js +0 -118
  246. package/lib/cli/activity-printer/display.d.ts +0 -13
  247. package/lib/cli/activity-printer/display.js +0 -80
  248. package/lib/cli/activity-printer/history.d.ts +0 -32
  249. package/lib/cli/activity-printer/history.js +0 -108
  250. package/lib/cli/activity-printer/index.d.ts +0 -3
  251. package/lib/cli/activity-printer/index.js +0 -20
  252. package/lib/notices.d.ts +0 -203
  253. package/lib/notices.js +0 -411
@@ -1,305 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StackCollection = exports.CloudAssembly = exports.ExtendedStackSelection = exports.DefaultSelection = void 0;
4
- exports.sanitizePatterns = sanitizePatterns;
5
- const cx_api_1 = require("@aws-cdk/cx-api");
6
- const chalk = require("chalk");
7
- const minimatch_1 = require("minimatch");
8
- const semver = require("semver");
9
- const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
10
- const private_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private");
11
- const util_1 = require("../../util");
12
- var DefaultSelection;
13
- (function (DefaultSelection) {
14
- /**
15
- * Returns an empty selection in case there are no selectors.
16
- */
17
- DefaultSelection["None"] = "none";
18
- /**
19
- * If the app includes a single stack, returns it. Otherwise throws an exception.
20
- * This behavior is used by "deploy".
21
- */
22
- DefaultSelection["OnlySingle"] = "single";
23
- /**
24
- * Returns all stacks in the main (top level) assembly only.
25
- */
26
- DefaultSelection["MainAssembly"] = "main";
27
- /**
28
- * If no selectors are provided, returns all stacks in the app,
29
- * including stacks inside nested assemblies.
30
- */
31
- DefaultSelection["AllStacks"] = "all";
32
- })(DefaultSelection || (exports.DefaultSelection = DefaultSelection = {}));
33
- /**
34
- * When selecting stacks, what other stacks to include because of dependencies
35
- */
36
- var ExtendedStackSelection;
37
- (function (ExtendedStackSelection) {
38
- /**
39
- * Don't select any extra stacks
40
- */
41
- ExtendedStackSelection[ExtendedStackSelection["None"] = 0] = "None";
42
- /**
43
- * Include stacks that this stack depends on
44
- */
45
- ExtendedStackSelection[ExtendedStackSelection["Upstream"] = 1] = "Upstream";
46
- /**
47
- * Include stacks that depend on this stack
48
- */
49
- ExtendedStackSelection[ExtendedStackSelection["Downstream"] = 2] = "Downstream";
50
- })(ExtendedStackSelection || (exports.ExtendedStackSelection = ExtendedStackSelection = {}));
51
- /**
52
- * A single Cloud Assembly and the operations we do on it to deploy the artifacts inside
53
- */
54
- class CloudAssembly {
55
- constructor(assembly, ioHelper) {
56
- this.assembly = assembly;
57
- this.directory = assembly.directory;
58
- this.ioHelper = ioHelper;
59
- }
60
- async selectStacks(selector, options) {
61
- const asm = this.assembly;
62
- const topLevelStacks = asm.stacks;
63
- const stacks = semver.major(asm.version) < 10 ? asm.stacks : asm.stacksRecursively;
64
- const allTopLevel = selector.allTopLevel ?? false;
65
- const patterns = sanitizePatterns(selector.patterns);
66
- if (stacks.length === 0) {
67
- if (options.ignoreNoStacks) {
68
- return new StackCollection(this, []);
69
- }
70
- throw new api_1.ToolkitError('This app contains no stacks');
71
- }
72
- if (allTopLevel) {
73
- return this.selectTopLevelStacks(stacks, topLevelStacks, options.extend);
74
- }
75
- else if (patterns.length > 0) {
76
- return this.selectMatchingStacks(stacks, patterns, options.extend);
77
- }
78
- else {
79
- return this.selectDefaultStacks(stacks, topLevelStacks, options.defaultBehavior);
80
- }
81
- }
82
- async selectTopLevelStacks(stacks, topLevelStacks, extend = ExtendedStackSelection.None) {
83
- if (topLevelStacks.length > 0) {
84
- return this.extendStacks(topLevelStacks, stacks, extend);
85
- }
86
- else {
87
- throw new api_1.ToolkitError('No stack found in the main cloud assembly. Use "list" to print manifest');
88
- }
89
- }
90
- async selectMatchingStacks(stacks, patterns, extend = ExtendedStackSelection.None) {
91
- const matchingPattern = (pattern) => (stack) => (0, minimatch_1.minimatch)(stack.hierarchicalId, pattern);
92
- const matchedStacks = (0, util_1.flatten)(patterns.map(pattern => stacks.filter(matchingPattern(pattern))));
93
- return this.extendStacks(matchedStacks, stacks, extend);
94
- }
95
- selectDefaultStacks(stacks, topLevelStacks, defaultSelection) {
96
- switch (defaultSelection) {
97
- case DefaultSelection.MainAssembly:
98
- return new StackCollection(this, topLevelStacks);
99
- case DefaultSelection.AllStacks:
100
- return new StackCollection(this, stacks);
101
- case DefaultSelection.None:
102
- return new StackCollection(this, []);
103
- case DefaultSelection.OnlySingle:
104
- if (topLevelStacks.length === 1) {
105
- return new StackCollection(this, topLevelStacks);
106
- }
107
- else {
108
- throw new api_1.ToolkitError('Since this app includes more than a single stack, specify which stacks to use (wildcards are supported) or specify `--all`\n' +
109
- `Stacks: ${stacks.map(x => x.hierarchicalId).join(' · ')}`);
110
- }
111
- default:
112
- throw new api_1.ToolkitError(`invalid default behavior: ${defaultSelection}`);
113
- }
114
- }
115
- async extendStacks(matched, all, extend = ExtendedStackSelection.None) {
116
- const allStacks = new Map();
117
- for (const stack of all) {
118
- allStacks.set(stack.hierarchicalId, stack);
119
- }
120
- const index = indexByHierarchicalId(matched);
121
- switch (extend) {
122
- case ExtendedStackSelection.Downstream:
123
- await includeDownstreamStacks(this.ioHelper, index, allStacks);
124
- break;
125
- case ExtendedStackSelection.Upstream:
126
- await includeUpstreamStacks(this.ioHelper, index, allStacks);
127
- break;
128
- }
129
- // Filter original array because it is in the right order
130
- const selectedList = all.filter(s => index.has(s.hierarchicalId));
131
- return new StackCollection(this, selectedList);
132
- }
133
- /**
134
- * Select a single stack by its ID
135
- */
136
- stackById(stackId) {
137
- return new StackCollection(this, [this.assembly.getStackArtifact(stackId)]);
138
- }
139
- }
140
- exports.CloudAssembly = CloudAssembly;
141
- /**
142
- * A collection of stacks and related artifacts
143
- *
144
- * In practice, not all artifacts in the CloudAssembly are created equal;
145
- * stacks can be selected independently, but other artifacts such as asset
146
- * bundles cannot.
147
- */
148
- class StackCollection {
149
- constructor(assembly, stackArtifacts) {
150
- this.assembly = assembly;
151
- this.stackArtifacts = stackArtifacts;
152
- }
153
- get stackCount() {
154
- return this.stackArtifacts.length;
155
- }
156
- get firstStack() {
157
- if (this.stackCount < 1) {
158
- throw new api_1.ToolkitError('StackCollection contains no stack artifacts (trying to access the first one)');
159
- }
160
- return this.stackArtifacts[0];
161
- }
162
- get stackIds() {
163
- return this.stackArtifacts.map(s => s.id);
164
- }
165
- get hierarchicalIds() {
166
- return this.stackArtifacts.map(s => s.hierarchicalId);
167
- }
168
- withDependencies() {
169
- const allData = [];
170
- for (const stack of this.stackArtifacts) {
171
- const data = {
172
- id: stack.displayName ?? stack.id,
173
- name: stack.stackName,
174
- environment: stack.environment,
175
- dependencies: [],
176
- };
177
- for (const dependencyId of stack.dependencies.map(x => x.id)) {
178
- if (dependencyId.includes('.assets')) {
179
- continue;
180
- }
181
- const depStack = this.assembly.stackById(dependencyId);
182
- if (depStack.firstStack.dependencies.filter((dep) => !(dep.id).includes('.assets')).length > 0) {
183
- for (const stackDetail of depStack.withDependencies()) {
184
- data.dependencies.push({
185
- id: stackDetail.id,
186
- dependencies: stackDetail.dependencies,
187
- });
188
- }
189
- }
190
- else {
191
- data.dependencies.push({
192
- id: depStack.firstStack.displayName ?? depStack.firstStack.id,
193
- dependencies: [],
194
- });
195
- }
196
- }
197
- allData.push(data);
198
- }
199
- return allData;
200
- }
201
- reversed() {
202
- const arts = [...this.stackArtifacts];
203
- arts.reverse();
204
- return new StackCollection(this.assembly, arts);
205
- }
206
- filter(predicate) {
207
- return new StackCollection(this.assembly, this.stackArtifacts.filter(predicate));
208
- }
209
- concat(...others) {
210
- return new StackCollection(this.assembly, this.stackArtifacts.concat(...others.map(o => o.stackArtifacts)));
211
- }
212
- /**
213
- * Extracts 'aws:cdk:warning|info|error' metadata entries from the stack synthesis
214
- */
215
- async validateMetadata(failAt = 'error', logger = async () => {
216
- }) {
217
- let warnings = false;
218
- let errors = false;
219
- for (const stack of this.stackArtifacts) {
220
- for (const message of stack.messages) {
221
- switch (message.level) {
222
- case cx_api_1.SynthesisMessageLevel.WARNING:
223
- warnings = true;
224
- await logger('warn', message);
225
- break;
226
- case cx_api_1.SynthesisMessageLevel.ERROR:
227
- errors = true;
228
- await logger('error', message);
229
- break;
230
- case cx_api_1.SynthesisMessageLevel.INFO:
231
- await logger('info', message);
232
- break;
233
- }
234
- }
235
- }
236
- if (errors && failAt != 'none') {
237
- throw api_1.AssemblyError.withStacks('Found errors', this.stackArtifacts);
238
- }
239
- if (warnings && failAt === 'warn') {
240
- throw api_1.AssemblyError.withStacks('Found warnings (--strict mode)', this.stackArtifacts);
241
- }
242
- }
243
- }
244
- exports.StackCollection = StackCollection;
245
- function indexByHierarchicalId(stacks) {
246
- const result = new Map();
247
- for (const stack of stacks) {
248
- result.set(stack.hierarchicalId, stack);
249
- }
250
- return result;
251
- }
252
- /**
253
- * Calculate the transitive closure of stack dependents.
254
- *
255
- * Modifies `selectedStacks` in-place.
256
- */
257
- async function includeDownstreamStacks(ioHelper, selectedStacks, allStacks) {
258
- const added = new Array();
259
- let madeProgress;
260
- do {
261
- madeProgress = false;
262
- for (const [id, stack] of allStacks) {
263
- // Select this stack if it's not selected yet AND it depends on a stack that's in the selected set
264
- if (!selectedStacks.has(id) && (stack.dependencies || []).some(dep => selectedStacks.has(dep.id))) {
265
- selectedStacks.set(id, stack);
266
- added.push(id);
267
- madeProgress = true;
268
- }
269
- }
270
- } while (madeProgress);
271
- if (added.length > 0) {
272
- await ioHelper.notify(private_1.IO.DEFAULT_ASSEMBLY_INFO.msg(`Including depending stacks: ${chalk.bold(added.join(', '))}`));
273
- }
274
- }
275
- /**
276
- * Calculate the transitive closure of stack dependencies.
277
- *
278
- * Modifies `selectedStacks` in-place.
279
- */
280
- async function includeUpstreamStacks(ioHelper, selectedStacks, allStacks) {
281
- const added = new Array();
282
- let madeProgress = true;
283
- while (madeProgress) {
284
- madeProgress = false;
285
- for (const stack of selectedStacks.values()) {
286
- // Select an additional stack if it's not selected yet and a dependency of a selected stack (and exists, obviously)
287
- for (const dependencyId of stack.dependencies.map(x => x.manifest.displayName ?? x.id)) {
288
- if (!selectedStacks.has(dependencyId) && allStacks.has(dependencyId)) {
289
- added.push(dependencyId);
290
- selectedStacks.set(dependencyId, allStacks.get(dependencyId));
291
- madeProgress = true;
292
- }
293
- }
294
- }
295
- }
296
- if (added.length > 0) {
297
- await ioHelper.notify(private_1.IO.DEFAULT_ASSEMBLY_INFO.msg(`Including dependency stacks: ${chalk.bold(added.join(', '))}`));
298
- }
299
- }
300
- function sanitizePatterns(patterns) {
301
- let sanitized = patterns.filter(s => s != null); // filter null/undefined
302
- sanitized = [...new Set(sanitized)]; // make them unique
303
- return sanitized;
304
- }
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbG91ZC1hc3NlbWJseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE2YUEsNENBSUM7QUFoYkQsNENBQXdEO0FBQ3hELCtCQUErQjtBQUMvQix5Q0FBc0M7QUFDdEMsaUNBQWlDO0FBRWpDLDBFQUErRjtBQUMvRix5RkFBZ0c7QUFDaEcscUNBQXFDO0FBRXJDLElBQVksZ0JBc0JYO0FBdEJELFdBQVksZ0JBQWdCO0lBQzFCOztPQUVHO0lBQ0gsaUNBQWEsQ0FBQTtJQUViOzs7T0FHRztJQUNILHlDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gseUNBQXFCLENBQUE7SUFFckI7OztPQUdHO0lBQ0gscUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQXRCVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQXNCM0I7QUFzQkQ7O0dBRUc7QUFDSCxJQUFZLHNCQWVYO0FBZkQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCxtRUFBSSxDQUFBO0lBRUo7O09BRUc7SUFDSCwyRUFBUSxDQUFBO0lBRVI7O09BRUc7SUFDSCwrRUFBVSxDQUFBO0FBQ1osQ0FBQyxFQWZXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBZWpDO0FBa0JEOztHQUVHO0FBQ0gsTUFBYSxhQUFhO0lBUXhCLFlBQTRCLFFBQTZCLEVBQUUsUUFBa0I7UUFBakQsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQXVCLEVBQUUsT0FBNEI7UUFDN0UsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMxQixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2xDLE1BQU0sTUFBTSxH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LFFBQWtCO0lBQ2pELElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7SUFDekUsU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO0lBQ3hELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgeyBTeW50aGVzaXNNZXNzYWdlTGV2ZWwgfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgbWluaW1hdGNoIH0gZnJvbSAnbWluaW1hdGNoJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgdHlwZSBTdGFja0RldGFpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi9AYXdzLWNkay90bXAtdG9vbGtpdC1oZWxwZXJzJztcbmltcG9ydCB7IEFzc2VtYmx5RXJyb3IsIFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaSc7XG5pbXBvcnQgeyBJTywgdHlwZSBJb0hlbHBlciB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaS9pby9wcml2YXRlJztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICcuLi8uLi91dGlsJztcblxuZXhwb3J0IGVudW0gRGVmYXVsdFNlbGVjdGlvbiB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGVtcHR5IHNlbGVjdGlvbiBpbiBjYXNlIHRoZXJlIGFyZSBubyBzZWxlY3RvcnMuXG4gICAqL1xuICBOb25lID0gJ25vbmUnLFxuXG4gIC8qKlxuICAgKiBJZiB0aGUgYXBwIGluY2x1ZGVzIGEgc2luZ2xlIHN0YWNrLCByZXR1cm5zIGl0LiBPdGhlcndpc2UgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbiAgICogVGhpcyBiZWhhdmlvciBpcyB1c2VkIGJ5IFwiZGVwbG95XCIuXG4gICAqL1xuICBPbmx5U2luZ2xlID0gJ3NpbmdsZScsXG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIHN0YWNrcyBpbiB0aGUgbWFpbiAodG9wIGxldmVsKSBhc3NlbWJseSBvbmx5LlxuICAgKi9cbiAgTWFpbkFzc2VtYmx5ID0gJ21haW4nLFxuXG4gIC8qKlxuICAgKiBJZiBubyBzZWxlY3RvcnMgYXJlIHByb3ZpZGVkLCByZXR1cm5zIGFsbCBzdGFja3MgaW4gdGhlIGFwcCxcbiAgICogaW5jbHVkaW5nIHN0YWNrcyBpbnNpZGUgbmVzdGVkIGFzc2VtYmxpZXMuXG4gICAqL1xuICBBbGxTdGFja3MgPSAnYWxsJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RTdGFja3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIEV4dGVuZCB0aGUgc2VsZWN0aW9uIHRvIHVwc3RyZWFkL2Rvd25zdHJlYW0gc3RhY2tzXG4gICAqIEBkZWZhdWx0IEV4dGVuZGVkU3RhY2tTZWxlY3Rpb24uTm9uZSBvbmx5IHNlbGVjdCB0aGUgc3BlY2lmaWVkIHN0YWNrcy5cbiAgICovXG4gIGV4dGVuZD86IEV4dGVuZGVkU3RhY2tTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBiZWhhdmlvciBpZiBubyBzZWxlY3RvcnMgYXJlIHByb3ZpZGVkLlxuICAgKi9cbiAgZGVmYXVsdEJlaGF2aW9yOiBEZWZhdWx0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlcGxveSBpZiB0aGUgYXBwIGNvbnRhaW5zIG5vIHN0YWNrcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGlnbm9yZU5vU3RhY2tzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBXaGVuIHNlbGVjdGluZyBzdGFja3MsIHdoYXQgb3RoZXIgc3RhY2tzIHRvIGluY2x1ZGUgYmVjYXVzZSBvZiBkZXBlbmRlbmNpZXNcbiAqL1xuZXhwb3J0IGVudW0gRXh0ZW5kZWRTdGFja1NlbGVjdGlvbiB7XG4gIC8qKlxuICAgKiBEb24ndCBzZWxlY3QgYW55IGV4dHJhIHN0YWNrc1xuICAgKi9cbiAgTm9uZSxcblxuICAvKipcbiAgICogSW5jbHVkZSBzdGFja3MgdGhhdCB0aGlzIHN0YWNrIGRlcGVuZHMgb25cbiAgICovXG4gIFVwc3RyZWFtLFxuXG4gIC8qKlxuICAgKiBJbmNsdWRlIHN0YWNrcyB0aGF0IGRlcGVuZCBvbiB0aGlzIHN0YWNrXG4gICAqL1xuICBEb3duc3RyZWFtLFxufVxuXG4vKipcbiAqIEEgc3BlY2lmaWNhdGlvbiBvZiB3aGljaCBzdGFja3Mgc2hvdWxkIGJlIHNlbGVjdGVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tTZWxlY3RvciB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGFsbCBzdGFja3MgYXQgdGhlIHRvcCBsZXZlbCBhc3NlbWJseSBzaG91bGRcbiAgICogYmUgc2VsZWN0ZWQgYW5kIG5vdGhpbmcgZWxzZVxuICAgKi9cbiAgYWxsVG9wTGV2ZWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGF0dGVybnMgdG8gbWF0Y2ggdGhlIHN0YWNrIGhpZXJhcmNoaWNhbCBpZHNcbiAgICovXG4gIHBhdHRlcm5zOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSBDbG91ZCBBc3NlbWJseSBhbmQgdGhlIG9wZXJhdGlvbnMgd2UgZG8gb24gaXQgdG8gZGVwbG95IHRoZSBhcnRpZmFjdHMgaW5zaWRlXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEFzc2VtYmx5IHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgdGhpcyBDbG91ZEFzc2VtYmx5IHdhcyByZWFkIGZyb21cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgYXNzZW1ibHk6IGN4YXBpLkNsb3VkQXNzZW1ibHksIGlvSGVscGVyOiBJb0hlbHBlcikge1xuICAgIHRoaXMuZGlyZWN0b3J5ID0gYXNzZW1ibHkuZGlyZWN0b3J5O1xuICAgIHRoaXMuaW9IZWxwZXIgPSBpb0hlbHBlcjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZWxlY3RTdGFja3Moc2VsZWN0b3I6IFN0YWNrU2VsZWN0b3IsIG9wdGlvbnM6IFNlbGVjdFN0YWNrc09wdGlvbnMpOiBQcm9taXNlPFN0YWNrQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IGFzbSA9IHRoaXMuYXNzZW1ibHk7XG4gICAgY29uc3QgdG9wTGV2ZWxTdGFja3MgPSBhc20uc3RhY2tzO1xuICAgIGNvbnN0IHN0YWNrcyA9IHNlbXZlci5tYWpvcihhc20udmVyc2lvbikgPCAxMCA/IGFzbS5zdGFja3MgOiBhc20uc3RhY2tzUmVjdXJzaXZlbHk7XG4gICAgY29uc3QgYWxsVG9wTGV2ZWwgPSBzZWxlY3Rvci5hbGxUb3BMZXZlbCA/PyBmYWxzZTtcbiAgICBjb25zdCBwYXR0ZXJucyA9IHNhbml0aXplUGF0dGVybnMoc2VsZWN0b3IucGF0dGVybnMpO1xuXG4gICAgaWYgKHN0YWNrcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChvcHRpb25zLmlnbm9yZU5vU3RhY2tzKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RhY2tDb2xsZWN0aW9uKHRoaXMsIFtdKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ1RoaXMgYXBwIGNvbnRhaW5zIG5vIHN0YWNrcycpO1xuICAgIH1cblxuICAgIGlmIChhbGxUb3BMZXZlbCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0VG9wTGV2ZWxTdGFja3Moc3RhY2tzLCB0b3BMZXZlbFN0YWNrcywgb3B0aW9ucy5leHRlbmQpO1xuICAgIH0gZWxzZSBpZiAocGF0dGVybnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0TWF0Y2hpbmdTdGFja3Moc3RhY2tzLCBwYXR0ZXJucywgb3B0aW9ucy5leHRlbmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3REZWZhdWx0U3RhY2tzKHN0YWNrcywgdG9wTGV2ZWxTdGFja3MsIG9wdGlvbnMuZGVmYXVsdEJlaGF2aW9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbGVjdFRvcExldmVsU3RhY2tzKFxuICAgIHN0YWNrczogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0W10sXG4gICAgdG9wTGV2ZWxTdGFja3M6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdLFxuICAgIGV4dGVuZDogRXh0ZW5kZWRTdGFja1NlbGVjdGlvbiA9IEV4dGVuZGVkU3RhY2tTZWxlY3Rpb24uTm9uZSxcbiAgKTogUHJvbWlzZTxTdGFja0NvbGxlY3Rpb24+IHtcbiAgICBpZiAodG9wTGV2ZWxTdGFja3MubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kU3RhY2tzKHRvcExldmVsU3RhY2tzLCBzdGFja3MsIGV4dGVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ05vIHN0YWNrIGZvdW5kIGluIHRoZSBtYWluIGNsb3VkIGFzc2VtYmx5LiBVc2UgXCJsaXN0XCIgdG8gcHJpbnQgbWFuaWZlc3QnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2VsZWN0TWF0Y2hpbmdTdGFja3MoXG4gICAgc3RhY2tzOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXSxcbiAgICBwYXR0ZXJuczogc3RyaW5nW10sXG4gICAgZXh0ZW5kOiBFeHRlbmRlZFN0YWNrU2VsZWN0aW9uID0gRXh0ZW5kZWRTdGFja1NlbGVjdGlvbi5Ob25lLFxuICApOiBQcm9taXNlPFN0YWNrQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IG1hdGNoaW5nUGF0dGVybiA9IChwYXR0ZXJuOiBzdHJpbmcpID0+IChzdGFjazogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0KSA9PiBtaW5pbWF0Y2goc3RhY2suaGllcmFyY2hpY2FsSWQsIHBhdHRlcm4pO1xuICAgIGNvbnN0IG1hdGNoZWRTdGFja3MgPSBmbGF0dGVuKHBhdHRlcm5zLm1hcChwYXR0ZXJuID0+IHN0YWNrcy5maWx0ZXIobWF0Y2hpbmdQYXR0ZXJuKHBhdHRlcm4pKSkpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kU3RhY2tzKG1hdGNoZWRTdGFja3MsIHN0YWNrcywgZXh0ZW5kKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0RGVmYXVsdFN0YWNrcyhcbiAgICBzdGFja3M6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdLFxuICAgIHRvcExldmVsU3RhY2tzOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXSxcbiAgICBkZWZhdWx0U2VsZWN0aW9uOiBEZWZhdWx0U2VsZWN0aW9uLFxuICApIHtcbiAgICBzd2l0Y2ggKGRlZmF1bHRTZWxlY3Rpb24pIHtcbiAgICAgIGNhc2UgRGVmYXVsdFNlbGVjdGlvbi5NYWluQXNzZW1ibHk6XG4gICAgICAgIHJldHVybiBuZXcgU3RhY2tDb2xsZWN0aW9uKHRoaXMsIHRvcExldmVsU3RhY2tzKTtcbiAgICAgIGNhc2UgRGVmYXVsdFNlbGVjdGlvbi5BbGxTdGFja3M6XG4gICAgICAgIHJldHVybiBuZXcgU3RhY2tDb2xsZWN0aW9uKHRoaXMsIHN0YWNrcyk7XG4gICAgICBjYXNlIERlZmF1bHRTZWxlY3Rpb24uTm9uZTpcbiAgICAgICAgcmV0dXJuIG5ldyBTdGFja0NvbGxlY3Rpb24odGhpcywgW10pO1xuICAgICAgY2FzZSBEZWZhdWx0U2VsZWN0aW9uLk9ubHlTaW5nbGU6XG4gICAgICAgIGlmICh0b3BMZXZlbFN0YWNrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFN0YWNrQ29sbGVjdGlvbih0aGlzLCB0b3BMZXZlbFN0YWNrcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignU2luY2UgdGhpcyBhcHAgaW5jbHVkZXMgbW9yZSB0aGFuIGEgc2luZ2xlIHN0YWNrLCBzcGVjaWZ5IHdoaWNoIHN0YWNrcyB0byB1c2UgKHdpbGRjYXJkcyBhcmUgc3VwcG9ydGVkKSBvciBzcGVjaWZ5IGAtLWFsbGBcXG4nICtcbiAgICAgICAgICBgU3RhY2tzOiAke3N0YWNrcy5tYXAoeCA9PiB4LmhpZXJhcmNoaWNhbElkKS5qb2luKCcgwrcgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYGludmFsaWQgZGVmYXVsdCBiZWhhdmlvcjogJHtkZWZhdWx0U2VsZWN0aW9ufWApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBleHRlbmRTdGFja3MoXG4gICAgbWF0Y2hlZDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0W10sXG4gICAgYWxsOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXSxcbiAgICBleHRlbmQ6IEV4dGVuZGVkU3RhY2tTZWxlY3Rpb24gPSBFeHRlbmRlZFN0YWNrU2VsZWN0aW9uLk5vbmUsXG4gICkge1xuICAgIGNvbnN0IGFsbFN0YWNrcyA9IG5ldyBNYXA8c3RyaW5nLCBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q+KCk7XG4gICAgZm9yIChjb25zdCBzdGFjayBvZiBhbGwpIHtcbiAgICAgIGFsbFN0YWNrcy5zZXQoc3RhY2suaGllcmFyY2hpY2FsSWQsIHN0YWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleCA9IGluZGV4QnlIaWVyYXJjaGljYWxJZChtYXRjaGVkKTtcblxuICAgIHN3aXRjaCAoZXh0ZW5kKSB7XG4gICAgICBjYXNlIEV4dGVuZGVkU3RhY2tTZWxlY3Rpb24uRG93bnN0cmVhbTpcbiAgICAgICAgYXdhaXQgaW5jbHVkZURvd25zdHJlYW1TdGFja3ModGhpcy5pb0hlbHBlciwgaW5kZXgsIGFsbFN0YWNrcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFeHRlbmRlZFN0YWNrU2VsZWN0aW9uLlVwc3RyZWFtOlxuICAgICAgICBhd2FpdCBpbmNsdWRlVXBzdHJlYW1TdGFja3ModGhpcy5pb0hlbHBlciwgaW5kZXgsIGFsbFN0YWNrcyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIEZpbHRlciBvcmlnaW5hbCBhcnJheSBiZWNhdXNlIGl0IGlzIGluIHRoZSByaWdodCBvcmRlclxuICAgIGNvbnN0IHNlbGVjdGVkTGlzdCA9IGFsbC5maWx0ZXIocyA9PiBpbmRleC5oYXMocy5oaWVyYXJjaGljYWxJZCkpO1xuXG4gICAgcmV0dXJuIG5ldyBTdGFja0NvbGxlY3Rpb24odGhpcywgc2VsZWN0ZWRMaXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgYSBzaW5nbGUgc3RhY2sgYnkgaXRzIElEXG4gICAqL1xuICBwdWJsaWMgc3RhY2tCeUlkKHN0YWNrSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgU3RhY2tDb2xsZWN0aW9uKHRoaXMsIFt0aGlzLmFzc2VtYmx5LmdldFN0YWNrQXJ0aWZhY3Qoc3RhY2tJZCldKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgY29sbGVjdGlvbiBvZiBzdGFja3MgYW5kIHJlbGF0ZWQgYXJ0aWZhY3RzXG4gKlxuICogSW4gcHJhY3RpY2UsIG5vdCBhbGwgYXJ0aWZhY3RzIGluIHRoZSBDbG91ZEFzc2VtYmx5IGFyZSBjcmVhdGVkIGVxdWFsO1xuICogc3RhY2tzIGNhbiBiZSBzZWxlY3RlZCBpbmRlcGVuZGVudGx5LCBidXQgb3RoZXIgYXJ0aWZhY3RzIHN1Y2ggYXMgYXNzZXRcbiAqIGJ1bmRsZXMgY2Fubm90LlxuICovXG5leHBvcnQgY2xhc3MgU3RhY2tDb2xsZWN0aW9uIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGFzc2VtYmx5OiBDbG91ZEFzc2VtYmx5LCBwdWJsaWMgcmVhZG9ubHkgc3RhY2tBcnRpZmFjdHM6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdKSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YWNrQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tBcnRpZmFjdHMubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldCBmaXJzdFN0YWNrKCkge1xuICAgIGlmICh0aGlzLnN0YWNrQ291bnQgPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdTdGFja0NvbGxlY3Rpb24gY29udGFpbnMgbm8gc3RhY2sgYXJ0aWZhY3RzICh0cnlpbmcgdG8gYWNjZXNzIHRoZSBmaXJzdCBvbmUpJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YWNrQXJ0aWZhY3RzWzBdO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGFja0lkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tBcnRpZmFjdHMubWFwKHMgPT4gcy5pZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhpZXJhcmNoaWNhbElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tBcnRpZmFjdHMubWFwKHMgPT4gcy5oaWVyYXJjaGljYWxJZCk7XG4gIH1cblxuICBwdWJsaWMgd2l0aERlcGVuZGVuY2llcygpOiBTdGFja0RldGFpbHNbXSB7XG4gICAgY29uc3QgYWxsRGF0YTogU3RhY2tEZXRhaWxzW10gPSBbXTtcblxuICAgIGZvciAoY29uc3Qgc3RhY2sgb2YgdGhpcy5zdGFja0FydGlmYWN0cykge1xuICAgICAgY29uc3QgZGF0YTogU3RhY2tEZXRhaWxzID0ge1xuICAgICAgICBpZDogc3RhY2suZGlzcGxheU5hbWUgPz8gc3RhY2suaWQsXG4gICAgICAgIG5hbWU6IHN0YWNrLnN0YWNrTmFtZSxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWNrLmVudmlyb25tZW50LFxuICAgICAgICBkZXBlbmRlbmNpZXM6IFtdLFxuICAgICAgfTtcblxuICAgICAgZm9yIChjb25zdCBkZXBlbmRlbmN5SWQgb2Ygc3RhY2suZGVwZW5kZW5jaWVzLm1hcCh4ID0+IHguaWQpKSB7XG4gICAgICAgIGlmIChkZXBlbmRlbmN5SWQuaW5jbHVkZXMoJy5hc3NldHMnKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVwU3RhY2sgPSB0aGlzLmFzc2VtYmx5LnN0YWNrQnlJZChkZXBlbmRlbmN5SWQpO1xuXG4gICAgICAgIGlmIChkZXBTdGFjay5maXJzdFN0YWNrLmRlcGVuZGVuY2llcy5maWx0ZXIoKGRlcCkgPT4gIShkZXAuaWQpLmluY2x1ZGVzKCcuYXNzZXRzJykpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN0YWNrRGV0YWlsIG9mIGRlcFN0YWNrLndpdGhEZXBlbmRlbmNpZXMoKSkge1xuICAgICAgICAgICAgZGF0YS5kZXBlbmRlbmNpZXMucHVzaCh7XG4gICAgICAgICAgICAgIGlkOiBzdGFja0RldGFpbC5pZCxcbiAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBzdGFja0RldGFpbC5kZXBlbmRlbmNpZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0YS5kZXBlbmRlbmNpZXMucHVzaCh7XG4gICAgICAgICAgICBpZDogZGVwU3RhY2suZmlyc3RTdGFjay5kaXNwbGF5TmFtZSA/PyBkZXBTdGFjay5maXJzdFN0YWNrLmlkLFxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhbGxEYXRhLnB1c2goZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbERhdGE7XG4gIH1cblxuICBwdWJsaWMgcmV2ZXJzZWQoKSB7XG4gICAgY29uc3QgYXJ0cyA9IFsuLi50aGlzLnN0YWNrQXJ0aWZhY3RzXTtcbiAgICBhcnRzLnJldmVyc2UoKTtcbiAgICByZXR1cm4gbmV3IFN0YWNrQ29sbGVjdGlvbih0aGlzLmFzc2VtYmx5LCBhcnRzKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIocHJlZGljYXRlOiAoYXJ0OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QpID0+IGJvb2xlYW4pOiBTdGFja0NvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgU3RhY2tDb2xsZWN0aW9uKHRoaXMuYXNzZW1ibHksIHRoaXMuc3RhY2tBcnRpZmFjdHMuZmlsdGVyKHByZWRpY2F0ZSkpO1xuICB9XG5cbiAgcHVibGljIGNvbmNhdCguLi5vdGhlcnM6IFN0YWNrQ29sbGVjdGlvbltdKTogU3RhY2tDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFN0YWNrQ29sbGVjdGlvbih0aGlzLmFzc2VtYmx5LCB0aGlzLnN0YWNrQXJ0aWZhY3RzLmNvbmNhdCguLi5vdGhlcnMubWFwKG8gPT4gby5zdGFja0FydGlmYWN0cykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyAnYXdzOmNkazp3YXJuaW5nfGluZm98ZXJyb3InIG1ldGFkYXRhIGVudHJpZXMgZnJvbSB0aGUgc3RhY2sgc3ludGhlc2lzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVNZXRhZGF0YShcbiAgICBmYWlsQXQ6ICd3YXJuJyB8ICdlcnJvcicgfCAnbm9uZScgPSAnZXJyb3InLFxuICAgIGxvZ2dlcjogKGxldmVsOiAnaW5mbycgfCAnZXJyb3InIHwgJ3dhcm4nLCBtc2c6IGN4YXBpLlN5bnRoZXNpc01lc3NhZ2UpID0+IFByb21pc2U8dm9pZD4gPSBhc3luYyAoKSA9PiB7XG4gICAgfSxcbiAgKSB7XG4gICAgbGV0IHdhcm5pbmdzID0gZmFsc2U7XG4gICAgbGV0IGVycm9ycyA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBzdGFjayBvZiB0aGlzLnN0YWNrQXJ0aWZhY3RzKSB7XG4gICAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2Ygc3RhY2subWVzc2FnZXMpIHtcbiAgICAgICAgc3dpdGNoIChtZXNzYWdlLmxldmVsKSB7XG4gICAgICAgICAgY2FzZSBTeW50aGVzaXNNZXNzYWdlTGV2ZWwuV0FSTklORzpcbiAgICAgICAgICAgIHdhcm5pbmdzID0gdHJ1ZTtcbiAgICAgICAgICAgIGF3YWl0IGxvZ2dlcignd2FybicsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTeW50aGVzaXNNZXNzYWdlTGV2ZWwuRVJST1I6XG4gICAgICAgICAgICBlcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgYXdhaXQgbG9nZ2VyKCdlcnJvcicsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTeW50aGVzaXNNZXNzYWdlTGV2ZWwuSU5GTzpcbiAgICAgICAgICAgIGF3YWl0IGxvZ2dlcignaW5mbycsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzICYmIGZhaWxBdCAhPSAnbm9uZScpIHtcbiAgICAgIHRocm93IEFzc2VtYmx5RXJyb3Iud2l0aFN0YWNrcygnRm91bmQgZXJyb3JzJywgdGhpcy5zdGFja0FydGlmYWN0cyk7XG4gICAgfVxuXG4gICAgaWYgKHdhcm5pbmdzICYmIGZhaWxBdCA9PT0gJ3dhcm4nKSB7XG4gICAgICB0aHJvdyBBc3NlbWJseUVycm9yLndpdGhTdGFja3MoJ0ZvdW5kIHdhcm5pbmdzICgtLXN0cmljdCBtb2RlKScsIHRoaXMuc3RhY2tBcnRpZmFjdHMpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhTWVzc2FnZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBiZSB2ZXJib3NlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG9uJ3Qgc3RvcCBvbiBlcnJvciBtZXRhZGF0YVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaWdub3JlRXJyb3JzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVHJlYXQgd2FybmluZ3MgaW4gbWV0YWRhdGEgYXMgZXJyb3JzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzdHJpY3Q/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBpbmRleEJ5SGllcmFyY2hpY2FsSWQoc3RhY2tzOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXSk6IE1hcDxzdHJpbmcsIGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdD4ge1xuICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0PigpO1xuXG4gIGZvciAoY29uc3Qgc3RhY2sgb2Ygc3RhY2tzKSB7XG4gICAgcmVzdWx0LnNldChzdGFjay5oaWVyYXJjaGljYWxJZCwgc3RhY2spO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHRyYW5zaXRpdmUgY2xvc3VyZSBvZiBzdGFjayBkZXBlbmRlbnRzLlxuICpcbiAqIE1vZGlmaWVzIGBzZWxlY3RlZFN0YWNrc2AgaW4tcGxhY2UuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluY2x1ZGVEb3duc3RyZWFtU3RhY2tzKFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gIHNlbGVjdGVkU3RhY2tzOiBNYXA8c3RyaW5nLCBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q+LFxuICBhbGxTdGFja3M6IE1hcDxzdHJpbmcsIGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdD4sXG4pIHtcbiAgY29uc3QgYWRkZWQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gIGxldCBtYWRlUHJvZ3Jlc3M7XG4gIGRvIHtcbiAgICBtYWRlUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgW2lkLCBzdGFja10gb2YgYWxsU3RhY2tzKSB7XG4gICAgICAvLyBTZWxlY3QgdGhpcyBzdGFjayBpZiBpdCdzIG5vdCBzZWxlY3RlZCB5ZXQgQU5EIGl0IGRlcGVuZHMgb24gYSBzdGFjayB0aGF0J3MgaW4gdGhlIHNlbGVjdGVkIHNldFxuICAgICAgaWYgKCFzZWxlY3RlZFN0YWNrcy5oYXMoaWQpICYmIChzdGFjay5kZXBlbmRlbmNpZXMgfHwgW10pLnNvbWUoZGVwID0+IHNlbGVjdGVkU3RhY2tzLmhhcyhkZXAuaWQpKSkge1xuICAgICAgICBzZWxlY3RlZFN0YWNrcy5zZXQoaWQsIHN0YWNrKTtcbiAgICAgICAgYWRkZWQucHVzaChpZCk7XG4gICAgICAgIG1hZGVQcm9ncmVzcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChtYWRlUHJvZ3Jlc3MpO1xuXG4gIGlmIChhZGRlZC5sZW5ndGggPiAwKSB7XG4gICAgYXdhaXQgaW9IZWxwZXIubm90aWZ5KElPLkRFRkFVTFRfQVNTRU1CTFlfSU5GTy5tc2coYEluY2x1ZGluZyBkZXBlbmRpbmcgc3RhY2tzOiAke2NoYWxrLmJvbGQoYWRkZWQuam9pbignLCAnKSl9YCkpO1xuICB9XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSB0cmFuc2l0aXZlIGNsb3N1cmUgb2Ygc3RhY2sgZGVwZW5kZW5jaWVzLlxuICpcbiAqIE1vZGlmaWVzIGBzZWxlY3RlZFN0YWNrc2AgaW4tcGxhY2UuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluY2x1ZGVVcHN0cmVhbVN0YWNrcyhcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBzZWxlY3RlZFN0YWNrczogTWFwPHN0cmluZywgY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0PixcbiAgYWxsU3RhY2tzOiBNYXA8c3RyaW5nLCBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q+LFxuKSB7XG4gIGNvbnN0IGFkZGVkID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgbGV0IG1hZGVQcm9ncmVzcyA9IHRydWU7XG4gIHdoaWxlIChtYWRlUHJvZ3Jlc3MpIHtcbiAgICBtYWRlUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3Qgc3RhY2sgb2Ygc2VsZWN0ZWRTdGFja3MudmFsdWVzKCkpIHtcbiAgICAgIC8vIFNlbGVjdCBhbiBhZGRpdGlvbmFsIHN0YWNrIGlmIGl0J3Mgbm90IHNlbGVjdGVkIHlldCBhbmQgYSBkZXBlbmRlbmN5IG9mIGEgc2VsZWN0ZWQgc3RhY2sgKGFuZCBleGlzdHMsIG9idmlvdXNseSlcbiAgICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeUlkIG9mIHN0YWNrLmRlcGVuZGVuY2llcy5tYXAoeCA9PiB4Lm1hbmlmZXN0LmRpc3BsYXlOYW1lID8/IHguaWQpKSB7XG4gICAgICAgIGlmICghc2VsZWN0ZWRTdGFja3MuaGFzKGRlcGVuZGVuY3lJZCkgJiYgYWxsU3RhY2tzLmhhcyhkZXBlbmRlbmN5SWQpKSB7XG4gICAgICAgICAgYWRkZWQucHVzaChkZXBlbmRlbmN5SWQpO1xuICAgICAgICAgIHNlbGVjdGVkU3RhY2tzLnNldChkZXBlbmRlbmN5SWQsIGFsbFN0YWNrcy5nZXQoZGVwZW5kZW5jeUlkKSEpO1xuICAgICAgICAgIG1hZGVQcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoYWRkZWQubGVuZ3RoID4gMCkge1xuICAgIGF3YWl0IGlvSGVscGVyLm5vdGlmeShJTy5ERUZBVUxUX0FTU0VNQkxZX0lORk8ubXNnKGBJbmNsdWRpbmcgZGVwZW5kZW5jeSBzdGFja3M6ICR7Y2hhbGsuYm9sZChhZGRlZC5qb2luKCcsICcpKX1gKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplUGF0dGVybnMocGF0dGVybnM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBsZXQgc2FuaXRpemVkID0gcGF0dGVybnMuZmlsdGVyKHMgPT4gcyAhPSBudWxsKTsgLy8gZmlsdGVyIG51bGwvdW5kZWZpbmVkXG4gIHNhbml0aXplZCA9IFsuLi5uZXcgU2V0KHNhbml0aXplZCldOyAvLyBtYWtlIHRoZW0gdW5pcXVlXG4gIHJldHVybiBzYW5pdGl6ZWQ7XG59XG4iXX0=
@@ -1,89 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CloudExecutable = void 0;
4
- const cloud_assembly_1 = require("./cloud-assembly");
5
- const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
6
- const private_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private");
7
- const contextproviders = require("../../context-providers");
8
- /**
9
- * Represent the Cloud Executable and the synthesis we can do on it
10
- */
11
- class CloudExecutable {
12
- constructor(props) {
13
- this.props = props;
14
- }
15
- /**
16
- * Return whether there is an app command from the configuration
17
- */
18
- get hasApp() {
19
- return !!this.props.configuration.settings.get(['app']);
20
- }
21
- /**
22
- * Synthesize a set of stacks.
23
- *
24
- * @param cacheCloudAssembly whether to cache the Cloud Assembly after it has been first synthesized.
25
- * This is 'true' by default, and only set to 'false' for 'cdk watch',
26
- * which needs to re-synthesize the Assembly each time it detects a change to the project files
27
- */
28
- async synthesize(cacheCloudAssembly = true) {
29
- if (!this._cloudAssembly || !cacheCloudAssembly) {
30
- this._cloudAssembly = await this.doSynthesize();
31
- }
32
- return this._cloudAssembly;
33
- }
34
- async doSynthesize() {
35
- // We may need to run the cloud executable multiple times in order to satisfy all missing context
36
- // (When the executable runs, it will tell us about context it wants to use
37
- // but it missing. We'll then look up the context and run the executable again, and
38
- // again, until it doesn't complain anymore or we've stopped making progress).
39
- let previouslyMissingKeys;
40
- while (true) {
41
- const assembly = await this.props.synthesizer(this.props.sdkProvider, this.props.configuration);
42
- if (assembly.manifest.missing && assembly.manifest.missing.length > 0) {
43
- const missingKeys = missingContextKeys(assembly.manifest.missing);
44
- if (!this.canLookup) {
45
- throw new api_1.ToolkitError('Context lookups have been disabled. '
46
- + 'Make sure all necessary context is already in \'cdk.context.json\' by running \'cdk synth\' on a machine with sufficient AWS credentials and committing the result. '
47
- + `Missing context keys: '${Array.from(missingKeys).join(', ')}'`);
48
- }
49
- let tryLookup = true;
50
- if (previouslyMissingKeys && setsEqual(missingKeys, previouslyMissingKeys)) {
51
- await this.props.ioHelper.notify(private_1.IO.DEFAULT_ASSEMBLY_DEBUG.msg('Not making progress trying to resolve environmental context. Giving up.'));
52
- tryLookup = false;
53
- }
54
- previouslyMissingKeys = missingKeys;
55
- if (tryLookup) {
56
- await this.props.ioHelper.notify(private_1.IO.DEFAULT_ASSEMBLY_DEBUG.msg('Some context information is missing. Fetching...'));
57
- await contextproviders.provideContextValues(assembly.manifest.missing, this.props.configuration.context, this.props.sdkProvider, this.props.ioHelper);
58
- // Cache the new context to disk
59
- await this.props.configuration.saveContext();
60
- // Execute again
61
- continue;
62
- }
63
- }
64
- return new cloud_assembly_1.CloudAssembly(assembly, this.props.ioHelper);
65
- }
66
- }
67
- get canLookup() {
68
- return !!(this.props.configuration.settings.get(['lookups']) ?? true);
69
- }
70
- }
71
- exports.CloudExecutable = CloudExecutable;
72
- /**
73
- * Return all keys of missing context items
74
- */
75
- function missingContextKeys(missing) {
76
- return new Set((missing || []).map(m => m.key));
77
- }
78
- function setsEqual(a, b) {
79
- if (a.size !== b.size) {
80
- return false;
81
- }
82
- for (const x of a) {
83
- if (!b.has(x)) {
84
- return false;
85
- }
86
- }
87
- return true;
88
- }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtZXhlY3V0YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsb3VkLWV4ZWN1dGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQWlEO0FBQ2pELDBFQUFnRjtBQUNoRix5RkFBZ0c7QUFFaEcsNERBQTREO0FBOEI1RDs7R0FFRztBQUNILE1BQWEsZUFBZTtJQUcxQixZQUE2QixLQUEyQjtRQUEzQixVQUFLLEdBQUwsS0FBSyxDQUFzQjtJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxxQkFBOEIsSUFBSTtRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWTtRQUN4QixpR0FBaUc7UUFDakcsMkVBQTJFO1FBQzNFLG1GQUFtRjtRQUNuRiw4RUFBOEU7UUFDOUUsSUFBSSxxQkFBOEMsQ0FBQztRQUNuRCxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRWhHLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0RSxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUVsRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksa0JBQVksQ0FDcEIsc0NBQXNDOzBCQUNwQyxzS0FBc0s7MEJBQ3RLLDBCQUEwQixLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZFLENBQUM7Z0JBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLHFCQUFxQixJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDO29CQUMzRSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFFLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLHlFQUF5RSxDQUFDLENBQUMsQ0FBQztvQkFDM0ksU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsQ0FBQztnQkFFRCxxQkFBcUIsR0FBRyxXQUFXLENBQUM7Z0JBRXBDLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ2QsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBRSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUM7b0JBRXBILE1BQU0sZ0JBQWdCLENBQUMsb0JBQW9CLENBQ3pDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDcEIsQ0FBQztvQkFFRixnQ0FBZ0M7b0JBQ2hDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBRTdDLGdCQUFnQjtvQkFDaEIsU0FBUztnQkFDWCxDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sSUFBSSw4QkFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBWSxTQUFTO1FBQ25CLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztDQUNGO0FBL0VELDBDQStFQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxPQUFnQztJQUMxRCxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBSSxDQUFTLEVBQUUsQ0FBUztJQUN4QyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNkLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgeyBDbG91ZEFzc2VtYmx5IH0gZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9AYXdzLWNkay90bXAtdG9vbGtpdC1oZWxwZXJzL3NyYy9hcGknO1xuaW1wb3J0IHsgSU8sIHR5cGUgSW9IZWxwZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9AYXdzLWNkay90bXAtdG9vbGtpdC1oZWxwZXJzL3NyYy9hcGkvaW8vcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9jbGkvdXNlci1jb25maWd1cmF0aW9uJztcbmltcG9ydCAqIGFzIGNvbnRleHRwcm92aWRlcnMgZnJvbSAnLi4vLi4vY29udGV4dC1wcm92aWRlcnMnO1xuaW1wb3J0IHR5cGUgeyBTZGtQcm92aWRlciB9IGZyb20gJy4uL2F3cy1hdXRoJztcblxuLyoqXG4gKiBAcmV0dXJucyBvdXRwdXQgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCB0eXBlIFN5bnRoZXNpemVyID0gKGF3czogU2RrUHJvdmlkZXIsIGNvbmZpZzogQ29uZmlndXJhdGlvbikgPT4gUHJvbWlzZTxjeGFwaS5DbG91ZEFzc2VtYmx5PjtcblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEV4ZWN1dGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBBcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIChzZXR0aW5ncyBhbmQgY29udGV4dClcbiAgICovXG4gIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEFXUyBvYmplY3QgKHVzZWQgYnkgc3ludGhlc2l6ZXIgYW5kIGNvbnRleHRwcm92aWRlcilcbiAgICovXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcjtcblxuICAvKipcbiAgICogTWVzc2FnaW5nIGhlbHBlclxuICAgKi9cbiAgaW9IZWxwZXI6IElvSGVscGVyO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBpbnZva2VkIHRvIHN5bnRoZXNpemUgdGhlIGFjdHVhbCBzdGFja3NcbiAgICovXG4gIHN5bnRoZXNpemVyOiBTeW50aGVzaXplcjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnQgdGhlIENsb3VkIEV4ZWN1dGFibGUgYW5kIHRoZSBzeW50aGVzaXMgd2UgY2FuIGRvIG9uIGl0XG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEV4ZWN1dGFibGUge1xuICBwcml2YXRlIF9jbG91ZEFzc2VtYmx5PzogQ2xvdWRBc3NlbWJseTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDbG91ZEV4ZWN1dGFibGVQcm9wcykge1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZXJlIGlzIGFuIGFwcCBjb21tYW5kIGZyb20gdGhlIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzQXBwKCkge1xuICAgIHJldHVybiAhIXRoaXMucHJvcHMuY29uZmlndXJhdGlvbi5zZXR0aW5ncy5nZXQoWydhcHAnXSk7XG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZSBhIHNldCBvZiBzdGFja3MuXG4gICAqXG4gICAqIEBwYXJhbSBjYWNoZUNsb3VkQXNzZW1ibHkgd2hldGhlciB0byBjYWNoZSB0aGUgQ2xvdWQgQXNzZW1ibHkgYWZ0ZXIgaXQgaGFzIGJlZW4gZmlyc3Qgc3ludGhlc2l6ZWQuXG4gICAqICAgVGhpcyBpcyAndHJ1ZScgYnkgZGVmYXVsdCwgYW5kIG9ubHkgc2V0IHRvICdmYWxzZScgZm9yICdjZGsgd2F0Y2gnLFxuICAgKiAgIHdoaWNoIG5lZWRzIHRvIHJlLXN5bnRoZXNpemUgdGhlIEFzc2VtYmx5IGVhY2ggdGltZSBpdCBkZXRlY3RzIGEgY2hhbmdlIHRvIHRoZSBwcm9qZWN0IGZpbGVzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3ludGhlc2l6ZShjYWNoZUNsb3VkQXNzZW1ibHk6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxDbG91ZEFzc2VtYmx5PiB7XG4gICAgaWYgKCF0aGlzLl9jbG91ZEFzc2VtYmx5IHx8ICFjYWNoZUNsb3VkQXNzZW1ibHkpIHtcbiAgICAgIHRoaXMuX2Nsb3VkQXNzZW1ibHkgPSBhd2FpdCB0aGlzLmRvU3ludGhlc2l6ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY2xvdWRBc3NlbWJseTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZG9TeW50aGVzaXplKCk6IFByb21pc2U8Q2xvdWRBc3NlbWJseT4ge1xuICAgIC8vIFdlIG1heSBuZWVkIHRvIHJ1biB0aGUgY2xvdWQgZXhlY3V0YWJsZSBtdWx0aXBsZSB0aW1lcyBpbiBvcmRlciB0byBzYXRpc2Z5IGFsbCBtaXNzaW5nIGNvbnRleHRcbiAgICAvLyAoV2hlbiB0aGUgZXhlY3V0YWJsZSBydW5zLCBpdCB3aWxsIHRlbGwgdXMgYWJvdXQgY29udGV4dCBpdCB3YW50cyB0byB1c2VcbiAgICAvLyBidXQgaXQgbWlzc2luZy4gV2UnbGwgdGhlbiBsb29rIHVwIHRoZSBjb250ZXh0IGFuZCBydW4gdGhlIGV4ZWN1dGFibGUgYWdhaW4sIGFuZFxuICAgIC8vIGFnYWluLCB1bnRpbCBpdCBkb2Vzbid0IGNvbXBsYWluIGFueW1vcmUgb3Igd2UndmUgc3RvcHBlZCBtYWtpbmcgcHJvZ3Jlc3MpLlxuICAgIGxldCBwcmV2aW91c2x5TWlzc2luZ0tleXM6IFNldDxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBhc3NlbWJseSA9IGF3YWl0IHRoaXMucHJvcHMuc3ludGhlc2l6ZXIodGhpcy5wcm9wcy5zZGtQcm92aWRlciwgdGhpcy5wcm9wcy5jb25maWd1cmF0aW9uKTtcblxuICAgICAgaWYgKGFzc2VtYmx5Lm1hbmlmZXN0Lm1pc3NpbmcgJiYgYXNzZW1ibHkubWFuaWZlc3QubWlzc2luZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IG1pc3NpbmdLZXlzID0gbWlzc2luZ0NvbnRleHRLZXlzKGFzc2VtYmx5Lm1hbmlmZXN0Lm1pc3NpbmcpO1xuXG4gICAgICAgIGlmICghdGhpcy5jYW5Mb29rdXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgICAgICAgJ0NvbnRleHQgbG9va3VwcyBoYXZlIGJlZW4gZGlzYWJsZWQuICdcbiAgICAgICAgICAgICsgJ01ha2Ugc3VyZSBhbGwgbmVjZXNzYXJ5IGNvbnRleHQgaXMgYWxyZWFkeSBpbiBcXCdjZGsuY29udGV4dC5qc29uXFwnIGJ5IHJ1bm5pbmcgXFwnY2RrIHN5bnRoXFwnIG9uIGEgbWFjaGluZSB3aXRoIHN1ZmZpY2llbnQgQVdTIGNyZWRlbnRpYWxzIGFuZCBjb21taXR0aW5nIHRoZSByZXN1bHQuICdcbiAgICAgICAgICAgICsgYE1pc3NpbmcgY29udGV4dCBrZXlzOiAnJHtBcnJheS5mcm9tKG1pc3NpbmdLZXlzKS5qb2luKCcsICcpfSdgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0cnlMb29rdXAgPSB0cnVlO1xuICAgICAgICBpZiAocHJldmlvdXNseU1pc3NpbmdLZXlzICYmIHNldHNFcXVhbChtaXNzaW5nS2V5cywgcHJldmlvdXNseU1pc3NpbmdLZXlzKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJvcHMuaW9IZWxwZXIubm90aWZ5KElPLkRFRkFVTFRfQVNTRU1CTFlfREVCVUcubXNnKCdOb3QgbWFraW5nIHByb2dyZXNzIHRyeWluZyB0byByZXNvbHZlIGVudmlyb25tZW50YWwgY29udGV4dC4gR2l2aW5nIHVwLicpKTtcbiAgICAgICAgICB0cnlMb29rdXAgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZpb3VzbHlNaXNzaW5nS2V5cyA9IG1pc3NpbmdLZXlzO1xuXG4gICAgICAgIGlmICh0cnlMb29rdXApIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnByb3BzLmlvSGVscGVyLm5vdGlmeShJTy5ERUZBVUxUX0FTU0VNQkxZX0RFQlVHLm1zZygnU29tZSBjb250ZXh0IGluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIEZldGNoaW5nLi4uJykpO1xuXG4gICAgICAgICAgYXdhaXQgY29udGV4dHByb3ZpZGVycy5wcm92aWRlQ29udGV4dFZhbHVlcyhcbiAgICAgICAgICAgIGFzc2VtYmx5Lm1hbmlmZXN0Lm1pc3NpbmcsXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNvbmZpZ3VyYXRpb24uY29udGV4dCxcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc2RrUHJvdmlkZXIsXG4gICAgICAgICAgICB0aGlzLnByb3BzLmlvSGVscGVyLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBDYWNoZSB0aGUgbmV3IGNvbnRleHQgdG8gZGlza1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJvcHMuY29uZmlndXJhdGlvbi5zYXZlQ29udGV4dCgpO1xuXG4gICAgICAgICAgLy8gRXhlY3V0ZSBhZ2FpblxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgQ2xvdWRBc3NlbWJseShhc3NlbWJseSwgdGhpcy5wcm9wcy5pb0hlbHBlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY2FuTG9va3VwKCkge1xuICAgIHJldHVybiAhISh0aGlzLnByb3BzLmNvbmZpZ3VyYXRpb24uc2V0dGluZ3MuZ2V0KFsnbG9va3VwcyddKSA/PyB0cnVlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiBhbGwga2V5cyBvZiBtaXNzaW5nIGNvbnRleHQgaXRlbXNcbiAqL1xuZnVuY3Rpb24gbWlzc2luZ0NvbnRleHRLZXlzKG1pc3Npbmc/OiBjeGFwaS5NaXNzaW5nQ29udGV4dFtdKTogU2V0PHN0cmluZz4ge1xuICByZXR1cm4gbmV3IFNldCgobWlzc2luZyB8fCBbXSkubWFwKG0gPT4gbS5rZXkpKTtcbn1cblxuZnVuY3Rpb24gc2V0c0VxdWFsPEE+KGE6IFNldDxBPiwgYjogU2V0PEE+KSB7XG4gIGlmIChhLnNpemUgIT09IGIuc2l6ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmb3IgKGNvbnN0IHggb2YgYSkge1xuICAgIGlmICghYi5oYXMoeCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
@@ -1,57 +0,0 @@
1
- import * as cxapi from '@aws-cdk/cx-api';
2
- import { type IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
3
- import type { Configuration } from '../../cli/user-configuration';
4
- import type { SdkProvider } from '../aws-auth';
5
- import type { Settings } from '../settings';
6
- import type { ILock } from '../util/rwlock';
7
- export interface ExecProgramResult {
8
- readonly assembly: cxapi.CloudAssembly;
9
- readonly lock: ILock;
10
- }
11
- /** Invokes the cloud executable and returns JSON output */
12
- export declare function execProgram(aws: SdkProvider, ioHelper: IoHelper, config: Configuration): Promise<ExecProgramResult>;
13
- /**
14
- * Creates an assembly with error handling
15
- */
16
- export declare function createAssembly(appDir: string): cxapi.CloudAssembly;
17
- /**
18
- * If we don't have region/account defined in context, we fall back to the default SDK behavior
19
- * where region is retrieved from ~/.aws/config and account is based on default credentials provider
20
- * chain and then STS is queried.
21
- *
22
- * This is done opportunistically: for example, if we can't access STS for some reason or the region
23
- * is not configured, the context value will be 'null' and there could failures down the line. In
24
- * some cases, synthesis does not require region/account information at all, so that might be perfectly
25
- * fine in certain scenarios.
26
- *
27
- * @param context The context key/value bash.
28
- */
29
- export declare function prepareDefaultEnvironment(aws: SdkProvider, debugFn: (msg: string) => Promise<void>): Promise<{
30
- [key: string]: string;
31
- }>;
32
- /**
33
- * Settings related to synthesis are read from context.
34
- * The merging of various configuration sources like cli args or cdk.json has already happened.
35
- * We now need to set the final values to the context.
36
- */
37
- export declare function prepareContext(settings: Settings, context: {
38
- [key: string]: any;
39
- }, env: {
40
- [key: string]: string | undefined;
41
- }, debugFn: (msg: string) => Promise<void>): Promise<{
42
- [key: string]: any;
43
- }>;
44
- /**
45
- * Guess the executable from the command-line argument
46
- *
47
- * Only do this if the file is NOT marked as executable. If it is,
48
- * we'll defer to the shebang inside the file itself.
49
- *
50
- * If we're on Windows, we ALWAYS take the handler, since it's hard to
51
- * verify if registry associations have or have not been set up for this
52
- * file type, so we'll assume the worst and take control.
53
- */
54
- export declare function guessExecutable(app: string, debugFn: (msg: string) => Promise<void>): Promise<any>;
55
- export declare function spaceAvailableForContext(env: {
56
- [key: string]: string;
57
- }, limit: number): number;