aws-cdk 2.1006.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_LICENSES +104 -86
  3. package/build-info.json +2 -2
  4. package/db.json.gz +0 -0
  5. package/lib/api/aws-auth.d.ts +1 -0
  6. package/lib/api/{logs/index.js → aws-auth.js} +2 -3
  7. package/lib/api/bootstrap.d.ts +1 -0
  8. package/lib/api/bootstrap.js +18 -0
  9. package/lib/api/cloud-assembly.d.ts +1 -0
  10. package/lib/api/cloud-assembly.js +18 -0
  11. package/lib/api/cloudformation.d.ts +1 -0
  12. package/lib/api/cloudformation.js +18 -0
  13. package/lib/api/context.d.ts +1 -40
  14. package/lib/api/context.js +16 -80
  15. package/lib/api/deployments.d.ts +1 -0
  16. package/lib/api/deployments.js +18 -0
  17. package/lib/api/environment.d.ts +1 -0
  18. package/lib/api/environment.js +18 -0
  19. package/lib/api/garbage-collection.d.ts +1 -0
  20. package/lib/api/garbage-collection.js +18 -0
  21. package/lib/api/hotswap.d.ts +1 -0
  22. package/lib/api/hotswap.js +18 -0
  23. package/lib/api/index.d.ts +5 -1
  24. package/lib/api/index.js +6 -2
  25. package/lib/api/logs-monitor.d.ts +1 -0
  26. package/lib/api/logs-monitor.js +18 -0
  27. package/lib/api/notices.d.ts +1 -0
  28. package/lib/api/notices.js +18 -0
  29. package/lib/api/plugin.d.ts +1 -0
  30. package/lib/api/{resource-import/index.js → plugin.js} +2 -3
  31. package/lib/api/resource-import.d.ts +1 -0
  32. package/lib/api/resource-import.js +18 -0
  33. package/lib/api/rwlock.d.ts +1 -0
  34. package/lib/api/{garbage-collection/index.js → rwlock.js} +2 -2
  35. package/lib/api/settings.d.ts +1 -26
  36. package/lib/api/settings.js +16 -103
  37. package/lib/api/stack-events.d.ts +1 -0
  38. package/lib/api/stack-events.js +18 -0
  39. package/lib/api/tags.d.ts +1 -9
  40. package/lib/api/tags.js +16 -8
  41. package/lib/api/toolkit-info.d.ts +1 -52
  42. package/lib/api/toolkit-info.js +16 -152
  43. package/lib/api/tree.d.ts +1 -31
  44. package/lib/api/tree.js +16 -35
  45. package/lib/api/work-graph.d.ts +1 -0
  46. package/lib/api/work-graph.js +18 -0
  47. package/lib/api-private.d.ts +3 -0
  48. package/lib/api-private.js +22 -0
  49. package/lib/cli/cdk-toolkit.d.ts +20 -16
  50. package/lib/cli/cdk-toolkit.js +102 -37
  51. package/lib/cli/cli-config.js +2 -2
  52. package/lib/cli/cli.d.ts +1 -1
  53. package/lib/cli/cli.js +22 -19
  54. package/lib/cli/io-host/cli-io-host.js +2 -2
  55. package/lib/cli/pretty-print-error.js +3 -1
  56. package/lib/cli/util/npm.d.ts +4 -1
  57. package/lib/cli/util/npm.js +25 -13
  58. package/lib/cli/version.d.ts +1 -1
  59. package/lib/cli/version.js +21 -25
  60. package/lib/commands/context.js +3 -2
  61. package/lib/commands/diff.d.ts +1 -50
  62. package/lib/commands/diff.js +5 -213
  63. package/lib/commands/init/init.js +3 -2
  64. package/lib/commands/list-stacks.js +4 -4
  65. package/lib/context-providers/ami.d.ts +1 -13
  66. package/lib/context-providers/ami.js +16 -48
  67. package/lib/context-providers/availability-zones.d.ts +1 -13
  68. package/lib/context-providers/availability-zones.js +16 -25
  69. package/lib/context-providers/cc-api-provider.d.ts +1 -30
  70. package/lib/context-providers/cc-api-provider.js +16 -136
  71. package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -13
  72. package/lib/context-providers/endpoint-service-availability-zones.js +16 -31
  73. package/lib/context-providers/hosted-zones.d.ts +1 -12
  74. package/lib/context-providers/hosted-zones.js +16 -65
  75. package/lib/context-providers/index.d.ts +1 -44
  76. package/lib/context-providers/index.js +15 -126
  77. package/lib/context-providers/keys.d.ts +1 -13
  78. package/lib/context-providers/keys.js +16 -50
  79. package/lib/context-providers/load-balancers.d.ts +1 -20
  80. package/lib/context-providers/load-balancers.js +16 -154
  81. package/lib/context-providers/security-groups.d.ts +1 -9
  82. package/lib/context-providers/security-groups.js +16 -66
  83. package/lib/context-providers/ssm-parameters.d.ts +1 -25
  84. package/lib/context-providers/ssm-parameters.js +16 -57
  85. package/lib/context-providers/vpcs.d.ts +1 -13
  86. package/lib/context-providers/vpcs.js +16 -285
  87. package/lib/{api/cxapp → cxapp}/cloud-assembly.d.ts +3 -59
  88. package/lib/cxapp/cloud-assembly.js +108 -0
  89. package/lib/{api/cxapp → cxapp}/cloud-executable.d.ts +10 -3
  90. package/lib/cxapp/cloud-executable.js +92 -0
  91. package/lib/{api/cxapp → cxapp}/environments.d.ts +1 -2
  92. package/lib/{api/cxapp → cxapp}/environments.js +2 -2
  93. package/lib/cxapp/exec.d.ts +14 -0
  94. package/lib/cxapp/exec.js +157 -0
  95. package/lib/cxapp/index.d.ts +4 -0
  96. package/lib/{api/bootstrap → cxapp}/index.js +5 -3
  97. package/lib/index.js +134493 -125222
  98. package/lib/init-templates/.init-version.json +1 -1
  99. package/lib/init-templates/.recommended-feature-flags.json +3 -1
  100. package/lib/legacy-aws-auth.d.ts +74 -0
  101. package/lib/legacy-aws-auth.js +40 -0
  102. package/lib/legacy-exports-source.d.ts +13 -18
  103. package/lib/legacy-exports-source.js +42 -49
  104. package/lib/legacy-exports.d.ts +3 -6
  105. package/lib/legacy-exports.js +5 -5
  106. package/lib/legacy-types.d.ts +31 -0
  107. package/lib/legacy-types.js +3 -0
  108. package/package.json +19 -18
  109. package/lib/api/aws-auth/account-cache.d.ts +0 -36
  110. package/lib/api/aws-auth/account-cache.js +0 -99
  111. package/lib/api/aws-auth/awscli-compatible.d.ts +0 -42
  112. package/lib/api/aws-auth/awscli-compatible.js +0 -263
  113. package/lib/api/aws-auth/cached.d.ts +0 -11
  114. package/lib/api/aws-auth/cached.js +0 -26
  115. package/lib/api/aws-auth/credential-plugins.d.ts +0 -36
  116. package/lib/api/aws-auth/credential-plugins.js +0 -152
  117. package/lib/api/aws-auth/index.d.ts +0 -3
  118. package/lib/api/aws-auth/index.js +0 -20
  119. package/lib/api/aws-auth/provider-caching.d.ts +0 -13
  120. package/lib/api/aws-auth/provider-caching.js +0 -24
  121. package/lib/api/aws-auth/sdk-logger.d.ts +0 -69
  122. package/lib/api/aws-auth/sdk-logger.js +0 -124
  123. package/lib/api/aws-auth/sdk-provider.d.ts +0 -207
  124. package/lib/api/aws-auth/sdk-provider.js +0 -357
  125. package/lib/api/aws-auth/sdk.d.ts +0 -229
  126. package/lib/api/aws-auth/sdk.js +0 -373
  127. package/lib/api/aws-auth/tracing.d.ts +0 -11
  128. package/lib/api/aws-auth/tracing.js +0 -60
  129. package/lib/api/aws-auth/user-agent.d.ts +0 -7
  130. package/lib/api/aws-auth/user-agent.js +0 -20
  131. package/lib/api/aws-auth/util.d.ts +0 -6
  132. package/lib/api/aws-auth/util.js +0 -23
  133. package/lib/api/bootstrap/bootstrap-environment.d.ts +0 -35
  134. package/lib/api/bootstrap/bootstrap-environment.js +0 -321
  135. package/lib/api/bootstrap/bootstrap-props.d.ts +0 -130
  136. package/lib/api/bootstrap/bootstrap-props.js +0 -14
  137. package/lib/api/bootstrap/deploy-bootstrap.d.ts +0 -39
  138. package/lib/api/bootstrap/deploy-bootstrap.js +0 -141
  139. package/lib/api/bootstrap/index.d.ts +0 -2
  140. package/lib/api/bootstrap/legacy-template.d.ts +0 -2
  141. package/lib/api/bootstrap/legacy-template.js +0 -82
  142. package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +0 -85
  143. package/lib/api/cloudformation/evaluate-cloudformation-template.js +0 -440
  144. package/lib/api/cloudformation/index.d.ts +0 -4
  145. package/lib/api/cloudformation/index.js +0 -21
  146. package/lib/api/cloudformation/nested-stack-helpers.d.ts +0 -25
  147. package/lib/api/cloudformation/nested-stack-helpers.js +0 -86
  148. package/lib/api/cloudformation/stack-helpers.d.ts +0 -96
  149. package/lib/api/cloudformation/stack-helpers.js +0 -158
  150. package/lib/api/cloudformation/template-body-parameter.d.ts +0 -22
  151. package/lib/api/cloudformation/template-body-parameter.js +0 -104
  152. package/lib/api/cxapp/cloud-assembly.js +0 -304
  153. package/lib/api/cxapp/cloud-executable.js +0 -89
  154. package/lib/api/cxapp/exec.d.ts +0 -56
  155. package/lib/api/cxapp/exec.js +0 -272
  156. package/lib/api/deployments/asset-manifest-builder.d.ts +0 -8
  157. package/lib/api/deployments/asset-manifest-builder.js +0 -35
  158. package/lib/api/deployments/asset-publishing.d.ts +0 -60
  159. package/lib/api/deployments/asset-publishing.js +0 -141
  160. package/lib/api/deployments/assets.d.ts +0 -11
  161. package/lib/api/deployments/assets.js +0 -109
  162. package/lib/api/deployments/cfn-api.d.ts +0 -138
  163. package/lib/api/deployments/cfn-api.js +0 -438
  164. package/lib/api/deployments/checks.d.ts +0 -9
  165. package/lib/api/deployments/checks.js +0 -72
  166. package/lib/api/deployments/deploy-stack.d.ts +0 -155
  167. package/lib/api/deployments/deploy-stack.js +0 -478
  168. package/lib/api/deployments/deployment-method.d.ts +0 -24
  169. package/lib/api/deployments/deployment-method.js +0 -3
  170. package/lib/api/deployments/deployment-result.d.ts +0 -21
  171. package/lib/api/deployments/deployment-result.js +0 -10
  172. package/lib/api/deployments/deployments.d.ts +0 -296
  173. package/lib/api/deployments/deployments.js +0 -331
  174. package/lib/api/deployments/hotswap-deployments.d.ts +0 -17
  175. package/lib/api/deployments/hotswap-deployments.js +0 -441
  176. package/lib/api/deployments/index.d.ts +0 -4
  177. package/lib/api/deployments/index.js +0 -21
  178. package/lib/api/environment/environment-access.d.ts +0 -140
  179. package/lib/api/environment/environment-access.js +0 -202
  180. package/lib/api/environment/environment-resources.d.ts +0 -75
  181. package/lib/api/environment/environment-resources.js +0 -207
  182. package/lib/api/environment/index.d.ts +0 -3
  183. package/lib/api/environment/index.js +0 -20
  184. package/lib/api/environment/placeholders.d.ts +0 -10
  185. package/lib/api/environment/placeholders.js +0 -23
  186. package/lib/api/garbage-collection/garbage-collector.d.ts +0 -158
  187. package/lib/api/garbage-collection/garbage-collector.js +0 -599
  188. package/lib/api/garbage-collection/index.d.ts +0 -1
  189. package/lib/api/garbage-collection/progress-printer.d.ts +0 -23
  190. package/lib/api/garbage-collection/progress-printer.js +0 -70
  191. package/lib/api/garbage-collection/stack-refresh.d.ts +0 -49
  192. package/lib/api/garbage-collection/stack-refresh.js +0 -151
  193. package/lib/api/hotswap/appsync-mapping-templates.d.ts +0 -4
  194. package/lib/api/hotswap/appsync-mapping-templates.js +0 -162
  195. package/lib/api/hotswap/code-build-projects.d.ts +0 -4
  196. package/lib/api/hotswap/code-build-projects.js +0 -62
  197. package/lib/api/hotswap/common.d.ts +0 -89
  198. package/lib/api/hotswap/common.js +0 -128
  199. package/lib/api/hotswap/ecs-services.d.ts +0 -4
  200. package/lib/api/hotswap/ecs-services.js +0 -159
  201. package/lib/api/hotswap/lambda-functions.d.ts +0 -4
  202. package/lib/api/hotswap/lambda-functions.js +0 -297
  203. package/lib/api/hotswap/s3-bucket-deployments.d.ts +0 -5
  204. package/lib/api/hotswap/s3-bucket-deployments.js +0 -117
  205. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -4
  206. package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
  207. package/lib/api/logs/find-cloudwatch-logs.d.ts +0 -25
  208. package/lib/api/logs/find-cloudwatch-logs.js +0 -95
  209. package/lib/api/logs/index.d.ts +0 -2
  210. package/lib/api/logs/logs-monitor.d.ts +0 -76
  211. package/lib/api/logs/logs-monitor.js +0 -187
  212. package/lib/api/plugin/context-provider-plugin.d.ts +0 -6
  213. package/lib/api/plugin/context-provider-plugin.js +0 -7
  214. package/lib/api/plugin/index.d.ts +0 -3
  215. package/lib/api/plugin/index.js +0 -20
  216. package/lib/api/plugin/mode.d.ts +0 -4
  217. package/lib/api/plugin/mode.js +0 -9
  218. package/lib/api/plugin/plugin.d.ts +0 -63
  219. package/lib/api/plugin/plugin.js +0 -102
  220. package/lib/api/resource-import/importer.d.ts +0 -220
  221. package/lib/api/resource-import/importer.js +0 -331
  222. package/lib/api/resource-import/index.d.ts +0 -2
  223. package/lib/api/resource-import/migrator.d.ts +0 -26
  224. package/lib/api/resource-import/migrator.js +0 -71
  225. package/lib/api/stack-events/index.d.ts +0 -3
  226. package/lib/api/stack-events/index.js +0 -20
  227. package/lib/api/stack-events/stack-activity-monitor.d.ts +0 -100
  228. package/lib/api/stack-events/stack-activity-monitor.js +0 -142
  229. package/lib/api/stack-events/stack-event-poller.d.ts +0 -69
  230. package/lib/api/stack-events/stack-event-poller.js +0 -128
  231. package/lib/api/stack-events/stack-progress-monitor.d.ts +0 -48
  232. package/lib/api/stack-events/stack-progress-monitor.js +0 -94
  233. package/lib/api/stack-events/stack-status.d.ts +0 -42
  234. package/lib/api/stack-events/stack-status.js +0 -88
  235. package/lib/api/util/rwlock.d.ts +0 -65
  236. package/lib/api/util/rwlock.js +0 -179
  237. package/lib/api/work-graph/index.d.ts +0 -3
  238. package/lib/api/work-graph/index.js +0 -20
  239. package/lib/api/work-graph/work-graph-builder.d.ts +0 -34
  240. package/lib/api/work-graph/work-graph-builder.js +0 -168
  241. package/lib/api/work-graph/work-graph-types.d.ts +0 -50
  242. package/lib/api/work-graph/work-graph-types.js +0 -13
  243. package/lib/api/work-graph/work-graph.d.ts +0 -72
  244. package/lib/api/work-graph/work-graph.js +0 -346
  245. package/lib/cli/activity-printer/base.d.ts +0 -50
  246. package/lib/cli/activity-printer/base.js +0 -114
  247. package/lib/cli/activity-printer/current.d.ts +0 -26
  248. package/lib/cli/activity-printer/current.js +0 -118
  249. package/lib/cli/activity-printer/display.d.ts +0 -13
  250. package/lib/cli/activity-printer/display.js +0 -80
  251. package/lib/cli/activity-printer/history.d.ts +0 -32
  252. package/lib/cli/activity-printer/history.js +0 -108
  253. package/lib/cli/activity-printer/index.d.ts +0 -3
  254. package/lib/cli/activity-printer/index.js +0 -20
  255. package/lib/notices.d.ts +0 -203
  256. package/lib/notices.js +0 -411
@@ -1,118 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CurrentActivityPrinter = void 0;
4
- const util = require("util");
5
- const chalk = require("chalk");
6
- const base_1 = require("./base");
7
- const display_1 = require("./display");
8
- const util_1 = require("../../util");
9
- /**
10
- * Activity Printer which shows the resources currently being updated
11
- *
12
- * It will continuously re-update the terminal and show only the resources
13
- * that are currently being updated, in addition to a progress bar which
14
- * shows how far along the deployment is.
15
- *
16
- * Resources that have failed will always be shown, and will be recapitulated
17
- * along with their stack trace when the monitoring ends.
18
- *
19
- * Resources that failed deployment because they have been cancelled are
20
- * not included.
21
- */
22
- class CurrentActivityPrinter extends base_1.ActivityPrinterBase {
23
- constructor(props) {
24
- super(props);
25
- this.block = new display_1.RewritableBlock(this.stream);
26
- }
27
- print() {
28
- const lines = [];
29
- // Add a progress bar at the top
30
- const progressWidth = Math.max(Math.min((this.block.width ?? 80) - PROGRESSBAR_EXTRA_SPACE - 1, MAX_PROGRESSBAR_WIDTH), MIN_PROGRESSBAR_WIDTH);
31
- const prog = this.progressBar(progressWidth);
32
- if (prog) {
33
- lines.push(' ' + prog, '');
34
- }
35
- // Normally we'd only print "resources in progress", but it's also useful
36
- // to keep an eye on the failures and know about the specific errors asquickly
37
- // as possible (while the stack is still rolling back), so add those in.
38
- const toPrint = [...this.failures, ...Object.values(this.resourcesInProgress)];
39
- toPrint.sort((a, b) => a.event.Timestamp.getTime() - b.event.Timestamp.getTime());
40
- lines.push(...toPrint.map((res) => {
41
- const color = colorFromStatusActivity(res.event.ResourceStatus);
42
- const resourceName = res.metadata?.constructPath ?? res.event.LogicalResourceId ?? '';
43
- return util.format('%s | %s | %s | %s%s', (0, util_1.padLeft)(CurrentActivityPrinter.TIMESTAMP_WIDTH, new Date(res.event.Timestamp).toLocaleTimeString()), color((0, util_1.padRight)(CurrentActivityPrinter.STATUS_WIDTH, (res.event.ResourceStatus || '').slice(0, CurrentActivityPrinter.STATUS_WIDTH))), (0, util_1.padRight)(this.resourceTypeColumnWidth, res.event.ResourceType || ''), color(chalk.bold(shorten(40, resourceName))), this.failureReasonOnNextLine(res));
44
- }));
45
- this.block.displayLines(lines);
46
- }
47
- stop() {
48
- super.stop();
49
- // Print failures at the end
50
- const lines = new Array();
51
- for (const failure of this.failures) {
52
- // Root stack failures are not interesting
53
- if (this.isActivityForTheStack(failure)) {
54
- continue;
55
- }
56
- lines.push(util.format(chalk.red('%s | %s | %s | %s%s') + '\n', (0, util_1.padLeft)(CurrentActivityPrinter.TIMESTAMP_WIDTH, new Date(failure.event.Timestamp).toLocaleTimeString()), (0, util_1.padRight)(CurrentActivityPrinter.STATUS_WIDTH, (failure.event.ResourceStatus || '').slice(0, CurrentActivityPrinter.STATUS_WIDTH)), (0, util_1.padRight)(this.resourceTypeColumnWidth, failure.event.ResourceType || ''), shorten(40, failure.event.LogicalResourceId ?? ''), this.failureReasonOnNextLine(failure)));
57
- const trace = failure.metadata?.entry?.trace;
58
- if (trace) {
59
- lines.push(chalk.red(`\t${trace.join('\n\t\\_ ')}\n`));
60
- }
61
- }
62
- // Display in the same block space, otherwise we're going to have silly empty lines.
63
- this.block.displayLines(lines);
64
- this.block.removeEmptyLines();
65
- }
66
- progressBar(width) {
67
- if (!this.stackProgress || !this.stackProgress.total) {
68
- return '';
69
- }
70
- const fraction = Math.min(this.stackProgress.completed / this.stackProgress.total, 1);
71
- const innerWidth = Math.max(1, width - 2);
72
- const chars = innerWidth * fraction;
73
- const remainder = chars - Math.floor(chars);
74
- const fullChars = FULL_BLOCK.repeat(Math.floor(chars));
75
- const partialChar = PARTIAL_BLOCK[Math.floor(remainder * PARTIAL_BLOCK.length)];
76
- const filler = '·'.repeat(innerWidth - Math.floor(chars) - (partialChar ? 1 : 0));
77
- const color = this.rollingBack ? chalk.yellow : chalk.green;
78
- return '[' + color(fullChars + partialChar) + filler + `] (${this.stackProgress.completed}/${this.stackProgress.total})`;
79
- }
80
- failureReasonOnNextLine(activity) {
81
- return (0, util_1.stackEventHasErrorMessage)(activity.event.ResourceStatus ?? '')
82
- ? `\n${' '.repeat(CurrentActivityPrinter.TIMESTAMP_WIDTH + CurrentActivityPrinter.STATUS_WIDTH + 6)}${chalk.red(this.failureReason(activity) ?? '')}`
83
- : '';
84
- }
85
- }
86
- exports.CurrentActivityPrinter = CurrentActivityPrinter;
87
- const FULL_BLOCK = '█';
88
- const PARTIAL_BLOCK = ['', '▏', '▎', '▍', '▌', '▋', '▊', '▉'];
89
- const MAX_PROGRESSBAR_WIDTH = 60;
90
- const MIN_PROGRESSBAR_WIDTH = 10;
91
- const PROGRESSBAR_EXTRA_SPACE = 2 /* leading spaces */ + 2 /* brackets */ + 4 /* progress number decoration */ + 6; /* 2 progress numbers up to 999 */
92
- function colorFromStatusActivity(status) {
93
- if (!status) {
94
- return chalk.reset;
95
- }
96
- if (status.endsWith('_FAILED')) {
97
- return chalk.red;
98
- }
99
- if (status.startsWith('CREATE_') || status.startsWith('UPDATE_') || status.startsWith('IMPORT_')) {
100
- return chalk.green;
101
- }
102
- // For stacks, it may also be 'UPDDATE_ROLLBACK_IN_PROGRESS'
103
- if (status.indexOf('ROLLBACK_') !== -1) {
104
- return chalk.yellow;
105
- }
106
- if (status.startsWith('DELETE_')) {
107
- return chalk.yellow;
108
- }
109
- return chalk.reset;
110
- }
111
- function shorten(maxWidth, p) {
112
- if (p.length <= maxWidth) {
113
- return p;
114
- }
115
- const half = Math.floor((maxWidth - 3) / 2);
116
- return p.slice(0, half) + '...' + p.slice(-half);
117
- }
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImN1cnJlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBRTdCLCtCQUErQjtBQUUvQixpQ0FBNkM7QUFDN0MsdUNBQTRDO0FBQzVDLHFDQUEwRTtBQUUxRTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLHNCQUF1QixTQUFRLDBCQUFtQjtJQU03RCxZQUFZLEtBQTJCO1FBQ3JDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSx5QkFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVMsS0FBSztRQUNiLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUVqQixnQ0FBZ0M7UUFDaEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLHVCQUF1QixHQUFHLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxFQUN2RixxQkFBcUIsQ0FDdEIsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQseUVBQXlFO1FBQ3pFLDhFQUE4RTtRQUM5RSx3RUFBd0U7UUFDeEUsTUFBTSxPQUFPLEdBQW9CLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVB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LEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgU3RhY2tBY3Rpdml0eSB9IGZyb20gJ0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpdml0eVByaW50ZXJQcm9wcyB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBBY3Rpdml0eVByaW50ZXJCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IFJld3JpdGFibGVCbG9jayB9IGZyb20gJy4vZGlzcGxheSc7XG5pbXBvcnQgeyBwYWRMZWZ0LCBwYWRSaWdodCwgc3RhY2tFdmVudEhhc0Vycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuXG4vKipcbiAqIEFjdGl2aXR5IFByaW50ZXIgd2hpY2ggc2hvd3MgdGhlIHJlc291cmNlcyBjdXJyZW50bHkgYmVpbmcgdXBkYXRlZFxuICpcbiAqIEl0IHdpbGwgY29udGludW91c2x5IHJlLXVwZGF0ZSB0aGUgdGVybWluYWwgYW5kIHNob3cgb25seSB0aGUgcmVzb3VyY2VzXG4gKiB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgdXBkYXRlZCwgaW4gYWRkaXRpb24gdG8gYSBwcm9ncmVzcyBiYXIgd2hpY2hcbiAqIHNob3dzIGhvdyBmYXIgYWxvbmcgdGhlIGRlcGxveW1lbnQgaXMuXG4gKlxuICogUmVzb3VyY2VzIHRoYXQgaGF2ZSBmYWlsZWQgd2lsbCBhbHdheXMgYmUgc2hvd24sIGFuZCB3aWxsIGJlIHJlY2FwaXR1bGF0ZWRcbiAqIGFsb25nIHdpdGggdGhlaXIgc3RhY2sgdHJhY2Ugd2hlbiB0aGUgbW9uaXRvcmluZyBlbmRzLlxuICpcbiAqIFJlc291cmNlcyB0aGF0IGZhaWxlZCBkZXBsb3ltZW50IGJlY2F1c2UgdGhleSBoYXZlIGJlZW4gY2FuY2VsbGVkIGFyZVxuICogbm90IGluY2x1ZGVkLlxuICovXG5leHBvcnQgY2xhc3MgQ3VycmVudEFjdGl2aXR5UHJpbnRlciBleHRlbmRzIEFjdGl2aXR5UHJpbnRlckJhc2Uge1xuICAvKipcbiAgICogQ29udGludW91c2x5IHdyaXRlIHRvIHRoZSBzYW1lIG91dHB1dCBibG9jay5cbiAgICovXG4gIHByaXZhdGUgYmxvY2s6IFJld3JpdGFibGVCbG9jaztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogQWN0aXZpdHlQcmludGVyUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5ibG9jayA9IG5ldyBSZXdyaXRhYmxlQmxvY2sodGhpcy5zdHJlYW0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByaW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGxpbmVzID0gW107XG5cbiAgICAvLyBBZGQgYSBwcm9ncmVzcyBiYXIgYXQgdGhlIHRvcFxuICAgIGNvbnN0IHByb2dyZXNzV2lkdGggPSBNYXRoLm1heChcbiAgICAgIE1hdGgubWluKCh0aGlzLmJsb2NrLndpZHRoID8/IDgwKSAtIFBST0dSRVNTQkFSX0VYVFJBX1NQQUNFIC0gMSwgTUFYX1BST0dSRVNTQkFSX1dJRFRIKSxcbiAgICAgIE1JTl9QUk9HUkVTU0JBUl9XSURUSCxcbiAgICApO1xuICAgIGNvbnN0IHByb2cgPSB0aGlzLnByb2dyZXNzQmFyKHByb2dyZXNzV2lkdGgpO1xuICAgIGlmIChwcm9nKSB7XG4gICAgICBsaW5lcy5wdXNoKCcgICcgKyBwcm9nLCAnJyk7XG4gICAgfVxuXG4gICAgLy8gTm9ybWFsbHkgd2UnZCBvbmx5IHByaW50IFwicmVzb3VyY2VzIGluIHByb2dyZXNzXCIsIGJ1dCBpdCdzIGFsc28gdXNlZnVsXG4gICAgLy8gdG8ga2VlcCBhbiBleWUgb24gdGhlIGZhaWx1cmVzIGFuZCBrbm93IGFib3V0IHRoZSBzcGVjaWZpYyBlcnJvcnMgYXNxdWlja2x5XG4gICAgLy8gYXMgcG9zc2libGUgKHdoaWxlIHRoZSBzdGFjayBpcyBzdGlsbCByb2xsaW5nIGJhY2spLCBzbyBhZGQgdGhvc2UgaW4uXG4gICAgY29uc3QgdG9QcmludDogU3RhY2tBY3Rpdml0eVtdID0gWy4uLnRoaXMuZmFpbHVyZXMsIC4uLk9iamVjdC52YWx1ZXModGhpcy5yZXNvdXJjZXNJblByb2dyZXNzKV07XG4gICAgdG9QcmludC5zb3J0KChhLCBiKSA9PiBhLmV2ZW50LlRpbWVzdGFtcCEuZ2V0VGltZSgpIC0gYi5ldmVudC5UaW1lc3RhbXAhLmdldFRpbWUoKSk7XG5cbiAgICBsaW5lcy5wdXNoKFxuICAgICAgLi4udG9QcmludC5tYXAoKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBjb2xvciA9IGNvbG9yRnJvbVN0YXR1c0FjdGl2aXR5KHJlcy5ldmVudC5SZXNvdXJjZVN0YXR1cyk7XG4gICAgICAgIGNvbnN0IHJlc291cmNlTmFtZSA9IHJlcy5tZXRhZGF0YT8uY29uc3RydWN0UGF0aCA/PyByZXMuZXZlbnQuTG9naWNhbFJlc291cmNlSWQgPz8gJyc7XG5cbiAgICAgICAgcmV0dXJuIHV0aWwuZm9ybWF0KFxuICAgICAgICAgICclcyB8ICVzIHwgJXMgfCAlcyVzJyxcbiAgICAgICAgICBwYWRMZWZ0KEN1cnJlbnRBY3Rpdml0eVByaW50ZXIuVElNRVNUQU1QX1dJRFRILCBuZXcgRGF0ZShyZXMuZXZlbnQuVGltZXN0YW1wISkudG9Mb2NhbGVUaW1lU3RyaW5nKCkpLFxuICAgICAgICAgIGNvbG9yKHBhZFJpZ2h0KEN1cnJlbnRBY3Rpdml0eVByaW50ZXIuU1RBVFVTX1dJRFRILCAocmVzLmV2ZW50LlJlc291cmNlU3RhdHVzIHx8ICcnKS5zbGljZSgwLCBDdXJyZW50QWN0aXZpdHlQcmludGVyLlNUQVRVU19XSURUSCkpKSxcbiAgICAgICAgICBwYWRSaWdodCh0aGlzLnJlc291cmNlVHlwZUNvbHVtbldpZHRoLCByZXMuZXZlbnQuUmVzb3VyY2VUeXBlIHx8ICcnKSxcbiAgICAgICAgICBjb2xvcihjaGFsay5ib2xkKHNob3J0ZW4oNDAsIHJlc291cmNlTmFtZSkpKSxcbiAgICAgICAgICB0aGlzLmZhaWx1cmVSZWFzb25Pbk5leHRMaW5lKHJlcyksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy5ibG9jay5kaXNwbGF5TGluZXMobGluZXMpO1xuICB9XG5cbiAgcHVibGljIHN0b3AoKSB7XG4gICAgc3VwZXIuc3RvcCgpO1xuXG4gICAgLy8gUHJpbnQgZmFpbHVyZXMgYXQgdGhlIGVuZFxuICAgIGNvbnN0IGxpbmVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IGZhaWx1cmUgb2YgdGhpcy5mYWlsdXJlcykge1xuICAgICAgLy8gUm9vdCBzdGFjayBmYWlsdXJlcyBhcmUgbm90IGludGVyZXN0aW5nXG4gICAgICBpZiAodGhpcy5pc0FjdGl2aXR5Rm9yVGhlU3RhY2soZmFpbHVyZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGxpbmVzLnB1c2goXG4gICAgICAgIHV0aWwuZm9ybWF0KFxuICAgICAgICAgIGNoYWxrLnJlZCgnJXMgfCAlcyB8ICVzIHwgJXMlcycpICsgJ1xcbicsXG4gICAgICAgICAgcGFkTGVmdChDdXJyZW50QWN0aXZpdHlQcmludGVyLlRJTUVTVEFNUF9XSURUSCwgbmV3IERhdGUoZmFpbHVyZS5ldmVudC5UaW1lc3RhbXAhKS50b0xvY2FsZVRpbWVTdHJpbmcoKSksXG4gICAgICAgICAgcGFkUmlnaHQoQ3VycmVudEFjdGl2aXR5UHJpbnRlci5TVEFUVVNfV0lEVEgsIChmYWlsdXJlLmV2ZW50LlJlc291cmNlU3RhdHVzIHx8ICcnKS5zbGljZSgwLCBDdXJyZW50QWN0aXZpdHlQcmludGVyLlNUQVRVU19XSURUSCkpLFxuICAgICAgICAgIHBhZFJpZ2h0KHRoaXMucmVzb3VyY2VUeXBlQ29sdW1uV2lkdGgsIGZhaWx1cmUuZXZlbnQuUmVzb3VyY2VUeXBlIHx8ICcnKSxcbiAgICAgICAgICBzaG9ydGVuKDQwLCBmYWlsdXJlLmV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkID8/ICcnKSxcbiAgICAgICAgICB0aGlzLmZhaWx1cmVSZWFzb25Pbk5leHRMaW5lKGZhaWx1cmUpLFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHJhY2UgPSBmYWlsdXJlLm1ldGFkYXRhPy5lbnRyeT8udHJhY2U7XG4gICAgICBpZiAodHJhY2UpIHtcbiAgICAgICAgbGluZXMucHVzaChjaGFsay5yZWQoYFxcdCR7dHJhY2Uuam9pbignXFxuXFx0XFxcXF8gJyl9XFxuYCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERpc3BsYXkgaW4gdGhlIHNhbWUgYmxvY2sgc3BhY2UsIG90aGVyd2lzZSB3ZSdyZSBnb2luZyB0byBoYXZlIHNpbGx5IGVtcHR5IGxpbmVzLlxuICAgIHRoaXMuYmxvY2suZGlzcGxheUxpbmVzKGxpbmVzKTtcbiAgICB0aGlzLmJsb2NrLnJlbW92ZUVtcHR5TGluZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvZ3Jlc3NCYXIod2lkdGg6IG51bWJlcikge1xuICAgIGlmICghdGhpcy5zdGFja1Byb2dyZXNzIHx8ICF0aGlzLnN0YWNrUHJvZ3Jlc3MudG90YWwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgZnJhY3Rpb24gPSBNYXRoLm1pbih0aGlzLnN0YWNrUHJvZ3Jlc3MuY29tcGxldGVkIC8gdGhpcy5zdGFja1Byb2dyZXNzLnRvdGFsLCAxKTtcbiAgICBjb25zdCBpbm5lcldpZHRoID0gTWF0aC5tYXgoMSwgd2lkdGggLSAyKTtcbiAgICBjb25zdCBjaGFycyA9IGlubmVyV2lkdGggKiBmcmFjdGlvbjtcbiAgICBjb25zdCByZW1haW5kZXIgPSBjaGFycyAtIE1hdGguZmxvb3IoY2hhcnMpO1xuXG4gICAgY29uc3QgZnVsbENoYXJzID0gRlVMTF9CTE9DSy5yZXBlYXQoTWF0aC5mbG9vcihjaGFycykpO1xuICAgIGNvbnN0IHBhcnRpYWxDaGFyID0gUEFSVElBTF9CTE9DS1tNYXRoLmZsb29yKHJlbWFpbmRlciAqIFBBUlRJQUxfQkxPQ0subGVuZ3RoKV07XG4gICAgY29uc3QgZmlsbGVyID0gJ8K3Jy5yZXBlYXQoaW5uZXJXaWR0aCAtIE1hdGguZmxvb3IoY2hhcnMpIC0gKHBhcnRpYWxDaGFyID8gMSA6IDApKTtcblxuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5yb2xsaW5nQmFjayA/IGNoYWxrLnllbGxvdyA6IGNoYWxrLmdyZWVuO1xuXG4gICAgcmV0dXJuICdbJyArIGNvbG9yKGZ1bGxDaGFycyArIHBhcnRpYWxDaGFyKSArIGZpbGxlciArIGBdICgke3RoaXMuc3RhY2tQcm9ncmVzcy5jb21wbGV0ZWR9LyR7dGhpcy5zdGFja1Byb2dyZXNzLnRvdGFsfSlgO1xuICB9XG5cbiAgcHJpdmF0ZSBmYWlsdXJlUmVhc29uT25OZXh0TGluZShhY3Rpdml0eTogU3RhY2tBY3Rpdml0eSkge1xuICAgIHJldHVybiBzdGFja0V2ZW50SGFzRXJyb3JNZXNzYWdlKGFjdGl2aXR5LmV2ZW50LlJlc291cmNlU3RhdHVzID8/ICcnKVxuICAgICAgPyBgXFxuJHsnICcucmVwZWF0KEN1cnJlbnRBY3Rpdml0eVByaW50ZXIuVElNRVNUQU1QX1dJRFRIICsgQ3VycmVudEFjdGl2aXR5UHJpbnRlci5TVEFUVVNfV0lEVEggKyA2KX0ke2NoYWxrLnJlZCh0aGlzLmZhaWx1cmVSZWFzb24oYWN0aXZpdHkpID8/ICcnKX1gXG4gICAgICA6ICcnO1xuICB9XG59XG5cbmNvbnN0IEZVTExfQkxPQ0sgPSAn4paIJztcbmNvbnN0IFBBUlRJQUxfQkxPQ0sgPSBbJycsICfilo8nLCAn4paOJywgJ+KWjScsICfilownLCAn4paLJywgJ+KWiicsICfiloknXTtcbmNvbnN0IE1BWF9QUk9HUkVTU0JBUl9XSURUSCA9IDYwO1xuY29uc3QgTUlOX1BST0dSRVNTQkFSX1dJRFRIID0gMTA7XG5jb25zdCBQUk9HUkVTU0JBUl9FWFRSQV9TUEFDRSA9XG4gICAgMiAvKiBsZWFkaW5nIHNwYWNlcyAqLyArIDIgLyogYnJhY2tldHMgKi8gKyA0IC8qIHByb2dyZXNzIG51bWJlciBkZWNvcmF0aW9uICovICsgNjsgLyogMiBwcm9ncmVzcyBudW1iZXJzIHVwIHRvIDk5OSAqL1xuXG5mdW5jdGlvbiBjb2xvckZyb21TdGF0dXNBY3Rpdml0eShzdGF0dXM/OiBzdHJpbmcpIHtcbiAgaWYgKCFzdGF0dXMpIHtcbiAgICByZXR1cm4gY2hhbGsucmVzZXQ7XG4gIH1cblxuICBpZiAoc3RhdHVzLmVuZHNXaXRoKCdfRkFJTEVEJykpIHtcbiAgICByZXR1cm4gY2hhbGsucmVkO1xuICB9XG5cbiAgaWYgKHN0YXR1cy5zdGFydHNXaXRoKCdDUkVBVEVfJykgfHwgc3RhdHVzLnN0YXJ0c1dpdGgoJ1VQREFURV8nKSB8fCBzdGF0dXMuc3RhcnRzV2l0aCgnSU1QT1JUXycpKSB7XG4gICAgcmV0dXJuIGNoYWxrLmdyZWVuO1xuICB9XG4gIC8vIEZvciBzdGFja3MsIGl0IG1heSBhbHNvIGJlICdVUEREQVRFX1JPTExCQUNLX0lOX1BST0dSRVNTJ1xuICBpZiAoc3RhdHVzLmluZGV4T2YoJ1JPTExCQUNLXycpICE9PSAtMSkge1xuICAgIHJldHVybiBjaGFsay55ZWxsb3c7XG4gIH1cbiAgaWYgKHN0YXR1cy5zdGFydHNXaXRoKCdERUxFVEVfJykpIHtcbiAgICByZXR1cm4gY2hhbGsueWVsbG93O1xuICB9XG5cbiAgcmV0dXJuIGNoYWxrLnJlc2V0O1xufVxuXG5mdW5jdGlvbiBzaG9ydGVuKG1heFdpZHRoOiBudW1iZXIsIHA6IHN0cmluZykge1xuICBpZiAocC5sZW5ndGggPD0gbWF4V2lkdGgpIHtcbiAgICByZXR1cm4gcDtcbiAgfVxuICBjb25zdCBoYWxmID0gTWF0aC5mbG9vcigobWF4V2lkdGggLSAzKSAvIDIpO1xuICByZXR1cm4gcC5zbGljZSgwLCBoYWxmKSArICcuLi4nICsgcC5zbGljZSgtaGFsZik7XG59XG5cbiJdfQ==
@@ -1,13 +0,0 @@
1
- /**
2
- * A class representing rewritable display lines
3
- */
4
- export declare class RewritableBlock {
5
- private readonly stream;
6
- private lastHeight;
7
- private trailingEmptyLines;
8
- constructor(stream: NodeJS.WriteStream);
9
- get width(): number;
10
- get height(): number;
11
- displayLines(lines: string[]): void;
12
- removeEmptyLines(): void;
13
- }
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RewritableBlock = void 0;
4
- // namespace object imports won't work in the bundle for function exports
5
- // eslint-disable-next-line @typescript-eslint/no-require-imports
6
- const wrapAnsi = require('wrap-ansi');
7
- /**
8
- * A class representing rewritable display lines
9
- */
10
- class RewritableBlock {
11
- constructor(stream) {
12
- this.stream = stream;
13
- this.lastHeight = 0;
14
- this.trailingEmptyLines = 0;
15
- }
16
- get width() {
17
- // Might get changed if the user resizes the terminal
18
- return this.stream.columns;
19
- }
20
- get height() {
21
- // Might get changed if the user resizes the terminal
22
- return this.stream.rows;
23
- }
24
- displayLines(lines) {
25
- lines = terminalWrap(this.width, expandNewlines(lines));
26
- lines = lines.slice(0, getMaxBlockHeight(this.height, this.lastHeight, lines));
27
- this.stream.write(cursorUp(this.lastHeight));
28
- for (const line of lines) {
29
- this.stream.write(cll() + line + '\n');
30
- }
31
- this.trailingEmptyLines = Math.max(0, this.lastHeight - lines.length);
32
- // Clear remainder of unwritten lines
33
- for (let i = 0; i < this.trailingEmptyLines; i++) {
34
- this.stream.write(cll() + '\n');
35
- }
36
- // The block can only ever get bigger
37
- this.lastHeight = Math.max(this.lastHeight, lines.length);
38
- }
39
- removeEmptyLines() {
40
- this.stream.write(cursorUp(this.trailingEmptyLines));
41
- }
42
- }
43
- exports.RewritableBlock = RewritableBlock;
44
- const ESC = '\u001b';
45
- /*
46
- * Move cursor up `n` lines. Default is 1
47
- */
48
- function cursorUp(n) {
49
- n = typeof n === 'number' ? n : 1;
50
- return n > 0 ? ESC + '[' + n + 'A' : '';
51
- }
52
- /**
53
- * Clear to end of line
54
- */
55
- function cll() {
56
- return ESC + '[K';
57
- }
58
- function terminalWrap(width, lines) {
59
- if (width === undefined) {
60
- return lines;
61
- }
62
- return lines.flatMap(line => wrapAnsi(line, width - 1, {
63
- hard: true,
64
- trim: true,
65
- wordWrap: false,
66
- }).split('\n'));
67
- }
68
- /**
69
- * Make sure there are no hidden newlines in the gin strings
70
- */
71
- function expandNewlines(lines) {
72
- return lines.flatMap(line => line.split('\n'));
73
- }
74
- function getMaxBlockHeight(windowHeight, lastHeight, lines) {
75
- if (windowHeight === undefined) {
76
- return Math.max(lines.length, lastHeight);
77
- }
78
- return lines.length < windowHeight ? lines.length : windowHeight - 1;
79
- }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpc3BsYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFdEM7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFJMUIsWUFBNkIsTUFBMEI7UUFBMUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFIL0MsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLHVCQUFrQixHQUFHLENBQUMsQ0FBQztJQUcvQixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QscURBQXFEO1FBQ3JELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLHFEQUFxRDtRQUNyRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBZTtRQUNqQyxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEQsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRS9FLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRFLHFDQUFxQztRQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELHFDQUFxQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0NBQ0Y7QUF4Q0QsMENBd0NDO0FBRUQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBRXJCOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQUMsQ0FBUztJQUN6QixDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzFDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsR0FBRztJQUNWLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQztBQUNwQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FBeUIsRUFBRSxLQUFlO0lBQzlELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRTtRQUNyRCxJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxJQUFJO1FBQ1YsUUFBUSxFQUFFLEtBQUs7S0FDaEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsY0FBYyxDQUFDLEtBQWU7SUFDckMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLFlBQWdDLEVBQUUsVUFBa0IsRUFBRSxLQUFlO0lBQzlGLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBuYW1lc3BhY2Ugb2JqZWN0IGltcG9ydHMgd29uJ3Qgd29yayBpbiB0aGUgYnVuZGxlIGZvciBmdW5jdGlvbiBleHBvcnRzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3Qgd3JhcEFuc2kgPSByZXF1aXJlKCd3cmFwLWFuc2knKTtcblxuLyoqXG4gKiBBIGNsYXNzIHJlcHJlc2VudGluZyByZXdyaXRhYmxlIGRpc3BsYXkgbGluZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFJld3JpdGFibGVCbG9jayB7XG4gIHByaXZhdGUgbGFzdEhlaWdodCA9IDA7XG4gIHByaXZhdGUgdHJhaWxpbmdFbXB0eUxpbmVzID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0cmVhbTogTm9kZUpTLldyaXRlU3RyZWFtKSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHdpZHRoKCkge1xuICAgIC8vIE1pZ2h0IGdldCBjaGFuZ2VkIGlmIHRoZSB1c2VyIHJlc2l6ZXMgdGhlIHRlcm1pbmFsXG4gICAgcmV0dXJuIHRoaXMuc3RyZWFtLmNvbHVtbnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhlaWdodCgpIHtcbiAgICAvLyBNaWdodCBnZXQgY2hhbmdlZCBpZiB0aGUgdXNlciByZXNpemVzIHRoZSB0ZXJtaW5hbFxuICAgIHJldHVybiB0aGlzLnN0cmVhbS5yb3dzO1xuICB9XG5cbiAgcHVibGljIGRpc3BsYXlMaW5lcyhsaW5lczogc3RyaW5nW10pIHtcbiAgICBsaW5lcyA9IHRlcm1pbmFsV3JhcCh0aGlzLndpZHRoLCBleHBhbmROZXdsaW5lcyhsaW5lcykpO1xuICAgIGxpbmVzID0gbGluZXMuc2xpY2UoMCwgZ2V0TWF4QmxvY2tIZWlnaHQodGhpcy5oZWlnaHQsIHRoaXMubGFzdEhlaWdodCwgbGluZXMpKTtcblxuICAgIHRoaXMuc3RyZWFtLndyaXRlKGN1cnNvclVwKHRoaXMubGFzdEhlaWdodCkpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgdGhpcy5zdHJlYW0ud3JpdGUoY2xsKCkgKyBsaW5lICsgJ1xcbicpO1xuICAgIH1cblxuICAgIHRoaXMudHJhaWxpbmdFbXB0eUxpbmVzID0gTWF0aC5tYXgoMCwgdGhpcy5sYXN0SGVpZ2h0IC0gbGluZXMubGVuZ3RoKTtcblxuICAgIC8vIENsZWFyIHJlbWFpbmRlciBvZiB1bndyaXR0ZW4gbGluZXNcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJhaWxpbmdFbXB0eUxpbmVzOyBpKyspIHtcbiAgICAgIHRoaXMuc3RyZWFtLndyaXRlKGNsbCgpICsgJ1xcbicpO1xuICAgIH1cblxuICAgIC8vIFRoZSBibG9jayBjYW4gb25seSBldmVyIGdldCBiaWdnZXJcbiAgICB0aGlzLmxhc3RIZWlnaHQgPSBNYXRoLm1heCh0aGlzLmxhc3RIZWlnaHQsIGxpbmVzLmxlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRW1wdHlMaW5lcygpIHtcbiAgICB0aGlzLnN0cmVhbS53cml0ZShjdXJzb3JVcCh0aGlzLnRyYWlsaW5nRW1wdHlMaW5lcykpO1xuICB9XG59XG5cbmNvbnN0IEVTQyA9ICdcXHUwMDFiJztcblxuLypcbiAqIE1vdmUgY3Vyc29yIHVwIGBuYCBsaW5lcy4gRGVmYXVsdCBpcyAxXG4gKi9cbmZ1bmN0aW9uIGN1cnNvclVwKG46IG51bWJlcikge1xuICBuID0gdHlwZW9mIG4gPT09ICdudW1iZXInID8gbiA6IDE7XG4gIHJldHVybiBuID4gMCA/IEVTQyArICdbJyArIG4gKyAnQScgOiAnJztcbn1cblxuLyoqXG4gKiBDbGVhciB0byBlbmQgb2YgbGluZVxuICovXG5mdW5jdGlvbiBjbGwoKSB7XG4gIHJldHVybiBFU0MgKyAnW0snO1xufVxuXG5mdW5jdGlvbiB0ZXJtaW5hbFdyYXAod2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCwgbGluZXM6IHN0cmluZ1tdKSB7XG4gIGlmICh3aWR0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcmV0dXJuIGxpbmVzLmZsYXRNYXAobGluZSA9PiB3cmFwQW5zaShsaW5lLCB3aWR0aCAtIDEsIHtcbiAgICBoYXJkOiB0cnVlLFxuICAgIHRyaW06IHRydWUsXG4gICAgd29yZFdyYXA6IGZhbHNlLFxuICB9KS5zcGxpdCgnXFxuJykpO1xufVxuXG4vKipcbiAqIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gaGlkZGVuIG5ld2xpbmVzIGluIHRoZSBnaW4gc3RyaW5nc1xuICovXG5mdW5jdGlvbiBleHBhbmROZXdsaW5lcyhsaW5lczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBsaW5lcy5mbGF0TWFwKGxpbmUgPT4gbGluZS5zcGxpdCgnXFxuJykpO1xufVxuXG5mdW5jdGlvbiBnZXRNYXhCbG9ja0hlaWdodCh3aW5kb3dIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZCwgbGFzdEhlaWdodDogbnVtYmVyLCBsaW5lczogc3RyaW5nW10pOiBudW1iZXIge1xuICBpZiAod2luZG93SGVpZ2h0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgobGluZXMubGVuZ3RoLCBsYXN0SGVpZ2h0KTtcbiAgfVxuICByZXR1cm4gbGluZXMubGVuZ3RoIDwgd2luZG93SGVpZ2h0ID8gbGluZXMubGVuZ3RoIDogd2luZG93SGVpZ2h0IC0gMTtcbn1cbiJdfQ==
@@ -1,32 +0,0 @@
1
- import type { StackActivity } from '@aws-cdk/tmp-toolkit-helpers';
2
- import type { ActivityPrinterProps } from './base';
3
- import { ActivityPrinterBase } from './base';
4
- /**
5
- * Activity Printer which shows a full log of all CloudFormation events
6
- *
7
- * When there hasn't been activity for a while, it will print the resources
8
- * that are currently in progress, to show what's holding up the deployment.
9
- */
10
- export declare class HistoryActivityPrinter extends ActivityPrinterBase {
11
- /**
12
- * Last time we printed something to the console.
13
- *
14
- * Used to measure timeout for progress reporting.
15
- */
16
- private lastPrintTime;
17
- private lastPrinted?;
18
- /**
19
- * Number of ms of change absence before we tell the user about the resources that are currently in progress.
20
- */
21
- private readonly inProgressDelay;
22
- private readonly printable;
23
- constructor(props: ActivityPrinterProps);
24
- activity(activity: StackActivity): void;
25
- stop(): void;
26
- protected print(): void;
27
- private printOne;
28
- /**
29
- * If some resources are taking a while to create, notify the user about what's currently in progress
30
- */
31
- private printInProgress;
32
- }
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HistoryActivityPrinter = void 0;
4
- const util = require("util");
5
- const chalk = require("chalk");
6
- const base_1 = require("./base");
7
- const util_1 = require("../../util");
8
- /**
9
- * Activity Printer which shows a full log of all CloudFormation events
10
- *
11
- * When there hasn't been activity for a while, it will print the resources
12
- * that are currently in progress, to show what's holding up the deployment.
13
- */
14
- class HistoryActivityPrinter extends base_1.ActivityPrinterBase {
15
- constructor(props) {
16
- super(props);
17
- /**
18
- * Last time we printed something to the console.
19
- *
20
- * Used to measure timeout for progress reporting.
21
- */
22
- this.lastPrintTime = Date.now();
23
- /**
24
- * Number of ms of change absence before we tell the user about the resources that are currently in progress.
25
- */
26
- this.inProgressDelay = 30000;
27
- this.printable = new Array();
28
- }
29
- activity(activity) {
30
- this.printable.push(activity);
31
- super.activity(activity);
32
- }
33
- stop() {
34
- super.stop();
35
- // Print failures at the end
36
- if (this.failures.length > 0) {
37
- this.stream.write('\nFailed resources:\n');
38
- for (const failure of this.failures) {
39
- // Root stack failures are not interesting
40
- if (this.isActivityForTheStack(failure)) {
41
- continue;
42
- }
43
- this.printOne(failure, false);
44
- }
45
- }
46
- }
47
- print() {
48
- for (const activity of this.printable) {
49
- this.printOne(activity);
50
- this.lastPrinted = activity;
51
- }
52
- this.printable.splice(0, this.printable.length);
53
- this.printInProgress(this.lastPrinted?.progress.formatted);
54
- }
55
- printOne(activity, progress) {
56
- const event = activity.event;
57
- const color = colorFromStatusResult(event.ResourceStatus);
58
- let reasonColor = chalk.cyan;
59
- let stackTrace = '';
60
- const metadata = activity.metadata;
61
- if (event.ResourceStatus && event.ResourceStatus.indexOf('FAILED') !== -1) {
62
- if (progress == undefined || progress) {
63
- event.ResourceStatusReason = event.ResourceStatusReason ? this.failureReason(activity) : '';
64
- }
65
- if (metadata) {
66
- stackTrace = metadata.entry.trace ? `\n\t${metadata.entry.trace.join('\n\t\\_ ')}` : '';
67
- }
68
- reasonColor = chalk.red;
69
- }
70
- const resourceName = metadata ? metadata.constructPath : event.LogicalResourceId || '';
71
- const logicalId = resourceName !== event.LogicalResourceId ? `(${event.LogicalResourceId}) ` : '';
72
- this.stream.write(util.format('%s | %s%s | %s | %s | %s %s%s%s\n', event.StackName, progress !== false ? `${activity.progress.formatted} | ` : '', new Date(event.Timestamp).toLocaleTimeString(), color((0, util_1.padRight)(HistoryActivityPrinter.STATUS_WIDTH, (event.ResourceStatus || '').slice(0, HistoryActivityPrinter.STATUS_WIDTH))), // pad left and trim
73
- (0, util_1.padRight)(this.resourceTypeColumnWidth, event.ResourceType || ''), color(chalk.bold(resourceName)), logicalId, reasonColor(chalk.bold(event.ResourceStatusReason ? event.ResourceStatusReason : '')), reasonColor(stackTrace)));
74
- this.lastPrintTime = Date.now();
75
- }
76
- /**
77
- * If some resources are taking a while to create, notify the user about what's currently in progress
78
- */
79
- printInProgress(progress) {
80
- if (!progress || Date.now() < this.lastPrintTime + this.inProgressDelay) {
81
- return;
82
- }
83
- if (Object.keys(this.resourcesInProgress).length > 0) {
84
- this.stream.write(util.format('%s Currently in progress: %s\n', progress, chalk.bold(Object.keys(this.resourcesInProgress).join(', '))));
85
- }
86
- // We cheat a bit here. To prevent printInProgress() from repeatedly triggering,
87
- // we set the timestamp into the future. It will be reset whenever a regular print
88
- // occurs, after which we can be triggered again.
89
- this.lastPrintTime = +Infinity;
90
- }
91
- }
92
- exports.HistoryActivityPrinter = HistoryActivityPrinter;
93
- function colorFromStatusResult(status) {
94
- if (!status) {
95
- return chalk.reset;
96
- }
97
- if (status.indexOf('FAILED') !== -1) {
98
- return chalk.red;
99
- }
100
- if (status.indexOf('ROLLBACK') !== -1) {
101
- return chalk.yellow;
102
- }
103
- if (status.indexOf('COMPLETE') !== -1) {
104
- return chalk.green;
105
- }
106
- return chalk.reset;
107
- }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhpc3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBRTdCLCtCQUErQjtBQUUvQixpQ0FBNkM7QUFDN0MscUNBQXNDO0FBRXRDOzs7OztHQUtHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSwwQkFBbUI7SUFpQjdELFlBQVksS0FBMkI7UUFDckMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBakJmOzs7O1dBSUc7UUFDSyxrQkFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUluQzs7V0FFRztRQUNjLG9CQUFlLEdBQUcsS0FBTSxDQUFDO1FBRXpCLGNBQVMsR0FBRyxJQUFJLEtBQUssRUFBaUIsQ0FBQztJQUl4RCxDQUFDO0lBRU0sUUFBUSxDQUFDLFFBQXVCO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLElBQUk7UUFDVCxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFYiw0QkFBNEI7UUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzNDLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQywwQ0FBMEM7Z0JBQzFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ3hDLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFUyxL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Q3BDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgU3RhY2tBY3Rpdml0eSB9IGZyb20gJ0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpdml0eVByaW50ZXJQcm9wcyB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBBY3Rpdml0eVByaW50ZXJCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IHBhZFJpZ2h0IH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5cbi8qKlxuICogQWN0aXZpdHkgUHJpbnRlciB3aGljaCBzaG93cyBhIGZ1bGwgbG9nIG9mIGFsbCBDbG91ZEZvcm1hdGlvbiBldmVudHNcbiAqXG4gKiBXaGVuIHRoZXJlIGhhc24ndCBiZWVuIGFjdGl2aXR5IGZvciBhIHdoaWxlLCBpdCB3aWxsIHByaW50IHRoZSByZXNvdXJjZXNcbiAqIHRoYXQgYXJlIGN1cnJlbnRseSBpbiBwcm9ncmVzcywgdG8gc2hvdyB3aGF0J3MgaG9sZGluZyB1cCB0aGUgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIEhpc3RvcnlBY3Rpdml0eVByaW50ZXIgZXh0ZW5kcyBBY3Rpdml0eVByaW50ZXJCYXNlIHtcbiAgLyoqXG4gICAqIExhc3QgdGltZSB3ZSBwcmludGVkIHNvbWV0aGluZyB0byB0aGUgY29uc29sZS5cbiAgICpcbiAgICogVXNlZCB0byBtZWFzdXJlIHRpbWVvdXQgZm9yIHByb2dyZXNzIHJlcG9ydGluZy5cbiAgICovXG4gIHByaXZhdGUgbGFzdFByaW50VGltZSA9IERhdGUubm93KCk7XG5cbiAgcHJpdmF0ZSBsYXN0UHJpbnRlZD86IFN0YWNrQWN0aXZpdHk7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBtcyBvZiBjaGFuZ2UgYWJzZW5jZSBiZWZvcmUgd2UgdGVsbCB0aGUgdXNlciBhYm91dCB0aGUgcmVzb3VyY2VzIHRoYXQgYXJlIGN1cnJlbnRseSBpbiBwcm9ncmVzcy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5Qcm9ncmVzc0RlbGF5ID0gMzBfMDAwO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJpbnRhYmxlID0gbmV3IEFycmF5PFN0YWNrQWN0aXZpdHk+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEFjdGl2aXR5UHJpbnRlclByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgcHVibGljIGFjdGl2aXR5KGFjdGl2aXR5OiBTdGFja0FjdGl2aXR5KSB7XG4gICAgdGhpcy5wcmludGFibGUucHVzaChhY3Rpdml0eSk7XG4gICAgc3VwZXIuYWN0aXZpdHkoYWN0aXZpdHkpO1xuICB9XG5cbiAgcHVibGljIHN0b3AoKSB7XG4gICAgc3VwZXIuc3RvcCgpO1xuXG4gICAgLy8gUHJpbnQgZmFpbHVyZXMgYXQgdGhlIGVuZFxuICAgIGlmICh0aGlzLmZhaWx1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc3RyZWFtLndyaXRlKCdcXG5GYWlsZWQgcmVzb3VyY2VzOlxcbicpO1xuICAgICAgZm9yIChjb25zdCBmYWlsdXJlIG9mIHRoaXMuZmFpbHVyZXMpIHtcbiAgICAgICAgLy8gUm9vdCBzdGFjayBmYWlsdXJlcyBhcmUgbm90IGludGVyZXN0aW5nXG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZpdHlGb3JUaGVTdGFjayhmYWlsdXJlKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmludE9uZShmYWlsdXJlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHByaW50KCkge1xuICAgIGZvciAoY29uc3QgYWN0aXZpdHkgb2YgdGhpcy5wcmludGFibGUpIHtcbiAgICAgIHRoaXMucHJpbnRPbmUoYWN0aXZpdHkpO1xuICAgICAgdGhpcy5sYXN0UHJpbnRlZCA9IGFjdGl2aXR5O1xuICAgIH1cbiAgICB0aGlzLnByaW50YWJsZS5zcGxpY2UoMCwgdGhpcy5wcmludGFibGUubGVuZ3RoKTtcbiAgICB0aGlzLnByaW50SW5Qcm9ncmVzcyh0aGlzLmxhc3RQcmludGVkPy5wcm9ncmVzcy5mb3JtYXR0ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmludE9uZShhY3Rpdml0eTogU3RhY2tBY3Rpdml0eSwgcHJvZ3Jlc3M/OiBib29sZWFuKSB7XG4gICAgY29uc3QgZXZlbnQgPSBhY3Rpdml0eS5ldmVudDtcbiAgICBjb25zdCBjb2xvciA9IGNvbG9yRnJvbVN0YXR1c1Jlc3VsdChldmVudC5SZXNvdXJjZVN0YXR1cyk7XG4gICAgbGV0IHJlYXNvbkNvbG9yID0gY2hhbGsuY3lhbjtcblxuICAgIGxldCBzdGFja1RyYWNlID0gJyc7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBhY3Rpdml0eS5tZXRhZGF0YTtcblxuICAgIGlmIChldmVudC5SZXNvdXJjZVN0YXR1cyAmJiBldmVudC5SZXNvdXJjZVN0YXR1cy5pbmRleE9mKCdGQUlMRUQnKSAhPT0gLTEpIHtcbiAgICAgIGlmIChwcm9ncmVzcyA9PSB1bmRlZmluZWQgfHwgcHJvZ3Jlc3MpIHtcbiAgICAgICAgZXZlbnQuUmVzb3VyY2VTdGF0dXNSZWFzb24gPSBldmVudC5SZXNvdXJjZVN0YXR1c1JlYXNvbiA/IHRoaXMuZmFpbHVyZVJlYXNvbihhY3Rpdml0eSkgOiAnJztcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YSkge1xuICAgICAgICBzdGFja1RyYWNlID0gbWV0YWRhdGEuZW50cnkudHJhY2UgPyBgXFxuXFx0JHttZXRhZGF0YS5lbnRyeS50cmFjZS5qb2luKCdcXG5cXHRcXFxcXyAnKX1gIDogJyc7XG4gICAgICB9XG4gICAgICByZWFzb25Db2xvciA9IGNoYWxrLnJlZDtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBtZXRhZGF0YSA/IG1ldGFkYXRhLmNvbnN0cnVjdFBhdGggOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCB8fCAnJztcbiAgICBjb25zdCBsb2dpY2FsSWQgPSByZXNvdXJjZU5hbWUgIT09IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkID8gYCgke2V2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkfSkgYCA6ICcnO1xuXG4gICAgdGhpcy5zdHJlYW0ud3JpdGUoXG4gICAgICB1dGlsLmZvcm1hdChcbiAgICAgICAgJyVzIHwgJXMlcyB8ICVzIHwgJXMgfCAlcyAlcyVzJXNcXG4nLFxuICAgICAgICBldmVudC5TdGFja05hbWUsXG4gICAgICAgIHByb2dyZXNzICE9PSBmYWxzZSA/IGAke2FjdGl2aXR5LnByb2dyZXNzLmZvcm1hdHRlZH0gfCBgIDogJycsXG4gICAgICAgIG5ldyBEYXRlKGV2ZW50LlRpbWVzdGFtcCEpLnRvTG9jYWxlVGltZVN0cmluZygpLFxuICAgICAgICBjb2xvcihwYWRSaWdodChIaXN0b3J5QWN0aXZpdHlQcmludGVyLlNUQVRVU19XSURUSCwgKGV2ZW50LlJlc291cmNlU3RhdHVzIHx8ICcnKS5zbGljZSgwLCBIaXN0b3J5QWN0aXZpdHlQcmludGVyLlNUQVRVU19XSURUSCkpKSwgLy8gcGFkIGxlZnQgYW5kIHRyaW1cbiAgICAgICAgcGFkUmlnaHQodGhpcy5yZXNvdXJjZVR5cGVDb2x1bW5XaWR0aCwgZXZlbnQuUmVzb3VyY2VUeXBlIHx8ICcnKSxcbiAgICAgICAgY29sb3IoY2hhbGsuYm9sZChyZXNvdXJjZU5hbWUpKSxcbiAgICAgICAgbG9naWNhbElkLFxuICAgICAgICByZWFzb25Db2xvcihjaGFsay5ib2xkKGV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uID8gZXZlbnQuUmVzb3VyY2VTdGF0dXNSZWFzb24gOiAnJykpLFxuICAgICAgICByZWFzb25Db2xvcihzdGFja1RyYWNlKSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHRoaXMubGFzdFByaW50VGltZSA9IERhdGUubm93KCk7XG4gIH1cblxuICAvKipcbiAgICogSWYgc29tZSByZXNvdXJjZXMgYXJlIHRha2luZyBhIHdoaWxlIHRvIGNyZWF0ZSwgbm90aWZ5IHRoZSB1c2VyIGFib3V0IHdoYXQncyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3NcbiAgICovXG4gIHByaXZhdGUgcHJpbnRJblByb2dyZXNzKHByb2dyZXNzPzogc3RyaW5nKSB7XG4gICAgaWYgKCFwcm9ncmVzcyB8fCBEYXRlLm5vdygpIDwgdGhpcy5sYXN0UHJpbnRUaW1lICsgdGhpcy5pblByb2dyZXNzRGVsYXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5yZXNvdXJjZXNJblByb2dyZXNzKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnN0cmVhbS53cml0ZShcbiAgICAgICAgdXRpbC5mb3JtYXQoXG4gICAgICAgICAgJyVzIEN1cnJlbnRseSBpbiBwcm9ncmVzczogJXNcXG4nLFxuICAgICAgICAgIHByb2dyZXNzLFxuICAgICAgICAgIGNoYWxrLmJvbGQoT2JqZWN0LmtleXModGhpcy5yZXNvdXJjZXNJblByb2dyZXNzKS5qb2luKCcsICcpKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gV2UgY2hlYXQgYSBiaXQgaGVyZS4gVG8gcHJldmVudCBwcmludEluUHJvZ3Jlc3MoKSBmcm9tIHJlcGVhdGVkbHkgdHJpZ2dlcmluZyxcbiAgICAvLyB3ZSBzZXQgdGhlIHRpbWVzdGFtcCBpbnRvIHRoZSBmdXR1cmUuIEl0IHdpbGwgYmUgcmVzZXQgd2hlbmV2ZXIgYSByZWd1bGFyIHByaW50XG4gICAgLy8gb2NjdXJzLCBhZnRlciB3aGljaCB3ZSBjYW4gYmUgdHJpZ2dlcmVkIGFnYWluLlxuICAgIHRoaXMubGFzdFByaW50VGltZSA9ICtJbmZpbml0eTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2xvckZyb21TdGF0dXNSZXN1bHQoc3RhdHVzPzogc3RyaW5nKSB7XG4gIGlmICghc3RhdHVzKSB7XG4gICAgcmV0dXJuIGNoYWxrLnJlc2V0O1xuICB9XG5cbiAgaWYgKHN0YXR1cy5pbmRleE9mKCdGQUlMRUQnKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gY2hhbGsucmVkO1xuICB9XG4gIGlmIChzdGF0dXMuaW5kZXhPZignUk9MTEJBQ0snKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gY2hhbGsueWVsbG93O1xuICB9XG4gIGlmIChzdGF0dXMuaW5kZXhPZignQ09NUExFVEUnKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gY2hhbGsuZ3JlZW47XG4gIH1cblxuICByZXR1cm4gY2hhbGsucmVzZXQ7XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './base';
2
- export * from './history';
3
- export * from './current';
@@ -1,20 +0,0 @@
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
- __exportStar(require("./base"), exports);
18
- __exportStar(require("./history"), exports);
19
- __exportStar(require("./current"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXVCO0FBQ3ZCLDRDQUEwQjtBQUMxQiw0Q0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9oaXN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vY3VycmVudCc7XG4iXX0=
package/lib/notices.d.ts DELETED
@@ -1,203 +0,0 @@
1
- import type { Environment } from '@aws-cdk/cx-api';
2
- import type { SdkHttpOptions } from './api';
3
- import type { Context } from './api/context';
4
- import type { IIoHost } from './cli/io-host';
5
- import { IoDefaultMessages } from '../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
6
- export interface NoticesProps {
7
- /**
8
- * CDK context
9
- */
10
- readonly context: Context;
11
- /**
12
- * Include notices that have already been acknowledged.
13
- *
14
- * @default false
15
- */
16
- readonly includeAcknowledged?: boolean;
17
- /**
18
- * Global CLI option for output directory for synthesized cloud assembly
19
- *
20
- * @default 'cdk.out'
21
- */
22
- readonly output?: string;
23
- /**
24
- * Options for the HTTP request
25
- */
26
- readonly httpOptions?: SdkHttpOptions;
27
- /**
28
- * Where messages are going to be sent
29
- */
30
- readonly ioHost: IIoHost;
31
- }
32
- export interface NoticesPrintOptions {
33
- /**
34
- * Whether to append the total number of unacknowledged notices to the display.
35
- *
36
- * @default false
37
- */
38
- readonly showTotal?: boolean;
39
- }
40
- export interface NoticesRefreshOptions {
41
- /**
42
- * Whether to force a cache refresh regardless of expiration time.
43
- *
44
- * @default false
45
- */
46
- readonly force?: boolean;
47
- /**
48
- * Data source for fetch notices from.
49
- *
50
- * @default - WebsiteNoticeDataSource
51
- */
52
- readonly dataSource?: NoticeDataSource;
53
- }
54
- export interface NoticesFilterFilterOptions {
55
- readonly data: Notice[];
56
- readonly cliVersion: string;
57
- readonly outDir: string;
58
- readonly bootstrappedEnvironments: BootstrappedEnvironment[];
59
- }
60
- export declare class NoticesFilter {
61
- private readonly ioMessages;
62
- constructor(ioMessages: IoDefaultMessages);
63
- filter(options: NoticesFilterFilterOptions): FilteredNotice[];
64
- /**
65
- * From a set of input options, return the notices components we are searching for
66
- */
67
- private otherComponents;
68
- /**
69
- * Based on a set of component names, find all notices that match one of the given components
70
- */
71
- private findForNamedComponents;
72
- /**
73
- * Whether the given "affected component" name applies to the given actual component name.
74
- *
75
- * The name matches if the name is exactly the same, or the name in the notice
76
- * is a prefix of the node name when the query ends in '.'.
77
- */
78
- private componentNameMatches;
79
- /**
80
- * Adds dynamic values from the given ActualComponents
81
- *
82
- * If there are multiple components with the same dynamic name, they are joined
83
- * by a comma.
84
- */
85
- private addDynamicValues;
86
- /**
87
- * Treat 'framework' as an alias for either `aws-cdk-lib.` or `@aws-cdk/core.`.
88
- *
89
- * Because it's EITHER `aws-cdk-lib` or `@aws-cdk/core`, we need to add multiple
90
- * arrays at the top level.
91
- */
92
- private resolveAliases;
93
- /**
94
- * Load the construct tree from the given directory and return its components
95
- */
96
- private constructTreeComponents;
97
- }
98
- /**
99
- * Information about a bootstrapped environment.
100
- */
101
- export interface BootstrappedEnvironment {
102
- readonly bootstrapStackVersion: number;
103
- readonly environment: Environment;
104
- }
105
- /**
106
- * Provides access to notices the CLI can display.
107
- */
108
- export declare class Notices {
109
- /**
110
- * Create an instance. Note that this replaces the singleton.
111
- */
112
- static create(props: NoticesProps): Notices;
113
- /**
114
- * Get the singleton instance. May return `undefined` if `create` has not been called.
115
- */
116
- static get(): Notices | undefined;
117
- private static _instance;
118
- private readonly context;
119
- private readonly output;
120
- private readonly acknowledgedIssueNumbers;
121
- private readonly includeAcknowlegded;
122
- private readonly httpOptions;
123
- private readonly ioMessages;
124
- private data;
125
- private readonly bootstrappedEnvironments;
126
- private constructor();
127
- /**
128
- * Add a bootstrap information to filter on. Can have multiple values
129
- * in case of multi-environment deployments.
130
- */
131
- addBootstrappedEnvironment(bootstrapped: BootstrappedEnvironment): void;
132
- /**
133
- * Refresh the list of notices this instance is aware of.
134
- * To make sure this never crashes the CLI process, all failures are caught and
135
- * silently logged.
136
- *
137
- * If context is configured to not display notices, this will no-op.
138
- */
139
- refresh(options?: NoticesRefreshOptions): Promise<void>;
140
- /**
141
- * Display the relevant notices (unless context dictates we shouldn't).
142
- */
143
- display(options?: NoticesPrintOptions): void;
144
- }
145
- export interface Component {
146
- name: string;
147
- /**
148
- * The range of affected versions
149
- */
150
- version: string;
151
- }
152
- export interface Notice {
153
- title: string;
154
- issueNumber: number;
155
- overview: string;
156
- /**
157
- * A set of affected components
158
- *
159
- * The canonical form of a list of components is in Disjunctive Normal Form
160
- * (i.e., an OR of ANDs). This is the form when the list of components is a
161
- * doubly nested array: the notice matches if all components of at least one
162
- * of the top-level array matches.
163
- *
164
- * If the `components` is a single-level array, it is evaluated as an OR; it
165
- * matches if any of the components matches.
166
- */
167
- components: Array<Component | Component[]>;
168
- schemaVersion: string;
169
- severity?: string;
170
- }
171
- /**
172
- * Notice after passing the filter. A filter can augment a notice with
173
- * dynamic values as it has access to the dynamic matching data.
174
- */
175
- export declare class FilteredNotice {
176
- readonly notice: Notice;
177
- private readonly dynamicValues;
178
- constructor(notice: Notice);
179
- addDynamicValue(key: string, value: string): void;
180
- format(): string;
181
- private formatOverview;
182
- private resolveDynamicValues;
183
- }
184
- export interface NoticeDataSource {
185
- fetch(): Promise<Notice[]>;
186
- }
187
- export declare class WebsiteNoticeDataSource implements NoticeDataSource {
188
- private readonly ioMessages;
189
- private readonly options;
190
- constructor(ioMessages: IoDefaultMessages, options?: SdkHttpOptions);
191
- fetch(): Promise<Notice[]>;
192
- }
193
- export declare class CachedDataSource implements NoticeDataSource {
194
- private readonly ioMessages;
195
- private readonly fileName;
196
- private readonly dataSource;
197
- private readonly skipCache?;
198
- constructor(ioMessages: IoDefaultMessages, fileName: string, dataSource: NoticeDataSource, skipCache?: boolean | undefined);
199
- fetch(): Promise<Notice[]>;
200
- private fetchInner;
201
- private load;
202
- private save;
203
- }