@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.
Files changed (41) hide show
  1. package/build-info.json +2 -2
  2. package/lib/actions/diagnose/index.d.ts +28 -0
  3. package/lib/actions/diagnose/index.js +1 -1
  4. package/lib/actions/validate/index.d.ts +2 -0
  5. package/lib/actions/validate/index.js +1 -1
  6. package/lib/api/aws-auth/sdk.d.ts +5 -1
  7. package/lib/api/aws-auth/sdk.js +5 -1
  8. package/lib/api/cloud-assembly/environment.js +4 -1
  9. package/lib/api/cloud-assembly/stack-collection.d.ts +2 -0
  10. package/lib/api/cloud-assembly/stack-collection.js +3 -1
  11. package/lib/api/deployments/deploy-stack.js +4 -2
  12. package/lib/api/deployments/deployments.js +3 -1
  13. package/lib/api/diagnosing/diagnosis-formatting.js +54 -13
  14. package/lib/api/diagnosing/format-utils.d.ts +3 -0
  15. package/lib/api/diagnosing/format-utils.js +36 -0
  16. package/lib/api/diagnosing/resource-investigation.d.ts +41 -0
  17. package/lib/api/diagnosing/resource-investigation.js +302 -0
  18. package/lib/api/diagnosing/stack-diagnoser.d.ts +39 -3
  19. package/lib/api/diagnosing/stack-diagnoser.js +71 -30
  20. package/lib/api/hotswap/hotswap-deployments.js +3 -1
  21. package/lib/api/io/private/messages.js +2 -2
  22. package/lib/api/validate/validate-formatting.d.ts +9 -2
  23. package/lib/api/validate/validate-formatting.js +117 -69
  24. package/lib/payloads/hotswap.d.ts +8 -1
  25. package/lib/payloads/hotswap.js +1 -1
  26. package/lib/private/tools.js +26 -24
  27. package/lib/toolkit/private/collect-annotation-report.d.ts +12 -0
  28. package/lib/toolkit/private/collect-annotation-report.js +85 -0
  29. package/lib/toolkit/private/validation-report.d.ts +32 -0
  30. package/lib/toolkit/private/validation-report.js +119 -0
  31. package/lib/toolkit/toolkit.d.ts +4 -7
  32. package/lib/toolkit/toolkit.js +24 -67
  33. package/lib/toolkit/types.d.ts +1 -0
  34. package/lib/toolkit/types.js +1 -1
  35. package/lib/util/glob-matcher.d.ts +19 -7
  36. package/lib/util/glob-matcher.js +63 -14
  37. package/package.json +5 -5
  38. package/lib/api/diagnosing/tree-builder.d.ts +0 -13
  39. package/lib/api/diagnosing/tree-builder.js +0 -86
  40. package/lib/api/diagnosing/tree.d.ts +0 -19
  41. package/lib/api/diagnosing/tree.js +0 -72
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.obtainUnifiedValidationReport = obtainUnifiedValidationReport;
4
+ exports.combineConclusions = combineConclusions;
5
+ exports.throwIfValidationFailures = throwIfValidationFailures;
6
+ const path = require("path");
7
+ const cloud_assembly_schema_1 = require("@aws-cdk/cloud-assembly-schema");
8
+ const fs = require("fs-extra");
9
+ const collect_annotation_report_1 = require("./collect-annotation-report");
10
+ const validate_formatting_1 = require("../../api/validate/validate-formatting");
11
+ const toolkit_error_1 = require("../toolkit-error");
12
+ const VALIDATION_REPORT_FILE = 'validation-report.json';
13
+ /**
14
+ * The name of the plugin that emits construct annotations into the validation report.
15
+ *
16
+ * @see https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/core/lib/private/annotation-plugin.ts
17
+ */
18
+ const CONSTRUCT_ANNOTATIONS_PLUGINNAME = 'Construct Annotations';
19
+ /**
20
+ * 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.
21
+ *
22
+ * This function takes into account the CDK app can already have written the
23
+ * construct annotations into the validation report, or not, depending on the
24
+ * setting of a deprecated feature flag. If the annotations are already in the report,
25
+ * they are not copied.
26
+ *
27
+ * Afterwards, the list of violations is filtered to only include those that are relevant to the stacks selected for validation.
28
+ *
29
+ * Returns whether an explicit report file was found or not.
30
+ */
31
+ async function obtainUnifiedValidationReport(assembly, stacks) {
32
+ const ret = [];
33
+ const reportPath = path.join(assembly.directory, VALIDATION_REPORT_FILE);
34
+ if (await fs.pathExists(reportPath)) {
35
+ const selectedStackIds = new Set(stacks.hierarchicalIds);
36
+ const report = cloud_assembly_schema_1.Manifest.loadValidationReport(reportPath);
37
+ // Filter the report to only include violations for the selected stacks
38
+ const filteredReports = filterReportsByStacks(report.pluginReports, selectedStackIds);
39
+ ret.push(...filteredReports);
40
+ }
41
+ const alreadyHasAnnotations = ret.some((r) => r.pluginName === CONSTRUCT_ANNOTATIONS_PLUGINNAME);
42
+ if (!alreadyHasAnnotations) {
43
+ const annotationReport = (0, collect_annotation_report_1.collectAnnotationReport)(stacks);
44
+ if (annotationReport.violations.length > 0 || annotationReport.conclusion === 'failure') {
45
+ ret.push(annotationReport);
46
+ }
47
+ }
48
+ // Remove all inconsequential reports
49
+ return ret;
50
+ }
51
+ /**
52
+ * Return a success/failure conclusion from the given report
53
+ */
54
+ function combineConclusions(reports) {
55
+ const reportHasFailures = reports.some((r) => r.conclusion === 'failure');
56
+ return reportHasFailures ? 'failure' : 'success';
57
+ }
58
+ /**
59
+ * For operations that are NOT `cdk validate`, read the validation report and produce a failure if validation failed.
60
+ *
61
+ * 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.
62
+ */
63
+ async function throwIfValidationFailures(assembly, stacks, failAt, ioHelper) {
64
+ const pluginReports = await obtainUnifiedValidationReport(assembly, stacks);
65
+ if (pluginReports.length === 0) {
66
+ return;
67
+ }
68
+ const conclusion = combineConclusions(pluginReports);
69
+ const result = { conclusion, pluginReports };
70
+ await ioHelper.notify((0, validate_formatting_1.hostMessageFromValidation)(process.cwd(), result));
71
+ switch (failAt) {
72
+ case 'error':
73
+ if (conclusion === 'failure') {
74
+ const error = toolkit_error_1.AssemblyError.withStacks('Synthesis finished with errors', stacks.stackArtifacts);
75
+ error.attachSynthesisErrorCode('AnnotationErrors');
76
+ throw error;
77
+ }
78
+ break;
79
+ case 'warn':
80
+ // if we're failing at 'warn', then both warnings and errors cause failure, so the initial conclusion is correct
81
+ if (conclusion === 'failure' || hasWarnings(pluginReports)) {
82
+ const error = toolkit_error_1.AssemblyError.withStacks('Synthesis finished with warnings (--strict mode)', stacks.stackArtifacts);
83
+ error.attachSynthesisErrorCode('StrictAnnotationWarnings');
84
+ throw error;
85
+ }
86
+ break;
87
+ case 'none':
88
+ // if we're not failing at all, then the conclusion is always success
89
+ break;
90
+ }
91
+ }
92
+ function hasWarnings(reports) {
93
+ return reports.some((r) => r.violations.some((v) => v.severity === 'warning'));
94
+ }
95
+ /**
96
+ * Remove violations that aren't in onde of the given stacks
97
+ */
98
+ function filterReportsByStacks(reports, selectedStackIds) {
99
+ return reports.map((report) => {
100
+ const filteredViolations = report.violations.filter((violation) => {
101
+ if (violation.violatingConstructs.length === 0)
102
+ return true;
103
+ return violation.violatingConstructs.some((c) => selectedStackIds.has(c.constructPath?.split('/')[0] ?? ''));
104
+ }).map((violation) => {
105
+ if (violation.violatingConstructs.length === 0)
106
+ return violation;
107
+ return {
108
+ ...violation,
109
+ violatingConstructs: violation.violatingConstructs.filter((c) => selectedStackIds.has(c.constructPath?.split('/')[0] ?? '')),
110
+ };
111
+ });
112
+ return {
113
+ ...report,
114
+ violations: filteredViolations,
115
+ conclusion: filteredViolations.length > 0 ? report.conclusion : 'success',
116
+ };
117
+ });
118
+ }
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1yZXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2YWxpZGF0aW9uLXJlcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFDQSxzRUF1QkM7QUFLRCxnREFHQztBQU9ELDhEQW9DQztBQS9HRCw2QkFBNkI7QUFFN0IsMEVBQTBEO0FBQzFELCtCQUErQjtBQUMvQiwyRUFBc0U7QUFJdEUsZ0ZBQW1GO0FBQ25GLG9EQUFpRDtBQUdqRCxNQUFNLHNCQUFzQixHQUFHLHdCQUF3QixDQUFDO0FBRXhEOzs7O0dBSUc7QUFDSCxNQUFNLGdDQUFnQyxHQUFHLHVCQUF1QixDQUFDO0FBTWpFOzs7Ozs7Ozs7OztHQVdHO0FBQ0ksS0FBSyxVQUFVLDZCQUE2QixDQUFDLFFBQXNCLEVBQUUsTUFBdUI7SUFDakcsTUFBTSxHQUFHLEdBQXVCLEVBQUUsQ0FBQztJQUVuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUN6RSxJQUFJLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLGdDQUFRLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekQsdUVBQXVFO1FBQ3ZFLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxnQ0FB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LFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNoRSxJQUFJLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUM1RCxPQUFPLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM5QyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQzNELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNuQixJQUFJLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUNqRSxPQUFPO2dCQUNMLEdBQUcsU0FBUztnQkFDWixtQkFBbUIsRUFBRSxTQUFTLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDOUQsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUMzRDthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxHQUFHLE1BQU07WUFDVCxVQUFVLEVBQUUsa0JBQWtCO1lBQzlCLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBRSxTQUFtQjtTQUNyRixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luUmVwb3J0SnNvbiwgUG9saWN5VmFsaWRhdGlvblJlcG9ydENvbmNsdXNpb24gfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgY29sbGVjdEFubm90YXRpb25SZXBvcnQgfSBmcm9tICcuL2NvbGxlY3QtYW5ub3RhdGlvbi1yZXBvcnQnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0ZVJlc3VsdCB9IGZyb20gJy4uLy4uL2FjdGlvbnMvdmFsaWRhdGUnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0NvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9hcGkvY2xvdWQtYXNzZW1ibHkvc3RhY2stY29sbGVjdGlvbic7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vLi4vYXBpL2lvL3ByaXZhdGUvaW8taGVscGVyJztcbmltcG9ydCB7IGhvc3RNZXNzYWdlRnJvbVZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi9hcGkvdmFsaWRhdGUvdmFsaWRhdGUtZm9ybWF0dGluZyc7XG5pbXBvcnQgeyBBc3NlbWJseUVycm9yIH0gZnJvbSAnLi4vdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IE1pbmltdW1TZXZlcml0eSB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgVkFMSURBVElPTl9SRVBPUlRfRklMRSA9ICd2YWxpZGF0aW9uLXJlcG9ydC5qc29uJztcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgZW1pdHMgY29uc3RydWN0IGFubm90YXRpb25zIGludG8gdGhlIHZhbGlkYXRpb24gcmVwb3J0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvbWFpbi9wYWNrYWdlcy9hd3MtY2RrLWxpYi9jb3JlL2xpYi9wcml2YXRlL2Fubm90YXRpb24tcGx1Z2luLnRzXG4gKi9cbmNvbnN0IENPTlNUUlVDVF9BTk5PVEFUSU9OU19QTFVHSU5OQU1FID0gJ0NvbnN0cnVjdCBBbm5vdGF0aW9ucyc7XG5cbmludGVyZmFjZSBBc3NlbWJseUxpa2Uge1xuICByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSB2YWxpZGF0aW9uIHJlcG9ydCB0aGF0IGNvbnRhaW5zIHRoZSB2YWxpZGF0aW9uIHJlcG9ydCB0aGF0IHRoZSBDREsgYXBwIGhhcyB3cml0dGVuLCBhcyB3ZWxsIGFzIGFueSBDb25zdHJ1Y3QgTWV0YWRhdGEgYW5ub3RhdGlvbnMgaW4gdGhlIG1hbmlmZXN0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgaW50byBhY2NvdW50IHRoZSBDREsgYXBwIGNhbiBhbHJlYWR5IGhhdmUgd3JpdHRlbiB0aGVcbiAqIGNvbnN0cnVjdCBhbm5vdGF0aW9ucyBpbnRvIHRoZSB2YWxpZGF0aW9uIHJlcG9ydCwgb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlXG4gKiBzZXR0aW5nIG9mIGEgZGVwcmVjYXRlZCBmZWF0dXJlIGZsYWcuIElmIHRoZSBhbm5vdGF0aW9ucyBhcmUgYWxyZWFkeSBpbiB0aGUgcmVwb3J0LFxuICogdGhleSBhcmUgbm90IGNvcGllZC5cbiAqXG4gKiBBZnRlcndhcmRzLCB0aGUgbGlzdCBvZiB2aW9sYXRpb25zIGlzIGZpbHRlcmVkIHRvIG9ubHkgaW5jbHVkZSB0aG9zZSB0aGF0IGFyZSByZWxldmFudCB0byB0aGUgc3RhY2tzIHNlbGVjdGVkIGZvciB2YWxpZGF0aW9uLlxuICpcbiAqIFJldHVybnMgd2hldGhlciBhbiBleHBsaWNpdCByZXBvcnQgZmlsZSB3YXMgZm91bmQgb3Igbm90LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb2J0YWluVW5pZmllZFZhbGlkYXRpb25SZXBvcnQoYXNzZW1ibHk6IEFzc2VtYmx5TGlrZSwgc3RhY2tzOiBTdGFja0NvbGxlY3Rpb24pOiBQcm9taXNlPFBsdWdpblJlcG9ydEpzb25bXT4ge1xuICBjb25zdCByZXQ6IFBsdWdpblJlcG9ydEpzb25bXSA9IFtdO1xuXG4gIGNvbnN0IHJlcG9ydFBhdGggPSBwYXRoLmpvaW4oYXNzZW1ibHkuZGlyZWN0b3J5LCBWQUxJREFUSU9OX1JFUE9SVF9GSUxFKTtcbiAgaWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMocmVwb3J0UGF0aCkpIHtcbiAgICBjb25zdCBzZWxlY3RlZFN0YWNrSWRzID0gbmV3IFNldChzdGFja3MuaGllcmFyY2hpY2FsSWRzKTtcbiAgICBjb25zdCByZXBvcnQgPSBNYW5pZmVzdC5sb2FkVmFsaWRhdGlvblJlcG9ydChyZXBvcnRQYXRoKTtcblxuICAgIC8vIEZpbHRlciB0aGUgcmVwb3J0IHRvIG9ubHkgaW5jbHVkZSB2aW9sYXRpb25zIGZvciB0aGUgc2VsZWN0ZWQgc3RhY2tzXG4gICAgY29uc3QgZmlsdGVyZWRSZXBvcnRzID0gZmlsdGVyUmVwb3J0c0J5U3RhY2tzKHJlcG9ydC5wbHVnaW5SZXBvcnRzLCBzZWxlY3RlZFN0YWNrSWRzKTtcbiAgICByZXQucHVzaCguLi5maWx0ZXJlZFJlcG9ydHMpO1xuICB9XG5cbiAgY29uc3QgYWxyZWFkeUhhc0Fubm90YXRpb25zID0gcmV0LnNvbWUoKHIpID0+IHIucGx1Z2luTmFtZSA9PT0gQ09OU1RSVUNUX0FOTk9UQVRJT05TX1BMVUdJTk5BTUUpO1xuICBpZiAoIWFscmVhZHlIYXNBbm5vdGF0aW9ucykge1xuICAgIGNvbnN0IGFubm90YXRpb25SZXBvcnQgPSBjb2xsZWN0QW5ub3RhdGlvblJlcG9ydChzdGFja3MpO1xuICAgIGlmIChhbm5vdGF0aW9uUmVwb3J0LnZpb2xhdGlvbnMubGVuZ3RoID4gMCB8fCBhbm5vdGF0aW9uUmVwb3J0LmNvbmNsdXNpb24gPT09ICdmYWlsdXJlJykge1xuICAgICAgcmV0LnB1c2goYW5ub3RhdGlvblJlcG9ydCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIGFsbCBpbmNvbnNlcXVlbnRpYWwgcmVwb3J0c1xuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIFJldHVybiBhIHN1Y2Nlc3MvZmFpbHVyZSBjb25jbHVzaW9uIGZyb20gdGhlIGdpdmVuIHJlcG9ydFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUNvbmNsdXNpb25zKHJlcG9ydHM6IFBsdWdpblJlcG9ydEpzb25bXSk6IFBvbGljeVZhbGlkYXRpb25SZXBvcnRDb25jbHVzaW9uIHtcbiAgY29uc3QgcmVwb3J0SGFzRmFpbHVyZXMgPSByZXBvcnRzLnNvbWUoKHIpID0+IHIuY29uY2x1c2lvbiA9PT0gJ2ZhaWx1cmUnKTtcbiAgcmV0dXJuIHJlcG9ydEhhc0ZhaWx1cmVzID8gJ2ZhaWx1cmUnIDogJ3N1Y2Nlc3MnO1xufVxuXG4vKipcbiAqIEZvciBvcGVyYXRpb25zIHRoYXQgYXJlIE5PVCBgY2RrIHZhbGlkYXRlYCwgcmVhZCB0aGUgdmFsaWRhdGlvbiByZXBvcnQgYW5kIHByb2R1Y2UgYSBmYWlsdXJlIGlmIHZhbGlkYXRpb24gZmFpbGVkLlxuICpcbiAqIFZhbGlkYXRpb24gZmFpbGVkIGlmIHRoZXJlIGFyZSBhbnkgcGx1Z2luIHJlcG9ydHMgd2l0aCBhIGZhaWx1cmUgY29uY2x1c2lvbiwgb3IgaWYgdGhlcmUgYXJlIGFueSB3YXJuaW5ncyBhbmQgdGhlIGFzc2VtYmx5IGlzIGluIHN0cmljdCBtb2RlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGhyb3dJZlZhbGlkYXRpb25GYWlsdXJlcyhcbiAgYXNzZW1ibHk6IEFzc2VtYmx5TGlrZSxcbiAgc3RhY2tzOiBTdGFja0NvbGxlY3Rpb24sXG4gIGZhaWxBdDogTWluaW11bVNldmVyaXR5LFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGx1Z2luUmVwb3J0cyA9IGF3YWl0IG9idGFpblVuaWZpZWRWYWxpZGF0aW9uUmVwb3J0KGFzc2VtYmx5LCBzdGFja3MpO1xuICBpZiAocGx1Z2luUmVwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb25jbHVzaW9uID0gY29tYmluZUNvbmNsdXNpb25zKHBsdWdpblJlcG9ydHMpO1xuICBjb25zdCByZXN1bHQ6IFZhbGlkYXRlUmVzdWx0ID0geyBjb25jbHVzaW9uLCBwbHVnaW5SZXBvcnRzIH07XG4gIGF3YWl0IGlvSGVscGVyLm5vdGlmeShob3N0TWVzc2FnZUZyb21WYWxpZGF0aW9uKHByb2Nlc3MuY3dkKCksIHJlc3VsdCkpO1xuXG4gIHN3aXRjaCAoZmFpbEF0KSB7XG4gICAgY2FzZSAnZXJyb3InOlxuICAgICAgaWYgKGNvbmNsdXNpb24gPT09ICdmYWlsdXJlJykge1xuICAgICAgICBjb25zdCBlcnJvciA9IEFzc2VtYmx5RXJyb3Iud2l0aFN0YWNrcygnU3ludGhlc2lzIGZpbmlzaGVkIHdpdGggZXJyb3JzJywgc3RhY2tzLnN0YWNrQXJ0aWZhY3RzKTtcbiAgICAgICAgZXJyb3IuYXR0YWNoU3ludGhlc2lzRXJyb3JDb2RlKCdBbm5vdGF0aW9uRXJyb3JzJyk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2Fybic6XG4gICAgICAvLyBpZiB3ZSdyZSBmYWlsaW5nIGF0ICd3YXJuJywgdGhlbiBib3RoIHdhcm5pbmdzIGFuZCBlcnJvcnMgY2F1c2UgZmFpbHVyZSwgc28gdGhlIGluaXRpYWwgY29uY2x1c2lvbiBpcyBjb3JyZWN0XG4gICAgICBpZiAoY29uY2x1c2lvbiA9PT0gJ2ZhaWx1cmUnIHx8IGhhc1dhcm5pbmdzKHBsdWdpblJlcG9ydHMpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gQXNzZW1ibHlFcnJvci53aXRoU3RhY2tzKCdTeW50aGVzaXMgZmluaXNoZWQgd2l0aCB3YXJuaW5ncyAoLS1zdHJpY3QgbW9kZSknLCBzdGFja3Muc3RhY2tBcnRpZmFjdHMpO1xuICAgICAgICBlcnJvci5hdHRhY2hTeW50aGVzaXNFcnJvckNvZGUoJ1N0cmljdEFubm90YXRpb25XYXJuaW5ncycpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbm9uZSc6XG4gICAgICAvLyBpZiB3ZSdyZSBub3QgZmFpbGluZyBhdCBhbGwsIHRoZW4gdGhlIGNvbmNsdXNpb24gaXMgYWx3YXlzIHN1Y2Nlc3NcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhc1dhcm5pbmdzKHJlcG9ydHM6IFBsdWdpblJlcG9ydEpzb25bXSk6IGJvb2xlYW4ge1xuICByZXR1cm4gcmVwb3J0cy5zb21lKChyKSA9PiByLnZpb2xhdGlvbnMuc29tZSgodikgPT4gdi5zZXZlcml0eSA9PT0gJ3dhcm5pbmcnKSk7XG59XG5cbi8qKlxuICogUmVtb3ZlIHZpb2xhdGlvbnMgdGhhdCBhcmVuJ3QgaW4gb25kZSBvZiB0aGUgZ2l2ZW4gc3RhY2tzXG4gKi9cbmZ1bmN0aW9uIGZpbHRlclJlcG9ydHNCeVN0YWNrcyhyZXBvcnRzOiBQbHVnaW5SZXBvcnRKc29uW10sIHNlbGVjdGVkU3RhY2tJZHM6IFNldDxzdHJpbmc+KTogUGx1Z2luUmVwb3J0SnNvbltdIHtcbiAgcmV0dXJuIHJlcG9ydHMubWFwKChyZXBvcnQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJlZFZpb2xhdGlvbnMgPSByZXBvcnQudmlvbGF0aW9ucy5maWx0ZXIoKHZpb2xhdGlvbikgPT4ge1xuICAgICAgaWYgKHZpb2xhdGlvbi52aW9sYXRpbmdDb25zdHJ1Y3RzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gdmlvbGF0aW9uLnZpb2xhdGluZ0NvbnN0cnVjdHMuc29tZSgoYykgPT5cbiAgICAgICAgc2VsZWN0ZWRTdGFja0lkcy5oYXMoYy5jb25zdHJ1Y3RQYXRoPy5zcGxpdCgnLycpWzBdID8/ICcnKSxcbiAgICAgICk7XG4gICAgfSkubWFwKCh2aW9sYXRpb24pID0+IHtcbiAgICAgIGlmICh2aW9sYXRpb24udmlvbGF0aW5nQ29uc3RydWN0cy5sZW5ndGggPT09IDApIHJldHVybiB2aW9sYXRpb247XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi52aW9sYXRpb24sXG4gICAgICAgIHZpb2xhdGluZ0NvbnN0cnVjdHM6IHZpb2xhdGlvbi52aW9sYXRpbmdDb25zdHJ1Y3RzLmZpbHRlcigoYykgPT5cbiAgICAgICAgICBzZWxlY3RlZFN0YWNrSWRzLmhhcyhjLmNvbnN0cnVjdFBhdGg/LnNwbGl0KCcvJylbMF0gPz8gJycpLFxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXBvcnQsXG4gICAgICB2aW9sYXRpb25zOiBmaWx0ZXJlZFZpb2xhdGlvbnMsXG4gICAgICBjb25jbHVzaW9uOiBmaWx0ZXJlZFZpb2xhdGlvbnMubGVuZ3RoID4gMCA/IHJlcG9ydC5jb25jbHVzaW9uIDogKCdzdWNjZXNzJyBhcyBjb25zdCksXG4gICAgfTtcbiAgfSk7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import '../private/dispose-polyfill';
2
2
  import type { TemplateDiff } from '@aws-cdk/cloudformation-diff';
3
- import type { DeployResult, DestroyResult, FeatureFlag, RollbackResult } from './types';
3
+ import type { DeployResult, DestroyResult, FeatureFlag, MinimumSeverity, RollbackResult } from './types';
4
4
  import type { BootstrapEnvironments, BootstrapOptions, BootstrapResult } from '../actions/bootstrap';
5
5
  import { type DeployOptions } from '../actions/deploy';
6
6
  import { type DestroyOptions } from '../actions/destroy';
@@ -53,11 +53,11 @@ export interface ToolkitOptions {
53
53
  */
54
54
  readonly toolkitStackName?: string;
55
55
  /**
56
- * Fail Cloud Assemblies
56
+ * Fail Cloud Assembly operations with an error if there are validation errors in the assembly with at least the indicated severity.
57
57
  *
58
58
  * @default "error"
59
59
  */
60
- readonly assemblyFailureAt?: 'error' | 'warn' | 'none';
60
+ readonly assemblyFailureAt?: MinimumSeverity;
61
61
  /**
62
62
  * The plugin host to use for loading and querying plugins
63
63
  *
@@ -103,6 +103,7 @@ export declare class Toolkit extends CloudAssemblySourceBuilder {
103
103
  private sdkProviderCache?;
104
104
  private baseCredentials;
105
105
  private readonly unstableFeatures;
106
+ private readonly assemblyFailureAt;
106
107
  constructor(props?: ToolkitOptions);
107
108
  /**
108
109
  * Bootstrap Action
@@ -205,10 +206,6 @@ export declare class Toolkit extends CloudAssemblySourceBuilder {
205
206
  * Helper to allow destroy being called as part of the deploy action.
206
207
  */
207
208
  private _destroy;
208
- /**
209
- * Validate the stacks for errors and warnings according to the CLI's current settings
210
- */
211
- private validateStacksMetadata;
212
209
  /**
213
210
  * Create a deployments class
214
211
  */