aws-cdk 2.1006.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 (256) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_LICENSES +104 -86
  3. package/build-info.json +2 -2
  4. package/db.json.gz +0 -0
  5. package/lib/api/aws-auth.d.ts +1 -0
  6. package/lib/api/{logs/index.js → aws-auth.js} +2 -3
  7. package/lib/api/bootstrap.d.ts +1 -0
  8. package/lib/api/bootstrap.js +18 -0
  9. package/lib/api/cloud-assembly.d.ts +1 -0
  10. package/lib/api/cloud-assembly.js +18 -0
  11. package/lib/api/cloudformation.d.ts +1 -0
  12. package/lib/api/cloudformation.js +18 -0
  13. package/lib/api/context.d.ts +1 -40
  14. package/lib/api/context.js +16 -80
  15. package/lib/api/deployments.d.ts +1 -0
  16. package/lib/api/deployments.js +18 -0
  17. package/lib/api/environment.d.ts +1 -0
  18. package/lib/api/environment.js +18 -0
  19. package/lib/api/garbage-collection.d.ts +1 -0
  20. package/lib/api/garbage-collection.js +18 -0
  21. package/lib/api/hotswap.d.ts +1 -0
  22. package/lib/api/hotswap.js +18 -0
  23. package/lib/api/index.d.ts +5 -1
  24. package/lib/api/index.js +6 -2
  25. package/lib/api/logs-monitor.d.ts +1 -0
  26. package/lib/api/logs-monitor.js +18 -0
  27. package/lib/api/notices.d.ts +1 -0
  28. package/lib/api/notices.js +18 -0
  29. package/lib/api/plugin.d.ts +1 -0
  30. package/lib/api/{resource-import/index.js → plugin.js} +2 -3
  31. package/lib/api/resource-import.d.ts +1 -0
  32. package/lib/api/resource-import.js +18 -0
  33. package/lib/api/rwlock.d.ts +1 -0
  34. package/lib/api/{garbage-collection/index.js → rwlock.js} +2 -2
  35. package/lib/api/settings.d.ts +1 -26
  36. package/lib/api/settings.js +16 -103
  37. package/lib/api/stack-events.d.ts +1 -0
  38. package/lib/api/stack-events.js +18 -0
  39. package/lib/api/tags.d.ts +1 -9
  40. package/lib/api/tags.js +16 -8
  41. package/lib/api/toolkit-info.d.ts +1 -52
  42. package/lib/api/toolkit-info.js +16 -152
  43. package/lib/api/tree.d.ts +1 -31
  44. package/lib/api/tree.js +16 -35
  45. package/lib/api/work-graph.d.ts +1 -0
  46. package/lib/api/work-graph.js +18 -0
  47. package/lib/api-private.d.ts +3 -0
  48. package/lib/api-private.js +22 -0
  49. package/lib/cli/cdk-toolkit.d.ts +20 -16
  50. package/lib/cli/cdk-toolkit.js +102 -37
  51. package/lib/cli/cli-config.js +2 -2
  52. package/lib/cli/cli.d.ts +1 -1
  53. package/lib/cli/cli.js +22 -19
  54. package/lib/cli/io-host/cli-io-host.js +2 -2
  55. package/lib/cli/pretty-print-error.js +3 -1
  56. package/lib/cli/util/npm.d.ts +4 -1
  57. package/lib/cli/util/npm.js +25 -13
  58. package/lib/cli/version.d.ts +1 -1
  59. package/lib/cli/version.js +21 -25
  60. package/lib/commands/context.js +3 -2
  61. package/lib/commands/diff.d.ts +1 -50
  62. package/lib/commands/diff.js +5 -213
  63. package/lib/commands/init/init.js +3 -2
  64. package/lib/commands/list-stacks.js +4 -4
  65. package/lib/context-providers/ami.d.ts +1 -13
  66. package/lib/context-providers/ami.js +16 -48
  67. package/lib/context-providers/availability-zones.d.ts +1 -13
  68. package/lib/context-providers/availability-zones.js +16 -25
  69. package/lib/context-providers/cc-api-provider.d.ts +1 -30
  70. package/lib/context-providers/cc-api-provider.js +16 -136
  71. package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -13
  72. package/lib/context-providers/endpoint-service-availability-zones.js +16 -31
  73. package/lib/context-providers/hosted-zones.d.ts +1 -12
  74. package/lib/context-providers/hosted-zones.js +16 -65
  75. package/lib/context-providers/index.d.ts +1 -44
  76. package/lib/context-providers/index.js +15 -126
  77. package/lib/context-providers/keys.d.ts +1 -13
  78. package/lib/context-providers/keys.js +16 -50
  79. package/lib/context-providers/load-balancers.d.ts +1 -20
  80. package/lib/context-providers/load-balancers.js +16 -154
  81. package/lib/context-providers/security-groups.d.ts +1 -9
  82. package/lib/context-providers/security-groups.js +16 -66
  83. package/lib/context-providers/ssm-parameters.d.ts +1 -25
  84. package/lib/context-providers/ssm-parameters.js +16 -57
  85. package/lib/context-providers/vpcs.d.ts +1 -13
  86. package/lib/context-providers/vpcs.js +16 -285
  87. package/lib/{api/cxapp → cxapp}/cloud-assembly.d.ts +3 -59
  88. package/lib/cxapp/cloud-assembly.js +108 -0
  89. package/lib/{api/cxapp → cxapp}/cloud-executable.d.ts +10 -3
  90. package/lib/cxapp/cloud-executable.js +92 -0
  91. package/lib/{api/cxapp → cxapp}/environments.d.ts +1 -2
  92. package/lib/{api/cxapp → cxapp}/environments.js +2 -2
  93. package/lib/cxapp/exec.d.ts +14 -0
  94. package/lib/cxapp/exec.js +157 -0
  95. package/lib/cxapp/index.d.ts +4 -0
  96. package/lib/{api/bootstrap → cxapp}/index.js +5 -3
  97. package/lib/index.js +134493 -125222
  98. package/lib/init-templates/.init-version.json +1 -1
  99. package/lib/init-templates/.recommended-feature-flags.json +3 -1
  100. package/lib/legacy-aws-auth.d.ts +74 -0
  101. package/lib/legacy-aws-auth.js +40 -0
  102. package/lib/legacy-exports-source.d.ts +13 -18
  103. package/lib/legacy-exports-source.js +42 -49
  104. package/lib/legacy-exports.d.ts +3 -6
  105. package/lib/legacy-exports.js +5 -5
  106. package/lib/legacy-types.d.ts +31 -0
  107. package/lib/legacy-types.js +3 -0
  108. package/package.json +19 -18
  109. package/lib/api/aws-auth/account-cache.d.ts +0 -36
  110. package/lib/api/aws-auth/account-cache.js +0 -99
  111. package/lib/api/aws-auth/awscli-compatible.d.ts +0 -42
  112. package/lib/api/aws-auth/awscli-compatible.js +0 -263
  113. package/lib/api/aws-auth/cached.d.ts +0 -11
  114. package/lib/api/aws-auth/cached.js +0 -26
  115. package/lib/api/aws-auth/credential-plugins.d.ts +0 -36
  116. package/lib/api/aws-auth/credential-plugins.js +0 -152
  117. package/lib/api/aws-auth/index.d.ts +0 -3
  118. package/lib/api/aws-auth/index.js +0 -20
  119. package/lib/api/aws-auth/provider-caching.d.ts +0 -13
  120. package/lib/api/aws-auth/provider-caching.js +0 -24
  121. package/lib/api/aws-auth/sdk-logger.d.ts +0 -69
  122. package/lib/api/aws-auth/sdk-logger.js +0 -124
  123. package/lib/api/aws-auth/sdk-provider.d.ts +0 -207
  124. package/lib/api/aws-auth/sdk-provider.js +0 -357
  125. package/lib/api/aws-auth/sdk.d.ts +0 -229
  126. package/lib/api/aws-auth/sdk.js +0 -373
  127. package/lib/api/aws-auth/tracing.d.ts +0 -11
  128. package/lib/api/aws-auth/tracing.js +0 -60
  129. package/lib/api/aws-auth/user-agent.d.ts +0 -7
  130. package/lib/api/aws-auth/user-agent.js +0 -20
  131. package/lib/api/aws-auth/util.d.ts +0 -6
  132. package/lib/api/aws-auth/util.js +0 -23
  133. package/lib/api/bootstrap/bootstrap-environment.d.ts +0 -35
  134. package/lib/api/bootstrap/bootstrap-environment.js +0 -321
  135. package/lib/api/bootstrap/bootstrap-props.d.ts +0 -130
  136. package/lib/api/bootstrap/bootstrap-props.js +0 -14
  137. package/lib/api/bootstrap/deploy-bootstrap.d.ts +0 -39
  138. package/lib/api/bootstrap/deploy-bootstrap.js +0 -141
  139. package/lib/api/bootstrap/index.d.ts +0 -2
  140. package/lib/api/bootstrap/legacy-template.d.ts +0 -2
  141. package/lib/api/bootstrap/legacy-template.js +0 -82
  142. package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +0 -85
  143. package/lib/api/cloudformation/evaluate-cloudformation-template.js +0 -440
  144. package/lib/api/cloudformation/index.d.ts +0 -4
  145. package/lib/api/cloudformation/index.js +0 -21
  146. package/lib/api/cloudformation/nested-stack-helpers.d.ts +0 -25
  147. package/lib/api/cloudformation/nested-stack-helpers.js +0 -86
  148. package/lib/api/cloudformation/stack-helpers.d.ts +0 -96
  149. package/lib/api/cloudformation/stack-helpers.js +0 -158
  150. package/lib/api/cloudformation/template-body-parameter.d.ts +0 -22
  151. package/lib/api/cloudformation/template-body-parameter.js +0 -104
  152. package/lib/api/cxapp/cloud-assembly.js +0 -304
  153. package/lib/api/cxapp/cloud-executable.js +0 -89
  154. package/lib/api/cxapp/exec.d.ts +0 -56
  155. package/lib/api/cxapp/exec.js +0 -272
  156. package/lib/api/deployments/asset-manifest-builder.d.ts +0 -8
  157. package/lib/api/deployments/asset-manifest-builder.js +0 -35
  158. package/lib/api/deployments/asset-publishing.d.ts +0 -60
  159. package/lib/api/deployments/asset-publishing.js +0 -141
  160. package/lib/api/deployments/assets.d.ts +0 -11
  161. package/lib/api/deployments/assets.js +0 -109
  162. package/lib/api/deployments/cfn-api.d.ts +0 -138
  163. package/lib/api/deployments/cfn-api.js +0 -438
  164. package/lib/api/deployments/checks.d.ts +0 -9
  165. package/lib/api/deployments/checks.js +0 -72
  166. package/lib/api/deployments/deploy-stack.d.ts +0 -155
  167. package/lib/api/deployments/deploy-stack.js +0 -478
  168. package/lib/api/deployments/deployment-method.d.ts +0 -24
  169. package/lib/api/deployments/deployment-method.js +0 -3
  170. package/lib/api/deployments/deployment-result.d.ts +0 -21
  171. package/lib/api/deployments/deployment-result.js +0 -10
  172. package/lib/api/deployments/deployments.d.ts +0 -296
  173. package/lib/api/deployments/deployments.js +0 -331
  174. package/lib/api/deployments/hotswap-deployments.d.ts +0 -17
  175. package/lib/api/deployments/hotswap-deployments.js +0 -441
  176. package/lib/api/deployments/index.d.ts +0 -4
  177. package/lib/api/deployments/index.js +0 -21
  178. package/lib/api/environment/environment-access.d.ts +0 -140
  179. package/lib/api/environment/environment-access.js +0 -202
  180. package/lib/api/environment/environment-resources.d.ts +0 -75
  181. package/lib/api/environment/environment-resources.js +0 -207
  182. package/lib/api/environment/index.d.ts +0 -3
  183. package/lib/api/environment/index.js +0 -20
  184. package/lib/api/environment/placeholders.d.ts +0 -10
  185. package/lib/api/environment/placeholders.js +0 -23
  186. package/lib/api/garbage-collection/garbage-collector.d.ts +0 -158
  187. package/lib/api/garbage-collection/garbage-collector.js +0 -599
  188. package/lib/api/garbage-collection/index.d.ts +0 -1
  189. package/lib/api/garbage-collection/progress-printer.d.ts +0 -23
  190. package/lib/api/garbage-collection/progress-printer.js +0 -70
  191. package/lib/api/garbage-collection/stack-refresh.d.ts +0 -49
  192. package/lib/api/garbage-collection/stack-refresh.js +0 -151
  193. package/lib/api/hotswap/appsync-mapping-templates.d.ts +0 -4
  194. package/lib/api/hotswap/appsync-mapping-templates.js +0 -162
  195. package/lib/api/hotswap/code-build-projects.d.ts +0 -4
  196. package/lib/api/hotswap/code-build-projects.js +0 -62
  197. package/lib/api/hotswap/common.d.ts +0 -89
  198. package/lib/api/hotswap/common.js +0 -128
  199. package/lib/api/hotswap/ecs-services.d.ts +0 -4
  200. package/lib/api/hotswap/ecs-services.js +0 -159
  201. package/lib/api/hotswap/lambda-functions.d.ts +0 -4
  202. package/lib/api/hotswap/lambda-functions.js +0 -297
  203. package/lib/api/hotswap/s3-bucket-deployments.d.ts +0 -5
  204. package/lib/api/hotswap/s3-bucket-deployments.js +0 -117
  205. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -4
  206. package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
  207. package/lib/api/logs/find-cloudwatch-logs.d.ts +0 -25
  208. package/lib/api/logs/find-cloudwatch-logs.js +0 -95
  209. package/lib/api/logs/index.d.ts +0 -2
  210. package/lib/api/logs/logs-monitor.d.ts +0 -76
  211. package/lib/api/logs/logs-monitor.js +0 -187
  212. package/lib/api/plugin/context-provider-plugin.d.ts +0 -6
  213. package/lib/api/plugin/context-provider-plugin.js +0 -7
  214. package/lib/api/plugin/index.d.ts +0 -3
  215. package/lib/api/plugin/index.js +0 -20
  216. package/lib/api/plugin/mode.d.ts +0 -4
  217. package/lib/api/plugin/mode.js +0 -9
  218. package/lib/api/plugin/plugin.d.ts +0 -63
  219. package/lib/api/plugin/plugin.js +0 -102
  220. package/lib/api/resource-import/importer.d.ts +0 -220
  221. package/lib/api/resource-import/importer.js +0 -331
  222. package/lib/api/resource-import/index.d.ts +0 -2
  223. package/lib/api/resource-import/migrator.d.ts +0 -26
  224. package/lib/api/resource-import/migrator.js +0 -71
  225. package/lib/api/stack-events/index.d.ts +0 -3
  226. package/lib/api/stack-events/index.js +0 -20
  227. package/lib/api/stack-events/stack-activity-monitor.d.ts +0 -100
  228. package/lib/api/stack-events/stack-activity-monitor.js +0 -142
  229. package/lib/api/stack-events/stack-event-poller.d.ts +0 -69
  230. package/lib/api/stack-events/stack-event-poller.js +0 -128
  231. package/lib/api/stack-events/stack-progress-monitor.d.ts +0 -48
  232. package/lib/api/stack-events/stack-progress-monitor.js +0 -94
  233. package/lib/api/stack-events/stack-status.d.ts +0 -42
  234. package/lib/api/stack-events/stack-status.js +0 -88
  235. package/lib/api/util/rwlock.d.ts +0 -65
  236. package/lib/api/util/rwlock.js +0 -179
  237. package/lib/api/work-graph/index.d.ts +0 -3
  238. package/lib/api/work-graph/index.js +0 -20
  239. package/lib/api/work-graph/work-graph-builder.d.ts +0 -34
  240. package/lib/api/work-graph/work-graph-builder.js +0 -168
  241. package/lib/api/work-graph/work-graph-types.d.ts +0 -50
  242. package/lib/api/work-graph/work-graph-types.js +0 -13
  243. package/lib/api/work-graph/work-graph.d.ts +0 -72
  244. package/lib/api/work-graph/work-graph.js +0 -346
  245. package/lib/cli/activity-printer/base.d.ts +0 -50
  246. package/lib/cli/activity-printer/base.js +0 -114
  247. package/lib/cli/activity-printer/current.d.ts +0 -26
  248. package/lib/cli/activity-printer/current.js +0 -118
  249. package/lib/cli/activity-printer/display.d.ts +0 -13
  250. package/lib/cli/activity-printer/display.js +0 -80
  251. package/lib/cli/activity-printer/history.d.ts +0 -32
  252. package/lib/cli/activity-printer/history.js +0 -108
  253. package/lib/cli/activity-printer/index.d.ts +0 -3
  254. package/lib/cli/activity-printer/index.js +0 -20
  255. package/lib/notices.d.ts +0 -203
  256. package/lib/notices.js +0 -411
@@ -0,0 +1,92 @@
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("../api");
6
+ const api_private_1 = require("../api-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
+ async produce() {
16
+ return (await this.synthesize(true)).assembly;
17
+ }
18
+ /**
19
+ * Return whether there is an app command from the configuration
20
+ */
21
+ get hasApp() {
22
+ return !!this.props.configuration.settings.get(['app']);
23
+ }
24
+ /**
25
+ * Synthesize a set of stacks.
26
+ *
27
+ * @param cacheCloudAssembly whether to cache the Cloud Assembly after it has been first synthesized.
28
+ * This is 'true' by default, and only set to 'false' for 'cdk watch',
29
+ * which needs to re-synthesize the Assembly each time it detects a change to the project files
30
+ */
31
+ async synthesize(cacheCloudAssembly = true) {
32
+ if (!this._cloudAssembly || !cacheCloudAssembly) {
33
+ this._cloudAssembly = await this.doSynthesize();
34
+ }
35
+ return this._cloudAssembly;
36
+ }
37
+ async doSynthesize() {
38
+ // We may need to run the cloud executable multiple times in order to satisfy all missing context
39
+ // (When the executable runs, it will tell us about context it wants to use
40
+ // but it missing. We'll then look up the context and run the executable again, and
41
+ // again, until it doesn't complain anymore or we've stopped making progress).
42
+ let previouslyMissingKeys;
43
+ while (true) {
44
+ const assembly = await this.props.synthesizer(this.props.sdkProvider, this.props.configuration);
45
+ if (assembly.manifest.missing && assembly.manifest.missing.length > 0) {
46
+ const missingKeys = missingContextKeys(assembly.manifest.missing);
47
+ if (!this.canLookup) {
48
+ throw new api_1.ToolkitError('Context lookups have been disabled. '
49
+ + '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. '
50
+ + `Missing context keys: '${Array.from(missingKeys).join(', ')}'`);
51
+ }
52
+ let tryLookup = true;
53
+ if (previouslyMissingKeys && setsEqual(missingKeys, previouslyMissingKeys)) {
54
+ await this.props.ioHelper.notify(api_private_1.IO.DEFAULT_ASSEMBLY_DEBUG.msg('Not making progress trying to resolve environmental context. Giving up.'));
55
+ tryLookup = false;
56
+ }
57
+ previouslyMissingKeys = missingKeys;
58
+ if (tryLookup) {
59
+ await this.props.ioHelper.notify(api_private_1.IO.DEFAULT_ASSEMBLY_DEBUG.msg('Some context information is missing. Fetching...'));
60
+ await contextproviders.provideContextValues(assembly.manifest.missing, this.props.configuration.context, this.props.sdkProvider, this.props.ioHelper);
61
+ // Cache the new context to disk
62
+ await this.props.configuration.saveContext();
63
+ // Execute again
64
+ continue;
65
+ }
66
+ }
67
+ return new cloud_assembly_1.CloudAssembly(assembly, this.props.ioHelper);
68
+ }
69
+ }
70
+ get canLookup() {
71
+ return !!(this.props.configuration.settings.get(['lookups']) ?? true);
72
+ }
73
+ }
74
+ exports.CloudExecutable = CloudExecutable;
75
+ /**
76
+ * Return all keys of missing context items
77
+ */
78
+ function missingContextKeys(missing) {
79
+ return new Set((missing || []).map(m => m.key));
80
+ }
81
+ function setsEqual(a, b) {
82
+ if (a.size !== b.size) {
83
+ return false;
84
+ }
85
+ for (const x of a) {
86
+ if (!b.has(x)) {
87
+ return false;
88
+ }
89
+ }
90
+ return true;
91
+ }
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtZXhlY3V0YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsb3VkLWV4ZWN1dGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQWlEO0FBRWpELGdDQUFzQztBQUV0QyxnREFBbUQ7QUFFbkQseURBQXlEO0FBNkJ6RDs7R0FFRztBQUNILE1BQWEsZUFBZTtJQUcxQixZQUE2QixLQUEyQjtRQUEzQixVQUFLLEdBQUwsS0FBSyxDQUFzQjtJQUN4RCxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU87UUFDbEIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxxQkFBOEIsSUFBSTtRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWTtRQUN4QixpR0FBaUc7UUFDakcsMkVBQTJFO1FBQzNFLG1GQUFtRjtRQUNuRiw4RUFBOEU7UUFDOUUsSUFBSSxxQkFBOEMsQ0FBQztRQUNuRCxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFD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QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB7IENsb3VkQXNzZW1ibHkgfSBmcm9tICcuL2Nsb3VkLWFzc2VtYmx5JztcbmltcG9ydCB0eXBlIHsgSUNsb3VkQXNzZW1ibHlTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi9AYXdzLWNkay90b29sa2l0LWxpYi9saWIvYXBpL2Nsb3VkLWFzc2VtYmx5JztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXBpL2F3cy1hdXRoJztcbmltcG9ydCB7IElPLCB0eXBlIElvSGVscGVyIH0gZnJvbSAnLi4vYXBpLXByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vY2xpL3VzZXItY29uZmlndXJhdGlvbic7XG5pbXBvcnQgKiBhcyBjb250ZXh0cHJvdmlkZXJzIGZyb20gJy4uL2NvbnRleHQtcHJvdmlkZXJzJztcblxuLyoqXG4gKiBAcmV0dXJucyBvdXRwdXQgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCB0eXBlIFN5bnRoZXNpemVyID0gKGF3czogU2RrUHJvdmlkZXIsIGNvbmZpZzogQ29uZmlndXJhdGlvbikgPT4gUHJvbWlzZTxjeGFwaS5DbG91ZEFzc2VtYmx5PjtcblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEV4ZWN1dGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBBcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIChzZXR0aW5ncyBhbmQgY29udGV4dClcbiAgICovXG4gIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEFXUyBvYmplY3QgKHVzZWQgYnkgc3ludGhlc2l6ZXIgYW5kIGNvbnRleHRwcm92aWRlcilcbiAgICovXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcjtcblxuICAvKipcbiAgICogTWVzc2FnaW5nIGhlbHBlclxuICAgKi9cbiAgaW9IZWxwZXI6IElvSGVscGVyO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBpbnZva2VkIHRvIHN5bnRoZXNpemUgdGhlIGFjdHVhbCBzdGFja3NcbiAgICovXG4gIHN5bnRoZXNpemVyOiBTeW50aGVzaXplcjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnQgdGhlIENsb3VkIEV4ZWN1dGFibGUgYW5kIHRoZSBzeW50aGVzaXMgd2UgY2FuIGRvIG9uIGl0XG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEV4ZWN1dGFibGUgaW1wbGVtZW50cyBJQ2xvdWRBc3NlbWJseVNvdXJjZSB7XG4gIHByaXZhdGUgX2Nsb3VkQXNzZW1ibHk/OiBDbG91ZEFzc2VtYmx5O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IENsb3VkRXhlY3V0YWJsZVByb3BzKSB7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJvZHVjZSgpOiBQcm9taXNlPGN4YXBpLkNsb3VkQXNzZW1ibHk+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuc3ludGhlc2l6ZSh0cnVlKSkuYXNzZW1ibHk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlcmUgaXMgYW4gYXBwIGNvbW1hbmQgZnJvbSB0aGUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIGdldCBoYXNBcHAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5wcm9wcy5jb25maWd1cmF0aW9uLnNldHRpbmdzLmdldChbJ2FwcCddKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW50aGVzaXplIGEgc2V0IG9mIHN0YWNrcy5cbiAgICpcbiAgICogQHBhcmFtIGNhY2hlQ2xvdWRBc3NlbWJseSB3aGV0aGVyIHRvIGNhY2hlIHRoZSBDbG91ZCBBc3NlbWJseSBhZnRlciBpdCBoYXMgYmVlbiBmaXJzdCBzeW50aGVzaXplZC5cbiAgICogICBUaGlzIGlzICd0cnVlJyBieSBkZWZhdWx0LCBhbmQgb25seSBzZXQgdG8gJ2ZhbHNlJyBmb3IgJ2NkayB3YXRjaCcsXG4gICAqICAgd2hpY2ggbmVlZHMgdG8gcmUtc3ludGhlc2l6ZSB0aGUgQXNzZW1ibHkgZWFjaCB0aW1lIGl0IGRldGVjdHMgYSBjaGFuZ2UgdG8gdGhlIHByb2plY3QgZmlsZXNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzeW50aGVzaXplKGNhY2hlQ2xvdWRBc3NlbWJseTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPENsb3VkQXNzZW1ibHk+IHtcbiAgICBpZiAoIXRoaXMuX2Nsb3VkQXNzZW1ibHkgfHwgIWNhY2hlQ2xvdWRBc3NlbWJseSkge1xuICAgICAgdGhpcy5fY2xvdWRBc3NlbWJseSA9IGF3YWl0IHRoaXMuZG9TeW50aGVzaXplKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jbG91ZEFzc2VtYmx5O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkb1N5bnRoZXNpemUoKTogUHJvbWlzZTxDbG91ZEFzc2VtYmx5PiB7XG4gICAgLy8gV2UgbWF5IG5lZWQgdG8gcnVuIHRoZSBjbG91ZCBleGVjdXRhYmxlIG11bHRpcGxlIHRpbWVzIGluIG9yZGVyIHRvIHNhdGlzZnkgYWxsIG1pc3NpbmcgY29udGV4dFxuICAgIC8vIChXaGVuIHRoZSBleGVjdXRhYmxlIHJ1bnMsIGl0IHdpbGwgdGVsbCB1cyBhYm91dCBjb250ZXh0IGl0IHdhbnRzIHRvIHVzZVxuICAgIC8vIGJ1dCBpdCBtaXNzaW5nLiBXZSdsbCB0aGVuIGxvb2sgdXAgdGhlIGNvbnRleHQgYW5kIHJ1biB0aGUgZXhlY3V0YWJsZSBhZ2FpbiwgYW5kXG4gICAgLy8gYWdhaW4sIHVudGlsIGl0IGRvZXNuJ3QgY29tcGxhaW4gYW55bW9yZSBvciB3ZSd2ZSBzdG9wcGVkIG1ha2luZyBwcm9ncmVzcykuXG4gICAgbGV0IHByZXZpb3VzbHlNaXNzaW5nS2V5czogU2V0PHN0cmluZz4gfCB1bmRlZmluZWQ7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IGFzc2VtYmx5ID0gYXdhaXQgdGhpcy5wcm9wcy5zeW50aGVzaXplcih0aGlzLnByb3BzLnNka1Byb3ZpZGVyLCB0aGlzLnByb3BzLmNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICBpZiAoYXNzZW1ibHkubWFuaWZlc3QubWlzc2luZyAmJiBhc3NlbWJseS5tYW5pZmVzdC5taXNzaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgbWlzc2luZ0tleXMgPSBtaXNzaW5nQ29udGV4dEtleXMoYXNzZW1ibHkubWFuaWZlc3QubWlzc2luZyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmNhbkxvb2t1cCkge1xuICAgICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAgICAgICAnQ29udGV4dCBsb29rdXBzIGhhdmUgYmVlbiBkaXNhYmxlZC4gJ1xuICAgICAgICAgICAgKyAnTWFrZSBzdXJlIGFsbCBuZWNlc3NhcnkgY29udGV4dCBpcyBhbHJlYWR5IGluIFxcJ2Nkay5jb250ZXh0Lmpzb25cXCcgYnkgcnVubmluZyBcXCdjZGsgc3ludGhcXCcgb24gYSBtYWNoaW5lIHdpdGggc3VmZmljaWVudCBBV1MgY3JlZGVudGlhbHMgYW5kIGNvbW1pdHRpbmcgdGhlIHJlc3VsdC4gJ1xuICAgICAgICAgICAgKyBgTWlzc2luZyBjb250ZXh0IGtleXM6ICcke0FycmF5LmZyb20obWlzc2luZ0tleXMpLmpvaW4oJywgJyl9J2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRyeUxvb2t1cCA9IHRydWU7XG4gICAgICAgIGlmIChwcmV2aW91c2x5TWlzc2luZ0tleXMgJiYgc2V0c0VxdWFsKG1pc3NpbmdLZXlzLCBwcmV2aW91c2x5TWlzc2luZ0tleXMpKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wcm9wcy5pb0hlbHBlci5ub3RpZnkoSU8uREVGQVVMVF9BU1NFTUJMWV9ERUJVRy5tc2coJ05vdCBtYWtpbmcgcHJvZ3Jlc3MgdHJ5aW5nIHRvIHJlc29sdmUgZW52aXJvbm1lbnRhbCBjb250ZXh0LiBHaXZpbmcgdXAuJykpO1xuICAgICAgICAgIHRyeUxvb2t1cCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldmlvdXNseU1pc3NpbmdLZXlzID0gbWlzc2luZ0tleXM7XG5cbiAgICAgICAgaWYgKHRyeUxvb2t1cCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJvcHMuaW9IZWxwZXIubm90aWZ5KElPLkRFRkFVTFRfQVNTRU1CTFlfREVCVUcubXNnKCdTb21lIGNvbnRleHQgaW5mb3JtYXRpb24gaXMgbWlzc2luZy4gRmV0Y2hpbmcuLi4nKSk7XG5cbiAgICAgICAgICBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFxuICAgICAgICAgICAgYXNzZW1ibHkubWFuaWZlc3QubWlzc2luZyxcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY29uZmlndXJhdGlvbi5jb250ZXh0LFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZGtQcm92aWRlcixcbiAgICAgICAgICAgIHRoaXMucHJvcHMuaW9IZWxwZXIsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIENhY2hlIHRoZSBuZXcgY29udGV4dCB0byBkaXNrXG4gICAgICAgICAgYXdhaXQgdGhpcy5wcm9wcy5jb25maWd1cmF0aW9uLnNhdmVDb250ZXh0KCk7XG5cbiAgICAgICAgICAvLyBFeGVjdXRlIGFnYWluXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBDbG91ZEFzc2VtYmx5KGFzc2VtYmx5LCB0aGlzLnByb3BzLmlvSGVscGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBjYW5Mb29rdXAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvcHMuY29uZmlndXJhdGlvbi5zZXR0aW5ncy5nZXQoWydsb29rdXBzJ10pID8/IHRydWUpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIGFsbCBrZXlzIG9mIG1pc3NpbmcgY29udGV4dCBpdGVtc1xuICovXG5mdW5jdGlvbiBtaXNzaW5nQ29udGV4dEtleXMobWlzc2luZz86IGN4YXBpLk1pc3NpbmdDb250ZXh0W10pOiBTZXQ8c3RyaW5nPiB7XG4gIHJldHVybiBuZXcgU2V0KChtaXNzaW5nIHx8IFtdKS5tYXAobSA9PiBtLmtleSkpO1xufVxuXG5mdW5jdGlvbiBzZXRzRXF1YWw8QT4oYTogU2V0PEE+LCBiOiBTZXQ8QT4pIHtcbiAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAoY29uc3QgeCBvZiBhKSB7XG4gICAgaWYgKCFiLmhhcyh4KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
@@ -1,6 +1,5 @@
1
1
  import type * as cxapi from '@aws-cdk/cx-api';
2
- import type { StackCollection } from './cloud-assembly';
3
- import type { SdkProvider } from '../aws-auth';
2
+ import type { SdkProvider, StackCollection } from '../api';
4
3
  export declare function looksLikeGlob(environment: string): boolean;
5
4
  export declare function globEnvironmentsFromStacks(stacks: StackCollection, environmentGlobs: string[], sdk: SdkProvider): Promise<cxapi.Environment[]>;
6
5
  /**
@@ -4,7 +4,7 @@ exports.looksLikeGlob = looksLikeGlob;
4
4
  exports.globEnvironmentsFromStacks = globEnvironmentsFromStacks;
5
5
  exports.environmentsFromDescriptors = environmentsFromDescriptors;
6
6
  const minimatch_1 = require("minimatch");
7
- const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
7
+ const api_1 = require("../api");
8
8
  function looksLikeGlob(environment) {
9
9
  return environment.indexOf('*') > -1;
10
10
  }
@@ -63,4 +63,4 @@ function distinct(envs) {
63
63
  }
64
64
  return Object.values(unique);
65
65
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZW52aXJvbm1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsc0NBRUM7QUFHRCxnRUFtQkM7QUFLRCxrRUFpQkM7QUFuREQseUNBQXNDO0FBRXRDLDBFQUFnRjtBQUdoRixTQUFnQixhQUFhLENBQUMsV0FBbUI7SUFDL0MsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxtQ0FBbUM7QUFDNUIsS0FBSyxVQUFVLDBCQUEwQixDQUFDLE1BQXVCLEVBQUUsZ0JBQTBCLEVBQUUsR0FBZ0I7SUFDcEgsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEtBQUssRUFBcUIsQ0FBQztJQUM3RCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFBLHFCQUFTLEVBQUMsR0FBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUgsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDckgsTUFBTSxJQUFJLGtCQUFZLENBQUMsb0RBQW9ELEtBQUssZ0JBQWdCLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLFFBQWtCO0lBQzVELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFxQixDQUFDO0lBRTNDLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksa0JBQVksQ0FBQyx3RUFBd0UsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RyxDQUFDO1FBRUQsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNQLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUF5QjtJQUN6QyxNQUFNLE1BQU0sR0FBd0MsRUFBRSxDQUFDO0lBQ3ZELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxJQUFJLFNBQVMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3BFLElBQUksRUFBRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLFNBQVM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgeyBtaW5pbWF0Y2ggfSBmcm9tICdtaW5pbWF0Y2gnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0NvbGxlY3Rpb24gfSBmcm9tICcuL2Nsb3VkLWFzc2VtYmx5JztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaSc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgnO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9va3NMaWtlR2xvYihlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gIHJldHVybiBlbnZpcm9ubWVudC5pbmRleE9mKCcqJykgPiAtMTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnbG9iRW52aXJvbm1lbnRzRnJvbVN0YWNrcyhzdGFja3M6IFN0YWNrQ29sbGVjdGlvbiwgZW52aXJvbm1lbnRHbG9iczogc3RyaW5nW10sIHNkazogU2RrUHJvdmlkZXIpOiBQcm9taXNlPGN4YXBpLkVudmlyb25tZW50W10+IHtcbiAgaWYgKGVudmlyb25tZW50R2xvYnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgYXZhaWxhYmxlRW52aXJvbm1lbnRzID0gbmV3IEFycmF5PGN4YXBpLkVudmlyb25tZW50PigpO1xuICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWNrcy5zdGFja0FydGlmYWN0cykge1xuICAgIGNvbnN0IGFjdHVhbCA9IGF3YWl0IHNkay5yZXNvbHZlRW52aXJvbm1lbnQoc3RhY2suZW52aXJvbm1lbnQpO1xuICAgIGF2YWlsYWJsZUVudmlyb25tZW50cy5wdXNoKGFjdHVhbCk7XG4gIH1cblxuICBjb25zdCBlbnZpcm9ubWVudHMgPSBkaXN0aW5jdChhdmFpbGFibGVFbnZpcm9ubWVudHMpLmZpbHRlcihlbnYgPT4gZW52aXJvbm1lbnRHbG9icy5maW5kKGdsb2IgPT4gbWluaW1hdGNoKGVudiEubmFtZSwgZ2xvYikpKTtcbiAgaWYgKGVudmlyb25tZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBjb25zdCBnbG9icyA9IEpTT04uc3RyaW5naWZ5KGVudmlyb25tZW50R2xvYnMpO1xuICAgIGNvbnN0IGVudkxpc3QgPSBhdmFpbGFibGVFbnZpcm9ubWVudHMubGVuZ3RoID4gMCA/IGF2YWlsYWJsZUVudmlyb25tZW50cy5tYXAoZW52ID0+IGVudiEubmFtZSkuam9pbignLCAnKSA6ICc8bm9uZT4nO1xuICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYE5vIGVudmlyb25tZW50cyB3ZXJlIGZvdW5kIHdoZW4gc2VsZWN0aW5nIGFjcm9zcyAke2dsb2JzfSAoYXZhaWxhYmxlOiAke2Vudkxpc3R9KWApO1xuICB9XG5cbiAgcmV0dXJuIGVudmlyb25tZW50cztcbn1cblxuLyoqXG4gKiBHaXZlbiBhIHNldCBvZiBcIjxhY2NvdW50Pi88cmVnaW9uPlwiIHN0cmluZ3MsIGNvbnN0cnVjdCBlbnZpcm9ubWVudHMgZm9yIHRoZW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVudmlyb25tZW50c0Zyb21EZXNjcmlwdG9ycyhlbnZTcGVjczogc3RyaW5nW10pOiBjeGFwaS5FbnZpcm9ubWVudFtdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PGN4YXBpLkVudmlyb25tZW50PigpO1xuXG4gIGZvciAoY29uc3Qgc3BlYyBvZiBlbnZTcGVjcykge1xuICAgIGNvbnN0IHBhcnRzID0gc3BlYy5yZXBsYWNlKC9eYXdzOlxcL1xcLy8sICcnKS5zcGxpdCgnLycpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYEV4cGVjdGVkIGVudmlyb25tZW50IG5hbWUgaW4gZm9ybWF0ICdhd3M6Ly88YWNjb3VudD4vPHJlZ2lvbj4nLCBnb3Q6ICR7c3BlY31gKTtcbiAgICB9XG5cbiAgICByZXQucHVzaCh7XG4gICAgICBuYW1lOiBzcGVjLFxuICAgICAgYWNjb3VudDogcGFydHNbMF0sXG4gICAgICByZWdpb246IHBhcnRzWzFdLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBEZS1kdXBsaWNhdGVzIGEgbGlzdCBvZiBlbnZpcm9ubWVudHMsIHN1Y2ggdGhhdCBhIGdpdmVuIGFjY291bnQgYW5kIHJlZ2lvbiBpcyBvbmx5IHJlcHJlc2VudGVkIGV4YWN0bHkgb25jZVxuICogaW4gdGhlIHJlc3VsdC5cbiAqXG4gKiBAcGFyYW0gZW52cyB0aGUgcG9zc2libHkgZnVsbC1vZi1kdXBsaWNhdGVzIGxpc3Qgb2YgZW52aXJvbm1lbnRzLlxuICpcbiAqIEByZXR1cm4gYSBkZS1kdXBsaWNhdGVkIGxpc3Qgb2YgZW52aXJvbm1lbnRzLlxuICovXG5mdW5jdGlvbiBkaXN0aW5jdChlbnZzOiBjeGFwaS5FbnZpcm9ubWVudFtdKTogY3hhcGkuRW52aXJvbm1lbnRbXSB7XG4gIGNvbnN0IHVuaXF1ZTogeyBbaWQ6IHN0cmluZ106IGN4YXBpLkVudmlyb25tZW50IH0gPSB7fTtcbiAgZm9yIChjb25zdCBlbnYgb2YgZW52cykge1xuICAgIGNvbnN0IGlkID0gYCR7ZW52LmFjY291bnQgfHwgJ2RlZmF1bHQnfS8ke2Vudi5yZWdpb24gfHwgJ2RlZmF1bHQnfWA7XG4gICAgaWYgKGlkIGluIHVuaXF1ZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHVuaXF1ZVtpZF0gPSBlbnY7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC52YWx1ZXModW5pcXVlKTtcbn1cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZW52aXJvbm1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esc0NBRUM7QUFHRCxnRUFtQkM7QUFLRCxrRUFpQkM7QUFsREQseUNBQXNDO0FBQ3RDLGdDQUFzQztBQUd0QyxTQUFnQixhQUFhLENBQUMsV0FBbUI7SUFDL0MsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxtQ0FBbUM7QUFDNUIsS0FBSyxVQUFVLDBCQUEwQixDQUFDLE1BQXVCLEVBQUUsZ0JBQTBCLEVBQUUsR0FBZ0I7SUFDcEgsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEtBQUssRUFBcUIsQ0FBQztJQUM3RCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFBLHFCQUFTLEVBQUMsR0FBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUgsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDckgsTUFBTSxJQUFJLGtCQUFZLENBQUMsb0RBQW9ELEtBQUssZ0JBQWdCLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLFFBQWtCO0lBQzVELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFxQixDQUFDO0lBRTNDLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksa0JBQVksQ0FBQyx3RUFBd0UsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RyxDQUFDO1FBRUQsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNQLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUF5QjtJQUN6QyxNQUFNLE1BQU0sR0FBd0MsRUFBRSxDQUFDO0lBQ3ZELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxJQUFJLFNBQVMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3BFLElBQUksRUFBRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLFNBQVM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgeyBtaW5pbWF0Y2ggfSBmcm9tICdtaW5pbWF0Y2gnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB0eXBlIHsgU2RrUHJvdmlkZXIsIFN0YWNrQ29sbGVjdGlvbiB9IGZyb20gJy4uL2FwaSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb29rc0xpa2VHbG9iKGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGVudmlyb25tZW50LmluZGV4T2YoJyonKSA+IC0xO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdsb2JFbnZpcm9ubWVudHNGcm9tU3RhY2tzKHN0YWNrczogU3RhY2tDb2xsZWN0aW9uLCBlbnZpcm9ubWVudEdsb2JzOiBzdHJpbmdbXSwgc2RrOiBTZGtQcm92aWRlcik6IFByb21pc2U8Y3hhcGkuRW52aXJvbm1lbnRbXT4ge1xuICBpZiAoZW52aXJvbm1lbnRHbG9icy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBhdmFpbGFibGVFbnZpcm9ubWVudHMgPSBuZXcgQXJyYXk8Y3hhcGkuRW52aXJvbm1lbnQ+KCk7XG4gIGZvciAoY29uc3Qgc3RhY2sgb2Ygc3RhY2tzLnN0YWNrQXJ0aWZhY3RzKSB7XG4gICAgY29uc3QgYWN0dWFsID0gYXdhaXQgc2RrLnJlc29sdmVFbnZpcm9ubWVudChzdGFjay5lbnZpcm9ubWVudCk7XG4gICAgYXZhaWxhYmxlRW52aXJvbm1lbnRzLnB1c2goYWN0dWFsKTtcbiAgfVxuXG4gIGNvbnN0IGVudmlyb25tZW50cyA9IGRpc3RpbmN0KGF2YWlsYWJsZUVudmlyb25tZW50cykuZmlsdGVyKGVudiA9PiBlbnZpcm9ubWVudEdsb2JzLmZpbmQoZ2xvYiA9PiBtaW5pbWF0Y2goZW52IS5uYW1lLCBnbG9iKSkpO1xuICBpZiAoZW52aXJvbm1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnN0IGdsb2JzID0gSlNPTi5zdHJpbmdpZnkoZW52aXJvbm1lbnRHbG9icyk7XG4gICAgY29uc3QgZW52TGlzdCA9IGF2YWlsYWJsZUVudmlyb25tZW50cy5sZW5ndGggPiAwID8gYXZhaWxhYmxlRW52aXJvbm1lbnRzLm1hcChlbnYgPT4gZW52IS5uYW1lKS5qb2luKCcsICcpIDogJzxub25lPic7XG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgTm8gZW52aXJvbm1lbnRzIHdlcmUgZm91bmQgd2hlbiBzZWxlY3RpbmcgYWNyb3NzICR7Z2xvYnN9IChhdmFpbGFibGU6ICR7ZW52TGlzdH0pYCk7XG4gIH1cblxuICByZXR1cm4gZW52aXJvbm1lbnRzO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgc2V0IG9mIFwiPGFjY291bnQ+LzxyZWdpb24+XCIgc3RyaW5ncywgY29uc3RydWN0IGVudmlyb25tZW50cyBmb3IgdGhlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW52aXJvbm1lbnRzRnJvbURlc2NyaXB0b3JzKGVudlNwZWNzOiBzdHJpbmdbXSk6IGN4YXBpLkVudmlyb25tZW50W10ge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8Y3hhcGkuRW52aXJvbm1lbnQ+KCk7XG5cbiAgZm9yIChjb25zdCBzcGVjIG9mIGVudlNwZWNzKSB7XG4gICAgY29uc3QgcGFydHMgPSBzcGVjLnJlcGxhY2UoL15hd3M6XFwvXFwvLywgJycpLnNwbGl0KCcvJyk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgRXhwZWN0ZWQgZW52aXJvbm1lbnQgbmFtZSBpbiBmb3JtYXQgJ2F3czovLzxhY2NvdW50Pi88cmVnaW9uPicsIGdvdDogJHtzcGVjfWApO1xuICAgIH1cblxuICAgIHJldC5wdXNoKHtcbiAgICAgIG5hbWU6IHNwZWMsXG4gICAgICBhY2NvdW50OiBwYXJ0c1swXSxcbiAgICAgIHJlZ2lvbjogcGFydHNbMV0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIERlLWR1cGxpY2F0ZXMgYSBsaXN0IG9mIGVudmlyb25tZW50cywgc3VjaCB0aGF0IGEgZ2l2ZW4gYWNjb3VudCBhbmQgcmVnaW9uIGlzIG9ubHkgcmVwcmVzZW50ZWQgZXhhY3RseSBvbmNlXG4gKiBpbiB0aGUgcmVzdWx0LlxuICpcbiAqIEBwYXJhbSBlbnZzIHRoZSBwb3NzaWJseSBmdWxsLW9mLWR1cGxpY2F0ZXMgbGlzdCBvZiBlbnZpcm9ubWVudHMuXG4gKlxuICogQHJldHVybiBhIGRlLWR1cGxpY2F0ZWQgbGlzdCBvZiBlbnZpcm9ubWVudHMuXG4gKi9cbmZ1bmN0aW9uIGRpc3RpbmN0KGVudnM6IGN4YXBpLkVudmlyb25tZW50W10pOiBjeGFwaS5FbnZpcm9ubWVudFtdIHtcbiAgY29uc3QgdW5pcXVlOiB7IFtpZDogc3RyaW5nXTogY3hhcGkuRW52aXJvbm1lbnQgfSA9IHt9O1xuICBmb3IgKGNvbnN0IGVudiBvZiBlbnZzKSB7XG4gICAgY29uc3QgaWQgPSBgJHtlbnYuYWNjb3VudCB8fCAnZGVmYXVsdCd9LyR7ZW52LnJlZ2lvbiB8fCAnZGVmYXVsdCd9YDtcbiAgICBpZiAoaWQgaW4gdW5pcXVlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdW5pcXVlW2lkXSA9IGVudjtcbiAgfVxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyh1bmlxdWUpO1xufVxuIl19
@@ -0,0 +1,14 @@
1
+ import * as cxapi from '@aws-cdk/cx-api';
2
+ import type { SdkProvider, ILock } from '../api';
3
+ import { type IoHelper } from '../api-private';
4
+ import type { Configuration } from '../cli/user-configuration';
5
+ export interface ExecProgramResult {
6
+ readonly assembly: cxapi.CloudAssembly;
7
+ readonly lock: ILock;
8
+ }
9
+ /** Invokes the cloud executable and returns JSON output */
10
+ export declare function execProgram(aws: SdkProvider, ioHelper: IoHelper, config: Configuration): Promise<ExecProgramResult>;
11
+ /**
12
+ * Creates an assembly with error handling
13
+ */
14
+ export declare function createAssembly(appDir: string): cxapi.CloudAssembly;
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.execProgram = execProgram;
4
+ exports.createAssembly = createAssembly;
5
+ const childProcess = require("child_process");
6
+ const os = require("os");
7
+ const path = require("path");
8
+ const util_1 = require("util");
9
+ const cxschema = require("@aws-cdk/cloud-assembly-schema");
10
+ const cxapi = require("@aws-cdk/cx-api");
11
+ const fs = require("fs-extra");
12
+ const semver = require("semver");
13
+ const api_1 = require("../api");
14
+ const api_private_1 = require("../api-private");
15
+ const user_configuration_1 = require("../cli/user-configuration");
16
+ const version_1 = require("../cli/version");
17
+ const util_2 = require("../util");
18
+ /** Invokes the cloud executable and returns JSON output */
19
+ async function execProgram(aws, ioHelper, config) {
20
+ const debugFn = (msg) => ioHelper.notify(api_private_1.IO.DEFAULT_ASSEMBLY_DEBUG.msg(msg));
21
+ const env = await (0, api_1.prepareDefaultEnvironment)(aws, debugFn);
22
+ const context = await (0, api_1.prepareContext)(config.settings, config.context.all, env, debugFn);
23
+ const build = config.settings.get(['build']);
24
+ if (build) {
25
+ await exec(build);
26
+ }
27
+ const app = config.settings.get(['app']);
28
+ if (!app) {
29
+ throw new api_1.ToolkitError(`--app is required either in command-line, in ${user_configuration_1.PROJECT_CONFIG} or in ${user_configuration_1.USER_DEFAULTS}`);
30
+ }
31
+ // bypass "synth" if app points to a cloud assembly
32
+ if (await fs.pathExists(app) && (await fs.stat(app)).isDirectory()) {
33
+ await debugFn('--app points to a cloud assembly, so we bypass synth');
34
+ // Acquire a read lock on this directory
35
+ const lock = await new api_1.RWLock(app).acquireRead();
36
+ return { assembly: createAssembly(app), lock };
37
+ }
38
+ const commandLine = await (0, api_1.guessExecutable)(app, debugFn);
39
+ const outdir = config.settings.get(['output']);
40
+ if (!outdir) {
41
+ throw new api_1.ToolkitError('unexpected: --output is required');
42
+ }
43
+ if (typeof outdir !== 'string') {
44
+ throw new api_1.ToolkitError(`--output takes a string, got ${JSON.stringify(outdir)}`);
45
+ }
46
+ try {
47
+ await fs.mkdirp(outdir);
48
+ }
49
+ catch (error) {
50
+ throw new api_1.ToolkitError(`Could not create output directory ${outdir} (${error.message})`);
51
+ }
52
+ await debugFn(`outdir: ${outdir}`);
53
+ env[cxapi.OUTDIR_ENV] = outdir;
54
+ // Acquire a lock on the output directory
55
+ const writerLock = await new api_1.RWLock(outdir).acquireWrite();
56
+ try {
57
+ // Send version information
58
+ env[cxapi.CLI_ASM_VERSION_ENV] = cxschema.Manifest.version();
59
+ env[cxapi.CLI_VERSION_ENV] = (0, version_1.versionNumber)();
60
+ await debugFn((0, util_1.format)('env:', env));
61
+ const envVariableSizeLimit = os.platform() === 'win32' ? 32760 : 131072;
62
+ const [smallContext, overflow] = (0, util_2.splitBySize)(context, (0, api_1.spaceAvailableForContext)(env, envVariableSizeLimit));
63
+ // Store the safe part in the environment variable
64
+ env[cxapi.CONTEXT_ENV] = JSON.stringify(smallContext);
65
+ // If there was any overflow, write it to a temporary file
66
+ let contextOverflowLocation;
67
+ if (Object.keys(overflow ?? {}).length > 0) {
68
+ const contextDir = await fs.mkdtemp(path.join(os.tmpdir(), 'cdk-context'));
69
+ contextOverflowLocation = path.join(contextDir, 'context-overflow.json');
70
+ fs.writeJSONSync(contextOverflowLocation, overflow);
71
+ env[cxapi.CONTEXT_OVERFLOW_LOCATION_ENV] = contextOverflowLocation;
72
+ }
73
+ await exec(commandLine.join(' '));
74
+ const assembly = createAssembly(outdir);
75
+ await contextOverflowCleanup(contextOverflowLocation, assembly, ioHelper);
76
+ return { assembly, lock: await writerLock.convertToReaderLock() };
77
+ }
78
+ catch (e) {
79
+ await writerLock.release();
80
+ throw e;
81
+ }
82
+ async function exec(commandAndArgs) {
83
+ try {
84
+ await new Promise((ok, fail) => {
85
+ // We use a slightly lower-level interface to:
86
+ //
87
+ // - Pass arguments in an array instead of a string, to get around a
88
+ // number of quoting issues introduced by the intermediate shell layer
89
+ // (which would be different between Linux and Windows).
90
+ //
91
+ // - Inherit stderr from controlling terminal. We don't use the captured value
92
+ // anyway, and if the subprocess is printing to it for debugging purposes the
93
+ // user gets to see it sooner. Plus, capturing doesn't interact nicely with some
94
+ // processes like Maven.
95
+ const proc = childProcess.spawn(commandAndArgs, {
96
+ stdio: ['ignore', 'inherit', 'inherit'],
97
+ detached: false,
98
+ shell: true,
99
+ env: {
100
+ ...process.env,
101
+ ...env,
102
+ },
103
+ });
104
+ proc.on('error', fail);
105
+ proc.on('exit', code => {
106
+ if (code === 0) {
107
+ return ok();
108
+ }
109
+ else {
110
+ return fail(new api_1.ToolkitError(`Subprocess exited with error ${code}`));
111
+ }
112
+ });
113
+ });
114
+ }
115
+ catch (e) {
116
+ await debugFn(`failed command: ${commandAndArgs}`);
117
+ throw e;
118
+ }
119
+ }
120
+ }
121
+ /**
122
+ * Creates an assembly with error handling
123
+ */
124
+ function createAssembly(appDir) {
125
+ try {
126
+ return new cxapi.CloudAssembly(appDir, {
127
+ // We sort as we deploy
128
+ topoSort: false,
129
+ });
130
+ }
131
+ catch (error) {
132
+ if (error.message.includes(cxschema.VERSION_MISMATCH)) {
133
+ // this means the CLI version is too old.
134
+ // we instruct the user to upgrade.
135
+ throw new api_1.ToolkitError(`This CDK CLI is not compatible with the CDK library used by your application. Please upgrade the CLI to the latest version.\n(${error.message})`);
136
+ }
137
+ throw error;
138
+ }
139
+ }
140
+ async function contextOverflowCleanup(location, assembly, ioHelper) {
141
+ if (location) {
142
+ fs.removeSync(path.dirname(location));
143
+ const tree = await (0, api_1.loadTree)(assembly, (msg) => ioHelper.notify(api_private_1.IO.DEFAULT_ASSEMBLY_TRACE.msg(msg)));
144
+ const frameworkDoesNotSupportContextOverflow = (0, api_1.some)(tree, node => {
145
+ const fqn = node.constructInfo?.fqn;
146
+ const version = node.constructInfo?.version;
147
+ return (fqn === 'aws-cdk-lib.App' && version != null && semver.lte(version, '2.38.0'))
148
+ || fqn === '@aws-cdk/core.App'; // v1
149
+ });
150
+ // We're dealing with an old version of the framework here. It is unaware of the temporary
151
+ // file, which means that it will ignore the context overflow.
152
+ if (frameworkDoesNotSupportContextOverflow) {
153
+ await ioHelper.notify(api_private_1.IO.DEFAULT_ASSEMBLY_WARN.msg('Part of the context could not be sent to the application. Please update the AWS CDK library to the latest version.'));
154
+ }
155
+ }
156
+ }
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImV4ZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFzQkEsa0NBc0hDO0FBS0Qsd0NBY0M7QUEvSkQsOENBQThDO0FBQzlDLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsK0JBQThCO0FBQzlCLDJEQUEyRDtBQUMzRCx5Q0FBeUM7QUFDekMsK0JBQStCO0FBQy9CLGlDQUFpQztBQUVqQyxnQ0FBb0o7QUFDcEosZ0RBQW1EO0FBRW5ELGtFQUEwRTtBQUMxRSw0Q0FBK0M7QUFDL0Msa0NBQXNDO0FBT3RDLDJEQUEyRDtBQUNwRCxLQUFLLFVBQVUsV0FBVyxDQUFDLEdBQWdCLEVBQUUsUUFBa0IsRUFBRSxNQUFxQjtJQUMzRixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxnQkFBRSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSwrQkFBeUIsRUFBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLG9CQUFjLEVBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFeEYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksQ0FBQyxHQUFH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O1FBQzVLLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoaWxkUHJvY2VzcyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyLCBJTG9jayB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBSV0xvY2ssIFRvb2xraXRFcnJvciwgZ3Vlc3NFeGVjdXRhYmxlLCBsb2FkVHJlZSwgcHJlcGFyZUNvbnRleHQsIHByZXBhcmVEZWZhdWx0RW52aXJvbm1lbnQsIHNvbWUsIHNwYWNlQXZhaWxhYmxlRm9yQ29udGV4dCB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBJTywgdHlwZSBJb0hlbHBlciB9IGZyb20gJy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2NsaS91c2VyLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgUFJPSkVDVF9DT05GSUcsIFVTRVJfREVGQVVMVFMgfSBmcm9tICcuLi9jbGkvdXNlci1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IHZlcnNpb25OdW1iZXIgfSBmcm9tICcuLi9jbGkvdmVyc2lvbic7XG5pbXBvcnQgeyBzcGxpdEJ5U2l6ZSB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNQcm9ncmFtUmVzdWx0IHtcbiAgcmVhZG9ubHkgYXNzZW1ibHk6IGN4YXBpLkNsb3VkQXNzZW1ibHk7XG4gIHJlYWRvbmx5IGxvY2s6IElMb2NrO1xufVxuXG4vKiogSW52b2tlcyB0aGUgY2xvdWQgZXhlY3V0YWJsZSBhbmQgcmV0dXJucyBKU09OIG91dHB1dCAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWNQcm9ncmFtKGF3czogU2RrUHJvdmlkZXIsIGlvSGVscGVyOiBJb0hlbHBlciwgY29uZmlnOiBDb25maWd1cmF0aW9uKTogUHJvbWlzZTxFeGVjUHJvZ3JhbVJlc3VsdD4ge1xuICBjb25zdCBkZWJ1Z0ZuID0gKG1zZzogc3RyaW5nKSA9PiBpb0hlbHBlci5ub3RpZnkoSU8uREVGQVVMVF9BU1NFTUJMWV9ERUJVRy5tc2cobXNnKSk7XG4gIGNvbnN0IGVudiA9IGF3YWl0IHByZXBhcmVEZWZhdWx0RW52aXJvbm1lbnQoYXdzLCBkZWJ1Z0ZuKTtcbiAgY29uc3QgY29udGV4dCA9IGF3YWl0IHByZXBhcmVDb250ZXh0KGNvbmZpZy5zZXR0aW5ncywgY29uZmlnLmNvbnRleHQuYWxsLCBlbnYsIGRlYnVnRm4pO1xuXG4gIGNvbnN0IGJ1aWxkID0gY29uZmlnLnNldHRpbmdzLmdldChbJ2J1aWxkJ10pO1xuICBpZiAoYnVpbGQpIHtcbiAgICBhd2FpdCBleGVjKGJ1aWxkKTtcbiAgfVxuXG4gIGNvbnN0IGFwcCA9IGNvbmZpZy5zZXR0aW5ncy5nZXQoWydhcHAnXSk7XG4gIGlmICghYXBwKSB7XG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgLS1hcHAgaXMgcmVxdWlyZWQgZWl0aGVyIGluIGNvbW1hbmQtbGluZSwgaW4gJHtQUk9KRUNUX0NPTkZJR30gb3IgaW4gJHtVU0VSX0RFRkFVTFRTfWApO1xuICB9XG5cbiAgLy8gYnlwYXNzIFwic3ludGhcIiBpZiBhcHAgcG9pbnRzIHRvIGEgY2xvdWQgYXNzZW1ibHlcbiAgaWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMoYXBwKSAmJiAoYXdhaXQgZnMuc3RhdChhcHApKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgYXdhaXQgZGVidWdGbignLS1hcHAgcG9pbnRzIHRvIGEgY2xvdWQgYXNzZW1ibHksIHNvIHdlIGJ5cGFzcyBzeW50aCcpO1xuXG4gICAgLy8gQWNxdWlyZSBhIHJlYWQgbG9jayBvbiB0aGlzIGRpcmVjdG9yeVxuICAgIGNvbnN0IGxvY2sgPSBhd2FpdCBuZXcgUldMb2NrKGFwcCkuYWNxdWlyZVJlYWQoKTtcblxuICAgIHJldHVybiB7IGFzc2VtYmx5OiBjcmVhdGVBc3NlbWJseShhcHApLCBsb2NrIH07XG4gIH1cblxuICBjb25zdCBjb21tYW5kTGluZSA9IGF3YWl0IGd1ZXNzRXhlY3V0YWJsZShhcHAsIGRlYnVnRm4pO1xuXG4gIGNvbnN0IG91dGRpciA9IGNvbmZpZy5zZXR0aW5ncy5nZXQoWydvdXRwdXQnXSk7XG4gIGlmICghb3V0ZGlyKSB7XG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcigndW5leHBlY3RlZDogLS1vdXRwdXQgaXMgcmVxdWlyZWQnKTtcbiAgfVxuICBpZiAodHlwZW9mIG91dGRpciAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGAtLW91dHB1dCB0YWtlcyBhIHN0cmluZywgZ290ICR7SlNPTi5zdHJpbmdpZnkob3V0ZGlyKX1gKTtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IGZzLm1rZGlycChvdXRkaXIpO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgQ291bGQgbm90IGNyZWF0ZSBvdXRwdXQgZGlyZWN0b3J5ICR7b3V0ZGlyfSAoJHtlcnJvci5tZXNzYWdlfSlgKTtcbiAgfVxuXG4gIGF3YWl0IGRlYnVnRm4oYG91dGRpcjogJHtvdXRkaXJ9YCk7XG4gIGVudltjeGFwaS5PVVRESVJfRU5WXSA9IG91dGRpcjtcblxuICAvLyBBY3F1aXJlIGEgbG9jayBvbiB0aGUgb3V0cHV0IGRpcmVjdG9yeVxuICBjb25zdCB3cml0ZXJMb2NrID0gYXdhaXQgbmV3IFJXTG9jayhvdXRkaXIpLmFjcXVpcmVXcml0ZSgpO1xuXG4gIHRyeSB7XG4gICAgLy8gU2VuZCB2ZXJzaW9uIGluZm9ybWF0aW9uXG4gICAgZW52W2N4YXBpLkNMSV9BU01fVkVSU0lPTl9FTlZdID0gY3hzY2hlbWEuTWFuaWZlc3QudmVyc2lvbigpO1xuICAgIGVudltjeGFwaS5DTElfVkVSU0lPTl9FTlZdID0gdmVyc2lvbk51bWJlcigpO1xuXG4gICAgYXdhaXQgZGVidWdGbihmb3JtYXQoJ2VudjonLCBlbnYpKTtcblxuICAgIGNvbnN0IGVudlZhcmlhYmxlU2l6ZUxpbWl0ID0gb3MucGxhdGZvcm0oKSA9PT0gJ3dpbjMyJyA/IDMyNzYwIDogMTMxMDcyO1xuICAgIGNvbnN0IFtzbWFsbENvbnRleHQsIG92ZXJmbG93XSA9IHNwbGl0QnlTaXplKGNvbnRleHQsIHNwYWNlQXZhaWxhYmxlRm9yQ29udGV4dChlbnYsIGVudlZhcmlhYmxlU2l6ZUxpbWl0KSk7XG5cbiAgICAvLyBTdG9yZSB0aGUgc2FmZSBwYXJ0IGluIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICAgIGVudltjeGFwaS5DT05URVhUX0VOVl0gPSBKU09OLnN0cmluZ2lmeShzbWFsbENvbnRleHQpO1xuXG4gICAgLy8gSWYgdGhlcmUgd2FzIGFueSBvdmVyZmxvdywgd3JpdGUgaXQgdG8gYSB0ZW1wb3JhcnkgZmlsZVxuICAgIGxldCBjb250ZXh0T3ZlcmZsb3dMb2NhdGlvbjtcbiAgICBpZiAoT2JqZWN0LmtleXMob3ZlcmZsb3cgPz8ge30pLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNvbnRleHREaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2Nkay1jb250ZXh0JykpO1xuICAgICAgY29udGV4dE92ZXJmbG93TG9jYXRpb24gPSBwYXRoLmpvaW4oY29udGV4dERpciwgJ2NvbnRleHQtb3ZlcmZsb3cuanNvbicpO1xuICAgICAgZnMud3JpdGVKU09OU3luYyhjb250ZXh0T3ZlcmZsb3dMb2NhdGlvbiwgb3ZlcmZsb3cpO1xuICAgICAgZW52W2N4YXBpLkNPTlRFWFRfT1ZFUkZMT1dfTE9DQVRJT05fRU5WXSA9IGNvbnRleHRPdmVyZmxvd0xvY2F0aW9uO1xuICAgIH1cblxuICAgIGF3YWl0IGV4ZWMoY29tbWFuZExpbmUuam9pbignICcpKTtcblxuICAgIGNvbnN0IGFzc2VtYmx5ID0gY3JlYXRlQXNzZW1ibHkob3V0ZGlyKTtcblxuICAgIGF3YWl0IGNvbnRleHRPdmVyZmxvd0NsZWFudXAoY29udGV4dE92ZXJmbG93TG9jYXRpb24sIGFzc2VtYmx5LCBpb0hlbHBlcik7XG5cbiAgICByZXR1cm4geyBhc3NlbWJseSwgbG9jazogYXdhaXQgd3JpdGVyTG9jay5jb252ZXJ0VG9SZWFkZXJMb2NrKCkgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IHdyaXRlckxvY2sucmVsZWFzZSgpO1xuICAgIHRocm93IGU7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBleGVjKGNvbW1hbmRBbmRBcmdzOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKG9rLCBmYWlsKSA9PiB7XG4gICAgICAgIC8vIFdlIHVzZSBhIHNsaWdodGx5IGxvd2VyLWxldmVsIGludGVyZmFjZSB0bzpcbiAgICAgICAgLy9cbiAgICAgICAgLy8gLSBQYXNzIGFyZ3VtZW50cyBpbiBhbiBhcnJheSBpbnN0ZWFkIG9mIGEgc3RyaW5nLCB0byBnZXQgYXJvdW5kIGFcbiAgICAgICAgLy8gICBudW1iZXIgb2YgcXVvdGluZyBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGUgaW50ZXJtZWRpYXRlIHNoZWxsIGxheWVyXG4gICAgICAgIC8vICAgKHdoaWNoIHdvdWxkIGJlIGRpZmZlcmVudCBiZXR3ZWVuIExpbnV4IGFuZCBXaW5kb3dzKS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gLSBJbmhlcml0IHN0ZGVyciBmcm9tIGNvbnRyb2xsaW5nIHRlcm1pbmFsLiBXZSBkb24ndCB1c2UgdGhlIGNhcHR1cmVkIHZhbHVlXG4gICAgICAgIC8vICAgYW55d2F5LCBhbmQgaWYgdGhlIHN1YnByb2Nlc3MgaXMgcHJpbnRpbmcgdG8gaXQgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyB0aGVcbiAgICAgICAgLy8gICB1c2VyIGdldHMgdG8gc2VlIGl0IHNvb25lci4gUGx1cywgY2FwdHVyaW5nIGRvZXNuJ3QgaW50ZXJhY3QgbmljZWx5IHdpdGggc29tZVxuICAgICAgICAvLyAgIHByb2Nlc3NlcyBsaWtlIE1hdmVuLlxuICAgICAgICBjb25zdCBwcm9jID0gY2hpbGRQcm9jZXNzLnNwYXduKGNvbW1hbmRBbmRBcmdzLCB7XG4gICAgICAgICAgc3RkaW86IFsnaWdub3JlJywgJ2luaGVyaXQnLCAnaW5oZXJpdCddLFxuICAgICAgICAgIGRldGFjaGVkOiBmYWxzZSxcbiAgICAgICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICAgICAgLi4uZW52LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByb2Mub24oJ2Vycm9yJywgZmFpbCk7XG5cbiAgICAgICAgcHJvYy5vbignZXhpdCcsIGNvZGUgPT4ge1xuICAgICAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2soKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWwobmV3IFRvb2xraXRFcnJvcihgU3VicHJvY2VzcyBleGl0ZWQgd2l0aCBlcnJvciAke2NvZGV9YCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGF3YWl0IGRlYnVnRm4oYGZhaWxlZCBjb21tYW5kOiAke2NvbW1hbmRBbmRBcmdzfWApO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFzc2VtYmx5IHdpdGggZXJyb3IgaGFuZGxpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFzc2VtYmx5KGFwcERpcjogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBjeGFwaS5DbG91ZEFzc2VtYmx5KGFwcERpciwge1xuICAgICAgLy8gV2Ugc29ydCBhcyB3ZSBkZXBsb3lcbiAgICAgIHRvcG9Tb3J0OiBmYWxzZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGlmIChlcnJvci5tZXNzYWdlLmluY2x1ZGVzKGN4c2NoZW1hLlZFUlNJT05fTUlTTUFUQ0gpKSB7XG4gICAgICAvLyB0aGlzIG1lYW5zIHRoZSBDTEkgdmVyc2lvbiBpcyB0b28gb2xkLlxuICAgICAgLy8gd2UgaW5zdHJ1Y3QgdGhlIHVzZXIgdG8gdXBncmFkZS5cbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFRoaXMgQ0RLIENMSSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBDREsgbGlicmFyeSB1c2VkIGJ5IHlvdXIgYXBwbGljYXRpb24uIFBsZWFzZSB1cGdyYWRlIHRoZSBDTEkgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLlxcbigke2Vycm9yLm1lc3NhZ2V9KWApO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb250ZXh0T3ZlcmZsb3dDbGVhbnVwKFxuICBsb2NhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBhc3NlbWJseTogY3hhcGkuQ2xvdWRBc3NlbWJseSxcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuKSB7XG4gIGlmIChsb2NhdGlvbikge1xuICAgIGZzLnJlbW92ZVN5bmMocGF0aC5kaXJuYW1lKGxvY2F0aW9uKSk7XG5cbiAgICBjb25zdCB0cmVlID0gYXdhaXQgbG9hZFRyZWUoYXNzZW1ibHksIChtc2c6IHN0cmluZykgPT4gaW9IZWxwZXIubm90aWZ5KElPLkRFRkFVTFRfQVNTRU1CTFlfVFJBQ0UubXNnKG1zZykpKTtcbiAgICBjb25zdCBmcmFtZXdvcmtEb2VzTm90U3VwcG9ydENvbnRleHRPdmVyZmxvdyA9IHNvbWUodHJlZSwgbm9kZSA9PiB7XG4gICAgICBjb25zdCBmcW4gPSBub2RlLmNvbnN0cnVjdEluZm8/LmZxbjtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSBub2RlLmNvbnN0cnVjdEluZm8/LnZlcnNpb247XG4gICAgICByZXR1cm4gKGZxbiA9PT0gJ2F3cy1jZGstbGliLkFwcCcgJiYgdmVyc2lvbiAhPSBudWxsICYmIHNlbXZlci5sdGUodmVyc2lvbiwgJzIuMzguMCcpKVxuICAgICAgICB8fCBmcW4gPT09ICdAYXdzLWNkay9jb3JlLkFwcCc7IC8vIHYxXG4gICAgfSk7XG5cbiAgICAvLyBXZSdyZSBkZWFsaW5nIHdpdGggYW4gb2xkIHZlcnNpb24gb2YgdGhlIGZyYW1ld29yayBoZXJlLiBJdCBpcyB1bmF3YXJlIG9mIHRoZSB0ZW1wb3JhcnlcbiAgICAvLyBmaWxlLCB3aGljaCBtZWFucyB0aGF0IGl0IHdpbGwgaWdub3JlIHRoZSBjb250ZXh0IG92ZXJmbG93LlxuICAgIGlmIChmcmFtZXdvcmtEb2VzTm90U3VwcG9ydENvbnRleHRPdmVyZmxvdykge1xuICAgICAgYXdhaXQgaW9IZWxwZXIubm90aWZ5KElPLkRFRkFVTFRfQVNTRU1CTFlfV0FSTi5tc2coJ1BhcnQgb2YgdGhlIGNvbnRleHQgY291bGQgbm90IGJlIHNlbnQgdG8gdGhlIGFwcGxpY2F0aW9uLiBQbGVhc2UgdXBkYXRlIHRoZSBBV1MgQ0RLIGxpYnJhcnkgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLicpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './cloud-assembly';
2
+ export * from './cloud-executable';
3
+ export * from './environments';
4
+ export * from './exec';
@@ -14,6 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./bootstrap-environment"), exports);
18
- __exportStar(require("./bootstrap-props"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMERBQXdDO0FBQ3hDLG9EQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYm9vdHN0cmFwLWVudmlyb25tZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYm9vdHN0cmFwLXByb3BzJztcbiJdfQ==
17
+ __exportStar(require("./cloud-assembly"), exports);
18
+ __exportStar(require("./cloud-executable"), exports);
19
+ __exportStar(require("./environments"), exports);
20
+ __exportStar(require("./exec"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWlDO0FBQ2pDLHFEQUFtQztBQUNuQyxpREFBK0I7QUFDL0IseUNBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5leHBvcnQgKiBmcm9tICcuL2Nsb3VkLWV4ZWN1dGFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnZpcm9ubWVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9leGVjJztcbiJdfQ==