grind-assets
Version:
Asset management for Grind
60 lines (49 loc) • 6.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.makeSyntaxError = makeSyntaxError;
var _grindSupport = require("grind-support");
var _codeFrame = require("@babel/code-frame");
function _isnil(val) { return val === null || typeof val === 'undefined'; }
const path = require('path');
async function makeSyntaxError(app, {
message,
fileName,
lineNumber,
columnNumber,
causedBy
} = {}) {
if (!_isnil(causedBy)) {
if (typeof message !== 'string') {
message = causedBy.message;
}
if (typeof fileName !== 'string') {
fileName = causedBy.fileName || causedBy.filename || causedBy.file;
}
if (typeof lineNumber !== 'number') {
lineNumber = causedBy.lineNumber || causedBy.line;
}
if (typeof columnNumber !== 'number') {
columnNumber = causedBy.columnNumber || causedBy.column;
}
}
if (typeof fileName !== 'string' || typeof lineNumber !== 'number' || lineNumber <= 0 || !(await _grindSupport.FS.exists(fileName))) {
return causedBy || new SyntaxError(message);
}
const lines = (await _grindSupport.FS.readFile(fileName)).toString();
const codeFrame = (0, _codeFrame.codeFrameColumns)(lines, {
start: {
line: lineNumber || 1,
column: columnNumber || 1
}
}, {
highlightCode: true,
forceColor: true
});
const relativeFileName = `./${path.relative(app.paths.base(), fileName)}`;
const error = new SyntaxError(`${relativeFileName}\nLine ${lineNumber}: ${message}\n\n${codeFrame}`, fileName, lineNumber);
error.cause = causedBy;
return error;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FcnJvcnMvbWFrZVN5bnRheEVycm9yLmpzIl0sIm5hbWVzIjpbInBhdGgiLCJyZXF1aXJlIiwibWFrZVN5bnRheEVycm9yIiwiYXBwIiwibWVzc2FnZSIsImZpbGVOYW1lIiwibGluZU51bWJlciIsImNvbHVtbk51bWJlciIsImNhdXNlZEJ5IiwiZmlsZW5hbWUiLCJmaWxlIiwibGluZSIsImNvbHVtbiIsIkZTIiwiZXhpc3RzIiwiU3ludGF4RXJyb3IiLCJsaW5lcyIsInJlYWRGaWxlIiwidG9TdHJpbmciLCJjb2RlRnJhbWUiLCJzdGFydCIsImhpZ2hsaWdodENvZGUiLCJmb3JjZUNvbG9yIiwicmVsYXRpdmVGaWxlTmFtZSIsInJlbGF0aXZlIiwicGF0aHMiLCJiYXNlIiwiZXJyb3IiLCJjYXVzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOzs7O0FBRUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFTyxlQUFlQyxlQUFmLENBQ05DLEdBRE0sRUFFTjtBQUFFQyxFQUFBQSxPQUFGO0FBQVdDLEVBQUFBLFFBQVg7QUFBcUJDLEVBQUFBLFVBQXJCO0FBQWlDQyxFQUFBQSxZQUFqQztBQUErQ0MsRUFBQUE7QUFBL0MsSUFBNEQsRUFGdEQsRUFHTDtBQUNELE1BQUksUUFBQ0EsUUFBRCxDQUFKLEVBQXFCO0FBQ3BCLFFBQUksT0FBT0osT0FBUCxLQUFtQixRQUF2QixFQUFpQztBQUNoQ0EsTUFBQUEsT0FBTyxHQUFHSSxRQUFRLENBQUNKLE9BQW5CO0FBQ0E7O0FBRUQsUUFBSSxPQUFPQyxRQUFQLEtBQW9CLFFBQXhCLEVBQWtDO0FBQ2pDQSxNQUFBQSxRQUFRLEdBQUdHLFFBQVEsQ0FBQ0gsUUFBVCxJQUFxQkcsUUFBUSxDQUFDQyxRQUE5QixJQUEwQ0QsUUFBUSxDQUFDRSxJQUE5RDtBQUNBOztBQUVELFFBQUksT0FBT0osVUFBUCxLQUFzQixRQUExQixFQUFvQztBQUNuQ0EsTUFBQUEsVUFBVSxHQUFHRSxRQUFRLENBQUNGLFVBQVQsSUFBdUJFLFFBQVEsQ0FBQ0csSUFBN0M7QUFDQTs7QUFFRCxRQUFJLE9BQU9KLFlBQVAsS0FBd0IsUUFBNUIsRUFBc0M7QUFDckNBLE1BQUFBLFlBQVksR0FBR0MsUUFBUSxDQUFDRCxZQUFULElBQXlCQyxRQUFRLENBQUNJLE1BQWpEO0FBQ0E7QUFDRDs7QUFFRCxNQUNDLE9BQU9QLFFBQVAsS0FBb0IsUUFBcEIsSUFDQSxPQUFPQyxVQUFQLEtBQXNCLFFBRHRCLElBRUFBLFVBQVUsSUFBSSxDQUZkLElBR0EsRUFBRSxNQUFNTyxpQkFBR0MsTUFBSCxDQUFVVCxRQUFWLENBQVIsQ0FKRCxFQUtFO0FBQ0QsV0FBT0csUUFBUSxJQUFJLElBQUlPLFdBQUosQ0FBZ0JYLE9BQWhCLENBQW5CO0FBQ0E7O0FBRUQsUUFBTVksS0FBSyxHQUFHLENBQUMsTUFBTUgsaUJBQUdJLFFBQUgsQ0FBWVosUUFBWixDQUFQLEVBQThCYSxRQUE5QixFQUFkO0FBQ0EsUUFBTUMsU0FBUyxHQUFHLGlDQUNqQkgsS0FEaUIsRUFFakI7QUFDQ0ksSUFBQUEsS0FBSyxFQUFFO0FBQ05ULE1BQUFBLElBQUksRUFBRUwsVUFBVSxJQUFJLENBRGQ7QUFFTk0sTUFBQUEsTUFBTSxFQUFFTCxZQUFZLElBQUk7QUFGbEI7QUFEUixHQUZpQixFQVFqQjtBQUNDYyxJQUFBQSxhQUFhLEVBQUUsSUFEaEI7QUFFQ0MsSUFBQUEsVUFBVSxFQUFFO0FBRmIsR0FSaUIsQ0FBbEI7QUFjQSxRQUFNQyxnQkFBZ0IsR0FBSSxLQUFJdkIsSUFBSSxDQUFDd0IsUUFBTCxDQUFjckIsR0FBRyxDQUFDc0IsS0FBSixDQUFVQyxJQUFWLEVBQWQsRUFBZ0NyQixRQUFoQyxDQUEwQyxFQUF4RTtBQUNBLFFBQU1zQixLQUFLLEdBQUcsSUFBSVosV0FBSixDQUNaLEdBQUVRLGdCQUFpQixVQUFTakIsVUFBVyxLQUFJRixPQUFRLE9BQU1lLFNBQVUsRUFEdkQsRUFFYmQsUUFGYSxFQUdiQyxVQUhhLENBQWQ7QUFNQXFCLEVBQUFBLEtBQUssQ0FBQ0MsS0FBTixHQUFjcEIsUUFBZDtBQUVBLFNBQU9tQixLQUFQO0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGUyB9IGZyb20gJ2dyaW5kLXN1cHBvcnQnXG5pbXBvcnQgeyBjb2RlRnJhbWVDb2x1bW5zIH0gZnJvbSAnQGJhYmVsL2NvZGUtZnJhbWUnXG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1ha2VTeW50YXhFcnJvcihcblx0YXBwLFxuXHR7IG1lc3NhZ2UsIGZpbGVOYW1lLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNhdXNlZEJ5IH0gPSB7fSxcbikge1xuXHRpZiAoIWNhdXNlZEJ5LmlzTmlsKSB7XG5cdFx0aWYgKHR5cGVvZiBtZXNzYWdlICE9PSAnc3RyaW5nJykge1xuXHRcdFx0bWVzc2FnZSA9IGNhdXNlZEJ5Lm1lc3NhZ2Vcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIGZpbGVOYW1lICE9PSAnc3RyaW5nJykge1xuXHRcdFx0ZmlsZU5hbWUgPSBjYXVzZWRCeS5maWxlTmFtZSB8fCBjYXVzZWRCeS5maWxlbmFtZSB8fCBjYXVzZWRCeS5maWxlXG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBsaW5lTnVtYmVyICE9PSAnbnVtYmVyJykge1xuXHRcdFx0bGluZU51bWJlciA9IGNhdXNlZEJ5LmxpbmVOdW1iZXIgfHwgY2F1c2VkQnkubGluZVxuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgY29sdW1uTnVtYmVyICE9PSAnbnVtYmVyJykge1xuXHRcdFx0Y29sdW1uTnVtYmVyID0gY2F1c2VkQnkuY29sdW1uTnVtYmVyIHx8IGNhdXNlZEJ5LmNvbHVtblxuXHRcdH1cblx0fVxuXG5cdGlmIChcblx0XHR0eXBlb2YgZmlsZU5hbWUgIT09ICdzdHJpbmcnIHx8XG5cdFx0dHlwZW9mIGxpbmVOdW1iZXIgIT09ICdudW1iZXInIHx8XG5cdFx0bGluZU51bWJlciA8PSAwIHx8XG5cdFx0IShhd2FpdCBGUy5leGlzdHMoZmlsZU5hbWUpKVxuXHQpIHtcblx0XHRyZXR1cm4gY2F1c2VkQnkgfHwgbmV3IFN5bnRheEVycm9yKG1lc3NhZ2UpXG5cdH1cblxuXHRjb25zdCBsaW5lcyA9IChhd2FpdCBGUy5yZWFkRmlsZShmaWxlTmFtZSkpLnRvU3RyaW5nKClcblx0Y29uc3QgY29kZUZyYW1lID0gY29kZUZyYW1lQ29sdW1ucyhcblx0XHRsaW5lcyxcblx0XHR7XG5cdFx0XHRzdGFydDoge1xuXHRcdFx0XHRsaW5lOiBsaW5lTnVtYmVyIHx8IDEsXG5cdFx0XHRcdGNvbHVtbjogY29sdW1uTnVtYmVyIHx8IDEsXG5cdFx0XHR9LFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0aGlnaGxpZ2h0Q29kZTogdHJ1ZSxcblx0XHRcdGZvcmNlQ29sb3I6IHRydWUsXG5cdFx0fSxcblx0KVxuXG5cdGNvbnN0IHJlbGF0aXZlRmlsZU5hbWUgPSBgLi8ke3BhdGgucmVsYXRpdmUoYXBwLnBhdGhzLmJhc2UoKSwgZmlsZU5hbWUpfWBcblx0Y29uc3QgZXJyb3IgPSBuZXcgU3ludGF4RXJyb3IoXG5cdFx0YCR7cmVsYXRpdmVGaWxlTmFtZX1cXG5MaW5lICR7bGluZU51bWJlcn06ICR7bWVzc2FnZX1cXG5cXG4ke2NvZGVGcmFtZX1gLFxuXHRcdGZpbGVOYW1lLFxuXHRcdGxpbmVOdW1iZXIsXG5cdClcblxuXHRlcnJvci5jYXVzZSA9IGNhdXNlZEJ5XG5cblx0cmV0dXJuIGVycm9yXG59XG4iXX0=