| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 | | "use strict"; |  |   |  | var babylonToEspree = require("./babylon-to-espree"); |  | var parse = require("@babel/parser").parse; |  | var tt = require("@babel/parser").tokTypes; |  | var traverse = require("@babel/traverse").default; |  | var codeFrameColumns = require("@babel/code-frame").codeFrameColumns; |  |   |  | module.exports = function(code, options) { |  |   const legacyDecorators = |  |     options.ecmaFeatures && options.ecmaFeatures.legacyDecorators; |  |   |  |   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", { all: true, enums: true }], |  |       "jsx", |  |       "estree", |  |       "asyncFunctions", |  |       "asyncGenerators", |  |       "classConstructorCall", |  |       "classProperties", |  |       legacyDecorators |  |         ? "decorators-legacy" |  |         : ["decorators", { decoratorsBeforeExport: false }], |  |       "doExpressions", |  |       "exponentiationOperator", |  |       "exportDefaultFrom", |  |       "exportNamespaceFrom", |  |       "functionBind", |  |       "functionSent", |  |       "objectRestSpread", |  |       "trailingFunctionCommas", |  |       "dynamicImport", |  |       "numericSeparator", |  |       "optionalChaining", |  |       "importMeta", |  |       "classPrivateProperties", |  |       "bigInt", |  |       "optionalCatchBinding", |  |       "throwExpressions", |  |       ["pipelineOperator", { proposal: "minimal" }], |  |       "nullishCoalescingOperator", |  |       "logicalAssignment", |  |     ], |  |   }; |  |   |  |   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; |  | }; | 
 |