UNPKG

1.96 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.parse = parse;
7exports.parseForESLint = parseForESLint;
8
9var _semver = _interopRequireDefault(require("semver"));
10
11var _core = require("@babel/core");
12
13var _package = _interopRequireDefault(require("../package.json"));
14
15var _configuration = require("./configuration");
16
17var _convert = _interopRequireDefault(require("./convert"));
18
19var _analyzeScope = _interopRequireDefault(require("./analyze-scope"));
20
21var _visitorKeys = _interopRequireDefault(require("./visitor-keys"));
22
23function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
25let isRunningMinSupportedCoreVersion = null;
26
27function baseParse(code, options) {
28 const minSupportedCoreVersion = ">=7.2.0";
29
30 if (typeof isRunningMinSupportedCoreVersion !== "boolean") {
31 isRunningMinSupportedCoreVersion = _semver.default.satisfies(_core.version, minSupportedCoreVersion);
32 }
33
34 if (!isRunningMinSupportedCoreVersion) {
35 throw new Error(`@babel/eslint-parser@${_package.default.version} does not support @babel/core@${_core.version}. Please upgrade to @babel/core@${minSupportedCoreVersion}.`);
36 }
37
38 let ast;
39
40 try {
41 ast = (0, _core.parseSync)(code, (0, _configuration.normalizeBabelParseConfig)(options));
42 } catch (err) {
43 if (err instanceof SyntaxError) {
44 err.lineNumber = err.loc.line;
45 err.column = err.loc.column;
46 }
47
48 throw err;
49 }
50
51 (0, _convert.default)(ast, code);
52 return ast;
53}
54
55function parse(code, options = {}) {
56 return baseParse(code, (0, _configuration.normalizeESLintConfig)(options));
57}
58
59function parseForESLint(code, options = {}) {
60 const normalizedOptions = (0, _configuration.normalizeESLintConfig)(options);
61 const ast = baseParse(code, normalizedOptions);
62 const scopeManager = (0, _analyzeScope.default)(ast, normalizedOptions);
63 return {
64 ast,
65 scopeManager,
66 visitorKeys: _visitorKeys.default
67 };
68}
\No newline at end of file