aws-cdk 2.1142.0 → 2.1144.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 +20 -1
- package/THIRD_PARTY_LICENSES +22 -22
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/api-private-error.d.ts +1 -0
- package/lib/api-private-error.js +9 -0
- package/lib/cli/cdk-toolkit.d.ts +8 -0
- package/lib/cli/cdk-toolkit.js +2 -3
- package/lib/cli/cli-config.js +3 -2
- package/lib/cli/cli-type-registry.json +5 -1
- package/lib/cli/cli.js +54 -20
- package/lib/cli/convert-to-user-input.js +3 -1
- package/lib/cli/debug-handles.d.ts +52 -0
- package/lib/cli/debug-handles.js +347 -0
- package/lib/cli/io-host/cli-io-host.d.ts +21 -2
- package/lib/cli/io-host/cli-io-host.js +9 -8
- package/lib/cli/parse-command-line-arguments.js +7 -2
- package/lib/cli/proxy-agent.d.ts +55 -4
- package/lib/cli/proxy-agent.js +71 -33
- package/lib/cli/telemetry/post-telemetry.d.ts +31 -0
- package/lib/cli/telemetry/post-telemetry.js +76 -0
- package/lib/cli/telemetry/sender-bundle.d.ts +1 -0
- package/lib/cli/telemetry/sender-bundle.js +32542 -0
- package/lib/cli/telemetry/sender.d.ts +50 -0
- package/lib/cli/telemetry/sender.js +103 -0
- package/lib/cli/telemetry/sink/subprocess-sink.d.ts +77 -0
- package/lib/cli/telemetry/sink/subprocess-sink.js +209 -0
- package/lib/cli/user-input.d.ts +7 -1
- package/lib/cli/user-input.js +1 -1
- package/lib/index.js +3331 -2535
- package/lib/index_bg.wasm +0 -0
- package/lib/init-templates/.init-version.json +1 -1
- package/package.json +11 -11
- package/lib/cli/telemetry/sink/endpoint-sink.d.ts +0 -44
- package/lib/cli/telemetry/sink/endpoint-sink.js +0 -108
package/lib/cli/proxy-agent.js
CHANGED
|
@@ -35,9 +35,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.ProxyAgentProvider = void 0;
|
|
37
37
|
exports.validateProxyAddress = validateProxyAddress;
|
|
38
|
-
|
|
38
|
+
exports.normalizeNetworkSetting = normalizeNetworkSetting;
|
|
39
|
+
const path = __importStar(require("node:path"));
|
|
39
40
|
const fs = __importStar(require("fs-extra"));
|
|
40
41
|
const proxy_agent_1 = require("proxy-agent");
|
|
42
|
+
const api_private_error_1 = require("../api-private-error");
|
|
41
43
|
/**
|
|
42
44
|
* Validate a proxy address up front.
|
|
43
45
|
*
|
|
@@ -52,51 +54,87 @@ function validateProxyAddress(proxyAddress) {
|
|
|
52
54
|
protocol = new URL(proxyAddress).protocol.replace(/:$/, '');
|
|
53
55
|
}
|
|
54
56
|
catch {
|
|
55
|
-
throw new
|
|
57
|
+
throw new api_private_error_1.ToolkitError('InvalidProxyAddress', `Invalid proxy address '${proxyAddress}': it must be a URL that includes a protocol, e.g. 'http://${proxyAddress}'.`);
|
|
56
58
|
}
|
|
57
59
|
if (!(protocol in proxy_agent_1.proxies)) {
|
|
58
|
-
throw new
|
|
60
|
+
throw new api_private_error_1.ToolkitError('InvalidProxyAddress', `Unsupported protocol '${protocol}' in proxy address '${proxyAddress}'. Supported protocols are: ${Object.keys(proxy_agent_1.proxies).join(', ')}.`);
|
|
59
61
|
}
|
|
60
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Coerce a raw network setting into a value the rest of the CLI can rely on.
|
|
65
|
+
*
|
|
66
|
+
* `Settings.get()` is untyped and surfaces an unset `--proxy` or `--ca-bundle-path` as either
|
|
67
|
+
* `undefined` or an empty array, depending on how it was parsed. An empty STRING is a different
|
|
68
|
+
* thing: `--proxy ''` means "go direct, ignore the proxy environment variables", so it has to survive
|
|
69
|
+
* normalization. Anything that is not a string counts as unconfigured, which is what makes the
|
|
70
|
+
* environment the fallback.
|
|
71
|
+
*
|
|
72
|
+
* Applied at the point these settings enter typed code, for two reasons. An empty array is truthy, so
|
|
73
|
+
* it slips past every `if (value)` guard downstream and then fails somewhere unhelpful --
|
|
74
|
+
* `path.resolve([])` throws a `TypeError` that the CA-bundle resolver swallows, silently discarding
|
|
75
|
+
* the bundle. And both values now cross a process boundary into the detached telemetry sender, which
|
|
76
|
+
* has no access to the settings to re-derive them.
|
|
77
|
+
*/
|
|
78
|
+
function normalizeNetworkSetting(raw) {
|
|
79
|
+
return typeof raw === 'string' ? raw : undefined;
|
|
80
|
+
}
|
|
61
81
|
class ProxyAgentProvider {
|
|
62
82
|
ioHelper;
|
|
63
83
|
constructor(ioHelper) {
|
|
64
84
|
this.ioHelper = ioHelper;
|
|
65
85
|
}
|
|
66
86
|
async create(options) {
|
|
67
|
-
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (typeof options.proxyAddress === 'string' && options.proxyAddress.length > 0) {
|
|
72
|
-
validateProxyAddress(options.proxyAddress);
|
|
87
|
+
const proxyAddress = normalizeNetworkSetting(options.proxyAddress);
|
|
88
|
+
// Only a non-empty address is a proxy to validate. An empty one is a configured "go direct".
|
|
89
|
+
if (proxyAddress) {
|
|
90
|
+
validateProxyAddress(proxyAddress);
|
|
73
91
|
}
|
|
74
|
-
// Force it to use the proxy provided through the command line
|
|
75
|
-
//
|
|
76
|
-
|
|
77
|
-
|
|
92
|
+
// Force it to use the proxy provided through the command line -- including an empty one, which
|
|
93
|
+
// `proxy-agent` reads as "no proxy for this URL". Only an unconfigured proxy falls through to
|
|
94
|
+
// ProxyAgent's own environment-variable detection.
|
|
95
|
+
const getProxyForUrl = proxyAddress !== undefined
|
|
96
|
+
? () => Promise.resolve(proxyAddress)
|
|
78
97
|
: undefined;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
98
|
+
const caBundlePath = await this.resolveCABundlePath(normalizeNetworkSetting(options.caBundlePath));
|
|
99
|
+
return {
|
|
100
|
+
agent: new proxy_agent_1.ProxyAgent({
|
|
101
|
+
ca: await this.tryReadCABundle(caBundlePath),
|
|
102
|
+
getProxyForUrl,
|
|
103
|
+
}),
|
|
104
|
+
caBundlePath,
|
|
105
|
+
};
|
|
83
106
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
107
|
+
/**
|
|
108
|
+
* Resolve the configured CA bundle to an absolute path, or undefined if there isn't a usable one.
|
|
109
|
+
*
|
|
110
|
+
* Absolute because the path is handed to the detached sender, which runs from a different cwd.
|
|
111
|
+
*/
|
|
112
|
+
async resolveCABundlePath(bundlePath) {
|
|
113
|
+
const configured = bundlePath || this.caBundlePathFromEnvironment();
|
|
114
|
+
if (!configured) {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
const resolved = path.resolve(configured);
|
|
119
|
+
await this.ioHelper.defaults.debug(`Using CA bundle path: ${resolved}`);
|
|
120
|
+
return fs.pathExistsSync(resolved) ? resolved : undefined;
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
await this.ioHelper.defaults.debug(String(e));
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async tryReadCABundle(bundlePath) {
|
|
128
|
+
if (!bundlePath) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
return fs.readFileSync(bundlePath, { encoding: 'utf-8' });
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
await this.ioHelper.defaults.debug(String(e));
|
|
136
|
+
return undefined;
|
|
98
137
|
}
|
|
99
|
-
return undefined;
|
|
100
138
|
}
|
|
101
139
|
/**
|
|
102
140
|
* Find and return a CA certificate bundle path to be passed into the SDK.
|
|
@@ -112,4 +150,4 @@ class ProxyAgentProvider {
|
|
|
112
150
|
}
|
|
113
151
|
}
|
|
114
152
|
exports.ProxyAgentProvider = ProxyAgentProvider;
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHktYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcm94eS1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSxvREFpQkM7QUE5QkQsc0RBQW9EO0FBQ3BELDZDQUErQjtBQUMvQiw2Q0FBa0Q7QUFHbEQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLFlBQW9CO0lBQ3ZELElBQUksUUFBZ0IsQ0FBQztJQUNyQixJQUFJLENBQUM7UUFDSCxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sSUFBSSwwQkFBWSxDQUNwQixxQkFBcUIsRUFDckIsMEJBQTBCLFlBQVksOERBQThELFlBQVksSUFBSSxDQUNySCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxxQkFBTyxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksMEJBQVksQ0FDcEIscUJBQXFCLEVBQ3JCLHlCQUF5QixRQUFRLHVCQUF1QixZQUFZLCtCQUErQixNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDdEksQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBcUJELE1BQWEsa0JBQWtCO0lBQ1osUUFBUSxDQUFXO0lBRXBDLFlBQW1CLFFBQWtCO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQTBCO1FBQzVDLDRFQUE0RTtRQUM1RSw0RUFBNEU7UUFDNUUsbUVBQW1FO1FBQ25FLDBEQUEwRDtRQUMxRCxJQUFJLE9BQU8sT0FBTyxDQUFDLFlBQVksS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEYsb0JBQW9CLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCwrREFBK0Q7UUFDL0QsbUZBQW1GO1FBQ25GLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSTtZQUNqRCxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBYSxDQUFDO1lBQzlDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxPQUFPLElBQUksd0JBQVUsQ0FBQztZQUNwQixFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDakQsY0FBYztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQW1CO1FBQzVDLE1BQU0sSUFBSSxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUM5RCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMseUJBQXlCLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQzdCLE9BQU8sU0FBUyxDQUFDO2dCQUNuQixDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssMkJBQTJCO1FBQ2pDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM5QixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBekRELGdEQXlEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJ0Bhd3MtY2RrL3Rvb2xraXQtbGliJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IFByb3h5QWdlbnQsIHByb3hpZXMgfSBmcm9tICdwcm94eS1hZ2VudCc7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vYXBpLXByaXZhdGUnO1xuXG4vKipcbiAqIFZhbGlkYXRlIGEgcHJveHkgYWRkcmVzcyB1cCBmcm9udC5cbiAqXG4gKiBgcHJveHktYWdlbnRgIG9ubHkgcmVqZWN0cyBhbiBhZGRyZXNzIHdpdGggYSBtaXNzaW5nIG9yIHVuc3VwcG9ydGVkIHByb3RvY29sXG4gKiBsYXppbHksIG9uIHRoZSBmaXJzdCByZXF1ZXN0LCBzbyB3aXRob3V0IGAtdnZ2YCB0aGUgQ0xJIGFwcGVhcnMgdG8gaGFuZyBvclxuICogZmFpbHMgbGF0ZXIgd2l0aCBhIG1pc2xlYWRpbmcgZXJyb3IgKGUuZy4gbWlzc2luZyBjcmVkZW50aWFscykuIEZhaWwgZmFzdFxuICogaGVyZSB3aXRoIGFuIGFjdGlvbmFibGUgbWVzc2FnZSBpbnN0ZWFkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm94eUFkZHJlc3MocHJveHlBZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgbGV0IHByb3RvY29sOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgcHJvdG9jb2wgPSBuZXcgVVJMKHByb3h5QWRkcmVzcykucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJyk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAnSW52YWxpZFByb3h5QWRkcmVzcycsXG4gICAgICBgSW52YWxpZCBwcm94eSBhZGRyZXNzICcke3Byb3h5QWRkcmVzc30nOiBpdCBtdXN0IGJlIGEgVVJMIHRoYXQgaW5jbHVkZXMgYSBwcm90b2NvbCwgZS5nLiAnaHR0cDovLyR7cHJveHlBZGRyZXNzfScuYCxcbiAgICApO1xuICB9XG5cbiAgaWYgKCEocHJvdG9jb2wgaW4gcHJveGllcykpIHtcbiAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgJ0ludmFsaWRQcm94eUFkZHJlc3MnLFxuICAgICAgYFVuc3VwcG9ydGVkIHByb3RvY29sICcke3Byb3RvY29sfScgaW4gcHJveHkgYWRkcmVzcyAnJHtwcm94eUFkZHJlc3N9Jy4gU3VwcG9ydGVkIHByb3RvY29scyBhcmU6ICR7T2JqZWN0LmtleXMocHJveGllcykuam9pbignLCAnKX0uYCxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcHJveHktYWdlbnQgU0RLc1xuICovXG5pbnRlcmZhY2UgUHJveHlBZ2VudE9wdGlvbnMge1xuICAvKipcbiAgICogUHJveHkgYWRkcmVzcyB0byB1c2VcbiAgICpcbiAgICogQGRlZmF1bHQgTm8gcHJveHlcbiAgICovXG4gIHJlYWRvbmx5IHByb3h5QWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQSBwYXRoIHRvIGEgY2VydGlmaWNhdGUgYnVuZGxlIHRoYXQgY29udGFpbnMgYSBjZXJ0IHRvIGJlIHRydXN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGNlcnRpZmljYXRlIGJ1bmRsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FCdW5kbGVQYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUHJveHlBZ2VudFByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGlvSGVscGVyOiBJb0hlbHBlcikge1xuICAgIHRoaXMuaW9IZWxwZXIgPSBpb0hlbHBlcjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGUob3B0aW9uczogUHJveHlBZ2VudE9wdGlvbnMpIHtcbiAgICAvLyBPbmx5IHZhbGlkYXRlIHdoZW4gYW4gYWN0dWFsIHByb3h5IGFkZHJlc3Mgd2FzIGNvbmZpZ3VyZWQuIFdoZW4gYC0tcHJveHlgXG4gICAgLy8gaXMgbm90IGdpdmVuIHRoZSBzZXR0aW5nIGlzIHVuc2V0IChhbmQgY2FuIHN1cmZhY2UgYXQgcnVudGltZSBhcyBhbiBlbXB0eVxuICAgIC8vIHN0cmluZyBvciBlbXB0eSBhcnJheSksIGluIHdoaWNoIGNhc2Ugd2Ugc2tpcCB2YWxpZGF0aW9uIGFuZCBsZXRcbiAgICAvLyBQcm94eUFnZW50IGZhbGwgYmFjayB0byBlbnZpcm9ubWVudC12YXJpYWJsZSBkZXRlY3Rpb24uXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnByb3h5QWRkcmVzcyA9PT0gJ3N0cmluZycgJiYgb3B0aW9ucy5wcm94eUFkZHJlc3MubGVuZ3RoID4gMCkge1xuICAgICAgdmFsaWRhdGVQcm94eUFkZHJlc3Mob3B0aW9ucy5wcm94eUFkZHJlc3MpO1xuICAgIH1cblxuICAgIC8vIEZvcmNlIGl0IHRvIHVzZSB0aGUgcHJveHkgcHJvdmlkZWQgdGhyb3VnaCB0aGUgY29tbWFuZCBsaW5lLlxuICAgIC8vIE90aGVyd2lzZSwgbGV0IHRoZSBQcm94eUFnZW50IGF1dG8tZGV0ZWN0IHRoZSBwcm94eSB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAgY29uc3QgZ2V0UHJveHlGb3JVcmwgPSBvcHRpb25zLnByb3h5QWRkcmVzcyAhPSBudWxsXG4gICAgICA/ICgpID0+IFByb21pc2UucmVzb2x2ZShvcHRpb25zLnByb3h5QWRkcmVzcyEpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBuZXcgUHJveHlBZ2VudCh7XG4gICAgICBjYTogYXdhaXQgdGhpcy50cnlHZXRDQUNlcnQob3B0aW9ucy5jYUJ1bmRsZVBhdGgpLFxuICAgICAgZ2V0UHJveHlGb3JVcmwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHRyeUdldENBQ2VydChidW5kbGVQYXRoPzogc3RyaW5nKSB7XG4gICAgY29uc3QgcGF0aCA9IGJ1bmRsZVBhdGggfHwgdGhpcy5jYUJ1bmRsZVBhdGhGcm9tRW52aXJvbm1lbnQoKTtcbiAgICBpZiAocGF0aCkge1xuICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5kZWZhdWx0cy5kZWJ1ZyhgVXNpbmcgQ0EgYnVuZGxlIHBhdGg6ICR7cGF0aH1gKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZnMucGF0aEV4aXN0c1N5bmMocGF0aCkpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMocGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKFN0cmluZyhlKSk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhbmQgcmV0dXJuIGEgQ0EgY2VydGlmaWNhdGUgYnVuZGxlIHBhdGggdG8gYmUgcGFzc2VkIGludG8gdGhlIFNESy5cbiAgICovXG4gIHByaXZhdGUgY2FCdW5kbGVQYXRoRnJvbUVudmlyb25tZW50KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb2Nlc3MuZW52LmF3c19jYV9idW5kbGUpIHtcbiAgICAgIHJldHVybiBwcm9jZXNzLmVudi5hd3NfY2FfYnVuZGxlO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuQVdTX0NBX0JVTkRMRSkge1xuICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LkFXU19DQV9CVU5ETEU7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHktYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcm94eS1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSxvREFpQkM7QUFpQkQsMERBRUM7QUFqREQsZ0RBQWtDO0FBQ2xDLDZDQUErQjtBQUMvQiw2Q0FBa0Q7QUFDbEQsNERBQW9EO0FBRXBEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxZQUFvQjtJQUN2RCxJQUFJLFFBQWdCLENBQUM7SUFDckIsSUFBSSxDQUFDO1FBQ0gsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLElBQUksZ0NBQVksQ0FDcEIscUJBQXFCLEVBQ3JCLDBCQUEwQixZQUFZLDhEQUE4RCxZQUFZLElBQUksQ0FDckgsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUkscUJBQU8sQ0FBQyxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLGdDQUFZLENBQ3BCLHFCQUFxQixFQUNyQix5QkFBeUIsUUFBUSx1QkFBdUIsWUFBWSwrQkFBK0IsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ3RJLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsR0FBWTtJQUNsRCxPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDbkQsQ0FBQztBQXNERCxNQUFhLGtCQUFrQjtJQUNaLFFBQVEsQ0FBd0I7SUFFakQs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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBQcm94eUFnZW50LCBwcm94aWVzIH0gZnJvbSAncHJveHktYWdlbnQnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vYXBpLXByaXZhdGUtZXJyb3InO1xuXG4vKipcbiAqIFZhbGlkYXRlIGEgcHJveHkgYWRkcmVzcyB1cCBmcm9udC5cbiAqXG4gKiBgcHJveHktYWdlbnRgIG9ubHkgcmVqZWN0cyBhbiBhZGRyZXNzIHdpdGggYSBtaXNzaW5nIG9yIHVuc3VwcG9ydGVkIHByb3RvY29sXG4gKiBsYXppbHksIG9uIHRoZSBmaXJzdCByZXF1ZXN0LCBzbyB3aXRob3V0IGAtdnZ2YCB0aGUgQ0xJIGFwcGVhcnMgdG8gaGFuZyBvclxuICogZmFpbHMgbGF0ZXIgd2l0aCBhIG1pc2xlYWRpbmcgZXJyb3IgKGUuZy4gbWlzc2luZyBjcmVkZW50aWFscykuIEZhaWwgZmFzdFxuICogaGVyZSB3aXRoIGFuIGFjdGlvbmFibGUgbWVzc2FnZSBpbnN0ZWFkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm94eUFkZHJlc3MocHJveHlBZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgbGV0IHByb3RvY29sOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgcHJvdG9jb2wgPSBuZXcgVVJMKHByb3h5QWRkcmVzcykucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJyk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAnSW52YWxpZFByb3h5QWRkcmVzcycsXG4gICAgICBgSW52YWxpZCBwcm94eSBhZGRyZXNzICcke3Byb3h5QWRkcmVzc30nOiBpdCBtdXN0IGJlIGEgVVJMIHRoYXQgaW5jbHVkZXMgYSBwcm90b2NvbCwgZS5nLiAnaHR0cDovLyR7cHJveHlBZGRyZXNzfScuYCxcbiAgICApO1xuICB9XG5cbiAgaWYgKCEocHJvdG9jb2wgaW4gcHJveGllcykpIHtcbiAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgJ0ludmFsaWRQcm94eUFkZHJlc3MnLFxuICAgICAgYFVuc3VwcG9ydGVkIHByb3RvY29sICcke3Byb3RvY29sfScgaW4gcHJveHkgYWRkcmVzcyAnJHtwcm94eUFkZHJlc3N9Jy4gU3VwcG9ydGVkIHByb3RvY29scyBhcmU6ICR7T2JqZWN0LmtleXMocHJveGllcykuam9pbignLCAnKX0uYCxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQ29lcmNlIGEgcmF3IG5ldHdvcmsgc2V0dGluZyBpbnRvIGEgdmFsdWUgdGhlIHJlc3Qgb2YgdGhlIENMSSBjYW4gcmVseSBvbi5cbiAqXG4gKiBgU2V0dGluZ3MuZ2V0KClgIGlzIHVudHlwZWQgYW5kIHN1cmZhY2VzIGFuIHVuc2V0IGAtLXByb3h5YCBvciBgLS1jYS1idW5kbGUtcGF0aGAgYXMgZWl0aGVyXG4gKiBgdW5kZWZpbmVkYCBvciBhbiBlbXB0eSBhcnJheSwgZGVwZW5kaW5nIG9uIGhvdyBpdCB3YXMgcGFyc2VkLiBBbiBlbXB0eSBTVFJJTkcgaXMgYSBkaWZmZXJlbnRcbiAqIHRoaW5nOiBgLS1wcm94eSAnJ2AgbWVhbnMgXCJnbyBkaXJlY3QsIGlnbm9yZSB0aGUgcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzXCIsIHNvIGl0IGhhcyB0byBzdXJ2aXZlXG4gKiBub3JtYWxpemF0aW9uLiBBbnl0aGluZyB0aGF0IGlzIG5vdCBhIHN0cmluZyBjb3VudHMgYXMgdW5jb25maWd1cmVkLCB3aGljaCBpcyB3aGF0IG1ha2VzIHRoZVxuICogZW52aXJvbm1lbnQgdGhlIGZhbGxiYWNrLlxuICpcbiAqIEFwcGxpZWQgYXQgdGhlIHBvaW50IHRoZXNlIHNldHRpbmdzIGVudGVyIHR5cGVkIGNvZGUsIGZvciB0d28gcmVhc29ucy4gQW4gZW1wdHkgYXJyYXkgaXMgdHJ1dGh5LCBzb1xuICogaXQgc2xpcHMgcGFzdCBldmVyeSBgaWYgKHZhbHVlKWAgZ3VhcmQgZG93bnN0cmVhbSBhbmQgdGhlbiBmYWlscyBzb21ld2hlcmUgdW5oZWxwZnVsIC0tXG4gKiBgcGF0aC5yZXNvbHZlKFtdKWAgdGhyb3dzIGEgYFR5cGVFcnJvcmAgdGhhdCB0aGUgQ0EtYnVuZGxlIHJlc29sdmVyIHN3YWxsb3dzLCBzaWxlbnRseSBkaXNjYXJkaW5nXG4gKiB0aGUgYnVuZGxlLiBBbmQgYm90aCB2YWx1ZXMgbm93IGNyb3NzIGEgcHJvY2VzcyBib3VuZGFyeSBpbnRvIHRoZSBkZXRhY2hlZCB0ZWxlbWV0cnkgc2VuZGVyLCB3aGljaFxuICogaGFzIG5vIGFjY2VzcyB0byB0aGUgc2V0dGluZ3MgdG8gcmUtZGVyaXZlIHRoZW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVOZXR3b3JrU2V0dGluZyhyYXc6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHJhdyA9PT0gJ3N0cmluZycgPyByYXcgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcHJveHktYWdlbnQgU0RLc1xuICovXG5pbnRlcmZhY2UgUHJveHlBZ2VudE9wdGlvbnMge1xuICAvKipcbiAgICogUHJveHkgYWRkcmVzcyB0byB1c2VcbiAgICpcbiAgICogQGRlZmF1bHQgTm8gcHJveHlcbiAgICovXG4gIHJlYWRvbmx5IHByb3h5QWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQSBwYXRoIHRvIGEgY2VydGlmaWNhdGUgYnVuZGxlIHRoYXQgY29udGFpbnMgYSBjZXJ0IHRvIGJlIHRydXN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGNlcnRpZmljYXRlIGJ1bmRsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FCdW5kbGVQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwcm94eSBjb25maWd1cmF0aW9uIHJlc29sdmVkIGZvciB0aGlzIGludm9jYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRQcm94eUFnZW50IHtcbiAgLyoqXG4gICAqIFRoZSBhZ2VudCB0byBwYXNzIHRvIGFueXRoaW5nIG1ha2luZyBIVFRQUyByZXF1ZXN0cyBpbiB0aGlzIHByb2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBhZ2VudDogUHJveHlBZ2VudDtcblxuICAvKipcbiAgICogQWJzb2x1dGUgcGF0aCB0byB0aGUgcmVzb2x2ZWQgQ0EgYnVuZGxlLCBpZiBvbmUgd2FzIGNvbmZpZ3VyZWQgYW5kIGV4aXN0cyBvbiBkaXNrLlxuICAgKlxuICAgKiBFeHBvc2VkIGJlY2F1c2UgYGFnZW50YCBjYW5ub3QgY3Jvc3MgYSBwcm9jZXNzIGJvdW5kYXJ5OiB0aGUgZGV0YWNoZWQgdGVsZW1ldHJ5IHNlbmRlciBidWlsZHMgaXRzXG4gICAqIG93biBhbmQgbmVlZHMgdG8gYmUgdG9sZCB3aGljaCBidW5kbGUgdG8gdHJ1c3QuIFRoZSBwYXRoIHRyYXZlbHMgcmF0aGVyIHRoYW4gdGhlIGJ5dGVzLCBiZWNhdXNlIGFcbiAgICogc3lzdGVtIGJ1bmRsZSBpcyByb3V0aW5lbHkgfjE5MEtCLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENBIGJ1bmRsZSB3YXMgY29uZmlndXJlZCwgb3IgdGhlIGNvbmZpZ3VyZWQgb25lIGRvZXMgbm90IGV4aXN0XG4gICAqL1xuICByZWFkb25seSBjYUJ1bmRsZVBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHBhcnQgb2YgYElvSGVscGVyYCB0aGF0IHByb3h5IHJlc29sdXRpb24gbmVlZHMuXG4gKlxuICogU3RydWN0dXJhbCBzbyB0aGUgZGV0YWNoZWQgdGVsZW1ldHJ5IHNlbmRlciwgd2hpY2ggaGFzIG5vIElvSG9zdCwgY2FuIHBhc3MgYSB3cml0ZXIgdGhhdCBnb2VzIHRvXG4gKiBzdGRlcnIgaW5zdGVhZC4gQSBmdWxsIGBJb0hlbHBlcmAgc2F0aXNmaWVzIHRoaXMgYXMtaXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlBZ2VudERpYWdub3N0aWNzIHtcbiAgcmVhZG9ubHkgZGVmYXVsdHM6IHtcbiAgICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgUHJveHlBZ2VudFByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogUHJveHlBZ2VudERpYWdub3N0aWNzO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihpb0hlbHBlcjogUHJveHlBZ2VudERpYWdub3N0aWNzKSB7XG4gICAgdGhpcy5pb0hlbHBlciA9IGlvSGVscGVyO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZShvcHRpb25zOiBQcm94eUFnZW50T3B0aW9ucyk6IFByb21pc2U8UmVzb2x2ZWRQcm94eUFnZW50PiB7XG4gICAgY29uc3QgcHJveHlBZGRyZXNzID0gbm9ybWFsaXplTmV0d29ya1NldHRpbmcob3B0aW9ucy5wcm94eUFkZHJlc3MpO1xuXG4gICAgLy8gT25seSBhIG5vbi1lbXB0eSBhZGRyZXNzIGlzIGEgcHJveHkgdG8gdmFsaWRhdGUuIEFuIGVtcHR5IG9uZSBpcyBhIGNvbmZpZ3VyZWQgXCJnbyBkaXJlY3RcIi5cbiAgICBpZiAocHJveHlBZGRyZXNzKSB7XG4gICAgICB2YWxpZGF0ZVByb3h5QWRkcmVzcyhwcm94eUFkZHJlc3MpO1xuICAgIH1cblxuICAgIC8vIEZvcmNlIGl0IHRvIHVzZSB0aGUgcHJveHkgcHJvdmlkZWQgdGhyb3VnaCB0aGUgY29tbWFuZCBsaW5lIC0tIGluY2x1ZGluZyBhbiBlbXB0eSBvbmUsIHdoaWNoXG4gICAgLy8gYHByb3h5LWFnZW50YCByZWFkcyBhcyBcIm5vIHByb3h5IGZvciB0aGlzIFVSTFwiLiBPbmx5IGFuIHVuY29uZmlndXJlZCBwcm94eSBmYWxscyB0aHJvdWdoIHRvXG4gICAgLy8gUHJveHlBZ2VudCdzIG93biBlbnZpcm9ubWVudC12YXJpYWJsZSBkZXRlY3Rpb24uXG4gICAgY29uc3QgZ2V0UHJveHlGb3JVcmwgPSBwcm94eUFkZHJlc3MgIT09IHVuZGVmaW5lZFxuICAgICAgPyAoKSA9PiBQcm9taXNlLnJlc29sdmUocHJveHlBZGRyZXNzKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjYUJ1bmRsZVBhdGggPSBhd2FpdCB0aGlzLnJlc29sdmVDQUJ1bmRsZVBhdGgobm9ybWFsaXplTmV0d29ya1NldHRpbmcob3B0aW9ucy5jYUJ1bmRsZVBhdGgpKTtcblxuICAgIHJldHVybiB7XG4gICAgICBhZ2VudDogbmV3IFByb3h5QWdlbnQoe1xuICAgICAgICBjYTogYXdhaXQgdGhpcy50cnlSZWFkQ0FCdW5kbGUoY2FCdW5kbGVQYXRoKSxcbiAgICAgICAgZ2V0UHJveHlGb3JVcmwsXG4gICAgICB9KSxcbiAgICAgIGNhQnVuZGxlUGF0aCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGNvbmZpZ3VyZWQgQ0EgYnVuZGxlIHRvIGFuIGFic29sdXRlIHBhdGgsIG9yIHVuZGVmaW5lZCBpZiB0aGVyZSBpc24ndCBhIHVzYWJsZSBvbmUuXG4gICAqXG4gICAqIEFic29sdXRlIGJlY2F1c2UgdGhlIHBhdGggaXMgaGFuZGVkIHRvIHRoZSBkZXRhY2hlZCBzZW5kZXIsIHdoaWNoIHJ1bnMgZnJvbSBhIGRpZmZlcmVudCBjd2QuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlc29sdmVDQUJ1bmRsZVBhdGgoYnVuZGxlUGF0aD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgY29uZmlndXJlZCA9IGJ1bmRsZVBhdGggfHwgdGhpcy5jYUJ1bmRsZVBhdGhGcm9tRW52aXJvbm1lbnQoKTtcbiAgICBpZiAoIWNvbmZpZ3VyZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gcGF0aC5yZXNvbHZlKGNvbmZpZ3VyZWQpO1xuICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5kZWZhdWx0cy5kZWJ1ZyhgVXNpbmcgQ0EgYnVuZGxlIHBhdGg6ICR7cmVzb2x2ZWR9YCk7XG4gICAgICByZXR1cm4gZnMucGF0aEV4aXN0c1N5bmMocmVzb2x2ZWQpID8gcmVzb2x2ZWQgOiB1bmRlZmluZWQ7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKFN0cmluZyhlKSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5UmVhZENBQnVuZGxlKGJ1bmRsZVBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghYnVuZGxlUGF0aCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoYnVuZGxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMuZGVidWcoU3RyaW5nKGUpKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYW5kIHJldHVybiBhIENBIGNlcnRpZmljYXRlIGJ1bmRsZSBwYXRoIHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBTREsuXG4gICAqL1xuICBwcml2YXRlIGNhQnVuZGxlUGF0aEZyb21FbnZpcm9ubWVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChwcm9jZXNzLmVudi5hd3NfY2FfYnVuZGxlKSB7XG4gICAgICByZXR1cm4gcHJvY2Vzcy5lbnYuYXdzX2NhX2J1bmRsZTtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52LkFXU19DQV9CVU5ETEUpIHtcbiAgICAgIHJldHVybiBwcm9jZXNzLmVudi5BV1NfQ0FfQlVORExFO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { IncomingMessage } from 'http';
|
|
2
|
+
import type { Agent } from 'https';
|
|
3
|
+
import type { TelemetrySchema } from './schema';
|
|
4
|
+
/**
|
|
5
|
+
* A batch of telemetry events, as the endpoint expects to receive it.
|
|
6
|
+
*/
|
|
7
|
+
export interface TelemetryBatch {
|
|
8
|
+
readonly events: TelemetrySchema[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Options for a single delivery attempt.
|
|
12
|
+
*/
|
|
13
|
+
export interface PostTelemetryOptions {
|
|
14
|
+
/**
|
|
15
|
+
* Agent to make the request through, carrying proxy and CA configuration.
|
|
16
|
+
*
|
|
17
|
+
* @default - Node's default agent, i.e. a direct connection
|
|
18
|
+
*/
|
|
19
|
+
readonly agent?: Agent;
|
|
20
|
+
/**
|
|
21
|
+
* Abort the attempt if the request has not completed within this many milliseconds.
|
|
22
|
+
*/
|
|
23
|
+
readonly timeoutMs: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* POST a batch of telemetry events, resolving with the endpoint's response.
|
|
27
|
+
*
|
|
28
|
+
* Rejects if the connection fails or the timeout expires, but NOT on an unsuccessful status code --
|
|
29
|
+
* inspect `statusCode` for that.
|
|
30
|
+
*/
|
|
31
|
+
export declare function postTelemetry(url: URL, batch: TelemetryBatch, options: PostTelemetryOptions): Promise<IncomingMessage>;
|
|
@@ -0,0 +1,76 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.postTelemetry = postTelemetry;
|
|
37
|
+
const https_1 = require("https");
|
|
38
|
+
const tls = __importStar(require("tls"));
|
|
39
|
+
const api_private_error_1 = require("../../api-private-error");
|
|
40
|
+
/**
|
|
41
|
+
* POST a batch of telemetry events, resolving with the endpoint's response.
|
|
42
|
+
*
|
|
43
|
+
* Rejects if the connection fails or the timeout expires, but NOT on an unsuccessful status code --
|
|
44
|
+
* inspect `statusCode` for that.
|
|
45
|
+
*/
|
|
46
|
+
function postTelemetry(url, batch, options) {
|
|
47
|
+
return new Promise((ok, ko) => {
|
|
48
|
+
const payload = JSON.stringify(batch);
|
|
49
|
+
const req = (0, https_1.request)({
|
|
50
|
+
hostname: url.hostname,
|
|
51
|
+
port: url.port || null,
|
|
52
|
+
path: url.pathname + url.search,
|
|
53
|
+
method: 'POST',
|
|
54
|
+
headers: {
|
|
55
|
+
'content-type': 'application/json',
|
|
56
|
+
'content-length': Buffer.byteLength(payload),
|
|
57
|
+
// The only caller makes one request and exits, so a keep-alive socket left in the agent's
|
|
58
|
+
// pool would just be something else holding the process open.
|
|
59
|
+
'connection': 'close',
|
|
60
|
+
},
|
|
61
|
+
agent: options.agent,
|
|
62
|
+
timeout: options.timeoutMs,
|
|
63
|
+
// Always pin identity to the destination host. `https-proxy-agent` does the TLS upgrade itself
|
|
64
|
+
// without passing that host to `tls.connect`, so for an IP-literal endpoint Node has nothing to
|
|
65
|
+
// match against and skips the check entirely -- naming the host explicitly closes that hole and
|
|
66
|
+
// pins to the endpoint rather than to whatever the proxy presents.
|
|
67
|
+
checkServerIdentity: (_host, cert) => tls.checkServerIdentity(url.hostname, cert),
|
|
68
|
+
}, ok);
|
|
69
|
+
req.on('error', ko);
|
|
70
|
+
req.on('timeout', () => {
|
|
71
|
+
req.destroy(new api_private_error_1.ToolkitError('RequestTimeout', `Timeout after ${options.timeoutMs}ms, aborting request`));
|
|
72
|
+
});
|
|
73
|
+
req.end(payload);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC10ZWxlbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwb3N0LXRlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDQSxzQ0FvQ0M7QUF2RUQsaUNBQWdDO0FBQ2hDLHlDQUEyQjtBQUUzQiwrREFBdUQ7QUEwQnZEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsYUFBYSxDQUMzQixHQUFRLEVBQ1IsS0FBcUIsRUFDckIsT0FBNkI7SUFFN0IsT0FBTyxJQUFJLE9BQU8sQ0FBa0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFBLGVBQU8sRUFBQztZQUNsQixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSTtZQUN0QixJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTTtZQUMvQixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2dCQUNsQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDNUMsMEZBQTBGO2dCQUMxRiw4REFBOEQ7Z0JBQzlELFlBQVksRUFBRSxPQUFPO2FBQ3RCO1lBQ0QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUztZQUMxQiwrRkFBK0Y7WUFDL0YsZ0dBQWdHO1lBQ2hHLGdHQUFnRztZQUNoRyxtRUFBbUU7WUFDbkUsbUJBQW1CLEVBQUUsQ0FBQyxLQUFhLEVBQUUsSUFBeUIsRUFBRSxFQUFFLENBQ2hFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztTQUM5QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVAsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxnQ0FBWSxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixPQUFPLENBQUMsU0FBUyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDNUcsQ0FBQyxDQUFDLENBQUM7UUFFSCxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSW5jb21pbmdNZXNzYWdlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgcmVxdWVzdCB9IGZyb20gJ2h0dHBzJztcbmltcG9ydCAqIGFzIHRscyBmcm9tICd0bHMnO1xuaW1wb3J0IHR5cGUgeyBUZWxlbWV0cnlTY2hlbWEgfSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi9hcGktcHJpdmF0ZS1lcnJvcic7XG5cbi8qKlxuICogQSBiYXRjaCBvZiB0ZWxlbWV0cnkgZXZlbnRzLCBhcyB0aGUgZW5kcG9pbnQgZXhwZWN0cyB0byByZWNlaXZlIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeUJhdGNoIHtcbiAgcmVhZG9ubHkgZXZlbnRzOiBUZWxlbWV0cnlTY2hlbWFbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhIHNpbmdsZSBkZWxpdmVyeSBhdHRlbXB0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RUZWxlbWV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFnZW50IHRvIG1ha2UgdGhlIHJlcXVlc3QgdGhyb3VnaCwgY2FycnlpbmcgcHJveHkgYW5kIENBIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9kZSdzIGRlZmF1bHQgYWdlbnQsIGkuZS4gYSBkaXJlY3QgY29ubmVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnQ/OiBBZ2VudDtcblxuICAvKipcbiAgICogQWJvcnQgdGhlIGF0dGVtcHQgaWYgdGhlIHJlcXVlc3QgaGFzIG5vdCBjb21wbGV0ZWQgd2l0aGluIHRoaXMgbWFueSBtaWxsaXNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0TXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQT1NUIGEgYmF0Y2ggb2YgdGVsZW1ldHJ5IGV2ZW50cywgcmVzb2x2aW5nIHdpdGggdGhlIGVuZHBvaW50J3MgcmVzcG9uc2UuXG4gKlxuICogUmVqZWN0cyBpZiB0aGUgY29ubmVjdGlvbiBmYWlscyBvciB0aGUgdGltZW91dCBleHBpcmVzLCBidXQgTk9UIG9uIGFuIHVuc3VjY2Vzc2Z1bCBzdGF0dXMgY29kZSAtLVxuICogaW5zcGVjdCBgc3RhdHVzQ29kZWAgZm9yIHRoYXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3N0VGVsZW1ldHJ5KFxuICB1cmw6IFVSTCxcbiAgYmF0Y2g6IFRlbGVtZXRyeUJhdGNoLFxuICBvcHRpb25zOiBQb3N0VGVsZW1ldHJ5T3B0aW9ucyxcbik6IFByb21pc2U8SW5jb21pbmdNZXNzYWdlPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxJbmNvbWluZ01lc3NhZ2U+KChvaywga28pID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoYmF0Y2gpO1xuICAgIGNvbnN0IHJlcSA9IHJlcXVlc3Qoe1xuICAgICAgaG9zdG5hbWU6IHVybC5ob3N0bmFtZSxcbiAgICAgIHBvcnQ6IHVybC5wb3J0IHx8IG51bGwsXG4gICAgICBwYXRoOiB1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoLFxuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHBheWxvYWQpLFxuICAgICAgICAvLyBUaGUgb25seSBjYWxsZXIgbWFrZXMgb25lIHJlcXVlc3QgYW5kIGV4aXRzLCBzbyBhIGtlZXAtYWxpdmUgc29ja2V0IGxlZnQgaW4gdGhlIGFnZW50J3NcbiAgICAgICAgLy8gcG9vbCB3b3VsZCBqdXN0IGJlIHNvbWV0aGluZyBlbHNlIGhvbGRpbmcgdGhlIHByb2Nlc3Mgb3Blbi5cbiAgICAgICAgJ2Nvbm5lY3Rpb24nOiAnY2xvc2UnLFxuICAgICAgfSxcbiAgICAgIGFnZW50OiBvcHRpb25zLmFnZW50LFxuICAgICAgdGltZW91dDogb3B0aW9ucy50aW1lb3V0TXMsXG4gICAgICAvLyBBbHdheXMgcGluIGlkZW50aXR5IHRvIHRoZSBkZXN0aW5hdGlvbiBob3N0LiBgaHR0cHMtcHJveHktYWdlbnRgIGRvZXMgdGhlIFRMUyB1cGdyYWRlIGl0c2VsZlxuICAgICAgLy8gd2l0aG91dCBwYXNzaW5nIHRoYXQgaG9zdCB0byBgdGxzLmNvbm5lY3RgLCBzbyBmb3IgYW4gSVAtbGl0ZXJhbCBlbmRwb2ludCBOb2RlIGhhcyBub3RoaW5nIHRvXG4gICAgICAvLyBtYXRjaCBhZ2FpbnN0IGFuZCBza2lwcyB0aGUgY2hlY2sgZW50aXJlbHkgLS0gbmFtaW5nIHRoZSBob3N0IGV4cGxpY2l0bHkgY2xvc2VzIHRoYXQgaG9sZSBhbmRcbiAgICAgIC8vIHBpbnMgdG8gdGhlIGVuZHBvaW50IHJhdGhlciB0aGFuIHRvIHdoYXRldmVyIHRoZSBwcm94eSBwcmVzZW50cy5cbiAgICAgIGNoZWNrU2VydmVySWRlbnRpdHk6IChfaG9zdDogc3RyaW5nLCBjZXJ0OiB0bHMuUGVlckNlcnRpZmljYXRlKSA9PlxuICAgICAgICB0bHMuY2hlY2tTZXJ2ZXJJZGVudGl0eSh1cmwuaG9zdG5hbWUsIGNlcnQpLFxuICAgIH0sIG9rKTtcblxuICAgIHJlcS5vbignZXJyb3InLCBrbyk7XG4gICAgcmVxLm9uKCd0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgcmVxLmRlc3Ryb3kobmV3IFRvb2xraXRFcnJvcignUmVxdWVzdFRpbWVvdXQnLCBgVGltZW91dCBhZnRlciAke29wdGlvbnMudGltZW91dE1zfW1zLCBhYm9ydGluZyByZXF1ZXN0YCkpO1xuICAgIH0pO1xuXG4gICAgcmVxLmVuZChwYXlsb2FkKTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|