| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | "use strict";var babylonToEspree = require("./babylon-to-espree");var parse = require("babylon").parse;var tt = require("babylon").tokTypes;var traverse = require("@babel/traverse").default;var codeFrameColumns = require("@babel/code-frame").codeFrameColumns;module.exports = function(code, options) {  var opts = {    codeFrame: options.hasOwnProperty("codeFrame") ? options.codeFrame : true,    sourceType: options.sourceType,    allowImportExportEverywhere: options.allowImportExportEverywhere, // consistent with espree    allowReturnOutsideFunction: true,    allowSuperOutsideMethod: true,    ranges: true,    tokens: true,    plugins: [      "flow",      "jsx",      "estree",      "asyncFunctions",      "asyncGenerators",      "classConstructorCall",      "classProperties",      "decorators",      "doExpressions",      "exponentiationOperator",      "exportDefaultFrom",      "exportNamespaceFrom",      "functionBind",      "functionSent",      "objectRestSpread",      "trailingFunctionCommas",      "dynamicImport",      "numericSeparator",      "optionalChaining",      "importMeta",      "classPrivateProperties",      "bigInt",      "optionalCatchBinding",      "throwExpressions",      "pipelineOperator",      "nullishCoalescingOperator",    ],  };  var ast;  try {    ast = parse(code, opts);  } catch (err) {    if (err instanceof SyntaxError) {      err.lineNumber = err.loc.line;      err.column = err.loc.column;      if (opts.codeFrame) {        err.lineNumber = err.loc.line;        err.column = err.loc.column + 1;        // remove trailing "(LINE:COLUMN)" acorn message and add in esprima syntax error message start        err.message =          "Line " +          err.lineNumber +          ": " +          err.message.replace(/ \((\d+):(\d+)\)$/, "") +          // add codeframe          "\n\n" +          codeFrameColumns(            code,            {              start: {                line: err.lineNumber,                column: err.column,              },            },            { highlightCode: true }          );      }    }    throw err;  }  babylonToEspree(ast, traverse, tt, code);  return ast;};
 |