lifecycleion 0.0.1

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.
Files changed (177) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +125 -0
  3. package/dist/index.cjs +7 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +2 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +5 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/lib/arrays.cjs +95 -0
  10. package/dist/lib/arrays.cjs.map +1 -0
  11. package/dist/lib/arrays.d.cts +15 -0
  12. package/dist/lib/arrays.d.ts +15 -0
  13. package/dist/lib/arrays.js +63 -0
  14. package/dist/lib/arrays.js.map +1 -0
  15. package/dist/lib/ascii-tables/index.cjs +642 -0
  16. package/dist/lib/ascii-tables/index.cjs.map +1 -0
  17. package/dist/lib/ascii-tables/index.d.cts +66 -0
  18. package/dist/lib/ascii-tables/index.d.ts +66 -0
  19. package/dist/lib/ascii-tables/index.js +603 -0
  20. package/dist/lib/ascii-tables/index.js.map +1 -0
  21. package/dist/lib/clamp.cjs +41 -0
  22. package/dist/lib/clamp.cjs.map +1 -0
  23. package/dist/lib/clamp.d.cts +26 -0
  24. package/dist/lib/clamp.d.ts +26 -0
  25. package/dist/lib/clamp.js +15 -0
  26. package/dist/lib/clamp.js.map +1 -0
  27. package/dist/lib/constants.cjs +73 -0
  28. package/dist/lib/constants.cjs.map +1 -0
  29. package/dist/lib/constants.d.cts +17 -0
  30. package/dist/lib/constants.d.ts +17 -0
  31. package/dist/lib/constants.js +34 -0
  32. package/dist/lib/constants.js.map +1 -0
  33. package/dist/lib/curly-brackets.cjs +77 -0
  34. package/dist/lib/curly-brackets.cjs.map +1 -0
  35. package/dist/lib/curly-brackets.d.cts +17 -0
  36. package/dist/lib/curly-brackets.d.ts +17 -0
  37. package/dist/lib/curly-brackets.js +52 -0
  38. package/dist/lib/curly-brackets.js.map +1 -0
  39. package/dist/lib/deep-clone.cjs +87 -0
  40. package/dist/lib/deep-clone.cjs.map +1 -0
  41. package/dist/lib/deep-clone.d.cts +19 -0
  42. package/dist/lib/deep-clone.d.ts +19 -0
  43. package/dist/lib/deep-clone.js +62 -0
  44. package/dist/lib/deep-clone.js.map +1 -0
  45. package/dist/lib/error-to-string.cjs +743 -0
  46. package/dist/lib/error-to-string.cjs.map +1 -0
  47. package/dist/lib/error-to-string.d.cts +3 -0
  48. package/dist/lib/error-to-string.d.ts +3 -0
  49. package/dist/lib/error-to-string.js +706 -0
  50. package/dist/lib/error-to-string.js.map +1 -0
  51. package/dist/lib/event-emitter.cjs +899 -0
  52. package/dist/lib/event-emitter.cjs.map +1 -0
  53. package/dist/lib/event-emitter.d.cts +78 -0
  54. package/dist/lib/event-emitter.d.ts +78 -0
  55. package/dist/lib/event-emitter.js +861 -0
  56. package/dist/lib/event-emitter.js.map +1 -0
  57. package/dist/lib/id-helpers.cjs +205 -0
  58. package/dist/lib/id-helpers.cjs.map +1 -0
  59. package/dist/lib/id-helpers.d.cts +198 -0
  60. package/dist/lib/id-helpers.d.ts +198 -0
  61. package/dist/lib/id-helpers.js +170 -0
  62. package/dist/lib/id-helpers.js.map +1 -0
  63. package/dist/lib/is-boolean.cjs +33 -0
  64. package/dist/lib/is-boolean.cjs.map +1 -0
  65. package/dist/lib/is-boolean.d.cts +19 -0
  66. package/dist/lib/is-boolean.d.ts +19 -0
  67. package/dist/lib/is-boolean.js +8 -0
  68. package/dist/lib/is-boolean.js.map +1 -0
  69. package/dist/lib/is-function.cjs +33 -0
  70. package/dist/lib/is-function.cjs.map +1 -0
  71. package/dist/lib/is-function.d.cts +3 -0
  72. package/dist/lib/is-function.d.ts +3 -0
  73. package/dist/lib/is-function.js +8 -0
  74. package/dist/lib/is-function.js.map +1 -0
  75. package/dist/lib/is-number.cjs +38 -0
  76. package/dist/lib/is-number.cjs.map +1 -0
  77. package/dist/lib/is-number.d.cts +38 -0
  78. package/dist/lib/is-number.d.ts +38 -0
  79. package/dist/lib/is-number.js +12 -0
  80. package/dist/lib/is-number.js.map +1 -0
  81. package/dist/lib/is-plain-object.cjs +33 -0
  82. package/dist/lib/is-plain-object.cjs.map +1 -0
  83. package/dist/lib/is-plain-object.d.cts +20 -0
  84. package/dist/lib/is-plain-object.d.ts +20 -0
  85. package/dist/lib/is-plain-object.js +8 -0
  86. package/dist/lib/is-plain-object.js.map +1 -0
  87. package/dist/lib/is-promise.cjs +34 -0
  88. package/dist/lib/is-promise.cjs.map +1 -0
  89. package/dist/lib/is-promise.d.cts +3 -0
  90. package/dist/lib/is-promise.d.ts +3 -0
  91. package/dist/lib/is-promise.js +9 -0
  92. package/dist/lib/is-promise.js.map +1 -0
  93. package/dist/lib/json-helpers.cjs +49 -0
  94. package/dist/lib/json-helpers.cjs.map +1 -0
  95. package/dist/lib/json-helpers.d.cts +10 -0
  96. package/dist/lib/json-helpers.d.ts +10 -0
  97. package/dist/lib/json-helpers.js +22 -0
  98. package/dist/lib/json-helpers.js.map +1 -0
  99. package/dist/lib/lifecycle-manager/index.cjs +5594 -0
  100. package/dist/lib/lifecycle-manager/index.cjs.map +1 -0
  101. package/dist/lib/lifecycle-manager/index.d.cts +2044 -0
  102. package/dist/lib/lifecycle-manager/index.d.ts +2044 -0
  103. package/dist/lib/lifecycle-manager/index.js +5543 -0
  104. package/dist/lib/lifecycle-manager/index.js.map +1 -0
  105. package/dist/lib/logger/index.cjs +2514 -0
  106. package/dist/lib/logger/index.cjs.map +1 -0
  107. package/dist/lib/logger/index.d.cts +630 -0
  108. package/dist/lib/logger/index.d.ts +630 -0
  109. package/dist/lib/logger/index.js +2470 -0
  110. package/dist/lib/logger/index.js.map +1 -0
  111. package/dist/lib/padding-utils.cjs +77 -0
  112. package/dist/lib/padding-utils.cjs.map +1 -0
  113. package/dist/lib/padding-utils.d.cts +44 -0
  114. package/dist/lib/padding-utils.d.ts +44 -0
  115. package/dist/lib/padding-utils.js +46 -0
  116. package/dist/lib/padding-utils.js.map +1 -0
  117. package/dist/lib/process-signal-manager.cjs +1306 -0
  118. package/dist/lib/process-signal-manager.cjs.map +1 -0
  119. package/dist/lib/process-signal-manager.d.cts +305 -0
  120. package/dist/lib/process-signal-manager.d.ts +305 -0
  121. package/dist/lib/process-signal-manager.js +1269 -0
  122. package/dist/lib/process-signal-manager.js.map +1 -0
  123. package/dist/lib/promise-protected-resolver.cjs +828 -0
  124. package/dist/lib/promise-protected-resolver.cjs.map +1 -0
  125. package/dist/lib/promise-protected-resolver.d.cts +17 -0
  126. package/dist/lib/promise-protected-resolver.d.ts +17 -0
  127. package/dist/lib/promise-protected-resolver.js +791 -0
  128. package/dist/lib/promise-protected-resolver.js.map +1 -0
  129. package/dist/lib/retry-utils/index.cjs +2183 -0
  130. package/dist/lib/retry-utils/index.cjs.map +1 -0
  131. package/dist/lib/retry-utils/index.d.cts +321 -0
  132. package/dist/lib/retry-utils/index.d.ts +321 -0
  133. package/dist/lib/retry-utils/index.js +2133 -0
  134. package/dist/lib/retry-utils/index.js.map +1 -0
  135. package/dist/lib/safe-handle-callback.cjs +818 -0
  136. package/dist/lib/safe-handle-callback.cjs.map +1 -0
  137. package/dist/lib/safe-handle-callback.d.cts +43 -0
  138. package/dist/lib/safe-handle-callback.d.ts +43 -0
  139. package/dist/lib/safe-handle-callback.js +780 -0
  140. package/dist/lib/safe-handle-callback.js.map +1 -0
  141. package/dist/lib/serialize-error/index.cjs +93 -0
  142. package/dist/lib/serialize-error/index.cjs.map +1 -0
  143. package/dist/lib/serialize-error/index.d.cts +26 -0
  144. package/dist/lib/serialize-error/index.d.ts +26 -0
  145. package/dist/lib/serialize-error/index.js +64 -0
  146. package/dist/lib/serialize-error/index.js.map +1 -0
  147. package/dist/lib/single-event-observer.cjs +841 -0
  148. package/dist/lib/single-event-observer.cjs.map +1 -0
  149. package/dist/lib/single-event-observer.d.cts +54 -0
  150. package/dist/lib/single-event-observer.d.ts +54 -0
  151. package/dist/lib/single-event-observer.js +803 -0
  152. package/dist/lib/single-event-observer.js.map +1 -0
  153. package/dist/lib/sleep.cjs +37 -0
  154. package/dist/lib/sleep.cjs.map +1 -0
  155. package/dist/lib/sleep.d.cts +11 -0
  156. package/dist/lib/sleep.d.ts +11 -0
  157. package/dist/lib/sleep.js +12 -0
  158. package/dist/lib/sleep.js.map +1 -0
  159. package/dist/lib/strings.cjs +186 -0
  160. package/dist/lib/strings.cjs.map +1 -0
  161. package/dist/lib/strings.d.cts +107 -0
  162. package/dist/lib/strings.d.ts +107 -0
  163. package/dist/lib/strings.js +149 -0
  164. package/dist/lib/strings.js.map +1 -0
  165. package/dist/lib/tmp-dir.cjs +254 -0
  166. package/dist/lib/tmp-dir.cjs.map +1 -0
  167. package/dist/lib/tmp-dir.d.cts +63 -0
  168. package/dist/lib/tmp-dir.d.ts +63 -0
  169. package/dist/lib/tmp-dir.js +211 -0
  170. package/dist/lib/tmp-dir.js.map +1 -0
  171. package/dist/lib/unix-time-helpers.cjs +53 -0
  172. package/dist/lib/unix-time-helpers.cjs.map +1 -0
  173. package/dist/lib/unix-time-helpers.d.cts +56 -0
  174. package/dist/lib/unix-time-helpers.d.ts +56 -0
  175. package/dist/lib/unix-time-helpers.js +24 -0
  176. package/dist/lib/unix-time-helpers.js.map +1 -0
  177. package/package.json +220 -0
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/deep-clone.ts
21
+ var deep_clone_exports = {};
22
+ __export(deep_clone_exports, {
23
+ deepClone: () => deepClone
24
+ });
25
+ module.exports = __toCommonJS(deep_clone_exports);
26
+ function deepClone(obj) {
27
+ return cloneInternal(obj, /* @__PURE__ */ new WeakMap());
28
+ }
29
+ function cloneInternal(obj, seen) {
30
+ if (obj === null || typeof obj !== "object") {
31
+ return obj;
32
+ }
33
+ if (seen.has(obj)) {
34
+ return seen.get(obj);
35
+ }
36
+ if (obj instanceof Date) {
37
+ return new Date(obj);
38
+ }
39
+ if (obj instanceof RegExp) {
40
+ const flags = obj.flags;
41
+ const cloned2 = new RegExp(obj.source, flags);
42
+ cloned2.lastIndex = obj.lastIndex;
43
+ return cloned2;
44
+ }
45
+ if (obj instanceof Map) {
46
+ const cloned2 = /* @__PURE__ */ new Map();
47
+ seen.set(obj, cloned2);
48
+ for (const [key, value] of obj) {
49
+ cloned2.set(cloneInternal(key, seen), cloneInternal(value, seen));
50
+ }
51
+ return cloned2;
52
+ }
53
+ if (obj instanceof Set) {
54
+ const cloned2 = /* @__PURE__ */ new Set();
55
+ seen.set(obj, cloned2);
56
+ for (const value of obj) {
57
+ cloned2.add(cloneInternal(value, seen));
58
+ }
59
+ return cloned2;
60
+ }
61
+ if (ArrayBuffer.isView(obj) && !(obj instanceof DataView)) {
62
+ const typedArray = obj;
63
+ const cloned2 = typedArray.slice();
64
+ return cloned2;
65
+ }
66
+ if (Array.isArray(obj)) {
67
+ const cloned2 = [];
68
+ seen.set(obj, cloned2);
69
+ for (const item of obj) {
70
+ cloned2.push(cloneInternal(item, seen));
71
+ }
72
+ return cloned2;
73
+ }
74
+ const cloned = {};
75
+ seen.set(obj, cloned);
76
+ for (const key in obj) {
77
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
78
+ cloned[key] = cloneInternal(obj[key], seen);
79
+ }
80
+ }
81
+ return cloned;
82
+ }
83
+ // Annotate the CommonJS export names for ESM import in node:
84
+ 0 && (module.exports = {
85
+ deepClone
86
+ });
87
+ //# sourceMappingURL=deep-clone.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/deep-clone.ts"],"sourcesContent":["/**\n * Deep clone utility\n *\n * Creates a deep copy of a value, recursively cloning nested structures.\n * Handles most common data types including objects, arrays, dates, regexes,\n * Maps, Sets, and typed arrays.\n *\n * Note: Functions are returned by reference (not cloned). Circular references\n * are detected and handled to prevent infinite recursion.\n */\n\n/**\n * Deep clone an object or value\n *\n * @param obj - The value to clone\n * @returns A deep clone of the input value\n */\nexport function deepClone<T>(obj: T): T {\n return cloneInternal(obj, new WeakMap());\n}\n\nfunction cloneInternal<T>(obj: T, seen: WeakMap<object, unknown>): T {\n // Primitives and null/undefined return as-is\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n // Check for circular references\n if (seen.has(obj as object)) {\n return seen.get(obj as object) as T;\n }\n\n // Handle Date\n if (obj instanceof Date) {\n return new Date(obj) as T;\n }\n\n // Handle RegExp\n if (obj instanceof RegExp) {\n const flags = obj.flags;\n const cloned = new RegExp(obj.source, flags);\n cloned.lastIndex = obj.lastIndex;\n return cloned as T;\n }\n\n // Handle Map\n if (obj instanceof Map) {\n const cloned = new Map();\n seen.set(obj as object, cloned);\n\n for (const [key, value] of obj) {\n cloned.set(cloneInternal(key, seen), cloneInternal(value, seen));\n }\n\n return cloned as T;\n }\n\n // Handle Set\n if (obj instanceof Set) {\n const cloned = new Set();\n seen.set(obj as object, cloned);\n\n for (const value of obj) {\n cloned.add(cloneInternal(value, seen));\n }\n\n return cloned as T;\n }\n\n // Handle typed arrays\n if (ArrayBuffer.isView(obj) && !(obj instanceof DataView)) {\n const typedArray = obj as unknown as\n | Int8Array\n | Uint8Array\n | Uint8ClampedArray\n | Int16Array\n | Uint16Array\n | Int32Array\n | Uint32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n const cloned = typedArray.slice();\n return cloned as T;\n }\n\n // Handle Array\n if (Array.isArray(obj)) {\n const cloned: unknown[] = [];\n seen.set(obj as object, cloned);\n\n for (const item of obj) {\n cloned.push(cloneInternal(item, seen));\n }\n\n return cloned as T;\n }\n\n // Handle plain objects\n const cloned: Record<string, unknown> = {};\n seen.set(obj as object, cloned);\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = cloneInternal((obj as Record<string, unknown>)[key], seen);\n }\n }\n\n return cloned as T;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBO,SAAS,UAAa,KAAW;AACtC,SAAO,cAAc,KAAK,oBAAI,QAAQ,CAAC;AACzC;AAEA,SAAS,cAAiB,KAAQ,MAAmC;AAEnE,MAAI,QAAQ,QAAQ,OAAO,QAAQ,UAAU;AAC3C,WAAO;AAAA,EACT;AAGA,MAAI,KAAK,IAAI,GAAa,GAAG;AAC3B,WAAO,KAAK,IAAI,GAAa;AAAA,EAC/B;AAGA,MAAI,eAAe,MAAM;AACvB,WAAO,IAAI,KAAK,GAAG;AAAA,EACrB;AAGA,MAAI,eAAe,QAAQ;AACzB,UAAM,QAAQ,IAAI;AAClB,UAAMA,UAAS,IAAI,OAAO,IAAI,QAAQ,KAAK;AAC3C,IAAAA,QAAO,YAAY,IAAI;AACvB,WAAOA;AAAA,EACT;AAGA,MAAI,eAAe,KAAK;AACtB,UAAMA,UAAS,oBAAI,IAAI;AACvB,SAAK,IAAI,KAAeA,OAAM;AAE9B,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK;AAC9B,MAAAA,QAAO,IAAI,cAAc,KAAK,IAAI,GAAG,cAAc,OAAO,IAAI,CAAC;AAAA,IACjE;AAEA,WAAOA;AAAA,EACT;AAGA,MAAI,eAAe,KAAK;AACtB,UAAMA,UAAS,oBAAI,IAAI;AACvB,SAAK,IAAI,KAAeA,OAAM;AAE9B,eAAW,SAAS,KAAK;AACvB,MAAAA,QAAO,IAAI,cAAc,OAAO,IAAI,CAAC;AAAA,IACvC;AAEA,WAAOA;AAAA,EACT;AAGA,MAAI,YAAY,OAAO,GAAG,KAAK,EAAE,eAAe,WAAW;AACzD,UAAM,aAAa;AAYnB,UAAMA,UAAS,WAAW,MAAM;AAChC,WAAOA;AAAA,EACT;AAGA,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,UAAMA,UAAoB,CAAC;AAC3B,SAAK,IAAI,KAAeA,OAAM;AAE9B,eAAW,QAAQ,KAAK;AACtB,MAAAA,QAAO,KAAK,cAAc,MAAM,IAAI,CAAC;AAAA,IACvC;AAEA,WAAOA;AAAA,EACT;AAGA,QAAM,SAAkC,CAAC;AACzC,OAAK,IAAI,KAAe,MAAM;AAE9B,aAAW,OAAO,KAAK;AACrB,QAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAClD,aAAO,GAAG,IAAI,cAAe,IAAgC,GAAG,GAAG,IAAI;AAAA,IACzE;AAAA,EACF;AAEA,SAAO;AACT;","names":["cloned"]}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Deep clone utility
3
+ *
4
+ * Creates a deep copy of a value, recursively cloning nested structures.
5
+ * Handles most common data types including objects, arrays, dates, regexes,
6
+ * Maps, Sets, and typed arrays.
7
+ *
8
+ * Note: Functions are returned by reference (not cloned). Circular references
9
+ * are detected and handled to prevent infinite recursion.
10
+ */
11
+ /**
12
+ * Deep clone an object or value
13
+ *
14
+ * @param obj - The value to clone
15
+ * @returns A deep clone of the input value
16
+ */
17
+ declare function deepClone<T>(obj: T): T;
18
+
19
+ export { deepClone };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Deep clone utility
3
+ *
4
+ * Creates a deep copy of a value, recursively cloning nested structures.
5
+ * Handles most common data types including objects, arrays, dates, regexes,
6
+ * Maps, Sets, and typed arrays.
7
+ *
8
+ * Note: Functions are returned by reference (not cloned). Circular references
9
+ * are detected and handled to prevent infinite recursion.
10
+ */
11
+ /**
12
+ * Deep clone an object or value
13
+ *
14
+ * @param obj - The value to clone
15
+ * @returns A deep clone of the input value
16
+ */
17
+ declare function deepClone<T>(obj: T): T;
18
+
19
+ export { deepClone };
@@ -0,0 +1,62 @@
1
+ // src/lib/deep-clone.ts
2
+ function deepClone(obj) {
3
+ return cloneInternal(obj, /* @__PURE__ */ new WeakMap());
4
+ }
5
+ function cloneInternal(obj, seen) {
6
+ if (obj === null || typeof obj !== "object") {
7
+ return obj;
8
+ }
9
+ if (seen.has(obj)) {
10
+ return seen.get(obj);
11
+ }
12
+ if (obj instanceof Date) {
13
+ return new Date(obj);
14
+ }
15
+ if (obj instanceof RegExp) {
16
+ const flags = obj.flags;
17
+ const cloned2 = new RegExp(obj.source, flags);
18
+ cloned2.lastIndex = obj.lastIndex;
19
+ return cloned2;
20
+ }
21
+ if (obj instanceof Map) {
22
+ const cloned2 = /* @__PURE__ */ new Map();
23
+ seen.set(obj, cloned2);
24
+ for (const [key, value] of obj) {
25
+ cloned2.set(cloneInternal(key, seen), cloneInternal(value, seen));
26
+ }
27
+ return cloned2;
28
+ }
29
+ if (obj instanceof Set) {
30
+ const cloned2 = /* @__PURE__ */ new Set();
31
+ seen.set(obj, cloned2);
32
+ for (const value of obj) {
33
+ cloned2.add(cloneInternal(value, seen));
34
+ }
35
+ return cloned2;
36
+ }
37
+ if (ArrayBuffer.isView(obj) && !(obj instanceof DataView)) {
38
+ const typedArray = obj;
39
+ const cloned2 = typedArray.slice();
40
+ return cloned2;
41
+ }
42
+ if (Array.isArray(obj)) {
43
+ const cloned2 = [];
44
+ seen.set(obj, cloned2);
45
+ for (const item of obj) {
46
+ cloned2.push(cloneInternal(item, seen));
47
+ }
48
+ return cloned2;
49
+ }
50
+ const cloned = {};
51
+ seen.set(obj, cloned);
52
+ for (const key in obj) {
53
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
54
+ cloned[key] = cloneInternal(obj[key], seen);
55
+ }
56
+ }
57
+ return cloned;
58
+ }
59
+ export {
60
+ deepClone
61
+ };
62
+ //# sourceMappingURL=deep-clone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/deep-clone.ts"],"sourcesContent":["/**\n * Deep clone utility\n *\n * Creates a deep copy of a value, recursively cloning nested structures.\n * Handles most common data types including objects, arrays, dates, regexes,\n * Maps, Sets, and typed arrays.\n *\n * Note: Functions are returned by reference (not cloned). Circular references\n * are detected and handled to prevent infinite recursion.\n */\n\n/**\n * Deep clone an object or value\n *\n * @param obj - The value to clone\n * @returns A deep clone of the input value\n */\nexport function deepClone<T>(obj: T): T {\n return cloneInternal(obj, new WeakMap());\n}\n\nfunction cloneInternal<T>(obj: T, seen: WeakMap<object, unknown>): T {\n // Primitives and null/undefined return as-is\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n // Check for circular references\n if (seen.has(obj as object)) {\n return seen.get(obj as object) as T;\n }\n\n // Handle Date\n if (obj instanceof Date) {\n return new Date(obj) as T;\n }\n\n // Handle RegExp\n if (obj instanceof RegExp) {\n const flags = obj.flags;\n const cloned = new RegExp(obj.source, flags);\n cloned.lastIndex = obj.lastIndex;\n return cloned as T;\n }\n\n // Handle Map\n if (obj instanceof Map) {\n const cloned = new Map();\n seen.set(obj as object, cloned);\n\n for (const [key, value] of obj) {\n cloned.set(cloneInternal(key, seen), cloneInternal(value, seen));\n }\n\n return cloned as T;\n }\n\n // Handle Set\n if (obj instanceof Set) {\n const cloned = new Set();\n seen.set(obj as object, cloned);\n\n for (const value of obj) {\n cloned.add(cloneInternal(value, seen));\n }\n\n return cloned as T;\n }\n\n // Handle typed arrays\n if (ArrayBuffer.isView(obj) && !(obj instanceof DataView)) {\n const typedArray = obj as unknown as\n | Int8Array\n | Uint8Array\n | Uint8ClampedArray\n | Int16Array\n | Uint16Array\n | Int32Array\n | Uint32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n const cloned = typedArray.slice();\n return cloned as T;\n }\n\n // Handle Array\n if (Array.isArray(obj)) {\n const cloned: unknown[] = [];\n seen.set(obj as object, cloned);\n\n for (const item of obj) {\n cloned.push(cloneInternal(item, seen));\n }\n\n return cloned as T;\n }\n\n // Handle plain objects\n const cloned: Record<string, unknown> = {};\n seen.set(obj as object, cloned);\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = cloneInternal((obj as Record<string, unknown>)[key], seen);\n }\n }\n\n return cloned as T;\n}\n"],"mappings":";AAiBO,SAAS,UAAa,KAAW;AACtC,SAAO,cAAc,KAAK,oBAAI,QAAQ,CAAC;AACzC;AAEA,SAAS,cAAiB,KAAQ,MAAmC;AAEnE,MAAI,QAAQ,QAAQ,OAAO,QAAQ,UAAU;AAC3C,WAAO;AAAA,EACT;AAGA,MAAI,KAAK,IAAI,GAAa,GAAG;AAC3B,WAAO,KAAK,IAAI,GAAa;AAAA,EAC/B;AAGA,MAAI,eAAe,MAAM;AACvB,WAAO,IAAI,KAAK,GAAG;AAAA,EACrB;AAGA,MAAI,eAAe,QAAQ;AACzB,UAAM,QAAQ,IAAI;AAClB,UAAMA,UAAS,IAAI,OAAO,IAAI,QAAQ,KAAK;AAC3C,IAAAA,QAAO,YAAY,IAAI;AACvB,WAAOA;AAAA,EACT;AAGA,MAAI,eAAe,KAAK;AACtB,UAAMA,UAAS,oBAAI,IAAI;AACvB,SAAK,IAAI,KAAeA,OAAM;AAE9B,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK;AAC9B,MAAAA,QAAO,IAAI,cAAc,KAAK,IAAI,GAAG,cAAc,OAAO,IAAI,CAAC;AAAA,IACjE;AAEA,WAAOA;AAAA,EACT;AAGA,MAAI,eAAe,KAAK;AACtB,UAAMA,UAAS,oBAAI,IAAI;AACvB,SAAK,IAAI,KAAeA,OAAM;AAE9B,eAAW,SAAS,KAAK;AACvB,MAAAA,QAAO,IAAI,cAAc,OAAO,IAAI,CAAC;AAAA,IACvC;AAEA,WAAOA;AAAA,EACT;AAGA,MAAI,YAAY,OAAO,GAAG,KAAK,EAAE,eAAe,WAAW;AACzD,UAAM,aAAa;AAYnB,UAAMA,UAAS,WAAW,MAAM;AAChC,WAAOA;AAAA,EACT;AAGA,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,UAAMA,UAAoB,CAAC;AAC3B,SAAK,IAAI,KAAeA,OAAM;AAE9B,eAAW,QAAQ,KAAK;AACtB,MAAAA,QAAO,KAAK,cAAc,MAAM,IAAI,CAAC;AAAA,IACvC;AAEA,WAAOA;AAAA,EACT;AAGA,QAAM,SAAkC,CAAC;AACzC,OAAK,IAAI,KAAe,MAAM;AAE9B,aAAW,OAAO,KAAK;AACrB,QAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAClD,aAAO,GAAG,IAAI,cAAe,IAAgC,GAAG,GAAG,IAAI;AAAA,IACzE;AAAA,EACF;AAEA,SAAO;AACT;","names":["cloned"]}