aws-cdk 2.1000.3 → 2.1002.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/THIRD_PARTY_LICENSES +246 -40
- package/build-info.json +2 -2
- package/lib/api/aws-auth/sdk.d.ts +6 -0
- package/lib/api/aws-auth/sdk.js +9 -1
- package/lib/api/bootstrap/bootstrap-template.yaml +3 -1
- package/lib/api/deployments/deploy-stack.d.ts +0 -20
- package/lib/api/deployments/deploy-stack.js +25 -20
- package/lib/api/deployments/deployments.d.ts +0 -27
- package/lib/api/deployments/deployments.js +13 -13
- package/lib/api/resource-import/importer.d.ts +0 -8
- package/lib/api/resource-import/importer.js +1 -1
- package/lib/api/resource-import/migrator.js +1 -2
- package/lib/api/stack-events/stack-activity-monitor.d.ts +87 -165
- package/lib/api/stack-events/stack-activity-monitor.js +61 -445
- package/lib/api/stack-events/stack-event-poller.d.ts +6 -0
- package/lib/api/stack-events/stack-event-poller.js +1 -1
- package/lib/api/stack-events/stack-progress-monitor.d.ts +61 -0
- package/lib/api/stack-events/stack-progress-monitor.js +94 -0
- package/lib/api/work-graph/work-graph-builder.js +4 -4
- package/lib/cli/activity-printer/base.d.ts +51 -0
- package/lib/cli/activity-printer/base.js +115 -0
- package/lib/cli/activity-printer/current.d.ts +25 -0
- package/lib/cli/activity-printer/current.js +122 -0
- package/lib/cli/activity-printer/history.d.ts +31 -0
- package/lib/cli/activity-printer/history.js +109 -0
- package/lib/cli/activity-printer/index.d.ts +3 -0
- package/lib/cli/activity-printer/index.js +20 -0
- package/lib/cli/cdk-toolkit.d.ts +1 -1
- package/lib/cli/cdk-toolkit.js +10 -9
- package/lib/cli/cli-config.js +5 -4
- package/lib/cli/cli.js +3 -1
- package/lib/cli/convert-to-user-input.js +18 -16
- package/lib/cli/parse-command-line-arguments.js +7 -1
- package/lib/cli/user-input.d.ts +8 -0
- package/lib/cli/user-input.js +1 -1
- package/lib/commands/deploy.d.ts +13 -0
- package/lib/commands/deploy.js +18 -0
- package/lib/context-providers/cc-api-provider.d.ts +34 -0
- package/lib/context-providers/cc-api-provider.js +116 -0
- package/lib/context-providers/index.js +3 -1
- package/lib/index.js +24292 -21248
- package/lib/init.d.ts +5 -1
- package/lib/init.js +11 -8
- package/lib/legacy-exports-source.d.ts +1 -1
- package/lib/legacy-exports-source.js +2 -2
- package/lib/notices.d.ts +48 -5
- package/lib/notices.js +127 -82
- package/lib/toolkit/cli-io-host.d.ts +28 -0
- package/lib/toolkit/cli-io-host.js +74 -2
- package/lib/toolkit/error.d.ts +1 -44
- package/lib/toolkit/error.js +16 -76
- package/lib/tree.d.ts +3 -3
- package/lib/tree.js +4 -4
- package/lib/util/cloudformation.d.ts +12 -0
- package/lib/util/cloudformation.js +27 -1
- package/lib/util/json.d.ts +48 -0
- package/lib/util/json.js +68 -0
- package/lib/util/string-manipulation.d.ts +5 -1
- package/lib/util/string-manipulation.js +11 -5
- package/package.json +25 -23
- /package/lib/{api/stack-events → cli/activity-printer}/display.d.ts +0 -0
- /package/lib/{api/stack-events → cli/activity-printer}/display.js +0 -0
|
@@ -26,7 +26,13 @@ export interface StackEventPollerProps {
|
|
|
26
26
|
readonly stackStatuses?: string[];
|
|
27
27
|
}
|
|
28
28
|
export interface ResourceEvent {
|
|
29
|
+
/**
|
|
30
|
+
* The Stack Event as received from CloudFormation
|
|
31
|
+
*/
|
|
29
32
|
readonly event: StackEvent;
|
|
33
|
+
/**
|
|
34
|
+
* IDs of parent stacks of the resource, in case of resources in nested stacks
|
|
35
|
+
*/
|
|
30
36
|
readonly parentStackLogicalIds: string[];
|
|
31
37
|
/**
|
|
32
38
|
* Whether this event regards the root stack
|
|
@@ -126,4 +126,4 @@ function isStackBeginOperationState(state) {
|
|
|
126
126
|
function isStackTerminalState(state) {
|
|
127
127
|
return !(state !== null && state !== void 0 ? state : '').endsWith('_IN_PROGRESS');
|
|
128
128
|
}
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stZXZlbnQtcG9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhY2stZXZlbnQtcG9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDBEQUE2RDtBQTRDN0QsTUFBYSxnQkFBZ0I7SUFPM0IsWUFDbUIsR0FBMEIsRUFDMUIsS0FBNEI7UUFENUIsUUFBRyxHQUFILEdBQUcsQ0FBdUI7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFSL0IsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFDdEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVoQixhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUM3Qix1QkFBa0IsR0FBcUMsRUFBRSxDQUFDO0lBTTNFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBQyxPQUFBLENBQUEsTUFBQSxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsMENBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQSxFQUFBLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixNQUFNLE1BQU0sR0FBb0IsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFcEQsdURBQXVEO1FBQ3ZELEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDMUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixPQUFP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LHFCQUFxQjtnQkFDNUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFVLENBQUMsT0FBTyxFQUFFO2FBQ3RDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFsSUQsNENBa0lDO0FBRUQsU0FBUywwQkFBMEIsQ0FBQyxLQUF5QjtJQUMzRCxPQUFPO1FBQ0wsb0JBQW9CO1FBQ3BCLG9CQUFvQjtRQUNwQixvQkFBb0I7UUFDcEIsNkJBQTZCO1FBQzdCLHNCQUFzQjtLQUN2QixDQUFDLFFBQVEsQ0FBQyxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxFQUFFLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxLQUF5QjtJQUNyRCxPQUFPLENBQUMsQ0FBQyxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RhY2tFdmVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBmb3JtYXRFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlsL2Zvcm1hdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IElDbG91ZEZvcm1hdGlvbkNsaWVudCB9IGZyb20gJy4uL2F3cy1hdXRoJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0V2ZW50UG9sbGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIHN0YWNrIHRvIHBvbGxcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJRHMgb2YgcGFyZW50IHN0YWNrcyBvZiB0aGlzIHJlc291cmNlLCBpbiBjYXNlIG9mIHJlc291cmNlcyBpbiBuZXN0ZWQgc3RhY2tzXG4gICAqL1xuICByZWFkb25seSBwYXJlbnRTdGFja0xvZ2ljYWxJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGltZXN0YW1wIGZvciB0aGUgb2xkZXN0IGV2ZW50IHdlJ3JlIGludGVyZXN0ZWQgaW5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBSZWFkIGFsbCBldmVudHNcbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0VGltZT86IG51bWJlcjtcblxuICAvKipcbiAgICogU3RvcCByZWFkaW5nIHdoZW4gd2Ugc2VlIHRoZSBzdGFjayBlbnRlcmluZyB0aGlzIHN0YXR1c1xuICAgKlxuICAgKiBTaG91bGQgYmUgc29tZXRoaW5nIGxpa2UgYENSRUFURV9JTl9QUk9HUkVTU2AsIGBVUERBVEVfSU5fUFJPR1JFU1NgLFxuICAgKiBgREVMRVRFX0lOX1BST0dSRVNTLCBgUk9MTEJBQ0tfSU5fUFJPR1JFU1NgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFJlYWQgYWxsIGV2ZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tTdGF0dXNlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlRXZlbnQge1xuICByZWFkb25seSBldmVudDogU3RhY2tFdmVudDtcbiAgcmVhZG9ubHkgcGFyZW50U3RhY2tMb2dpY2FsSWRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGV2ZW50IHJlZ2FyZHMgdGhlIHJvb3Qgc3RhY2tcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlzU3RhY2tFdmVudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBTdGFja0V2ZW50UG9sbGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50czogUmVzb3VyY2VFdmVudFtdID0gW107XG4gIHB1YmxpYyBjb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZXN0ZWRTdGFja1BvbGxlcnM6IFJlY29yZDxzdHJpbmcsIFN0YWNrRXZlbnRQb2xsZXI+ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZm46IElDbG91ZEZvcm1hdGlvbkNsaWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBTdGFja0V2ZW50UG9sbGVyUHJvcHMsXG4gICkge1xuICB9XG5cbiAgLyoqXG4gICAqIEZyb20gYWxsIGFjY3VtdWxhdGVkIGV2ZW50cywgcmV0dXJuIG9ubHkgdGhlIGVycm9yc1xuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZUVycm9ycygpOiBSZXNvdXJjZUV2ZW50W10ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50cy5maWx0ZXIoKGUpID0+IGUuZXZlbnQuUmVzb3VyY2VTdGF0dXM/LmVuZHNXaXRoKCdfRkFJTEVEJykgJiYgIWUuaXNTdGFja0V2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb2xsIGZvciBuZXcgc3RhY2sgZXZlbnRzXG4gICAqXG4gICAqIFdpbGwgbm90IHJldHVybiBldmVudHMgb2xkZXIgdGhhbiBldmVudHMgaW5kaWNhdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBmaWx0ZXJzLlxuICAgKlxuICAgKiBSZWN1cnNlcyBpbnRvIG5lc3RlZCBzdGFja3MsIGFuZCByZXR1cm5zIGV2ZW50cyBvbGQtdG8tbmV3LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHBvbGwoKTogUHJvbWlzZTxSZXNvdXJjZUV2ZW50W10+IHtcbiAgICBjb25zdCBldmVudHM6IFJlc291cmNlRXZlbnRbXSA9IGF3YWl0IHRoaXMuZG9Qb2xsKCk7XG5cbiAgICAvLyBBbHNvIHBvbGwgYWxsIG5lc3RlZCBzdGFja3Mgd2UncmUgY3VycmVudGx5IHRyYWNraW5nXG4gICAgZm9yIChjb25zdCBbbG9naWNhbElkLCBwb2xsZXJdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMubmVzdGVkU3RhY2tQb2xsZXJzKSkge1xuICAgICAgZXZlbnRzLnB1c2goLi4uKGF3YWl0IHBvbGxlci5wb2xsKCkpKTtcbiAgICAgIGlmIChwb2xsZXIuY29tcGxldGUpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubmVzdGVkU3RhY2tQb2xsZXJzW2xvZ2ljYWxJZF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHdoYXQgd2UgaGF2ZSBzbyBmYXJcbiAgICBldmVudHMuc29ydCgoYSwgYikgPT4gYS5ldmVudC5UaW1lc3RhbXAhLnZhbHVlT2YoKSAtIGIuZXZlbnQuVGltZXN0YW1wIS52YWx1ZU9mKCkpO1xuICAgIHRoaXMuZXZlbnRzLnB1c2goLi4uZXZlbnRzKTtcbiAgICByZXR1cm4gZXZlbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkb1BvbGwoKTogUHJvbWlzZTxSZXNvdXJjZUV2ZW50W10+IHtcbiAgICBjb25zdCBldmVudHM6IFJlc291cmNlRXZlbnRbXSA9IFtdO1xuICAgIHRyeSB7XG4gICAgICBsZXQgbmV4dFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgZmluaXNoZWQgPSBmYWxzZTtcblxuICAgICAgd2hpbGUgKCFmaW5pc2hlZCkge1xuICAgICAgICBjb25zdCBwYWdlID0gYXdhaXQgdGhpcy5jZm4uZGVzY3JpYmVTdGFja0V2ZW50cyh7IFN0YWNrTmFtZTogdGhpcy5wcm9wcy5zdGFja05hbWUsIE5leHRUb2tlbjogbmV4dFRva2VuIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIHBhZ2U/LlN0YWNrRXZlbnRzID8/IFtdKSB7XG4gICAgICAgICAgLy8gRXZlbnQgZnJvbSBiZWZvcmUgd2Ugd2VyZSBpbnRlcmVzdGVkIGluICdlbVxuICAgICAgICAgIGlmICh0aGlzLnByb3BzLnN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkICYmIGV2ZW50LlRpbWVzdGFtcCEudmFsdWVPZigpIDwgdGhpcy5wcm9wcy5zdGFydFRpbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBldmVudHM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQWxyZWFkeSBzZWVuIHRoaXMgb25lXG4gICAgICAgICAgaWYgKHRoaXMuZXZlbnRJZHMuaGFzKGV2ZW50LkV2ZW50SWQhKSkge1xuICAgICAgICAgICAgcmV0dXJuIGV2ZW50cztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ldmVudElkcy5hZGQoZXZlbnQuRXZlbnRJZCEpO1xuXG4gICAgICAgICAgLy8gVGhlIGV2ZW50cyBmb3IgdGhlIHN0YWNrIGl0c2VsZiBhcmUgYWxzbyBpbmNsdWRlZCBuZXh0IHRvIGV2ZW50cyBhYm91dCByZXNvdXJjZXM7IHdlIGNhbiB0ZXN0IGZvciB0aGVtIGluIHRoaXMgd2F5LlxuICAgICAgICAgIGNvbnN0IGlzUGFyZW50U3RhY2tFdmVudCA9IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCA9PT0gZXZlbnQuU3RhY2tJZDtcblxuICAgICAgICAgIGlmIChpc1BhcmVudFN0YWNrRXZlbnQgJiYgdGhpcy5wcm9wcy5zdGFja1N0YXR1c2VzPy5pbmNsdWRlcyhldmVudC5SZXNvdXJjZVN0YXR1cyA/PyAnJykpIHtcbiAgICAgICAgICAgIHJldHVybiBldmVudHM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRnJlc2ggZXZlbnRcbiAgICAgICAgICBjb25zdCByZXNFdmVudDogUmVzb3VyY2VFdmVudCA9IHtcbiAgICAgICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHBhcmVudFN0YWNrTG9naWNhbElkczogdGhpcy5wcm9wcy5wYXJlbnRTdGFja0xvZ2ljYWxJZHMgPz8gW10sXG4gICAgICAgICAgICBpc1N0YWNrRXZlbnQ6IGlzUGFyZW50U3RhY2tFdmVudCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGV2ZW50cy5wdXNoKHJlc0V2ZW50KTtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFpc1BhcmVudFN0YWNrRXZlbnQgJiZcbiAgICAgICAgICAgICAgZXZlbnQuUmVzb3VyY2VUeXBlID09PSAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snICYmXG4gICAgICAgICAgICAgIGlzU3RhY2tCZWdpbk9wZXJhdGlvblN0YXRlKGV2ZW50LlJlc291cmNlU3RhdHVzKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGlzIG5vdCBmb3IgYHRoaXNgIHN0YWNrIGFuZCBoYXMgYSBwaHlzaWNhbCByZXNvdXJjZSBJZCwgcmVjdXJzaXZlbHkgY2FsbCBmb3IgZXZlbnRzIGluIHRoZSBuZXN0ZWQgc3RhY2tcbiAgICAgICAgICAgIHRoaXMudHJhY2tOZXN0ZWRTdGFjayhldmVudCwgWy4uLih0aGlzLnByb3BzLnBhcmVudFN0YWNrTG9naWNhbElkcyA/PyBbXSksIGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkID8/ICcnXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzUGFyZW50U3RhY2tFdmVudCAmJiBpc1N0YWNrVGVybWluYWxTdGF0ZShldmVudC5SZXNvdXJjZVN0YXR1cykpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGUgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG5leHRUb2tlbiA9IHBhZ2U/Lk5leHRUb2tlbjtcbiAgICAgICAgaWYgKG5leHRUb2tlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoIShlLm5hbWUgPT09ICdWYWxpZGF0aW9uRXJyb3InICYmIGZvcm1hdEVycm9yTWVzc2FnZShlKSA9PT0gYFN0YWNrIFske3RoaXMucHJvcHMuc3RhY2tOYW1lfV0gZG9lcyBub3QgZXhpc3RgKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBldmVudHM7XG4gIH1cblxuICAvKipcbiAgICogT24gdGhlIENSRUFURV9JTl9QUk9HUkVTUywgVVBEQVRFX0lOX1BST0dSRVNTLCBERUxFVEVfSU5fUFJPR1JFU1MgZXZlbnQgb2YgYSBuZXN0ZWQgc3RhY2ssIHBvbGwgdGhlIG5lc3RlZCBzdGFjayB1cGRhdGVzXG4gICAqL1xuICBwcml2YXRlIHRyYWNrTmVzdGVkU3RhY2soZXZlbnQ6IFN0YWNrRXZlbnQsIHBhcmVudFN0YWNrTG9naWNhbElkczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBsb2dpY2FsSWQgPSBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZDtcbiAgICBjb25zdCBwaHlzaWNhbFJlc291cmNlSWQgPSBldmVudC5QaHlzaWNhbFJlc291cmNlSWQ7XG5cbiAgICAvLyBUaGUgQ1JFQVRFX0lOX1BST0dSRVNTIGV2ZW50IGZvciBhIE5lc3RlZCBTdGFjayBpcyBlbWl0dGVkIHR3aWNlOyBmaXJzdCB3aXRob3V0IGEgUGh5c2ljYWxSZXNvdXJjZUlkXG4gICAgLy8gYW5kIHRoZW4gd2l0aC4gSWdub3JlIHRoaXMgZXZlbnQgaWYgd2UgZG9uJ3QgaGF2ZSB0aGF0IHByb3BlcnR5IHlldC5cbiAgICAvL1xuICAgIC8vIChBdCB0aGlzIHBvaW50LCBJIGFsc28gZG9uJ3QgdHJ1c3QgdGhhdCBsb2dpY2FsSWQgaXMgYWx3YXlzIGdvaW5nIHRvIGJlIHRoZXJlIHNvIHZhbGlkYXRlIHRoYXQgYXMgd2VsbClcbiAgICBpZiAoIWxvZ2ljYWxJZCB8fCAhcGh5c2ljYWxSZXNvdXJjZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm5lc3RlZFN0YWNrUG9sbGVyc1tsb2dpY2FsSWRdKSB7XG4gICAgICB0aGlzLm5lc3RlZFN0YWNrUG9sbGVyc1tsb2dpY2FsSWRdID0gbmV3IFN0YWNrRXZlbnRQb2xsZXIodGhpcy5jZm4sIHtcbiAgICAgICAgc3RhY2tOYW1lOiBwaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICAgIHBhcmVudFN0YWNrTG9naWNhbElkczogcGFyZW50U3RhY2tMb2dpY2FsSWRzLFxuICAgICAgICBzdGFydFRpbWU6IGV2ZW50LlRpbWVzdGFtcCEudmFsdWVPZigpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3RhY2tCZWdpbk9wZXJhdGlvblN0YXRlKHN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIFtcbiAgICAnQ1JFQVRFX0lOX1BST0dSRVNTJyxcbiAgICAnVVBEQVRFX0lOX1BST0dSRVNTJyxcbiAgICAnREVMRVRFX0lOX1BST0dSRVNTJyxcbiAgICAnVVBEQVRFX1JPTExCQUNLX0lOX1BST0dSRVNTJyxcbiAgICAnUk9MTEJBQ0tfSU5fUFJPR1JFU1MnLFxuICBdLmluY2x1ZGVzKHN0YXRlID8/ICcnKTtcbn1cblxuZnVuY3Rpb24gaXNTdGFja1Rlcm1pbmFsU3RhdGUoc3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gIShzdGF0ZSA/PyAnJykuZW5kc1dpdGgoJ19JTl9QUk9HUkVTUycpO1xufVxuIl19
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stZXZlbnQtcG9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhY2stZXZlbnQtcG9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDBEQUE2RDtBQW1EN0QsTUFBYSxnQkFBZ0I7SUFPM0IsWUFDbUIsR0FBMEIsRUFDMUIsS0FBNEI7UUFENUIsUUFBRyxHQUFILEdBQUcsQ0FBdUI7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFSL0IsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFDdEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVoQixhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUM3Qix1QkFBa0IsR0FBcUMsRUFBRSxDQUFDO0lBTTNFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBQyxPQUFBLENBQUEsTUFBQSxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsMENBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQSxFQUFBLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixNQUFNLE1BQU0sR0FBb0IsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFcEQsdURBQXVEO1FBQ3ZELEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDMUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixPQUFP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LHFCQUFxQjtnQkFDNUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFVLENBQUMsT0FBTyxFQUFFO2FBQ3RDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFsSUQsNENBa0lDO0FBRUQsU0FBUywwQkFBMEIsQ0FBQyxLQUF5QjtJQUMzRCxPQUFPO1FBQ0wsb0JBQW9CO1FBQ3BCLG9CQUFvQjtRQUNwQixvQkFBb0I7UUFDcEIsNkJBQTZCO1FBQzdCLHNCQUFzQjtLQUN2QixDQUFDLFFBQVEsQ0FBQyxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxFQUFFLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxLQUF5QjtJQUNyRCxPQUFPLENBQUMsQ0FBQyxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RhY2tFdmVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBmb3JtYXRFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlsL2Zvcm1hdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IElDbG91ZEZvcm1hdGlvbkNsaWVudCB9IGZyb20gJy4uL2F3cy1hdXRoJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0V2ZW50UG9sbGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIHN0YWNrIHRvIHBvbGxcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJRHMgb2YgcGFyZW50IHN0YWNrcyBvZiB0aGlzIHJlc291cmNlLCBpbiBjYXNlIG9mIHJlc291cmNlcyBpbiBuZXN0ZWQgc3RhY2tzXG4gICAqL1xuICByZWFkb25seSBwYXJlbnRTdGFja0xvZ2ljYWxJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGltZXN0YW1wIGZvciB0aGUgb2xkZXN0IGV2ZW50IHdlJ3JlIGludGVyZXN0ZWQgaW5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBSZWFkIGFsbCBldmVudHNcbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0VGltZT86IG51bWJlcjtcblxuICAvKipcbiAgICogU3RvcCByZWFkaW5nIHdoZW4gd2Ugc2VlIHRoZSBzdGFjayBlbnRlcmluZyB0aGlzIHN0YXR1c1xuICAgKlxuICAgKiBTaG91bGQgYmUgc29tZXRoaW5nIGxpa2UgYENSRUFURV9JTl9QUk9HUkVTU2AsIGBVUERBVEVfSU5fUFJPR1JFU1NgLFxuICAgKiBgREVMRVRFX0lOX1BST0dSRVNTLCBgUk9MTEJBQ0tfSU5fUFJPR1JFU1NgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFJlYWQgYWxsIGV2ZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tTdGF0dXNlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlRXZlbnQge1xuICAvKipcbiAgICogVGhlIFN0YWNrIEV2ZW50IGFzIHJlY2VpdmVkIGZyb20gQ2xvdWRGb3JtYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50OiBTdGFja0V2ZW50O1xuXG4gIC8qKlxuICAgKiBJRHMgb2YgcGFyZW50IHN0YWNrcyBvZiB0aGUgcmVzb3VyY2UsIGluIGNhc2Ugb2YgcmVzb3VyY2VzIGluIG5lc3RlZCBzdGFja3NcbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudFN0YWNrTG9naWNhbElkczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBldmVudCByZWdhcmRzIHRoZSByb290IHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc1N0YWNrRXZlbnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgU3RhY2tFdmVudFBvbGxlciB7XG4gIHB1YmxpYyByZWFkb25seSBldmVudHM6IFJlc291cmNlRXZlbnRbXSA9IFtdO1xuICBwdWJsaWMgY29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50SWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmVzdGVkU3RhY2tQb2xsZXJzOiBSZWNvcmQ8c3RyaW5nLCBTdGFja0V2ZW50UG9sbGVyPiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2ZuOiBJQ2xvdWRGb3JtYXRpb25DbGllbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogU3RhY2tFdmVudFBvbGxlclByb3BzLFxuICApIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBGcm9tIGFsbCBhY2N1bXVsYXRlZCBldmVudHMsIHJldHVybiBvbmx5IHRoZSBlcnJvcnNcbiAgICovXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VFcnJvcnMoKTogUmVzb3VyY2VFdmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMuZmlsdGVyKChlKSA9PiBlLmV2ZW50LlJlc291cmNlU3RhdHVzPy5lbmRzV2l0aCgnX0ZBSUxFRCcpICYmICFlLmlzU3RhY2tFdmVudCk7XG4gIH1cblxuICAvKipcbiAgICogUG9sbCBmb3IgbmV3IHN0YWNrIGV2ZW50c1xuICAgKlxuICAgKiBXaWxsIG5vdCByZXR1cm4gZXZlbnRzIG9sZGVyIHRoYW4gZXZlbnRzIGluZGljYXRlZCBieSB0aGUgY29uc3RydWN0b3IgZmlsdGVycy5cbiAgICpcbiAgICogUmVjdXJzZXMgaW50byBuZXN0ZWQgc3RhY2tzLCBhbmQgcmV0dXJucyBldmVudHMgb2xkLXRvLW5ldy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBwb2xsKCk6IFByb21pc2U8UmVzb3VyY2VFdmVudFtdPiB7XG4gICAgY29uc3QgZXZlbnRzOiBSZXNvdXJjZUV2ZW50W10gPSBhd2FpdCB0aGlzLmRvUG9sbCgpO1xuXG4gICAgLy8gQWxzbyBwb2xsIGFsbCBuZXN0ZWQgc3RhY2tzIHdlJ3JlIGN1cnJlbnRseSB0cmFja2luZ1xuICAgIGZvciAoY29uc3QgW2xvZ2ljYWxJZCwgcG9sbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLm5lc3RlZFN0YWNrUG9sbGVycykpIHtcbiAgICAgIGV2ZW50cy5wdXNoKC4uLihhd2FpdCBwb2xsZXIucG9sbCgpKSk7XG4gICAgICBpZiAocG9sbGVyLmNvbXBsZXRlKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLm5lc3RlZFN0YWNrUG9sbGVyc1tsb2dpY2FsSWRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiB3aGF0IHdlIGhhdmUgc28gZmFyXG4gICAgZXZlbnRzLnNvcnQoKGEsIGIpID0+IGEuZXZlbnQuVGltZXN0YW1wIS52YWx1ZU9mKCkgLSBiLmV2ZW50LlRpbWVzdGFtcCEudmFsdWVPZigpKTtcbiAgICB0aGlzLmV2ZW50cy5wdXNoKC4uLmV2ZW50cyk7XG4gICAgcmV0dXJuIGV2ZW50cztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZG9Qb2xsKCk6IFByb21pc2U8UmVzb3VyY2VFdmVudFtdPiB7XG4gICAgY29uc3QgZXZlbnRzOiBSZXNvdXJjZUV2ZW50W10gPSBbXTtcbiAgICB0cnkge1xuICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGZpbmlzaGVkID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlICghZmluaXNoZWQpIHtcbiAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMuY2ZuLmRlc2NyaWJlU3RhY2tFdmVudHMoeyBTdGFja05hbWU6IHRoaXMucHJvcHMuc3RhY2tOYW1lLCBOZXh0VG9rZW46IG5leHRUb2tlbiB9KTtcbiAgICAgICAgZm9yIChjb25zdCBldmVudCBvZiBwYWdlPy5TdGFja0V2ZW50cyA/PyBbXSkge1xuICAgICAgICAgIC8vIEV2ZW50IGZyb20gYmVmb3JlIHdlIHdlcmUgaW50ZXJlc3RlZCBpbiAnZW1cbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5zdGFydFRpbWUgIT09IHVuZGVmaW5lZCAmJiBldmVudC5UaW1lc3RhbXAhLnZhbHVlT2YoKSA8IHRoaXMucHJvcHMuc3RhcnRUaW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnRzO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEFscmVhZHkgc2VlbiB0aGlzIG9uZVxuICAgICAgICAgIGlmICh0aGlzLmV2ZW50SWRzLmhhcyhldmVudC5FdmVudElkISkpIHtcbiAgICAgICAgICAgIHJldHVybiBldmVudHM7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZXZlbnRJZHMuYWRkKGV2ZW50LkV2ZW50SWQhKTtcblxuICAgICAgICAgIC8vIFRoZSBldmVudHMgZm9yIHRoZSBzdGFjayBpdHNlbGYgYXJlIGFsc28gaW5jbHVkZWQgbmV4dCB0byBldmVudHMgYWJvdXQgcmVzb3VyY2VzOyB3ZSBjYW4gdGVzdCBmb3IgdGhlbSBpbiB0aGlzIHdheS5cbiAgICAgICAgICBjb25zdCBpc1BhcmVudFN0YWNrRXZlbnQgPSBldmVudC5QaHlzaWNhbFJlc291cmNlSWQgPT09IGV2ZW50LlN0YWNrSWQ7XG5cbiAgICAgICAgICBpZiAoaXNQYXJlbnRTdGFja0V2ZW50ICYmIHRoaXMucHJvcHMuc3RhY2tTdGF0dXNlcz8uaW5jbHVkZXMoZXZlbnQuUmVzb3VyY2VTdGF0dXMgPz8gJycpKSB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnRzO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZyZXNoIGV2ZW50XG4gICAgICAgICAgY29uc3QgcmVzRXZlbnQ6IFJlc291cmNlRXZlbnQgPSB7XG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IHRoaXMucHJvcHMucGFyZW50U3RhY2tMb2dpY2FsSWRzID8/IFtdLFxuICAgICAgICAgICAgaXNTdGFja0V2ZW50OiBpc1BhcmVudFN0YWNrRXZlbnQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBldmVudHMucHVzaChyZXNFdmVudCk7XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhaXNQYXJlbnRTdGFja0V2ZW50ICYmXG4gICAgICAgICAgICAgIGV2ZW50LlJlc291cmNlVHlwZSA9PT0gJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyAmJlxuICAgICAgICAgICAgICBpc1N0YWNrQmVnaW5PcGVyYXRpb25TdGF0ZShldmVudC5SZXNvdXJjZVN0YXR1cylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBldmVudCBpcyBub3QgZm9yIGB0aGlzYCBzdGFjayBhbmQgaGFzIGEgcGh5c2ljYWwgcmVzb3VyY2UgSWQsIHJlY3Vyc2l2ZWx5IGNhbGwgZm9yIGV2ZW50cyBpbiB0aGUgbmVzdGVkIHN0YWNrXG4gICAgICAgICAgICB0aGlzLnRyYWNrTmVzdGVkU3RhY2soZXZlbnQsIFsuLi4odGhpcy5wcm9wcy5wYXJlbnRTdGFja0xvZ2ljYWxJZHMgPz8gW10pLCBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCA/PyAnJ10pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1BhcmVudFN0YWNrRXZlbnQgJiYgaXNTdGFja1Rlcm1pbmFsU3RhdGUoZXZlbnQuUmVzb3VyY2VTdGF0dXMpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0VG9rZW4gPSBwYWdlPy5OZXh0VG9rZW47XG4gICAgICAgIGlmIChuZXh0VG9rZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKCEoZS5uYW1lID09PSAnVmFsaWRhdGlvbkVycm9yJyAmJiBmb3JtYXRFcnJvck1lc3NhZ2UoZSkgPT09IGBTdGFjayBbJHt0aGlzLnByb3BzLnN0YWNrTmFtZX1dIGRvZXMgbm90IGV4aXN0YCkpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIHRoZSBDUkVBVEVfSU5fUFJPR1JFU1MsIFVQREFURV9JTl9QUk9HUkVTUywgREVMRVRFX0lOX1BST0dSRVNTIGV2ZW50IG9mIGEgbmVzdGVkIHN0YWNrLCBwb2xsIHRoZSBuZXN0ZWQgc3RhY2sgdXBkYXRlc1xuICAgKi9cbiAgcHJpdmF0ZSB0cmFja05lc3RlZFN0YWNrKGV2ZW50OiBTdGFja0V2ZW50LCBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbG9naWNhbElkID0gZXZlbnQuTG9naWNhbFJlc291cmNlSWQ7XG4gICAgY29uc3QgcGh5c2ljYWxSZXNvdXJjZUlkID0gZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkO1xuXG4gICAgLy8gVGhlIENSRUFURV9JTl9QUk9HUkVTUyBldmVudCBmb3IgYSBOZXN0ZWQgU3RhY2sgaXMgZW1pdHRlZCB0d2ljZTsgZmlyc3Qgd2l0aG91dCBhIFBoeXNpY2FsUmVzb3VyY2VJZFxuICAgIC8vIGFuZCB0aGVuIHdpdGguIElnbm9yZSB0aGlzIGV2ZW50IGlmIHdlIGRvbid0IGhhdmUgdGhhdCBwcm9wZXJ0eSB5ZXQuXG4gICAgLy9cbiAgICAvLyAoQXQgdGhpcyBwb2ludCwgSSBhbHNvIGRvbid0IHRydXN0IHRoYXQgbG9naWNhbElkIGlzIGFsd2F5cyBnb2luZyB0byBiZSB0aGVyZSBzbyB2YWxpZGF0ZSB0aGF0IGFzIHdlbGwpXG4gICAgaWYgKCFsb2dpY2FsSWQgfHwgIXBoeXNpY2FsUmVzb3VyY2VJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5uZXN0ZWRTdGFja1BvbGxlcnNbbG9naWNhbElkXSkge1xuICAgICAgdGhpcy5uZXN0ZWRTdGFja1BvbGxlcnNbbG9naWNhbElkXSA9IG5ldyBTdGFja0V2ZW50UG9sbGVyKHRoaXMuY2ZuLCB7XG4gICAgICAgIHN0YWNrTmFtZTogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgICAgICBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IHBhcmVudFN0YWNrTG9naWNhbElkcyxcbiAgICAgICAgc3RhcnRUaW1lOiBldmVudC5UaW1lc3RhbXAhLnZhbHVlT2YoKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1N0YWNrQmVnaW5PcGVyYXRpb25TdGF0ZShzdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiBbXG4gICAgJ0NSRUFURV9JTl9QUk9HUkVTUycsXG4gICAgJ1VQREFURV9JTl9QUk9HUkVTUycsXG4gICAgJ0RFTEVURV9JTl9QUk9HUkVTUycsXG4gICAgJ1VQREFURV9ST0xMQkFDS19JTl9QUk9HUkVTUycsXG4gICAgJ1JPTExCQUNLX0lOX1BST0dSRVNTJyxcbiAgXS5pbmNsdWRlcyhzdGF0ZSA/PyAnJyk7XG59XG5cbmZ1bmN0aW9uIGlzU3RhY2tUZXJtaW5hbFN0YXRlKHN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuICEoc3RhdGUgPz8gJycpLmVuZHNXaXRoKCdfSU5fUFJPR1JFU1MnKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { StackEvent } from '@aws-sdk/client-cloudformation';
|
|
2
|
+
export interface StackProgress {
|
|
3
|
+
/**
|
|
4
|
+
* The total number of progress monitored resources.
|
|
5
|
+
*/
|
|
6
|
+
readonly total?: number;
|
|
7
|
+
/**
|
|
8
|
+
* The number of completed resources.
|
|
9
|
+
*/
|
|
10
|
+
readonly completed: number;
|
|
11
|
+
/**
|
|
12
|
+
* The current progress as a [34/42] string, or just [34] if the total is unknown.
|
|
13
|
+
*/
|
|
14
|
+
readonly formatted: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Monitors stack progress.s
|
|
18
|
+
*/
|
|
19
|
+
export declare class StackProgressMonitor {
|
|
20
|
+
/**
|
|
21
|
+
* Previous completion state observed by logical ID
|
|
22
|
+
*
|
|
23
|
+
* We use this to detect that if we see a DELETE_COMPLETE after a
|
|
24
|
+
* CREATE_COMPLETE, it's actually a rollback and we should DECREASE
|
|
25
|
+
* resourcesDone instead of increase it
|
|
26
|
+
*/
|
|
27
|
+
private resourcesPrevCompleteState;
|
|
28
|
+
/**
|
|
29
|
+
* Count of resources that have reported a _COMPLETE status
|
|
30
|
+
*/
|
|
31
|
+
private resourcesDone;
|
|
32
|
+
/**
|
|
33
|
+
* How many digits we need to represent the total count (for lining up the status reporting)
|
|
34
|
+
*/
|
|
35
|
+
private readonly resourceDigits;
|
|
36
|
+
/**
|
|
37
|
+
* Number of expected resources in the monitor.
|
|
38
|
+
*/
|
|
39
|
+
private readonly resourcesTotal?;
|
|
40
|
+
constructor(resourcesTotal?: number);
|
|
41
|
+
/**
|
|
42
|
+
* Report the stack progress
|
|
43
|
+
*/
|
|
44
|
+
get progress(): StackProgress;
|
|
45
|
+
/**
|
|
46
|
+
* The total number of progress monitored resources.
|
|
47
|
+
*/
|
|
48
|
+
get total(): number | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* The number of completed resources.
|
|
51
|
+
*/
|
|
52
|
+
get completed(): number;
|
|
53
|
+
/**
|
|
54
|
+
* Report the current progress as a [34/42] string, or just [34] if the total is unknown
|
|
55
|
+
*/
|
|
56
|
+
get formatted(): string;
|
|
57
|
+
/**
|
|
58
|
+
* Process as stack event and update the progress state.
|
|
59
|
+
*/
|
|
60
|
+
process(event: StackEvent): void;
|
|
61
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StackProgressMonitor = void 0;
|
|
4
|
+
const util = require("util");
|
|
5
|
+
const string_manipulation_1 = require("../../util/string-manipulation");
|
|
6
|
+
/**
|
|
7
|
+
* Monitors stack progress.s
|
|
8
|
+
*/
|
|
9
|
+
class StackProgressMonitor {
|
|
10
|
+
constructor(resourcesTotal) {
|
|
11
|
+
/**
|
|
12
|
+
* Previous completion state observed by logical ID
|
|
13
|
+
*
|
|
14
|
+
* We use this to detect that if we see a DELETE_COMPLETE after a
|
|
15
|
+
* CREATE_COMPLETE, it's actually a rollback and we should DECREASE
|
|
16
|
+
* resourcesDone instead of increase it
|
|
17
|
+
*/
|
|
18
|
+
this.resourcesPrevCompleteState = {};
|
|
19
|
+
/**
|
|
20
|
+
* Count of resources that have reported a _COMPLETE status
|
|
21
|
+
*/
|
|
22
|
+
this.resourcesDone = 0;
|
|
23
|
+
/**
|
|
24
|
+
* How many digits we need to represent the total count (for lining up the status reporting)
|
|
25
|
+
*/
|
|
26
|
+
this.resourceDigits = 0;
|
|
27
|
+
// +1 because the stack also emits a "COMPLETE" event at the end, and that wasn't
|
|
28
|
+
// counted yet. This makes it line up with the amount of events we expect.
|
|
29
|
+
this.resourcesTotal = resourcesTotal ? resourcesTotal + 1 : undefined;
|
|
30
|
+
// How many digits does this number take to represent?
|
|
31
|
+
this.resourceDigits = this.resourcesTotal ? Math.ceil(Math.log10(this.resourcesTotal)) : 0;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Report the stack progress
|
|
35
|
+
*/
|
|
36
|
+
get progress() {
|
|
37
|
+
return {
|
|
38
|
+
total: this.total,
|
|
39
|
+
completed: this.completed,
|
|
40
|
+
formatted: this.formatted,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The total number of progress monitored resources.
|
|
45
|
+
*/
|
|
46
|
+
get total() {
|
|
47
|
+
return this.resourcesTotal;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The number of completed resources.
|
|
51
|
+
*/
|
|
52
|
+
get completed() {
|
|
53
|
+
return this.resourcesDone;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Report the current progress as a [34/42] string, or just [34] if the total is unknown
|
|
57
|
+
*/
|
|
58
|
+
get formatted() {
|
|
59
|
+
if (this.resourcesTotal == null) {
|
|
60
|
+
// Don't have total, show simple count and hope the human knows
|
|
61
|
+
return (0, string_manipulation_1.padLeft)(3, util.format('%s', this.resourcesDone)); // max 500 resources
|
|
62
|
+
}
|
|
63
|
+
return util.format('%s/%s', (0, string_manipulation_1.padLeft)(this.resourceDigits, this.resourcesDone.toString()), (0, string_manipulation_1.padLeft)(this.resourceDigits, this.resourcesTotal.toString()));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Process as stack event and update the progress state.
|
|
67
|
+
*/
|
|
68
|
+
process(event) {
|
|
69
|
+
const status = event.ResourceStatus;
|
|
70
|
+
if (!status || !event.LogicalResourceId) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (status.endsWith('_COMPLETE_CLEANUP_IN_PROGRESS')) {
|
|
74
|
+
this.resourcesDone++;
|
|
75
|
+
}
|
|
76
|
+
if (status.endsWith('_COMPLETE')) {
|
|
77
|
+
const prevState = this.resourcesPrevCompleteState[event.LogicalResourceId];
|
|
78
|
+
if (!prevState) {
|
|
79
|
+
this.resourcesDone++;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// If we completed this before and we're completing it AGAIN, means we're rolling back.
|
|
83
|
+
// Protect against silly underflow.
|
|
84
|
+
this.resourcesDone--;
|
|
85
|
+
if (this.resourcesDone < 0) {
|
|
86
|
+
this.resourcesDone = 0;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
this.resourcesPrevCompleteState[event.LogicalResourceId] = status;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.StackProgressMonitor = StackProgressMonitor;
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stcHJvZ3Jlc3MtbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLXByb2dyZXNzLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkJBQTZCO0FBRTdCLHdFQUF5RDtBQW1CekQ7O0dBRUc7QUFDSCxNQUFhLG9CQUFvQjtJQXlCL0IsWUFBWSxjQUF1QjtRQXhCbkM7Ozs7OztXQU1HO1FBQ0ssK0JBQTBCLEdBQTJCLEVBQUUsQ0FBQztRQUVoRTs7V0FFRztRQUNLLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRWxDOztXQUVHO1FBQ2MsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFRMUMsaUZBQWlGO1FBQ2pGLDBFQUEwRTtRQUMxRSxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXRFLHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNqQixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsU0FBUztRQUNsQixJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxFQUFFLENBQUM7WUFDaEMsK0RBQStEO1lBQy9ELE9BQU8sSUFBQSw2QkFBTyxFQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtRQUNoRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUNoQixPQUFPLEVBQ1AsSUFBQSw2QkFBTyxFQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUMzRCxJQUFBLDZCQUFPLEVBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQzdELENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsS0FBaUI7UUFDOUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDeEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHVGQUF1RjtnQkFDdkYsbUNBQW1DO2dCQUNuQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdkdELG9EQXVHQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0ICogYXMgdXRpbCBmcm9tICd1dGlsJztcbmltcG9ydCB7IFN0YWNrRXZlbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgcGFkTGVmdCB9IGZyb20gJy4uLy4uL3V0aWwvc3RyaW5nLW1hbmlwdWxhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tQcm9ncmVzcyB7XG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHByb2dyZXNzIG1vbml0b3JlZCByZXNvdXJjZXMuXG4gICAqL1xuICByZWFkb25seSB0b3RhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb21wbGV0ZWQgcmVzb3VyY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGxldGVkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHByb2dyZXNzIGFzIGEgWzM0LzQyXSBzdHJpbmcsIG9yIGp1c3QgWzM0XSBpZiB0aGUgdG90YWwgaXMgdW5rbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IGZvcm1hdHRlZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1vbml0b3JzIHN0YWNrIHByb2dyZXNzLnNcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YWNrUHJvZ3Jlc3NNb25pdG9yIHtcbiAgLyoqXG4gICAqIFByZXZpb3VzIGNvbXBsZXRpb24gc3RhdGUgb2JzZXJ2ZWQgYnkgbG9naWNhbCBJRFxuICAgKlxuICAgKiBXZSB1c2UgdGhpcyB0byBkZXRlY3QgdGhhdCBpZiB3ZSBzZWUgYSBERUxFVEVfQ09NUExFVEUgYWZ0ZXIgYVxuICAgKiBDUkVBVEVfQ09NUExFVEUsIGl0J3MgYWN0dWFsbHkgYSByb2xsYmFjayBhbmQgd2Ugc2hvdWxkIERFQ1JFQVNFXG4gICAqIHJlc291cmNlc0RvbmUgaW5zdGVhZCBvZiBpbmNyZWFzZSBpdFxuICAgKi9cbiAgcHJpdmF0ZSByZXNvdXJjZXNQcmV2Q29tcGxldGVTdGF0ZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIC8qKlxuICAgKiBDb3VudCBvZiByZXNvdXJjZXMgdGhhdCBoYXZlIHJlcG9ydGVkIGEgX0NPTVBMRVRFIHN0YXR1c1xuICAgKi9cbiAgcHJpdmF0ZSByZXNvdXJjZXNEb25lOiBudW1iZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBIb3cgbWFueSBkaWdpdHMgd2UgbmVlZCB0byByZXByZXNlbnQgdGhlIHRvdGFsIGNvdW50IChmb3IgbGluaW5nIHVwIHRoZSBzdGF0dXMgcmVwb3J0aW5nKVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZURpZ2l0czogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGV4cGVjdGVkIHJlc291cmNlcyBpbiB0aGUgbW9uaXRvci5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VzVG90YWw/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocmVzb3VyY2VzVG90YWw/OiBudW1iZXIpIHtcbiAgICAvLyArMSBiZWNhdXNlIHRoZSBzdGFjayBhbHNvIGVtaXRzIGEgXCJDT01QTEVURVwiIGV2ZW50IGF0IHRoZSBlbmQsIGFuZCB0aGF0IHdhc24ndFxuICAgIC8vIGNvdW50ZWQgeWV0LiBUaGlzIG1ha2VzIGl0IGxpbmUgdXAgd2l0aCB0aGUgYW1vdW50IG9mIGV2ZW50cyB3ZSBleHBlY3QuXG4gICAgdGhpcy5yZXNvdXJjZXNUb3RhbCA9IHJlc291cmNlc1RvdGFsID8gcmVzb3VyY2VzVG90YWwgKyAxIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gSG93IG1hbnkgZGlnaXRzIGRvZXMgdGhpcyBudW1iZXIgdGFrZSB0byByZXByZXNlbnQ/XG4gICAgdGhpcy5yZXNvdXJjZURpZ2l0cyA9IHRoaXMucmVzb3VyY2VzVG90YWwgPyBNYXRoLmNlaWwoTWF0aC5sb2cxMCh0aGlzLnJlc291cmNlc1RvdGFsKSkgOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcG9ydCB0aGUgc3RhY2sgcHJvZ3Jlc3NcbiAgICovXG4gIHB1YmxpYyBnZXQgcHJvZ3Jlc3MoKTogU3RhY2tQcm9ncmVzcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsOiB0aGlzLnRvdGFsLFxuICAgICAgY29tcGxldGVkOiB0aGlzLmNvbXBsZXRlZCxcbiAgICAgIGZvcm1hdHRlZDogdGhpcy5mb3JtYXR0ZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHByb2dyZXNzIG1vbml0b3JlZCByZXNvdXJjZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRvdGFsKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzVG90YWw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb21wbGV0ZWQgcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIGdldCBjb21wbGV0ZWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXNEb25lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcG9ydCB0aGUgY3VycmVudCBwcm9ncmVzcyBhcyBhIFszNC80Ml0gc3RyaW5nLCBvciBqdXN0IFszNF0gaWYgdGhlIHRvdGFsIGlzIHVua25vd25cbiAgICovXG4gIHB1YmxpYyBnZXQgZm9ybWF0dGVkKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmVzb3VyY2VzVG90YWwgPT0gbnVsbCkge1xuICAgICAgLy8gRG9uJ3QgaGF2ZSB0b3RhbCwgc2hvdyBzaW1wbGUgY291bnQgYW5kIGhvcGUgdGhlIGh1bWFuIGtub3dzXG4gICAgICByZXR1cm4gcGFkTGVmdCgzLCB1dGlsLmZvcm1hdCgnJXMnLCB0aGlzLnJlc291cmNlc0RvbmUpKTsgLy8gbWF4IDUwMCByZXNvdXJjZXNcbiAgICB9XG5cbiAgICByZXR1cm4gdXRpbC5mb3JtYXQoXG4gICAgICAnJXMvJXMnLFxuICAgICAgcGFkTGVmdCh0aGlzLnJlc291cmNlRGlnaXRzLCB0aGlzLnJlc291cmNlc0RvbmUudG9TdHJpbmcoKSksXG4gICAgICBwYWRMZWZ0KHRoaXMucmVzb3VyY2VEaWdpdHMsIHRoaXMucmVzb3VyY2VzVG90YWwudG9TdHJpbmcoKSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGFzIHN0YWNrIGV2ZW50IGFuZCB1cGRhdGUgdGhlIHByb2dyZXNzIHN0YXRlLlxuICAgKi9cbiAgcHVibGljIHByb2Nlc3MoZXZlbnQ6IFN0YWNrRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0dXMgPSBldmVudC5SZXNvdXJjZVN0YXR1cztcbiAgICBpZiAoIXN0YXR1cyB8fCAhZXZlbnQuTG9naWNhbFJlc291cmNlSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc3RhdHVzLmVuZHNXaXRoKCdfQ09NUExFVEVfQ0xFQU5VUF9JTl9QUk9HUkVTUycpKSB7XG4gICAgICB0aGlzLnJlc291cmNlc0RvbmUrKztcbiAgICB9XG5cbiAgICBpZiAoc3RhdHVzLmVuZHNXaXRoKCdfQ09NUExFVEUnKSkge1xuICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5yZXNvdXJjZXNQcmV2Q29tcGxldGVTdGF0ZVtldmVudC5Mb2dpY2FsUmVzb3VyY2VJZF07XG4gICAgICBpZiAoIXByZXZTdGF0ZSkge1xuICAgICAgICB0aGlzLnJlc291cmNlc0RvbmUrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHdlIGNvbXBsZXRlZCB0aGlzIGJlZm9yZSBhbmQgd2UncmUgY29tcGxldGluZyBpdCBBR0FJTiwgbWVhbnMgd2UncmUgcm9sbGluZyBiYWNrLlxuICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3Qgc2lsbHkgdW5kZXJmbG93LlxuICAgICAgICB0aGlzLnJlc291cmNlc0RvbmUtLTtcbiAgICAgICAgaWYgKHRoaXMucmVzb3VyY2VzRG9uZSA8IDApIHtcbiAgICAgICAgICB0aGlzLnJlc291cmNlc0RvbmUgPSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnJlc291cmNlc1ByZXZDb21wbGV0ZVN0YXRlW2V2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkXSA9IHN0YXR1cztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -155,8 +155,8 @@ WorkGraphBuilder.PRIORITIES = {
|
|
|
155
155
|
};
|
|
156
156
|
function stacksFromAssets(artifacts) {
|
|
157
157
|
const ret = new Map();
|
|
158
|
-
for (const stack of artifacts.filter(cxapi.CloudFormationStackArtifact.isCloudFormationStackArtifact)) {
|
|
159
|
-
const assetArtifacts = stack.dependencies.filter(cxapi.AssetManifestArtifact.isAssetManifestArtifact);
|
|
158
|
+
for (const stack of artifacts.filter(x => cxapi.CloudFormationStackArtifact.isCloudFormationStackArtifact(x))) {
|
|
159
|
+
const assetArtifacts = stack.dependencies.filter((x) => cxapi.AssetManifestArtifact.isAssetManifestArtifact(x));
|
|
160
160
|
for (const art of assetArtifacts) {
|
|
161
161
|
ret.set(art, stack);
|
|
162
162
|
}
|
|
@@ -164,6 +164,6 @@ function stacksFromAssets(artifacts) {
|
|
|
164
164
|
return ret;
|
|
165
165
|
}
|
|
166
166
|
function onlyStacks(artifacts) {
|
|
167
|
-
return artifacts.filter(cxapi.CloudFormationStackArtifact.isCloudFormationStackArtifact);
|
|
167
|
+
return artifacts.filter(x => cxapi.CloudFormationStackArtifact.isCloudFormationStackArtifact(x));
|
|
168
168
|
}
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1ncmFwaC1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid29yay1ncmFwaC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF5QztBQUN6QywyQ0FBZ0U7QUFDaEUsNkNBQXlDO0FBQ3pDLHlEQUErRTtBQUUvRSwrQ0FBbUQ7QUFDbkQsMERBQXlEO0FBRXpELE1BQWEsZ0JBQWdCO0lBbUIzQixZQUNFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBZSxFQUNkLGNBQXVCLEVBQ3ZCLFdBQVcsRUFBRTtRQURiLG1CQUFjLEdBQWQsY0FBYyxDQUFTO1FBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQUs7UUFFOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHNCQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxRQUEyQztRQUMxRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNsQixJQUFJLEVBQUUsT0FBTztZQUNiLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxZQUFZLEVBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUMvRSxLQUFLLEVBQUUsUUFBUTtZQUNmLGVBQWUsRUFBRSxrQ0FBZSxDQUFDLE9BQU87WUFDeEMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLO1NBQzVDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILG1DQUFtQztJQUMzQixRQUFRLENBQUMsV0FBOEMs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QTZCLENBQUMsQ0FBQztBQUMzRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB7IEFzc2V0TWFuaWZlc3QsIHR5cGUgSU1hbmlmZXN0RW50cnkgfSBmcm9tICdjZGstYXNzZXRzJztcbmltcG9ydCB7IFdvcmtHcmFwaCB9IGZyb20gJy4vd29yay1ncmFwaCc7XG5pbXBvcnQgeyBEZXBsb3ltZW50U3RhdGUsIEFzc2V0QnVpbGROb2RlLCBXb3JrTm9kZSB9IGZyb20gJy4vd29yay1ncmFwaC10eXBlcyc7XG5pbXBvcnQgeyBJb01lc3NhZ2luZyB9IGZyb20gJy4uLy4uL3Rvb2xraXQvY2xpLWlvLWhvc3QnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC9lcnJvcic7XG5pbXBvcnQgeyBjb250ZW50SGFzaEFueSB9IGZyb20gJy4uLy4uL3V0aWwvY29udGVudC1oYXNoJztcblxuZXhwb3J0IGNsYXNzIFdvcmtHcmFwaEJ1aWxkZXIge1xuICAvKipcbiAgICogRGVmYXVsdCBwcmlvcml0aWVzIGZvciBub2Rlc1xuICAgKlxuICAgKiBBc3NldHMgYnVpbGRzIGhhdmUgaGlnaGVyIHByaW9yaXR5IHRoYW4gdGhlIG90aGVyIHR3byBvcGVyYXRpb25zLCB0byBtYWtlIGdvb2Qgb24gb3VyIHByb21pc2UgdGhhdFxuICAgKiAnLS1wcmVidWlsZC1hc3NldHMnIHdpbGwgYWN0dWFsbHkgZG8gYXNzZXRzIGJlZm9yZSBzdGFja3MgKGlmIGl0IGNhbikuIFVuZm9ydHVuYXRlbHkgaXQgaXMgdGhlXG4gICAqIGRlZmF1bHQgOihcbiAgICpcbiAgICogQnV0IGJldHdlZW4gc3RhY2sgZGVwZW5kZW5jaWVzIGFuZCBwdWJsaXNoIGRlcGVuZGVuY2llcywgc3RhY2sgZGVwZW5kZW5jaWVzIGdvIGZpcnN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFBSSU9SSVRJRVM6IFJlY29yZDxXb3JrTm9kZVsndHlwZSddLCBudW1iZXI+ID0ge1xuICAgICdhc3NldC1idWlsZCc6IDEwLFxuICAgICdhc3NldC1wdWJsaXNoJzogMCxcbiAgICAnc3RhY2snOiA1LFxuICB9O1xuICBwcml2YXRlIHJlYWRvbmx5IGdyYXBoOiBXb3JrR3JhcGg7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9Ib3N0OiBJb01lc3NhZ2luZ1snaW9Ib3N0J107XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uOiBJb01lc3NhZ2luZ1snYWN0aW9uJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgeyBpb0hvc3QsIGFjdGlvbiB9OiBJb01lc3NhZ2luZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZWJ1aWxkQXNzZXRzOiBib29sZWFuLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRQcmVmaXggPSAnJyxcbiAgKSB7XG4gICAgdGhpcy5ncmFwaCA9IG5ldyBXb3JrR3JhcGgoe30sIHsgaW9Ib3N0LCBhY3Rpb24gfSk7XG4gICAgdGhpcy5pb0hvc3QgPSBpb0hvc3Q7XG4gICAgdGhpcy5hY3Rpb24gPSBhY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGFkZFN0YWNrKGFydGlmYWN0OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QpIHtcbiAgICB0aGlzLmdyYXBoLmFkZE5vZGVzKHtcbiAgICAgIHR5cGU6ICdzdGFjaycsXG4gICAgICBpZDogYCR7dGhpcy5pZFByZWZpeH0ke2FydGlmYWN0LmlkfWAsXG4gICAgICBkZXBlbmRlbmNpZXM6IG5ldyBTZXQodGhpcy5zdGFja0FydGlmYWN0SWRzKG9ubHlTdGFja3MoYXJ0aWZhY3QuZGVwZW5kZW5jaWVzKSkpLFxuICAgICAgc3RhY2s6IGFydGlmYWN0LFxuICAgICAgZGVwbG95bWVudFN0YXRlOiBEZXBsb3ltZW50U3RhdGUuUEVORElORyxcbiAgICAgIHByaW9yaXR5OiBXb3JrR3JhcGhCdWlsZGVyLlBSSU9SSVRJRVMuc3RhY2ssXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT29mLCBzZWUgdGhpcyBwYXJhbWV0ZXIgbGlzdFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgcHJpdmF0ZSBhZGRBc3NldChwYXJlbnRTdGFjazogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LCBhc3NldE1hbmlmZXN0QXJ0aWZhY3Q6IGN4YXBpLkFzc2V0TWFuaWZlc3RBcnRpZmFjdCwgYXNzZXRNYW5pZmVzdDogQXNzZXRNYW5pZmVzdCwgYXNzZXQ6IElNYW5pZmVzdEVudHJ5KSB7XG4gICAgLy8gSnVzdCB0aGUgYXJ0aWZhY3QgaWRlbnRpZmllclxuICAgIGNvbnN0IGFzc2V0SWQgPSBhc3NldC5pZC5hc3NldElkO1xuXG4gICAgY29uc3QgYnVpbGRJZCA9IGBidWlsZC0ke2Fzc2V0SWR9LSR7Y29udGVudEhhc2hBbnkoW2Fzc2V0SWQsIGFzc2V0LmdlbmVyaWNTb3VyY2VdKS5zdWJzdHJpbmcoMCwgMTApfWA7XG4gICAgY29uc3QgcHVibGlzaElkID0gYHB1Ymxpc2gtJHthc3NldElkfS0ke2NvbnRlbnRIYXNoQW55KFthc3NldElkLCBhc3NldC5nZW5lcmljRGVzdGluYXRpb25dKS5zdWJzdHJpbmcoMCwgMTApfWA7XG5cbiAgICAvLyBCdWlsZCBub2RlIG9ubHkgZ2V0cyBhZGRlZCBvbmNlIGJlY2F1c2UgdGhleSBhcmUgYWxsIHRoZSBzYW1lXG4gICAgaWYgKCF0aGlzLmdyYXBoLnRyeUdldE5vZGUoYnVpbGRJZCkpIHtcbiAgICAgIGNvbnN0IG5vZGU6IEFzc2V0QnVpbGROb2RlID0ge1xuICAgICAgICB0eXBlOiAnYXNzZXQtYnVpbGQnLFxuICAgICAgICBpZDogYnVpbGRJZCxcbiAgICAgICAgbm90ZTogYXNzZXRJZCxcbiAgICAgICAgZGVwZW5kZW5jaWVzOiBuZXcgU2V0KFtcbiAgICAgICAgICAuLi50aGlzLnN0YWNrQXJ0aWZhY3RJZHMoYXNzZXRNYW5pZmVzdEFydGlmYWN0LmRlcGVuZGVuY2llcyksXG4gICAgICAgICAgLy8gSWYgd2UgZGlzYWJsZSBwcmVidWlsZCwgdGhlbiBhc3NldHMgaW5oZXJpdCAoc3RhY2spIGRlcGVuZGVuY2llcyBmcm9tIHRoZWlyIHBhcmVudCBzdGFja1xuICAgICAgICAgIC4uLiF0aGlzLnByZWJ1aWxkQXNzZXRzID8gdGhpcy5zdGFja0FydGlmYWN0SWRzKG9ubHlTdGFja3MocGFyZW50U3RhY2suZGVwZW5kZW5jaWVzKSkgOiBbXSxcbiAgICAgICAgXSksXG4gICAgICAgIHBhcmVudFN0YWNrOiBwYXJlbnRTdGFjayxcbiAgICAgICAgYXNzZXRNYW5pZmVzdEFydGlmYWN0LFxuICAgICAgICBhc3NldE1hbmlmZXN0LFxuICAgICAgICBhc3NldCxcbiAgICAgICAgZGVwbG95bWVudFN0YXRlOiBEZXBsb3ltZW50U3RhdGUuUEVORElORyxcbiAgICAgICAgcHJpb3JpdHk6IFdvcmtHcmFwaEJ1aWxkZXIuUFJJT1JJVElFU1snYXNzZXQtYnVpbGQnXSxcbiAgICAgIH07XG4gICAgICB0aGlzLmdyYXBoLmFkZE5vZGVzKG5vZGUpO1xuICAgIH1cblxuICAgIGNvbnN0IHB1Ymxpc2hOb2RlID0gdGhpcy5ncmFwaC50cnlHZXROb2RlKHB1Ymxpc2hJZCk7XG4gICAgaWYgKCFwdWJsaXNoTm9kZSkge1xuICAgICAgdGhpcy5ncmFwaC5hZGROb2Rlcyh7XG4gICAgICAgIHR5cGU6ICdhc3NldC1wdWJsaXNoJyxcbiAgICAgICAgaWQ6IHB1Ymxpc2hJZCxcbiAgICAgICAgbm90ZTogYCR7YXNzZXQuaWR9YCxcbiAgICAgICAgZGVwZW5kZW5jaWVzOiBuZXcgU2V0KFtcbiAgICAgICAgICBidWlsZElkLFxuICAgICAgICBdKSxcbiAgICAgICAgcGFyZW50U3RhY2ssXG4gICAgICAgIGFzc2V0TWFuaWZlc3RBcnRpZmFjdCxcbiAgICAgICAgYXNzZXRNYW5pZmVzdCxcbiAgICAgICAgYXNzZXQsXG4gICAgICAgIGRlcGxveW1lbnRTdGF0ZTogRGVwbG95bWVudFN0YXRlLlBFTkRJTkcsXG4gICAgICAgIHByaW9yaXR5OiBXb3JrR3JhcGhCdWlsZGVyLlBSSU9SSVRJRVNbJ2Fzc2V0LXB1Ymxpc2gnXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaW5oZXJpdGVkRGVwIG9mIHRoaXMuc3RhY2tBcnRpZmFjdElkcyhvbmx5U3RhY2tzKHBhcmVudFN0YWNrLmRlcGVuZGVuY2llcykpKSB7XG4gICAgICAvLyBUaGUgYXNzZXQgcHVibGlzaCBzdGVwIGFsc28gZGVwZW5kcyBvbiB0aGUgc3RhY2tzIHRoYXQgdGhlIHBhcmVudCBkZXBlbmRzIG9uLlxuICAgICAgLy8gVGhpcyBpcyBwdXJlbHkgY29zbWV0aWM6IGlmIHdlIGRvbid0IGRvIHRoaXMsIHRoZSBwcm9ncmVzcyBwcmludGluZyBvZiBhc3NldCBwdWJsaXNoaW5nXG4gICAgICAvLyBpcyBnb2luZyB0byBpbnRlcmZlcmUgd2l0aCB0aGUgcHJvZ3Jlc3MgYmFyIG9mIHRoZSBzdGFjayBkZXBsb3ltZW50LiBXZSBjb3VsZCByZW1vdmUgdGhpc1xuICAgICAgLy8gZm9yIG92ZXJhbGwgZmFzdGVyIGRlcGxveW1lbnRzIGlmIHdlIGV2ZXIgaGF2ZSBhIGJldHRlciBtZXRob2Qgb2YgcHJvZ3Jlc3MgZGlzcGxheWluZy5cbiAgICAgIC8vIE5vdGU6IHRoaXMgbWF5IGludHJvZHVjZSBhIGN5Y2xlIGlmIG9uZSBvZiB0aGUgcGFyZW50J3MgZGVwZW5kZW5jaWVzIGlzIGFub3RoZXIgc3RhY2sgdGhhdFxuICAgICAgLy8gZGVwZW5kcyBvbiB0aGlzIGFzc2V0LiBUbyB3b3JrYXJvdW5kIHRoaXMgd2UgcmVtb3ZlIHRoZXNlIGN5Y2xlcyBvbmNlIGFsbCBub2RlcyBoYXZlXG4gICAgICAvLyBiZWVuIGFkZGVkIHRvIHRoZSBncmFwaC5cbiAgICAgIHRoaXMuZ3JhcGguYWRkRGVwZW5kZW5jeShwdWJsaXNoSWQsIGluaGVyaXRlZERlcCk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyB3aWxsIHdvcmsgd2hldGhlciB0aGUgc3RhY2sgbm9kZSBoYXMgYmVlbiBhZGRlZCB5ZXQgb3Igbm90XG4gICAgdGhpcy5ncmFwaC5hZGREZXBlbmRlbmN5KGAke3RoaXMuaWRQcmVmaXh9JHtwYXJlbnRTdGFjay5pZH1gLCBwdWJsaXNoSWQpO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkKGFydGlmYWN0czogY3hhcGkuQ2xvdWRBcnRpZmFjdFtdKTogV29ya0dyYXBoIHtcbiAgICBjb25zdCBwYXJlbnRTdGFja3MgPSBzdGFja3NGcm9tQXNzZXRzKGFydGlmYWN0cyk7XG5cbiAgICBmb3IgKGNvbnN0IGFydGlmYWN0IG9mIGFydGlmYWN0cykge1xuICAgICAgaWYgKGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdC5pc0Nsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdChhcnRpZmFjdCkpIHtcbiAgICAgICAgdGhpcy5hZGRTdGFjayhhcnRpZmFjdCk7XG4gICAgICB9IGVsc2UgaWYgKGN4YXBpLkFzc2V0TWFuaWZlc3RBcnRpZmFjdC5pc0Fzc2V0TWFuaWZlc3RBcnRpZmFjdChhcnRpZmFjdCkpIHtcbiAgICAgICAgY29uc3QgbWFuaWZlc3QgPSBBc3NldE1hbmlmZXN0LmZyb21GaWxlKGFydGlmYWN0LmZpbGUpO1xuXG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgbWFuaWZlc3QuZW50cmllcykge1xuICAgICAgICAgIGNvbnN0IHBhcmVudFN0YWNrID0gcGFyZW50U3RhY2tzLmdldChhcnRpZmFjdCk7XG4gICAgICAgICAgaWYgKHBhcmVudFN0YWNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ0ZvdW5kIGFuIGFzc2V0IG1hbmlmZXN0IHRoYXQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHN0YWNrJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWRkQXNzZXQocGFyZW50U3RhY2ssIGFydGlmYWN0LCBtYW5pZmVzdCwgZW50cnkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGN4YXBpLk5lc3RlZENsb3VkQXNzZW1ibHlBcnRpZmFjdC5pc05lc3RlZENsb3VkQXNzZW1ibHlBcnRpZmFjdChhcnRpZmFjdCkpIHtcbiAgICAgICAgY29uc3QgYXNzZW1ibHkgPSBuZXcgY3hhcGkuQ2xvdWRBc3NlbWJseShhcnRpZmFjdC5mdWxsUGF0aCwgeyB0b3BvU29ydDogZmFsc2UgfSk7XG4gICAgICAgIGNvbnN0IG5lc3RlZEdyYXBoID0gbmV3IFdvcmtHcmFwaEJ1aWxkZXIoXG4gICAgICAgICAgeyBpb0hvc3Q6IHRoaXMuaW9Ib3N0LCBhY3Rpb246IHRoaXMuYWN0aW9uIH0sXG4gICAgICAgICAgdGhpcy5wcmVidWlsZEFzc2V0cyxcbiAgICAgICAgICBgJHt0aGlzLmlkUHJlZml4fSR7YXJ0aWZhY3QuaWR9LmAsXG4gICAgICAgICkuYnVpbGQoYXNzZW1ibHkuYXJ0aWZhY3RzKTtcbiAgICAgICAgdGhpcy5ncmFwaC5hYnNvcmIobmVzdGVkR3JhcGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWdub3JlIHdoYXRldmVyIGVsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmdyYXBoLnJlbW92ZVVuYXZhaWxhYmxlRGVwZW5kZW5jaWVzKCk7XG5cbiAgICAvLyBSZW1vdmUgYW55IHBvdGVudGlhbGx5IGludHJvZHVjZWQgY3ljbGVzIGJldHdlZW4gYXNzZXQgcHVibGlzaGluZyBhbmQgdGhlIHN0YWNrcyB0aGF0IGRlcGVuZCBvbiB0aGVtLlxuICAgIHRoaXMucmVtb3ZlU3RhY2tQdWJsaXNoQ3ljbGVzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5ncmFwaDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhY2tBcnRpZmFjdElkcyhkZXBzOiBjeGFwaS5DbG91ZEFydGlmYWN0W10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGRlcHMuZmxhdE1hcCgoZCkgPT4gY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LmlzQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0KGQpID8gW3RoaXMuc3RhY2tBcnRpZmFjdElkKGQpXSA6IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhY2tBcnRpZmFjdElkKGFydGlmYWN0OiBjeGFwaS5DbG91ZEFydGlmYWN0KTogc3RyaW5nIHtcbiAgICBpZiAoIWN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdC5pc0Nsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdChhcnRpZmFjdCkpIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYENhbiBvbmx5IGNhbGwgdGhpcyBvbiBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIGdvdDogJHthcnRpZmFjdC5jb25zdHJ1Y3Rvci5uYW1lfWApO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5pZFByZWZpeH0ke2FydGlmYWN0LmlkfWA7XG4gIH1cblxuICAvKipcbiAgICogV2UgbWF5IGhhdmUgYWNjaWRlbnRhbGx5IGludHJvZHVjZWQgY3ljbGVzIGluIGFuIGF0dGVtcHQgdG8gbWFrZSB0aGUgbWVzc2FnZXMgcHJpbnRlZCB0byB0aGVcbiAgICogY29uc29sZSBub3QgaW50ZXJmZXJlIHdpdGggZWFjaCBvdGhlciB0b28gbXVjaC4gUmVtb3ZlIHRoZW0gYWdhaW4uXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZVN0YWNrUHVibGlzaEN5Y2xlcygpIHtcbiAgICBjb25zdCBwdWJsaXNoU3RlcHMgPSB0aGlzLmdyYXBoLm5vZGVzT2ZUeXBlKCdhc3NldC1wdWJsaXNoJyk7XG4gICAgZm9yIChjb25zdCBwdWJsaXNoU3RlcCBvZiBwdWJsaXNoU3RlcHMpIHtcbiAgICAgIGZvciAoY29uc3QgZGVwIG9mIHB1Ymxpc2hTdGVwLmRlcGVuZGVuY2llcykge1xuICAgICAgICBpZiAodGhpcy5ncmFwaC5yZWFjaGFibGUoZGVwLCBwdWJsaXNoU3RlcC5pZCkpIHtcbiAgICAgICAgICBwdWJsaXNoU3RlcC5kZXBlbmRlbmNpZXMuZGVsZXRlKGRlcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhY2tzRnJvbUFzc2V0cyhhcnRpZmFjdHM6IGN4YXBpLkNsb3VkQXJ0aWZhY3RbXSkge1xuICBjb25zdCByZXQgPSBuZXcgTWFwPGN4YXBpLkFzc2V0TWFuaWZlc3RBcnRpZmFjdCwgY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0PigpO1xuICBmb3IgKGNvbnN0IHN0YWNrIG9mIGFydGlmYWN0cy5maWx0ZXIoY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LmlzQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0KSkge1xuICAgIGNvbnN0IGFzc2V0QXJ0aWZhY3RzID0gc3RhY2suZGVwZW5kZW5jaWVzLmZpbHRlcihjeGFwaS5Bc3NldE1hbmlmZXN0QXJ0aWZhY3QuaXNBc3NldE1hbmlmZXN0QXJ0aWZhY3QpO1xuICAgIGZvciAoY29uc3QgYXJ0IG9mIGFzc2V0QXJ0aWZhY3RzKSB7XG4gICAgICByZXQuc2V0KGFydCwgc3RhY2spO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG9ubHlTdGFja3MoYXJ0aWZhY3RzOiBjeGFwaS5DbG91ZEFydGlmYWN0W10pIHtcbiAgcmV0dXJuIGFydGlmYWN0cy5maWx0ZXIoY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LmlzQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0KTtcbn1cbiJdfQ==
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1ncmFwaC1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid29yay1ncmFwaC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF5QztBQUN6QywyQ0FBZ0U7QUFDaEUsNkNBQXlDO0FBQ3pDLHlEQUErRTtBQUUvRSwrQ0FBbUQ7QUFDbkQsMERBQXlEO0FBRXpELE1BQWEsZ0JBQWdCO0lBbUIzQixZQUNFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBZSxFQUNkLGNBQXVCLEVBQ3ZCLFdBQVcsRUFBRTtRQURiLG1CQUFjLEdBQWQsY0FBYyxDQUFTO1FBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQUs7UUFFOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHNCQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxRQUEyQztRQUMxRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNsQixJQUFJLEVBQUUsT0FBTztZQUNiLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxZQUFZLEVBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUMvRSxLQUFLLEVBQUUsUUFBUTtZQUNmLGVBQWUsRUFBRSxrQ0FBZSxDQUFDLE9BQU87WUFDeEMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLO1NBQzVDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILG1DQUFtQztJQUMzQixRQUFRLENBQUMsV0FBOEMs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QVMsVUFBVSxDQUFDLFNBQWdDO0lBQ2xELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHsgQXNzZXRNYW5pZmVzdCwgdHlwZSBJTWFuaWZlc3RFbnRyeSB9IGZyb20gJ2Nkay1hc3NldHMnO1xuaW1wb3J0IHsgV29ya0dyYXBoIH0gZnJvbSAnLi93b3JrLWdyYXBoJztcbmltcG9ydCB7IERlcGxveW1lbnRTdGF0ZSwgQXNzZXRCdWlsZE5vZGUsIFdvcmtOb2RlIH0gZnJvbSAnLi93b3JrLWdyYXBoLXR5cGVzJztcbmltcG9ydCB7IElvTWVzc2FnaW5nIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC9jbGktaW8taG9zdCc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L2Vycm9yJztcbmltcG9ydCB7IGNvbnRlbnRIYXNoQW55IH0gZnJvbSAnLi4vLi4vdXRpbC9jb250ZW50LWhhc2gnO1xuXG5leHBvcnQgY2xhc3MgV29ya0dyYXBoQnVpbGRlciB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IHByaW9yaXRpZXMgZm9yIG5vZGVzXG4gICAqXG4gICAqIEFzc2V0cyBidWlsZHMgaGF2ZSBoaWdoZXIgcHJpb3JpdHkgdGhhbiB0aGUgb3RoZXIgdHdvIG9wZXJhdGlvbnMsIHRvIG1ha2UgZ29vZCBvbiBvdXIgcHJvbWlzZSB0aGF0XG4gICAqICctLXByZWJ1aWxkLWFzc2V0cycgd2lsbCBhY3R1YWxseSBkbyBhc3NldHMgYmVmb3JlIHN0YWNrcyAoaWYgaXQgY2FuKS4gVW5mb3J0dW5hdGVseSBpdCBpcyB0aGVcbiAgICogZGVmYXVsdCA6KFxuICAgKlxuICAgKiBCdXQgYmV0d2VlbiBzdGFjayBkZXBlbmRlbmNpZXMgYW5kIHB1Ymxpc2ggZGVwZW5kZW5jaWVzLCBzdGFjayBkZXBlbmRlbmNpZXMgZ28gZmlyc3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgUFJJT1JJVElFUzogUmVjb3JkPFdvcmtOb2RlWyd0eXBlJ10sIG51bWJlcj4gPSB7XG4gICAgJ2Fzc2V0LWJ1aWxkJzogMTAsXG4gICAgJ2Fzc2V0LXB1Ymxpc2gnOiAwLFxuICAgICdzdGFjayc6IDUsXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JhcGg6IFdvcmtHcmFwaDtcbiAgcHJpdmF0ZSByZWFkb25seSBpb0hvc3Q6IElvTWVzc2FnaW5nWydpb0hvc3QnXTtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb246IElvTWVzc2FnaW5nWydhY3Rpb24nXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB7IGlvSG9zdCwgYWN0aW9uIH06IElvTWVzc2FnaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlYnVpbGRBc3NldHM6IGJvb2xlYW4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBpZFByZWZpeCA9ICcnLFxuICApIHtcbiAgICB0aGlzLmdyYXBoID0gbmV3IFdvcmtHcmFwaCh7fSwgeyBpb0hvc3QsIGFjdGlvbiB9KTtcbiAgICB0aGlzLmlvSG9zdCA9IGlvSG9zdDtcbiAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkU3RhY2soYXJ0aWZhY3Q6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCkge1xuICAgIHRoaXMuZ3JhcGguYWRkTm9kZXMoe1xuICAgICAgdHlwZTogJ3N0YWNrJyxcbiAgICAgIGlkOiBgJHt0aGlzLmlkUHJlZml4fSR7YXJ0aWZhY3QuaWR9YCxcbiAgICAgIGRlcGVuZGVuY2llczogbmV3IFNldCh0aGlzLnN0YWNrQXJ0aWZhY3RJZHMob25seVN0YWNrcyhhcnRpZmFjdC5kZXBlbmRlbmNpZXMpKSksXG4gICAgICBzdGFjazogYXJ0aWZhY3QsXG4gICAgICBkZXBsb3ltZW50U3RhdGU6IERlcGxveW1lbnRTdGF0ZS5QRU5ESU5HLFxuICAgICAgcHJpb3JpdHk6IFdvcmtHcmFwaEJ1aWxkZXIuUFJJT1JJVElFUy5zdGFjayxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPb2YsIHNlZSB0aGlzIHBhcmFtZXRlciBsaXN0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICBwcml2YXRlIGFkZEFzc2V0KHBhcmVudFN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIGFzc2V0TWFuaWZlc3RBcnRpZmFjdDogY3hhcGkuQXNzZXRNYW5pZmVzdEFydGlmYWN0LCBhc3NldE1hbmlmZXN0OiBBc3NldE1hbmlmZXN0LCBhc3NldDogSU1hbmlmZXN0RW50cnkpIHtcbiAgICAvLyBKdXN0IHRoZSBhcnRpZmFjdCBpZGVudGlmaWVyXG4gICAgY29uc3QgYXNzZXRJZCA9IGFzc2V0LmlkLmFzc2V0SWQ7XG5cbiAgICBjb25zdCBidWlsZElkID0gYGJ1aWxkLSR7YXNzZXRJZH0tJHtjb250ZW50SGFzaEFueShbYXNzZXRJZCwgYXNzZXQuZ2VuZXJpY1NvdXJjZV0pLnN1YnN0cmluZygwLCAxMCl9YDtcbiAgICBjb25zdCBwdWJsaXNoSWQgPSBgcHVibGlzaC0ke2Fzc2V0SWR9LSR7Y29udGVudEhhc2hBbnkoW2Fzc2V0SWQsIGFzc2V0LmdlbmVyaWNEZXN0aW5hdGlvbl0pLnN1YnN0cmluZygwLCAxMCl9YDtcblxuICAgIC8vIEJ1aWxkIG5vZGUgb25seSBnZXRzIGFkZGVkIG9uY2UgYmVjYXVzZSB0aGV5IGFyZSBhbGwgdGhlIHNhbWVcbiAgICBpZiAoIXRoaXMuZ3JhcGgudHJ5R2V0Tm9kZShidWlsZElkKSkge1xuICAgICAgY29uc3Qgbm9kZTogQXNzZXRCdWlsZE5vZGUgPSB7XG4gICAgICAgIHR5cGU6ICdhc3NldC1idWlsZCcsXG4gICAgICAgIGlkOiBidWlsZElkLFxuICAgICAgICBub3RlOiBhc3NldElkLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IG5ldyBTZXQoW1xuICAgICAgICAgIC4uLnRoaXMuc3RhY2tBcnRpZmFjdElkcyhhc3NldE1hbmlmZXN0QXJ0aWZhY3QuZGVwZW5kZW5jaWVzKSxcbiAgICAgICAgICAvLyBJZiB3ZSBkaXNhYmxlIHByZWJ1aWxkLCB0aGVuIGFzc2V0cyBpbmhlcml0IChzdGFjaykgZGVwZW5kZW5jaWVzIGZyb20gdGhlaXIgcGFyZW50IHN0YWNrXG4gICAgICAgICAgLi4uIXRoaXMucHJlYnVpbGRBc3NldHMgPyB0aGlzLnN0YWNrQXJ0aWZhY3RJZHMob25seVN0YWNrcyhwYXJlbnRTdGFjay5kZXBlbmRlbmNpZXMpKSA6IFtdLFxuICAgICAgICBdKSxcbiAgICAgICAgcGFyZW50U3RhY2s6IHBhcmVudFN0YWNrLFxuICAgICAgICBhc3NldE1hbmlmZXN0QXJ0aWZhY3QsXG4gICAgICAgIGFzc2V0TWFuaWZlc3QsXG4gICAgICAgIGFzc2V0LFxuICAgICAgICBkZXBsb3ltZW50U3RhdGU6IERlcGxveW1lbnRTdGF0ZS5QRU5ESU5HLFxuICAgICAgICBwcmlvcml0eTogV29ya0dyYXBoQnVpbGRlci5QUklPUklUSUVTWydhc3NldC1idWlsZCddLFxuICAgICAgfTtcbiAgICAgIHRoaXMuZ3JhcGguYWRkTm9kZXMobm9kZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcHVibGlzaE5vZGUgPSB0aGlzLmdyYXBoLnRyeUdldE5vZGUocHVibGlzaElkKTtcbiAgICBpZiAoIXB1Ymxpc2hOb2RlKSB7XG4gICAgICB0aGlzLmdyYXBoLmFkZE5vZGVzKHtcbiAgICAgICAgdHlwZTogJ2Fzc2V0LXB1Ymxpc2gnLFxuICAgICAgICBpZDogcHVibGlzaElkLFxuICAgICAgICBub3RlOiBgJHthc3NldC5pZH1gLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IG5ldyBTZXQoW1xuICAgICAgICAgIGJ1aWxkSWQsXG4gICAgICAgIF0pLFxuICAgICAgICBwYXJlbnRTdGFjayxcbiAgICAgICAgYXNzZXRNYW5pZmVzdEFydGlmYWN0LFxuICAgICAgICBhc3NldE1hbmlmZXN0LFxuICAgICAgICBhc3NldCxcbiAgICAgICAgZGVwbG95bWVudFN0YXRlOiBEZXBsb3ltZW50U3RhdGUuUEVORElORyxcbiAgICAgICAgcHJpb3JpdHk6IFdvcmtHcmFwaEJ1aWxkZXIuUFJJT1JJVElFU1snYXNzZXQtcHVibGlzaCddLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpbmhlcml0ZWREZXAgb2YgdGhpcy5zdGFja0FydGlmYWN0SWRzKG9ubHlTdGFja3MocGFyZW50U3RhY2suZGVwZW5kZW5jaWVzKSkpIHtcbiAgICAgIC8vIFRoZSBhc3NldCBwdWJsaXNoIHN0ZXAgYWxzbyBkZXBlbmRzIG9uIHRoZSBzdGFja3MgdGhhdCB0aGUgcGFyZW50IGRlcGVuZHMgb24uXG4gICAgICAvLyBUaGlzIGlzIHB1cmVseSBjb3NtZXRpYzogaWYgd2UgZG9uJ3QgZG8gdGhpcywgdGhlIHByb2dyZXNzIHByaW50aW5nIG9mIGFzc2V0IHB1Ymxpc2hpbmdcbiAgICAgIC8vIGlzIGdvaW5nIHRvIGludGVyZmVyZSB3aXRoIHRoZSBwcm9ncmVzcyBiYXIgb2YgdGhlIHN0YWNrIGRlcGxveW1lbnQuIFdlIGNvdWxkIHJlbW92ZSB0aGlzXG4gICAgICAvLyBmb3Igb3ZlcmFsbCBmYXN0ZXIgZGVwbG95bWVudHMgaWYgd2UgZXZlciBoYXZlIGEgYmV0dGVyIG1ldGhvZCBvZiBwcm9ncmVzcyBkaXNwbGF5aW5nLlxuICAgICAgLy8gTm90ZTogdGhpcyBtYXkgaW50cm9kdWNlIGEgY3ljbGUgaWYgb25lIG9mIHRoZSBwYXJlbnQncyBkZXBlbmRlbmNpZXMgaXMgYW5vdGhlciBzdGFjayB0aGF0XG4gICAgICAvLyBkZXBlbmRzIG9uIHRoaXMgYXNzZXQuIFRvIHdvcmthcm91bmQgdGhpcyB3ZSByZW1vdmUgdGhlc2UgY3ljbGVzIG9uY2UgYWxsIG5vZGVzIGhhdmVcbiAgICAgIC8vIGJlZW4gYWRkZWQgdG8gdGhlIGdyYXBoLlxuICAgICAgdGhpcy5ncmFwaC5hZGREZXBlbmRlbmN5KHB1Ymxpc2hJZCwgaW5oZXJpdGVkRGVwKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIHdpbGwgd29yayB3aGV0aGVyIHRoZSBzdGFjayBub2RlIGhhcyBiZWVuIGFkZGVkIHlldCBvciBub3RcbiAgICB0aGlzLmdyYXBoLmFkZERlcGVuZGVuY3koYCR7dGhpcy5pZFByZWZpeH0ke3BhcmVudFN0YWNrLmlkfWAsIHB1Ymxpc2hJZCk7XG4gIH1cblxuICBwdWJsaWMgYnVpbGQoYXJ0aWZhY3RzOiBjeGFwaS5DbG91ZEFydGlmYWN0W10pOiBXb3JrR3JhcGgge1xuICAgIGNvbnN0IHBhcmVudFN0YWNrcyA9IHN0YWNrc0Zyb21Bc3NldHMoYXJ0aWZhY3RzKTtcblxuICAgIGZvciAoY29uc3QgYXJ0aWZhY3Qgb2YgYXJ0aWZhY3RzKSB7XG4gICAgICBpZiAoY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LmlzQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0KGFydGlmYWN0KSkge1xuICAgICAgICB0aGlzLmFkZFN0YWNrKGFydGlmYWN0KTtcbiAgICAgIH0gZWxzZSBpZiAoY3hhcGkuQXNzZXRNYW5pZmVzdEFydGlmYWN0LmlzQXNzZXRNYW5pZmVzdEFydGlmYWN0KGFydGlmYWN0KSkge1xuICAgICAgICBjb25zdCBtYW5pZmVzdCA9IEFzc2V0TWFuaWZlc3QuZnJvbUZpbGUoYXJ0aWZhY3QuZmlsZSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBtYW5pZmVzdC5lbnRyaWVzKSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50U3RhY2sgPSBwYXJlbnRTdGFja3MuZ2V0KGFydGlmYWN0KTtcbiAgICAgICAgICBpZiAocGFyZW50U3RhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignRm91bmQgYW4gYXNzZXQgbWFuaWZlc3QgdGhhdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgc3RhY2snKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hZGRBc3NldChwYXJlbnRTdGFjaywgYXJ0aWZhY3QsIG1hbmlmZXN0LCBlbnRyeSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY3hhcGkuTmVzdGVkQ2xvdWRBc3NlbWJseUFydGlmYWN0LmlzTmVzdGVkQ2xvdWRBc3NlbWJseUFydGlmYWN0KGFydGlmYWN0KSkge1xuICAgICAgICBjb25zdCBhc3NlbWJseSA9IG5ldyBjeGFwaS5DbG91ZEFzc2VtYmx5KGFydGlmYWN0LmZ1bGxQYXRoLCB7IHRvcG9Tb3J0OiBmYWxzZSB9KTtcbiAgICAgICAgY29uc3QgbmVzdGVkR3JhcGggPSBuZXcgV29ya0dyYXBoQnVpbGRlcihcbiAgICAgICAgICB7IGlvSG9zdDogdGhpcy5pb0hvc3QsIGFjdGlvbjogdGhpcy5hY3Rpb24gfSxcbiAgICAgICAgICB0aGlzLnByZWJ1aWxkQXNzZXRzLFxuICAgICAgICAgIGAke3RoaXMuaWRQcmVmaXh9JHthcnRpZmFjdC5pZH0uYCxcbiAgICAgICAgKS5idWlsZChhc3NlbWJseS5hcnRpZmFjdHMpO1xuICAgICAgICB0aGlzLmdyYXBoLmFic29yYihuZXN0ZWRHcmFwaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZ25vcmUgd2hhdGV2ZXIgZWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZ3JhcGgucmVtb3ZlVW5hdmFpbGFibGVEZXBlbmRlbmNpZXMoKTtcblxuICAgIC8vIFJlbW92ZSBhbnkgcG90ZW50aWFsbHkgaW50cm9kdWNlZCBjeWNsZXMgYmV0d2VlbiBhc3NldCBwdWJsaXNoaW5nIGFuZCB0aGUgc3RhY2tzIHRoYXQgZGVwZW5kIG9uIHRoZW0uXG4gICAgdGhpcy5yZW1vdmVTdGFja1B1Ymxpc2hDeWNsZXMoKTtcblxuICAgIHJldHVybiB0aGlzLmdyYXBoO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFja0FydGlmYWN0SWRzKGRlcHM6IGN4YXBpLkNsb3VkQXJ0aWZhY3RbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gZGVwcy5mbGF0TWFwKChkKSA9PiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QuaXNDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QoZCkgPyBbdGhpcy5zdGFja0FydGlmYWN0SWQoZCldIDogW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFja0FydGlmYWN0SWQoYXJ0aWZhY3Q6IGN4YXBpLkNsb3VkQXJ0aWZhY3QpOiBzdHJpbmcge1xuICAgIGlmICghY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LmlzQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0KGFydGlmYWN0KSkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgQ2FuIG9ubHkgY2FsbCB0aGlzIG9uIENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCwgZ290OiAke2FydGlmYWN0LmNvbnN0cnVjdG9yLm5hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmlkUHJlZml4fSR7YXJ0aWZhY3QuaWR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXZSBtYXkgaGF2ZSBhY2NpZGVudGFsbHkgaW50cm9kdWNlZCBjeWNsZXMgaW4gYW4gYXR0ZW1wdCB0byBtYWtlIHRoZSBtZXNzYWdlcyBwcmludGVkIHRvIHRoZVxuICAgKiBjb25zb2xlIG5vdCBpbnRlcmZlcmUgd2l0aCBlYWNoIG90aGVyIHRvbyBtdWNoLiBSZW1vdmUgdGhlbSBhZ2Fpbi5cbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlU3RhY2tQdWJsaXNoQ3ljbGVzKCkge1xuICAgIGNvbnN0IHB1Ymxpc2hTdGVwcyA9IHRoaXMuZ3JhcGgubm9kZXNPZlR5cGUoJ2Fzc2V0LXB1Ymxpc2gnKTtcbiAgICBmb3IgKGNvbnN0IHB1Ymxpc2hTdGVwIG9mIHB1Ymxpc2hTdGVwcykge1xuICAgICAgZm9yIChjb25zdCBkZXAgb2YgcHVibGlzaFN0ZXAuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIGlmICh0aGlzLmdyYXBoLnJlYWNoYWJsZShkZXAsIHB1Ymxpc2hTdGVwLmlkKSkge1xuICAgICAgICAgIHB1Ymxpc2hTdGVwLmRlcGVuZGVuY2llcy5kZWxldGUoZGVwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFja3NGcm9tQXNzZXRzKGFydGlmYWN0czogY3hhcGkuQ2xvdWRBcnRpZmFjdFtdKSB7XG4gIGNvbnN0IHJldCA9IG5ldyBNYXA8Y3hhcGkuQXNzZXRNYW5pZmVzdEFydGlmYWN0LCBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q+KCk7XG4gIGZvciAoY29uc3Qgc3RhY2sgb2YgYXJ0aWZhY3RzLmZpbHRlcih4ID0+IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdC5pc0Nsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCh4KSkpIHtcbiAgICBjb25zdCBhc3NldEFydGlmYWN0cyA9IHN0YWNrLmRlcGVuZGVuY2llcy5maWx0ZXIoKHgpID0+IGN4YXBpLkFzc2V0TWFuaWZlc3RBcnRpZmFjdC5pc0Fzc2V0TWFuaWZlc3RBcnRpZmFjdCh4KSk7XG4gICAgZm9yIChjb25zdCBhcnQgb2YgYXNzZXRBcnRpZmFjdHMpIHtcbiAgICAgIHJldC5zZXQoYXJ0LCBzdGFjayk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gb25seVN0YWNrcyhhcnRpZmFjdHM6IGN4YXBpLkNsb3VkQXJ0aWZhY3RbXSkge1xuICByZXR1cm4gYXJ0aWZhY3RzLmZpbHRlcih4ID0+IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdC5pc0Nsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCh4KSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { CloudFormationStackArtifact } from '@aws-cdk/cx-api';
|
|
2
|
+
import type { StackActivity } from '../../api/stack-events';
|
|
3
|
+
import { StackProgress } from '../../api/stack-events/stack-progress-monitor';
|
|
4
|
+
import { IoMessage } from '../../toolkit/cli-io-host';
|
|
5
|
+
export interface IActivityPrinter {
|
|
6
|
+
notify<T>(msg: IoMessage<T>): void;
|
|
7
|
+
}
|
|
8
|
+
export interface ActivityPrinterProps {
|
|
9
|
+
/**
|
|
10
|
+
* Stream to write to
|
|
11
|
+
*/
|
|
12
|
+
readonly stream: NodeJS.WriteStream;
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class ActivityPrinterBase implements IActivityPrinter {
|
|
15
|
+
protected readonly props: ActivityPrinterProps;
|
|
16
|
+
protected static readonly TIMESTAMP_WIDTH = 12;
|
|
17
|
+
protected static readonly STATUS_WIDTH = 20;
|
|
18
|
+
/**
|
|
19
|
+
* Stream to write to
|
|
20
|
+
*/
|
|
21
|
+
protected readonly stream: NodeJS.WriteStream;
|
|
22
|
+
/**
|
|
23
|
+
* The with of the "resource type" column.
|
|
24
|
+
*/
|
|
25
|
+
protected resourceTypeColumnWidth: number;
|
|
26
|
+
/**
|
|
27
|
+
* A list of resource IDs which are currently being processed
|
|
28
|
+
*/
|
|
29
|
+
protected resourcesInProgress: Record<string, StackActivity>;
|
|
30
|
+
protected stackProgress?: StackProgress;
|
|
31
|
+
protected rollingBack: boolean;
|
|
32
|
+
protected readonly failures: StackActivity[];
|
|
33
|
+
protected hookFailureMap: Map<string, Map<string, string>>;
|
|
34
|
+
constructor(props: ActivityPrinterProps);
|
|
35
|
+
protected abstract print(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Receive a stack activity message
|
|
38
|
+
*/
|
|
39
|
+
notify(msg: IoMessage<any>): void;
|
|
40
|
+
start({ stack }: {
|
|
41
|
+
stack: CloudFormationStackArtifact;
|
|
42
|
+
}): void;
|
|
43
|
+
activity(activity: StackActivity): void;
|
|
44
|
+
stop(): void;
|
|
45
|
+
protected addActivity(activity: StackActivity): void;
|
|
46
|
+
protected failureReason(activity: StackActivity): string;
|
|
47
|
+
/**
|
|
48
|
+
* Is the activity a meta activity for the stack itself.
|
|
49
|
+
*/
|
|
50
|
+
protected isActivityForTheStack(activity: StackActivity): boolean;
|
|
51
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActivityPrinterBase = void 0;
|
|
4
|
+
const util_1 = require("../../util");
|
|
5
|
+
class ActivityPrinterBase {
|
|
6
|
+
constructor(props) {
|
|
7
|
+
this.props = props;
|
|
8
|
+
/**
|
|
9
|
+
* The with of the "resource type" column.
|
|
10
|
+
*/
|
|
11
|
+
this.resourceTypeColumnWidth = (0, util_1.maxResourceTypeLength)({});
|
|
12
|
+
/**
|
|
13
|
+
* A list of resource IDs which are currently being processed
|
|
14
|
+
*/
|
|
15
|
+
this.resourcesInProgress = {};
|
|
16
|
+
this.rollingBack = false;
|
|
17
|
+
this.failures = new Array();
|
|
18
|
+
this.hookFailureMap = new Map();
|
|
19
|
+
this.stream = props.stream;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Receive a stack activity message
|
|
23
|
+
*/
|
|
24
|
+
notify(msg) {
|
|
25
|
+
switch (msg.code) {
|
|
26
|
+
case 'CDK_TOOLKIT_I5501':
|
|
27
|
+
this.start(msg.data);
|
|
28
|
+
break;
|
|
29
|
+
case 'CDK_TOOLKIT_I5502':
|
|
30
|
+
this.activity(msg.data);
|
|
31
|
+
break;
|
|
32
|
+
case 'CDK_TOOLKIT_I5503':
|
|
33
|
+
this.stop();
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
// ignore all other messages
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
start({ stack }) {
|
|
41
|
+
this.resourceTypeColumnWidth = (0, util_1.maxResourceTypeLength)(stack.template);
|
|
42
|
+
}
|
|
43
|
+
activity(activity) {
|
|
44
|
+
// process the activity and then call print
|
|
45
|
+
this.addActivity(activity);
|
|
46
|
+
this.print();
|
|
47
|
+
}
|
|
48
|
+
stop() {
|
|
49
|
+
// final print after the stack is done
|
|
50
|
+
this.print();
|
|
51
|
+
}
|
|
52
|
+
addActivity(activity) {
|
|
53
|
+
var _a, _b, _c, _d, _e;
|
|
54
|
+
const status = activity.event.ResourceStatus;
|
|
55
|
+
const hookStatus = activity.event.HookStatus;
|
|
56
|
+
const hookType = activity.event.HookType;
|
|
57
|
+
if (!status || !activity.event.LogicalResourceId) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this.stackProgress = activity.progress;
|
|
61
|
+
if (status === 'ROLLBACK_IN_PROGRESS' || status === 'UPDATE_ROLLBACK_IN_PROGRESS') {
|
|
62
|
+
// Only triggered on the stack once we've started doing a rollback
|
|
63
|
+
this.rollingBack = true;
|
|
64
|
+
}
|
|
65
|
+
if (status.endsWith('_IN_PROGRESS')) {
|
|
66
|
+
this.resourcesInProgress[activity.event.LogicalResourceId] = activity;
|
|
67
|
+
}
|
|
68
|
+
if ((0, util_1.stackEventHasErrorMessage)(status)) {
|
|
69
|
+
const isCancelled = ((_a = activity.event.ResourceStatusReason) !== null && _a !== void 0 ? _a : '').indexOf('cancelled') > -1;
|
|
70
|
+
// Cancelled is not an interesting failure reason
|
|
71
|
+
if (!isCancelled) {
|
|
72
|
+
this.failures.push(activity);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (status.endsWith('_COMPLETE') || status.endsWith('_FAILED')) {
|
|
76
|
+
delete this.resourcesInProgress[activity.event.LogicalResourceId];
|
|
77
|
+
}
|
|
78
|
+
if (hookStatus !== undefined &&
|
|
79
|
+
hookStatus.endsWith('_COMPLETE_FAILED') &&
|
|
80
|
+
activity.event.LogicalResourceId !== undefined &&
|
|
81
|
+
hookType !== undefined) {
|
|
82
|
+
if (this.hookFailureMap.has(activity.event.LogicalResourceId)) {
|
|
83
|
+
(_b = this.hookFailureMap.get(activity.event.LogicalResourceId)) === null || _b === void 0 ? void 0 : _b.set(hookType, (_c = activity.event.HookStatusReason) !== null && _c !== void 0 ? _c : '');
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.hookFailureMap.set(activity.event.LogicalResourceId, new Map());
|
|
87
|
+
(_d = this.hookFailureMap.get(activity.event.LogicalResourceId)) === null || _d === void 0 ? void 0 : _d.set(hookType, (_e = activity.event.HookStatusReason) !== null && _e !== void 0 ? _e : '');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
failureReason(activity) {
|
|
92
|
+
var _a, _b;
|
|
93
|
+
const resourceStatusReason = (_a = activity.event.ResourceStatusReason) !== null && _a !== void 0 ? _a : '';
|
|
94
|
+
const logicalResourceId = (_b = activity.event.LogicalResourceId) !== null && _b !== void 0 ? _b : '';
|
|
95
|
+
const hookFailureReasonMap = this.hookFailureMap.get(logicalResourceId);
|
|
96
|
+
if (hookFailureReasonMap !== undefined) {
|
|
97
|
+
for (const hookType of hookFailureReasonMap.keys()) {
|
|
98
|
+
if (resourceStatusReason.includes(hookType)) {
|
|
99
|
+
return resourceStatusReason + ' : ' + hookFailureReasonMap.get(hookType);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return resourceStatusReason;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Is the activity a meta activity for the stack itself.
|
|
107
|
+
*/
|
|
108
|
+
isActivityForTheStack(activity) {
|
|
109
|
+
return activity.event.PhysicalResourceId === activity.event.StackId;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.ActivityPrinterBase = ActivityPrinterBase;
|
|
113
|
+
ActivityPrinterBase.TIMESTAMP_WIDTH = 12;
|
|
114
|
+
ActivityPrinterBase.STATUS_WIDTH = 20;
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEscUNBQThFO0FBYTlFLE1BQXNCLG1CQUFtQjtJQTJCdkMsWUFBK0IsS0FBMkI7UUFBM0IsVUFBSyxHQUFMLEtBQUssQ0FBc0I7UUFsQjFEOztXQUVHO1FBQ08sNEJBQXVCLEdBQVcsSUFBQSw0QkFBcUIsRUFBQyxFQUFFLENBQUMsQ0FBQztRQUV0RTs7V0FFRztRQUNPLHdCQUFtQixHQUFrQyxFQUFFLENBQUM7UUFJeEQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFWCxhQUFRLEdBQUcsSUFBSSxLQUFLLEVBQWlCLENBQUM7UUFFL0MsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUdoRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUlEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEdBQW1CO1FBQy9CLFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLEtBQUssbUJBQW1CO2dCQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckIsTUFBTTtZQUNSLEtBQUssbUJBQW1CO2dCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFxQixDQUFDLENBQUM7Z0JBQ3pDLE1BQU07WUFDUixLQUFLLG1CQUFtQjtnQkFDdEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNaLE1BQU07WUFDUjtnQkFDRSw0QkFBNEI7Z0JBQzVCLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBeUM7UUFDM0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUEsNEJBQXFCLEVBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxRQUFRLENBQUMs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Q0FBSSxFQUFFLENBQUMsQ0FBQztZQUNsSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFUyxhQUFhLENBQUMsUUFBdUI7O1FBQzdDLE1BQU0sb0JBQW9CLEdBQUcsTUFBQSxRQUFRLENBQUMsS0FBSyxDQUFDLG9CQUFvQixtQ0FBSSxFQUFFLENBQUM7UUFDdkUsTUFBTSxpQkFBaUIsR0FBRyxNQUFBLFFBQVEsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLG1DQUFJLEVBQUUsQ0FBQztRQUNqRSxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFeEUsSUFBSSxvQkFBb0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2QyxLQUFLLE1BQU0sUUFBUSxJQUFJLG9CQUFvQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ25ELElBQUksb0JBQW9CLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQzVDLE9BQU8sb0JBQW9CLEdBQUcsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0UsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxxQkFBcUIsQ0FBQyxRQUF1QjtRQUNyRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDdEUsQ0FBQzs7QUF2SUgsa0RBd0lDO0FBdkkyQixtQ0FBZSxHQUFHLEVBQUUsQUFBTCxDQUFNO0FBQ3JCLGdDQUFZLEdBQUcsRUFBRSxBQUFMLENBQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QgfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHR5cGUgeyBTdGFja0FjdGl2aXR5IH0gZnJvbSAnLi4vLi4vYXBpL3N0YWNrLWV2ZW50cyc7XG5pbXBvcnQgeyBTdGFja1Byb2dyZXNzIH0gZnJvbSAnLi4vLi4vYXBpL3N0YWNrLWV2ZW50cy9zdGFjay1wcm9ncmVzcy1tb25pdG9yJztcbmltcG9ydCB7IElvTWVzc2FnZSB9IGZyb20gJy4uLy4uL3Rvb2xraXQvY2xpLWlvLWhvc3QnO1xuaW1wb3J0IHsgbWF4UmVzb3VyY2VUeXBlTGVuZ3RoLCBzdGFja0V2ZW50SGFzRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFjdGl2aXR5UHJpbnRlciB7XG4gIG5vdGlmeTxUPihtc2c6IElvTWVzc2FnZTxUPik6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZpdHlQcmludGVyUHJvcHMge1xuICAvKipcbiAgICogU3RyZWFtIHRvIHdyaXRlIHRvXG4gICAqL1xuICByZWFkb25seSBzdHJlYW06IE5vZGVKUy5Xcml0ZVN0cmVhbTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjdGl2aXR5UHJpbnRlckJhc2UgaW1wbGVtZW50cyBJQWN0aXZpdHlQcmludGVyIHtcbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBUSU1FU1RBTVBfV0lEVEggPSAxMjtcbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBTVEFUVVNfV0lEVEggPSAyMDtcblxuICAvKipcbiAgICogU3RyZWFtIHRvIHdyaXRlIHRvXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RyZWFtOiBOb2RlSlMuV3JpdGVTdHJlYW07XG5cbiAgLyoqXG4gICAqIFRoZSB3aXRoIG9mIHRoZSBcInJlc291cmNlIHR5cGVcIiBjb2x1bW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VUeXBlQ29sdW1uV2lkdGg6IG51bWJlciA9IG1heFJlc291cmNlVHlwZUxlbmd0aCh7fSk7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiByZXNvdXJjZSBJRHMgd2hpY2ggYXJlIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWRcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZXNJblByb2dyZXNzOiBSZWNvcmQ8c3RyaW5nLCBTdGFja0FjdGl2aXR5PiA9IHt9O1xuXG4gIHByb3RlY3RlZCBzdGFja1Byb2dyZXNzPzogU3RhY2tQcm9ncmVzcztcblxuICBwcm90ZWN0ZWQgcm9sbGluZ0JhY2sgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFpbHVyZXMgPSBuZXcgQXJyYXk8U3RhY2tBY3Rpdml0eT4oKTtcblxuICBwcm90ZWN0ZWQgaG9va0ZhaWx1cmVNYXAgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvcHM6IEFjdGl2aXR5UHJpbnRlclByb3BzKSB7XG4gICAgdGhpcy5zdHJlYW0gPSBwcm9wcy5zdHJlYW07XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcHJpbnQoKTogdm9pZDtcblxuICAvKipcbiAgICogUmVjZWl2ZSBhIHN0YWNrIGFjdGl2aXR5IG1lc3NhZ2VcbiAgICovXG4gIHB1YmxpYyBub3RpZnkobXNnOiBJb01lc3NhZ2U8YW55Pik6IHZvaWQge1xuICAgIHN3aXRjaCAobXNnLmNvZGUpIHtcbiAgICAgIGNhc2UgJ0NES19UT09MS0lUX0k1NTAxJzpcbiAgICAgICAgdGhpcy5zdGFydChtc2cuZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0RLX1RPT0xLSVRfSTU1MDInOlxuICAgICAgICB0aGlzLmFjdGl2aXR5KG1zZy5kYXRhIGFzIFN0YWNrQWN0aXZpdHkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NES19UT09MS0lUX0k1NTAzJzpcbiAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gaWdub3JlIGFsbCBvdGhlciBtZXNzYWdlc1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhcnQoeyBzdGFjayB9OiB7IHN0YWNrOiBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3R9KSB7XG4gICAgdGhpcy5yZXNvdXJjZVR5cGVDb2x1bW5XaWR0aCA9IG1heFJlc291cmNlVHlwZUxlbmd0aChzdGFjay50ZW1wbGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZpdHkoYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICAvLyBwcm9jZXNzIHRoZSBhY3Rpdml0eSBhbmQgdGhlbiBjYWxsIHByaW50XG4gICAgdGhpcy5hZGRBY3Rpdml0eShhY3Rpdml0eSk7XG4gICAgdGhpcy5wcmludCgpO1xuICB9XG5cbiAgcHVibGljIHN0b3AoKSB7XG4gICAgLy8gZmluYWwgcHJpbnQgYWZ0ZXIgdGhlIHN0YWNrIGlzIGRvbmVcbiAgICB0aGlzLnByaW50KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkQWN0aXZpdHkoYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICBjb25zdCBzdGF0dXMgPSBhY3Rpdml0eS5ldmVudC5SZXNvdXJjZVN0YXR1cztcbiAgICBjb25zdCBob29rU3RhdHVzID0gYWN0aXZpdHkuZXZlbnQuSG9va1N0YXR1cztcbiAgICBjb25zdCBob29rVHlwZSA9IGFjdGl2aXR5LmV2ZW50Lkhvb2tUeXBlO1xuICAgIGlmICghc3RhdHVzIHx8ICFhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhY2tQcm9ncmVzcyA9IGFjdGl2aXR5LnByb2dyZXNzO1xuXG4gICAgaWYgKHN0YXR1cyA9PT0gJ1JPTExCQUNLX0lOX1BST0dSRVNTJyB8fCBzdGF0dXMgPT09ICdVUERBVEVfUk9MTEJBQ0tfSU5fUFJPR1JFU1MnKSB7XG4gICAgICAvLyBPbmx5IHRyaWdnZXJlZCBvbiB0aGUgc3RhY2sgb25jZSB3ZSd2ZSBzdGFydGVkIGRvaW5nIGEgcm9sbGJhY2tcbiAgICAgIHRoaXMucm9sbGluZ0JhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0dXMuZW5kc1dpdGgoJ19JTl9QUk9HUkVTUycpKSB7XG4gICAgICB0aGlzLnJlc291cmNlc0luUHJvZ3Jlc3NbYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWRdID0gYWN0aXZpdHk7XG4gICAgfVxuXG4gICAgaWYgKHN0YWNrRXZlbnRIYXNFcnJvck1lc3NhZ2Uoc3RhdHVzKSkge1xuICAgICAgY29uc3QgaXNDYW5jZWxsZWQgPSAoYWN0aXZpdHkuZXZlbnQuUmVzb3VyY2VTdGF0dXNSZWFzb24gPz8gJycpLmluZGV4T2YoJ2NhbmNlbGxlZCcpID4gLTE7XG5cbiAgICAgIC8vIENhbmNlbGxlZCBpcyBub3QgYW4gaW50ZXJlc3RpbmcgZmFpbHVyZSByZWFzb25cbiAgICAgIGlmICghaXNDYW5jZWxsZWQpIHtcbiAgICAgICAgdGhpcy5mYWlsdXJlcy5wdXNoKGFjdGl2aXR5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdHVzLmVuZHNXaXRoKCdfQ09NUExFVEUnKSB8fCBzdGF0dXMuZW5kc1dpdGgoJ19GQUlMRUQnKSkge1xuICAgICAgZGVsZXRlIHRoaXMucmVzb3VyY2VzSW5Qcm9ncmVzc1thY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZF07XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgaG9va1N0YXR1cyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGhvb2tTdGF0dXMuZW5kc1dpdGgoJ19DT01QTEVURV9GQUlMRUQnKSAmJlxuICAgICAgICBhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGhvb2tUeXBlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLmhvb2tGYWlsdXJlTWFwLmhhcyhhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCkpIHtcbiAgICAgICAgdGhpcy5ob29rRmFpbHVyZU1hcC5nZXQoYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWQpPy5zZXQoaG9va1R5cGUsIGFjdGl2aXR5LmV2ZW50Lkhvb2tTdGF0dXNSZWFzb24gPz8gJycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ob29rRmFpbHVyZU1hcC5zZXQoYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWQsIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpO1xuICAgICAgICB0aGlzLmhvb2tGYWlsdXJlTWFwLmdldChhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCk/LnNldChob29rVHlwZSwgYWN0aXZpdHkuZXZlbnQuSG9va1N0YXR1c1JlYXNvbiA/PyAnJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGZhaWx1cmVSZWFzb24oYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICBjb25zdCByZXNvdXJjZVN0YXR1c1JlYXNvbiA9IGFjdGl2aXR5LmV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uID8/ICcnO1xuICAgIGNvbnN0IGxvZ2ljYWxSZXNvdXJjZUlkID0gYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWQgPz8gJyc7XG4gICAgY29uc3QgaG9va0ZhaWx1cmVSZWFzb25NYXAgPSB0aGlzLmhvb2tGYWlsdXJlTWFwLmdldChsb2dpY2FsUmVzb3VyY2VJZCk7XG5cbiAgICBpZiAoaG9va0ZhaWx1cmVSZWFzb25NYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBob29rVHlwZSBvZiBob29rRmFpbHVyZVJlYXNvbk1hcC5rZXlzKCkpIHtcbiAgICAgICAgaWYgKHJlc291cmNlU3RhdHVzUmVhc29uLmluY2x1ZGVzKGhvb2tUeXBlKSkge1xuICAgICAgICAgIHJldHVybiByZXNvdXJjZVN0YXR1c1JlYXNvbiArICcgOiAnICsgaG9va0ZhaWx1cmVSZWFzb25NYXAuZ2V0KGhvb2tUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VTdGF0dXNSZWFzb247XG4gIH1cblxuICAvKipcbiAgICogSXMgdGhlIGFjdGl2aXR5IGEgbWV0YSBhY3Rpdml0eSBmb3IgdGhlIHN0YWNrIGl0c2VsZi5cbiAgICovXG4gIHByb3RlY3RlZCBpc0FjdGl2aXR5Rm9yVGhlU3RhY2soYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICByZXR1cm4gYWN0aXZpdHkuZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkID09PSBhY3Rpdml0eS5ldmVudC5TdGFja0lkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ActivityPrinterBase, ActivityPrinterProps } from './base';
|
|
2
|
+
/**
|
|
3
|
+
* Activity Printer which shows the resources currently being updated
|
|
4
|
+
*
|
|
5
|
+
* It will continuously re-update the terminal and show only the resources
|
|
6
|
+
* that are currently being updated, in addition to a progress bar which
|
|
7
|
+
* shows how far along the deployment is.
|
|
8
|
+
*
|
|
9
|
+
* Resources that have failed will always be shown, and will be recapitulated
|
|
10
|
+
* along with their stack trace when the monitoring ends.
|
|
11
|
+
*
|
|
12
|
+
* Resources that failed deployment because they have been cancelled are
|
|
13
|
+
* not included.
|
|
14
|
+
*/
|
|
15
|
+
export declare class CurrentActivityPrinter extends ActivityPrinterBase {
|
|
16
|
+
/**
|
|
17
|
+
* Continuously write to the same output block.
|
|
18
|
+
*/
|
|
19
|
+
private block;
|
|
20
|
+
constructor(props: ActivityPrinterProps);
|
|
21
|
+
protected print(): void;
|
|
22
|
+
stop(): void;
|
|
23
|
+
private progressBar;
|
|
24
|
+
private failureReasonOnNextLine;
|
|
25
|
+
}
|