sidakram-bippy 0.2.24
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +7 -0
- package/README.md +617 -0
- package/dist/chunk-347RWTP3.js +736 -0
- package/dist/chunk-475IQUDX.cjs +878 -0
- package/dist/chunk-7ROEST76.js +807 -0
- package/dist/chunk-GVWERSAB.cjs +803 -0
- package/dist/chunk-HQYIPSLJ.cjs +20 -0
- package/dist/chunk-JOS5RHYU.cjs +20 -0
- package/dist/chunk-N23WFCSF.js +18 -0
- package/dist/chunk-XX7FLNAQ.js +18 -0
- package/dist/core.cjs +270 -0
- package/dist/core.d.cts +275 -0
- package/dist/core.d.ts +275 -0
- package/dist/core.js +1 -0
- package/dist/experiments/inspect.cjs +1732 -0
- package/dist/experiments/inspect.d.cts +11 -0
- package/dist/experiments/inspect.d.ts +11 -0
- package/dist/experiments/inspect.js +1721 -0
- package/dist/experiments/shrinkwrap.cjs +374 -0
- package/dist/experiments/shrinkwrap.d.cts +10 -0
- package/dist/experiments/shrinkwrap.d.ts +10 -0
- package/dist/experiments/shrinkwrap.js +369 -0
- package/dist/index.cjs +271 -0
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.global.js +9 -0
- package/dist/index.js +2 -0
- package/dist/shrinkwrap.global.js +9 -0
- package/package.json +124 -0
@@ -0,0 +1,736 @@
|
|
1
|
+
/**
|
2
|
+
* @license bippy
|
3
|
+
*
|
4
|
+
* Copyright (c) Aiden Bai, Million Software, Inc.
|
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
|
+
|
10
|
+
// src/rdt-hook.ts
|
11
|
+
var version = "0.2.24";
|
12
|
+
var BIPPY_INSTRUMENTATION_STRING = `bippy-${version}`;
|
13
|
+
var objectDefineProperty = Object.defineProperty;
|
14
|
+
var objectHasOwnProperty = Object.prototype.hasOwnProperty;
|
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 isRealReactDevtools = (rdtHook = getRDTHook()) => {
|
31
|
+
return "getFiberRoots" in rdtHook;
|
32
|
+
};
|
33
|
+
var isReactRefreshOverride = false;
|
34
|
+
var injectFnStr = void 0;
|
35
|
+
var isReactRefresh = (rdtHook = getRDTHook()) => {
|
36
|
+
if (isReactRefreshOverride) return true;
|
37
|
+
if (typeof rdtHook.inject === "function") {
|
38
|
+
injectFnStr = rdtHook.inject.toString();
|
39
|
+
}
|
40
|
+
return Boolean(injectFnStr?.includes("(injected)"));
|
41
|
+
};
|
42
|
+
var onActiveListeners = /* @__PURE__ */ new Set();
|
43
|
+
var installRDTHook = (onActive) => {
|
44
|
+
const renderers = /* @__PURE__ */ new Map();
|
45
|
+
let i = 0;
|
46
|
+
const rdtHook = {
|
47
|
+
checkDCE,
|
48
|
+
supportsFiber: true,
|
49
|
+
supportsFlight: true,
|
50
|
+
hasUnsupportedRendererAttached: false,
|
51
|
+
renderers,
|
52
|
+
onCommitFiberRoot: NO_OP,
|
53
|
+
onCommitFiberUnmount: NO_OP,
|
54
|
+
onPostCommitFiberRoot: NO_OP,
|
55
|
+
inject(renderer) {
|
56
|
+
const nextID = ++i;
|
57
|
+
renderers.set(nextID, renderer);
|
58
|
+
if (!rdtHook._instrumentationIsActive) {
|
59
|
+
rdtHook._instrumentationIsActive = true;
|
60
|
+
onActiveListeners.forEach((listener) => listener());
|
61
|
+
}
|
62
|
+
return nextID;
|
63
|
+
},
|
64
|
+
_instrumentationSource: BIPPY_INSTRUMENTATION_STRING,
|
65
|
+
_instrumentationIsActive: false
|
66
|
+
};
|
67
|
+
try {
|
68
|
+
objectDefineProperty(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
|
69
|
+
value: rdtHook,
|
70
|
+
configurable: true,
|
71
|
+
writable: true
|
72
|
+
});
|
73
|
+
const originalWindowHasOwnProperty = window.hasOwnProperty;
|
74
|
+
let hasRanHack = false;
|
75
|
+
objectDefineProperty(window, "hasOwnProperty", {
|
76
|
+
value: function() {
|
77
|
+
if (!hasRanHack && arguments[0] === "__REACT_DEVTOOLS_GLOBAL_HOOK__") {
|
78
|
+
globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__ = void 0;
|
79
|
+
hasRanHack = true;
|
80
|
+
return -0;
|
81
|
+
}
|
82
|
+
return originalWindowHasOwnProperty.apply(this, arguments);
|
83
|
+
},
|
84
|
+
configurable: true,
|
85
|
+
writable: true
|
86
|
+
});
|
87
|
+
} catch {
|
88
|
+
patchRDTHook(onActive);
|
89
|
+
}
|
90
|
+
return rdtHook;
|
91
|
+
};
|
92
|
+
var patchRDTHook = (onActive) => {
|
93
|
+
if (onActive) {
|
94
|
+
onActiveListeners.add(onActive);
|
95
|
+
}
|
96
|
+
try {
|
97
|
+
const rdtHook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
|
98
|
+
if (!rdtHook) return;
|
99
|
+
if (!rdtHook._instrumentationSource) {
|
100
|
+
isReactRefreshOverride = isReactRefresh(rdtHook);
|
101
|
+
rdtHook.checkDCE = checkDCE;
|
102
|
+
rdtHook.supportsFiber = true;
|
103
|
+
rdtHook.supportsFlight = true;
|
104
|
+
rdtHook.hasUnsupportedRendererAttached = false;
|
105
|
+
rdtHook._instrumentationSource = BIPPY_INSTRUMENTATION_STRING;
|
106
|
+
rdtHook._instrumentationIsActive = false;
|
107
|
+
if (rdtHook.renderers.size) {
|
108
|
+
rdtHook._instrumentationIsActive = true;
|
109
|
+
onActiveListeners.forEach((listener) => listener());
|
110
|
+
return;
|
111
|
+
}
|
112
|
+
const prevInject = rdtHook.inject;
|
113
|
+
if (isReactRefresh(rdtHook) && !isRealReactDevtools()) {
|
114
|
+
isReactRefreshOverride = true;
|
115
|
+
let nextID = rdtHook.inject(null);
|
116
|
+
if (nextID) {
|
117
|
+
rdtHook._instrumentationIsActive = true;
|
118
|
+
}
|
119
|
+
rdtHook.inject = () => nextID++;
|
120
|
+
} else {
|
121
|
+
rdtHook.inject = (renderer) => {
|
122
|
+
const id = prevInject(renderer);
|
123
|
+
rdtHook._instrumentationIsActive = true;
|
124
|
+
onActiveListeners.forEach((listener) => listener());
|
125
|
+
return id;
|
126
|
+
};
|
127
|
+
}
|
128
|
+
}
|
129
|
+
if (rdtHook.renderers.size || rdtHook._instrumentationIsActive || // depending on this to inject is unsafe, since inject could occur before and we wouldn't know
|
130
|
+
isReactRefresh()) {
|
131
|
+
onActive?.();
|
132
|
+
}
|
133
|
+
} catch {
|
134
|
+
}
|
135
|
+
};
|
136
|
+
var hasRDTHook = () => {
|
137
|
+
return objectHasOwnProperty.call(
|
138
|
+
globalThis,
|
139
|
+
"__REACT_DEVTOOLS_GLOBAL_HOOK__"
|
140
|
+
);
|
141
|
+
};
|
142
|
+
var getRDTHook = (onActive) => {
|
143
|
+
if (!hasRDTHook()) {
|
144
|
+
return installRDTHook(onActive);
|
145
|
+
}
|
146
|
+
patchRDTHook(onActive);
|
147
|
+
return globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
|
148
|
+
};
|
149
|
+
var isClientEnvironment = () => {
|
150
|
+
return Boolean(
|
151
|
+
typeof window !== "undefined" && (window.document?.createElement || window.navigator?.product === "ReactNative")
|
152
|
+
);
|
153
|
+
};
|
154
|
+
|
155
|
+
// src/install-hook-script-string.ts
|
156
|
+
var INSTALL_HOOK_SCRIPT_STRING = "(()=>{try{var t=()=>{};const n=new Map;let o=0;globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__={checkDCE:t,supportsFiber:!0,supportsFlight:!0,hasUnsupportedRendererAttached:!1,renderers:n,onCommitFiberRoot:t,onCommitFiberUnmount:t,onPostCommitFiberRoot:t,inject(t){var e=++o;return n.set(e,t),globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__._instrumentationIsActive=!0,e},_instrumentationIsActive:!1,_script:!0}}catch{}})()";
|
157
|
+
|
158
|
+
// src/core.ts
|
159
|
+
var FunctionComponentTag = 0;
|
160
|
+
var ClassComponentTag = 1;
|
161
|
+
var HostRootTag = 3;
|
162
|
+
var HostComponentTag = 5;
|
163
|
+
var HostTextTag = 6;
|
164
|
+
var FragmentTag = 7;
|
165
|
+
var ContextConsumerTag = 9;
|
166
|
+
var ForwardRefTag = 11;
|
167
|
+
var SuspenseComponentTag = 13;
|
168
|
+
var MemoComponentTag = 14;
|
169
|
+
var SimpleMemoComponentTag = 15;
|
170
|
+
var DehydratedSuspenseComponentTag = 18;
|
171
|
+
var OffscreenComponentTag = 22;
|
172
|
+
var LegacyHiddenComponentTag = 23;
|
173
|
+
var HostHoistableTag = 26;
|
174
|
+
var HostSingletonTag = 27;
|
175
|
+
var CONCURRENT_MODE_NUMBER = 60111;
|
176
|
+
var ELEMENT_TYPE_SYMBOL_STRING = "Symbol(react.element)";
|
177
|
+
var TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING = "Symbol(react.transitional.element)";
|
178
|
+
var CONCURRENT_MODE_SYMBOL_STRING = "Symbol(react.concurrent_mode)";
|
179
|
+
var DEPRECATED_ASYNC_MODE_SYMBOL_STRING = "Symbol(react.async_mode)";
|
180
|
+
var PerformedWork = 1;
|
181
|
+
var Placement = 2;
|
182
|
+
var Hydrating = 4096;
|
183
|
+
var Update = 4;
|
184
|
+
var Cloned = 8;
|
185
|
+
var ChildDeletion = 16;
|
186
|
+
var ContentReset = 32;
|
187
|
+
var Snapshot = 1024;
|
188
|
+
var Visibility = 8192;
|
189
|
+
var MutationMask = Placement | Update | ChildDeletion | ContentReset | Hydrating | Visibility | Snapshot;
|
190
|
+
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')
|
191
|
+
[
|
192
|
+
ELEMENT_TYPE_SYMBOL_STRING,
|
193
|
+
TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING
|
194
|
+
].includes(String(element.$$typeof));
|
195
|
+
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;
|
196
|
+
var isHostFiber = (fiber) => {
|
197
|
+
switch (fiber.tag) {
|
198
|
+
case HostComponentTag:
|
199
|
+
// @ts-expect-error: it exists
|
200
|
+
case HostHoistableTag:
|
201
|
+
// @ts-expect-error: it exists
|
202
|
+
case HostSingletonTag:
|
203
|
+
return true;
|
204
|
+
default:
|
205
|
+
return typeof fiber.type === "string";
|
206
|
+
}
|
207
|
+
};
|
208
|
+
var isCompositeFiber = (fiber) => {
|
209
|
+
switch (fiber.tag) {
|
210
|
+
case FunctionComponentTag:
|
211
|
+
case ClassComponentTag:
|
212
|
+
case SimpleMemoComponentTag:
|
213
|
+
case MemoComponentTag:
|
214
|
+
case ForwardRefTag:
|
215
|
+
return true;
|
216
|
+
default:
|
217
|
+
return false;
|
218
|
+
}
|
219
|
+
};
|
220
|
+
var traverseContexts = (fiber, selector) => {
|
221
|
+
try {
|
222
|
+
const nextDependencies = fiber.dependencies;
|
223
|
+
const prevDependencies = fiber.alternate?.dependencies;
|
224
|
+
if (!nextDependencies || !prevDependencies) return false;
|
225
|
+
if (typeof nextDependencies !== "object" || !("firstContext" in nextDependencies) || typeof prevDependencies !== "object" || !("firstContext" in prevDependencies)) {
|
226
|
+
return false;
|
227
|
+
}
|
228
|
+
let nextContext = nextDependencies.firstContext;
|
229
|
+
let prevContext = prevDependencies.firstContext;
|
230
|
+
while (nextContext && typeof nextContext === "object" && "memoizedValue" in nextContext || prevContext && typeof prevContext === "object" && "memoizedValue" in prevContext) {
|
231
|
+
if (selector(nextContext, prevContext) === true) return true;
|
232
|
+
nextContext = nextContext?.next;
|
233
|
+
prevContext = prevContext?.next;
|
234
|
+
}
|
235
|
+
} catch {
|
236
|
+
}
|
237
|
+
return false;
|
238
|
+
};
|
239
|
+
var traverseState = (fiber, selector) => {
|
240
|
+
try {
|
241
|
+
let nextState = fiber.memoizedState;
|
242
|
+
let prevState = fiber.alternate?.memoizedState;
|
243
|
+
while (nextState || prevState) {
|
244
|
+
if (selector(nextState, prevState) === true) return true;
|
245
|
+
nextState = nextState?.next;
|
246
|
+
prevState = prevState?.next;
|
247
|
+
}
|
248
|
+
} catch {
|
249
|
+
}
|
250
|
+
return false;
|
251
|
+
};
|
252
|
+
var traverseProps = (fiber, selector) => {
|
253
|
+
try {
|
254
|
+
const nextProps = fiber.memoizedProps;
|
255
|
+
const prevProps = fiber.alternate?.memoizedProps || {};
|
256
|
+
const allKeys = /* @__PURE__ */ new Set([
|
257
|
+
...Object.keys(prevProps),
|
258
|
+
...Object.keys(nextProps)
|
259
|
+
]);
|
260
|
+
for (const propName of allKeys) {
|
261
|
+
const prevValue = prevProps?.[propName];
|
262
|
+
const nextValue = nextProps?.[propName];
|
263
|
+
if (selector(propName, nextValue, prevValue) === true) return true;
|
264
|
+
}
|
265
|
+
} catch {
|
266
|
+
}
|
267
|
+
return false;
|
268
|
+
};
|
269
|
+
var didFiberRender = (fiber) => {
|
270
|
+
const nextProps = fiber.memoizedProps;
|
271
|
+
const prevProps = fiber.alternate?.memoizedProps || {};
|
272
|
+
const flags = fiber.flags ?? fiber.effectTag ?? 0;
|
273
|
+
switch (fiber.tag) {
|
274
|
+
case ClassComponentTag:
|
275
|
+
case FunctionComponentTag:
|
276
|
+
case ContextConsumerTag:
|
277
|
+
case ForwardRefTag:
|
278
|
+
case MemoComponentTag:
|
279
|
+
case SimpleMemoComponentTag: {
|
280
|
+
return (flags & PerformedWork) === PerformedWork;
|
281
|
+
}
|
282
|
+
default:
|
283
|
+
if (!fiber.alternate) return true;
|
284
|
+
return prevProps !== nextProps || fiber.alternate.memoizedState !== fiber.memoizedState || fiber.alternate.ref !== fiber.ref;
|
285
|
+
}
|
286
|
+
};
|
287
|
+
var didFiberCommit = (fiber) => {
|
288
|
+
return Boolean(
|
289
|
+
(fiber.flags & (MutationMask | Cloned)) !== 0 || (fiber.subtreeFlags & (MutationMask | Cloned)) !== 0
|
290
|
+
);
|
291
|
+
};
|
292
|
+
var getMutatedHostFibers = (fiber) => {
|
293
|
+
const mutations = [];
|
294
|
+
const stack = [fiber];
|
295
|
+
while (stack.length) {
|
296
|
+
const node = stack.pop();
|
297
|
+
if (!node) continue;
|
298
|
+
if (isHostFiber(node) && didFiberCommit(node) && didFiberRender(node)) {
|
299
|
+
mutations.push(node);
|
300
|
+
}
|
301
|
+
if (node.child) stack.push(node.child);
|
302
|
+
if (node.sibling) stack.push(node.sibling);
|
303
|
+
}
|
304
|
+
return mutations;
|
305
|
+
};
|
306
|
+
var getFiberStack = (fiber) => {
|
307
|
+
const stack = [];
|
308
|
+
let currentFiber = fiber;
|
309
|
+
while (currentFiber.return) {
|
310
|
+
stack.push(currentFiber);
|
311
|
+
currentFiber = currentFiber.return;
|
312
|
+
}
|
313
|
+
return stack;
|
314
|
+
};
|
315
|
+
var shouldFilterFiber = (fiber) => {
|
316
|
+
switch (fiber.tag) {
|
317
|
+
case DehydratedSuspenseComponentTag:
|
318
|
+
return true;
|
319
|
+
case HostTextTag:
|
320
|
+
case FragmentTag:
|
321
|
+
case LegacyHiddenComponentTag:
|
322
|
+
case OffscreenComponentTag:
|
323
|
+
return true;
|
324
|
+
case HostRootTag:
|
325
|
+
return false;
|
326
|
+
default: {
|
327
|
+
const symbolOrNumber = typeof fiber.type === "object" && fiber.type !== null ? fiber.type.$$typeof : fiber.type;
|
328
|
+
const typeSymbol = typeof symbolOrNumber === "symbol" ? symbolOrNumber.toString() : symbolOrNumber;
|
329
|
+
switch (typeSymbol) {
|
330
|
+
case CONCURRENT_MODE_NUMBER:
|
331
|
+
case CONCURRENT_MODE_SYMBOL_STRING:
|
332
|
+
case DEPRECATED_ASYNC_MODE_SYMBOL_STRING:
|
333
|
+
return true;
|
334
|
+
default:
|
335
|
+
return false;
|
336
|
+
}
|
337
|
+
}
|
338
|
+
}
|
339
|
+
};
|
340
|
+
var getNearestHostFiber = (fiber, ascending = false) => {
|
341
|
+
let hostFiber = traverseFiber(fiber, isHostFiber, ascending);
|
342
|
+
if (!hostFiber) {
|
343
|
+
hostFiber = traverseFiber(fiber, isHostFiber, !ascending);
|
344
|
+
}
|
345
|
+
return hostFiber;
|
346
|
+
};
|
347
|
+
var getNearestHostFibers = (fiber) => {
|
348
|
+
const hostFibers = [];
|
349
|
+
const stack = [];
|
350
|
+
if (isHostFiber(fiber)) {
|
351
|
+
hostFibers.push(fiber);
|
352
|
+
} else if (fiber.child) {
|
353
|
+
stack.push(fiber.child);
|
354
|
+
}
|
355
|
+
while (stack.length) {
|
356
|
+
const currentNode = stack.pop();
|
357
|
+
if (!currentNode) break;
|
358
|
+
if (isHostFiber(currentNode)) {
|
359
|
+
hostFibers.push(currentNode);
|
360
|
+
} else if (currentNode.child) {
|
361
|
+
stack.push(currentNode.child);
|
362
|
+
}
|
363
|
+
if (currentNode.sibling) {
|
364
|
+
stack.push(currentNode.sibling);
|
365
|
+
}
|
366
|
+
}
|
367
|
+
return hostFibers;
|
368
|
+
};
|
369
|
+
var traverseFiber = (fiber, selector, ascending = false) => {
|
370
|
+
if (!fiber) return null;
|
371
|
+
if (selector(fiber) === true) return fiber;
|
372
|
+
let child = ascending ? fiber.return : fiber.child;
|
373
|
+
while (child) {
|
374
|
+
const match = traverseFiber(child, selector, ascending);
|
375
|
+
if (match) return match;
|
376
|
+
child = ascending ? null : child.sibling;
|
377
|
+
}
|
378
|
+
return null;
|
379
|
+
};
|
380
|
+
var getTimings = (fiber) => {
|
381
|
+
const totalTime = fiber?.actualDuration ?? 0;
|
382
|
+
let selfTime = totalTime;
|
383
|
+
let child = fiber?.child ?? null;
|
384
|
+
while (totalTime > 0 && child != null) {
|
385
|
+
selfTime -= child.actualDuration ?? 0;
|
386
|
+
child = child.sibling;
|
387
|
+
}
|
388
|
+
return { selfTime, totalTime };
|
389
|
+
};
|
390
|
+
var hasMemoCache = (fiber) => {
|
391
|
+
return Boolean(
|
392
|
+
fiber.updateQueue?.memoCache
|
393
|
+
);
|
394
|
+
};
|
395
|
+
var getType = (type) => {
|
396
|
+
const currentType = type;
|
397
|
+
if (typeof currentType === "function") {
|
398
|
+
return currentType;
|
399
|
+
}
|
400
|
+
if (typeof currentType === "object" && currentType) {
|
401
|
+
return getType(
|
402
|
+
currentType.type || currentType.render
|
403
|
+
);
|
404
|
+
}
|
405
|
+
return null;
|
406
|
+
};
|
407
|
+
var getDisplayName = (type) => {
|
408
|
+
const currentType = type;
|
409
|
+
if (typeof currentType !== "function" && !(typeof currentType === "object" && currentType)) {
|
410
|
+
return null;
|
411
|
+
}
|
412
|
+
const name = currentType.displayName || currentType.name || null;
|
413
|
+
if (name) return name;
|
414
|
+
const unwrappedType = getType(currentType);
|
415
|
+
if (!unwrappedType) return null;
|
416
|
+
return unwrappedType.displayName || unwrappedType.name || null;
|
417
|
+
};
|
418
|
+
var detectReactBuildType = (renderer) => {
|
419
|
+
try {
|
420
|
+
if (typeof renderer.version === "string" && renderer.bundleType > 0) {
|
421
|
+
return "development";
|
422
|
+
}
|
423
|
+
} catch {
|
424
|
+
}
|
425
|
+
return "production";
|
426
|
+
};
|
427
|
+
var isInstrumentationActive = () => {
|
428
|
+
const rdtHook = getRDTHook();
|
429
|
+
return Boolean(rdtHook._instrumentationIsActive) || isRealReactDevtools() || isReactRefresh();
|
430
|
+
};
|
431
|
+
var fiberId = 0;
|
432
|
+
var fiberIdMap = /* @__PURE__ */ new WeakMap();
|
433
|
+
var setFiberId = (fiber, id = fiberId++) => {
|
434
|
+
fiberIdMap.set(fiber, id);
|
435
|
+
};
|
436
|
+
var getFiberId = (fiber) => {
|
437
|
+
let id = fiberIdMap.get(fiber);
|
438
|
+
if (!id && fiber.alternate) {
|
439
|
+
id = fiberIdMap.get(fiber.alternate);
|
440
|
+
}
|
441
|
+
if (!id) {
|
442
|
+
id = fiberId++;
|
443
|
+
setFiberId(fiber, id);
|
444
|
+
}
|
445
|
+
return id;
|
446
|
+
};
|
447
|
+
var mountFiberRecursively = (onRender, firstChild, traverseSiblings) => {
|
448
|
+
let fiber = firstChild;
|
449
|
+
while (fiber != null) {
|
450
|
+
if (!fiberIdMap.has(fiber)) {
|
451
|
+
getFiberId(fiber);
|
452
|
+
}
|
453
|
+
const shouldIncludeInTree = !shouldFilterFiber(fiber);
|
454
|
+
if (shouldIncludeInTree && didFiberRender(fiber)) {
|
455
|
+
onRender(fiber, "mount");
|
456
|
+
}
|
457
|
+
if (fiber.tag === SuspenseComponentTag) {
|
458
|
+
const isTimedOut = fiber.memoizedState !== null;
|
459
|
+
if (isTimedOut) {
|
460
|
+
const primaryChildFragment = fiber.child;
|
461
|
+
const fallbackChildFragment = primaryChildFragment ? primaryChildFragment.sibling : null;
|
462
|
+
if (fallbackChildFragment) {
|
463
|
+
const fallbackChild = fallbackChildFragment.child;
|
464
|
+
if (fallbackChild !== null) {
|
465
|
+
mountFiberRecursively(onRender, fallbackChild, false);
|
466
|
+
}
|
467
|
+
}
|
468
|
+
} else {
|
469
|
+
let primaryChild = null;
|
470
|
+
if (fiber.child !== null) {
|
471
|
+
primaryChild = fiber.child.child;
|
472
|
+
}
|
473
|
+
if (primaryChild !== null) {
|
474
|
+
mountFiberRecursively(onRender, primaryChild, false);
|
475
|
+
}
|
476
|
+
}
|
477
|
+
} else if (fiber.child != null) {
|
478
|
+
mountFiberRecursively(onRender, fiber.child, true);
|
479
|
+
}
|
480
|
+
fiber = traverseSiblings ? fiber.sibling : null;
|
481
|
+
}
|
482
|
+
};
|
483
|
+
var updateFiberRecursively = (onRender, nextFiber, prevFiber, parentFiber) => {
|
484
|
+
if (!fiberIdMap.has(nextFiber)) {
|
485
|
+
getFiberId(nextFiber);
|
486
|
+
}
|
487
|
+
if (!prevFiber) return;
|
488
|
+
if (!fiberIdMap.has(prevFiber)) {
|
489
|
+
getFiberId(prevFiber);
|
490
|
+
}
|
491
|
+
const isSuspense = nextFiber.tag === SuspenseComponentTag;
|
492
|
+
const shouldIncludeInTree = !shouldFilterFiber(nextFiber);
|
493
|
+
if (shouldIncludeInTree && didFiberRender(nextFiber)) {
|
494
|
+
onRender(nextFiber, "update");
|
495
|
+
}
|
496
|
+
const prevDidTimeout = isSuspense && prevFiber.memoizedState !== null;
|
497
|
+
const nextDidTimeOut = isSuspense && nextFiber.memoizedState !== null;
|
498
|
+
if (prevDidTimeout && nextDidTimeOut) {
|
499
|
+
const nextFallbackChildSet = nextFiber.child?.sibling ?? null;
|
500
|
+
const prevFallbackChildSet = prevFiber.child?.sibling ?? null;
|
501
|
+
if (nextFallbackChildSet !== null && prevFallbackChildSet !== null) {
|
502
|
+
updateFiberRecursively(
|
503
|
+
onRender,
|
504
|
+
nextFallbackChildSet,
|
505
|
+
prevFallbackChildSet);
|
506
|
+
}
|
507
|
+
} else if (prevDidTimeout && !nextDidTimeOut) {
|
508
|
+
const nextPrimaryChildSet = nextFiber.child;
|
509
|
+
if (nextPrimaryChildSet !== null) {
|
510
|
+
mountFiberRecursively(onRender, nextPrimaryChildSet, true);
|
511
|
+
}
|
512
|
+
} else if (!prevDidTimeout && nextDidTimeOut) {
|
513
|
+
unmountFiberChildrenRecursively(onRender, prevFiber);
|
514
|
+
const nextFallbackChildSet = nextFiber.child?.sibling ?? null;
|
515
|
+
if (nextFallbackChildSet !== null) {
|
516
|
+
mountFiberRecursively(onRender, nextFallbackChildSet, true);
|
517
|
+
}
|
518
|
+
} else if (nextFiber.child !== prevFiber.child) {
|
519
|
+
let nextChild = nextFiber.child;
|
520
|
+
while (nextChild) {
|
521
|
+
if (nextChild.alternate) {
|
522
|
+
const prevChild = nextChild.alternate;
|
523
|
+
updateFiberRecursively(
|
524
|
+
onRender,
|
525
|
+
nextChild,
|
526
|
+
prevChild);
|
527
|
+
} else {
|
528
|
+
mountFiberRecursively(onRender, nextChild, false);
|
529
|
+
}
|
530
|
+
nextChild = nextChild.sibling;
|
531
|
+
}
|
532
|
+
}
|
533
|
+
};
|
534
|
+
var unmountFiber = (onRender, fiber) => {
|
535
|
+
const isRoot = fiber.tag === HostRootTag;
|
536
|
+
if (isRoot || !shouldFilterFiber(fiber)) {
|
537
|
+
onRender(fiber, "unmount");
|
538
|
+
}
|
539
|
+
};
|
540
|
+
var unmountFiberChildrenRecursively = (onRender, fiber) => {
|
541
|
+
const isTimedOutSuspense = fiber.tag === SuspenseComponentTag && fiber.memoizedState !== null;
|
542
|
+
let child = fiber.child;
|
543
|
+
if (isTimedOutSuspense) {
|
544
|
+
const primaryChildFragment = fiber.child;
|
545
|
+
const fallbackChildFragment = primaryChildFragment?.sibling ?? null;
|
546
|
+
child = fallbackChildFragment?.child ?? null;
|
547
|
+
}
|
548
|
+
while (child !== null) {
|
549
|
+
if (child.return !== null) {
|
550
|
+
unmountFiber(onRender, child);
|
551
|
+
unmountFiberChildrenRecursively(onRender, child);
|
552
|
+
}
|
553
|
+
child = child.sibling;
|
554
|
+
}
|
555
|
+
};
|
556
|
+
var commitId = 0;
|
557
|
+
var rootInstanceMap = /* @__PURE__ */ new WeakMap();
|
558
|
+
var traverseRenderedFibers = (root, onRender) => {
|
559
|
+
const fiber = "current" in root ? root.current : root;
|
560
|
+
let rootInstance = rootInstanceMap.get(root);
|
561
|
+
if (!rootInstance) {
|
562
|
+
rootInstance = { prevFiber: null, id: commitId++ };
|
563
|
+
rootInstanceMap.set(root, rootInstance);
|
564
|
+
}
|
565
|
+
const { prevFiber } = rootInstance;
|
566
|
+
if (!fiber) {
|
567
|
+
unmountFiber(onRender, fiber);
|
568
|
+
} else if (prevFiber !== null) {
|
569
|
+
const wasMounted = prevFiber && prevFiber.memoizedState != null && prevFiber.memoizedState.element != null && // A dehydrated root is not considered mounted
|
570
|
+
prevFiber.memoizedState.isDehydrated !== true;
|
571
|
+
const isMounted = fiber.memoizedState != null && fiber.memoizedState.element != null && // A dehydrated root is not considered mounted
|
572
|
+
fiber.memoizedState.isDehydrated !== true;
|
573
|
+
if (!wasMounted && isMounted) {
|
574
|
+
mountFiberRecursively(onRender, fiber, false);
|
575
|
+
} else if (wasMounted && isMounted) {
|
576
|
+
updateFiberRecursively(onRender, fiber, fiber.alternate);
|
577
|
+
} else if (wasMounted && !isMounted) {
|
578
|
+
unmountFiber(onRender, fiber);
|
579
|
+
}
|
580
|
+
} else {
|
581
|
+
mountFiberRecursively(onRender, fiber, true);
|
582
|
+
}
|
583
|
+
rootInstance.prevFiber = fiber;
|
584
|
+
};
|
585
|
+
var createFiberVisitor = ({
|
586
|
+
onRender
|
587
|
+
}) => {
|
588
|
+
return (_rendererID, root, _state) => {
|
589
|
+
traverseRenderedFibers(root, onRender);
|
590
|
+
};
|
591
|
+
};
|
592
|
+
var instrument = (options) => {
|
593
|
+
return getRDTHook(() => {
|
594
|
+
const rdtHook = getRDTHook();
|
595
|
+
options.onActive?.();
|
596
|
+
rdtHook._instrumentationSource = options.name ?? BIPPY_INSTRUMENTATION_STRING;
|
597
|
+
const prevOnCommitFiberRoot = rdtHook.onCommitFiberRoot;
|
598
|
+
if (options.onCommitFiberRoot) {
|
599
|
+
rdtHook.onCommitFiberRoot = (rendererID, root, priority) => {
|
600
|
+
if (prevOnCommitFiberRoot)
|
601
|
+
prevOnCommitFiberRoot(rendererID, root, priority);
|
602
|
+
options.onCommitFiberRoot?.(rendererID, root, priority);
|
603
|
+
};
|
604
|
+
}
|
605
|
+
const prevOnCommitFiberUnmount = rdtHook.onCommitFiberUnmount;
|
606
|
+
if (options.onCommitFiberUnmount) {
|
607
|
+
rdtHook.onCommitFiberUnmount = (rendererID, root) => {
|
608
|
+
if (prevOnCommitFiberUnmount)
|
609
|
+
prevOnCommitFiberUnmount(rendererID, root);
|
610
|
+
options.onCommitFiberUnmount?.(rendererID, root);
|
611
|
+
};
|
612
|
+
}
|
613
|
+
const prevOnPostCommitFiberRoot = rdtHook.onPostCommitFiberRoot;
|
614
|
+
if (options.onPostCommitFiberRoot) {
|
615
|
+
rdtHook.onPostCommitFiberRoot = (rendererID, root) => {
|
616
|
+
if (prevOnPostCommitFiberRoot)
|
617
|
+
prevOnPostCommitFiberRoot(rendererID, root);
|
618
|
+
options.onPostCommitFiberRoot?.(rendererID, root);
|
619
|
+
};
|
620
|
+
}
|
621
|
+
});
|
622
|
+
};
|
623
|
+
var getFiberFromHostInstance = (hostInstance) => {
|
624
|
+
const rdtHook = getRDTHook();
|
625
|
+
for (const renderer of rdtHook.renderers.values()) {
|
626
|
+
try {
|
627
|
+
const fiber = renderer.findFiberByHostInstance?.(hostInstance);
|
628
|
+
if (fiber) return fiber;
|
629
|
+
} catch {
|
630
|
+
}
|
631
|
+
}
|
632
|
+
if (typeof hostInstance === "object" && hostInstance != null) {
|
633
|
+
if ("_reactRootContainer" in hostInstance) {
|
634
|
+
return hostInstance._reactRootContainer?._internalRoot?.current?.child;
|
635
|
+
}
|
636
|
+
for (const key in hostInstance) {
|
637
|
+
if (key.startsWith("__reactInternalInstance$") || key.startsWith("__reactFiber")) {
|
638
|
+
return hostInstance[key] || null;
|
639
|
+
}
|
640
|
+
}
|
641
|
+
}
|
642
|
+
return null;
|
643
|
+
};
|
644
|
+
var INSTALL_ERROR = new Error();
|
645
|
+
var secure = (options, secureOptions = {}) => {
|
646
|
+
const onActive = options.onActive;
|
647
|
+
const isRDTHookInstalled = hasRDTHook();
|
648
|
+
const isUsingRealReactDevtools = isRealReactDevtools();
|
649
|
+
const isUsingReactRefresh = isReactRefresh();
|
650
|
+
let timeout;
|
651
|
+
let isProduction = secureOptions.isProduction ?? false;
|
652
|
+
options.onActive = () => {
|
653
|
+
clearTimeout(timeout);
|
654
|
+
let isSecure = true;
|
655
|
+
try {
|
656
|
+
const rdtHook = getRDTHook();
|
657
|
+
for (const renderer of rdtHook.renderers.values()) {
|
658
|
+
const [majorVersion] = renderer.version.split(".");
|
659
|
+
if (Number(majorVersion) < (secureOptions.minReactMajorVersion ?? 17)) {
|
660
|
+
isSecure = false;
|
661
|
+
}
|
662
|
+
const buildType = detectReactBuildType(renderer);
|
663
|
+
if (buildType !== "development") {
|
664
|
+
isProduction = true;
|
665
|
+
if (!secureOptions.dangerouslyRunInProduction) {
|
666
|
+
isSecure = false;
|
667
|
+
}
|
668
|
+
}
|
669
|
+
}
|
670
|
+
} catch (err) {
|
671
|
+
secureOptions.onError?.(err);
|
672
|
+
}
|
673
|
+
if (!isSecure) {
|
674
|
+
options.onCommitFiberRoot = void 0;
|
675
|
+
options.onCommitFiberUnmount = void 0;
|
676
|
+
options.onPostCommitFiberRoot = void 0;
|
677
|
+
options.onActive = void 0;
|
678
|
+
return;
|
679
|
+
}
|
680
|
+
onActive?.();
|
681
|
+
try {
|
682
|
+
const onCommitFiberRoot2 = options.onCommitFiberRoot;
|
683
|
+
if (onCommitFiberRoot2) {
|
684
|
+
options.onCommitFiberRoot = (rendererID, root, priority) => {
|
685
|
+
try {
|
686
|
+
onCommitFiberRoot2(rendererID, root, priority);
|
687
|
+
} catch (err) {
|
688
|
+
secureOptions.onError?.(err);
|
689
|
+
}
|
690
|
+
};
|
691
|
+
}
|
692
|
+
const onCommitFiberUnmount = options.onCommitFiberUnmount;
|
693
|
+
if (onCommitFiberUnmount) {
|
694
|
+
options.onCommitFiberUnmount = (rendererID, root) => {
|
695
|
+
try {
|
696
|
+
onCommitFiberUnmount(rendererID, root);
|
697
|
+
} catch (err) {
|
698
|
+
secureOptions.onError?.(err);
|
699
|
+
}
|
700
|
+
};
|
701
|
+
}
|
702
|
+
const onPostCommitFiberRoot = options.onPostCommitFiberRoot;
|
703
|
+
if (onPostCommitFiberRoot) {
|
704
|
+
options.onPostCommitFiberRoot = (rendererID, root) => {
|
705
|
+
try {
|
706
|
+
onPostCommitFiberRoot(rendererID, root);
|
707
|
+
} catch (err) {
|
708
|
+
secureOptions.onError?.(err);
|
709
|
+
}
|
710
|
+
};
|
711
|
+
}
|
712
|
+
} catch (err) {
|
713
|
+
secureOptions.onError?.(err);
|
714
|
+
}
|
715
|
+
};
|
716
|
+
if (!isRDTHookInstalled && !isUsingRealReactDevtools && !isUsingReactRefresh) {
|
717
|
+
timeout = setTimeout(() => {
|
718
|
+
if (!isProduction) {
|
719
|
+
secureOptions.onError?.(INSTALL_ERROR);
|
720
|
+
}
|
721
|
+
stop();
|
722
|
+
}, secureOptions.installCheckTimeout ?? 100);
|
723
|
+
}
|
724
|
+
return options;
|
725
|
+
};
|
726
|
+
var onCommitFiberRoot = (handler) => {
|
727
|
+
return instrument(
|
728
|
+
secure({
|
729
|
+
onCommitFiberRoot: (_, root) => {
|
730
|
+
handler(root);
|
731
|
+
}
|
732
|
+
})
|
733
|
+
);
|
734
|
+
};
|
735
|
+
|
736
|
+
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, INSTALL_ERROR, INSTALL_HOOK_SCRIPT_STRING, 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, isClientEnvironment, isCompositeFiber, isHostFiber, isInstrumentationActive, isReactRefresh, isRealReactDevtools, isValidElement, isValidFiber, mountFiberRecursively, onCommitFiberRoot, patchRDTHook, secure, setFiberId, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseRenderedFibers, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively, version };
|