code-frame-formatter.js 1.3 KB

1234567891011121314151617181920212223242526272829
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.createCodeFrameFormatter = void 0;
  7. const os_1 = __importDefault(require("os"));
  8. const code_frame_1 = require("@babel/code-frame");
  9. const fs_extra_1 = __importDefault(require("fs-extra"));
  10. const basic_formatter_1 = require("./basic-formatter");
  11. function createCodeFrameFormatter(options) {
  12. const basicFormatter = (0, basic_formatter_1.createBasicFormatter)();
  13. return function codeFrameFormatter(issue) {
  14. const source = issue.file && fs_extra_1.default.existsSync(issue.file) && fs_extra_1.default.readFileSync(issue.file, 'utf-8');
  15. let frame = '';
  16. if (source && issue.location) {
  17. frame = (0, code_frame_1.codeFrameColumns)(source, issue.location, Object.assign({ highlightCode: true }, (options || {})))
  18. .split('\n')
  19. .map((line) => ' ' + line)
  20. .join(os_1.default.EOL);
  21. }
  22. const lines = [basicFormatter(issue)];
  23. if (frame) {
  24. lines.push(frame);
  25. }
  26. return lines.join(os_1.default.EOL);
  27. };
  28. }
  29. exports.createCodeFrameFormatter = createCodeFrameFormatter;