aws-cdk 2.1138.0 → 2.1140.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -2
- package/THIRD_PARTY_LICENSES +128 -38
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/docs/deploy-architecture.md +3 -3
- package/lib/api/cloud-assembly.d.ts +0 -1
- package/lib/api/cloud-assembly.js +1 -2
- package/lib/cli/cdk-toolkit.d.ts +56 -25
- package/lib/cli/cdk-toolkit.js +186 -149
- package/lib/cli/cli.js +68 -32
- package/lib/cli/io-host/cli-io-host.d.ts +51 -9
- package/lib/cli/io-host/cli-io-host.js +111 -5
- package/lib/cli/pretty-print-error.d.ts +13 -4
- package/lib/cli/pretty-print-error.js +25 -13
- package/lib/cli/telemetry/library-version.js +3 -5
- package/lib/cli/telemetry/session.d.ts +1 -0
- package/lib/cli/telemetry/session.js +25 -13
- package/lib/cli/util/guess-agent.js +46 -20
- package/lib/commands/docs.js +6 -38
- package/lib/commands/init/init.d.ts +1 -1
- package/lib/commands/init/init.js +17 -23
- package/lib/commands/init/os.d.ts +3 -2
- package/lib/commands/init/os.js +18 -110
- package/lib/commands/migrate.js +8 -5
- package/lib/cxapp/cloud-executable.d.ts +2 -2
- package/lib/cxapp/cloud-executable.js +11 -11
- package/lib/cxapp/index.d.ts +0 -1
- package/lib/cxapp/index.js +1 -2
- package/lib/index.js +3077 -2059
- package/lib/index_bg.wasm +0 -0
- package/lib/init-templates/.init-version.json +1 -1
- package/lib/private/tools.d.ts +1 -0
- package/lib/private/tools.js +2 -1
- package/package.json +14 -13
- package/lib/cxapp/cloud-assembly.d.ts +0 -79
- package/lib/cxapp/cloud-assembly.js +0 -142
|
@@ -7,27 +7,39 @@ exports.prettyPrintError = prettyPrintError;
|
|
|
7
7
|
/* eslint-disable no-console */
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
9
|
/* c8 ignore start */
|
|
10
|
-
function prettyPrintError(error, options = {}) {
|
|
10
|
+
function prettyPrintError(error, options = { soft: false, debug: false }) {
|
|
11
11
|
const err = ensureError(error);
|
|
12
|
-
const debug = options.debug ?? false;
|
|
13
|
-
const soft = options.soft ?? false;
|
|
14
12
|
// A soft error (for example a user-declined confirmation) is an expected outcome, not a crash.
|
|
15
13
|
// Present the message less scary.
|
|
16
|
-
const errorPaint = soft ? chalk_1.default.yellow : chalk_1.default.red;
|
|
14
|
+
const errorPaint = options.soft ? chalk_1.default.yellow : chalk_1.default.red;
|
|
17
15
|
console.error(errorPaint(err.message));
|
|
18
|
-
|
|
16
|
+
printCauses(err, options);
|
|
17
|
+
// Log the stack trace if we're on a developer workstation. Otherwise this will be into a minified
|
|
18
|
+
// file and the printed code line and stack trace are huge and useless.
|
|
19
|
+
if (options.debug) {
|
|
20
|
+
printTraces(err);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Recursively print all error causes recursively.
|
|
25
|
+
*/
|
|
26
|
+
function printCauses(err, options) {
|
|
27
|
+
if (err.cause && !options.soft) {
|
|
19
28
|
const cause = ensureError(err.cause);
|
|
20
|
-
console.error(chalk_1.default.yellow(cause.message));
|
|
21
|
-
|
|
29
|
+
console.error(chalk_1.default.yellow(`‣ ${cause.name}: ${cause.message}`));
|
|
30
|
+
printCauses(cause, options);
|
|
22
31
|
}
|
|
23
|
-
printTrace(err, debug);
|
|
24
32
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Recursively print all error traces.
|
|
35
|
+
*/
|
|
36
|
+
function printTraces(err) {
|
|
37
|
+
if (err.stack) {
|
|
29
38
|
console.debug(chalk_1.default.gray(err.stack));
|
|
30
39
|
}
|
|
40
|
+
if (err.cause) {
|
|
41
|
+
printTraces(ensureError(err.cause));
|
|
42
|
+
}
|
|
31
43
|
}
|
|
32
44
|
function ensureError(value) {
|
|
33
45
|
if (value instanceof Error)
|
|
@@ -42,4 +54,4 @@ function ensureError(value) {
|
|
|
42
54
|
return error;
|
|
43
55
|
}
|
|
44
56
|
/* c8 ignore stop */
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHR5LXByaW50LWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJldHR5LXByaW50LWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZ0JBLDRDQWVDO0FBL0JELCtCQUErQjtBQUMvQixrREFBMEI7QUFjMUIscUJBQXFCO0FBQ3JCLFNBQWdCLGdCQUFnQixDQUFDLEtBQWMsRUFBRSxVQUFxQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtJQUNqSCxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFL0IsK0ZBQStGO0lBQy9GLGtDQUFrQztJQUNsQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDO0lBRTNELE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFMUIsa0dBQWtHO0lBQ2xHLHVFQUF1RTtJQUN2RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsV0FBVyxDQUFDLEdBQVUsRUFBRSxPQUFrQztJQUNqRSxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxXQUFXLENBQUMsR0FBVTtJQUM3QixJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxJQUFJLEtBQUssWUFBWSxLQUFLO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFekMsSUFBSSxXQUFXLEdBQUcsd0NBQXdDLENBQUM7SUFDM0QsSUFBSSxDQUFDO1FBQ0gsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztJQUNULENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFDRCxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbnRlcmZhY2UgUHJldHR5RXJyb3JQcmludGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQcmludCB0aGUgZXJyb3IgYXMgYW4gZXhwZWN0ZWQgb3V0Y29tZSwgZm9yIGV4YW1wbGUgd2hlbiBhIHVzZXIgZGVjbGluZWQgYSBjb25maXJtYXRpb24gcHJvbXB0LlxuICAgKiBXaGlsZSB0aHJvd24gYXMgZXhjZXB0aW9ucywgdGhlc2Ugc2hvdWxkIHZpc3VhbGx5IG5vdCBiZSBwcmVzZW50ZWQgYXMgYSBjcmFzaC5cbiAgICovXG4gIHJlYWRvbmx5IHNvZnQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcmludHMgYXMgbXVjaCBkZWJ1ZyBvdXRwdXQgYXMgcG9zc2libGUuXG4gICAqL1xuICByZWFkb25seSBkZWJ1ZzogYm9vbGVhbjtcbn1cblxuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgZnVuY3Rpb24gcHJldHR5UHJpbnRFcnJvcihlcnJvcjogdW5rbm93biwgb3B0aW9uczogUHJldHR5RXJyb3JQcmludGVyT3B0aW9ucyA9IHsgc29mdDogZmFsc2UsIGRlYnVnOiBmYWxzZSB9KSB7XG4gIGNvbnN0IGVyciA9IGVuc3VyZUVycm9yKGVycm9yKTtcblxuICAvLyBBIHNvZnQgZXJyb3IgKGZvciBleGFtcGxlIGEgdXNlci1kZWNsaW5lZCBjb25maXJtYXRpb24pIGlzIGFuIGV4cGVjdGVkIG91dGNvbWUsIG5vdCBhIGNyYXNoLlxuICAvLyBQcmVzZW50IHRoZSBtZXNzYWdlIGxlc3Mgc2NhcnkuXG4gIGNvbnN0IGVycm9yUGFpbnQgPSBvcHRpb25zLnNvZnQgPyBjaGFsay55ZWxsb3cgOiBjaGFsay5yZWQ7XG5cbiAgY29uc29sZS5lcnJvcihlcnJvclBhaW50KGVyci5tZXNzYWdlKSk7XG4gIHByaW50Q2F1c2VzKGVyciwgb3B0aW9ucyk7XG5cbiAgLy8gTG9nIHRoZSBzdGFjayB0cmFjZSBpZiB3ZSdyZSBvbiBhIGRldmVsb3BlciB3b3Jrc3RhdGlvbi4gT3RoZXJ3aXNlIHRoaXMgd2lsbCBiZSBpbnRvIGEgbWluaWZpZWRcbiAgLy8gZmlsZSBhbmQgdGhlIHByaW50ZWQgY29kZSBsaW5lIGFuZCBzdGFjayB0cmFjZSBhcmUgaHVnZSBhbmQgdXNlbGVzcy5cbiAgaWYgKG9wdGlvbnMuZGVidWcpIHtcbiAgICBwcmludFRyYWNlcyhlcnIpO1xuICB9XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgcHJpbnQgYWxsIGVycm9yIGNhdXNlcyByZWN1cnNpdmVseS5cbiAqL1xuZnVuY3Rpb24gcHJpbnRDYXVzZXMoZXJyOiBFcnJvciwgb3B0aW9uczogUHJldHR5RXJyb3JQcmludGVyT3B0aW9ucykge1xuICBpZiAoZXJyLmNhdXNlICYmICFvcHRpb25zLnNvZnQpIHtcbiAgICBjb25zdCBjYXVzZSA9IGVuc3VyZUVycm9yKGVyci5jYXVzZSk7XG4gICAgY29uc29sZS5lcnJvcihjaGFsay55ZWxsb3coYOKAoyAke2NhdXNlLm5hbWV9OiAke2NhdXNlLm1lc3NhZ2V9YCkpO1xuICAgIHByaW50Q2F1c2VzKGNhdXNlLCBvcHRpb25zKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHByaW50IGFsbCBlcnJvciB0cmFjZXMuXG4gKi9cbmZ1bmN0aW9uIHByaW50VHJhY2VzKGVycjogRXJyb3IpIHtcbiAgaWYgKGVyci5zdGFjaykge1xuICAgIGNvbnNvbGUuZGVidWcoY2hhbGsuZ3JheShlcnIuc3RhY2spKTtcbiAgfVxuICBpZiAoZXJyLmNhdXNlKSB7XG4gICAgcHJpbnRUcmFjZXMoZW5zdXJlRXJyb3IoZXJyLmNhdXNlKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5zdXJlRXJyb3IodmFsdWU6IHVua25vd24pOiBFcnJvciB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKSByZXR1cm4gdmFsdWU7XG5cbiAgbGV0IHN0cmluZ2lmaWVkID0gJ1tVbmFibGUgdG8gc3RyaW5naWZ5IHRoZSB0aHJvd24gdmFsdWVdJztcbiAgdHJ5IHtcbiAgICBzdHJpbmdpZmllZCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfSBjYXRjaCB7XG4gIH1cblxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgQW4gdW5leHBlY3RlZCBlcnJvciB3YXMgdGhyb3duOiAke3N0cmluZ2lmaWVkfWApO1xuICByZXR1cm4gZXJyb3I7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuIl19
|
|
@@ -34,14 +34,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.getLibraryVersion = getLibraryVersion;
|
|
37
|
-
const child_process_1 = require("child_process");
|
|
38
37
|
const path = __importStar(require("path"));
|
|
39
|
-
const util_1 = require("util");
|
|
40
38
|
const fs = __importStar(require("fs-extra"));
|
|
39
|
+
const tools_1 = require("../../private/tools");
|
|
41
40
|
async function getLibraryVersion(ioHelper) {
|
|
42
41
|
try {
|
|
43
|
-
const
|
|
44
|
-
const { stdout } = await (0, util_1.promisify)(child_process_1.exec)(command);
|
|
42
|
+
const { stdout } = await (0, tools_1.run)([process.execPath, '-e', 'process.stdout.write(require.resolve("aws-cdk-lib"))']);
|
|
45
43
|
// stdout should be a file path but lets double check
|
|
46
44
|
if (!fs.existsSync(stdout)) {
|
|
47
45
|
await ioHelper.defaults.trace('Could not get CDK Library Version: require.resolve("aws-cdk-lib") did not return a file path');
|
|
@@ -60,4 +58,4 @@ async function getLibraryVersion(ioHelper) {
|
|
|
60
58
|
return;
|
|
61
59
|
}
|
|
62
60
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibGlicmFyeS12ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsOENBc0JDO0FBM0JELDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFFL0IsK0NBQTBDO0FBRW5DLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxRQUFrQjtJQUN4RCxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLFdBQUcsRUFBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLHNEQUFzRCxDQUFDLENBQUMsQ0FBQztRQUUvRyxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLDhGQUE4RixDQUFDLENBQUM7WUFDOUgsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUMxRSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7WUFDN0csT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RSxPQUFPO0lBQ1QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IHJ1biB9IGZyb20gJy4uLy4uL3ByaXZhdGUvdG9vbHMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TGlicmFyeVZlcnNpb24oaW9IZWxwZXI6IElvSGVscGVyKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgcnVuKFtwcm9jZXNzLmV4ZWNQYXRoLCAnLWUnLCAncHJvY2Vzcy5zdGRvdXQud3JpdGUocmVxdWlyZS5yZXNvbHZlKFwiYXdzLWNkay1saWJcIikpJ10pO1xuXG4gICAgLy8gc3Rkb3V0IHNob3VsZCBiZSBhIGZpbGUgcGF0aCBidXQgbGV0cyBkb3VibGUgY2hlY2tcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoc3Rkb3V0KSkge1xuICAgICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMudHJhY2UoJ0NvdWxkIG5vdCBnZXQgQ0RLIExpYnJhcnkgVmVyc2lvbjogcmVxdWlyZS5yZXNvbHZlKFwiYXdzLWNkay1saWJcIikgZGlkIG5vdCByZXR1cm4gYSBmaWxlIHBhdGgnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXRoVG9QYWNrYWdlSnNvbiA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUoc3Rkb3V0KSwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGNvbnN0IHBhY2thZ2VKc29uID0gZnMucmVhZEpTT05TeW5jKHBhdGhUb1BhY2thZ2VKc29uKTtcbiAgICBpZiAoIXBhY2thZ2VKc29uLnZlcnNpb24pIHtcbiAgICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLnRyYWNlKCdDb3VsZCBub3QgZ2V0IENESyBMaWJyYXJ5IFZlcnNpb246IHBhY2thZ2UuanNvbiBkb2VzIG5vdCBoYXZlIHZlcnNpb24gZmllbGQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUpzb24udmVyc2lvbjtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMudHJhY2UoYENvdWxkIG5vdCBnZXQgQ0RLIExpYnJhcnkgVmVyc2lvbjogJHtlfWApO1xuICAgIHJldHVybjtcbiAgfVxufVxuIl19
|
|
@@ -61,6 +61,7 @@ class TelemetrySession {
|
|
|
61
61
|
client;
|
|
62
62
|
_sessionInfo;
|
|
63
63
|
_commandSpan;
|
|
64
|
+
sigintListener;
|
|
64
65
|
_nextEventCounters;
|
|
65
66
|
count = 0;
|
|
66
67
|
loadTime;
|
|
@@ -116,18 +117,25 @@ class TelemetrySession {
|
|
|
116
117
|
};
|
|
117
118
|
// If SIGINT has a listener installed, its default behavior will be removed (Node.js will no longer exit).
|
|
118
119
|
// This ensures that on SIGINT we process safely close the telemetry session before exiting.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
120
|
+
// The listener is removed in end() -- without that, every begin() call (e.g. one per
|
|
121
|
+
// exec() invocation in a long-running host process) would permanently add another
|
|
122
|
+
// listener to the process-global SIGINT emitter, leaking the retained TelemetrySession
|
|
123
|
+
// (and everything it references) for the lifetime of the process.
|
|
124
|
+
this.sigintListener = () => {
|
|
125
|
+
void (async () => {
|
|
126
|
+
try {
|
|
127
|
+
await this.end({
|
|
128
|
+
name: error_1.USER_INTERRUPTED_CODE,
|
|
129
|
+
message: ABORTED_ERROR_MESSAGE,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
await this.ioHost.defaults.trace(`Ending Telemetry failed: ${e.message}`);
|
|
134
|
+
}
|
|
135
|
+
process.exit(1);
|
|
136
|
+
})();
|
|
137
|
+
};
|
|
138
|
+
process.on('SIGINT', this.sigintListener);
|
|
131
139
|
// Begin the session span
|
|
132
140
|
this._commandSpan = await this.ioHost.asIoHelper().span(messages_1.CLI_PRIVATE_SPAN.COMMAND).begin({});
|
|
133
141
|
}
|
|
@@ -207,6 +215,10 @@ class TelemetrySession {
|
|
|
207
215
|
* and notifies with an optional error message in the data.
|
|
208
216
|
*/
|
|
209
217
|
async end(error) {
|
|
218
|
+
if (this.sigintListener) {
|
|
219
|
+
process.removeListener('SIGINT', this.sigintListener);
|
|
220
|
+
this.sigintListener = undefined;
|
|
221
|
+
}
|
|
210
222
|
await this._commandSpan?.end({ error });
|
|
211
223
|
// Ideally span.end() should no-op if called twice, but that is not the case right now
|
|
212
224
|
this._commandSpan = undefined;
|
|
@@ -349,4 +361,4 @@ async function tryDetectAmznPackage() {
|
|
|
349
361
|
}
|
|
350
362
|
return undefined;
|
|
351
363
|
}
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOFRBLDBEQU9DO0FBclVELDZDQUF5QztBQUN6QyxxREFBdUM7QUFDdkMsdUNBQXlCO0FBQ3pCLDhDQUFnQztBQUNoQyxzREFBb0Q7QUFDcEQsdURBQThEO0FBQzlELHVEQUFzRDtBQUN0RCw2Q0FBNkU7QUFLN0UsOENBQStDO0FBRy9DLG9EQUF5RDtBQUN6RCxtQ0FBa0M7QUFDbEMsd0NBQTJDO0FBQzNDLG1DQUFnRDtBQUNoRCx1REFBdUQ7QUFFdkQsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7QUErQnpDLE1BQWEsZ0JBQWdCO0lBU0U7SUFSckIsTUFBTSxDQUFZO0lBQ2xCLE1BQU0sQ0FBaUI7SUFDdkIsWUFBWSxDQUFpQjtJQUM3QixZQUFZLENBQTZCO0lBQ3pDLGtCQUFrQixDQUEwQjtJQUM1QyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsUUFBUSxDQUFVO0lBRTFCLFlBQTZCLEtBQTRCO1FBQTVCLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQiw2QkFBNkI7UUFDN0IsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFBLHlDQUE0QixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMs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LEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxTQUFTO1FBQ1QsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ04sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLDJCQUEyQjtJQUM3QixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNOLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwyQkFBMkI7SUFDN0IsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRobGliIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVJbnN0YWxsYXRpb25JZCB9IGZyb20gJy4vaW5zdGFsbGF0aW9uLWlkJztcbmltcG9ydCB7IGdldExpYnJhcnlWZXJzaW9uIH0gZnJvbSAnLi9saWJyYXJ5LXZlcnNpb24nO1xuaW1wb3J0IHsgc2FuaXRpemVDb21tYW5kTGluZUFyZ3VtZW50cywgc2FuaXRpemVDb250ZXh0IH0gZnJvbSAnLi9zYW5pdGF0aW9uJztcbmltcG9ydCB7IHR5cGUgRXZlbnRUeXBlLCB0eXBlIFNlc3Npb25TY2hlbWEsIHR5cGUgU3RhdGUsIHR5cGUgRXJyb3JEZXRhaWxzIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBJVGVsZW1ldHJ5U2luayB9IGZyb20gJy4vc2luay9zaW5rLWludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tICcuLi8uLi9hcGkvY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IElNZXNzYWdlU3BhbiB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IGRldGVjdENpU3lzdGVtIH0gZnJvbSAnLi4vY2ktc3lzdGVtcyc7XG5pbXBvcnQgdHlwZSB7IENsaUlvSG9zdCB9IGZyb20gJy4uL2lvLWhvc3QvY2xpLWlvLWhvc3QnO1xuaW1wb3J0IHR5cGUgeyBFdmVudFJlc3VsdCB9IGZyb20gJy4uL3RlbGVtZXRyeS9tZXNzYWdlcyc7XG5pbXBvcnQgeyBDTElfUFJJVkFURV9TUEFOIH0gZnJvbSAnLi4vdGVsZW1ldHJ5L21lc3NhZ2VzJztcbmltcG9ydCB7IGlzQ0kgfSBmcm9tICcuLi91dGlsL2NpJztcbmltcG9ydCB7IHZlcnNpb25OdW1iZXIgfSBmcm9tICcuLi92ZXJzaW9uJztcbmltcG9ydCB7IFVTRVJfSU5URVJSVVBURURfQ09ERSB9IGZyb20gJy4vZXJyb3InO1xuaW1wb3J0IHsgd2l0aFRlbGVtZXRyeVN0YXRlIH0gZnJvbSAnLi90ZWxlbWV0cnktc3RhdGUnO1xuXG5jb25zdCBBQk9SVEVEX0VSUk9SX01FU1NBR0UgPSAnX19DREstVG9vbGtpdF9fQWJvcnRlZCc7XG5cbi8qKlxuICogVmFsaWQgdXNlciBhZ2VudCBwcmVmaXhlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHJlcG9ydCB0aHJvdWdoIENES19DTElfVVNFUkFHRU5ULlxuICogVGhpcyBjcmVhdGVzIGEgbWVjaGFuaXNtIHRvIHJlcG9ydCB1c2VyIGFnZW50cyB3ZSBjb250cm9sLlxuICovXG5jb25zdCBWQUxJRF9VU0VSX0FHRU5UUyA9IFsnYXdzLWJsb2NrcyddO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeVNlc3Npb25Qcm9wcyB7XG4gIHJlYWRvbmx5IGlvSG9zdDogQ2xpSW9Ib3N0O1xuICByZWFkb25seSBjbGllbnQ6IElUZWxlbWV0cnlTaW5rO1xuICByZWFkb25seSBhcmd1bWVudHM6IGFueTtcbiAgcmVhZG9ubHkgY29udGV4dDogQ29udGV4dDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWxlbWV0cnlFdmVudCB7XG4gIHJlYWRvbmx5IGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICByZWFkb25seSBkdXJhdGlvbjogbnVtYmVyO1xuICByZWFkb25seSBlcnJvcj86IEVycm9yRGV0YWlscztcbiAgcmVhZG9ubHkgY291bnRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xufVxuXG4vKipcbiAqIFRpbWVyIG9mIGEgc2luZ2xlIGV2ZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGltaW5nIHtcbiAgLyoqXG4gICAqIFRvdGFsIHRpbWUgc3BlbnQgaW4gdGhpcyBvcGVyYXRpb25cbiAgICovXG4gIHRvdGFsTXM6IG51bWJlcjtcblxuICAvKipcbiAgICogQ291bnQgb2Ygb3BlcmF0aW9ucyB0aGF0IHRvZ2V0aGVyIHRvb2sgYHRvdGFsTXNgLlxuICAgKi9cbiAgY291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFRlbGVtZXRyeVNlc3Npb24ge1xuICBwcml2YXRlIGlvSG9zdDogQ2xpSW9Ib3N0O1xuICBwcml2YXRlIGNsaWVudDogSVRlbGVtZXRyeVNpbms7XG4gIHByaXZhdGUgX3Nlc3Npb25JbmZvPzogU2Vzc2lvblNjaGVtYTtcbiAgcHJpdmF0ZSBfY29tbWFuZFNwYW4/OiBJTWVzc2FnZVNwYW48RXZlbnRSZXN1bHQ+O1xuICBwcml2YXRlIF9uZXh0RXZlbnRDb3VudGVycz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIHByaXZhdGUgY291bnQgPSAwO1xuICBwcml2YXRlIGxvYWRUaW1lPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFRlbGVtZXRyeVNlc3Npb25Qcm9wcykge1xuICAgIHRoaXMuaW9Ib3N0ID0gcHJvcHMuaW9Ib3N0O1xuICAgIHRoaXMuY2xpZW50ID0gcHJvcHMuY2xpZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzcGFuIHRoYXQgcmVwcmVzZW50cyB0aGUgQ0xJIGludm9jYXRpb24uXG4gICAqXG4gICAqIEluIHRoZSBjb2RlLCB0aGlzIHNwYW4gaXMgbmFtZWQgQ09NTUFORCBidXQgdGhlIG1hdGNoaW5nIGV2ZW50IHR5cGVcbiAgICogaW4gdGVsZW1ldHJ5IHdpbGwgYmUgSU5WT0tFLlxuICAgKlxuICAgKiBXaWxsIGJlIGVtaXR0ZWQgZXhhY3RseSBvbmNlLCBhdCB0aGUgZW5kIG9mIHRoZSBDTEkgb3BlcmF0aW9uLlxuICAgKi9cbiAgcHVibGljIGdldCBjb21tYW5kU3BhbigpOiBJTWVzc2FnZVNwYW48RXZlbnRSZXN1bHQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fY29tbWFuZFNwYW47XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYmVnaW4oKSB7XG4gICAgLy8gc2FuaXRpemUgdGhlIHJhdyBjbGkgaW5wdXRcbiAgICBjb25zdCB7IHBhdGgsIHBhcmFtZXRlcnMgfSA9IHNhbml0aXplQ29tbWFuZExpbmVBcmd1bWVudHModGhpcy5wcm9wcy5hcmd1bWVudHMpO1xuICAgIHRoaXMuX3Nlc3Npb25JbmZvID0ge1xuICAgICAgaWRlbnRpZmllcnM6IHtcbiAgICAgICAgaW5zdGFsbGF0aW9uSWQ6IGF3YWl0IGdldE9yQ3JlYXRlSW5zdGFsbGF0aW9uSWQodGhpcy5pb0hvc3QuYXNJb0hlbHBlcigpKSxcbiAgICAgICAgc2Vzc2lvbklkOiByYW5kb21VVUlEKCksXG4gICAgICAgIHRlbGVtZXRyeVZlcnNpb246ICcyLjAnLFxuICAgICAgICBjZGtDbGlWZXJzaW9uOiB2ZXJzaW9uTnVtYmVyKCksXG4gICAgICAgIGNka0xpYnJhcnlWZXJzaW9uOiBhd2FpdCBnZXRMaWJyYXJ5VmVyc2lvbih0aGlzLmlvSG9zdC5hc0lvSGVscGVyKCkpLFxuICAgICAgICBhbXpuUGFja2FnZTogYXdhaXQgdHJ5RGV0ZWN0QW16blBhY2thZ2UoKSxcbiAgICAgIH0sXG4gICAgICBldmVudDoge1xuICAgICAgICBjb21tYW5kOiB7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgY29udGV4dDogc2FuaXRpemVDb250ZXh0KHRoaXMucHJvcHMuY29udGV4dCksXG4gICAgICAgICAgICAuLi4oaXNWYWxpZFdyYXBwZXJVc2VyQWdlbnQocHJvY2Vzcy5lbnYuQ0RLX0NMSV9VU0VSQUdFTlQpXG4gICAgICAgICAgICAgID8geyBjZGtDbGlVc2VyQWdlbnQ6IHsgW3Byb2Nlc3MuZW52LkNES19DTElfVVNFUkFHRU5UXTogdHJ1ZSB9IH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBjaTogaXNDSSgpIHx8IEJvb2xlYW4oZGV0ZWN0Q2lTeXN0ZW0oKSksXG4gICAgICAgIG9zOiB7XG4gICAgICAgICAgcGxhdGZvcm06IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgICAgICAgcmVsZWFzZTogcHJvY2Vzcy5yZWxlYXNlLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5vZGVWZXJzaW9uOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICB9LFxuICAgICAgcHJvamVjdDoge30sXG4gICAgfTtcblxuICAgIC8vIElmIFNJR0lOVCBoYXMgYSBsaXN0ZW5lciBpbnN0YWxsZWQsIGl0cyBkZWZhdWx0IGJlaGF2aW9yIHdpbGwgYmUgcmVtb3ZlZCAoTm9kZS5qcyB3aWxsIG5vIGxvbmdlciBleGl0KS5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBvbiBTSUdJTlQgd2UgcHJvY2VzcyBzYWZlbHkgY2xvc2UgdGhlIHRlbGVtZXRyeSBzZXNzaW9uIGJlZm9yZSBleGl0aW5nLlxuICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsIGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW5kKHtcbiAgICAgICAgICBuYW1lOiBVU0VSX0lOVEVSUlVQVEVEX0NPREUsXG4gICAgICAgICAgbWVzc2FnZTogQUJPUlRFRF9FUlJPUl9NRVNTQUdFLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBhd2FpdCB0aGlzLmlvSG9zdC5kZWZhdWx0cy50cmFjZShgRW5kaW5nIFRlbGVtZXRyeSBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH0pO1xuXG4gICAgLy8gQmVnaW4gdGhlIHNlc3Npb24gc3BhblxuICAgIHRoaXMuX2NvbW1hbmRTcGFuID0gYXdhaXQgdGhpcy5pb0hvc3QuYXNJb0hlbHBlcigpLnNwYW4oQ0xJX1BSSVZBVEVfU1BBTi5DT01NQU5EKS5iZWdpbih7fSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYXR0YWNoUmVnaW9uKHJlZ2lvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXNzaW9uSW5mby5pZGVudGlmaWVycyA9IHtcbiAgICAgIC4uLnRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMsXG4gICAgICByZWdpb24sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggYSBsYW5ndWFnZSBndWVzc1xuICAgKi9cbiAgcHVibGljIGF0dGFjaExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBEb24ndCB3YW50IHRvIGNyYXNoIGFjY2lkZW50YWxseVxuICAgIGlmICghdGhpcy5fc2Vzc2lvbkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobGFuZ3VhZ2UpIHtcbiAgICAgIG11dGFibGUodGhpcy5zZXNzaW9uSW5mby5wcm9qZWN0KS5sYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggb3VyIGJlc3QgZ3Vlc3MgYXQgcnVubmluZyB1bmRlciBhbiBhZ2VudCBvciBub3RcbiAgICovXG4gIHB1YmxpYyBhdHRhY2hBZ2VudChpc0FnZW50OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0byBjcmFzaCBhY2NpZGVudGFsbHlcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbXV0YWJsZSh0aGlzLnNlc3Npb25JbmZvLmVudmlyb25tZW50KS5hZ2VudCA9IGlzQWdlbnQ7XG4gIH1cblxuICAvKipcbiAgICogVGVtcG9yYXJpbHkgYXR0YWNoIGNvdW50ZXJzIGZvciB0aGUgbmV4dCBldmVudCBvcGVyYXRpb24uXG4gICAqXG4gICAqIFRoZXkgbWF5IGJlIGNvbW1pdHRlZCB0byB0aGUgc2VudCB0ZWxlbWV0cnkgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgYXR0YWNoQ291bnRlcnNUb05leHRFdmVudChjb3VudGVyczogUmVjb3JkPHN0cmluZywgbnVtYmVyPikge1xuICAgIHRoaXMuX25leHRFdmVudENvdW50ZXJzID0gY291bnRlcnM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBsb2FkIHRpbWUgKHdpbGwgYmUgZW1pdHRlZCB3aXRoIHRoZSBDT01NQU5EIHNwYW4pXG4gICAqL1xuICBwdWJsaWMgYXR0YWNoTG9hZFRpbWUobG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMubG9hZFRpbWUgPSBsb2FkVGltZTtcbiAgICB0aGlzLl9jb21tYW5kU3Bhbj8uYWRkVGltZXIoJ2xvYWQnLCBsb2FkVGltZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFyayB3aGVuIHRoZSBhY3R1YWwgQ0xJIG9wZXJhdGlvbiBzdGFydHNcbiAgICpcbiAgICogRW1pdHRlZCBhcyBwYXJ0IG9mIHRoZSBDT01NQU5EIHNwYW4uXG4gICAqL1xuICBwdWJsaWMgbWFya09wZXJhdGlvblN0YXJ0KCkge1xuICAgIGlmICh0aGlzLmxvYWRUaW1lKSB7XG4gICAgICB0aGlzLl9jb21tYW5kU3Bhbj8uYWRkVGltZXIoJ2luaXQnLCBwZXJmb3JtYW5jZS5ub3coKSAtIHRoaXMubG9hZFRpbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggdGhlIENESyBsaWJyYXJ5IHZlcnNpb25cbiAgICpcbiAgICogQnkgZGVmYXVsdCB0aGUgdGVsZW1ldHJ5IHdpbGwgZ3Vlc3MgYXQgdGhlIENESyBsaWJyYXJ5IHZlcnNpb24gaWYgaXQgc29cbiAgICogaGFwcGVucyB0aGF0IHRoZSBDREsgcHJvamVjdCBpcyBhbiBOUE0gcHJvamVjdCBhbmQgdGhlIENESyBDTEkgaXMgZXhlY3V0ZWRcbiAgICogaW4gdGhlIHJvb3Qgb2YgTlBNIHByb2plY3Qgd2l0aCBgYXdzLWNkay1saWJgIGF2YWlsYWJsZSBpbiBgbm9kZV9tb2R1bGVzYC5cbiAgICogVGhpcyBtYXkgc3VjY2VlZCBvciBtYXkgZmFpbC5cbiAgICpcbiAgICogT25jZSB3ZSBoYXZlIHByb2R1Y2VkIGFuZCBsb2FkZWQgdGhlIGNsb3VkIGFzc2VtYmx5IG1vcmUgYWNjdXJhdGVcbiAgICogaW5mb3JtYXRpb24gYmVjb21lcyBhdmFpbGFibGUgdGhhdCB3ZSBjYW4gYWRkIGluLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENka0xpYlZlcnNpb24obGliVmVyc2lvbjogc3RyaW5nKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0byBjcmFzaCBhY2NpZGVudGFsbHlcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbXV0YWJsZSh0aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzKS5jZGtMaWJyYXJ5VmVyc2lvbiA9IGxpYlZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgY29tbWFuZCBpcyBjb21wbGV0ZSwgc28gaXMgdGhlIENsaUlvSG9zdC4gRW5kcyB0aGUgc3BhbiBvZiB0aGUgZW50aXJlIENsaUlvSG9zdFxuICAgKiBhbmQgbm90aWZpZXMgd2l0aCBhbiBvcHRpb25hbCBlcnJvciBtZXNzYWdlIGluIHRoZSBkYXRhLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVuZChlcnJvcj86IEVycm9yRGV0YWlscykge1xuICAgIGF3YWl0IHRoaXMuX2NvbW1hbmRTcGFuPy5lbmQoeyBlcnJvciB9KTtcbiAgICAvLyBJZGVhbGx5IHNwYW4uZW5kKCkgc2hvdWxkIG5vLW9wIGlmIGNhbGxlZCB0d2ljZSwgYnV0IHRoYXQgaXMgbm90IHRoZSBjYXNlIHJpZ2h0IG5vd1xuICAgIHRoaXMuX2NvbW1hbmRTcGFuID0gdW5kZWZpbmVkO1xuICAgIGF3YWl0IHRoaXMuY2xpZW50LmZsdXNoKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1pdChldmVudDogVGVsZW1ldHJ5RXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNvdW50ICs9IDE7XG5cbiAgICBjb25zdCBjb3VudGVycyA9IHtcbiAgICAgIC4uLnRoaXMuX25leHRFdmVudENvdW50ZXJzLFxuICAgICAgLi4uZXZlbnQuY291bnRlcnMsXG4gICAgfTtcbiAgICB0aGlzLl9uZXh0RXZlbnRDb3VudGVycyA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChldmVudC5ldmVudFR5cGUgPT0gJ0RFUExPWScpIHtcbiAgICAgIGF3YWl0IHRoaXMudHJhY2tEZXBsb3lTdGF0aXN0aWNzKGV2ZW50LmVycm9yID09PSB1bmRlZmluZWQsIGNvdW50ZXJzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZW1pdCh7XG4gICAgICBldmVudDoge1xuICAgICAgICBjb21tYW5kOiB0aGlzLnNlc3Npb25JbmZvLmV2ZW50LmNvbW1hbmQsXG4gICAgICAgIHN0YXRlOiBnZXRTdGF0ZShldmVudC5lcnJvciksXG4gICAgICAgIGV2ZW50VHlwZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgfSxcbiAgICAgIGlkZW50aWZpZXJzOiB7XG4gICAgICAgIC4uLnRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMsXG4gICAgICAgIGV2ZW50SWQ6IGAke3RoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMuc2Vzc2lvbklkfToke3RoaXMuY291bnR9YCxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuc2Vzc2lvbkluZm8uZW52aXJvbm1lbnQsXG4gICAgICBwcm9qZWN0OiB0aGlzLnNlc3Npb25JbmZvLnByb2plY3QsXG4gICAgICBkdXJhdGlvbjoge1xuICAgICAgICB0b3RhbDogZXZlbnQuZHVyYXRpb24sXG4gICAgICB9LFxuICAgICAgLi4uKGV2ZW50LmVycm9yID8ge1xuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIG5hbWU6IGV2ZW50LmVycm9yLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9IDoge30pLFxuICAgICAgLi4uKE9iamVjdC5rZXlzKGNvdW50ZXJzKS5sZW5ndGggPiAwID8geyBjb3VudGVycyB9IDoge30pLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBERVBMT1kgZXZlbnQsIHRyYWNrIHNvbWUgYWRkaXRpb25hbCBzdGF0aXN0aWNzIGFib3V0IGl0XG4gICAqXG4gICAqIFdlIHVzZSB0aGlzIHRvIG1lYXN1cmUgdGhpbmdzIGFib3V0IGRlcGxveW1lbnQgZmFpbHVyZXMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZlxuICAgKiBmYWlsZWQgREVQTE9ZIGV2ZW50cyBpbiBhIHNlcXVlbmNlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB0cmFja0RlcGxveVN0YXRpc3RpY3MoaXNTdWNjZXNzZnVsOiBib29sZWFuLCBjb3VudGVyczogUmVjb3JkPHN0cmluZywgbnVtYmVyPikge1xuICAgIGF3YWl0IHdpdGhUZWxlbWV0cnlTdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHJlY2VudEZhaWx1cmVzID0gc3RhdGUuc2VxdWVudGlhbERlcGxveW1lbnRGYWlsdXJlcyA/PyAwO1xuXG4gICAgICBpZiAoaXNTdWNjZXNzZnVsKSB7XG4gICAgICAgIHN0YXRlLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXMgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUuc2VxdWVudGlhbERlcGxveW1lbnRGYWlsdXJlcyA9IHJlY2VudEZhaWx1cmVzICsgMTtcbiAgICAgIH1cblxuICAgICAgY291bnRlcnMuc2VxdWVudGlhbERlcGxveW1lbnRGYWlsdXJlcyA9IHN0YXRlLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXM7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBzZXNzaW9uSW5mbygpOiBTZXNzaW9uU2NoZW1hIHtcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdTZXNzaW9uTm90SW5pdGlhbGl6ZWQnLCAnU2Vzc2lvbiBJbmZvIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBiZWdpbigpIGZpcnN0LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbkluZm87XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U3RhdGUoZXJyb3I/OiBFcnJvckRldGFpbHMpOiBTdGF0ZSB7XG4gIGlmIChlcnJvcikge1xuICAgIHJldHVybiBpc0Fib3J0ZWRFcnJvcihlcnJvcikgPyAnQUJPUlRFRCcgOiAnRkFJTEVEJztcbiAgfVxuICByZXR1cm4gJ1NVQ0NFRURFRCc7XG59XG5cbmZ1bmN0aW9uIGlzQWJvcnRlZEVycm9yKGVycm9yPzogRXJyb3JEZXRhaWxzKSB7XG4gIGlmIChlcnJvcj8ubmFtZSA9PT0gJ1Rvb2xraXRFcnJvcicgJiYgZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKEFCT1JURURfRVJST1JfTUVTU0FHRSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG11dGFibGU8QSBleHRlbmRzIG9iamVjdD4oeDogQSk6IHsgLXJlYWRvbmx5IFtrIGluIGtleW9mIEFdOiBBW2tdIH0ge1xuICByZXR1cm4geDtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhhdCB0aGUgQ0RLX0NMSV9VU0VSQUdFTlQgZW52IHZhciB2YWx1ZSBtYXRjaGVzXG4gKiB0aGUgZXhwZWN0ZWQgZm9ybWF0OiBgPG5hbWU+Lzx2ZXJzaW9uPi88bW9kZT5gIHdoZXJlIG5hbWUgaXMgb25lIG9mXG4gKiBWQUxJRF9VU0VSX0FHRU5UUyBhbmQgbW9kZSBpcyBlaXRoZXIgYHNhbmRib3hgIG9yIGBwcm9kdWN0aW9uYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRXcmFwcGVyVXNlckFnZW50KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2YWx1ZSBpcyBzdHJpbmcge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJy8nKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMykgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBbbmFtZSwgX3ZlcnNpb24sIG1vZGVdID0gcGFydHM7XG4gIGlmICghVkFMSURfVVNFUl9BR0VOVFMuaW5jbHVkZXMobmFtZSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIG1vZGUgPT09ICdzYW5kYm94JyB8fCBtb2RlID09PSAncHJvZHVjdGlvbic7XG59XG5cbi8qKlxuICogVHJ5IHRvIGRldGVjdCBhIENvbmZpZyBmaWxlIG9mIHdoaWNoIHRoZSBmaXJzdCBsaW5lIGxvb2tzIGxpa2VcbiAqXG4gKiBgYGBcbiAqIHBhY2thZ2UuPHBhY2thZ2VOYW1lPiA9IHtcbiAqIGBgYFxuICpcbiAqIE9yIGEgYGJyYXppbC5pb25gIGZpbGUgd2l0aCBhIGxpbmUgbGlrZVxuICpcbiAqIGBgYFxuICogbmFtZTogXCI8cHJvamVjdE5hbWU+XCJcbiAqIGBgYFxuICpcbiAqIFRoZXkgd2lsbCBhbHdheXMgYmUgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIGFuZCB3ZSB3aWxsXG4gKiBvbmx5IGRvIHRoZSBjaGVjayBpZiBpdCBsb29rcyBsaWtlIHdlJ3JlIG9uIGFuIEFtem4gZGV2ZWxvcGVyIG1hY2hpbmUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHRyeURldGVjdEFtem5QYWNrYWdlKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMuc3RhdChwYXRobGliLmpvaW4ob3MuaG9tZWRpcigpLCAnLm1pZHdheScpKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gRU5PRU5UXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWdGaWxlID0gYXdhaXQgZnMucmVhZEZpbGUoJ0NvbmZpZycsICd1dGYtOCcpO1xuICAgIGNvbnN0IG0gPSBjb25maWdGaWxlLm1hdGNoKC9ecGFja2FnZVxcLihcXFMrKVxccyo9L20pO1xuICAgIGlmIChtKSB7XG4gICAgICByZXR1cm4gbVsxXTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIEFueSBlcnJvciBtZWFucyBubyBkaWNlLlxuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBpb25GaWxlID0gYXdhaXQgZnMucmVhZEZpbGUoJ2JyYXppbC5pb24nLCAndXRmLTgnKTtcbiAgICBjb25zdCBtID0gaW9uRmlsZS5tYXRjaCgvKF58XFxzKW5hbWU6XFxzKlwiKFteXCJdKylcIi9tKTtcbiAgICBpZiAobSkge1xuICAgICAgcmV0dXJuIG1bMl07XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBBbnkgZXJyb3IgbWVhbnMgbm8gZGljZS5cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
364
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMFVBLDBEQU9DO0FBalZELDZDQUF5QztBQUN6QyxxREFBdUM7QUFDdkMsdUNBQXlCO0FBQ3pCLDhDQUFnQztBQUNoQyxzREFBb0Q7QUFDcEQsdURBQThEO0FBQzlELHVEQUFzRDtBQUN0RCw2Q0FBNkU7QUFLN0UsOENBQStDO0FBRy9DLG9EQUF5RDtBQUN6RCxtQ0FBa0M7QUFDbEMsd0NBQTJDO0FBQzNDLG1DQUFnRDtBQUNoRCx1REFBdUQ7QUFFdkQsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7QUErQnpDLE1BQWEsZ0JBQWdCO0lBVUU7SUFUckIsTUFBTSxDQUFZO0lBQ2xCLE1BQU0sQ0FBaUI7SUFDdkIsWUFBWSxDQUFpQjtJQUM3QixZQUFZLENBQTZCO0lBQ3pDLGNBQWMsQ0FBYztJQUM1QixrQkFBa0IsQ0FBMEI7SUFDNUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNWLFFBQVEsQ0FBVTtJQUUxQixZQUE2QixLQUE0QjtRQUE1QixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsNkJBQTZCO1FBQzdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBQSx5Q0FBNEIsRUFBQyxJQUFJ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SUFBQyxNQUFNLENBQUM7UUFDUCwyQkFBMkI7SUFDN0IsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRobGliIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVJbnN0YWxsYXRpb25JZCB9IGZyb20gJy4vaW5zdGFsbGF0aW9uLWlkJztcbmltcG9ydCB7IGdldExpYnJhcnlWZXJzaW9uIH0gZnJvbSAnLi9saWJyYXJ5LXZlcnNpb24nO1xuaW1wb3J0IHsgc2FuaXRpemVDb21tYW5kTGluZUFyZ3VtZW50cywgc2FuaXRpemVDb250ZXh0IH0gZnJvbSAnLi9zYW5pdGF0aW9uJztcbmltcG9ydCB7IHR5cGUgRXZlbnRUeXBlLCB0eXBlIFNlc3Npb25TY2hlbWEsIHR5cGUgU3RhdGUsIHR5cGUgRXJyb3JEZXRhaWxzIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBJVGVsZW1ldHJ5U2luayB9IGZyb20gJy4vc2luay9zaW5rLWludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tICcuLi8uLi9hcGkvY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IElNZXNzYWdlU3BhbiB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IGRldGVjdENpU3lzdGVtIH0gZnJvbSAnLi4vY2ktc3lzdGVtcyc7XG5pbXBvcnQgdHlwZSB7IENsaUlvSG9zdCB9IGZyb20gJy4uL2lvLWhvc3QvY2xpLWlvLWhvc3QnO1xuaW1wb3J0IHR5cGUgeyBFdmVudFJlc3VsdCB9IGZyb20gJy4uL3RlbGVtZXRyeS9tZXNzYWdlcyc7XG5pbXBvcnQgeyBDTElfUFJJVkFURV9TUEFOIH0gZnJvbSAnLi4vdGVsZW1ldHJ5L21lc3NhZ2VzJztcbmltcG9ydCB7IGlzQ0kgfSBmcm9tICcuLi91dGlsL2NpJztcbmltcG9ydCB7IHZlcnNpb25OdW1iZXIgfSBmcm9tICcuLi92ZXJzaW9uJztcbmltcG9ydCB7IFVTRVJfSU5URVJSVVBURURfQ09ERSB9IGZyb20gJy4vZXJyb3InO1xuaW1wb3J0IHsgd2l0aFRlbGVtZXRyeVN0YXRlIH0gZnJvbSAnLi90ZWxlbWV0cnktc3RhdGUnO1xuXG5jb25zdCBBQk9SVEVEX0VSUk9SX01FU1NBR0UgPSAnX19DREstVG9vbGtpdF9fQWJvcnRlZCc7XG5cbi8qKlxuICogVmFsaWQgdXNlciBhZ2VudCBwcmVmaXhlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHJlcG9ydCB0aHJvdWdoIENES19DTElfVVNFUkFHRU5ULlxuICogVGhpcyBjcmVhdGVzIGEgbWVjaGFuaXNtIHRvIHJlcG9ydCB1c2VyIGFnZW50cyB3ZSBjb250cm9sLlxuICovXG5jb25zdCBWQUxJRF9VU0VSX0FHRU5UUyA9IFsnYXdzLWJsb2NrcyddO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeVNlc3Npb25Qcm9wcyB7XG4gIHJlYWRvbmx5IGlvSG9zdDogQ2xpSW9Ib3N0O1xuICByZWFkb25seSBjbGllbnQ6IElUZWxlbWV0cnlTaW5rO1xuICByZWFkb25seSBhcmd1bWVudHM6IGFueTtcbiAgcmVhZG9ubHkgY29udGV4dDogQ29udGV4dDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWxlbWV0cnlFdmVudCB7XG4gIHJlYWRvbmx5IGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICByZWFkb25seSBkdXJhdGlvbjogbnVtYmVyO1xuICByZWFkb25seSBlcnJvcj86IEVycm9yRGV0YWlscztcbiAgcmVhZG9ubHkgY291bnRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xufVxuXG4vKipcbiAqIFRpbWVyIG9mIGEgc2luZ2xlIGV2ZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGltaW5nIHtcbiAgLyoqXG4gICAqIFRvdGFsIHRpbWUgc3BlbnQgaW4gdGhpcyBvcGVyYXRpb25cbiAgICovXG4gIHRvdGFsTXM6IG51bWJlcjtcblxuICAvKipcbiAgICogQ291bnQgb2Ygb3BlcmF0aW9ucyB0aGF0IHRvZ2V0aGVyIHRvb2sgYHRvdGFsTXNgLlxuICAgKi9cbiAgY291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFRlbGVtZXRyeVNlc3Npb24ge1xuICBwcml2YXRlIGlvSG9zdDogQ2xpSW9Ib3N0O1xuICBwcml2YXRlIGNsaWVudDogSVRlbGVtZXRyeVNpbms7XG4gIHByaXZhdGUgX3Nlc3Npb25JbmZvPzogU2Vzc2lvblNjaGVtYTtcbiAgcHJpdmF0ZSBfY29tbWFuZFNwYW4/OiBJTWVzc2FnZVNwYW48RXZlbnRSZXN1bHQ+O1xuICBwcml2YXRlIHNpZ2ludExpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfbmV4dEV2ZW50Q291bnRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBwcml2YXRlIGNvdW50ID0gMDtcbiAgcHJpdmF0ZSBsb2FkVGltZT86IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBUZWxlbWV0cnlTZXNzaW9uUHJvcHMpIHtcbiAgICB0aGlzLmlvSG9zdCA9IHByb3BzLmlvSG9zdDtcbiAgICB0aGlzLmNsaWVudCA9IHByb3BzLmNsaWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3BhbiB0aGF0IHJlcHJlc2VudHMgdGhlIENMSSBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBJbiB0aGUgY29kZSwgdGhpcyBzcGFuIGlzIG5hbWVkIENPTU1BTkQgYnV0IHRoZSBtYXRjaGluZyBldmVudCB0eXBlXG4gICAqIGluIHRlbGVtZXRyeSB3aWxsIGJlIElOVk9LRS5cbiAgICpcbiAgICogV2lsbCBiZSBlbWl0dGVkIGV4YWN0bHkgb25jZSwgYXQgdGhlIGVuZCBvZiB0aGUgQ0xJIG9wZXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgY29tbWFuZFNwYW4oKTogSU1lc3NhZ2VTcGFuPEV2ZW50UmVzdWx0PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbW1hbmRTcGFuO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGJlZ2luKCkge1xuICAgIC8vIHNhbml0aXplIHRoZSByYXcgY2xpIGlucHV0XG4gICAgY29uc3QgeyBwYXRoLCBwYXJhbWV0ZXJzIH0gPSBzYW5pdGl6ZUNvbW1hbmRMaW5lQXJndW1lbnRzKHRoaXMucHJvcHMuYXJndW1lbnRzKTtcbiAgICB0aGlzLl9zZXNzaW9uSW5mbyA9IHtcbiAgICAgIGlkZW50aWZpZXJzOiB7XG4gICAgICAgIGluc3RhbGxhdGlvbklkOiBhd2FpdCBnZXRPckNyZWF0ZUluc3RhbGxhdGlvbklkKHRoaXMuaW9Ib3N0LmFzSW9IZWxwZXIoKSksXG4gICAgICAgIHNlc3Npb25JZDogcmFuZG9tVVVJRCgpLFxuICAgICAgICB0ZWxlbWV0cnlWZXJzaW9uOiAnMi4wJyxcbiAgICAgICAgY2RrQ2xpVmVyc2lvbjogdmVyc2lvbk51bWJlcigpLFxuICAgICAgICBjZGtMaWJyYXJ5VmVyc2lvbjogYXdhaXQgZ2V0TGlicmFyeVZlcnNpb24odGhpcy5pb0hvc3QuYXNJb0hlbHBlcigpKSxcbiAgICAgICAgYW16blBhY2thZ2U6IGF3YWl0IHRyeURldGVjdEFtem5QYWNrYWdlKCksXG4gICAgICB9LFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIGNvbnRleHQ6IHNhbml0aXplQ29udGV4dCh0aGlzLnByb3BzLmNvbnRleHQpLFxuICAgICAgICAgICAgLi4uKGlzVmFsaWRXcmFwcGVyVXNlckFnZW50KHByb2Nlc3MuZW52LkNES19DTElfVVNFUkFHRU5UKVxuICAgICAgICAgICAgICA/IHsgY2RrQ2xpVXNlckFnZW50OiB7IFtwcm9jZXNzLmVudi5DREtfQ0xJX1VTRVJBR0VOVF06IHRydWUgfSB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgY2k6IGlzQ0koKSB8fCBCb29sZWFuKGRldGVjdENpU3lzdGVtKCkpLFxuICAgICAgICBvczoge1xuICAgICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgICAgIHJlbGVhc2U6IHByb2Nlc3MucmVsZWFzZS5uYW1lLFxuICAgICAgICB9LFxuICAgICAgICBub2RlVmVyc2lvbjogcHJvY2Vzcy52ZXJzaW9uLFxuICAgICAgfSxcbiAgICAgIHByb2plY3Q6IHt9LFxuICAgIH07XG5cbiAgICAvLyBJZiBTSUdJTlQgaGFzIGEgbGlzdGVuZXIgaW5zdGFsbGVkLCBpdHMgZGVmYXVsdCBiZWhhdmlvciB3aWxsIGJlIHJlbW92ZWQgKE5vZGUuanMgd2lsbCBubyBsb25nZXIgZXhpdCkuXG4gICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgb24gU0lHSU5UIHdlIHByb2Nlc3Mgc2FmZWx5IGNsb3NlIHRoZSB0ZWxlbWV0cnkgc2Vzc2lvbiBiZWZvcmUgZXhpdGluZy5cbiAgICAvLyBUaGUgbGlzdGVuZXIgaXMgcmVtb3ZlZCBpbiBlbmQoKSAtLSB3aXRob3V0IHRoYXQsIGV2ZXJ5IGJlZ2luKCkgY2FsbCAoZS5nLiBvbmUgcGVyXG4gICAgLy8gZXhlYygpIGludm9jYXRpb24gaW4gYSBsb25nLXJ1bm5pbmcgaG9zdCBwcm9jZXNzKSB3b3VsZCBwZXJtYW5lbnRseSBhZGQgYW5vdGhlclxuICAgIC8vIGxpc3RlbmVyIHRvIHRoZSBwcm9jZXNzLWdsb2JhbCBTSUdJTlQgZW1pdHRlciwgbGVha2luZyB0aGUgcmV0YWluZWQgVGVsZW1ldHJ5U2Vzc2lvblxuICAgIC8vIChhbmQgZXZlcnl0aGluZyBpdCByZWZlcmVuY2VzKSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLlxuICAgIHRoaXMuc2lnaW50TGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICB2b2lkIChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5lbmQoe1xuICAgICAgICAgICAgbmFtZTogVVNFUl9JTlRFUlJVUFRFRF9DT0RFLFxuICAgICAgICAgICAgbWVzc2FnZTogQUJPUlRFRF9FUlJPUl9NRVNTQUdFLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmlvSG9zdC5kZWZhdWx0cy50cmFjZShgRW5kaW5nIFRlbGVtZXRyeSBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH0pKCk7XG4gICAgfTtcbiAgICBwcm9jZXNzLm9uKCdTSUdJTlQnLCB0aGlzLnNpZ2ludExpc3RlbmVyKTtcblxuICAgIC8vIEJlZ2luIHRoZSBzZXNzaW9uIHNwYW5cbiAgICB0aGlzLl9jb21tYW5kU3BhbiA9IGF3YWl0IHRoaXMuaW9Ib3N0LmFzSW9IZWxwZXIoKS5zcGFuKENMSV9QUklWQVRFX1NQQU4uQ09NTUFORCkuYmVnaW4oe30pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGF0dGFjaFJlZ2lvbihyZWdpb246IHN0cmluZykge1xuICAgIHRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMgPSB7XG4gICAgICAuLi50aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzLFxuICAgICAgcmVnaW9uLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIGEgbGFuZ3VhZ2UgZ3Vlc3NcbiAgICovXG4gIHB1YmxpYyBhdHRhY2hMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0byBjcmFzaCBhY2NpZGVudGFsbHlcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGxhbmd1YWdlKSB7XG4gICAgICBtdXRhYmxlKHRoaXMuc2Vzc2lvbkluZm8ucHJvamVjdCkubGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIG91ciBiZXN0IGd1ZXNzIGF0IHJ1bm5pbmcgdW5kZXIgYW4gYWdlbnQgb3Igbm90XG4gICAqL1xuICBwdWJsaWMgYXR0YWNoQWdlbnQoaXNBZ2VudDogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIC8vIERvbid0IHdhbnQgdG8gY3Jhc2ggYWNjaWRlbnRhbGx5XG4gICAgaWYgKCF0aGlzLl9zZXNzaW9uSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG11dGFibGUodGhpcy5zZXNzaW9uSW5mby5lbnZpcm9ubWVudCkuYWdlbnQgPSBpc0FnZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IGF0dGFjaCBjb3VudGVycyBmb3IgdGhlIG5leHQgZXZlbnQgb3BlcmF0aW9uLlxuICAgKlxuICAgKiBUaGV5IG1heSBiZSBjb21taXR0ZWQgdG8gdGhlIHNlbnQgdGVsZW1ldHJ5IGxhdGVyLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENvdW50ZXJzVG9OZXh0RXZlbnQoY291bnRlcnM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4pIHtcbiAgICB0aGlzLl9uZXh0RXZlbnRDb3VudGVycyA9IGNvdW50ZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbG9hZCB0aW1lICh3aWxsIGJlIGVtaXR0ZWQgd2l0aCB0aGUgQ09NTUFORCBzcGFuKVxuICAgKi9cbiAgcHVibGljIGF0dGFjaExvYWRUaW1lKGxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLmxvYWRUaW1lID0gbG9hZFRpbWU7XG4gICAgdGhpcy5fY29tbWFuZFNwYW4/LmFkZFRpbWVyKCdsb2FkJywgbG9hZFRpbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgd2hlbiB0aGUgYWN0dWFsIENMSSBvcGVyYXRpb24gc3RhcnRzXG4gICAqXG4gICAqIEVtaXR0ZWQgYXMgcGFydCBvZiB0aGUgQ09NTUFORCBzcGFuLlxuICAgKi9cbiAgcHVibGljIG1hcmtPcGVyYXRpb25TdGFydCgpIHtcbiAgICBpZiAodGhpcy5sb2FkVGltZSkge1xuICAgICAgdGhpcy5fY29tbWFuZFNwYW4/LmFkZFRpbWVyKCdpbml0JywgcGVyZm9ybWFuY2Uubm93KCkgLSB0aGlzLmxvYWRUaW1lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIHRoZSBDREsgbGlicmFyeSB2ZXJzaW9uXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIHRlbGVtZXRyeSB3aWxsIGd1ZXNzIGF0IHRoZSBDREsgbGlicmFyeSB2ZXJzaW9uIGlmIGl0IHNvXG4gICAqIGhhcHBlbnMgdGhhdCB0aGUgQ0RLIHByb2plY3QgaXMgYW4gTlBNIHByb2plY3QgYW5kIHRoZSBDREsgQ0xJIGlzIGV4ZWN1dGVkXG4gICAqIGluIHRoZSByb290IG9mIE5QTSBwcm9qZWN0IHdpdGggYGF3cy1jZGstbGliYCBhdmFpbGFibGUgaW4gYG5vZGVfbW9kdWxlc2AuXG4gICAqIFRoaXMgbWF5IHN1Y2NlZWQgb3IgbWF5IGZhaWwuXG4gICAqXG4gICAqIE9uY2Ugd2UgaGF2ZSBwcm9kdWNlZCBhbmQgbG9hZGVkIHRoZSBjbG91ZCBhc3NlbWJseSBtb3JlIGFjY3VyYXRlXG4gICAqIGluZm9ybWF0aW9uIGJlY29tZXMgYXZhaWxhYmxlIHRoYXQgd2UgY2FuIGFkZCBpbi5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2hDZGtMaWJWZXJzaW9uKGxpYlZlcnNpb246IHN0cmluZykge1xuICAgIC8vIERvbid0IHdhbnQgdG8gY3Jhc2ggYWNjaWRlbnRhbGx5XG4gICAgaWYgKCF0aGlzLl9zZXNzaW9uSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG11dGFibGUodGhpcy5zZXNzaW9uSW5mby5pZGVudGlmaWVycykuY2RrTGlicmFyeVZlcnNpb24gPSBsaWJWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhlIGNvbW1hbmQgaXMgY29tcGxldGUsIHNvIGlzIHRoZSBDbGlJb0hvc3QuIEVuZHMgdGhlIHNwYW4gb2YgdGhlIGVudGlyZSBDbGlJb0hvc3RcbiAgICogYW5kIG5vdGlmaWVzIHdpdGggYW4gb3B0aW9uYWwgZXJyb3IgbWVzc2FnZSBpbiB0aGUgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBlbmQoZXJyb3I/OiBFcnJvckRldGFpbHMpIHtcbiAgICBpZiAodGhpcy5zaWdpbnRMaXN0ZW5lcikge1xuICAgICAgcHJvY2Vzcy5yZW1vdmVMaXN0ZW5lcignU0lHSU5UJywgdGhpcy5zaWdpbnRMaXN0ZW5lcik7XG4gICAgICB0aGlzLnNpZ2ludExpc3RlbmVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLl9jb21tYW5kU3Bhbj8uZW5kKHsgZXJyb3IgfSk7XG4gICAgLy8gSWRlYWxseSBzcGFuLmVuZCgpIHNob3VsZCBuby1vcCBpZiBjYWxsZWQgdHdpY2UsIGJ1dCB0aGF0IGlzIG5vdCB0aGUgY2FzZSByaWdodCBub3dcbiAgICB0aGlzLl9jb21tYW5kU3BhbiA9IHVuZGVmaW5lZDtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5mbHVzaCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtaXQoZXZlbnQ6IFRlbGVtZXRyeUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb3VudCArPSAxO1xuXG4gICAgY29uc3QgY291bnRlcnMgPSB7XG4gICAgICAuLi50aGlzLl9uZXh0RXZlbnRDb3VudGVycyxcbiAgICAgIC4uLmV2ZW50LmNvdW50ZXJzLFxuICAgIH07XG4gICAgdGhpcy5fbmV4dEV2ZW50Q291bnRlcnMgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09ICdERVBMT1knKSB7XG4gICAgICBhd2FpdCB0aGlzLnRyYWNrRGVwbG95U3RhdGlzdGljcyhldmVudC5lcnJvciA9PT0gdW5kZWZpbmVkLCBjb3VudGVycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmVtaXQoe1xuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgY29tbWFuZDogdGhpcy5zZXNzaW9uSW5mby5ldmVudC5jb21tYW5kLFxuICAgICAgICBzdGF0ZTogZ2V0U3RhdGUoZXZlbnQuZXJyb3IpLFxuICAgICAgICBldmVudFR5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgIH0sXG4gICAgICBpZGVudGlmaWVyczoge1xuICAgICAgICAuLi50aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzLFxuICAgICAgICBldmVudElkOiBgJHt0aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzLnNlc3Npb25JZH06JHt0aGlzLmNvdW50fWAsXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLnNlc3Npb25JbmZvLmVudmlyb25tZW50LFxuICAgICAgcHJvamVjdDogdGhpcy5zZXNzaW9uSW5mby5wcm9qZWN0LFxuICAgICAgZHVyYXRpb246IHtcbiAgICAgICAgdG90YWw6IGV2ZW50LmR1cmF0aW9uLFxuICAgICAgfSxcbiAgICAgIC4uLihldmVudC5lcnJvciA/IHtcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBuYW1lOiBldmVudC5lcnJvci5uYW1lLFxuICAgICAgICB9LFxuICAgICAgfSA6IHt9KSxcbiAgICAgIC4uLihPYmplY3Qua2V5cyhjb3VudGVycykubGVuZ3RoID4gMCA/IHsgY291bnRlcnMgfSA6IHt9KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgREVQTE9ZIGV2ZW50LCB0cmFjayBzb21lIGFkZGl0aW9uYWwgc3RhdGlzdGljcyBhYm91dCBpdFxuICAgKlxuICAgKiBXZSB1c2UgdGhpcyB0byBtZWFzdXJlIHRoaW5ncyBhYm91dCBkZXBsb3ltZW50IGZhaWx1cmVzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2ZcbiAgICogZmFpbGVkIERFUExPWSBldmVudHMgaW4gYSBzZXF1ZW5jZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdHJhY2tEZXBsb3lTdGF0aXN0aWNzKGlzU3VjY2Vzc2Z1bDogYm9vbGVhbiwgY291bnRlcnM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4pIHtcbiAgICBhd2FpdCB3aXRoVGVsZW1ldHJ5U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCByZWNlbnRGYWlsdXJlcyA9IHN0YXRlLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXMgPz8gMDtcblxuICAgICAgaWYgKGlzU3VjY2Vzc2Z1bCkge1xuICAgICAgICBzdGF0ZS5zZXF1ZW50aWFsRGVwbG95bWVudEZhaWx1cmVzID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXMgPSByZWNlbnRGYWlsdXJlcyArIDE7XG4gICAgICB9XG5cbiAgICAgIGNvdW50ZXJzLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXMgPSBzdGF0ZS5zZXF1ZW50aWFsRGVwbG95bWVudEZhaWx1cmVzO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc2Vzc2lvbkluZm8oKTogU2Vzc2lvblNjaGVtYSB7XG4gICAgaWYgKCF0aGlzLl9zZXNzaW9uSW5mbykge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignU2Vzc2lvbk5vdEluaXRpYWxpemVkJywgJ1Nlc3Npb24gSW5mbyBub3QgaW5pdGlhbGl6ZWQuIENhbGwgYmVnaW4oKSBmaXJzdC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JbmZvO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFN0YXRlKGVycm9yPzogRXJyb3JEZXRhaWxzKTogU3RhdGUge1xuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4gaXNBYm9ydGVkRXJyb3IoZXJyb3IpID8gJ0FCT1JURUQnIDogJ0ZBSUxFRCc7XG4gIH1cbiAgcmV0dXJuICdTVUNDRUVERUQnO1xufVxuXG5mdW5jdGlvbiBpc0Fib3J0ZWRFcnJvcihlcnJvcj86IEVycm9yRGV0YWlscykge1xuICBpZiAoZXJyb3I/Lm5hbWUgPT09ICdUb29sa2l0RXJyb3InICYmIGVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhBQk9SVEVEX0VSUk9SX01FU1NBR0UpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBtdXRhYmxlPEEgZXh0ZW5kcyBvYmplY3Q+KHg6IEEpOiB7IC1yZWFkb25seSBbayBpbiBrZXlvZiBBXTogQVtrXSB9IHtcbiAgcmV0dXJuIHg7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoYXQgdGhlIENES19DTElfVVNFUkFHRU5UIGVudiB2YXIgdmFsdWUgbWF0Y2hlc1xuICogdGhlIGV4cGVjdGVkIGZvcm1hdDogYDxuYW1lPi88dmVyc2lvbj4vPG1vZGU+YCB3aGVyZSBuYW1lIGlzIG9uZSBvZlxuICogVkFMSURfVVNFUl9BR0VOVFMgYW5kIG1vZGUgaXMgZWl0aGVyIGBzYW5kYm94YCBvciBgcHJvZHVjdGlvbmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkV3JhcHBlclVzZXJBZ2VudCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwYXJ0cyA9IHZhbHVlLnNwbGl0KCcvJyk7XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDMpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgW25hbWUsIF92ZXJzaW9uLCBtb2RlXSA9IHBhcnRzO1xuICBpZiAoIVZBTElEX1VTRVJfQUdFTlRTLmluY2x1ZGVzKG5hbWUpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBtb2RlID09PSAnc2FuZGJveCcgfHwgbW9kZSA9PT0gJ3Byb2R1Y3Rpb24nO1xufVxuXG4vKipcbiAqIFRyeSB0byBkZXRlY3QgYSBDb25maWcgZmlsZSBvZiB3aGljaCB0aGUgZmlyc3QgbGluZSBsb29rcyBsaWtlXG4gKlxuICogYGBgXG4gKiBwYWNrYWdlLjxwYWNrYWdlTmFtZT4gPSB7XG4gKiBgYGBcbiAqXG4gKiBPciBhIGBicmF6aWwuaW9uYCBmaWxlIHdpdGggYSBsaW5lIGxpa2VcbiAqXG4gKiBgYGBcbiAqIG5hbWU6IFwiPHByb2plY3ROYW1lPlwiXG4gKiBgYGBcbiAqXG4gKiBUaGV5IHdpbGwgYWx3YXlzIGJlIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LCBhbmQgd2Ugd2lsbFxuICogb25seSBkbyB0aGUgY2hlY2sgaWYgaXQgbG9va3MgbGlrZSB3ZSdyZSBvbiBhbiBBbXpuIGRldmVsb3BlciBtYWNoaW5lLlxuICovXG5hc3luYyBmdW5jdGlvbiB0cnlEZXRlY3RBbXpuUGFja2FnZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLnN0YXQocGF0aGxpYi5qb2luKG9zLmhvbWVkaXIoKSwgJy5taWR3YXknKSk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEVOT0VOVFxuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY29uZmlnRmlsZSA9IGF3YWl0IGZzLnJlYWRGaWxlKCdDb25maWcnLCAndXRmLTgnKTtcbiAgICBjb25zdCBtID0gY29uZmlnRmlsZS5tYXRjaCgvXnBhY2thZ2VcXC4oXFxTKylcXHMqPS9tKTtcbiAgICBpZiAobSkge1xuICAgICAgcmV0dXJuIG1bMV07XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBBbnkgZXJyb3IgbWVhbnMgbm8gZGljZS5cbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgaW9uRmlsZSA9IGF3YWl0IGZzLnJlYWRGaWxlKCdicmF6aWwuaW9uJywgJ3V0Zi04Jyk7XG4gICAgY29uc3QgbSA9IGlvbkZpbGUubWF0Y2goLyhefFxccyluYW1lOlxccypcIihbXlwiXSspXCIvbSk7XG4gICAgaWYgKG0pIHtcbiAgICAgIHJldHVybiBtWzJdO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gQW55IGVycm9yIG1lYW5zIG5vIGRpY2UuXG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
|
|
@@ -1,6 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.guessAgent = guessAgent;
|
|
4
|
+
/**
|
|
5
|
+
* Environment variables that indicate an AI agent is executing the command.
|
|
6
|
+
*
|
|
7
|
+
* Only variables set by the agent itself when running commands belong here.
|
|
8
|
+
* Variables that merely indicate an agent-capable IDE or environment
|
|
9
|
+
* (e.g. CURSOR_TRACE_ID, REPL_ID) do not: a human typing in such a terminal
|
|
10
|
+
* would be misdetected.
|
|
11
|
+
*
|
|
12
|
+
* Each entry links to the documentation or source code that establishes the variable.
|
|
13
|
+
*/
|
|
14
|
+
const AGENT_ENV_VARS = [
|
|
15
|
+
// https://github.com/vercel/detect-agent/blob/3ab1df1e4eaae153cf66f4a5018e4c5854855212/README.md#the-ai_agent-standard
|
|
16
|
+
'AI_AGENT',
|
|
17
|
+
// Amp, Crush, Goose, opencode; e.g. https://github.com/charmbracelet/crush/blob/7d78d7422a92918441a68d01d96d48fa3b9fd9db/internal/shell/shell.go#L46
|
|
18
|
+
'AGENT',
|
|
19
|
+
// https://code.claude.com/docs/en/env-vars#variables
|
|
20
|
+
'CLAUDECODE',
|
|
21
|
+
// https://github.com/openai/codex/blob/4a942885c8b4745757a9f86ad2075e16c42483c5/codex-rs/protocol/src/shell_environment.rs#L7
|
|
22
|
+
'CODEX_THREAD_ID',
|
|
23
|
+
// https://github.com/openai/codex/blob/4a942885c8b4745757a9f86ad2075e16c42483c5/codex-rs/core/src/spawn.rs#L26
|
|
24
|
+
'CODEX_SANDBOX',
|
|
25
|
+
// https://github.com/openai/codex/blob/4a942885c8b4745757a9f86ad2075e16c42483c5/codex-rs/core/src/unified_exec/process_manager.rs#L93
|
|
26
|
+
'CODEX_CI',
|
|
27
|
+
// https://cursor.com/docs/agent/terminal#disable-heavy-prompts-for-cursor-sessions
|
|
28
|
+
'CURSOR_AGENT',
|
|
29
|
+
// https://code.visualstudio.com/updates/v1_121#_agentaware-terminal-commands
|
|
30
|
+
'VSCODE_AGENT',
|
|
31
|
+
// https://github.com/cline/cline/blob/16875140fbc7bae51aad79c203837b4f51e54aa5/apps/vscode/src/hosts/vscode/terminal/VscodeTerminalRegistry.ts#L31
|
|
32
|
+
'CLINE_ACTIVE',
|
|
33
|
+
// https://google-gemini.github.io/gemini-cli/docs/tools/shell.html#environment-variables
|
|
34
|
+
'GEMINI_CLI',
|
|
35
|
+
// https://github.com/anomalyco/opencode/blob/b155b15694dbcc6768f11d2f25cc2bdd1f738ab4/packages/opencode/src/index.ts#L76
|
|
36
|
+
'OPENCODE',
|
|
37
|
+
// https://github.com/github/copilot-cli/blob/3f9c5e1ce792150a852804132e2b08c58e9a8e95/changelog.md#L1971
|
|
38
|
+
'COPILOT_CLI',
|
|
39
|
+
// https://docs.augmentcode.com/cli/reference#shell-environment
|
|
40
|
+
'AUGMENT_AGENT',
|
|
41
|
+
// https://github.com/QwenLM/qwen-code/blob/099a71c9364473303adb31e0dfb5f488b31634d9/packages/core/src/services/shellExecutionService.ts#L806
|
|
42
|
+
'QWEN_CODE',
|
|
43
|
+
];
|
|
4
44
|
/**
|
|
5
45
|
* Guess whether we're being executed by an AI agent
|
|
6
46
|
*
|
|
@@ -8,29 +48,15 @@ exports.guessAgent = guessAgent;
|
|
|
8
48
|
* with `yes` or `don't know`.
|
|
9
49
|
*/
|
|
10
50
|
function guessAgent() {
|
|
11
|
-
|
|
12
|
-
if (awsExecutionEnv.includes('amazonq') || awsExecutionEnv.includes('kiro')) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
if (process.env.CLAUDECODE) {
|
|
51
|
+
if (AGENT_ENV_VARS.some((envVar) => process.env[envVar])) {
|
|
16
52
|
return true;
|
|
17
53
|
}
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (process.env.CURSOR_AGENT) {
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
// https://code.visualstudio.com/updates/v1_121#_agentaware-terminal-commands
|
|
26
|
-
if (process.env.VSCODE_AGENT) {
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
// Cline -- not sure if it sets these, but users might to configure Cline.
|
|
30
|
-
if (Object.keys(process.env).some(x => x.startsWith('CLINE_'))) {
|
|
54
|
+
// Amazon Q CLI and Kiro identify themselves in the value of AWS_EXECUTION_ENV
|
|
55
|
+
// https://github.com/aws/amazon-q-developer-cli/blob/15cc8f3cd18c4272925ce1c7053268eedff1ea0a/crates/chat-cli/src/cli/chat/consts.rs#L31
|
|
56
|
+
const awsExecutionEnv = (process.env.AWS_EXECUTION_ENV ?? '').toLocaleLowerCase();
|
|
57
|
+
if (awsExecutionEnv.includes('amazonq') || awsExecutionEnv.includes('kiro')) {
|
|
31
58
|
return true;
|
|
32
59
|
}
|
|
33
|
-
// Copilot doesn't set an envvar (at least not in VS Code)
|
|
34
60
|
return undefined;
|
|
35
61
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Vlc3MtYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJndWVzcy1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQStDQSxnQ0FhQztBQTVERDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGNBQWMsR0FBRztJQUNyQix1SEFBdUg7SUFDdkgsVUFBVTtJQUNWLHFKQUFxSjtJQUNySixPQUFPO0lBQ1AscURBQXFEO0lBQ3JELFlBQVk7SUFDWiw4SEFBOEg7SUFDOUgsaUJBQWlCO0lBQ2pCLCtHQUErRztJQUMvRyxlQUFlO0lBQ2Ysc0lBQXNJO0lBQ3RJLFVBQVU7SUFDVixtRkFBbUY7SUFDbkYsY0FBYztJQUNkLDZFQUE2RTtJQUM3RSxjQUFjO0lBQ2QsbUpBQW1KO0lBQ25KLGNBQWM7SUFDZCx5RkFBeUY7SUFDekYsWUFBWTtJQUNaLHlIQUF5SDtJQUN6SCxVQUFVO0lBQ1YseUdBQXlHO0lBQ3pHLGFBQWE7SUFDYiwrREFBK0Q7SUFDL0QsZUFBZTtJQUNmLDZJQUE2STtJQUM3SSxXQUFXO0NBQ1osQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsU0FBZ0IsVUFBVTtJQUN4QixJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSx5SUFBeUk7SUFDekksTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbEYsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM1RSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBpbmRpY2F0ZSBhbiBBSSBhZ2VudCBpcyBleGVjdXRpbmcgdGhlIGNvbW1hbmQuXG4gKlxuICogT25seSB2YXJpYWJsZXMgc2V0IGJ5IHRoZSBhZ2VudCBpdHNlbGYgd2hlbiBydW5uaW5nIGNvbW1hbmRzIGJlbG9uZyBoZXJlLlxuICogVmFyaWFibGVzIHRoYXQgbWVyZWx5IGluZGljYXRlIGFuIGFnZW50LWNhcGFibGUgSURFIG9yIGVudmlyb25tZW50XG4gKiAoZS5nLiBDVVJTT1JfVFJBQ0VfSUQsIFJFUExfSUQpIGRvIG5vdDogYSBodW1hbiB0eXBpbmcgaW4gc3VjaCBhIHRlcm1pbmFsXG4gKiB3b3VsZCBiZSBtaXNkZXRlY3RlZC5cbiAqXG4gKiBFYWNoIGVudHJ5IGxpbmtzIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSBjb2RlIHRoYXQgZXN0YWJsaXNoZXMgdGhlIHZhcmlhYmxlLlxuICovXG5jb25zdCBBR0VOVF9FTlZfVkFSUyA9IFtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9kZXRlY3QtYWdlbnQvYmxvYi8zYWIxZGYxZTRlYWFlMTUzY2Y2NmY0YTUwMThlNGM1ODU0ODU1MjEyL1JFQURNRS5tZCN0aGUtYWlfYWdlbnQtc3RhbmRhcmRcbiAgJ0FJX0FHRU5UJyxcbiAgLy8gQW1wLCBDcnVzaCwgR29vc2UsIG9wZW5jb2RlOyBlLmcuIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGFybWJyYWNlbGV0L2NydXNoL2Jsb2IvN2Q3OGQ3NDIyYTkyOTE4NDQxYTY4ZDAxZDk2ZDQ4ZmEzYjlmZDlkYi9pbnRlcm5hbC9zaGVsbC9zaGVsbC5nbyNMNDZcbiAgJ0FHRU5UJyxcbiAgLy8gaHR0cHM6Ly9jb2RlLmNsYXVkZS5jb20vZG9jcy9lbi9lbnYtdmFycyN2YXJpYWJsZXNcbiAgJ0NMQVVERUNPREUnLFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFpL2NvZGV4L2Jsb2IvNGE5NDI4ODVjOGI0NzQ1NzU3YTlmODZhZDIwNzVlMTZjNDI0ODNjNS9jb2RleC1ycy9wcm90b2NvbC9zcmMvc2hlbGxfZW52aXJvbm1lbnQucnMjTDdcbiAgJ0NPREVYX1RIUkVBRF9JRCcsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYWkvY29kZXgvYmxvYi80YTk0Mjg4NWM4YjQ3NDU3NTdhOWY4NmFkMjA3NWUxNmM0MjQ4M2M1L2NvZGV4LXJzL2NvcmUvc3JjL3NwYXduLnJzI0wyNlxuICAnQ09ERVhfU0FOREJPWCcsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYWkvY29kZXgvYmxvYi80YTk0Mjg4NWM4YjQ3NDU3NTdhOWY4NmFkMjA3NWUxNmM0MjQ4M2M1L2NvZGV4LXJzL2NvcmUvc3JjL3VuaWZpZWRfZXhlYy9wcm9jZXNzX21hbmFnZXIucnMjTDkzXG4gICdDT0RFWF9DSScsXG4gIC8vIGh0dHBzOi8vY3Vyc29yLmNvbS9kb2NzL2FnZW50L3Rlcm1pbmFsI2Rpc2FibGUtaGVhdnktcHJvbXB0cy1mb3ItY3Vyc29yLXNlc3Npb25zXG4gICdDVVJTT1JfQUdFTlQnLFxuICAvLyBodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS91cGRhdGVzL3YxXzEyMSNfYWdlbnRhd2FyZS10ZXJtaW5hbC1jb21tYW5kc1xuICAnVlNDT0RFX0FHRU5UJyxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2NsaW5lL2NsaW5lL2Jsb2IvMTY4NzUxNDBmYmM3YmFlNTFhYWQ3OWMyMDM4MzdiNGY1MWU1NGFhNS9hcHBzL3ZzY29kZS9zcmMvaG9zdHMvdnNjb2RlL3Rlcm1pbmFsL1ZzY29kZVRlcm1pbmFsUmVnaXN0cnkudHMjTDMxXG4gICdDTElORV9BQ1RJVkUnLFxuICAvLyBodHRwczovL2dvb2dsZS1nZW1pbmkuZ2l0aHViLmlvL2dlbWluaS1jbGkvZG9jcy90b29scy9zaGVsbC5odG1sI2Vudmlyb25tZW50LXZhcmlhYmxlc1xuICAnR0VNSU5JX0NMSScsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbm9tYWx5Y28vb3BlbmNvZGUvYmxvYi9iMTU1YjE1Njk0ZGJjYzY3NjhmMTFkMmYyNWNjMmJkZDFmNzM4YWI0L3BhY2thZ2VzL29wZW5jb2RlL3NyYy9pbmRleC50cyNMNzZcbiAgJ09QRU5DT0RFJyxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9jb3BpbG90LWNsaS9ibG9iLzNmOWM1ZTFjZTc5MjE1MGE4NTI4MDQxMzJlMmIwOGM1OGU5YThlOTUvY2hhbmdlbG9nLm1kI0wxOTcxXG4gICdDT1BJTE9UX0NMSScsXG4gIC8vIGh0dHBzOi8vZG9jcy5hdWdtZW50Y29kZS5jb20vY2xpL3JlZmVyZW5jZSNzaGVsbC1lbnZpcm9ubWVudFxuICAnQVVHTUVOVF9BR0VOVCcsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Rd2VuTE0vcXdlbi1jb2RlL2Jsb2IvMDk5YTcxYzkzNjQ0NzMzMDNhZGIzMWUwZGZiNWY0ODhiMzE2MzRkOS9wYWNrYWdlcy9jb3JlL3NyYy9zZXJ2aWNlcy9zaGVsbEV4ZWN1dGlvblNlcnZpY2UudHMjTDgwNlxuICAnUVdFTl9DT0RFJyxcbl07XG5cbi8qKlxuICogR3Vlc3Mgd2hldGhlciB3ZSdyZSBiZWluZyBleGVjdXRlZCBieSBhbiBBSSBhZ2VudFxuICpcbiAqIEl0J3MgaGFyZCBmb3IgdXMgdG8gc2F5IGBmYWxzZWAgZm9yIHN1cmUsIHNvIHdlIG9ubHkgcmVzcG9uZFxuICogd2l0aCBgeWVzYCBvciBgZG9uJ3Qga25vd2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWVzc0FnZW50KCk6IHRydWUgfCB1bmRlZmluZWQge1xuICBpZiAoQUdFTlRfRU5WX1ZBUlMuc29tZSgoZW52VmFyKSA9PiBwcm9jZXNzLmVudltlbnZWYXJdKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gQW1hem9uIFEgQ0xJIGFuZCBLaXJvIGlkZW50aWZ5IHRoZW1zZWx2ZXMgaW4gdGhlIHZhbHVlIG9mIEFXU19FWEVDVVRJT05fRU5WXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYW1hem9uLXEtZGV2ZWxvcGVyLWNsaS9ibG9iLzE1Y2M4ZjNjZDE4YzQyNzI5MjVjZTFjNzA1MzI2OGVlZGZmMWVhMGEvY3JhdGVzL2NoYXQtY2xpL3NyYy9jbGkvY2hhdC9jb25zdHMucnMjTDMxXG4gIGNvbnN0IGF3c0V4ZWN1dGlvbkVudiA9IChwcm9jZXNzLmVudi5BV1NfRVhFQ1VUSU9OX0VOViA/PyAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgaWYgKGF3c0V4ZWN1dGlvbkVudi5pbmNsdWRlcygnYW1hem9ucScpIHx8IGF3c0V4ZWN1dGlvbkVudi5pbmNsdWRlcygna2lybycpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
|
package/lib/commands/docs.js
CHANGED
|
@@ -1,46 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
4
|
};
|
|
38
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
6
|
exports.aliases = exports.describe = exports.command = void 0;
|
|
40
7
|
exports.docs = docs;
|
|
41
|
-
const childProcess = __importStar(require("child_process"));
|
|
42
|
-
const node_util_1 = require("node:util");
|
|
43
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const tools_1 = require("../private/tools");
|
|
44
10
|
exports.command = 'docs';
|
|
45
11
|
exports.describe = 'Opens the reference documentation in a browser';
|
|
46
12
|
exports.aliases = ['doc'];
|
|
@@ -48,11 +14,13 @@ async function docs(options) {
|
|
|
48
14
|
const ioHelper = options.ioHelper;
|
|
49
15
|
const url = 'https://docs.aws.amazon.com/cdk/api/v2/';
|
|
50
16
|
await ioHelper.defaults.info(chalk_1.default.green(url));
|
|
17
|
+
// The browser command is the user's own `--browser` option (with %u replaced
|
|
18
|
+
// by the constant docs URL) and may rely on shell features, so it runs
|
|
19
|
+
// through the shell verbatim.
|
|
51
20
|
const browserCommand = (options.browser).replace(/%u/g, url);
|
|
52
21
|
await ioHelper.defaults.debug(`Opening documentation ${chalk_1.default.green(browserCommand)}`);
|
|
53
|
-
const exec = (0, node_util_1.promisify)(childProcess.exec);
|
|
54
22
|
try {
|
|
55
|
-
const { stdout, stderr } = await
|
|
23
|
+
const { stdout, stderr } = await (0, tools_1.runUserCommandLine)(browserCommand);
|
|
56
24
|
if (stdout) {
|
|
57
25
|
await ioHelper.defaults.debug(stdout);
|
|
58
26
|
}
|
|
@@ -66,4 +34,4 @@ async function docs(options) {
|
|
|
66
34
|
}
|
|
67
35
|
return 0;
|
|
68
36
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRvY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBdUJBLG9CQXdCQztBQS9DRCxrREFBMEI7QUFFMUIsNENBQXNEO0FBRXpDLFFBQUEsT0FBTyxHQUFHLE1BQU0sQ0FBQztBQUNqQixRQUFBLFFBQVEsR0FBRyxnREFBZ0QsQ0FBQztBQUM1RCxRQUFBLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBaUJ4QixLQUFLLFVBQVUsSUFBSSxDQUFDLE9BQW9CO0lBQzdDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDbEMsTUFBTSxHQUFHLEdBQUcseUNBQXlDLENBQUM7SUFDdEQsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsNkVBQTZFO0lBQzdFLHVFQUF1RTtJQUN2RSw4QkFBOEI7SUFDOUIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3RCxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLHlCQUF5QixlQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV0RixJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSwwQkFBa0IsRUFBQyxjQUFjLENBQUMsQ0FBQztRQUNwRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxHQUFHLEdBQVksQ0FBQztRQUN2QixNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IHJ1blVzZXJDb21tYW5kTGluZSB9IGZyb20gJy4uL3ByaXZhdGUvdG9vbHMnO1xuXG5leHBvcnQgY29uc3QgY29tbWFuZCA9ICdkb2NzJztcbmV4cG9ydCBjb25zdCBkZXNjcmliZSA9ICdPcGVucyB0aGUgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gaW4gYSBicm93c2VyJztcbmV4cG9ydCBjb25zdCBhbGlhc2VzID0gWydkb2MnXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZG9jcyBjb21tYW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgdG8gdXNlIHRvIG9wZW4gdGhlIGJyb3dzZXJcbiAgICovXG4gIHJlYWRvbmx5IGJyb3dzZXI6IHN0cmluZztcblxuICAvKipcbiAgICogSW9IZWxwZXIgZm9yIG1lc3NhZ2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgaW9IZWxwZXI6IElvSGVscGVyO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG9jcyhvcHRpb25zOiBEb2NzT3B0aW9ucyk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGlvSGVscGVyID0gb3B0aW9ucy5pb0hlbHBlcjtcbiAgY29uc3QgdXJsID0gJ2h0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyLyc7XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oY2hhbGsuZ3JlZW4odXJsKSk7XG4gIC8vIFRoZSBicm93c2VyIGNvbW1hbmQgaXMgdGhlIHVzZXIncyBvd24gYC0tYnJvd3NlcmAgb3B0aW9uICh3aXRoICV1IHJlcGxhY2VkXG4gIC8vIGJ5IHRoZSBjb25zdGFudCBkb2NzIFVSTCkgYW5kIG1heSByZWx5IG9uIHNoZWxsIGZlYXR1cmVzLCBzbyBpdCBydW5zXG4gIC8vIHRocm91Z2ggdGhlIHNoZWxsIHZlcmJhdGltLlxuICBjb25zdCBicm93c2VyQ29tbWFuZCA9IChvcHRpb25zLmJyb3dzZXIpLnJlcGxhY2UoLyV1L2csIHVybCk7XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBPcGVuaW5nIGRvY3VtZW50YXRpb24gJHtjaGFsay5ncmVlbihicm93c2VyQ29tbWFuZCl9YCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB7IHN0ZG91dCwgc3RkZXJyIH0gPSBhd2FpdCBydW5Vc2VyQ29tbWFuZExpbmUoYnJvd3NlckNvbW1hbmQpO1xuICAgIGlmIChzdGRvdXQpIHtcbiAgICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKHN0ZG91dCk7XG4gICAgfVxuICAgIGlmIChzdGRlcnIpIHtcbiAgICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLndhcm4oc3RkZXJyKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgIGNvbnN0IGUgPSBlcnIgYXMgRXJyb3I7XG4gICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMuZGVidWcoYEFuIGVycm9yIG9jY3VycmVkIHdoZW4gdHJ5aW5nIHRvIG9wZW4gYSBicm93c2VyOiAke2Uuc3RhY2sgfHwgZS5tZXNzYWdlfWApO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59XG4iXX0=
|