aws-cdk
Version:
AWS CDK Toolkit CLI, the command line tool for CDK apps
103 lines • 10.6 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.senderDiagnostics = void 0;
exports.sendTelemetry = sendTelemetry;
exports.isSuccess = isSuccess;
exports.trace = trace;
const fs = __importStar(require("node:fs"));
const post_telemetry_1 = require("./post-telemetry");
const api_private_error_1 = require("../../api-private-error");
const proxy_agent_1 = require("../proxy-agent");
/**
* Budget for the delivery attempt.
*
* Generous because nothing is waiting on it: this process is detached and the CLI has already exited,
* so the only thing a longer timeout costs is a background process living a little longer. It has to
* cover a proxy handshake plus the POST on a loaded machine.
*/
const NETWORK_TIMEOUT_MS = 10_000;
/**
* POST a telemetry payload, routing through a proxy when one applies.
*
* Returns the status code for the caller to judge, and lets failures reject: every outcome is handled
* in one place, in the entry point.
*/
async function sendTelemetry(cfg) {
if (!cfg?.endpoint) {
throw new api_private_error_1.ToolkitError('NoEndpoint', 'No telemetry endpoint was given');
}
const url = new URL(cfg.endpoint);
// The provider the CLI itself uses, so the child routes the way the parent would have, including
// SOCKS and PAC proxies and NO_PROXY from the inherited environment.
const { agent } = await new proxy_agent_1.ProxyAgentProvider(exports.senderDiagnostics).create({
proxyAddress: cfg.proxyUrl,
caBundlePath: cfg.caBundlePath,
});
const res = await (0, post_telemetry_1.postTelemetry)(url, cfg.body ?? { events: [] }, {
agent,
timeoutMs: cfg.timeoutMs ?? NETWORK_TIMEOUT_MS,
});
// Drain, or the socket is never released.
res.resume();
return res.statusCode;
}
function isSuccess(statusCode) {
return statusCode !== undefined && statusCode >= 200 && statusCode < 300;
}
/**
* Diagnostics for the detached child, which has no IoHost.
*/
exports.senderDiagnostics = {
defaults: {
debug: async (message) => trace(message),
},
};
/**
* Only visible when the parent was run with `CDK_TELEMETRY_SENDER_DEBUG=1`, which is also what makes
* it pass this process's stderr through. Synchronous because `process.exit` discards buffered writes.
*/
function trace(message) {
if (process.env.CDK_TELEMETRY_SENDER_DEBUG !== '1') {
return;
}
try {
fs.writeSync(2, `[cdk-telemetry-sender] ${message}\n`);
}
catch {
// Diagnostics must never be the reason anything fails.
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBEQSxzQ0F1QkM7QUFFRCw4QkFFQztBQWVELHNCQVNDO0FBN0dELDRDQUE4QjtBQUU5QixxREFBaUQ7QUFDakQsK0RBQXVEO0FBRXZELGdEQUFvRDtBQUVwRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztBQXNDbEM7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsYUFBYSxDQUFDLEdBQTBCO0lBQzVELElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDbkIsTUFBTSxJQUFJLGdDQUFZLENBQUMsWUFBWSxFQUFFLGlDQUFpQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVsQyxpR0FBaUc7SUFDakcscUVBQXFFO0lBQ3JFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksZ0NBQWtCLENBQUMseUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDdkUsWUFBWSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQzFCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtLQUMvQixDQUFDLENBQUM7SUFFSCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUEsOEJBQWEsRUFBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUMvRCxLQUFLO1FBQ0wsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLElBQUksa0JBQWtCO0tBQy9DLENBQUMsQ0FBQztJQUVILDBDQUEwQztJQUMxQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFYixPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUM7QUFDeEIsQ0FBQztBQUVELFNBQWdCLFNBQVMsQ0FBQyxVQUE4QjtJQUN0RCxPQUFPLFVBQVUsS0FBSyxTQUFTLElBQUksVUFBVSxJQUFJLEdBQUcsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBQzNFLENBQUM7QUFFRDs7R0FFRztBQUNVLFFBQUEsaUJBQWlCLEdBQTBCO0lBQ3RELFFBQVEsRUFBRTtRQUNSLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBZSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0tBQ2pEO0NBQ0YsQ0FBQztBQUVGOzs7R0FHRztBQUNILFNBQWdCLEtBQUssQ0FBQyxPQUFlO0lBQ25DLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNuRCxPQUFPO0lBQ1QsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLDBCQUEwQixPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCx1REFBdUQ7SUFDekQsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdub2RlOmZzJztcbmltcG9ydCB0eXBlIHsgVGVsZW1ldHJ5QmF0Y2ggfSBmcm9tICcuL3Bvc3QtdGVsZW1ldHJ5JztcbmltcG9ydCB7IHBvc3RUZWxlbWV0cnkgfSBmcm9tICcuL3Bvc3QtdGVsZW1ldHJ5JztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlLWVycm9yJztcbmltcG9ydCB0eXBlIHsgUHJveHlBZ2VudERpYWdub3N0aWNzIH0gZnJvbSAnLi4vcHJveHktYWdlbnQnO1xuaW1wb3J0IHsgUHJveHlBZ2VudFByb3ZpZGVyIH0gZnJvbSAnLi4vcHJveHktYWdlbnQnO1xuXG4vKipcbiAqIEJ1ZGdldCBmb3IgdGhlIGRlbGl2ZXJ5IGF0dGVtcHQuXG4gKlxuICogR2VuZXJvdXMgYmVjYXVzZSBub3RoaW5nIGlzIHdhaXRpbmcgb24gaXQ6IHRoaXMgcHJvY2VzcyBpcyBkZXRhY2hlZCBhbmQgdGhlIENMSSBoYXMgYWxyZWFkeSBleGl0ZWQsXG4gKiBzbyB0aGUgb25seSB0aGluZyBhIGxvbmdlciB0aW1lb3V0IGNvc3RzIGlzIGEgYmFja2dyb3VuZCBwcm9jZXNzIGxpdmluZyBhIGxpdHRsZSBsb25nZXIuIEl0IGhhcyB0b1xuICogY292ZXIgYSBwcm94eSBoYW5kc2hha2UgcGx1cyB0aGUgUE9TVCBvbiBhIGxvYWRlZCBtYWNoaW5lLlxuICovXG5jb25zdCBORVRXT1JLX1RJTUVPVVRfTVMgPSAxMF8wMDA7XG5cbi8qKlxuICogV2hhdCB0aGUgcGFyZW50IGhhbmRzIHRvIHRoaXMgcHJvY2Vzcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZWxlbWV0cnlTZW5kZXJDb25maWcge1xuICAvKipcbiAgICogQWJzb2x1dGUgVVJMIHRvIFBPU1QgdGhlIHRlbGVtZXRyeSBwYXlsb2FkIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJhdGNoIG9mIGV2ZW50cyB0byBkZWxpdmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgYm9keTogVGVsZW1ldHJ5QmF0Y2g7XG5cbiAgLyoqXG4gICAqIFByb3h5IHRvIHJvdXRlIHRocm91Z2guIEFuIGVtcHR5IHN0cmluZyBtZWFucyBcImV4cGxpY2l0bHkgbm8gcHJveHlcIiwgYXMgYC0tcHJveHkgJydgIGRvZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVzb2x2ZWQgZnJvbSB0aGUgaW5oZXJpdGVkIHByb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcywgYXMgaW4gdGhlIHBhcmVudFxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHlVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFic29sdXRlIHBhdGggdG8gYSBDQSBidW5kbGUgdG8gdHJ1c3QuIFRoZSBwYXRoLCBub3QgdGhlIGNvbnRlbnRzOiBhIHN5c3RlbSBidW5kbGUgaXMgfjE5MEtCLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBkZWZhdWx0IE5vZGUgdHJ1c3Qgc3RvcmUsIHBsdXMgYW55dGhpbmcgaW4gYE5PREVfRVhUUkFfQ0FfQ0VSVFNgXG4gICAqL1xuICByZWFkb25seSBjYUJ1bmRsZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1ZGdldCBmb3IgdGhlIGRlbGl2ZXJ5IGF0dGVtcHQsIGluIG1pbGxpc2Vjb25kcy5cbiAgICpcbiAgICogQGRlZmF1bHQgMTAwMDBcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRNcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQT1NUIGEgdGVsZW1ldHJ5IHBheWxvYWQsIHJvdXRpbmcgdGhyb3VnaCBhIHByb3h5IHdoZW4gb25lIGFwcGxpZXMuXG4gKlxuICogUmV0dXJucyB0aGUgc3RhdHVzIGNvZGUgZm9yIHRoZSBjYWxsZXIgdG8ganVkZ2UsIGFuZCBsZXRzIGZhaWx1cmVzIHJlamVjdDogZXZlcnkgb3V0Y29tZSBpcyBoYW5kbGVkXG4gKiBpbiBvbmUgcGxhY2UsIGluIHRoZSBlbnRyeSBwb2ludC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRUZWxlbWV0cnkoY2ZnOiBUZWxlbWV0cnlTZW5kZXJDb25maWcpOiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICBpZiAoIWNmZz8uZW5kcG9pbnQpIHtcbiAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdOb0VuZHBvaW50JywgJ05vIHRlbGVtZXRyeSBlbmRwb2ludCB3YXMgZ2l2ZW4nKTtcbiAgfVxuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoY2ZnLmVuZHBvaW50KTtcblxuICAvLyBUaGUgcHJvdmlkZXIgdGhlIENMSSBpdHNlbGYgdXNlcywgc28gdGhlIGNoaWxkIHJvdXRlcyB0aGUgd2F5IHRoZSBwYXJlbnQgd291bGQgaGF2ZSwgaW5jbHVkaW5nXG4gIC8vIFNPQ0tTIGFuZCBQQUMgcHJveGllcyBhbmQgTk9fUFJPWFkgZnJvbSB0aGUgaW5oZXJpdGVkIGVudmlyb25tZW50LlxuICBjb25zdCB7IGFnZW50IH0gPSBhd2FpdCBuZXcgUHJveHlBZ2VudFByb3ZpZGVyKHNlbmRlckRpYWdub3N0aWNzKS5jcmVhdGUoe1xuICAgIHByb3h5QWRkcmVzczogY2ZnLnByb3h5VXJsLFxuICAgIGNhQnVuZGxlUGF0aDogY2ZnLmNhQnVuZGxlUGF0aCxcbiAgfSk7XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgcG9zdFRlbGVtZXRyeSh1cmwsIGNmZy5ib2R5ID8/IHsgZXZlbnRzOiBbXSB9LCB7XG4gICAgYWdlbnQsXG4gICAgdGltZW91dE1zOiBjZmcudGltZW91dE1zID8/IE5FVFdPUktfVElNRU9VVF9NUyxcbiAgfSk7XG5cbiAgLy8gRHJhaW4sIG9yIHRoZSBzb2NrZXQgaXMgbmV2ZXIgcmVsZWFzZWQuXG4gIHJlcy5yZXN1bWUoKTtcblxuICByZXR1cm4gcmVzLnN0YXR1c0NvZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N1Y2Nlc3Moc3RhdHVzQ29kZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdGF0dXNDb2RlICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzQ29kZSA+PSAyMDAgJiYgc3RhdHVzQ29kZSA8IDMwMDtcbn1cblxuLyoqXG4gKiBEaWFnbm9zdGljcyBmb3IgdGhlIGRldGFjaGVkIGNoaWxkLCB3aGljaCBoYXMgbm8gSW9Ib3N0LlxuICovXG5leHBvcnQgY29uc3Qgc2VuZGVyRGlhZ25vc3RpY3M6IFByb3h5QWdlbnREaWFnbm9zdGljcyA9IHtcbiAgZGVmYXVsdHM6IHtcbiAgICBkZWJ1ZzogYXN5bmMgKG1lc3NhZ2U6IHN0cmluZykgPT4gdHJhY2UobWVzc2FnZSksXG4gIH0sXG59O1xuXG4vKipcbiAqIE9ubHkgdmlzaWJsZSB3aGVuIHRoZSBwYXJlbnQgd2FzIHJ1biB3aXRoIGBDREtfVEVMRU1FVFJZX1NFTkRFUl9ERUJVRz0xYCwgd2hpY2ggaXMgYWxzbyB3aGF0IG1ha2VzXG4gKiBpdCBwYXNzIHRoaXMgcHJvY2VzcydzIHN0ZGVyciB0aHJvdWdoLiBTeW5jaHJvbm91cyBiZWNhdXNlIGBwcm9jZXNzLmV4aXRgIGRpc2NhcmRzIGJ1ZmZlcmVkIHdyaXRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBpZiAocHJvY2Vzcy5lbnYuQ0RLX1RFTEVNRVRSWV9TRU5ERVJfREVCVUcgIT09ICcxJykge1xuICAgIHJldHVybjtcbiAgfVxuICB0cnkge1xuICAgIGZzLndyaXRlU3luYygyLCBgW2Nkay10ZWxlbWV0cnktc2VuZGVyXSAke21lc3NhZ2V9XFxuYCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIERpYWdub3N0aWNzIG11c3QgbmV2ZXIgYmUgdGhlIHJlYXNvbiBhbnl0aGluZyBmYWlscy5cbiAgfVxufVxuIl19