[eslint-plugin] Try using HermesParser
Lauren Tan committed
Jun 20, 2023 at 12:30 UTC
79dbf6fc19bb26336f0043cc6fb62eaac2676f96
4 files changed
+29
-4
compiler/forget/packages/eslint-plugin-react-forget/package.json
+2
-1
@@ -23,7 +23,8 @@
23
"@babel/traverse": "^7.19.1",
24
"babel-plugin-fbt": "^1.0.0",
25
"babel-plugin-fbt-runtime": "^1.0.0",
26
- "babel-plugin-react-forget": "*"
26
+ "babel-plugin-react-forget": "*",
27
+ "hermes-parser": "^0.12.1"
28
},
29
"devDependencies": {
30
"@babel/eslint-parser": "^7.19.1",
compiler/forget/packages/eslint-plugin-react-forget/src/rules/ReactForgetDiagnostics.ts
+3
-3
@@ -6,12 +6,12 @@
6
*/
7
8
import { transformFromAstSync } from "@babel/core";
9
-import * as parser from "@babel/parser";
9
import ReactForgetBabelPlugin, {
10
CompilerError,
11
type PluginOptions,
12
} from "babel-plugin-react-forget";
13
import type { Rule } from "eslint";
14
+import * as HermesParser from "hermes-parser";
15
16
const rule: Rule.RuleModule = {
17
meta: {
@@ -35,9 +35,9 @@ const rule: Rule.RuleModule = {
35
validateRefAccessDuringRender: true,
36
},
37
};
38
- const babelAST = parser.parse(sourceCode, {
38
+ const babelAST = HermesParser.parse(sourceCode, {
39
+ babel: true,
40
sourceFilename: filename,
40
- plugins: ["jsx", "flow"],
41
sourceType: "module",
42
});
43
if (babelAST != null) {
compiler/forget/packages/eslint-plugin-react-forget/src/types/hermes-parser.d.ts
new
+12
@@ -0,0 +1,12 @@
1
+// v0.12.1
2
+declare module "hermes-parser" {
3
+ type HermesParserOptions = {
4
+ babel: boolean;
5
+ allowReturnOutsideFunction: boolean;
6
+ flow: "all" | "detect";
7
+ sourceFilename: string | null;
8
+ sourceType: "module" | "script" | "unambiguous";
9
+ tokens: boolean;
10
+ };
11
+ export function parse(code: string, options: Partial<HermesParserOptions>);
12
+}
compiler/forget/yarn.lock
+12
@@ -5572,6 +5572,11 @@ hermes-eslint@^0.9.0:
5572
hermes-estree "0.9.0"
5573
hermes-parser "0.9.0"
5574
5575
+hermes-estree@0.12.1:
5576
+ version "0.12.1"
5577
+ resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.12.1.tgz#74901ee351387fecbf3c683c90b1fa7d22f1c6f0"
5578
+ integrity sha512-IWnP3rEZnuEq64IGM/sNsp+QCQcCAAu5TMallJ7bpUw0YUfk5q6cA7tvBGo/D0kGyo5jASc4Yp/CQCsLSSMfGQ==
5579
+
5580
hermes-estree@0.9.0:
5581
version "0.9.0"
5582
resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.9.0.tgz#026e0abe6db1dcf50a81a79014b779a83db3b814"
@@ -5584,6 +5589,13 @@ hermes-parser@0.9.0:
5589
dependencies:
5590
hermes-estree "0.9.0"
5591
5592
+hermes-parser@^0.12.1:
5593
+ version "0.12.1"
5594
+ resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.12.1.tgz#e60595f05ecd13026c614ca5d9db2eaefe971301"
5595
+ integrity sha512-53aep6osCq1GiSIlbe7ltPD9v0GeAUtGlaMhgKexGjePoI66GnalLR5aPeuIZbExBQAb+af/kiXT3yxBweuXUA==
5596
+ dependencies:
5597
+ hermes-estree "0.12.1"
5598
+
5599
hmac-drbg@^1.0.1:
5600
version "1.0.1"
5601
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"