Skip to content

Commit 8f58cd7

Browse files
authored
Revert "Use @babel/eslint-parser instead of babel-eslint (#2487)" (#2492)
This reverts commit ca56746
1 parent 0ff86d0 commit 8f58cd7

File tree

13 files changed

+65
-191
lines changed

13 files changed

+65
-191
lines changed

eslint-bridge/package.json

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,10 @@
4040
"ts-node": "9.0.0"
4141
},
4242
"dependencies": {
43-
"@babel/core": "7.12.13",
44-
"@babel/eslint-parser": "7.12.13",
45-
"@babel/preset-flow": "^7.12.13",
46-
"@babel/preset-react": "^7.12.13",
4743
"@typescript-eslint/eslint-plugin": "4.15.0",
4844
"@typescript-eslint/experimental-utils": "4.15.0",
4945
"@typescript-eslint/parser": "4.15.0",
46+
"babel-eslint": "10.1.0",
5047
"body-parser": "1.18.3",
5148
"builtin-modules": "3.1.0",
5249
"bytes": "3.1.0",
@@ -62,10 +59,7 @@
6259
"@typescript-eslint/eslint-plugin",
6360
"@typescript-eslint/experimental-utils",
6461
"@typescript-eslint/parser",
65-
"@babel/core",
66-
"@babel/eslint-parser",
67-
"@babel/preset-flow",
68-
"@babel/preset-react",
62+
"babel-eslint",
6963
"body-parser",
7064
"builtin-modules",
7165
"bytes",

eslint-bridge/src/parser.ts

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* along with this program; if not, write to the Free Software Foundation,
1818
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1919
*/
20-
import * as babel from '@babel/eslint-parser';
20+
import * as babel from 'babel-eslint';
2121
import { Linter, SourceCode } from 'eslint';
2222
import { ParsingError } from './analyzer';
2323
import * as VueJS from 'vue-eslint-parser';
@@ -68,7 +68,7 @@ export function parseJavaScriptSourceFile(
6868

6969
let exceptionToReport: ParseException | null = null;
7070
for (const config of [PARSER_CONFIG_MODULE, PARSER_CONFIG_SCRIPT]) {
71-
const result = parse(babel.parseForESLint, babelConfig(config), fileContent);
71+
const result = parse(babel.parseForESLint, config, fileContent);
7272
if (result instanceof SourceCode) {
7373
return result;
7474
} else if (!exceptionToReport) {
@@ -119,19 +119,16 @@ export function parseVueSourceFile(
119119
tsConfigs?: string[],
120120
): SourceCode | ParsingError {
121121
let exception: ParseException | null = null;
122-
const parserOptions = {
123-
filePath,
124-
project: tsConfigs,
125-
extraFileExtensions: ['.vue'],
126-
...PARSER_CONFIG_MODULE,
127-
};
128-
const parsers = [
129-
{ parser: '@typescript-eslint/parser', parserOptions },
130-
{ parser: '@babel/eslint-parser', parserOptions: babelConfig(parserOptions) },
131-
];
132-
for (const { parser, parserOptions } of parsers) {
122+
const parsers = ['@typescript-eslint/parser', 'babel-eslint'];
123+
for (const parser of parsers) {
133124
try {
134-
const result = VueJS.parseForESLint(fileContent, { parser, ...parserOptions });
125+
const result = VueJS.parseForESLint(fileContent, {
126+
filePath,
127+
parser,
128+
project: tsConfigs,
129+
extraFileExtensions: ['.vue'],
130+
...PARSER_CONFIG_MODULE,
131+
});
135132
return new SourceCode(({
136133
...result,
137134
parserServices: result.services,
@@ -191,11 +188,3 @@ export function parseExceptionCodeOf(exceptionMsg: string): ParseExceptionCode {
191188
return ParseExceptionCode.Parsing;
192189
}
193190
}
194-
195-
export function babelConfig(config: Linter.ParserOptions) {
196-
const pluginPath = `${__dirname}/../node_modules`;
197-
const babelOptions = {
198-
presets: [`${pluginPath}/@babel/preset-react`, `${pluginPath}/@babel/preset-flow`],
199-
};
200-
return { ...config, requireConfigFile: false, babelOptions };
201-
}

eslint-bridge/tests/parser.test.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,14 @@ import {
2727
parseVueSourceFile,
2828
ParseExceptionCode,
2929
parseExceptionCodeOf,
30-
babelConfig,
31-
} from 'parser';
32-
import * as babel from '@babel/eslint-parser';
30+
} from '../src/parser';
31+
import * as babel from 'babel-eslint';
3332
import { SourceCode } from 'eslint';
34-
import { ParsingError } from 'analyzer';
33+
import { ParsingError } from '../src/analyzer';
3534
import visit from '../src/utils/visitor';
3635
import * as path from 'path';
3736
import * as fs from 'fs';
38-
import { setContext } from 'context';
37+
import { setContext } from '../src/context';
3938

4039
describe('parseJavaScriptSourceFile', () => {
4140
beforeEach(() => {
@@ -281,7 +280,7 @@ describe('parseVueSourceFile', () => {
281280
) as ParsingError;
282281
expect(parsingError).toBeDefined();
283282
expect(parsingError.line).toEqual(4);
284-
expect(parsingError.message).toContain('Unexpected token (3:4)');
283+
expect(parsingError.message).toEqual('Unexpected token (3:4)');
285284
expect(parsingError.code).toEqual(ParseExceptionCode.Parsing);
286285
});
287286

@@ -335,13 +334,13 @@ function expectToNotParse(code: string, message: string) {
335334
const parsingError = parseJavaScriptSourceFile(code, 'foo.js') as ParsingError;
336335
expect(parsingError).toBeDefined();
337336
expect(parsingError.line).toEqual(1);
338-
expect(parsingError.message).toContain(message);
337+
expect(parsingError.message).toEqual(message);
339338
}
340339

341340
function expectToParseInNonStrictMode(code: string, msgInStrictMode: string) {
342-
const result1 = parse(babel.parse, babelConfig(PARSER_CONFIG_MODULE), code);
343-
expect((result1 as ParseException).message).toContain(msgInStrictMode);
341+
const result1 = parse(babel.parse, PARSER_CONFIG_MODULE, code);
342+
expect((result1 as ParseException).message).toEqual(msgInStrictMode);
344343

345-
const result2 = parse(babel.parse, babelConfig(PARSER_CONFIG_SCRIPT), code);
344+
const result2 = parse(babel.parse, PARSER_CONFIG_SCRIPT, code);
346345
expect((result2 as SourceCode).ast.body.length).toBeGreaterThan(0);
347346
}

eslint-bridge/tests/rules/declarations-in-global-scope.test.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1919
*/
2020
import { RuleTester } from 'eslint';
21-
import { rule } from 'rules/declarations-in-global-scope';
22-
import { babelRuleTester } from '../utils/babel-rule-tester';
2321

2422
const tsParserPath = require.resolve('@typescript-eslint/parser');
2523
const ruleTester = new RuleTester({
@@ -38,7 +36,11 @@ const ruleTesterScript = new RuleTester({
3836
parserOptions: { ecmaVersion: 2018, sourceType: 'script' },
3937
});
4038

41-
const ruleTesterBabel = babelRuleTester();
39+
const ruleTesterBabel = new RuleTester({
40+
parser: require.resolve('babel-eslint'),
41+
});
42+
43+
import { rule } from 'rules/declarations-in-global-scope';
4244

4345
ruleTester.run('Variables and functions should not be declared in the global scope', rule, {
4446
valid: [

eslint-bridge/tests/rules/no-dead-store.test.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@
1818
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1919
*/
2020
import { rule } from 'rules/no-dead-store';
21+
import { RuleTester } from 'eslint';
2122
import { RuleTesterTs } from '../RuleTesterTs';
22-
import { babelRuleTester } from '../utils/babel-rule-tester';
2323

24-
const ruleTester = babelRuleTester();
24+
const ruleTester = new RuleTester({
25+
// we use babel to parse JSX syntax
26+
parser: require.resolve('babel-eslint'),
27+
parserOptions: { ecmaVersion: 2018, sourceType: 'module' },
28+
});
2529

2630
const valid = [
2731
{

eslint-bridge/tests/rules/no-globals-shadowing.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ const ruleTester = new RuleTester({
2828
});
2929

3030
import { rule } from 'rules/no-globals-shadowing';
31-
import { babelRuleTester } from '../utils/babel-rule-tester';
3231

3332
ruleTester.run('Special identifiers should not be bound or assigned', rule, {
3433
valid: [
@@ -197,7 +196,9 @@ ruleTester.run('Special identifiers should not be bound or assigned', rule, {
197196
],
198197
});
199198

200-
const ruleTesterBabel = babelRuleTester();
199+
const ruleTesterBabel = new RuleTester({
200+
parser: require.resolve('babel-eslint'),
201+
});
201202

202203
ruleTesterBabel.run('Special identifiers should not be bound or assigned', rule, {
203204
valid: [

eslint-bridge/tests/rules/no-unused-expressions.test.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,25 +130,22 @@ ruleTester.run('Disallow unused expressions', rule, {
130130
});
131131

132132
import { rules as chaiFriendlyRules } from 'eslint-plugin-chai-friendly';
133-
import { babelConfig } from 'parser';
134133

135-
for (let { parser, languageSpecificRule, parserOptions } of [
134+
for (let { parser, languageSpecificRule } of [
136135
{
137136
parser: '@typescript-eslint/parser',
138137
languageSpecificRule: decorateTypescriptEslint(
139138
require('@typescript-eslint/eslint-plugin').rules!['no-unused-expressions'],
140139
),
141-
parserOptions: { ecmaVersion: 2018 },
142140
},
143141
{
144-
parser: '@babel/eslint-parser',
142+
parser: 'babel-eslint',
145143
languageSpecificRule: decorateJavascriptEslint(chaiFriendlyRules['no-unused-expressions']),
146-
parserOptions: babelConfig({ ecmaVersion: 2018 }),
147144
},
148145
]) {
149146
const tester = new RuleTester({
150147
parser: require.resolve(parser),
151-
parserOptions,
148+
parserOptions: { ecmaVersion: 2018 },
152149
});
153150

154151
tester.run(`Disallow unused expressions - negations & IIFE (${parser})`, languageSpecificRule, {

eslint-bridge/tests/rules/unused-import.test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@
1919
*/
2020
import { RuleTester } from 'eslint';
2121
import { rule } from 'rules/unused-import';
22-
import { babelRuleTester } from '../utils/babel-rule-tester';
2322

24-
const ruleTesterJS = babelRuleTester();
23+
const ruleTesterJS = new RuleTester({
24+
parserOptions: { ecmaVersion: 2018, sourceType: 'module' },
25+
parser: require.resolve('babel-eslint'),
26+
});
2527

2628
ruleTesterJS.run('Unnecessary imports should be removed', rule, {
2729
valid: [

eslint-bridge/tests/utils/babel-rule-tester.ts

Lines changed: 0 additions & 29 deletions
This file was deleted.

eslint-bridge/typings/@babel__eslint-parser/index.d.ts renamed to eslint-bridge/typings/babel-eslint/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
declare module "@babel/eslint-parser" {
1+
declare module "babel-eslint" {
22
import { AST, Linter, Scope, SourceCode } from "eslint";
33
function parse(input: string, config?: Linter.ParserOptions): AST.Program;
44
function parseForESLint(input: string, config?: Linter.ParserOptions): { ast: AST.Program, parserServices: SourceCode.ParserServices, scopeManager: Scope.ScopeManager, visitorKeys: SourceCode.VisitorKeys };

0 commit comments

Comments
 (0)