aws-cdk 2.1007.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/THIRD_PARTY_LICENSES +24 -6
  2. package/build-info.json +2 -2
  3. package/db.json.gz +0 -0
  4. package/lib/api/aws-auth.d.ts +1 -0
  5. package/lib/api/{logs/index.js → aws-auth.js} +2 -3
  6. package/lib/api/bootstrap.d.ts +1 -0
  7. package/lib/api/bootstrap.js +18 -0
  8. package/lib/api/cloud-assembly.d.ts +1 -0
  9. package/lib/api/cloud-assembly.js +18 -0
  10. package/lib/api/cloudformation.d.ts +1 -0
  11. package/lib/api/cloudformation.js +18 -0
  12. package/lib/api/context.d.ts +1 -40
  13. package/lib/api/context.js +16 -80
  14. package/lib/api/deployments.d.ts +1 -0
  15. package/lib/api/deployments.js +18 -0
  16. package/lib/api/environment.d.ts +1 -0
  17. package/lib/api/environment.js +18 -0
  18. package/lib/api/garbage-collection.d.ts +1 -0
  19. package/lib/api/garbage-collection.js +18 -0
  20. package/lib/api/hotswap.d.ts +1 -0
  21. package/lib/api/hotswap.js +18 -0
  22. package/lib/api/index.d.ts +5 -1
  23. package/lib/api/index.js +6 -2
  24. package/lib/api/logs-monitor.d.ts +1 -0
  25. package/lib/api/logs-monitor.js +18 -0
  26. package/lib/api/notices.d.ts +1 -0
  27. package/lib/api/notices.js +18 -0
  28. package/lib/api/plugin.d.ts +1 -0
  29. package/lib/api/{garbage-collection/index.js → plugin.js} +2 -2
  30. package/lib/api/resource-import.d.ts +1 -0
  31. package/lib/api/resource-import.js +18 -0
  32. package/lib/api/rwlock.d.ts +1 -0
  33. package/lib/api/{resource-import/index.js → rwlock.js} +2 -3
  34. package/lib/api/settings.d.ts +1 -26
  35. package/lib/api/settings.js +16 -103
  36. package/lib/api/stack-events.d.ts +1 -0
  37. package/lib/api/stack-events.js +18 -0
  38. package/lib/api/tags.d.ts +1 -9
  39. package/lib/api/tags.js +16 -8
  40. package/lib/api/toolkit-info.d.ts +1 -52
  41. package/lib/api/toolkit-info.js +16 -152
  42. package/lib/api/tree.d.ts +1 -31
  43. package/lib/api/tree.js +16 -35
  44. package/lib/api/work-graph.d.ts +1 -0
  45. package/lib/api/work-graph.js +18 -0
  46. package/lib/api-private.d.ts +3 -0
  47. package/lib/api-private.js +22 -0
  48. package/lib/cli/cdk-toolkit.d.ts +6 -5
  49. package/lib/cli/cdk-toolkit.js +74 -44
  50. package/lib/cli/cli.d.ts +1 -1
  51. package/lib/cli/cli.js +21 -19
  52. package/lib/cli/io-host/cli-io-host.js +2 -2
  53. package/lib/cli/pretty-print-error.js +3 -1
  54. package/lib/cli/util/npm.d.ts +4 -1
  55. package/lib/cli/util/npm.js +25 -13
  56. package/lib/cli/version.d.ts +1 -1
  57. package/lib/cli/version.js +21 -25
  58. package/lib/commands/context.js +3 -2
  59. package/lib/commands/init/init.js +3 -2
  60. package/lib/commands/list-stacks.js +4 -4
  61. package/lib/context-providers/ami.d.ts +1 -13
  62. package/lib/context-providers/ami.js +16 -48
  63. package/lib/context-providers/availability-zones.d.ts +1 -13
  64. package/lib/context-providers/availability-zones.js +16 -25
  65. package/lib/context-providers/cc-api-provider.d.ts +1 -30
  66. package/lib/context-providers/cc-api-provider.js +16 -142
  67. package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -13
  68. package/lib/context-providers/endpoint-service-availability-zones.js +16 -31
  69. package/lib/context-providers/hosted-zones.d.ts +1 -12
  70. package/lib/context-providers/hosted-zones.js +16 -65
  71. package/lib/context-providers/index.d.ts +1 -44
  72. package/lib/context-providers/index.js +15 -126
  73. package/lib/context-providers/keys.d.ts +1 -13
  74. package/lib/context-providers/keys.js +16 -50
  75. package/lib/context-providers/load-balancers.d.ts +1 -20
  76. package/lib/context-providers/load-balancers.js +16 -154
  77. package/lib/context-providers/security-groups.d.ts +1 -9
  78. package/lib/context-providers/security-groups.js +16 -66
  79. package/lib/context-providers/ssm-parameters.d.ts +1 -25
  80. package/lib/context-providers/ssm-parameters.js +16 -57
  81. package/lib/context-providers/vpcs.d.ts +1 -13
  82. package/lib/context-providers/vpcs.js +16 -285
  83. package/lib/cxapp/cloud-assembly.d.ts +79 -0
  84. package/lib/cxapp/cloud-assembly.js +108 -0
  85. package/lib/{api/cxapp → cxapp}/cloud-executable.d.ts +6 -4
  86. package/lib/cxapp/cloud-executable.js +92 -0
  87. package/lib/{api/cxapp → cxapp}/environments.d.ts +1 -2
  88. package/lib/{api/cxapp → cxapp}/environments.js +2 -2
  89. package/lib/cxapp/exec.d.ts +14 -0
  90. package/lib/cxapp/exec.js +157 -0
  91. package/lib/cxapp/index.d.ts +4 -0
  92. package/lib/{api/bootstrap → cxapp}/index.js +5 -3
  93. package/lib/index.js +133605 -124560
  94. package/lib/init-templates/.init-version.json +1 -1
  95. package/lib/init-templates/.recommended-feature-flags.json +2 -1
  96. package/lib/legacy-aws-auth.d.ts +74 -0
  97. package/lib/legacy-aws-auth.js +40 -0
  98. package/lib/legacy-exports-source.d.ts +13 -18
  99. package/lib/legacy-exports-source.js +42 -49
  100. package/lib/legacy-exports.d.ts +3 -6
  101. package/lib/legacy-exports.js +5 -5
  102. package/lib/legacy-types.d.ts +31 -0
  103. package/lib/legacy-types.js +3 -0
  104. package/package.json +8 -7
  105. package/lib/api/aws-auth/account-cache.d.ts +0 -36
  106. package/lib/api/aws-auth/account-cache.js +0 -99
  107. package/lib/api/aws-auth/awscli-compatible.d.ts +0 -42
  108. package/lib/api/aws-auth/awscli-compatible.js +0 -263
  109. package/lib/api/aws-auth/cached.d.ts +0 -11
  110. package/lib/api/aws-auth/cached.js +0 -26
  111. package/lib/api/aws-auth/credential-plugins.d.ts +0 -36
  112. package/lib/api/aws-auth/credential-plugins.js +0 -152
  113. package/lib/api/aws-auth/index.d.ts +0 -3
  114. package/lib/api/aws-auth/index.js +0 -20
  115. package/lib/api/aws-auth/provider-caching.d.ts +0 -13
  116. package/lib/api/aws-auth/provider-caching.js +0 -24
  117. package/lib/api/aws-auth/sdk-logger.d.ts +0 -69
  118. package/lib/api/aws-auth/sdk-logger.js +0 -124
  119. package/lib/api/aws-auth/sdk-provider.d.ts +0 -207
  120. package/lib/api/aws-auth/sdk-provider.js +0 -357
  121. package/lib/api/aws-auth/sdk.d.ts +0 -229
  122. package/lib/api/aws-auth/sdk.js +0 -373
  123. package/lib/api/aws-auth/tracing.d.ts +0 -11
  124. package/lib/api/aws-auth/tracing.js +0 -60
  125. package/lib/api/aws-auth/user-agent.d.ts +0 -7
  126. package/lib/api/aws-auth/user-agent.js +0 -20
  127. package/lib/api/aws-auth/util.d.ts +0 -6
  128. package/lib/api/aws-auth/util.js +0 -23
  129. package/lib/api/bootstrap/bootstrap-environment.d.ts +0 -35
  130. package/lib/api/bootstrap/bootstrap-environment.js +0 -321
  131. package/lib/api/bootstrap/bootstrap-props.d.ts +0 -130
  132. package/lib/api/bootstrap/bootstrap-props.js +0 -14
  133. package/lib/api/bootstrap/deploy-bootstrap.d.ts +0 -39
  134. package/lib/api/bootstrap/deploy-bootstrap.js +0 -141
  135. package/lib/api/bootstrap/index.d.ts +0 -2
  136. package/lib/api/bootstrap/legacy-template.d.ts +0 -2
  137. package/lib/api/bootstrap/legacy-template.js +0 -82
  138. package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +0 -85
  139. package/lib/api/cloudformation/evaluate-cloudformation-template.js +0 -440
  140. package/lib/api/cloudformation/index.d.ts +0 -4
  141. package/lib/api/cloudformation/index.js +0 -21
  142. package/lib/api/cloudformation/nested-stack-helpers.d.ts +0 -19
  143. package/lib/api/cloudformation/nested-stack-helpers.js +0 -86
  144. package/lib/api/cloudformation/stack-helpers.d.ts +0 -88
  145. package/lib/api/cloudformation/stack-helpers.js +0 -158
  146. package/lib/api/cloudformation/template-body-parameter.d.ts +0 -22
  147. package/lib/api/cloudformation/template-body-parameter.js +0 -104
  148. package/lib/api/cxapp/cloud-assembly.d.ts +0 -137
  149. package/lib/api/cxapp/cloud-assembly.js +0 -305
  150. package/lib/api/cxapp/cloud-executable.js +0 -89
  151. package/lib/api/cxapp/exec.d.ts +0 -57
  152. package/lib/api/cxapp/exec.js +0 -279
  153. package/lib/api/deployments/asset-manifest-builder.d.ts +0 -8
  154. package/lib/api/deployments/asset-manifest-builder.js +0 -35
  155. package/lib/api/deployments/asset-publishing.d.ts +0 -60
  156. package/lib/api/deployments/asset-publishing.js +0 -141
  157. package/lib/api/deployments/assets.d.ts +0 -11
  158. package/lib/api/deployments/assets.js +0 -109
  159. package/lib/api/deployments/cfn-api.d.ts +0 -138
  160. package/lib/api/deployments/cfn-api.js +0 -438
  161. package/lib/api/deployments/checks.d.ts +0 -9
  162. package/lib/api/deployments/checks.js +0 -72
  163. package/lib/api/deployments/deploy-stack.d.ts +0 -155
  164. package/lib/api/deployments/deploy-stack.js +0 -478
  165. package/lib/api/deployments/deployment-method.d.ts +0 -24
  166. package/lib/api/deployments/deployment-method.js +0 -3
  167. package/lib/api/deployments/deployment-result.d.ts +0 -21
  168. package/lib/api/deployments/deployment-result.js +0 -10
  169. package/lib/api/deployments/deployments.d.ts +0 -296
  170. package/lib/api/deployments/deployments.js +0 -331
  171. package/lib/api/deployments/hotswap-deployments.d.ts +0 -17
  172. package/lib/api/deployments/hotswap-deployments.js +0 -441
  173. package/lib/api/deployments/index.d.ts +0 -5
  174. package/lib/api/deployments/index.js +0 -22
  175. package/lib/api/environment/environment-access.d.ts +0 -140
  176. package/lib/api/environment/environment-access.js +0 -202
  177. package/lib/api/environment/environment-resources.d.ts +0 -75
  178. package/lib/api/environment/environment-resources.js +0 -207
  179. package/lib/api/environment/index.d.ts +0 -3
  180. package/lib/api/environment/index.js +0 -20
  181. package/lib/api/environment/placeholders.d.ts +0 -10
  182. package/lib/api/environment/placeholders.js +0 -23
  183. package/lib/api/garbage-collection/garbage-collector.d.ts +0 -158
  184. package/lib/api/garbage-collection/garbage-collector.js +0 -599
  185. package/lib/api/garbage-collection/index.d.ts +0 -1
  186. package/lib/api/garbage-collection/progress-printer.d.ts +0 -23
  187. package/lib/api/garbage-collection/progress-printer.js +0 -70
  188. package/lib/api/garbage-collection/stack-refresh.d.ts +0 -49
  189. package/lib/api/garbage-collection/stack-refresh.js +0 -151
  190. package/lib/api/hotswap/appsync-mapping-templates.d.ts +0 -4
  191. package/lib/api/hotswap/appsync-mapping-templates.js +0 -162
  192. package/lib/api/hotswap/code-build-projects.d.ts +0 -4
  193. package/lib/api/hotswap/code-build-projects.js +0 -62
  194. package/lib/api/hotswap/common.d.ts +0 -89
  195. package/lib/api/hotswap/common.js +0 -128
  196. package/lib/api/hotswap/ecs-services.d.ts +0 -4
  197. package/lib/api/hotswap/ecs-services.js +0 -159
  198. package/lib/api/hotswap/lambda-functions.d.ts +0 -4
  199. package/lib/api/hotswap/lambda-functions.js +0 -297
  200. package/lib/api/hotswap/s3-bucket-deployments.d.ts +0 -5
  201. package/lib/api/hotswap/s3-bucket-deployments.js +0 -117
  202. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -4
  203. package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
  204. package/lib/api/logs/find-cloudwatch-logs.d.ts +0 -25
  205. package/lib/api/logs/find-cloudwatch-logs.js +0 -95
  206. package/lib/api/logs/index.d.ts +0 -2
  207. package/lib/api/logs/logs-monitor.d.ts +0 -76
  208. package/lib/api/logs/logs-monitor.js +0 -187
  209. package/lib/api/plugin/context-provider-plugin.d.ts +0 -6
  210. package/lib/api/plugin/context-provider-plugin.js +0 -7
  211. package/lib/api/plugin/index.d.ts +0 -3
  212. package/lib/api/plugin/index.js +0 -20
  213. package/lib/api/plugin/mode.d.ts +0 -4
  214. package/lib/api/plugin/mode.js +0 -9
  215. package/lib/api/plugin/plugin.d.ts +0 -63
  216. package/lib/api/plugin/plugin.js +0 -102
  217. package/lib/api/resource-import/importer.d.ts +0 -215
  218. package/lib/api/resource-import/importer.js +0 -322
  219. package/lib/api/resource-import/index.d.ts +0 -2
  220. package/lib/api/resource-import/migrator.d.ts +0 -26
  221. package/lib/api/resource-import/migrator.js +0 -71
  222. package/lib/api/stack-events/index.d.ts +0 -3
  223. package/lib/api/stack-events/index.js +0 -20
  224. package/lib/api/stack-events/stack-activity-monitor.d.ts +0 -100
  225. package/lib/api/stack-events/stack-activity-monitor.js +0 -142
  226. package/lib/api/stack-events/stack-event-poller.d.ts +0 -69
  227. package/lib/api/stack-events/stack-event-poller.js +0 -128
  228. package/lib/api/stack-events/stack-progress-monitor.d.ts +0 -48
  229. package/lib/api/stack-events/stack-progress-monitor.js +0 -94
  230. package/lib/api/stack-events/stack-status.d.ts +0 -42
  231. package/lib/api/stack-events/stack-status.js +0 -88
  232. package/lib/api/util/rwlock.d.ts +0 -65
  233. package/lib/api/util/rwlock.js +0 -179
  234. package/lib/api/work-graph/index.d.ts +0 -3
  235. package/lib/api/work-graph/index.js +0 -20
  236. package/lib/api/work-graph/work-graph-builder.d.ts +0 -34
  237. package/lib/api/work-graph/work-graph-builder.js +0 -168
  238. package/lib/api/work-graph/work-graph-types.d.ts +0 -50
  239. package/lib/api/work-graph/work-graph-types.js +0 -13
  240. package/lib/api/work-graph/work-graph.d.ts +0 -72
  241. package/lib/api/work-graph/work-graph.js +0 -346
  242. package/lib/cli/activity-printer/base.d.ts +0 -50
  243. package/lib/cli/activity-printer/base.js +0 -114
  244. package/lib/cli/activity-printer/current.d.ts +0 -26
  245. package/lib/cli/activity-printer/current.js +0 -118
  246. package/lib/cli/activity-printer/display.d.ts +0 -13
  247. package/lib/cli/activity-printer/display.js +0 -80
  248. package/lib/cli/activity-printer/history.d.ts +0 -32
  249. package/lib/cli/activity-printer/history.js +0 -108
  250. package/lib/cli/activity-printer/index.d.ts +0 -3
  251. package/lib/cli/activity-printer/index.js +0 -20
  252. package/lib/notices.d.ts +0 -203
  253. package/lib/notices.js +0 -411
@@ -1,109 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addMetadataAssetsToManifest = addMetadataAssetsToManifest;
4
- // eslint-disable-next-line max-len
5
- const path = require("path");
6
- const cxschema = require("@aws-cdk/cloud-assembly-schema");
7
- const cxapi = require("@aws-cdk/cx-api");
8
- const chalk = require("chalk");
9
- const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
10
- const private_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private");
11
- /**
12
- * Take the metadata assets from the given stack and add them to the given asset manifest
13
- *
14
- * Returns the CloudFormation parameters that need to be sent to the template to
15
- * pass Asset coordinates.
16
- */
17
- async function addMetadataAssetsToManifest(ioHelper, stack, assetManifest, envResources, reuse) {
18
- reuse = reuse || [];
19
- const assets = stack.assets;
20
- if (assets.length === 0) {
21
- return {};
22
- }
23
- const toolkitInfo = await envResources.lookupToolkit();
24
- if (!toolkitInfo.found) {
25
- // eslint-disable-next-line max-len
26
- throw new api_1.ToolkitError(`This stack uses assets, so the toolkit stack must be deployed to the environment (Run "${chalk.blue('cdk bootstrap ' + stack.environment.name)}")`);
27
- }
28
- const params = {};
29
- for (const asset of assets) {
30
- // FIXME: Should have excluded by construct path here instead of by unique ID, preferably using
31
- // minimatch so we can support globs. Maybe take up during artifact refactoring.
32
- const reuseAsset = reuse.indexOf(asset.id) > -1;
33
- if (reuseAsset) {
34
- await ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_DEBUG.msg(`Reusing asset ${asset.id}: ${JSON.stringify(asset)}`));
35
- continue;
36
- }
37
- await ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_DEBUG.msg(`Preparing asset ${asset.id}: ${JSON.stringify(asset)}`));
38
- if (!stack.assembly) {
39
- throw new api_1.ToolkitError('Unexpected: stack assembly is required in order to find assets in assembly directory');
40
- }
41
- Object.assign(params, await prepareAsset(ioHelper, asset, assetManifest, envResources, toolkitInfo));
42
- }
43
- return params;
44
- }
45
- // eslint-disable-next-line max-len
46
- async function prepareAsset(ioHelper, asset, assetManifest, envResources, toolkitInfo) {
47
- switch (asset.packaging) {
48
- case 'zip':
49
- case 'file':
50
- return prepareFileAsset(ioHelper, asset, assetManifest, toolkitInfo, asset.packaging === 'zip' ? cxschema.FileAssetPackaging.ZIP_DIRECTORY : cxschema.FileAssetPackaging.FILE);
51
- case 'container-image':
52
- return prepareDockerImageAsset(asset, assetManifest, envResources);
53
- default:
54
- // eslint-disable-next-line max-len
55
- throw new api_1.ToolkitError(`Unsupported packaging type: ${asset.packaging}. You might need to upgrade your aws-cdk toolkit to support this asset type.`);
56
- }
57
- }
58
- async function prepareFileAsset(ioHelper, asset, assetManifest, toolkitInfo, packaging) {
59
- const extension = packaging === cxschema.FileAssetPackaging.ZIP_DIRECTORY ? '.zip' : path.extname(asset.path);
60
- const baseName = `${asset.sourceHash}${extension}`;
61
- // Simplify key: assets/abcdef/abcdef.zip is kinda silly and unnecessary, so if they're the same just pick one component.
62
- const s3Prefix = asset.id === asset.sourceHash ? 'assets/' : `assets/${asset.id}/`;
63
- const key = `${s3Prefix}${baseName}`;
64
- const s3url = `s3://${toolkitInfo.bucketName}/${key}`;
65
- await ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_DEBUG.msg(`Storing asset ${asset.path} at ${s3url}`));
66
- assetManifest.addFileAsset(asset.sourceHash, {
67
- path: asset.path,
68
- packaging,
69
- }, {
70
- bucketName: toolkitInfo.bucketName,
71
- objectKey: key,
72
- });
73
- return {
74
- [asset.s3BucketParameter]: toolkitInfo.bucketName,
75
- [asset.s3KeyParameter]: `${s3Prefix}${cxapi.ASSET_PREFIX_SEPARATOR}${baseName}`,
76
- [asset.artifactHashParameter]: asset.sourceHash,
77
- };
78
- }
79
- async function prepareDockerImageAsset(asset, assetManifest, envResources) {
80
- // Pre-1.21.0, repositoryName can be specified by the user or can be left out, in which case we make
81
- // a per-asset repository which will get adopted and cleaned up along with the stack.
82
- // Post-1.21.0, repositoryName will always be specified and it will be a shared repository between
83
- // all assets, and asset will have imageTag specified as well. Validate the combination.
84
- if (!asset.imageNameParameter && (!asset.repositoryName || !asset.imageTag)) {
85
- throw new api_1.ToolkitError('Invalid Docker image asset configuration: "repositoryName" and "imageTag" are required when "imageNameParameter" is left out');
86
- }
87
- const repositoryName = asset.repositoryName ?? 'cdk/' + asset.id.replace(/[:/]/g, '-').toLowerCase();
88
- // Make sure the repository exists, since the 'cdk-assets' tool will not create it for us.
89
- const { repositoryUri } = await envResources.prepareEcrRepository(repositoryName);
90
- const imageTag = asset.imageTag ?? asset.sourceHash;
91
- assetManifest.addDockerImageAsset(asset.sourceHash, {
92
- directory: asset.path,
93
- dockerBuildArgs: asset.buildArgs,
94
- dockerBuildSsh: asset.buildSsh,
95
- dockerBuildTarget: asset.target,
96
- dockerFile: asset.file,
97
- networkMode: asset.networkMode,
98
- platform: asset.platform,
99
- dockerOutputs: asset.outputs,
100
- }, {
101
- repositoryName,
102
- imageTag,
103
- });
104
- if (!asset.imageNameParameter) {
105
- return {};
106
- }
107
- return { [asset.imageNameParameter]: `${repositoryUri}:${imageTag}` };
108
- }
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXNzZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUJBLGtFQXlDQztBQTFERCxtQ0FBbUM7QUFDbkMsNkJBQTZCO0FBQzdCLDJEQUEyRDtBQUMzRCx5Q0FBeUM7QUFDekMsK0JBQStCO0FBRS9CLDBFQUFnRjtBQUNoRix5RkFBZ0c7QUFJaEc7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsMkJBQTJCLENBQy9DLFFBQWtCLEVBQ2xCLEtBQXdDLEVBQ3hDLGFBQW1DLEVBQ25DLFlBQWtDLEVBQ2xDLEtBQWdCO0lBRWhCLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3BCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFFNUIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsbUNBQW1DO1FBQ25DLE1BQU0sSUFBSSxrQkFBWSxDQUFDLDBGQUEwRixLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9LLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBMkIsRUFBRSxDQUFDO0lBRTFDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsK0ZBQStGO1FBQy9GLGdGQUFnRjtRQUNoRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVoRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxRQUFRLENB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ckIsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQ2hDLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUM5QixpQkFBaUIsRUFBRSxLQUFLLENBQUMsTUFBTTtRQUMvQixVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDdEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQzlCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixhQUFhLEVBQUUsS0FBSyxDQUFDLE9BQU87S0FDN0IsRUFBRTtRQUNELGNBQWM7UUFDZCxRQUFRO0tBQ1QsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsYUFBYSxJQUFJLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY3hzY2hlbWEgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgdHlwZSB7IEFzc2V0TWFuaWZlc3RCdWlsZGVyIH0gZnJvbSAnLi9hc3NldC1tYW5pZmVzdC1idWlsZGVyJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaSc7XG5pbXBvcnQgeyBJTywgdHlwZSBJb0hlbHBlciB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaS9pby9wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnRSZXNvdXJjZXMgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgdHlwZSB7IFRvb2xraXRJbmZvIH0gZnJvbSAnLi4vdG9vbGtpdC1pbmZvJztcblxuLyoqXG4gKiBUYWtlIHRoZSBtZXRhZGF0YSBhc3NldHMgZnJvbSB0aGUgZ2l2ZW4gc3RhY2sgYW5kIGFkZCB0aGVtIHRvIHRoZSBnaXZlbiBhc3NldCBtYW5pZmVzdFxuICpcbiAqIFJldHVybnMgdGhlIENsb3VkRm9ybWF0aW9uIHBhcmFtZXRlcnMgdGhhdCBuZWVkIHRvIGJlIHNlbnQgdG8gdGhlIHRlbXBsYXRlIHRvXG4gKiBwYXNzIEFzc2V0IGNvb3JkaW5hdGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkTWV0YWRhdGFBc3NldHNUb01hbmlmZXN0KFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gIHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsXG4gIGFzc2V0TWFuaWZlc3Q6IEFzc2V0TWFuaWZlc3RCdWlsZGVyLFxuICBlbnZSZXNvdXJjZXM6IEVudmlyb25tZW50UmVzb3VyY2VzLFxuICByZXVzZT86IHN0cmluZ1tdLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHJldXNlID0gcmV1c2UgfHwgW107XG4gIGNvbnN0IGFzc2V0cyA9IHN0YWNrLmFzc2V0cztcblxuICBpZiAoYXNzZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHRvb2xraXRJbmZvID0gYXdhaXQgZW52UmVzb3VyY2VzLmxvb2t1cFRvb2xraXQoKTtcbiAgaWYgKCF0b29sa2l0SW5mby5mb3VuZCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgVGhpcyBzdGFjayB1c2VzIGFzc2V0cywgc28gdGhlIHRvb2xraXQgc3RhY2sgbXVzdCBiZSBkZXBsb3llZCB0byB0aGUgZW52aXJvbm1lbnQgKFJ1biBcIiR7Y2hhbGsuYmx1ZSgnY2RrIGJvb3RzdHJhcCAnICsgc3RhY2suZW52aXJvbm1lbnQhLm5hbWUpfVwiKWApO1xuICB9XG5cbiAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgZm9yIChjb25zdCBhc3NldCBvZiBhc3NldHMpIHtcbiAgICAvLyBGSVhNRTogU2hvdWxkIGhhdmUgZXhjbHVkZWQgYnkgY29uc3RydWN0IHBhdGggaGVyZSBpbnN0ZWFkIG9mIGJ5IHVuaXF1ZSBJRCwgcHJlZmVyYWJseSB1c2luZ1xuICAgIC8vIG1pbmltYXRjaCBzbyB3ZSBjYW4gc3VwcG9ydCBnbG9icy4gTWF5YmUgdGFrZSB1cCBkdXJpbmcgYXJ0aWZhY3QgcmVmYWN0b3JpbmcuXG4gICAgY29uc3QgcmV1c2VBc3NldCA9IHJldXNlLmluZGV4T2YoYXNzZXQuaWQpID4gLTE7XG5cbiAgICBpZiAocmV1c2VBc3NldCkge1xuICAgICAgYXdhaXQgaW9IZWxwZXIubm90aWZ5KElPLkRFRkFVTFRfVE9PTEtJVF9ERUJVRy5tc2coYFJldXNpbmcgYXNzZXQgJHthc3NldC5pZH06ICR7SlNPTi5zdHJpbmdpZnkoYXNzZXQpfWApKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGF3YWl0IGlvSGVscGVyLm5vdGlmeShJTy5ERUZBVUxUX1RPT0xLSVRfREVCVUcubXNnKGBQcmVwYXJpbmcgYXNzZXQgJHthc3NldC5pZH06ICR7SlNPTi5zdHJpbmdpZnkoYXNzZXQpfWApKTtcbiAgICBpZiAoIXN0YWNrLmFzc2VtYmx5KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdVbmV4cGVjdGVkOiBzdGFjayBhc3NlbWJseSBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBmaW5kIGFzc2V0cyBpbiBhc3NlbWJseSBkaXJlY3RvcnknKTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgYXdhaXQgcHJlcGFyZUFzc2V0KGlvSGVscGVyLCBhc3NldCwgYXNzZXRNYW5pZmVzdCwgZW52UmVzb3VyY2VzLCB0b29sa2l0SW5mbykpO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVBc3NldChcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBhc3NldDogY3hzY2hlbWEuQXNzZXRNZXRhZGF0YUVudHJ5LFxuICBhc3NldE1hbmlmZXN0OiBBc3NldE1hbmlmZXN0QnVpbGRlcixcbiAgZW52UmVzb3VyY2VzOiBFbnZpcm9ubWVudFJlc291cmNlcyxcbiAgdG9vbGtpdEluZm86IFRvb2xraXRJbmZvLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHN3aXRjaCAoYXNzZXQucGFja2FnaW5nKSB7XG4gICAgY2FzZSAnemlwJzpcbiAgICBjYXNlICdmaWxlJzpcbiAgICAgIHJldHVybiBwcmVwYXJlRmlsZUFzc2V0KFxuICAgICAgICBpb0hlbHBlcixcbiAgICAgICAgYXNzZXQsXG4gICAgICAgIGFzc2V0TWFuaWZlc3QsXG4gICAgICAgIHRvb2xraXRJbmZvLFxuICAgICAgICBhc3NldC5wYWNrYWdpbmcgPT09ICd6aXAnID8gY3hzY2hlbWEuRmlsZUFzc2V0UGFja2FnaW5nLlpJUF9ESVJFQ1RPUlkgOiBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcuRklMRSk7XG4gICAgY2FzZSAnY29udGFpbmVyLWltYWdlJzpcbiAgICAgIHJldHVybiBwcmVwYXJlRG9ja2VySW1hZ2VBc3NldChhc3NldCwgYXNzZXRNYW5pZmVzdCwgZW52UmVzb3VyY2VzKTtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFVuc3VwcG9ydGVkIHBhY2thZ2luZyB0eXBlOiAkeyhhc3NldCBhcyBhbnkpLnBhY2thZ2luZ30uIFlvdSBtaWdodCBuZWVkIHRvIHVwZ3JhZGUgeW91ciBhd3MtY2RrIHRvb2xraXQgdG8gc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUuYCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUZpbGVBc3NldChcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBhc3NldDogY3hzY2hlbWEuRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSxcbiAgYXNzZXRNYW5pZmVzdDogQXNzZXRNYW5pZmVzdEJ1aWxkZXIsXG4gIHRvb2xraXRJbmZvOiBUb29sa2l0SW5mbyxcbiAgcGFja2FnaW5nOiBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcsXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgY29uc3QgZXh0ZW5zaW9uID0gcGFja2FnaW5nID09PSBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcuWklQX0RJUkVDVE9SWSA/ICcuemlwJyA6IHBhdGguZXh0bmFtZShhc3NldC5wYXRoKTtcbiAgY29uc3QgYmFzZU5hbWUgPSBgJHthc3NldC5zb3VyY2VIYXNofSR7ZXh0ZW5zaW9ufWA7XG4gIC8vIFNpbXBsaWZ5IGtleTogYXNzZXRzL2FiY2RlZi9hYmNkZWYuemlwIGlzIGtpbmRhIHNpbGx5IGFuZCB1bm5lY2Vzc2FyeSwgc28gaWYgdGhleSdyZSB0aGUgc2FtZSBqdXN0IHBpY2sgb25lIGNvbXBvbmVudC5cbiAgY29uc3QgczNQcmVmaXggPSBhc3NldC5pZCA9PT0gYXNzZXQuc291cmNlSGFzaCA/ICdhc3NldHMvJyA6IGBhc3NldHMvJHthc3NldC5pZH0vYDtcbiAgY29uc3Qga2V5ID0gYCR7czNQcmVmaXh9JHtiYXNlTmFtZX1gO1xuICBjb25zdCBzM3VybCA9IGBzMzovLyR7dG9vbGtpdEluZm8uYnVja2V0TmFtZX0vJHtrZXl9YDtcblxuICBhd2FpdCBpb0hlbHBlci5ub3RpZnkoSU8uREVGQVVMVF9UT09MS0lUX0RFQlVHLm1zZyhgU3RvcmluZyBhc3NldCAke2Fzc2V0LnBhdGh9IGF0ICR7czN1cmx9YCkpO1xuXG4gIGFzc2V0TWFuaWZlc3QuYWRkRmlsZUFzc2V0KGFzc2V0LnNvdXJjZUhhc2gsIHtcbiAgICBwYXRoOiBhc3NldC5wYXRoLFxuICAgIHBhY2thZ2luZyxcbiAgfSwge1xuICAgIGJ1Y2tldE5hbWU6IHRvb2xraXRJbmZvLmJ1Y2tldE5hbWUsXG4gICAgb2JqZWN0S2V5OiBrZXksXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgW2Fzc2V0LnMzQnVja2V0UGFyYW1ldGVyXTogdG9vbGtpdEluZm8uYnVja2V0TmFtZSxcbiAgICBbYXNzZXQuczNLZXlQYXJhbWV0ZXJdOiBgJHtzM1ByZWZpeH0ke2N4YXBpLkFTU0VUX1BSRUZJWF9TRVBBUkFUT1J9JHtiYXNlTmFtZX1gLFxuICAgIFthc3NldC5hcnRpZmFjdEhhc2hQYXJhbWV0ZXJdOiBhc3NldC5zb3VyY2VIYXNoLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlRG9ja2VySW1hZ2VBc3NldChcbiAgYXNzZXQ6IGN4c2NoZW1hLkNvbnRhaW5lckltYWdlQXNzZXRNZXRhZGF0YUVudHJ5LFxuICBhc3NldE1hbmlmZXN0OiBBc3NldE1hbmlmZXN0QnVpbGRlcixcbiAgZW52UmVzb3VyY2VzOiBFbnZpcm9ubWVudFJlc291cmNlcyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICAvLyBQcmUtMS4yMS4wLCByZXBvc2l0b3J5TmFtZSBjYW4gYmUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyIG9yIGNhbiBiZSBsZWZ0IG91dCwgaW4gd2hpY2ggY2FzZSB3ZSBtYWtlXG4gIC8vIGEgcGVyLWFzc2V0IHJlcG9zaXRvcnkgd2hpY2ggd2lsbCBnZXQgYWRvcHRlZCBhbmQgY2xlYW5lZCB1cCBhbG9uZyB3aXRoIHRoZSBzdGFjay5cbiAgLy8gUG9zdC0xLjIxLjAsIHJlcG9zaXRvcnlOYW1lIHdpbGwgYWx3YXlzIGJlIHNwZWNpZmllZCBhbmQgaXQgd2lsbCBiZSBhIHNoYXJlZCByZXBvc2l0b3J5IGJldHdlZW5cbiAgLy8gYWxsIGFzc2V0cywgYW5kIGFzc2V0IHdpbGwgaGF2ZSBpbWFnZVRhZyBzcGVjaWZpZWQgYXMgd2VsbC4gVmFsaWRhdGUgdGhlIGNvbWJpbmF0aW9uLlxuICBpZiAoIWFzc2V0LmltYWdlTmFtZVBhcmFtZXRlciAmJiAoIWFzc2V0LnJlcG9zaXRvcnlOYW1lIHx8ICFhc3NldC5pbWFnZVRhZykpIHtcbiAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdJbnZhbGlkIERvY2tlciBpbWFnZSBhc3NldCBjb25maWd1cmF0aW9uOiBcInJlcG9zaXRvcnlOYW1lXCIgYW5kIFwiaW1hZ2VUYWdcIiBhcmUgcmVxdWlyZWQgd2hlbiBcImltYWdlTmFtZVBhcmFtZXRlclwiIGlzIGxlZnQgb3V0Jyk7XG4gIH1cblxuICBjb25zdCByZXBvc2l0b3J5TmFtZSA9IGFzc2V0LnJlcG9zaXRvcnlOYW1lID8/ICdjZGsvJyArIGFzc2V0LmlkLnJlcGxhY2UoL1s6L10vZywgJy0nKS50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIE1ha2Ugc3VyZSB0aGUgcmVwb3NpdG9yeSBleGlzdHMsIHNpbmNlIHRoZSAnY2RrLWFzc2V0cycgdG9vbCB3aWxsIG5vdCBjcmVhdGUgaXQgZm9yIHVzLlxuICBjb25zdCB7IHJlcG9zaXRvcnlVcmkgfSA9IGF3YWl0IGVudlJlc291cmNlcy5wcmVwYXJlRWNyUmVwb3NpdG9yeShyZXBvc2l0b3J5TmFtZSk7XG4gIGNvbnN0IGltYWdlVGFnID0gYXNzZXQuaW1hZ2VUYWcgPz8gYXNzZXQuc291cmNlSGFzaDtcblxuICBhc3NldE1hbmlmZXN0LmFkZERvY2tlckltYWdlQXNzZXQoYXNzZXQuc291cmNlSGFzaCwge1xuICAgIGRpcmVjdG9yeTogYXNzZXQucGF0aCxcbiAgICBkb2NrZXJCdWlsZEFyZ3M6IGFzc2V0LmJ1aWxkQXJncyxcbiAgICBkb2NrZXJCdWlsZFNzaDogYXNzZXQuYnVpbGRTc2gsXG4gICAgZG9ja2VyQnVpbGRUYXJnZXQ6IGFzc2V0LnRhcmdldCxcbiAgICBkb2NrZXJGaWxlOiBhc3NldC5maWxlLFxuICAgIG5ldHdvcmtNb2RlOiBhc3NldC5uZXR3b3JrTW9kZSxcbiAgICBwbGF0Zm9ybTogYXNzZXQucGxhdGZvcm0sXG4gICAgZG9ja2VyT3V0cHV0czogYXNzZXQub3V0cHV0cyxcbiAgfSwge1xuICAgIHJlcG9zaXRvcnlOYW1lLFxuICAgIGltYWdlVGFnLFxuICB9KTtcblxuICBpZiAoIWFzc2V0LmltYWdlTmFtZVBhcmFtZXRlcikge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICByZXR1cm4geyBbYXNzZXQuaW1hZ2VOYW1lUGFyYW1ldGVyXTogYCR7cmVwb3NpdG9yeVVyaX06JHtpbWFnZVRhZ31gIH07XG59XG4iXX0=
@@ -1,138 +0,0 @@
1
- import * as cxapi from '@aws-cdk/cx-api';
2
- import type { DescribeChangeSetCommandOutput, Parameter, ResourceToImport } from '@aws-sdk/client-cloudformation';
3
- import type { Deployments } from './deployments';
4
- import { type IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
5
- import type { ICloudFormationClient, SdkProvider } from '../aws-auth';
6
- import type { Template, TemplateBodyParameter, TemplateParameter } from '../cloudformation';
7
- import { CloudFormationStack } from '../cloudformation';
8
- import type { ResourcesToImport } from '../resource-import';
9
- /**
10
- * Waits for a ChangeSet to be available for triggering a StackUpdate.
11
- *
12
- * Will return a changeset that is either ready to be executed or has no changes.
13
- * Will throw in other cases.
14
- *
15
- * @param cfn a CloudFormation client
16
- * @param stackName the name of the Stack that the ChangeSet belongs to
17
- * @param changeSetName the name of the ChangeSet
18
- * @param fetchAll if true, fetches all pages of the ChangeSet before returning.
19
- *
20
- * @returns the CloudFormation description of the ChangeSet
21
- */
22
- export declare function waitForChangeSet(cfn: ICloudFormationClient, ioHelper: IoHelper, stackName: string, changeSetName: string, { fetchAll }: {
23
- fetchAll: boolean;
24
- }): Promise<DescribeChangeSetCommandOutput>;
25
- export type PrepareChangeSetOptions = {
26
- stack: cxapi.CloudFormationStackArtifact;
27
- deployments: Deployments;
28
- uuid: string;
29
- willExecute: boolean;
30
- sdkProvider: SdkProvider;
31
- parameters: {
32
- [name: string]: string | undefined;
33
- };
34
- resourcesToImport?: ResourcesToImport;
35
- };
36
- export type CreateChangeSetOptions = {
37
- cfn: ICloudFormationClient;
38
- changeSetName: string;
39
- willExecute: boolean;
40
- exists: boolean;
41
- uuid: string;
42
- stack: cxapi.CloudFormationStackArtifact;
43
- bodyParameter: TemplateBodyParameter;
44
- parameters: {
45
- [name: string]: string | undefined;
46
- };
47
- resourcesToImport?: ResourceToImport[];
48
- role?: string;
49
- };
50
- /**
51
- * Create a changeset for a diff operation
52
- */
53
- export declare function createDiffChangeSet(ioHelper: IoHelper, options: PrepareChangeSetOptions): Promise<DescribeChangeSetCommandOutput | undefined>;
54
- /**
55
- * Uploads the assets that look like templates for this CloudFormation stack
56
- *
57
- * This is necessary for any CloudFormation call that needs the template, it may need
58
- * to be uploaded to an S3 bucket first. We have to follow the instructions in the
59
- * asset manifest, because technically that is the only place that knows about
60
- * bucket and assumed roles and such.
61
- */
62
- export declare function uploadStackTemplateAssets(stack: cxapi.CloudFormationStackArtifact, deployments: Deployments): Promise<void>;
63
- export declare function createChangeSet(ioHelper: IoHelper, options: CreateChangeSetOptions): Promise<DescribeChangeSetCommandOutput>;
64
- /**
65
- * Return true if the given change set has no changes
66
- *
67
- * This must be determined from the status, not the 'Changes' array on the
68
- * object; the latter can be empty because no resources were changed, but if
69
- * there are changes to Outputs, the change set can still be executed.
70
- */
71
- export declare function changeSetHasNoChanges(description: DescribeChangeSetCommandOutput): boolean;
72
- /**
73
- * Waits for a CloudFormation stack to stabilize in a complete/available state
74
- * after a delete operation is issued.
75
- *
76
- * Fails if the stack is in a FAILED state. Will not fail if the stack was
77
- * already deleted.
78
- *
79
- * @param cfn a CloudFormation client
80
- * @param stackName the name of the stack to wait for after a delete
81
- *
82
- * @returns the CloudFormation description of the stabilized stack after the delete attempt
83
- */
84
- export declare function waitForStackDelete(cfn: ICloudFormationClient, ioHelper: IoHelper, stackName: string): Promise<CloudFormationStack | undefined>;
85
- /**
86
- * Waits for a CloudFormation stack to stabilize in a complete/available state
87
- * after an update/create operation is issued.
88
- *
89
- * Fails if the stack is in a FAILED state, ROLLBACK state, or DELETED state.
90
- *
91
- * @param cfn a CloudFormation client
92
- * @param stackName the name of the stack to wait for after an update
93
- *
94
- * @returns the CloudFormation description of the stabilized stack after the update attempt
95
- */
96
- export declare function waitForStackDeploy(cfn: ICloudFormationClient, ioHelper: IoHelper, stackName: string): Promise<CloudFormationStack | undefined>;
97
- /**
98
- * Wait for a stack to become stable (no longer _IN_PROGRESS), returning it
99
- */
100
- export declare function stabilizeStack(cfn: ICloudFormationClient, ioHelper: IoHelper, stackName: string): Promise<CloudFormationStack | undefined>;
101
- /**
102
- * The set of (formal) parameters that have been declared in a template
103
- */
104
- export declare class TemplateParameters {
105
- private readonly params;
106
- static fromTemplate(template: Template): TemplateParameters;
107
- constructor(params: Record<string, TemplateParameter>);
108
- /**
109
- * Calculate stack parameters to pass from the given desired parameter values
110
- *
111
- * Will throw if parameters without a Default value or a Previous value are not
112
- * supplied.
113
- */
114
- supplyAll(updates: Record<string, string | undefined>): ParameterValues;
115
- /**
116
- * From the template, the given desired values and the current values, calculate the changes to the stack parameters
117
- *
118
- * Will take into account parameters already set on the template (will emit
119
- * 'UsePreviousValue: true' for those unless the value is changed), and will
120
- * throw if parameters without a Default value or a Previous value are not
121
- * supplied.
122
- */
123
- updateExisting(updates: Record<string, string | undefined>, previousValues: Record<string, string>): ParameterValues;
124
- }
125
- /**
126
- * The set of parameters we're going to pass to a Stack
127
- */
128
- export declare class ParameterValues {
129
- private readonly formalParams;
130
- readonly values: Record<string, string>;
131
- readonly apiParameters: Parameter[];
132
- constructor(formalParams: Record<string, TemplateParameter>, updates: Record<string, string | undefined>, previousValues?: Record<string, string>);
133
- /**
134
- * Whether this set of parameter updates will change the actual stack values
135
- */
136
- hasChanges(currentValues: Record<string, string>): ParameterChanges;
137
- }
138
- export type ParameterChanges = boolean | 'ssm';