broccoli
Version:
Fast client-side asset builder
70 lines • 2.98 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const builder_1 = __importDefault(require("./builder"));
const wrap_primitive_errors_1 = __importDefault(require("../utils/wrap-primitive-errors"));
class BuildError extends builder_1.default {
constructor(originalError, nodeWrapper) {
if (nodeWrapper == null) {
// for Chai
super();
return;
}
originalError = wrap_primitive_errors_1.default(originalError);
// Create heavily augmented message for easy printing to the terminal. Web
// interfaces should refer to broccoliPayload.originalError.message instead.
let filePart = '';
if (originalError.file != null) {
filePart = originalError.file;
if (originalError.line != null) {
filePart += ':' + originalError.line;
if (originalError.column != null) {
// .column is zero-indexed
filePart += ':' + (originalError.column + 1);
}
}
filePart += ': ';
}
let instantiationStack = '';
if (originalError.file == null) {
// We want to report the instantiation stack only for "unexpected" errors
// (bugs, internal errors), but not for compiler errors and such. For now,
// the presence of `.file` serves as a heuristic to distinguish between
// those cases.
instantiationStack = nodeWrapper.formatInstantiationStackForTerminal();
}
const message = filePart +
originalError.message +
(originalError.treeDir ? '\n in ' + originalError.treeDir : '') +
'\n at ' +
nodeWrapper.label +
instantiationStack;
super(message);
// consider for x in y
this.stack = originalError.stack;
this.isSilent = originalError.isSilent;
this.isCancellation = originalError.isCancellation;
// This error API can change between minor Broccoli version bumps
this.broccoliPayload = {
originalError,
originalMessage: originalError.message,
// node info
nodeId: nodeWrapper.id,
nodeLabel: nodeWrapper.label,
nodeName: nodeWrapper.nodeInfo.name,
nodeAnnotation: nodeWrapper.nodeInfo.annotation,
instantiationStack: nodeWrapper.nodeInfo.instantiationStack,
// error location (if any)
location: {
file: originalError.file,
treeDir: originalError.treeDir,
line: originalError.line,
column: originalError.column,
},
};
}
}
exports.default = BuildError;
//# sourceMappingURL=build.js.map