bippy 0.0.25 → 0.1.1
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.
- package/LICENSE +1 -1
- package/README.md +502 -94
- package/dist/core.cjs +742 -0
- package/dist/core.d.cts +185 -0
- package/dist/core.d.ts +185 -0
- package/dist/core.js +686 -0
- package/dist/index.cjs +374 -174
- package/dist/index.d.cts +9 -133
- package/dist/index.d.ts +9 -133
- package/dist/index.global.js +4 -5
- package/dist/index.js +359 -157
- package/dist/scan/index.cjs +1087 -0
- package/dist/scan/index.d.cts +24 -0
- package/dist/scan/index.d.ts +24 -0
- package/dist/scan/index.global.js +9 -0
- package/dist/scan/index.js +1079 -0
- package/dist/types-CxxtX49h.d.cts +69 -0
- package/dist/types-CxxtX49h.d.ts +69 -0
- package/package.json +91 -80
package/dist/index.js
CHANGED
|
@@ -1,55 +1,146 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license bippy
|
|
3
3
|
*
|
|
4
|
-
* Copyright (c) Aiden Bai.
|
|
4
|
+
* Copyright (c) Aiden Bai, Million Software, Inc.
|
|
5
5
|
*
|
|
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
9
|
|
|
10
|
-
// src/
|
|
11
|
-
var version = "0.0
|
|
10
|
+
// src/rdt-hook.ts
|
|
11
|
+
var version = "0.1.0";
|
|
12
12
|
var BIPPY_INSTRUMENTATION_STRING = `bippy-${version}`;
|
|
13
|
-
var
|
|
13
|
+
var NO_OP = () => {
|
|
14
|
+
};
|
|
15
|
+
var checkDCE = (fn) => {
|
|
16
|
+
try {
|
|
17
|
+
const code = Function.prototype.toString.call(fn);
|
|
18
|
+
if (code.indexOf("^_^") > -1) {
|
|
19
|
+
setTimeout(() => {
|
|
20
|
+
throw new Error(
|
|
21
|
+
"React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build"
|
|
22
|
+
);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
} catch {
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
var installRDTHook = (onActive) => {
|
|
29
|
+
const renderers = /* @__PURE__ */ new Map();
|
|
30
|
+
let i = 0;
|
|
31
|
+
const rdtHook = {
|
|
32
|
+
checkDCE,
|
|
33
|
+
supportsFiber: true,
|
|
34
|
+
supportsFlight: true,
|
|
35
|
+
hasUnsupportedRendererAttached: false,
|
|
36
|
+
renderers,
|
|
37
|
+
onCommitFiberRoot: NO_OP,
|
|
38
|
+
onCommitFiberUnmount: NO_OP,
|
|
39
|
+
onPostCommitFiberRoot: NO_OP,
|
|
40
|
+
inject(renderer) {
|
|
41
|
+
const nextID = ++i;
|
|
42
|
+
renderers.set(nextID, renderer);
|
|
43
|
+
if (!rdtHook._instrumentationIsActive) {
|
|
44
|
+
rdtHook._instrumentationIsActive = true;
|
|
45
|
+
onActive?.();
|
|
46
|
+
}
|
|
47
|
+
return nextID;
|
|
48
|
+
},
|
|
49
|
+
_instrumentationSource: BIPPY_INSTRUMENTATION_STRING,
|
|
50
|
+
_instrumentationIsActive: false
|
|
51
|
+
};
|
|
52
|
+
try {
|
|
53
|
+
Object.defineProperty(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
|
|
54
|
+
value: rdtHook
|
|
55
|
+
});
|
|
56
|
+
} catch {
|
|
57
|
+
}
|
|
58
|
+
return rdtHook;
|
|
59
|
+
};
|
|
60
|
+
var hasRDTHook = () => {
|
|
61
|
+
return Object.prototype.hasOwnProperty.call(
|
|
62
|
+
globalThis,
|
|
63
|
+
"__REACT_DEVTOOLS_GLOBAL_HOOK__"
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
var getRDTHook = (onActive) => {
|
|
67
|
+
let rdtHook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
|
|
68
|
+
if (rdtHook) onActive?.();
|
|
69
|
+
if (!hasRDTHook()) {
|
|
70
|
+
rdtHook = installRDTHook(onActive);
|
|
71
|
+
}
|
|
72
|
+
return rdtHook;
|
|
73
|
+
};
|
|
74
|
+
try {
|
|
75
|
+
if (typeof window !== "undefined" && // @ts-expect-error `document` may not be defined in some enviroments
|
|
76
|
+
(window.document?.createElement || window.navigator?.product === "ReactNative") && typeof process !== "undefined" && process.versions != null && process.versions.node != null) {
|
|
77
|
+
installRDTHook();
|
|
78
|
+
}
|
|
79
|
+
} catch {
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// src/core.ts
|
|
14
83
|
var FunctionComponentTag = 0;
|
|
84
|
+
var ClassComponentTag = 1;
|
|
85
|
+
var HostRootTag = 3;
|
|
86
|
+
var HostComponentTag = 5;
|
|
87
|
+
var HostTextTag = 6;
|
|
88
|
+
var FragmentTag = 7;
|
|
15
89
|
var ContextConsumerTag = 9;
|
|
16
|
-
var SuspenseComponentTag = 13;
|
|
17
|
-
var OffscreenComponentTag = 22;
|
|
18
90
|
var ForwardRefTag = 11;
|
|
91
|
+
var SuspenseComponentTag = 13;
|
|
19
92
|
var MemoComponentTag = 14;
|
|
20
93
|
var SimpleMemoComponentTag = 15;
|
|
21
|
-
var
|
|
94
|
+
var DehydratedSuspenseComponentTag = 18;
|
|
95
|
+
var OffscreenComponentTag = 22;
|
|
96
|
+
var LegacyHiddenComponentTag = 23;
|
|
22
97
|
var HostHoistableTag = 26;
|
|
23
98
|
var HostSingletonTag = 27;
|
|
24
|
-
var DehydratedSuspenseComponent = 18;
|
|
25
|
-
var HostText = 6;
|
|
26
|
-
var Fragment = 7;
|
|
27
|
-
var LegacyHiddenComponent = 23;
|
|
28
|
-
var OffscreenComponent = 22;
|
|
29
|
-
var HostRoot = 3;
|
|
30
99
|
var CONCURRENT_MODE_NUMBER = 60111;
|
|
100
|
+
var ELEMENT_TYPE_SYMBOL_STRING = "Symbol(react.element)";
|
|
101
|
+
var TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING = "Symbol(react.transitional.element)";
|
|
31
102
|
var CONCURRENT_MODE_SYMBOL_STRING = "Symbol(react.concurrent_mode)";
|
|
32
103
|
var DEPRECATED_ASYNC_MODE_SYMBOL_STRING = "Symbol(react.async_mode)";
|
|
33
104
|
var PerformedWork = 1;
|
|
34
105
|
var Placement = 2;
|
|
35
|
-
var DidCapture = 128;
|
|
36
106
|
var Hydrating = 4096;
|
|
37
107
|
var Update = 4;
|
|
38
108
|
var Cloned = 8;
|
|
39
109
|
var ChildDeletion = 16;
|
|
40
110
|
var ContentReset = 32;
|
|
41
|
-
var Ref = 512;
|
|
42
111
|
var Snapshot = 1024;
|
|
43
112
|
var Visibility = 8192;
|
|
44
113
|
var MutationMask = Placement | Update | ChildDeletion | ContentReset | Hydrating | Visibility | Snapshot;
|
|
45
114
|
var isValidElement = (element) => typeof element === "object" && element != null && "$$typeof" in element && // react 18 uses Symbol.for('react.element'), react 19 uses Symbol.for('react.transitional.element')
|
|
46
|
-
[
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
fiber
|
|
51
|
-
fiber
|
|
52
|
-
|
|
115
|
+
[
|
|
116
|
+
ELEMENT_TYPE_SYMBOL_STRING,
|
|
117
|
+
TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING
|
|
118
|
+
].includes(String(element.$$typeof));
|
|
119
|
+
var isValidFiber = (fiber) => typeof fiber === "object" && fiber != null && "tag" in fiber && "stateNode" in fiber && "return" in fiber && "child" in fiber && "sibling" in fiber && "flags" in fiber;
|
|
120
|
+
var isHostFiber = (fiber) => {
|
|
121
|
+
switch (fiber.tag) {
|
|
122
|
+
case HostComponentTag:
|
|
123
|
+
// @ts-expect-error: it exists
|
|
124
|
+
case HostHoistableTag:
|
|
125
|
+
// @ts-expect-error: it exists
|
|
126
|
+
case HostSingletonTag:
|
|
127
|
+
return true;
|
|
128
|
+
default:
|
|
129
|
+
return typeof fiber.type === "string";
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
var isCompositeFiber = (fiber) => {
|
|
133
|
+
switch (fiber.tag) {
|
|
134
|
+
case FunctionComponentTag:
|
|
135
|
+
case ClassComponentTag:
|
|
136
|
+
case SimpleMemoComponentTag:
|
|
137
|
+
case MemoComponentTag:
|
|
138
|
+
case ForwardRefTag:
|
|
139
|
+
return true;
|
|
140
|
+
default:
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
53
144
|
var traverseContexts = (fiber, selector) => {
|
|
54
145
|
try {
|
|
55
146
|
const nextDependencies = fiber.dependencies;
|
|
@@ -60,11 +151,10 @@ var traverseContexts = (fiber, selector) => {
|
|
|
60
151
|
}
|
|
61
152
|
let nextContext = nextDependencies.firstContext;
|
|
62
153
|
let prevContext = prevDependencies.firstContext;
|
|
63
|
-
while (nextContext && typeof nextContext === "object" && "memoizedValue" in nextContext
|
|
64
|
-
if (selector(nextContext, prevContext) === true)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
prevContext = prevContext.next;
|
|
154
|
+
while (nextContext && typeof nextContext === "object" && "memoizedValue" in nextContext || prevContext && typeof prevContext === "object" && "memoizedValue" in prevContext) {
|
|
155
|
+
if (selector(nextContext, prevContext) === true) return true;
|
|
156
|
+
nextContext = nextContext?.next;
|
|
157
|
+
prevContext = prevContext?.next;
|
|
68
158
|
}
|
|
69
159
|
} catch {
|
|
70
160
|
}
|
|
@@ -72,12 +162,34 @@ var traverseContexts = (fiber, selector) => {
|
|
|
72
162
|
};
|
|
73
163
|
var traverseState = (fiber, selector) => {
|
|
74
164
|
try {
|
|
75
|
-
let
|
|
76
|
-
let
|
|
77
|
-
while (
|
|
78
|
-
if (selector(
|
|
79
|
-
|
|
80
|
-
|
|
165
|
+
let nextState = fiber.memoizedState;
|
|
166
|
+
let prevState = fiber.alternate?.memoizedState;
|
|
167
|
+
while (nextState || prevState) {
|
|
168
|
+
if (selector(nextState, prevState) === true) return true;
|
|
169
|
+
nextState = nextState?.next;
|
|
170
|
+
prevState = prevState?.next;
|
|
171
|
+
}
|
|
172
|
+
} catch {
|
|
173
|
+
}
|
|
174
|
+
return false;
|
|
175
|
+
};
|
|
176
|
+
var traverseEffects = (fiber, selector) => {
|
|
177
|
+
try {
|
|
178
|
+
let nextState = (
|
|
179
|
+
// biome-ignore lint/suspicious/noExplicitAny: underlying type is unknown
|
|
180
|
+
fiber.updateQueue?.lastEffect
|
|
181
|
+
);
|
|
182
|
+
let prevState = (
|
|
183
|
+
// biome-ignore lint/suspicious/noExplicitAny: underlying type is unknown
|
|
184
|
+
fiber.alternate?.updateQueue?.lastEffect
|
|
185
|
+
);
|
|
186
|
+
while (nextState || prevState) {
|
|
187
|
+
if (selector(nextState, prevState) === true) return true;
|
|
188
|
+
if (nextState?.next === nextState || prevState?.next === prevState) {
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
nextState = nextState?.next;
|
|
192
|
+
prevState = prevState?.next;
|
|
81
193
|
}
|
|
82
194
|
} catch {
|
|
83
195
|
}
|
|
@@ -120,7 +232,7 @@ var didFiberRender = (fiber) => {
|
|
|
120
232
|
};
|
|
121
233
|
var didFiberCommit = (fiber) => {
|
|
122
234
|
return Boolean(
|
|
123
|
-
(fiber.flags & (
|
|
235
|
+
(fiber.flags & (MutationMask | Cloned)) !== 0 || (fiber.subtreeFlags & (MutationMask | Cloned)) !== 0
|
|
124
236
|
);
|
|
125
237
|
};
|
|
126
238
|
var getMutatedHostFibers = (fiber) => {
|
|
@@ -139,9 +251,10 @@ var getMutatedHostFibers = (fiber) => {
|
|
|
139
251
|
};
|
|
140
252
|
var getFiberStack = (fiber) => {
|
|
141
253
|
const stack = [];
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
254
|
+
let currentFiber = fiber;
|
|
255
|
+
while (currentFiber.return) {
|
|
256
|
+
stack.push(currentFiber);
|
|
257
|
+
currentFiber = currentFiber.return;
|
|
145
258
|
}
|
|
146
259
|
const newStack = new Array(stack.length);
|
|
147
260
|
for (let i = 0; i < stack.length; i++) {
|
|
@@ -151,14 +264,14 @@ var getFiberStack = (fiber) => {
|
|
|
151
264
|
};
|
|
152
265
|
var shouldFilterFiber = (fiber) => {
|
|
153
266
|
switch (fiber.tag) {
|
|
154
|
-
case
|
|
267
|
+
case DehydratedSuspenseComponentTag:
|
|
155
268
|
return true;
|
|
156
|
-
case
|
|
157
|
-
case
|
|
158
|
-
case
|
|
159
|
-
case
|
|
269
|
+
case HostTextTag:
|
|
270
|
+
case FragmentTag:
|
|
271
|
+
case LegacyHiddenComponentTag:
|
|
272
|
+
case OffscreenComponentTag:
|
|
160
273
|
return true;
|
|
161
|
-
case
|
|
274
|
+
case HostRootTag:
|
|
162
275
|
return false;
|
|
163
276
|
default: {
|
|
164
277
|
const symbolOrNumber = typeof fiber.type === "object" && fiber.type !== null ? fiber.type.$$typeof : fiber.type;
|
|
@@ -174,13 +287,35 @@ var shouldFilterFiber = (fiber) => {
|
|
|
174
287
|
}
|
|
175
288
|
}
|
|
176
289
|
};
|
|
177
|
-
var getNearestHostFiber = (fiber) => {
|
|
178
|
-
let hostFiber = traverseFiber(fiber, isHostFiber);
|
|
290
|
+
var getNearestHostFiber = (fiber, ascending = false) => {
|
|
291
|
+
let hostFiber = traverseFiber(fiber, isHostFiber, ascending);
|
|
179
292
|
if (!hostFiber) {
|
|
180
|
-
hostFiber = traverseFiber(fiber, isHostFiber,
|
|
293
|
+
hostFiber = traverseFiber(fiber, isHostFiber, !ascending);
|
|
181
294
|
}
|
|
182
295
|
return hostFiber;
|
|
183
296
|
};
|
|
297
|
+
var getNearestHostFibers = (fiber) => {
|
|
298
|
+
const hostFibers = [];
|
|
299
|
+
const stack = [];
|
|
300
|
+
if (isHostFiber(fiber)) {
|
|
301
|
+
hostFibers.push(fiber);
|
|
302
|
+
} else if (fiber.child) {
|
|
303
|
+
stack.push(fiber.child);
|
|
304
|
+
}
|
|
305
|
+
while (stack.length) {
|
|
306
|
+
const currentNode = stack.pop();
|
|
307
|
+
if (!currentNode) break;
|
|
308
|
+
if (isHostFiber(currentNode)) {
|
|
309
|
+
hostFibers.push(currentNode);
|
|
310
|
+
} else if (currentNode.child) {
|
|
311
|
+
stack.push(currentNode.child);
|
|
312
|
+
}
|
|
313
|
+
if (currentNode.sibling) {
|
|
314
|
+
stack.push(currentNode.sibling);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return hostFibers;
|
|
318
|
+
};
|
|
184
319
|
var traverseFiber = (fiber, selector, ascending = false) => {
|
|
185
320
|
if (!fiber) return null;
|
|
186
321
|
if (selector(fiber) === true) return fiber;
|
|
@@ -203,28 +338,36 @@ var getTimings = (fiber) => {
|
|
|
203
338
|
return { selfTime, totalTime };
|
|
204
339
|
};
|
|
205
340
|
var hasMemoCache = (fiber) => {
|
|
206
|
-
return Boolean(
|
|
341
|
+
return Boolean(
|
|
342
|
+
fiber.updateQueue?.memoCache
|
|
343
|
+
);
|
|
207
344
|
};
|
|
208
345
|
var getType = (type) => {
|
|
209
|
-
|
|
210
|
-
|
|
346
|
+
const currentType = type;
|
|
347
|
+
if (typeof currentType === "function") {
|
|
348
|
+
return currentType;
|
|
211
349
|
}
|
|
212
|
-
if (typeof
|
|
213
|
-
return getType(
|
|
350
|
+
if (typeof currentType === "object" && currentType) {
|
|
351
|
+
return getType(
|
|
352
|
+
currentType.type || currentType.render
|
|
353
|
+
);
|
|
214
354
|
}
|
|
215
355
|
return null;
|
|
216
356
|
};
|
|
217
357
|
var getDisplayName = (type) => {
|
|
218
|
-
|
|
358
|
+
const currentType = type;
|
|
359
|
+
if (typeof currentType !== "function" && !(typeof currentType === "object" && currentType)) {
|
|
219
360
|
return null;
|
|
220
361
|
}
|
|
221
|
-
const name =
|
|
362
|
+
const name = currentType.displayName || currentType.name || null;
|
|
222
363
|
if (name) return name;
|
|
223
|
-
|
|
224
|
-
if (!
|
|
225
|
-
return
|
|
364
|
+
const unwrappedType = getType(currentType);
|
|
365
|
+
if (!unwrappedType) return null;
|
|
366
|
+
return unwrappedType.displayName || unwrappedType.name || null;
|
|
367
|
+
};
|
|
368
|
+
var isUsingRDT = () => {
|
|
369
|
+
return "reactDevtoolsAgent" in getRDTHook();
|
|
226
370
|
};
|
|
227
|
-
var isUsingRDT = () => globalThis.__REACT_DEVTOOLS_BACKEND_MANAGER_INJECTED__ != null;
|
|
228
371
|
var detectReactBuildType = (renderer) => {
|
|
229
372
|
try {
|
|
230
373
|
if (typeof renderer.version === "string" && renderer.bundleType > 0) {
|
|
@@ -234,68 +377,32 @@ var detectReactBuildType = (renderer) => {
|
|
|
234
377
|
}
|
|
235
378
|
return "production";
|
|
236
379
|
};
|
|
237
|
-
var
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
if (code.indexOf("^_^") > -1) {
|
|
241
|
-
setTimeout(() => {
|
|
242
|
-
throw new Error(
|
|
243
|
-
"React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build"
|
|
244
|
-
);
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
} catch {
|
|
248
|
-
}
|
|
380
|
+
var isInstrumentationActive = () => {
|
|
381
|
+
const rdtHook = getRDTHook();
|
|
382
|
+
return Boolean(rdtHook._instrumentationIsActive) || isUsingRDT();
|
|
249
383
|
};
|
|
250
|
-
var
|
|
384
|
+
var fiberId = 0;
|
|
385
|
+
var fiberIdMap = /* @__PURE__ */ new WeakMap();
|
|
386
|
+
var setFiberId = (fiber, id = fiberId++) => {
|
|
387
|
+
fiberIdMap.set(fiber, id);
|
|
251
388
|
};
|
|
252
|
-
var
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
checkDCE,
|
|
257
|
-
supportsFiber: true,
|
|
258
|
-
supportsFlight: true,
|
|
259
|
-
renderers,
|
|
260
|
-
onCommitFiberRoot: NO_OP,
|
|
261
|
-
onCommitFiberUnmount: NO_OP,
|
|
262
|
-
onPostCommitFiberRoot: NO_OP,
|
|
263
|
-
inject(renderer) {
|
|
264
|
-
const nextID = ++i;
|
|
265
|
-
renderers.set(nextID, renderer);
|
|
266
|
-
if (!rdtHook._instrumentationIsActive) {
|
|
267
|
-
rdtHook._instrumentationIsActive = true;
|
|
268
|
-
onActive?.();
|
|
269
|
-
}
|
|
270
|
-
return nextID;
|
|
271
|
-
},
|
|
272
|
-
_instrumentationSource: BIPPY_INSTRUMENTATION_STRING,
|
|
273
|
-
_instrumentationIsActive: false
|
|
274
|
-
};
|
|
275
|
-
try {
|
|
276
|
-
Object.defineProperty(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
|
|
277
|
-
configurable: true,
|
|
278
|
-
value: rdtHook
|
|
279
|
-
});
|
|
280
|
-
} catch {
|
|
389
|
+
var getFiberId = (fiber) => {
|
|
390
|
+
let id = fiberIdMap.get(fiber);
|
|
391
|
+
if (!id && fiber.alternate) {
|
|
392
|
+
id = fiberIdMap.get(fiber.alternate);
|
|
281
393
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
let rdtHook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
|
|
286
|
-
if (rdtHook) onActive?.();
|
|
287
|
-
if (!window.hasOwnProperty("__REACT_DEVTOOLS_GLOBAL_HOOK__")) {
|
|
288
|
-
rdtHook = installRDTHook(onActive);
|
|
394
|
+
if (!id) {
|
|
395
|
+
id = fiberId++;
|
|
396
|
+
setFiberId(fiber, id);
|
|
289
397
|
}
|
|
290
|
-
return
|
|
291
|
-
};
|
|
292
|
-
var isInstrumentationActive = () => {
|
|
293
|
-
const rdtHook = getRDTHook();
|
|
294
|
-
return Boolean(rdtHook._instrumentationIsActive) || isUsingRDT();
|
|
398
|
+
return id;
|
|
295
399
|
};
|
|
296
400
|
var mountFiberRecursively = (onRender, firstChild, traverseSiblings) => {
|
|
297
401
|
let fiber = firstChild;
|
|
298
402
|
while (fiber != null) {
|
|
403
|
+
if (!fiberIdMap.has(fiber)) {
|
|
404
|
+
getFiberId(fiber);
|
|
405
|
+
}
|
|
299
406
|
const shouldIncludeInTree = !shouldFilterFiber(fiber);
|
|
300
407
|
if (shouldIncludeInTree && didFiberRender(fiber)) {
|
|
301
408
|
onRender(fiber, "mount");
|
|
@@ -327,7 +434,13 @@ var mountFiberRecursively = (onRender, firstChild, traverseSiblings) => {
|
|
|
327
434
|
}
|
|
328
435
|
};
|
|
329
436
|
var updateFiberRecursively = (onRender, nextFiber, prevFiber, parentFiber) => {
|
|
437
|
+
if (!fiberIdMap.has(nextFiber)) {
|
|
438
|
+
getFiberId(nextFiber);
|
|
439
|
+
}
|
|
330
440
|
if (!prevFiber) return;
|
|
441
|
+
if (!fiberIdMap.has(prevFiber)) {
|
|
442
|
+
getFiberId(prevFiber);
|
|
443
|
+
}
|
|
331
444
|
const isSuspense = nextFiber.tag === SuspenseComponentTag;
|
|
332
445
|
const shouldIncludeInTree = !shouldFilterFiber(nextFiber);
|
|
333
446
|
if (shouldIncludeInTree && didFiberRender(nextFiber)) {
|
|
@@ -372,7 +485,7 @@ var updateFiberRecursively = (onRender, nextFiber, prevFiber, parentFiber) => {
|
|
|
372
485
|
}
|
|
373
486
|
};
|
|
374
487
|
var unmountFiber = (onRender, fiber) => {
|
|
375
|
-
const isRoot = fiber.tag ===
|
|
488
|
+
const isRoot = fiber.tag === HostRootTag;
|
|
376
489
|
if (isRoot || !shouldFilterFiber(fiber)) {
|
|
377
490
|
onRender(fiber, "unmount");
|
|
378
491
|
}
|
|
@@ -400,7 +513,7 @@ var createFiberVisitor = ({
|
|
|
400
513
|
onError
|
|
401
514
|
}) => {
|
|
402
515
|
return (_rendererID, root, state) => {
|
|
403
|
-
const rootFiber = root.current;
|
|
516
|
+
const rootFiber = "current" in root ? root.current : root;
|
|
404
517
|
const onRender = (fiber, phase) => onRenderWithoutState(fiber, phase, state);
|
|
405
518
|
let rootInstance = rootInstanceMap.get(root);
|
|
406
519
|
if (!rootInstance) {
|
|
@@ -429,56 +542,145 @@ var createFiberVisitor = ({
|
|
|
429
542
|
unmountFiber(onRender, rootFiber);
|
|
430
543
|
}
|
|
431
544
|
} else {
|
|
432
|
-
mountFiberRecursively(onRender, rootFiber,
|
|
433
|
-
}
|
|
434
|
-
} catch (err) {
|
|
435
|
-
if (onError) {
|
|
436
|
-
onError(err);
|
|
437
|
-
} else {
|
|
438
|
-
throw err;
|
|
545
|
+
mountFiberRecursively(onRender, rootFiber, true);
|
|
439
546
|
}
|
|
547
|
+
} catch (error) {
|
|
548
|
+
onError(error);
|
|
440
549
|
}
|
|
441
550
|
rootInstance.prevFiber = rootFiber;
|
|
442
551
|
};
|
|
443
552
|
};
|
|
444
|
-
var instrument = ({
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
553
|
+
var instrument = (options) => {
|
|
554
|
+
return getRDTHook(() => {
|
|
555
|
+
const rdtHook = getRDTHook();
|
|
556
|
+
options.onActive?.();
|
|
557
|
+
rdtHook._instrumentationSource = options.name ?? BIPPY_INSTRUMENTATION_STRING;
|
|
558
|
+
const prevOnCommitFiberRoot = rdtHook.onCommitFiberRoot;
|
|
559
|
+
if (options.onCommitFiberRoot) {
|
|
560
|
+
rdtHook.onCommitFiberRoot = (rendererID, root, priority) => {
|
|
561
|
+
if (prevOnCommitFiberRoot)
|
|
562
|
+
prevOnCommitFiberRoot(rendererID, root, priority);
|
|
563
|
+
options.onCommitFiberRoot?.(rendererID, root, priority);
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
const prevOnCommitFiberUnmount = rdtHook.onCommitFiberUnmount;
|
|
567
|
+
if (options.onCommitFiberUnmount) {
|
|
568
|
+
rdtHook.onCommitFiberUnmount = (rendererID, root) => {
|
|
569
|
+
if (prevOnCommitFiberUnmount)
|
|
570
|
+
prevOnCommitFiberUnmount(rendererID, root);
|
|
571
|
+
options.onCommitFiberUnmount?.(rendererID, root);
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
const prevOnPostCommitFiberRoot = rdtHook.onPostCommitFiberRoot;
|
|
575
|
+
if (options.onPostCommitFiberRoot) {
|
|
576
|
+
rdtHook.onPostCommitFiberRoot = (rendererID, root) => {
|
|
577
|
+
if (prevOnPostCommitFiberRoot)
|
|
578
|
+
prevOnPostCommitFiberRoot(rendererID, root);
|
|
579
|
+
options.onPostCommitFiberRoot?.(rendererID, root);
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
});
|
|
583
|
+
};
|
|
584
|
+
var getFiberFromHostInstance = (hostInstance) => {
|
|
585
|
+
const rdtHook = getRDTHook();
|
|
586
|
+
for (const renderer of rdtHook.renderers.values()) {
|
|
587
|
+
try {
|
|
588
|
+
const fiber = renderer.findFiberByHostInstance?.(hostInstance);
|
|
589
|
+
if (fiber) return fiber;
|
|
590
|
+
} catch {
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
if (typeof hostInstance === "object" && hostInstance != null) {
|
|
594
|
+
if ("_reactRootContainer" in hostInstance) {
|
|
595
|
+
return hostInstance._reactRootContainer?._internalRoot?.current?.child;
|
|
596
|
+
}
|
|
597
|
+
for (const key in hostInstance) {
|
|
598
|
+
if (key.startsWith("__reactInternalInstance$") || key.startsWith("__reactFiber")) {
|
|
599
|
+
return hostInstance[key];
|
|
473
600
|
}
|
|
474
|
-
}
|
|
601
|
+
}
|
|
475
602
|
}
|
|
476
|
-
return
|
|
603
|
+
return null;
|
|
604
|
+
};
|
|
605
|
+
var secure = (options, secureOptions = {}) => {
|
|
606
|
+
const onActive = options.onActive;
|
|
607
|
+
const isRDTHookInstalled = hasRDTHook();
|
|
608
|
+
const isRDT = isUsingRDT();
|
|
609
|
+
let timeout;
|
|
610
|
+
let isProduction = false;
|
|
611
|
+
options.onActive = () => {
|
|
612
|
+
clearTimeout(timeout);
|
|
613
|
+
let isSecure = true;
|
|
614
|
+
try {
|
|
615
|
+
onActive?.();
|
|
616
|
+
const rdtHook = getRDTHook();
|
|
617
|
+
for (const renderer of rdtHook.renderers.values()) {
|
|
618
|
+
const [majorVersion] = renderer.version.split(".");
|
|
619
|
+
if (Number(majorVersion) < (secureOptions.minReactMajorVersion ?? 17)) {
|
|
620
|
+
isSecure = false;
|
|
621
|
+
}
|
|
622
|
+
const buildType = detectReactBuildType(renderer);
|
|
623
|
+
if (buildType !== "development") {
|
|
624
|
+
isProduction = true;
|
|
625
|
+
if (!secureOptions.dangerouslyRunInProduction) {
|
|
626
|
+
isSecure = false;
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
} catch (err) {
|
|
631
|
+
secureOptions.onError?.(err);
|
|
632
|
+
}
|
|
633
|
+
if (!isSecure) {
|
|
634
|
+
options.onCommitFiberRoot = void 0;
|
|
635
|
+
options.onCommitFiberUnmount = void 0;
|
|
636
|
+
options.onPostCommitFiberRoot = void 0;
|
|
637
|
+
options.onActive = void 0;
|
|
638
|
+
return;
|
|
639
|
+
}
|
|
640
|
+
try {
|
|
641
|
+
const onCommitFiberRoot = options.onCommitFiberRoot;
|
|
642
|
+
if (onCommitFiberRoot) {
|
|
643
|
+
options.onCommitFiberRoot = (rendererID, root, priority) => {
|
|
644
|
+
try {
|
|
645
|
+
onCommitFiberRoot(rendererID, root, priority);
|
|
646
|
+
} catch (err) {
|
|
647
|
+
secureOptions.onError?.(err);
|
|
648
|
+
}
|
|
649
|
+
};
|
|
650
|
+
}
|
|
651
|
+
const onCommitFiberUnmount = options.onCommitFiberUnmount;
|
|
652
|
+
if (onCommitFiberUnmount) {
|
|
653
|
+
options.onCommitFiberUnmount = (rendererID, root) => {
|
|
654
|
+
try {
|
|
655
|
+
onCommitFiberUnmount(rendererID, root);
|
|
656
|
+
} catch (err) {
|
|
657
|
+
secureOptions.onError?.(err);
|
|
658
|
+
}
|
|
659
|
+
};
|
|
660
|
+
}
|
|
661
|
+
const onPostCommitFiberRoot = options.onPostCommitFiberRoot;
|
|
662
|
+
if (onPostCommitFiberRoot) {
|
|
663
|
+
options.onPostCommitFiberRoot = (rendererID, root) => {
|
|
664
|
+
try {
|
|
665
|
+
onPostCommitFiberRoot(rendererID, root);
|
|
666
|
+
} catch (err) {
|
|
667
|
+
secureOptions.onError?.(err);
|
|
668
|
+
}
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
} catch (err) {
|
|
672
|
+
secureOptions.onError?.(err);
|
|
673
|
+
}
|
|
674
|
+
};
|
|
675
|
+
if (!isRDTHookInstalled && !isRDT) {
|
|
676
|
+
timeout = setTimeout(() => {
|
|
677
|
+
if (!isProduction) {
|
|
678
|
+
secureOptions.onError?.();
|
|
679
|
+
}
|
|
680
|
+
stop();
|
|
681
|
+
}, secureOptions.installCheckTimeout ?? 100);
|
|
682
|
+
}
|
|
683
|
+
return options;
|
|
477
684
|
};
|
|
478
|
-
var isBrowser = typeof document !== "undefined" && typeof document.createElement === "function";
|
|
479
|
-
var isNode = typeof process !== "undefined" && process.versions != null && process.versions.node != null;
|
|
480
|
-
if (isBrowser || !isNode) {
|
|
481
|
-
installRDTHook();
|
|
482
|
-
}
|
|
483
685
|
|
|
484
|
-
export { BIPPY_INSTRUMENTATION_STRING, CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING,
|
|
686
|
+
export { BIPPY_INSTRUMENTATION_STRING, CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ClassComponentTag, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponentTag, ELEMENT_TYPE_SYMBOL_STRING, ForwardRefTag, FragmentTag, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRootTag, HostSingletonTag, HostTextTag, LegacyHiddenComponentTag, MemoComponentTag, OffscreenComponentTag, SimpleMemoComponentTag, SuspenseComponentTag, TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING, createFiberVisitor, detectReactBuildType, didFiberCommit, didFiberRender, fiberIdMap, getDisplayName, getFiberFromHostInstance, getFiberId, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getNearestHostFibers, getRDTHook, getTimings, getType, hasMemoCache, hasRDTHook, installRDTHook, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isUsingRDT, isValidElement, isValidFiber, mountFiberRecursively, secure, setFiberId, shouldFilterFiber, traverseContexts, traverseEffects, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively, version };
|