aws-delivlib 13.3.3 → 13.4.2
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/.gitattributes +22 -20
- package/cdk.out/{asset.663163693e04179c71265b44a325be7e6b8c4e90b081883a1b3f3393de2546ea → asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a}/watcher-handler.d.ts +0 -0
- package/cdk.out/asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a/watcher-handler.js +108 -0
- package/cdk.out/{asset.663163693e04179c71265b44a325be7e6b8c4e90b081883a1b3f3393de2546ea → asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a}/watcher-handler.ts +0 -0
- package/cdk.out/asset.dc2e98009b027861f34e56eebb81faa5a3951ed9da80ce4a903a45de04268238/index.js +16465 -0
- package/cdk.out/cdk.out +1 -1
- package/cdk.out/delivlib-test.assets.json +9 -9
- package/cdk.out/delivlib-test.template.json +3 -3
- package/cdk.out/manifest.json +1840 -1840
- package/cdk.out/tree.json +412 -412
- package/lib/__tests__/build-spec.test.js +21 -2
- package/lib/__tests__/bump.test.js +21 -2
- package/lib/__tests__/canary.test.js +22 -3
- package/lib/__tests__/change-control-lambda/disable-transition.test.js +2 -1
- package/lib/__tests__/change-control-lambda/handler.test.js +23 -3
- package/lib/__tests__/chime-notifier.test.js +4 -3
- package/lib/__tests__/code-signing-cert.test.js +21 -2
- package/lib/__tests__/integ.delivlib.js +21 -2
- package/lib/__tests__/open-pgp-key-pair.test.js +21 -2
- package/lib/__tests__/pipeline.test.js +22 -3
- package/lib/__tests__/pr.test.js +21 -2
- package/lib/__tests__/publishing.test.js +38 -2
- package/lib/__tests__/registry-sync/ecr-mirror.test.js +21 -2
- package/lib/__tests__/registry-sync/mirror-source.test.js +21 -2
- package/lib/__tests__/shellable.test.js +22 -3
- package/lib/__tests__/test-stack.js +22 -3
- package/lib/change-control-lambda/disable-transition.js +21 -2
- package/lib/change-control-lambda/index.js +21 -2
- package/lib/change-controller.js +21 -2
- package/lib/chime-notifier/chime-notifier.js +22 -12
- package/lib/chime-notifier/chime-notifier.ts +1 -11
- package/lib/chime-notifier/{notifier-handler.d.ts → handler/notifier-handler.d.ts} +0 -0
- package/lib/chime-notifier/handler/notifier-handler.js +110 -0
- package/lib/chime-notifier/{notifier-handler.ts → handler/notifier-handler.ts} +4 -4
- package/lib/code-signing/certificate-signing-request.js +21 -2
- package/lib/code-signing/code-signing-certificate.js +21 -2
- package/lib/code-signing/private-key.js +21 -2
- package/lib/custom-resource-handlers/src/_cloud-formation.js +22 -3
- package/lib/custom-resource-handlers/src/_exec.js +22 -3
- package/lib/custom-resource-handlers/src/_rmrf.js +23 -4
- package/lib/custom-resource-handlers/src/certificate-signing-request.js +26 -7
- package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/pgp-secret.js +27 -8
- package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/private-key.js +26 -7
- package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
- package/lib/open-pgp-key-pair.js +21 -2
- package/lib/pipeline-notifications/chime.js +21 -2
- package/lib/pipeline-notifications/slack.js +21 -2
- package/lib/pipeline-watcher/handler/watcher-handler.js +21 -2
- package/lib/pipeline-watcher/watcher.js +21 -2
- package/lib/pipeline.d.ts +20 -6
- package/lib/pipeline.js +35 -10
- package/lib/pipeline.ts +34 -14
- package/lib/publishing/s3/publish.sh +2 -1
- package/lib/publishing.js +22 -3
- package/lib/pull-request/bump.js +21 -2
- package/lib/pull-request/merge-back.js +22 -3
- package/lib/pull-request/pr.js +21 -2
- package/lib/shellable.js +22 -3
- package/lib/util.js +23 -4
- package/package.json +36 -37
- package/cdk.out/asset.663163693e04179c71265b44a325be7e6b8c4e90b081883a1b3f3393de2546ea/watcher-handler.js +0 -89
- package/cdk.out/asset.d81bf2d4c389ecd69472cf4b27599e1ffbe0c1543104f45d035834e863f64ca7/index.js +0 -14129
- package/lib/chime-notifier/notifier-handler.js +0 -91
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
22
|
exports.handler = exports.cloudwatch = void 0;
|
|
4
23
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
5
|
-
const AWS = require("aws-sdk");
|
|
24
|
+
const AWS = __importStar(require("aws-sdk"));
|
|
6
25
|
// export for tests
|
|
7
26
|
exports.cloudwatch = new AWS.CloudWatch();
|
|
8
27
|
const logger = {
|
|
@@ -86,4 +105,4 @@ async function putMetric(event, value, dimensions) {
|
|
|
86
105
|
logger.log(`Calling PutMetricData with payload: ${JSON.stringify(input)}`);
|
|
87
106
|
await exports.cloudwatch.putMetricData(input).promise();
|
|
88
107
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2F0Y2hlci1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBNkQ7QUFDN0QsNkNBQStCO0FBbUIvQixtQkFBbUI7QUFDTixRQUFBLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUMvQyxNQUFNLE1BQU0sR0FBRztJQUNiLEdBQUcsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0NBQ2xELENBQUM7QUFFRjs7O0dBR0c7QUFDSSxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQWdCO0lBQzVDLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXZELFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQzVCLEtBQUssOENBQThDO1lBQUUsTUFBTSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDL0YsS0FBSyw0Q0FBNEM7WUFBRSxNQUFNLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUMsTUFBTTtRQUMxRixPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQzVFO0FBQ0gsQ0FBQztBQVJELDBCQVFDO0FBRUQsS0FBSyxVQUFVLHFCQUFxQixDQUFDLEtBQXNDO0lBQ3pFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzNDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRWpDLElBQUksS0FBYSxDQUFDO0lBQ2xCLFFBQVEsS0FBSyxFQUFFO1FBQ2IsS0FBSyxRQUFRO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDaEMsS0FBSyxXQUFXO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDbkMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsS0FBSyxvREFBb0Q7WUFDeEcscURBQXFELENBQUMsQ0FBQztLQUN4RDtJQUVELE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7S0FDMUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBR0QsS0FBSyxVQUFVLGtCQUFrQixDQUFDLEtBQW1DO0lBQ25FLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRWpDLElBQUksS0FBYSxDQUFDO0lBQ2xCLFFBQVEsS0FBSyxFQUFFO1FBQ2IsS0FBSyxRQUFRO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDaEMsS0FBSyxXQUFXO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDbkMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsS0FBSyxvREFBb0Q7WUFDeEcscURBQXFELENBQUMsQ0FBQztLQUN4RDtJQUVELE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7UUFDekMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7S0FDbEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRUQsS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFnQixFQUFFLEtBQWEsRUFBRSxVQUFxQztJQUM3RixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO0lBQ3JELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO0lBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztLQUM3RjtJQUVELE1BQU0sS0FBSyxHQUFzQztRQUMvQyxTQUFTLEVBQUUsZUFBZTtRQUMxQixVQUFVLEVBQUU7WUFDVjtnQkFDRSxVQUFVLEVBQUUsVUFBVTtnQkFDdEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osVUFBVSxFQUFFLFVBQVU7Z0JBQ3RCLFNBQVMsRUFBRSxJQUFJO2FBQ2hCO1NBQ0Y7S0FDRixDQUFDO0lBRUYsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFM0UsTUFBTSxrQkFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuXG4vLyBQYXJ0aWFsIHR5cGUgZm9yIHRoZSAnZGV0YWlsJyBzZWN0aW9uIG9mIGFuIGV2ZW50IGZyb20gQW1hem9uIEV2ZW50QnJpZGdlIGZvciAnQ29kZVBpcGVsaW5lIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnXG4vLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2V2ZW50YnJpZGdlL2xhdGVzdC91c2VyZ3VpZGUvZXZlbnQtdHlwZXMuaHRtbCNjb2RlcGlwZWxpbmUtZXZlbnQtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRpb25TdGF0ZUNoYW5nZUV2ZW50IHtcbiAgcmVhZG9ubHkgcGlwZWxpbmU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdGU6ICdTVEFSVEVEJyB8ICdDQU5DRUxFRCcgfCAnRkFJTEVEJyB8ICdTVUNDRUVERUQnO1xufVxuXG4vLyBQYXJ0aWFsIHR5cGUgZm9yIHRoZSAnZGV0YWlsJyBzZWN0aW9uIG9mIGFuIGV2ZW50IGZyb20gQW1hem9uIEV2ZW50QnJpZGdlIGZvciAnQ29kZVBpcGVsaW5lIEFjdGlvbiBFeGVjdXRpb24gU3RhdGUgQ2hhbmdlJ1xuLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ldmVudGJyaWRnZS9sYXRlc3QvdXNlcmd1aWRlL2V2ZW50LXR5cGVzLmh0bWwjY29kZXBpcGVsaW5lLWV2ZW50LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uU3RhdGVDaGFuZ2VFdmVudCBleHRlbmRzIEV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQge1xuICByZWFkb25seSBhY3Rpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTGFtYmRhRXhlY3V0aW9uU3RhdGVDaGFuZ2VFdmVudCA9IEFXU0xhbWJkYS5FdmVudEJyaWRnZUV2ZW50PCdDb2RlUGlwZWxpbmUgUGlwZWxpbmUgRXhlY3V0aW9uIFN0YXRlIENoYW5nZScsIEV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQ+O1xuZXhwb3J0IHR5cGUgTGFtYmRhQWN0aW9uU3RhdGVDaGFuZ2VFdmVudCA9IEFXU0xhbWJkYS5FdmVudEJyaWRnZUV2ZW50PCdDb2RlUGlwZWxpbmUgQWN0aW9uIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnLCBBY3Rpb25TdGF0ZUNoYW5nZUV2ZW50PjtcbmV4cG9ydCB0eXBlIEV2ZW50VHlwZSA9IExhbWJkYUV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQgfCBMYW1iZGFBY3Rpb25TdGF0ZUNoYW5nZUV2ZW50O1xuXG4vLyBleHBvcnQgZm9yIHRlc3RzXG5leHBvcnQgY29uc3QgY2xvdWR3YXRjaCA9IG5ldyBBV1MuQ2xvdWRXYXRjaCgpO1xuY29uc3QgbG9nZ2VyID0ge1xuICBsb2c6IChsaW5lOiBzdHJpbmcpID0+IHByb2Nlc3Muc3Rkb3V0LndyaXRlKGxpbmUpLFxufTtcblxuLyoqXG4gKiBMYW1iZGEgZnVuY3Rpb24gdGhhdCByZWFjdHMgdG8gYW4gQW1hem9uIEV2ZW50QnJpZGdlIGV2ZW50IHRyaWdnZXJlZCBieSBhICdDb2RlUGlwZWxpbmUgQWN0aW9uIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnLlxuICogVGhlIGhhbmRsZXIgcmVhZHMgdGhlIGV2ZW50IGFuZCBzZW5kcyBvZmYgbWV0cmljcyB0byBDbG91ZFdhdGNoLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogRXZlbnRUeXBlKSB7XG4gIGxvZ2dlci5sb2coYFJlY2VpdmVkIGV2ZW50OiAke0pTT04uc3RyaW5naWZ5KGV2ZW50KX1gKTtcblxuICBzd2l0Y2ggKGV2ZW50WydkZXRhaWwtdHlwZSddKSB7XG4gICAgY2FzZSAnQ29kZVBpcGVsaW5lIFBpcGVsaW5lIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnOiBhd2FpdCBoYW5kbGVFeGVjdXRpb25DaGFuZ2UoZXZlbnQpOyBicmVhaztcbiAgICBjYXNlICdDb2RlUGlwZWxpbmUgQWN0aW9uIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnOiBhd2FpdCBoYW5kbGVBY3Rpb25DaGFuZ2UoZXZlbnQpOyBicmVhaztcbiAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBkZXRhaWwgdHlwZSAke2V2ZW50WydkZXRhaWxsLXR5cGUnXX1gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVFeGVjdXRpb25DaGFuZ2UoZXZlbnQ6IExhbWJkYUV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQpIHtcbiAgY29uc3QgcGlwZWxpbmVOYW1lID0gZXZlbnQuZGV0YWlsLnBpcGVsaW5lO1xuICBjb25zdCBzdGF0ZSA9IGV2ZW50LmRldGFpbC5zdGF0ZTtcblxuICBsZXQgdmFsdWU6IG51bWJlcjtcbiAgc3dpdGNoIChzdGF0ZSkge1xuICAgIGNhc2UgJ0ZBSUxFRCc6IHZhbHVlID0gMTsgYnJlYWs7XG4gICAgY2FzZSAnU1VDQ0VFREVEJzogdmFsdWUgPSAwOyBicmVhaztcbiAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHN0YXRlOiAke3N0YXRlfS4gT25seSBGQUlMRUQgYW5kIFNVQ0NFRURFRCBzdGF0ZXMgYXJlIHN1cHBvcnRlZC4gYCArXG4gICAgJ090aGVycyBtdXN0IGJlIGZpbHRlcmVkIG91dCBwcmlvciB0byB0aGlzIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgYXdhaXQgcHV0TWV0cmljKGV2ZW50LCB2YWx1ZSwgW1xuICAgIHsgTmFtZTogJ1BpcGVsaW5lJywgVmFsdWU6IHBpcGVsaW5lTmFtZSB9LFxuICBdKTtcblxuICBsb2dnZXIubG9nKCdEb25lJyk7XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlQWN0aW9uQ2hhbmdlKGV2ZW50OiBMYW1iZGFBY3Rpb25TdGF0ZUNoYW5nZUV2ZW50KSB7XG4gIGNvbnN0IHBpcGVsaW5lTmFtZSA9IGV2ZW50LmRldGFpbC5waXBlbGluZTtcbiAgY29uc3QgYWN0aW9uID0gZXZlbnQuZGV0YWlsLmFjdGlvbjtcbiAgY29uc3Qgc3RhdGUgPSBldmVudC5kZXRhaWwuc3RhdGU7XG5cbiAgbGV0IHZhbHVlOiBudW1iZXI7XG4gIHN3aXRjaCAoc3RhdGUpIHtcbiAgICBjYXNlICdGQUlMRUQnOiB2YWx1ZSA9IDE7IGJyZWFrO1xuICAgIGNhc2UgJ1NVQ0NFRURFRCc6IHZhbHVlID0gMDsgYnJlYWs7XG4gICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzdGF0ZTogJHtzdGF0ZX0uIE9ubHkgRkFJTEVEIGFuZCBTVUNDRUVERUQgc3RhdGVzIGFyZSBzdXBwb3J0ZWQuIGAgK1xuICAgICdPdGhlcnMgbXVzdCBiZSBmaWx0ZXJlZCBvdXQgcHJpb3IgdG8gdGhpcyBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIGF3YWl0IHB1dE1ldHJpYyhldmVudCwgdmFsdWUsIFtcbiAgICB7IE5hbWU6ICdQaXBlbGluZScsIFZhbHVlOiBwaXBlbGluZU5hbWUgfSxcbiAgICB7IE5hbWU6ICdBY3Rpb24nLCBWYWx1ZTogYWN0aW9uIH0sXG4gIF0pO1xuXG4gIGxvZ2dlci5sb2coJ0RvbmUnKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHV0TWV0cmljKGV2ZW50OiBFdmVudFR5cGUsIHZhbHVlOiBudW1iZXIsIGRpbWVuc2lvbnM6IEFXUy5DbG91ZFdhdGNoLkRpbWVuc2lvbnMpIHtcbiAgY29uc3QgbWV0cmljTmFtZXNwYWNlID0gcHJvY2Vzcy5lbnYuTUVUUklDX05BTUVTUEFDRTtcbiAgY29uc3QgbWV0cmljTmFtZSA9IHByb2Nlc3MuZW52Lk1FVFJJQ19OQU1FO1xuICBjb25zdCB0aW1lID0gbmV3IERhdGUoZXZlbnQudGltZSk7XG5cbiAgaWYgKCFtZXRyaWNOYW1lc3BhY2UgfHwgIW1ldHJpY05hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JvdGggTUVUUklDX05BTUVTUEFDRSBhbmQgTUVUUklDX05BTUUgZW52aXJvbm1lbnQgdmFyaWFibGVzIG11c3QgYmUgc2V0LicpO1xuICB9XG5cbiAgY29uc3QgaW5wdXQ6IEFXUy5DbG91ZFdhdGNoLlB1dE1ldHJpY0RhdGFJbnB1dCA9IHtcbiAgICBOYW1lc3BhY2U6IG1ldHJpY05hbWVzcGFjZSxcbiAgICBNZXRyaWNEYXRhOiBbXG4gICAgICB7XG4gICAgICAgIE1ldHJpY05hbWU6IG1ldHJpY05hbWUsXG4gICAgICAgIFZhbHVlOiB2YWx1ZSxcbiAgICAgICAgRGltZW5zaW9uczogZGltZW5zaW9ucyxcbiAgICAgICAgVGltZXN0YW1wOiB0aW1lLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIGxvZ2dlci5sb2coYENhbGxpbmcgUHV0TWV0cmljRGF0YSB3aXRoIHBheWxvYWQ6ICR7SlNPTi5zdHJpbmdpZnkoaW5wdXQpfWApO1xuXG4gIGF3YWl0IGNsb3Vkd2F0Y2gucHV0TWV0cmljRGF0YShpbnB1dCkucHJvbWlzZSgpO1xufSJdfQ==
|
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
22
|
exports.PipelineWatcher = void 0;
|
|
4
|
-
const path = require("path");
|
|
23
|
+
const path = __importStar(require("path"));
|
|
5
24
|
const monocdk_1 = require("monocdk");
|
|
6
25
|
/**
|
|
7
26
|
* Construct which watches a Code Pipeline for failed stages and raises an alarm
|
|
@@ -67,4 +86,4 @@ class PipelineWatcher extends monocdk_1.Construct {
|
|
|
67
86
|
}
|
|
68
87
|
}
|
|
69
88
|
exports.PipelineWatcher = PipelineWatcher;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIndhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QixxQ0FRaUI7QUE0QmpCOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxtQkFBUztJQUc1QyxZQUFZLE1BQWlCLEVBQUUsSUFBWSxFQUFFLEtBQTJCO1FBQ3RFLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFcEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxvQkFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQzFELE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsT0FBTyxFQUFFLG9CQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsSUFBSSxFQUFFLG9CQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM1RCxXQUFXLEVBQUU7Z0JBQ1gsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGVBQWU7Z0JBQ3ZDLFdBQVcsRUFBRSxLQUFLLENBQUMsaUJBQWlCO2FBQ3JDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLGlCQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3RELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztZQUNoQixPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztZQUNyQyxVQUFVLEVBQUU7Z0JBQ1YsWUFBWSxFQUFFO29CQUNaLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxlQUFlO2lCQUM5QzthQUNGO1NBQ0YsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLG9CQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDL0IsWUFBWSxFQUFFO2dCQUNaLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2dCQUM1QixTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQkFDdkMsVUFBVSxFQUFFO29CQUNWLDRDQUE0QztvQkFDNUMsOENBQThDO2lCQUMvQztnQkFDRCxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQztpQkFDL0I7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLElBQUksNEJBQWMsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDOUQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHdCQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDL0MsZ0JBQWdCLEVBQUUsWUFBWSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxvQkFBb0I7WUFDNUYsTUFBTSxFQUFFLElBQUksd0JBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQzVCLFVBQVUsRUFBRSxLQUFLLENBQUMsaUJBQWlCO2dCQUNuQyxTQUFTLEVBQUUsS0FBSyxDQUFDLGVBQWU7Z0JBQ2hDLFNBQVMsRUFBRSx3QkFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPO2dCQUN2QyxVQUFVLEVBQUU7b0JBQ1YsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWTtpQkFDdEM7YUFDRixDQUFDO1lBQ0YsU0FBUyxFQUFFLENBQUM7WUFDWixrQkFBa0IsRUFBRSx3QkFBVSxDQUFDLGtCQUFrQixDQUFDLGtDQUFrQztZQUNwRixpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLDJGQUEyRjtZQUMzRixnQkFBZ0IsRUFBRSx3QkFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU07U0FDckQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBMURELDBDQTBEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3QsXG4gIGF3c19jbG91ZHdhdGNoIGFzIGNsb3Vkd2F0Y2gsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLFxuICBhd3NfZXZlbnRzIGFzIGV2ZW50cyxcbiAgYXdzX2V2ZW50c190YXJnZXRzIGFzIGV2ZW50c190YXJnZXRzLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG59IGZyb20gJ21vbm9jZGsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lV2F0Y2hlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZFdhdGNoIG1ldHJpYyBuYW1lc3BhY2UgdG8gd2hpY2ggbWV0cmljcyBzaG91bGQgYmUgc2VudFxuICAgKi9cbiAgbWV0cmljTmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBDbG91ZFdhdGNoIG1ldHJpYyBuYW1lIGZvciBmYWlsdXJlcy5cbiAgICovXG4gIGZhaWx1cmVNZXRyaWNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvZGUgUGlwZWxpbmUgdG8gbW9uaXRvciBmb3IgZmFpbGVkIHN0YWdlc1xuICAgKi9cbiAgcGlwZWxpbmU6IGNwaXBlbGluZS5JUGlwZWxpbmU7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcGlwZWxpbmVOYW1lIG9mIHRoZSBhbGFybSBkZXNjcmlwdGlvbi5cbiAgICpcbiAgICogRGVzY3JpcHRpb24gaXMgc2V0IHRvICdQaXBlbGluZSA8dGl0bGU+IGhhcyBmYWlsZWQgc3RhZ2VzJ1xuICAgKlxuICAgKiBAZGVmYXVsdCBwaXBlbGluZSdzIG5hbWVcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCB3aGljaCB3YXRjaGVzIGEgQ29kZSBQaXBlbGluZSBmb3IgZmFpbGVkIHN0YWdlcyBhbmQgcmFpc2VzIGFuIGFsYXJtXG4gKiBpZiB0aGVyZSBhcmUgYW55IGZhaWxlZCBzdGFnZXMuXG4gKlxuICogQSBmdW5jdGlvbiBydW5zIGV2ZXJ5IG1pbnV0ZSBhbmQgY2FsbHMgR2V0UGlwZWxpbmVTdGF0ZSBmb3IgdGhlIHByb3ZpZGVkIHBpcGVsaW5lJ3NcbiAqIG5hbWUsIGNvdW50cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCBzdGFnZXMgYW5kIGVtaXRzIGEgSlNPTiBsb2cgeyBmYWlsZWRDb3VudDogPG51bWJlcj4gfS5cbiAqIEEgbWV0cmljIGZpbHRlciBpcyB0aGVuIGNvbmZpZ3VyZWQgdG8gdHJhY2sgdGhpcyB2YWx1ZSBhcyBhIENsb3VkV2F0Y2ggbWV0cmljLCBhbmRcbiAqIGEgY29ycmVzcG9uZGluZyBhbGFybSBpcyBzZXQgdG8gZmlyZSB3aGVuIHRoZSBtYXhpbWltIHZhbHVlIG9mIGEgc2luZ2xlIDUtbWludXRlIGludGVydmFsXG4gKiBpcyA+PSAxLlxuICovXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVXYXRjaGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZVdhdGNoZXJQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSk7XG5cbiAgICBjb25zdCBwaXBlbGluZVdhdGNoZXIgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdQb2xsZXInLCB7XG4gICAgICBoYW5kbGVyOiAnd2F0Y2hlci1oYW5kbGVyLmhhbmRsZXInLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ2hhbmRsZXInKSksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBNRVRSSUNfTkFNRVNQQUNFOiBwcm9wcy5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgIE1FVFJJQ19OQU1FOiBwcm9wcy5mYWlsdXJlTWV0cmljTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBwaXBlbGluZVdhdGNoZXIuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICBhY3Rpb25zOiBbJ2Nsb3Vkd2F0Y2g6UHV0TWV0cmljRGF0YSddLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAnY2xvdWR3YXRjaDpuYW1lc3BhY2UnOiBwcm9wcy5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIG5ldyBldmVudHMuUnVsZSh0aGlzLCAnVHJpZ2dlcicsIHtcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBzb3VyY2U6IFsnYXdzLmNvZGVwaXBlbGluZSddLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5waXBlbGluZS5waXBlbGluZUFybl0sXG4gICAgICAgIGRldGFpbFR5cGU6IFtcbiAgICAgICAgICAnQ29kZVBpcGVsaW5lIEFjdGlvbiBFeGVjdXRpb24gU3RhdGUgQ2hhbmdlJyxcbiAgICAgICAgICAnQ29kZVBpcGVsaW5lIFBpcGVsaW5lIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnLFxuICAgICAgICBdLFxuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBzdGF0ZTogWydGQUlMRUQnLCAnU1VDQ0VFREVEJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGFyZ2V0czogW25ldyBldmVudHNfdGFyZ2V0cy5MYW1iZGFGdW5jdGlvbihwaXBlbGluZVdhdGNoZXIpXSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5BbGFybSh0aGlzLCAnQWxhcm0nLCB7XG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBgUGlwZWxpbmUgJHtwcm9wcy50aXRsZSB8fCBwcm9wcy5waXBlbGluZS5waXBlbGluZU5hbWV9IGhhcyBmYWlsZWQgc3RhZ2VzYCxcbiAgICAgIG1ldHJpYzogbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgICAgbWV0cmljTmFtZTogcHJvcHMuZmFpbHVyZU1ldHJpY05hbWUsXG4gICAgICAgIG5hbWVzcGFjZTogcHJvcHMubWV0cmljTmFtZXNwYWNlLFxuICAgICAgICBzdGF0aXN0aWM6IGNsb3Vkd2F0Y2guU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgICBQaXBlbGluZTogcHJvcHMucGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgIC8vIElHTk9SRSBtaXNzaW5nIGRhdGEsIHNvIHRoZSBhbGFybSBzdGF5cyBpbiBpdHMgY3VycmVudCBzdGF0ZSwgdW50aWwgdGhlIG5leHQgZGF0YSBwb2ludC5cbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5JR05PUkUsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/pipeline.d.ts
CHANGED
|
@@ -162,6 +162,7 @@ export declare class Pipeline extends Construct {
|
|
|
162
162
|
private readonly dryRun;
|
|
163
163
|
private readonly buildEnvironment;
|
|
164
164
|
private readonly buildSpec?;
|
|
165
|
+
private firstPublishStageName?;
|
|
165
166
|
constructor(parent: Construct, name: string, props: PipelineProps);
|
|
166
167
|
notifyOnFailure(notification: IPipelineNotification): void;
|
|
167
168
|
/**
|
|
@@ -189,12 +190,12 @@ export declare class Pipeline extends Construct {
|
|
|
189
190
|
* @param options the options to configure the change control policy.
|
|
190
191
|
*/
|
|
191
192
|
addChangeControl(options?: AddChangeControlOptions): ChangeController;
|
|
192
|
-
publishToNpm(options: publishing.PublishToNpmProjectProps): void;
|
|
193
|
-
publishToMaven(options: publishing.PublishToMavenProjectProps): void;
|
|
194
|
-
publishToNuGet(options: publishing.PublishToNuGetProjectProps): void;
|
|
195
|
-
publishToGitHubPages(options: publishing.PublishDocsToGitHubProjectProps): void;
|
|
196
|
-
publishToGitHub(options: publishing.PublishToGitHubProps): void;
|
|
197
|
-
publishToPyPI(options: publishing.PublishToPyPiProps): void;
|
|
193
|
+
publishToNpm(options: publishing.PublishToNpmProjectProps & AddPublishOptions): void;
|
|
194
|
+
publishToMaven(options: publishing.PublishToMavenProjectProps & AddPublishOptions): void;
|
|
195
|
+
publishToNuGet(options: publishing.PublishToNuGetProjectProps & AddPublishOptions): void;
|
|
196
|
+
publishToGitHubPages(options: publishing.PublishDocsToGitHubProjectProps & AddPublishOptions): void;
|
|
197
|
+
publishToGitHub(options: publishing.PublishToGitHubProps & AddPublishOptions): void;
|
|
198
|
+
publishToPyPI(options: publishing.PublishToPyPiProps & AddPublishOptions): void;
|
|
198
199
|
publishToS3(id: string, options: publishing.PublishToS3Props & AddPublishOptions): void;
|
|
199
200
|
/**
|
|
200
201
|
* Publish Golang code from `go` directory in build artifact to a GitHub repository.
|
|
@@ -266,6 +267,19 @@ export interface AddPublishOptions {
|
|
|
266
267
|
* @default Build output artifact
|
|
267
268
|
*/
|
|
268
269
|
inputArtifact?: cpipeline.Artifact;
|
|
270
|
+
/**
|
|
271
|
+
* Stage name to add publishing job to
|
|
272
|
+
*
|
|
273
|
+
* By default, this will be the stage name `'Publish'`, but if you want to
|
|
274
|
+
* separate out the publishing actions into different stages (in order to
|
|
275
|
+
* block/unblock them separately for example) you can change this.
|
|
276
|
+
*
|
|
277
|
+
* Stages appear in the pipeline in the order they are referenced for
|
|
278
|
+
* the first time.
|
|
279
|
+
*
|
|
280
|
+
* @default "Publish"
|
|
281
|
+
*/
|
|
282
|
+
readonly stageName?: string;
|
|
269
283
|
}
|
|
270
284
|
export interface AddShellableOptions extends ShellableProps {
|
|
271
285
|
/**
|
package/lib/pipeline.js
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
22
|
exports.Pipeline = void 0;
|
|
4
23
|
const monocdk_1 = require("monocdk");
|
|
@@ -8,7 +27,7 @@ const canary_1 = require("./canary");
|
|
|
8
27
|
const change_controller_1 = require("./change-controller");
|
|
9
28
|
const chime_notifier_1 = require("./chime-notifier");
|
|
10
29
|
const pipeline_watcher_1 = require("./pipeline-watcher");
|
|
11
|
-
const publishing = require("./publishing");
|
|
30
|
+
const publishing = __importStar(require("./publishing"));
|
|
12
31
|
const pull_request_1 = require("./pull-request");
|
|
13
32
|
const repo_1 = require("./repo");
|
|
14
33
|
const shellable_1 = require("./shellable");
|
|
@@ -111,7 +130,12 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
111
130
|
return new canary_1.Canary(this, `Canary${id}`, props);
|
|
112
131
|
}
|
|
113
132
|
addPublish(publisher, options = {}) {
|
|
114
|
-
|
|
133
|
+
var _a;
|
|
134
|
+
const publishStageName = (_a = options.stageName) !== null && _a !== void 0 ? _a : PUBLISH_STAGE_NAME;
|
|
135
|
+
if (!this.firstPublishStageName) {
|
|
136
|
+
this.firstPublishStageName = publishStageName;
|
|
137
|
+
}
|
|
138
|
+
const stage = this.getOrCreateStage(publishStageName);
|
|
115
139
|
publisher.addToPipeline(stage, `${publisher.node.id}Publish`, {
|
|
116
140
|
inputArtifact: options.inputArtifact || this.buildOutput,
|
|
117
141
|
runOrder: this.determineRunOrderForNewAction(stage),
|
|
@@ -122,7 +146,8 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
122
146
|
* @param options the options to configure the change control policy.
|
|
123
147
|
*/
|
|
124
148
|
addChangeControl(options = {}) {
|
|
125
|
-
|
|
149
|
+
var _a;
|
|
150
|
+
const publishStage = this.getStage((_a = this.firstPublishStageName) !== null && _a !== void 0 ? _a : PUBLISH_STAGE_NAME);
|
|
126
151
|
if (!publishStage) {
|
|
127
152
|
throw new Error(`This pipeline does not have a ${PUBLISH_STAGE_NAME} stage yet. Add one first.`);
|
|
128
153
|
}
|
|
@@ -135,37 +160,37 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
135
160
|
this.addPublish(new publishing.PublishToNpmProject(this, 'Npm', {
|
|
136
161
|
dryRun: this.dryRun,
|
|
137
162
|
...options,
|
|
138
|
-
}));
|
|
163
|
+
}), options);
|
|
139
164
|
}
|
|
140
165
|
publishToMaven(options) {
|
|
141
166
|
this.addPublish(new publishing.PublishToMavenProject(this, 'Maven', {
|
|
142
167
|
dryRun: this.dryRun,
|
|
143
168
|
...options,
|
|
144
|
-
}));
|
|
169
|
+
}), options);
|
|
145
170
|
}
|
|
146
171
|
publishToNuGet(options) {
|
|
147
172
|
this.addPublish(new publishing.PublishToNuGetProject(this, 'NuGet', {
|
|
148
173
|
dryRun: this.dryRun,
|
|
149
174
|
...options,
|
|
150
|
-
}));
|
|
175
|
+
}), options);
|
|
151
176
|
}
|
|
152
177
|
publishToGitHubPages(options) {
|
|
153
178
|
this.addPublish(new publishing.PublishDocsToGitHubProject(this, 'GitHubPages', {
|
|
154
179
|
dryRun: this.dryRun,
|
|
155
180
|
...options,
|
|
156
|
-
}));
|
|
181
|
+
}), options);
|
|
157
182
|
}
|
|
158
183
|
publishToGitHub(options) {
|
|
159
184
|
this.addPublish(new publishing.PublishToGitHub(this, 'GitHub', {
|
|
160
185
|
dryRun: this.dryRun,
|
|
161
186
|
...options,
|
|
162
|
-
}));
|
|
187
|
+
}), options);
|
|
163
188
|
}
|
|
164
189
|
publishToPyPI(options) {
|
|
165
190
|
this.addPublish(new publishing.PublishToPyPi(this, 'PyPI', {
|
|
166
191
|
dryRun: this.dryRun,
|
|
167
192
|
...options,
|
|
168
|
-
}));
|
|
193
|
+
}), options);
|
|
169
194
|
}
|
|
170
195
|
publishToS3(id, options) {
|
|
171
196
|
this.addPublish(new publishing.PublishToS3(this, id, {
|
|
@@ -304,4 +329,4 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
304
329
|
}
|
|
305
330
|
}
|
|
306
331
|
exports.Pipeline = Pipeline;
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FXaUI7QUFFakIsNkNBQTJEO0FBQzNELDJDQUFxRDtBQUNyRCxxQ0FBK0M7QUFDL0MsMkRBQXVEO0FBQ3ZELHFEQUFpRDtBQUNqRCx5REFBcUQ7QUFDckQsMkNBQTJDO0FBQzNDLGlEQUF3RTtBQUV4RSxpQ0FBbUQ7QUFDbkQsMkNBQXdEO0FBQ3hELGlDQUFvRDtBQUVwRCxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztBQUNyQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFDL0IsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7QUFDeEMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUM7QUF3SnZDOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsbUJBQVM7SUE4QnJDLFlBQVksTUFBaUIsRUFBRSxJQUFZLEVBQUUsS0FBb0I7O1FBQy9ELEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFUZCxXQUFNLEdBQXlDLEVBQUcsQ0FBQztRQVd6RCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFFN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDBCQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDNUQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyx3QkFBd0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHdCQUF3QjtTQUMvRyxDQUFDLENBQUM7UUFF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O0lBRUQ7O09BRUc7SUFDSyxRQUFRLENBQUMsU0FBaUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLFNBQW9DO1FBQzlFLHlEQUF5RDtRQUN6RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQzdCLFNBQVM7Z0JBQ1QsU0FBUzthQUNWLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sNkJBQTZCLENBQUMsS0FBdUI7UUFDM0QsT0FBTyxJQUFBLHdCQUFpQixFQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUExV0QsNEJBMFdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uc3RydWN0LCBEdXJhdGlvbiwgSUNvbnN0cnVjdCxcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCxcbiAgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLFxuICBhd3NfY29kZXBpcGVsaW5lX2FjdGlvbnMgYXMgY3BpcGVsaW5lX2FjdGlvbnMsXG4gIGF3c19ldmVudHMgYXMgZXZlbnRzLFxuICBhd3NfZXZlbnRzX3RhcmdldHMgYXMgZXZlbnRzX3RhcmdldHMsXG4gIGF3c19pYW0gYXMgaWFtLCBhd3NfczMgYXMgczMsXG4gIGF3c19zbnMgYXMgc25zLFxuICBhd3Nfc25zX3N1YnNjcmlwdGlvbnMgYXMgc25zX3N1YnMsXG59IGZyb20gJ21vbm9jZGsnO1xuXG5pbXBvcnQgeyBBdXRvQnVpbGQsIEF1dG9CdWlsZE9wdGlvbnMgfSBmcm9tICcuL2F1dG8tYnVpbGQnO1xuaW1wb3J0IHsgY3JlYXRlQnVpbGRFbnZpcm9ubWVudCB9IGZyb20gJy4vYnVpbGQtZW52JztcbmltcG9ydCB7IENhbmFyeSwgQ2FuYXJ5UHJvcHMgfSBmcm9tICcuL2NhbmFyeSc7XG5pbXBvcnQgeyBDaGFuZ2VDb250cm9sbGVyIH0gZnJvbSAnLi9jaGFuZ2UtY29udHJvbGxlcic7XG5pbXBvcnQgeyBDaGltZU5vdGlmaWVyIH0gZnJvbSAnLi9jaGltZS1ub3RpZmllcic7XG5pbXBvcnQgeyBQaXBlbGluZVdhdGNoZXIgfSBmcm9tICcuL3BpcGVsaW5lLXdhdGNoZXInO1xuaW1wb3J0ICogYXMgcHVibGlzaGluZyBmcm9tICcuL3B1Ymxpc2hpbmcnO1xuaW1wb3J0IHsgQXV0b0J1bXAsIEF1dG9NZXJnZUJhY2ssIEF1dG9CdW1wUHJvcHMgfSBmcm9tICcuL3B1bGwtcmVxdWVzdCc7XG5pbXBvcnQgeyBBdXRvTWVyZ2VCYWNrUGlwZWxpbmVPcHRpb25zIH0gZnJvbSAnLi9wdWxsLXJlcXVlc3QvbWVyZ2UtYmFjayc7XG5pbXBvcnQgeyBJUmVwbywgV3JpdGFibGVHaXRIdWJSZXBvIH0gZnJvbSAnLi9yZXBvJztcbmltcG9ydCB7IFNoZWxsYWJsZSwgU2hlbGxhYmxlUHJvcHMgfSBmcm9tICcuL3NoZWxsYWJsZSc7XG5pbXBvcnQgeyBkZXRlcm1pbmVSdW5PcmRlciwgZmxhdE1hcCB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IFBVQkxJU0hfU1RBR0VfTkFNRSA9ICdQdWJsaXNoJztcbmNvbnN0IFRFU1RfU1RBR0VfTkFNRSA9ICdUZXN0JztcbmNvbnN0IE1FVFJJQ19OQU1FU1BBQ0UgPSAnQ0RLL0RlbGl2bGliJztcbmNvbnN0IEZBSUxVUkVfTUVUUklDX05BTUUgPSAnRmFpbHVyZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSByZXBvc2l0b3J5IHRvIGJ1aWxkIChlLmcuIEdpdEh1YlJlcG8pLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbzogSVJlcG87XG5cbiAgLyoqXG4gICAqIEEgZGlzcGxheSBuYW1lIGZvciB0aGlzIHBpcGVsaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGh5c2ljYWwgbmFtZSBmb3IgdGhpcyBwaXBlbGluZS5cbiAgICogQGRlZmF1bHQgLSBhIG5ldyBuYW1lIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCcmFuY2ggdG8gYnVpbGQuXG4gICAqIEBkZWZhdWx0IG1hc3RlclxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCB0byBzZW5kIGZhaWx1cmUgbm90aWZpY2F0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBObyBlbWFpbCBub3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25FbWFpbD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGltYWdlIHVzZWQgZm9yIHRoZSBidWlsZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGpzaWkvc3VwZXJjaGFpbiAoc2VlIGRvY3MpXG4gICAqL1xuICByZWFkb25seSBidWlsZEltYWdlPzogY2J1aWxkLklCdWlsZEltYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIGJlIHBhcnQgb2YgdGhpcyBwaXBlbGluZS5cbiAgICogQGRlZmF1bHQgLSBgJHtwaXBlbGluZU5hbWV9LUJ1aWxkYCwgaWYgYHBpcGVsaW5lTmFtZWAgcHJvcGVydHkgaXMgc3BlY2lmaWVkOyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCwgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRQcm9qZWN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgY29tcHV0ZSB0byB1c2UgZm9yIHRoaXMgYnVpbGQuXG4gICAqIFNlZSB0aGUge0BsaW5rIENvbXB1dGVUeXBlfSBlbnVtIGZvciB0aGUgcG9zc2libGUgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0YWtlbiBmcm9tIHtAbGluayAjYnVpbGRJbWFnZSNkZWZhdWx0Q29tcHV0ZVR5cGV9XG4gICAqL1xuICByZWFkb25seSBjb21wdXRlVHlwZT86IGNidWlsZC5Db21wdXRlVHlwZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGhvdyB0aGUgcHJvamVjdCBidWlsZHMgRG9ja2VyIGltYWdlcy4gU3BlY2lmeSB0cnVlIHRvIGVuYWJsZVxuICAgKiBydW5uaW5nIHRoZSBEb2NrZXIgZGFlbW9uIGluc2lkZSBhIERvY2tlciBjb250YWluZXIuIFRoaXMgdmFsdWUgbXVzdCBiZVxuICAgKiBzZXQgdG8gdHJ1ZSBvbmx5IGlmIHRoaXMgYnVpbGQgcHJvamVjdCB3aWxsIGJlIHVzZWQgdG8gYnVpbGQgRG9ja2VyXG4gICAqIGltYWdlcywgYW5kIHRoZSBzcGVjaWZpZWQgYnVpbGQgZW52aXJvbm1lbnQgaW1hZ2UgaXMgbm90IG9uZSBwcm92aWRlZCBieVxuICAgKiBBV1MgQ29kZUJ1aWxkIHdpdGggRG9ja2VyIHN1cHBvcnQuIE90aGVyd2lzZSwgYWxsIGFzc29jaWF0ZWQgYnVpbGRzIHRoYXRcbiAgICogYXR0ZW1wdCB0byBpbnRlcmFjdCB3aXRoIHRoZSBEb2NrZXIgZGFlbW9uIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZpbGVnZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byBidWlsZFxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBidWlsZHNwZWMsIGFzIGFuIGFsdGVybmF0aXZlIHRvIGEgYnVpbGRzcGVjLnltbCBmaWxlXG4gICAqL1xuICByZWFkb25seSBidWlsZFNwZWM/OiBjYnVpbGQuQnVpbGRTcGVjO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZS1ydW4gdGhlIHBpcGVsaW5lIGFmdGVyIHlvdSd2ZSB1cGRhdGVkIGl0LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGNvbmN1cnJlbmN5IGxpbWl0IHRlc3QgYW5kIHB1Ymxpc2ggc3RhZ2VzLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhpcyB2YWx1ZSBpcyAyLCB0aGVuIG9ubHkgdHdvIGFjdGlvbnMgd2lsbCBleGVjdXRlIGNvbmN1cnJlbnRseS5cbiAgICogSWYgdGhpcyB2YWx1ZSBpcyAxLCB0aGUgcGlwZWxpbmUgd2lsbCBub3QgaGF2ZSBhbnkgY29uY3VycmVudCBleGVjdXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbGltaXRcbiAgICovXG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgZHJ5UnVuIGZvciBhbGwgcHVibGlzaGluZyBzdGVwc1xuICAgKlxuICAgKiAoQ2FuIHN0aWxsIGJlIGNoYW5nZWQgd2hlbiBhZGRpbmcgYSBzdGVwKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYnVpbGQgY29tbWl0cyB0aGF0IGFyZSBwdXNoZWQgdG8gdGhpcyByZXBvc2l0b3J5LCBpbmNsdWRpbmcgUFIgYnVpbGRzIG9uIGdpdGh1Yi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9CdWlsZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGF1dG8tYnVpbGRcbiAgICpcbiAgICogQGRlZmF1bHQgLSAnYXV0b0J1aWxkT3B0aW9ucy5wdWJsaWNMb2dzJyB3aWxsIGJlIHNldCB0byBpdHMgZGVmYXVsdC4gJ2F1dG9CdWlsZE9wdGlvbnMuYnVpbGRzcGVjJyB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gbWF0Y2ggd2l0aCB0aGVcbiAgICogJ2J1aWxkU3BlYycgcHJvcGVydHkuXG4gICAqL1xuICByZWFkb25seSBhdXRvQnVpbGRPcHRpb25zPzogQXV0b0J1aWxkT3B0aW9ucztcblxuICAvKipcbiAgICogUG9zdCBhIG5vdGlmaWNhdGlvbiB0byB0aGUgZ2l2ZW4gQ2hpbWUgd2ViaG9va3MgaWYgdGhlIHBpcGVsaW5lIGZhaWxzXG4gICAqIEBkZWZhdWx0IC0gbm8gQ2hpbWUgbm90aWZpY2F0aW9ucyBvbiBwaXBlbGluZSBmYWlsdXJlXG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIGBub3RpZnlPbkZhaWx1cmUoKWAgaW5zdGVhZCBpbiBjb21iaW5hdGlvbiB3aXRoIGBQaXBlbGluZU5vdGlmaWNhdGlvbi5jaGltZSgpYC5cbiAgICovXG4gIHJlYWRvbmx5IGNoaW1lRmFpbHVyZVdlYmhvb2tzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBDaGltZSBtZXNzYWdlIHRvIHBvc3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBIGRlZmF1bHQgbWVzc2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hpbWVNZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCdWlsZCB0aW1lb3V0XG4gICAqXG4gICAqIEhvdyBsb25nIHRoZSBidWlsZCBjYW4gdGFrZSBhdCBtYXhpbXVtIChiZWZvcmUgZmFpbGluZyB3aXRoIGFuIGVycm9yKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEdXJhdGlvbi5ob3Vycyg4KVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRUaW1lb3V0PzogRHVyYXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVOb3RpZmljYXRpb25CaW5kT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBQaXBlbGluZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGlwZWxpbmVOb3RpZmljYXRpb24ge1xuICBiaW5kKHBpcGVsaW5lOiBQaXBlbGluZU5vdGlmaWNhdGlvbkJpbmRPcHRpb25zKTogdm9pZDtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyBhbiBhdXRvIGJ1bXAgZm9yIHRoaXMgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0J1bXBPcHRpb25zIGV4dGVuZHMgT21pdDxBdXRvQnVtcFByb3BzLCAncmVwbyc+IHtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgZGVsaXZsaWIgQ0kvQ0QgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBidWlsZFJvbGU/OiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBmYWlsdXJlQWxhcm06IGNsb3Vkd2F0Y2guQWxhcm07XG4gIHB1YmxpYyByZWFkb25seSBidWlsZE91dHB1dDogY3BpcGVsaW5lLkFydGlmYWN0O1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlQXJ0aWZhY3Q6IGNwaXBlbGluZS5BcnRpZmFjdDtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgQ29kZUJ1aWxkIHByb2plY3Qgb2YgdGhpcyBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWlsZFByb2plY3Q6IGNidWlsZC5JUHJvamVjdDtcblxuICAvKipcbiAgICogVGhlIGF1dG8gYnVpbGQgcHJvamVjdC4gdW5kZWZpbmVkIGlmICdhdXRvQnVpbGQnIGlzIGRpc2FibGVkIGZvciB0aGlzIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF1dG9CdWlsZFByb2plY3Q/OiBjYnVpbGQuUHJvamVjdDtcblxuICAvKlxuICAgKiBUaGUgdW5kZXJseWluZyBDb2RlUGlwZWxpbmUgUGlwZWxpbmUgb2JqZWN0IHRoYXQgbW9kZWxzIHRoaXMgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGlwZWxpbmU6IGNwaXBlbGluZS5QaXBlbGluZTtcbiAgcHJpdmF0ZSByZWFkb25seSBicmFuY2g6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZnk/OiBzbnMuVG9waWM7XG4gIHByaXZhdGUgc3RhZ2VzOiB7IFtuYW1lOiBzdHJpbmddOiBjcGlwZWxpbmUuSVN0YWdlIH0gPSB7IH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb25jdXJyZW5jeT86IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSByZXBvOiBJUmVwbztcbiAgcHJpdmF0ZSByZWFkb25seSBkcnlSdW46IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRFbnZpcm9ubWVudDogY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRTcGVjPzogY2J1aWxkLkJ1aWxkU3BlYztcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSk7XG5cbiAgICB0aGlzLmNvbmN1cnJlbmN5ID0gcHJvcHMuY29uY3VycmVuY3k7XG4gICAgdGhpcy5yZXBvID0gcHJvcHMucmVwbztcbiAgICB0aGlzLmRyeVJ1biA9ICEhcHJvcHMuZHJ5UnVuO1xuXG4gICAgdGhpcy5waXBlbGluZSA9IG5ldyBjcGlwZWxpbmUuUGlwZWxpbmUodGhpcywgJ0J1aWxkUGlwZWxpbmUnLCB7XG4gICAgICBwaXBlbGluZU5hbWU6IHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZTogcHJvcHMucmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlID09PSB1bmRlZmluZWQgPyB0cnVlIDogcHJvcHMucmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5icmFuY2ggPSBwcm9wcy5icmFuY2ggfHwgJ21hc3Rlcic7XG4gICAgdGhpcy5zb3VyY2VBcnRpZmFjdCA9IHByb3BzLnJlcG8uY3JlYXRlU291cmNlU3RhZ2UodGhpcy5waXBlbGluZSwgdGhpcy5icmFuY2gpO1xuXG4gICAgdGhpcy5idWlsZEVudmlyb25tZW50ID0gY3JlYXRlQnVpbGRFbnZpcm9ubWVudChwcm9wcyk7XG4gICAgdGhpcy5idWlsZFNwZWMgPSBwcm9wcy5idWlsZFNwZWM7XG5cbiAgICBsZXQgYnVpbGRQcm9qZWN0TmFtZSA9IHByb3BzLmJ1aWxkUHJvamVjdE5hbWU7XG4gICAgaWYgKGJ1aWxkUHJvamVjdE5hbWUgPT09IHVuZGVmaW5lZCAmJiBwcm9wcy5waXBlbGluZU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYnVpbGRQcm9qZWN0TmFtZSA9IGAke3Byb3BzLnBpcGVsaW5lTmFtZX0tQnVpbGRgO1xuICAgIH1cbiAgICB0aGlzLmJ1aWxkUHJvamVjdCA9IG5ldyBjYnVpbGQuUGlwZWxpbmVQcm9qZWN0KHRoaXMsICdCdWlsZFByb2plY3QnLCB7XG4gICAgICBwcm9qZWN0TmFtZTogYnVpbGRQcm9qZWN0TmFtZSxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLmJ1aWxkRW52aXJvbm1lbnQsXG4gICAgICBidWlsZFNwZWM6IHRoaXMuYnVpbGRTcGVjLFxuICAgICAgdGltZW91dDogcHJvcHMuYnVpbGRUaW1lb3V0ID8/IER1cmF0aW9uLmhvdXJzKDgpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5idWlsZFJvbGUgPSB0aGlzLmJ1aWxkUHJvamVjdC5yb2xlO1xuXG4gICAgY29uc3QgYnVpbGRTdGFnZSA9IHRoaXMuZ2V0T3JDcmVhdGVTdGFnZSgnQnVpbGQnKTtcbiAgICBjb25zdCBidWlsZE91dHB1dCA9IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKTtcbiAgICBidWlsZFN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6ICdCdWlsZCcsXG4gICAgICBwcm9qZWN0OiB0aGlzLmJ1aWxkUHJvamVjdCxcbiAgICAgIGlucHV0OiB0aGlzLnNvdXJjZUFydGlmYWN0LFxuICAgICAgb3V0cHV0czogW2J1aWxkT3V0cHV0XSxcbiAgICB9KSk7XG4gICAgdGhpcy5idWlsZE91dHB1dCA9IGJ1aWxkT3V0cHV0O1xuXG4gICAgaWYgKHByb3BzLm5vdGlmaWNhdGlvbkVtYWlsKSB7XG4gICAgICB0aGlzLm5vdGlmeSA9IG5ldyBzbnMuVG9waWModGhpcywgJ05vdGlmaWNhdGlvbnNUb3BpYycpO1xuICAgICAgdGhpcy5ub3RpZnkuYWRkU3Vic2NyaXB0aW9uKG5ldyBzbnNfc3Vicy5FbWFpbFN1YnNjcmlwdGlvbihwcm9wcy5ub3RpZmljYXRpb25FbWFpbCkpO1xuICAgIH1cblxuICAgIC8vIGFkZCBhIGZhaWx1cmUgYWxhcm0gZm9yIHRoZSBlbnRpcmUgcGlwZWxpbmUuXG4gICAgdGhpcy5mYWlsdXJlQWxhcm0gPSB0aGlzLmFkZEZhaWx1cmVBbGFybShwcm9wcy50aXRsZSk7XG5cbiAgICAvLyBlbWl0IGFuIFNOUyBub3RpZmljYXRpb24gZXZlcnkgdGltZSBidWlsZCBmYWlscy5cbiAgICB0aGlzLmFkZEJ1aWxkRmFpbHVyZU5vdGlmaWNhdGlvbih0aGlzLmJ1aWxkUHJvamVjdCwgYCR7cHJvcHMudGl0bGV9IGJ1aWxkIGZhaWxlZGApO1xuXG4gICAgLy8gQWxzbyBlbWl0IHRvIENoaW1lIHdlYmhvb2tzIGlmIGNvbmZpZ3VyZWRcbiAgICBpZiAocHJvcHMuY2hpbWVGYWlsdXJlV2ViaG9va3MpIHtcbiAgICAgIG5ldyBDaGltZU5vdGlmaWVyKHRoaXMsICdDaGltZU5vdGlmaWVyJywge1xuICAgICAgICBwaXBlbGluZTogdGhpcy5waXBlbGluZSxcbiAgICAgICAgbWVzc2FnZTogcHJvcHMuY2hpbWVNZXNzYWdlLFxuICAgICAgICB3ZWJob29rVXJsczogcHJvcHMuY2hpbWVGYWlsdXJlV2ViaG9va3MsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYXV0b0J1aWxkKSB7XG4gICAgICB0aGlzLmF1dG9CdWlsZFByb2plY3QgPSB0aGlzLmF1dG9CdWlsZChwcm9wcy5hdXRvQnVpbGRPcHRpb25zKS5wcm9qZWN0O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBub3RpZnlPbkZhaWx1cmUobm90aWZpY2F0aW9uOiBJUGlwZWxpbmVOb3RpZmljYXRpb24pIHtcbiAgICBub3RpZmljYXRpb24uYmluZCh7XG4gICAgICBwaXBlbGluZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gYWN0aW9uIHRvIHJ1biBhIHNoZWxsIHNjcmlwdCB0byB0aGUgcGlwZWxpbmVcbiAgICpcbiAgICogQHJldHVybiBUaGUgU2hlbGxhYmxlIGFuZCB0aGUgQWN0aW9uIGFkZGVkIHRvIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBhZGRTaGVsbGFibGUoc3RhZ2VOYW1lOiBzdHJpbmcsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFNoZWxsYWJsZU9wdGlvbnMpOiB7XG4gICAgc2hlbGxhYmxlOiBTaGVsbGFibGU7IGFjdGlvbjogY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uO30ge1xuICAgIGNvbnN0IHN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKHN0YWdlTmFtZSk7XG5cbiAgICBjb25zdCBzaCA9IG5ldyBTaGVsbGFibGUodGhpcywgaWQsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGFjdGlvbiA9IHNoLmFkZFRvUGlwZWxpbmUoXG4gICAgICBzdGFnZSxcbiAgICAgIG9wdGlvbnMuYWN0aW9uTmFtZSB8fCBgQWN0aW9uJHtpZH1gLFxuICAgICAgb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IHRoaXMuYnVpbGRPdXRwdXQsXG4gICAgICB0aGlzLmRldGVybWluZVJ1bk9yZGVyRm9yTmV3QWN0aW9uKHN0YWdlKSk7XG5cbiAgICBpZiAob3B0aW9ucy5mYWlsdXJlTm90aWZpY2F0aW9uKSB7XG4gICAgICB0aGlzLmFkZEJ1aWxkRmFpbHVyZU5vdGlmaWNhdGlvbihzaC5wcm9qZWN0LCBvcHRpb25zLmZhaWx1cmVOb3RpZmljYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB7IHNoZWxsYWJsZTogc2gsIGFjdGlvbiB9O1xuICB9XG5cbiAgcHVibGljIGFkZFRlc3QoaWQ6IHN0cmluZywgcHJvcHM6IFNoZWxsYWJsZVByb3BzKToge3NoZWxsYWJsZTogU2hlbGxhYmxlOyBhY3Rpb246IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbn0ge1xuICAgIHJldHVybiB0aGlzLmFkZFNoZWxsYWJsZShURVNUX1NUQUdFX05BTUUsIGlkLCB7XG4gICAgICBhY3Rpb25OYW1lOiBgVGVzdCR7aWR9YCxcbiAgICAgIGZhaWx1cmVOb3RpZmljYXRpb246IGBUZXN0ICR7aWR9IGZhaWxlZGAsXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZS9kaXNjb3ZlcnkgbWV0aG9kIHRoYXQgZGVmaW5lcyBhIGNhbmFyeSB0ZXN0IGluIHlvdXIgYWNjb3VudC5cbiAgICogQHBhcmFtIGlkIHRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIGNhbmFyeSBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FuYXJ5KGlkOiBzdHJpbmcsIHByb3BzOiBDYW5hcnlQcm9wcykge1xuICAgIHJldHVybiBuZXcgQ2FuYXJ5KHRoaXMsIGBDYW5hcnkke2lkfWAsIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRQdWJsaXNoKHB1Ymxpc2hlcjogSVB1Ymxpc2hlciwgb3B0aW9uczogQWRkUHVibGlzaE9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKFBVQkxJU0hfU1RBR0VfTkFNRSk7XG5cbiAgICBwdWJsaXNoZXIuYWRkVG9QaXBlbGluZShzdGFnZSwgYCR7cHVibGlzaGVyLm5vZGUuaWR9UHVibGlzaGAsIHtcbiAgICAgIGlucHV0QXJ0aWZhY3Q6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCB0aGlzLmJ1aWxkT3V0cHV0LFxuICAgICAgcnVuT3JkZXI6IHRoaXMuZGV0ZXJtaW5lUnVuT3JkZXJGb3JOZXdBY3Rpb24oc3RhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjaGFuZ2UgY29udHJvbCBwb2xpY3kgdG8gYmxvY2sgdHJhbnNpdGlvbnMgaW50byB0aGUgcHVibGlzaCBzdGFnZSBkdXJpbmcgY2VydGFpbiB0aW1lIHdpbmRvd3MuXG4gICAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgY2hhbmdlIGNvbnRyb2wgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIGFkZENoYW5nZUNvbnRyb2wob3B0aW9uczogQWRkQ2hhbmdlQ29udHJvbE9wdGlvbnMgPSB7IH0pOiBDaGFuZ2VDb250cm9sbGVyIHtcbiAgICBjb25zdCBwdWJsaXNoU3RhZ2UgPSB0aGlzLmdldFN0YWdlKFBVQkxJU0hfU1RBR0VfTkFNRSk7XG4gICAgaWYgKCFwdWJsaXNoU3RhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhpcyBwaXBlbGluZSBkb2VzIG5vdCBoYXZlIGEgJHtQVUJMSVNIX1NUQUdFX05BTUV9IHN0YWdlIHlldC4gQWRkIG9uZSBmaXJzdC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENoYW5nZUNvbnRyb2xsZXIodGhpcywgJ0NoYW5nZUNvbnRyb2xsZXInLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgcGlwZWxpbmVTdGFnZTogcHVibGlzaFN0YWdlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb05wbShvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb05wbVByb2plY3RQcm9wcykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9OcG1Qcm9qZWN0KHRoaXMsICdOcG0nLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvTWF2ZW4ob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9NYXZlblByb2plY3RQcm9wcykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9NYXZlblByb2plY3QodGhpcywgJ01hdmVuJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb051R2V0KG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvTnVHZXRQcm9qZWN0UHJvcHMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvTnVHZXRQcm9qZWN0KHRoaXMsICdOdUdldCcsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9HaXRIdWJQYWdlcyhvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0UHJvcHMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaERvY3NUb0dpdEh1YlByb2plY3QodGhpcywgJ0dpdEh1YlBhZ2VzJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb0dpdEh1YihvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb0dpdEh1YlByb3BzKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb0dpdEh1Yih0aGlzLCAnR2l0SHViJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb1B5UEkob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9QeVBpUHJvcHMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvUHlQaSh0aGlzLCAnUHlQSScsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9TMyhpZDogc3RyaW5nLCBvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb1MzUHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9TMyh0aGlzLCBpZCwge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggR29sYW5nIGNvZGUgZnJvbSBgZ29gIGRpcmVjdG9yeSBpbiBidWlsZCBhcnRpZmFjdCB0byBhIEdpdEh1YiByZXBvc2l0b3J5LlxuICAgKi9cbiAgcHVibGljIHB1Ymxpc2hUb0dvbGFuZyhvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb0dvbGFuZ1Byb3BzKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb0dvbGFuZyh0aGlzLCAnR29sYW5nJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYXV0b21hdGljIGJ1bXBzIGZvciB0aGUgc291cmNlIHJlcG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGF1dG8gYnVtcCAoc2VlIEF1dG9CdW1wT3B0aW9ucyBmb3IgZGVzY3JpcHRpb24gb2YgZGVmYXVsdHMpXG4gICAqL1xuICBwdWJsaWMgYXV0b0J1bXAob3B0aW9ucz86IEF1dG9CdW1wT3B0aW9ucyk6IEF1dG9CdW1wIHtcbiAgICBpZiAoIVdyaXRhYmxlR2l0SHViUmVwby5pc1dyaXRhYmxlR2l0SHViUmVwbyh0aGlzLnJlcG8pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wicmVwb1wiIG11c3QgYmUgYSBXcml0YWJsZUdpdEh1YlJlcG8gaW4gb3JkZXIgdG8gZW5hYmxlIGF1dG8tYnVtcCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGF1dG9CdW1wID0gbmV3IEF1dG9CdW1wKHRoaXMsICdBdXRvQnVtcCcsIHtcbiAgICAgIHJlcG86IHRoaXMucmVwbyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXV0b0J1bXA7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBhdXRvbWF0aWMgbWVyZ2UgYmFja3MgZm9yIHRoZSBzb3VyY2UgcmVwby5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgYXV0byBidW1wIChzZWUgQXV0b01lcmdlQmFja1BpcGVsaW5lT3B0aW9ucyBmb3IgZGVzY3JpcHRpb24gb2YgZGVmYXVsdHMpXG4gICAqL1xuICBwdWJsaWMgYXV0b01lcmdlQmFjayhvcHRpb25zPzogQXV0b01lcmdlQmFja1BpcGVsaW5lT3B0aW9ucykge1xuICAgIGlmICghV3JpdGFibGVHaXRIdWJSZXBvLmlzV3JpdGFibGVHaXRIdWJSZXBvKHRoaXMucmVwbykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCJyZXBvXCIgbXVzdCBiZSBhIFdyaXRhYmxlR2l0SHViUmVwbyBpbiBvcmRlciB0byBlbmFibGUgYXV0by1tZXJnZS1iYWNrJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVyZ2VCYWNrID0gbmV3IEF1dG9NZXJnZUJhY2sodGhpcywgJ01lcmdlQmFjaycsIHtcbiAgICAgIHJlcG86IHRoaXMucmVwbyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucz8uc3RhZ2UpIHtcblxuICAgICAgY29uc3QgYWZ0ZXJTdGFnZSA9IHRoaXMuZ2V0U3RhZ2Uob3B0aW9ucy5zdGFnZS5hZnRlcik7XG5cbiAgICAgIGlmICghYWZ0ZXJTdGFnZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdvcHRpb25zLnN0YWdlLmFmdGVyJyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG8gYW4gZXhpc3Rpbmcgc3RhZ2U6ICR7b3B0aW9ucy5zdGFnZS5hZnRlcn1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RhZ2UgPSB0aGlzLmdldE9yQ3JlYXRlU3RhZ2Uob3B0aW9ucy5zdGFnZS5uYW1lID8/ICdNZXJnZUJhY2snLCB7IGp1c3RBZnRlcjogYWZ0ZXJTdGFnZSB9KTtcbiAgICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgICAgYWN0aW9uTmFtZTogJ0NyZWF0ZU1lcmdlQmFja1B1bGxSZXF1ZXN0JyxcbiAgICAgICAgcHJvamVjdDogbWVyZ2VCYWNrLnByLnByb2plY3QsXG4gICAgICAgIGlucHV0OiB0aGlzLnNvdXJjZUFydGlmYWN0LFxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGF1dG9tYXRpYyBidWlsZHMgb2YgcHVsbCByZXF1ZXN0cyBpbiB0aGUgR2l0aHViIHJlcG9zaXRvcnkgYW5kIHBvc3RzIHRoZVxuICAgKiByZXN1bHRzIGJhY2sgYXMgYSBjb21tZW50IHdpdGggYSBwdWJsaWMgbGluayB0byB0aGUgYnVpbGQgbG9ncy5cbiAgICovXG4gIHB1YmxpYyBhdXRvQnVpbGQob3B0aW9uczogQXV0b0J1aWxkT3B0aW9ucyA9IHsgfSk6IEF1dG9CdWlsZCB7XG4gICAgcmV0dXJuIG5ldyBBdXRvQnVpbGQodGhpcywgJ0F1dG9CdWlsZCcsIHtcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLmJ1aWxkRW52aXJvbm1lbnQsXG4gICAgICByZXBvOiB0aGlzLnJlcG8sXG4gICAgICBidWlsZFNwZWM6IG9wdGlvbnMuYnVpbGRTcGVjIHx8IHRoaXMuYnVpbGRTcGVjLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWV0cmljIHRoYXQgdHJhY2tzIHBpcGVsaW5lIGZhaWx1cmVzLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0ZhaWx1cmVzKG9wdGlvbnM6IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDX05BTUVTUEFDRSxcbiAgICAgIG1ldHJpY05hbWU6IEZBSUxVUkVfTUVUUklDX05BTUUsXG4gICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgIFBpcGVsaW5lOiB0aGlzLnBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgIH0sXG4gICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWV0cmljcyB0aGF0IHRyYWNrIGZhaWx1cmUgb2YgZWFjaCBhY3Rpb24gd2l0aGluIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNBY3Rpb25GYWlsdXJlcyhvcHRpb25zOiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpY1tdIHtcbiAgICByZXR1cm4gZmxhdE1hcCh0aGlzLnBpcGVsaW5lLnN0YWdlcywgc3RhZ2UgPT4gc3RhZ2UuYWN0aW9ucy5tYXAoYWN0aW9uID0+IHtcbiAgICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgICBuYW1lc3BhY2U6IE1FVFJJQ19OQU1FU1BBQ0UsXG4gICAgICAgIG1ldHJpY05hbWU6IEZBSUxVUkVfTUVUUklDX05BTUUsXG4gICAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgICBQaXBlbGluZTogdGhpcy5waXBlbGluZS5waXBlbGluZU5hbWUsXG4gICAgICAgICAgQWN0aW9uOiBhY3Rpb24uYWN0aW9uUHJvcGVydGllcy5hY3Rpb25OYW1lLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRGYWlsdXJlQWxhcm0odGl0bGU/OiBzdHJpbmcpOiBjbG91ZHdhdGNoLkFsYXJtIHtcbiAgICByZXR1cm4gbmV3IFBpcGVsaW5lV2F0Y2hlcih0aGlzLCAnUGlwZWxpbmVXYXRjaGVyJywge1xuICAgICAgcGlwZWxpbmU6IHRoaXMucGlwZWxpbmUsXG4gICAgICBtZXRyaWNOYW1lc3BhY2U6IE1FVFJJQ19OQU1FU1BBQ0UsXG4gICAgICBmYWlsdXJlTWV0cmljTmFtZTogRkFJTFVSRV9NRVRSSUNfTkFNRSxcbiAgICAgIHRpdGxlLFxuICAgIH0pLmFsYXJtO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRCdWlsZEZhaWx1cmVOb3RpZmljYXRpb24oYnVpbGRQcm9qZWN0OiBjYnVpbGQuSVByb2plY3QsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5ub3RpZnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBidWlsZFByb2plY3Qub25CdWlsZEZhaWxlZCgnT25CdWlsZEZhaWxlZCcpLmFkZFRhcmdldChuZXcgZXZlbnRzX3RhcmdldHMuU25zVG9waWModGhpcy5ub3RpZnksIHtcbiAgICAgIG1lc3NhZ2U6IGV2ZW50cy5SdWxlVGFyZ2V0SW5wdXQuZnJvbVRleHQobWVzc2FnZSksXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHRoZSBzdGFnZSBvciB1bmRlZmluZWQgaWYgdGhlIHN0YWdlIGRvZXNuJ3QgZXhpc3RcbiAgICovXG4gIHByaXZhdGUgZ2V0U3RhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcpOiBjcGlwZWxpbmUuSVN0YWdlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdGFnZXNbc3RhZ2VOYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3JDcmVhdGVTdGFnZShzdGFnZU5hbWU6IHN0cmluZywgcGxhY2VtZW50PzogY3BpcGVsaW5lLlN0YWdlUGxhY2VtZW50KTogY3BpcGVsaW5lLklTdGFnZSB7XG4gICAgLy8gb3RoZXJ3aXNlLCBncm91cCBhbGwgYWN0aW9ucyBzbyB0aGV5IHJ1biBjb25jdXJyZW50bHkuXG4gICAgbGV0IHN0YWdlID0gdGhpcy5nZXRTdGFnZShzdGFnZU5hbWUpO1xuICAgIGlmICghc3RhZ2UpIHtcbiAgICAgIHN0YWdlID0gdGhpcy5waXBlbGluZS5hZGRTdGFnZSh7XG4gICAgICAgIHN0YWdlTmFtZSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnN0YWdlc1tzdGFnZU5hbWVdID0gc3RhZ2U7XG4gICAgfVxuICAgIHJldHVybiBzdGFnZTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lUnVuT3JkZXJGb3JOZXdBY3Rpb24oc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBkZXRlcm1pbmVSdW5PcmRlcihzdGFnZS5hY3Rpb25zLmxlbmd0aCwgdGhpcy5jb25jdXJyZW5jeSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUHVibGlzaGVyIGV4dGVuZHMgSUNvbnN0cnVjdCB7XG4gIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRUb1BpcGVsaW5lT3B0aW9ucyB7XG4gIGlucHV0QXJ0aWZhY3Q/OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG4gIHJ1bk9yZGVyPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZENoYW5nZUNvbnRyb2xPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBidWNrZXQgaW4gd2hpY2ggdGhlIENoYW5nZUNvbnRyb2wgaUNhbCBkb2N1bWVudCB3aWxsIGJlIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYSBuZXcgYnVja2V0IHdpbGwgYmUgcHJvdmlzaW9uZWQuXG4gICAqL1xuICBjaGFuZ2VDb250cm9sQnVja2V0PzogczMuSUJ1Y2tldDtcblxuICAvKipcbiAgICogVGhlIGtleSBpbiB3aGljaCB0aGUgaUNhbCBmaWxsZSB3aWxsIGJlIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2NoYW5nZS1jb250cm9sLmljYWwnXG4gICAqL1xuICBjaGFuZ2VDb250cm9sT2JqZWN0S2V5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSB0byBydW4gdGhlIGNoYW5nZSBjb250cm9sbGVyIG9uXG4gICAqXG4gICAqIEBkZWZhdWx0IHJhdGUoMTUgbWludXRlcylcbiAgICovXG4gIHNjaGVkdWxlRXhwcmVzc2lvbj86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWRkUHVibGlzaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGlucHV0IGFydGlmYWN0IHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCBCdWlsZCBvdXRwdXQgYXJ0aWZhY3RcbiAgICovXG4gIGlucHV0QXJ0aWZhY3Q/OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkU2hlbGxhYmxlT3B0aW9ucyBleHRlbmRzIFNoZWxsYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIFN0cmluZyB0byB1c2UgYXMgYWN0aW9uIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgSWRcbiAgICovXG4gIGFjdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lc3NhZ2UgdG8gdXNlIGFzIGZhaWx1cmUgbm90aWZpY2F0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIG5vdGlmaWNhdGlvblxuICAgKi9cbiAgZmFpbHVyZU5vdGlmaWNhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGlucHV0IGFydGlmYWN0IHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCBCdWlsZCBvdXRwdXQgYXJ0aWZhY3RcbiAgICovXG4gIGlucHV0QXJ0aWZhY3Q/OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG59XG4iXX0=
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUNBV2lCO0FBRWpCLDZDQUEyRDtBQUMzRCwyQ0FBcUQ7QUFDckQscUNBQStDO0FBQy9DLDJEQUF1RDtBQUN2RCxxREFBaUQ7QUFDakQseURBQXFEO0FBQ3JELHlEQUEyQztBQUMzQyxpREFBd0U7QUFFeEUsaUNBQW1EO0FBQ25ELDJDQUF3RDtBQUN4RCxpQ0FBb0Q7QUFFcEQsTUFBTSxrQkFBa0IsR0FBRyxTQUFTLENBQUM7QUFDckMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDO0FBQy9CLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO0FBQ3hDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDO0FBd0p2Qzs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLG1CQUFTO0lBK0JyQyxZQUFZLE1BQWlCLEVBQUUsSUFBWSxFQUFFLEtBQW9COztRQUMvRCxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBVmQsV0FBTSxHQUF5QyxFQUFHLENBQUM7UUFZekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBRTdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSwwQkFBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQzVELFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsd0JBQXdCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx3QkFBd0I7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QyxZQUE2QixFQUFFLE9BQWU7UUFDaEYsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsT0FBTztTQUNSO1FBRUQsWUFBWSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSw0QkFBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzdGLE9BQU8sRUFBRSxvQkFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ssUUFBUSxDQUFDLFNBQWlCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxTQUFvQztRQUM5RSx5REFBeUQ7UUFDekQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUM3QixTQUFTO2dCQUNULFNBQVM7YUFDVixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUNoQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLDZCQUE2QixDQUFDLEtBQXVCO1FBQzNELE9BQU8sSUFBQSx3QkFBaUIsRUFBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkUsQ0FBQztDQUNGO0FBL1dELDRCQStXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnN0cnVjdCwgRHVyYXRpb24sIElDb25zdHJ1Y3QsXG4gIGF3c19jbG91ZHdhdGNoIGFzIGNsb3Vkd2F0Y2gsXG4gIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSxcbiAgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxuICBhd3NfZXZlbnRzIGFzIGV2ZW50cyxcbiAgYXdzX2V2ZW50c190YXJnZXRzIGFzIGV2ZW50c190YXJnZXRzLFxuICBhd3NfaWFtIGFzIGlhbSwgYXdzX3MzIGFzIHMzLFxuICBhd3Nfc25zIGFzIHNucyxcbiAgYXdzX3Nuc19zdWJzY3JpcHRpb25zIGFzIHNuc19zdWJzLFxufSBmcm9tICdtb25vY2RrJztcblxuaW1wb3J0IHsgQXV0b0J1aWxkLCBBdXRvQnVpbGRPcHRpb25zIH0gZnJvbSAnLi9hdXRvLWJ1aWxkJztcbmltcG9ydCB7IGNyZWF0ZUJ1aWxkRW52aXJvbm1lbnQgfSBmcm9tICcuL2J1aWxkLWVudic7XG5pbXBvcnQgeyBDYW5hcnksIENhbmFyeVByb3BzIH0gZnJvbSAnLi9jYW5hcnknO1xuaW1wb3J0IHsgQ2hhbmdlQ29udHJvbGxlciB9IGZyb20gJy4vY2hhbmdlLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgQ2hpbWVOb3RpZmllciB9IGZyb20gJy4vY2hpbWUtbm90aWZpZXInO1xuaW1wb3J0IHsgUGlwZWxpbmVXYXRjaGVyIH0gZnJvbSAnLi9waXBlbGluZS13YXRjaGVyJztcbmltcG9ydCAqIGFzIHB1Ymxpc2hpbmcgZnJvbSAnLi9wdWJsaXNoaW5nJztcbmltcG9ydCB7IEF1dG9CdW1wLCBBdXRvTWVyZ2VCYWNrLCBBdXRvQnVtcFByb3BzIH0gZnJvbSAnLi9wdWxsLXJlcXVlc3QnO1xuaW1wb3J0IHsgQXV0b01lcmdlQmFja1BpcGVsaW5lT3B0aW9ucyB9IGZyb20gJy4vcHVsbC1yZXF1ZXN0L21lcmdlLWJhY2snO1xuaW1wb3J0IHsgSVJlcG8sIFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4vcmVwbyc7XG5pbXBvcnQgeyBTaGVsbGFibGUsIFNoZWxsYWJsZVByb3BzIH0gZnJvbSAnLi9zaGVsbGFibGUnO1xuaW1wb3J0IHsgZGV0ZXJtaW5lUnVuT3JkZXIsIGZsYXRNYXAgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBQVUJMSVNIX1NUQUdFX05BTUUgPSAnUHVibGlzaCc7XG5jb25zdCBURVNUX1NUQUdFX05BTUUgPSAnVGVzdCc7XG5jb25zdCBNRVRSSUNfTkFNRVNQQUNFID0gJ0NESy9EZWxpdmxpYic7XG5jb25zdCBGQUlMVVJFX01FVFJJQ19OQU1FID0gJ0ZhaWx1cmVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgcmVwb3NpdG9yeSB0byBidWlsZCAoZS5nLiBHaXRIdWJSZXBvKS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG86IElSZXBvO1xuXG4gIC8qKlxuICAgKiBBIGRpc3BsYXkgbmFtZSBmb3IgdGhpcyBwaXBlbGluZS5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHBoeXNpY2FsIG5hbWUgZm9yIHRoaXMgcGlwZWxpbmUuXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgbmFtZSB3aWxsIGJlIGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnJhbmNoIHRvIGJ1aWxkLlxuICAgKiBAZGVmYXVsdCBtYXN0ZXJcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgdG8gc2VuZCBmYWlsdXJlIG5vdGlmaWNhdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gTm8gZW1haWwgbm90aWZpY2F0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uRW1haWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbWFnZSB1c2VkIGZvciB0aGUgYnVpbGRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBqc2lpL3N1cGVyY2hhaW4gKHNlZSBkb2NzKVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBiZSBwYXJ0IG9mIHRoaXMgcGlwZWxpbmUuXG4gICAqIEBkZWZhdWx0IC0gYCR7cGlwZWxpbmVOYW1lfS1CdWlsZGAsIGlmIGBwaXBlbGluZU5hbWVgIHByb3BlcnR5IGlzIHNwZWNpZmllZDsgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQsIG90aGVyd2lzZS5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkUHJvamVjdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGNvbXB1dGUgdG8gdXNlIGZvciB0aGlzIGJ1aWxkLlxuICAgKiBTZWUgdGhlIHtAbGluayBDb21wdXRlVHlwZX0gZW51bSBmb3IgdGhlIHBvc3NpYmxlIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdGFrZW4gZnJvbSB7QGxpbmsgI2J1aWxkSW1hZ2UjZGVmYXVsdENvbXB1dGVUeXBlfVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcHV0ZVR5cGU/OiBjYnVpbGQuQ29tcHV0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBob3cgdGhlIHByb2plY3QgYnVpbGRzIERvY2tlciBpbWFnZXMuIFNwZWNpZnkgdHJ1ZSB0byBlbmFibGVcbiAgICogcnVubmluZyB0aGUgRG9ja2VyIGRhZW1vbiBpbnNpZGUgYSBEb2NrZXIgY29udGFpbmVyLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogc2V0IHRvIHRydWUgb25seSBpZiB0aGlzIGJ1aWxkIHByb2plY3Qgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIERvY2tlclxuICAgKiBpbWFnZXMsIGFuZCB0aGUgc3BlY2lmaWVkIGJ1aWxkIGVudmlyb25tZW50IGltYWdlIGlzIG5vdCBvbmUgcHJvdmlkZWQgYnlcbiAgICogQVdTIENvZGVCdWlsZCB3aXRoIERvY2tlciBzdXBwb3J0LiBPdGhlcndpc2UsIGFsbCBhc3NvY2lhdGVkIGJ1aWxkcyB0aGF0XG4gICAqIGF0dGVtcHQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgRG9ja2VyIGRhZW1vbiB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcml2aWxlZ2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHBhc3MgdG8gYnVpbGRcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgYnVpbGRzcGVjLCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBhIGJ1aWxkc3BlYy55bWwgZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTcGVjPzogY2J1aWxkLkJ1aWxkU3BlYztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmUtcnVuIHRoZSBwaXBlbGluZSBhZnRlciB5b3UndmUgdXBkYXRlZCBpdC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjb25jdXJyZW5jeSBsaW1pdCB0ZXN0IGFuZCBwdWJsaXNoIHN0YWdlcy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoaXMgdmFsdWUgaXMgMiwgdGhlbiBvbmx5IHR3byBhY3Rpb25zIHdpbGwgZXhlY3V0ZSBjb25jdXJyZW50bHkuXG4gICAqIElmIHRoaXMgdmFsdWUgaXMgMSwgdGhlIHBpcGVsaW5lIHdpbGwgbm90IGhhdmUgYW55IGNvbmN1cnJlbnQgZXhlY3V0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGxpbWl0XG4gICAqL1xuICByZWFkb25seSBjb25jdXJyZW5jeT86IG51bWJlcjtcblxuICAvKipcbiAgICogU2V0IHRoZSBkZWZhdWx0IGRyeVJ1biBmb3IgYWxsIHB1Ymxpc2hpbmcgc3RlcHNcbiAgICpcbiAgICogKENhbiBzdGlsbCBiZSBjaGFuZ2VkIHdoZW4gYWRkaW5nIGEgc3RlcCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGJ1aWxkIGNvbW1pdHMgdGhhdCBhcmUgcHVzaGVkIHRvIHRoaXMgcmVwb3NpdG9yeSwgaW5jbHVkaW5nIFBSIGJ1aWxkcyBvbiBnaXRodWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhdXRvQnVpbGQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBhdXRvLWJ1aWxkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJ2F1dG9CdWlsZE9wdGlvbnMucHVibGljTG9ncycgd2lsbCBiZSBzZXQgdG8gaXRzIGRlZmF1bHQuICdhdXRvQnVpbGRPcHRpb25zLmJ1aWxkc3BlYycgd2lsbCBiZSBjb25maWd1cmVkIHRvIG1hdGNoIHdpdGggdGhlXG4gICAqICdidWlsZFNwZWMnIHByb3BlcnR5LlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0J1aWxkT3B0aW9ucz86IEF1dG9CdWlsZE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFBvc3QgYSBub3RpZmljYXRpb24gdG8gdGhlIGdpdmVuIENoaW1lIHdlYmhvb2tzIGlmIHRoZSBwaXBlbGluZSBmYWlsc1xuICAgKiBAZGVmYXVsdCAtIG5vIENoaW1lIG5vdGlmaWNhdGlvbnMgb24gcGlwZWxpbmUgZmFpbHVyZVxuICAgKiBAZGVwcmVjYXRlZCAtIHVzZSBgbm90aWZ5T25GYWlsdXJlKClgIGluc3RlYWQgaW4gY29tYmluYXRpb24gd2l0aCBgUGlwZWxpbmVOb3RpZmljYXRpb24uY2hpbWUoKWAuXG4gICAqL1xuICByZWFkb25seSBjaGltZUZhaWx1cmVXZWJob29rcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2hpbWUgbWVzc2FnZSB0byBwb3N0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSBkZWZhdWx0IG1lc3NhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGNoaW1lTWVzc2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgdGltZW91dFxuICAgKlxuICAgKiBIb3cgbG9uZyB0aGUgYnVpbGQgY2FuIHRha2UgYXQgbWF4aW11bSAoYmVmb3JlIGZhaWxpbmcgd2l0aCBhbiBlcnJvcikuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRHVyYXRpb24uaG91cnMoOClcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkVGltZW91dD86IER1cmF0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lTm90aWZpY2F0aW9uQmluZE9wdGlvbnMge1xuICByZWFkb25seSBwaXBlbGluZTogUGlwZWxpbmU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBpcGVsaW5lTm90aWZpY2F0aW9uIHtcbiAgYmluZChwaXBlbGluZTogUGlwZWxpbmVOb3RpZmljYXRpb25CaW5kT3B0aW9ucyk6IHZvaWQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgYW4gYXV0byBidW1wIGZvciB0aGlzIHBpcGVsaW5lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9CdW1wT3B0aW9ucyBleHRlbmRzIE9taXQ8QXV0b0J1bXBQcm9wcywgJ3JlcG8nPiB7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIGRlbGl2bGliIENJL0NEIHBpcGVsaW5lLlxuICovXG5leHBvcnQgY2xhc3MgUGlwZWxpbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgYnVpbGRSb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgZmFpbHVyZUFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRPdXRwdXQ6IGNwaXBlbGluZS5BcnRpZmFjdDtcbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZUFydGlmYWN0OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IENvZGVCdWlsZCBwcm9qZWN0IG9mIHRoaXMgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRQcm9qZWN0OiBjYnVpbGQuSVByb2plY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRvIGJ1aWxkIHByb2plY3QuIHVuZGVmaW5lZCBpZiAnYXV0b0J1aWxkJyBpcyBkaXNhYmxlZCBmb3IgdGhpcyBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdXRvQnVpbGRQcm9qZWN0PzogY2J1aWxkLlByb2plY3Q7XG5cbiAgLypcbiAgICogVGhlIHVuZGVybHlpbmcgQ29kZVBpcGVsaW5lIFBpcGVsaW5lIG9iamVjdCB0aGF0IG1vZGVscyB0aGlzIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBpcGVsaW5lOiBjcGlwZWxpbmUuUGlwZWxpbmU7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnJhbmNoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm90aWZ5Pzogc25zLlRvcGljO1xuICBwcml2YXRlIHN0YWdlczogeyBbbmFtZTogc3RyaW5nXTogY3BpcGVsaW5lLklTdGFnZSB9ID0geyB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uY3VycmVuY3k/OiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVwbzogSVJlcG87XG4gIHByaXZhdGUgcmVhZG9ubHkgZHJ5UnVuOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkRW52aXJvbm1lbnQ6IGNidWlsZC5CdWlsZEVudmlyb25tZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkU3BlYz86IGNidWlsZC5CdWlsZFNwZWM7XG4gIHByaXZhdGUgZmlyc3RQdWJsaXNoU3RhZ2VOYW1lPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZVByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lKTtcblxuICAgIHRoaXMuY29uY3VycmVuY3kgPSBwcm9wcy5jb25jdXJyZW5jeTtcbiAgICB0aGlzLnJlcG8gPSBwcm9wcy5yZXBvO1xuICAgIHRoaXMuZHJ5UnVuID0gISFwcm9wcy5kcnlSdW47XG5cbiAgICB0aGlzLnBpcGVsaW5lID0gbmV3IGNwaXBlbGluZS5QaXBlbGluZSh0aGlzLCAnQnVpbGRQaXBlbGluZScsIHtcbiAgICAgIHBpcGVsaW5lTmFtZTogcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiBwcm9wcy5yZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBwcm9wcy5yZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmJyYW5jaCA9IHByb3BzLmJyYW5jaCB8fCAnbWFzdGVyJztcbiAgICB0aGlzLnNvdXJjZUFydGlmYWN0ID0gcHJvcHMucmVwby5jcmVhdGVTb3VyY2VTdGFnZSh0aGlzLnBpcGVsaW5lLCB0aGlzLmJyYW5jaCk7XG5cbiAgICB0aGlzLmJ1aWxkRW52aXJvbm1lbnQgPSBjcmVhdGVCdWlsZEVudmlyb25tZW50KHByb3BzKTtcbiAgICB0aGlzLmJ1aWxkU3BlYyA9IHByb3BzLmJ1aWxkU3BlYztcblxuICAgIGxldCBidWlsZFByb2plY3ROYW1lID0gcHJvcHMuYnVpbGRQcm9qZWN0TmFtZTtcbiAgICBpZiAoYnVpbGRQcm9qZWN0TmFtZSA9PT0gdW5kZWZpbmVkICYmIHByb3BzLnBpcGVsaW5lTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBidWlsZFByb2plY3ROYW1lID0gYCR7cHJvcHMucGlwZWxpbmVOYW1lfS1CdWlsZGA7XG4gICAgfVxuICAgIHRoaXMuYnVpbGRQcm9qZWN0ID0gbmV3IGNidWlsZC5QaXBlbGluZVByb2plY3QodGhpcywgJ0J1aWxkUHJvamVjdCcsIHtcbiAgICAgIHByb2plY3ROYW1lOiBidWlsZFByb2plY3ROYW1lLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuYnVpbGRFbnZpcm9ubWVudCxcbiAgICAgIGJ1aWxkU3BlYzogdGhpcy5idWlsZFNwZWMsXG4gICAgICB0aW1lb3V0OiBwcm9wcy5idWlsZFRpbWVvdXQgPz8gRHVyYXRpb24uaG91cnMoOCksXG4gICAgfSk7XG5cbiAgICB0aGlzLmJ1aWxkUm9sZSA9IHRoaXMuYnVpbGRQcm9qZWN0LnJvbGU7XG5cbiAgICBjb25zdCBidWlsZFN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKCdCdWlsZCcpO1xuICAgIGNvbnN0IGJ1aWxkT3V0cHV0ID0gbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpO1xuICAgIGJ1aWxkU3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogJ0J1aWxkJyxcbiAgICAgIHByb2plY3Q6IHRoaXMuYnVpbGRQcm9qZWN0LFxuICAgICAgaW5wdXQ6IHRoaXMuc291cmNlQXJ0aWZhY3QsXG4gICAgICBvdXRwdXRzOiBbYnVpbGRPdXRwdXRdLFxuICAgIH0pKTtcbiAgICB0aGlzLmJ1aWxkT3V0cHV0ID0gYnVpbGRPdXRwdXQ7XG5cbiAgICBpZiAocHJvcHMubm90aWZpY2F0aW9uRW1haWwpIHtcbiAgICAgIHRoaXMubm90aWZ5ID0gbmV3IHNucy5Ub3BpYyh0aGlzLCAnTm90aWZpY2F0aW9uc1RvcGljJyk7XG4gICAgICB0aGlzLm5vdGlmeS5hZGRTdWJzY3JpcHRpb24obmV3IHNuc19zdWJzLkVtYWlsU3Vic2NyaXB0aW9uKHByb3BzLm5vdGlmaWNhdGlvbkVtYWlsKSk7XG4gICAgfVxuXG4gICAgLy8gYWRkIGEgZmFpbHVyZSBhbGFybSBmb3IgdGhlIGVudGlyZSBwaXBlbGluZS5cbiAgICB0aGlzLmZhaWx1cmVBbGFybSA9IHRoaXMuYWRkRmFpbHVyZUFsYXJtKHByb3BzLnRpdGxlKTtcblxuICAgIC8vIGVtaXQgYW4gU05TIG5vdGlmaWNhdGlvbiBldmVyeSB0aW1lIGJ1aWxkIGZhaWxzLlxuICAgIHRoaXMuYWRkQnVpbGRGYWlsdXJlTm90aWZpY2F0aW9uKHRoaXMuYnVpbGRQcm9qZWN0LCBgJHtwcm9wcy50aXRsZX0gYnVpbGQgZmFpbGVkYCk7XG5cbiAgICAvLyBBbHNvIGVtaXQgdG8gQ2hpbWUgd2ViaG9va3MgaWYgY29uZmlndXJlZFxuICAgIGlmIChwcm9wcy5jaGltZUZhaWx1cmVXZWJob29rcykge1xuICAgICAgbmV3IENoaW1lTm90aWZpZXIodGhpcywgJ0NoaW1lTm90aWZpZXInLCB7XG4gICAgICAgIHBpcGVsaW5lOiB0aGlzLnBpcGVsaW5lLFxuICAgICAgICBtZXNzYWdlOiBwcm9wcy5jaGltZU1lc3NhZ2UsXG4gICAgICAgIHdlYmhvb2tVcmxzOiBwcm9wcy5jaGltZUZhaWx1cmVXZWJob29rcyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5hdXRvQnVpbGQpIHtcbiAgICAgIHRoaXMuYXV0b0J1aWxkUHJvamVjdCA9IHRoaXMuYXV0b0J1aWxkKHByb3BzLmF1dG9CdWlsZE9wdGlvbnMpLnByb2plY3Q7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5vdGlmeU9uRmFpbHVyZShub3RpZmljYXRpb246IElQaXBlbGluZU5vdGlmaWNhdGlvbikge1xuICAgIG5vdGlmaWNhdGlvbi5iaW5kKHtcbiAgICAgIHBpcGVsaW5lOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBhY3Rpb24gdG8gcnVuIGEgc2hlbGwgc2NyaXB0IHRvIHRoZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcmV0dXJuIFRoZSBTaGVsbGFibGUgYW5kIHRoZSBBY3Rpb24gYWRkZWQgdG8gdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIGFkZFNoZWxsYWJsZShzdGFnZU5hbWU6IHN0cmluZywgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkU2hlbGxhYmxlT3B0aW9ucyk6IHtcbiAgICBzaGVsbGFibGU6IFNoZWxsYWJsZTsgYWN0aW9uOiBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb247fSB7XG4gICAgY29uc3Qgc3RhZ2UgPSB0aGlzLmdldE9yQ3JlYXRlU3RhZ2Uoc3RhZ2VOYW1lKTtcblxuICAgIGNvbnN0IHNoID0gbmV3IFNoZWxsYWJsZSh0aGlzLCBpZCwgb3B0aW9ucyk7XG4gICAgY29uc3QgYWN0aW9uID0gc2guYWRkVG9QaXBlbGluZShcbiAgICAgIHN0YWdlLFxuICAgICAgb3B0aW9ucy5hY3Rpb25OYW1lIHx8IGBBY3Rpb24ke2lkfWAsXG4gICAgICBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgdGhpcy5idWlsZE91dHB1dCxcbiAgICAgIHRoaXMuZGV0ZXJtaW5lUnVuT3JkZXJGb3JOZXdBY3Rpb24oc3RhZ2UpKTtcblxuICAgIGlmIChvcHRpb25zLmZhaWx1cmVOb3RpZmljYXRpb24pIHtcbiAgICAgIHRoaXMuYWRkQnVpbGRGYWlsdXJlTm90aWZpY2F0aW9uKHNoLnByb2plY3QsIG9wdGlvbnMuZmFpbHVyZU5vdGlmaWNhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc2hlbGxhYmxlOiBzaCwgYWN0aW9uIH07XG4gIH1cblxuICBwdWJsaWMgYWRkVGVzdChpZDogc3RyaW5nLCBwcm9wczogU2hlbGxhYmxlUHJvcHMpOiB7c2hlbGxhYmxlOiBTaGVsbGFibGU7IGFjdGlvbjogY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9ufSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkU2hlbGxhYmxlKFRFU1RfU1RBR0VfTkFNRSwgaWQsIHtcbiAgICAgIGFjdGlvbk5hbWU6IGBUZXN0JHtpZH1gLFxuICAgICAgZmFpbHVyZU5vdGlmaWNhdGlvbjogYFRlc3QgJHtpZH0gZmFpbGVkYCxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlL2Rpc2NvdmVyeSBtZXRob2QgdGhhdCBkZWZpbmVzIGEgY2FuYXJ5IHRlc3QgaW4geW91ciBhY2NvdW50LlxuICAgKiBAcGFyYW0gaWQgdGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gcHJvcHMgY2FuYXJ5IG9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBhZGRDYW5hcnkoaWQ6IHN0cmluZywgcHJvcHM6IENhbmFyeVByb3BzKSB7XG4gICAgcmV0dXJuIG5ldyBDYW5hcnkodGhpcywgYENhbmFyeSR7aWR9YCwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIGFkZFB1Ymxpc2gocHVibGlzaGVyOiBJUHVibGlzaGVyLCBvcHRpb25zOiBBZGRQdWJsaXNoT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgcHVibGlzaFN0YWdlTmFtZSA9IG9wdGlvbnMuc3RhZ2VOYW1lID8/IFBVQkxJU0hfU1RBR0VfTkFNRTtcbiAgICBpZiAoIXRoaXMuZmlyc3RQdWJsaXNoU3RhZ2VOYW1lKSB7XG4gICAgICB0aGlzLmZpcnN0UHVibGlzaFN0YWdlTmFtZSA9IHB1Ymxpc2hTdGFnZU5hbWU7XG4gICAgfVxuICAgIGNvbnN0IHN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKHB1Ymxpc2hTdGFnZU5hbWUpO1xuXG4gICAgcHVibGlzaGVyLmFkZFRvUGlwZWxpbmUoc3RhZ2UsIGAke3B1Ymxpc2hlci5ub2RlLmlkfVB1Ymxpc2hgLCB7XG4gICAgICBpbnB1dEFydGlmYWN0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgdGhpcy5idWlsZE91dHB1dCxcbiAgICAgIHJ1bk9yZGVyOiB0aGlzLmRldGVybWluZVJ1bk9yZGVyRm9yTmV3QWN0aW9uKHN0YWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY2hhbmdlIGNvbnRyb2wgcG9saWN5IHRvIGJsb2NrIHRyYW5zaXRpb25zIGludG8gdGhlIHB1Ymxpc2ggc3RhZ2UgZHVyaW5nIGNlcnRhaW4gdGltZSB3aW5kb3dzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGNoYW5nZSBjb250cm9sIHBvbGljeS5cbiAgICovXG4gIHB1YmxpYyBhZGRDaGFuZ2VDb250cm9sKG9wdGlvbnM6IEFkZENoYW5nZUNvbnRyb2xPcHRpb25zID0geyB9KTogQ2hhbmdlQ29udHJvbGxlciB7XG4gICAgY29uc3QgcHVibGlzaFN0YWdlID0gdGhpcy5nZXRTdGFnZSh0aGlzLmZpcnN0UHVibGlzaFN0YWdlTmFtZSA/PyBQVUJMSVNIX1NUQUdFX05BTUUpO1xuICAgIGlmICghcHVibGlzaFN0YWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoaXMgcGlwZWxpbmUgZG9lcyBub3QgaGF2ZSBhICR7UFVCTElTSF9TVEFHRV9OQU1FfSBzdGFnZSB5ZXQuIEFkZCBvbmUgZmlyc3QuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VDb250cm9sbGVyKHRoaXMsICdDaGFuZ2VDb250cm9sbGVyJywge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHBpcGVsaW5lU3RhZ2U6IHB1Ymxpc2hTdGFnZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9OcG0ob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9OcG1Qcm9qZWN0UHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9OcG1Qcm9qZWN0KHRoaXMsICdOcG0nLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvTWF2ZW4ob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9NYXZlblByb2plY3RQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb01hdmVuUHJvamVjdCh0aGlzLCAnTWF2ZW4nLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvTnVHZXQob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9OdUdldFByb2plY3RQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb051R2V0UHJvamVjdCh0aGlzLCAnTnVHZXQnLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvR2l0SHViUGFnZXMob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdFByb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaERvY3NUb0dpdEh1YlByb2plY3QodGhpcywgJ0dpdEh1YlBhZ2VzJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb0dpdEh1YihvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb0dpdEh1YlByb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvR2l0SHViKHRoaXMsICdHaXRIdWInLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvUHlQSShvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb1B5UGlQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb1B5UGkodGhpcywgJ1B5UEknLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvUzMoaWQ6IHN0cmluZywgb3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9TM1Byb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvUzModGhpcywgaWQsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaXNoIEdvbGFuZyBjb2RlIGZyb20gYGdvYCBkaXJlY3RvcnkgaW4gYnVpbGQgYXJ0aWZhY3QgdG8gYSBHaXRIdWIgcmVwb3NpdG9yeS5cbiAgICovXG4gIHB1YmxpYyBwdWJsaXNoVG9Hb2xhbmcob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9Hb2xhbmdQcm9wcykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9Hb2xhbmcodGhpcywgJ0dvbGFuZycsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGF1dG9tYXRpYyBidW1wcyBmb3IgdGhlIHNvdXJjZSByZXBvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBhdXRvIGJ1bXAgKHNlZSBBdXRvQnVtcE9wdGlvbnMgZm9yIGRlc2NyaXB0aW9uIG9mIGRlZmF1bHRzKVxuICAgKi9cbiAgcHVibGljIGF1dG9CdW1wKG9wdGlvbnM/OiBBdXRvQnVtcE9wdGlvbnMpOiBBdXRvQnVtcCB7XG4gICAgaWYgKCFXcml0YWJsZUdpdEh1YlJlcG8uaXNXcml0YWJsZUdpdEh1YlJlcG8odGhpcy5yZXBvKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcInJlcG9cIiBtdXN0IGJlIGEgV3JpdGFibGVHaXRIdWJSZXBvIGluIG9yZGVyIHRvIGVuYWJsZSBhdXRvLWJ1bXAnKTtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRvQnVtcCA9IG5ldyBBdXRvQnVtcCh0aGlzLCAnQXV0b0J1bXAnLCB7XG4gICAgICByZXBvOiB0aGlzLnJlcG8sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF1dG9CdW1wO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYXV0b21hdGljIG1lcmdlIGJhY2tzIGZvciB0aGUgc291cmNlIHJlcG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGF1dG8gYnVtcCAoc2VlIEF1dG9NZXJnZUJhY2tQaXBlbGluZU9wdGlvbnMgZm9yIGRlc2NyaXB0aW9uIG9mIGRlZmF1bHRzKVxuICAgKi9cbiAgcHVibGljIGF1dG9NZXJnZUJhY2sob3B0aW9ucz86IEF1dG9NZXJnZUJhY2tQaXBlbGluZU9wdGlvbnMpIHtcbiAgICBpZiAoIVdyaXRhYmxlR2l0SHViUmVwby5pc1dyaXRhYmxlR2l0SHViUmVwbyh0aGlzLnJlcG8pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wicmVwb1wiIG11c3QgYmUgYSBXcml0YWJsZUdpdEh1YlJlcG8gaW4gb3JkZXIgdG8gZW5hYmxlIGF1dG8tbWVyZ2UtYmFjaycpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lcmdlQmFjayA9IG5ldyBBdXRvTWVyZ2VCYWNrKHRoaXMsICdNZXJnZUJhY2snLCB7XG4gICAgICByZXBvOiB0aGlzLnJlcG8sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnM/LnN0YWdlKSB7XG5cbiAgICAgIGNvbnN0IGFmdGVyU3RhZ2UgPSB0aGlzLmdldFN0YWdlKG9wdGlvbnMuc3RhZ2UuYWZ0ZXIpO1xuXG4gICAgICBpZiAoIWFmdGVyU3RhZ2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnb3B0aW9ucy5zdGFnZS5hZnRlcicgbXVzdCBiZSBjb25maWd1cmVkIHRvIGFuIGV4aXN0aW5nIHN0YWdlOiAke29wdGlvbnMuc3RhZ2UuYWZ0ZXJ9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKG9wdGlvbnMuc3RhZ2UubmFtZSA/PyAnTWVyZ2VCYWNrJywgeyBqdXN0QWZ0ZXI6IGFmdGVyU3RhZ2UgfSk7XG4gICAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICAgIGFjdGlvbk5hbWU6ICdDcmVhdGVNZXJnZUJhY2tQdWxsUmVxdWVzdCcsXG4gICAgICAgIHByb2plY3Q6IG1lcmdlQmFjay5wci5wcm9qZWN0LFxuICAgICAgICBpbnB1dDogdGhpcy5zb3VyY2VBcnRpZmFjdCxcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBhdXRvbWF0aWMgYnVpbGRzIG9mIHB1bGwgcmVxdWVzdHMgaW4gdGhlIEdpdGh1YiByZXBvc2l0b3J5IGFuZCBwb3N0cyB0aGVcbiAgICogcmVzdWx0cyBiYWNrIGFzIGEgY29tbWVudCB3aXRoIGEgcHVibGljIGxpbmsgdG8gdGhlIGJ1aWxkIGxvZ3MuXG4gICAqL1xuICBwdWJsaWMgYXV0b0J1aWxkKG9wdGlvbnM6IEF1dG9CdWlsZE9wdGlvbnMgPSB7IH0pOiBBdXRvQnVpbGQge1xuICAgIHJldHVybiBuZXcgQXV0b0J1aWxkKHRoaXMsICdBdXRvQnVpbGQnLCB7XG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5idWlsZEVudmlyb25tZW50LFxuICAgICAgcmVwbzogdGhpcy5yZXBvLFxuICAgICAgYnVpbGRTcGVjOiBvcHRpb25zLmJ1aWxkU3BlYyB8fCB0aGlzLmJ1aWxkU3BlYyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1ldHJpYyB0aGF0IHRyYWNrcyBwaXBlbGluZSBmYWlsdXJlcy5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNGYWlsdXJlcyhvcHRpb25zOiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ19OQU1FU1BBQ0UsXG4gICAgICBtZXRyaWNOYW1lOiBGQUlMVVJFX01FVFJJQ19OQU1FLFxuICAgICAgZGltZW5zaW9uczoge1xuICAgICAgICBQaXBlbGluZTogdGhpcy5waXBlbGluZS5waXBlbGluZU5hbWUsXG4gICAgICB9LFxuICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1ldHJpY3MgdGhhdCB0cmFjayBmYWlsdXJlIG9mIGVhY2ggYWN0aW9uIHdpdGhpbiB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQWN0aW9uRmFpbHVyZXMob3B0aW9uczogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWNbXSB7XG4gICAgcmV0dXJuIGZsYXRNYXAodGhpcy5waXBlbGluZS5zdGFnZXMsIHN0YWdlID0+IHN0YWdlLmFjdGlvbnMubWFwKGFjdGlvbiA9PiB7XG4gICAgICByZXR1cm4gbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgICAgbmFtZXNwYWNlOiBNRVRSSUNfTkFNRVNQQUNFLFxuICAgICAgICBtZXRyaWNOYW1lOiBGQUlMVVJFX01FVFJJQ19OQU1FLFxuICAgICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgICAgUGlwZWxpbmU6IHRoaXMucGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgICAgIEFjdGlvbjogYWN0aW9uLmFjdGlvblByb3BlcnRpZXMuYWN0aW9uTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRmFpbHVyZUFsYXJtKHRpdGxlPzogc3RyaW5nKTogY2xvdWR3YXRjaC5BbGFybSB7XG4gICAgcmV0dXJuIG5ldyBQaXBlbGluZVdhdGNoZXIodGhpcywgJ1BpcGVsaW5lV2F0Y2hlcicsIHtcbiAgICAgIHBpcGVsaW5lOiB0aGlzLnBpcGVsaW5lLFxuICAgICAgbWV0cmljTmFtZXNwYWNlOiBNRVRSSUNfTkFNRVNQQUNFLFxuICAgICAgZmFpbHVyZU1ldHJpY05hbWU6IEZBSUxVUkVfTUVUUklDX05BTUUsXG4gICAgICB0aXRsZSxcbiAgICB9KS5hbGFybTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQnVpbGRGYWlsdXJlTm90aWZpY2F0aW9uKGJ1aWxkUHJvamVjdDogY2J1aWxkLklQcm9qZWN0LCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMubm90aWZ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYnVpbGRQcm9qZWN0Lm9uQnVpbGRGYWlsZWQoJ09uQnVpbGRGYWlsZWQnKS5hZGRUYXJnZXQobmV3IGV2ZW50c190YXJnZXRzLlNuc1RvcGljKHRoaXMubm90aWZ5LCB7XG4gICAgICBtZXNzYWdlOiBldmVudHMuUnVsZVRhcmdldElucHV0LmZyb21UZXh0KG1lc3NhZ2UpLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB0aGUgc3RhZ2Ugb3IgdW5kZWZpbmVkIGlmIHRoZSBzdGFnZSBkb2Vzbid0IGV4aXN0XG4gICAqL1xuICBwcml2YXRlIGdldFN0YWdlKHN0YWdlTmFtZTogc3RyaW5nKTogY3BpcGVsaW5lLklTdGFnZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhZ2VzW3N0YWdlTmFtZV07XG4gIH1cblxuICBwcml2YXRlIGdldE9yQ3JlYXRlU3RhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcsIHBsYWNlbWVudD86IGNwaXBlbGluZS5TdGFnZVBsYWNlbWVudCk6IGNwaXBlbGluZS5JU3RhZ2Uge1xuICAgIC8vIG90aGVyd2lzZSwgZ3JvdXAgYWxsIGFjdGlvbnMgc28gdGhleSBydW4gY29uY3VycmVudGx5LlxuICAgIGxldCBzdGFnZSA9IHRoaXMuZ2V0U3RhZ2Uoc3RhZ2VOYW1lKTtcbiAgICBpZiAoIXN0YWdlKSB7XG4gICAgICBzdGFnZSA9IHRoaXMucGlwZWxpbmUuYWRkU3RhZ2Uoe1xuICAgICAgICBzdGFnZU5hbWUsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdGFnZXNbc3RhZ2VOYW1lXSA9IHN0YWdlO1xuICAgIH1cbiAgICByZXR1cm4gc3RhZ2U7XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZVJ1bk9yZGVyRm9yTmV3QWN0aW9uKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZGV0ZXJtaW5lUnVuT3JkZXIoc3RhZ2UuYWN0aW9ucy5sZW5ndGgsIHRoaXMuY29uY3VycmVuY3kpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVB1Ymxpc2hlciBleHRlbmRzIElDb25zdHJ1Y3Qge1xuICBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkVG9QaXBlbGluZU9wdGlvbnMge1xuICBpbnB1dEFydGlmYWN0PzogY3BpcGVsaW5lLkFydGlmYWN0O1xuICBydW5PcmRlcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRDaGFuZ2VDb250cm9sT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IGluIHdoaWNoIHRoZSBDaGFuZ2VDb250cm9sIGlDYWwgZG9jdW1lbnQgd2lsbCBiZSBzdG9yZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGEgbmV3IGJ1Y2tldCB3aWxsIGJlIHByb3Zpc2lvbmVkLlxuICAgKi9cbiAgY2hhbmdlQ29udHJvbEJ1Y2tldD86IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBrZXkgaW4gd2hpY2ggdGhlIGlDYWwgZmlsbGUgd2lsbCBiZSBzdG9yZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjaGFuZ2UtY29udHJvbC5pY2FsJ1xuICAgKi9cbiAgY2hhbmdlQ29udHJvbE9iamVjdEtleT86IHN0cmluZztcblxuICAvKipcbiAgICogU2NoZWR1bGUgdG8gcnVuIHRoZSBjaGFuZ2UgY29udHJvbGxlciBvblxuICAgKlxuICAgKiBAZGVmYXVsdCByYXRlKDE1IG1pbnV0ZXMpXG4gICAqL1xuICBzY2hlZHVsZUV4cHJlc3Npb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkUHVibGlzaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGlucHV0IGFydGlmYWN0IHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCBCdWlsZCBvdXRwdXQgYXJ0aWZhY3RcbiAgICovXG4gIGlucHV0QXJ0aWZhY3Q/OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG5cbiAgLyoqXG4gICAqIFN0YWdlIG5hbWUgdG8gYWRkIHB1Ymxpc2hpbmcgam9iIHRvXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBiZSB0aGUgc3RhZ2UgbmFtZSBgJ1B1Ymxpc2gnYCwgYnV0IGlmIHlvdSB3YW50IHRvXG4gICAqIHNlcGFyYXRlIG91dCB0aGUgcHVibGlzaGluZyBhY3Rpb25zIGludG8gZGlmZmVyZW50IHN0YWdlcyAoaW4gb3JkZXIgdG9cbiAgICogYmxvY2svdW5ibG9jayB0aGVtIHNlcGFyYXRlbHkgZm9yIGV4YW1wbGUpIHlvdSBjYW4gY2hhbmdlIHRoaXMuXG4gICAqXG4gICAqIFN0YWdlcyBhcHBlYXIgaW4gdGhlIHBpcGVsaW5lIGluIHRoZSBvcmRlciB0aGV5IGFyZSByZWZlcmVuY2VkIGZvclxuICAgKiB0aGUgZmlyc3QgdGltZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJQdWJsaXNoXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRTaGVsbGFibGVPcHRpb25zIGV4dGVuZHMgU2hlbGxhYmxlUHJvcHMge1xuICAvKipcbiAgICogU3RyaW5nIHRvIHVzZSBhcyBhY3Rpb24gbmFtZVxuICAgKlxuICAgKiBAZGVmYXVsdCBJZFxuICAgKi9cbiAgYWN0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogTWVzc2FnZSB0byB1c2UgYXMgZmFpbHVyZSBub3RpZmljYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gbm90aWZpY2F0aW9uXG4gICAqL1xuICBmYWlsdXJlTm90aWZpY2F0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgYXJ0aWZhY3QgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IEJ1aWxkIG91dHB1dCBhcnRpZmFjdFxuICAgKi9cbiAgaW5wdXRBcnRpZmFjdD86IGNwaXBlbGluZS5BcnRpZmFjdDtcbn1cbiJdfQ==
|
package/lib/pipeline.ts
CHANGED
|
@@ -211,6 +211,7 @@ export class Pipeline extends Construct {
|
|
|
211
211
|
private readonly dryRun: boolean;
|
|
212
212
|
private readonly buildEnvironment: cbuild.BuildEnvironment;
|
|
213
213
|
private readonly buildSpec?: cbuild.BuildSpec;
|
|
214
|
+
private firstPublishStageName?: string;
|
|
214
215
|
|
|
215
216
|
constructor(parent: Construct, name: string, props: PipelineProps) {
|
|
216
217
|
super(parent, name);
|
|
@@ -325,7 +326,11 @@ export class Pipeline extends Construct {
|
|
|
325
326
|
}
|
|
326
327
|
|
|
327
328
|
public addPublish(publisher: IPublisher, options: AddPublishOptions = {}) {
|
|
328
|
-
const
|
|
329
|
+
const publishStageName = options.stageName ?? PUBLISH_STAGE_NAME;
|
|
330
|
+
if (!this.firstPublishStageName) {
|
|
331
|
+
this.firstPublishStageName = publishStageName;
|
|
332
|
+
}
|
|
333
|
+
const stage = this.getOrCreateStage(publishStageName);
|
|
329
334
|
|
|
330
335
|
publisher.addToPipeline(stage, `${publisher.node.id}Publish`, {
|
|
331
336
|
inputArtifact: options.inputArtifact || this.buildOutput,
|
|
@@ -338,7 +343,7 @@ export class Pipeline extends Construct {
|
|
|
338
343
|
* @param options the options to configure the change control policy.
|
|
339
344
|
*/
|
|
340
345
|
public addChangeControl(options: AddChangeControlOptions = { }): ChangeController {
|
|
341
|
-
const publishStage = this.getStage(PUBLISH_STAGE_NAME);
|
|
346
|
+
const publishStage = this.getStage(this.firstPublishStageName ?? PUBLISH_STAGE_NAME);
|
|
342
347
|
if (!publishStage) {
|
|
343
348
|
throw new Error(`This pipeline does not have a ${PUBLISH_STAGE_NAME} stage yet. Add one first.`);
|
|
344
349
|
}
|
|
@@ -349,46 +354,46 @@ export class Pipeline extends Construct {
|
|
|
349
354
|
});
|
|
350
355
|
}
|
|
351
356
|
|
|
352
|
-
public publishToNpm(options: publishing.PublishToNpmProjectProps) {
|
|
357
|
+
public publishToNpm(options: publishing.PublishToNpmProjectProps & AddPublishOptions) {
|
|
353
358
|
this.addPublish(new publishing.PublishToNpmProject(this, 'Npm', {
|
|
354
359
|
dryRun: this.dryRun,
|
|
355
360
|
...options,
|
|
356
|
-
}));
|
|
361
|
+
}), options);
|
|
357
362
|
}
|
|
358
363
|
|
|
359
|
-
public publishToMaven(options: publishing.PublishToMavenProjectProps) {
|
|
364
|
+
public publishToMaven(options: publishing.PublishToMavenProjectProps & AddPublishOptions) {
|
|
360
365
|
this.addPublish(new publishing.PublishToMavenProject(this, 'Maven', {
|
|
361
366
|
dryRun: this.dryRun,
|
|
362
367
|
...options,
|
|
363
|
-
}));
|
|
368
|
+
}), options);
|
|
364
369
|
}
|
|
365
370
|
|
|
366
|
-
public publishToNuGet(options: publishing.PublishToNuGetProjectProps) {
|
|
371
|
+
public publishToNuGet(options: publishing.PublishToNuGetProjectProps & AddPublishOptions) {
|
|
367
372
|
this.addPublish(new publishing.PublishToNuGetProject(this, 'NuGet', {
|
|
368
373
|
dryRun: this.dryRun,
|
|
369
374
|
...options,
|
|
370
|
-
}));
|
|
375
|
+
}), options);
|
|
371
376
|
}
|
|
372
377
|
|
|
373
|
-
public publishToGitHubPages(options: publishing.PublishDocsToGitHubProjectProps) {
|
|
378
|
+
public publishToGitHubPages(options: publishing.PublishDocsToGitHubProjectProps & AddPublishOptions) {
|
|
374
379
|
this.addPublish(new publishing.PublishDocsToGitHubProject(this, 'GitHubPages', {
|
|
375
380
|
dryRun: this.dryRun,
|
|
376
381
|
...options,
|
|
377
|
-
}));
|
|
382
|
+
}), options);
|
|
378
383
|
}
|
|
379
384
|
|
|
380
|
-
public publishToGitHub(options: publishing.PublishToGitHubProps) {
|
|
385
|
+
public publishToGitHub(options: publishing.PublishToGitHubProps & AddPublishOptions) {
|
|
381
386
|
this.addPublish(new publishing.PublishToGitHub(this, 'GitHub', {
|
|
382
387
|
dryRun: this.dryRun,
|
|
383
388
|
...options,
|
|
384
|
-
}));
|
|
389
|
+
}), options);
|
|
385
390
|
}
|
|
386
391
|
|
|
387
|
-
public publishToPyPI(options: publishing.PublishToPyPiProps) {
|
|
392
|
+
public publishToPyPI(options: publishing.PublishToPyPiProps & AddPublishOptions) {
|
|
388
393
|
this.addPublish(new publishing.PublishToPyPi(this, 'PyPI', {
|
|
389
394
|
dryRun: this.dryRun,
|
|
390
395
|
...options,
|
|
391
|
-
}));
|
|
396
|
+
}), options);
|
|
392
397
|
}
|
|
393
398
|
|
|
394
399
|
public publishToS3(id: string, options: publishing.PublishToS3Props & AddPublishOptions) {
|
|
@@ -577,6 +582,7 @@ export interface AddChangeControlOptions {
|
|
|
577
582
|
*/
|
|
578
583
|
scheduleExpression?: string;
|
|
579
584
|
}
|
|
585
|
+
|
|
580
586
|
export interface AddPublishOptions {
|
|
581
587
|
/**
|
|
582
588
|
* The input artifact to use
|
|
@@ -584,6 +590,20 @@ export interface AddPublishOptions {
|
|
|
584
590
|
* @default Build output artifact
|
|
585
591
|
*/
|
|
586
592
|
inputArtifact?: cpipeline.Artifact;
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* Stage name to add publishing job to
|
|
596
|
+
*
|
|
597
|
+
* By default, this will be the stage name `'Publish'`, but if you want to
|
|
598
|
+
* separate out the publishing actions into different stages (in order to
|
|
599
|
+
* block/unblock them separately for example) you can change this.
|
|
600
|
+
*
|
|
601
|
+
* Stages appear in the pipeline in the order they are referenced for
|
|
602
|
+
* the first time.
|
|
603
|
+
*
|
|
604
|
+
* @default "Publish"
|
|
605
|
+
*/
|
|
606
|
+
readonly stageName?: string;
|
|
587
607
|
}
|
|
588
608
|
|
|
589
609
|
export interface AddShellableOptions extends ShellableProps {
|
|
@@ -27,7 +27,8 @@ fi
|
|
|
27
27
|
if [[ "${idempotency_token:-}" != "" ]]; then
|
|
28
28
|
echo "Idempotency token: $idempotency_token"
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
# Must use 's3 cp' to try and read exact filename. 's3 ls' would match prefixes as well.
|
|
31
|
+
aws s3 cp $BUCKET_URL/$idempotency_token - > /dev/null 2>&1 && {
|
|
31
32
|
echo "Token found, stopping."
|
|
32
33
|
exit 0
|
|
33
34
|
} || {
|