aws-cdk
Version:
AWS CDK Toolkit CLI, the command line tool for CDK apps
76 lines • 8.56 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.postTelemetry = postTelemetry;
const https_1 = require("https");
const tls = __importStar(require("tls"));
const api_private_error_1 = require("../../api-private-error");
/**
* POST a batch of telemetry events, resolving with the endpoint's response.
*
* Rejects if the connection fails or the timeout expires, but NOT on an unsuccessful status code --
* inspect `statusCode` for that.
*/
function postTelemetry(url, batch, options) {
return new Promise((ok, ko) => {
const payload = JSON.stringify(batch);
const req = (0, https_1.request)({
hostname: url.hostname,
port: url.port || null,
path: url.pathname + url.search,
method: 'POST',
headers: {
'content-type': 'application/json',
'content-length': Buffer.byteLength(payload),
// The only caller makes one request and exits, so a keep-alive socket left in the agent's
// pool would just be something else holding the process open.
'connection': 'close',
},
agent: options.agent,
timeout: options.timeoutMs,
// Always pin identity to the destination host. `https-proxy-agent` does the TLS upgrade itself
// without passing that host to `tls.connect`, so for an IP-literal endpoint Node has nothing to
// match against and skips the check entirely -- naming the host explicitly closes that hole and
// pins to the endpoint rather than to whatever the proxy presents.
checkServerIdentity: (_host, cert) => tls.checkServerIdentity(url.hostname, cert),
}, ok);
req.on('error', ko);
req.on('timeout', () => {
req.destroy(new api_private_error_1.ToolkitError('RequestTimeout', `Timeout after ${options.timeoutMs}ms, aborting request`));
});
req.end(payload);
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC10ZWxlbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwb3N0LXRlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDQSxzQ0FvQ0M7QUF2RUQsaUNBQWdDO0FBQ2hDLHlDQUEyQjtBQUUzQiwrREFBdUQ7QUEwQnZEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsYUFBYSxDQUMzQixHQUFRLEVBQ1IsS0FBcUIsRUFDckIsT0FBNkI7SUFFN0IsT0FBTyxJQUFJLE9BQU8sQ0FBa0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFBLGVBQU8sRUFBQztZQUNsQixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSTtZQUN0QixJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTTtZQUMvQixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2dCQUNsQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDNUMsMEZBQTBGO2dCQUMxRiw4REFBOEQ7Z0JBQzlELFlBQVksRUFBRSxPQUFPO2FBQ3RCO1lBQ0QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUztZQUMxQiwrRkFBK0Y7WUFDL0YsZ0dBQWdHO1lBQ2hHLGdHQUFnRztZQUNoRyxtRUFBbUU7WUFDbkUsbUJBQW1CLEVBQUUsQ0FBQyxLQUFhLEVBQUUsSUFBeUIsRUFBRSxFQUFFLENBQ2hFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztTQUM5QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVAsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxnQ0FBWSxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixPQUFPLENBQUMsU0FBUyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDNUcsQ0FBQyxDQUFDLENBQUM7UUFFSCxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSW5jb21pbmdNZXNzYWdlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgcmVxdWVzdCB9IGZyb20gJ2h0dHBzJztcbmltcG9ydCAqIGFzIHRscyBmcm9tICd0bHMnO1xuaW1wb3J0IHR5cGUgeyBUZWxlbWV0cnlTY2hlbWEgfSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi9hcGktcHJpdmF0ZS1lcnJvcic7XG5cbi8qKlxuICogQSBiYXRjaCBvZiB0ZWxlbWV0cnkgZXZlbnRzLCBhcyB0aGUgZW5kcG9pbnQgZXhwZWN0cyB0byByZWNlaXZlIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeUJhdGNoIHtcbiAgcmVhZG9ubHkgZXZlbnRzOiBUZWxlbWV0cnlTY2hlbWFbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhIHNpbmdsZSBkZWxpdmVyeSBhdHRlbXB0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RUZWxlbWV0cnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFnZW50IHRvIG1ha2UgdGhlIHJlcXVlc3QgdGhyb3VnaCwgY2FycnlpbmcgcHJveHkgYW5kIENBIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9kZSdzIGRlZmF1bHQgYWdlbnQsIGkuZS4gYSBkaXJlY3QgY29ubmVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnQ/OiBBZ2VudDtcblxuICAvKipcbiAgICogQWJvcnQgdGhlIGF0dGVtcHQgaWYgdGhlIHJlcXVlc3QgaGFzIG5vdCBjb21wbGV0ZWQgd2l0aGluIHRoaXMgbWFueSBtaWxsaXNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0TXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQT1NUIGEgYmF0Y2ggb2YgdGVsZW1ldHJ5IGV2ZW50cywgcmVzb2x2aW5nIHdpdGggdGhlIGVuZHBvaW50J3MgcmVzcG9uc2UuXG4gKlxuICogUmVqZWN0cyBpZiB0aGUgY29ubmVjdGlvbiBmYWlscyBvciB0aGUgdGltZW91dCBleHBpcmVzLCBidXQgTk9UIG9uIGFuIHVuc3VjY2Vzc2Z1bCBzdGF0dXMgY29kZSAtLVxuICogaW5zcGVjdCBgc3RhdHVzQ29kZWAgZm9yIHRoYXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3N0VGVsZW1ldHJ5KFxuICB1cmw6IFVSTCxcbiAgYmF0Y2g6IFRlbGVtZXRyeUJhdGNoLFxuICBvcHRpb25zOiBQb3N0VGVsZW1ldHJ5T3B0aW9ucyxcbik6IFByb21pc2U8SW5jb21pbmdNZXNzYWdlPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxJbmNvbWluZ01lc3NhZ2U+KChvaywga28pID0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoYmF0Y2gpO1xuICAgIGNvbnN0IHJlcSA9IHJlcXVlc3Qoe1xuICAgICAgaG9zdG5hbWU6IHVybC5ob3N0bmFtZSxcbiAgICAgIHBvcnQ6IHVybC5wb3J0IHx8IG51bGwsXG4gICAgICBwYXRoOiB1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoLFxuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICdjb250ZW50LWxlbmd0aCc6IEJ1ZmZlci5ieXRlTGVuZ3RoKHBheWxvYWQpLFxuICAgICAgICAvLyBUaGUgb25seSBjYWxsZXIgbWFrZXMgb25lIHJlcXVlc3QgYW5kIGV4aXRzLCBzbyBhIGtlZXAtYWxpdmUgc29ja2V0IGxlZnQgaW4gdGhlIGFnZW50J3NcbiAgICAgICAgLy8gcG9vbCB3b3VsZCBqdXN0IGJlIHNvbWV0aGluZyBlbHNlIGhvbGRpbmcgdGhlIHByb2Nlc3Mgb3Blbi5cbiAgICAgICAgJ2Nvbm5lY3Rpb24nOiAnY2xvc2UnLFxuICAgICAgfSxcbiAgICAgIGFnZW50OiBvcHRpb25zLmFnZW50LFxuICAgICAgdGltZW91dDogb3B0aW9ucy50aW1lb3V0TXMsXG4gICAgICAvLyBBbHdheXMgcGluIGlkZW50aXR5IHRvIHRoZSBkZXN0aW5hdGlvbiBob3N0LiBgaHR0cHMtcHJveHktYWdlbnRgIGRvZXMgdGhlIFRMUyB1cGdyYWRlIGl0c2VsZlxuICAgICAgLy8gd2l0aG91dCBwYXNzaW5nIHRoYXQgaG9zdCB0byBgdGxzLmNvbm5lY3RgLCBzbyBmb3IgYW4gSVAtbGl0ZXJhbCBlbmRwb2ludCBOb2RlIGhhcyBub3RoaW5nIHRvXG4gICAgICAvLyBtYXRjaCBhZ2FpbnN0IGFuZCBza2lwcyB0aGUgY2hlY2sgZW50aXJlbHkgLS0gbmFtaW5nIHRoZSBob3N0IGV4cGxpY2l0bHkgY2xvc2VzIHRoYXQgaG9sZSBhbmRcbiAgICAgIC8vIHBpbnMgdG8gdGhlIGVuZHBvaW50IHJhdGhlciB0aGFuIHRvIHdoYXRldmVyIHRoZSBwcm94eSBwcmVzZW50cy5cbiAgICAgIGNoZWNrU2VydmVySWRlbnRpdHk6IChfaG9zdDogc3RyaW5nLCBjZXJ0OiB0bHMuUGVlckNlcnRpZmljYXRlKSA9PlxuICAgICAgICB0bHMuY2hlY2tTZXJ2ZXJJZGVudGl0eSh1cmwuaG9zdG5hbWUsIGNlcnQpLFxuICAgIH0sIG9rKTtcblxuICAgIHJlcS5vbignZXJyb3InLCBrbyk7XG4gICAgcmVxLm9uKCd0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgcmVxLmRlc3Ryb3kobmV3IFRvb2xraXRFcnJvcignUmVxdWVzdFRpbWVvdXQnLCBgVGltZW91dCBhZnRlciAke29wdGlvbnMudGltZW91dE1zfW1zLCBhYm9ydGluZyByZXF1ZXN0YCkpO1xuICAgIH0pO1xuXG4gICAgcmVxLmVuZChwYXlsb2FkKTtcbiAgfSk7XG59XG4iXX0=