diff --git a/jest.config.js b/jest.config.js index aa6c08fb0ad2..6e98ae747ea4 100644 --- a/jest.config.js +++ b/jest.config.js @@ -27,7 +27,9 @@ module.exports = { }, resolver: './packages/jest-preset/jest/resolver.js', moduleNameMapper: { - // `resolver.js` strips `exports`, so alias this subpath to its `src/` impl. + // `resolver.js` strips `exports`, so alias these subpaths to their `src/` impl. + '^react-native/react-private-interface$': + '/packages/react-native/src/react-private-interface.js', '^react-native/setup-env$': '/packages/react-native/src/setup-env.js', }, diff --git a/packages/eslint-plugin-react-native/__tests__/no-deep-imports-test.js b/packages/eslint-plugin-react-native/__tests__/no-deep-imports-test.js index bf14e917f7bf..ca7637e21c1e 100644 --- a/packages/eslint-plugin-react-native/__tests__/no-deep-imports-test.js +++ b/packages/eslint-plugin-react-native/__tests__/no-deep-imports-test.js @@ -33,6 +33,8 @@ eslintTester.run('../no-deep-imports', rule, { "require('react-native/src/fb_internal/Foo')", "import 'react-native/setup-env';", "require('react-native/setup-env');", + "import {BatchedBridge} from 'react-native/react-private-interface';", + "require('react-native/react-private-interface');", ], invalid: [ { diff --git a/packages/eslint-plugin-react-native/no-deep-imports.js b/packages/eslint-plugin-react-native/no-deep-imports.js index e84a1f24d45b..1a682374c6be 100644 --- a/packages/eslint-plugin-react-native/no-deep-imports.js +++ b/packages/eslint-plugin-react-native/no-deep-imports.js @@ -201,6 +201,7 @@ module.exports = { return ( source.value === 'react-native/asset-registry' || + source.value === 'react-native/react-private-interface' || source.value === 'react-native/setup-env' ); } diff --git a/packages/jest-preset/jest-preset.js b/packages/jest-preset/jest-preset.js index 624edd6f2901..720a73efdca4 100644 --- a/packages/jest-preset/jest-preset.js +++ b/packages/jest-preset/jest-preset.js @@ -18,10 +18,12 @@ module.exports = { platforms: ['android', 'ios', 'native'], }, moduleNameMapper: { - // `setup-env` is a secondary entry point exposed via the package's - // `exports`, but `./jest/resolver.js` strips `exports` and the generic - // mapper below resolves subpaths as literal directory paths. Alias it - // explicitly so it resolves to its `src/` implementation. + // `setup-env` and `react-private-interface` are secondary entry points + // exposed via the package's `exports`, but `./jest/resolver.js` strips + // `exports` and the generic mapper below resolves subpaths as literal + // directory paths. Alias them explicitly so they resolve to their `src/` + // implementations. + '^react-native/react-private-interface$': `${path.dirname(require.resolve('react-native'))}/src/react-private-interface.js`, '^react-native/setup-env$': `${path.dirname(require.resolve('react-native'))}/src/setup-env.js`, '^react-native($|/.*)': `${path.dirname(require.resolve('react-native'))}/$1`, }, diff --git a/packages/react-native/Libraries/Renderer/shims/ReactFabric.js b/packages/react-native/Libraries/Renderer/shims/ReactFabric.js index 15eeeb36bbaf..55c3cf9b51d3 100644 --- a/packages/react-native/Libraries/Renderer/shims/ReactFabric.js +++ b/packages/react-native/Libraries/Renderer/shims/ReactFabric.js @@ -7,12 +7,12 @@ * @noformat * @nolint * @flow - * @generated SignedSource<> + * @generated SignedSource<<8b6b4d01340cfba2de5eabc3936dfbdd>> */ 'use strict'; -import {BatchedBridge} from 'react-native/Libraries/ReactPrivate/ReactNativePrivateInterface'; +import {BatchedBridge} from 'react-native/react-private-interface'; import type {ReactFabricType} from './ReactNativeTypes'; diff --git a/packages/react-native/Libraries/Renderer/shims/createReactNativeComponentClass.js b/packages/react-native/Libraries/Renderer/shims/createReactNativeComponentClass.js index a069eb91e975..dbee65a544ea 100644 --- a/packages/react-native/Libraries/Renderer/shims/createReactNativeComponentClass.js +++ b/packages/react-native/Libraries/Renderer/shims/createReactNativeComponentClass.js @@ -7,12 +7,12 @@ * @noformat * @nolint * @flow strict-local - * @generated SignedSource<<52163887de05f1cff05388145cf85b3b>> + * @generated SignedSource<<26e94f747da2450a86c1e314470813f5>> */ 'use strict'; -import {ReactNativeViewConfigRegistry} from 'react-native/Libraries/ReactPrivate/ReactNativePrivateInterface'; +import {ReactNativeViewConfigRegistry} from 'react-native/react-private-interface'; import {type ViewConfig} from './ReactNativeTypes'; const {register} = ReactNativeViewConfigRegistry;