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.
- package/README.md +1 -1
- package/THIRD_PARTY_LICENSES +104 -86
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/api/aws-auth.d.ts +1 -0
- package/lib/api/{logs/index.js → aws-auth.js} +2 -3
- package/lib/api/bootstrap.d.ts +1 -0
- package/lib/api/bootstrap.js +18 -0
- package/lib/api/cloud-assembly.d.ts +1 -0
- package/lib/api/cloud-assembly.js +18 -0
- package/lib/api/cloudformation.d.ts +1 -0
- package/lib/api/cloudformation.js +18 -0
- package/lib/api/context.d.ts +1 -40
- package/lib/api/context.js +16 -80
- package/lib/api/deployments.d.ts +1 -0
- package/lib/api/deployments.js +18 -0
- package/lib/api/environment.d.ts +1 -0
- package/lib/api/environment.js +18 -0
- package/lib/api/garbage-collection.d.ts +1 -0
- package/lib/api/garbage-collection.js +18 -0
- package/lib/api/hotswap.d.ts +1 -0
- package/lib/api/hotswap.js +18 -0
- package/lib/api/index.d.ts +5 -1
- package/lib/api/index.js +6 -2
- package/lib/api/logs-monitor.d.ts +1 -0
- package/lib/api/logs-monitor.js +18 -0
- package/lib/api/notices.d.ts +1 -0
- package/lib/api/notices.js +18 -0
- package/lib/api/plugin.d.ts +1 -0
- package/lib/api/{resource-import/index.js → plugin.js} +2 -3
- package/lib/api/resource-import.d.ts +1 -0
- package/lib/api/resource-import.js +18 -0
- package/lib/api/rwlock.d.ts +1 -0
- package/lib/api/{garbage-collection/index.js → rwlock.js} +2 -2
- package/lib/api/settings.d.ts +1 -26
- package/lib/api/settings.js +16 -103
- package/lib/api/stack-events.d.ts +1 -0
- package/lib/api/stack-events.js +18 -0
- package/lib/api/tags.d.ts +1 -9
- package/lib/api/tags.js +16 -8
- package/lib/api/toolkit-info.d.ts +1 -52
- package/lib/api/toolkit-info.js +16 -152
- package/lib/api/tree.d.ts +1 -31
- package/lib/api/tree.js +16 -35
- package/lib/api/work-graph.d.ts +1 -0
- package/lib/api/work-graph.js +18 -0
- package/lib/api-private.d.ts +3 -0
- package/lib/api-private.js +22 -0
- package/lib/cli/cdk-toolkit.d.ts +20 -16
- package/lib/cli/cdk-toolkit.js +102 -37
- package/lib/cli/cli-config.js +2 -2
- package/lib/cli/cli.d.ts +1 -1
- package/lib/cli/cli.js +22 -19
- package/lib/cli/io-host/cli-io-host.js +2 -2
- package/lib/cli/pretty-print-error.js +3 -1
- package/lib/cli/util/npm.d.ts +4 -1
- package/lib/cli/util/npm.js +25 -13
- package/lib/cli/version.d.ts +1 -1
- package/lib/cli/version.js +21 -25
- package/lib/commands/context.js +3 -2
- package/lib/commands/diff.d.ts +1 -50
- package/lib/commands/diff.js +5 -213
- package/lib/commands/init/init.js +3 -2
- package/lib/commands/list-stacks.js +4 -4
- package/lib/context-providers/ami.d.ts +1 -13
- package/lib/context-providers/ami.js +16 -48
- package/lib/context-providers/availability-zones.d.ts +1 -13
- package/lib/context-providers/availability-zones.js +16 -25
- package/lib/context-providers/cc-api-provider.d.ts +1 -30
- package/lib/context-providers/cc-api-provider.js +16 -136
- package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -13
- package/lib/context-providers/endpoint-service-availability-zones.js +16 -31
- package/lib/context-providers/hosted-zones.d.ts +1 -12
- package/lib/context-providers/hosted-zones.js +16 -65
- package/lib/context-providers/index.d.ts +1 -44
- package/lib/context-providers/index.js +15 -126
- package/lib/context-providers/keys.d.ts +1 -13
- package/lib/context-providers/keys.js +16 -50
- package/lib/context-providers/load-balancers.d.ts +1 -20
- package/lib/context-providers/load-balancers.js +16 -154
- package/lib/context-providers/security-groups.d.ts +1 -9
- package/lib/context-providers/security-groups.js +16 -66
- package/lib/context-providers/ssm-parameters.d.ts +1 -25
- package/lib/context-providers/ssm-parameters.js +16 -57
- package/lib/context-providers/vpcs.d.ts +1 -13
- package/lib/context-providers/vpcs.js +16 -285
- package/lib/{api/cxapp → cxapp}/cloud-assembly.d.ts +3 -59
- package/lib/cxapp/cloud-assembly.js +108 -0
- package/lib/{api/cxapp → cxapp}/cloud-executable.d.ts +10 -3
- package/lib/cxapp/cloud-executable.js +92 -0
- package/lib/{api/cxapp → cxapp}/environments.d.ts +1 -2
- package/lib/{api/cxapp → cxapp}/environments.js +2 -2
- package/lib/cxapp/exec.d.ts +14 -0
- package/lib/cxapp/exec.js +157 -0
- package/lib/cxapp/index.d.ts +4 -0
- package/lib/{api/bootstrap → cxapp}/index.js +5 -3
- package/lib/index.js +134493 -125222
- package/lib/init-templates/.init-version.json +1 -1
- package/lib/init-templates/.recommended-feature-flags.json +3 -1
- package/lib/legacy-aws-auth.d.ts +74 -0
- package/lib/legacy-aws-auth.js +40 -0
- package/lib/legacy-exports-source.d.ts +13 -18
- package/lib/legacy-exports-source.js +42 -49
- package/lib/legacy-exports.d.ts +3 -6
- package/lib/legacy-exports.js +5 -5
- package/lib/legacy-types.d.ts +31 -0
- package/lib/legacy-types.js +3 -0
- package/package.json +19 -18
- package/lib/api/aws-auth/account-cache.d.ts +0 -36
- package/lib/api/aws-auth/account-cache.js +0 -99
- package/lib/api/aws-auth/awscli-compatible.d.ts +0 -42
- package/lib/api/aws-auth/awscli-compatible.js +0 -263
- package/lib/api/aws-auth/cached.d.ts +0 -11
- package/lib/api/aws-auth/cached.js +0 -26
- package/lib/api/aws-auth/credential-plugins.d.ts +0 -36
- package/lib/api/aws-auth/credential-plugins.js +0 -152
- package/lib/api/aws-auth/index.d.ts +0 -3
- package/lib/api/aws-auth/index.js +0 -20
- package/lib/api/aws-auth/provider-caching.d.ts +0 -13
- package/lib/api/aws-auth/provider-caching.js +0 -24
- package/lib/api/aws-auth/sdk-logger.d.ts +0 -69
- package/lib/api/aws-auth/sdk-logger.js +0 -124
- package/lib/api/aws-auth/sdk-provider.d.ts +0 -207
- package/lib/api/aws-auth/sdk-provider.js +0 -357
- package/lib/api/aws-auth/sdk.d.ts +0 -229
- package/lib/api/aws-auth/sdk.js +0 -373
- package/lib/api/aws-auth/tracing.d.ts +0 -11
- package/lib/api/aws-auth/tracing.js +0 -60
- package/lib/api/aws-auth/user-agent.d.ts +0 -7
- package/lib/api/aws-auth/user-agent.js +0 -20
- package/lib/api/aws-auth/util.d.ts +0 -6
- package/lib/api/aws-auth/util.js +0 -23
- package/lib/api/bootstrap/bootstrap-environment.d.ts +0 -35
- package/lib/api/bootstrap/bootstrap-environment.js +0 -321
- package/lib/api/bootstrap/bootstrap-props.d.ts +0 -130
- package/lib/api/bootstrap/bootstrap-props.js +0 -14
- package/lib/api/bootstrap/deploy-bootstrap.d.ts +0 -39
- package/lib/api/bootstrap/deploy-bootstrap.js +0 -141
- package/lib/api/bootstrap/index.d.ts +0 -2
- package/lib/api/bootstrap/legacy-template.d.ts +0 -2
- package/lib/api/bootstrap/legacy-template.js +0 -82
- package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +0 -85
- package/lib/api/cloudformation/evaluate-cloudformation-template.js +0 -440
- package/lib/api/cloudformation/index.d.ts +0 -4
- package/lib/api/cloudformation/index.js +0 -21
- package/lib/api/cloudformation/nested-stack-helpers.d.ts +0 -25
- package/lib/api/cloudformation/nested-stack-helpers.js +0 -86
- package/lib/api/cloudformation/stack-helpers.d.ts +0 -96
- package/lib/api/cloudformation/stack-helpers.js +0 -158
- package/lib/api/cloudformation/template-body-parameter.d.ts +0 -22
- package/lib/api/cloudformation/template-body-parameter.js +0 -104
- package/lib/api/cxapp/cloud-assembly.js +0 -304
- package/lib/api/cxapp/cloud-executable.js +0 -89
- package/lib/api/cxapp/exec.d.ts +0 -56
- package/lib/api/cxapp/exec.js +0 -272
- package/lib/api/deployments/asset-manifest-builder.d.ts +0 -8
- package/lib/api/deployments/asset-manifest-builder.js +0 -35
- package/lib/api/deployments/asset-publishing.d.ts +0 -60
- package/lib/api/deployments/asset-publishing.js +0 -141
- package/lib/api/deployments/assets.d.ts +0 -11
- package/lib/api/deployments/assets.js +0 -109
- package/lib/api/deployments/cfn-api.d.ts +0 -138
- package/lib/api/deployments/cfn-api.js +0 -438
- package/lib/api/deployments/checks.d.ts +0 -9
- package/lib/api/deployments/checks.js +0 -72
- package/lib/api/deployments/deploy-stack.d.ts +0 -155
- package/lib/api/deployments/deploy-stack.js +0 -478
- package/lib/api/deployments/deployment-method.d.ts +0 -24
- package/lib/api/deployments/deployment-method.js +0 -3
- package/lib/api/deployments/deployment-result.d.ts +0 -21
- package/lib/api/deployments/deployment-result.js +0 -10
- package/lib/api/deployments/deployments.d.ts +0 -296
- package/lib/api/deployments/deployments.js +0 -331
- package/lib/api/deployments/hotswap-deployments.d.ts +0 -17
- package/lib/api/deployments/hotswap-deployments.js +0 -441
- package/lib/api/deployments/index.d.ts +0 -4
- package/lib/api/deployments/index.js +0 -21
- package/lib/api/environment/environment-access.d.ts +0 -140
- package/lib/api/environment/environment-access.js +0 -202
- package/lib/api/environment/environment-resources.d.ts +0 -75
- package/lib/api/environment/environment-resources.js +0 -207
- package/lib/api/environment/index.d.ts +0 -3
- package/lib/api/environment/index.js +0 -20
- package/lib/api/environment/placeholders.d.ts +0 -10
- package/lib/api/environment/placeholders.js +0 -23
- package/lib/api/garbage-collection/garbage-collector.d.ts +0 -158
- package/lib/api/garbage-collection/garbage-collector.js +0 -599
- package/lib/api/garbage-collection/index.d.ts +0 -1
- package/lib/api/garbage-collection/progress-printer.d.ts +0 -23
- package/lib/api/garbage-collection/progress-printer.js +0 -70
- package/lib/api/garbage-collection/stack-refresh.d.ts +0 -49
- package/lib/api/garbage-collection/stack-refresh.js +0 -151
- package/lib/api/hotswap/appsync-mapping-templates.d.ts +0 -4
- package/lib/api/hotswap/appsync-mapping-templates.js +0 -162
- package/lib/api/hotswap/code-build-projects.d.ts +0 -4
- package/lib/api/hotswap/code-build-projects.js +0 -62
- package/lib/api/hotswap/common.d.ts +0 -89
- package/lib/api/hotswap/common.js +0 -128
- package/lib/api/hotswap/ecs-services.d.ts +0 -4
- package/lib/api/hotswap/ecs-services.js +0 -159
- package/lib/api/hotswap/lambda-functions.d.ts +0 -4
- package/lib/api/hotswap/lambda-functions.js +0 -297
- package/lib/api/hotswap/s3-bucket-deployments.d.ts +0 -5
- package/lib/api/hotswap/s3-bucket-deployments.js +0 -117
- package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -4
- package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
- package/lib/api/logs/find-cloudwatch-logs.d.ts +0 -25
- package/lib/api/logs/find-cloudwatch-logs.js +0 -95
- package/lib/api/logs/index.d.ts +0 -2
- package/lib/api/logs/logs-monitor.d.ts +0 -76
- package/lib/api/logs/logs-monitor.js +0 -187
- package/lib/api/plugin/context-provider-plugin.d.ts +0 -6
- package/lib/api/plugin/context-provider-plugin.js +0 -7
- package/lib/api/plugin/index.d.ts +0 -3
- package/lib/api/plugin/index.js +0 -20
- package/lib/api/plugin/mode.d.ts +0 -4
- package/lib/api/plugin/mode.js +0 -9
- package/lib/api/plugin/plugin.d.ts +0 -63
- package/lib/api/plugin/plugin.js +0 -102
- package/lib/api/resource-import/importer.d.ts +0 -220
- package/lib/api/resource-import/importer.js +0 -331
- package/lib/api/resource-import/index.d.ts +0 -2
- package/lib/api/resource-import/migrator.d.ts +0 -26
- package/lib/api/resource-import/migrator.js +0 -71
- package/lib/api/stack-events/index.d.ts +0 -3
- package/lib/api/stack-events/index.js +0 -20
- package/lib/api/stack-events/stack-activity-monitor.d.ts +0 -100
- package/lib/api/stack-events/stack-activity-monitor.js +0 -142
- package/lib/api/stack-events/stack-event-poller.d.ts +0 -69
- package/lib/api/stack-events/stack-event-poller.js +0 -128
- package/lib/api/stack-events/stack-progress-monitor.d.ts +0 -48
- package/lib/api/stack-events/stack-progress-monitor.js +0 -94
- package/lib/api/stack-events/stack-status.d.ts +0 -42
- package/lib/api/stack-events/stack-status.js +0 -88
- package/lib/api/util/rwlock.d.ts +0 -65
- package/lib/api/util/rwlock.js +0 -179
- package/lib/api/work-graph/index.d.ts +0 -3
- package/lib/api/work-graph/index.js +0 -20
- package/lib/api/work-graph/work-graph-builder.d.ts +0 -34
- package/lib/api/work-graph/work-graph-builder.js +0 -168
- package/lib/api/work-graph/work-graph-types.d.ts +0 -50
- package/lib/api/work-graph/work-graph-types.js +0 -13
- package/lib/api/work-graph/work-graph.d.ts +0 -72
- package/lib/api/work-graph/work-graph.js +0 -346
- package/lib/cli/activity-printer/base.d.ts +0 -50
- package/lib/cli/activity-printer/base.js +0 -114
- package/lib/cli/activity-printer/current.d.ts +0 -26
- package/lib/cli/activity-printer/current.js +0 -118
- package/lib/cli/activity-printer/display.d.ts +0 -13
- package/lib/cli/activity-printer/display.js +0 -80
- package/lib/cli/activity-printer/history.d.ts +0 -32
- package/lib/cli/activity-printer/history.js +0 -108
- package/lib/cli/activity-printer/index.d.ts +0 -3
- package/lib/cli/activity-printer/index.js +0 -20
- package/lib/notices.d.ts +0 -203
- 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,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
|
-
}
|