Nicolò Ribaudo 885e1e02f5
Expose @babel/eslint-parser/experimental-worker (#13398)
* Expose `@babel/eslint-parser/experimental-worker`

* Fix `@babel/runtime` build on Windows
2021-08-03 23:23:32 +02:00

46 lines
1.2 KiB
JavaScript

"use strict";
const semver = require("semver");
const convert = require("./convert/index.cjs");
const babelParser = require(require.resolve("@babel/parser", {
paths: [require.resolve("@babel/core/package.json")],
}));
let isRunningMinSupportedCoreVersion = null;
module.exports = function parse(code, options, client) {
// Ensure we're using a version of `@babel/core` that includes `parse()` and `tokTypes`.
const minSupportedCoreVersion = ">=7.2.0";
if (typeof isRunningMinSupportedCoreVersion !== "boolean") {
isRunningMinSupportedCoreVersion = semver.satisfies(
client.getVersion(),
minSupportedCoreVersion,
);
}
if (!isRunningMinSupportedCoreVersion) {
throw new Error(
`@babel/eslint-parser@${
PACKAGE_JSON.version
} does not support @babel/core@${client.getVersion()}. Please upgrade to @babel/core@${minSupportedCoreVersion}.`,
);
}
const { ast, parserOptions } = client.maybeParse(code, options);
if (ast) return ast;
try {
return convert.ast(
babelParser.parse(code, parserOptions),
code,
client.getTokLabels(),
client.getVisitorKeys(),
);
} catch (err) {
throw convert.error(err);
}
};