aws-cdk 2.1005.0 → 2.1007.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 (178) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_LICENSES +86 -86
  3. package/build-info.json +2 -2
  4. package/db.json.gz +0 -0
  5. package/lib/api/aws-auth/awscli-compatible.js +9 -10
  6. package/lib/api/aws-auth/credential-plugins.js +6 -7
  7. package/lib/api/aws-auth/sdk-logger.js +3 -4
  8. package/lib/api/aws-auth/sdk-provider.js +11 -13
  9. package/lib/api/aws-auth/sdk.js +8 -9
  10. package/lib/api/aws-auth/tracing.js +3 -4
  11. package/lib/api/aws-auth/user-agent.js +4 -5
  12. package/lib/api/bootstrap/bootstrap-environment.d.ts +1 -1
  13. package/lib/api/bootstrap/bootstrap-environment.js +42 -46
  14. package/lib/api/bootstrap/bootstrap-props.d.ts +1 -1
  15. package/lib/api/bootstrap/bootstrap-props.js +1 -1
  16. package/lib/api/bootstrap/deploy-bootstrap.d.ts +1 -1
  17. package/lib/api/bootstrap/deploy-bootstrap.js +11 -14
  18. package/lib/api/{evaluate-cloudformation-template.d.ts → cloudformation/evaluate-cloudformation-template.d.ts} +4 -8
  19. package/lib/api/{evaluate-cloudformation-template.js → cloudformation/evaluate-cloudformation-template.js} +16 -25
  20. package/lib/api/cloudformation/index.d.ts +4 -0
  21. package/lib/api/cloudformation/index.js +21 -0
  22. package/lib/api/{deployments → cloudformation}/nested-stack-helpers.d.ts +3 -9
  23. package/lib/api/cloudformation/nested-stack-helpers.js +86 -0
  24. package/lib/api/cloudformation/stack-helpers.d.ts +88 -0
  25. package/lib/api/cloudformation/stack-helpers.js +158 -0
  26. package/lib/api/{util → cloudformation}/template-body-parameter.d.ts +3 -2
  27. package/lib/api/cloudformation/template-body-parameter.js +104 -0
  28. package/lib/api/context.js +3 -3
  29. package/lib/api/cxapp/cloud-assembly.d.ts +6 -4
  30. package/lib/api/cxapp/cloud-assembly.js +25 -26
  31. package/lib/api/cxapp/cloud-executable.d.ts +5 -0
  32. package/lib/api/cxapp/cloud-executable.js +9 -10
  33. package/lib/api/cxapp/environments.js +4 -4
  34. package/lib/api/cxapp/exec.d.ts +5 -4
  35. package/lib/api/cxapp/exec.js +76 -72
  36. package/lib/api/deployments/asset-publishing.d.ts +0 -2
  37. package/lib/api/deployments/asset-publishing.js +24 -31
  38. package/lib/api/deployments/assets.d.ts +1 -1
  39. package/lib/api/deployments/assets.js +12 -13
  40. package/lib/api/deployments/{cloudformation.d.ts → cfn-api.d.ts} +5 -102
  41. package/lib/api/deployments/cfn-api.js +438 -0
  42. package/lib/api/deployments/checks.d.ts +1 -1
  43. package/lib/api/deployments/checks.js +12 -13
  44. package/lib/api/deployments/deploy-stack.d.ts +2 -3
  45. package/lib/api/deployments/deploy-stack.js +34 -45
  46. package/lib/api/deployments/deployment-result.js +3 -3
  47. package/lib/api/deployments/deployments.d.ts +3 -3
  48. package/lib/api/deployments/deployments.js +35 -42
  49. package/lib/api/deployments/hotswap-deployments.d.ts +2 -2
  50. package/lib/api/deployments/hotswap-deployments.js +122 -69
  51. package/lib/api/deployments/index.d.ts +1 -2
  52. package/lib/api/deployments/index.js +2 -3
  53. package/lib/api/environment/environment-access.d.ts +2 -2
  54. package/lib/api/environment/environment-access.js +18 -20
  55. package/lib/api/environment/environment-resources.d.ts +1 -1
  56. package/lib/api/environment/environment-resources.js +17 -19
  57. package/lib/api/environment/index.d.ts +1 -0
  58. package/lib/api/environment/index.js +2 -1
  59. package/lib/api/environment/placeholders.js +23 -0
  60. package/lib/api/garbage-collection/garbage-collector.d.ts +1 -1
  61. package/lib/api/garbage-collection/garbage-collector.js +56 -66
  62. package/lib/api/garbage-collection/progress-printer.d.ts +1 -1
  63. package/lib/api/garbage-collection/progress-printer.js +7 -7
  64. package/lib/api/garbage-collection/stack-refresh.d.ts +1 -1
  65. package/lib/api/garbage-collection/stack-refresh.js +12 -15
  66. package/lib/api/hotswap/appsync-mapping-templates.d.ts +3 -3
  67. package/lib/api/hotswap/appsync-mapping-templates.js +25 -22
  68. package/lib/api/hotswap/code-build-projects.d.ts +3 -3
  69. package/lib/api/hotswap/code-build-projects.js +12 -7
  70. package/lib/api/hotswap/common.d.ts +13 -61
  71. package/lib/api/hotswap/common.js +40 -70
  72. package/lib/api/hotswap/ecs-services.d.ts +4 -4
  73. package/lib/api/hotswap/ecs-services.js +38 -21
  74. package/lib/api/hotswap/lambda-functions.d.ts +3 -3
  75. package/lib/api/hotswap/lambda-functions.js +23 -19
  76. package/lib/api/hotswap/s3-bucket-deployments.d.ts +3 -3
  77. package/lib/api/hotswap/s3-bucket-deployments.js +11 -7
  78. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +3 -3
  79. package/lib/api/hotswap/stepfunctions-state-machines.js +8 -4
  80. package/lib/api/logs/find-cloudwatch-logs.js +6 -7
  81. package/lib/api/logs/logs-monitor.js +5 -8
  82. package/lib/api/plugin/plugin.js +6 -10
  83. package/lib/api/resource-import/importer.d.ts +8 -8
  84. package/lib/api/resource-import/importer.js +27 -42
  85. package/lib/api/resource-import/migrator.d.ts +3 -3
  86. package/lib/api/resource-import/migrator.js +6 -6
  87. package/lib/api/settings.d.ts +0 -3
  88. package/lib/api/settings.js +4 -40
  89. package/lib/api/stack-events/stack-activity-monitor.d.ts +1 -1
  90. package/lib/api/stack-events/stack-activity-monitor.js +12 -15
  91. package/lib/api/stack-events/stack-event-poller.js +9 -10
  92. package/lib/api/toolkit-info.d.ts +2 -2
  93. package/lib/api/toolkit-info.js +20 -24
  94. package/lib/{tree.d.ts → api/tree.d.ts} +2 -2
  95. package/lib/api/tree.js +37 -0
  96. package/lib/api/util/rwlock.js +4 -4
  97. package/lib/api/work-graph/work-graph-builder.js +4 -4
  98. package/lib/api/work-graph/work-graph.d.ts +1 -1
  99. package/lib/api/work-graph/work-graph.js +13 -15
  100. package/lib/cli/activity-printer/base.d.ts +2 -2
  101. package/lib/cli/activity-printer/base.js +6 -8
  102. package/lib/cli/activity-printer/current.js +7 -11
  103. package/lib/cli/activity-printer/history.js +2 -3
  104. package/lib/cli/cdk-toolkit.d.ts +16 -19
  105. package/lib/cli/cdk-toolkit.js +118 -74
  106. package/lib/cli/ci-systems.js +2 -3
  107. package/lib/cli/cli-config.js +4 -4
  108. package/lib/cli/cli.js +49 -50
  109. package/lib/cli/convert-to-user-input.js +110 -111
  110. package/lib/{toolkit → cli/io-host}/cli-io-host.d.ts +6 -2
  111. package/lib/cli/io-host/cli-io-host.js +356 -0
  112. package/lib/cli/io-host/index.d.ts +1 -0
  113. package/lib/{toolkit/error.js → cli/io-host/index.js} +2 -2
  114. package/lib/cli/messages.d.ts +1 -1
  115. package/lib/cli/messages.js +2 -3
  116. package/lib/cli/pretty-print-error.d.ts +1 -0
  117. package/lib/cli/pretty-print-error.js +35 -0
  118. package/lib/cli/root-dir.js +4 -4
  119. package/lib/cli/user-configuration.js +57 -14
  120. package/lib/cli/util/npm.js +3 -3
  121. package/lib/cli/util/yargs-helpers.d.ts +1 -1
  122. package/lib/cli/util/yargs-helpers.js +3 -3
  123. package/lib/cli/version.js +4 -4
  124. package/lib/commands/context.js +7 -8
  125. package/lib/commands/diff.d.ts +1 -0
  126. package/lib/commands/diff.js +7 -0
  127. package/lib/commands/init/index.d.ts +1 -0
  128. package/lib/commands/init/index.js +18 -0
  129. package/lib/commands/init/init-hooks.js +63 -0
  130. package/lib/commands/init/init.js +435 -0
  131. package/lib/{os.js → commands/init/os.js} +4 -4
  132. package/lib/{list-stacks.d.ts → commands/list-stacks.d.ts} +1 -1
  133. package/lib/{list-stacks.js → commands/list-stacks.js} +2 -2
  134. package/lib/commands/migrate.js +29 -32
  135. package/lib/context-providers/ami.d.ts +3 -1
  136. package/lib/context-providers/ami.js +8 -8
  137. package/lib/context-providers/availability-zones.d.ts +3 -1
  138. package/lib/context-providers/availability-zones.js +4 -4
  139. package/lib/context-providers/cc-api-provider.d.ts +8 -12
  140. package/lib/context-providers/cc-api-provider.js +94 -66
  141. package/lib/context-providers/endpoint-service-availability-zones.d.ts +3 -1
  142. package/lib/context-providers/endpoint-service-availability-zones.js +6 -6
  143. package/lib/context-providers/hosted-zones.d.ts +3 -1
  144. package/lib/context-providers/hosted-zones.js +11 -11
  145. package/lib/context-providers/index.d.ts +19 -5
  146. package/lib/context-providers/index.js +35 -17
  147. package/lib/context-providers/keys.d.ts +3 -1
  148. package/lib/context-providers/keys.js +8 -8
  149. package/lib/context-providers/load-balancers.js +15 -18
  150. package/lib/context-providers/security-groups.js +10 -12
  151. package/lib/context-providers/ssm-parameters.d.ts +3 -1
  152. package/lib/context-providers/ssm-parameters.js +7 -7
  153. package/lib/context-providers/vpcs.d.ts +3 -1
  154. package/lib/context-providers/vpcs.js +14 -15
  155. package/lib/index.js +124098 -123198
  156. package/lib/init-templates/.init-version.json +1 -1
  157. package/lib/init-templates/.recommended-feature-flags.json +3 -1
  158. package/lib/legacy-exports-source.d.ts +4 -5
  159. package/lib/legacy-exports-source.js +6 -7
  160. package/lib/logging.js +2 -2
  161. package/lib/notices.d.ts +1 -1
  162. package/lib/notices.js +26 -32
  163. package/package.json +29 -29
  164. package/lib/api/deployments/cloudformation.js +0 -597
  165. package/lib/api/deployments/nested-stack-helpers.js +0 -88
  166. package/lib/api/util/placeholders.js +0 -24
  167. package/lib/api/util/template-body-parameter.js +0 -103
  168. package/lib/diff.d.ts +0 -28
  169. package/lib/diff.js +0 -165
  170. package/lib/init-hooks.js +0 -63
  171. package/lib/init.js +0 -437
  172. package/lib/toolkit/cli-io-host.js +0 -353
  173. package/lib/toolkit/error.d.ts +0 -1
  174. package/lib/tree.js +0 -40
  175. /package/lib/api/{util → environment}/placeholders.d.ts +0 -0
  176. /package/lib/{init-hooks.d.ts → commands/init/init-hooks.d.ts} +0 -0
  177. /package/lib/{init.d.ts → commands/init/init.d.ts} +0 -0
  178. /package/lib/{os.d.ts → commands/init/os.d.ts} +0 -0
@@ -6,8 +6,8 @@ const path = require("path");
6
6
  const cxschema = require("@aws-cdk/cloud-assembly-schema");
7
7
  const cxapi = require("@aws-cdk/cx-api");
8
8
  const chalk = require("chalk");
9
- const messages_1 = require("../../cli/messages");
10
- const error_1 = require("../../toolkit/error");
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
11
  /**
12
12
  * Take the metadata assets from the given stack and add them to the given asset manifest
13
13
  *
@@ -23,7 +23,7 @@ async function addMetadataAssetsToManifest(ioHelper, stack, assetManifest, envRe
23
23
  const toolkitInfo = await envResources.lookupToolkit();
24
24
  if (!toolkitInfo.found) {
25
25
  // eslint-disable-next-line max-len
26
- throw new error_1.ToolkitError(`This stack uses assets, so the toolkit stack must be deployed to the environment (Run "${chalk.blue('cdk bootstrap ' + stack.environment.name)}")`);
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
27
  }
28
28
  const params = {};
29
29
  for (const asset of assets) {
@@ -31,12 +31,12 @@ async function addMetadataAssetsToManifest(ioHelper, stack, assetManifest, envRe
31
31
  // minimatch so we can support globs. Maybe take up during artifact refactoring.
32
32
  const reuseAsset = reuse.indexOf(asset.id) > -1;
33
33
  if (reuseAsset) {
34
- await ioHelper.notify((0, messages_1.debug)(`Reusing asset ${asset.id}: ${JSON.stringify(asset)}`));
34
+ await ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_DEBUG.msg(`Reusing asset ${asset.id}: ${JSON.stringify(asset)}`));
35
35
  continue;
36
36
  }
37
- await ioHelper.notify((0, messages_1.debug)(`Preparing asset ${asset.id}: ${JSON.stringify(asset)}`));
37
+ await ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_DEBUG.msg(`Preparing asset ${asset.id}: ${JSON.stringify(asset)}`));
38
38
  if (!stack.assembly) {
39
- throw new error_1.ToolkitError('Unexpected: stack assembly is required in order to find assets in assembly directory');
39
+ throw new api_1.ToolkitError('Unexpected: stack assembly is required in order to find assets in assembly directory');
40
40
  }
41
41
  Object.assign(params, await prepareAsset(ioHelper, asset, assetManifest, envResources, toolkitInfo));
42
42
  }
@@ -52,7 +52,7 @@ async function prepareAsset(ioHelper, asset, assetManifest, envResources, toolki
52
52
  return prepareDockerImageAsset(asset, assetManifest, envResources);
53
53
  default:
54
54
  // eslint-disable-next-line max-len
55
- throw new error_1.ToolkitError(`Unsupported packaging type: ${asset.packaging}. You might need to upgrade your aws-cdk toolkit to support this asset type.`);
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
56
  }
57
57
  }
58
58
  async function prepareFileAsset(ioHelper, asset, assetManifest, toolkitInfo, packaging) {
@@ -62,7 +62,7 @@ async function prepareFileAsset(ioHelper, asset, assetManifest, toolkitInfo, pac
62
62
  const s3Prefix = asset.id === asset.sourceHash ? 'assets/' : `assets/${asset.id}/`;
63
63
  const key = `${s3Prefix}${baseName}`;
64
64
  const s3url = `s3://${toolkitInfo.bucketName}/${key}`;
65
- await ioHelper.notify((0, messages_1.debug)(`Storing asset ${asset.path} at ${s3url}`));
65
+ await ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_DEBUG.msg(`Storing asset ${asset.path} at ${s3url}`));
66
66
  assetManifest.addFileAsset(asset.sourceHash, {
67
67
  path: asset.path,
68
68
  packaging,
@@ -77,18 +77,17 @@ async function prepareFileAsset(ioHelper, asset, assetManifest, toolkitInfo, pac
77
77
  };
78
78
  }
79
79
  async function prepareDockerImageAsset(asset, assetManifest, envResources) {
80
- var _a, _b;
81
80
  // Pre-1.21.0, repositoryName can be specified by the user or can be left out, in which case we make
82
81
  // a per-asset repository which will get adopted and cleaned up along with the stack.
83
82
  // Post-1.21.0, repositoryName will always be specified and it will be a shared repository between
84
83
  // all assets, and asset will have imageTag specified as well. Validate the combination.
85
84
  if (!asset.imageNameParameter && (!asset.repositoryName || !asset.imageTag)) {
86
- throw new error_1.ToolkitError('Invalid Docker image asset configuration: "repositoryName" and "imageTag" are required when "imageNameParameter" is left out');
85
+ throw new api_1.ToolkitError('Invalid Docker image asset configuration: "repositoryName" and "imageTag" are required when "imageNameParameter" is left out');
87
86
  }
88
- const repositoryName = (_a = asset.repositoryName) !== null && _a !== void 0 ? _a : 'cdk/' + asset.id.replace(/[:/]/g, '-').toLowerCase();
87
+ const repositoryName = asset.repositoryName ?? 'cdk/' + asset.id.replace(/[:/]/g, '-').toLowerCase();
89
88
  // Make sure the repository exists, since the 'cdk-assets' tool will not create it for us.
90
89
  const { repositoryUri } = await envResources.prepareEcrRepository(repositoryName);
91
- const imageTag = (_b = asset.imageTag) !== null && _b !== void 0 ? _b : asset.sourceHash;
90
+ const imageTag = asset.imageTag ?? asset.sourceHash;
92
91
  assetManifest.addDockerImageAsset(asset.sourceHash, {
93
92
  directory: asset.path,
94
93
  dockerBuildArgs: asset.buildArgs,
@@ -107,4 +106,4 @@ async function prepareDockerImageAsset(asset, assetManifest, envResources) {
107
106
  }
108
107
  return { [asset.imageNameParameter]: `${repositoryUri}:${imageTag}` };
109
108
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXNzZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0JBLGtFQXlDQztBQTNERCxtQ0FBbUM7QUFDbkMsNkJBQTZCO0FBQzdCLDJEQUEyRDtBQUMzRCx5Q0FBeUM7QUFDekMsK0JBQStCO0FBRy9CLGlEQUEyQztBQUMzQywrQ0FBbUQ7QUFJbkQ7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsMkJBQTJCLENBQy9DLFFBQWtCLEVBQ2xCLEtBQXdDLEVBQ3hDLGFBQW1DLEVBQ25DLFlBQWtDLEVBQ2xDLEtBQWdCO0lBRWhCLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3BCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFFNUIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsbUNBQW1DO1FBQ25DLE1BQU0sSUFBSSxvQkFBWSxDQUFDLDBGQUEwRixLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9LLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBMkIsRUFBRSxDQUFDO0lBRTFDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsK0ZBQStGO1FBQy9GLGdGQUFnRjtRQUNoRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVoRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxRQUFRLENB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QUFjLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDOUIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLE1BQU07UUFDL0IsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJO1FBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztRQUM5QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDeEIsYUFBYSxFQUFFLEtBQUssQ0FBQyxPQUFPO0tBQzdCLEVBQUU7UUFDRCxjQUFjO1FBQ2QsUUFBUTtLQUNULENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM5QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRSxHQUFHLGFBQWEsSUFBSSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHR5cGUgeyBBc3NldE1hbmlmZXN0QnVpbGRlciB9IGZyb20gJy4vYXNzZXQtbWFuaWZlc3QtYnVpbGRlcic7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vQGF3cy1jZGsvdG1wLXRvb2xraXQtaGVscGVycy9zcmMvYXBpL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuLi8uLi9jbGkvbWVzc2FnZXMnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC9lcnJvcic7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50UmVzb3VyY2VzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHR5cGUgeyBUb29sa2l0SW5mbyB9IGZyb20gJy4uL3Rvb2xraXQtaW5mbyc7XG5cbi8qKlxuICogVGFrZSB0aGUgbWV0YWRhdGEgYXNzZXRzIGZyb20gdGhlIGdpdmVuIHN0YWNrIGFuZCBhZGQgdGhlbSB0byB0aGUgZ2l2ZW4gYXNzZXQgbWFuaWZlc3RcbiAqXG4gKiBSZXR1cm5zIHRoZSBDbG91ZEZvcm1hdGlvbiBwYXJhbWV0ZXJzIHRoYXQgbmVlZCB0byBiZSBzZW50IHRvIHRoZSB0ZW1wbGF0ZSB0b1xuICogcGFzcyBBc3NldCBjb29yZGluYXRlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZE1ldGFkYXRhQXNzZXRzVG9NYW5pZmVzdChcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBzdGFjazogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LFxuICBhc3NldE1hbmlmZXN0OiBBc3NldE1hbmlmZXN0QnVpbGRlcixcbiAgZW52UmVzb3VyY2VzOiBFbnZpcm9ubWVudFJlc291cmNlcyxcbiAgcmV1c2U/OiBzdHJpbmdbXSxcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICByZXVzZSA9IHJldXNlIHx8IFtdO1xuICBjb25zdCBhc3NldHMgPSBzdGFjay5hc3NldHM7XG5cbiAgaWYgKGFzc2V0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCB0b29sa2l0SW5mbyA9IGF3YWl0IGVudlJlc291cmNlcy5sb29rdXBUb29sa2l0KCk7XG4gIGlmICghdG9vbGtpdEluZm8uZm91bmQpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFRoaXMgc3RhY2sgdXNlcyBhc3NldHMsIHNvIHRoZSB0b29sa2l0IHN0YWNrIG11c3QgYmUgZGVwbG95ZWQgdG8gdGhlIGVudmlyb25tZW50IChSdW4gXCIke2NoYWxrLmJsdWUoJ2NkayBib290c3RyYXAgJyArIHN0YWNrLmVudmlyb25tZW50IS5uYW1lKX1cIilgKTtcbiAgfVxuXG4gIGNvbnN0IHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgYXNzZXQgb2YgYXNzZXRzKSB7XG4gICAgLy8gRklYTUU6IFNob3VsZCBoYXZlIGV4Y2x1ZGVkIGJ5IGNvbnN0cnVjdCBwYXRoIGhlcmUgaW5zdGVhZCBvZiBieSB1bmlxdWUgSUQsIHByZWZlcmFibHkgdXNpbmdcbiAgICAvLyBtaW5pbWF0Y2ggc28gd2UgY2FuIHN1cHBvcnQgZ2xvYnMuIE1heWJlIHRha2UgdXAgZHVyaW5nIGFydGlmYWN0IHJlZmFjdG9yaW5nLlxuICAgIGNvbnN0IHJldXNlQXNzZXQgPSByZXVzZS5pbmRleE9mKGFzc2V0LmlkKSA+IC0xO1xuXG4gICAgaWYgKHJldXNlQXNzZXQpIHtcbiAgICAgIGF3YWl0IGlvSGVscGVyLm5vdGlmeShkZWJ1ZyhgUmV1c2luZyBhc3NldCAke2Fzc2V0LmlkfTogJHtKU09OLnN0cmluZ2lmeShhc3NldCl9YCkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgYXdhaXQgaW9IZWxwZXIubm90aWZ5KGRlYnVnKGBQcmVwYXJpbmcgYXNzZXQgJHthc3NldC5pZH06ICR7SlNPTi5zdHJpbmdpZnkoYXNzZXQpfWApKTtcbiAgICBpZiAoIXN0YWNrLmFzc2VtYmx5KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdVbmV4cGVjdGVkOiBzdGFjayBhc3NlbWJseSBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBmaW5kIGFzc2V0cyBpbiBhc3NlbWJseSBkaXJlY3RvcnknKTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgYXdhaXQgcHJlcGFyZUFzc2V0KGlvSGVscGVyLCBhc3NldCwgYXNzZXRNYW5pZmVzdCwgZW52UmVzb3VyY2VzLCB0b29sa2l0SW5mbykpO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVBc3NldChcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBhc3NldDogY3hzY2hlbWEuQXNzZXRNZXRhZGF0YUVudHJ5LFxuICBhc3NldE1hbmlmZXN0OiBBc3NldE1hbmlmZXN0QnVpbGRlcixcbiAgZW52UmVzb3VyY2VzOiBFbnZpcm9ubWVudFJlc291cmNlcyxcbiAgdG9vbGtpdEluZm86IFRvb2xraXRJbmZvLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHN3aXRjaCAoYXNzZXQucGFja2FnaW5nKSB7XG4gICAgY2FzZSAnemlwJzpcbiAgICBjYXNlICdmaWxlJzpcbiAgICAgIHJldHVybiBwcmVwYXJlRmlsZUFzc2V0KFxuICAgICAgICBpb0hlbHBlcixcbiAgICAgICAgYXNzZXQsXG4gICAgICAgIGFzc2V0TWFuaWZlc3QsXG4gICAgICAgIHRvb2xraXRJbmZvLFxuICAgICAgICBhc3NldC5wYWNrYWdpbmcgPT09ICd6aXAnID8gY3hzY2hlbWEuRmlsZUFzc2V0UGFja2FnaW5nLlpJUF9ESVJFQ1RPUlkgOiBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcuRklMRSk7XG4gICAgY2FzZSAnY29udGFpbmVyLWltYWdlJzpcbiAgICAgIHJldHVybiBwcmVwYXJlRG9ja2VySW1hZ2VBc3NldChhc3NldCwgYXNzZXRNYW5pZmVzdCwgZW52UmVzb3VyY2VzKTtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFVuc3VwcG9ydGVkIHBhY2thZ2luZyB0eXBlOiAkeyhhc3NldCBhcyBhbnkpLnBhY2thZ2luZ30uIFlvdSBtaWdodCBuZWVkIHRvIHVwZ3JhZGUgeW91ciBhd3MtY2RrIHRvb2xraXQgdG8gc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUuYCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUZpbGVBc3NldChcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBhc3NldDogY3hzY2hlbWEuRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSxcbiAgYXNzZXRNYW5pZmVzdDogQXNzZXRNYW5pZmVzdEJ1aWxkZXIsXG4gIHRvb2xraXRJbmZvOiBUb29sa2l0SW5mbyxcbiAgcGFja2FnaW5nOiBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcsXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgY29uc3QgZXh0ZW5zaW9uID0gcGFja2FnaW5nID09PSBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcuWklQX0RJUkVDVE9SWSA/ICcuemlwJyA6IHBhdGguZXh0bmFtZShhc3NldC5wYXRoKTtcbiAgY29uc3QgYmFzZU5hbWUgPSBgJHthc3NldC5zb3VyY2VIYXNofSR7ZXh0ZW5zaW9ufWA7XG4gIC8vIFNpbXBsaWZ5IGtleTogYXNzZXRzL2FiY2RlZi9hYmNkZWYuemlwIGlzIGtpbmRhIHNpbGx5IGFuZCB1bm5lY2Vzc2FyeSwgc28gaWYgdGhleSdyZSB0aGUgc2FtZSBqdXN0IHBpY2sgb25lIGNvbXBvbmVudC5cbiAgY29uc3QgczNQcmVmaXggPSBhc3NldC5pZCA9PT0gYXNzZXQuc291cmNlSGFzaCA/ICdhc3NldHMvJyA6IGBhc3NldHMvJHthc3NldC5pZH0vYDtcbiAgY29uc3Qga2V5ID0gYCR7czNQcmVmaXh9JHtiYXNlTmFtZX1gO1xuICBjb25zdCBzM3VybCA9IGBzMzovLyR7dG9vbGtpdEluZm8uYnVja2V0TmFtZX0vJHtrZXl9YDtcblxuICBhd2FpdCBpb0hlbHBlci5ub3RpZnkoZGVidWcoYFN0b3JpbmcgYXNzZXQgJHthc3NldC5wYXRofSBhdCAke3MzdXJsfWApKTtcblxuICBhc3NldE1hbmlmZXN0LmFkZEZpbGVBc3NldChhc3NldC5zb3VyY2VIYXNoLCB7XG4gICAgcGF0aDogYXNzZXQucGF0aCxcbiAgICBwYWNrYWdpbmcsXG4gIH0sIHtcbiAgICBidWNrZXROYW1lOiB0b29sa2l0SW5mby5idWNrZXROYW1lLFxuICAgIG9iamVjdEtleToga2V5LFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIFthc3NldC5zM0J1Y2tldFBhcmFtZXRlcl06IHRvb2xraXRJbmZvLmJ1Y2tldE5hbWUsXG4gICAgW2Fzc2V0LnMzS2V5UGFyYW1ldGVyXTogYCR7czNQcmVmaXh9JHtjeGFwaS5BU1NFVF9QUkVGSVhfU0VQQVJBVE9SfSR7YmFzZU5hbWV9YCxcbiAgICBbYXNzZXQuYXJ0aWZhY3RIYXNoUGFyYW1ldGVyXTogYXNzZXQuc291cmNlSGFzaCxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZURvY2tlckltYWdlQXNzZXQoXG4gIGFzc2V0OiBjeHNjaGVtYS5Db250YWluZXJJbWFnZUFzc2V0TWV0YWRhdGFFbnRyeSxcbiAgYXNzZXRNYW5pZmVzdDogQXNzZXRNYW5pZmVzdEJ1aWxkZXIsXG4gIGVudlJlc291cmNlczogRW52aXJvbm1lbnRSZXNvdXJjZXMpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgLy8gUHJlLTEuMjEuMCwgcmVwb3NpdG9yeU5hbWUgY2FuIGJlIHNwZWNpZmllZCBieSB0aGUgdXNlciBvciBjYW4gYmUgbGVmdCBvdXQsIGluIHdoaWNoIGNhc2Ugd2UgbWFrZVxuICAvLyBhIHBlci1hc3NldCByZXBvc2l0b3J5IHdoaWNoIHdpbGwgZ2V0IGFkb3B0ZWQgYW5kIGNsZWFuZWQgdXAgYWxvbmcgd2l0aCB0aGUgc3RhY2suXG4gIC8vIFBvc3QtMS4yMS4wLCByZXBvc2l0b3J5TmFtZSB3aWxsIGFsd2F5cyBiZSBzcGVjaWZpZWQgYW5kIGl0IHdpbGwgYmUgYSBzaGFyZWQgcmVwb3NpdG9yeSBiZXR3ZWVuXG4gIC8vIGFsbCBhc3NldHMsIGFuZCBhc3NldCB3aWxsIGhhdmUgaW1hZ2VUYWcgc3BlY2lmaWVkIGFzIHdlbGwuIFZhbGlkYXRlIHRoZSBjb21iaW5hdGlvbi5cbiAgaWYgKCFhc3NldC5pbWFnZU5hbWVQYXJhbWV0ZXIgJiYgKCFhc3NldC5yZXBvc2l0b3J5TmFtZSB8fCAhYXNzZXQuaW1hZ2VUYWcpKSB7XG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignSW52YWxpZCBEb2NrZXIgaW1hZ2UgYXNzZXQgY29uZmlndXJhdGlvbjogXCJyZXBvc2l0b3J5TmFtZVwiIGFuZCBcImltYWdlVGFnXCIgYXJlIHJlcXVpcmVkIHdoZW4gXCJpbWFnZU5hbWVQYXJhbWV0ZXJcIiBpcyBsZWZ0IG91dCcpO1xuICB9XG5cbiAgY29uc3QgcmVwb3NpdG9yeU5hbWUgPSBhc3NldC5yZXBvc2l0b3J5TmFtZSA/PyAnY2RrLycgKyBhc3NldC5pZC5yZXBsYWNlKC9bOi9dL2csICctJykudG9Mb3dlckNhc2UoKTtcblxuICAvLyBNYWtlIHN1cmUgdGhlIHJlcG9zaXRvcnkgZXhpc3RzLCBzaW5jZSB0aGUgJ2Nkay1hc3NldHMnIHRvb2wgd2lsbCBub3QgY3JlYXRlIGl0IGZvciB1cy5cbiAgY29uc3QgeyByZXBvc2l0b3J5VXJpIH0gPSBhd2FpdCBlbnZSZXNvdXJjZXMucHJlcGFyZUVjclJlcG9zaXRvcnkocmVwb3NpdG9yeU5hbWUpO1xuICBjb25zdCBpbWFnZVRhZyA9IGFzc2V0LmltYWdlVGFnID8/IGFzc2V0LnNvdXJjZUhhc2g7XG5cbiAgYXNzZXRNYW5pZmVzdC5hZGREb2NrZXJJbWFnZUFzc2V0KGFzc2V0LnNvdXJjZUhhc2gsIHtcbiAgICBkaXJlY3Rvcnk6IGFzc2V0LnBhdGgsXG4gICAgZG9ja2VyQnVpbGRBcmdzOiBhc3NldC5idWlsZEFyZ3MsXG4gICAgZG9ja2VyQnVpbGRTc2g6IGFzc2V0LmJ1aWxkU3NoLFxuICAgIGRvY2tlckJ1aWxkVGFyZ2V0OiBhc3NldC50YXJnZXQsXG4gICAgZG9ja2VyRmlsZTogYXNzZXQuZmlsZSxcbiAgICBuZXR3b3JrTW9kZTogYXNzZXQubmV0d29ya01vZGUsXG4gICAgcGxhdGZvcm06IGFzc2V0LnBsYXRmb3JtLFxuICAgIGRvY2tlck91dHB1dHM6IGFzc2V0Lm91dHB1dHMsXG4gIH0sIHtcbiAgICByZXBvc2l0b3J5TmFtZSxcbiAgICBpbWFnZVRhZyxcbiAgfSk7XG5cbiAgaWYgKCFhc3NldC5pbWFnZU5hbWVQYXJhbWV0ZXIpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIHsgW2Fzc2V0LmltYWdlTmFtZVBhcmFtZXRlcl06IGAke3JlcG9zaXRvcnlVcml9OiR7aW1hZ2VUYWd9YCB9O1xufVxuIl19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXNzZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUJBLGtFQXlDQztBQTFERCxtQ0FBbUM7QUFDbkMsNkJBQTZCO0FBQzdCLDJEQUEyRDtBQUMzRCx5Q0FBeUM7QUFDekMsK0JBQStCO0FBRS9CLDBFQUFnRjtBQUNoRix5RkFBZ0c7QUFJaEc7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsMkJBQTJCLENBQy9DLFFBQWtCLEVBQ2xCLEtBQXdDLEVBQ3hDLGFBQW1DLEVBQ25DLFlBQWtDLEVBQ2xDLEtBQWdCO0lBRWhCLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3BCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFFNUIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsbUNBQW1DO1FBQ25DLE1BQU0sSUFBSSxrQkFBWSxDQUFDLDBGQUEwRixLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9LLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBMkIsRUFBRSxDQUFDO0lBRTFDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsK0ZBQStGO1FBQy9GLGdGQUFnRjtRQUNoRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVoRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxRQUFRLENB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ckIsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQ2hDLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUM5QixpQkFBaUIsRUFBRSxLQUFLLENBQUMsTUFBTTtRQUMvQixVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDdEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQzlCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixhQUFhLEVBQUUsS0FBSyxDQUFDLE9BQU87S0FDN0IsRUFBRTtRQUNELGNBQWM7UUFDZCxRQUFRO0tBQ1QsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsYUFBYSxJQUFJLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY3hzY2hlbWEgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgdHlwZSB7IEFzc2V0TWFuaWZlc3RCdWlsZGVyIH0gZnJvbSAnLi9hc3NldC1tYW5pZmVzdC1idWlsZGVyJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaSc7XG5pbXBvcnQgeyBJTywgdHlwZSBJb0hlbHBlciB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaS9pby9wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnRSZXNvdXJjZXMgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgdHlwZSB7IFRvb2xraXRJbmZvIH0gZnJvbSAnLi4vdG9vbGtpdC1pbmZvJztcblxuLyoqXG4gKiBUYWtlIHRoZSBtZXRhZGF0YSBhc3NldHMgZnJvbSB0aGUgZ2l2ZW4gc3RhY2sgYW5kIGFkZCB0aGVtIHRvIHRoZSBnaXZlbiBhc3NldCBtYW5pZmVzdFxuICpcbiAqIFJldHVybnMgdGhlIENsb3VkRm9ybWF0aW9uIHBhcmFtZXRlcnMgdGhhdCBuZWVkIHRvIGJlIHNlbnQgdG8gdGhlIHRlbXBsYXRlIHRvXG4gKiBwYXNzIEFzc2V0IGNvb3JkaW5hdGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkTWV0YWRhdGFBc3NldHNUb01hbmlmZXN0KFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gIHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsXG4gIGFzc2V0TWFuaWZlc3Q6IEFzc2V0TWFuaWZlc3RCdWlsZGVyLFxuICBlbnZSZXNvdXJjZXM6IEVudmlyb25tZW50UmVzb3VyY2VzLFxuICByZXVzZT86IHN0cmluZ1tdLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHJldXNlID0gcmV1c2UgfHwgW107XG4gIGNvbnN0IGFzc2V0cyA9IHN0YWNrLmFzc2V0cztcblxuICBpZiAoYXNzZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHRvb2xraXRJbmZvID0gYXdhaXQgZW52UmVzb3VyY2VzLmxvb2t1cFRvb2xraXQoKTtcbiAgaWYgKCF0b29sa2l0SW5mby5mb3VuZCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgVGhpcyBzdGFjayB1c2VzIGFzc2V0cywgc28gdGhlIHRvb2xraXQgc3RhY2sgbXVzdCBiZSBkZXBsb3llZCB0byB0aGUgZW52aXJvbm1lbnQgKFJ1biBcIiR7Y2hhbGsuYmx1ZSgnY2RrIGJvb3RzdHJhcCAnICsgc3RhY2suZW52aXJvbm1lbnQhLm5hbWUpfVwiKWApO1xuICB9XG5cbiAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgZm9yIChjb25zdCBhc3NldCBvZiBhc3NldHMpIHtcbiAgICAvLyBGSVhNRTogU2hvdWxkIGhhdmUgZXhjbHVkZWQgYnkgY29uc3RydWN0IHBhdGggaGVyZSBpbnN0ZWFkIG9mIGJ5IHVuaXF1ZSBJRCwgcHJlZmVyYWJseSB1c2luZ1xuICAgIC8vIG1pbmltYXRjaCBzbyB3ZSBjYW4gc3VwcG9ydCBnbG9icy4gTWF5YmUgdGFrZSB1cCBkdXJpbmcgYXJ0aWZhY3QgcmVmYWN0b3JpbmcuXG4gICAgY29uc3QgcmV1c2VBc3NldCA9IHJldXNlLmluZGV4T2YoYXNzZXQuaWQpID4gLTE7XG5cbiAgICBpZiAocmV1c2VBc3NldCkge1xuICAgICAgYXdhaXQgaW9IZWxwZXIubm90aWZ5KElPLkRFRkFVTFRfVE9PTEtJVF9ERUJVRy5tc2coYFJldXNpbmcgYXNzZXQgJHthc3NldC5pZH06ICR7SlNPTi5zdHJpbmdpZnkoYXNzZXQpfWApKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGF3YWl0IGlvSGVscGVyLm5vdGlmeShJTy5ERUZBVUxUX1RPT0xLSVRfREVCVUcubXNnKGBQcmVwYXJpbmcgYXNzZXQgJHthc3NldC5pZH06ICR7SlNPTi5zdHJpbmdpZnkoYXNzZXQpfWApKTtcbiAgICBpZiAoIXN0YWNrLmFzc2VtYmx5KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdVbmV4cGVjdGVkOiBzdGFjayBhc3NlbWJseSBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBmaW5kIGFzc2V0cyBpbiBhc3NlbWJseSBkaXJlY3RvcnknKTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgYXdhaXQgcHJlcGFyZUFzc2V0KGlvSGVscGVyLCBhc3NldCwgYXNzZXRNYW5pZmVzdCwgZW52UmVzb3VyY2VzLCB0b29sa2l0SW5mbykpO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVBc3NldChcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBhc3NldDogY3hzY2hlbWEuQXNzZXRNZXRhZGF0YUVudHJ5LFxuICBhc3NldE1hbmlmZXN0OiBBc3NldE1hbmlmZXN0QnVpbGRlcixcbiAgZW52UmVzb3VyY2VzOiBFbnZpcm9ubWVudFJlc291cmNlcyxcbiAgdG9vbGtpdEluZm86IFRvb2xraXRJbmZvLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHN3aXRjaCAoYXNzZXQucGFja2FnaW5nKSB7XG4gICAgY2FzZSAnemlwJzpcbiAgICBjYXNlICdmaWxlJzpcbiAgICAgIHJldHVybiBwcmVwYXJlRmlsZUFzc2V0KFxuICAgICAgICBpb0hlbHBlcixcbiAgICAgICAgYXNzZXQsXG4gICAgICAgIGFzc2V0TWFuaWZlc3QsXG4gICAgICAgIHRvb2xraXRJbmZvLFxuICAgICAgICBhc3NldC5wYWNrYWdpbmcgPT09ICd6aXAnID8gY3hzY2hlbWEuRmlsZUFzc2V0UGFja2FnaW5nLlpJUF9ESVJFQ1RPUlkgOiBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcuRklMRSk7XG4gICAgY2FzZSAnY29udGFpbmVyLWltYWdlJzpcbiAgICAgIHJldHVybiBwcmVwYXJlRG9ja2VySW1hZ2VBc3NldChhc3NldCwgYXNzZXRNYW5pZmVzdCwgZW52UmVzb3VyY2VzKTtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFVuc3VwcG9ydGVkIHBhY2thZ2luZyB0eXBlOiAkeyhhc3NldCBhcyBhbnkpLnBhY2thZ2luZ30uIFlvdSBtaWdodCBuZWVkIHRvIHVwZ3JhZGUgeW91ciBhd3MtY2RrIHRvb2xraXQgdG8gc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUuYCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUZpbGVBc3NldChcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBhc3NldDogY3hzY2hlbWEuRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSxcbiAgYXNzZXRNYW5pZmVzdDogQXNzZXRNYW5pZmVzdEJ1aWxkZXIsXG4gIHRvb2xraXRJbmZvOiBUb29sa2l0SW5mbyxcbiAgcGFja2FnaW5nOiBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcsXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgY29uc3QgZXh0ZW5zaW9uID0gcGFja2FnaW5nID09PSBjeHNjaGVtYS5GaWxlQXNzZXRQYWNrYWdpbmcuWklQX0RJUkVDVE9SWSA/ICcuemlwJyA6IHBhdGguZXh0bmFtZShhc3NldC5wYXRoKTtcbiAgY29uc3QgYmFzZU5hbWUgPSBgJHthc3NldC5zb3VyY2VIYXNofSR7ZXh0ZW5zaW9ufWA7XG4gIC8vIFNpbXBsaWZ5IGtleTogYXNzZXRzL2FiY2RlZi9hYmNkZWYuemlwIGlzIGtpbmRhIHNpbGx5IGFuZCB1bm5lY2Vzc2FyeSwgc28gaWYgdGhleSdyZSB0aGUgc2FtZSBqdXN0IHBpY2sgb25lIGNvbXBvbmVudC5cbiAgY29uc3QgczNQcmVmaXggPSBhc3NldC5pZCA9PT0gYXNzZXQuc291cmNlSGFzaCA/ICdhc3NldHMvJyA6IGBhc3NldHMvJHthc3NldC5pZH0vYDtcbiAgY29uc3Qga2V5ID0gYCR7czNQcmVmaXh9JHtiYXNlTmFtZX1gO1xuICBjb25zdCBzM3VybCA9IGBzMzovLyR7dG9vbGtpdEluZm8uYnVja2V0TmFtZX0vJHtrZXl9YDtcblxuICBhd2FpdCBpb0hlbHBlci5ub3RpZnkoSU8uREVGQVVMVF9UT09MS0lUX0RFQlVHLm1zZyhgU3RvcmluZyBhc3NldCAke2Fzc2V0LnBhdGh9IGF0ICR7czN1cmx9YCkpO1xuXG4gIGFzc2V0TWFuaWZlc3QuYWRkRmlsZUFzc2V0KGFzc2V0LnNvdXJjZUhhc2gsIHtcbiAgICBwYXRoOiBhc3NldC5wYXRoLFxuICAgIHBhY2thZ2luZyxcbiAgfSwge1xuICAgIGJ1Y2tldE5hbWU6IHRvb2xraXRJbmZvLmJ1Y2tldE5hbWUsXG4gICAgb2JqZWN0S2V5OiBrZXksXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgW2Fzc2V0LnMzQnVja2V0UGFyYW1ldGVyXTogdG9vbGtpdEluZm8uYnVja2V0TmFtZSxcbiAgICBbYXNzZXQuczNLZXlQYXJhbWV0ZXJdOiBgJHtzM1ByZWZpeH0ke2N4YXBpLkFTU0VUX1BSRUZJWF9TRVBBUkFUT1J9JHtiYXNlTmFtZX1gLFxuICAgIFthc3NldC5hcnRpZmFjdEhhc2hQYXJhbWV0ZXJdOiBhc3NldC5zb3VyY2VIYXNoLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlRG9ja2VySW1hZ2VBc3NldChcbiAgYXNzZXQ6IGN4c2NoZW1hLkNvbnRhaW5lckltYWdlQXNzZXRNZXRhZGF0YUVudHJ5LFxuICBhc3NldE1hbmlmZXN0OiBBc3NldE1hbmlmZXN0QnVpbGRlcixcbiAgZW52UmVzb3VyY2VzOiBFbnZpcm9ubWVudFJlc291cmNlcyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICAvLyBQcmUtMS4yMS4wLCByZXBvc2l0b3J5TmFtZSBjYW4gYmUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyIG9yIGNhbiBiZSBsZWZ0IG91dCwgaW4gd2hpY2ggY2FzZSB3ZSBtYWtlXG4gIC8vIGEgcGVyLWFzc2V0IHJlcG9zaXRvcnkgd2hpY2ggd2lsbCBnZXQgYWRvcHRlZCBhbmQgY2xlYW5lZCB1cCBhbG9uZyB3aXRoIHRoZSBzdGFjay5cbiAgLy8gUG9zdC0xLjIxLjAsIHJlcG9zaXRvcnlOYW1lIHdpbGwgYWx3YXlzIGJlIHNwZWNpZmllZCBhbmQgaXQgd2lsbCBiZSBhIHNoYXJlZCByZXBvc2l0b3J5IGJldHdlZW5cbiAgLy8gYWxsIGFzc2V0cywgYW5kIGFzc2V0IHdpbGwgaGF2ZSBpbWFnZVRhZyBzcGVjaWZpZWQgYXMgd2VsbC4gVmFsaWRhdGUgdGhlIGNvbWJpbmF0aW9uLlxuICBpZiAoIWFzc2V0LmltYWdlTmFtZVBhcmFtZXRlciAmJiAoIWFzc2V0LnJlcG9zaXRvcnlOYW1lIHx8ICFhc3NldC5pbWFnZVRhZykpIHtcbiAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdJbnZhbGlkIERvY2tlciBpbWFnZSBhc3NldCBjb25maWd1cmF0aW9uOiBcInJlcG9zaXRvcnlOYW1lXCIgYW5kIFwiaW1hZ2VUYWdcIiBhcmUgcmVxdWlyZWQgd2hlbiBcImltYWdlTmFtZVBhcmFtZXRlclwiIGlzIGxlZnQgb3V0Jyk7XG4gIH1cblxuICBjb25zdCByZXBvc2l0b3J5TmFtZSA9IGFzc2V0LnJlcG9zaXRvcnlOYW1lID8/ICdjZGsvJyArIGFzc2V0LmlkLnJlcGxhY2UoL1s6L10vZywgJy0nKS50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIE1ha2Ugc3VyZSB0aGUgcmVwb3NpdG9yeSBleGlzdHMsIHNpbmNlIHRoZSAnY2RrLWFzc2V0cycgdG9vbCB3aWxsIG5vdCBjcmVhdGUgaXQgZm9yIHVzLlxuICBjb25zdCB7IHJlcG9zaXRvcnlVcmkgfSA9IGF3YWl0IGVudlJlc291cmNlcy5wcmVwYXJlRWNyUmVwb3NpdG9yeShyZXBvc2l0b3J5TmFtZSk7XG4gIGNvbnN0IGltYWdlVGFnID0gYXNzZXQuaW1hZ2VUYWcgPz8gYXNzZXQuc291cmNlSGFzaDtcblxuICBhc3NldE1hbmlmZXN0LmFkZERvY2tlckltYWdlQXNzZXQoYXNzZXQuc291cmNlSGFzaCwge1xuICAgIGRpcmVjdG9yeTogYXNzZXQucGF0aCxcbiAgICBkb2NrZXJCdWlsZEFyZ3M6IGFzc2V0LmJ1aWxkQXJncyxcbiAgICBkb2NrZXJCdWlsZFNzaDogYXNzZXQuYnVpbGRTc2gsXG4gICAgZG9ja2VyQnVpbGRUYXJnZXQ6IGFzc2V0LnRhcmdldCxcbiAgICBkb2NrZXJGaWxlOiBhc3NldC5maWxlLFxuICAgIG5ldHdvcmtNb2RlOiBhc3NldC5uZXR3b3JrTW9kZSxcbiAgICBwbGF0Zm9ybTogYXNzZXQucGxhdGZvcm0sXG4gICAgZG9ja2VyT3V0cHV0czogYXNzZXQub3V0cHV0cyxcbiAgfSwge1xuICAgIHJlcG9zaXRvcnlOYW1lLFxuICAgIGltYWdlVGFnLFxuICB9KTtcblxuICBpZiAoIWFzc2V0LmltYWdlTmFtZVBhcmFtZXRlcikge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICByZXR1cm4geyBbYXNzZXQuaW1hZ2VOYW1lUGFyYW1ldGVyXTogYCR7cmVwb3NpdG9yeVVyaX06JHtpbWFnZVRhZ31gIH07XG59XG4iXX0=
@@ -1,106 +1,11 @@
1
1
  import * as cxapi from '@aws-cdk/cx-api';
2
- import { type DescribeChangeSetCommandOutput, type Parameter, type ResourceIdentifierSummary, type ResourceToImport, type Stack, type Tag } from '@aws-sdk/client-cloudformation';
2
+ import type { DescribeChangeSetCommandOutput, Parameter, ResourceToImport } from '@aws-sdk/client-cloudformation';
3
3
  import type { Deployments } from './deployments';
4
- import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
4
+ import { type IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
5
5
  import type { ICloudFormationClient, SdkProvider } from '../aws-auth';
6
- import { StackStatus } from '../stack-events';
7
- import type { TemplateBodyParameter } from '../util/template-body-parameter';
8
- export type ResourcesToImport = ResourceToImport[];
9
- export type ResourceIdentifierSummaries = ResourceIdentifierSummary[];
10
- export type ResourceIdentifierProperties = Record<string, string>;
11
- export type Template = {
12
- Parameters?: Record<string, TemplateParameter>;
13
- [key: string]: any;
14
- };
15
- interface TemplateParameter {
16
- Type: string;
17
- Default?: any;
18
- Description?: string;
19
- [key: string]: any;
20
- }
21
- /**
22
- * Represents an (existing) Stack in CloudFormation
23
- *
24
- * Bundle and cache some information that we need during deployment (so we don't have to make
25
- * repeated calls to CloudFormation).
26
- */
27
- export declare class CloudFormationStack {
28
- private readonly cfn;
29
- readonly stackName: string;
30
- private readonly stack?;
31
- private readonly retrieveProcessedTemplate;
32
- static lookup(cfn: ICloudFormationClient, stackName: string, retrieveProcessedTemplate?: boolean): Promise<CloudFormationStack>;
33
- /**
34
- * Return a copy of the given stack that does not exist
35
- *
36
- * It's a little silly that it needs arguments to do that, but there we go.
37
- */
38
- static doesNotExist(cfn: ICloudFormationClient, stackName: string): CloudFormationStack;
39
- /**
40
- * From static information (for testing)
41
- */
42
- static fromStaticInformation(cfn: ICloudFormationClient, stackName: string, stack: Stack): CloudFormationStack;
43
- private _template;
44
- protected constructor(cfn: ICloudFormationClient, stackName: string, stack?: Stack | undefined, retrieveProcessedTemplate?: boolean);
45
- /**
46
- * Retrieve the stack's deployed template
47
- *
48
- * Cached, so will only be retrieved once. Will return an empty
49
- * structure if the stack does not exist.
50
- */
51
- template(): Promise<Template>;
52
- /**
53
- * Whether the stack exists
54
- */
55
- get exists(): boolean;
56
- /**
57
- * The stack's ID
58
- *
59
- * Throws if the stack doesn't exist.
60
- */
61
- get stackId(): string;
62
- /**
63
- * The stack's current outputs
64
- *
65
- * Empty object if the stack doesn't exist
66
- */
67
- get outputs(): Record<string, string>;
68
- /**
69
- * The stack's status
70
- *
71
- * Special status NOT_FOUND if the stack does not exist.
72
- */
73
- get stackStatus(): StackStatus;
74
- /**
75
- * The stack's current tags
76
- *
77
- * Empty list if the stack does not exist
78
- */
79
- get tags(): Tag[];
80
- /**
81
- * SNS Topic ARNs that will receive stack events.
82
- *
83
- * Empty list if the stack does not exist
84
- */
85
- get notificationArns(): string[];
86
- /**
87
- * Return the names of all current parameters to the stack
88
- *
89
- * Empty list if the stack does not exist.
90
- */
91
- get parameterNames(): string[];
92
- /**
93
- * Return the names and values of all current parameters to the stack
94
- *
95
- * Empty object if the stack does not exist.
96
- */
97
- get parameters(): Record<string, string>;
98
- /**
99
- * Return the termination protection of the stack
100
- */
101
- get terminationProtection(): boolean | undefined;
102
- private assertExists;
103
- }
6
+ import type { Template, TemplateBodyParameter, TemplateParameter } from '../cloudformation';
7
+ import { CloudFormationStack } from '../cloudformation';
8
+ import type { ResourcesToImport } from '../resource-import';
104
9
  /**
105
10
  * Waits for a ChangeSet to be available for triggering a StackUpdate.
106
11
  *
@@ -123,7 +28,6 @@ export type PrepareChangeSetOptions = {
123
28
  uuid: string;
124
29
  willExecute: boolean;
125
30
  sdkProvider: SdkProvider;
126
- stream: NodeJS.WritableStream;
127
31
  parameters: {
128
32
  [name: string]: string | undefined;
129
33
  };
@@ -232,4 +136,3 @@ export declare class ParameterValues {
232
136
  hasChanges(currentValues: Record<string, string>): ParameterChanges;
233
137
  }
234
138
  export type ParameterChanges = boolean | 'ssm';
235
- export {};