diff --git a/packages/react-server-dom-turbopack/src/ReactFlightTurbopackNodeRegister.js b/packages/react-server-dom-turbopack/src/ReactFlightTurbopackNodeRegister.js index 68c692530d6c5..d8056ffa9a03d 100644 --- a/packages/react-server-dom-turbopack/src/ReactFlightTurbopackNodeRegister.js +++ b/packages/react-server-dom-turbopack/src/ReactFlightTurbopackNodeRegister.js @@ -44,7 +44,7 @@ module.exports = function register() { }).body; } catch (x) { // eslint-disable-next-line react-internal/no-production-logging - console.error('Error parsing %s %s', url, x.message); + console['error']('Error parsing %s %s', url, x.message); return originalCompile.apply(this, arguments); } diff --git a/packages/react-server-dom-webpack/src/ReactFlightWebpackNodeRegister.js b/packages/react-server-dom-webpack/src/ReactFlightWebpackNodeRegister.js index 39598e0e85ec0..36753e3c99ac9 100644 --- a/packages/react-server-dom-webpack/src/ReactFlightWebpackNodeRegister.js +++ b/packages/react-server-dom-webpack/src/ReactFlightWebpackNodeRegister.js @@ -44,7 +44,7 @@ module.exports = function register() { }).body; } catch (x) { // eslint-disable-next-line react-internal/no-production-logging - console.error('Error parsing %s %s', url, x.message); + console['error']('Error parsing %s %s', url, x.message); return originalCompile.apply(this, arguments); } diff --git a/packages/react-server/src/ReactFlightServer.js b/packages/react-server/src/ReactFlightServer.js index 45340c7f74ccc..900793d24c0b5 100644 --- a/packages/react-server/src/ReactFlightServer.js +++ b/packages/react-server/src/ReactFlightServer.js @@ -111,7 +111,6 @@ import { import type {SharedStateServer} from 'react/src/ReactSharedInternalsServer'; import ReactSharedInternalsImpl from 'shared/ReactSharedInternals'; const ReactSharedInternals: SharedStateServer = (ReactSharedInternalsImpl: any); -import ReactServerSharedInternals from './ReactServerSharedInternals'; import isArray from 'shared/isArray'; import getPrototypeOf from 'shared/getPrototypeOf'; import binaryToComparableString from 'shared/binaryToComparableString'; @@ -307,7 +306,7 @@ const { TaintRegistryValues, TaintRegistryByteLengths, TaintRegistryPendingRequests, -} = ReactServerSharedInternals; +} = ReactSharedInternals; function throwTaintViolation(message: string) { // eslint-disable-next-line react-internal/prod-error-codes diff --git a/packages/react-server/src/ReactServerSharedInternals.js b/packages/react-server/src/ReactServerSharedInternals.js deleted file mode 100644 index 6d1a5a7c6858a..0000000000000 --- a/packages/react-server/src/ReactServerSharedInternals.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @flow - */ - -import * as React from 'react'; - -const ReactSharedServerInternals = - // $FlowFixMe: It's defined in the one we resolve to. - React.__SECRET_SERVER_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; - -if (!ReactSharedServerInternals) { - throw new Error( - 'The "react" package in this environment is not configured correctly. ' + - 'The "react-server" condition must be enabled in any environment that ' + - 'runs React Server Components.', - ); -} - -export default ReactSharedServerInternals; diff --git a/packages/react/src/ReactServer.experimental.js b/packages/react/src/ReactServer.experimental.js index 7db8332da9ad8..76b11004b2cc9 100644 --- a/packages/react/src/ReactServer.experimental.js +++ b/packages/react/src/ReactServer.experimental.js @@ -12,8 +12,6 @@ import './ReactFetch'; export {default as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED} from './ReactSharedInternalsServer'; -export {default as __SECRET_SERVER_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED} from './ReactServerSharedInternals'; - import {forEach, map, count, toArray, only} from './ReactChildren'; import { REACT_FRAGMENT_TYPE, diff --git a/packages/react/src/ReactServer.js b/packages/react/src/ReactServer.js index 0c5eacbba23d0..a63651d54c33a 100644 --- a/packages/react/src/ReactServer.js +++ b/packages/react/src/ReactServer.js @@ -12,8 +12,6 @@ import './ReactFetch'; export {default as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED} from './ReactSharedInternalsServer'; -export {default as __SECRET_SERVER_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED} from './ReactServerSharedInternals'; - import {forEach, map, count, toArray, only} from './ReactChildren'; import { REACT_FRAGMENT_TYPE, diff --git a/packages/react/src/ReactServerSharedInternals.js b/packages/react/src/ReactServerSharedInternals.js deleted file mode 100644 index 4e92efe48e828..0000000000000 --- a/packages/react/src/ReactServerSharedInternals.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @flow - */ - -import type { - Reference, - TaintEntry, - RequestCleanupQueue, -} from './ReactTaintRegistry'; - -import { - TaintRegistryObjects, - TaintRegistryValues, - TaintRegistryByteLengths, - TaintRegistryPendingRequests, -} from './ReactTaintRegistry'; - -import {enableTaint} from 'shared/ReactFeatureFlags'; - -export type ServerSharedState = { - // Taint - TaintRegistryObjects: WeakMap, - TaintRegistryValues: Map, - TaintRegistryByteLengths: Set, - TaintRegistryPendingRequests: Set, -}; - -const ReactServerSharedInternals: ServerSharedState = ({}: any); - -if (enableTaint) { - ReactServerSharedInternals.TaintRegistryObjects = TaintRegistryObjects; - ReactServerSharedInternals.TaintRegistryValues = TaintRegistryValues; - ReactServerSharedInternals.TaintRegistryByteLengths = - TaintRegistryByteLengths; - ReactServerSharedInternals.TaintRegistryPendingRequests = - TaintRegistryPendingRequests; -} - -export default ReactServerSharedInternals; diff --git a/packages/react/src/ReactSharedInternalsServer.js b/packages/react/src/ReactSharedInternalsServer.js index f209c2402a648..be5dd91d2146b 100644 --- a/packages/react/src/ReactSharedInternalsServer.js +++ b/packages/react/src/ReactSharedInternalsServer.js @@ -11,12 +11,31 @@ import type {Dispatcher} from 'react-reconciler/src/ReactInternalTypes'; import type {CacheDispatcher} from 'react-reconciler/src/ReactInternalTypes'; import type {ReactComponentInfo} from 'shared/ReactTypes'; -import {disableStringRefs} from 'shared/ReactFeatureFlags'; +import type { + Reference, + TaintEntry, + RequestCleanupQueue, +} from './ReactTaintRegistry'; + +import { + TaintRegistryObjects, + TaintRegistryValues, + TaintRegistryByteLengths, + TaintRegistryPendingRequests, +} from './ReactTaintRegistry'; + +import {disableStringRefs, enableTaint} from 'shared/ReactFeatureFlags'; export type SharedStateServer = { H: null | Dispatcher, // ReactCurrentDispatcher for Hooks C: null | CacheDispatcher, // ReactCurrentCache for Cache + // enableTaint + TaintRegistryObjects: WeakMap, + TaintRegistryValues: Map, + TaintRegistryByteLengths: Set, + TaintRegistryPendingRequests: Set, + // DEV-only-ish owner: null | ReactComponentInfo, // ReactCurrentOwner is ReactComponentInfo in Flight, null in Fizz. Fiber/Fizz uses SharedStateClient. @@ -33,6 +52,14 @@ const ReactSharedInternals: SharedStateServer = ({ C: null, }: any); +if (enableTaint) { + ReactSharedInternals.TaintRegistryObjects = TaintRegistryObjects; + ReactSharedInternals.TaintRegistryValues = TaintRegistryValues; + ReactSharedInternals.TaintRegistryByteLengths = TaintRegistryByteLengths; + ReactSharedInternals.TaintRegistryPendingRequests = + TaintRegistryPendingRequests; +} + if (__DEV__ || !disableStringRefs) { ReactSharedInternals.owner = null; } diff --git a/packages/react/src/ReactTaint.js b/packages/react/src/ReactTaint.js index 399acb8f01431..1664578317238 100644 --- a/packages/react/src/ReactTaint.js +++ b/packages/react/src/ReactTaint.js @@ -13,13 +13,13 @@ import getPrototypeOf from 'shared/getPrototypeOf'; import binaryToComparableString from 'shared/binaryToComparableString'; -import ReactServerSharedInternals from './ReactServerSharedInternals'; +import ReactSharedInternals from './ReactSharedInternalsServer'; const { TaintRegistryObjects, TaintRegistryValues, TaintRegistryByteLengths, TaintRegistryPendingRequests, -} = ReactServerSharedInternals; +} = ReactSharedInternals; interface Reference {} diff --git a/scripts/jest/setupHostConfigs.js b/scripts/jest/setupHostConfigs.js index 1c4acabde5bbd..8f2d508856e6f 100644 --- a/scripts/jest/setupHostConfigs.js +++ b/scripts/jest/setupHostConfigs.js @@ -46,6 +46,11 @@ function mockReact() { ); return jest.requireActual(resolvedEntryPoint); }); + // Make it possible to import this module inside + // the React package itself. + jest.mock('shared/ReactSharedInternals', () => { + return jest.requireActual('react/src/ReactSharedInternalsClient'); + }); } // When we want to unmock React we really need to mock it again. @@ -54,6 +59,10 @@ global.__unmockReact = mockReact; mockReact(); jest.mock('react/react.react-server', () => { + // If we're requiring an RSC environment, use those internals instead. + jest.mock('shared/ReactSharedInternals', () => { + return jest.requireActual('react/src/ReactSharedInternalsServer'); + }); const resolvedEntryPoint = resolveEntryFork( require.resolve('react/src/ReactServer'), global.__WWW__ @@ -161,11 +170,13 @@ inlinedHostConfigs.forEach(rendererInfo => { }); }); -// Make it possible to import this module inside -// the React package itself. -jest.mock('shared/ReactSharedInternals', () => - jest.requireActual('react/src/ReactSharedInternalsClient') -); +jest.mock('react-server/src/ReactFlightServer', () => { + // If we're requiring an RSC environment, use those internals instead. + jest.mock('shared/ReactSharedInternals', () => { + return jest.requireActual('react/src/ReactSharedInternalsServer'); + }); + return jest.requireActual('react-server/src/ReactFlightServer'); +}); // Make it possible to import this module inside // the ReactDOM package itself.