aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
101 lines • 12.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.prefix = exports.data = exports.print = exports.highlight = exports.success = exports.warning = exports.error = exports.debug = exports.trace = exports.increaseVerbosity = exports.setCI = exports.setLogLevel = exports.CI = exports.logLevel = exports.LogLevel = exports.withCorkedLogging = void 0;
const util = require("util");
const chalk = require("chalk");
const { stdout, stderr } = process;
async function withCorkedLogging(block) {
corkLogging();
try {
return await block();
}
finally {
uncorkLogging();
}
}
exports.withCorkedLogging = withCorkedLogging;
let CORK_COUNTER = 0;
const logBuffer = [];
function corked() {
return CORK_COUNTER !== 0;
}
function corkLogging() {
CORK_COUNTER += 1;
}
function uncorkLogging() {
CORK_COUNTER -= 1;
if (!corked()) {
logBuffer.forEach(([stream, str]) => stream.write(str + '\n'));
logBuffer.splice(0);
}
}
const logger = (stream, styles, timestamp) => (fmt, ...args) => {
const ts = timestamp ? `[${formatTime(new Date())}] ` : '';
let str = ts + util.format(fmt, ...args);
if (styles && styles.length) {
str = styles.reduce((a, style) => style(a), str);
}
const realStream = typeof stream === 'function' ? stream() : stream;
// Logger is currently corked, so we store the message to be printed
// later when we are uncorked.
if (corked()) {
logBuffer.push([realStream, str]);
return;
}
realStream.write(str + '\n');
};
function formatTime(d) {
return `${lpad(d.getHours(), 2)}:${lpad(d.getMinutes(), 2)}:${lpad(d.getSeconds(), 2)}`;
function lpad(x, w) {
const s = `${x}`;
return '0'.repeat(Math.max(w - s.length, 0)) + s;
}
}
var LogLevel;
(function (LogLevel) {
/** Not verbose at all */
LogLevel[LogLevel["DEFAULT"] = 0] = "DEFAULT";
/** Pretty verbose */
LogLevel[LogLevel["DEBUG"] = 1] = "DEBUG";
/** Extremely verbose */
LogLevel[LogLevel["TRACE"] = 2] = "TRACE";
})(LogLevel || (exports.LogLevel = LogLevel = {}));
exports.logLevel = LogLevel.DEFAULT;
exports.CI = false;
function setLogLevel(newLogLevel) {
exports.logLevel = newLogLevel;
}
exports.setLogLevel = setLogLevel;
function setCI(newCI) {
exports.CI = newCI;
}
exports.setCI = setCI;
function increaseVerbosity() {
exports.logLevel += 1;
}
exports.increaseVerbosity = increaseVerbosity;
const stream = () => exports.CI ? stdout : stderr;
const _debug = logger(stream, [chalk.gray], true);
const trace = (fmt, ...args) => exports.logLevel >= LogLevel.TRACE && _debug(fmt, ...args);
exports.trace = trace;
const debug = (fmt, ...args) => exports.logLevel >= LogLevel.DEBUG && _debug(fmt, ...args);
exports.debug = debug;
exports.error = logger(stderr, [chalk.red]);
exports.warning = logger(stream, [chalk.yellow]);
exports.success = logger(stream, [chalk.green]);
exports.highlight = logger(stream, [chalk.bold]);
exports.print = logger(stream);
exports.data = logger(stdout);
/**
* Create a logger output that features a constant prefix string.
*
* @param prefixString the prefix string to be appended before any log entry.
* @param fn the logger function to be used (typically one of the other functions in this module)
*
* @returns a new LoggerFunction.
*/
function prefix(prefixString, fn) {
return (fmt, ...args) => fn(`%s ${fmt}`, prefixString, ...args);
}
exports.prefix = prefix;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUcvQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUk1QixLQUFLLFVBQVUsaUJBQWlCLENBQUksS0FBdUI7SUFDaEUsV0FBVyxFQUFFLENBQUM7SUFDZCxJQUFJO1FBQ0YsT0FBTyxNQUFNLEtBQUssRUFBRSxDQUFDO0tBQ3RCO1lBQVM7UUFDUixhQUFhLEVBQUUsQ0FBQztLQUNqQjtBQUNILENBQUM7QUFQRCw4Q0FPQztBQUVELElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUNyQixNQUFNLFNBQVMsR0FBeUIsRUFBRSxDQUFDO0FBRTNDLFNBQVMsTUFBTTtJQUNiLE9BQU8sWUFBWSxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsU0FBUyxXQUFXO0lBQ2xCLFlBQVksSUFBSSxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUVELFNBQVMsYUFBYTtJQUNwQixZQUFZLElBQUksQ0FBQyxDQUFDO0lBQ2xCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNiLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvRCxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3JCO0FBQ0gsQ0FBQztBQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBa0MsRUFBRSxNQUFrQixFQUFFLFNBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBVyxFQUFFLEdBQUcsSUFBZSxFQUFFLEVBQUU7SUFDbEksTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVB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RUFBRSxFQUFFLENBQUMsZ0JBQVEsSUFBSSxRQUFRLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUFoRyxRQUFBLEtBQUssU0FBMkY7QUFDaEcsUUFBQSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLFFBQUEsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN6QyxRQUFBLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDeEMsUUFBQSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLFFBQUEsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QixRQUFBLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFJbkM7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLE1BQU0sQ0FBQyxZQUFvQixFQUFFLEVBQWtCO0lBQzdELE9BQU8sQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFGRCx3QkFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5cbnR5cGUgU3R5bGVGbiA9IChzdHI6IHN0cmluZykgPT4gc3RyaW5nO1xuY29uc3QgeyBzdGRvdXQsIHN0ZGVyciB9ID0gcHJvY2VzcztcblxudHlwZSBXcml0YWJsZUZhY3RvcnkgPSAoKSA9PiBXcml0YWJsZTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhDb3JrZWRMb2dnaW5nPEE+KGJsb2NrOiAoKSA9PiBQcm9taXNlPEE+KTogUHJvbWlzZTxBPiB7XG4gIGNvcmtMb2dnaW5nKCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGJsb2NrKCk7XG4gIH0gZmluYWxseSB7XG4gICAgdW5jb3JrTG9nZ2luZygpO1xuICB9XG59XG5cbmxldCBDT1JLX0NPVU5URVIgPSAwO1xuY29uc3QgbG9nQnVmZmVyOiBbV3JpdGFibGUsIHN0cmluZ11bXSA9IFtdO1xuXG5mdW5jdGlvbiBjb3JrZWQoKSB7XG4gIHJldHVybiBDT1JLX0NPVU5URVIgIT09IDA7XG59XG5cbmZ1bmN0aW9uIGNvcmtMb2dnaW5nKCkge1xuICBDT1JLX0NPVU5URVIgKz0gMTtcbn1cblxuZnVuY3Rpb24gdW5jb3JrTG9nZ2luZygpIHtcbiAgQ09SS19DT1VOVEVSIC09IDE7XG4gIGlmICghY29ya2VkKCkpIHtcbiAgICBsb2dCdWZmZXIuZm9yRWFjaCgoW3N0cmVhbSwgc3RyXSkgPT4gc3RyZWFtLndyaXRlKHN0ciArICdcXG4nKSk7XG4gICAgbG9nQnVmZmVyLnNwbGljZSgwKTtcbiAgfVxufVxuXG5jb25zdCBsb2dnZXIgPSAoc3RyZWFtOiBXcml0YWJsZSB8IFdyaXRhYmxlRmFjdG9yeSwgc3R5bGVzPzogU3R5bGVGbltdLCB0aW1lc3RhbXA/OiBib29sZWFuKSA9PiAoZm10OiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICBjb25zdCB0cyA9IHRpbWVzdGFtcCA/IGBbJHtmb3JtYXRUaW1lKG5ldyBEYXRlKCkpfV0gYCA6ICcnO1xuXG4gIGxldCBzdHIgPSB0cyArIHV0aWwuZm9ybWF0KGZtdCwgLi4uYXJncyk7XG4gIGlmIChzdHlsZXMgJiYgc3R5bGVzLmxlbmd0aCkge1xuICAgIHN0ciA9IHN0eWxlcy5yZWR1Y2UoKGEsIHN0eWxlKSA9PiBzdHlsZShhKSwgc3RyKTtcbiAgfVxuXG4gIGNvbnN0IHJlYWxTdHJlYW0gPSB0eXBlb2Ygc3RyZWFtID09PSAnZnVuY3Rpb24nID8gc3RyZWFtKCkgOiBzdHJlYW07XG5cbiAgLy8gTG9nZ2VyIGlzIGN1cnJlbnRseSBjb3JrZWQsIHNvIHdlIHN0b3JlIHRoZSBtZXNzYWdlIHRvIGJlIHByaW50ZWRcbiAgLy8gbGF0ZXIgd2hlbiB3ZSBhcmUgdW5jb3JrZWQuXG4gIGlmIChjb3JrZWQoKSkge1xuICAgIGxvZ0J1ZmZlci5wdXNoKFtyZWFsU3RyZWFtLCBzdHJdKTtcbiAgICByZXR1cm47XG4gIH1cblxuICByZWFsU3RyZWFtLndyaXRlKHN0ciArICdcXG4nKTtcbn07XG5cbmZ1bmN0aW9uIGZvcm1hdFRpbWUoZDogRGF0ZSkge1xuICByZXR1cm4gYCR7bHBhZChkLmdldEhvdXJzKCksIDIpfToke2xwYWQoZC5nZXRNaW51dGVzKCksIDIpfToke2xwYWQoZC5nZXRTZWNvbmRzKCksIDIpfWA7XG5cbiAgZnVuY3Rpb24gbHBhZCh4OiBhbnksIHc6IG51bWJlcikge1xuICAgIGNvbnN0IHMgPSBgJHt4fWA7XG4gICAgcmV0dXJuICcwJy5yZXBlYXQoTWF0aC5tYXgodyAtIHMubGVuZ3RoLCAwKSkgKyBzO1xuICB9XG59XG5cbmV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgLyoqIE5vdCB2ZXJib3NlIGF0IGFsbCAqL1xuICBERUZBVUxUID0gMCxcbiAgLyoqIFByZXR0eSB2ZXJib3NlICovXG4gIERFQlVHID0gMSxcbiAgLyoqIEV4dHJlbWVseSB2ZXJib3NlICovXG4gIFRSQUNFID0gMlxufVxuXG5leHBvcnQgbGV0IGxvZ0xldmVsID0gTG9nTGV2ZWwuREVGQVVMVDtcbmV4cG9ydCBsZXQgQ0kgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldExvZ0xldmVsKG5ld0xvZ0xldmVsOiBMb2dMZXZlbCkge1xuICBsb2dMZXZlbCA9IG5ld0xvZ0xldmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q0kobmV3Q0k6IGJvb2xlYW4pIHtcbiAgQ0kgPSBuZXdDSTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluY3JlYXNlVmVyYm9zaXR5KCkge1xuICBsb2dMZXZlbCArPSAxO1xufVxuXG5jb25zdCBzdHJlYW0gPSAoKSA9PiBDSSA/IHN0ZG91dCA6IHN0ZGVycjtcbmNvbnN0IF9kZWJ1ZyA9IGxvZ2dlcihzdHJlYW0sIFtjaGFsay5ncmF5XSwgdHJ1ZSk7XG5cbmV4cG9ydCBjb25zdCB0cmFjZSA9IChmbXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKSA9PiBsb2dMZXZlbCA+PSBMb2dMZXZlbC5UUkFDRSAmJiBfZGVidWcoZm10LCAuLi5hcmdzKTtcbmV4cG9ydCBjb25zdCBkZWJ1ZyA9IChmbXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKSA9PiBsb2dMZXZlbCA+PSBMb2dMZXZlbC5ERUJVRyAmJiBfZGVidWcoZm10LCAuLi5hcmdzKTtcbmV4cG9ydCBjb25zdCBlcnJvciA9IGxvZ2dlcihzdGRlcnIsIFtjaGFsay5yZWRdKTtcbmV4cG9ydCBjb25zdCB3YXJuaW5nID0gbG9nZ2VyKHN0cmVhbSwgW2NoYWxrLnllbGxvd10pO1xuZXhwb3J0IGNvbnN0IHN1Y2Nlc3MgPSBsb2dnZXIoc3RyZWFtLCBbY2hhbGsuZ3JlZW5dKTtcbmV4cG9ydCBjb25zdCBoaWdobGlnaHQgPSBsb2dnZXIoc3RyZWFtLCBbY2hhbGsuYm9sZF0pO1xuZXhwb3J0IGNvbnN0IHByaW50ID0gbG9nZ2VyKHN0cmVhbSk7XG5leHBvcnQgY29uc3QgZGF0YSA9IGxvZ2dlcihzdGRvdXQpO1xuXG5leHBvcnQgdHlwZSBMb2dnZXJGdW5jdGlvbiA9IChmbXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkO1xuXG4vKipcbiAqIENyZWF0ZSBhIGxvZ2dlciBvdXRwdXQgdGhhdCBmZWF0dXJlcyBhIGNvbnN0YW50IHByZWZpeCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHByZWZpeFN0cmluZyB0aGUgcHJlZml4IHN0cmluZyB0byBiZSBhcHBlbmRlZCBiZWZvcmUgYW55IGxvZyBlbnRyeS5cbiAqIEBwYXJhbSBmbiAgIHRoZSBsb2dnZXIgZnVuY3Rpb24gdG8gYmUgdXNlZCAodHlwaWNhbGx5IG9uZSBvZiB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlKVxuICpcbiAqIEByZXR1cm5zIGEgbmV3IExvZ2dlckZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4KHByZWZpeFN0cmluZzogc3RyaW5nLCBmbjogTG9nZ2VyRnVuY3Rpb24pOiBMb2dnZXJGdW5jdGlvbiB7XG4gIHJldHVybiAoZm10OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiBmbihgJXMgJHtmbXR9YCwgcHJlZml4U3RyaW5nLCAuLi5hcmdzKTtcbn1cbiJdfQ==