UNPKG

pk-template

Version:
119 lines 11.8 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const sourceMap_1 = require("./sourceMap"); const lazy_1 = require("../lazy"); const extractSourceAndLocation2 = (name, file, line, column) => __awaiter(this, void 0, void 0, function* () { try { const source = fs_1.default.readFileSync(file, 'utf8'); const smap = sourceMap_1.extractSourceMap(source); if (smap) { const consumer = yield new (lazy_1.getSourceMap()).SourceMapConsumer(smap); const pos = consumer.originalPositionFor({ line, column }); const f = path_1.default.isAbsolute(pos.source) ? pos.source : path_1.default.join(file, pos.source); return { name: pos.name, file: f, line: pos.line, column: pos.column }; } return { name, file, line, column }; } catch (e) { return { name, file, line, column }; } }); const extractSourceAndLocation = (source, line, column) => __awaiter(this, void 0, void 0, function* () { const smap = sourceMap_1.extractSourceMap(source); if (smap) { const consumer = yield new (lazy_1.getSourceMap()).SourceMapConsumer(smap); const orig = consumer.originalPositionFor({ line, column }); return { source: smap.sourcesContent[0], line: orig.line, column: orig.column }; } else { return { source: source, line: line, column: column }; } }); const showErrorLocation = (source, line, column) => __awaiter(this, void 0, void 0, function* () { const loc = yield extractSourceAndLocation(source, line, column); if (loc.source) { const lines = loc.source.split('\n'); const from = Math.max(0, loc.line - 4); const to = Math.min(loc.line + 5, lines.length); const grey = lazy_1.getChalk().grey; const red = lazy_1.getChalk().red; for (let i = from; i < to; ++i) { const ln = `${i + 1} | `.padStart(7, ' '); if (i + 1 == loc.line) { console.error('|' + ln + lines[i]); console.error('|' + grey(' | ') + "".padStart(loc.column - 1, ' ') + red('^------------ here !!!')); } else { console.error('|' + grey(ln + lines[i])); } } return true; } return false; }); const showStack = (stack, source) => __awaiter(this, void 0, void 0, function* () { const chalk = lazy_1.getChalk(); console.error('+ ' + chalk.yellow('STACK TRACE:')); const lines = stack.split('\n'); let isFirstAnonymous = true; for (const l of lines) { if (l.length === 0 || l[0] !== ' ') { console.error('|', l); continue; } const match = l.match(/at (.*)\s*\((.+):(\d+):(\d+)\)/); if (!match) { console.error('|' + l); if (source && isFirstAnonymous) { const match = l.match(/evalmachine\.<anonymous>:(\d+):(\d+)/); if (match) { isFirstAnonymous = false; const line = Number(match[1]); const column = Number(match[2]); yield showErrorLocation(source, line, column); } } continue; } const name = match[1]; const file = match[2]; const line = Number(match[3]); const column = Number(match[4]); const orig = yield extractSourceAndLocation2(name, file, line, column); if (file !== orig.file) { console.error('| at', `${chalk.yellow(name)}(${path_1.default.dirname(orig.file)}/${chalk.yellow(path_1.default.basename(orig.file))}:${orig.line}:${orig.column})`); } else { console.error('| at', `${name}(${orig.file}:${orig.line}:${orig.column})`); } } }); exports.exceptionHandler = (e, debug) => __awaiter(this, void 0, void 0, function* () { const chalk = lazy_1.getChalk(); console.error(chalk.red('ERROR : ' + e.message)); if (e.summary) { console.error(chalk.red(' ' + e.summary + ' in ' + e.uri)); } if (e.pos) { console.error(chalk.red(' ' + e.pos)); } console.error(); if (debug) { yield showStack(e.stack, e.source); } process.exit(1); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BrLXV0aWwvZXhjZXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLDJDQUErQztBQUUvQyxrQ0FBaUQ7QUFFakQsTUFBTSx5QkFBeUIsR0FBRyxDQUFPLElBQVksRUFBRSxJQUFZLEVBQUUsSUFBWSxFQUFFLE1BQWMsRUFBeUUsRUFBRTtJQUMxSyxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0MsTUFBTSxJQUFJLEdBQUcsNEJBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxJQUFJLEVBQUU7WUFDUixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBWSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRSxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtZQUMxRCxNQUFNLENBQUMsR0FBRyxjQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pGLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUE7U0FDdkU7UUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJ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QUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xELElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDcEU7SUFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7UUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQy9DO0lBQ0QsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hCLElBQUksS0FBSyxFQUFFO1FBQ1QsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDcEM7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQSxDQUFBIn0=