1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- Object.defineProperty(exports, '__esModule', { value: true });
- /* 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];
- }
- exports.memoBuilder = memoBuilder;
- //# sourceMappingURL=memo.js.map
|