Skip to content

Commit f4fccd3

Browse files
imatlopezchrislloydclaude
authored
🤖 Merge PR DefinitelyTyped#74382 fix(react-reconciler): Update types for 0.33.0 by @imatlopez
Co-authored-by: Chris Lloyd <chrislloyd@anthropic.com> Co-authored-by: Claude <noreply@anthropic.com>
1 parent 9cf601f commit f4fccd3

File tree

3 files changed

+115
-14
lines changed

3 files changed

+115
-14
lines changed

‎types/react-reconciler/index.d.ts‎

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,8 @@ declare namespace ReactReconciler {
610610
type LanePriority = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17;
611611

612612
type Lanes = number;
613-
type Lane = number;
613+
614+
type Lane = number & { __LaneBrand: any };
614615

615616
type Flags = number;
616617

@@ -941,7 +942,6 @@ declare namespace ReactReconciler {
941942
onCaughtError: (error: Error, info: BaseErrorInfo) => void,
942943
onRecoverableError: (error: Error, info: BaseErrorInfo) => void,
943944
onDefaultTransitionIndicator: () => void,
944-
transitionCallbacks: null | TransitionTracingCallbacks,
945945
): OpaqueRoot;
946946

947947
createPortal(
@@ -951,8 +951,6 @@ declare namespace ReactReconciler {
951951
key?: string | null,
952952
): ReactPortal;
953953

954-
registerMutableSourceForHydration(root: FiberRoot, mutableSource: MutableSource): void;
955-
956954
createComponentSelector(component: React$AbstractComponent<never, unknown>): ComponentSelector;
957955

958956
createHasPseudoClassSelector(selectors: Selector[]): HasPseudoClassSelector;
@@ -987,8 +985,12 @@ declare namespace ReactReconciler {
987985
isStrictMode: boolean,
988986
concurrentUpdatesByDefaultOverride: null | boolean,
989987
identifierPrefix: string,
990-
onRecoverableError: (error: Error) => void,
988+
onUncaughtError: (error: Error, info: BaseErrorInfo & { errorBoundary?: Component }) => void,
989+
onCaughtError: (error: Error, info: BaseErrorInfo) => void,
990+
onRecoverableError: (error: Error, info: BaseErrorInfo) => void,
991+
onDefaultTransitionIndicator: () => void,
991992
transitionCallbacks: null | TransitionTracingCallbacks,
993+
formState: unknown,
992994
): OpaqueRoot;
993995

994996
updateContainer(
@@ -998,17 +1000,27 @@ declare namespace ReactReconciler {
9981000
callback?: (() => void) | null,
9991001
): Lane;
10001002

1003+
updateContainerSync(
1004+
element: ReactNode,
1005+
container: OpaqueRoot,
1006+
parentComponent?: Component<any, any> | null,
1007+
callback?: (() => void) | null,
1008+
): Lane;
1009+
10011010
batchedUpdates<A, R>(fn: (a: A) => R, a: A): R;
10021011

10031012
deferredUpdates<A>(fn: () => A): A;
10041013

10051014
discreteUpdates<A, B, C, D, R>(fn: (arg0: A, arg1: B, arg2: C, arg3: D) => R, a: A, b: B, c: C, d: D): R;
10061015

1007-
flushControlled(fn: () => any): void;
1008-
10091016
flushSync(): void;
10101017
flushSync<R>(fn: () => R): R;
10111018

1019+
flushSyncFromReconciler(): void;
1020+
flushSyncFromReconciler<R>(fn: () => R): R;
1021+
1022+
flushSyncWork(): boolean;
1023+
10121024
isAlreadyRendering(): boolean;
10131025

10141026
flushPassiveEffects(): boolean;
@@ -1017,16 +1029,10 @@ declare namespace ReactReconciler {
10171029

10181030
attemptSynchronousHydration(fiber: Fiber): void;
10191031

1020-
attemptDiscreteHydration(fiber: Fiber): void;
1021-
10221032
attemptContinuousHydration(fiber: Fiber): void;
10231033

10241034
attemptHydrationAtCurrentPriority(fiber: Fiber): void;
10251035

1026-
getCurrentUpdatePriority(): LanePriority;
1027-
1028-
runWithPriority<T>(priority: LanePriority, fn: () => T): T;
1029-
10301036
findHostInstance(component: any): PublicInstance | null;
10311037

10321038
findHostInstanceWithWarning(component: any, methodName: string): PublicInstance | null;
@@ -1039,6 +1045,17 @@ declare namespace ReactReconciler {
10391045

10401046
injectIntoDevTools(devToolsConfig: DevToolsConfig<Instance, TextInstance, any>): boolean;
10411047
}
1048+
1049+
function defaultOnUncaughtError(error: Error): void;
1050+
function defaultOnCaughtError(error: Error): void;
1051+
function defaultOnRecoverableError(error: Error): void;
1052+
1053+
function startHostTransition(
1054+
formFiber: Fiber,
1055+
pendingState: unknown,
1056+
action: ((formData: FormData) => void) | null,
1057+
formData: FormData,
1058+
): void;
10421059
}
10431060

10441061
export = ReactReconciler;

‎types/react-reconciler/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"private": true,
33
"name": "@types/react-reconciler",
4-
"version": "0.32.9999",
4+
"version": "0.33.9999",
55
"projects": [
66
"https://reactjs.org/"
77
],

‎types/react-reconciler/test/react-reconciler-tests.ts‎

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,87 @@ isEqual(Constants.CONCURRENT_ROOT, ReactReconcilerConstants.ConcurrentRoot);
4545

4646
// $ExpectType boolean
4747
isEqual(Constants.NO_EVENT_PRIORITY, ReactReconcilerConstants.NoEventPriority);
48+
49+
// Test createContainer and createHydrationContainer signatures
50+
const TestReconciler = ReactReconciler<
51+
ReactTestHostConfig.Type,
52+
ReactTestHostConfig.Props,
53+
ReactTestHostConfig.Container,
54+
ReactTestHostConfig.Instance,
55+
ReactTestHostConfig.TextInstance,
56+
ReactTestHostConfig.SuspenseInstance,
57+
ReactTestHostConfig.HydratableInstance,
58+
ReactTestHostConfig.FormInstance,
59+
ReactTestHostConfig.PublicInstance,
60+
ReactTestHostConfig.HostContext,
61+
ReactTestHostConfig.ChildSet,
62+
ReactTestHostConfig.TimeoutHandle,
63+
ReactTestHostConfig.NoTimeout,
64+
ReactTestHostConfig.TransitionStatus
65+
>(ReactTestHostConfig);
66+
67+
const container: ReactTestHostConfig.Container = {
68+
children: [],
69+
createNodeMock: () => null,
70+
tag: "CONTAINER",
71+
};
72+
73+
// Test createContainer signature (10 arguments, no transitionCallbacks)
74+
// $ExpectType any
75+
const root = TestReconciler.createContainer(
76+
container,
77+
ReactReconcilerConstants.ConcurrentRoot,
78+
null, // hydrationCallbacks
79+
false, // isStrictMode
80+
null, // concurrentUpdatesByDefaultOverride
81+
"", // identifierPrefix
82+
(error, info) => {}, // onUncaughtError
83+
(error, info) => {}, // onCaughtError
84+
(error, info) => {}, // onRecoverableError
85+
() => {}, // onDefaultTransitionIndicator
86+
);
87+
88+
// Test createHydrationContainer signature (14 arguments including new error handlers and formState)
89+
// $ExpectType any
90+
const hydrationRoot = TestReconciler.createHydrationContainer(
91+
null, // initialChildren
92+
null, // callback
93+
container,
94+
ReactReconcilerConstants.ConcurrentRoot,
95+
null, // hydrationCallbacks
96+
false, // isStrictMode
97+
null, // concurrentUpdatesByDefaultOverride
98+
"", // identifierPrefix
99+
(error, info) => {}, // onUncaughtError
100+
(error, info) => {}, // onCaughtError
101+
(error, info) => {}, // onRecoverableError
102+
() => {}, // onDefaultTransitionIndicator
103+
null, // transitionCallbacks
104+
null, // formState
105+
);
106+
107+
// Use root and hydrationRoot to verify they are valid OpaqueRoot types
108+
TestReconciler.updateContainer(null, root, null);
109+
TestReconciler.updateContainer(null, hydrationRoot, null);
110+
111+
// Test updateContainerSync
112+
// $ExpectType Lane
113+
TestReconciler.updateContainerSync(null, root, null);
114+
115+
// Test flushSyncFromReconciler
116+
// $ExpectType void
117+
TestReconciler.flushSyncFromReconciler();
118+
// $ExpectType string
119+
TestReconciler.flushSyncFromReconciler(() => "test");
120+
121+
// Test flushSyncWork
122+
// $ExpectType boolean
123+
TestReconciler.flushSyncWork();
124+
125+
// Test default error handlers
126+
// $ExpectType void
127+
ReactReconciler.defaultOnUncaughtError(new Error("test"));
128+
// $ExpectType void
129+
ReactReconciler.defaultOnCaughtError(new Error("test"));
130+
// $ExpectType void
131+
ReactReconciler.defaultOnRecoverableError(new Error("test"));

0 commit comments

Comments
 (0)