MCPcopy Create free account
hub / github.com/chhoumann/quickadd / deepCloneFallback

Function deepCloneFallback

src/utils/deepClone.ts:16–117  ·  view source on GitHub ↗
(value: unknown, seen: Map<unknown, unknown>)

Source from the content-addressed store, hash-verified

14}
15
16function deepCloneFallback(value: unknown, seen: Map<unknown, unknown>): unknown {
17 if (value === null || typeof value !== "object") {
18 return value;
19 }
20
21 if (seen.has(value)) {
22 return seen.get(value);
23 }
24
25 if (value instanceof Date) {
26 const cloned = new Date(value.getTime());
27 seen.set(value, cloned);
28 return cloned;
29 }
30
31 if (Array.isArray(value)) {
32 const cloned: unknown[] = [];
33 seen.set(value, cloned);
34 for (const item of value) {
35 cloned.push(deepCloneFallback(item, seen));
36 }
37 return cloned;
38 }
39
40 if (value instanceof Map) {
41 const cloned = new Map();
42 seen.set(value, cloned);
43 for (const [key, nestedValue] of value.entries()) {
44 cloned.set(
45 deepCloneFallback(key, seen),
46 deepCloneFallback(nestedValue, seen),
47 );
48 }
49 return cloned;
50 }
51
52 if (value instanceof Set) {
53 const cloned = new Set();
54 seen.set(value, cloned);
55 for (const item of value.values()) {
56 cloned.add(deepCloneFallback(item, seen));
57 }
58 return cloned;
59 }
60
61 if (value instanceof RegExp) {
62 const cloned = new RegExp(value.source, value.flags);
63 cloned.lastIndex = value.lastIndex;
64 seen.set(value, cloned);
65 return cloned;
66 }
67
68 if (value instanceof ArrayBuffer) {
69 const cloned = value.slice(0);
70 seen.set(value, cloned);
71 return cloned;
72 }
73

Callers 1

deepCloneFunction · 0.85

Calls 5

pushMethod · 0.80
addMethod · 0.80
createMethod · 0.80
getMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected