Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DevTools] Support Flow syntax for named hooks parsing #21793

Closed
bvaughn opened this issue Jul 2, 2021 · 1 comment · Fixed by #21815
Closed

[DevTools] Support Flow syntax for named hooks parsing #21793

bvaughn opened this issue Jul 2, 2021 · 1 comment · Fixed by #21815

Comments

@bvaughn
Copy link
Contributor

bvaughn commented Jul 2, 2021

DevTools tells Babel to parse the source code using "jsx" and "typescript" plug-ins:

// 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__

@bvaughn
Copy link
Contributor Author

bvaughn commented Jul 7, 2021

I think something as basic as this should work:

function getBabelPluginsList(originalSourceCode: string): Array<string> {
  const plugin = originalSourceCode.indexOf('@flow') > 0 ? 'flow' : 'typescript';
  return ['jsx', plugin];
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant