@memlab/lens 2.0.2 → 2.0.4
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/dist/index.js +14 -14
- package/dist/memlens.lib.bundle.js +876 -871
- package/dist/memlens.lib.bundle.min.js +1 -1
- package/dist/memlens.run.bundle.js +1889 -1876
- package/dist/memlens.run.bundle.min.js +1 -1
- package/package.json +1 -1
|
@@ -37,6 +37,44 @@ return /******/ (() => { // webpackBootstrap
|
|
|
37
37
|
/******/ "use strict";
|
|
38
38
|
/******/ var __webpack_modules__ = ({
|
|
39
39
|
|
|
40
|
+
/***/ 346
|
|
41
|
+
(__unused_webpack_module, exports) {
|
|
42
|
+
|
|
43
|
+
var __webpack_unused_export__;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
47
|
+
*
|
|
48
|
+
* This source code is licensed under the MIT license found in the
|
|
49
|
+
* LICENSE file in the root directory of this source tree.
|
|
50
|
+
*
|
|
51
|
+
* @format
|
|
52
|
+
* @oncall memory_lab
|
|
53
|
+
*/
|
|
54
|
+
__webpack_unused_export__ = ({ value: true });
|
|
55
|
+
exports.config = exports.of = exports.lF = void 0;
|
|
56
|
+
// Performance Configuration
|
|
57
|
+
exports.lF = {
|
|
58
|
+
scanIntervalMs: 1000,
|
|
59
|
+
maxComponentStackDepth: 100,
|
|
60
|
+
memoryMeasurementIntervalMs: 5000,
|
|
61
|
+
};
|
|
62
|
+
// Feature Flags
|
|
63
|
+
exports.of = {
|
|
64
|
+
enableMutationObserver: true,
|
|
65
|
+
enableMemoryTracking: true,
|
|
66
|
+
enableComponentStack: true,
|
|
67
|
+
enableConsoleLogs: window === null || window === void 0 ? void 0 : window.TEST_MEMORY_SCAN,
|
|
68
|
+
};
|
|
69
|
+
// overall Config
|
|
70
|
+
exports.config = {
|
|
71
|
+
performance: exports.lF,
|
|
72
|
+
features: exports.of,
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
/***/ },
|
|
77
|
+
|
|
40
78
|
/***/ 54
|
|
41
79
|
(__unused_webpack_module, exports, __webpack_require__) {
|
|
42
80
|
|
|
@@ -232,38 +270,142 @@ _DOMObserver_elementCount = new WeakMap(), _DOMObserver_detachedElementCount = n
|
|
|
232
270
|
|
|
233
271
|
/***/ },
|
|
234
272
|
|
|
235
|
-
/***/
|
|
273
|
+
/***/ 953
|
|
236
274
|
(__unused_webpack_module, exports, __webpack_require__) {
|
|
237
275
|
|
|
238
276
|
|
|
239
|
-
var
|
|
240
|
-
|
|
277
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
278
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
279
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
280
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
281
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
241
282
|
};
|
|
283
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
284
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
285
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
286
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
287
|
+
};
|
|
288
|
+
var _EventListenerTracker_instances, _EventListenerTracker_listenerMap, _EventListenerTracker_detachedListeners, _EventListenerTracker_originalAddEventListener, _EventListenerTracker_originalRemoveEventListener, _EventListenerTracker_patchEventListeners, _EventListenerTracker_unpatchEventListeners;
|
|
242
289
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
243
|
-
exports.
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
290
|
+
exports.EventListenerTracker = void 0;
|
|
291
|
+
const react_fiber_utils_1 = __webpack_require__(737);
|
|
292
|
+
const weak_ref_utils_1 = __webpack_require__(313);
|
|
293
|
+
class EventListenerTracker {
|
|
294
|
+
constructor() {
|
|
295
|
+
_EventListenerTracker_instances.add(this);
|
|
296
|
+
_EventListenerTracker_listenerMap.set(this, void 0);
|
|
297
|
+
_EventListenerTracker_detachedListeners.set(this, void 0);
|
|
298
|
+
_EventListenerTracker_originalAddEventListener.set(this, void 0);
|
|
299
|
+
_EventListenerTracker_originalRemoveEventListener.set(this, void 0);
|
|
300
|
+
__classPrivateFieldSet(this, _EventListenerTracker_listenerMap, new weak_ref_utils_1.WeakMapPlus({ fallback: 'noop', cleanupMs: 100 }), "f");
|
|
301
|
+
__classPrivateFieldSet(this, _EventListenerTracker_detachedListeners, new Map(), "f");
|
|
302
|
+
__classPrivateFieldSet(this, _EventListenerTracker_originalAddEventListener, EventTarget.prototype.addEventListener, "f");
|
|
303
|
+
__classPrivateFieldSet(this, _EventListenerTracker_originalRemoveEventListener, EventTarget.prototype.removeEventListener, "f");
|
|
304
|
+
__classPrivateFieldGet(this, _EventListenerTracker_instances, "m", _EventListenerTracker_patchEventListeners).call(this);
|
|
305
|
+
}
|
|
306
|
+
static getInstance() {
|
|
307
|
+
if (!EventListenerTracker.instance) {
|
|
308
|
+
EventListenerTracker.instance = new EventListenerTracker();
|
|
309
|
+
}
|
|
310
|
+
return EventListenerTracker.instance;
|
|
311
|
+
}
|
|
312
|
+
addListener(el, type, cb, options) {
|
|
313
|
+
el.addEventListener(type, cb, options);
|
|
314
|
+
}
|
|
315
|
+
removeListener(el, type, cb, options) {
|
|
316
|
+
el.removeEventListener(type, cb, options);
|
|
317
|
+
}
|
|
318
|
+
scan(getComponentName) {
|
|
319
|
+
const detachedListeners = new Map();
|
|
320
|
+
for (const [el, listeners] of __classPrivateFieldGet(this, _EventListenerTracker_listenerMap, "f").entries()) {
|
|
321
|
+
if (el instanceof Element && !el.isConnected) {
|
|
322
|
+
for (const listener of listeners) {
|
|
323
|
+
// Skip if the callback has been garbage collected
|
|
324
|
+
if (!listener.cb.deref())
|
|
325
|
+
continue;
|
|
326
|
+
const componentName = getComponentName(new WeakRef(el));
|
|
327
|
+
if (!detachedListeners.has(componentName)) {
|
|
328
|
+
detachedListeners.set(componentName, []);
|
|
329
|
+
}
|
|
330
|
+
const groups = detachedListeners.get(componentName);
|
|
331
|
+
let group = groups === null || groups === void 0 ? void 0 : groups.find(g => g.type === listener.type);
|
|
332
|
+
if (!group) {
|
|
333
|
+
group = {
|
|
334
|
+
type: listener.type,
|
|
335
|
+
count: 0,
|
|
336
|
+
entries: [],
|
|
337
|
+
};
|
|
338
|
+
groups === null || groups === void 0 ? void 0 : groups.push(group);
|
|
339
|
+
}
|
|
340
|
+
group.count++;
|
|
341
|
+
group.entries.push(new WeakRef(listener));
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
__classPrivateFieldSet(this, _EventListenerTracker_detachedListeners, detachedListeners, "f");
|
|
346
|
+
return detachedListeners;
|
|
347
|
+
}
|
|
348
|
+
getDetachedListeners() {
|
|
349
|
+
return __classPrivateFieldGet(this, _EventListenerTracker_detachedListeners, "f");
|
|
350
|
+
}
|
|
351
|
+
destroy() {
|
|
352
|
+
__classPrivateFieldGet(this, _EventListenerTracker_instances, "m", _EventListenerTracker_unpatchEventListeners).call(this);
|
|
353
|
+
__classPrivateFieldGet(this, _EventListenerTracker_listenerMap, "f").destroy();
|
|
354
|
+
__classPrivateFieldGet(this, _EventListenerTracker_detachedListeners, "f").clear();
|
|
355
|
+
EventListenerTracker.instance = null;
|
|
356
|
+
}
|
|
261
357
|
}
|
|
358
|
+
exports.EventListenerTracker = EventListenerTracker;
|
|
359
|
+
_EventListenerTracker_listenerMap = new WeakMap(), _EventListenerTracker_detachedListeners = new WeakMap(), _EventListenerTracker_originalAddEventListener = new WeakMap(), _EventListenerTracker_originalRemoveEventListener = new WeakMap(), _EventListenerTracker_instances = new WeakSet(), _EventListenerTracker_patchEventListeners = function _EventListenerTracker_patchEventListeners() {
|
|
360
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
361
|
+
const self = this;
|
|
362
|
+
EventTarget.prototype.addEventListener = function (type, listener, options) {
|
|
363
|
+
var _a;
|
|
364
|
+
__classPrivateFieldGet(self, _EventListenerTracker_originalAddEventListener, "f").call(this, type, listener, options);
|
|
365
|
+
if (this instanceof Element) {
|
|
366
|
+
const fiber = (0, react_fiber_utils_1.getFiberNodeFromElement)(this);
|
|
367
|
+
const entry = {
|
|
368
|
+
type,
|
|
369
|
+
cb: new WeakRef(listener),
|
|
370
|
+
options,
|
|
371
|
+
fiber: fiber ? new WeakRef(fiber) : undefined,
|
|
372
|
+
};
|
|
373
|
+
const listeners = (_a = __classPrivateFieldGet(self, _EventListenerTracker_listenerMap, "f").get(this)) !== null && _a !== void 0 ? _a : [];
|
|
374
|
+
listeners.push(entry);
|
|
375
|
+
__classPrivateFieldGet(self, _EventListenerTracker_listenerMap, "f").set(this, listeners);
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
EventTarget.prototype.removeEventListener = function (type, listener, options) {
|
|
379
|
+
__classPrivateFieldGet(self, _EventListenerTracker_originalRemoveEventListener, "f").call(this, type, listener, options);
|
|
380
|
+
if (this instanceof Element) {
|
|
381
|
+
const listeners = __classPrivateFieldGet(self, _EventListenerTracker_listenerMap, "f").get(this);
|
|
382
|
+
if (listeners) {
|
|
383
|
+
const index = listeners.findIndex(entry => entry.type === type &&
|
|
384
|
+
entry.cb.deref() === listener &&
|
|
385
|
+
entry.options === options);
|
|
386
|
+
if (index !== -1) {
|
|
387
|
+
listeners.splice(index, 1);
|
|
388
|
+
}
|
|
389
|
+
if (listeners.length === 0) {
|
|
390
|
+
__classPrivateFieldGet(self, _EventListenerTracker_listenerMap, "f").delete(this);
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
__classPrivateFieldGet(self, _EventListenerTracker_listenerMap, "f").set(this, listeners);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
};
|
|
398
|
+
}, _EventListenerTracker_unpatchEventListeners = function _EventListenerTracker_unpatchEventListeners() {
|
|
399
|
+
EventTarget.prototype.addEventListener = __classPrivateFieldGet(this, _EventListenerTracker_originalAddEventListener, "f");
|
|
400
|
+
EventTarget.prototype.removeEventListener =
|
|
401
|
+
__classPrivateFieldGet(this, _EventListenerTracker_originalRemoveEventListener, "f");
|
|
402
|
+
};
|
|
403
|
+
EventListenerTracker.instance = null;
|
|
262
404
|
|
|
263
405
|
|
|
264
406
|
/***/ },
|
|
265
407
|
|
|
266
|
-
/***/
|
|
408
|
+
/***/ 302
|
|
267
409
|
(__unused_webpack_module, exports, __webpack_require__) {
|
|
268
410
|
|
|
269
411
|
|
|
@@ -300,77 +442,217 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
300
442
|
return result;
|
|
301
443
|
};
|
|
302
444
|
})();
|
|
303
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
304
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
305
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
306
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
307
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
308
|
-
};
|
|
309
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
310
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
311
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
312
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
313
|
-
};
|
|
314
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
315
|
-
var t = {};
|
|
316
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
317
|
-
t[p] = s[p];
|
|
318
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
319
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
320
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
321
|
-
t[p[i]] = s[p[i]];
|
|
322
|
-
}
|
|
323
|
-
return t;
|
|
324
|
-
};
|
|
325
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
326
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
327
|
-
};
|
|
328
|
-
var _ReactMemoryScan_instances, _ReactMemoryScan_elementWeakRefs, _ReactMemoryScan_isActivated, _ReactMemoryScan_intervalId, _ReactMemoryScan_elementToBoundingRects, _ReactMemoryScan_elementToComponentStack, _ReactMemoryScan_knownFiberNodes, _ReactMemoryScan_fiberAnalyzer, _ReactMemoryScan_isDevMode, _ReactMemoryScan_subscribers, _ReactMemoryScan_extensions, _ReactMemoryScan_scanIntervalMs, _ReactMemoryScan_domObserver, _ReactMemoryScan_eventListenerTracker, _ReactMemoryScan_isDisposed, _ReactMemoryScan_log, _ReactMemoryScan_notifySubscribers, _ReactMemoryScan_notifyExtensionsBeforeScan, _ReactMemoryScan_notifyExtensionsAfterScan, _ReactMemoryScan_scanCycle, _ReactMemoryScan_updateElementToComponentInfo, _ReactMemoryScan_getTrackedDOMRefs, _ReactMemoryScan_runGC, _ReactMemoryScan_scanEventListenerLeaks;
|
|
329
445
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
446
|
+
/**
|
|
447
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
448
|
+
*
|
|
449
|
+
* This source code is licensed under the MIT license found in the
|
|
450
|
+
* LICENSE file in the root directory of this source tree.
|
|
451
|
+
*
|
|
452
|
+
* @format
|
|
453
|
+
* @oncall memory_lab
|
|
454
|
+
*/
|
|
330
455
|
const utils = __importStar(__webpack_require__(476));
|
|
331
|
-
const react_fiber_analysis_1 = __importDefault(__webpack_require__(302));
|
|
332
456
|
const react_fiber_utils_1 = __webpack_require__(737);
|
|
333
|
-
const
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
457
|
+
const valid_component_name_1 = __webpack_require__(847);
|
|
458
|
+
class ReactFiberAnalyzer {
|
|
459
|
+
scan(elementWeakRefList, elementToComponentStack) {
|
|
460
|
+
var _a;
|
|
461
|
+
const visitedRootFibers = new Set();
|
|
462
|
+
const components = new Set();
|
|
463
|
+
const componentToFiberNodeCount = new Map();
|
|
464
|
+
const detachedComponentToFiberNodeCount = new Map();
|
|
465
|
+
const topDownVisited = new Set();
|
|
466
|
+
const analyzedFibers = new Set();
|
|
467
|
+
const fiberNodes = [];
|
|
468
|
+
let totalElements = 0;
|
|
469
|
+
let totalDetachedElements = 0;
|
|
470
|
+
function analyzeFiber(fiberNode) {
|
|
471
|
+
(0, react_fiber_utils_1.traverseFiber)(fiberNode, (fiberNode) => {
|
|
472
|
+
// skip if the fiber node has already been analyzed
|
|
473
|
+
if (analyzedFibers.has(fiberNode)) {
|
|
474
|
+
return true;
|
|
475
|
+
}
|
|
476
|
+
analyzedFibers.add(fiberNode);
|
|
477
|
+
// traverse the fiber tree up to find the component name
|
|
478
|
+
const displayName = (0, react_fiber_utils_1.getDisplayNameOfFiberNode)(fiberNode);
|
|
479
|
+
if (displayName != null && (0, valid_component_name_1.isValidComponentName)(displayName)) {
|
|
480
|
+
components.add(displayName);
|
|
481
|
+
utils.addCountbyKey(componentToFiberNodeCount, displayName, 1);
|
|
482
|
+
return true;
|
|
483
|
+
}
|
|
484
|
+
}, true);
|
|
485
|
+
}
|
|
486
|
+
for (const weakRef of elementWeakRefList) {
|
|
487
|
+
const elem = weakRef.deref();
|
|
488
|
+
if (elem == null) {
|
|
489
|
+
continue;
|
|
490
|
+
}
|
|
491
|
+
// elements stats
|
|
492
|
+
++totalElements;
|
|
493
|
+
// TODO: simplify this logic
|
|
494
|
+
if (!elem.isConnected) {
|
|
495
|
+
if (elementToComponentStack.has(elem)) {
|
|
496
|
+
const componentStack = (_a = elementToComponentStack.get(elem)) !== null && _a !== void 0 ? _a : [];
|
|
497
|
+
// set component name
|
|
498
|
+
const component = componentStack[0];
|
|
499
|
+
elem.__component_name = component;
|
|
500
|
+
utils.addCountbyKey(detachedComponentToFiberNodeCount, component, 1);
|
|
501
|
+
}
|
|
502
|
+
++totalDetachedElements;
|
|
503
|
+
}
|
|
504
|
+
// analyze fiber nodes
|
|
505
|
+
const fiberNode = (0, react_fiber_utils_1.getFiberNodeFromElement)(elem);
|
|
506
|
+
if (fiberNode == null) {
|
|
507
|
+
continue;
|
|
508
|
+
}
|
|
509
|
+
analyzeFiber(fiberNode);
|
|
510
|
+
// try to traverse each fiber node in the entire fiber tree
|
|
511
|
+
const rootFiber = (0, react_fiber_utils_1.getTopMostFiberWithChild)(fiberNode);
|
|
512
|
+
if (rootFiber == null) {
|
|
513
|
+
continue;
|
|
514
|
+
}
|
|
515
|
+
if (visitedRootFibers.has(rootFiber)) {
|
|
516
|
+
continue;
|
|
517
|
+
}
|
|
518
|
+
visitedRootFibers.add(rootFiber);
|
|
519
|
+
// start traversing fiber tree from the know root host
|
|
520
|
+
(0, react_fiber_utils_1.traverseFiber)(rootFiber, (node) => {
|
|
521
|
+
if (topDownVisited.has(node)) {
|
|
522
|
+
return true;
|
|
523
|
+
}
|
|
524
|
+
topDownVisited.add(node);
|
|
525
|
+
fiberNodes.push(new WeakRef(node));
|
|
526
|
+
analyzeFiber(node);
|
|
527
|
+
}, false);
|
|
528
|
+
}
|
|
529
|
+
topDownVisited.clear();
|
|
530
|
+
analyzedFibers.clear();
|
|
531
|
+
visitedRootFibers.clear();
|
|
532
|
+
return {
|
|
533
|
+
components,
|
|
534
|
+
componentToFiberNodeCount,
|
|
535
|
+
totalElements,
|
|
536
|
+
totalDetachedElements,
|
|
537
|
+
detachedComponentToFiberNodeCount,
|
|
538
|
+
fiberNodes,
|
|
539
|
+
leakedFibers: [],
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
exports["default"] = ReactFiberAnalyzer;
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
/***/ },
|
|
547
|
+
|
|
548
|
+
/***/ 282
|
|
549
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
553
|
+
if (k2 === undefined) k2 = k;
|
|
554
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
555
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
556
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
557
|
+
}
|
|
558
|
+
Object.defineProperty(o, k2, desc);
|
|
559
|
+
}) : (function(o, m, k, k2) {
|
|
560
|
+
if (k2 === undefined) k2 = k;
|
|
561
|
+
o[k2] = m[k];
|
|
562
|
+
}));
|
|
563
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
564
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
565
|
+
}) : function(o, v) {
|
|
566
|
+
o["default"] = v;
|
|
567
|
+
});
|
|
568
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
569
|
+
var ownKeys = function(o) {
|
|
570
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
571
|
+
var ar = [];
|
|
572
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
573
|
+
return ar;
|
|
574
|
+
};
|
|
575
|
+
return ownKeys(o);
|
|
576
|
+
};
|
|
577
|
+
return function (mod) {
|
|
578
|
+
if (mod && mod.__esModule) return mod;
|
|
579
|
+
var result = {};
|
|
580
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
581
|
+
__setModuleDefault(result, mod);
|
|
582
|
+
return result;
|
|
583
|
+
};
|
|
584
|
+
})();
|
|
585
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
586
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
587
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
588
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
589
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
590
|
+
};
|
|
591
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
592
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
593
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
594
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
595
|
+
};
|
|
596
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
597
|
+
var t = {};
|
|
598
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
599
|
+
t[p] = s[p];
|
|
600
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
601
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
602
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
603
|
+
t[p[i]] = s[p[i]];
|
|
604
|
+
}
|
|
605
|
+
return t;
|
|
606
|
+
};
|
|
607
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
608
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
609
|
+
};
|
|
610
|
+
var _ReactMemoryScan_instances, _ReactMemoryScan_elementWeakRefs, _ReactMemoryScan_isActivated, _ReactMemoryScan_intervalId, _ReactMemoryScan_elementToBoundingRects, _ReactMemoryScan_elementToComponentStack, _ReactMemoryScan_knownFiberNodes, _ReactMemoryScan_fiberAnalyzer, _ReactMemoryScan_isDevMode, _ReactMemoryScan_subscribers, _ReactMemoryScan_extensions, _ReactMemoryScan_scanIntervalMs, _ReactMemoryScan_domObserver, _ReactMemoryScan_eventListenerTracker, _ReactMemoryScan_isDisposed, _ReactMemoryScan_log, _ReactMemoryScan_notifySubscribers, _ReactMemoryScan_notifyExtensionsBeforeScan, _ReactMemoryScan_notifyExtensionsAfterScan, _ReactMemoryScan_scanCycle, _ReactMemoryScan_updateElementToComponentInfo, _ReactMemoryScan_getTrackedDOMRefs, _ReactMemoryScan_runGC, _ReactMemoryScan_scanEventListenerLeaks;
|
|
611
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
612
|
+
const utils = __importStar(__webpack_require__(476));
|
|
613
|
+
const react_fiber_analysis_1 = __importDefault(__webpack_require__(302));
|
|
614
|
+
const react_fiber_utils_1 = __webpack_require__(737);
|
|
615
|
+
const dom_observer_1 = __webpack_require__(54);
|
|
616
|
+
const config_1 = __webpack_require__(346);
|
|
617
|
+
const event_listener_tracker_1 = __webpack_require__(953);
|
|
618
|
+
class ReactMemoryScan {
|
|
619
|
+
constructor(options = {}) {
|
|
620
|
+
var _a, _b, _c, _d;
|
|
621
|
+
_ReactMemoryScan_instances.add(this);
|
|
622
|
+
_ReactMemoryScan_elementWeakRefs.set(this, void 0);
|
|
623
|
+
_ReactMemoryScan_isActivated.set(this, void 0);
|
|
624
|
+
_ReactMemoryScan_intervalId.set(this, void 0);
|
|
625
|
+
_ReactMemoryScan_elementToBoundingRects.set(this, void 0);
|
|
626
|
+
_ReactMemoryScan_elementToComponentStack.set(this, void 0);
|
|
627
|
+
_ReactMemoryScan_knownFiberNodes.set(this, void 0);
|
|
628
|
+
_ReactMemoryScan_fiberAnalyzer.set(this, void 0);
|
|
629
|
+
_ReactMemoryScan_isDevMode.set(this, void 0);
|
|
630
|
+
_ReactMemoryScan_subscribers.set(this, void 0);
|
|
631
|
+
_ReactMemoryScan_extensions.set(this, void 0);
|
|
632
|
+
_ReactMemoryScan_scanIntervalMs.set(this, void 0);
|
|
633
|
+
_ReactMemoryScan_domObserver.set(this, void 0);
|
|
634
|
+
_ReactMemoryScan_eventListenerTracker.set(this, void 0);
|
|
635
|
+
_ReactMemoryScan_isDisposed.set(this, void 0);
|
|
636
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_elementWeakRefs, [], "f");
|
|
637
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_isActivated, false, "f");
|
|
638
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_elementToBoundingRects, new WeakMap(), "f");
|
|
639
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_elementToComponentStack, new WeakMap(), "f");
|
|
640
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_knownFiberNodes, [], "f");
|
|
641
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_eventListenerTracker, options.trackEventListenerLeaks
|
|
642
|
+
? event_listener_tracker_1.EventListenerTracker.getInstance()
|
|
643
|
+
: null, "f");
|
|
644
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_intervalId, null, "f");
|
|
645
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_isDisposed, false, "f");
|
|
646
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_fiberAnalyzer, new react_fiber_analysis_1.default(), "f");
|
|
647
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_isDevMode, (_a = options.isDevMode) !== null && _a !== void 0 ? _a : false, "f");
|
|
648
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_subscribers, (_b = options.subscribers) !== null && _b !== void 0 ? _b : [], "f");
|
|
649
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_extensions, (_c = options.extensions) !== null && _c !== void 0 ? _c : [], "f");
|
|
650
|
+
__classPrivateFieldSet(this, _ReactMemoryScan_scanIntervalMs, (_d = options.scanIntervalMs) !== null && _d !== void 0 ? _d : config_1.config.performance.scanIntervalMs, "f");
|
|
651
|
+
}
|
|
652
|
+
subscribe(callback) {
|
|
653
|
+
__classPrivateFieldGet(this, _ReactMemoryScan_subscribers, "f").push(callback);
|
|
654
|
+
return () => this.unsubscribe(callback);
|
|
655
|
+
}
|
|
374
656
|
unsubscribe(callback) {
|
|
375
657
|
__classPrivateFieldSet(this, _ReactMemoryScan_subscribers, __classPrivateFieldGet(this, _ReactMemoryScan_subscribers, "f").filter(cb => cb !== callback), "f");
|
|
376
658
|
}
|
|
@@ -662,44 +944,11 @@ class LeakedFiber {
|
|
|
662
944
|
|
|
663
945
|
/***/ },
|
|
664
946
|
|
|
665
|
-
/***/
|
|
666
|
-
(__unused_webpack_module, exports
|
|
947
|
+
/***/ 847
|
|
948
|
+
(__unused_webpack_module, exports) {
|
|
667
949
|
|
|
950
|
+
var __webpack_unused_export__;
|
|
668
951
|
|
|
669
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
670
|
-
if (k2 === undefined) k2 = k;
|
|
671
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
672
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
673
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
674
|
-
}
|
|
675
|
-
Object.defineProperty(o, k2, desc);
|
|
676
|
-
}) : (function(o, m, k, k2) {
|
|
677
|
-
if (k2 === undefined) k2 = k;
|
|
678
|
-
o[k2] = m[k];
|
|
679
|
-
}));
|
|
680
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
681
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
682
|
-
}) : function(o, v) {
|
|
683
|
-
o["default"] = v;
|
|
684
|
-
});
|
|
685
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
686
|
-
var ownKeys = function(o) {
|
|
687
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
688
|
-
var ar = [];
|
|
689
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
690
|
-
return ar;
|
|
691
|
-
};
|
|
692
|
-
return ownKeys(o);
|
|
693
|
-
};
|
|
694
|
-
return function (mod) {
|
|
695
|
-
if (mod && mod.__esModule) return mod;
|
|
696
|
-
var result = {};
|
|
697
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
698
|
-
__setModuleDefault(result, mod);
|
|
699
|
-
return result;
|
|
700
|
-
};
|
|
701
|
-
})();
|
|
702
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
703
952
|
/**
|
|
704
953
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
705
954
|
*
|
|
@@ -709,103 +958,25 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
709
958
|
* @format
|
|
710
959
|
* @oncall memory_lab
|
|
711
960
|
*/
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
const
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
var _a;
|
|
718
|
-
const visitedRootFibers = new Set();
|
|
719
|
-
const components = new Set();
|
|
720
|
-
const componentToFiberNodeCount = new Map();
|
|
721
|
-
const detachedComponentToFiberNodeCount = new Map();
|
|
722
|
-
const topDownVisited = new Set();
|
|
723
|
-
const analyzedFibers = new Set();
|
|
724
|
-
const fiberNodes = [];
|
|
725
|
-
let totalElements = 0;
|
|
726
|
-
let totalDetachedElements = 0;
|
|
727
|
-
function analyzeFiber(fiberNode) {
|
|
728
|
-
(0, react_fiber_utils_1.traverseFiber)(fiberNode, (fiberNode) => {
|
|
729
|
-
// skip if the fiber node has already been analyzed
|
|
730
|
-
if (analyzedFibers.has(fiberNode)) {
|
|
731
|
-
return true;
|
|
732
|
-
}
|
|
733
|
-
analyzedFibers.add(fiberNode);
|
|
734
|
-
// traverse the fiber tree up to find the component name
|
|
735
|
-
const displayName = (0, react_fiber_utils_1.getDisplayNameOfFiberNode)(fiberNode);
|
|
736
|
-
if (displayName != null && (0, valid_component_name_1.isValidComponentName)(displayName)) {
|
|
737
|
-
components.add(displayName);
|
|
738
|
-
utils.addCountbyKey(componentToFiberNodeCount, displayName, 1);
|
|
739
|
-
return true;
|
|
740
|
-
}
|
|
741
|
-
}, true);
|
|
742
|
-
}
|
|
743
|
-
for (const weakRef of elementWeakRefList) {
|
|
744
|
-
const elem = weakRef.deref();
|
|
745
|
-
if (elem == null) {
|
|
746
|
-
continue;
|
|
747
|
-
}
|
|
748
|
-
// elements stats
|
|
749
|
-
++totalElements;
|
|
750
|
-
// TODO: simplify this logic
|
|
751
|
-
if (!elem.isConnected) {
|
|
752
|
-
if (elementToComponentStack.has(elem)) {
|
|
753
|
-
const componentStack = (_a = elementToComponentStack.get(elem)) !== null && _a !== void 0 ? _a : [];
|
|
754
|
-
// set component name
|
|
755
|
-
const component = componentStack[0];
|
|
756
|
-
elem.__component_name = component;
|
|
757
|
-
utils.addCountbyKey(detachedComponentToFiberNodeCount, component, 1);
|
|
758
|
-
}
|
|
759
|
-
++totalDetachedElements;
|
|
760
|
-
}
|
|
761
|
-
// analyze fiber nodes
|
|
762
|
-
const fiberNode = (0, react_fiber_utils_1.getFiberNodeFromElement)(elem);
|
|
763
|
-
if (fiberNode == null) {
|
|
764
|
-
continue;
|
|
765
|
-
}
|
|
766
|
-
analyzeFiber(fiberNode);
|
|
767
|
-
// try to traverse each fiber node in the entire fiber tree
|
|
768
|
-
const rootFiber = (0, react_fiber_utils_1.getTopMostFiberWithChild)(fiberNode);
|
|
769
|
-
if (rootFiber == null) {
|
|
770
|
-
continue;
|
|
771
|
-
}
|
|
772
|
-
if (visitedRootFibers.has(rootFiber)) {
|
|
773
|
-
continue;
|
|
774
|
-
}
|
|
775
|
-
visitedRootFibers.add(rootFiber);
|
|
776
|
-
// start traversing fiber tree from the know root host
|
|
777
|
-
(0, react_fiber_utils_1.traverseFiber)(rootFiber, (node) => {
|
|
778
|
-
if (topDownVisited.has(node)) {
|
|
779
|
-
return true;
|
|
780
|
-
}
|
|
781
|
-
topDownVisited.add(node);
|
|
782
|
-
fiberNodes.push(new WeakRef(node));
|
|
783
|
-
analyzeFiber(node);
|
|
784
|
-
}, false);
|
|
785
|
-
}
|
|
786
|
-
topDownVisited.clear();
|
|
787
|
-
analyzedFibers.clear();
|
|
788
|
-
visitedRootFibers.clear();
|
|
789
|
-
return {
|
|
790
|
-
components,
|
|
791
|
-
componentToFiberNodeCount,
|
|
792
|
-
totalElements,
|
|
793
|
-
totalDetachedElements,
|
|
794
|
-
detachedComponentToFiberNodeCount,
|
|
795
|
-
fiberNodes,
|
|
796
|
-
leakedFibers: [],
|
|
797
|
-
};
|
|
798
|
-
}
|
|
961
|
+
__webpack_unused_export__ = ({ value: true });
|
|
962
|
+
exports.isValidComponentName = isValidComponentName;
|
|
963
|
+
const displayNameBlockList = new Set();
|
|
964
|
+
function isValidComponentName(name) {
|
|
965
|
+
return name != null && !displayNameBlockList.has(name);
|
|
799
966
|
}
|
|
800
|
-
exports["default"] = ReactFiberAnalyzer;
|
|
801
967
|
|
|
802
968
|
|
|
803
969
|
/***/ },
|
|
804
970
|
|
|
805
|
-
/***/
|
|
806
|
-
(__unused_webpack_module, exports) {
|
|
971
|
+
/***/ 235
|
|
972
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
807
973
|
|
|
808
974
|
|
|
975
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
976
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
977
|
+
};
|
|
978
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
979
|
+
exports.createReactMemoryScan = createReactMemoryScan;
|
|
809
980
|
/**
|
|
810
981
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
811
982
|
*
|
|
@@ -815,304 +986,211 @@ exports["default"] = ReactFiberAnalyzer;
|
|
|
815
986
|
* @format
|
|
816
987
|
* @oncall memory_lab
|
|
817
988
|
*/
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
exports.getNativeWeakRefOrFallback = getNativeWeakRefOrFallback;
|
|
827
|
-
exports.isWeakMapNative = isWeakMapNative;
|
|
828
|
-
exports.isWeakSetNative = isWeakSetNative;
|
|
829
|
-
exports.isWeakRefNative = isWeakRefNative;
|
|
830
|
-
exports.isWeakAPINative = isWeakAPINative;
|
|
831
|
-
const globalScope = typeof window !== 'undefined' ? window : self;
|
|
832
|
-
const _weakMap = (_a = globalScope.WeakMap) !== null && _a !== void 0 ? _a : null;
|
|
833
|
-
const _weakMapIsNative = isWeakMapNative();
|
|
834
|
-
const _weakSet = (_b = globalScope.WeakSet) !== null && _b !== void 0 ? _b : null;
|
|
835
|
-
const _weakSetIsNative = isWeakSetNative();
|
|
836
|
-
const _weakRef = (_c = globalScope.WeakRef) !== null && _c !== void 0 ? _c : null;
|
|
837
|
-
const _weakRefIsNative = isWeakRefNative();
|
|
838
|
-
const _weakAPIsAreNative = _weakMapIsNative && _weakSetIsNative && _weakRefIsNative;
|
|
839
|
-
class WeakRefNoOp {
|
|
840
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
841
|
-
constructor(_targetObject) {
|
|
842
|
-
// to be overridden
|
|
843
|
-
}
|
|
844
|
-
deref() {
|
|
845
|
-
return undefined;
|
|
846
|
-
}
|
|
989
|
+
const react_memory_scan_1 = __importDefault(__webpack_require__(282));
|
|
990
|
+
// import { DOMVisualizationExtension } from './extensions/dom-visualization-extension';
|
|
991
|
+
function createReactMemoryScan(options = {}) {
|
|
992
|
+
return new react_memory_scan_1.default(options);
|
|
993
|
+
// const memoryScan = new ReactMemoryScan(options);
|
|
994
|
+
// const domVisualizer = new DOMVisualizationExtension(memoryScan);
|
|
995
|
+
// memoryScan.registerExtension(domVisualizer);
|
|
996
|
+
// return memoryScan;
|
|
847
997
|
}
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
/***/ },
|
|
1001
|
+
|
|
1002
|
+
/***/ 737
|
|
1003
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
1004
|
+
|
|
1005
|
+
var __webpack_unused_export__;
|
|
1006
|
+
|
|
1007
|
+
__webpack_unused_export__ = ({ value: true });
|
|
1008
|
+
exports.traverseFiber = exports.getTopMostFiberWithChild = __webpack_unused_export__ = __webpack_unused_export__ = exports.dD = __webpack_unused_export__ = exports.bv = exports.Fm = __webpack_unused_export__ = exports.JA = exports.NT = __webpack_unused_export__ = exports.UT = exports.DQ = __webpack_unused_export__ = exports.W = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = exports.IZ = exports.i$ = exports.Wb = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = void 0;
|
|
1009
|
+
exports.getFiberNodeFromElement = getFiberNodeFromElement;
|
|
1010
|
+
exports.getReactComponentStack = getReactComponentStack;
|
|
1011
|
+
exports.getDisplayNameOfFiberNode = getDisplayNameOfFiberNode;
|
|
1012
|
+
__webpack_unused_export__ = isFunctionalComponent;
|
|
1013
|
+
__webpack_unused_export__ = extractReactComponentName;
|
|
1014
|
+
const utils_1 = __webpack_require__(476);
|
|
1015
|
+
const valid_component_name_1 = __webpack_require__(847);
|
|
1016
|
+
__webpack_unused_export__ = 1;
|
|
1017
|
+
__webpack_unused_export__ = 0;
|
|
1018
|
+
__webpack_unused_export__ = 9;
|
|
1019
|
+
__webpack_unused_export__ = 13;
|
|
1020
|
+
__webpack_unused_export__ = 22;
|
|
1021
|
+
__webpack_unused_export__ = 11;
|
|
1022
|
+
__webpack_unused_export__ = 14;
|
|
1023
|
+
__webpack_unused_export__ = 15;
|
|
1024
|
+
exports.Wb = 5;
|
|
1025
|
+
exports.i$ = 26;
|
|
1026
|
+
exports.IZ = 27;
|
|
1027
|
+
__webpack_unused_export__ = 18;
|
|
1028
|
+
__webpack_unused_export__ = 6;
|
|
1029
|
+
__webpack_unused_export__ = 7;
|
|
1030
|
+
__webpack_unused_export__ = 23;
|
|
1031
|
+
__webpack_unused_export__ = 22;
|
|
1032
|
+
__webpack_unused_export__ = 3;
|
|
1033
|
+
__webpack_unused_export__ = 0xeacf;
|
|
1034
|
+
__webpack_unused_export__ = 'Symbol(react.concurrent_mode)';
|
|
1035
|
+
__webpack_unused_export__ = 'Symbol(react.async_mode)';
|
|
1036
|
+
// https://github.com/facebook/react/blob/main/packages/react-reconciler/src/ReactFiberFlags.js
|
|
1037
|
+
__webpack_unused_export__ = 0b1;
|
|
1038
|
+
exports.W = 0b10;
|
|
1039
|
+
__webpack_unused_export__ = 0b10000000;
|
|
1040
|
+
exports.DQ = 0b1000000000000;
|
|
1041
|
+
exports.UT = 0b100;
|
|
1042
|
+
__webpack_unused_export__ = 0b1000;
|
|
1043
|
+
exports.NT = 0b10000;
|
|
1044
|
+
exports.JA = 0b100000;
|
|
1045
|
+
__webpack_unused_export__ = 0b1000000000;
|
|
1046
|
+
exports.Fm = 0b10000000000;
|
|
1047
|
+
exports.bv = 0b10000000000000;
|
|
1048
|
+
__webpack_unused_export__ = exports.W |
|
|
1049
|
+
exports.UT |
|
|
1050
|
+
exports.NT |
|
|
1051
|
+
exports.JA |
|
|
1052
|
+
exports.DQ |
|
|
1053
|
+
exports.bv |
|
|
1054
|
+
exports.Fm;
|
|
1055
|
+
/**
|
|
1056
|
+
* @see https://reactnative.dev/architecture/glossary#host-view-tree-and-host-view
|
|
1057
|
+
*/
|
|
1058
|
+
const isHostFiber = (fiber) => fiber.tag === exports.Wb ||
|
|
1059
|
+
// @ts-expect-error: it exists
|
|
1060
|
+
fiber.tag === exports.i$ ||
|
|
1061
|
+
// @ts-expect-error: it exists
|
|
1062
|
+
fiber.tag === exports.IZ ||
|
|
1063
|
+
typeof fiber.type === 'string';
|
|
1064
|
+
exports.dD = isHostFiber;
|
|
1065
|
+
const getNearestHostFiber = (fiber) => {
|
|
1066
|
+
let hostFiber = (0, exports.traverseFiber)(fiber, exports.dD);
|
|
1067
|
+
if (!hostFiber) {
|
|
1068
|
+
hostFiber = (0, exports.traverseFiber)(fiber, exports.dD, true);
|
|
853
1069
|
}
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
1070
|
+
return hostFiber;
|
|
1071
|
+
};
|
|
1072
|
+
__webpack_unused_export__ = getNearestHostFiber;
|
|
1073
|
+
const getTopMostHostFiber = (fiber) => {
|
|
1074
|
+
let topMostHostFiber = null;
|
|
1075
|
+
function checkFiber(fiber) {
|
|
1076
|
+
if ((0, exports.dD)(fiber)) {
|
|
1077
|
+
topMostHostFiber = fiber;
|
|
1078
|
+
}
|
|
857
1079
|
}
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
1080
|
+
(0, exports.traverseFiber)(fiber, checkFiber, true);
|
|
1081
|
+
return topMostHostFiber;
|
|
1082
|
+
};
|
|
1083
|
+
__webpack_unused_export__ = getTopMostHostFiber;
|
|
1084
|
+
const getTopMostFiberWithChild = (fiber) => {
|
|
1085
|
+
let topMostFiber = null;
|
|
1086
|
+
function checkFiber(fiber) {
|
|
1087
|
+
if (fiber.child != null) {
|
|
1088
|
+
topMostFiber = fiber;
|
|
1089
|
+
}
|
|
861
1090
|
}
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
1091
|
+
(0, exports.traverseFiber)(fiber, checkFiber, true);
|
|
1092
|
+
return topMostFiber;
|
|
1093
|
+
};
|
|
1094
|
+
exports.getTopMostFiberWithChild = getTopMostFiberWithChild;
|
|
1095
|
+
const traverseFiber = (fiber, selector, ascending = false) => {
|
|
1096
|
+
if (!fiber) {
|
|
1097
|
+
return null;
|
|
865
1098
|
}
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
class WeakMapNoOp {
|
|
869
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
870
|
-
constructor(_iterable) {
|
|
871
|
-
// to be overridden
|
|
1099
|
+
if (selector(fiber) === true) {
|
|
1100
|
+
return fiber;
|
|
872
1101
|
}
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
1102
|
+
let next = ascending ? fiber.return : fiber.child;
|
|
1103
|
+
while (next) {
|
|
1104
|
+
const match = (0, exports.traverseFiber)(next, selector, ascending);
|
|
1105
|
+
if (match) {
|
|
1106
|
+
return match;
|
|
1107
|
+
}
|
|
1108
|
+
next = ascending ? null : next.sibling;
|
|
876
1109
|
}
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
1110
|
+
return null;
|
|
1111
|
+
};
|
|
1112
|
+
exports.traverseFiber = traverseFiber;
|
|
1113
|
+
// React internal property keys
|
|
1114
|
+
const internalKeys = [
|
|
1115
|
+
'__reactFiber$', // React 17+
|
|
1116
|
+
'__reactInternalInstance$', // React 16
|
|
1117
|
+
'_reactRootContainer', // React Root
|
|
1118
|
+
];
|
|
1119
|
+
const getOwnPropertyNames = Object.getOwnPropertyNames.bind(Object);
|
|
1120
|
+
function getFiberNodeFromElement(element) {
|
|
1121
|
+
for (const prefix of internalKeys) {
|
|
1122
|
+
// Use Object.keys only as fallback since it's slower
|
|
1123
|
+
const key = getOwnPropertyNames(element).find(k => k.startsWith(prefix));
|
|
1124
|
+
if (key) {
|
|
1125
|
+
return element[key];
|
|
1126
|
+
}
|
|
880
1127
|
}
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
1128
|
+
return null;
|
|
1129
|
+
}
|
|
1130
|
+
function getReactComponentStack(node) {
|
|
1131
|
+
const stack = [];
|
|
1132
|
+
const visited = new Set();
|
|
1133
|
+
let fiber = node;
|
|
1134
|
+
while (fiber) {
|
|
1135
|
+
if (visited.has(fiber)) {
|
|
1136
|
+
break;
|
|
1137
|
+
}
|
|
1138
|
+
visited.add(fiber);
|
|
1139
|
+
const name = getDisplayNameOfFiberNode(fiber);
|
|
1140
|
+
if (name) {
|
|
1141
|
+
stack.push(name);
|
|
1142
|
+
}
|
|
1143
|
+
fiber = fiber.return;
|
|
884
1144
|
}
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
1145
|
+
return stack;
|
|
1146
|
+
}
|
|
1147
|
+
function getDisplayNameOfFiberNode(node) {
|
|
1148
|
+
var _a, _b, _c, _d;
|
|
1149
|
+
const elementType = (_a = node.type) !== null && _a !== void 0 ? _a : node.elementType;
|
|
1150
|
+
// Try to get name from displayName or name properties
|
|
1151
|
+
let displayName = (_b = elementType === null || elementType === void 0 ? void 0 : elementType.displayName) !== null && _b !== void 0 ? _b : elementType === null || elementType === void 0 ? void 0 : elementType.name;
|
|
1152
|
+
// Handle class components and forwardRef
|
|
1153
|
+
if (displayName == null) {
|
|
1154
|
+
if (elementType === null || elementType === void 0 ? void 0 : elementType.render) {
|
|
1155
|
+
// Class components
|
|
1156
|
+
const render = elementType === null || elementType === void 0 ? void 0 : elementType.render;
|
|
1157
|
+
displayName = (_c = render === null || render === void 0 ? void 0 : render.displayName) !== null && _c !== void 0 ? _c : render === null || render === void 0 ? void 0 : render.name;
|
|
1158
|
+
}
|
|
1159
|
+
else if (elementType === null || elementType === void 0 ? void 0 : elementType.type) {
|
|
1160
|
+
// ForwardRef components
|
|
1161
|
+
displayName = (_d = elementType.type.displayName) !== null && _d !== void 0 ? _d : elementType.type.name;
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
// Handle anonymous functions
|
|
1165
|
+
if (!displayName && typeof elementType === 'function') {
|
|
1166
|
+
displayName = elementType.name;
|
|
888
1167
|
}
|
|
1168
|
+
const ret = (0, utils_1.getMeaningfulName)(extractReactComponentName(displayName));
|
|
1169
|
+
return (0, valid_component_name_1.isValidComponentName)(ret) ? ret : null;
|
|
889
1170
|
}
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
return
|
|
1171
|
+
function isFunctionalComponent(node) {
|
|
1172
|
+
const elementType = node === null || node === void 0 ? void 0 : node.elementType;
|
|
1173
|
+
return typeof elementType === 'function';
|
|
893
1174
|
}
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
return _weakSetIsNative ? _weakSet : null;
|
|
899
|
-
}
|
|
900
|
-
function getNativeWeakSetOrFallback() {
|
|
901
|
-
return _weakSetIsNative && _weakSet ? _weakSet : WeakSetNoOp;
|
|
902
|
-
}
|
|
903
|
-
function getNativeWeakRef() {
|
|
904
|
-
return _weakRefIsNative ? _weakRef : null;
|
|
905
|
-
}
|
|
906
|
-
function getNativeWeakRefOrFallback() {
|
|
907
|
-
return _weakRefIsNative && _weakRef ? _weakRef : WeakRefNoOp;
|
|
908
|
-
}
|
|
909
|
-
function normalize(input) {
|
|
910
|
-
return typeof input.replace === 'function'
|
|
911
|
-
? input.replace(/\n/g, ' ').replace(/\s+/g, ' ')
|
|
912
|
-
: null;
|
|
913
|
-
}
|
|
914
|
-
function isWeakMapNative() {
|
|
915
|
-
return (_weakMap !== null &&
|
|
916
|
-
typeof _weakMap.toString === 'function' &&
|
|
917
|
-
normalize(_weakMap.toString()) === 'function WeakMap() { [native code] }');
|
|
918
|
-
}
|
|
919
|
-
function isWeakSetNative() {
|
|
920
|
-
return (_weakSet !== null &&
|
|
921
|
-
typeof _weakSet.toString === 'function' &&
|
|
922
|
-
normalize(_weakSet.toString()) === 'function WeakSet() { [native code] }');
|
|
923
|
-
}
|
|
924
|
-
function isWeakRefNative() {
|
|
925
|
-
return (_weakRef !== null &&
|
|
926
|
-
typeof _weakRef.toString === 'function' &&
|
|
927
|
-
normalize(_weakRef.toString()) === 'function WeakRef() { [native code] }');
|
|
928
|
-
}
|
|
929
|
-
function isWeakAPINative() {
|
|
930
|
-
return _weakAPIsAreNative;
|
|
931
|
-
}
|
|
932
|
-
class WeakMapPlus {
|
|
933
|
-
constructor(options = {}) {
|
|
934
|
-
this.strongMap = null;
|
|
935
|
-
this.noopMap = false;
|
|
936
|
-
this.entriesMap = new Map();
|
|
937
|
-
this.keyToId = new WeakMap();
|
|
938
|
-
const { fallback = 'strong', cleanupMs = 1000 } = options;
|
|
939
|
-
this.isWeak = _weakAPIsAreNative;
|
|
940
|
-
this.fallbackMode = fallback;
|
|
941
|
-
if (!this.isWeak) {
|
|
942
|
-
if (fallback === 'strong') {
|
|
943
|
-
this.strongMap = new Map();
|
|
944
|
-
}
|
|
945
|
-
else if (fallback === 'noop') {
|
|
946
|
-
this.noopMap = true;
|
|
947
|
-
}
|
|
948
|
-
this.cleanupInterval = -1;
|
|
949
|
-
}
|
|
950
|
-
else {
|
|
951
|
-
this.cleanupInterval = setInterval(() => this.cleanup(), cleanupMs);
|
|
952
|
-
}
|
|
953
|
-
}
|
|
954
|
-
getOrCreateId(key) {
|
|
955
|
-
let id = this.keyToId.get(key);
|
|
956
|
-
if (!id) {
|
|
957
|
-
id = Symbol();
|
|
958
|
-
this.keyToId.set(key, id);
|
|
959
|
-
}
|
|
960
|
-
return id;
|
|
961
|
-
}
|
|
962
|
-
set(key, value) {
|
|
963
|
-
var _a;
|
|
964
|
-
if (!this.isWeak) {
|
|
965
|
-
if (this.noopMap)
|
|
966
|
-
return this;
|
|
967
|
-
(_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.set(key, value);
|
|
968
|
-
return this;
|
|
969
|
-
}
|
|
970
|
-
const id = this.getOrCreateId(key);
|
|
971
|
-
this.entriesMap.set(id, { ref: new WeakRef(key), value });
|
|
972
|
-
return this;
|
|
973
|
-
}
|
|
974
|
-
get(key) {
|
|
975
|
-
var _a, _b;
|
|
976
|
-
if (!this.isWeak) {
|
|
977
|
-
if (this.noopMap)
|
|
978
|
-
return undefined;
|
|
979
|
-
return (_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.get(key);
|
|
980
|
-
}
|
|
981
|
-
const id = this.keyToId.get(key);
|
|
982
|
-
if (!id)
|
|
983
|
-
return undefined;
|
|
984
|
-
const entry = this.entriesMap.get(id);
|
|
985
|
-
const derefKey = (_b = entry === null || entry === void 0 ? void 0 : entry.ref) === null || _b === void 0 ? void 0 : _b.deref();
|
|
986
|
-
return derefKey ? entry === null || entry === void 0 ? void 0 : entry.value : undefined;
|
|
987
|
-
}
|
|
988
|
-
has(key) {
|
|
989
|
-
var _a, _b;
|
|
990
|
-
if (!this.isWeak) {
|
|
991
|
-
if (this.noopMap)
|
|
992
|
-
return false;
|
|
993
|
-
return (_b = (_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.has(key)) !== null && _b !== void 0 ? _b : false;
|
|
994
|
-
}
|
|
995
|
-
const id = this.keyToId.get(key);
|
|
996
|
-
if (!id)
|
|
997
|
-
return false;
|
|
998
|
-
const entry = this.entriesMap.get(id);
|
|
999
|
-
return !!(entry && entry.ref.deref());
|
|
1000
|
-
}
|
|
1001
|
-
delete(key) {
|
|
1002
|
-
var _a, _b;
|
|
1003
|
-
if (!this.isWeak) {
|
|
1004
|
-
if (this.noopMap)
|
|
1005
|
-
return false;
|
|
1006
|
-
return (_b = (_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.delete(key)) !== null && _b !== void 0 ? _b : false;
|
|
1007
|
-
}
|
|
1008
|
-
const id = this.keyToId.get(key);
|
|
1009
|
-
if (!id)
|
|
1010
|
-
return false;
|
|
1011
|
-
this.keyToId.delete(key);
|
|
1012
|
-
return this.entriesMap.delete(id);
|
|
1013
|
-
}
|
|
1014
|
-
*liveEntries() {
|
|
1015
|
-
for (const [, entry] of this.entriesMap) {
|
|
1016
|
-
const key = entry.ref.deref();
|
|
1017
|
-
if (key) {
|
|
1018
|
-
yield [key, entry.value];
|
|
1019
|
-
}
|
|
1020
|
-
}
|
|
1021
|
-
}
|
|
1022
|
-
entries() {
|
|
1023
|
-
var _a, _b;
|
|
1024
|
-
if (!this.isWeak) {
|
|
1025
|
-
if (this.noopMap)
|
|
1026
|
-
return [][Symbol.iterator]();
|
|
1027
|
-
return (_b = (_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.entries()) !== null && _b !== void 0 ? _b : [][Symbol.iterator]();
|
|
1028
|
-
}
|
|
1029
|
-
return this.liveEntries();
|
|
1030
|
-
}
|
|
1031
|
-
keys() {
|
|
1032
|
-
return (function* (self) {
|
|
1033
|
-
for (const [key] of self.entries())
|
|
1034
|
-
yield key;
|
|
1035
|
-
})(this);
|
|
1036
|
-
}
|
|
1037
|
-
values() {
|
|
1038
|
-
return (function* (self) {
|
|
1039
|
-
for (const [, value] of self.entries())
|
|
1040
|
-
yield value;
|
|
1041
|
-
})(this);
|
|
1042
|
-
}
|
|
1043
|
-
[Symbol.iterator]() {
|
|
1044
|
-
return this.entries();
|
|
1045
|
-
}
|
|
1046
|
-
get size() {
|
|
1047
|
-
var _a, _b;
|
|
1048
|
-
if (!this.isWeak) {
|
|
1049
|
-
if (this.noopMap)
|
|
1050
|
-
return 0;
|
|
1051
|
-
return (_b = (_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0;
|
|
1052
|
-
}
|
|
1053
|
-
let count = 0;
|
|
1054
|
-
// eslint-disable-next-line
|
|
1055
|
-
for (const _ of this.liveEntries()) {
|
|
1056
|
-
count++;
|
|
1057
|
-
}
|
|
1058
|
-
return count;
|
|
1175
|
+
// dom-element [from component.react] --> component.react
|
|
1176
|
+
function extractReactComponentName(displayName) {
|
|
1177
|
+
if (typeof displayName !== 'string') {
|
|
1178
|
+
return null;
|
|
1059
1179
|
}
|
|
1060
|
-
|
|
1061
|
-
return
|
|
1180
|
+
if (!displayName.includes('[') || !displayName.includes(']')) {
|
|
1181
|
+
return displayName;
|
|
1062
1182
|
}
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
if (!entry.ref.deref()) {
|
|
1068
|
-
this.entriesMap.delete(id);
|
|
1069
|
-
}
|
|
1070
|
-
}
|
|
1183
|
+
const startIndex = displayName.indexOf('[');
|
|
1184
|
+
const endIndex = displayName.indexOf(']');
|
|
1185
|
+
if (startIndex > endIndex) {
|
|
1186
|
+
return displayName;
|
|
1071
1187
|
}
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
}
|
|
1188
|
+
const name = displayName.substring(startIndex + 1, endIndex);
|
|
1189
|
+
if (name.startsWith('from ')) {
|
|
1190
|
+
return name.substring('from '.length);
|
|
1076
1191
|
}
|
|
1192
|
+
return name;
|
|
1077
1193
|
}
|
|
1078
|
-
exports.WeakMapPlus = WeakMapPlus;
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
/***/ },
|
|
1082
|
-
|
|
1083
|
-
/***/ 346
|
|
1084
|
-
(__unused_webpack_module, exports) {
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
/**
|
|
1088
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
1089
|
-
*
|
|
1090
|
-
* This source code is licensed under the MIT license found in the
|
|
1091
|
-
* LICENSE file in the root directory of this source tree.
|
|
1092
|
-
*
|
|
1093
|
-
* @format
|
|
1094
|
-
* @oncall memory_lab
|
|
1095
|
-
*/
|
|
1096
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1097
|
-
exports.config = exports.featureFlags = exports.performanceConfig = void 0;
|
|
1098
|
-
// Performance Configuration
|
|
1099
|
-
exports.performanceConfig = {
|
|
1100
|
-
scanIntervalMs: 1000,
|
|
1101
|
-
maxComponentStackDepth: 100,
|
|
1102
|
-
memoryMeasurementIntervalMs: 5000,
|
|
1103
|
-
};
|
|
1104
|
-
// Feature Flags
|
|
1105
|
-
exports.featureFlags = {
|
|
1106
|
-
enableMutationObserver: true,
|
|
1107
|
-
enableMemoryTracking: true,
|
|
1108
|
-
enableComponentStack: true,
|
|
1109
|
-
enableConsoleLogs: window === null || window === void 0 ? void 0 : window.TEST_MEMORY_SCAN,
|
|
1110
|
-
};
|
|
1111
|
-
// overall Config
|
|
1112
|
-
exports.config = {
|
|
1113
|
-
performance: exports.performanceConfig,
|
|
1114
|
-
features: exports.featureFlags,
|
|
1115
|
-
};
|
|
1116
1194
|
|
|
1117
1195
|
|
|
1118
1196
|
/***/ },
|
|
@@ -1300,423 +1378,350 @@ function setRunInSession() {
|
|
|
1300
1378
|
|
|
1301
1379
|
/***/ },
|
|
1302
1380
|
|
|
1303
|
-
/***/
|
|
1381
|
+
/***/ 313
|
|
1304
1382
|
(__unused_webpack_module, exports) {
|
|
1305
1383
|
|
|
1384
|
+
var __webpack_unused_export__;
|
|
1306
1385
|
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
const
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1386
|
+
/**
|
|
1387
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
1388
|
+
*
|
|
1389
|
+
* This source code is licensed under the MIT license found in the
|
|
1390
|
+
* LICENSE file in the root directory of this source tree.
|
|
1391
|
+
*
|
|
1392
|
+
* @format
|
|
1393
|
+
* @oncall memory_lab
|
|
1394
|
+
*/
|
|
1395
|
+
var _a, _b, _c;
|
|
1396
|
+
__webpack_unused_export__ = ({ value: true });
|
|
1397
|
+
exports.WeakMapPlus = __webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = void 0;
|
|
1398
|
+
__webpack_unused_export__ = getNativeWeakMap;
|
|
1399
|
+
__webpack_unused_export__ = getNativeWeakMapOrFallback;
|
|
1400
|
+
__webpack_unused_export__ = getNativeWeakSet;
|
|
1401
|
+
__webpack_unused_export__ = getNativeWeakSetOrFallback;
|
|
1402
|
+
__webpack_unused_export__ = getNativeWeakRef;
|
|
1403
|
+
__webpack_unused_export__ = getNativeWeakRefOrFallback;
|
|
1404
|
+
__webpack_unused_export__ = isWeakMapNative;
|
|
1405
|
+
__webpack_unused_export__ = isWeakSetNative;
|
|
1406
|
+
__webpack_unused_export__ = isWeakRefNative;
|
|
1407
|
+
exports.isWeakAPINative = isWeakAPINative;
|
|
1408
|
+
const globalScope = typeof window !== 'undefined' ? window : self;
|
|
1409
|
+
const _weakMap = (_a = globalScope.WeakMap) !== null && _a !== void 0 ? _a : null;
|
|
1410
|
+
const _weakMapIsNative = isWeakMapNative();
|
|
1411
|
+
const _weakSet = (_b = globalScope.WeakSet) !== null && _b !== void 0 ? _b : null;
|
|
1412
|
+
const _weakSetIsNative = isWeakSetNative();
|
|
1413
|
+
const _weakRef = (_c = globalScope.WeakRef) !== null && _c !== void 0 ? _c : null;
|
|
1414
|
+
const _weakRefIsNative = isWeakRefNative();
|
|
1415
|
+
const _weakAPIsAreNative = _weakMapIsNative && _weakSetIsNative && _weakRefIsNative;
|
|
1416
|
+
class WeakRefNoOp {
|
|
1417
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1418
|
+
constructor(_targetObject) {
|
|
1419
|
+
// to be overridden
|
|
1341
1420
|
}
|
|
1342
|
-
(
|
|
1343
|
-
|
|
1344
|
-
function removeAllListeners(elRef) {
|
|
1345
|
-
const el = elRef.deref();
|
|
1346
|
-
if (!el)
|
|
1347
|
-
return;
|
|
1348
|
-
const listeners = listenerMap.get(el);
|
|
1349
|
-
if (!listeners)
|
|
1350
|
-
return;
|
|
1351
|
-
for (const { type, cb, options } of listeners) {
|
|
1352
|
-
el.removeEventListener(type, cb, options);
|
|
1421
|
+
deref() {
|
|
1422
|
+
return undefined;
|
|
1353
1423
|
}
|
|
1354
|
-
listenerMap.delete(el);
|
|
1355
1424
|
}
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
}
|
|
1425
|
+
__webpack_unused_export__ = WeakRefNoOp;
|
|
1426
|
+
class WeakSetNoOp {
|
|
1427
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1428
|
+
constructor(_iterable) {
|
|
1429
|
+
// to be overridden
|
|
1430
|
+
}
|
|
1431
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1432
|
+
add(_value) {
|
|
1433
|
+
return this;
|
|
1434
|
+
}
|
|
1435
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1436
|
+
delete(_value) {
|
|
1437
|
+
return false;
|
|
1438
|
+
}
|
|
1439
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1440
|
+
has(_value) {
|
|
1441
|
+
return false;
|
|
1442
|
+
}
|
|
1366
1443
|
}
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
(__unused_webpack_module, exports, __webpack_require__) {
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1376
|
-
exports.traverseFiber = exports.getTopMostFiberWithChild = exports.getTopMostHostFiber = exports.getNearestHostFiber = exports.isHostFiber = exports.MutationMask = exports.Visibility = exports.Snapshot = exports.Ref = exports.ContentReset = exports.ChildDeletion = exports.Cloned = exports.Update = exports.Hydrating = exports.DidCapture = exports.Placement = exports.PerformedWork = exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING = exports.CONCURRENT_MODE_SYMBOL_STRING = exports.CONCURRENT_MODE_NUMBER = exports.HostRoot = exports.OffscreenComponent = exports.LegacyHiddenComponent = exports.Fragment = exports.HostText = exports.DehydratedSuspenseComponent = exports.HostSingletonTag = exports.HostHoistableTag = exports.HostComponentTag = exports.SimpleMemoComponentTag = exports.MemoComponentTag = exports.ForwardRefTag = exports.OffscreenComponentTag = exports.SuspenseComponentTag = exports.ContextConsumerTag = exports.FunctionComponentTag = exports.ClassComponentTag = void 0;
|
|
1377
|
-
exports.getFiberNodeFromElement = getFiberNodeFromElement;
|
|
1378
|
-
exports.getReactComponentStack = getReactComponentStack;
|
|
1379
|
-
exports.getDisplayNameOfFiberNode = getDisplayNameOfFiberNode;
|
|
1380
|
-
exports.isFunctionalComponent = isFunctionalComponent;
|
|
1381
|
-
exports.extractReactComponentName = extractReactComponentName;
|
|
1382
|
-
const utils_1 = __webpack_require__(476);
|
|
1383
|
-
const valid_component_name_1 = __webpack_require__(847);
|
|
1384
|
-
exports.ClassComponentTag = 1;
|
|
1385
|
-
exports.FunctionComponentTag = 0;
|
|
1386
|
-
exports.ContextConsumerTag = 9;
|
|
1387
|
-
exports.SuspenseComponentTag = 13;
|
|
1388
|
-
exports.OffscreenComponentTag = 22;
|
|
1389
|
-
exports.ForwardRefTag = 11;
|
|
1390
|
-
exports.MemoComponentTag = 14;
|
|
1391
|
-
exports.SimpleMemoComponentTag = 15;
|
|
1392
|
-
exports.HostComponentTag = 5;
|
|
1393
|
-
exports.HostHoistableTag = 26;
|
|
1394
|
-
exports.HostSingletonTag = 27;
|
|
1395
|
-
exports.DehydratedSuspenseComponent = 18;
|
|
1396
|
-
exports.HostText = 6;
|
|
1397
|
-
exports.Fragment = 7;
|
|
1398
|
-
exports.LegacyHiddenComponent = 23;
|
|
1399
|
-
exports.OffscreenComponent = 22;
|
|
1400
|
-
exports.HostRoot = 3;
|
|
1401
|
-
exports.CONCURRENT_MODE_NUMBER = 0xeacf;
|
|
1402
|
-
exports.CONCURRENT_MODE_SYMBOL_STRING = 'Symbol(react.concurrent_mode)';
|
|
1403
|
-
exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING = 'Symbol(react.async_mode)';
|
|
1404
|
-
// https://github.com/facebook/react/blob/main/packages/react-reconciler/src/ReactFiberFlags.js
|
|
1405
|
-
exports.PerformedWork = 0b1;
|
|
1406
|
-
exports.Placement = 0b10;
|
|
1407
|
-
exports.DidCapture = 0b10000000;
|
|
1408
|
-
exports.Hydrating = 0b1000000000000;
|
|
1409
|
-
exports.Update = 0b100;
|
|
1410
|
-
exports.Cloned = 0b1000;
|
|
1411
|
-
exports.ChildDeletion = 0b10000;
|
|
1412
|
-
exports.ContentReset = 0b100000;
|
|
1413
|
-
exports.Ref = 0b1000000000;
|
|
1414
|
-
exports.Snapshot = 0b10000000000;
|
|
1415
|
-
exports.Visibility = 0b10000000000000;
|
|
1416
|
-
exports.MutationMask = exports.Placement |
|
|
1417
|
-
exports.Update |
|
|
1418
|
-
exports.ChildDeletion |
|
|
1419
|
-
exports.ContentReset |
|
|
1420
|
-
exports.Hydrating |
|
|
1421
|
-
exports.Visibility |
|
|
1422
|
-
exports.Snapshot;
|
|
1423
|
-
/**
|
|
1424
|
-
* @see https://reactnative.dev/architecture/glossary#host-view-tree-and-host-view
|
|
1425
|
-
*/
|
|
1426
|
-
const isHostFiber = (fiber) => fiber.tag === exports.HostComponentTag ||
|
|
1427
|
-
// @ts-expect-error: it exists
|
|
1428
|
-
fiber.tag === exports.HostHoistableTag ||
|
|
1429
|
-
// @ts-expect-error: it exists
|
|
1430
|
-
fiber.tag === exports.HostSingletonTag ||
|
|
1431
|
-
typeof fiber.type === 'string';
|
|
1432
|
-
exports.isHostFiber = isHostFiber;
|
|
1433
|
-
const getNearestHostFiber = (fiber) => {
|
|
1434
|
-
let hostFiber = (0, exports.traverseFiber)(fiber, exports.isHostFiber);
|
|
1435
|
-
if (!hostFiber) {
|
|
1436
|
-
hostFiber = (0, exports.traverseFiber)(fiber, exports.isHostFiber, true);
|
|
1444
|
+
__webpack_unused_export__ = WeakSetNoOp;
|
|
1445
|
+
class WeakMapNoOp {
|
|
1446
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1447
|
+
constructor(_iterable) {
|
|
1448
|
+
// to be overridden
|
|
1437
1449
|
}
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
const getTopMostHostFiber = (fiber) => {
|
|
1442
|
-
let topMostHostFiber = null;
|
|
1443
|
-
function checkFiber(fiber) {
|
|
1444
|
-
if ((0, exports.isHostFiber)(fiber)) {
|
|
1445
|
-
topMostHostFiber = fiber;
|
|
1446
|
-
}
|
|
1450
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1451
|
+
delete(_key) {
|
|
1452
|
+
return false;
|
|
1447
1453
|
}
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
exports.getTopMostHostFiber = getTopMostHostFiber;
|
|
1452
|
-
const getTopMostFiberWithChild = (fiber) => {
|
|
1453
|
-
let topMostFiber = null;
|
|
1454
|
-
function checkFiber(fiber) {
|
|
1455
|
-
if (fiber.child != null) {
|
|
1456
|
-
topMostFiber = fiber;
|
|
1457
|
-
}
|
|
1454
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1455
|
+
get(_key) {
|
|
1456
|
+
return undefined;
|
|
1458
1457
|
}
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
exports.getTopMostFiberWithChild = getTopMostFiberWithChild;
|
|
1463
|
-
const traverseFiber = (fiber, selector, ascending = false) => {
|
|
1464
|
-
if (!fiber) {
|
|
1465
|
-
return null;
|
|
1458
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1459
|
+
has(_key) {
|
|
1460
|
+
return false;
|
|
1466
1461
|
}
|
|
1467
|
-
|
|
1468
|
-
|
|
1462
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1463
|
+
set(_key, _value) {
|
|
1464
|
+
return this;
|
|
1469
1465
|
}
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1466
|
+
}
|
|
1467
|
+
__webpack_unused_export__ = WeakMapNoOp;
|
|
1468
|
+
function getNativeWeakMap() {
|
|
1469
|
+
return _weakMapIsNative ? _weakMap : null;
|
|
1470
|
+
}
|
|
1471
|
+
function getNativeWeakMapOrFallback() {
|
|
1472
|
+
return _weakMapIsNative && _weakMap ? _weakMap : WeakMapNoOp;
|
|
1473
|
+
}
|
|
1474
|
+
function getNativeWeakSet() {
|
|
1475
|
+
return _weakSetIsNative ? _weakSet : null;
|
|
1476
|
+
}
|
|
1477
|
+
function getNativeWeakSetOrFallback() {
|
|
1478
|
+
return _weakSetIsNative && _weakSet ? _weakSet : WeakSetNoOp;
|
|
1479
|
+
}
|
|
1480
|
+
function getNativeWeakRef() {
|
|
1481
|
+
return _weakRefIsNative ? _weakRef : null;
|
|
1482
|
+
}
|
|
1483
|
+
function getNativeWeakRefOrFallback() {
|
|
1484
|
+
return _weakRefIsNative && _weakRef ? _weakRef : WeakRefNoOp;
|
|
1485
|
+
}
|
|
1486
|
+
function normalize(input) {
|
|
1487
|
+
return typeof input.replace === 'function'
|
|
1488
|
+
? input.replace(/\n/g, ' ').replace(/\s+/g, ' ')
|
|
1489
|
+
: null;
|
|
1490
|
+
}
|
|
1491
|
+
function isWeakMapNative() {
|
|
1492
|
+
return (_weakMap !== null &&
|
|
1493
|
+
typeof _weakMap.toString === 'function' &&
|
|
1494
|
+
normalize(_weakMap.toString()) === 'function WeakMap() { [native code] }');
|
|
1495
|
+
}
|
|
1496
|
+
function isWeakSetNative() {
|
|
1497
|
+
return (_weakSet !== null &&
|
|
1498
|
+
typeof _weakSet.toString === 'function' &&
|
|
1499
|
+
normalize(_weakSet.toString()) === 'function WeakSet() { [native code] }');
|
|
1500
|
+
}
|
|
1501
|
+
function isWeakRefNative() {
|
|
1502
|
+
return (_weakRef !== null &&
|
|
1503
|
+
typeof _weakRef.toString === 'function' &&
|
|
1504
|
+
normalize(_weakRef.toString()) === 'function WeakRef() { [native code] }');
|
|
1505
|
+
}
|
|
1506
|
+
function isWeakAPINative() {
|
|
1507
|
+
return _weakAPIsAreNative;
|
|
1508
|
+
}
|
|
1509
|
+
class WeakMapPlus {
|
|
1510
|
+
constructor(options = {}) {
|
|
1511
|
+
this.strongMap = null;
|
|
1512
|
+
this.noopMap = false;
|
|
1513
|
+
this.entriesMap = new Map();
|
|
1514
|
+
this.keyToId = new WeakMap();
|
|
1515
|
+
const { fallback = 'strong', cleanupMs = 1000 } = options;
|
|
1516
|
+
this.isWeak = _weakAPIsAreNative;
|
|
1517
|
+
this.fallbackMode = fallback;
|
|
1518
|
+
if (!this.isWeak) {
|
|
1519
|
+
if (fallback === 'strong') {
|
|
1520
|
+
this.strongMap = new Map();
|
|
1521
|
+
}
|
|
1522
|
+
else if (fallback === 'noop') {
|
|
1523
|
+
this.noopMap = true;
|
|
1524
|
+
}
|
|
1525
|
+
this.cleanupInterval = -1;
|
|
1526
|
+
}
|
|
1527
|
+
else {
|
|
1528
|
+
this.cleanupInterval = setInterval(() => this.cleanup(), cleanupMs);
|
|
1475
1529
|
}
|
|
1476
|
-
next = ascending ? null : next.sibling;
|
|
1477
1530
|
}
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
'__reactFiber$', // React 17+
|
|
1484
|
-
'__reactInternalInstance$', // React 16
|
|
1485
|
-
'_reactRootContainer', // React Root
|
|
1486
|
-
];
|
|
1487
|
-
const getOwnPropertyNames = Object.getOwnPropertyNames.bind(Object);
|
|
1488
|
-
function getFiberNodeFromElement(element) {
|
|
1489
|
-
for (const prefix of internalKeys) {
|
|
1490
|
-
// Use Object.keys only as fallback since it's slower
|
|
1491
|
-
const key = getOwnPropertyNames(element).find(k => k.startsWith(prefix));
|
|
1492
|
-
if (key) {
|
|
1493
|
-
return element[key];
|
|
1531
|
+
getOrCreateId(key) {
|
|
1532
|
+
let id = this.keyToId.get(key);
|
|
1533
|
+
if (!id) {
|
|
1534
|
+
id = Symbol();
|
|
1535
|
+
this.keyToId.set(key, id);
|
|
1494
1536
|
}
|
|
1537
|
+
return id;
|
|
1495
1538
|
}
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
if (visited.has(fiber)) {
|
|
1504
|
-
break;
|
|
1539
|
+
set(key, value) {
|
|
1540
|
+
var _a;
|
|
1541
|
+
if (!this.isWeak) {
|
|
1542
|
+
if (this.noopMap)
|
|
1543
|
+
return this;
|
|
1544
|
+
(_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.set(key, value);
|
|
1545
|
+
return this;
|
|
1505
1546
|
}
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1547
|
+
const id = this.getOrCreateId(key);
|
|
1548
|
+
this.entriesMap.set(id, { ref: new WeakRef(key), value });
|
|
1549
|
+
return this;
|
|
1550
|
+
}
|
|
1551
|
+
get(key) {
|
|
1552
|
+
var _a, _b;
|
|
1553
|
+
if (!this.isWeak) {
|
|
1554
|
+
if (this.noopMap)
|
|
1555
|
+
return undefined;
|
|
1556
|
+
return (_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.get(key);
|
|
1510
1557
|
}
|
|
1511
|
-
|
|
1558
|
+
const id = this.keyToId.get(key);
|
|
1559
|
+
if (!id)
|
|
1560
|
+
return undefined;
|
|
1561
|
+
const entry = this.entriesMap.get(id);
|
|
1562
|
+
const derefKey = (_b = entry === null || entry === void 0 ? void 0 : entry.ref) === null || _b === void 0 ? void 0 : _b.deref();
|
|
1563
|
+
return derefKey ? entry === null || entry === void 0 ? void 0 : entry.value : undefined;
|
|
1512
1564
|
}
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
let displayName = (_b = elementType === null || elementType === void 0 ? void 0 : elementType.displayName) !== null && _b !== void 0 ? _b : elementType === null || elementType === void 0 ? void 0 : elementType.name;
|
|
1520
|
-
// Handle class components and forwardRef
|
|
1521
|
-
if (displayName == null) {
|
|
1522
|
-
if (elementType === null || elementType === void 0 ? void 0 : elementType.render) {
|
|
1523
|
-
// Class components
|
|
1524
|
-
const render = elementType === null || elementType === void 0 ? void 0 : elementType.render;
|
|
1525
|
-
displayName = (_c = render === null || render === void 0 ? void 0 : render.displayName) !== null && _c !== void 0 ? _c : render === null || render === void 0 ? void 0 : render.name;
|
|
1565
|
+
has(key) {
|
|
1566
|
+
var _a, _b;
|
|
1567
|
+
if (!this.isWeak) {
|
|
1568
|
+
if (this.noopMap)
|
|
1569
|
+
return false;
|
|
1570
|
+
return (_b = (_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.has(key)) !== null && _b !== void 0 ? _b : false;
|
|
1526
1571
|
}
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1572
|
+
const id = this.keyToId.get(key);
|
|
1573
|
+
if (!id)
|
|
1574
|
+
return false;
|
|
1575
|
+
const entry = this.entriesMap.get(id);
|
|
1576
|
+
return !!(entry && entry.ref.deref());
|
|
1577
|
+
}
|
|
1578
|
+
delete(key) {
|
|
1579
|
+
var _a, _b;
|
|
1580
|
+
if (!this.isWeak) {
|
|
1581
|
+
if (this.noopMap)
|
|
1582
|
+
return false;
|
|
1583
|
+
return (_b = (_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.delete(key)) !== null && _b !== void 0 ? _b : false;
|
|
1584
|
+
}
|
|
1585
|
+
const id = this.keyToId.get(key);
|
|
1586
|
+
if (!id)
|
|
1587
|
+
return false;
|
|
1588
|
+
this.keyToId.delete(key);
|
|
1589
|
+
return this.entriesMap.delete(id);
|
|
1590
|
+
}
|
|
1591
|
+
*liveEntries() {
|
|
1592
|
+
for (const [, entry] of this.entriesMap) {
|
|
1593
|
+
const key = entry.ref.deref();
|
|
1594
|
+
if (key) {
|
|
1595
|
+
yield [key, entry.value];
|
|
1596
|
+
}
|
|
1530
1597
|
}
|
|
1531
1598
|
}
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1599
|
+
entries() {
|
|
1600
|
+
var _a, _b;
|
|
1601
|
+
if (!this.isWeak) {
|
|
1602
|
+
if (this.noopMap)
|
|
1603
|
+
return [][Symbol.iterator]();
|
|
1604
|
+
return (_b = (_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.entries()) !== null && _b !== void 0 ? _b : [][Symbol.iterator]();
|
|
1605
|
+
}
|
|
1606
|
+
return this.liveEntries();
|
|
1607
|
+
}
|
|
1608
|
+
keys() {
|
|
1609
|
+
return (function* (self) {
|
|
1610
|
+
for (const [key] of self.entries())
|
|
1611
|
+
yield key;
|
|
1612
|
+
})(this);
|
|
1535
1613
|
}
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
return typeof elementType === 'function';
|
|
1542
|
-
}
|
|
1543
|
-
// dom-element [from component.react] --> component.react
|
|
1544
|
-
function extractReactComponentName(displayName) {
|
|
1545
|
-
if (typeof displayName !== 'string') {
|
|
1546
|
-
return null;
|
|
1614
|
+
values() {
|
|
1615
|
+
return (function* (self) {
|
|
1616
|
+
for (const [, value] of self.entries())
|
|
1617
|
+
yield value;
|
|
1618
|
+
})(this);
|
|
1547
1619
|
}
|
|
1548
|
-
|
|
1549
|
-
return
|
|
1620
|
+
[Symbol.iterator]() {
|
|
1621
|
+
return this.entries();
|
|
1550
1622
|
}
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1623
|
+
get size() {
|
|
1624
|
+
var _a, _b;
|
|
1625
|
+
if (!this.isWeak) {
|
|
1626
|
+
if (this.noopMap)
|
|
1627
|
+
return 0;
|
|
1628
|
+
return (_b = (_a = this.strongMap) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0;
|
|
1629
|
+
}
|
|
1630
|
+
let count = 0;
|
|
1631
|
+
// eslint-disable-next-line
|
|
1632
|
+
for (const _ of this.liveEntries()) {
|
|
1633
|
+
count++;
|
|
1634
|
+
}
|
|
1635
|
+
return count;
|
|
1555
1636
|
}
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1637
|
+
getFallbackMode() {
|
|
1638
|
+
return this.fallbackMode;
|
|
1639
|
+
}
|
|
1640
|
+
cleanup() {
|
|
1641
|
+
if (!this.isWeak)
|
|
1642
|
+
return;
|
|
1643
|
+
for (const [id, entry] of this.entriesMap) {
|
|
1644
|
+
if (!entry.ref.deref()) {
|
|
1645
|
+
this.entriesMap.delete(id);
|
|
1646
|
+
}
|
|
1647
|
+
}
|
|
1648
|
+
}
|
|
1649
|
+
destroy() {
|
|
1650
|
+
if (this.isWeak) {
|
|
1651
|
+
clearInterval(this.cleanupInterval);
|
|
1652
|
+
}
|
|
1559
1653
|
}
|
|
1560
|
-
return name;
|
|
1561
1654
|
}
|
|
1655
|
+
exports.WeakMapPlus = WeakMapPlus;
|
|
1562
1656
|
|
|
1563
1657
|
|
|
1564
1658
|
/***/ },
|
|
1565
1659
|
|
|
1566
|
-
/***/
|
|
1660
|
+
/***/ 498
|
|
1567
1661
|
(__unused_webpack_module, exports) {
|
|
1568
1662
|
|
|
1663
|
+
var __webpack_unused_export__;
|
|
1569
1664
|
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
const displayNameBlockList = new Set();
|
|
1582
|
-
function isValidComponentName(name) {
|
|
1583
|
-
return name != null && !displayNameBlockList.has(name);
|
|
1665
|
+
__webpack_unused_export__ = ({ value: true });
|
|
1666
|
+
exports.isVisualizerElement = isVisualizerElement;
|
|
1667
|
+
__webpack_unused_export__ = createVisualizerElement;
|
|
1668
|
+
__webpack_unused_export__ = tryToAttachOverlay;
|
|
1669
|
+
__webpack_unused_export__ = addTrackedListener;
|
|
1670
|
+
__webpack_unused_export__ = removeAllListeners;
|
|
1671
|
+
__webpack_unused_export__ = debounce;
|
|
1672
|
+
const VISUALIZER_DATA_ATTR = 'data-visualizer';
|
|
1673
|
+
function setVisualizerElement(element) {
|
|
1674
|
+
element.setAttribute(VISUALIZER_DATA_ATTR, 'true');
|
|
1675
|
+
element.setAttribute('data-visualcompletion', 'ignore');
|
|
1584
1676
|
}
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
(
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
if (
|
|
1595
|
-
|
|
1596
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
1597
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
1598
|
-
};
|
|
1599
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
1600
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
1601
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
1602
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
1603
|
-
};
|
|
1604
|
-
var _EventListenerTracker_instances, _EventListenerTracker_listenerMap, _EventListenerTracker_detachedListeners, _EventListenerTracker_originalAddEventListener, _EventListenerTracker_originalRemoveEventListener, _EventListenerTracker_patchEventListeners, _EventListenerTracker_unpatchEventListeners;
|
|
1605
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1606
|
-
exports.EventListenerTracker = void 0;
|
|
1607
|
-
const react_fiber_utils_1 = __webpack_require__(737);
|
|
1608
|
-
const weak_ref_utils_1 = __webpack_require__(313);
|
|
1609
|
-
class EventListenerTracker {
|
|
1610
|
-
constructor() {
|
|
1611
|
-
_EventListenerTracker_instances.add(this);
|
|
1612
|
-
_EventListenerTracker_listenerMap.set(this, void 0);
|
|
1613
|
-
_EventListenerTracker_detachedListeners.set(this, void 0);
|
|
1614
|
-
_EventListenerTracker_originalAddEventListener.set(this, void 0);
|
|
1615
|
-
_EventListenerTracker_originalRemoveEventListener.set(this, void 0);
|
|
1616
|
-
__classPrivateFieldSet(this, _EventListenerTracker_listenerMap, new weak_ref_utils_1.WeakMapPlus({ fallback: 'noop', cleanupMs: 100 }), "f");
|
|
1617
|
-
__classPrivateFieldSet(this, _EventListenerTracker_detachedListeners, new Map(), "f");
|
|
1618
|
-
__classPrivateFieldSet(this, _EventListenerTracker_originalAddEventListener, EventTarget.prototype.addEventListener, "f");
|
|
1619
|
-
__classPrivateFieldSet(this, _EventListenerTracker_originalRemoveEventListener, EventTarget.prototype.removeEventListener, "f");
|
|
1620
|
-
__classPrivateFieldGet(this, _EventListenerTracker_instances, "m", _EventListenerTracker_patchEventListeners).call(this);
|
|
1621
|
-
}
|
|
1622
|
-
static getInstance() {
|
|
1623
|
-
if (!EventListenerTracker.instance) {
|
|
1624
|
-
EventListenerTracker.instance = new EventListenerTracker();
|
|
1625
|
-
}
|
|
1626
|
-
return EventListenerTracker.instance;
|
|
1677
|
+
function isVisualizerElement(element) {
|
|
1678
|
+
return element.getAttribute(VISUALIZER_DATA_ATTR) === 'true';
|
|
1679
|
+
}
|
|
1680
|
+
function createVisualizerElement(tag) {
|
|
1681
|
+
const element = document.createElement(tag);
|
|
1682
|
+
setVisualizerElement(element);
|
|
1683
|
+
return element;
|
|
1684
|
+
}
|
|
1685
|
+
function tryToAttachOverlay(overlayDiv) {
|
|
1686
|
+
if (document.body) {
|
|
1687
|
+
document.body.appendChild(overlayDiv);
|
|
1627
1688
|
}
|
|
1628
|
-
|
|
1629
|
-
|
|
1689
|
+
}
|
|
1690
|
+
const listenerMap = new WeakMap();
|
|
1691
|
+
function addTrackedListener(elRef, type, cb, options) {
|
|
1692
|
+
var _a;
|
|
1693
|
+
const el = elRef.deref();
|
|
1694
|
+
if (!el)
|
|
1695
|
+
return;
|
|
1696
|
+
el.addEventListener(type, cb, options);
|
|
1697
|
+
if (!listenerMap.has(el)) {
|
|
1698
|
+
listenerMap.set(el, []);
|
|
1630
1699
|
}
|
|
1631
|
-
|
|
1700
|
+
(_a = listenerMap.get(el)) === null || _a === void 0 ? void 0 : _a.push({ type, cb, options });
|
|
1701
|
+
}
|
|
1702
|
+
function removeAllListeners(elRef) {
|
|
1703
|
+
const el = elRef.deref();
|
|
1704
|
+
if (!el)
|
|
1705
|
+
return;
|
|
1706
|
+
const listeners = listenerMap.get(el);
|
|
1707
|
+
if (!listeners)
|
|
1708
|
+
return;
|
|
1709
|
+
for (const { type, cb, options } of listeners) {
|
|
1632
1710
|
el.removeEventListener(type, cb, options);
|
|
1633
1711
|
}
|
|
1634
|
-
|
|
1635
|
-
const detachedListeners = new Map();
|
|
1636
|
-
for (const [el, listeners] of __classPrivateFieldGet(this, _EventListenerTracker_listenerMap, "f").entries()) {
|
|
1637
|
-
if (el instanceof Element && !el.isConnected) {
|
|
1638
|
-
for (const listener of listeners) {
|
|
1639
|
-
// Skip if the callback has been garbage collected
|
|
1640
|
-
if (!listener.cb.deref())
|
|
1641
|
-
continue;
|
|
1642
|
-
const componentName = getComponentName(new WeakRef(el));
|
|
1643
|
-
if (!detachedListeners.has(componentName)) {
|
|
1644
|
-
detachedListeners.set(componentName, []);
|
|
1645
|
-
}
|
|
1646
|
-
const groups = detachedListeners.get(componentName);
|
|
1647
|
-
let group = groups === null || groups === void 0 ? void 0 : groups.find(g => g.type === listener.type);
|
|
1648
|
-
if (!group) {
|
|
1649
|
-
group = {
|
|
1650
|
-
type: listener.type,
|
|
1651
|
-
count: 0,
|
|
1652
|
-
entries: [],
|
|
1653
|
-
};
|
|
1654
|
-
groups === null || groups === void 0 ? void 0 : groups.push(group);
|
|
1655
|
-
}
|
|
1656
|
-
group.count++;
|
|
1657
|
-
group.entries.push(new WeakRef(listener));
|
|
1658
|
-
}
|
|
1659
|
-
}
|
|
1660
|
-
}
|
|
1661
|
-
__classPrivateFieldSet(this, _EventListenerTracker_detachedListeners, detachedListeners, "f");
|
|
1662
|
-
return detachedListeners;
|
|
1663
|
-
}
|
|
1664
|
-
getDetachedListeners() {
|
|
1665
|
-
return __classPrivateFieldGet(this, _EventListenerTracker_detachedListeners, "f");
|
|
1666
|
-
}
|
|
1667
|
-
destroy() {
|
|
1668
|
-
__classPrivateFieldGet(this, _EventListenerTracker_instances, "m", _EventListenerTracker_unpatchEventListeners).call(this);
|
|
1669
|
-
__classPrivateFieldGet(this, _EventListenerTracker_listenerMap, "f").destroy();
|
|
1670
|
-
__classPrivateFieldGet(this, _EventListenerTracker_detachedListeners, "f").clear();
|
|
1671
|
-
EventListenerTracker.instance = null;
|
|
1672
|
-
}
|
|
1712
|
+
listenerMap.delete(el);
|
|
1673
1713
|
}
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
var _a;
|
|
1680
|
-
__classPrivateFieldGet(self, _EventListenerTracker_originalAddEventListener, "f").call(this, type, listener, options);
|
|
1681
|
-
if (this instanceof Element) {
|
|
1682
|
-
const fiber = (0, react_fiber_utils_1.getFiberNodeFromElement)(this);
|
|
1683
|
-
const entry = {
|
|
1684
|
-
type,
|
|
1685
|
-
cb: new WeakRef(listener),
|
|
1686
|
-
options,
|
|
1687
|
-
fiber: fiber ? new WeakRef(fiber) : undefined,
|
|
1688
|
-
};
|
|
1689
|
-
const listeners = (_a = __classPrivateFieldGet(self, _EventListenerTracker_listenerMap, "f").get(this)) !== null && _a !== void 0 ? _a : [];
|
|
1690
|
-
listeners.push(entry);
|
|
1691
|
-
__classPrivateFieldGet(self, _EventListenerTracker_listenerMap, "f").set(this, listeners);
|
|
1692
|
-
}
|
|
1693
|
-
};
|
|
1694
|
-
EventTarget.prototype.removeEventListener = function (type, listener, options) {
|
|
1695
|
-
__classPrivateFieldGet(self, _EventListenerTracker_originalRemoveEventListener, "f").call(this, type, listener, options);
|
|
1696
|
-
if (this instanceof Element) {
|
|
1697
|
-
const listeners = __classPrivateFieldGet(self, _EventListenerTracker_listenerMap, "f").get(this);
|
|
1698
|
-
if (listeners) {
|
|
1699
|
-
const index = listeners.findIndex(entry => entry.type === type &&
|
|
1700
|
-
entry.cb.deref() === listener &&
|
|
1701
|
-
entry.options === options);
|
|
1702
|
-
if (index !== -1) {
|
|
1703
|
-
listeners.splice(index, 1);
|
|
1704
|
-
}
|
|
1705
|
-
if (listeners.length === 0) {
|
|
1706
|
-
__classPrivateFieldGet(self, _EventListenerTracker_listenerMap, "f").delete(this);
|
|
1707
|
-
}
|
|
1708
|
-
else {
|
|
1709
|
-
__classPrivateFieldGet(self, _EventListenerTracker_listenerMap, "f").set(this, listeners);
|
|
1710
|
-
}
|
|
1711
|
-
}
|
|
1714
|
+
function debounce(callback, delay) {
|
|
1715
|
+
let timer = null;
|
|
1716
|
+
return (...args) => {
|
|
1717
|
+
if (timer) {
|
|
1718
|
+
clearTimeout(timer);
|
|
1712
1719
|
}
|
|
1720
|
+
timer = setTimeout(() => {
|
|
1721
|
+
callback(...args);
|
|
1722
|
+
}, delay);
|
|
1713
1723
|
};
|
|
1714
|
-
}
|
|
1715
|
-
EventTarget.prototype.addEventListener = __classPrivateFieldGet(this, _EventListenerTracker_originalAddEventListener, "f");
|
|
1716
|
-
EventTarget.prototype.removeEventListener =
|
|
1717
|
-
__classPrivateFieldGet(this, _EventListenerTracker_originalRemoveEventListener, "f");
|
|
1718
|
-
};
|
|
1719
|
-
EventListenerTracker.instance = null;
|
|
1724
|
+
}
|
|
1720
1725
|
|
|
1721
1726
|
|
|
1722
1727
|
/***/ }
|