mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 12:20:20 +01:00
Revert [eprh] Remove hermes-parser (#34747)
Adds back HermesParser to eslint-plugin-react-hooks. There are still
[external users of
Flow](https://github.com/facebook/react/pull/34719#issuecomment-3368137743)
using the plugin, so we shouldn't break the plugin for them. However, we
still have the problem of double parsing: once from eslint (which we
discard) and then another via babel/hermes parser.
In the long run we should investigate a translation layer from estree to
babel (or alternatively, update the compiler to take estree as input).
But for now, I am reverting the PR.
This does mean that [Sandpack in
react.dev](11cb6b5915/src/components/MDX/Sandpack/runESLint.tsx (L31))
cannot update to the latest eprh as HermesParser does not appear to be
able to be run in a browser. I discovered this while trying to update
eprh on react.dev last week, but didn't investigate deeply. I'll need to
double check that again to find out more.
This commit is contained in:
parent
c786258422
commit
b65e6fc58b
|
|
@ -41,6 +41,7 @@
|
|||
"dependencies": {
|
||||
"@babel/core": "^7.24.4",
|
||||
"@babel/parser": "^7.24.4",
|
||||
"hermes-parser": "^0.25.1",
|
||||
"zod": "^3.22.4 || ^4.0.0",
|
||||
"zod-validation-error": "^3.0.3 || ^4.0.0"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import BabelPluginReactCompiler, {
|
|||
LoggerEvent,
|
||||
} from 'babel-plugin-react-compiler';
|
||||
import type {SourceCode} from 'eslint';
|
||||
import * as HermesParser from 'hermes-parser';
|
||||
import {isDeepStrictEqual} from 'util';
|
||||
import type {ParseResult} from '@babel/parser';
|
||||
|
||||
|
|
@ -113,15 +114,29 @@ function runReactCompilerImpl({
|
|||
}
|
||||
|
||||
let babelAST: ParseResult<File> | null = null;
|
||||
|
||||
if (filename.endsWith('.tsx') || filename.endsWith('.ts')) {
|
||||
try {
|
||||
babelAST = babelParse(sourceCode.text, {
|
||||
sourceFilename: filename,
|
||||
sourceType: 'unambiguous',
|
||||
plugins: ['typescript', 'jsx'],
|
||||
});
|
||||
} catch (err: unknown) {
|
||||
} catch {
|
||||
/* empty */
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
babelAST = HermesParser.parse(sourceCode.text, {
|
||||
babel: true,
|
||||
enableExperimentalComponentSyntax: true,
|
||||
sourceFilename: filename,
|
||||
sourceType: 'module',
|
||||
});
|
||||
} catch {
|
||||
/* empty */
|
||||
}
|
||||
}
|
||||
|
||||
if (babelAST != null) {
|
||||
results.flowSuppressions = getFlowSuppressions(sourceCode);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user