@@ -1242,6 +1242,20 @@ function updateMutableSource<Source, Snapshot>(
1242
1242
return useMutableSource ( hook , source , getSnapshot , subscribe ) ;
1243
1243
}
1244
1244
1245
+ function mountSyncExternalStore< T > (
1246
+ subscribe: (() => void ) => ( ) => void ,
1247
+ getSnapshot : ( ) => T ,
1248
+ ) : T {
1249
+ throw new Error ( 'Not yet implemented' ) ;
1250
+ }
1251
+
1252
+ function updateSyncExternalStore< T > (
1253
+ subscribe: (() => void ) => ( ) => void ,
1254
+ getSnapshot : ( ) => T ,
1255
+ ) : T {
1256
+ throw new Error ( 'Not yet implemented' ) ;
1257
+ }
1258
+
1245
1259
function mountState< S > (
1246
1260
initialState: (() => S ) | S ,
1247
1261
) : [ S , Dispatch < BasicStateAction < S > > ] {
@@ -2079,6 +2093,7 @@ export const ContextOnlyDispatcher: Dispatcher = {
2079
2093
useDeferredValue : throwInvalidHookError ,
2080
2094
useTransition : throwInvalidHookError ,
2081
2095
useMutableSource : throwInvalidHookError ,
2096
+ useSyncExternalStore : throwInvalidHookError ,
2082
2097
useOpaqueIdentifier : throwInvalidHookError ,
2083
2098
2084
2099
unstable_isNewReconciler : enableNewReconciler ,
@@ -2104,6 +2119,7 @@ const HooksDispatcherOnMount: Dispatcher = {
2104
2119
useDeferredValue : mountDeferredValue ,
2105
2120
useTransition : mountTransition ,
2106
2121
useMutableSource : mountMutableSource ,
2122
+ useSyncExternalStore : mountSyncExternalStore ,
2107
2123
useOpaqueIdentifier : mountOpaqueIdentifier ,
2108
2124
2109
2125
unstable_isNewReconciler : enableNewReconciler ,
@@ -2129,6 +2145,7 @@ const HooksDispatcherOnUpdate: Dispatcher = {
2129
2145
useDeferredValue : updateDeferredValue ,
2130
2146
useTransition : updateTransition ,
2131
2147
useMutableSource : updateMutableSource ,
2148
+ useSyncExternalStore : updateSyncExternalStore ,
2132
2149
useOpaqueIdentifier : updateOpaqueIdentifier ,
2133
2150
2134
2151
unstable_isNewReconciler : enableNewReconciler ,
@@ -2154,6 +2171,7 @@ const HooksDispatcherOnRerender: Dispatcher = {
2154
2171
useDeferredValue : rerenderDeferredValue ,
2155
2172
useTransition : rerenderTransition ,
2156
2173
useMutableSource : updateMutableSource ,
2174
+ useSyncExternalStore : mountSyncExternalStore ,
2157
2175
useOpaqueIdentifier : rerenderOpaqueIdentifier ,
2158
2176
2159
2177
unstable_isNewReconciler : enableNewReconciler ,
@@ -2302,6 +2320,14 @@ if (__DEV__) {
2302
2320
mountHookTypesDev ( ) ;
2303
2321
return mountMutableSource ( source , getSnapshot , subscribe ) ;
2304
2322
} ,
2323
+ useSyncExternalStore< T > (
2324
+ subscribe: (() => void ) => ( ) => void ,
2325
+ getSnapshot : ( ) => T ,
2326
+ ) : T {
2327
+ currentHookNameInDev = 'useSyncExternalStore' ;
2328
+ mountHookTypesDev ( ) ;
2329
+ return mountSyncExternalStore ( subscribe , getSnapshot ) ;
2330
+ } ,
2305
2331
useOpaqueIdentifier(): OpaqueIDType | void {
2306
2332
currentHookNameInDev = 'useOpaqueIdentifier' ;
2307
2333
mountHookTypesDev ( ) ;
@@ -2426,6 +2452,14 @@ if (__DEV__) {
2426
2452
updateHookTypesDev ( ) ;
2427
2453
return mountMutableSource ( source , getSnapshot , subscribe ) ;
2428
2454
} ,
2455
+ useSyncExternalStore< T > (
2456
+ subscribe: (() => void ) => ( ) => void ,
2457
+ getSnapshot : ( ) => T ,
2458
+ ) : T {
2459
+ currentHookNameInDev = 'useSyncExternalStore' ;
2460
+ updateHookTypesDev ( ) ;
2461
+ return mountSyncExternalStore ( subscribe , getSnapshot ) ;
2462
+ } ,
2429
2463
useOpaqueIdentifier(): OpaqueIDType | void {
2430
2464
currentHookNameInDev = 'useOpaqueIdentifier' ;
2431
2465
updateHookTypesDev ( ) ;
@@ -2550,6 +2584,14 @@ if (__DEV__) {
2550
2584
updateHookTypesDev ( ) ;
2551
2585
return updateMutableSource ( source , getSnapshot , subscribe ) ;
2552
2586
} ,
2587
+ useSyncExternalStore< T > (
2588
+ subscribe: (() => void ) => ( ) => void ,
2589
+ getSnapshot : ( ) => T ,
2590
+ ) : T {
2591
+ currentHookNameInDev = 'useSyncExternalStore' ;
2592
+ updateHookTypesDev ( ) ;
2593
+ return updateSyncExternalStore ( subscribe , getSnapshot ) ;
2594
+ } ,
2553
2595
useOpaqueIdentifier(): OpaqueIDType | void {
2554
2596
currentHookNameInDev = 'useOpaqueIdentifier' ;
2555
2597
updateHookTypesDev ( ) ;
@@ -2675,6 +2717,14 @@ if (__DEV__) {
2675
2717
updateHookTypesDev ( ) ;
2676
2718
return updateMutableSource ( source , getSnapshot , subscribe ) ;
2677
2719
} ,
2720
+ useSyncExternalStore< T > (
2721
+ subscribe: (() => void ) => ( ) => void ,
2722
+ getSnapshot : ( ) => T ,
2723
+ ) : T {
2724
+ currentHookNameInDev = 'useSyncExternalStore' ;
2725
+ updateHookTypesDev ( ) ;
2726
+ return updateSyncExternalStore ( subscribe , getSnapshot ) ;
2727
+ } ,
2678
2728
useOpaqueIdentifier(): OpaqueIDType | void {
2679
2729
currentHookNameInDev = 'useOpaqueIdentifier' ;
2680
2730
updateHookTypesDev ( ) ;
@@ -2813,6 +2863,15 @@ if (__DEV__) {
2813
2863
mountHookTypesDev ( ) ;
2814
2864
return mountMutableSource ( source , getSnapshot , subscribe ) ;
2815
2865
} ,
2866
+ useSyncExternalStore< T > (
2867
+ subscribe: (() => void ) => ( ) => void ,
2868
+ getSnapshot : ( ) => T ,
2869
+ ) : T {
2870
+ currentHookNameInDev = 'useSyncExternalStore' ;
2871
+ warnInvalidHookAccess ( ) ;
2872
+ mountHookTypesDev ( ) ;
2873
+ return mountSyncExternalStore ( subscribe , getSnapshot ) ;
2874
+ } ,
2816
2875
useOpaqueIdentifier(): OpaqueIDType | void {
2817
2876
currentHookNameInDev = 'useOpaqueIdentifier' ;
2818
2877
warnInvalidHookAccess ( ) ;
@@ -2952,6 +3011,15 @@ if (__DEV__) {
2952
3011
updateHookTypesDev ( ) ;
2953
3012
return updateMutableSource ( source , getSnapshot , subscribe ) ;
2954
3013
} ,
3014
+ useSyncExternalStore< T > (
3015
+ subscribe: (() => void ) => ( ) => void ,
3016
+ getSnapshot : ( ) => T ,
3017
+ ) : T {
3018
+ currentHookNameInDev = 'useSyncExternalStore' ;
3019
+ warnInvalidHookAccess ( ) ;
3020
+ updateHookTypesDev ( ) ;
3021
+ return updateSyncExternalStore ( subscribe , getSnapshot ) ;
3022
+ } ,
2955
3023
useOpaqueIdentifier(): OpaqueIDType | void {
2956
3024
currentHookNameInDev = 'useOpaqueIdentifier' ;
2957
3025
warnInvalidHookAccess ( ) ;
@@ -3092,6 +3160,15 @@ if (__DEV__) {
3092
3160
updateHookTypesDev ( ) ;
3093
3161
return updateMutableSource ( source , getSnapshot , subscribe ) ;
3094
3162
} ,
3163
+ useSyncExternalStore< T > (
3164
+ subscribe: (() => void ) => ( ) => void ,
3165
+ getSnapshot : ( ) => T ,
3166
+ ) : T {
3167
+ currentHookNameInDev = 'useSyncExternalStore' ;
3168
+ warnInvalidHookAccess ( ) ;
3169
+ updateHookTypesDev ( ) ;
3170
+ return updateSyncExternalStore ( subscribe , getSnapshot ) ;
3171
+ } ,
3095
3172
useOpaqueIdentifier(): OpaqueIDType | void {
3096
3173
currentHookNameInDev = 'useOpaqueIdentifier' ;
3097
3174
warnInvalidHookAccess ( ) ;
0 commit comments