@babel/eslint-parser: Refactor (#10916)
This commit is contained in:
parent
83993b08d5
commit
c09664f35d
@ -1,27 +1,6 @@
|
|||||||
import { types as t } from "@babel/core";
|
import { types as t, traverse } from "@babel/core";
|
||||||
import convertProgramNode from "./convertProgramNode";
|
import convertProgramNode from "./convertProgramNode";
|
||||||
|
|
||||||
module.exports = function(ast, traverse, code) {
|
|
||||||
const state = { source: code };
|
|
||||||
|
|
||||||
// Monkey patch visitor keys in order to be able to traverse the estree nodes
|
|
||||||
t.VISITOR_KEYS.Property = t.VISITOR_KEYS.ObjectProperty;
|
|
||||||
t.VISITOR_KEYS.MethodDefinition = [
|
|
||||||
"key",
|
|
||||||
"value",
|
|
||||||
"decorators",
|
|
||||||
"returnType",
|
|
||||||
"typeParameters",
|
|
||||||
];
|
|
||||||
|
|
||||||
traverse(ast, astTransformVisitor, null, state);
|
|
||||||
|
|
||||||
delete t.VISITOR_KEYS.Property;
|
|
||||||
delete t.VISITOR_KEYS.MethodDefinition;
|
|
||||||
|
|
||||||
convertProgramNode(ast);
|
|
||||||
};
|
|
||||||
|
|
||||||
const astTransformVisitor = {
|
const astTransformVisitor = {
|
||||||
noScope: true,
|
noScope: true,
|
||||||
enter(path) {
|
enter(path) {
|
||||||
@ -94,3 +73,24 @@ const astTransformVisitor = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export default function(ast, code) {
|
||||||
|
const state = { source: code };
|
||||||
|
|
||||||
|
// Monkey patch visitor keys in order to be able to traverse the estree nodes
|
||||||
|
t.VISITOR_KEYS.Property = t.VISITOR_KEYS.ObjectProperty;
|
||||||
|
t.VISITOR_KEYS.MethodDefinition = [
|
||||||
|
"key",
|
||||||
|
"value",
|
||||||
|
"decorators",
|
||||||
|
"returnType",
|
||||||
|
"typeParameters",
|
||||||
|
];
|
||||||
|
|
||||||
|
traverse(ast, astTransformVisitor, null, state);
|
||||||
|
|
||||||
|
delete t.VISITOR_KEYS.Property;
|
||||||
|
delete t.VISITOR_KEYS.MethodDefinition;
|
||||||
|
|
||||||
|
convertProgramNode(ast);
|
||||||
|
}
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
export default function(tokens, tt) {
|
import { tokTypes as tt } from "@babel/core";
|
||||||
|
|
||||||
|
export default function(tokens) {
|
||||||
let curlyBrace = null;
|
let curlyBrace = null;
|
||||||
let templateTokens = [];
|
let templateTokens = [];
|
||||||
const result = [];
|
const result = [];
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
export default function(token, tt, source) {
|
import { tokTypes as tt } from "@babel/core";
|
||||||
|
|
||||||
|
export default function(token, source) {
|
||||||
const type = token.type;
|
const type = token.type;
|
||||||
token.range = [token.start, token.end];
|
token.range = [token.start, token.end];
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import convertTemplateType from "./convertTemplateType";
|
import convertTemplateType from "./convertTemplateType";
|
||||||
import convertToken from "./convertToken";
|
import convertToken from "./convertToken";
|
||||||
|
|
||||||
export default function(tokens, tt, code) {
|
export default function(tokens, code) {
|
||||||
return convertTemplateType(tokens, tt)
|
return convertTemplateType(tokens)
|
||||||
.filter(t => t.type !== "CommentLine" && t.type !== "CommentBlock")
|
.filter(t => t.type !== "CommentLine" && t.type !== "CommentBlock")
|
||||||
.map(t => convertToken(t, tt, code));
|
.map(t => convertToken(t, code));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,8 +2,8 @@ import convertTokens from "./convertTokens";
|
|||||||
import convertComments from "./convertComments";
|
import convertComments from "./convertComments";
|
||||||
import convertAST from "./convertAST";
|
import convertAST from "./convertAST";
|
||||||
|
|
||||||
export default function(ast, traverse, tt, code) {
|
export default function(ast, code) {
|
||||||
ast.tokens = convertTokens(ast.tokens, tt, code);
|
ast.tokens = convertTokens(ast.tokens, code);
|
||||||
convertComments(ast.comments);
|
convertComments(ast.comments);
|
||||||
convertAST(ast, traverse, code);
|
convertAST(ast, code);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ const IS_RUNNING_SUPPORTED_VERSION = semver.satisfies(
|
|||||||
);
|
);
|
||||||
|
|
||||||
export function parse(code, options) {
|
export function parse(code, options) {
|
||||||
return exports.parseForESLint(code, options).ast;
|
return parseForESLint(code, options).ast;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function parseForESLint(code, options = {}) {
|
export function parseForESLint(code, options = {}) {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { parseSync as babelParse, tokTypes as tt, traverse } from "@babel/core";
|
import { parseSync as babelParse } from "@babel/core";
|
||||||
import babylonToEspree from "./babylon-to-espree";
|
import babylonToEspree from "./babylon-to-espree";
|
||||||
import { normalizeBabelParseConfig } from "./configuration";
|
import { normalizeBabelParseConfig } from "./configuration";
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ export default function parse(code, options) {
|
|||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
|
|
||||||
babylonToEspree(ast, traverse, tt, code);
|
babylonToEspree(ast, code);
|
||||||
|
|
||||||
return ast;
|
return ast;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user