aws-cdk 2.1007.0 → 2.1009.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 (254) hide show
  1. package/THIRD_PARTY_LICENSES +52 -34
  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 +17 -5
  49. package/lib/cli/cdk-toolkit.js +96 -44
  50. package/lib/cli/cli.d.ts +1 -1
  51. package/lib/cli/cli.js +30 -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-hooks.js +28 -6
  60. package/lib/commands/init/init.js +3 -2
  61. package/lib/commands/list-stacks.js +4 -4
  62. package/lib/context-providers/ami.d.ts +1 -13
  63. package/lib/context-providers/ami.js +16 -48
  64. package/lib/context-providers/availability-zones.d.ts +1 -13
  65. package/lib/context-providers/availability-zones.js +16 -25
  66. package/lib/context-providers/cc-api-provider.d.ts +1 -30
  67. package/lib/context-providers/cc-api-provider.js +16 -142
  68. package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -13
  69. package/lib/context-providers/endpoint-service-availability-zones.js +16 -31
  70. package/lib/context-providers/hosted-zones.d.ts +1 -12
  71. package/lib/context-providers/hosted-zones.js +16 -65
  72. package/lib/context-providers/index.d.ts +1 -44
  73. package/lib/context-providers/index.js +15 -126
  74. package/lib/context-providers/keys.d.ts +1 -13
  75. package/lib/context-providers/keys.js +16 -50
  76. package/lib/context-providers/load-balancers.d.ts +1 -20
  77. package/lib/context-providers/load-balancers.js +16 -154
  78. package/lib/context-providers/security-groups.d.ts +1 -9
  79. package/lib/context-providers/security-groups.js +16 -66
  80. package/lib/context-providers/ssm-parameters.d.ts +1 -25
  81. package/lib/context-providers/ssm-parameters.js +16 -57
  82. package/lib/context-providers/vpcs.d.ts +1 -13
  83. package/lib/context-providers/vpcs.js +16 -285
  84. package/lib/cxapp/cloud-assembly.d.ts +79 -0
  85. package/lib/cxapp/cloud-assembly.js +108 -0
  86. package/lib/{api/cxapp → cxapp}/cloud-executable.d.ts +6 -4
  87. package/lib/cxapp/cloud-executable.js +98 -0
  88. package/lib/{api/cxapp → cxapp}/environments.d.ts +1 -2
  89. package/lib/{api/cxapp → cxapp}/environments.js +2 -2
  90. package/lib/cxapp/exec.d.ts +14 -0
  91. package/lib/cxapp/exec.js +157 -0
  92. package/lib/cxapp/index.d.ts +4 -0
  93. package/lib/{api/bootstrap → cxapp}/index.js +5 -3
  94. package/lib/index.js +135349 -124905
  95. package/lib/init-templates/.init-version.json +1 -1
  96. package/lib/init-templates/.recommended-feature-flags.json +3 -2
  97. package/lib/legacy-aws-auth.d.ts +74 -0
  98. package/lib/legacy-aws-auth.js +40 -0
  99. package/lib/legacy-exports-source.d.ts +13 -18
  100. package/lib/legacy-exports-source.js +42 -49
  101. package/lib/legacy-exports.d.ts +3 -6
  102. package/lib/legacy-exports.js +5 -5
  103. package/lib/legacy-types.d.ts +31 -0
  104. package/lib/legacy-types.js +3 -0
  105. package/package.json +12 -11
  106. package/lib/api/aws-auth/account-cache.d.ts +0 -36
  107. package/lib/api/aws-auth/account-cache.js +0 -99
  108. package/lib/api/aws-auth/awscli-compatible.d.ts +0 -42
  109. package/lib/api/aws-auth/awscli-compatible.js +0 -263
  110. package/lib/api/aws-auth/cached.d.ts +0 -11
  111. package/lib/api/aws-auth/cached.js +0 -26
  112. package/lib/api/aws-auth/credential-plugins.d.ts +0 -36
  113. package/lib/api/aws-auth/credential-plugins.js +0 -152
  114. package/lib/api/aws-auth/index.d.ts +0 -3
  115. package/lib/api/aws-auth/index.js +0 -20
  116. package/lib/api/aws-auth/provider-caching.d.ts +0 -13
  117. package/lib/api/aws-auth/provider-caching.js +0 -24
  118. package/lib/api/aws-auth/sdk-logger.d.ts +0 -69
  119. package/lib/api/aws-auth/sdk-logger.js +0 -124
  120. package/lib/api/aws-auth/sdk-provider.d.ts +0 -207
  121. package/lib/api/aws-auth/sdk-provider.js +0 -357
  122. package/lib/api/aws-auth/sdk.d.ts +0 -229
  123. package/lib/api/aws-auth/sdk.js +0 -373
  124. package/lib/api/aws-auth/tracing.d.ts +0 -11
  125. package/lib/api/aws-auth/tracing.js +0 -60
  126. package/lib/api/aws-auth/user-agent.d.ts +0 -7
  127. package/lib/api/aws-auth/user-agent.js +0 -20
  128. package/lib/api/aws-auth/util.d.ts +0 -6
  129. package/lib/api/aws-auth/util.js +0 -23
  130. package/lib/api/bootstrap/bootstrap-environment.d.ts +0 -35
  131. package/lib/api/bootstrap/bootstrap-environment.js +0 -321
  132. package/lib/api/bootstrap/bootstrap-props.d.ts +0 -130
  133. package/lib/api/bootstrap/bootstrap-props.js +0 -14
  134. package/lib/api/bootstrap/deploy-bootstrap.d.ts +0 -39
  135. package/lib/api/bootstrap/deploy-bootstrap.js +0 -141
  136. package/lib/api/bootstrap/index.d.ts +0 -2
  137. package/lib/api/bootstrap/legacy-template.d.ts +0 -2
  138. package/lib/api/bootstrap/legacy-template.js +0 -82
  139. package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +0 -85
  140. package/lib/api/cloudformation/evaluate-cloudformation-template.js +0 -440
  141. package/lib/api/cloudformation/index.d.ts +0 -4
  142. package/lib/api/cloudformation/index.js +0 -21
  143. package/lib/api/cloudformation/nested-stack-helpers.d.ts +0 -19
  144. package/lib/api/cloudformation/nested-stack-helpers.js +0 -86
  145. package/lib/api/cloudformation/stack-helpers.d.ts +0 -88
  146. package/lib/api/cloudformation/stack-helpers.js +0 -158
  147. package/lib/api/cloudformation/template-body-parameter.d.ts +0 -22
  148. package/lib/api/cloudformation/template-body-parameter.js +0 -104
  149. package/lib/api/cxapp/cloud-assembly.d.ts +0 -137
  150. package/lib/api/cxapp/cloud-assembly.js +0 -305
  151. package/lib/api/cxapp/cloud-executable.js +0 -89
  152. package/lib/api/cxapp/exec.d.ts +0 -57
  153. package/lib/api/cxapp/exec.js +0 -279
  154. package/lib/api/deployments/asset-manifest-builder.d.ts +0 -8
  155. package/lib/api/deployments/asset-manifest-builder.js +0 -35
  156. package/lib/api/deployments/asset-publishing.d.ts +0 -60
  157. package/lib/api/deployments/asset-publishing.js +0 -141
  158. package/lib/api/deployments/assets.d.ts +0 -11
  159. package/lib/api/deployments/assets.js +0 -109
  160. package/lib/api/deployments/cfn-api.d.ts +0 -138
  161. package/lib/api/deployments/cfn-api.js +0 -438
  162. package/lib/api/deployments/checks.d.ts +0 -9
  163. package/lib/api/deployments/checks.js +0 -72
  164. package/lib/api/deployments/deploy-stack.d.ts +0 -155
  165. package/lib/api/deployments/deploy-stack.js +0 -478
  166. package/lib/api/deployments/deployment-method.d.ts +0 -24
  167. package/lib/api/deployments/deployment-method.js +0 -3
  168. package/lib/api/deployments/deployment-result.d.ts +0 -21
  169. package/lib/api/deployments/deployment-result.js +0 -10
  170. package/lib/api/deployments/deployments.d.ts +0 -296
  171. package/lib/api/deployments/deployments.js +0 -331
  172. package/lib/api/deployments/hotswap-deployments.d.ts +0 -17
  173. package/lib/api/deployments/hotswap-deployments.js +0 -441
  174. package/lib/api/deployments/index.d.ts +0 -5
  175. package/lib/api/deployments/index.js +0 -22
  176. package/lib/api/environment/environment-access.d.ts +0 -140
  177. package/lib/api/environment/environment-access.js +0 -202
  178. package/lib/api/environment/environment-resources.d.ts +0 -75
  179. package/lib/api/environment/environment-resources.js +0 -207
  180. package/lib/api/environment/index.d.ts +0 -3
  181. package/lib/api/environment/index.js +0 -20
  182. package/lib/api/environment/placeholders.d.ts +0 -10
  183. package/lib/api/environment/placeholders.js +0 -23
  184. package/lib/api/garbage-collection/garbage-collector.d.ts +0 -158
  185. package/lib/api/garbage-collection/garbage-collector.js +0 -599
  186. package/lib/api/garbage-collection/index.d.ts +0 -1
  187. package/lib/api/garbage-collection/progress-printer.d.ts +0 -23
  188. package/lib/api/garbage-collection/progress-printer.js +0 -70
  189. package/lib/api/garbage-collection/stack-refresh.d.ts +0 -49
  190. package/lib/api/garbage-collection/stack-refresh.js +0 -151
  191. package/lib/api/hotswap/appsync-mapping-templates.d.ts +0 -4
  192. package/lib/api/hotswap/appsync-mapping-templates.js +0 -162
  193. package/lib/api/hotswap/code-build-projects.d.ts +0 -4
  194. package/lib/api/hotswap/code-build-projects.js +0 -62
  195. package/lib/api/hotswap/common.d.ts +0 -89
  196. package/lib/api/hotswap/common.js +0 -128
  197. package/lib/api/hotswap/ecs-services.d.ts +0 -4
  198. package/lib/api/hotswap/ecs-services.js +0 -159
  199. package/lib/api/hotswap/lambda-functions.d.ts +0 -4
  200. package/lib/api/hotswap/lambda-functions.js +0 -297
  201. package/lib/api/hotswap/s3-bucket-deployments.d.ts +0 -5
  202. package/lib/api/hotswap/s3-bucket-deployments.js +0 -117
  203. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -4
  204. package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
  205. package/lib/api/logs/find-cloudwatch-logs.d.ts +0 -25
  206. package/lib/api/logs/find-cloudwatch-logs.js +0 -95
  207. package/lib/api/logs/index.d.ts +0 -2
  208. package/lib/api/logs/logs-monitor.d.ts +0 -76
  209. package/lib/api/logs/logs-monitor.js +0 -187
  210. package/lib/api/plugin/context-provider-plugin.d.ts +0 -6
  211. package/lib/api/plugin/context-provider-plugin.js +0 -7
  212. package/lib/api/plugin/index.d.ts +0 -3
  213. package/lib/api/plugin/index.js +0 -20
  214. package/lib/api/plugin/mode.d.ts +0 -4
  215. package/lib/api/plugin/mode.js +0 -9
  216. package/lib/api/plugin/plugin.d.ts +0 -63
  217. package/lib/api/plugin/plugin.js +0 -102
  218. package/lib/api/resource-import/importer.d.ts +0 -215
  219. package/lib/api/resource-import/importer.js +0 -322
  220. package/lib/api/resource-import/index.d.ts +0 -2
  221. package/lib/api/resource-import/migrator.d.ts +0 -26
  222. package/lib/api/resource-import/migrator.js +0 -71
  223. package/lib/api/stack-events/index.d.ts +0 -3
  224. package/lib/api/stack-events/index.js +0 -20
  225. package/lib/api/stack-events/stack-activity-monitor.d.ts +0 -100
  226. package/lib/api/stack-events/stack-activity-monitor.js +0 -142
  227. package/lib/api/stack-events/stack-event-poller.d.ts +0 -69
  228. package/lib/api/stack-events/stack-event-poller.js +0 -128
  229. package/lib/api/stack-events/stack-progress-monitor.d.ts +0 -48
  230. package/lib/api/stack-events/stack-progress-monitor.js +0 -94
  231. package/lib/api/stack-events/stack-status.d.ts +0 -42
  232. package/lib/api/stack-events/stack-status.js +0 -88
  233. package/lib/api/util/rwlock.d.ts +0 -65
  234. package/lib/api/util/rwlock.js +0 -179
  235. package/lib/api/work-graph/index.d.ts +0 -3
  236. package/lib/api/work-graph/index.js +0 -20
  237. package/lib/api/work-graph/work-graph-builder.d.ts +0 -34
  238. package/lib/api/work-graph/work-graph-builder.js +0 -168
  239. package/lib/api/work-graph/work-graph-types.d.ts +0 -50
  240. package/lib/api/work-graph/work-graph-types.js +0 -13
  241. package/lib/api/work-graph/work-graph.d.ts +0 -72
  242. package/lib/api/work-graph/work-graph.js +0 -346
  243. package/lib/cli/activity-printer/base.d.ts +0 -50
  244. package/lib/cli/activity-printer/base.js +0 -114
  245. package/lib/cli/activity-printer/current.d.ts +0 -26
  246. package/lib/cli/activity-printer/current.js +0 -118
  247. package/lib/cli/activity-printer/display.d.ts +0 -13
  248. package/lib/cli/activity-printer/display.js +0 -80
  249. package/lib/cli/activity-printer/history.d.ts +0 -32
  250. package/lib/cli/activity-printer/history.js +0 -108
  251. package/lib/cli/activity-printer/index.d.ts +0 -3
  252. package/lib/cli/activity-printer/index.js +0 -20
  253. package/lib/notices.d.ts +0 -203
  254. 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;