@aws-cdk/toolkit-lib 1.29.0 → 1.30.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/build-info.json +2 -2
- package/lib/actions/diagnose/index.d.ts +28 -0
- package/lib/actions/diagnose/index.js +1 -1
- package/lib/actions/validate/index.d.ts +2 -0
- package/lib/actions/validate/index.js +1 -1
- package/lib/api/aws-auth/sdk.d.ts +5 -1
- package/lib/api/aws-auth/sdk.js +5 -1
- package/lib/api/cloud-assembly/environment.js +4 -1
- package/lib/api/cloud-assembly/stack-collection.d.ts +2 -0
- package/lib/api/cloud-assembly/stack-collection.js +3 -1
- package/lib/api/deployments/deploy-stack.js +4 -2
- package/lib/api/deployments/deployments.js +3 -1
- package/lib/api/diagnosing/diagnosis-formatting.js +54 -13
- package/lib/api/diagnosing/format-utils.d.ts +3 -0
- package/lib/api/diagnosing/format-utils.js +36 -0
- package/lib/api/diagnosing/resource-investigation.d.ts +41 -0
- package/lib/api/diagnosing/resource-investigation.js +302 -0
- package/lib/api/diagnosing/stack-diagnoser.d.ts +39 -3
- package/lib/api/diagnosing/stack-diagnoser.js +71 -30
- package/lib/api/hotswap/hotswap-deployments.js +3 -1
- package/lib/api/io/private/messages.js +2 -2
- package/lib/api/validate/validate-formatting.d.ts +9 -2
- package/lib/api/validate/validate-formatting.js +117 -69
- package/lib/payloads/hotswap.d.ts +8 -1
- package/lib/payloads/hotswap.js +1 -1
- package/lib/private/tools.js +26 -24
- package/lib/toolkit/private/collect-annotation-report.d.ts +12 -0
- package/lib/toolkit/private/collect-annotation-report.js +85 -0
- package/lib/toolkit/private/validation-report.d.ts +32 -0
- package/lib/toolkit/private/validation-report.js +119 -0
- package/lib/toolkit/toolkit.d.ts +4 -7
- package/lib/toolkit/toolkit.js +24 -67
- package/lib/toolkit/types.d.ts +1 -0
- package/lib/toolkit/types.js +1 -1
- package/lib/util/glob-matcher.d.ts +19 -7
- package/lib/util/glob-matcher.js +63 -14
- package/package.json +5 -5
- package/lib/api/diagnosing/tree-builder.d.ts +0 -13
- package/lib/api/diagnosing/tree-builder.js +0 -86
- package/lib/api/diagnosing/tree.d.ts +0 -19
- package/lib/api/diagnosing/tree.js +0 -72
|
@@ -2,85 +2,84 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hostMessageFromValidation = hostMessageFromValidation;
|
|
4
4
|
exports.formatValidateResult = formatValidateResult;
|
|
5
|
+
exports.formatValidationReports = formatValidationReports;
|
|
6
|
+
exports.humanFriendlyFilename = humanFriendlyFilename;
|
|
5
7
|
const path = require("node:path");
|
|
6
8
|
const chalk = require("chalk");
|
|
7
9
|
const private_1 = require("../io/private");
|
|
8
|
-
|
|
9
|
-
// Strips ANSI escape sequences, carriage returns, backspaces, BEL, and
|
|
10
|
-
// bidirectional overrides that could spoof terminal output.
|
|
11
|
-
const CONTROL_CHARS = /[\x00-\x08\x0B-\x1F\x7F\x9B]/g;
|
|
12
|
-
function sanitize(s) {
|
|
13
|
-
return (s ?? '').replace(CONTROL_CHARS, '�');
|
|
14
|
-
}
|
|
15
|
-
const SEVERITY_ORDER = {
|
|
16
|
-
fatal: 0,
|
|
17
|
-
error: 1,
|
|
18
|
-
warning: 2,
|
|
19
|
-
info: 3,
|
|
20
|
-
};
|
|
21
|
-
function hostMessageFromValidation(result) {
|
|
10
|
+
function hostMessageFromValidation(fileRoot, result) {
|
|
22
11
|
// Always emit at info level so the CLI IoHost doesn't wrap the entire output
|
|
23
12
|
// in a single color. The formatter handles per-severity coloring internally.
|
|
24
13
|
// Consumers detect failure via the structured `data.conclusion` field or exit code.
|
|
25
|
-
return private_1.IO.
|
|
14
|
+
return private_1.IO.CDK_TOOLKIT_E9600.msg(formatValidateResult(fileRoot, result), result);
|
|
26
15
|
}
|
|
27
|
-
function formatValidateResult(result) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
16
|
+
function formatValidateResult(fileRoot, result) {
|
|
17
|
+
return formatValidationReports(fileRoot, result.pluginReports).join('\n\n');
|
|
18
|
+
}
|
|
19
|
+
function formatValidationReports(fileRoot, reports) {
|
|
20
|
+
const successfullyExecutedPlugins = reports.filter((r) => isPluginFailure(r) === undefined);
|
|
21
|
+
const pluginFailures = reports.map(isPluginFailure).filter((e) => e !== undefined);
|
|
22
|
+
const violations = flattenViolations(successfullyExecutedPlugins);
|
|
32
23
|
violations.sort((a, b) => {
|
|
33
24
|
const aOrder = SEVERITY_ORDER[a.severity.toLowerCase()] ?? 4;
|
|
34
25
|
const bOrder = SEVERITY_ORDER[b.severity.toLowerCase()] ?? 4;
|
|
35
26
|
return aOrder - bOrder;
|
|
36
27
|
});
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
28
|
+
return [
|
|
29
|
+
...pluginFailures.map(formatPluginFailure),
|
|
30
|
+
...violations.map((v) => formatViolationBlock(fileRoot, v)),
|
|
31
|
+
];
|
|
40
32
|
}
|
|
41
|
-
function flattenViolations(
|
|
42
|
-
|
|
43
|
-
for (const report of pluginReports) {
|
|
33
|
+
function flattenViolations(reports) {
|
|
34
|
+
return reports.flatMap((report) => {
|
|
44
35
|
const pluginName = report.pluginName;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
36
|
+
return report.violations.flatMap((violation) => {
|
|
37
|
+
return violation.violatingConstructs.map((construct) => ({
|
|
38
|
+
severity: normalizeSeverity(violation.severity),
|
|
39
|
+
description: violation.description,
|
|
40
|
+
ruleName: violation.ruleName,
|
|
41
|
+
pluginName,
|
|
42
|
+
construct,
|
|
43
|
+
suggestedFix: violation.suggestedFix,
|
|
44
|
+
ruleMetadata: violation.ruleMetadata,
|
|
45
|
+
}));
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function normalizeSeverity(severity, customSeverity) {
|
|
50
|
+
switch (severity) {
|
|
51
|
+
case 'fatal':
|
|
52
|
+
case 'error':
|
|
53
|
+
case 'warning':
|
|
54
|
+
case 'info':
|
|
55
|
+
return severity.toUpperCase();
|
|
56
|
+
case 'custom':
|
|
57
|
+
return customSeverity ?? 'INFO';
|
|
51
58
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
function normalizeSeverity(severity) {
|
|
55
|
-
if (!severity)
|
|
56
|
-
return 'Warning';
|
|
57
|
-
const lower = severity.toLowerCase();
|
|
58
|
-
if (lower === 'fatal')
|
|
59
|
-
return 'Fatal';
|
|
60
|
-
if (lower === 'error')
|
|
61
|
-
return 'Error';
|
|
62
|
-
if (lower === 'warning')
|
|
63
|
-
return 'Warning';
|
|
64
|
-
if (lower === 'info')
|
|
65
|
-
return 'Info';
|
|
66
|
-
const safe = sanitize(severity);
|
|
67
|
-
return safe.charAt(0).toUpperCase() + safe.slice(1);
|
|
68
|
-
}
|
|
69
|
-
function formatViolationBlock(v) {
|
|
59
|
+
}
|
|
60
|
+
function formatViolationBlock(fileRoot, v) {
|
|
70
61
|
const lines = [];
|
|
71
|
-
const location =
|
|
62
|
+
const location = sourceLocation(fileRoot, v.construct.stackTraces);
|
|
72
63
|
if (location) {
|
|
73
64
|
lines.push(chalk.underline(sanitize(location)));
|
|
74
65
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
66
|
+
lines.push([
|
|
67
|
+
chalk.bold(getSeverityColor(v.severity)(sanitize(v.severity))),
|
|
68
|
+
chalk.bold(stripAckTag(sanitize(v.description))),
|
|
69
|
+
chalk.grey(`(${sanitize(v.pluginName)})`),
|
|
70
|
+
].join(' '));
|
|
71
|
+
const constructInfo = formatConstructInfo(fileRoot, v.construct);
|
|
80
72
|
lines.push(` ${constructInfo}`);
|
|
81
|
-
if (v.
|
|
73
|
+
if (v.suggestedFix) {
|
|
74
|
+
lines.push(` Suggested fix: ${sanitize(v.suggestedFix).replace(/\n/g, '\n ')}`);
|
|
75
|
+
}
|
|
76
|
+
if (isSuppressibleViolation(v)) {
|
|
82
77
|
const ackId = `${sanitize(v.pluginName)}::${sanitize(v.ruleName)}`.replace(/ /g, '-');
|
|
83
|
-
lines.push(` Acknowledge '${ackId}'`);
|
|
78
|
+
lines.push(` ${chalk.grey(`Acknowledge with '${ackId}'`)}`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// If not acknowledgeable, we should still show the rule name for reference.
|
|
82
|
+
lines.push(` ${chalk.grey(`Rule ${sanitize(v.ruleName)}`)}`);
|
|
84
83
|
}
|
|
85
84
|
return lines.join('\n');
|
|
86
85
|
}
|
|
@@ -92,29 +91,44 @@ function getSeverityColor(severity) {
|
|
|
92
91
|
default: return chalk.blue;
|
|
93
92
|
}
|
|
94
93
|
}
|
|
95
|
-
function
|
|
94
|
+
function formatPluginFailure(f) {
|
|
95
|
+
return `${chalk.ansi256(208)('ERROR')} ${sanitize(f.error)}`;
|
|
96
|
+
}
|
|
97
|
+
function formatConstructInfo(fileRoot, construct) {
|
|
96
98
|
const parts = [];
|
|
97
99
|
const logicalId = sanitize(construct.cloudFormationResource?.logicalId);
|
|
98
100
|
if (construct.constructPath) {
|
|
99
101
|
const cPath = sanitize(construct.constructPath);
|
|
100
102
|
parts.push(logicalId ? `${chalk.bold(cPath)} (${logicalId})` : chalk.bold(cPath));
|
|
101
103
|
}
|
|
102
|
-
else
|
|
103
|
-
|
|
104
|
+
else {
|
|
105
|
+
// No construct information, show template path and logical ID
|
|
106
|
+
if (construct.cloudFormationResource?.templatePath) {
|
|
107
|
+
parts.push(humanFriendlyFilename(fileRoot, sanitize(construct.cloudFormationResource.templatePath)));
|
|
108
|
+
}
|
|
109
|
+
if (logicalId) {
|
|
110
|
+
parts.push(chalk.bold(logicalId));
|
|
111
|
+
}
|
|
104
112
|
}
|
|
105
113
|
if (construct.constructFqn) {
|
|
106
|
-
parts.push(sanitize(construct.constructFqn));
|
|
114
|
+
parts.push(chalk.grey(sanitize(construct.constructFqn)));
|
|
107
115
|
}
|
|
108
116
|
return parts.join(' ');
|
|
109
117
|
}
|
|
110
118
|
function stripAckTag(description) {
|
|
111
119
|
return description.replace(/\s*\[ack:\s*[^\]]+\]\s*/g, '').trim();
|
|
112
120
|
}
|
|
113
|
-
function
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
121
|
+
function sourceLocation(fileRoot, stackTraces) {
|
|
122
|
+
for (const trace of stackTraces ?? []) {
|
|
123
|
+
const frame = getLeafLocation(trace);
|
|
124
|
+
if (frame && frame.fileName) {
|
|
125
|
+
return `${humanFriendlyFilename(fileRoot, frame.fileName)}:${frame.sourceLocation}`;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
function getLeafLocation(stackTrace) {
|
|
131
|
+
const frames = stackTrace.split('\n');
|
|
118
132
|
if (frames.length === 0)
|
|
119
133
|
return undefined;
|
|
120
134
|
// Find the first frame that's user code (not in node_modules or aws-cdk-lib)
|
|
@@ -122,6 +136,40 @@ function getLeafLocation(stackTraces) {
|
|
|
122
136
|
const frame = (userFrame ?? frames[0]).trim();
|
|
123
137
|
const match = frame.match(/\((.+)\)$/) || frame.match(/at\s+(.+)$/);
|
|
124
138
|
const location = match ? match[1] : frame;
|
|
125
|
-
return
|
|
139
|
+
return { fileName: location.split(':')[0], sourceLocation: location.split(':').slice(1).join(':') };
|
|
140
|
+
}
|
|
141
|
+
// Matches C0 control chars (except \t and \n), DEL, and CSI (8-bit mode).
|
|
142
|
+
// Strips ANSI escape sequences, carriage returns, backspaces, BEL, and
|
|
143
|
+
// bidirectional overrides that could spoof terminal output.
|
|
144
|
+
const CONTROL_CHARS = /[\x00-\x08\x0B-\x1F\x7F\x9B]/g;
|
|
145
|
+
function sanitize(s) {
|
|
146
|
+
return (s ?? '').replace(CONTROL_CHARS, '�');
|
|
147
|
+
}
|
|
148
|
+
const SEVERITY_ORDER = {
|
|
149
|
+
fatal: 0,
|
|
150
|
+
error: 1,
|
|
151
|
+
warning: 2,
|
|
152
|
+
info: 3,
|
|
153
|
+
};
|
|
154
|
+
function humanFriendlyFilename(root, filename) {
|
|
155
|
+
const absPath = filename;
|
|
156
|
+
const relPath = path.relative(root, filename);
|
|
157
|
+
return relPath.length < absPath.length ? relPath : absPath;
|
|
158
|
+
}
|
|
159
|
+
function isPluginFailure(r) {
|
|
160
|
+
if (r.conclusion === 'success' || r.violations.length > 0 || !r.metadata?.error) {
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
return { error: r.metadata.error };
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Report whether it is possible to suppress this violation.
|
|
167
|
+
*
|
|
168
|
+
* Violations that are reported as "fatal", or that have been converted from annotations, cannot be suppressed.
|
|
169
|
+
*/
|
|
170
|
+
function isSuppressibleViolation(violation) {
|
|
171
|
+
const isFatal = violation.severity?.toLowerCase() === 'fatal';
|
|
172
|
+
const isErrorAnnotation = violation.ruleMetadata?.['cdk:annotation'] && violation.severity?.toLowerCase() === 'error';
|
|
173
|
+
return !isFatal && !isErrorAnnotation;
|
|
126
174
|
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtZm9ybWF0dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZhbGlkYXRlLWZvcm1hdHRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsOERBS0M7QUFFRCxvREFnQkM7QUFyREQsa0NBQWtDO0FBRWxDLCtCQUErQjtBQUcvQiwyQ0FBbUM7QUFFbkMsMEVBQTBFO0FBQzFFLHVFQUF1RTtBQUN2RSw0REFBNEQ7QUFDNUQsTUFBTSxhQUFhLEdBQUcsK0JBQStCLENBQUM7QUFDdEQsU0FBUyxRQUFRLENBQUMsQ0FBcUI7SUFDckMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFVRCxNQUFNLGNBQWMsR0FBMkI7SUFDN0MsS0FBSyxFQUFFLENBQUM7SUFDUixLQUFLLEVBQUUsQ0FBQztJQUNSLE9BQU8sRUFBRSxDQUFDO0lBQ1YsSUFBSSxFQUFFLENBQUM7Q0FDUixDQUFDO0FBRUYsU0FBZ0IseUJBQXlCLENBQUMsTUFBc0I7SUFDOUQsNkVBQTZFO0lBQzdFLDZFQUE2RTtJQUM3RSxvRkFBb0Y7SUFDcEYsT0FBTyxZQUFFLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxNQUFzQjtJQUN6RCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFM0QsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sZ0RBQWdELENBQUM7SUFDMUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFD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RyxDQUFDLENBQUMsQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFMUMsNkVBQTZFO0lBQzdFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDOUYsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFOUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDMUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNyRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5SZXBvcnRKc29uLCBWaW9sYXRpbmdDb25zdHJ1Y3RKc29uIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGVSZXN1bHQgfSBmcm9tICcuLi8uLi9hY3Rpb25zL3ZhbGlkYXRlJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uTGVzc01lc3NhZ2UgfSBmcm9tICcuLi9pby9wcml2YXRlJztcbmltcG9ydCB7IElPIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5cbi8vIE1hdGNoZXMgQzAgY29udHJvbCBjaGFycyAoZXhjZXB0IFxcdCBhbmQgXFxuKSwgREVMLCBhbmQgQ1NJICg4LWJpdCBtb2RlKS5cbi8vIFN0cmlwcyBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMsIGNhcnJpYWdlIHJldHVybnMsIGJhY2tzcGFjZXMsIEJFTCwgYW5kXG4vLyBiaWRpcmVjdGlvbmFsIG92ZXJyaWRlcyB0aGF0IGNvdWxkIHNwb29mIHRlcm1pbmFsIG91dHB1dC5cbmNvbnN0IENPTlRST0xfQ0hBUlMgPSAvW1xceDAwLVxceDA4XFx4MEItXFx4MUZcXHg3RlxceDlCXS9nO1xuZnVuY3Rpb24gc2FuaXRpemUoczogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgcmV0dXJuIChzID8/ICcnKS5yZXBsYWNlKENPTlRST0xfQ0hBUlMsICfvv70nKTtcbn1cblxuaW50ZXJmYWNlIEZsYXR0ZW5lZFZpb2xhdGlvbiB7XG4gIHJlYWRvbmx5IHNldmVyaXR5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY29uc3RydWN0OiBWaW9sYXRpbmdDb25zdHJ1Y3RKc29uO1xufVxuXG5jb25zdCBTRVZFUklUWV9PUkRFUjogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgZmF0YWw6IDAsXG4gIGVycm9yOiAxLFxuICB3YXJuaW5nOiAyLFxuICBpbmZvOiAzLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhvc3RNZXNzYWdlRnJvbVZhbGlkYXRpb24ocmVzdWx0OiBWYWxpZGF0ZVJlc3VsdCk6IEFjdGlvbkxlc3NNZXNzYWdlPGFueT4ge1xuICAvLyBBbHdheXMgZW1pdCBhdCBpbmZvIGxldmVsIHNvIHRoZSBDTEkgSW9Ib3N0IGRvZXNuJ3Qgd3JhcCB0aGUgZW50aXJlIG91dHB1dFxuICAvLyBpbiBhIHNpbmdsZSBjb2xvci4gVGhlIGZvcm1hdHRlciBoYW5kbGVzIHBlci1zZXZlcml0eSBjb2xvcmluZyBpbnRlcm5hbGx5LlxuICAvLyBDb25zdW1lcnMgZGV0ZWN0IGZhaWx1cmUgdmlhIHRoZSBzdHJ1Y3R1cmVkIGBkYXRhLmNvbmNsdXNpb25gIGZpZWxkIG9yIGV4aXQgY29kZS5cbiAgcmV0dXJuIElPLkNES19UT09MS0lUX0k5NjAwLm1zZyhmb3JtYXRWYWxpZGF0ZVJlc3VsdChyZXN1bHQpLCByZXN1bHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VmFsaWRhdGVSZXN1bHQocmVzdWx0OiBWYWxpZGF0ZVJlc3VsdCk6IHN0cmluZyB7XG4gIGNvbnN0IHZpb2xhdGlvbnMgPSBmbGF0dGVuVmlvbGF0aW9ucyhyZXN1bHQucGx1Z2luUmVwb3J0cyk7XG5cbiAgaWYgKHZpb2xhdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdcXG5Qb2xpY3kgdmFsaWRhdGlvbiBwYXNzZWQuIE5vIHByb2JsZW1zIGZvdW5kLic7XG4gIH1cblxuICB2aW9sYXRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCBhT3JkZXIgPSBTRVZFUklUWV9PUkRFUlthLnNldmVyaXR5LnRvTG93ZXJDYXNlKCldID8/IDQ7XG4gICAgY29uc3QgYk9yZGVyID0gU0VWRVJJVFlfT1JERVJbYi5zZXZlcml0eS50b0xvd2VyQ2FzZSgpXSA/PyA0O1xuICAgIHJldHVybiBhT3JkZXIgLSBiT3JkZXI7XG4gIH0pO1xuXG4gIGNvbnN0IHRpdGxlID0gcmVzdWx0LnRpdGxlID8/ICdWYWxpZGF0aW9uIFJlcG9ydCc7XG4gIGNvbnN0IGJsb2NrcyA9IHZpb2xhdGlvbnMubWFwKCh2KSA9PiBmb3JtYXRWaW9sYXRpb25CbG9jayh2KSk7XG4gIHJldHVybiBgXFxuJHt0aXRsZX1cXG4keyctJy5yZXBlYXQodGl0bGUubGVuZ3RoKX1cXG5cXG4ke2Jsb2Nrcy5qb2luKCdcXG5cXG4nKX1gO1xufVxuXG5mdW5jdGlvbiBmbGF0dGVuVmlvbGF0aW9ucyhwbHVnaW5SZXBvcnRzOiBQbHVnaW5SZXBvcnRKc29uW10pOiBGbGF0dGVuZWRWaW9sYXRpb25bXSB7XG4gIGNvbnN0IHJlc3VsdDogRmxhdHRlbmVkVmlvbGF0aW9uW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJlcG9ydCBvZiBwbHVnaW5SZXBvcnRzKSB7XG4gICAgY29uc3QgcGx1Z2luTmFtZSA9IHJlcG9ydC5wbHVnaW5OYW1lO1xuXG4gICAgZm9yIChjb25zdCB2aW9sYXRpb24gb2YgcmVwb3J0LnZpb2xhdGlvbnMpIHtcbiAgICAgIGNvbnN0IHNldmVyaXR5ID0gbm9ybWFsaXplU2V2ZXJpdHkodmlvbGF0aW9uLnNldmVyaXR5KTtcblxuICAgICAgZm9yIChjb25zdCBjb25zdHJ1Y3Qgb2YgdmlvbGF0aW9uLnZpb2xhdGluZ0NvbnN0cnVjdHMpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goeyBzZXZlcml0eSwgZGVzY3JpcHRpb246IHZpb2xhdGlvbi5kZXNjcmlwdGlvbiwgcnVsZU5hbWU6IHZpb2xhdGlvbi5ydWxlTmFtZSwgcGx1Z2luTmFtZSwgY29uc3RydWN0IH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNldmVyaXR5KHNldmVyaXR5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICBpZiAoIXNldmVyaXR5KSByZXR1cm4gJ1dhcm5pbmcnO1xuICBjb25zdCBsb3dlciA9IHNldmVyaXR5LnRvTG93ZXJDYXNlKCk7XG4gIGlmIChsb3dlciA9PT0gJ2ZhdGFsJykgcmV0dXJuICdGYXRhbCc7XG4gIGlmIChsb3dlciA9PT0gJ2Vycm9yJykgcmV0dXJuICdFcnJvcic7XG4gIGlmIChsb3dlciA9PT0gJ3dhcm5pbmcnKSByZXR1cm4gJ1dhcm5pbmcnO1xuICBpZiAobG93ZXIgPT09ICdpbmZvJykgcmV0dXJuICdJbmZvJztcbiAgY29uc3Qgc2FmZSA9IHNhbml0aXplKHNldmVyaXR5KTtcbiAgcmV0dXJuIHNhZmUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzYWZlLnNsaWNlKDEpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRWaW9sYXRpb25CbG9jayh2OiBGbGF0dGVuZWRWaW9sYXRpb24pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldExlYWZMb2NhdGlvbih2LmNvbnN0cnVjdC5zdGFja1RyYWNlcyk7XG4gIGlmIChsb2NhdGlvbikge1xuICAgIGxpbmVzLnB1c2goY2hhbGsudW5kZXJsaW5lKHNhbml0aXplKGxvY2F0aW9uKSkpO1xuICB9XG5cbiAgY29uc3Qgc2V2ZXJpdHlDb2xvciA9IGdldFNldmVyaXR5Q29sb3Iodi5zZXZlcml0eSk7XG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gc3RyaXBBY2tUYWcoc2FuaXRpemUodi5kZXNjcmlwdGlvbikpO1xuICBjb25zdCBzZXZlcml0eUFuZERlc2MgPSBzZXZlcml0eUNvbG9yKGNoYWxrLmJvbGQoYCR7di5zZXZlcml0eX06ICR7ZGVzY3JpcHRpb259YCkpO1xuICBsaW5lcy5wdXNoKGAke3NldmVyaXR5QW5kRGVzY30gJHtzYW5pdGl6ZSh2LnBsdWdpbk5hbWUpfWApO1xuXG4gIGNvbnN0IGNvbnN0cnVjdEluZm8gPSBmb3JtYXRDb25zdHJ1Y3RJbmZvKHYuY29uc3RydWN0KTtcbiAgbGluZXMucHVzaChgICAgJHtjb25zdHJ1Y3RJbmZvfWApO1xuXG4gIGlmICh2LnNldmVyaXR5LnRvTG93ZXJDYXNlKCkgIT09ICdmYXRhbCcpIHtcbiAgICBjb25zdCBhY2tJZCA9IGAke3Nhbml0aXplKHYucGx1Z2luTmFtZSl9Ojoke3Nhbml0aXplKHYucnVsZU5hbWUpfWAucmVwbGFjZSgvIC9nLCAnLScpO1xuICAgIGxpbmVzLnB1c2goYCAgIEFja25vd2xlZGdlICcke2Fja0lkfSdgKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2V2ZXJpdHlDb2xvcihzZXZlcml0eTogc3RyaW5nKTogKHN0cjogc3RyaW5nKSA9PiBzdHJpbmcge1xuICBzd2l0Y2ggKHNldmVyaXR5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdmYXRhbCc6IHJldHVybiBjaGFsay5yZWQ7XG4gICAgY2FzZSAnZXJyb3InOiByZXR1cm4gY2hhbGsuYW5zaTI1NigyMDgpO1xuICAgIGNhc2UgJ3dhcm5pbmcnOiByZXR1cm4gY2hhbGsueWVsbG93O1xuICAgIGRlZmF1bHQ6IHJldHVybiBjaGFsay5ibHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdENvbnN0cnVjdEluZm8oY29uc3RydWN0OiBWaW9sYXRpbmdDb25zdHJ1Y3RKc29uKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGxvZ2ljYWxJZCA9IHNhbml0aXplKGNvbnN0cnVjdC5jbG91ZEZvcm1hdGlvblJlc291cmNlPy5sb2dpY2FsSWQpO1xuXG4gIGlmIChjb25zdHJ1Y3QuY29uc3RydWN0UGF0aCkge1xuICAgIGNvbnN0IGNQYXRoID0gc2FuaXRpemUoY29uc3RydWN0LmNvbnN0cnVjdFBhdGgpO1xuICAgIHBhcnRzLnB1c2gobG9naWNhbElkID8gYCR7Y2hhbGsuYm9sZChjUGF0aCl9ICgke2xvZ2ljYWxJZH0pYCA6IGNoYWxrLmJvbGQoY1BhdGgpKTtcbiAgfSBlbHNlIGlmIChsb2dpY2FsSWQpIHtcbiAgICBwYXJ0cy5wdXNoKGNoYWxrLmJvbGQobG9naWNhbElkKSk7XG4gIH1cblxuICBpZiAoY29uc3RydWN0LmNvbnN0cnVjdEZxbikge1xuICAgIHBhcnRzLnB1c2goc2FuaXRpemUoY29uc3RydWN0LmNvbnN0cnVjdEZxbikpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbn1cblxuZnVuY3Rpb24gc3RyaXBBY2tUYWcoZGVzY3JpcHRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBkZXNjcmlwdGlvbi5yZXBsYWNlKC9cXHMqXFxbYWNrOlxccypbXlxcXV0rXFxdXFxzKi9nLCAnJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBnZXRMZWFmTG9jYXRpb24oc3RhY2tUcmFjZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFzdGFja1RyYWNlcyB8fCBzdGFja1RyYWNlcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGxhc3RUcmFjZSA9IHN0YWNrVHJhY2VzW3N0YWNrVHJhY2VzLmxlbmd0aCAtIDFdO1xuICBjb25zdCBmcmFtZXMgPSBsYXN0VHJhY2Uuc3BsaXQoJ1xcbicpO1xuICBpZiAoZnJhbWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAvLyBGaW5kIHRoZSBmaXJzdCBmcmFtZSB0aGF0J3MgdXNlciBjb2RlIChub3QgaW4gbm9kZV9tb2R1bGVzIG9yIGF3cy1jZGstbGliKVxuICBjb25zdCB1c2VyRnJhbWUgPSBmcmFtZXMuZmluZChmID0+ICFmLmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSAmJiAhZi5pbmNsdWRlcygnYXdzLWNkay1saWInKSk7XG4gIGNvbnN0IGZyYW1lID0gKHVzZXJGcmFtZSA/PyBmcmFtZXNbMF0pLnRyaW0oKTtcblxuICBjb25zdCBtYXRjaCA9IGZyYW1lLm1hdGNoKC9cXCgoLispXFwpJC8pIHx8IGZyYW1lLm1hdGNoKC9hdFxccysoLispJC8pO1xuICBjb25zdCBsb2NhdGlvbiA9IG1hdGNoID8gbWF0Y2hbMV0gOiBmcmFtZTtcbiAgcmV0dXJuIHBhdGguaXNBYnNvbHV0ZShsb2NhdGlvbi5zcGxpdCgnOicpWzBdKSA/IHBhdGgucmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgbG9jYXRpb24pIDogbG9jYXRpb247XG59XG4iXX0=
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtZm9ybWF0dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZhbGlkYXRlLWZvcm1hdHRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSw4REFLQztBQUVELG9EQUVDO0FBRUQsMERBZ0JDO0FBbUpELHNEQUlDO0FBekxELGtDQUFrQztBQUVsQywrQkFBK0I7QUFHL0IsMkNBQW1DO0FBRW5DLFNBQWdCLHlCQUF5QixDQUFDLFFBQWdCLEVBQUUsTUFBc0I7SUFDaEYsNkVBQTZFO0lBQzdFLDZFQUE2RTtJQUM3RSxvRkFBb0Y7SUFDcEYsT0FBTyxZQUFFLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsRixDQUFDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsUUFBZ0IsRUFBRSxNQUFzQjtJQUMzRSxPQUFPLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCxTQUFnQix1QkFBdUIsQ0FBQyxRQUFnQixFQUFFLE9BQTJCO0lBQ25GLE1BQU0sMkJBQTJCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQzVGLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7SUFFbkYsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUVsRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FB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QVEsQ0FBQyxDQUFDO0lBQzlDLE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUM3RCxDQUFDO0FBTUQsU0FBUyxlQUFlLENBQUMsQ0FBbUI7SUFDMUMsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2hGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLHVCQUF1QixDQUFDLFNBQTBFO0lBQ3pHLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDO0lBQzlELE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxPQUFPLENBQUM7SUFDdEgsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpblJlcG9ydEpzb24sIFBvbGljeVZpb2xhdGlvbkpzb24sIFBvbGljeVZpb2xhdGlvblNldmVyaXR5LCBWaW9sYXRpbmdDb25zdHJ1Y3RKc29uIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGVSZXN1bHQgfSBmcm9tICcuLi8uLi9hY3Rpb25zL3ZhbGlkYXRlJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uTGVzc01lc3NhZ2UgfSBmcm9tICcuLi9pby9wcml2YXRlJztcbmltcG9ydCB7IElPIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBob3N0TWVzc2FnZUZyb21WYWxpZGF0aW9uKGZpbGVSb290OiBzdHJpbmcsIHJlc3VsdDogVmFsaWRhdGVSZXN1bHQpOiBBY3Rpb25MZXNzTWVzc2FnZTxhbnk+IHtcbiAgLy8gQWx3YXlzIGVtaXQgYXQgaW5mbyBsZXZlbCBzbyB0aGUgQ0xJIElvSG9zdCBkb2Vzbid0IHdyYXAgdGhlIGVudGlyZSBvdXRwdXRcbiAgLy8gaW4gYSBzaW5nbGUgY29sb3IuIFRoZSBmb3JtYXR0ZXIgaGFuZGxlcyBwZXItc2V2ZXJpdHkgY29sb3JpbmcgaW50ZXJuYWxseS5cbiAgLy8gQ29uc3VtZXJzIGRldGVjdCBmYWlsdXJlIHZpYSB0aGUgc3RydWN0dXJlZCBgZGF0YS5jb25jbHVzaW9uYCBmaWVsZCBvciBleGl0IGNvZGUuXG4gIHJldHVybiBJTy5DREtfVE9PTEtJVF9FOTYwMC5tc2coZm9ybWF0VmFsaWRhdGVSZXN1bHQoZmlsZVJvb3QsIHJlc3VsdCksIHJlc3VsdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWYWxpZGF0ZVJlc3VsdChmaWxlUm9vdDogc3RyaW5nLCByZXN1bHQ6IFZhbGlkYXRlUmVzdWx0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFZhbGlkYXRpb25SZXBvcnRzKGZpbGVSb290LCByZXN1bHQucGx1Z2luUmVwb3J0cykuam9pbignXFxuXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWYWxpZGF0aW9uUmVwb3J0cyhmaWxlUm9vdDogc3RyaW5nLCByZXBvcnRzOiBQbHVnaW5SZXBvcnRKc29uW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHN1Y2Nlc3NmdWxseUV4ZWN1dGVkUGx1Z2lucyA9IHJlcG9ydHMuZmlsdGVyKChyKSA9PiBpc1BsdWdpbkZhaWx1cmUocikgPT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IHBsdWdpbkZhaWx1cmVzID0gcmVwb3J0cy5tYXAoaXNQbHVnaW5GYWlsdXJlKS5maWx0ZXIoKGUpID0+IGUgIT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgdmlvbGF0aW9ucyA9IGZsYXR0ZW5WaW9sYXRpb25zKHN1Y2Nlc3NmdWxseUV4ZWN1dGVkUGx1Z2lucyk7XG5cbiAgdmlvbGF0aW9ucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgY29uc3QgYU9yZGVyID0gU0VWRVJJVFlfT1JERVJbYS5zZXZlcml0eS50b0xvd2VyQ2FzZSgpXSA/PyA0O1xuICAgIGNvbnN0IGJPcmRlciA9IFNFVkVSSVRZX09SREVSW2Iuc2V2ZXJpdHkudG9Mb3dlckNhc2UoKV0gPz8gNDtcbiAgICByZXR1cm4gYU9yZGVyIC0gYk9yZGVyO1xuICB9KTtcblxuICByZXR1cm4gW1xuICAgIC4uLnBsdWdpbkZhaWx1cmVzLm1hcChmb3JtYXRQbHVnaW5GYWlsdXJlKSxcbiAgICAuLi52aW9sYXRpb25zLm1hcCgodikgPT4gZm9ybWF0VmlvbGF0aW9uQmxvY2soZmlsZVJvb3QsIHYpKSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZmxhdHRlblZpb2xhdGlvbnMocmVwb3J0czogUGx1Z2luUmVwb3J0SnNvbltdKTogRmxhdHRlbmVkVmlvbGF0aW9uW10ge1xuICByZXR1cm4gcmVwb3J0cy5mbGF0TWFwKChyZXBvcnQpID0+IHtcbiAgICBjb25zdCBwbHVnaW5OYW1lID0gcmVwb3J0LnBsdWdpbk5hbWU7XG4gICAgcmV0dXJuIHJlcG9ydC52aW9sYXRpb25zLmZsYXRNYXAoKHZpb2xhdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHZpb2xhdGlvbi52aW9sYXRpbmdDb25zdHJ1Y3RzLm1hcCgoY29uc3RydWN0KSA9PiAoe1xuICAgICAgICBzZXZlcml0eTogbm9ybWFsaXplU2V2ZXJpdHkodmlvbGF0aW9uLnNldmVyaXR5KSxcbiAgICAgICAgZGVzY3JpcHRpb246IHZpb2xhdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgcnVsZU5hbWU6IHZpb2xhdGlvbi5ydWxlTmFtZSxcbiAgICAgICAgcGx1Z2luTmFtZSxcbiAgICAgICAgY29uc3RydWN0LFxuICAgICAgICBzdWdnZXN0ZWRGaXg6IHZpb2xhdGlvbi5zdWdnZXN0ZWRGaXgsXG4gICAgICAgIHJ1bGVNZXRhZGF0YTogdmlvbGF0aW9uLnJ1bGVNZXRhZGF0YSxcbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNldmVyaXR5KHNldmVyaXR5OiBQb2xpY3lWaW9sYXRpb25TZXZlcml0eSwgY3VzdG9tU2V2ZXJpdHk/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHNldmVyaXR5KSB7XG4gICAgY2FzZSAnZmF0YWwnOlxuICAgIGNhc2UgJ2Vycm9yJzpcbiAgICBjYXNlICd3YXJuaW5nJzpcbiAgICBjYXNlICdpbmZvJzpcbiAgICAgIHJldHVybiBzZXZlcml0eS50b1VwcGVyQ2FzZSgpO1xuICAgIGNhc2UgJ2N1c3RvbSc6XG4gICAgICByZXR1cm4gY3VzdG9tU2V2ZXJpdHkgPz8gJ0lORk8nO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFZpb2xhdGlvbkJsb2NrKGZpbGVSb290OiBzdHJpbmcsIHY6IEZsYXR0ZW5lZFZpb2xhdGlvbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gc291cmNlTG9jYXRpb24oZmlsZVJvb3QsIHYuY29uc3RydWN0LnN0YWNrVHJhY2VzKTtcbiAgaWYgKGxvY2F0aW9uKSB7XG4gICAgbGluZXMucHVzaChjaGFsay51bmRlcmxpbmUoc2FuaXRpemUobG9jYXRpb24pKSk7XG4gIH1cblxuICBsaW5lcy5wdXNoKFtcbiAgICBjaGFsay5ib2xkKGdldFNldmVyaXR5Q29sb3Iodi5zZXZlcml0eSkoc2FuaXRpemUodi5zZXZlcml0eSkpKSxcbiAgICBjaGFsay5ib2xkKHN0cmlwQWNrVGFnKHNhbml0aXplKHYuZGVzY3JpcHRpb24pKSksXG4gICAgY2hhbGsuZ3JleShgKCR7c2FuaXRpemUodi5wbHVnaW5OYW1lKX0pYCksXG4gIF0uam9pbignICcpKTtcblxuICBjb25zdCBjb25zdHJ1Y3RJbmZvID0gZm9ybWF0Q29uc3RydWN0SW5mbyhmaWxlUm9vdCwgdi5jb25zdHJ1Y3QpO1xuICBsaW5lcy5wdXNoKGAgICAke2NvbnN0cnVjdEluZm99YCk7XG5cbiAgaWYgKHYuc3VnZ2VzdGVkRml4KSB7XG4gICAgbGluZXMucHVzaChgICAgU3VnZ2VzdGVkIGZpeDogJHtzYW5pdGl6ZSh2LnN1Z2dlc3RlZEZpeCkucmVwbGFjZSgvXFxuL2csICdcXG4gICAnKX1gKTtcbiAgfVxuXG4gIGlmIChpc1N1cHByZXNzaWJsZVZpb2xhdGlvbih2KSkge1xuICAgIGNvbnN0IGFja0lkID0gYCR7c2FuaXRpemUodi5wbHVnaW5OYW1lKX06OiR7c2FuaXRpemUodi5ydWxlTmFtZSl9YC5yZXBsYWNlKC8gL2csICctJyk7XG4gICAgbGluZXMucHVzaChgICAgJHtjaGFsay5ncmV5KGBBY2tub3dsZWRnZSB3aXRoICcke2Fja0lkfSdgKX1gKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBub3QgYWNrbm93bGVkZ2VhYmxlLCB3ZSBzaG91bGQgc3RpbGwgc2hvdyB0aGUgcnVsZSBuYW1lIGZvciByZWZlcmVuY2UuXG4gICAgbGluZXMucHVzaChgICAgJHtjaGFsay5ncmV5KGBSdWxlICR7c2FuaXRpemUodi5ydWxlTmFtZSl9YCl9YCk7XG4gIH1cblxuICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGdldFNldmVyaXR5Q29sb3Ioc2V2ZXJpdHk6IHN0cmluZyk6IChzdHI6IHN0cmluZykgPT4gc3RyaW5nIHtcbiAgc3dpdGNoIChzZXZlcml0eS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnZmF0YWwnOiByZXR1cm4gY2hhbGsucmVkO1xuICAgIGNhc2UgJ2Vycm9yJzogcmV0dXJuIGNoYWxrLmFuc2kyNTYoMjA4KTtcbiAgICBjYXNlICd3YXJuaW5nJzogcmV0dXJuIGNoYWxrLnllbGxvdztcbiAgICBkZWZhdWx0OiByZXR1cm4gY2hhbGsuYmx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRQbHVnaW5GYWlsdXJlKGY6IFBsdWdpbkVycm9yKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke2NoYWxrLmFuc2kyNTYoMjA4KSgnRVJST1InKX0gJHtzYW5pdGl6ZShmLmVycm9yKX1gO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRDb25zdHJ1Y3RJbmZvKGZpbGVSb290OiBzdHJpbmcsIGNvbnN0cnVjdDogVmlvbGF0aW5nQ29uc3RydWN0SnNvbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBsb2dpY2FsSWQgPSBzYW5pdGl6ZShjb25zdHJ1Y3QuY2xvdWRGb3JtYXRpb25SZXNvdXJjZT8ubG9naWNhbElkKTtcblxuICBpZiAoY29uc3RydWN0LmNvbnN0cnVjdFBhdGgpIHtcbiAgICBjb25zdCBjUGF0aCA9IHNhbml0aXplKGNvbnN0cnVjdC5jb25zdHJ1Y3RQYXRoKTtcbiAgICBwYXJ0cy5wdXNoKGxvZ2ljYWxJZCA/IGAke2NoYWxrLmJvbGQoY1BhdGgpfSAoJHtsb2dpY2FsSWR9KWAgOiBjaGFsay5ib2xkKGNQYXRoKSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gTm8gY29uc3RydWN0IGluZm9ybWF0aW9uLCBzaG93IHRlbXBsYXRlIHBhdGggYW5kIGxvZ2ljYWwgSURcbiAgICBpZiAoY29uc3RydWN0LmNsb3VkRm9ybWF0aW9uUmVzb3VyY2U/LnRlbXBsYXRlUGF0aCkge1xuICAgICAgcGFydHMucHVzaChodW1hbkZyaWVuZGx5RmlsZW5hbWUoZmlsZVJvb3QsIHNhbml0aXplKGNvbnN0cnVjdC5jbG91ZEZvcm1hdGlvblJlc291cmNlLnRlbXBsYXRlUGF0aCkpKTtcbiAgICB9XG4gICAgaWYgKGxvZ2ljYWxJZCkge1xuICAgICAgcGFydHMucHVzaChjaGFsay5ib2xkKGxvZ2ljYWxJZCkpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb25zdHJ1Y3QuY29uc3RydWN0RnFuKSB7XG4gICAgcGFydHMucHVzaChjaGFsay5ncmV5KHNhbml0aXplKGNvbnN0cnVjdC5jb25zdHJ1Y3RGcW4pKSk7XG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignICcpO1xufVxuXG5mdW5jdGlvbiBzdHJpcEFja1RhZyhkZXNjcmlwdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRlc2NyaXB0aW9uLnJlcGxhY2UoL1xccypcXFthY2s6XFxzKlteXFxdXStcXF1cXHMqL2csICcnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIHNvdXJjZUxvY2F0aW9uKGZpbGVSb290OiBzdHJpbmcsIHN0YWNrVHJhY2VzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgdHJhY2Ugb2Ygc3RhY2tUcmFjZXMgPz8gW10pIHtcbiAgICBjb25zdCBmcmFtZSA9IGdldExlYWZMb2NhdGlvbih0cmFjZSk7XG4gICAgaWYgKGZyYW1lICYmIGZyYW1lLmZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gYCR7aHVtYW5GcmllbmRseUZpbGVuYW1lKGZpbGVSb290LCBmcmFtZS5maWxlTmFtZSl9OiR7ZnJhbWUuc291cmNlTG9jYXRpb259YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0TGVhZkxvY2F0aW9uKHN0YWNrVHJhY2U6IHN0cmluZykge1xuICBjb25zdCBmcmFtZXMgPSBzdGFja1RyYWNlLnNwbGl0KCdcXG4nKTtcbiAgaWYgKGZyYW1lcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8gRmluZCB0aGUgZmlyc3QgZnJhbWUgdGhhdCdzIHVzZXIgY29kZSAobm90IGluIG5vZGVfbW9kdWxlcyBvciBhd3MtY2RrLWxpYilcbiAgY29uc3QgdXNlckZyYW1lID0gZnJhbWVzLmZpbmQoZiA9PiAhZi5pbmNsdWRlcygnbm9kZV9tb2R1bGVzJykgJiYgIWYuaW5jbHVkZXMoJ2F3cy1jZGstbGliJykpO1xuICBjb25zdCBmcmFtZSA9ICh1c2VyRnJhbWUgPz8gZnJhbWVzWzBdKS50cmltKCk7XG5cbiAgY29uc3QgbWF0Y2ggPSBmcmFtZS5tYXRjaCgvXFwoKC4rKVxcKSQvKSB8fCBmcmFtZS5tYXRjaCgvYXRcXHMrKC4rKSQvKTtcbiAgY29uc3QgbG9jYXRpb24gPSBtYXRjaCA/IG1hdGNoWzFdIDogZnJhbWU7XG4gIHJldHVybiB7IGZpbGVOYW1lOiBsb2NhdGlvbi5zcGxpdCgnOicpWzBdLCBzb3VyY2VMb2NhdGlvbjogbG9jYXRpb24uc3BsaXQoJzonKS5zbGljZSgxKS5qb2luKCc6JykgfTtcbn1cblxuLy8gTWF0Y2hlcyBDMCBjb250cm9sIGNoYXJzIChleGNlcHQgXFx0IGFuZCBcXG4pLCBERUwsIGFuZCBDU0kgKDgtYml0IG1vZGUpLlxuLy8gU3RyaXBzIEFOU0kgZXNjYXBlIHNlcXVlbmNlcywgY2FycmlhZ2UgcmV0dXJucywgYmFja3NwYWNlcywgQkVMLCBhbmRcbi8vIGJpZGlyZWN0aW9uYWwgb3ZlcnJpZGVzIHRoYXQgY291bGQgc3Bvb2YgdGVybWluYWwgb3V0cHV0LlxuY29uc3QgQ09OVFJPTF9DSEFSUyA9IC9bXFx4MDAtXFx4MDhcXHgwQi1cXHgxRlxceDdGXFx4OUJdL2c7XG5mdW5jdGlvbiBzYW5pdGl6ZShzOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICByZXR1cm4gKHMgPz8gJycpLnJlcGxhY2UoQ09OVFJPTF9DSEFSUywgJ++/vScpO1xufVxuXG5leHBvcnQgdHlwZSBGbGF0dGVuZWRWaW9sYXRpb24gPVxuICAmIFBpY2s8UGx1Z2luUmVwb3J0SnNvbiwgJ3BsdWdpbk5hbWUnPlxuICAmIFBpY2s8UG9saWN5VmlvbGF0aW9uSnNvbiwgJ2Rlc2NyaXB0aW9uJyB8ICdydWxlTmFtZScgfCAnc3VnZ2VzdGVkRml4JyB8ICdydWxlTWV0YWRhdGEnPlxuICAmIHsgc2V2ZXJpdHk6IHN0cmluZzsgY29uc3RydWN0OiBWaW9sYXRpbmdDb25zdHJ1Y3RKc29uIH07XG5cbmNvbnN0IFNFVkVSSVRZX09SREVSOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICBmYXRhbDogMCxcbiAgZXJyb3I6IDEsXG4gIHdhcm5pbmc6IDIsXG4gIGluZm86IDMsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaHVtYW5GcmllbmRseUZpbGVuYW1lKHJvb3Q6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGFic1BhdGggPSBmaWxlbmFtZTtcbiAgY29uc3QgcmVsUGF0aCA9IHBhdGgucmVsYXRpdmUocm9vdCwgZmlsZW5hbWUpO1xuICByZXR1cm4gcmVsUGF0aC5sZW5ndGggPCBhYnNQYXRoLmxlbmd0aCA/IHJlbFBhdGggOiBhYnNQYXRoO1xufVxuXG5pbnRlcmZhY2UgUGx1Z2luRXJyb3Ige1xuICByZWFkb25seSBlcnJvcjogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBpc1BsdWdpbkZhaWx1cmUocjogUGx1Z2luUmVwb3J0SnNvbik6IFBsdWdpbkVycm9yIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHIuY29uY2x1c2lvbiA9PT0gJ3N1Y2Nlc3MnIHx8IHIudmlvbGF0aW9ucy5sZW5ndGggPiAwIHx8ICFyLm1ldGFkYXRhPy5lcnJvcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIHsgZXJyb3I6IHIubWV0YWRhdGEuZXJyb3IgfTtcbn1cblxuLyoqXG4gKiBSZXBvcnQgd2hldGhlciBpdCBpcyBwb3NzaWJsZSB0byBzdXBwcmVzcyB0aGlzIHZpb2xhdGlvbi5cbiAqXG4gKiBWaW9sYXRpb25zIHRoYXQgYXJlIHJlcG9ydGVkIGFzIFwiZmF0YWxcIiwgb3IgdGhhdCBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gYW5ub3RhdGlvbnMsIGNhbm5vdCBiZSBzdXBwcmVzc2VkLlxuICovXG5mdW5jdGlvbiBpc1N1cHByZXNzaWJsZVZpb2xhdGlvbih2aW9sYXRpb246IHsgc2V2ZXJpdHk/OiBzdHJpbmc7IHJ1bGVNZXRhZGF0YT86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfSk6IGJvb2xlYW4ge1xuICBjb25zdCBpc0ZhdGFsID0gdmlvbGF0aW9uLnNldmVyaXR5Py50b0xvd2VyQ2FzZSgpID09PSAnZmF0YWwnO1xuICBjb25zdCBpc0Vycm9yQW5ub3RhdGlvbiA9IHZpb2xhdGlvbi5ydWxlTWV0YWRhdGE/LlsnY2RrOmFubm90YXRpb24nXSAmJiB2aW9sYXRpb24uc2V2ZXJpdHk/LnRvTG93ZXJDYXNlKCkgPT09ICdlcnJvcic7XG4gIHJldHVybiAhaXNGYXRhbCAmJiAhaXNFcnJvckFubm90YXRpb247XG59XG4iXX0=
|
|
@@ -206,9 +206,16 @@ export interface HotswapResult extends Duration, HotswapDeploymentDetails {
|
|
|
206
206
|
/**
|
|
207
207
|
* Whether hotswapping happened or not.
|
|
208
208
|
*
|
|
209
|
-
* `false` indicates that the deployment
|
|
209
|
+
* `false` indicates that the deployment failed during the hotswap step or that the deployment
|
|
210
|
+
* could not be hotswapped and full deployment may be attempted as fallback.
|
|
210
211
|
*/
|
|
211
212
|
readonly hotswapped: boolean;
|
|
213
|
+
/**
|
|
214
|
+
* Whether a hotswap fallback deployment is being completed
|
|
215
|
+
*
|
|
216
|
+
* `true` indicates a full deployment is being attempted
|
|
217
|
+
*/
|
|
218
|
+
readonly hotswapFallback: boolean;
|
|
212
219
|
/**
|
|
213
220
|
* An error that occurred during the hotswap deployment, if any.
|
|
214
221
|
*
|
package/lib/payloads/hotswap.js
CHANGED
|
@@ -40,4 +40,4 @@ var NonHotswappableReason;
|
|
|
40
40
|
*/
|
|
41
41
|
NonHotswappableReason["NESTED_STACK_CREATION"] = "nested-stack-creation";
|
|
42
42
|
})(NonHotswappableReason || (exports.NonHotswappableReason = NonHotswappableReason = {}));
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhvdHN3YXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBaUZBLElBQVkscUJBcUNYO0FBckNELFdBQVkscUJBQXFCO0lBQy9COztPQUVHO0lBQ0gsc0NBQWEsQ0FBQTtJQUNiOztPQUVHO0lBQ0gsa0RBQXlCLENBQUE7SUFDekI7O09BRUc7SUFDSCwwQ0FBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILDBFQUFpRCxDQUFBO0lBQ2pEOztPQUVHO0lBQ0gsc0VBQTZDLENBQUE7SUFDN0M7O09BRUc7SUFDSCxnRUFBdUMsQ0FBQTtJQUN2Qzs7T0FFRztJQUNILGdFQUF1QyxDQUFBO0lBQ3ZDOztPQUVHO0lBQ0gsd0VBQStDLENBQUE7SUFDL0M7O09BRUc7SUFDSCx3RUFBK0MsQ0FBQTtBQUNqRCxDQUFDLEVBckNXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBcUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpJztcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlEaWZmZXJlbmNlLCBSZXNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0IHR5cGUgeyBEdXJhdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZU1ldGFkYXRhIH0gZnJvbSAnLi4vYXBpL3Jlc291cmNlLW1ldGFkYXRhL3Jlc291cmNlLW1ldGFkYXRhJztcbmV4cG9ydCB0eXBlIHsgUmVzb3VyY2VNZXRhZGF0YSB9IGZyb20gJy4uL2FwaS9yZXNvdXJjZS1tZXRhZGF0YS9yZXNvdXJjZS1tZXRhZGF0YSc7XG5cbi8qKlxuICogQSByZXNvdXJjZSBhZmZlY3RlZCBieSBhIGNoYW5nZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFmZmVjdGVkUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIGxvZ2ljYWwgSUQgb2YgdGhlIGFmZmVjdGVkIHJlc291cmNlIGluIHRoZSB0ZW1wbGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9naWNhbElkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gdHlwZSBvZiB0aGUgcmVzb3VyY2VcbiAgICogVGhpcyBjb3VsZCBiZSBhIGN1c3RvbSB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZnJpZW5kbHkgZGVzY3JpcHRpb24gb2YgdGhlIGFmZmVjdGVkIHJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwaHlzaWNhbCBuYW1lIG9mIHRoZSByZXNvdXJjZSB3aGVuIGRlcGxveWVkLlxuICAgKlxuICAgKiBBIHBoeXNpY2FsIG5hbWUgaXMgbm90IGFsd2F5cyBhdmFpbGFibGUsIGUuZy4gbmV3IHJlc291cmNlcyB3aWxsIG5vdCBoYXZlIG9uZSB1bnRpbCBhZnRlciB0aGUgZGVwbG95bWVudFxuICAgKi9cbiAgcmVhZG9ubHkgcGh5c2ljYWxOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogUmVzb3VyY2UgbWV0YWRhdGEgYXR0YWNoZWQgdG8gdGhlIGxvZ2ljYWwgaWQgZnJvbSB0aGUgY2xvdWQgYXNzZW1ibHlcbiAgICpcbiAgICogVGhpcyBpcyBvbmx5IHByZXNlbnQgaWYgdGhlIHJlc291cmNlIGlzIHByZXNlbnQgaW4gdGhlIGN1cnJlbnQgQ2xvdWQgQXNzZW1ibHksXG4gICAqIGkuZS4gcmVzb3VyY2UgZGVsZXRpb25zIHdpbGwgbm90IGhhdmUgbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IFJlc291cmNlTWV0YWRhdGE7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNoYW5nZSBpbiBhIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIGxvZ2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIHdoaWNoIGlzIGJlaW5nIGNoYW5nZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2ljYWxJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHZhbHVlIHRoZSByZXNvdXJjZSBpcyBiZWluZyB1cGRhdGVkIGZyb21cbiAgICovXG4gIHJlYWRvbmx5IG9sZFZhbHVlOiBSZXNvdXJjZTtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0aGUgcmVzb3VyY2UgaXMgYmVpbmcgdXBkYXRlZCB0b1xuICAgKi9cbiAgcmVhZG9ubHkgbmV3VmFsdWU6IFJlc291cmNlO1xuICAvKipcbiAgICogVGhlIGNoYW5nZXMgbWFkZSB0byB0aGUgcmVzb3VyY2UgcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydHlVcGRhdGVzOiBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eURpZmZlcmVuY2U8dW5rbm93bj4+
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhvdHN3YXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBaUZBLElBQVkscUJBcUNYO0FBckNELFdBQVkscUJBQXFCO0lBQy9COztPQUVHO0lBQ0gsc0NBQWEsQ0FBQTtJQUNiOztPQUVHO0lBQ0gsa0RBQXlCLENBQUE7SUFDekI7O09BRUc7SUFDSCwwQ0FBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILDBFQUFpRCxDQUFBO0lBQ2pEOztPQUVHO0lBQ0gsc0VBQTZDLENBQUE7SUFDN0M7O09BRUc7SUFDSCxnRUFBdUMsQ0FBQTtJQUN2Qzs7T0FFRztJQUNILGdFQUF1QyxDQUFBO0lBQ3ZDOztPQUVHO0lBQ0gsd0VBQStDLENBQUE7SUFDL0M7O09BRUc7SUFDSCx3RUFBK0MsQ0FBQTtBQUNqRCxDQUFDLEVBckNXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBcUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpJztcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlEaWZmZXJlbmNlLCBSZXNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0IHR5cGUgeyBEdXJhdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZU1ldGFkYXRhIH0gZnJvbSAnLi4vYXBpL3Jlc291cmNlLW1ldGFkYXRhL3Jlc291cmNlLW1ldGFkYXRhJztcbmV4cG9ydCB0eXBlIHsgUmVzb3VyY2VNZXRhZGF0YSB9IGZyb20gJy4uL2FwaS9yZXNvdXJjZS1tZXRhZGF0YS9yZXNvdXJjZS1tZXRhZGF0YSc7XG5cbi8qKlxuICogQSByZXNvdXJjZSBhZmZlY3RlZCBieSBhIGNoYW5nZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFmZmVjdGVkUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIGxvZ2ljYWwgSUQgb2YgdGhlIGFmZmVjdGVkIHJlc291cmNlIGluIHRoZSB0ZW1wbGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9naWNhbElkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gdHlwZSBvZiB0aGUgcmVzb3VyY2VcbiAgICogVGhpcyBjb3VsZCBiZSBhIGN1c3RvbSB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZnJpZW5kbHkgZGVzY3JpcHRpb24gb2YgdGhlIGFmZmVjdGVkIHJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwaHlzaWNhbCBuYW1lIG9mIHRoZSByZXNvdXJjZSB3aGVuIGRlcGxveWVkLlxuICAgKlxuICAgKiBBIHBoeXNpY2FsIG5hbWUgaXMgbm90IGFsd2F5cyBhdmFpbGFibGUsIGUuZy4gbmV3IHJlc291cmNlcyB3aWxsIG5vdCBoYXZlIG9uZSB1bnRpbCBhZnRlciB0aGUgZGVwbG95bWVudFxuICAgKi9cbiAgcmVhZG9ubHkgcGh5c2ljYWxOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogUmVzb3VyY2UgbWV0YWRhdGEgYXR0YWNoZWQgdG8gdGhlIGxvZ2ljYWwgaWQgZnJvbSB0aGUgY2xvdWQgYXNzZW1ibHlcbiAgICpcbiAgICogVGhpcyBpcyBvbmx5IHByZXNlbnQgaWYgdGhlIHJlc291cmNlIGlzIHByZXNlbnQgaW4gdGhlIGN1cnJlbnQgQ2xvdWQgQXNzZW1ibHksXG4gICAqIGkuZS4gcmVzb3VyY2UgZGVsZXRpb25zIHdpbGwgbm90IGhhdmUgbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IFJlc291cmNlTWV0YWRhdGE7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNoYW5nZSBpbiBhIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIGxvZ2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIHdoaWNoIGlzIGJlaW5nIGNoYW5nZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2ljYWxJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHZhbHVlIHRoZSByZXNvdXJjZSBpcyBiZWluZyB1cGRhdGVkIGZyb21cbiAgICovXG4gIHJlYWRvbmx5IG9sZFZhbHVlOiBSZXNvdXJjZTtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0aGUgcmVzb3VyY2UgaXMgYmVpbmcgdXBkYXRlZCB0b1xuICAgKi9cbiAgcmVhZG9ubHkgbmV3VmFsdWU6IFJlc291cmNlO1xuICAvKipcbiAgICogVGhlIGNoYW5nZXMgbWFkZSB0byB0aGUgcmVzb3VyY2UgcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydHlVcGRhdGVzOiBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eURpZmZlcmVuY2U8dW5rbm93bj4+O1xuICAvKipcbiAgICogUmVzb3VyY2UgbWV0YWRhdGEgYXR0YWNoZWQgdG8gdGhlIGxvZ2ljYWwgaWQgZnJvbSB0aGUgY2xvdWQgYXNzZW1ibHlcbiAgICpcbiAgICogVGhpcyBpcyBvbmx5IHByZXNlbnQgaWYgdGhlIHJlc291cmNlIGlzIHByZXNlbnQgaW4gdGhlIGN1cnJlbnQgQ2xvdWQgQXNzZW1ibHksXG4gICAqIGkuZS4gcmVzb3VyY2UgZGVsZXRpb25zIHdpbGwgbm90IGhhdmUgbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IFJlc291cmNlTWV0YWRhdGE7XG59XG5cbi8qKlxuICogQSBjaGFuZ2UgdGhhdCBjYW4gYmUgaG90c3dhcHBlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvdHN3YXBwYWJsZUNoYW5nZSB7XG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgY2hhbmdlIHRoYXQgaXMgY2F1c2luZyB0aGUgaG90c3dhcC5cbiAgICovXG4gIHJlYWRvbmx5IGNhdXNlOiBSZXNvdXJjZUNoYW5nZTtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiByZXNvdXJjZXMgdGhhdCBhcmUgYmVpbmcgaG90c3dhcHBlZCBhcyBwYXJ0IG9mIHRoZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlczogQWZmZWN0ZWRSZXNvdXJjZVtdO1xufVxuXG5leHBvcnQgZW51bSBOb25Ib3Rzd2FwcGFibGVSZWFzb24ge1xuICAvKipcbiAgICogVGFncyBhcmUgbm90IGhvdHN3YXBwYWJsZVxuICAgKi9cbiAgVEFHUyA9ICd0YWdzJyxcbiAgLyoqXG4gICAqIENoYW5nZWQgcmVzb3VyY2UgcHJvcGVydGllcyBhcmUgbm90IGhvdHN3YXBwYWJsZSBvbiB0aGlzIHJlc291cmNlIHR5cGVcbiAgICovXG4gIFBST1BFUlRJRVMgPSAncHJvcGVydGllcycsXG4gIC8qKlxuICAgKiBBIHN0YWNrIG91dHB1dCBoYXMgY2hhbmdlZFxuICAgKi9cbiAgT1VUUFVUID0gJ291dHB1dCcsXG4gIC8qKlxuICAgKiBBIGRlcGVuZGFudCByZXNvdXJjZSBpcyBub3QgaG90c3dhcHBhYmxlXG4gICAqL1xuICBERVBFTkRFTkNZX1VOU1VQUE9SVEVEID0gJ2RlcGVuZGVuY3ktdW5zdXBwb3J0ZWQnLFxuICAvKipcbiAgICogVGhlIHJlc291cmNlIHR5cGUgaXMgbm90IGhvdHN3YXBwYWJsZVxuICAgKi9cbiAgUkVTT1VSQ0VfVU5TVVBQT1JURUQgPSAncmVzb3VyY2UtdW5zdXBwb3J0ZWQnLFxuICAvKipcbiAgICogVGhlIHJlc291cmNlIGlzIGNyZWF0ZWQgaW4gdGhlIGRlcGxveW1lbnRcbiAgICovXG4gIFJFU09VUkNFX0NSRUFUSU9OID0gJ3Jlc291cmNlLWNyZWF0aW9uJyxcbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBpcyByZW1vdmVkIGluIHRoZSBkZXBsb3ltZW50XG4gICAqL1xuICBSRVNPVVJDRV9ERUxFVElPTiA9ICdyZXNvdXJjZS1kZWxldGlvbicsXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgaWRlbnRpZmllZCBieSB0aGUgbG9naWNhbCBpZCBoYXMgaXRzIHR5cGUgY2hhbmdlZFxuICAgKi9cbiAgUkVTT1VSQ0VfVFlQRV9DSEFOR0VEID0gJ3Jlc291cmNlLXR5cGUtY2hhbmdlZCcsXG4gIC8qKlxuICAgKiBUaGUgbmVzdGVkIHN0YWNrIGlzIGNyZWF0ZWQgaW4gdGhlIGRlcGxveW1lbnRcbiAgICovXG4gIE5FU1RFRF9TVEFDS19DUkVBVElPTiA9ICduZXN0ZWQtc3RhY2stY3JlYXRpb24nLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlamVjdGlvblN1YmplY3Qge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIHJlamVjdGlvbiBzdWJqZWN0LCBlLmcuIFJlc291cmNlIG9yIE91dHB1dFxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9naWNhbCBJRCBvZiB0aGUgY2hhbmdlIHRoYXQgaXMgbm90IGhvdHN3YXBwYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9naWNhbElkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXNvdXJjZSBtZXRhZGF0YSBhdHRhY2hlZCB0byB0aGUgbG9naWNhbCBpZCBmcm9tIHRoZSBjbG91ZCBhc3NlbWJseVxuICAgKlxuICAgKiBUaGlzIGlzIG9ubHkgcHJlc2VudCBpZiB0aGUgcmVzb3VyY2UgaXMgcHJlc2VudCBpbiB0aGUgY3VycmVudCBDbG91ZCBBc3NlbWJseSxcbiAgICogaS5lLiByZXNvdXJjZSBkZWxldGlvbnMgd2lsbCBub3QgaGF2ZSBtZXRhZGF0YS5cbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogUmVzb3VyY2VNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVN1YmplY3QgZXh0ZW5kcyBSZWplY3Rpb25TdWJqZWN0IHtcbiAgLyoqXG4gICAqIEEgcmVqZWN0ZWQgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdSZXNvdXJjZSc7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgcmVqZWN0ZWQgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlVHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgcHJvcGVydGllcyB0aGF0IGFyZSBjYXVzZSBmb3IgdGhlIHJlamVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVqZWN0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0U3ViamVjdCBleHRlbmRzIFJlamVjdGlvblN1YmplY3Qge1xuICAvKipcbiAgICogQSByZWplY3RlZCBvdXRwdXRcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdPdXRwdXQnO1xufVxuXG4vKipcbiAqIEEgY2hhbmdlIHRoYXQgY2FuIG5vdCBiZSBob3Rzd2FwcGVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9uSG90c3dhcHBhYmxlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFRoZSBzdWJqZWN0IG9mIHRoZSBjaGFuZ2UgdGhhdCB3YXMgcmVqZWN0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHN1YmplY3Q6IFJlc291cmNlU3ViamVjdCB8IE91dHB1dFN1YmplY3Q7XG4gIC8qKlxuICAgKiBXaHkgd2FzIHRoaXMgY2hhbmdlIHdhcyBkZWVtZWQgbm9uLWhvdHN3YXBwYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBOb25Ib3Rzd2FwcGFibGVSZWFzb247XG4gIC8qKlxuICAgKiBUZWxscyB0aGUgdXNlciBleGFjdGx5IHdoeSB0aGlzIGNoYW5nZSB3YXMgZGVlbWVkIG5vbi1ob3Rzd2FwcGFibGUgYW5kIHdoYXQgaXRzIGxvZ2ljYWwgSUQgaXMuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIGBkaXNwbGF5UmVhc29uYCBkZWZhdWx0IHRvIHN0YXRlIHRoYXQgdGhlIHByb3BlcnRpZXMgbGlzdGVkIGluIGByZWplY3RlZENoYW5nZXNgIGFyZSBub3QgaG90c3dhcHBhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIb3Rzd2FwRGVwbG95bWVudEF0dGVtcHQge1xuICAvKipcbiAgICogVGhlIHN0YWNrIHRoYXQncyBjdXJyZW50bHkgYmVpbmcgZGVwbG95ZWRcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RlIHRoZSBob3Rzd2FwIGRlcGxveW1lbnQgd2FzIGluaXRpYXRlZCB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZTogJ2hvdHN3YXAtb25seScgfCAnZmFsbC1iYWNrJztcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIGhvdHN3YXAgZGVwbG95bWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvdHN3YXBEZXBsb3ltZW50RGV0YWlscyB7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdGhhdCdzIGN1cnJlbnRseSBiZWluZyBkZXBsb3llZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdDtcblxuICAvKipcbiAgICogVGhlIG1vZGUgdGhlIGhvdHN3YXAgZGVwbG95bWVudCB3YXMgaW5pdGlhdGVkIHdpdGguXG4gICAqL1xuICByZWFkb25seSBtb2RlOiAnaG90c3dhcC1vbmx5JyB8ICdmYWxsLWJhY2snO1xuICAvKipcbiAgICogVGhlIGNoYW5nZXMgdGhhdCB3ZXJlIGRlZW1lZCBob3Rzd2FwcGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGhvdHN3YXBwYWJsZUNoYW5nZXM6IEhvdHN3YXBwYWJsZUNoYW5nZVtdO1xuICAvKipcbiAgICogVGhlIGNoYW5nZXMgdGhhdCB3ZXJlIGRlZW1lZCBub3QgaG90c3dhcHBhYmxlXG4gICAqL1xuICByZWFkb25seSBub25Ib3Rzd2FwcGFibGVDaGFuZ2VzOiBOb25Ib3Rzd2FwcGFibGVDaGFuZ2VbXTtcbn1cblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIGFuIGF0dGVtcHRlZCBob3Rzd2FwIGRlcGxveW1lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3Rzd2FwUmVzdWx0IGV4dGVuZHMgRHVyYXRpb24sIEhvdHN3YXBEZXBsb3ltZW50RGV0YWlscyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGhvdHN3YXBwaW5nIGhhcHBlbmVkIG9yIG5vdC5cbiAgICpcbiAgICogYGZhbHNlYCBpbmRpY2F0ZXMgdGhhdCB0aGUgZGVwbG95bWVudCBmYWlsZWQgZHVyaW5nIHRoZSBob3Rzd2FwIHN0ZXAgb3IgdGhhdCB0aGUgZGVwbG95bWVudFxuICAgKiBjb3VsZCBub3QgYmUgaG90c3dhcHBlZCBhbmQgZnVsbCBkZXBsb3ltZW50IG1heSBiZSBhdHRlbXB0ZWQgYXMgZmFsbGJhY2suXG4gICAqL1xuICByZWFkb25seSBob3Rzd2FwcGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgaG90c3dhcCBmYWxsYmFjayBkZXBsb3ltZW50IGlzIGJlaW5nIGNvbXBsZXRlZFxuICAgKlxuICAgKiBgdHJ1ZWAgaW5kaWNhdGVzIGEgZnVsbCBkZXBsb3ltZW50IGlzIGJlaW5nIGF0dGVtcHRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaG90c3dhcEZhbGxiYWNrOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbiBlcnJvciB0aGF0IG9jY3VycmVkIGR1cmluZyB0aGUgaG90c3dhcCBkZXBsb3ltZW50LCBpZiBhbnkuXG4gICAqXG4gICAqIFdoZW4gc2V0LCBgaG90c3dhcHBlZGAgd2lsbCBiZSBgZmFsc2VgLiBUaGUgZXJyb3IgaXMgY2FwdHVyZWQgc28gdGhhdFxuICAgKiB0aGUgaG90c3dhcCBzcGFuIGNhbiBiZSBlbmRlZCB3aXRoIGZ1bGwgY29udGV4dCBiZWZvcmUgcmUtdGhyb3dpbmcuXG4gICAqL1xuICByZWFkb25seSBlcnJvcj86IEVycm9yO1xufVxuIl19
|
package/lib/private/tools.js
CHANGED
|
@@ -17,9 +17,11 @@ var require_zip = __commonJS({
|
|
|
17
17
|
exports2.zipString = zipString;
|
|
18
18
|
var fs_1 = require("fs");
|
|
19
19
|
var path = require("path");
|
|
20
|
-
var stream_1 = require("stream");
|
|
21
20
|
var fast_glob_1 = require("fast-glob");
|
|
22
|
-
var
|
|
21
|
+
var yazl_1 = require("yazl");
|
|
22
|
+
function epoch() {
|
|
23
|
+
return new Date(1980, 0, 1, 0, 0, 0);
|
|
24
|
+
}
|
|
23
25
|
async function zipDirectory(directory, outputFile, eventEmitter = () => {
|
|
24
26
|
}) {
|
|
25
27
|
const temporaryOutputFile = `${outputFile}.${randomString()}._tmp`;
|
|
@@ -29,20 +31,18 @@ var require_zip = __commonJS({
|
|
|
29
31
|
function zipString(fileName, rawString) {
|
|
30
32
|
return new Promise((resolve, reject) => {
|
|
31
33
|
const buffers = [];
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
name: fileName,
|
|
43
|
-
date: /* @__PURE__ */ new Date("1980-01-01T00:00:00.000Z")
|
|
34
|
+
const zip = new yazl_1.ZipFile();
|
|
35
|
+
zip.outputStream.on("data", (chunk) => buffers.push(chunk));
|
|
36
|
+
zip.outputStream.on("error", reject);
|
|
37
|
+
zip.outputStream.on("end", () => resolve(Buffer.concat(buffers)));
|
|
38
|
+
zip.addBuffer(Buffer.from(rawString), fileName, {
|
|
39
|
+
mtime: epoch(),
|
|
40
|
+
// reset date to get the same hash for the same content
|
|
41
|
+
// Only emit the DOS timestamp (no UTC "universal time" extended field),
|
|
42
|
+
// so the archive bytes do not depend on the machine's timezone.
|
|
43
|
+
forceDosTimestamp: true
|
|
44
44
|
});
|
|
45
|
-
|
|
45
|
+
zip.end();
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
function writeZipFile(directory, outputFile) {
|
|
@@ -54,23 +54,25 @@ var require_zip = __commonJS({
|
|
|
54
54
|
cwd: directory
|
|
55
55
|
};
|
|
56
56
|
const files = (0, fast_glob_1.globSync)("**", globOptions);
|
|
57
|
+
const zip = new yazl_1.ZipFile();
|
|
58
|
+
zip.outputStream.on("error", fail);
|
|
57
59
|
const output = (0, fs_1.createWriteStream)(outputFile);
|
|
58
|
-
|
|
59
|
-
archive.on("warning", fail);
|
|
60
|
-
archive.on("error", fail);
|
|
60
|
+
output.on("error", fail);
|
|
61
61
|
output.once("close", ok);
|
|
62
|
-
|
|
62
|
+
zip.outputStream.pipe(output);
|
|
63
63
|
for (const file of files) {
|
|
64
64
|
const fullPath = path.resolve(directory, file);
|
|
65
65
|
const [data, stat] = await Promise.all([fs_1.promises.readFile(fullPath), fs_1.promises.stat(fullPath)]);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
date: /* @__PURE__ */ new Date("1980-01-01T00:00:00.000Z"),
|
|
66
|
+
zip.addBuffer(data, file, {
|
|
67
|
+
mtime: epoch(),
|
|
69
68
|
// reset dates to get the same hash for the same content
|
|
70
|
-
mode: stat.mode
|
|
69
|
+
mode: stat.mode,
|
|
70
|
+
// Only emit the DOS timestamp (no UTC "universal time" extended field),
|
|
71
|
+
// so the archive bytes do not depend on the machine's timezone.
|
|
72
|
+
forceDosTimestamp: true
|
|
71
73
|
});
|
|
72
74
|
}
|
|
73
|
-
|
|
75
|
+
zip.end();
|
|
74
76
|
});
|
|
75
77
|
}
|
|
76
78
|
async function moveIntoPlace(source, target, eventEmitter) {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type * as cxschema from '@aws-cdk/cloud-assembly-schema';
|
|
2
|
+
import type { StackCollection } from '../../api/cloud-assembly/stack-collection';
|
|
3
|
+
/**
|
|
4
|
+
* Collect annotation metadata (warnings and errors) from the construct tree
|
|
5
|
+
* and convert them into a NamedValidationPluginReport that can be merged
|
|
6
|
+
* into the same report pipeline as plugin violations.
|
|
7
|
+
*
|
|
8
|
+
* Effectively the same as what happens here:
|
|
9
|
+
* <https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/core/lib/private/collect-annotation-report.ts>
|
|
10
|
+
*/
|
|
11
|
+
export declare function collectAnnotationReport(stacks: StackCollection): cxschema.PluginReportJson;
|
|
12
|
+
//# sourceMappingURL=collect-annotation-report.d.ts.map
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.collectAnnotationReport = collectAnnotationReport;
|
|
4
|
+
const cxapi = require("@aws-cdk/cloud-assembly-api");
|
|
5
|
+
const ANNOTATION_PLUGIN_NAME = 'Construct Annotations';
|
|
6
|
+
/**
|
|
7
|
+
* Collect annotation metadata (warnings and errors) from the construct tree
|
|
8
|
+
* and convert them into a NamedValidationPluginReport that can be merged
|
|
9
|
+
* into the same report pipeline as plugin violations.
|
|
10
|
+
*
|
|
11
|
+
* Effectively the same as what happens here:
|
|
12
|
+
* <https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/core/lib/private/collect-annotation-report.ts>
|
|
13
|
+
*/
|
|
14
|
+
function collectAnnotationReport(stacks) {
|
|
15
|
+
// The return type requires that we combine violations by rule, so we have to group them first here.
|
|
16
|
+
const ruleMap = new Map();
|
|
17
|
+
for (const stack of stacks.stackArtifacts) {
|
|
18
|
+
for (const entry of stack.messages) {
|
|
19
|
+
let severity;
|
|
20
|
+
switch (entry.level) {
|
|
21
|
+
case cxapi.SynthesisMessageLevel.WARNING:
|
|
22
|
+
severity = 'warning';
|
|
23
|
+
break;
|
|
24
|
+
case cxapi.SynthesisMessageLevel.ERROR:
|
|
25
|
+
severity = 'error';
|
|
26
|
+
break;
|
|
27
|
+
case cxapi.SynthesisMessageLevel.INFO:
|
|
28
|
+
severity = 'info';
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
const { message, ruleName } = splitDescriptionAndId(String(entry.entry.data));
|
|
32
|
+
const ruleKey = `${ruleName}|${severity}|${message}`;
|
|
33
|
+
let violation = ruleMap.get(ruleKey);
|
|
34
|
+
if (!violation) {
|
|
35
|
+
violation = {
|
|
36
|
+
ruleName: ruleName ?? `${severity}-annotation`,
|
|
37
|
+
description: message,
|
|
38
|
+
severity,
|
|
39
|
+
violatingConstructs: [],
|
|
40
|
+
ruleMetadata: {
|
|
41
|
+
'cdk:annotation': 'true',
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
ruleMap.set(ruleKey, violation);
|
|
45
|
+
}
|
|
46
|
+
violation.violatingConstructs.push({
|
|
47
|
+
constructPath: entry.id.replace(/^\//, ''), // remove leading slash
|
|
48
|
+
// TODO: see if this information can be obtained from tree.json
|
|
49
|
+
// cloudFormationResource
|
|
50
|
+
// constructFqn:
|
|
51
|
+
// libraryVersion
|
|
52
|
+
// TODO: see if we can get this from metadata stack traces. We may need to re-enable them for
|
|
53
|
+
// annotations in the core library. Otherwise we should probably get a stack trace to the resource itself.
|
|
54
|
+
// stackTraces
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const violations = Array.from(ruleMap.values());
|
|
59
|
+
const hasErrors = violations.some(v => v.severity === 'error');
|
|
60
|
+
return {
|
|
61
|
+
pluginName: ANNOTATION_PLUGIN_NAME,
|
|
62
|
+
conclusion: hasErrors ? 'failure' : 'success',
|
|
63
|
+
violations,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Annotations have IDs in two places:
|
|
68
|
+
*
|
|
69
|
+
* - Warnings have `[ack:<id>]` in the message.
|
|
70
|
+
* - Errors have `(<namespace>::<id>)` in the message.
|
|
71
|
+
*
|
|
72
|
+
* Separate the rule name from the rest of the description.
|
|
73
|
+
*/
|
|
74
|
+
function splitDescriptionAndId(message) {
|
|
75
|
+
const ackMatch = message.match(/\[ack: ([^\]]+)\]/);
|
|
76
|
+
if (ackMatch) {
|
|
77
|
+
return { message: message.replace(ackMatch[0], '').trim(), ruleName: ackMatch[1] };
|
|
78
|
+
}
|
|
79
|
+
const idMatch = message.match(/\(([^()]+::[^()]+)\)$/);
|
|
80
|
+
if (idMatch) {
|
|
81
|
+
return { message: message.replace(idMatch[0], '').trim(), ruleName: idMatch[1] };
|
|
82
|
+
}
|
|
83
|
+
return { message };
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdC1hbm5vdGF0aW9uLXJlcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbGxlY3QtYW5ub3RhdGlvbi1yZXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFjQSwwREEwREM7QUF4RUQscURBQXFEO0FBSXJELE1BQU0sc0JBQXNCLEdBQUcsdUJBQXVCLENBQUM7QUFFdkQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLE1BQXVCO0lBQzdELG9HQUFvRztJQUNwRyxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBd0MsQ0FBQztJQUVoRSxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFFBQXNELENBQUM7WUFFM0QsUUFBUSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQU87b0JBQ3RDLFFBQVEsR0FBRyxTQUFTLENBQUM7b0JBQ3JCLE1BQU07Z0JBQ1IsS0FBSyxLQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSztvQkFDcEMsUUFBUSxHQUFHLE9BQU8sQ0FBQztvQkFDbkIsTUFBTTtnQkFDUixLQUFLLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJO29CQUNuQyxRQUFRLEdBQUcsTUFBTSxDQUFDO29CQUNsQixNQUFNO1lBQ1YsQ0FBQztZQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM5RSxNQUFNLE9BQU8sR0FBRyxHQUFHLFFBQVEsSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFLENBQUM7WUFDckQsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2YsU0FBUyxHQUFHO29CQUNWLFFBQVEsRUFBRSxRQUFRLElBQUksR0FBRyxRQUFRLGFBQWE7b0JBQzlDLFdBQVcsRUFBRSxPQUFPO29CQUNwQixRQUFRO29CQUNSLG1CQUFtQixFQUFFLEVBQUU7b0JBQ3ZCLFlBQVksRUFBRTt3QkFDWixnQkFBZ0IsRUFBRSxNQUFNO3FCQUN6QjtpQkFDRixDQUFDO2dCQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFFRCxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUNqQyxhQUFhLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLHVCQUF1QjtnQkFFbkUsK0RBQStEO2dCQUMvRCx5QkFBeUI7Z0JBQ3pCLGdCQUFnQjtnQkFDaEIsaUJBQWlCO2dCQUVqQiw2RkFBNkY7Z0JBQzdGLDBHQUEwRztnQkFDMUcsY0FBYzthQUNmLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNoRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQztJQUMvRCxPQUFPO1FBQ0wsVUFBVSxFQUFFLHNCQUFzQjtRQUNsQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDN0MsVUFBVTtLQUNYLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMscUJBQXFCLENBQUMsT0FBZTtJQUM1QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDcEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JGLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdkQsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ25GLENBQUM7SUFFRCxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgdHlwZSAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2FwaS9jbG91ZC1hc3NlbWJseS9zdGFjay1jb2xsZWN0aW9uJztcblxuY29uc3QgQU5OT1RBVElPTl9QTFVHSU5fTkFNRSA9ICdDb25zdHJ1Y3QgQW5ub3RhdGlvbnMnO1xuXG4vKipcbiAqIENvbGxlY3QgYW5ub3RhdGlvbiBtZXRhZGF0YSAod2FybmluZ3MgYW5kIGVycm9ycykgZnJvbSB0aGUgY29uc3RydWN0IHRyZWVcbiAqIGFuZCBjb252ZXJ0IHRoZW0gaW50byBhIE5hbWVkVmFsaWRhdGlvblBsdWdpblJlcG9ydCB0aGF0IGNhbiBiZSBtZXJnZWRcbiAqIGludG8gdGhlIHNhbWUgcmVwb3J0IHBpcGVsaW5lIGFzIHBsdWdpbiB2aW9sYXRpb25zLlxuICpcbiAqIEVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIHdoYXQgaGFwcGVucyBoZXJlOlxuICogPGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL21haW4vcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvcHJpdmF0ZS9jb2xsZWN0LWFubm90YXRpb24tcmVwb3J0LnRzPlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdEFubm90YXRpb25SZXBvcnQoc3RhY2tzOiBTdGFja0NvbGxlY3Rpb24pOiBjeHNjaGVtYS5QbHVnaW5SZXBvcnRKc29uIHtcbiAgLy8gVGhlIHJldHVybiB0eXBlIHJlcXVpcmVzIHRoYXQgd2UgY29tYmluZSB2aW9sYXRpb25zIGJ5IHJ1bGUsIHNvIHdlIGhhdmUgdG8gZ3JvdXAgdGhlbSBmaXJzdCBoZXJlLlxuICBjb25zdCBydWxlTWFwID0gbmV3IE1hcDxzdHJpbmcsIGN4c2NoZW1hLlBvbGljeVZpb2xhdGlvbkpzb24+KCk7XG5cbiAgZm9yIChjb25zdCBzdGFjayBvZiBzdGFja3Muc3RhY2tBcnRpZmFjdHMpIHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHN0YWNrLm1lc3NhZ2VzKSB7XG4gICAgICBsZXQgc2V2ZXJpdHk6IGN4c2NoZW1hLlBvbGljeVZpb2xhdGlvblNldmVyaXR5IHwgdW5kZWZpbmVkO1xuXG4gICAgICBzd2l0Y2ggKGVudHJ5LmxldmVsKSB7XG4gICAgICAgIGNhc2UgY3hhcGkuU3ludGhlc2lzTWVzc2FnZUxldmVsLldBUk5JTkc6XG4gICAgICAgICAgc2V2ZXJpdHkgPSAnd2FybmluZyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgY3hhcGkuU3ludGhlc2lzTWVzc2FnZUxldmVsLkVSUk9SOlxuICAgICAgICAgIHNldmVyaXR5ID0gJ2Vycm9yJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBjeGFwaS5TeW50aGVzaXNNZXNzYWdlTGV2ZWwuSU5GTzpcbiAgICAgICAgICBzZXZlcml0eSA9ICdpbmZvJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBtZXNzYWdlLCBydWxlTmFtZSB9ID0gc3BsaXREZXNjcmlwdGlvbkFuZElkKFN0cmluZyhlbnRyeS5lbnRyeS5kYXRhKSk7XG4gICAgICBjb25zdCBydWxlS2V5ID0gYCR7cnVsZU5hbWV9fCR7c2V2ZXJpdHl9fCR7bWVzc2FnZX1gO1xuICAgICAgbGV0IHZpb2xhdGlvbiA9IHJ1bGVNYXAuZ2V0KHJ1bGVLZXkpO1xuICAgICAgaWYgKCF2aW9sYXRpb24pIHtcbiAgICAgICAgdmlvbGF0aW9uID0ge1xuICAgICAgICAgIHJ1bGVOYW1lOiBydWxlTmFtZSA/PyBgJHtzZXZlcml0eX0tYW5ub3RhdGlvbmAsXG4gICAgICAgICAgZGVzY3JpcHRpb246IG1lc3NhZ2UsXG4gICAgICAgICAgc2V2ZXJpdHksXG4gICAgICAgICAgdmlvbGF0aW5nQ29uc3RydWN0czogW10sXG4gICAgICAgICAgcnVsZU1ldGFkYXRhOiB7XG4gICAgICAgICAgICAnY2RrOmFubm90YXRpb24nOiAndHJ1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgcnVsZU1hcC5zZXQocnVsZUtleSwgdmlvbGF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgdmlvbGF0aW9uLnZpb2xhdGluZ0NvbnN0cnVjdHMucHVzaCh7XG4gICAgICAgIGNvbnN0cnVjdFBhdGg6IGVudHJ5LmlkLnJlcGxhY2UoL15cXC8vLCAnJyksIC8vIHJlbW92ZSBsZWFkaW5nIHNsYXNoXG5cbiAgICAgICAgLy8gVE9ETzogc2VlIGlmIHRoaXMgaW5mb3JtYXRpb24gY2FuIGJlIG9idGFpbmVkIGZyb20gdHJlZS5qc29uXG4gICAgICAgIC8vIGNsb3VkRm9ybWF0aW9uUmVzb3VyY2VcbiAgICAgICAgLy8gY29uc3RydWN0RnFuOlxuICAgICAgICAvLyBsaWJyYXJ5VmVyc2lvblxuXG4gICAgICAgIC8vIFRPRE86IHNlZSBpZiB3ZSBjYW4gZ2V0IHRoaXMgZnJvbSBtZXRhZGF0YSBzdGFjayB0cmFjZXMuIFdlIG1heSBuZWVkIHRvIHJlLWVuYWJsZSB0aGVtIGZvclxuICAgICAgICAvLyBhbm5vdGF0aW9ucyBpbiB0aGUgY29yZSBsaWJyYXJ5LiBPdGhlcndpc2Ugd2Ugc2hvdWxkIHByb2JhYmx5IGdldCBhIHN0YWNrIHRyYWNlIHRvIHRoZSByZXNvdXJjZSBpdHNlbGYuXG4gICAgICAgIC8vIHN0YWNrVHJhY2VzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB2aW9sYXRpb25zID0gQXJyYXkuZnJvbShydWxlTWFwLnZhbHVlcygpKTtcbiAgY29uc3QgaGFzRXJyb3JzID0gdmlvbGF0aW9ucy5zb21lKHYgPT4gdi5zZXZlcml0eSA9PT0gJ2Vycm9yJyk7XG4gIHJldHVybiB7XG4gICAgcGx1Z2luTmFtZTogQU5OT1RBVElPTl9QTFVHSU5fTkFNRSxcbiAgICBjb25jbHVzaW9uOiBoYXNFcnJvcnMgPyAnZmFpbHVyZScgOiAnc3VjY2VzcycsXG4gICAgdmlvbGF0aW9ucyxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbm5vdGF0aW9ucyBoYXZlIElEcyBpbiB0d28gcGxhY2VzOlxuICpcbiAqIC0gV2FybmluZ3MgaGF2ZSBgW2Fjazo8aWQ+XWAgaW4gdGhlIG1lc3NhZ2UuXG4gKiAtIEVycm9ycyBoYXZlIGAoPG5hbWVzcGFjZT46OjxpZD4pYCBpbiB0aGUgbWVzc2FnZS5cbiAqXG4gKiBTZXBhcmF0ZSB0aGUgcnVsZSBuYW1lIGZyb20gdGhlIHJlc3Qgb2YgdGhlIGRlc2NyaXB0aW9uLlxuICovXG5mdW5jdGlvbiBzcGxpdERlc2NyaXB0aW9uQW5kSWQobWVzc2FnZTogc3RyaW5nKTogeyBtZXNzYWdlOiBzdHJpbmc7IHJ1bGVOYW1lPzogc3RyaW5nIH0ge1xuICBjb25zdCBhY2tNYXRjaCA9IG1lc3NhZ2UubWF0Y2goL1xcW2FjazogKFteXFxdXSspXFxdLyk7XG4gIGlmIChhY2tNYXRjaCkge1xuICAgIHJldHVybiB7IG1lc3NhZ2U6IG1lc3NhZ2UucmVwbGFjZShhY2tNYXRjaFswXSwgJycpLnRyaW0oKSwgcnVsZU5hbWU6IGFja01hdGNoWzFdIH07XG4gIH1cblxuICBjb25zdCBpZE1hdGNoID0gbWVzc2FnZS5tYXRjaCgvXFwoKFteKCldKzo6W14oKV0rKVxcKSQvKTtcbiAgaWYgKGlkTWF0Y2gpIHtcbiAgICByZXR1cm4geyBtZXNzYWdlOiBtZXNzYWdlLnJlcGxhY2UoaWRNYXRjaFswXSwgJycpLnRyaW0oKSwgcnVsZU5hbWU6IGlkTWF0Y2hbMV0gfTtcbiAgfVxuXG4gIHJldHVybiB7IG1lc3NhZ2UgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { PluginReportJson, PolicyValidationReportConclusion } from '@aws-cdk/cloud-assembly-schema';
|
|
2
|
+
import type { StackCollection } from '../../api/cloud-assembly/stack-collection';
|
|
3
|
+
import type { IoHelper } from '../../api/io/private/io-helper';
|
|
4
|
+
import type { MinimumSeverity } from '../types';
|
|
5
|
+
interface AssemblyLike {
|
|
6
|
+
readonly directory: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Return a validation report that contains the validation report that the CDK app has written, as well as any Construct Metadata annotations in the manifest.
|
|
10
|
+
*
|
|
11
|
+
* This function takes into account the CDK app can already have written the
|
|
12
|
+
* construct annotations into the validation report, or not, depending on the
|
|
13
|
+
* setting of a deprecated feature flag. If the annotations are already in the report,
|
|
14
|
+
* they are not copied.
|
|
15
|
+
*
|
|
16
|
+
* Afterwards, the list of violations is filtered to only include those that are relevant to the stacks selected for validation.
|
|
17
|
+
*
|
|
18
|
+
* Returns whether an explicit report file was found or not.
|
|
19
|
+
*/
|
|
20
|
+
export declare function obtainUnifiedValidationReport(assembly: AssemblyLike, stacks: StackCollection): Promise<PluginReportJson[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Return a success/failure conclusion from the given report
|
|
23
|
+
*/
|
|
24
|
+
export declare function combineConclusions(reports: PluginReportJson[]): PolicyValidationReportConclusion;
|
|
25
|
+
/**
|
|
26
|
+
* For operations that are NOT `cdk validate`, read the validation report and produce a failure if validation failed.
|
|
27
|
+
*
|
|
28
|
+
* Validation failed if there are any plugin reports with a failure conclusion, or if there are any warnings and the assembly is in strict mode.
|
|
29
|
+
*/
|
|
30
|
+
export declare function throwIfValidationFailures(assembly: AssemblyLike, stacks: StackCollection, failAt: MinimumSeverity, ioHelper: IoHelper): Promise<void>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=validation-report.d.ts.map
|