aws-cdk
Version:
AWS CDK Toolkit CLI, the command line tool for CDK apps
57 lines • 6.77 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.prettyPrintError = prettyPrintError;
/* eslint-disable no-console */
const chalk_1 = __importDefault(require("chalk"));
/* c8 ignore start */
function prettyPrintError(error, options = { soft: false, debug: false }) {
const err = ensureError(error);
// A soft error (for example a user-declined confirmation) is an expected outcome, not a crash.
// Present the message less scary.
const errorPaint = options.soft ? chalk_1.default.yellow : chalk_1.default.red;
console.error(errorPaint(err.message));
printCauses(err, options);
// Log the stack trace if we're on a developer workstation. Otherwise this will be into a minified
// file and the printed code line and stack trace are huge and useless.
if (options.debug) {
printTraces(err);
}
}
/**
* Recursively print all error causes recursively.
*/
function printCauses(err, options) {
if (err.cause && !options.soft) {
const cause = ensureError(err.cause);
console.error(chalk_1.default.yellow(`‣ ${cause.name}: ${cause.message}`));
printCauses(cause, options);
}
}
/**
* Recursively print all error traces.
*/
function printTraces(err) {
if (err.stack) {
console.debug(chalk_1.default.gray(err.stack));
}
if (err.cause) {
printTraces(ensureError(err.cause));
}
}
function ensureError(value) {
if (value instanceof Error)
return value;
let stringified = '[Unable to stringify the thrown value]';
try {
stringified = JSON.stringify(value);
}
catch {
}
const error = new Error(`An unexpected error was thrown: ${stringified}`);
return error;
}
/* c8 ignore stop */
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHR5LXByaW50LWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJldHR5LXByaW50LWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZ0JBLDRDQWVDO0FBL0JELCtCQUErQjtBQUMvQixrREFBMEI7QUFjMUIscUJBQXFCO0FBQ3JCLFNBQWdCLGdCQUFnQixDQUFDLEtBQWMsRUFBRSxVQUFxQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtJQUNqSCxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFL0IsK0ZBQStGO0lBQy9GLGtDQUFrQztJQUNsQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDO0lBRTNELE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFMUIsa0dBQWtHO0lBQ2xHLHVFQUF1RTtJQUN2RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsV0FBVyxDQUFDLEdBQVUsRUFBRSxPQUFrQztJQUNqRSxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxXQUFXLENBQUMsR0FBVTtJQUM3QixJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxJQUFJLEtBQUssWUFBWSxLQUFLO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFekMsSUFBSSxXQUFXLEdBQUcsd0NBQXdDLENBQUM7SUFDM0QsSUFBSSxDQUFDO1FBQ0gsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztJQUNULENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFDRCxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbnRlcmZhY2UgUHJldHR5RXJyb3JQcmludGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQcmludCB0aGUgZXJyb3IgYXMgYW4gZXhwZWN0ZWQgb3V0Y29tZSwgZm9yIGV4YW1wbGUgd2hlbiBhIHVzZXIgZGVjbGluZWQgYSBjb25maXJtYXRpb24gcHJvbXB0LlxuICAgKiBXaGlsZSB0aHJvd24gYXMgZXhjZXB0aW9ucywgdGhlc2Ugc2hvdWxkIHZpc3VhbGx5IG5vdCBiZSBwcmVzZW50ZWQgYXMgYSBjcmFzaC5cbiAgICovXG4gIHJlYWRvbmx5IHNvZnQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcmludHMgYXMgbXVjaCBkZWJ1ZyBvdXRwdXQgYXMgcG9zc2libGUuXG4gICAqL1xuICByZWFkb25seSBkZWJ1ZzogYm9vbGVhbjtcbn1cblxuLyogYzggaWdub3JlIHN0YXJ0ICovXG5leHBvcnQgZnVuY3Rpb24gcHJldHR5UHJpbnRFcnJvcihlcnJvcjogdW5rbm93biwgb3B0aW9uczogUHJldHR5RXJyb3JQcmludGVyT3B0aW9ucyA9IHsgc29mdDogZmFsc2UsIGRlYnVnOiBmYWxzZSB9KSB7XG4gIGNvbnN0IGVyciA9IGVuc3VyZUVycm9yKGVycm9yKTtcblxuICAvLyBBIHNvZnQgZXJyb3IgKGZvciBleGFtcGxlIGEgdXNlci1kZWNsaW5lZCBjb25maXJtYXRpb24pIGlzIGFuIGV4cGVjdGVkIG91dGNvbWUsIG5vdCBhIGNyYXNoLlxuICAvLyBQcmVzZW50IHRoZSBtZXNzYWdlIGxlc3Mgc2NhcnkuXG4gIGNvbnN0IGVycm9yUGFpbnQgPSBvcHRpb25zLnNvZnQgPyBjaGFsay55ZWxsb3cgOiBjaGFsay5yZWQ7XG5cbiAgY29uc29sZS5lcnJvcihlcnJvclBhaW50KGVyci5tZXNzYWdlKSk7XG4gIHByaW50Q2F1c2VzKGVyciwgb3B0aW9ucyk7XG5cbiAgLy8gTG9nIHRoZSBzdGFjayB0cmFjZSBpZiB3ZSdyZSBvbiBhIGRldmVsb3BlciB3b3Jrc3RhdGlvbi4gT3RoZXJ3aXNlIHRoaXMgd2lsbCBiZSBpbnRvIGEgbWluaWZpZWRcbiAgLy8gZmlsZSBhbmQgdGhlIHByaW50ZWQgY29kZSBsaW5lIGFuZCBzdGFjayB0cmFjZSBhcmUgaHVnZSBhbmQgdXNlbGVzcy5cbiAgaWYgKG9wdGlvbnMuZGVidWcpIHtcbiAgICBwcmludFRyYWNlcyhlcnIpO1xuICB9XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgcHJpbnQgYWxsIGVycm9yIGNhdXNlcyByZWN1cnNpdmVseS5cbiAqL1xuZnVuY3Rpb24gcHJpbnRDYXVzZXMoZXJyOiBFcnJvciwgb3B0aW9uczogUHJldHR5RXJyb3JQcmludGVyT3B0aW9ucykge1xuICBpZiAoZXJyLmNhdXNlICYmICFvcHRpb25zLnNvZnQpIHtcbiAgICBjb25zdCBjYXVzZSA9IGVuc3VyZUVycm9yKGVyci5jYXVzZSk7XG4gICAgY29uc29sZS5lcnJvcihjaGFsay55ZWxsb3coYOKAoyAke2NhdXNlLm5hbWV9OiAke2NhdXNlLm1lc3NhZ2V9YCkpO1xuICAgIHByaW50Q2F1c2VzKGNhdXNlLCBvcHRpb25zKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHByaW50IGFsbCBlcnJvciB0cmFjZXMuXG4gKi9cbmZ1bmN0aW9uIHByaW50VHJhY2VzKGVycjogRXJyb3IpIHtcbiAgaWYgKGVyci5zdGFjaykge1xuICAgIGNvbnNvbGUuZGVidWcoY2hhbGsuZ3JheShlcnIuc3RhY2spKTtcbiAgfVxuICBpZiAoZXJyLmNhdXNlKSB7XG4gICAgcHJpbnRUcmFjZXMoZW5zdXJlRXJyb3IoZXJyLmNhdXNlKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5zdXJlRXJyb3IodmFsdWU6IHVua25vd24pOiBFcnJvciB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKSByZXR1cm4gdmFsdWU7XG5cbiAgbGV0IHN0cmluZ2lmaWVkID0gJ1tVbmFibGUgdG8gc3RyaW5naWZ5IHRoZSB0aHJvd24gdmFsdWVdJztcbiAgdHJ5IHtcbiAgICBzdHJpbmdpZmllZCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfSBjYXRjaCB7XG4gIH1cblxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgQW4gdW5leHBlY3RlZCBlcnJvciB3YXMgdGhyb3duOiAke3N0cmluZ2lmaWVkfWApO1xuICByZXR1cm4gZXJyb3I7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuIl19