@aws-cdk/toolkit-lib 1.29.1 → 1.31.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 (110) hide show
  1. package/build-info.json +2 -2
  2. package/lib/actions/bootstrap/index.js +35 -2
  3. package/lib/actions/diagnose/index.d.ts +28 -0
  4. package/lib/actions/diagnose/index.js +1 -1
  5. package/lib/actions/diff/private/helpers.js +36 -3
  6. package/lib/actions/validate/index.d.ts +2 -0
  7. package/lib/actions/validate/index.js +1 -1
  8. package/lib/api/aws-auth/account-cache.js +36 -3
  9. package/lib/api/aws-auth/sdk-provider.js +36 -3
  10. package/lib/api/aws-auth/sdk.d.ts +7 -2
  11. package/lib/api/aws-auth/sdk.js +6 -1
  12. package/lib/api/aws-auth/user-agent.js +35 -2
  13. package/lib/api/aws-auth/util.js +35 -2
  14. package/lib/api/bootstrap/bootstrap-environment.js +35 -2
  15. package/lib/api/bootstrap/deploy-bootstrap.js +37 -4
  16. package/lib/api/cloud-assembly/context-store.js +36 -3
  17. package/lib/api/cloud-assembly/environment.js +40 -4
  18. package/lib/api/cloud-assembly/private/context-aware-source.js +35 -2
  19. package/lib/api/cloud-assembly/private/exec.js +35 -2
  20. package/lib/api/cloud-assembly/private/prepare-source.js +39 -6
  21. package/lib/api/cloud-assembly/source-builder.js +37 -4
  22. package/lib/api/cloud-assembly/stack-assembly.js +8 -4
  23. package/lib/api/cloud-assembly/stack-collection.d.ts +2 -0
  24. package/lib/api/cloud-assembly/stack-collection.js +3 -1
  25. package/lib/api/cloudformation/logical-id-map.js +35 -2
  26. package/lib/api/cloudformation/nested-stack-helpers.js +36 -3
  27. package/lib/api/cloudformation/template-body-parameter.js +42 -6
  28. package/lib/api/deployments/asset-manifest-builder.js +35 -2
  29. package/lib/api/deployments/assets.js +42 -6
  30. package/lib/api/deployments/cfn-api.d.ts +4 -2
  31. package/lib/api/deployments/cfn-api.js +47 -6
  32. package/lib/api/deployments/deploy-stack.js +11 -6
  33. package/lib/api/deployments/deployments.js +42 -4
  34. package/lib/api/diagnosing/diagnosis-formatting.js +54 -13
  35. package/lib/api/diagnosing/format-utils.d.ts +32 -0
  36. package/lib/api/diagnosing/format-utils.js +176 -0
  37. package/lib/api/diagnosing/investigate-custom-resource.d.ts +17 -0
  38. package/lib/api/diagnosing/investigate-custom-resource.js +247 -0
  39. package/lib/api/diagnosing/investigate-ecs-service.d.ts +20 -0
  40. package/lib/api/diagnosing/investigate-ecs-service.js +242 -0
  41. package/lib/api/diagnosing/resource-identifiers.d.ts +39 -0
  42. package/lib/api/diagnosing/resource-identifiers.js +90 -0
  43. package/lib/api/diagnosing/resource-investigation.d.ts +13 -0
  44. package/lib/api/diagnosing/resource-investigation.js +22 -0
  45. package/lib/api/diagnosing/stack-diagnoser.d.ts +39 -3
  46. package/lib/api/diagnosing/stack-diagnoser.js +71 -30
  47. package/lib/api/diff/diff-formatter.js +11 -8
  48. package/lib/api/drift/drift-formatter.js +20 -17
  49. package/lib/api/garbage-collection/garbage-collector.js +7 -4
  50. package/lib/api/garbage-collection/progress-printer.js +7 -4
  51. package/lib/api/hotswap/hotswap-deployments.js +46 -10
  52. package/lib/api/hotswap/hotswap-template-cache.js +36 -3
  53. package/lib/api/io/private/io-default-messages.js +35 -2
  54. package/lib/api/io/private/message-maker.d.ts +4 -0
  55. package/lib/api/io/private/message-maker.js +3 -1
  56. package/lib/api/io/private/messages.d.ts +2 -0
  57. package/lib/api/io/private/messages.js +44 -3
  58. package/lib/api/io/private/span.js +35 -2
  59. package/lib/api/logs-monitor/logs-monitor.js +40 -4
  60. package/lib/api/network-detector/network-detector.js +37 -4
  61. package/lib/api/notices/cached-data-source.js +35 -2
  62. package/lib/api/notices/filter.js +35 -2
  63. package/lib/api/notices/notices.js +35 -2
  64. package/lib/api/notices/web-data-source.js +35 -2
  65. package/lib/api/refactoring/digest.js +35 -2
  66. package/lib/api/refactoring/stack-definitions.js +40 -4
  67. package/lib/api/resource-import/importer.js +58 -15
  68. package/lib/api/resource-import/migrator.js +42 -6
  69. package/lib/api/rwlock.js +35 -2
  70. package/lib/api/settings.js +38 -5
  71. package/lib/api/source-tracing/private/stack-source-tracing.js +38 -5
  72. package/lib/api/stack-events/resource-errors.d.ts +12 -0
  73. package/lib/api/stack-events/resource-errors.js +2 -1
  74. package/lib/api/stack-events/stack-activity-monitor.js +35 -2
  75. package/lib/api/stack-events/stack-progress-monitor.js +35 -2
  76. package/lib/api/toolkit-info.js +7 -4
  77. package/lib/api/tree.js +36 -3
  78. package/lib/api/validate/validate-formatting.d.ts +9 -2
  79. package/lib/api/validate/validate-formatting.js +161 -77
  80. package/lib/api/work-graph/build-destroy-work-graph.js +35 -2
  81. package/lib/api/work-graph/work-graph-builder.js +35 -2
  82. package/lib/context-providers/index.js +35 -2
  83. package/lib/private/activity-printer/current.js +52 -16
  84. package/lib/private/activity-printer/history.js +50 -14
  85. package/lib/private/tools.js +64 -25
  86. package/lib/toolkit/non-interactive-io-host.js +11 -8
  87. package/lib/toolkit/private/collect-annotation-report.d.ts +12 -0
  88. package/lib/toolkit/private/collect-annotation-report.js +118 -0
  89. package/lib/toolkit/private/validation-report.d.ts +32 -0
  90. package/lib/toolkit/private/validation-report.js +152 -0
  91. package/lib/toolkit/toolkit-error.d.ts +20 -0
  92. package/lib/toolkit/toolkit-error.js +30 -2
  93. package/lib/toolkit/toolkit.d.ts +12 -7
  94. package/lib/toolkit/toolkit.js +104 -101
  95. package/lib/toolkit/types.d.ts +1 -0
  96. package/lib/toolkit/types.js +1 -1
  97. package/lib/util/content-hash.js +35 -2
  98. package/lib/util/directories.js +38 -5
  99. package/lib/util/glob-matcher.d.ts +19 -7
  100. package/lib/util/glob-matcher.js +63 -14
  101. package/lib/util/guess-language.js +36 -3
  102. package/lib/util/package-info.js +35 -2
  103. package/lib/util/serialize.js +36 -3
  104. package/lib/util/version-range.js +35 -2
  105. package/lib/util/yaml-cfn.js +36 -3
  106. package/package.json +5 -5
  107. package/lib/api/diagnosing/tree-builder.d.ts +0 -13
  108. package/lib/api/diagnosing/tree-builder.js +0 -86
  109. package/lib/api/diagnosing/tree.d.ts +0 -19
  110. package/lib/api/diagnosing/tree.js +0 -72
@@ -0,0 +1,152 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.obtainUnifiedValidationReport = obtainUnifiedValidationReport;
37
+ exports.combineConclusions = combineConclusions;
38
+ exports.throwIfValidationFailures = throwIfValidationFailures;
39
+ const path = __importStar(require("path"));
40
+ const cloud_assembly_schema_1 = require("@aws-cdk/cloud-assembly-schema");
41
+ const fs = __importStar(require("fs-extra"));
42
+ const collect_annotation_report_1 = require("./collect-annotation-report");
43
+ const validate_formatting_1 = require("../../api/validate/validate-formatting");
44
+ const toolkit_error_1 = require("../toolkit-error");
45
+ const VALIDATION_REPORT_FILE = 'validation-report.json';
46
+ /**
47
+ * The name of the plugin that emits construct annotations into the validation report.
48
+ *
49
+ * @see https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/core/lib/private/annotation-plugin.ts
50
+ */
51
+ const CONSTRUCT_ANNOTATIONS_PLUGINNAME = 'Construct Annotations';
52
+ /**
53
+ * 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.
54
+ *
55
+ * This function takes into account the CDK app can already have written the
56
+ * construct annotations into the validation report, or not, depending on the
57
+ * setting of a deprecated feature flag. If the annotations are already in the report,
58
+ * they are not copied.
59
+ *
60
+ * Afterwards, the list of violations is filtered to only include those that are relevant to the stacks selected for validation.
61
+ *
62
+ * Returns whether an explicit report file was found or not.
63
+ */
64
+ async function obtainUnifiedValidationReport(assembly, stacks) {
65
+ const ret = [];
66
+ const reportPath = path.join(assembly.directory, VALIDATION_REPORT_FILE);
67
+ if (await fs.pathExists(reportPath)) {
68
+ const selectedStackIds = new Set(stacks.hierarchicalIds);
69
+ const report = cloud_assembly_schema_1.Manifest.loadValidationReport(reportPath);
70
+ // Filter the report to only include violations for the selected stacks
71
+ const filteredReports = filterReportsByStacks(report.pluginReports, selectedStackIds);
72
+ ret.push(...filteredReports);
73
+ }
74
+ const alreadyHasAnnotations = ret.some((r) => r.pluginName === CONSTRUCT_ANNOTATIONS_PLUGINNAME);
75
+ if (!alreadyHasAnnotations) {
76
+ const annotationReport = (0, collect_annotation_report_1.collectAnnotationReport)(stacks);
77
+ if (annotationReport.violations.length > 0 || annotationReport.conclusion === 'failure') {
78
+ ret.push(annotationReport);
79
+ }
80
+ }
81
+ // Remove all inconsequential reports
82
+ return ret;
83
+ }
84
+ /**
85
+ * Return a success/failure conclusion from the given report
86
+ */
87
+ function combineConclusions(reports) {
88
+ const reportHasFailures = reports.some((r) => r.conclusion === 'failure');
89
+ return reportHasFailures ? 'failure' : 'success';
90
+ }
91
+ /**
92
+ * For operations that are NOT `cdk validate`, read the validation report and produce a failure if validation failed.
93
+ *
94
+ * 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.
95
+ */
96
+ async function throwIfValidationFailures(assembly, stacks, failAt, ioHelper) {
97
+ const pluginReports = await obtainUnifiedValidationReport(assembly, stacks);
98
+ if (pluginReports.length === 0) {
99
+ return;
100
+ }
101
+ const conclusion = combineConclusions(pluginReports);
102
+ const result = { conclusion, pluginReports };
103
+ await ioHelper.notify((0, validate_formatting_1.hostMessageFromValidation)(process.cwd(), result));
104
+ switch (failAt) {
105
+ case 'error':
106
+ if (conclusion === 'failure') {
107
+ const error = toolkit_error_1.AssemblyError.withStacks('Synthesis finished with errors', stacks.stackArtifacts);
108
+ error.attachSynthesisErrorCode('AnnotationErrors');
109
+ throw error;
110
+ }
111
+ break;
112
+ case 'warn':
113
+ // if we're failing at 'warn', then both warnings and errors cause failure, so the initial conclusion is correct
114
+ if (conclusion === 'failure' || hasWarnings(pluginReports)) {
115
+ const error = toolkit_error_1.AssemblyError.withStacks('Synthesis finished with warnings (--strict mode)', stacks.stackArtifacts);
116
+ error.attachSynthesisErrorCode('StrictAnnotationWarnings');
117
+ throw error;
118
+ }
119
+ break;
120
+ case 'none':
121
+ // if we're not failing at all, then the conclusion is always success
122
+ break;
123
+ }
124
+ }
125
+ function hasWarnings(reports) {
126
+ return reports.some((r) => r.violations.some((v) => v.severity === 'warning'));
127
+ }
128
+ /**
129
+ * Remove violations that aren't in onde of the given stacks
130
+ */
131
+ function filterReportsByStacks(reports, selectedStackIds) {
132
+ return reports.map((report) => {
133
+ const filteredViolations = report.violations.filter((violation) => {
134
+ if (violation.violatingConstructs.length === 0)
135
+ return true;
136
+ return violation.violatingConstructs.some((c) => selectedStackIds.has(c.constructPath?.split('/')[0] ?? ''));
137
+ }).map((violation) => {
138
+ if (violation.violatingConstructs.length === 0)
139
+ return violation;
140
+ return {
141
+ ...violation,
142
+ violatingConstructs: violation.violatingConstructs.filter((c) => selectedStackIds.has(c.constructPath?.split('/')[0] ?? '')),
143
+ };
144
+ });
145
+ return {
146
+ ...report,
147
+ violations: filteredViolations,
148
+ conclusion: filteredViolations.length > 0 ? report.conclusion : 'success',
149
+ };
150
+ });
151
+ }
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1yZXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2YWxpZGF0aW9uLXJlcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDQSxzRUF1QkM7QUFLRCxnREFHQztBQU9ELDhEQW9DQztBQS9HRCwyQ0FBNkI7QUFFN0IsMEVBQTBEO0FBQzFELDZDQUErQjtBQUMvQiwyRUFBc0U7QUFJdEUsZ0ZBQW1GO0FBQ25GLG9EQUFpRDtBQUdqRCxNQUFNLHNCQUFzQixHQUFHLHdCQUF3QixDQUFDO0FBRXhEOzs7O0dBSUc7QUFDSCxNQUFNLGdDQUFnQyxHQUFHLHVCQUF1QixDQUFDO0FBTWpFOzs7Ozs7Ozs7OztHQVdHO0FBQ0ksS0FBSyxVQUFVLDZCQUE2QixDQUFDLFFBQXNCLEVBQUUsTUFBdUI7SUFDakcsTUFBTSxHQUFHLEdBQXVCLEVBQUUsQ0FBQztJQUVuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUN6RSxJQUFJLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLGdDQUFRLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekQsdUVBQXVFO1FBQ3ZFLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxF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cG9ydCB0eXBlIHsgUGx1Z2luUmVwb3J0SnNvbiwgUG9saWN5VmFsaWRhdGlvblJlcG9ydENvbmNsdXNpb24gfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgY29sbGVjdEFubm90YXRpb25SZXBvcnQgfSBmcm9tICcuL2NvbGxlY3QtYW5ub3RhdGlvbi1yZXBvcnQnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0ZVJlc3VsdCB9IGZyb20gJy4uLy4uL2FjdGlvbnMvdmFsaWRhdGUnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0NvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9hcGkvY2xvdWQtYXNzZW1ibHkvc3RhY2stY29sbGVjdGlvbic7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vLi4vYXBpL2lvL3ByaXZhdGUvaW8taGVscGVyJztcbmltcG9ydCB7IGhvc3RNZXNzYWdlRnJvbVZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi9hcGkvdmFsaWRhdGUvdmFsaWRhdGUtZm9ybWF0dGluZyc7XG5pbXBvcnQgeyBBc3NlbWJseUVycm9yIH0gZnJvbSAnLi4vdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IE1pbmltdW1TZXZlcml0eSB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgVkFMSURBVElPTl9SRVBPUlRfRklMRSA9ICd2YWxpZGF0aW9uLXJlcG9ydC5qc29uJztcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgZW1pdHMgY29uc3RydWN0IGFubm90YXRpb25zIGludG8gdGhlIHZhbGlkYXRpb24gcmVwb3J0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvbWFpbi9wYWNrYWdlcy9hd3MtY2RrLWxpYi9jb3JlL2xpYi9wcml2YXRlL2Fubm90YXRpb24tcGx1Z2luLnRzXG4gKi9cbmNvbnN0IENPTlNUUlVDVF9BTk5PVEFUSU9OU19QTFVHSU5OQU1FID0gJ0NvbnN0cnVjdCBBbm5vdGF0aW9ucyc7XG5cbmludGVyZmFjZSBBc3NlbWJseUxpa2Uge1xuICByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSB2YWxpZGF0aW9uIHJlcG9ydCB0aGF0IGNvbnRhaW5zIHRoZSB2YWxpZGF0aW9uIHJlcG9ydCB0aGF0IHRoZSBDREsgYXBwIGhhcyB3cml0dGVuLCBhcyB3ZWxsIGFzIGFueSBDb25zdHJ1Y3QgTWV0YWRhdGEgYW5ub3RhdGlvbnMgaW4gdGhlIG1hbmlmZXN0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgaW50byBhY2NvdW50IHRoZSBDREsgYXBwIGNhbiBhbHJlYWR5IGhhdmUgd3JpdHRlbiB0aGVcbiAqIGNvbnN0cnVjdCBhbm5vdGF0aW9ucyBpbnRvIHRoZSB2YWxpZGF0aW9uIHJlcG9ydCwgb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlXG4gKiBzZXR0aW5nIG9mIGEgZGVwcmVjYXRlZCBmZWF0dXJlIGZsYWcuIElmIHRoZSBhbm5vdGF0aW9ucyBhcmUgYWxyZWFkeSBpbiB0aGUgcmVwb3J0LFxuICogdGhleSBhcmUgbm90IGNvcGllZC5cbiAqXG4gKiBBZnRlcndhcmRzLCB0aGUgbGlzdCBvZiB2aW9sYXRpb25zIGlzIGZpbHRlcmVkIHRvIG9ubHkgaW5jbHVkZSB0aG9zZSB0aGF0IGFyZSByZWxldmFudCB0byB0aGUgc3RhY2tzIHNlbGVjdGVkIGZvciB2YWxpZGF0aW9uLlxuICpcbiAqIFJldHVybnMgd2hldGhlciBhbiBleHBsaWNpdCByZXBvcnQgZmlsZSB3YXMgZm91bmQgb3Igbm90LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb2J0YWluVW5pZmllZFZhbGlkYXRpb25SZXBvcnQoYXNzZW1ibHk6IEFzc2VtYmx5TGlrZSwgc3RhY2tzOiBTdGFja0NvbGxlY3Rpb24pOiBQcm9taXNlPFBsdWdpblJlcG9ydEpzb25bXT4ge1xuICBjb25zdCByZXQ6IFBsdWdpblJlcG9ydEpzb25bXSA9IFtdO1xuXG4gIGNvbnN0IHJlcG9ydFBhdGggPSBwYXRoLmpvaW4oYXNzZW1ibHkuZGlyZWN0b3J5LCBWQUxJREFUSU9OX1JFUE9SVF9GSUxFKTtcbiAgaWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMocmVwb3J0UGF0aCkpIHtcbiAgICBjb25zdCBzZWxlY3RlZFN0YWNrSWRzID0gbmV3IFNldChzdGFja3MuaGllcmFyY2hpY2FsSWRzKTtcbiAgICBjb25zdCByZXBvcnQgPSBNYW5pZmVzdC5sb2FkVmFsaWRhdGlvblJlcG9ydChyZXBvcnRQYXRoKTtcblxuICAgIC8vIEZpbHRlciB0aGUgcmVwb3J0IHRvIG9ubHkgaW5jbHVkZSB2aW9sYXRpb25zIGZvciB0aGUgc2VsZWN0ZWQgc3RhY2tzXG4gICAgY29uc3QgZmlsdGVyZWRSZXBvcnRzID0gZmlsdGVyUmVwb3J0c0J5U3RhY2tzKHJlcG9ydC5wbHVnaW5SZXBvcnRzLCBzZWxlY3RlZFN0YWNrSWRzKTtcbiAgICByZXQucHVzaCguLi5maWx0ZXJlZFJlcG9ydHMpO1xuICB9XG5cbiAgY29uc3QgYWxyZWFkeUhhc0Fubm90YXRpb25zID0gcmV0LnNvbWUoKHIpID0+IHIucGx1Z2luTmFtZSA9PT0gQ09OU1RSVUNUX0FOTk9UQVRJT05TX1BMVUdJTk5BTUUpO1xuICBpZiAoIWFscmVhZHlIYXNBbm5vdGF0aW9ucykge1xuICAgIGNvbnN0IGFubm90YXRpb25SZXBvcnQgPSBjb2xsZWN0QW5ub3RhdGlvblJlcG9ydChzdGFja3MpO1xuICAgIGlmIChhbm5vdGF0aW9uUmVwb3J0LnZpb2xhdGlvbnMubGVuZ3RoID4gMCB8fCBhbm5vdGF0aW9uUmVwb3J0LmNvbmNsdXNpb24gPT09ICdmYWlsdXJlJykge1xuICAgICAgcmV0LnB1c2goYW5ub3RhdGlvblJlcG9ydCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIGFsbCBpbmNvbnNlcXVlbnRpYWwgcmVwb3J0c1xuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIFJldHVybiBhIHN1Y2Nlc3MvZmFpbHVyZSBjb25jbHVzaW9uIGZyb20gdGhlIGdpdmVuIHJlcG9ydFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUNvbmNsdXNpb25zKHJlcG9ydHM6IFBsdWdpblJlcG9ydEpzb25bXSk6IFBvbGljeVZhbGlkYXRpb25SZXBvcnRDb25jbHVzaW9uIHtcbiAgY29uc3QgcmVwb3J0SGFzRmFpbHVyZXMgPSByZXBvcnRzLnNvbWUoKHIpID0+IHIuY29uY2x1c2lvbiA9PT0gJ2ZhaWx1cmUnKTtcbiAgcmV0dXJuIHJlcG9ydEhhc0ZhaWx1cmVzID8gJ2ZhaWx1cmUnIDogJ3N1Y2Nlc3MnO1xufVxuXG4vKipcbiAqIEZvciBvcGVyYXRpb25zIHRoYXQgYXJlIE5PVCBgY2RrIHZhbGlkYXRlYCwgcmVhZCB0aGUgdmFsaWRhdGlvbiByZXBvcnQgYW5kIHByb2R1Y2UgYSBmYWlsdXJlIGlmIHZhbGlkYXRpb24gZmFpbGVkLlxuICpcbiAqIFZhbGlkYXRpb24gZmFpbGVkIGlmIHRoZXJlIGFyZSBhbnkgcGx1Z2luIHJlcG9ydHMgd2l0aCBhIGZhaWx1cmUgY29uY2x1c2lvbiwgb3IgaWYgdGhlcmUgYXJlIGFueSB3YXJuaW5ncyBhbmQgdGhlIGFzc2VtYmx5IGlzIGluIHN0cmljdCBtb2RlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGhyb3dJZlZhbGlkYXRpb25GYWlsdXJlcyhcbiAgYXNzZW1ibHk6IEFzc2VtYmx5TGlrZSxcbiAgc3RhY2tzOiBTdGFja0NvbGxlY3Rpb24sXG4gIGZhaWxBdDogTWluaW11bVNldmVyaXR5LFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGx1Z2luUmVwb3J0cyA9IGF3YWl0IG9idGFpblVuaWZpZWRWYWxpZGF0aW9uUmVwb3J0KGFzc2VtYmx5LCBzdGFja3MpO1xuICBpZiAocGx1Z2luUmVwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb25jbHVzaW9uID0gY29tYmluZUNvbmNsdXNpb25zKHBsdWdpblJlcG9ydHMpO1xuICBjb25zdCByZXN1bHQ6IFZhbGlkYXRlUmVzdWx0ID0geyBjb25jbHVzaW9uLCBwbHVnaW5SZXBvcnRzIH07XG4gIGF3YWl0IGlvSGVscGVyLm5vdGlmeShob3N0TWVzc2FnZUZyb21WYWxpZGF0aW9uKHByb2Nlc3MuY3dkKCksIHJlc3VsdCkpO1xuXG4gIHN3aXRjaCAoZmFpbEF0KSB7XG4gICAgY2FzZSAnZXJyb3InOlxuICAgICAgaWYgKGNvbmNsdXNpb24gPT09ICdmYWlsdXJlJykge1xuICAgICAgICBjb25zdCBlcnJvciA9IEFzc2VtYmx5RXJyb3Iud2l0aFN0YWNrcygnU3ludGhlc2lzIGZpbmlzaGVkIHdpdGggZXJyb3JzJywgc3RhY2tzLnN0YWNrQXJ0aWZhY3RzKTtcbiAgICAgICAgZXJyb3IuYXR0YWNoU3ludGhlc2lzRXJyb3JDb2RlKCdBbm5vdGF0aW9uRXJyb3JzJyk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2Fybic6XG4gICAgICAvLyBpZiB3ZSdyZSBmYWlsaW5nIGF0ICd3YXJuJywgdGhlbiBib3RoIHdhcm5pbmdzIGFuZCBlcnJvcnMgY2F1c2UgZmFpbHVyZSwgc28gdGhlIGluaXRpYWwgY29uY2x1c2lvbiBpcyBjb3JyZWN0XG4gICAgICBpZiAoY29uY2x1c2lvbiA9PT0gJ2ZhaWx1cmUnIHx8IGhhc1dhcm5pbmdzKHBsdWdpblJlcG9ydHMpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gQXNzZW1ibHlFcnJvci53aXRoU3RhY2tzKCdTeW50aGVzaXMgZmluaXNoZWQgd2l0aCB3YXJuaW5ncyAoLS1zdHJpY3QgbW9kZSknLCBzdGFja3Muc3RhY2tBcnRpZmFjdHMpO1xuICAgICAgICBlcnJvci5hdHRhY2hTeW50aGVzaXNFcnJvckNvZGUoJ1N0cmljdEFubm90YXRpb25XYXJuaW5ncycpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbm9uZSc6XG4gICAgICAvLyBpZiB3ZSdyZSBub3QgZmFpbGluZyBhdCBhbGwsIHRoZW4gdGhlIGNvbmNsdXNpb24gaXMgYWx3YXlzIHN1Y2Nlc3NcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhc1dhcm5pbmdzKHJlcG9ydHM6IFBsdWdpblJlcG9ydEpzb25bXSk6IGJvb2xlYW4ge1xuICByZXR1cm4gcmVwb3J0cy5zb21lKChyKSA9PiByLnZpb2xhdGlvbnMuc29tZSgodikgPT4gdi5zZXZlcml0eSA9PT0gJ3dhcm5pbmcnKSk7XG59XG5cbi8qKlxuICogUmVtb3ZlIHZpb2xhdGlvbnMgdGhhdCBhcmVuJ3QgaW4gb25kZSBvZiB0aGUgZ2l2ZW4gc3RhY2tzXG4gKi9cbmZ1bmN0aW9uIGZpbHRlclJlcG9ydHNCeVN0YWNrcyhyZXBvcnRzOiBQbHVnaW5SZXBvcnRKc29uW10sIHNlbGVjdGVkU3RhY2tJZHM6IFNldDxzdHJpbmc+KTogUGx1Z2luUmVwb3J0SnNvbltdIHtcbiAgcmV0dXJuIHJlcG9ydHMubWFwKChyZXBvcnQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJlZFZpb2xhdGlvbnMgPSByZXBvcnQudmlvbGF0aW9ucy5maWx0ZXIoKHZpb2xhdGlvbikgPT4ge1xuICAgICAgaWYgKHZpb2xhdGlvbi52aW9sYXRpbmdDb25zdHJ1Y3RzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gdmlvbGF0aW9uLnZpb2xhdGluZ0NvbnN0cnVjdHMuc29tZSgoYykgPT5cbiAgICAgICAgc2VsZWN0ZWRTdGFja0lkcy5oYXMoYy5jb25zdHJ1Y3RQYXRoPy5zcGxpdCgnLycpWzBdID8/ICcnKSxcbiAgICAgICk7XG4gICAgfSkubWFwKCh2aW9sYXRpb24pID0+IHtcbiAgICAgIGlmICh2aW9sYXRpb24udmlvbGF0aW5nQ29uc3RydWN0cy5sZW5ndGggPT09IDApIHJldHVybiB2aW9sYXRpb247XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi52aW9sYXRpb24sXG4gICAgICAgIHZpb2xhdGluZ0NvbnN0cnVjdHM6IHZpb2xhdGlvbi52aW9sYXRpbmdDb25zdHJ1Y3RzLmZpbHRlcigoYykgPT5cbiAgICAgICAgICBzZWxlY3RlZFN0YWNrSWRzLmhhcyhjLmNvbnN0cnVjdFBhdGg/LnNwbGl0KCcvJylbMF0gPz8gJycpLFxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXBvcnQsXG4gICAgICB2aW9sYXRpb25zOiBmaWx0ZXJlZFZpb2xhdGlvbnMsXG4gICAgICBjb25jbHVzaW9uOiBmaWx0ZXJlZFZpb2xhdGlvbnMubGVuZ3RoID4gMCA/IHJlcG9ydC5jb25jbHVzaW9uIDogKCdzdWNjZXNzJyBhcyBjb25zdCksXG4gICAgfTtcbiAgfSk7XG59XG4iXX0=
@@ -11,6 +11,10 @@ export declare class ToolkitError extends Error {
11
11
  * Determines if a given error is an instance of AuthenticationError.
12
12
  */
13
13
  static isAuthenticationError(x: any): x is AuthenticationError;
14
+ /**
15
+ * Determines if a given error is an instance of AbortError.
16
+ */
17
+ static isAbortError(x: any): x is AbortError;
14
18
  /**
15
19
  * Determines if a given error is an instance of DeploymentError.
16
20
  */
@@ -51,6 +55,22 @@ export declare class AuthenticationError extends ToolkitError {
51
55
  readonly source = "user";
52
56
  constructor(errorCode: string, message: string);
53
57
  }
58
+ /**
59
+ * Represents an abort of an operation because the user declined a confirmation.
60
+ *
61
+ * This is not a failure of the toolkit: the user was asked a question and chose
62
+ * not to proceed. It carries a per-action error code (for example
63
+ * `DeployAborted`) so the reason stays specific, while `isAbortError` lets
64
+ * consumers detect a user-initiated abort without matching on messages. The
65
+ * default message, `Operation cancelled`, is a sensible generic for any action.
66
+ */
67
+ export declare class AbortError extends ToolkitError {
68
+ /**
69
+ * Denotes the source of the error as user.
70
+ */
71
+ readonly source = "user";
72
+ constructor(errorCode: string, message?: string);
73
+ }
54
74
  /**
55
75
  * Represents an error causes by cloud assembly synthesis
56
76
  *
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DeploymentErrorCodes = exports.NoResultsFoundError = exports.ContextProviderError = exports.DeploymentError = exports.AssemblyError = exports.AuthenticationError = exports.ToolkitError = void 0;
3
+ exports.DeploymentErrorCodes = exports.NoResultsFoundError = exports.ContextProviderError = exports.DeploymentError = exports.AssemblyError = exports.AbortError = exports.AuthenticationError = exports.ToolkitError = void 0;
4
4
  const TOOLKIT_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.ToolkitError');
5
5
  const AUTHENTICATION_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.AuthenticationError');
6
+ const ABORT_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.AbortError');
6
7
  const DEPLOYMENT_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.DeploymentError');
7
8
  const ASSEMBLY_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.AssemblyError');
8
9
  const CONTEXT_PROVIDER_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.ContextProviderError');
@@ -23,6 +24,12 @@ class ToolkitError extends Error {
23
24
  static isAuthenticationError(x) {
24
25
  return ToolkitError.isToolkitError(x) && AUTHENTICATION_ERROR_SYMBOL in x;
25
26
  }
27
+ /**
28
+ * Determines if a given error is an instance of AbortError.
29
+ */
30
+ static isAbortError(x) {
31
+ return ToolkitError.isToolkitError(x) && ABORT_ERROR_SYMBOL in x;
32
+ }
26
33
  /**
27
34
  * Determines if a given error is an instance of DeploymentError.
28
35
  */
@@ -85,6 +92,27 @@ class AuthenticationError extends ToolkitError {
85
92
  }
86
93
  }
87
94
  exports.AuthenticationError = AuthenticationError;
95
+ /**
96
+ * Represents an abort of an operation because the user declined a confirmation.
97
+ *
98
+ * This is not a failure of the toolkit: the user was asked a question and chose
99
+ * not to proceed. It carries a per-action error code (for example
100
+ * `DeployAborted`) so the reason stays specific, while `isAbortError` lets
101
+ * consumers detect a user-initiated abort without matching on messages. The
102
+ * default message, `Operation cancelled`, is a sensible generic for any action.
103
+ */
104
+ class AbortError extends ToolkitError {
105
+ /**
106
+ * Denotes the source of the error as user.
107
+ */
108
+ source = 'user';
109
+ constructor(errorCode, message = 'Operation cancelled') {
110
+ super(errorCode, message, 'abort');
111
+ Object.setPrototypeOf(this, AbortError.prototype);
112
+ Object.defineProperty(this, ABORT_ERROR_SYMBOL, { value: true });
113
+ }
114
+ }
115
+ exports.AbortError = AbortError;
88
116
  /**
89
117
  * Represents an error causes by cloud assembly synthesis
90
118
  *
@@ -193,4 +221,4 @@ class DeploymentErrorCodes {
193
221
  static PRIVATE_RESOURCE_ERROR = 'PrivateResourceError';
194
222
  }
195
223
  exports.DeploymentErrorCodes = DeploymentErrorCodes;
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRvb2xraXQtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFDN0UsTUFBTSwyQkFBMkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFDM0YsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7QUFDbkYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFDL0UsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7QUFDOUYsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFFN0Y7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxLQUFLO0lBQ3JDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFNO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLG9CQUFvQixJQUFJLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBTTtRQUN4QyxPQUFPLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksMkJBQTJCLElBQUksQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFNO1FBQ3BDLE9BQU8sWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSx1QkFBdUIsSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOztP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R0FBRyxNQUFNLENBQUM7SUFFaEMsWUFBWSxTQUFpQixFQUFFLE9BQWUsRUFBRSxLQUFlO1FBQzdELEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLDZCQUE2QixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNGO0FBekJELG9EQXlCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxvQkFBb0I7SUFDM0QsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRjtBQU5ELGtEQU1DO0FBRUQsTUFBc0Isb0JBQW9CO0lBQ2pDLE1BQU0sQ0FBVSw0QkFBNEIsR0FBRyxrQkFBa0IsQ0FBQztJQUNsRSxNQUFNLENBQVUsYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUMvQyxNQUFNLENBQVUsc0JBQXNCLEdBQUcsc0JBQXNCLENBQUM7O0FBSHpFLG9EQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuXG5jb25zdCBUT09MS0lUX0VSUk9SX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL3Rvb2xraXQtbGliLlRvb2xraXRFcnJvcicpO1xuY29uc3QgQVVUSEVOVElDQVRJT05fRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuQXV0aGVudGljYXRpb25FcnJvcicpO1xuY29uc3QgREVQTE9ZTUVOVF9FUlJPUl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay90b29sa2l0LWxpYi5EZXBsb3ltZW50RXJyb3InKTtcbmNvbnN0IEFTU0VNQkxZX0VSUk9SX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL3Rvb2xraXQtbGliLkFzc2VtYmx5RXJyb3InKTtcbmNvbnN0IENPTlRFWFRfUFJPVklERVJfRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuQ29udGV4dFByb3ZpZGVyRXJyb3InKTtcbmNvbnN0IE5PX1JFU1VMVFNfRk9VTkRfRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuTm9SZXN1bHRzRm91bmRFcnJvcicpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmFsIHRvb2xraXQgZXJyb3IgaW4gdGhlIEFXUyBDREsgVG9vbGtpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvb2xraXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBnaXZlbiBlcnJvciBpcyBhbiBpbnN0YW5jZSBvZiBUb29sa2l0RXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVG9vbGtpdEVycm9yKHg6IGFueSk6IHggaXMgVG9vbGtpdEVycm9yIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YoeCkgPT09ICdvYmplY3QnICYmIFRPT0xLSVRfRVJST1JfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVycm9yIGlzIGFuIGluc3RhbmNlIG9mIEF1dGhlbnRpY2F0aW9uRXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzQXV0aGVudGljYXRpb25FcnJvcih4OiBhbnkpOiB4IGlzIEF1dGhlbnRpY2F0aW9uRXJyb3Ige1xuICAgIHJldHVybiBUb29sa2l0RXJyb3IuaXNUb29sa2l0RXJyb3IoeCkgJiYgQVVUSEVOVElDQVRJT05fRVJST1JfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVycm9yIGlzIGFuIGluc3RhbmNlIG9mIERlcGxveW1lbnRFcnJvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNEZXBsb3ltZW50RXJyb3IoeDogYW55KTogeCBpcyBEZXBsb3ltZW50RXJyb3Ige1xuICAgIHJldHVybiBUb29sa2l0RXJyb3IuaXNUb29sa2l0RXJyb3IoeCkgJiYgREVQTE9ZTUVOVF9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQXNzZW1ibHlFcnJvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNBc3NlbWJseUVycm9yKHg6IGFueSk6IHggaXMgQXNzZW1ibHlFcnJvciB7XG4gICAgcmV0dXJuIFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcih4KSAmJiBBU1NFTUJMWV9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQ29udGV4dFByb3ZpZGVyRXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzQ29udGV4dFByb3ZpZGVyRXJyb3IoeDogYW55KTogeCBpcyBDb250ZXh0UHJvdmlkZXJFcnJvciB7XG4gICAgcmV0dXJuIFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcih4KSAmJiBDT05URVhUX1BST1ZJREVSX0VSUk9SX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgVG9vbGtpdEVycm9yIHdpdGggYW4gb3JpZ2luYWwgZXJyb3IgYXMgY2F1c2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aENhdXNlKGVycm9yQ29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duKTogVG9vbGtpdEVycm9yIHtcbiAgICByZXR1cm4gbmV3IFRvb2xraXRFcnJvcihlcnJvckNvZGUsIG1lc3NhZ2UsICd0b29sa2l0JywgZXJyb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBlcnJvciwgZGVmYXVsdHMgdG8gXCJ0b29sa2l0XCIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZW5vdGVzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yIGFzIHRoZSB0b29sa2l0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZTogJ3Rvb2xraXQnIHwgJ3VzZXInO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BlY2lmaWMgb3JpZ2luYWwgY2F1c2Ugb2YgdGhlIGVycm9yLCBpZiBhdmFpbGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjYXVzZT86IHVua25vd247XG5cbiAgY29uc3RydWN0b3IoZXJyb3JDb2RlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgdHlwZTogc3RyaW5nID0gJ3Rvb2xraXQnLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSBlcnJvckNvZGU7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFRvb2xraXRFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBUT09MS0lUX0VSUk9SX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc291cmNlID0gJ3Rvb2xraXQnO1xuICAgIHRoaXMuY2F1c2UgPSBjYXVzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXV0aGVudGljYXRpb24tc3BlY2lmaWMgZXJyb3IgaW4gdGhlIEFXUyBDREsgVG9vbGtpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uRXJyb3IgZXh0ZW5kcyBUb29sa2l0RXJyb3Ige1xuICAvKipcbiAgICogRGVub3RlcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBhcyB1c2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZSA9ICd1c2VyJztcblxuICBjb25zdHJ1Y3RvcihlcnJvckNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoZXJyb3JDb2RlLCBtZXNzYWdlLCAnYXV0aGVudGljYXRpb24nKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQXV0aGVudGljYXRpb25FcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBBVVRIRU5USUNBVElPTl9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGVycm9yIGNhdXNlcyBieSBjbG91ZCBhc3NlbWJseSBzeW50aGVzaXNcbiAqXG4gKiBUaGlzIGluY2x1ZGVzIGVycm9ycyB0aHJvd24gZHVyaW5nIGFwcCBleGVjdXRpb24sIGFzIHdlbGwgYXMgZmFpbGluZyBhbm5vdGF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VtYmx5RXJyb3IgZXh0ZW5kcyBUb29sa2l0RXJyb3Ige1xuICAvKipcbiAgICogQW4gQXNzZW1ibHlFcnJvciB3aXRoIGFuIG9yaWdpbmFsIGVycm9yIGFzIGNhdXNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGhDYXVzZShtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duKTogQXNzZW1ibHlFcnJvciB7XG4gICAgcmV0dXJuIG5ldyBBc3NlbWJseUVycm9yKG1lc3NhZ2UsIHVuZGVmaW5lZCwgZXJyb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIEFzc2VtYmx5RXJyb3Igd2l0aCBhIGxpc3Qgb2Ygc3RhY2tzIGFzIGNhdXNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGhTdGFja3MobWVzc2FnZTogc3RyaW5nLCBzdGFja3M/OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXSk6IEFzc2VtYmx5RXJyb3Ige1xuICAgIHJldHVybiBuZXcgQXNzZW1ibHlFcnJvcihtZXNzYWdlLCBzdGFja3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbm90ZXMgdGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IgYXMgdXNlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2UgPSAndXNlcic7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFja3MgdGhhdCBjYXVzZWQgdGhlIGVycm9yLCBpZiBhdmFpbGFibGVcbiAgICpcbiAgICogVGhlIGBtZXNzYWdlc2AgcHJvcGVydHkgb2YgZWFjaCBgY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0YCB3aWxsIGNvbnRhaW4gdGhlIHJlc3BlY3RpdmUgZXJyb3JzLlxuICAgKiBBYnNlbmNlIGluZGljYXRlcyBzeW50aGVzaXMgZGlkbid0IGZ1bGx5IGNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YWNrcz86IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdO1xuXG4gIHByaXZhdGUgX3N5bnRoRXJyb3JDb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YWNrcz86IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcignQXNzZW1ibHlFcnJvcicsIG1lc3NhZ2UsICdhc3NlbWJseScsIGNhdXNlKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQXNzZW1ibHlFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBBU1NFTUJMWV9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gICAgdGhpcy5zdGFja3MgPSBzdGFja3M7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN5bnRoZXNpcyBlcnJvciBjb2RlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN5bnRoRXJyb3JDb2RlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3N5bnRoRXJyb3JDb2RlO1xuICB9XG5cbiAgcHVibGljIGF0dGFjaFN5bnRoZXNpc0Vycm9yQ29kZShzeW50aGVzaXNFcnJvckNvZGU6IHN0cmluZykge1xuICAgIHRoaXMuX3N5bnRoRXJyb3JDb2RlID0gc3ludGhlc2lzRXJyb3JDb2RlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGRlcGxveW1lbnQtcmVsYXRlZCBlcnJvciBpbiB0aGUgQVdTIENESyBUb29sa2l0LlxuICovXG5leHBvcnQgY2xhc3MgRGVwbG95bWVudEVycm9yIGV4dGVuZHMgVG9vbGtpdEVycm9yIHtcbiAgLyoqXG4gICAqIERlbm90ZXMgdGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IgYXMgdXNlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2UgPSAndXNlcic7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlcGxveW1lbnRFcnJvckNvZGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGRlcGxveW1lbnRFcnJvckNvZGU6IHN0cmluZykge1xuICAgIHN1cGVyKCdEZXBsb3ltZW50RXJyb3InLCBtZXNzYWdlLCAnZGVwbG95bWVudCcpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBEZXBsb3ltZW50RXJyb3IucHJvdG90eXBlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgREVQTE9ZTUVOVF9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gICAgdGhpcy5kZXBsb3ltZW50RXJyb3JDb2RlID0gZGVwbG95bWVudEVycm9yQ29kZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZXJyb3Igb3JpZ2luYXRpbmcgZnJvbSBhIENvbnRleHQgUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRleHRQcm92aWRlckVycm9yIGV4dGVuZHMgVG9vbGtpdEVycm9yIHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBnaXZlbiBlcnJvciBpcyBhbiBpbnN0YW5jZSBvZiBOb1Jlc3VsdHNGb3VuZEVycm9yLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc05vUmVzdWx0c0ZvdW5kRXJyb3IoeDogYW55KTogeCBpcyBOb1Jlc3VsdHNGb3VuZEVycm9yIHtcbiAgICByZXR1cm4gVG9vbGtpdEVycm9yLmlzQ29udGV4dFByb3ZpZGVyRXJyb3IoeCkgJiYgTk9fUkVTVUxUU19GT1VORF9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIENvbnRleHRQcm92aWRlckVycm9yIHdpdGggYW4gb3JpZ2luYWwgZXJyb3IgYXMgY2F1c2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aENhdXNlKGVycm9yQ29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duKTogQ29udGV4dFByb3ZpZGVyRXJyb3Ige1xuICAgIHJldHVybiBuZXcgQ29udGV4dFByb3ZpZGVyRXJyb3IoZXJyb3JDb2RlLCBtZXNzYWdlLCBlcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogRGVub3RlcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBhcyB1c2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZSA9ICd1c2VyJztcblxuICBjb25zdHJ1Y3RvcihlcnJvckNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcihlcnJvckNvZGUsIG1lc3NhZ2UsICdjb250ZXh0LXByb3ZpZGVyJywgY2F1c2UpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBDb250ZXh0UHJvdmlkZXJFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBDT05URVhUX1BST1ZJREVSX0VSUk9SX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgc3BlY2lmaWMgY29udGV4dCBwcm92aWRlciBsb29rdXAgZmFpbHVyZSBpbmRpY2F0aW5nIG5vIHJlc3VsdHMgd2hlcmUgZm91bmQgZm9yIGEgY29udGV4dCBxdWVyeVxuICovXG5leHBvcnQgY2xhc3MgTm9SZXN1bHRzRm91bmRFcnJvciBleHRlbmRzIENvbnRleHRQcm92aWRlckVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoJ05vUmVzdWx0c0ZvdW5kJywgbWVzc2FnZSk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIE5vUmVzdWx0c0ZvdW5kRXJyb3IucHJvdG90eXBlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTk9fUkVTVUxUU19GT1VORF9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlcGxveW1lbnRFcnJvckNvZGVzIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVEFDS19ESVNBUFBFQVJFRF9FUlJPUl9DT0RFID0gJ1N0YWNrRGlzYXBwZWFyZWQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVOS05PV05fRVJST1IgPSAnVW5rbm93bkVycm9yJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUklWQVRFX1JFU09VUkNFX0VSUk9SID0gJ1ByaXZhdGVSZXNvdXJjZUVycm9yJztcbn1cblxuIl19
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRvb2xraXQtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFDN0UsTUFBTSwyQkFBMkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFDM0YsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFDekUsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7QUFDbkYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFDL0UsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7QUFDOUYsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFFN0Y7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxLQUFLO0lBQ3JDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFNO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLG9CQUFvQixJQUFJLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBTTtRQUN4QyxPQUFPLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksMkJBQTJCLElBQUksQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBTTtRQUMvQixPQUFPLFlBQVksQ0FBQyxjQUFjLENB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Q0FBQztRQUNqQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRjtBQU5ELGtEQU1DO0FBRUQsTUFBc0Isb0JBQW9CO0lBQ2pDLE1BQU0sQ0FBVSw0QkFBNEIsR0FBRyxrQkFBa0IsQ0FBQztJQUNsRSxNQUFNLENBQVUsYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUMvQyxNQUFNLENBQVUsc0JBQXNCLEdBQUcsc0JBQXNCLENBQUM7O0FBSHpFLG9EQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuXG5jb25zdCBUT09MS0lUX0VSUk9SX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL3Rvb2xraXQtbGliLlRvb2xraXRFcnJvcicpO1xuY29uc3QgQVVUSEVOVElDQVRJT05fRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuQXV0aGVudGljYXRpb25FcnJvcicpO1xuY29uc3QgQUJPUlRfRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuQWJvcnRFcnJvcicpO1xuY29uc3QgREVQTE9ZTUVOVF9FUlJPUl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay90b29sa2l0LWxpYi5EZXBsb3ltZW50RXJyb3InKTtcbmNvbnN0IEFTU0VNQkxZX0VSUk9SX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL3Rvb2xraXQtbGliLkFzc2VtYmx5RXJyb3InKTtcbmNvbnN0IENPTlRFWFRfUFJPVklERVJfRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuQ29udGV4dFByb3ZpZGVyRXJyb3InKTtcbmNvbnN0IE5PX1JFU1VMVFNfRk9VTkRfRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuTm9SZXN1bHRzRm91bmRFcnJvcicpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmFsIHRvb2xraXQgZXJyb3IgaW4gdGhlIEFXUyBDREsgVG9vbGtpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvb2xraXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBnaXZlbiBlcnJvciBpcyBhbiBpbnN0YW5jZSBvZiBUb29sa2l0RXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVG9vbGtpdEVycm9yKHg6IGFueSk6IHggaXMgVG9vbGtpdEVycm9yIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YoeCkgPT09ICdvYmplY3QnICYmIFRPT0xLSVRfRVJST1JfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVycm9yIGlzIGFuIGluc3RhbmNlIG9mIEF1dGhlbnRpY2F0aW9uRXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzQXV0aGVudGljYXRpb25FcnJvcih4OiBhbnkpOiB4IGlzIEF1dGhlbnRpY2F0aW9uRXJyb3Ige1xuICAgIHJldHVybiBUb29sa2l0RXJyb3IuaXNUb29sa2l0RXJyb3IoeCkgJiYgQVVUSEVOVElDQVRJT05fRVJST1JfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVycm9yIGlzIGFuIGluc3RhbmNlIG9mIEFib3J0RXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzQWJvcnRFcnJvcih4OiBhbnkpOiB4IGlzIEFib3J0RXJyb3Ige1xuICAgIHJldHVybiBUb29sa2l0RXJyb3IuaXNUb29sa2l0RXJyb3IoeCkgJiYgQUJPUlRfRVJST1JfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVycm9yIGlzIGFuIGluc3RhbmNlIG9mIERlcGxveW1lbnRFcnJvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNEZXBsb3ltZW50RXJyb3IoeDogYW55KTogeCBpcyBEZXBsb3ltZW50RXJyb3Ige1xuICAgIHJldHVybiBUb29sa2l0RXJyb3IuaXNUb29sa2l0RXJyb3IoeCkgJiYgREVQTE9ZTUVOVF9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQXNzZW1ibHlFcnJvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNBc3NlbWJseUVycm9yKHg6IGFueSk6IHggaXMgQXNzZW1ibHlFcnJvciB7XG4gICAgcmV0dXJuIFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcih4KSAmJiBBU1NFTUJMWV9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQ29udGV4dFByb3ZpZGVyRXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzQ29udGV4dFByb3ZpZGVyRXJyb3IoeDogYW55KTogeCBpcyBDb250ZXh0UHJvdmlkZXJFcnJvciB7XG4gICAgcmV0dXJuIFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcih4KSAmJiBDT05URVhUX1BST1ZJREVSX0VSUk9SX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgVG9vbGtpdEVycm9yIHdpdGggYW4gb3JpZ2luYWwgZXJyb3IgYXMgY2F1c2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aENhdXNlKGVycm9yQ29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duKTogVG9vbGtpdEVycm9yIHtcbiAgICByZXR1cm4gbmV3IFRvb2xraXRFcnJvcihlcnJvckNvZGUsIG1lc3NhZ2UsICd0b29sa2l0JywgZXJyb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBlcnJvciwgZGVmYXVsdHMgdG8gXCJ0b29sa2l0XCIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZW5vdGVzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yIGFzIHRoZSB0b29sa2l0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZTogJ3Rvb2xraXQnIHwgJ3VzZXInO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BlY2lmaWMgb3JpZ2luYWwgY2F1c2Ugb2YgdGhlIGVycm9yLCBpZiBhdmFpbGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjYXVzZT86IHVua25vd247XG5cbiAgY29uc3RydWN0b3IoZXJyb3JDb2RlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgdHlwZTogc3RyaW5nID0gJ3Rvb2xraXQnLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSBlcnJvckNvZGU7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFRvb2xraXRFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBUT09MS0lUX0VSUk9SX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc291cmNlID0gJ3Rvb2xraXQnO1xuICAgIHRoaXMuY2F1c2UgPSBjYXVzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXV0aGVudGljYXRpb24tc3BlY2lmaWMgZXJyb3IgaW4gdGhlIEFXUyBDREsgVG9vbGtpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uRXJyb3IgZXh0ZW5kcyBUb29sa2l0RXJyb3Ige1xuICAvKipcbiAgICogRGVub3RlcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBhcyB1c2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZSA9ICd1c2VyJztcblxuICBjb25zdHJ1Y3RvcihlcnJvckNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoZXJyb3JDb2RlLCBtZXNzYWdlLCAnYXV0aGVudGljYXRpb24nKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQXV0aGVudGljYXRpb25FcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBBVVRIRU5USUNBVElPTl9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGFib3J0IG9mIGFuIG9wZXJhdGlvbiBiZWNhdXNlIHRoZSB1c2VyIGRlY2xpbmVkIGEgY29uZmlybWF0aW9uLlxuICpcbiAqIFRoaXMgaXMgbm90IGEgZmFpbHVyZSBvZiB0aGUgdG9vbGtpdDogdGhlIHVzZXIgd2FzIGFza2VkIGEgcXVlc3Rpb24gYW5kIGNob3NlXG4gKiBub3QgdG8gcHJvY2VlZC4gSXQgY2FycmllcyBhIHBlci1hY3Rpb24gZXJyb3IgY29kZSAoZm9yIGV4YW1wbGVcbiAqIGBEZXBsb3lBYm9ydGVkYCkgc28gdGhlIHJlYXNvbiBzdGF5cyBzcGVjaWZpYywgd2hpbGUgYGlzQWJvcnRFcnJvcmAgbGV0c1xuICogY29uc3VtZXJzIGRldGVjdCBhIHVzZXItaW5pdGlhdGVkIGFib3J0IHdpdGhvdXQgbWF0Y2hpbmcgb24gbWVzc2FnZXMuIFRoZVxuICogZGVmYXVsdCBtZXNzYWdlLCBgT3BlcmF0aW9uIGNhbmNlbGxlZGAsIGlzIGEgc2Vuc2libGUgZ2VuZXJpYyBmb3IgYW55IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFib3J0RXJyb3IgZXh0ZW5kcyBUb29sa2l0RXJyb3Ige1xuICAvKipcbiAgICogRGVub3RlcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBhcyB1c2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZSA9ICd1c2VyJztcblxuICBjb25zdHJ1Y3RvcihlcnJvckNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nID0gJ09wZXJhdGlvbiBjYW5jZWxsZWQnKSB7XG4gICAgc3VwZXIoZXJyb3JDb2RlLCBtZXNzYWdlLCAnYWJvcnQnKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQWJvcnRFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBBQk9SVF9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGVycm9yIGNhdXNlcyBieSBjbG91ZCBhc3NlbWJseSBzeW50aGVzaXNcbiAqXG4gKiBUaGlzIGluY2x1ZGVzIGVycm9ycyB0aHJvd24gZHVyaW5nIGFwcCBleGVjdXRpb24sIGFzIHdlbGwgYXMgZmFpbGluZyBhbm5vdGF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VtYmx5RXJyb3IgZXh0ZW5kcyBUb29sa2l0RXJyb3Ige1xuICAvKipcbiAgICogQW4gQXNzZW1ibHlFcnJvciB3aXRoIGFuIG9yaWdpbmFsIGVycm9yIGFzIGNhdXNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGhDYXVzZShtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duKTogQXNzZW1ibHlFcnJvciB7XG4gICAgcmV0dXJuIG5ldyBBc3NlbWJseUVycm9yKG1lc3NhZ2UsIHVuZGVmaW5lZCwgZXJyb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIEFzc2VtYmx5RXJyb3Igd2l0aCBhIGxpc3Qgb2Ygc3RhY2tzIGFzIGNhdXNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGhTdGFja3MobWVzc2FnZTogc3RyaW5nLCBzdGFja3M/OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXSk6IEFzc2VtYmx5RXJyb3Ige1xuICAgIHJldHVybiBuZXcgQXNzZW1ibHlFcnJvcihtZXNzYWdlLCBzdGFja3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbm90ZXMgdGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IgYXMgdXNlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2UgPSAndXNlcic7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFja3MgdGhhdCBjYXVzZWQgdGhlIGVycm9yLCBpZiBhdmFpbGFibGVcbiAgICpcbiAgICogVGhlIGBtZXNzYWdlc2AgcHJvcGVydHkgb2YgZWFjaCBgY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0YCB3aWxsIGNvbnRhaW4gdGhlIHJlc3BlY3RpdmUgZXJyb3JzLlxuICAgKiBBYnNlbmNlIGluZGljYXRlcyBzeW50aGVzaXMgZGlkbid0IGZ1bGx5IGNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YWNrcz86IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdO1xuXG4gIHByaXZhdGUgX3N5bnRoRXJyb3JDb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YWNrcz86IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcignQXNzZW1ibHlFcnJvcicsIG1lc3NhZ2UsICdhc3NlbWJseScsIGNhdXNlKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQXNzZW1ibHlFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBBU1NFTUJMWV9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gICAgdGhpcy5zdGFja3MgPSBzdGFja3M7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN5bnRoZXNpcyBlcnJvciBjb2RlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN5bnRoRXJyb3JDb2RlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3N5bnRoRXJyb3JDb2RlO1xuICB9XG5cbiAgcHVibGljIGF0dGFjaFN5bnRoZXNpc0Vycm9yQ29kZShzeW50aGVzaXNFcnJvckNvZGU6IHN0cmluZykge1xuICAgIHRoaXMuX3N5bnRoRXJyb3JDb2RlID0gc3ludGhlc2lzRXJyb3JDb2RlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGRlcGxveW1lbnQtcmVsYXRlZCBlcnJvciBpbiB0aGUgQVdTIENESyBUb29sa2l0LlxuICovXG5leHBvcnQgY2xhc3MgRGVwbG95bWVudEVycm9yIGV4dGVuZHMgVG9vbGtpdEVycm9yIHtcbiAgLyoqXG4gICAqIERlbm90ZXMgdGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IgYXMgdXNlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2UgPSAndXNlcic7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlcGxveW1lbnRFcnJvckNvZGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGRlcGxveW1lbnRFcnJvckNvZGU6IHN0cmluZykge1xuICAgIHN1cGVyKCdEZXBsb3ltZW50RXJyb3InLCBtZXNzYWdlLCAnZGVwbG95bWVudCcpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBEZXBsb3ltZW50RXJyb3IucHJvdG90eXBlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgREVQTE9ZTUVOVF9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gICAgdGhpcy5kZXBsb3ltZW50RXJyb3JDb2RlID0gZGVwbG95bWVudEVycm9yQ29kZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZXJyb3Igb3JpZ2luYXRpbmcgZnJvbSBhIENvbnRleHQgUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRleHRQcm92aWRlckVycm9yIGV4dGVuZHMgVG9vbGtpdEVycm9yIHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBnaXZlbiBlcnJvciBpcyBhbiBpbnN0YW5jZSBvZiBOb1Jlc3VsdHNGb3VuZEVycm9yLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc05vUmVzdWx0c0ZvdW5kRXJyb3IoeDogYW55KTogeCBpcyBOb1Jlc3VsdHNGb3VuZEVycm9yIHtcbiAgICByZXR1cm4gVG9vbGtpdEVycm9yLmlzQ29udGV4dFByb3ZpZGVyRXJyb3IoeCkgJiYgTk9fUkVTVUxUU19GT1VORF9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIENvbnRleHRQcm92aWRlckVycm9yIHdpdGggYW4gb3JpZ2luYWwgZXJyb3IgYXMgY2F1c2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aENhdXNlKGVycm9yQ29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duKTogQ29udGV4dFByb3ZpZGVyRXJyb3Ige1xuICAgIHJldHVybiBuZXcgQ29udGV4dFByb3ZpZGVyRXJyb3IoZXJyb3JDb2RlLCBtZXNzYWdlLCBlcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogRGVub3RlcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBhcyB1c2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZSA9ICd1c2VyJztcblxuICBjb25zdHJ1Y3RvcihlcnJvckNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcihlcnJvckNvZGUsIG1lc3NhZ2UsICdjb250ZXh0LXByb3ZpZGVyJywgY2F1c2UpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBDb250ZXh0UHJvdmlkZXJFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBDT05URVhUX1BST1ZJREVSX0VSUk9SX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgc3BlY2lmaWMgY29udGV4dCBwcm92aWRlciBsb29rdXAgZmFpbHVyZSBpbmRpY2F0aW5nIG5vIHJlc3VsdHMgd2hlcmUgZm91bmQgZm9yIGEgY29udGV4dCBxdWVyeVxuICovXG5leHBvcnQgY2xhc3MgTm9SZXN1bHRzRm91bmRFcnJvciBleHRlbmRzIENvbnRleHRQcm92aWRlckVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoJ05vUmVzdWx0c0ZvdW5kJywgbWVzc2FnZSk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIE5vUmVzdWx0c0ZvdW5kRXJyb3IucHJvdG90eXBlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTk9fUkVTVUxUU19GT1VORF9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlcGxveW1lbnRFcnJvckNvZGVzIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVEFDS19ESVNBUFBFQVJFRF9FUlJPUl9DT0RFID0gJ1N0YWNrRGlzYXBwZWFyZWQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVOS05PV05fRVJST1IgPSAnVW5rbm93bkVycm9yJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUklWQVRFX1JFU09VUkNFX0VSUk9SID0gJ1ByaXZhdGVSZXNvdXJjZUVycm9yJztcbn1cblxuIl19
@@ -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
@@ -202,13 +203,17 @@ export declare class Toolkit extends CloudAssemblySourceBuilder {
202
203
  */
203
204
  destroy(cx: ICloudAssemblySource, options?: DestroyOptions): Promise<DestroyResult>;
204
205
  /**
205
- * Helper to allow destroy being called as part of the deploy action.
206
+ * Synthesize and destroy, labelling the work with an explicit action.
207
+ *
208
+ * Kept private: the CLI reaches it (via a `// @ts-ignore`) to keep the
209
+ * "deployed" wording when a destroy runs as part of a deploy (rollback
210
+ * cleanup). Not part of the public API.
206
211
  */
207
- private _destroy;
212
+ private _destroyWithAction;
208
213
  /**
209
- * Validate the stacks for errors and warnings according to the CLI's current settings
214
+ * Helper to allow destroy being called as part of the deploy action.
210
215
  */
211
- private validateStacksMetadata;
216
+ private _destroy;
212
217
  /**
213
218
  * Create a deployments class
214
219
  */