bippy 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +223 -463
  3. package/dist/core.cjs +1 -1
  4. package/dist/core.js +1 -1
  5. package/dist/errors.d.cts +410 -0
  6. package/dist/errors.d.ts +410 -0
  7. package/dist/index.cjs +1 -1
  8. package/dist/index.d.cts +153 -3
  9. package/dist/index.d.ts +153 -3
  10. package/dist/index.js +1 -1
  11. package/dist/install-hook-only.cjs +1 -1
  12. package/dist/install-hook-only.d.cts +9 -1
  13. package/dist/install-hook-only.d.ts +9 -1
  14. package/dist/install-hook-only.js +1 -1
  15. package/dist/rdt-hook.cjs +1 -1
  16. package/dist/rdt-hook.js +1 -1
  17. package/dist/source.cjs +14 -5
  18. package/dist/source.d.cts +86 -69
  19. package/dist/source.d.ts +86 -69
  20. package/dist/source.js +14 -5
  21. package/package.json +26 -27
  22. package/src/core.ts +353 -685
  23. package/src/errors.ts +34 -0
  24. package/src/index.ts +1 -0
  25. package/src/install-hook-only.ts +2 -2
  26. package/src/rdt-hook.ts +160 -161
  27. package/src/react-internals/generated/react-work-tags.ts +318 -0
  28. package/src/react-internals/index.ts +67 -0
  29. package/src/react-internals/semver.ts +80 -0
  30. package/src/react-internals/types.ts +186 -0
  31. package/src/react.ts +76 -0
  32. package/src/source/constants.ts +1 -1
  33. package/src/source/error-stack.ts +11 -0
  34. package/src/source/get-display-name-from-source.ts +44 -40
  35. package/src/source/get-source.ts +43 -26
  36. package/src/source/index.ts +11 -1
  37. package/src/source/inspect-hooks.ts +220 -207
  38. package/src/source/owner-stack.ts +119 -174
  39. package/src/source/parse-debug-stack.ts +4 -4
  40. package/src/source/parse-hook-names.ts +14 -53
  41. package/src/source/parse-stack.ts +14 -31
  42. package/src/source/renderer-dispatchers.ts +30 -0
  43. package/src/source/symbolication.ts +709 -120
  44. package/dist/core.d.cts +0 -214
  45. package/dist/core.d.ts +0 -214
  46. package/dist/core2.d.cts +0 -3
  47. package/dist/core2.d.ts +0 -3
  48. package/dist/get-source.cjs +0 -19
  49. package/dist/get-source.js +0 -19
  50. package/dist/index.iife.js +0 -9
  51. package/dist/install-hook-only.iife.js +0 -9
  52. package/dist/react-refresh.cjs +0 -9
  53. package/dist/react-refresh.d.cts +0 -66
  54. package/dist/react-refresh.d.ts +0 -66
  55. package/dist/react-refresh.js +0 -9
  56. package/dist/unsubscribe.d.cts +0 -298
  57. package/dist/unsubscribe.d.ts +0 -298
  58. package/src/react-refresh/constants.ts +0 -9
  59. package/src/react-refresh/detect-hmr-transport.ts +0 -33
  60. package/src/react-refresh/index.ts +0 -173
  61. package/src/react-refresh/metro-hmr-transport.ts +0 -188
  62. package/src/react-refresh/next-webpack-hmr-transport.ts +0 -72
  63. package/src/react-refresh/normalize-hmr-file-path.ts +0 -24
  64. package/src/react-refresh/types.ts +0 -7
  65. package/src/react-refresh/vite-hmr-transport.ts +0 -116
  66. package/src/types.ts +0 -438
  67. package/src/unsubscribe.ts +0 -17
@@ -0,0 +1,410 @@
1
+ /**
2
+ * @license bippy
3
+ *
4
+ * Copyright (c) Aiden Bai
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ import { ReactNode } from "react";
10
+ import ReactReconciler from "react-reconciler";
11
+ //#region src/react-internals/generated/react-work-tags.d.ts
12
+ declare const ReactBuildType: {
13
+ readonly Development: 1;
14
+ readonly Production: 0;
15
+ };
16
+ declare const ReactFiberFlags: {
17
+ readonly ChildDeletion: 16;
18
+ readonly Cloned: 8;
19
+ readonly ContentReset: 32;
20
+ readonly Hydrating: 4096;
21
+ readonly PerformedWork: 1;
22
+ readonly Placement: 2;
23
+ readonly Snapshot: 1024;
24
+ readonly Update: 4;
25
+ readonly Visibility: 8192;
26
+ };
27
+ declare const ReactSymbols: {
28
+ readonly CONCURRENT_MODE_NUMBER: 60111;
29
+ readonly CONCURRENT_MODE_SYMBOL_DESCRIPTION: "react.concurrent_mode";
30
+ readonly CONCURRENT_MODE_SYMBOL_STRING: "Symbol(react.concurrent_mode)";
31
+ readonly DEPRECATED_ASYNC_MODE_SYMBOL_DESCRIPTION: "react.async_mode";
32
+ readonly DEPRECATED_ASYNC_MODE_SYMBOL_STRING: "Symbol(react.async_mode)";
33
+ readonly ELEMENT_SYMBOL_STRING: "Symbol(react.transitional.element)";
34
+ readonly LEGACY_ELEMENT_SYMBOL_STRING: "Symbol(react.element)";
35
+ };
36
+ interface ReactWorkTagMap {
37
+ ActivityComponent: number;
38
+ CacheComponent: number;
39
+ ClassComponent: number;
40
+ ContextConsumer: number;
41
+ ContextProvider: number;
42
+ CoroutineComponent: number;
43
+ CoroutineHandlerPhase: number;
44
+ DehydratedSuspenseComponent: number;
45
+ ForwardRef: number;
46
+ Fragment: number;
47
+ FunctionComponent: number;
48
+ HostComponent: number;
49
+ HostHoistable: number;
50
+ HostPortal: number;
51
+ HostRoot: number;
52
+ HostSingleton: number;
53
+ HostText: number;
54
+ IncompleteClassComponent: number;
55
+ IncompleteFunctionComponent: number;
56
+ IndeterminateComponent: number;
57
+ LazyComponent: number;
58
+ LegacyHiddenComponent: number;
59
+ MemoComponent: number;
60
+ Mode: number;
61
+ OffscreenComponent: number;
62
+ Profiler: number;
63
+ ScopeComponent: number;
64
+ SimpleMemoComponent: number;
65
+ SuspenseComponent: number;
66
+ SuspenseListComponent: number;
67
+ Throw: number;
68
+ TracingMarkerComponent: number;
69
+ ViewTransitionComponent: number;
70
+ YieldComponent: number;
71
+ }
72
+ declare const reactWorkTagsByVersion: {
73
+ readonly "16.0.0": {
74
+ readonly ActivityComponent: -1;
75
+ readonly CacheComponent: -1;
76
+ readonly ClassComponent: 2;
77
+ readonly ContextConsumer: 12;
78
+ readonly ContextProvider: 13;
79
+ readonly CoroutineComponent: 7;
80
+ readonly CoroutineHandlerPhase: 8;
81
+ readonly DehydratedSuspenseComponent: -1;
82
+ readonly ForwardRef: 14;
83
+ readonly Fragment: 10;
84
+ readonly FunctionComponent: 1;
85
+ readonly HostComponent: 5;
86
+ readonly HostHoistable: -1;
87
+ readonly HostPortal: 4;
88
+ readonly HostRoot: 3;
89
+ readonly HostSingleton: -1;
90
+ readonly HostText: 6;
91
+ readonly IncompleteClassComponent: -1;
92
+ readonly IncompleteFunctionComponent: -1;
93
+ readonly IndeterminateComponent: 0;
94
+ readonly LazyComponent: -1;
95
+ readonly LegacyHiddenComponent: -1;
96
+ readonly MemoComponent: -1;
97
+ readonly Mode: 11;
98
+ readonly OffscreenComponent: -1;
99
+ readonly Profiler: 15;
100
+ readonly ScopeComponent: -1;
101
+ readonly SimpleMemoComponent: -1;
102
+ readonly SuspenseComponent: 16;
103
+ readonly SuspenseListComponent: -1;
104
+ readonly Throw: -1;
105
+ readonly TracingMarkerComponent: -1;
106
+ readonly ViewTransitionComponent: -1;
107
+ readonly YieldComponent: 9;
108
+ };
109
+ readonly "16.4.3-alpha": {
110
+ readonly ActivityComponent: -1;
111
+ readonly CacheComponent: -1;
112
+ readonly ClassComponent: 2;
113
+ readonly ContextConsumer: 11;
114
+ readonly ContextProvider: 12;
115
+ readonly CoroutineComponent: -1;
116
+ readonly CoroutineHandlerPhase: -1;
117
+ readonly DehydratedSuspenseComponent: -1;
118
+ readonly ForwardRef: 13;
119
+ readonly Fragment: 9;
120
+ readonly FunctionComponent: 0;
121
+ readonly HostComponent: 7;
122
+ readonly HostHoistable: -1;
123
+ readonly HostPortal: 6;
124
+ readonly HostRoot: 5;
125
+ readonly HostSingleton: -1;
126
+ readonly HostText: 8;
127
+ readonly IncompleteClassComponent: -1;
128
+ readonly IncompleteFunctionComponent: -1;
129
+ readonly IndeterminateComponent: 4;
130
+ readonly LazyComponent: -1;
131
+ readonly LegacyHiddenComponent: -1;
132
+ readonly MemoComponent: -1;
133
+ readonly Mode: 10;
134
+ readonly OffscreenComponent: -1;
135
+ readonly Profiler: 15;
136
+ readonly ScopeComponent: -1;
137
+ readonly SimpleMemoComponent: -1;
138
+ readonly SuspenseComponent: 16;
139
+ readonly SuspenseListComponent: -1;
140
+ readonly Throw: -1;
141
+ readonly TracingMarkerComponent: -1;
142
+ readonly ViewTransitionComponent: -1;
143
+ readonly YieldComponent: -1;
144
+ };
145
+ readonly "16.6.0-beta.0": {
146
+ readonly ActivityComponent: -1;
147
+ readonly CacheComponent: -1;
148
+ readonly ClassComponent: 1;
149
+ readonly ContextConsumer: 9;
150
+ readonly ContextProvider: 10;
151
+ readonly CoroutineComponent: -1;
152
+ readonly CoroutineHandlerPhase: -1;
153
+ readonly DehydratedSuspenseComponent: 18;
154
+ readonly ForwardRef: 11;
155
+ readonly Fragment: 7;
156
+ readonly FunctionComponent: 0;
157
+ readonly HostComponent: 5;
158
+ readonly HostHoistable: -1;
159
+ readonly HostPortal: 4;
160
+ readonly HostRoot: 3;
161
+ readonly HostSingleton: -1;
162
+ readonly HostText: 6;
163
+ readonly IncompleteClassComponent: 17;
164
+ readonly IncompleteFunctionComponent: -1;
165
+ readonly IndeterminateComponent: 2;
166
+ readonly LazyComponent: 16;
167
+ readonly LegacyHiddenComponent: -1;
168
+ readonly MemoComponent: 14;
169
+ readonly Mode: 8;
170
+ readonly OffscreenComponent: -1;
171
+ readonly Profiler: 12;
172
+ readonly ScopeComponent: -1;
173
+ readonly SimpleMemoComponent: 15;
174
+ readonly SuspenseComponent: 13;
175
+ readonly SuspenseListComponent: 19;
176
+ readonly Throw: -1;
177
+ readonly TracingMarkerComponent: -1;
178
+ readonly ViewTransitionComponent: -1;
179
+ readonly YieldComponent: -1;
180
+ };
181
+ readonly "17.0.0-alpha": {
182
+ readonly ActivityComponent: -1;
183
+ readonly CacheComponent: -1;
184
+ readonly ClassComponent: 1;
185
+ readonly ContextConsumer: 9;
186
+ readonly ContextProvider: 10;
187
+ readonly CoroutineComponent: -1;
188
+ readonly CoroutineHandlerPhase: -1;
189
+ readonly DehydratedSuspenseComponent: 18;
190
+ readonly ForwardRef: 11;
191
+ readonly Fragment: 7;
192
+ readonly FunctionComponent: 0;
193
+ readonly HostComponent: 5;
194
+ readonly HostHoistable: -1;
195
+ readonly HostPortal: 4;
196
+ readonly HostRoot: 3;
197
+ readonly HostSingleton: -1;
198
+ readonly HostText: 6;
199
+ readonly IncompleteClassComponent: 17;
200
+ readonly IncompleteFunctionComponent: -1;
201
+ readonly IndeterminateComponent: 2;
202
+ readonly LazyComponent: 16;
203
+ readonly LegacyHiddenComponent: 24;
204
+ readonly MemoComponent: 14;
205
+ readonly Mode: 8;
206
+ readonly OffscreenComponent: 23;
207
+ readonly Profiler: 12;
208
+ readonly ScopeComponent: 21;
209
+ readonly SimpleMemoComponent: 15;
210
+ readonly SuspenseComponent: 13;
211
+ readonly SuspenseListComponent: 19;
212
+ readonly Throw: -1;
213
+ readonly TracingMarkerComponent: -1;
214
+ readonly ViewTransitionComponent: -1;
215
+ readonly YieldComponent: -1;
216
+ };
217
+ readonly "17.0.2": {
218
+ readonly ActivityComponent: 31;
219
+ readonly CacheComponent: 24;
220
+ readonly ClassComponent: 1;
221
+ readonly ContextConsumer: 9;
222
+ readonly ContextProvider: 10;
223
+ readonly CoroutineComponent: -1;
224
+ readonly CoroutineHandlerPhase: -1;
225
+ readonly DehydratedSuspenseComponent: 18;
226
+ readonly ForwardRef: 11;
227
+ readonly Fragment: 7;
228
+ readonly FunctionComponent: 0;
229
+ readonly HostComponent: 5;
230
+ readonly HostHoistable: 26;
231
+ readonly HostPortal: 4;
232
+ readonly HostRoot: 3;
233
+ readonly HostSingleton: 27;
234
+ readonly HostText: 6;
235
+ readonly IncompleteClassComponent: 17;
236
+ readonly IncompleteFunctionComponent: 28;
237
+ readonly IndeterminateComponent: 2;
238
+ readonly LazyComponent: 16;
239
+ readonly LegacyHiddenComponent: 23;
240
+ readonly MemoComponent: 14;
241
+ readonly Mode: 8;
242
+ readonly OffscreenComponent: 22;
243
+ readonly Profiler: 12;
244
+ readonly ScopeComponent: 21;
245
+ readonly SimpleMemoComponent: 15;
246
+ readonly SuspenseComponent: 13;
247
+ readonly SuspenseListComponent: 19;
248
+ readonly Throw: 29;
249
+ readonly TracingMarkerComponent: 25;
250
+ readonly ViewTransitionComponent: 30;
251
+ readonly YieldComponent: -1;
252
+ };
253
+ };
254
+ type ReactWorkTagVersion = keyof typeof reactWorkTagsByVersion;
255
+ interface GetReactWorkTags {
256
+ (): Readonly<ReactWorkTagMap>;
257
+ <Version extends ReactWorkTagVersion>(reactVersion: Version): Readonly<(typeof reactWorkTagsByVersion)[Version]>;
258
+ (reactVersion: string): Readonly<ReactWorkTagMap>;
259
+ }
260
+ type ReactWorkTag = Exclude<(typeof reactWorkTagsByVersion)[ReactWorkTagVersion][keyof ReactWorkTagMap], -1>;
261
+ type HostWorkTag = Exclude<(typeof reactWorkTagsByVersion)[ReactWorkTagVersion]["HostComponent"] | (typeof reactWorkTagsByVersion)[ReactWorkTagVersion]["HostHoistable"] | (typeof reactWorkTagsByVersion)[ReactWorkTagVersion]["HostSingleton"] | (typeof reactWorkTagsByVersion)[ReactWorkTagVersion]["HostText"], -1>;
262
+ declare const getReactWorkTags: GetReactWorkTags;
263
+ //#endregion
264
+ //#region src/react-internals/types.d.ts
265
+ type WorkTag = ReactReconciler.WorkTag | ReactWorkTag;
266
+ interface Source extends ReactReconciler.Source {}
267
+ interface ReactContext<T> extends ReactReconciler.ReactContext<T> {}
268
+ interface ContextDependency<T> extends Omit<ReactReconciler.ContextDependency<T>, "observedBits"> {
269
+ memoizedValue?: T;
270
+ observedBits?: number;
271
+ }
272
+ interface DebugThenableState {
273
+ thenables?: unknown[];
274
+ }
275
+ interface Dependencies extends Omit<ReactReconciler.Dependencies, "firstContext"> {
276
+ _debugThenableState?: DebugThenableState | unknown[];
277
+ firstContext: ContextDependency<unknown> | null;
278
+ }
279
+ interface ServerComponentInfo {
280
+ name?: string;
281
+ env?: string;
282
+ owner?: Fiber | ServerComponentInfo | null;
283
+ debugStack?: Error | null;
284
+ }
285
+ interface ReactDebugInfo {
286
+ debugLocation?: unknown;
287
+ env?: string;
288
+ name?: string;
289
+ }
290
+ interface ReactMemoCache {
291
+ data: unknown[][];
292
+ index: number;
293
+ }
294
+ interface FiberDebugSource extends Source {
295
+ columnNumber?: number;
296
+ }
297
+ interface FiberUpdateQueue {
298
+ [key: string]: unknown;
299
+ memoCache?: ReactMemoCache;
300
+ }
301
+ interface Fiber<T = unknown> extends Omit<ReactReconciler.Fiber, "alternate" | "_debugOwner" | "_debugSource" | "child" | "deletions" | "dependencies" | "memoizedProps" | "memoizedState" | "pendingProps" | "return" | "sibling" | "stateNode" | "tag" | "updateQueue"> {
302
+ _debugInfo?: ReactDebugInfo[];
303
+ _debugOwner?: Fiber | ServerComponentInfo | null;
304
+ _debugSource?: FiberDebugSource | null;
305
+ _debugStack?: Error & {
306
+ stack: string;
307
+ };
308
+ alternate: Fiber | null;
309
+ child: Fiber | null;
310
+ deletions: Fiber[] | null;
311
+ dependencies: Dependencies | null;
312
+ effectTag?: number;
313
+ memoizedProps: Props;
314
+ memoizedState: MemoizedState | null;
315
+ pendingProps: Props;
316
+ return: Fiber | null;
317
+ sibling: Fiber | null;
318
+ stateNode: T;
319
+ tag: WorkTag;
320
+ updateQueue: FiberUpdateQueue | null;
321
+ }
322
+ interface HostFiber<T = unknown> extends Fiber<T> {
323
+ tag: HostWorkTag;
324
+ }
325
+ interface FiberRoot {
326
+ current: Fiber;
327
+ }
328
+ interface MemoizedState {
329
+ [key: string]: unknown;
330
+ memoizedState: unknown;
331
+ next: MemoizedState | null;
332
+ }
333
+ interface Props {
334
+ [key: string]: unknown;
335
+ }
336
+ interface ReactDevToolsEventHandler {
337
+ (data: unknown): void;
338
+ }
339
+ interface ReactDevToolsGlobalHook {
340
+ _instrumentationIsActive?: boolean;
341
+ _instrumentationSource?: string;
342
+ checkDCE: (fn: unknown) => void;
343
+ emit?: (event: string, data?: unknown) => void;
344
+ getFiberRoots?: (rendererID: number) => Set<FiberRoot>;
345
+ hasUnsupportedRendererAttached: boolean;
346
+ inject: (renderer: ReactRenderer) => number;
347
+ off?: (event: string, handler: ReactDevToolsEventHandler) => void;
348
+ on: (event: string, handler: ReactDevToolsEventHandler) => void;
349
+ onCommitFiberRoot: (rendererID: number, root: FiberRoot, priority: number | void, didError?: boolean) => void;
350
+ onCommitFiberUnmount: (rendererID: number, fiber: Fiber) => void;
351
+ onPostCommitFiberRoot: (rendererID: number, root: FiberRoot) => void;
352
+ onScheduleFiberRoot?: (rendererID: number, root: FiberRoot, children: ReactNode) => void;
353
+ renderers: Map<number, ReactRenderer>;
354
+ sub?: (event: string, handler: ReactDevToolsEventHandler) => () => void;
355
+ supportsFiber: boolean;
356
+ supportsFlight: boolean;
357
+ }
358
+ interface LegacyDispatcherRef {
359
+ current: unknown;
360
+ }
361
+ interface CurrentDispatcherRef {
362
+ H: unknown;
363
+ }
364
+ type RendererDispatcherRef = CurrentDispatcherRef | LegacyDispatcherRef;
365
+ interface ReactRenderer extends Omit<ReactReconciler.DevToolsConfig<unknown, unknown, unknown>, "findFiberByHostInstance"> {
366
+ currentDispatcherRef?: RendererDispatcherRef | null;
367
+ findFiberByHostInstance?: (hostInstance: unknown) => Fiber | null;
368
+ getCurrentFiber?: () => Fiber | null;
369
+ overrideContext?: (fiber: Fiber, contextType: unknown, path: string[], value: unknown) => void;
370
+ overrideHookState?: (fiber: Fiber, id: number, path: string[], value: unknown) => void;
371
+ overrideHookStateDeletePath?: (fiber: Fiber, id: number, path: Array<number | string>) => void;
372
+ overrideHookStateRenamePath?: (fiber: Fiber, id: number, oldPath: Array<number | string>, newPath: Array<number | string>) => void;
373
+ overrideProps?: (fiber: Fiber, path: string[], value: unknown) => void;
374
+ overridePropsDeletePath?: (fiber: Fiber, path: Array<number | string>) => void;
375
+ overridePropsRenamePath?: (fiber: Fiber, oldPath: Array<number | string>, newPath: Array<number | string>) => void;
376
+ reconcilerVersion?: string;
377
+ scheduleRetry?: (fiber: Fiber) => void;
378
+ scheduleRoot?: (root: FiberRoot, element: React.ReactNode) => void;
379
+ scheduleUpdate?: (fiber: Fiber) => void;
380
+ setErrorHandler?: (newShouldErrorImpl: (fiber: Fiber) => boolean | null) => void;
381
+ setSuspenseHandler?: (newShouldSuspendImpl: (fiber: Fiber) => boolean) => void;
382
+ }
383
+ declare global {
384
+ var __REACT_DEVTOOLS_GLOBAL_HOOK__: ReactDevToolsGlobalHook | undefined;
385
+ }
386
+ //#endregion
387
+ //#region src/react-internals/index.d.ts
388
+ declare const getReactWorkTagsForRenderer: (renderer?: ReactRenderer | null) => Readonly<ReactWorkTagMap>;
389
+ declare const setReactWorkTagsForFiber: (fiber: Fiber, renderer?: ReactRenderer) => void;
390
+ declare const getReactWorkTagsForFiber: (fiber: Fiber) => Readonly<ReactWorkTagMap>;
391
+ declare const MutationMask: number;
392
+ //#endregion
393
+ //#region src/errors.d.ts
394
+ declare class BippyError extends Error {
395
+ constructor(message: string, cause?: unknown);
396
+ }
397
+ declare class BippyHookInspectionError extends BippyError {
398
+ constructor(message: string, cause?: unknown);
399
+ }
400
+ declare class BippyUnsupportedHookError extends BippyHookInspectionError {
401
+ constructor(message: string, cause?: unknown);
402
+ }
403
+ declare class BippyHookRenderError extends BippyHookInspectionError {
404
+ constructor(message: string, cause?: unknown);
405
+ }
406
+ declare class BippySourceMapError extends BippyError {
407
+ constructor(message: string, cause?: unknown);
408
+ }
409
+ //#endregion
410
+ export { Source as A, ReactDebugInfo as C, ReactRenderer as D, ReactMemoCache as E, ReactSymbols as F, ReactWorkTag as I, ReactWorkTagMap as L, HostWorkTag as M, ReactBuildType as N, RendererDispatcherRef as O, ReactFiberFlags as P, ReactWorkTagVersion as R, ReactContext as S, ReactDevToolsGlobalHook as T, FiberUpdateQueue as _, BippyUnsupportedHookError as a, MemoizedState as b, getReactWorkTagsForRenderer as c, CurrentDispatcherRef as d, DebugThenableState as f, FiberRoot as g, FiberDebugSource as h, BippySourceMapError as i, WorkTag as j, ServerComponentInfo as k, setReactWorkTagsForFiber as l, Fiber as m, BippyHookInspectionError as n, MutationMask as o, Dependencies as p, BippyHookRenderError as r, getReactWorkTagsForFiber as s, BippyError as t, ContextDependency as u, HostFiber as v, ReactDevToolsEventHandler as w, Props as x, LegacyDispatcherRef as y, getReactWorkTags as z };
package/dist/index.cjs CHANGED
@@ -6,4 +6,4 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./rdt-hook.cjs`);require(`./install-hook-only.cjs`);const t=require(`./core.cjs`);exports.ActivityComponentTag=t.ActivityComponentTag,exports.BIPPY_INSTRUMENTATION_STRING=e.t,exports.CONCURRENT_MODE_NUMBER=t.CONCURRENT_MODE_NUMBER,exports.CONCURRENT_MODE_SYMBOL_DESCRIPTION=t.CONCURRENT_MODE_SYMBOL_DESCRIPTION,exports.CONCURRENT_MODE_SYMBOL_STRING=t.CONCURRENT_MODE_SYMBOL_STRING,exports.ClassComponentTag=t.ClassComponentTag,exports.ContextConsumerTag=t.ContextConsumerTag,exports.DEPRECATED_ASYNC_MODE_SYMBOL_DESCRIPTION=t.DEPRECATED_ASYNC_MODE_SYMBOL_DESCRIPTION,exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING=t.DEPRECATED_ASYNC_MODE_SYMBOL_STRING,exports.DehydratedSuspenseComponentTag=t.DehydratedSuspenseComponentTag,exports.ELEMENT_TYPE_SYMBOL_STRING=t.ELEMENT_TYPE_SYMBOL_STRING,exports.ForwardRefTag=t.ForwardRefTag,exports.FragmentTag=t.FragmentTag,exports.FunctionComponentTag=t.FunctionComponentTag,exports.HostComponentTag=t.HostComponentTag,exports.HostHoistableTag=t.HostHoistableTag,exports.HostPortalTag=t.HostPortalTag,exports.HostRootTag=t.HostRootTag,exports.HostSingletonTag=t.HostSingletonTag,exports.HostTextTag=t.HostTextTag,exports.LazyComponentTag=t.LazyComponentTag,exports.LegacyHiddenComponentTag=t.LegacyHiddenComponentTag,exports.MemoComponentTag=t.MemoComponentTag,exports.OffscreenComponentTag=t.OffscreenComponentTag,exports.SimpleMemoComponentTag=t.SimpleMemoComponentTag,exports.SuspenseComponentTag=t.SuspenseComponentTag,exports.SuspenseListComponentTag=t.SuspenseListComponentTag,exports.TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING=t.TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING,exports.ViewTransitionComponentTag=t.ViewTransitionComponentTag,exports._fiberRoots=t._fiberRoots,exports._onActiveListeners=e.n,exports._renderers=e.r,exports.detectReactBuildType=t.detectReactBuildType,exports.didFiberCommit=t.didFiberCommit,exports.didFiberRender=t.didFiberRender,exports.getDisplayName=t.getDisplayName,exports.getFiberFromHostInstance=t.getFiberFromHostInstance,exports.getFiberId=t.getFiberId,exports.getFiberStack=t.getFiberStack,exports.getLatestFiber=t.getLatestFiber,exports.getMutatedHostFibers=t.getMutatedHostFibers,exports.getNearestHostFiber=t.getNearestHostFiber,exports.getNearestHostFibers=t.getNearestHostFibers,exports.getRDTHook=e.i,exports.getTimings=t.getTimings,exports.getType=t.getType,exports.hasMemoCache=t.hasMemoCache,exports.hasRDTHook=e.a,exports.installRDTHook=e.o,exports.instrument=t.instrument,exports.isClientEnvironment=e.s,exports.isCompositeFiber=t.isCompositeFiber,exports.isFiber=t.isFiber,exports.isHostFiber=t.isHostFiber,exports.isInstrumentationActive=t.isInstrumentationActive,exports.isReactRefresh=e.c,exports.isRealReactDevtools=e.l,exports.isValidElement=t.isValidElement,exports.isValidFiber=t.isValidFiber,exports.onRendererInject=e.u,exports.overrideContext=t.overrideContext,exports.overrideHookState=t.overrideHookState,exports.overrideProps=t.overrideProps,exports.patchRDTHook=e.d,exports.safelyInstallRDTHook=e.f,exports.setFiberId=t.setFiberId,exports.toUnsubscribe=e.m,exports.traverseContexts=t.traverseContexts,exports.traverseFiber=t.traverseFiber,exports.traverseProps=t.traverseProps,exports.traverseRenderedFibers=t.traverseRenderedFibers,exports.traverseState=t.traverseState,exports.version=e.p;
9
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));const c=require("./rdt-hook.cjs");require("./install-hook-only.cjs");const l=require("./core.cjs");let u=require("react");u=s(u,1);const d=e=>e,f=()=>void 0,p=()=>{},m=()=>p,h=Reflect.get(u,`useSyncExternalStore`),g=e=>{let t=Function.prototype.bind,n=null,r=new Proxy(t,{apply:(e,t,r)=>{let i=r[1];return!n&&l.h(i)&&(n=i),Reflect.apply(e,t,r)}});Reflect.set(Function.prototype,`bind`,r);try{e()}finally{Function.prototype.bind===r&&Reflect.set(Function.prototype,`bind`,t)}return n},_=()=>{Reflect.apply(h,u,[m,f,f])},v=()=>{u.useReducer(d,void 0)},y=typeof h==`function`?()=>g(_)??void 0:()=>{let e=u.useRef(null),t=u.useRef(null),n=g(v)??(t.current===e.current?e.current?.alternate:t.current)??e.current;return t.current=n,u.useEffect(()=>{e.current=n},[n]),n??void 0};exports.BIPPY_INSTRUMENTATION_STRING=c.t,exports.BippyError=l.S,exports.BippyHookInspectionError=l.C,exports.BippyHookRenderError=l.w,exports.BippySourceMapError=l.T,exports.BippyUnsupportedHookError=l.E,exports.MutationMask=l.D,exports.ReactBuildType=l.j,exports.ReactFiberFlags=l.M,exports.ReactSymbols=l.N,exports._fiberRoots=l.t,exports._onActiveListeners=c.n,exports._renderers=c.r,exports.compareSemver=l.F,exports.detectReactBuildType=l.n,exports.didFiberCommit=l.r,exports.didFiberRender=l.i,exports.getDisplayName=l.a,exports.getFiber=l.o,exports.getFiberFromHostInstance=l.s,exports.getFiberId=l.c,exports.getLatestFiber=l.l,exports.getRDTHook=c.a,exports.getReactWorkTags=l.P,exports.getReactWorkTagsForFiber=l.O,exports.getReactWorkTagsForRenderer=l.k,exports.getRenderer=l.u,exports.getType=l.d,exports.hasMemoCache=l.f,exports.hasRDTHook=c.o,exports.installRDTHook=c.s,exports.instrument=l.p,exports.isCompositeFiber=l.m,exports.isFiber=l.h,exports.isHostFiber=l.g,exports.isInstrumentationActive=l._,exports.isRealReactDevtools=c.c,exports.isValidElement=l.v,exports.onRendererInject=c.u,exports.patchRDTHook=c.d,exports.setFiberId=l.y,exports.setReactWorkTagsForFiber=l.A,exports.traverseFiber=l.b,exports.traverseRenderedFibers=l.x,exports.useFiber=y,exports.version=c.f;
package/dist/index.d.cts CHANGED
@@ -1,3 +1,153 @@
1
- import { A as ReactRenderer, B as TextSelector, C as React$AbstractComponent, D as ReactPortal, E as ReactDevToolsGlobalHook, F as Selector, H as TransitionTracingCallbacks, I as ServerComponentInfo, L as Source, M as RendererRefreshUpdate, N as RoleSelector, O as ReactProvider, P as RootTag, R as SuspenseHydrationCallbacks, S as Props, T as ReactContext, U as TypeOfMode, V as Thenable, W as WorkTag, _ as Lanes, a as ContextDependency, b as OpaqueHandle, c as Effect, d as FiberRoot, f as Flags, g as LanePriority, h as HostConfig, i as ComponentSelector, j as RefObject, k as ReactProviderType, l as Family, m as HookType, n as toUnsubscribe, o as Dependencies, p as HasPseudoClassSelector, r as BundleType, s as DevToolsConfig, t as Unsubscribe, u as Fiber, v as MemoizedState, w as ReactConsumer, x as OpaqueRoot, y as MutableSource, z as TestNameSelector } from "./unsubscribe.cjs";
2
- import { $ as isValidFiber, A as TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING, B as getLatestFiber, C as MemoComponentTag, D as SimpleMemoComponentTag, E as RenderPhase, F as didFiberRender, G as getType, H as getNearestHostFiber, I as getDisplayName, J as isCompositeFiber, K as hasMemoCache, L as getFiberFromHostInstance, M as _fiberRoots, N as detectReactBuildType, O as SuspenseComponentTag, P as didFiberCommit, Q as isValidElement, R as getFiberId, S as LegacyHiddenComponentTag, T as RenderHandler, U as getNearestHostFibers, V as getMutatedHostFibers, W as getTimings, X as isHostFiber, Y as isFiber, Z as isInstrumentationActive, _ as HostRootTag, _t as isRealReactDevtools, a as ClassComponentTag, at as traverseFiber, b as InstrumentationOptions, bt as safelyInstallRDTHook, c as DEPRECATED_ASYNC_MODE_SYMBOL_STRING, ct as traverseState, d as ForwardRefTag, dt as _renderers, et as overrideContext, f as FragmentTag, ft as getRDTHook, g as HostPortalTag, gt as isReactRefresh, h as HostHoistableTag, ht as isClientEnvironment, i as CONCURRENT_MODE_SYMBOL_STRING, it as traverseContexts, j as ViewTransitionComponentTag, k as SuspenseListComponentTag, l as DehydratedSuspenseComponentTag, lt as BIPPY_INSTRUMENTATION_STRING, m as HostComponentTag, mt as installRDTHook, n as CONCURRENT_MODE_NUMBER, nt as overrideProps, o as ContextConsumerTag, ot as traverseProps, p as FunctionComponentTag, pt as hasRDTHook, q as instrument, r as CONCURRENT_MODE_SYMBOL_DESCRIPTION, rt as setFiberId, s as DEPRECATED_ASYNC_MODE_SYMBOL_DESCRIPTION, st as traverseRenderedFibers, t as ActivityComponentTag, tt as overrideHookState, u as ELEMENT_TYPE_SYMBOL_STRING, ut as _onActiveListeners, v as HostSingletonTag, vt as onRendererInject, w as OffscreenComponentTag, x as LazyComponentTag, xt as version, y as HostTextTag, yt as patchRDTHook, z as getFiberStack } from "./core.cjs";
3
- export { ActivityComponentTag, BIPPY_INSTRUMENTATION_STRING, BundleType, CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_DESCRIPTION, CONCURRENT_MODE_SYMBOL_STRING, ClassComponentTag, ComponentSelector, ContextConsumerTag, ContextDependency, DEPRECATED_ASYNC_MODE_SYMBOL_DESCRIPTION, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponentTag, Dependencies, DevToolsConfig, ELEMENT_TYPE_SYMBOL_STRING, Effect, Family, Fiber, FiberRoot, Flags, ForwardRefTag, FragmentTag, FunctionComponentTag, HasPseudoClassSelector, HookType, HostComponentTag, HostConfig, HostHoistableTag, HostPortalTag, HostRootTag, HostSingletonTag, HostTextTag, InstrumentationOptions, LanePriority, Lanes, LazyComponentTag, LegacyHiddenComponentTag, MemoComponentTag, MemoizedState, MutableSource, OffscreenComponentTag, OpaqueHandle, OpaqueRoot, Props, React$AbstractComponent, ReactConsumer, ReactContext, ReactDevToolsGlobalHook, ReactPortal, ReactProvider, ReactProviderType, ReactRenderer, RefObject, RenderHandler, RenderPhase, RendererRefreshUpdate, RoleSelector, RootTag, Selector, ServerComponentInfo, SimpleMemoComponentTag, Source, SuspenseComponentTag, SuspenseHydrationCallbacks, SuspenseListComponentTag, TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING, TestNameSelector, TextSelector, Thenable, TransitionTracingCallbacks, TypeOfMode, Unsubscribe, ViewTransitionComponentTag, WorkTag, _fiberRoots, _onActiveListeners, _renderers, detectReactBuildType, didFiberCommit, didFiberRender, getDisplayName, getFiberFromHostInstance, getFiberId, getFiberStack, getLatestFiber, getMutatedHostFibers, getNearestHostFiber, getNearestHostFibers, getRDTHook, getTimings, getType, hasMemoCache, hasRDTHook, installRDTHook, instrument, isClientEnvironment, isCompositeFiber, isFiber, isHostFiber, isInstrumentationActive, isReactRefresh, isRealReactDevtools, isValidElement, isValidFiber, onRendererInject, overrideContext, overrideHookState, overrideProps, patchRDTHook, safelyInstallRDTHook, setFiberId, toUnsubscribe, traverseContexts, traverseFiber, traverseProps, traverseRenderedFibers, traverseState, version };
1
+ /**
2
+ * @license bippy
3
+ *
4
+ * Copyright (c) Aiden Bai
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ import { A as Source, C as ReactDebugInfo, D as ReactRenderer, E as ReactMemoCache, F as ReactSymbols, I as ReactWorkTag, L as ReactWorkTagMap, M as HostWorkTag, N as ReactBuildType, O as RendererDispatcherRef, P as ReactFiberFlags, R as ReactWorkTagVersion, S as ReactContext, T as ReactDevToolsGlobalHook, _ as FiberUpdateQueue, a as BippyUnsupportedHookError, b as MemoizedState, c as getReactWorkTagsForRenderer, d as CurrentDispatcherRef, f as DebugThenableState, g as FiberRoot, h as FiberDebugSource, i as BippySourceMapError, j as WorkTag, k as ServerComponentInfo, l as setReactWorkTagsForFiber, m as Fiber, n as BippyHookInspectionError, o as MutationMask, p as Dependencies, r as BippyHookRenderError, s as getReactWorkTagsForFiber, t as BippyError, u as ContextDependency, v as HostFiber, w as ReactDevToolsEventHandler, x as Props, y as LegacyDispatcherRef, z as getReactWorkTags } from "./errors.cjs";
10
+ import * as React from "react";
11
+ //#region src/react-internals/semver.d.ts
12
+ declare const compareSemver: (leftVersion: string, rightVersion: string) => -1 | 0 | 1 | null;
13
+ //#endregion
14
+ //#region src/rdt-hook.d.ts
15
+ interface Unsubscribe extends Disposable {
16
+ (): void;
17
+ }
18
+ interface ActiveListener {
19
+ (): unknown;
20
+ }
21
+ interface RendererInjectListener {
22
+ (renderer: ReactRenderer): void;
23
+ }
24
+ declare const version: string | undefined;
25
+ declare const BIPPY_INSTRUMENTATION_STRING: string;
26
+ declare const isRealReactDevtools: (rdtHook?: ReactDevToolsGlobalHook | undefined | null) => boolean;
27
+ declare const _onActiveListeners: Set<ActiveListener>;
28
+ declare const _renderers: Set<ReactRenderer>;
29
+ declare const onRendererInject: (listener: RendererInjectListener) => Unsubscribe;
30
+ declare const installRDTHook: (onActive?: ActiveListener) => ReactDevToolsGlobalHook;
31
+ declare const patchRDTHook: (onActive?: ActiveListener) => void;
32
+ declare const hasRDTHook: () => boolean;
33
+ /**
34
+ * Returns the current React DevTools global hook.
35
+ */
36
+ declare const getRDTHook: (onActive?: ActiveListener) => ReactDevToolsGlobalHook;
37
+ //#endregion
38
+ //#region src/core.d.ts
39
+ interface FiberSelector {
40
+ (node: Fiber): boolean | Promise<boolean | void> | void;
41
+ }
42
+ interface RenderHandler {
43
+ (fiber: Fiber, phase: RenderPhase): unknown;
44
+ }
45
+ /**
46
+ * Returns `true` if object is a React Element.
47
+ *
48
+ * @see https://react.dev/reference/react/isValidElement
49
+ */
50
+ declare const isValidElement: (element: unknown) => element is React.ReactElement;
51
+ /**
52
+ * Returns `true` if object is a React Fiber.
53
+ */
54
+ declare const isFiber: (fiber: unknown) => fiber is Fiber;
55
+ /**
56
+ * Returns `true` if fiber is a host fiber. Host fibers are DOM nodes in react-dom, `View` in react-native, etc.
57
+ *
58
+ * @see https://reactnative.dev/architecture/glossary#host-view-tree-and-host-view
59
+ */
60
+ declare const isHostFiber: (fiber: Fiber) => fiber is HostFiber;
61
+ /**
62
+ * Returns `true` if fiber is a composite fiber. Composite fibers are fibers that can render (like functional components, class components, etc.)
63
+ *
64
+ * @see https://reactnative.dev/architecture/glossary#react-composite-components
65
+ */
66
+ declare const isCompositeFiber: (fiber: Fiber) => boolean;
67
+ /**
68
+ * Returns `true` if the {@link Fiber} has rendered. Note that this does not mean the fiber has rendered in the current commit, just that it has rendered in the past.
69
+ */
70
+ declare const didFiberRender: (fiber: Fiber) => boolean;
71
+ /**
72
+ * Returns `true` if the {@link Fiber} has committed. Note that this does not mean the fiber has committed in the current commit, just that it has committed in the past.
73
+ */
74
+ declare const didFiberCommit: (fiber: Fiber) => boolean;
75
+ /**
76
+ * Traverses up or down a {@link Fiber}, return `true` to stop and select a node.
77
+ */
78
+ declare function traverseFiber(fiber: Fiber | null, selector: (node: Fiber) => boolean | void, ascending?: boolean): Fiber | null;
79
+ declare function traverseFiber(fiber: Fiber | null, selector: (node: Fiber) => Promise<boolean | void>, ascending?: boolean): Promise<Fiber | null>;
80
+ declare function traverseFiber(fiber: Fiber | null, selector: FiberSelector, ascending?: boolean): Fiber | null | Promise<Fiber | null>;
81
+ /**
82
+ * Returns `true` if the {@link Fiber} uses React Compiler's memo cache.
83
+ */
84
+ declare const hasMemoCache: (fiber: Fiber) => boolean;
85
+ /**
86
+ * Returns the type (e.g. component definition) of the {@link Fiber}
87
+ */
88
+ declare const getType: (type: unknown) => null | React.ComponentType<unknown>;
89
+ /**
90
+ * Returns the display name of the {@link Fiber} type.
91
+ */
92
+ declare const getDisplayName: (type: unknown) => null | string;
93
+ /**
94
+ * Returns the build type of the React renderer.
95
+ */
96
+ declare const detectReactBuildType: (renderer: ReactRenderer) => "development" | "production";
97
+ /**
98
+ * Returns `true` if bippy's instrumentation is active.
99
+ */
100
+ declare const isInstrumentationActive: () => boolean;
101
+ declare const _fiberRoots: Set<FiberRoot>;
102
+ /**
103
+ * Returns the latest fiber (since it may be double-buffered).
104
+ */
105
+ declare const getLatestFiber: (fiber: Fiber) => Fiber;
106
+ /**
107
+ * Returns the renderer that owns the {@link Fiber}.
108
+ */
109
+ declare const getRenderer: (fiber: Fiber) => ReactRenderer | null;
110
+ type RenderPhase = "mount" | "unmount" | "update";
111
+ declare const setFiberId: (fiber: Fiber, fiberId?: number) => void;
112
+ declare const getFiberId: (fiber: Fiber) => number;
113
+ /**
114
+ * Creates a fiber visitor function. Must pass a fiber root and a render handler.
115
+ * @example
116
+ * traverseRenderedFibers(root, (fiber, phase) => {
117
+ * console.log(phase)
118
+ * })
119
+ */
120
+ declare const traverseRenderedFibers: (root: Fiber | FiberRoot, onRender: RenderHandler) => void;
121
+ interface InstrumentationOptions {
122
+ name?: string;
123
+ onActive?: () => unknown;
124
+ onCommitFiberRoot?: (rendererID: number, root: FiberRoot, priority: number | void, didError?: boolean) => unknown;
125
+ onCommitFiberUnmount?: (rendererID: number, fiber: Fiber) => unknown;
126
+ onPostCommitFiberRoot?: (rendererID: number, root: FiberRoot) => unknown;
127
+ onScheduleFiberRoot?: (rendererID: number, root: FiberRoot, children: React.ReactNode) => unknown;
128
+ }
129
+ /**
130
+ * Instruments the DevTools hook. Each hook event is patched once and
131
+ * dispatches to a set of listeners, so multiple `instrument` calls compose
132
+ * without stacking patches. Returns an unsubscribe function that removes
133
+ * exactly the handlers this call registered.
134
+ * The unsubscribe function can also be disposed through `using`.
135
+ * @example
136
+ * const unsubscribe = instrument({
137
+ * onActive() {
138
+ * console.log('initialized');
139
+ * },
140
+ * onCommitFiberRoot(rendererID, root) {
141
+ * console.log('fiberRoot', root.current)
142
+ * },
143
+ * });
144
+ * unsubscribe();
145
+ */
146
+ declare const instrument: (options: InstrumentationOptions) => Unsubscribe;
147
+ declare const getFiber: <T>(hostInstance: T) => Fiber | null;
148
+ declare const getFiberFromHostInstance: <T>(hostInstance: T) => Fiber | null;
149
+ //#endregion
150
+ //#region src/react.d.ts
151
+ declare const useFiber: () => Fiber | undefined;
152
+ //#endregion
153
+ export { BIPPY_INSTRUMENTATION_STRING, BippyError, BippyHookInspectionError, BippyHookRenderError, BippySourceMapError, BippyUnsupportedHookError, ContextDependency, CurrentDispatcherRef, DebugThenableState, Dependencies, Fiber, FiberDebugSource, FiberRoot, FiberUpdateQueue, HostFiber, type HostWorkTag, InstrumentationOptions, LegacyDispatcherRef, MemoizedState, MutationMask, Props, ReactBuildType, ReactContext, ReactDebugInfo, ReactDevToolsEventHandler, ReactDevToolsGlobalHook, ReactFiberFlags, ReactMemoCache, ReactRenderer, ReactSymbols, type ReactWorkTag, type ReactWorkTagMap, type ReactWorkTagVersion, RenderHandler, RenderPhase, RendererDispatcherRef, ServerComponentInfo, Source, type Unsubscribe, WorkTag, _fiberRoots, _onActiveListeners, _renderers, compareSemver, detectReactBuildType, didFiberCommit, didFiberRender, getDisplayName, getFiber, getFiberFromHostInstance, getFiberId, getLatestFiber, getRDTHook, getReactWorkTags, getReactWorkTagsForFiber, getReactWorkTagsForRenderer, getRenderer, getType, hasMemoCache, hasRDTHook, installRDTHook, instrument, isCompositeFiber, isFiber, isHostFiber, isInstrumentationActive, isRealReactDevtools, isValidElement, onRendererInject, patchRDTHook, setFiberId, setReactWorkTagsForFiber, traverseFiber, traverseRenderedFibers, useFiber, version };