import type {Dispatcher} from 'react-reconciler/src/ReactInternalTypes';
import type {AsyncDispatcher} from 'react-reconciler/src/ReactInternalTypes';
import type {
Reference,
TaintEntry,
RequestCleanupQueue,
} from './ReactTaintRegistry';
import {
TaintRegistryObjects,
TaintRegistryValues,
TaintRegistryByteLengths,
TaintRegistryPendingRequests,
} from './ReactTaintRegistry';
import {enableTaint} from 'shared/ReactFeatureFlags';
export type SharedStateServer = {
H: null | Dispatcher,
A: null | AsyncDispatcher,
TaintRegistryObjects: WeakMap<Reference, string>,
TaintRegistryValues: Map<string | bigint, TaintEntry>,
TaintRegistryByteLengths: Set<number>,
TaintRegistryPendingRequests: Set<RequestCleanupQueue>,
getCurrentStack: null | (() => string),
recentlyCreatedOwnerStacks: 0,
};
export type RendererTask = boolean => RendererTask | null;
const ReactSharedInternals: SharedStateServer = ({
H: null,
A: null,
}: any);
if (enableTaint) {
ReactSharedInternals.TaintRegistryObjects = TaintRegistryObjects;
ReactSharedInternals.TaintRegistryValues = TaintRegistryValues;
ReactSharedInternals.TaintRegistryByteLengths = TaintRegistryByteLengths;
ReactSharedInternals.TaintRegistryPendingRequests =
TaintRegistryPendingRequests;
}
if (__DEV__) {
ReactSharedInternals.getCurrentStack = (null: null | (() => string));
ReactSharedInternals.recentlyCreatedOwnerStacks = 0;
}
export default ReactSharedInternals;