123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- /* eslint-disable @typescript-eslint/no-unsafe-member-access */
- /* eslint-disable @typescript-eslint/no-explicit-any */
- /**
- * Helper to decycle json objects
- */
- function memoBuilder() {
- const hasWeakSet = typeof WeakSet === 'function';
- const inner = hasWeakSet ? new WeakSet() : [];
- function memoize(obj) {
- if (hasWeakSet) {
- if (inner.has(obj)) {
- return true;
- }
- inner.add(obj);
- return false;
- }
- // eslint-disable-next-line @typescript-eslint/prefer-for-of
- for (let i = 0; i < inner.length; i++) {
- const value = inner[i];
- if (value === obj) {
- return true;
- }
- }
- inner.push(obj);
- return false;
- }
- function unmemoize(obj) {
- if (hasWeakSet) {
- inner.delete(obj);
- } else {
- for (let i = 0; i < inner.length; i++) {
- if (inner[i] === obj) {
- inner.splice(i, 1);
- break;
- }
- }
- }
- }
- return [memoize, unmemoize];
- }
- export { memoBuilder };
- //# sourceMappingURL=memo.js.map
|