-
Notifications
You must be signed in to change notification settings - Fork 49.8k
Closed
Description
DevTools tells Babel to parse the source code using "jsx" and "typescript" plug-ins:
react/packages/react-devtools-extensions/src/parseHookNames.js
Lines 446 to 462 in ed6c091
| // TODO Parsing should ideally be done off of the main thread. | |
| hookSourceData.originalSourceAST = parse(originalSourceCode, { | |
| sourceType: 'unambiguous', | |
| plugins: ['jsx', 'typescript'], | |
| }); | |
| }, | |
| ), | |
| ); | |
| } else { | |
| // There's no source map to parse here so we can just parse the original source itself. | |
| hookSourceData.originalSourceCode = runtimeSourceCode; | |
| // TODO Parsing should ideally be done off of the main thread. | |
| hookSourceData.originalSourceAST = parse(runtimeSourceCode, { | |
| sourceType: 'unambiguous', | |
| plugins: ['jsx', 'typescript'], | |
| }); |
This will work for some simple usages of Flow, but syntax may diverge and cause the parsing to fail.
Let's scan the source code for a @flow pragma and pass "flow" instead of "typescript" if one is found.
We should also add tests for both Flow and TypeScript to the test component pool:
https://github.com/facebook/react/tree/main/packages/react-devtools-extensions/src/__tests__/__source__