Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@ module.exports = {

overrides: [
// overriding the JS config from @react-native/eslint-config to ensure
// that we use hermes-eslint for all js files
// that we use flow-eslint for all js files
{
files: ['*.js', '*.js.flow', '*.jsx'],
parser: 'hermes-eslint',
parser: 'flow-eslint',
rules: {
'@react-native/monorepo/sort-imports': 'warn',
'eslint-comments/no-unlimited-disable': 'off',
'ft-flow/require-valid-file-annotation': ['error', 'always'],
'no-extra-boolean-cast': 'off',
'no-void': 'off',
// These rules are not required with hermes-eslint
// These rules are not required with flow-eslint
'ft-flow/define-flow-type': 'off',
'ft-flow/use-flow-type': 'off',
// Flow handles these checks for us, so they aren't required
Expand All @@ -53,7 +53,7 @@ module.exports = {
'./packages/react-native/src/**/*.{js,flow}',
'./packages/assets-registry/registry.js',
],
parser: 'hermes-eslint',
parser: 'flow-eslint',
rules: {
'@react-native/monorepo/no-commonjs-exports': 'warn',
},
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
"ansi-styles": "^4.2.1",
"babel-plugin-minify-dead-code-elimination": "^0.5.2",
"babel-plugin-syntax-hermes-parser": "0.37.0",
"flow-parser": "0.325.0",
"babel-plugin-transform-define": "^2.1.4",
"babel-plugin-transform-flow-enums": "^0.0.2",
"clang-format": "^1.8.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
const ESLintTester = require('eslint').RuleTester;

ESLintTester.setDefaultConfig({
parser: require.resolve('hermes-eslint'),
parser: require.resolve('flow-eslint'),
parserOptions: {
requireConfigFile: false,
ecmaVersion: 6,
Expand Down
1 change: 1 addition & 0 deletions packages/eslint-plugin-react-native/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
],
"devDependencies": {
"babel-plugin-syntax-hermes-parser": "0.37.0",
"flow-parser": "0.325.0",
"flow-eslint": "0.325.0",
"hermes-eslint": "0.37.0"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/eslint-plugin-specs/__tests__/eslint-tester.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@
const ESLintTester = require('eslint').RuleTester;

ESLintTester.setDefaultConfig({
parser: require.resolve('hermes-eslint'),
parser: require.resolve('flow-eslint'),
parserOptions: {
requireConfigFile: false,
ecmaVersion: 6,
sourceType: 'module',
babelOptions: {
presets: [require.resolve('babel-plugin-syntax-hermes-parser')],
presets: [require.resolve('flow-parser/babel-plugin')],
},
},
});
Expand Down
1 change: 1 addition & 0 deletions packages/eslint-plugin-specs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
"make-dir": "^2.1.0",
"pirates": "^4.0.1",
"babel-plugin-syntax-hermes-parser": "0.37.0",
"flow-parser": "0.325.0",
"source-map-support": "0.5.0"
},
"devDependencies": {
Expand Down
4 changes: 2 additions & 2 deletions packages/eslint-plugin-specs/react-native-modules.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ function requireModuleParser() {
configFile: false,
only: [/react-native-codegen\/src\//],
plugins: [
require('babel-plugin-syntax-hermes-parser'),
require('flow-parser/babel-plugin'),
require('@babel/plugin-transform-flow-strip-types').default,
],
};
Expand All @@ -54,7 +54,7 @@ function requireModuleParser() {
configFile: false,
only: [/@react-native\/codegen\/lib\//],
plugins: [
require('babel-plugin-syntax-hermes-parser'),
require('flow-parser/babel-plugin'),
require('@babel/plugin-transform-flow-strip-types').default,
],
};
Expand Down
1 change: 1 addition & 0 deletions packages/react-native-babel-preset/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
"@babel/plugin-transform-unicode-regex": "^7.24.7",
"@react-native/babel-plugin-codegen": "0.87.0-main",
"babel-plugin-syntax-hermes-parser": "0.37.0",
"flow-parser": "0.325.0",
"babel-plugin-transform-flow-enums": "^0.0.2",
"react-refresh": "^0.14.0"
},
Expand Down
2 changes: 1 addition & 1 deletion packages/react-native-babel-preset/src/configs/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ const getPreset = (src, options, babel) => {
{
plugins: [
[
require('babel-plugin-syntax-hermes-parser'),
require('flow-parser/babel-plugin'),
{
parseLangTypes: 'flow',
reactRuntimeTarget: '19',
Expand Down
2 changes: 1 addition & 1 deletion packages/react-native-babel-transformer/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ const transform /*: BabelTransformer['transform'] */ = ({
!options.hermesParser
? parseSync(src, babelConfig)
: // $FlowFixMe[incompatible-exact]
require('hermes-parser').parse(src, {
require('flow-parser').parse(src, {
babel: true,
reactRuntimeTarget: '19',
sourceType: babelConfig.sourceType,
Expand Down
2 changes: 1 addition & 1 deletion packages/react-native-codegen/.babelrc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"plugins": [
"babel-plugin-syntax-hermes-parser",
"flow-parser/babel-plugin",
"@babel/plugin-transform-flow-strip-types",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-transform-class-properties",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,7 @@ exports[`RN Codegen Flow Parser Fails with error message EMPTY_ENUM_NATIVE_MODUL

exports[`RN Codegen Flow Parser Fails with error message MAP_WITH_EXTRA_KEYS_NATIVE_MODULE 1`] = `"Module NativeSampleTurboModule: 'ObjectTypeAnnotation' cannot contain both an indexer and properties."`;

exports[`RN Codegen Flow Parser Fails with error message MIXED_VALUES_ENUM_NATIVE_MODULE 1`] = `
"Syntax error in path/NativeSampleTurboModule.js: cannot use string initializer in number enum (19:2)
STR = 'str',
^~~~~~~~~~~
note: start of enum body (17:21)
export enum SomeEnum {
^"
`;
exports[`RN Codegen Flow Parser Fails with error message MIXED_VALUES_ENUM_NATIVE_MODULE 1`] = `"Module NativeSampleTurboModule: Failed parsing the enum SomeEnum in NativeSampleTurboModule with the error: Enums can not be mixed- they all must be either blank, number, or string values."`;

exports[`RN Codegen Flow Parser Fails with error message NATIVE_MODULES_WITH_ARRAY_BUFFER_IN_OBJECT_PROPERTY 1`] = `"Module NativeSampleTurboModule: Object property '[object Object]' cannot have type 'ArrayBuffer'."`;

Expand All @@ -27,15 +20,11 @@ exports[`RN Codegen Flow Parser Fails with error message NATIVE_MODULES_WITH_REA

exports[`RN Codegen Flow Parser Fails with error message NATIVE_MODULES_WITH_UNNAMED_PARAMS 1`] = `"Module NativeSampleTurboModule: All function parameters must be named."`;

exports[`RN Codegen Flow Parser Fails with error message NUMERIC_VALUES_ENUM_NATIVE_MODULE 1`] = `
"Syntax error in path/NativeSampleTurboModule.js: 'true', 'false', 'string', 'number' or 'bigint' expected in enum member initializer (20:17)
SUBFACTORIAL = !5,
~~~~~~~~~~~~~~~^"
`;
exports[`RN Codegen Flow Parser Fails with error message NUMERIC_VALUES_ENUM_NATIVE_MODULE 1`] = `"Syntax error in path/NativeSampleTurboModule.js: The enum member initializer for \`SUBFACTORIAL\` needs to be a literal (either a boolean, number, bigint, or string) in enum \`SomeEnum\`. (20:17)"`;

exports[`RN Codegen Flow Parser Fails with error message TWO_NATIVE_EXTENDING_TURBO_MODULE 1`] = `"Module NativeSampleTurboModule: Every NativeModule spec file must declare exactly one NativeModule Flow interface. This file declares 2: 'Spec', and 'Spec2'. Please remove the extraneous Flow interface declarations."`;

exports[`RN Codegen Flow Parser Fails with error message TWO_NATIVE_MODULES_EXPORTED_WITH_DEFAULT 1`] = `"Module NativeSampleTurboModule: No Flow interfaces extending TurboModule were detected in this NativeModule spec."`;
exports[`RN Codegen Flow Parser Fails with error message TWO_NATIVE_MODULES_EXPORTED_WITH_DEFAULT 1`] = `"Syntax error in path/NativeSampleTurboModule.js: Duplicate export for \`default\` (19:7)"`;

exports[`RN Codegen Flow Parser can generate fixture ANDROID_ONLY_NATIVE_MODULE 1`] = `
"{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@

'use strict';

import type {Program as ESTreeProgram} from 'hermes-estree';
import type {Program as ESTreeProgram} from 'flow-estree';

const hermesParser = require('hermes-parser');
const flowParser = require('flow-parser');

function parseFlowAndThrowErrors(
code: string,
options: Readonly<{filename?: ?string}> = {},
): ESTreeProgram {
let ast;
try {
ast = hermesParser.parse(code, {
ast = flowParser.parse(code, {
// Produce an ESTree-compliant AST
babel: false,
// Parse Flow without a pragma
Expand Down
1 change: 1 addition & 0 deletions packages/react-native/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@
"anser": "^1.4.9",
"ansi-regex": "^5.0.0",
"babel-plugin-syntax-hermes-parser": "0.37.0",
"flow-parser": "0.325.0",
"base64-js": "^1.5.1",
"flow-enums-runtime": "^0.0.6",
"hermes-compiler": "0.0.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const rule = require('../no-commonjs-exports.js');
const {RuleTester} = require('eslint');

const ruleTester = new RuleTester({
parser: require.resolve('hermes-eslint'),
parser: require.resolve('flow-eslint'),
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const rule = require('../no-haste-imports.js');
const {RuleTester} = require('eslint');

const ruleTester = new RuleTester({
parser: require.resolve('hermes-eslint'),
parser: require.resolve('flow-eslint'),
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const rule = require('../no-react-default-imports');
const {RuleTester} = require('eslint');

const ruleTester = new RuleTester({
parser: require.resolve('hermes-eslint'),
parser: require.resolve('flow-eslint'),
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const rule = require('../no-react-named-type-imports');
const {RuleTester} = require('eslint');

const ruleTester = new RuleTester({
parser: require.resolve('hermes-eslint'),
parser: require.resolve('flow-eslint'),
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const RN_PACKAGE_DIRECTORY = path.resolve(
);

const ruleTester = new RuleTester({
parser: require.resolve('hermes-eslint'),
parser: require.resolve('flow-eslint'),
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const rule = require('../no-react-node-imports');
const {RuleTester} = require('eslint');

const ruleTester = new RuleTester({
parser: require.resolve('hermes-eslint'),
parser: require.resolve('flow-eslint'),
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const rule = require('../require-extends-error.js');
const {RuleTester} = require('eslint');

const ruleTester = new RuleTester({
parser: require.resolve('hermes-eslint'),
parser: require.resolve('flow-eslint'),
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const rule = require('../valid-flow-typed-signature.js');
const {RuleTester} = require('eslint');

const ruleTester = new RuleTester({
parser: require.resolve('hermes-eslint'),
parser: require.resolve('flow-eslint'),
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
Expand Down
4 changes: 2 additions & 2 deletions private/eslint-plugin-monorepo/rules/sort-imports.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions private/react-native-fantom/repl/replTransform.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
* @format
*/

import type {ESNode, Program} from 'hermes-estree';
import type {ESNode, Program} from 'flow-estree';

import {parse} from 'hermes-parser';
import {parse} from 'flow-parser';

export type TransformResult = {
code: string,
Expand Down
2 changes: 1 addition & 1 deletion scripts/build/babel/node.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const config: BabelCoreOptions = {
],
],
plugins: [
require.resolve('babel-plugin-syntax-hermes-parser'),
require.resolve('flow-parser/babel-plugin'),
[
require.resolve('babel-plugin-transform-define'),
{
Expand Down
Loading