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