@aws-cdk/toolkit-lib 1.27.0 → 1.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/actions/validate/index.d.ts +10 -0
- package/lib/actions/validate/index.js +1 -1
- package/lib/api/bootstrap/deploy-bootstrap.js +2 -1
- package/lib/api/cloud-assembly/environment.js +16 -4
- package/lib/api/deployments/cfn-api.d.ts +24 -6
- package/lib/api/deployments/cfn-api.js +81 -33
- package/lib/api/deployments/deploy-stack.js +8 -1
- package/lib/api/deployments/deployment-result.d.ts +6 -0
- package/lib/api/deployments/deployment-result.js +1 -1
- package/lib/api/hotswap/hotswap-deployments.js +2 -1
- package/lib/api/hotswap/lambda-functions.js +3 -33
- package/lib/api/io/private/index.d.ts +1 -0
- package/lib/api/io/private/index.js +2 -1
- package/lib/api/io/private/messages.d.ts +1 -0
- package/lib/api/io/private/messages.js +8 -4
- package/lib/api/io/private/span.d.ts +6 -0
- package/lib/api/io/private/span.js +10 -3
- package/lib/api/stack-events/stack-activity-monitor.d.ts +13 -1
- package/lib/api/stack-events/stack-activity-monitor.js +12 -2
- package/lib/api/stack-events/stack-event-poller.d.ts +7 -0
- package/lib/api/stack-events/stack-event-poller.js +20 -1
- package/lib/api/validate/validate-formatting.d.ts +5 -0
- package/lib/api/validate/validate-formatting.js +127 -0
- package/lib/api/work-graph/work-graph-builder.d.ts +3 -0
- package/lib/api/work-graph/work-graph-builder.js +38 -3
- package/lib/api/work-graph/work-graph-types.d.ts +19 -7
- package/lib/api/work-graph/work-graph-types.js +1 -1
- package/lib/api/work-graph/work-graph.d.ts +2 -1
- package/lib/api/work-graph/work-graph.js +8 -1
- package/lib/index_bg.wasm +0 -0
- package/lib/payloads/stack-activity.d.ts +6 -0
- package/lib/payloads/stack-activity.js +1 -1
- package/lib/private/activity-printer/base.d.ts +7 -1
- package/lib/private/activity-printer/base.js +16 -2
- package/lib/private/activity-printer/current.js +12 -6
- package/lib/private/activity-printer/history.js +15 -12
- package/lib/private/tools.d.ts +2 -0
- package/lib/private/tools.js +120 -0
- package/lib/private/tools.js.plain +21 -0
- package/lib/toolkit/toolkit.d.ts +2 -1
- package/lib/toolkit/toolkit.js +104 -19
- package/lib/toolkit/types.d.ts +30 -0
- package/lib/toolkit/types.js +1 -1
- package/lib/util/index.d.ts +0 -1
- package/lib/util/index.js +1 -2
- package/package.json +15 -13
- package/lib/util/archive.d.ts +0 -2
- package/lib/util/archive.js +0 -86
package/lib/toolkit/types.d.ts
CHANGED
|
@@ -49,6 +49,36 @@ export interface DeployedStack extends PhysicalStack {
|
|
|
49
49
|
readonly outputs: {
|
|
50
50
|
[key: string]: string;
|
|
51
51
|
};
|
|
52
|
+
/**
|
|
53
|
+
* Resources that CloudFormation failed to delete during the stack update
|
|
54
|
+
*
|
|
55
|
+
* When a resource replacement or removal triggers a delete that fails,
|
|
56
|
+
* CloudFormation skips the deletion and completes the update anyway. These
|
|
57
|
+
* resources are no longer managed by CloudFormation but still exist and may
|
|
58
|
+
* incur charges.
|
|
59
|
+
*/
|
|
60
|
+
readonly deleteFailures: ResourceDeleteFailure[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A resource that CloudFormation failed to delete during a stack update
|
|
64
|
+
*/
|
|
65
|
+
export interface ResourceDeleteFailure {
|
|
66
|
+
/**
|
|
67
|
+
* The logical ID of the resource in the CloudFormation template
|
|
68
|
+
*/
|
|
69
|
+
readonly logicalResourceId: string;
|
|
70
|
+
/**
|
|
71
|
+
* The physical ID of the resource (e.g. an ARN or name)
|
|
72
|
+
*/
|
|
73
|
+
readonly physicalResourceId?: string;
|
|
74
|
+
/**
|
|
75
|
+
* The CloudFormation resource type (e.g. AWS::S3::Bucket)
|
|
76
|
+
*/
|
|
77
|
+
readonly resourceType: string;
|
|
78
|
+
/**
|
|
79
|
+
* The reason CloudFormation gave for the deletion failure
|
|
80
|
+
*/
|
|
81
|
+
readonly reason: string;
|
|
52
82
|
}
|
|
53
83
|
/**
|
|
54
84
|
* An environment, which is an (account, region) pair
|
package/lib/toolkit/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUgYSBwaHlzaWNhbGx5IGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGh5c2ljYWxTdGFjazxBcm4gZXh0ZW5kcyAnYXJuUmVxdWlyZWQnIHwgJ2Fybk9wdGlvbmFsJyA9ICdhcm5SZXF1aXJlZCc+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUgYSBwaHlzaWNhbGx5IGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGh5c2ljYWxTdGFjazxBcm4gZXh0ZW5kcyAnYXJuUmVxdWlyZWQnIHwgJ2Fybk9wdGlvbmFsJyA9ICdhcm5SZXF1aXJlZCc+IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKlxuICAgKiBBIHN0YWNrIG5hbWUgaXMgdW5pcXVlIGluc2lkZSBpdHMgZW52aXJvbm1lbnQsIGJ1dCBub3QgdW5pcXVlIGdsb2JhbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBvZiB0aGUgc3RhY2tcbiAgICpcbiAgICogVGhpcyBlbnZpcm9ubWVudCBpcyBhbHdheXMgY29uY3JldGUsIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlIENESyBhcHAnc1xuICAgKiBzdGFjayBtYXkgYmUgcmVnaW9uLWFnbm9zdGljLCBpbiBvcmRlciB0byBiZSBkZXBsb3llZCBpdCB3aWxsIGhhdmUgdG8gaGF2ZVxuICAgKiBiZWVuIHNwZWNpYWxpemVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tBcm46IEFybiBleHRlbmRzICdhcm5PcHRpb25hbCcgPyBzdHJpbmcgfCB1bmRlZmluZWQgOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IGludGVyZmFjZSBmb3IgdG9vbGtpdC5kZXBsb3kgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlcGxveWVkIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IERlcGxveWVkU3RhY2tbXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95ZWRTdGFjayBleHRlbmRzIFBoeXNpY2FsU3RhY2sge1xuICAvKipcbiAgICogSGllcmFyY2hpY2FsIGlkZW50aWZpZXJcbiAgICpcbiAgICogVGhpcyB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBzdGFjayBpbnNpZGUgdGhlIENESyBhcHAuXG4gICAqXG4gICAqIEluIHByYWN0aWNlIHRoaXMgd2lsbCBiZSB0aGUgc3RhY2sncyBjb25zdHJ1Y3QgcGF0aCwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlXG4gICAqIENsb3VkIEFzc2VtYmx5IGNvbnRyYWN0IGRvZXNuJ3QgcmVxdWlyZSBvciBndWFyYW50ZWUgdGhhdC5cbiAgICovXG4gIHJlYWRvbmx5IGhpZXJhcmNoaWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXRzIG9mIHRoZSBkZXBsb3llZCBDbG91ZEZvcm1hdGlvbiBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogUmVzb3VyY2VzIHRoYXQgQ2xvdWRGb3JtYXRpb24gZmFpbGVkIHRvIGRlbGV0ZSBkdXJpbmcgdGhlIHN0YWNrIHVwZGF0ZVxuICAgKlxuICAgKiBXaGVuIGEgcmVzb3VyY2UgcmVwbGFjZW1lbnQgb3IgcmVtb3ZhbCB0cmlnZ2VycyBhIGRlbGV0ZSB0aGF0IGZhaWxzLFxuICAgKiBDbG91ZEZvcm1hdGlvbiBza2lwcyB0aGUgZGVsZXRpb24gYW5kIGNvbXBsZXRlcyB0aGUgdXBkYXRlIGFueXdheS4gVGhlc2VcbiAgICogcmVzb3VyY2VzIGFyZSBubyBsb25nZXIgbWFuYWdlZCBieSBDbG91ZEZvcm1hdGlvbiBidXQgc3RpbGwgZXhpc3QgYW5kIG1heVxuICAgKiBpbmN1ciBjaGFyZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlRmFpbHVyZXM6IFJlc291cmNlRGVsZXRlRmFpbHVyZVtdO1xufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdGhhdCBDbG91ZEZvcm1hdGlvbiBmYWlsZWQgdG8gZGVsZXRlIGR1cmluZyBhIHN0YWNrIHVwZGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlRGVsZXRlRmFpbHVyZSB7XG4gIC8qKlxuICAgKiBUaGUgbG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsUmVzb3VyY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIChlLmcuIGFuIEFSTiBvciBuYW1lKVxuICAgKi9cbiAgcmVhZG9ubHkgcGh5c2ljYWxSZXNvdXJjZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSAoZS5nLiBBV1M6OlMzOjpCdWNrZXQpXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlYXNvbiBDbG91ZEZvcm1hdGlvbiBnYXZlIGZvciB0aGUgZGVsZXRpb24gZmFpbHVyZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gZW52aXJvbm1lbnQsIHdoaWNoIGlzIGFuIChhY2NvdW50LCByZWdpb24pIHBhaXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3VsdCBpbnRlcmZhY2UgZm9yIHRvb2xraXQuZGVzdHJveSBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0cm95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlc3Ryb3llZCBieSB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tzOiBEZXN0cm95ZWRTdGFja1tdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgdGFyZ2V0ZWQgYnkgYSBkZXN0cm95IG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3llZFN0YWNrIGV4dGVuZHMgUGh5c2ljYWxTdGFjazwnYXJuT3B0aW9uYWwnPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdGFjayBleGlzdGVkIHRvIGJlZ2luIHdpdGhcbiAgICpcbiAgICogSWYgYCFzdGFja0V4aXN0ZWRgLCB0aGUgc3RhY2sgZGlkbid0IGV4aXN0LCB3YXNuJ3QgZGVsZXRlZCwgYW5kIGBzdGFja0FybmBcbiAgICogd2lsbCBiZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrRXhpc3RlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgaW50ZXJmYWNlIGZvciB0b29sa2l0LnJvbGxiYWNrIG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvbGxiYWNrUmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIHJvbGxlZCBiYWNrIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IFJvbGxlZEJhY2tTdGFja1tdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgdGFyZ2V0ZWQgYnkgYSByb2xsYmFjayBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb2xsZWRCYWNrU3RhY2sgZXh0ZW5kcyBQaHlzaWNhbFN0YWNrIHtcbiAgLyoqXG4gICAqIFdoYXQgb3BlcmF0aW9uIHdlIGRpZCBmb3IgdGhpcyBzdGFja1xuICAgKlxuICAgKiBFaXRoZXI6IHdlIGRpZCByb2xsIGl0IGJhY2ssIG9yIHdlIGRpZG4ndCBuZWVkIHRvIHJvbGwgaXQgYmFjayBiZWNhdXNlXG4gICAqIGl0IHdhcyBhbHJlYWR5IHN0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3VsdDogU3RhY2tSb2xsYmFja1Jlc3VsdDtcbn1cblxuZXhwb3J0IHR5cGUgU3RhY2tSb2xsYmFja1Jlc3VsdCA9ICdyb2xsZWQtYmFjaycgfCAnYWxyZWFkeS1zdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnIHtcbiAgcmVhZG9ubHkgbW9kdWxlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVjb21tZW5kZWRWYWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHkgdXNlclZhbHVlPzogdW5rbm93bjtcbiAgcmVhZG9ubHkgZXhwbGFuYXRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVuY29uZmlndXJlZEJlaGF2ZXNMaWtlPzogeyB2Mj86IGFueSB9O1xufVxuIl19
|
package/lib/util/index.d.ts
CHANGED
package/lib/util/index.js
CHANGED
|
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./archive"), exports);
|
|
18
17
|
__exportStar(require("./arrays"), exports);
|
|
19
18
|
__exportStar(require("./bool"), exports);
|
|
20
19
|
__exportStar(require("./bytes"), exports);
|
|
@@ -35,4 +34,4 @@ __exportStar(require("./type-brands"), exports);
|
|
|
35
34
|
__exportStar(require("./types"), exports);
|
|
36
35
|
__exportStar(require("./version-range"), exports);
|
|
37
36
|
__exportStar(require("./yaml-cfn"), exports);
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLHlDQUF1QjtBQUN2QiwwQ0FBd0I7QUFDeEIsbURBQWlDO0FBQ2pDLGlEQUErQjtBQUMvQixnREFBOEI7QUFDOUIsaURBQStCO0FBQy9CLGlEQUErQjtBQUMvQixtREFBaUM7QUFDakMseUNBQXVCO0FBQ3ZCLHdDQUFzQjtBQUN0Qiw0Q0FBMEI7QUFDMUIsNkNBQTJCO0FBQzNCLGlEQUErQjtBQUMvQiw4Q0FBNEI7QUFDNUIsd0RBQXNDO0FBQ3RDLGdEQUE4QjtBQUM5QiwwQ0FBd0I7QUFDeEIsa0RBQWdDO0FBQ2hDLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJyYXlzJztcbmV4cG9ydCAqIGZyb20gJy4vYm9vbCc7XG5leHBvcnQgKiBmcm9tICcuL2J5dGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZW50LWhhc2gnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rvcmllcyc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC1lcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL2dsb2ItbWF0Y2hlcic7XG5leHBvcnQgKiBmcm9tICcuL2d1ZXNzLWxhbmd1YWdlJztcbmV4cG9ydCAqIGZyb20gJy4vanNvbic7XG5leHBvcnQgKiBmcm9tICcuL25ldCc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJhbGxlbCc7XG5leHBvcnQgKiBmcm9tICcuL3BhY2thZ2UtaW5mbyc7XG5leHBvcnQgKiBmcm9tICcuL3NlcmlhbGl6ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZy1tYW5pcHVsYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlLWJyYW5kcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdmVyc2lvbi1yYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL3lhbWwtY2ZuJztcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -35,14 +35,15 @@
|
|
|
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.185",
|
|
39
39
|
"@aws-cdk/cli-plugin-contract": "2.182.2",
|
|
40
|
-
"@
|
|
40
|
+
"@aws-cdk/private-tools": "0.0.0",
|
|
41
|
+
"@cdklabs/eslint-plugin": "^2.0.9",
|
|
41
42
|
"@jest/environment": "^29.7.0",
|
|
42
43
|
"@jest/globals": "^29.7.0",
|
|
43
44
|
"@jest/types": "^29.6.3",
|
|
44
|
-
"@microsoft/api-extractor": "^7.58.
|
|
45
|
-
"@smithy/util-stream": "^4.6.
|
|
45
|
+
"@microsoft/api-extractor": "^7.58.8",
|
|
46
|
+
"@smithy/util-stream": "^4.6.6",
|
|
46
47
|
"@stylistic/eslint-plugin": "^3",
|
|
47
48
|
"@types/fs-extra": "^11",
|
|
48
49
|
"@types/jest": "^29.5.14",
|
|
@@ -52,14 +53,15 @@
|
|
|
52
53
|
"@types/split2": "^4.2.3",
|
|
53
54
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
54
55
|
"@typescript-eslint/parser": "^8",
|
|
55
|
-
"aws-cdk-lib": "2.
|
|
56
|
+
"aws-cdk-lib": "2.258.1",
|
|
56
57
|
"aws-sdk-client-mock": "^4.1.0",
|
|
57
58
|
"aws-sdk-client-mock-jest": "^4.1.0",
|
|
58
59
|
"commit-and-tag-version": "^12",
|
|
59
60
|
"constructs": "^10.0.0",
|
|
61
|
+
"esbuild": "^0.28.1",
|
|
60
62
|
"eslint": "^9",
|
|
61
63
|
"eslint-config-prettier": "^10.1.8",
|
|
62
|
-
"eslint-import-resolver-typescript": "^4.4.
|
|
64
|
+
"eslint-import-resolver-typescript": "^4.4.5",
|
|
63
65
|
"eslint-plugin-import": "^2.32.0",
|
|
64
66
|
"eslint-plugin-jest": "^29.15.2",
|
|
65
67
|
"eslint-plugin-jsdoc": "^62.9.0",
|
|
@@ -71,11 +73,11 @@
|
|
|
71
73
|
"jest-when": "^3.7.0",
|
|
72
74
|
"license-checker": "^25.0.1",
|
|
73
75
|
"nock": "13",
|
|
74
|
-
"nx": "^22.7.
|
|
76
|
+
"nx": "^22.7.5",
|
|
75
77
|
"prettier": "^2.8",
|
|
76
|
-
"projen": "^0.99.
|
|
78
|
+
"projen": "^0.99.73",
|
|
77
79
|
"ts-jest": "^29.4.11",
|
|
78
|
-
"tsx": "^4.22.
|
|
80
|
+
"tsx": "^4.22.4",
|
|
79
81
|
"typescript": "5.9"
|
|
80
82
|
},
|
|
81
83
|
"peerDependencies": {
|
|
@@ -84,7 +86,7 @@
|
|
|
84
86
|
"dependencies": {
|
|
85
87
|
"@aws-cdk/cdk-assets-lib": "^1",
|
|
86
88
|
"@aws-cdk/cloud-assembly-api": "2.2.5",
|
|
87
|
-
"@aws-cdk/cloud-assembly-schema": ">=
|
|
89
|
+
"@aws-cdk/cloud-assembly-schema": ">=54.3.0",
|
|
88
90
|
"@aws-cdk/cloudformation-diff": "^2",
|
|
89
91
|
"@aws-cdk/cx-api": "^2",
|
|
90
92
|
"@aws-sdk/client-appsync": "^3",
|
|
@@ -115,7 +117,7 @@
|
|
|
115
117
|
"@smithy/util-retry": "^4",
|
|
116
118
|
"@smithy/util-waiter": "^4",
|
|
117
119
|
"archiver": "^7.0.1",
|
|
118
|
-
"cdk-from-cfn": "^0.
|
|
120
|
+
"cdk-from-cfn": "^0.304.0",
|
|
119
121
|
"chalk": "^4",
|
|
120
122
|
"chokidar": "^4",
|
|
121
123
|
"fast-deep-equal": "^3.1.3",
|
|
@@ -123,7 +125,7 @@
|
|
|
123
125
|
"fs-extra": "^11",
|
|
124
126
|
"p-limit": "^3",
|
|
125
127
|
"picomatch": "^4",
|
|
126
|
-
"semver": "^7.8.
|
|
128
|
+
"semver": "^7.8.4",
|
|
127
129
|
"split2": "^4.2.0",
|
|
128
130
|
"wrap-ansi": "^7",
|
|
129
131
|
"yaml": "^1"
|
|
@@ -148,7 +150,7 @@
|
|
|
148
150
|
"publishConfig": {
|
|
149
151
|
"access": "public"
|
|
150
152
|
},
|
|
151
|
-
"version": "1.
|
|
153
|
+
"version": "1.29.0",
|
|
152
154
|
"packageManager": "yarn@4.13.0",
|
|
153
155
|
"types": "lib/index.d.ts",
|
|
154
156
|
"exports": {
|
package/lib/util/archive.d.ts
DELETED
package/lib/util/archive.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.zipDirectory = zipDirectory;
|
|
4
|
-
const console_1 = require("console");
|
|
5
|
-
const fs_1 = require("fs");
|
|
6
|
-
const path = require("path");
|
|
7
|
-
const fast_glob_1 = require("fast-glob");
|
|
8
|
-
const format_error_1 = require("./format-error");
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
10
|
-
const archiver = require('archiver');
|
|
11
|
-
// Adapted from cdk-assets
|
|
12
|
-
async function zipDirectory(directory, outputFile) {
|
|
13
|
-
// We write to a temporary file and rename at the last moment. This is so that if we are
|
|
14
|
-
// interrupted during this process, we don't leave a half-finished file in the target location.
|
|
15
|
-
const temporaryOutputFile = `${outputFile}.${randomString()}._tmp`;
|
|
16
|
-
await writeZipFile(directory, temporaryOutputFile);
|
|
17
|
-
await moveIntoPlace(temporaryOutputFile, outputFile);
|
|
18
|
-
}
|
|
19
|
-
function writeZipFile(directory, outputFile) {
|
|
20
|
-
return new Promise(async (ok, fail) => {
|
|
21
|
-
// The below options are needed to support following symlinks when building zip files:
|
|
22
|
-
// - onlyFiles: This will prevent symlinks themselves from being copied into the zip.
|
|
23
|
-
// - followSymbolicLinks: This will follow symlinks and copy the files within.
|
|
24
|
-
const globOptions = {
|
|
25
|
-
dot: true,
|
|
26
|
-
onlyFiles: true,
|
|
27
|
-
followSymbolicLinks: true,
|
|
28
|
-
cwd: directory,
|
|
29
|
-
};
|
|
30
|
-
const files = (0, fast_glob_1.globSync)('**', globOptions); // The output here is already sorted
|
|
31
|
-
const output = (0, fs_1.createWriteStream)(outputFile);
|
|
32
|
-
const archive = archiver('zip');
|
|
33
|
-
archive.on('warning', fail);
|
|
34
|
-
archive.on('error', fail);
|
|
35
|
-
// archive has been finalized and the output file descriptor has closed, resolve promise
|
|
36
|
-
// this has to be done before calling `finalize` since the events may fire immediately after.
|
|
37
|
-
// see https://www.npmjs.com/package/archiver
|
|
38
|
-
output.once('close', ok);
|
|
39
|
-
archive.pipe(output);
|
|
40
|
-
// Append files serially to ensure file order
|
|
41
|
-
for (const file of files) {
|
|
42
|
-
const fullPath = path.resolve(directory, file);
|
|
43
|
-
// Exactly 2 promises
|
|
44
|
-
// eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
|
|
45
|
-
const [data, stat] = await Promise.all([fs_1.promises.readFile(fullPath), fs_1.promises.stat(fullPath)]);
|
|
46
|
-
archive.append(data, {
|
|
47
|
-
name: file,
|
|
48
|
-
mode: stat.mode,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
await archive.finalize();
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Rename the file to the target location, taking into account:
|
|
56
|
-
*
|
|
57
|
-
* - That we may see EPERM on Windows while an Antivirus scanner still has the
|
|
58
|
-
* file open, so retry a couple of times.
|
|
59
|
-
* - This same function may be called in parallel and be interrupted at any point.
|
|
60
|
-
*/
|
|
61
|
-
async function moveIntoPlace(source, target) {
|
|
62
|
-
let delay = 100;
|
|
63
|
-
let attempts = 5;
|
|
64
|
-
while (true) {
|
|
65
|
-
try {
|
|
66
|
-
// 'rename' is guaranteed to overwrite an existing target, as long as it is a file (not a directory)
|
|
67
|
-
await fs_1.promises.rename(source, target);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
catch (e) {
|
|
71
|
-
if (e.code !== 'EPERM' || attempts-- <= 0) {
|
|
72
|
-
throw e;
|
|
73
|
-
}
|
|
74
|
-
(0, console_1.error)((0, format_error_1.formatErrorMessage)(e));
|
|
75
|
-
await sleep(Math.floor(Math.random() * delay));
|
|
76
|
-
delay *= 2;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
function sleep(ms) {
|
|
81
|
-
return new Promise(ok => setTimeout(ok, ms));
|
|
82
|
-
}
|
|
83
|
-
function randomString() {
|
|
84
|
-
return Math.random().toString(36).replace(/[^a-z0-9]+/g, '');
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFyY2hpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSxvQ0FNQztBQWpCRCxxQ0FBZ0M7QUFDaEMsMkJBQXVEO0FBQ3ZELDZCQUE2QjtBQUU3Qix5Q0FBcUM7QUFDckMsaURBQW9EO0FBRXBELGlFQUFpRTtBQUNqRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFckMsMEJBQTBCO0FBQ25CLEtBQUssVUFBVSxZQUFZLENBQUMsU0FBaUIsRUFBRSxVQUFrQjtJQUN0RSx3RkFBd0Y7SUFDeEYsK0ZBQStGO0lBQy9GLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxVQUFVLElBQUksWUFBWSxFQUFFLE9BQU8sQ0FBQztJQUNuRSxNQUFNLFlBQVksQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUNuRCxNQUFNLGFBQWEsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsU0FBaUIsRUFBRSxVQUFrQjtJQUN6RCxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDcEMsc0ZBQXNGO1FBQ3RGLHFGQUFxRjtRQUNyRiw4RUFBOEU7UUFDOUUsTUFBTSxXQUFXLEdBQVk7WUFDM0IsR0FBRyxFQUFFLElBQUk7WUFDVCxTQUFTLEVBQUUsSUFBSTtZQUNmLG1CQUFtQixFQUFFLElBQUk7WUFDekIsR0FBRyxFQUFFLFNBQVM7U0FDZixDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBQSxvQkFBUSxFQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLG9DQUFvQztRQUUvRSxNQUFNLE1BQU0sR0FBRyxJQUFBLHNCQUFpQixFQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTdDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxQix3RkFBd0Y7UUFDeEYsNkZBQTZGO1FBQzdGLDZDQUE2QztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6QixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJCLDZDQUE2QztRQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9DLHFCQUFxQjtZQUNyQix3RUFBd0U7WUFDeEUsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGFBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUNuQixJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILEtBQUssVUFBVSxhQUFhLENBQUMsTUFBYyxFQUFFLE1BQWM7SUFDekQsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixPQUFPLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDO1lBQ0gsb0dBQW9HO1lBQ3BHLE1BQU0sYUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDaEMsT0FBTztRQUNULENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sQ0FBQyxDQUFDO1lBQ1YsQ0FBQztZQUNELElBQUEsZUFBSyxFQUFDLElBQUEsaUNBQWtCLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQy9DLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxFQUFVO0lBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQVMsWUFBWTtJQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3IgfSBmcm9tICdjb25zb2xlJztcbmltcG9ydCB7IGNyZWF0ZVdyaXRlU3RyZWFtLCBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgfSBmcm9tICdmYXN0LWdsb2InO1xuaW1wb3J0IHsgZ2xvYlN5bmMgfSBmcm9tICdmYXN0LWdsb2InO1xuaW1wb3J0IHsgZm9ybWF0RXJyb3JNZXNzYWdlIH0gZnJvbSAnLi9mb3JtYXQtZXJyb3InO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3QgYXJjaGl2ZXIgPSByZXF1aXJlKCdhcmNoaXZlcicpO1xuXG4vLyBBZGFwdGVkIGZyb20gY2RrLWFzc2V0c1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHppcERpcmVjdG9yeShkaXJlY3Rvcnk6IHN0cmluZywgb3V0cHV0RmlsZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIFdlIHdyaXRlIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHJlbmFtZSBhdCB0aGUgbGFzdCBtb21lbnQuIFRoaXMgaXMgc28gdGhhdCBpZiB3ZSBhcmVcbiAgLy8gaW50ZXJydXB0ZWQgZHVyaW5nIHRoaXMgcHJvY2Vzcywgd2UgZG9uJ3QgbGVhdmUgYSBoYWxmLWZpbmlzaGVkIGZpbGUgaW4gdGhlIHRhcmdldCBsb2NhdGlvbi5cbiAgY29uc3QgdGVtcG9yYXJ5T3V0cHV0RmlsZSA9IGAke291dHB1dEZpbGV9LiR7cmFuZG9tU3RyaW5nKCl9Ll90bXBgO1xuICBhd2FpdCB3cml0ZVppcEZpbGUoZGlyZWN0b3J5LCB0ZW1wb3JhcnlPdXRwdXRGaWxlKTtcbiAgYXdhaXQgbW92ZUludG9QbGFjZSh0ZW1wb3JhcnlPdXRwdXRGaWxlLCBvdXRwdXRGaWxlKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVaaXBGaWxlKGRpcmVjdG9yeTogc3RyaW5nLCBvdXRwdXRGaWxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChvaywgZmFpbCkgPT4ge1xuICAgIC8vIFRoZSBiZWxvdyBvcHRpb25zIGFyZSBuZWVkZWQgdG8gc3VwcG9ydCBmb2xsb3dpbmcgc3ltbGlua3Mgd2hlbiBidWlsZGluZyB6aXAgZmlsZXM6XG4gICAgLy8gLSBvbmx5RmlsZXM6IFRoaXMgd2lsbCBwcmV2ZW50IHN5bWxpbmtzIHRoZW1zZWx2ZXMgZnJvbSBiZWluZyBjb3BpZWQgaW50byB0aGUgemlwLlxuICAgIC8vIC0gZm9sbG93U3ltYm9saWNMaW5rczogVGhpcyB3aWxsIGZvbGxvdyBzeW1saW5rcyBhbmQgY29weSB0aGUgZmlsZXMgd2l0aGluLlxuICAgIGNvbnN0IGdsb2JPcHRpb25zOiBPcHRpb25zID0ge1xuICAgICAgZG90OiB0cnVlLFxuICAgICAgb25seUZpbGVzOiB0cnVlLFxuICAgICAgZm9sbG93U3ltYm9saWNMaW5rczogdHJ1ZSxcbiAgICAgIGN3ZDogZGlyZWN0b3J5LFxuICAgIH07XG4gICAgY29uc3QgZmlsZXMgPSBnbG9iU3luYygnKionLCBnbG9iT3B0aW9ucyk7IC8vIFRoZSBvdXRwdXQgaGVyZSBpcyBhbHJlYWR5IHNvcnRlZFxuXG4gICAgY29uc3Qgb3V0cHV0ID0gY3JlYXRlV3JpdGVTdHJlYW0ob3V0cHV0RmlsZSk7XG5cbiAgICBjb25zdCBhcmNoaXZlID0gYXJjaGl2ZXIoJ3ppcCcpO1xuICAgIGFyY2hpdmUub24oJ3dhcm5pbmcnLCBmYWlsKTtcbiAgICBhcmNoaXZlLm9uKCdlcnJvcicsIGZhaWwpO1xuXG4gICAgLy8gYXJjaGl2ZSBoYXMgYmVlbiBmaW5hbGl6ZWQgYW5kIHRoZSBvdXRwdXQgZmlsZSBkZXNjcmlwdG9yIGhhcyBjbG9zZWQsIHJlc29sdmUgcHJvbWlzZVxuICAgIC8vIHRoaXMgaGFzIHRvIGJlIGRvbmUgYmVmb3JlIGNhbGxpbmcgYGZpbmFsaXplYCBzaW5jZSB0aGUgZXZlbnRzIG1heSBmaXJlIGltbWVkaWF0ZWx5IGFmdGVyLlxuICAgIC8vIHNlZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9hcmNoaXZlclxuICAgIG91dHB1dC5vbmNlKCdjbG9zZScsIG9rKTtcblxuICAgIGFyY2hpdmUucGlwZShvdXRwdXQpO1xuXG4gICAgLy8gQXBwZW5kIGZpbGVzIHNlcmlhbGx5IHRvIGVuc3VyZSBmaWxlIG9yZGVyXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShkaXJlY3RvcnksIGZpbGUpO1xuICAgICAgLy8gRXhhY3RseSAyIHByb21pc2VzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgICAgIGNvbnN0IFtkYXRhLCBzdGF0XSA9IGF3YWl0IFByb21pc2UuYWxsKFtmcy5yZWFkRmlsZShmdWxsUGF0aCksIGZzLnN0YXQoZnVsbFBhdGgpXSk7XG4gICAgICBhcmNoaXZlLmFwcGVuZChkYXRhLCB7XG4gICAgICAgIG5hbWU6IGZpbGUsXG4gICAgICAgIG1vZGU6IHN0YXQubW9kZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGF3YWl0IGFyY2hpdmUuZmluYWxpemUoKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuYW1lIHRoZSBmaWxlIHRvIHRoZSB0YXJnZXQgbG9jYXRpb24sIHRha2luZyBpbnRvIGFjY291bnQ6XG4gKlxuICogLSBUaGF0IHdlIG1heSBzZWUgRVBFUk0gb24gV2luZG93cyB3aGlsZSBhbiBBbnRpdmlydXMgc2Nhbm5lciBzdGlsbCBoYXMgdGhlXG4gKiAgIGZpbGUgb3Blbiwgc28gcmV0cnkgYSBjb3VwbGUgb2YgdGltZXMuXG4gKiAtIFRoaXMgc2FtZSBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIGluIHBhcmFsbGVsIGFuZCBiZSBpbnRlcnJ1cHRlZCBhdCBhbnkgcG9pbnQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG1vdmVJbnRvUGxhY2Uoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKSB7XG4gIGxldCBkZWxheSA9IDEwMDtcbiAgbGV0IGF0dGVtcHRzID0gNTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgLy8gJ3JlbmFtZScgaXMgZ3VhcmFudGVlZCB0byBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgdGFyZ2V0LCBhcyBsb25nIGFzIGl0IGlzIGEgZmlsZSAobm90IGEgZGlyZWN0b3J5KVxuICAgICAgYXdhaXQgZnMucmVuYW1lKHNvdXJjZSwgdGFyZ2V0KTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlLmNvZGUgIT09ICdFUEVSTScgfHwgYXR0ZW1wdHMtLSA8PSAwKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgICBlcnJvcihmb3JtYXRFcnJvck1lc3NhZ2UoZSkpO1xuICAgICAgYXdhaXQgc2xlZXAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZGVsYXkpKTtcbiAgICAgIGRlbGF5ICo9IDI7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKG9rID0+IHNldFRpbWVvdXQob2ssIG1zKSk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnJlcGxhY2UoL1teYS16MC05XSsvZywgJycpO1xufVxuIl19
|