@aws-cdk/toolkit-lib 1.24.0 → 1.25.1
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/db.json.gz +0 -0
- package/lib/actions/deploy/index.d.ts +15 -1
- package/lib/actions/deploy/index.js +1 -1
- package/lib/actions/deploy/private/deployment-method.d.ts +5 -9
- package/lib/actions/deploy/private/deployment-method.js +8 -1
- package/lib/actions/diagnose/index.d.ts +89 -0
- package/lib/actions/diagnose/index.js +3 -0
- package/lib/actions/diff/private/helpers.js +12 -15
- package/lib/actions/index.d.ts +2 -0
- package/lib/actions/index.js +3 -1
- package/lib/actions/orphan/index.d.ts +18 -0
- package/lib/actions/orphan/index.js +3 -0
- package/lib/api/aws-auth/sdk.d.ts +2 -1
- package/lib/api/aws-auth/sdk.js +2 -1
- package/lib/api/bootstrap/bootstrap-environment.js +4 -4
- package/lib/api/bootstrap/bootstrap-template.yaml +5 -16
- package/lib/api/bootstrap/deploy-bootstrap.js +9 -1
- package/lib/api/cloud-assembly/stack-selector.d.ts +1 -1
- package/lib/api/cloud-assembly/stack-selector.js +1 -1
- package/lib/api/cloudformation/index.d.ts +1 -0
- package/lib/api/cloudformation/index.js +2 -1
- package/lib/api/cloudformation/logical-id-map.d.ts +24 -0
- package/lib/api/cloudformation/logical-id-map.js +45 -0
- package/lib/api/cloudformation/stack-helpers.d.ts +6 -0
- package/lib/api/cloudformation/stack-helpers.js +12 -1
- package/lib/api/deployments/cfn-api.d.ts +8 -17
- package/lib/api/deployments/cfn-api.js +60 -71
- package/lib/api/deployments/deploy-stack.d.ts +6 -2
- package/lib/api/deployments/deploy-stack.js +43 -61
- package/lib/api/deployments/deployments.d.ts +3 -2
- package/lib/api/deployments/deployments.js +31 -7
- package/lib/api/diagnosing/changeset-error-fetcher.d.ts +51 -0
- package/lib/api/diagnosing/changeset-error-fetcher.js +83 -0
- package/lib/api/diagnosing/diagnosis-formatting.d.ts +13 -0
- package/lib/api/diagnosing/diagnosis-formatting.js +140 -0
- package/lib/api/diagnosing/stack-diagnoser.d.ts +106 -0
- package/lib/api/diagnosing/stack-diagnoser.js +354 -0
- package/lib/api/diagnosing/tree-builder.d.ts +13 -0
- package/lib/api/diagnosing/tree-builder.js +86 -0
- package/lib/api/diagnosing/tree.d.ts +19 -0
- package/lib/api/diagnosing/tree.js +72 -0
- package/lib/api/diff/diff-formatter.js +8 -12
- package/lib/api/drift/drift-formatter.d.ts +0 -1
- package/lib/api/drift/drift-formatter.js +3 -10
- package/lib/api/hotswap/hotswap-deployments.js +14 -2
- package/lib/api/hotswap/hotswap-template-cache.d.ts +19 -0
- package/lib/api/hotswap/hotswap-template-cache.js +96 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/api/index.js +2 -1
- package/lib/api/io/private/messages.d.ts +5 -0
- package/lib/api/io/private/messages.js +23 -1
- package/lib/api/io/toolkit-action.d.ts +1 -1
- package/lib/api/io/toolkit-action.js +1 -1
- package/lib/api/orphan/orphaner.d.ts +75 -0
- package/lib/api/orphan/orphaner.js +246 -0
- package/lib/api/orphan/private/helpers.d.ts +56 -0
- package/lib/api/orphan/private/helpers.js +219 -0
- package/lib/api/orphan/private/index.d.ts +2 -0
- package/lib/api/orphan/private/index.js +18 -0
- package/lib/api/resource-import/importer.d.ts +5 -1
- package/lib/api/resource-import/importer.js +26 -6
- package/lib/api/settings.d.ts +3 -1
- package/lib/api/settings.js +16 -3
- package/lib/api/source-tracing/index.d.ts +2 -0
- package/lib/api/source-tracing/index.js +18 -0
- package/lib/api/source-tracing/private/source-tracing.d.ts +16 -0
- package/lib/api/source-tracing/private/source-tracing.js +8 -0
- package/lib/api/source-tracing/private/stack-source-tracing.d.ts +32 -0
- package/lib/api/source-tracing/private/stack-source-tracing.js +134 -0
- package/lib/api/source-tracing/types.d.ts +9 -0
- package/lib/api/source-tracing/types.js +3 -0
- package/lib/api/stack-events/resource-errors.d.ts +82 -0
- package/lib/api/stack-events/resource-errors.js +129 -0
- package/lib/api/stack-events/stack-activity-monitor.d.ts +2 -29
- package/lib/api/stack-events/stack-activity-monitor.js +6 -95
- package/lib/api/stack-events/stack-event-poller.d.ts +71 -8
- package/lib/api/stack-events/stack-event-poller.js +107 -13
- package/lib/api/stack-events/stack-progress-monitor.d.ts +2 -2
- package/lib/api/stack-events/stack-progress-monitor.js +8 -2
- package/lib/api/work-graph/work-graph.d.ts +4 -0
- package/lib/api/work-graph/work-graph.js +6 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index_bg.wasm +0 -0
- package/lib/toolkit/toolkit.d.ts +17 -1
- package/lib/toolkit/toolkit.js +194 -57
- package/lib/util/arrays.d.ts +1 -0
- package/lib/util/arrays.js +23 -1
- package/lib/util/type-brands.d.ts +1 -1
- package/lib/util/type-brands.js +1 -1
- package/package.json +13 -13
- package/lib/api/deployments/early-validation.d.ts +0 -19
- package/lib/api/deployments/early-validation.js +0 -57
package/lib/util/arrays.d.ts
CHANGED
|
@@ -13,4 +13,5 @@ export declare function flatten<T>(xs: T[][]): T[];
|
|
|
13
13
|
*/
|
|
14
14
|
export declare function partition<T>(collection: T[], pred: (x: T) => boolean): T[];
|
|
15
15
|
export declare function indexBy<A, B>(xs: A[], fn: (a: A) => Promise<B>): Promise<Map<B, A[]>>;
|
|
16
|
+
export declare function sortByKey<A>(xs: A[], keyFn: (x: A) => Array<string | number>): void;
|
|
16
17
|
//# sourceMappingURL=arrays.d.ts.map
|
package/lib/util/arrays.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.flatMap = flatMap;
|
|
|
4
4
|
exports.flatten = flatten;
|
|
5
5
|
exports.partition = partition;
|
|
6
6
|
exports.indexBy = indexBy;
|
|
7
|
+
exports.sortByKey = sortByKey;
|
|
7
8
|
/**
|
|
8
9
|
* Map a function over an array and concatenate the results
|
|
9
10
|
*/
|
|
@@ -48,4 +49,25 @@ async function indexBy(xs, fn) {
|
|
|
48
49
|
}
|
|
49
50
|
return ret;
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
+
function sortByKey(xs, keyFn) {
|
|
53
|
+
xs.sort((a, b) => cmp(keyFn(a), keyFn(b)));
|
|
54
|
+
function cmp(as, bs) {
|
|
55
|
+
for (let i = 0; i < as.length && i < bs.length; i++) {
|
|
56
|
+
const a = as[i];
|
|
57
|
+
const b = bs[i];
|
|
58
|
+
if (typeof a !== typeof b) {
|
|
59
|
+
return (typeof a).localeCompare(typeof b);
|
|
60
|
+
}
|
|
61
|
+
if (a !== b) {
|
|
62
|
+
if (typeof a === 'number' && typeof b === 'number') {
|
|
63
|
+
return a - b;
|
|
64
|
+
}
|
|
65
|
+
if (typeof a === 'string' && typeof b === 'string') {
|
|
66
|
+
return a.localeCompare(b);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return as.length - bs.length;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJyYXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsMEJBRUM7QUFLRCwwQkFFQztBQU9ELDhCQVdDO0FBRUQsMEJBWUM7QUFFRCw4QkFxQkM7QUFuRUQ7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQU8sRUFBTyxFQUFFLEVBQThCO0lBQ25FLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQUksRUFBUztJQUNsQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixTQUFTLENBQUksVUFBZSxFQUFFLElBQXVCO0lBQ25FLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixPQUFPLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4QixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRU0sS0FBSyxVQUFVLE9BQU8sQ0FBTyxFQUFPLEVBQUUsRUFBd0I7SUFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUM5QixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25CLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxTQUFnQixTQUFTLENBQUksRUFBTyxFQUFFLEtBQXVDO0lBQzNFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFM0MsU0FBUyxHQUFHLENBQUMsRUFBMEIsRUFBRSxFQUEwQjtRQUNqRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsSUFBSSxPQUFPLENBQUMsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUMxQixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM1QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZixDQUFDO2dCQUNELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNuRCxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQy9CLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNYXAgYSBmdW5jdGlvbiBvdmVyIGFuIGFycmF5IGFuZCBjb25jYXRlbmF0ZSB0aGUgcmVzdWx0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmxhdE1hcDxULCBVPih4czogVFtdLCBmbjogKCh4OiBULCBpOiBudW1iZXIpID0+IFVbXSkpOiBVW10ge1xuICByZXR1cm4gZmxhdHRlbih4cy5tYXAoZm4pKTtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgbGlzdCBvZiBsaXN0cyBpbnRvIGEgbGlzdCBvZiBlbGVtZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbjxUPih4czogVFtdW10pOiBUW10ge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgeHMpO1xufVxuXG4vKipcbiAqIFBhcnRpdGlvbiBhIGNvbGxlY3Rpb24gYnkgcmVtb3ZpbmcgYW5kIHJldHVybmluZyBhbGwgZWxlbWVudHMgdGhhdCBtYXRjaCBhIHByZWRpY2F0ZVxuICpcbiAqIE5vdGU6IHRoZSBpbnB1dCBjb2xsZWN0aW9uIGlzIG1vZGlmaWVkIGluLXBsYWNlIVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFydGl0aW9uPFQ+KGNvbGxlY3Rpb246IFRbXSwgcHJlZDogKHg6IFQpID0+IGJvb2xlYW4pOiBUW10ge1xuICBjb25zdCByZXQ6IFRbXSA9IFtdO1xuICBsZXQgaSA9IDA7XG4gIHdoaWxlIChpIDwgY29sbGVjdGlvbi5sZW5ndGgpIHtcbiAgICBpZiAocHJlZChjb2xsZWN0aW9uW2ldKSkge1xuICAgICAgcmV0LnB1c2goY29sbGVjdGlvbi5zcGxpY2UoaSwgMSlbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbmRleEJ5PEEsIEI+KHhzOiBBW10sIGZuOiAoYTogQSkgPT4gUHJvbWlzZTxCPik6IFByb21pc2U8TWFwPEIsIEFbXT4+IHtcbiAgY29uc3QgcmV0ID0gbmV3IE1hcDxCLCBBW10+KCk7XG4gIGZvciAoY29uc3QgeCBvZiB4cykge1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IGZuKHgpO1xuICAgIGNvbnN0IGdyb3VwID0gcmV0LmdldChrZXkpO1xuICAgIGlmIChncm91cCkge1xuICAgICAgZ3JvdXAucHVzaCh4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0LnNldChrZXksIFt4XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0QnlLZXk8QT4oeHM6IEFbXSwga2V5Rm46ICh4OiBBKSA9PiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gIHhzLnNvcnQoKGEsIGIpID0+IGNtcChrZXlGbihhKSwga2V5Rm4oYikpKTtcblxuICBmdW5jdGlvbiBjbXAoYXM6IEFycmF5PHN0cmluZyB8IG51bWJlcj4sIGJzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogbnVtYmVyIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFzLmxlbmd0aCAmJiBpIDwgYnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGEgPSBhc1tpXTtcbiAgICAgIGNvbnN0IGIgPSBic1tpXTtcbiAgICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHtcbiAgICAgICAgcmV0dXJuICh0eXBlb2YgYSkubG9jYWxlQ29tcGFyZSh0eXBlb2YgYik7XG4gICAgICB9XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiBhIC0gYjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBiID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFzLmxlbmd0aCAtIGJzLmxlbmd0aDtcbiAgfVxufVxuIl19
|
|
@@ -35,6 +35,6 @@ export type Branded<T, B> = T & Brand<B>;
|
|
|
35
35
|
* way to write 'as').
|
|
36
36
|
*/
|
|
37
37
|
export declare function createBranded<A extends Branded<any, any>>(value: TypeUnderlyingBrand<A>): A;
|
|
38
|
-
type TypeUnderlyingBrand<A> = A
|
|
38
|
+
type TypeUnderlyingBrand<A> = Omit<A, keyof Brand<any>>;
|
|
39
39
|
export {};
|
|
40
40
|
//# sourceMappingURL=type-brands.d.ts.map
|
package/lib/util/type-brands.js
CHANGED
|
@@ -36,4 +36,4 @@ exports.createBranded = createBranded;
|
|
|
36
36
|
function createBranded(value) {
|
|
37
37
|
return value;
|
|
38
38
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1icmFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlLWJyYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7O0FBa0JILHNDQUVDO0FBWEQ7Ozs7Ozs7R0FPRztBQUNILHFCQUFxQjtBQUNyQixTQUFnQixhQUFhLENBQThCLEtBQTZCO0lBQ3RGLE9BQU8sS0FBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUgYnJhbmRpbmdcbiAqXG4gKiBUaGlzIGFsbG93cyBtYXJraW5nIGNlcnRhaW4gdHlwZXMgYXMgaGF2aW5nIGdvbmUgdGhyb3VnaCBwYXJ0aWN1bGFyIG9wZXJhdGlvbnMuXG4gKlxuICogQnJhbmRlZCB0eXBlcyBjYW4gYmUgdXNlZCBhbnl3aGVyZSB0aGUgYmFzZSB0eXBlIGlzIGV4cGVjdGVkLCBidXQgdGhlIGJhc2UgdHlwZVxuICogY2Fubm90IGJlIHVzZWQgd2hlcmUgYSBicmFuZGVkIHR5cGUgaXMgZXhwZWN0ZWQ7IHRoZSB2YWx1ZXMgaGF2ZSB0byBnbyB0aHJvdWdoXG4gKiBhIHR5cGUgYXNzZXJ0aW9uIG9wZXJhdGlvbiB0byBjb25maXJtIHRoZWlyIGJyYW5kLlxuICpcbiAqIFVzYWdlOlxuICpcbiAqIGBgYFxuICogdHlwZSBWYWxpZGF0ZWRTdHJpbmcgPSBCcmFuZGVkPHN0cmluZywgJ1Bhc3NlZE15VmFsaWRhdGlvbic+
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1icmFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlLWJyYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7O0FBa0JILHNDQUVDO0FBWEQ7Ozs7Ozs7R0FPRztBQUNILHFCQUFxQjtBQUNyQixTQUFnQixhQUFhLENBQThCLEtBQTZCO0lBQ3RGLE9BQU8sS0FBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUgYnJhbmRpbmdcbiAqXG4gKiBUaGlzIGFsbG93cyBtYXJraW5nIGNlcnRhaW4gdHlwZXMgYXMgaGF2aW5nIGdvbmUgdGhyb3VnaCBwYXJ0aWN1bGFyIG9wZXJhdGlvbnMuXG4gKlxuICogQnJhbmRlZCB0eXBlcyBjYW4gYmUgdXNlZCBhbnl3aGVyZSB0aGUgYmFzZSB0eXBlIGlzIGV4cGVjdGVkLCBidXQgdGhlIGJhc2UgdHlwZVxuICogY2Fubm90IGJlIHVzZWQgd2hlcmUgYSBicmFuZGVkIHR5cGUgaXMgZXhwZWN0ZWQ7IHRoZSB2YWx1ZXMgaGF2ZSB0byBnbyB0aHJvdWdoXG4gKiBhIHR5cGUgYXNzZXJ0aW9uIG9wZXJhdGlvbiB0byBjb25maXJtIHRoZWlyIGJyYW5kLlxuICpcbiAqIFVzYWdlOlxuICpcbiAqIGBgYFxuICogdHlwZSBWYWxpZGF0ZWRTdHJpbmcgPSBCcmFuZGVkPHN0cmluZywgJ1Bhc3NlZE15VmFsaWRhdGlvbic+O1xuICpcbiAqIGZ1bmN0aW9uIHZhbGlkYXRlKHg6IHN0cmluZyk6IGFzc2VydHMgeCBpcyBWYWxpZGF0ZWRTdHJpbmcge1xuICogICAvLyAuLi4gdGhyb3cgYW4gZXJyb3IgaWYgbm90XG4gKiB9XG4gKlxuICogZnVuY3Rpb24gaXNWYWxpZCh4OiBzdHJpbmcpOiB4IGlzIFZhbGlkYXRlZFN0cmluZyB7XG4gKiAgIC8vIC4uLiB0aHJvdyBhbiBlcnJvciBpZiBub3RcbiAqIH1cbiAqIGBgYFxuICovXG5cbi8vIFRoaXMgY29uc3RydWN0IHB1cmVseSBoYXBwZW5zIGF0IHR5cGUgY2hlY2tpbmcgdGltZS4gVGhlcmUgaXMgbm8gcnVuLXRpbWUgaW1wYWN0LlxuLy8gSGVuY2UsIHdlIG5ldmVyIGV2ZW4gaGF2ZSB0byBjb25zdHJ1Y3QgdmFsdWVzIG9mIHRoaXMgdHlwZS5cbmRlY2xhcmUgY29uc3QgX19icmFuZDogdW5pcXVlIHN5bWJvbDtcblxuZXhwb3J0IHR5cGUgQnJhbmQ8Qj4gPSB7IFtfX2JyYW5kXTogQiB9O1xuZXhwb3J0IHR5cGUgQnJhbmRlZDxULCBCPiA9IFQgJiBCcmFuZDxCPjtcblxuLyoqXG4gKiBNYXJrcyBhIHZhbHVlIGFzIGJlaW5nIGJyYW5kZWQgYSBjZXJ0YWluIHdheS5cbiAqXG4gKiBZb3Ugc2hvdWxkIGluIGdlbmVyYWwgYXZvaWQgY2FsbGluZyB0aGlzLCBhbmQgdXNlIHZhbGlkYXRpb24gb3JcbiAqIGFzc2VydGluZyBmdW5jdGlvbnMgaW5zdGVhZC4gSG93ZXZlciwgdGhpcyBjYW4gYmUgdXNlZnVsIHRvIHByb2R1Y2VcbiAqIHZhbHVlcyB3aGljaCBhcmUgYnJhbmRlZCBieSBjb25zdHJ1Y3Rpb24gKHJlYWxseSBqdXN0IGFuIGVsYWJvcmF0ZVxuICogd2F5IHRvIHdyaXRlICdhcycpLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCcmFuZGVkPEEgZXh0ZW5kcyBCcmFuZGVkPGFueSwgYW55Pj4odmFsdWU6IFR5cGVVbmRlcmx5aW5nQnJhbmQ8QT4pOiBBIHtcbiAgcmV0dXJuIHZhbHVlIGFzIEE7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG50eXBlIFR5cGVVbmRlcmx5aW5nQnJhbmQ8QT4gPSBPbWl0PEEsIGtleW9mIEJyYW5kPGFueT4+O1xuIl19
|
package/package.json
CHANGED
|
@@ -35,14 +35,14 @@
|
|
|
35
35
|
"organization": true
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@aws-cdk/aws-service-spec": "^0.1.
|
|
38
|
+
"@aws-cdk/aws-service-spec": "^0.1.177",
|
|
39
39
|
"@aws-cdk/cli-plugin-contract": "2.182.2",
|
|
40
|
-
"@cdklabs/eslint-plugin": "^2.0.
|
|
40
|
+
"@cdklabs/eslint-plugin": "^2.0.3",
|
|
41
41
|
"@jest/environment": "^29.7.0",
|
|
42
42
|
"@jest/globals": "^29.7.0",
|
|
43
43
|
"@jest/types": "^29.6.3",
|
|
44
|
-
"@microsoft/api-extractor": "^7.58.
|
|
45
|
-
"@smithy/util-stream": "^4.5.
|
|
44
|
+
"@microsoft/api-extractor": "^7.58.7",
|
|
45
|
+
"@smithy/util-stream": "^4.5.25",
|
|
46
46
|
"@stylistic/eslint-plugin": "^3",
|
|
47
47
|
"@types/fs-extra": "^11",
|
|
48
48
|
"@types/jest": "^29.5.14",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@types/split2": "^4.2.3",
|
|
53
53
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
54
54
|
"@typescript-eslint/parser": "^8",
|
|
55
|
-
"aws-cdk-lib": "2.
|
|
55
|
+
"aws-cdk-lib": "2.252.0",
|
|
56
56
|
"aws-sdk-client-mock": "^4.1.0",
|
|
57
57
|
"aws-sdk-client-mock-jest": "^4.1.0",
|
|
58
58
|
"commit-and-tag-version": "^12",
|
|
@@ -64,16 +64,16 @@
|
|
|
64
64
|
"eslint-plugin-jest": "^29.15.2",
|
|
65
65
|
"eslint-plugin-jsdoc": "^62.9.0",
|
|
66
66
|
"eslint-plugin-prettier": "^4.2.5",
|
|
67
|
-
"fast-check": "^4.
|
|
67
|
+
"fast-check": "^4.7.0",
|
|
68
68
|
"jest": "^29.7.0",
|
|
69
69
|
"jest-environment-node": "^29.7.0",
|
|
70
70
|
"jest-junit": "^16",
|
|
71
71
|
"jest-when": "^3.7.0",
|
|
72
72
|
"license-checker": "^25.0.1",
|
|
73
73
|
"nock": "13",
|
|
74
|
-
"nx": "^22.
|
|
74
|
+
"nx": "^22.7.1",
|
|
75
75
|
"prettier": "^2.8",
|
|
76
|
-
"projen": "^0.99.
|
|
76
|
+
"projen": "^0.99.52",
|
|
77
77
|
"ts-jest": "^29.4.9",
|
|
78
78
|
"tsx": "^4.21.0",
|
|
79
79
|
"typescript": "5.9"
|
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
},
|
|
84
84
|
"dependencies": {
|
|
85
85
|
"@aws-cdk/cdk-assets-lib": "^1",
|
|
86
|
-
"@aws-cdk/cloud-assembly-api": "2.2.
|
|
87
|
-
"@aws-cdk/cloud-assembly-schema": ">=53.
|
|
86
|
+
"@aws-cdk/cloud-assembly-api": "2.2.3",
|
|
87
|
+
"@aws-cdk/cloud-assembly-schema": ">=53.21.0",
|
|
88
88
|
"@aws-cdk/cloudformation-diff": "^2",
|
|
89
89
|
"@aws-cdk/cx-api": "^2",
|
|
90
90
|
"@aws-sdk/client-appsync": "^3",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"@smithy/util-retry": "^4",
|
|
116
116
|
"@smithy/util-waiter": "^4",
|
|
117
117
|
"archiver": "^7.0.1",
|
|
118
|
-
"cdk-from-cfn": "^0.
|
|
118
|
+
"cdk-from-cfn": "^0.298.0",
|
|
119
119
|
"chalk": "^4",
|
|
120
120
|
"chokidar": "^4",
|
|
121
121
|
"fast-deep-equal": "^3.1.3",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"picomatch": "^4",
|
|
126
126
|
"semver": "^7.7.4",
|
|
127
127
|
"split2": "^4.2.0",
|
|
128
|
-
"uuid": "^11.1.
|
|
128
|
+
"uuid": "^11.1.1",
|
|
129
129
|
"wrap-ansi": "^7",
|
|
130
130
|
"yaml": "^1"
|
|
131
131
|
},
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
"publishConfig": {
|
|
150
150
|
"access": "public"
|
|
151
151
|
},
|
|
152
|
-
"version": "1.
|
|
152
|
+
"version": "1.25.1",
|
|
153
153
|
"packageManager": "yarn@4.13.0",
|
|
154
154
|
"types": "lib/index.d.ts",
|
|
155
155
|
"exports": {
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { ValidationReporter } from './cfn-api';
|
|
2
|
-
import type { SDK } from '../aws-auth/sdk';
|
|
3
|
-
import type { EnvironmentResources } from '../environment';
|
|
4
|
-
import type { IoHelper } from '../io/private';
|
|
5
|
-
/**
|
|
6
|
-
* A ValidationReporter that checks for early validation errors right after
|
|
7
|
-
* creating the change set. If any are found, it throws an error listing all validation failures.
|
|
8
|
-
* If the DescribeEvents API call fails (for example, due to insufficient permissions),
|
|
9
|
-
* it logs a warning instead.
|
|
10
|
-
*/
|
|
11
|
-
export declare class EarlyValidationReporter implements ValidationReporter {
|
|
12
|
-
private readonly sdk;
|
|
13
|
-
private readonly envResources;
|
|
14
|
-
private readonly ioHelper;
|
|
15
|
-
constructor(sdk: SDK, envResources: EnvironmentResources, ioHelper: IoHelper);
|
|
16
|
-
fetchDetails(changeSetName: string, stackName: string): Promise<string>;
|
|
17
|
-
private getFailedEvents;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=early-validation.d.ts.map
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EarlyValidationReporter = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* A ValidationReporter that checks for early validation errors right after
|
|
6
|
-
* creating the change set. If any are found, it throws an error listing all validation failures.
|
|
7
|
-
* If the DescribeEvents API call fails (for example, due to insufficient permissions),
|
|
8
|
-
* it logs a warning instead.
|
|
9
|
-
*/
|
|
10
|
-
class EarlyValidationReporter {
|
|
11
|
-
sdk;
|
|
12
|
-
envResources;
|
|
13
|
-
ioHelper;
|
|
14
|
-
constructor(sdk, envResources, ioHelper) {
|
|
15
|
-
this.sdk = sdk;
|
|
16
|
-
this.envResources = envResources;
|
|
17
|
-
this.ioHelper = ioHelper;
|
|
18
|
-
}
|
|
19
|
-
async fetchDetails(changeSetName, stackName) {
|
|
20
|
-
const summary = `Early validation failed for stack '${stackName}' (ChangeSet '${changeSetName}')`;
|
|
21
|
-
let operationEvents = [];
|
|
22
|
-
try {
|
|
23
|
-
operationEvents = await this.getFailedEvents(stackName, changeSetName);
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
let currentVersion = undefined;
|
|
27
|
-
try {
|
|
28
|
-
currentVersion = (await this.envResources.lookupToolkit()).version;
|
|
29
|
-
}
|
|
30
|
-
catch (e) {
|
|
31
|
-
}
|
|
32
|
-
await this.ioHelper.defaults.warn(`Could not retrieve additional details about early validation errors (${error}). ` +
|
|
33
|
-
'Make sure you have permissions to call the DescribeEvents API, or re-bootstrap your environment by running \'cdk bootstrap\' to update the Bootstrap CDK Toolkit stack. ' +
|
|
34
|
-
`Bootstrap toolkit stack version 30 or later is needed; current version: ${currentVersion ?? 'unknown'}.`);
|
|
35
|
-
return summary;
|
|
36
|
-
}
|
|
37
|
-
let message = summary;
|
|
38
|
-
if (operationEvents.length > 0) {
|
|
39
|
-
const failures = operationEvents
|
|
40
|
-
.map((event) => ` - ${event.ValidationStatusReason} (at ${event.ValidationPath})`)
|
|
41
|
-
.join('\n');
|
|
42
|
-
message += `:\n${failures}\n`;
|
|
43
|
-
}
|
|
44
|
-
return message;
|
|
45
|
-
}
|
|
46
|
-
async getFailedEvents(stackName, changeSetName) {
|
|
47
|
-
return this.sdk.cloudFormation().paginatedDescribeEvents({
|
|
48
|
-
StackName: stackName,
|
|
49
|
-
ChangeSetName: changeSetName,
|
|
50
|
-
Filters: {
|
|
51
|
-
FailedEvents: true,
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.EarlyValidationReporter = EarlyValidationReporter;
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFybHktdmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVhcmx5LXZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUE7Ozs7O0dBS0c7QUFDSCxNQUFhLHVCQUF1QjtJQUVmO0lBQ0E7SUFDQTtJQUhuQixZQUNtQixHQUFRLEVBQ1IsWUFBa0MsRUFDbEMsUUFBa0I7UUFGbEIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNSLGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRXJDLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQXFCLEVBQUUsU0FBaUI7UUFDaEUsTUFBTSxPQUFPLEdBQUcsc0NBQXNDLFNBQVMsaUJBQWlCLGFBQWEsSUFBSSxDQUFDO1FBQ2xHLElBQUksZUFBZSxHQUFxQixFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDO1lBQ0gsZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLGNBQWMsR0FBdUIsU0FBUyxDQUFDO1lBQ25ELElBQUksQ0FBQztnQkFDSCxjQUFjLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDckUsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDYixDQUFDO1lBRUQsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQy9CLHdFQUF3RSxLQUFLLEtBQUs7Z0JBQ2xGLDBLQUEwSztnQkFDMUssMkVBQTJFLGNBQWMsSUFBSSxTQUFTLEdBQUcsQ0FDMUcsQ0FBQztZQUNGLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdEIsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sUUFBUSxHQUFHLGVBQWU7aUJBQzdCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLENBQUMsc0JBQXNCLFFBQVEsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDO2lCQUNsRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFZCxPQUFPLElBQUksTUFBTSxRQUFRLElBQUksQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBaUIsRUFBRSxhQUFxQjtRQUNwRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUMsdUJBQXVCLENBQUM7WUFDdkQsU0FBUyxFQUFFLFNBQVM7WUFDcEIsYUFBYSxFQUFFLGFBQWE7WUFDNUIsT0FBTyxFQUFFO2dCQUNQLFlBQVksRUFBRSxJQUFJO2FBQ25CO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBaERELDBEQWdEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgT3BlcmF0aW9uRXZlbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uUmVwb3J0ZXIgfSBmcm9tICcuL2Nmbi1hcGknO1xuaW1wb3J0IHR5cGUgeyBTREsgfSBmcm9tICcuLi9hd3MtYXV0aC9zZGsnO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudFJlc291cmNlcyB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlJztcblxuLyoqXG4gKiBBIFZhbGlkYXRpb25SZXBvcnRlciB0aGF0IGNoZWNrcyBmb3IgZWFybHkgdmFsaWRhdGlvbiBlcnJvcnMgcmlnaHQgYWZ0ZXJcbiAqIGNyZWF0aW5nIHRoZSBjaGFuZ2Ugc2V0LiBJZiBhbnkgYXJlIGZvdW5kLCBpdCB0aHJvd3MgYW4gZXJyb3IgbGlzdGluZyBhbGwgdmFsaWRhdGlvbiBmYWlsdXJlcy5cbiAqIElmIHRoZSBEZXNjcmliZUV2ZW50cyBBUEkgY2FsbCBmYWlscyAoZm9yIGV4YW1wbGUsIGR1ZSB0byBpbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMpLFxuICogaXQgbG9ncyBhIHdhcm5pbmcgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEVhcmx5VmFsaWRhdGlvblJlcG9ydGVyIGltcGxlbWVudHMgVmFsaWRhdGlvblJlcG9ydGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZGs6IFNESyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVudlJlc291cmNlczogRW52aXJvbm1lbnRSZXNvdXJjZXMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXIsXG4gICkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZldGNoRGV0YWlscyhjaGFuZ2VTZXROYW1lOiBzdHJpbmcsIHN0YWNrTmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBzdW1tYXJ5ID0gYEVhcmx5IHZhbGlkYXRpb24gZmFpbGVkIGZvciBzdGFjayAnJHtzdGFja05hbWV9JyAoQ2hhbmdlU2V0ICcke2NoYW5nZVNldE5hbWV9JylgO1xuICAgIGxldCBvcGVyYXRpb25FdmVudHM6IE9wZXJhdGlvbkV2ZW50W10gPSBbXTtcbiAgICB0cnkge1xuICAgICAgb3BlcmF0aW9uRXZlbnRzID0gYXdhaXQgdGhpcy5nZXRGYWlsZWRFdmVudHMoc3RhY2tOYW1lLCBjaGFuZ2VTZXROYW1lKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbGV0IGN1cnJlbnRWZXJzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBjdXJyZW50VmVyc2lvbiA9IChhd2FpdCB0aGlzLmVudlJlc291cmNlcy5sb29rdXBUb29sa2l0KCkpLnZlcnNpb247XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMud2FybihcbiAgICAgICAgYENvdWxkIG5vdCByZXRyaWV2ZSBhZGRpdGlvbmFsIGRldGFpbHMgYWJvdXQgZWFybHkgdmFsaWRhdGlvbiBlcnJvcnMgKCR7ZXJyb3J9KS4gYCArXG4gICAgICAgICdNYWtlIHN1cmUgeW91IGhhdmUgcGVybWlzc2lvbnMgdG8gY2FsbCB0aGUgRGVzY3JpYmVFdmVudHMgQVBJLCBvciByZS1ib290c3RyYXAgeW91ciBlbnZpcm9ubWVudCBieSBydW5uaW5nIFxcJ2NkayBib290c3RyYXBcXCcgdG8gdXBkYXRlIHRoZSBCb290c3RyYXAgQ0RLIFRvb2xraXQgc3RhY2suICcgK1xuICAgICAgICBgQm9vdHN0cmFwIHRvb2xraXQgc3RhY2sgdmVyc2lvbiAzMCBvciBsYXRlciBpcyBuZWVkZWQ7IGN1cnJlbnQgdmVyc2lvbjogJHtjdXJyZW50VmVyc2lvbiA/PyAndW5rbm93bid9LmAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHN1bW1hcnk7XG4gICAgfVxuXG4gICAgbGV0IG1lc3NhZ2UgPSBzdW1tYXJ5O1xuICAgIGlmIChvcGVyYXRpb25FdmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmFpbHVyZXMgPSBvcGVyYXRpb25FdmVudHNcbiAgICAgICAgLm1hcCgoZXZlbnQpID0+IGAgIC0gJHtldmVudC5WYWxpZGF0aW9uU3RhdHVzUmVhc29ufSAoYXQgJHtldmVudC5WYWxpZGF0aW9uUGF0aH0pYClcbiAgICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgICBtZXNzYWdlICs9IGA6XFxuJHtmYWlsdXJlc31cXG5gO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RmFpbGVkRXZlbnRzKHN0YWNrTmFtZTogc3RyaW5nLCBjaGFuZ2VTZXROYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zZGsuY2xvdWRGb3JtYXRpb24oKS5wYWdpbmF0ZWREZXNjcmliZUV2ZW50cyh7XG4gICAgICBTdGFja05hbWU6IHN0YWNrTmFtZSxcbiAgICAgIENoYW5nZVNldE5hbWU6IGNoYW5nZVNldE5hbWUsXG4gICAgICBGaWx0ZXJzOiB7XG4gICAgICAgIEZhaWxlZEV2ZW50czogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|