@depup/aws-cdk 2.1117.0-depup.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 (308) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +16 -0
  3. package/README.md +25 -0
  4. package/THIRD_PARTY_LICENSES +24866 -0
  5. package/bin/cdk +6 -0
  6. package/build-info.json +4 -0
  7. package/changes.json +5 -0
  8. package/db.json.gz +0 -0
  9. package/docs/deploy-architecture.md +194 -0
  10. package/lib/api/aws-auth.d.ts +3 -0
  11. package/lib/api/aws-auth.js +21 -0
  12. package/lib/api/bootstrap/bootstrap-template.yaml +855 -0
  13. package/lib/api/bootstrap.d.ts +1 -0
  14. package/lib/api/bootstrap.js +19 -0
  15. package/lib/api/cloud-assembly.d.ts +5 -0
  16. package/lib/api/cloud-assembly.js +23 -0
  17. package/lib/api/cloudformation.d.ts +1 -0
  18. package/lib/api/cloudformation.js +19 -0
  19. package/lib/api/context.d.ts +1 -0
  20. package/lib/api/context.js +19 -0
  21. package/lib/api/deployments.d.ts +1 -0
  22. package/lib/api/deployments.js +19 -0
  23. package/lib/api/hotswap.d.ts +1 -0
  24. package/lib/api/hotswap.js +19 -0
  25. package/lib/api/index.d.ts +16 -0
  26. package/lib/api/index.js +38 -0
  27. package/lib/api/network-detector.d.ts +1 -0
  28. package/lib/api/network-detector.js +19 -0
  29. package/lib/api/notices.d.ts +1 -0
  30. package/lib/api/notices.js +19 -0
  31. package/lib/api/plugin.d.ts +1 -0
  32. package/lib/api/plugin.js +19 -0
  33. package/lib/api/refactor.d.ts +1 -0
  34. package/lib/api/refactor.js +8 -0
  35. package/lib/api/settings.d.ts +1 -0
  36. package/lib/api/settings.js +19 -0
  37. package/lib/api/tags.d.ts +1 -0
  38. package/lib/api/tags.js +19 -0
  39. package/lib/api-private.d.ts +9 -0
  40. package/lib/api-private.js +29 -0
  41. package/lib/cli/cdk-toolkit.d.ts +699 -0
  42. package/lib/cli/cdk-toolkit.js +1260 -0
  43. package/lib/cli/ci-systems.d.ts +29 -0
  44. package/lib/cli/ci-systems.js +61 -0
  45. package/lib/cli/cli-config.d.ts +10 -0
  46. package/lib/cli/cli-config.js +556 -0
  47. package/lib/cli/cli-type-registry.json +1147 -0
  48. package/lib/cli/cli.d.ts +3 -0
  49. package/lib/cli/cli.js +746 -0
  50. package/lib/cli/convert-to-user-input.d.ts +3 -0
  51. package/lib/cli/convert-to-user-input.js +560 -0
  52. package/lib/cli/display-version.d.ts +11 -0
  53. package/lib/cli/display-version.js +101 -0
  54. package/lib/cli/io-host/cli-io-host.d.ts +191 -0
  55. package/lib/cli/io-host/cli-io-host.js +477 -0
  56. package/lib/cli/io-host/index.d.ts +1 -0
  57. package/lib/cli/io-host/index.js +18 -0
  58. package/lib/cli/parse-command-line-arguments.d.ts +1 -0
  59. package/lib/cli/parse-command-line-arguments.js +1067 -0
  60. package/lib/cli/platform-warnings.d.ts +3 -0
  61. package/lib/cli/platform-warnings.js +44 -0
  62. package/lib/cli/pretty-print-error.d.ts +1 -0
  63. package/lib/cli/pretty-print-error.js +37 -0
  64. package/lib/cli/proxy-agent.d.ts +30 -0
  65. package/lib/cli/proxy-agent.js +52 -0
  66. package/lib/cli/root-dir.d.ts +10 -0
  67. package/lib/cli/root-dir.js +23 -0
  68. package/lib/cli/singleton-plugin-host.d.ts +7 -0
  69. package/lib/cli/singleton-plugin-host.js +11 -0
  70. package/lib/cli/tables.d.ts +1 -0
  71. package/lib/cli/tables.js +10 -0
  72. package/lib/cli/telemetry/collect-telemetry.d.ts +5 -0
  73. package/lib/cli/telemetry/collect-telemetry.js +16 -0
  74. package/lib/cli/telemetry/error.d.ts +15 -0
  75. package/lib/cli/telemetry/error.js +68 -0
  76. package/lib/cli/telemetry/feature-flags.d.ts +96 -0
  77. package/lib/cli/telemetry/feature-flags.js +103 -0
  78. package/lib/cli/telemetry/installation-id.d.ts +5 -0
  79. package/lib/cli/telemetry/installation-id.js +47 -0
  80. package/lib/cli/telemetry/library-version.d.ts +2 -0
  81. package/lib/cli/telemetry/library-version.js +30 -0
  82. package/lib/cli/telemetry/messages.d.ts +43 -0
  83. package/lib/cli/telemetry/messages.js +60 -0
  84. package/lib/cli/telemetry/sanitation.d.ts +100 -0
  85. package/lib/cli/telemetry/sanitation.js +79 -0
  86. package/lib/cli/telemetry/schema.d.ts +85 -0
  87. package/lib/cli/telemetry/schema.js +3 -0
  88. package/lib/cli/telemetry/session.d.ts +67 -0
  89. package/lib/cli/telemetry/session.js +174 -0
  90. package/lib/cli/telemetry/sink/endpoint-sink.d.ts +44 -0
  91. package/lib/cli/telemetry/sink/endpoint-sink.js +105 -0
  92. package/lib/cli/telemetry/sink/file-sink.d.ts +32 -0
  93. package/lib/cli/telemetry/sink/file-sink.js +43 -0
  94. package/lib/cli/telemetry/sink/funnel.d.ts +16 -0
  95. package/lib/cli/telemetry/sink/funnel.js +29 -0
  96. package/lib/cli/telemetry/sink/io-host-sink.d.ts +27 -0
  97. package/lib/cli/telemetry/sink/io-host-sink.js +35 -0
  98. package/lib/cli/telemetry/sink/sink-interface.d.ts +18 -0
  99. package/lib/cli/telemetry/sink/sink-interface.js +3 -0
  100. package/lib/cli/user-configuration.d.ts +104 -0
  101. package/lib/cli/user-configuration.js +334 -0
  102. package/lib/cli/user-input.d.ts +1505 -0
  103. package/lib/cli/user-input.js +3 -0
  104. package/lib/cli/util/ci.d.ts +5 -0
  105. package/lib/cli/util/ci.js +11 -0
  106. package/lib/cli/util/console-formatters.d.ts +18 -0
  107. package/lib/cli/util/console-formatters.js +42 -0
  108. package/lib/cli/util/guess-agent.d.ts +7 -0
  109. package/lib/cli/util/guess-agent.js +32 -0
  110. package/lib/cli/util/npm.d.ts +4 -0
  111. package/lib/cli/util/npm.js +34 -0
  112. package/lib/cli/util/trap-errors.d.ts +6 -0
  113. package/lib/cli/util/trap-errors.js +17 -0
  114. package/lib/cli/util/yargs-helpers.d.ts +22 -0
  115. package/lib/cli/util/yargs-helpers.js +49 -0
  116. package/lib/cli/version.d.ts +3 -0
  117. package/lib/cli/version.js +22 -0
  118. package/lib/commands/context.d.ts +40 -0
  119. package/lib/commands/context.js +158 -0
  120. package/lib/commands/deploy.d.ts +13 -0
  121. package/lib/commands/deploy.js +18 -0
  122. package/lib/commands/docs.d.ts +18 -0
  123. package/lib/commands/docs.js +33 -0
  124. package/lib/commands/doctor.d.ts +4 -0
  125. package/lib/commands/doctor.js +69 -0
  126. package/lib/commands/flags/flags.d.ts +13 -0
  127. package/lib/commands/flags/flags.js +30 -0
  128. package/lib/commands/flags/interactive-handler.d.ts +16 -0
  129. package/lib/commands/flags/interactive-handler.js +71 -0
  130. package/lib/commands/flags/obsolete-flags.d.ts +1 -0
  131. package/lib/commands/flags/obsolete-flags.js +9 -0
  132. package/lib/commands/flags/operations.d.ts +80 -0
  133. package/lib/commands/flags/operations.js +467 -0
  134. package/lib/commands/flags/router.d.ts +18 -0
  135. package/lib/commands/flags/router.js +60 -0
  136. package/lib/commands/flags/types.d.ts +12 -0
  137. package/lib/commands/flags/types.js +12 -0
  138. package/lib/commands/flags/validator.d.ts +22 -0
  139. package/lib/commands/flags/validator.js +95 -0
  140. package/lib/commands/init/index.d.ts +1 -0
  141. package/lib/commands/init/index.js +18 -0
  142. package/lib/commands/init/init-hooks.d.ts +41 -0
  143. package/lib/commands/init/init-hooks.js +85 -0
  144. package/lib/commands/init/init.d.ts +139 -0
  145. package/lib/commands/init/init.js +788 -0
  146. package/lib/commands/init/os.d.ts +8 -0
  147. package/lib/commands/init/os.js +91 -0
  148. package/lib/commands/init/package-manager.d.ts +15 -0
  149. package/lib/commands/init/package-manager.js +14 -0
  150. package/lib/commands/language.d.ts +30 -0
  151. package/lib/commands/language.js +46 -0
  152. package/lib/commands/list-stacks.d.ts +21 -0
  153. package/lib/commands/list-stacks.js +28 -0
  154. package/lib/commands/migrate.d.ts +316 -0
  155. package/lib/commands/migrate.js +801 -0
  156. package/lib/context-providers.d.ts +1 -0
  157. package/lib/context-providers.js +19 -0
  158. package/lib/cxapp/cloud-assembly.d.ts +79 -0
  159. package/lib/cxapp/cloud-assembly.js +109 -0
  160. package/lib/cxapp/cloud-executable.d.ts +51 -0
  161. package/lib/cxapp/cloud-executable.js +123 -0
  162. package/lib/cxapp/environments.d.ts +8 -0
  163. package/lib/cxapp/environments.js +66 -0
  164. package/lib/cxapp/exec.d.ts +14 -0
  165. package/lib/cxapp/exec.js +133 -0
  166. package/lib/cxapp/index.d.ts +4 -0
  167. package/lib/cxapp/index.js +21 -0
  168. package/lib/index.d.ts +2 -0
  169. package/lib/index.js +364043 -0
  170. package/lib/index_bg.wasm +0 -0
  171. package/lib/init-templates/.init-version.json +1 -0
  172. package/lib/init-templates/.no-packagejson-validator +0 -0
  173. package/lib/init-templates/.recommended-feature-flags.json +86 -0
  174. package/lib/init-templates/LICENSE +16 -0
  175. package/lib/init-templates/app/csharp/.template.gitignore +342 -0
  176. package/lib/init-templates/app/csharp/README.md +14 -0
  177. package/lib/init-templates/app/csharp/cdk.template.json +15 -0
  178. package/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +20 -0
  179. package/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +13 -0
  180. package/lib/init-templates/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +1 -0
  181. package/lib/init-templates/app/csharp/src/%name.PascalCased%/Program.template.cs +44 -0
  182. package/lib/init-templates/app/csharp/src/%name.PascalCased%.template.sln +18 -0
  183. package/lib/init-templates/app/fsharp/.template.gitignore +342 -0
  184. package/lib/init-templates/app/fsharp/README.md +18 -0
  185. package/lib/init-templates/app/fsharp/cdk.template.json +14 -0
  186. package/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +25 -0
  187. package/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +8 -0
  188. package/lib/init-templates/app/fsharp/src/%name.PascalCased%/Program.template.fs +11 -0
  189. package/lib/init-templates/app/fsharp/src/%name.PascalCased%.template.sln +18 -0
  190. package/lib/init-templates/app/go/%name%.template.go +70 -0
  191. package/lib/init-templates/app/go/%name%_test.template.go +26 -0
  192. package/lib/init-templates/app/go/.template.gitignore +19 -0
  193. package/lib/init-templates/app/go/README.md +12 -0
  194. package/lib/init-templates/app/go/cdk.template.json +13 -0
  195. package/lib/init-templates/app/go/go.template.mod +9 -0
  196. package/lib/init-templates/app/info.json +4 -0
  197. package/lib/init-templates/app/java/.template.gitignore +13 -0
  198. package/lib/init-templates/app/java/README.md +18 -0
  199. package/lib/init-templates/app/java/cdk.json +13 -0
  200. package/lib/init-templates/app/java/pom.xml +60 -0
  201. package/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +42 -0
  202. package/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +24 -0
  203. package/lib/init-templates/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +26 -0
  204. package/lib/init-templates/app/javascript/.template.gitignore +5 -0
  205. package/lib/init-templates/app/javascript/.template.npmignore +3 -0
  206. package/lib/init-templates/app/javascript/README.md +12 -0
  207. package/lib/init-templates/app/javascript/bin/%name%.template.js +21 -0
  208. package/lib/init-templates/app/javascript/cdk.template.json +15 -0
  209. package/lib/init-templates/app/javascript/jest.config.js +4 -0
  210. package/lib/init-templates/app/javascript/lib/%name%-stack.template.js +23 -0
  211. package/lib/init-templates/app/javascript/package.json +20 -0
  212. package/lib/init-templates/app/javascript/test/%name%.test.template.js +17 -0
  213. package/lib/init-templates/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +19 -0
  214. package/lib/init-templates/app/python/%name.PythonModule%/__init__.py +0 -0
  215. package/lib/init-templates/app/python/.template.gitignore +10 -0
  216. package/lib/init-templates/app/python/README.template.md +58 -0
  217. package/lib/init-templates/app/python/app.template.py +28 -0
  218. package/lib/init-templates/app/python/cdk.template.json +15 -0
  219. package/lib/init-templates/app/python/requirements-dev.txt +1 -0
  220. package/lib/init-templates/app/python/requirements.txt +2 -0
  221. package/lib/init-templates/app/python/source.bat +13 -0
  222. package/lib/init-templates/app/python/tests/__init__.py +0 -0
  223. package/lib/init-templates/app/python/tests/unit/__init__.py +0 -0
  224. package/lib/init-templates/app/python/tests/unit/test_%name.PythonModule%_stack.template.py +15 -0
  225. package/lib/init-templates/app/typescript/.template.gitignore +8 -0
  226. package/lib/init-templates/app/typescript/.template.npmignore +6 -0
  227. package/lib/init-templates/app/typescript/README.md +14 -0
  228. package/lib/init-templates/app/typescript/bin/%name%.template.ts +20 -0
  229. package/lib/init-templates/app/typescript/cdk.template.json +17 -0
  230. package/lib/init-templates/app/typescript/jest.config.js +9 -0
  231. package/lib/init-templates/app/typescript/lib/%name%-stack.template.ts +16 -0
  232. package/lib/init-templates/app/typescript/package.json +26 -0
  233. package/lib/init-templates/app/typescript/test/%name%.test.template.ts +17 -0
  234. package/lib/init-templates/app/typescript/tsconfig.json +32 -0
  235. package/lib/init-templates/lib/info.json +4 -0
  236. package/lib/init-templates/lib/typescript/.template.gitignore +8 -0
  237. package/lib/init-templates/lib/typescript/.template.npmignore +6 -0
  238. package/lib/init-templates/lib/typescript/README.template.md +12 -0
  239. package/lib/init-templates/lib/typescript/jest.config.js +9 -0
  240. package/lib/init-templates/lib/typescript/lib/index.template.ts +21 -0
  241. package/lib/init-templates/lib/typescript/package.json +24 -0
  242. package/lib/init-templates/lib/typescript/test/%name%.test.template.ts +18 -0
  243. package/lib/init-templates/lib/typescript/tsconfig.json +32 -0
  244. package/lib/init-templates/sample-app/csharp/.template.gitignore +342 -0
  245. package/lib/init-templates/sample-app/csharp/README.template.md +19 -0
  246. package/lib/init-templates/sample-app/csharp/cdk.template.json +15 -0
  247. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +20 -0
  248. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +24 -0
  249. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +1 -0
  250. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/Program.template.cs +15 -0
  251. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%.template.sln +18 -0
  252. package/lib/init-templates/sample-app/fsharp/.template.gitignore +342 -0
  253. package/lib/init-templates/sample-app/fsharp/README.template.md +20 -0
  254. package/lib/init-templates/sample-app/fsharp/cdk.template.json +14 -0
  255. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +25 -0
  256. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +14 -0
  257. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs +11 -0
  258. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%.template.sln +18 -0
  259. package/lib/init-templates/sample-app/go/%name%.template.go +73 -0
  260. package/lib/init-templates/sample-app/go/%name%_test.template.go +25 -0
  261. package/lib/init-templates/sample-app/go/.template.gitignore +19 -0
  262. package/lib/init-templates/sample-app/go/README.md +12 -0
  263. package/lib/init-templates/sample-app/go/cdk.template.json +13 -0
  264. package/lib/init-templates/sample-app/go/go.template.mod +9 -0
  265. package/lib/init-templates/sample-app/info.json +4 -0
  266. package/lib/init-templates/sample-app/java/.template.gitignore +13 -0
  267. package/lib/init-templates/sample-app/java/README.template.md +19 -0
  268. package/lib/init-templates/sample-app/java/cdk.json +13 -0
  269. package/lib/init-templates/sample-app/java/pom.xml +55 -0
  270. package/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +13 -0
  271. package/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +29 -0
  272. package/lib/init-templates/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +27 -0
  273. package/lib/init-templates/sample-app/javascript/.template.gitignore +5 -0
  274. package/lib/init-templates/sample-app/javascript/.template.npmignore +3 -0
  275. package/lib/init-templates/sample-app/javascript/README.template.md +13 -0
  276. package/lib/init-templates/sample-app/javascript/bin/%name%.template.js +6 -0
  277. package/lib/init-templates/sample-app/javascript/cdk.template.json +15 -0
  278. package/lib/init-templates/sample-app/javascript/jest.config.js +4 -0
  279. package/lib/init-templates/sample-app/javascript/lib/%name%-stack.template.js +25 -0
  280. package/lib/init-templates/sample-app/javascript/package.json +20 -0
  281. package/lib/init-templates/sample-app/javascript/test/%name%.test.template.js +16 -0
  282. package/lib/init-templates/sample-app/javascript/tsconfig.json +34 -0
  283. package/lib/init-templates/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +26 -0
  284. package/lib/init-templates/sample-app/python/%name.PythonModule%/__init__.py +0 -0
  285. package/lib/init-templates/sample-app/python/.template.gitignore +22 -0
  286. package/lib/init-templates/sample-app/python/README.template.md +65 -0
  287. package/lib/init-templates/sample-app/python/app.template.py +11 -0
  288. package/lib/init-templates/sample-app/python/cdk.template.json +15 -0
  289. package/lib/init-templates/sample-app/python/requirements-dev.txt +1 -0
  290. package/lib/init-templates/sample-app/python/requirements.txt +2 -0
  291. package/lib/init-templates/sample-app/python/source.bat +13 -0
  292. package/lib/init-templates/sample-app/python/tests/__init__.py +0 -0
  293. package/lib/init-templates/sample-app/python/tests/unit/__init__.py +0 -0
  294. package/lib/init-templates/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py +21 -0
  295. package/lib/init-templates/sample-app/typescript/.template.gitignore +8 -0
  296. package/lib/init-templates/sample-app/typescript/.template.npmignore +6 -0
  297. package/lib/init-templates/sample-app/typescript/README.template.md +15 -0
  298. package/lib/init-templates/sample-app/typescript/bin/%name%.template.ts +6 -0
  299. package/lib/init-templates/sample-app/typescript/cdk.template.json +17 -0
  300. package/lib/init-templates/sample-app/typescript/jest.config.js +9 -0
  301. package/lib/init-templates/sample-app/typescript/lib/%name%-stack.template.ts +19 -0
  302. package/lib/init-templates/sample-app/typescript/package.json +26 -0
  303. package/lib/init-templates/sample-app/typescript/test/%name%.test.template.ts +17 -0
  304. package/lib/init-templates/sample-app/typescript/tsconfig.json +32 -0
  305. package/lib/util.d.ts +1 -0
  306. package/lib/util.js +19 -0
  307. package/package.json +170 -0
  308. package/release.txt +2 -0
@@ -0,0 +1 @@
1
+ export * from '../../@aws-cdk/toolkit-lib/lib/context-providers';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /* eslint-disable import/no-relative-packages */
18
+ __exportStar(require("../../@aws-cdk/toolkit-lib/lib/context-providers"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250ZXh0LXByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQWdEO0FBQ2hELG1GQUFpRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1yZWxhdGl2ZS1wYWNrYWdlcyAqL1xuZXhwb3J0ICogZnJvbSAnLi4vLi4vQGF3cy1jZGsvdG9vbGtpdC1saWIvbGliL2NvbnRleHQtcHJvdmlkZXJzJztcbiJdfQ==
@@ -0,0 +1,79 @@
1
+ import type * as cxapi from '@aws-cdk/cloud-assembly-api';
2
+ import { BaseStackAssembly, StackCollection } from '../api/cloud-assembly';
3
+ export declare enum DefaultSelection {
4
+ /**
5
+ * Returns an empty selection in case there are no selectors.
6
+ */
7
+ None = "none",
8
+ /**
9
+ * If the app includes a single stack, returns it. Otherwise throws an exception.
10
+ * This behavior is used by "deploy".
11
+ */
12
+ OnlySingle = "single",
13
+ /**
14
+ * Returns all stacks in the main (top level) assembly only.
15
+ */
16
+ MainAssembly = "main",
17
+ /**
18
+ * If no selectors are provided, returns all stacks in the app,
19
+ * including stacks inside nested assemblies.
20
+ */
21
+ AllStacks = "all"
22
+ }
23
+ export interface SelectStacksOptions {
24
+ /**
25
+ * Extend the selection to upstread/downstream stacks
26
+ * @default ExtendedStackSelection.None only select the specified stacks.
27
+ */
28
+ extend?: ExtendedStackSelection;
29
+ /**
30
+ * The behavior if no selectors are provided.
31
+ */
32
+ defaultBehavior: DefaultSelection;
33
+ /**
34
+ * Whether to deploy if the app contains no stacks.
35
+ *
36
+ * @default false
37
+ */
38
+ ignoreNoStacks?: boolean;
39
+ }
40
+ /**
41
+ * When selecting stacks, what other stacks to include because of dependencies
42
+ */
43
+ export declare enum ExtendedStackSelection {
44
+ /**
45
+ * Don't select any extra stacks
46
+ */
47
+ None = 0,
48
+ /**
49
+ * Include stacks that this stack depends on
50
+ */
51
+ Upstream = 1,
52
+ /**
53
+ * Include stacks that depend on this stack
54
+ */
55
+ Downstream = 2
56
+ }
57
+ /**
58
+ * A specification of which stacks should be selected
59
+ */
60
+ export interface StackSelector {
61
+ /**
62
+ * Whether all stacks at the top level assembly should
63
+ * be selected and nothing else
64
+ */
65
+ allTopLevel?: boolean;
66
+ /**
67
+ * A list of patterns to match the stack hierarchical ids
68
+ */
69
+ patterns: string[];
70
+ }
71
+ /**
72
+ * A single Cloud Assembly and the operations we do on it to deploy the artifacts inside
73
+ */
74
+ export declare class CloudAssembly extends BaseStackAssembly {
75
+ selectStacks(selector: StackSelector, options: SelectStacksOptions): Promise<StackCollection>;
76
+ private selectTopLevelStacks;
77
+ protected selectMatchingStacks(stacks: cxapi.CloudFormationStackArtifact[], patterns: string[], extend?: ExtendedStackSelection): Promise<StackCollection>;
78
+ private selectDefaultStacks;
79
+ }
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudAssembly = exports.ExtendedStackSelection = exports.DefaultSelection = void 0;
4
+ const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
5
+ const picomatch_1 = require("picomatch");
6
+ const semver = require("semver");
7
+ const cloud_assembly_1 = require("../api/cloud-assembly");
8
+ const util_1 = require("../util");
9
+ var DefaultSelection;
10
+ (function (DefaultSelection) {
11
+ /**
12
+ * Returns an empty selection in case there are no selectors.
13
+ */
14
+ DefaultSelection["None"] = "none";
15
+ /**
16
+ * If the app includes a single stack, returns it. Otherwise throws an exception.
17
+ * This behavior is used by "deploy".
18
+ */
19
+ DefaultSelection["OnlySingle"] = "single";
20
+ /**
21
+ * Returns all stacks in the main (top level) assembly only.
22
+ */
23
+ DefaultSelection["MainAssembly"] = "main";
24
+ /**
25
+ * If no selectors are provided, returns all stacks in the app,
26
+ * including stacks inside nested assemblies.
27
+ */
28
+ DefaultSelection["AllStacks"] = "all";
29
+ })(DefaultSelection || (exports.DefaultSelection = DefaultSelection = {}));
30
+ /**
31
+ * When selecting stacks, what other stacks to include because of dependencies
32
+ */
33
+ var ExtendedStackSelection;
34
+ (function (ExtendedStackSelection) {
35
+ /**
36
+ * Don't select any extra stacks
37
+ */
38
+ ExtendedStackSelection[ExtendedStackSelection["None"] = 0] = "None";
39
+ /**
40
+ * Include stacks that this stack depends on
41
+ */
42
+ ExtendedStackSelection[ExtendedStackSelection["Upstream"] = 1] = "Upstream";
43
+ /**
44
+ * Include stacks that depend on this stack
45
+ */
46
+ ExtendedStackSelection[ExtendedStackSelection["Downstream"] = 2] = "Downstream";
47
+ })(ExtendedStackSelection || (exports.ExtendedStackSelection = ExtendedStackSelection = {}));
48
+ /**
49
+ * A single Cloud Assembly and the operations we do on it to deploy the artifacts inside
50
+ */
51
+ class CloudAssembly extends cloud_assembly_1.BaseStackAssembly {
52
+ async selectStacks(selector, options) {
53
+ const asm = this.assembly;
54
+ const topLevelStacks = asm.stacks;
55
+ const stacks = semver.major(asm.version) < 10 ? asm.stacks : asm.stacksRecursively;
56
+ const allTopLevel = selector.allTopLevel ?? false;
57
+ const patterns = CloudAssembly.sanitizePatterns(selector.patterns);
58
+ if (stacks.length === 0) {
59
+ if (options.ignoreNoStacks) {
60
+ return new cloud_assembly_1.StackCollection(this, []);
61
+ }
62
+ throw new toolkit_lib_1.ToolkitError('NoStacks', 'This app contains no stacks');
63
+ }
64
+ if (allTopLevel) {
65
+ return this.selectTopLevelStacks(stacks, topLevelStacks, options.extend);
66
+ }
67
+ else if (patterns.length > 0) {
68
+ return this.selectMatchingStacks(stacks, patterns, options.extend);
69
+ }
70
+ else {
71
+ return this.selectDefaultStacks(stacks, topLevelStacks, options.defaultBehavior);
72
+ }
73
+ }
74
+ async selectTopLevelStacks(stacks, topLevelStacks, extend = ExtendedStackSelection.None) {
75
+ if (topLevelStacks.length > 0) {
76
+ return this.extendStacks(topLevelStacks, stacks, extend);
77
+ }
78
+ else {
79
+ throw new toolkit_lib_1.ToolkitError('NoStackInMainAssembly', 'No stack found in the main cloud assembly. Use "list" to print manifest');
80
+ }
81
+ }
82
+ async selectMatchingStacks(stacks, patterns, extend = ExtendedStackSelection.None) {
83
+ const matchingPattern = (pattern) => (stack) => (0, picomatch_1.isMatch)(stack.hierarchicalId, pattern);
84
+ const matchedStacks = (0, util_1.flatten)(patterns.map(pattern => stacks.filter(matchingPattern(pattern))));
85
+ return this.extendStacks(matchedStacks, stacks, extend);
86
+ }
87
+ selectDefaultStacks(stacks, topLevelStacks, defaultSelection) {
88
+ switch (defaultSelection) {
89
+ case DefaultSelection.MainAssembly:
90
+ return new cloud_assembly_1.StackCollection(this, topLevelStacks);
91
+ case DefaultSelection.AllStacks:
92
+ return new cloud_assembly_1.StackCollection(this, stacks);
93
+ case DefaultSelection.None:
94
+ return new cloud_assembly_1.StackCollection(this, []);
95
+ case DefaultSelection.OnlySingle:
96
+ if (topLevelStacks.length === 1) {
97
+ return new cloud_assembly_1.StackCollection(this, topLevelStacks);
98
+ }
99
+ else {
100
+ throw new toolkit_lib_1.ToolkitError('NoSelectorGiven', 'Since this app includes more than a single stack, specify which stacks to use (wildcards are supported) or specify `--all`\n' +
101
+ `Stacks: ${stacks.map(x => x.hierarchicalId).join(' · ')}`);
102
+ }
103
+ default:
104
+ throw new toolkit_lib_1.ToolkitError('InvalidDefaultBehavior', `invalid default behavior: ${defaultSelection}`);
105
+ }
106
+ }
107
+ }
108
+ exports.CloudAssembly = CloudAssembly;
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbG91ZC1hc3NlbWJseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxzREFBb0Q7QUFDcEQseUNBQWlEO0FBQ2pELGlDQUFpQztBQUNqQywwREFBMkU7QUFDM0Usa0NBQWtDO0FBRWxDLElBQVksZ0JBc0JYO0FBdEJELFdBQVksZ0JBQWdCO0lBQzFCOztPQUVHO0lBQ0gsaUNBQWEsQ0FBQTtJQUViOzs7T0FHRztJQUNILHlDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gseUNBQXFCLENBQUE7SUFFckI7OztPQUdHO0lBQ0gscUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQXRCVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQXNCM0I7QUFzQkQ7O0dBRUc7QUFDSCxJQUFZLHNCQWVYO0FBZkQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCxtRUFBSSxDQUFBO0lBRUo7O09BRUc7SUFDSCwyRUFBUSxDQUFBO0lBRVI7O09BRUc7SUFDSCwrRUFBVSxDQUFBO0FBQ1osQ0FBQyxFQWZXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBZWpDO0FBa0JEOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsa0NBQWlCO0lBQzNDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBdUIsRUFBRSxPQUE0QjtRQUM3RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzFCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUM7UUFDbkYsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sSUFBSSxnQ0FBZSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsTUFBTSxJQUFJLDBCQUFZLENBQUMsVUFBVSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0UsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25GLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLG9CQUFvQixDQUNoQyxNQUEyQyxFQUMzQyxjQUFtRCxFQUNuRCxTQUFpQyxzQkFBc0IsQ0FBQyxJQUFJO1FBRTVELElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSwwQkFBWSxDQUFDLHVCQUF1QixFQUFFLHlFQUF5RSxDQUFDLENBQUM7UUFDN0gsQ0FBQztJQUNILENBQUM7SUFFUyxLQUFLLENBQUMsb0JBQW9CLENBQ2xDLE1BQTJDLEVBQzNDLFFBQWtCLEVBQ2xCLFNBQWlDLHNCQUFzQixDQUFDLElBQUk7UUFFNUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBd0MsRUFBRSxFQUFFLENBQUMsSUFBQSxtQkFBUyxFQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEksTUFBTSxhQUFhLEdBQUcsSUFBQSxjQUFPLEVBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxtQkFBbUIsQ0FDekIsTUFBMkMsRUFDM0MsY0FBbUQsRUFDbkQsZ0JBQWtDO1FBRWxDLFFBQVEsZ0JBQWdCLEVBQUUsQ0FBQztZQUN6QixLQUFLLGdCQUFnQixDQUFDLFlBQVk7Z0JBQ2hDLE9BQU8sSUFBSSxnQ0FBZSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNuRCxLQUFLLGdCQUFnQixDQUFDLFNBQVM7Z0JBQzdCLE9BQU8sSUFBSSxnQ0FBZSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzQyxLQUFLLGdCQUFnQixDQUFDLElBQUk7Z0JBQ3hCLE9BQU8sSUFBSSxnQ0FBZSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxLQUFLLGdCQUFnQixDQUFDLFVBQVU7Z0JBQzlCLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsT0FBTyxJQUFJLGdDQUFlLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxJQUFJLDBCQUFZLENBQUMsaUJBQWlCLEVBQUUsOEhBQThIO3dCQUN4SyxXQUFXLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztZQUNIO2dCQUNFLE1BQU0sSUFBSSwwQkFBWSxDQUFDLHdCQUF3QixFQUFFLDZCQUE2QixnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDdEcsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXJFRCxzQ0FxRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgeyBpc01hdGNoIGFzIHBpY29tYXRjaCB9IGZyb20gJ3BpY29tYXRjaCc7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7IEJhc2VTdGFja0Fzc2VtYmx5LCBTdGFja0NvbGxlY3Rpb24gfSBmcm9tICcuLi9hcGkvY2xvdWQtYXNzZW1ibHknO1xuaW1wb3J0IHsgZmxhdHRlbiB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgZW51bSBEZWZhdWx0U2VsZWN0aW9uIHtcbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZW1wdHkgc2VsZWN0aW9uIGluIGNhc2UgdGhlcmUgYXJlIG5vIHNlbGVjdG9ycy5cbiAgICovXG4gIE5vbmUgPSAnbm9uZScsXG5cbiAgLyoqXG4gICAqIElmIHRoZSBhcHAgaW5jbHVkZXMgYSBzaW5nbGUgc3RhY2ssIHJldHVybnMgaXQuIE90aGVyd2lzZSB0aHJvd3MgYW4gZXhjZXB0aW9uLlxuICAgKiBUaGlzIGJlaGF2aW9yIGlzIHVzZWQgYnkgXCJkZXBsb3lcIi5cbiAgICovXG4gIE9ubHlTaW5nbGUgPSAnc2luZ2xlJyxcblxuICAvKipcbiAgICogUmV0dXJucyBhbGwgc3RhY2tzIGluIHRoZSBtYWluICh0b3AgbGV2ZWwpIGFzc2VtYmx5IG9ubHkuXG4gICAqL1xuICBNYWluQXNzZW1ibHkgPSAnbWFpbicsXG5cbiAgLyoqXG4gICAqIElmIG5vIHNlbGVjdG9ycyBhcmUgcHJvdmlkZWQsIHJldHVybnMgYWxsIHN0YWNrcyBpbiB0aGUgYXBwLFxuICAgKiBpbmNsdWRpbmcgc3RhY2tzIGluc2lkZSBuZXN0ZWQgYXNzZW1ibGllcy5cbiAgICovXG4gIEFsbFN0YWNrcyA9ICdhbGwnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdFN0YWNrc09wdGlvbnMge1xuICAvKipcbiAgICogRXh0ZW5kIHRoZSBzZWxlY3Rpb24gdG8gdXBzdHJlYWQvZG93bnN0cmVhbSBzdGFja3NcbiAgICogQGRlZmF1bHQgRXh0ZW5kZWRTdGFja1NlbGVjdGlvbi5Ob25lIG9ubHkgc2VsZWN0IHRoZSBzcGVjaWZpZWQgc3RhY2tzLlxuICAgKi9cbiAgZXh0ZW5kPzogRXh0ZW5kZWRTdGFja1NlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIGJlaGF2aW9yIGlmIG5vIHNlbGVjdG9ycyBhcmUgcHJvdmlkZWQuXG4gICAqL1xuICBkZWZhdWx0QmVoYXZpb3I6IERlZmF1bHRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVwbG95IGlmIHRoZSBhcHAgY29udGFpbnMgbm8gc3RhY2tzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaWdub3JlTm9TdGFja3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFdoZW4gc2VsZWN0aW5nIHN0YWNrcywgd2hhdCBvdGhlciBzdGFja3MgdG8gaW5jbHVkZSBiZWNhdXNlIG9mIGRlcGVuZGVuY2llc1xuICovXG5leHBvcnQgZW51bSBFeHRlbmRlZFN0YWNrU2VsZWN0aW9uIHtcbiAgLyoqXG4gICAqIERvbid0IHNlbGVjdCBhbnkgZXh0cmEgc3RhY2tzXG4gICAqL1xuICBOb25lLFxuXG4gIC8qKlxuICAgKiBJbmNsdWRlIHN0YWNrcyB0aGF0IHRoaXMgc3RhY2sgZGVwZW5kcyBvblxuICAgKi9cbiAgVXBzdHJlYW0sXG5cbiAgLyoqXG4gICAqIEluY2x1ZGUgc3RhY2tzIHRoYXQgZGVwZW5kIG9uIHRoaXMgc3RhY2tcbiAgICovXG4gIERvd25zdHJlYW0sXG59XG5cbi8qKlxuICogQSBzcGVjaWZpY2F0aW9uIG9mIHdoaWNoIHN0YWNrcyBzaG91bGQgYmUgc2VsZWN0ZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFja1NlbGVjdG9yIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgYWxsIHN0YWNrcyBhdCB0aGUgdG9wIGxldmVsIGFzc2VtYmx5IHNob3VsZFxuICAgKiBiZSBzZWxlY3RlZCBhbmQgbm90aGluZyBlbHNlXG4gICAqL1xuICBhbGxUb3BMZXZlbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYXR0ZXJucyB0byBtYXRjaCB0aGUgc3RhY2sgaGllcmFyY2hpY2FsIGlkc1xuICAgKi9cbiAgcGF0dGVybnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgc2luZ2xlIENsb3VkIEFzc2VtYmx5IGFuZCB0aGUgb3BlcmF0aW9ucyB3ZSBkbyBvbiBpdCB0byBkZXBsb3kgdGhlIGFydGlmYWN0cyBpbnNpZGVcbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkQXNzZW1ibHkgZXh0ZW5kcyBCYXNlU3RhY2tBc3NlbWJseSB7XG4gIHB1YmxpYyBhc3luYyBzZWxlY3RTdGFja3Moc2VsZWN0b3I6IFN0YWNrU2VsZWN0b3IsIG9wdGlvbnM6IFNlbGVjdFN0YWNrc09wdGlvbnMpOiBQcm9taXNlPFN0YWNrQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IGFzbSA9IHRoaXMuYXNzZW1ibHk7XG4gICAgY29uc3QgdG9wTGV2ZWxTdGFja3MgPSBhc20uc3RhY2tzO1xuICAgIGNvbnN0IHN0YWNrcyA9IHNlbXZlci5tYWpvcihhc20udmVyc2lvbikgPCAxMCA/IGFzbS5zdGFja3MgOiBhc20uc3RhY2tzUmVjdXJzaXZlbHk7XG4gICAgY29uc3QgYWxsVG9wTGV2ZWwgPSBzZWxlY3Rvci5hbGxUb3BMZXZlbCA/PyBmYWxzZTtcbiAgICBjb25zdCBwYXR0ZXJucyA9IENsb3VkQXNzZW1ibHkuc2FuaXRpemVQYXR0ZXJucyhzZWxlY3Rvci5wYXR0ZXJucyk7XG5cbiAgICBpZiAoc3RhY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKG9wdGlvbnMuaWdub3JlTm9TdGFja3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdGFja0NvbGxlY3Rpb24odGhpcywgW10pO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignTm9TdGFja3MnLCAnVGhpcyBhcHAgY29udGFpbnMgbm8gc3RhY2tzJyk7XG4gICAgfVxuXG4gICAgaWYgKGFsbFRvcExldmVsKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RUb3BMZXZlbFN0YWNrcyhzdGFja3MsIHRvcExldmVsU3RhY2tzLCBvcHRpb25zLmV4dGVuZCk7XG4gICAgfSBlbHNlIGlmIChwYXR0ZXJucy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RNYXRjaGluZ1N0YWNrcyhzdGFja3MsIHBhdHRlcm5zLCBvcHRpb25zLmV4dGVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdERlZmF1bHRTdGFja3Moc3RhY2tzLCB0b3BMZXZlbFN0YWNrcywgb3B0aW9ucy5kZWZhdWx0QmVoYXZpb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VsZWN0VG9wTGV2ZWxTdGFja3MoXG4gICAgc3RhY2tzOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXSxcbiAgICB0b3BMZXZlbFN0YWNrczogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0W10sXG4gICAgZXh0ZW5kOiBFeHRlbmRlZFN0YWNrU2VsZWN0aW9uID0gRXh0ZW5kZWRTdGFja1NlbGVjdGlvbi5Ob25lLFxuICApOiBQcm9taXNlPFN0YWNrQ29sbGVjdGlvbj4ge1xuICAgIGlmICh0b3BMZXZlbFN0YWNrcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5leHRlbmRTdGFja3ModG9wTGV2ZWxTdGFja3MsIHN0YWNrcywgZXh0ZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignTm9TdGFja0luTWFpbkFzc2VtYmx5JywgJ05vIHN0YWNrIGZvdW5kIGluIHRoZSBtYWluIGNsb3VkIGFzc2VtYmx5LiBVc2UgXCJsaXN0XCIgdG8gcHJpbnQgbWFuaWZlc3QnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2VsZWN0TWF0Y2hpbmdTdGFja3MoXG4gICAgc3RhY2tzOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXSxcbiAgICBwYXR0ZXJuczogc3RyaW5nW10sXG4gICAgZXh0ZW5kOiBFeHRlbmRlZFN0YWNrU2VsZWN0aW9uID0gRXh0ZW5kZWRTdGFja1NlbGVjdGlvbi5Ob25lLFxuICApOiBQcm9taXNlPFN0YWNrQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IG1hdGNoaW5nUGF0dGVybiA9IChwYXR0ZXJuOiBzdHJpbmcpID0+IChzdGFjazogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0KSA9PiBwaWNvbWF0Y2goc3RhY2suaGllcmFyY2hpY2FsSWQsIHBhdHRlcm4pO1xuICAgIGNvbnN0IG1hdGNoZWRTdGFja3MgPSBmbGF0dGVuKHBhdHRlcm5zLm1hcChwYXR0ZXJuID0+IHN0YWNrcy5maWx0ZXIobWF0Y2hpbmdQYXR0ZXJuKHBhdHRlcm4pKSkpO1xuICAgIHJldHVybiB0aGlzLmV4dGVuZFN0YWNrcyhtYXRjaGVkU3RhY2tzLCBzdGFja3MsIGV4dGVuZCk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdERlZmF1bHRTdGFja3MoXG4gICAgc3RhY2tzOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXSxcbiAgICB0b3BMZXZlbFN0YWNrczogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0W10sXG4gICAgZGVmYXVsdFNlbGVjdGlvbjogRGVmYXVsdFNlbGVjdGlvbixcbiAgKSB7XG4gICAgc3dpdGNoIChkZWZhdWx0U2VsZWN0aW9uKSB7XG4gICAgICBjYXNlIERlZmF1bHRTZWxlY3Rpb24uTWFpbkFzc2VtYmx5OlxuICAgICAgICByZXR1cm4gbmV3IFN0YWNrQ29sbGVjdGlvbih0aGlzLCB0b3BMZXZlbFN0YWNrcyk7XG4gICAgICBjYXNlIERlZmF1bHRTZWxlY3Rpb24uQWxsU3RhY2tzOlxuICAgICAgICByZXR1cm4gbmV3IFN0YWNrQ29sbGVjdGlvbih0aGlzLCBzdGFja3MpO1xuICAgICAgY2FzZSBEZWZhdWx0U2VsZWN0aW9uLk5vbmU6XG4gICAgICAgIHJldHVybiBuZXcgU3RhY2tDb2xsZWN0aW9uKHRoaXMsIFtdKTtcbiAgICAgIGNhc2UgRGVmYXVsdFNlbGVjdGlvbi5Pbmx5U2luZ2xlOlxuICAgICAgICBpZiAodG9wTGV2ZWxTdGFja3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdGFja0NvbGxlY3Rpb24odGhpcywgdG9wTGV2ZWxTdGFja3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ05vU2VsZWN0b3JHaXZlbicsICdTaW5jZSB0aGlzIGFwcCBpbmNsdWRlcyBtb3JlIHRoYW4gYSBzaW5nbGUgc3RhY2ssIHNwZWNpZnkgd2hpY2ggc3RhY2tzIHRvIHVzZSAod2lsZGNhcmRzIGFyZSBzdXBwb3J0ZWQpIG9yIHNwZWNpZnkgYC0tYWxsYFxcbicgK1xuICAgICAgICAgIGBTdGFja3M6ICR7c3RhY2tzLm1hcCh4ID0+IHguaGllcmFyY2hpY2FsSWQpLmpvaW4oJyDCtyAnKX1gKTtcbiAgICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignSW52YWxpZERlZmF1bHRCZWhhdmlvcicsIGBpbnZhbGlkIGRlZmF1bHQgYmVoYXZpb3I6ICR7ZGVmYXVsdFNlbGVjdGlvbn1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,51 @@
1
+ import type * as cxapi from '@aws-cdk/cloud-assembly-api';
2
+ import { CloudAssembly } from './cloud-assembly';
3
+ import type { ICloudAssemblySource, IReadableCloudAssembly } from '../../lib/api';
4
+ import type { IoHelper } from '../../lib/api-private';
5
+ import type { SdkProvider } from '../api/aws-auth';
6
+ import type { Configuration } from '../cli/user-configuration';
7
+ /**
8
+ * @returns output directory
9
+ */
10
+ export type Synthesizer = (aws: SdkProvider, config: Configuration) => Promise<cxapi.CloudAssembly>;
11
+ export interface CloudExecutableProps {
12
+ /**
13
+ * Application configuration (settings and context)
14
+ */
15
+ configuration: Configuration;
16
+ /**
17
+ * AWS object (used by synthesizer and contextprovider)
18
+ */
19
+ sdkProvider: SdkProvider;
20
+ /**
21
+ * Messaging helper
22
+ */
23
+ ioHelper: IoHelper;
24
+ /**
25
+ * Callback invoked to synthesize the actual stacks
26
+ */
27
+ synthesizer: Synthesizer;
28
+ }
29
+ /**
30
+ * Represent the Cloud Executable and the synthesis we can do on it
31
+ */
32
+ export declare class CloudExecutable implements ICloudAssemblySource {
33
+ private readonly props;
34
+ private _cloudAssembly?;
35
+ constructor(props: CloudExecutableProps);
36
+ produce(): Promise<IReadableCloudAssembly>;
37
+ /**
38
+ * Return whether there is an app command from the configuration
39
+ */
40
+ get hasApp(): boolean;
41
+ /**
42
+ * Synthesize a set of stacks.
43
+ *
44
+ * @param cacheCloudAssembly - whether to cache the Cloud Assembly after it has been first synthesized.
45
+ * This is 'true' by default, and only set to 'false' for 'cdk watch',
46
+ * which needs to re-synthesize the Assembly each time it detects a change to the project files
47
+ */
48
+ synthesize(cacheCloudAssembly?: boolean): Promise<CloudAssembly>;
49
+ private doSynthesize;
50
+ private get canLookup();
51
+ }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudExecutable = void 0;
4
+ const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
5
+ const cloud_assembly_1 = require("./cloud-assembly");
6
+ const api_private_1 = require("../../lib/api-private");
7
+ const singleton_plugin_host_1 = require("../cli/singleton-plugin-host");
8
+ const error_1 = require("../cli/telemetry/error");
9
+ const messages_1 = require("../cli/telemetry/messages");
10
+ const contextproviders = require("../context-providers");
11
+ /**
12
+ * Represent the Cloud Executable and the synthesis we can do on it
13
+ */
14
+ class CloudExecutable {
15
+ constructor(props) {
16
+ this.props = props;
17
+ }
18
+ async produce() {
19
+ const synthesisResult = await this.synthesize(true);
20
+ // We must return an `IReadableCloudAssembly` here, but this Cloud Assembly is only used in the context
21
+ // of the CLI and `cli.ts` currently manages its own locking in the "synthesizer" callback function.
22
+ //
23
+ // All the lock-related functions are therefore no-ops.
24
+ return new api_private_1.BorrowedAssembly(synthesisResult.assembly);
25
+ }
26
+ /**
27
+ * Return whether there is an app command from the configuration
28
+ */
29
+ get hasApp() {
30
+ return !!this.props.configuration.settings.get(['app']);
31
+ }
32
+ /**
33
+ * Synthesize a set of stacks.
34
+ *
35
+ * @param cacheCloudAssembly - whether to cache the Cloud Assembly after it has been first synthesized.
36
+ * This is 'true' by default, and only set to 'false' for 'cdk watch',
37
+ * which needs to re-synthesize the Assembly each time it detects a change to the project files
38
+ */
39
+ async synthesize(cacheCloudAssembly = true) {
40
+ if (!this._cloudAssembly || !cacheCloudAssembly) {
41
+ this._cloudAssembly = await this.doSynthesize();
42
+ }
43
+ return this._cloudAssembly;
44
+ }
45
+ async doSynthesize() {
46
+ // We may need to run the cloud executable multiple times in order to satisfy all missing context
47
+ // (When the executable runs, it will tell us about context it wants to use
48
+ // but it missing. We'll then look up the context and run the executable again, and
49
+ // again, until it doesn't complain anymore or we've stopped making progress).
50
+ let previouslyMissingKeys;
51
+ const synthSpan = await this.props.ioHelper.span(messages_1.CLI_PRIVATE_SPAN.SYNTH_ASSEMBLY).begin({});
52
+ let error;
53
+ try {
54
+ while (true) {
55
+ const assembly = await this.props.synthesizer(this.props.sdkProvider, this.props.configuration);
56
+ if (assembly.manifest.missing && assembly.manifest.missing.length > 0) {
57
+ const missingKeys = missingContextKeys(assembly.manifest.missing);
58
+ if (!this.canLookup) {
59
+ throw new toolkit_lib_1.ToolkitError('ContextLookupsDisabled', 'Context lookups have been disabled. '
60
+ + '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. '
61
+ + `Missing context keys: '${Array.from(missingKeys).join(', ')}'`);
62
+ }
63
+ let tryLookup = true;
64
+ if (previouslyMissingKeys && setsEqual(missingKeys, previouslyMissingKeys)) {
65
+ await this.props.ioHelper.defaults.debug('Not making progress trying to resolve environmental context. Giving up.');
66
+ tryLookup = false;
67
+ }
68
+ previouslyMissingKeys = missingKeys;
69
+ if (tryLookup) {
70
+ const lookupsTimer = synthSpan.startTimer('lookups');
71
+ try {
72
+ await this.props.ioHelper.defaults.debug('Some context information is missing. Fetching...');
73
+ const updates = await contextproviders.provideContextValues(assembly.manifest.missing, this.props.sdkProvider, singleton_plugin_host_1.GLOBAL_PLUGIN_HOST, this.props.ioHelper);
74
+ for (const [key, value] of Object.entries(updates)) {
75
+ this.props.configuration.context.set(key, value);
76
+ }
77
+ // Cache the new context to disk
78
+ await this.props.configuration.saveContext();
79
+ }
80
+ finally {
81
+ lookupsTimer.stop();
82
+ }
83
+ // Execute again
84
+ continue;
85
+ }
86
+ }
87
+ (0, api_private_1.countAssemblyResults)(synthSpan, assembly);
88
+ return new cloud_assembly_1.CloudAssembly(assembly, this.props.ioHelper);
89
+ }
90
+ }
91
+ catch (e) {
92
+ error = {
93
+ name: (0, error_1.cdkCliErrorName)(e),
94
+ };
95
+ throw e;
96
+ }
97
+ finally {
98
+ await synthSpan.end({ error });
99
+ }
100
+ }
101
+ get canLookup() {
102
+ return !!(this.props.configuration.settings.get(['lookups']) ?? true);
103
+ }
104
+ }
105
+ exports.CloudExecutable = CloudExecutable;
106
+ /**
107
+ * Return all keys of missing context items
108
+ */
109
+ function missingContextKeys(missing) {
110
+ return new Set((missing || []).map(m => m.key));
111
+ }
112
+ function setsEqual(a, b) {
113
+ if (a.size !== b.size) {
114
+ return false;
115
+ }
116
+ for (const x of a) {
117
+ if (!b.has(x)) {
118
+ return false;
119
+ }
120
+ }
121
+ return true;
122
+ }
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtZXhlY3V0YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsb3VkLWV4ZWN1dGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0RBQW9EO0FBQ3BELHFEQUFpRDtBQUdqRCx1REFBK0U7QUFFL0Usd0VBQWtFO0FBQ2xFLGtEQUF5RDtBQUN6RCx3REFBNkQ7QUFHN0QseURBQXlEO0FBNkJ6RDs7R0FFRztBQUNILE1BQWEsZUFBZTtJQUcxQixZQUE2QixLQUEyQjtRQUEzQixVQUFLLEdBQUwsS0FBSyxDQUFzQjtJQUN4RCxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU87UUFDbEIsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBELHVHQUF1RztRQUN2RyxvR0FBb0c7UUFDcEcsRUFBRTtRQUNGLHVEQUF1RDtRQUN2RCxPQUFPLElBQUksOEJBQWdCLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsTUFBTTtRQUNmLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLHFCQUE4QixJQUFJO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVPLEtBQUssQ0FBQyxZQUFZO1FBQ3hCLGlHQUFpRztRQUNqRywyRUFBMkU7UUFDM0UsbUZBQW1GO1FBQ25G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QUFNLEVBQUUsQ0FBQztZQUNoQixLQUFLLEdBQUc7Z0JBQ04sSUFBSSxFQUFFLElBQUEsdUJBQWUsRUFBQyxDQUFDLENBQUM7YUFDekIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVksU0FBUztRQUNuQixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQS9HRCwwQ0ErR0M7QUFFRDs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUMsT0FBZ0M7SUFDMUQsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUksQ0FBUyxFQUFFLENBQVM7SUFDeEMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDZCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgQ2xvdWRBc3NlbWJseSB9IGZyb20gJy4vY2xvdWQtYXNzZW1ibHknO1xuaW1wb3J0IHR5cGUgeyBJQ2xvdWRBc3NlbWJseVNvdXJjZSwgSVJlYWRhYmxlQ2xvdWRBc3NlbWJseSB9IGZyb20gJy4uLy4uL2xpYi9hcGknO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uLy4uL2xpYi9hcGktcHJpdmF0ZSc7XG5pbXBvcnQgeyBCb3Jyb3dlZEFzc2VtYmx5LCBjb3VudEFzc2VtYmx5UmVzdWx0cyB9IGZyb20gJy4uLy4uL2xpYi9hcGktcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXBpL2F3cy1hdXRoJztcbmltcG9ydCB7IEdMT0JBTF9QTFVHSU5fSE9TVCB9IGZyb20gJy4uL2NsaS9zaW5nbGV0b24tcGx1Z2luLWhvc3QnO1xuaW1wb3J0IHsgY2RrQ2xpRXJyb3JOYW1lIH0gZnJvbSAnLi4vY2xpL3RlbGVtZXRyeS9lcnJvcic7XG5pbXBvcnQgeyBDTElfUFJJVkFURV9TUEFOIH0gZnJvbSAnLi4vY2xpL3RlbGVtZXRyeS9tZXNzYWdlcyc7XG5pbXBvcnQgdHlwZSB7IEVycm9yRGV0YWlscyB9IGZyb20gJy4uL2NsaS90ZWxlbWV0cnkvc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2NsaS91c2VyLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0ICogYXMgY29udGV4dHByb3ZpZGVycyBmcm9tICcuLi9jb250ZXh0LXByb3ZpZGVycyc7XG5cbi8qKlxuICogQHJldHVybnMgb3V0cHV0IGRpcmVjdG9yeVxuICovXG5leHBvcnQgdHlwZSBTeW50aGVzaXplciA9IChhd3M6IFNka1Byb3ZpZGVyLCBjb25maWc6IENvbmZpZ3VyYXRpb24pID0+IFByb21pc2U8Y3hhcGkuQ2xvdWRBc3NlbWJseT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRFeGVjdXRhYmxlUHJvcHMge1xuICAvKipcbiAgICogQXBwbGljYXRpb24gY29uZmlndXJhdGlvbiAoc2V0dGluZ3MgYW5kIGNvbnRleHQpXG4gICAqL1xuICBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBV1Mgb2JqZWN0ICh1c2VkIGJ5IHN5bnRoZXNpemVyIGFuZCBjb250ZXh0cHJvdmlkZXIpXG4gICAqL1xuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIE1lc3NhZ2luZyBoZWxwZXJcbiAgICovXG4gIGlvSGVscGVyOiBJb0hlbHBlcjtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgaW52b2tlZCB0byBzeW50aGVzaXplIHRoZSBhY3R1YWwgc3RhY2tzXG4gICAqL1xuICBzeW50aGVzaXplcjogU3ludGhlc2l6ZXI7XG59XG5cbi8qKlxuICogUmVwcmVzZW50IHRoZSBDbG91ZCBFeGVjdXRhYmxlIGFuZCB0aGUgc3ludGhlc2lzIHdlIGNhbiBkbyBvbiBpdFxuICovXG5leHBvcnQgY2xhc3MgQ2xvdWRFeGVjdXRhYmxlIGltcGxlbWVudHMgSUNsb3VkQXNzZW1ibHlTb3VyY2Uge1xuICBwcml2YXRlIF9jbG91ZEFzc2VtYmx5PzogQ2xvdWRBc3NlbWJseTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDbG91ZEV4ZWN1dGFibGVQcm9wcykge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByb2R1Y2UoKTogUHJvbWlzZTxJUmVhZGFibGVDbG91ZEFzc2VtYmx5PiB7XG4gICAgY29uc3Qgc3ludGhlc2lzUmVzdWx0ID0gYXdhaXQgdGhpcy5zeW50aGVzaXplKHRydWUpO1xuXG4gICAgLy8gV2UgbXVzdCByZXR1cm4gYW4gYElSZWFkYWJsZUNsb3VkQXNzZW1ibHlgIGhlcmUsIGJ1dCB0aGlzIENsb3VkIEFzc2VtYmx5IGlzIG9ubHkgdXNlZCBpbiB0aGUgY29udGV4dFxuICAgIC8vIG9mIHRoZSBDTEkgYW5kIGBjbGkudHNgIGN1cnJlbnRseSBtYW5hZ2VzIGl0cyBvd24gbG9ja2luZyBpbiB0aGUgXCJzeW50aGVzaXplclwiIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICAgIC8vXG4gICAgLy8gQWxsIHRoZSBsb2NrLXJlbGF0ZWQgZnVuY3Rpb25zIGFyZSB0aGVyZWZvcmUgbm8tb3BzLlxuICAgIHJldHVybiBuZXcgQm9ycm93ZWRBc3NlbWJseShzeW50aGVzaXNSZXN1bHQuYXNzZW1ibHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZXJlIGlzIGFuIGFwcCBjb21tYW5kIGZyb20gdGhlIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzQXBwKCkge1xuICAgIHJldHVybiAhIXRoaXMucHJvcHMuY29uZmlndXJhdGlvbi5zZXR0aW5ncy5nZXQoWydhcHAnXSk7XG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZSBhIHNldCBvZiBzdGFja3MuXG4gICAqXG4gICAqIEBwYXJhbSBjYWNoZUNsb3VkQXNzZW1ibHkgLSB3aGV0aGVyIHRvIGNhY2hlIHRoZSBDbG91ZCBBc3NlbWJseSBhZnRlciBpdCBoYXMgYmVlbiBmaXJzdCBzeW50aGVzaXplZC5cbiAgICogICBUaGlzIGlzICd0cnVlJyBieSBkZWZhdWx0LCBhbmQgb25seSBzZXQgdG8gJ2ZhbHNlJyBmb3IgJ2NkayB3YXRjaCcsXG4gICAqICAgd2hpY2ggbmVlZHMgdG8gcmUtc3ludGhlc2l6ZSB0aGUgQXNzZW1ibHkgZWFjaCB0aW1lIGl0IGRldGVjdHMgYSBjaGFuZ2UgdG8gdGhlIHByb2plY3QgZmlsZXNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzeW50aGVzaXplKGNhY2hlQ2xvdWRBc3NlbWJseTogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPENsb3VkQXNzZW1ibHk+IHtcbiAgICBpZiAoIXRoaXMuX2Nsb3VkQXNzZW1ibHkgfHwgIWNhY2hlQ2xvdWRBc3NlbWJseSkge1xuICAgICAgdGhpcy5fY2xvdWRBc3NlbWJseSA9IGF3YWl0IHRoaXMuZG9TeW50aGVzaXplKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jbG91ZEFzc2VtYmx5O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkb1N5bnRoZXNpemUoKTogUHJvbWlzZTxDbG91ZEFzc2VtYmx5PiB7XG4gICAgLy8gV2UgbWF5IG5lZWQgdG8gcnVuIHRoZSBjbG91ZCBleGVjdXRhYmxlIG11bHRpcGxlIHRpbWVzIGluIG9yZGVyIHRvIHNhdGlzZnkgYWxsIG1pc3NpbmcgY29udGV4dFxuICAgIC8vIChXaGVuIHRoZSBleGVjdXRhYmxlIHJ1bnMsIGl0IHdpbGwgdGVsbCB1cyBhYm91dCBjb250ZXh0IGl0IHdhbnRzIHRvIHVzZVxuICAgIC8vIGJ1dCBpdCBtaXNzaW5nLiBXZSdsbCB0aGVuIGxvb2sgdXAgdGhlIGNvbnRleHQgYW5kIHJ1biB0aGUgZXhlY3V0YWJsZSBhZ2FpbiwgYW5kXG4gICAgLy8gYWdhaW4sIHVudGlsIGl0IGRvZXNuJ3QgY29tcGxhaW4gYW55bW9yZSBvciB3ZSd2ZSBzdG9wcGVkIG1ha2luZyBwcm9ncmVzcykuXG4gICAgbGV0IHByZXZpb3VzbHlNaXNzaW5nS2V5czogU2V0PHN0cmluZz4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc3ludGhTcGFuID0gYXdhaXQgdGhpcy5wcm9wcy5pb0hlbHBlci5zcGFuKENMSV9QUklWQVRFX1NQQU4uU1lOVEhfQVNTRU1CTFkpLmJlZ2luKHt9KTtcbiAgICBsZXQgZXJyb3I6IEVycm9yRGV0YWlscyB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgY29uc3QgYXNzZW1ibHkgPSBhd2FpdCB0aGlzLnByb3BzLnN5bnRoZXNpemVyKHRoaXMucHJvcHMuc2RrUHJvdmlkZXIsIHRoaXMucHJvcHMuY29uZmlndXJhdGlvbik7XG5cbiAgICAgICAgaWYgKGFzc2VtYmx5Lm1hbmlmZXN0Lm1pc3NpbmcgJiYgYXNzZW1ibHkubWFuaWZlc3QubWlzc2luZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbWlzc2luZ0tleXMgPSBtaXNzaW5nQ29udGV4dEtleXMoYXNzZW1ibHkubWFuaWZlc3QubWlzc2luZyk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuY2FuTG9va3VwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgICAgICAgICAnQ29udGV4dExvb2t1cHNEaXNhYmxlZCcsXG4gICAgICAgICAgICAgICdDb250ZXh0IGxvb2t1cHMgaGF2ZSBiZWVuIGRpc2FibGVkLiAnXG4gICAgICAgICAgICAgICsgJ01ha2Ugc3VyZSBhbGwgbmVjZXNzYXJ5IGNvbnRleHQgaXMgYWxyZWFkeSBpbiBcXCdjZGsuY29udGV4dC5qc29uXFwnIGJ5IHJ1bm5pbmcgXFwnY2RrIHN5bnRoXFwnIG9uIGEgbWFjaGluZSB3aXRoIHN1ZmZpY2llbnQgQVdTIGNyZWRlbnRpYWxzIGFuZCBjb21taXR0aW5nIHRoZSByZXN1bHQuICdcbiAgICAgICAgICAgICAgKyBgTWlzc2luZyBjb250ZXh0IGtleXM6ICcke0FycmF5LmZyb20obWlzc2luZ0tleXMpLmpvaW4oJywgJyl9J2ApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB0cnlMb29rdXAgPSB0cnVlO1xuICAgICAgICAgIGlmIChwcmV2aW91c2x5TWlzc2luZ0tleXMgJiYgc2V0c0VxdWFsKG1pc3NpbmdLZXlzLCBwcmV2aW91c2x5TWlzc2luZ0tleXMpKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb3BzLmlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKCdOb3QgbWFraW5nIHByb2dyZXNzIHRyeWluZyB0byByZXNvbHZlIGVudmlyb25tZW50YWwgY29udGV4dC4gR2l2aW5nIHVwLicpO1xuICAgICAgICAgICAgdHJ5TG9va3VwID0gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcHJldmlvdXNseU1pc3NpbmdLZXlzID0gbWlzc2luZ0tleXM7XG5cbiAgICAgICAgICBpZiAodHJ5TG9va3VwKSB7XG4gICAgICAgICAgICBjb25zdCBsb29rdXBzVGltZXIgPSBzeW50aFNwYW4uc3RhcnRUaW1lcignbG9va3VwcycpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wcy5pb0hlbHBlci5kZWZhdWx0cy5kZWJ1ZygnU29tZSBjb250ZXh0IGluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIEZldGNoaW5nLi4uJyk7XG5cbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlcyA9IGF3YWl0IGNvbnRleHRwcm92aWRlcnMucHJvdmlkZUNvbnRleHRWYWx1ZXMoXG4gICAgICAgICAgICAgICAgYXNzZW1ibHkubWFuaWZlc3QubWlzc2luZyxcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNka1Byb3ZpZGVyLFxuICAgICAgICAgICAgICAgIEdMT0JBTF9QTFVHSU5fSE9TVCxcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmlvSGVscGVyLFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHVwZGF0ZXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jb25maWd1cmF0aW9uLmNvbnRleHQuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIG5ldyBjb250ZXh0IHRvIGRpc2tcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wcy5jb25maWd1cmF0aW9uLnNhdmVDb250ZXh0KCk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBsb29rdXBzVGltZXIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBFeGVjdXRlIGFnYWluXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb3VudEFzc2VtYmx5UmVzdWx0cyhzeW50aFNwYW4sIGFzc2VtYmx5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDbG91ZEFzc2VtYmx5KGFzc2VtYmx5LCB0aGlzLnByb3BzLmlvSGVscGVyKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGVycm9yID0ge1xuICAgICAgICBuYW1lOiBjZGtDbGlFcnJvck5hbWUoZSksXG4gICAgICB9O1xuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgc3ludGhTcGFuLmVuZCh7IGVycm9yIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNhbkxvb2t1cCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5wcm9wcy5jb25maWd1cmF0aW9uLnNldHRpbmdzLmdldChbJ2xvb2t1cHMnXSkgPz8gdHJ1ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gYWxsIGtleXMgb2YgbWlzc2luZyBjb250ZXh0IGl0ZW1zXG4gKi9cbmZ1bmN0aW9uIG1pc3NpbmdDb250ZXh0S2V5cyhtaXNzaW5nPzogY3hhcGkuTWlzc2luZ0NvbnRleHRbXSk6IFNldDxzdHJpbmc+IHtcbiAgcmV0dXJuIG5ldyBTZXQoKG1pc3NpbmcgfHwgW10pLm1hcChtID0+IG0ua2V5KSk7XG59XG5cbmZ1bmN0aW9uIHNldHNFcXVhbDxBPihhOiBTZXQ8QT4sIGI6IFNldDxBPikge1xuICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChjb25zdCB4IG9mIGEpIHtcbiAgICBpZiAoIWIuaGFzKHgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIl19
@@ -0,0 +1,8 @@
1
+ import type * as cxapi from '@aws-cdk/cloud-assembly-api';
2
+ import type { SdkProvider, StackCollection } from '../api';
3
+ export declare function looksLikeGlob(environment: string): boolean;
4
+ export declare function globEnvironmentsFromStacks(stacks: StackCollection, environmentGlobs: string[], sdk: SdkProvider): Promise<cxapi.Environment[]>;
5
+ /**
6
+ * Given a set of "<account>/<region>" strings, construct environments for them
7
+ */
8
+ export declare function environmentsFromDescriptors(envSpecs: string[]): cxapi.Environment[];
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.looksLikeGlob = looksLikeGlob;
4
+ exports.globEnvironmentsFromStacks = globEnvironmentsFromStacks;
5
+ exports.environmentsFromDescriptors = environmentsFromDescriptors;
6
+ const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
7
+ const picomatch_1 = require("picomatch");
8
+ function looksLikeGlob(environment) {
9
+ return environment.indexOf('*') > -1;
10
+ }
11
+ // eslint-disable-next-line @stylistic/max-len
12
+ async function globEnvironmentsFromStacks(stacks, environmentGlobs, sdk) {
13
+ if (environmentGlobs.length === 0) {
14
+ return [];
15
+ }
16
+ const availableEnvironments = new Array();
17
+ for (const stack of stacks.stackArtifacts) {
18
+ const actual = await sdk.resolveEnvironment(stack.environment);
19
+ availableEnvironments.push(actual);
20
+ }
21
+ const environments = distinct(availableEnvironments).filter(env => environmentGlobs.find(glob => (0, picomatch_1.isMatch)(env.name, glob)));
22
+ if (environments.length === 0) {
23
+ const globs = JSON.stringify(environmentGlobs);
24
+ const envList = availableEnvironments.length > 0 ? availableEnvironments.map(env => env.name).join(', ') : '<none>';
25
+ throw new toolkit_lib_1.ToolkitError('NoEnvironmentsFound', `No environments were found when selecting across ${globs} (available: ${envList})`);
26
+ }
27
+ return environments;
28
+ }
29
+ /**
30
+ * Given a set of "<account>/<region>" strings, construct environments for them
31
+ */
32
+ function environmentsFromDescriptors(envSpecs) {
33
+ const ret = new Array();
34
+ for (const spec of envSpecs) {
35
+ const parts = spec.replace(/^aws:\/\//, '').split('/');
36
+ if (parts.length !== 2) {
37
+ throw new toolkit_lib_1.ToolkitError('InvalidEnvironmentFormat', `Expected environment name in format 'aws://<account>/<region>', got: ${spec}`);
38
+ }
39
+ ret.push({
40
+ name: spec,
41
+ account: parts[0],
42
+ region: parts[1],
43
+ });
44
+ }
45
+ return ret;
46
+ }
47
+ /**
48
+ * De-duplicates a list of environments, such that a given account and region is only represented exactly once
49
+ * in the result.
50
+ *
51
+ * @param envs - the possibly full-of-duplicates list of environments.
52
+ *
53
+ * @return a de-duplicated list of environments.
54
+ */
55
+ function distinct(envs) {
56
+ const unique = {};
57
+ for (const env of envs) {
58
+ const id = `${env.account || 'default'}/${env.region || 'default'}`;
59
+ if (id in unique) {
60
+ continue;
61
+ }
62
+ unique[id] = env;
63
+ }
64
+ return Object.values(unique);
65
+ }
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZW52aXJvbm1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esc0NBRUM7QUFHRCxnRUFtQkM7QUFLRCxrRUFpQkM7QUFsREQsc0RBQW9EO0FBQ3BELHlDQUFpRDtBQUdqRCxTQUFnQixhQUFhLENBQUMsV0FBbUI7SUFDL0MsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCw4Q0FBOEM7QUFDdkMsS0FBSyxVQUFVLDBCQUEwQixDQUFDLE1BQXVCLEVBQUUsZ0JBQTBCLEVBQUUsR0FBZ0I7SUFDcEgsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEtBQUssRUFBcUIsQ0FBQztJQUM3RCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFBLG1CQUFTLEVBQUMsR0FBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUgsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDckgsTUFBTSxJQUFJLDBCQUFZLENBQUMscUJBQXFCLEVBQUUsb0RBQW9ELEtBQUssZ0JBQWdCLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDckksQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLFFBQWtCO0lBQzVELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFxQixDQUFDO0lBRTNDLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksMEJBQVksQ0FBQywwQkFBMEIsRUFBRSx3RUFBd0UsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNySSxDQUFDO1FBRUQsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNQLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUF5QjtJQUN6QyxNQUFNLE1BQU0sR0FBd0MsRUFBRSxDQUFDO0lBQ3ZELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxJQUFJLFNBQVMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3BFLElBQUksRUFBRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLFNBQVM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgeyBpc01hdGNoIGFzIHBpY29tYXRjaCB9IGZyb20gJ3BpY29tYXRjaCc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyLCBTdGFja0NvbGxlY3Rpb24gfSBmcm9tICcuLi9hcGknO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9va3NMaWtlR2xvYihlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gIHJldHVybiBlbnZpcm9ubWVudC5pbmRleE9mKCcqJykgPiAtMTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBzdHlsaXN0aWMvbWF4LWxlblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdsb2JFbnZpcm9ubWVudHNGcm9tU3RhY2tzKHN0YWNrczogU3RhY2tDb2xsZWN0aW9uLCBlbnZpcm9ubWVudEdsb2JzOiBzdHJpbmdbXSwgc2RrOiBTZGtQcm92aWRlcik6IFByb21pc2U8Y3hhcGkuRW52aXJvbm1lbnRbXT4ge1xuICBpZiAoZW52aXJvbm1lbnRHbG9icy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBhdmFpbGFibGVFbnZpcm9ubWVudHMgPSBuZXcgQXJyYXk8Y3hhcGkuRW52aXJvbm1lbnQ+KCk7XG4gIGZvciAoY29uc3Qgc3RhY2sgb2Ygc3RhY2tzLnN0YWNrQXJ0aWZhY3RzKSB7XG4gICAgY29uc3QgYWN0dWFsID0gYXdhaXQgc2RrLnJlc29sdmVFbnZpcm9ubWVudChzdGFjay5lbnZpcm9ubWVudCk7XG4gICAgYXZhaWxhYmxlRW52aXJvbm1lbnRzLnB1c2goYWN0dWFsKTtcbiAgfVxuXG4gIGNvbnN0IGVudmlyb25tZW50cyA9IGRpc3RpbmN0KGF2YWlsYWJsZUVudmlyb25tZW50cykuZmlsdGVyKGVudiA9PiBlbnZpcm9ubWVudEdsb2JzLmZpbmQoZ2xvYiA9PiBwaWNvbWF0Y2goZW52IS5uYW1lLCBnbG9iKSkpO1xuICBpZiAoZW52aXJvbm1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnN0IGdsb2JzID0gSlNPTi5zdHJpbmdpZnkoZW52aXJvbm1lbnRHbG9icyk7XG4gICAgY29uc3QgZW52TGlzdCA9IGF2YWlsYWJsZUVudmlyb25tZW50cy5sZW5ndGggPiAwID8gYXZhaWxhYmxlRW52aXJvbm1lbnRzLm1hcChlbnYgPT4gZW52IS5uYW1lKS5qb2luKCcsICcpIDogJzxub25lPic7XG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignTm9FbnZpcm9ubWVudHNGb3VuZCcsIGBObyBlbnZpcm9ubWVudHMgd2VyZSBmb3VuZCB3aGVuIHNlbGVjdGluZyBhY3Jvc3MgJHtnbG9ic30gKGF2YWlsYWJsZTogJHtlbnZMaXN0fSlgKTtcbiAgfVxuXG4gIHJldHVybiBlbnZpcm9ubWVudHM7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBzZXQgb2YgXCI8YWNjb3VudD4vPHJlZ2lvbj5cIiBzdHJpbmdzLCBjb25zdHJ1Y3QgZW52aXJvbm1lbnRzIGZvciB0aGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnZpcm9ubWVudHNGcm9tRGVzY3JpcHRvcnMoZW52U3BlY3M6IHN0cmluZ1tdKTogY3hhcGkuRW52aXJvbm1lbnRbXSB7XG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxjeGFwaS5FbnZpcm9ubWVudD4oKTtcblxuICBmb3IgKGNvbnN0IHNwZWMgb2YgZW52U3BlY3MpIHtcbiAgICBjb25zdCBwYXJ0cyA9IHNwZWMucmVwbGFjZSgvXmF3czpcXC9cXC8vLCAnJykuc3BsaXQoJy8nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdJbnZhbGlkRW52aXJvbm1lbnRGb3JtYXQnLCBgRXhwZWN0ZWQgZW52aXJvbm1lbnQgbmFtZSBpbiBmb3JtYXQgJ2F3czovLzxhY2NvdW50Pi88cmVnaW9uPicsIGdvdDogJHtzcGVjfWApO1xuICAgIH1cblxuICAgIHJldC5wdXNoKHtcbiAgICAgIG5hbWU6IHNwZWMsXG4gICAgICBhY2NvdW50OiBwYXJ0c1swXSxcbiAgICAgIHJlZ2lvbjogcGFydHNbMV0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIERlLWR1cGxpY2F0ZXMgYSBsaXN0IG9mIGVudmlyb25tZW50cywgc3VjaCB0aGF0IGEgZ2l2ZW4gYWNjb3VudCBhbmQgcmVnaW9uIGlzIG9ubHkgcmVwcmVzZW50ZWQgZXhhY3RseSBvbmNlXG4gKiBpbiB0aGUgcmVzdWx0LlxuICpcbiAqIEBwYXJhbSBlbnZzIC0gdGhlIHBvc3NpYmx5IGZ1bGwtb2YtZHVwbGljYXRlcyBsaXN0IG9mIGVudmlyb25tZW50cy5cbiAqXG4gKiBAcmV0dXJuIGEgZGUtZHVwbGljYXRlZCBsaXN0IG9mIGVudmlyb25tZW50cy5cbiAqL1xuZnVuY3Rpb24gZGlzdGluY3QoZW52czogY3hhcGkuRW52aXJvbm1lbnRbXSk6IGN4YXBpLkVudmlyb25tZW50W10ge1xuICBjb25zdCB1bmlxdWU6IHsgW2lkOiBzdHJpbmddOiBjeGFwaS5FbnZpcm9ubWVudCB9ID0ge307XG4gIGZvciAoY29uc3QgZW52IG9mIGVudnMpIHtcbiAgICBjb25zdCBpZCA9IGAke2Vudi5hY2NvdW50IHx8ICdkZWZhdWx0J30vJHtlbnYucmVnaW9uIHx8ICdkZWZhdWx0J31gO1xuICAgIGlmIChpZCBpbiB1bmlxdWUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB1bmlxdWVbaWRdID0gZW52O1xuICB9XG4gIHJldHVybiBPYmplY3QudmFsdWVzKHVuaXF1ZSk7XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { CloudAssembly } from '@aws-cdk/cloud-assembly-api';
2
+ import type { IoHelper } from '../../lib/api-private';
3
+ import type { SdkProvider, IReadLock } from '../api';
4
+ import type { Configuration } from '../cli/user-configuration';
5
+ export interface ExecProgramResult {
6
+ readonly assembly: CloudAssembly;
7
+ readonly lock: IReadLock;
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): CloudAssembly;