typetify 2.1.0 → 2.4.0

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 (225) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/README.md +108 -0
  3. package/dist/async/index.js +1 -49
  4. package/dist/async/index.mjs +1 -4
  5. package/dist/chunk-272Z3AXV.js +1 -0
  6. package/dist/chunk-2YRFWQ6M.mjs +1 -0
  7. package/dist/chunk-35CB7HNN.js +1 -0
  8. package/dist/chunk-4JG7CFRK.js +1 -0
  9. package/dist/chunk-5FBZYPQM.mjs +1 -0
  10. package/dist/chunk-5XQRYI2Q.mjs +1 -0
  11. package/dist/chunk-6HA2SN23.js +1 -0
  12. package/dist/chunk-6NWIIOHH.js +1 -0
  13. package/dist/chunk-6WGRWYAD.js +1 -0
  14. package/dist/chunk-7LBL6CYT.js +1 -0
  15. package/dist/chunk-7UMXGQE4.mjs +1 -0
  16. package/dist/chunk-7XHBEA63.js +1 -0
  17. package/dist/chunk-B3R73UK5.mjs +1 -0
  18. package/dist/chunk-BLUG7TSP.js +1 -0
  19. package/dist/chunk-EAHFED6V.mjs +1 -0
  20. package/dist/chunk-EKSHS4DL.mjs +1 -0
  21. package/dist/chunk-F76ECQKE.js +1 -0
  22. package/dist/chunk-FHCBXSNA.js +1 -0
  23. package/dist/chunk-GKOA3XGQ.js +1 -0
  24. package/dist/chunk-GQIJLGEZ.mjs +1 -0
  25. package/dist/chunk-I4YSQ4HB.js +1 -0
  26. package/dist/chunk-JZXLCA2E.mjs +1 -0
  27. package/dist/chunk-M5OMYDI7.mjs +1 -0
  28. package/dist/chunk-MB77QAOC.mjs +1 -0
  29. package/dist/chunk-MPY3WRLG.mjs +1 -0
  30. package/dist/chunk-NENRAPOL.mjs +1 -0
  31. package/dist/chunk-NOW4Q26G.mjs +1 -0
  32. package/dist/chunk-P4UNM7SF.js +1 -0
  33. package/dist/chunk-P5E2JDCX.mjs +1 -0
  34. package/dist/chunk-Q7SUL7MD.js +1 -0
  35. package/dist/chunk-QKNZICUO.mjs +1 -0
  36. package/dist/chunk-RHMANSTA.mjs +1 -0
  37. package/dist/chunk-SF64HETW.js +1 -0
  38. package/dist/chunk-T66YO63J.js +1 -0
  39. package/dist/chunk-TNK6EVQK.mjs +1 -0
  40. package/dist/chunk-TSJFKV3R.js +1 -0
  41. package/dist/chunk-TVCWWECJ.mjs +1 -0
  42. package/dist/chunk-U7MK5AR5.mjs +1 -0
  43. package/dist/chunk-W5I352FJ.js +1 -0
  44. package/dist/chunk-WAT4QJB2.js +1 -0
  45. package/dist/chunk-WCG5ODRX.mjs +1 -0
  46. package/dist/chunk-WDFIRO2J.js +1 -0
  47. package/dist/chunk-WOT6VMZA.js +1 -0
  48. package/dist/chunk-WS743BFA.js +1 -0
  49. package/dist/chunk-WWU7P2L2.mjs +1 -0
  50. package/dist/chunk-XPY5CWKZ.mjs +1 -0
  51. package/dist/collection/index.d.mts +125 -1
  52. package/dist/collection/index.d.ts +125 -1
  53. package/dist/collection/index.js +1 -125
  54. package/dist/collection/index.mjs +1 -4
  55. package/dist/color/index.d.mts +274 -0
  56. package/dist/color/index.d.ts +274 -0
  57. package/dist/color/index.js +1 -0
  58. package/dist/color/index.mjs +1 -0
  59. package/dist/core/index.js +1 -41
  60. package/dist/core/index.mjs +1 -4
  61. package/dist/decorator/index.js +1 -57
  62. package/dist/decorator/index.mjs +1 -4
  63. package/dist/dom/index.d.mts +353 -0
  64. package/dist/dom/index.d.ts +353 -0
  65. package/dist/dom/index.js +1 -0
  66. package/dist/dom/index.mjs +1 -0
  67. package/dist/dx/index.js +1 -53
  68. package/dist/dx/index.mjs +1 -4
  69. package/dist/flow/index.js +1 -50
  70. package/dist/flow/index.mjs +1 -5
  71. package/dist/fn/index.js +1 -37
  72. package/dist/fn/index.mjs +1 -4
  73. package/dist/guards/index.js +1 -233
  74. package/dist/guards/index.mjs +1 -4
  75. package/dist/index.d.mts +482 -410
  76. package/dist/index.d.ts +482 -410
  77. package/dist/index.js +3 -2507
  78. package/dist/index.mjs +3 -1546
  79. package/dist/input/index.js +1 -74
  80. package/dist/input/index.mjs +1 -5
  81. package/dist/iterator/index.js +1 -85
  82. package/dist/iterator/index.mjs +1 -4
  83. package/dist/logic/index.js +1 -201
  84. package/dist/logic/index.mjs +1 -4
  85. package/dist/math/index.js +1 -45
  86. package/dist/math/index.mjs +1 -4
  87. package/dist/narrowing/index.js +1 -141
  88. package/dist/narrowing/index.mjs +1 -4
  89. package/dist/object/index.d.mts +137 -1
  90. package/dist/object/index.d.ts +137 -1
  91. package/dist/object/index.js +1 -113
  92. package/dist/object/index.mjs +1 -4
  93. package/dist/result/index.js +1 -86
  94. package/dist/result/index.mjs +1 -5
  95. package/dist/schema/index.js +1 -110
  96. package/dist/schema/index.mjs +1 -5
  97. package/dist/storage/index.d.mts +197 -0
  98. package/dist/storage/index.d.ts +197 -0
  99. package/dist/storage/index.js +1 -0
  100. package/dist/storage/index.mjs +1 -0
  101. package/dist/string/index.d.mts +201 -1
  102. package/dist/string/index.d.ts +201 -1
  103. package/dist/string/index.js +1 -49
  104. package/dist/string/index.mjs +1 -4
  105. package/dist/typed/index.js +1 -193
  106. package/dist/typed/index.mjs +1 -4
  107. package/package.json +23 -3
  108. package/dist/async/index.js.map +0 -1
  109. package/dist/async/index.mjs.map +0 -1
  110. package/dist/chunk-2LJ6NZ6K.js +0 -108
  111. package/dist/chunk-2LJ6NZ6K.js.map +0 -1
  112. package/dist/chunk-4NXETABV.mjs +0 -116
  113. package/dist/chunk-4NXETABV.mjs.map +0 -1
  114. package/dist/chunk-6ZBTL74K.js +0 -129
  115. package/dist/chunk-6ZBTL74K.js.map +0 -1
  116. package/dist/chunk-7G4ZSMQX.js +0 -470
  117. package/dist/chunk-7G4ZSMQX.js.map +0 -1
  118. package/dist/chunk-CN3GYRJN.mjs +0 -137
  119. package/dist/chunk-CN3GYRJN.mjs.map +0 -1
  120. package/dist/chunk-CNTE6ZVH.js +0 -359
  121. package/dist/chunk-CNTE6ZVH.js.map +0 -1
  122. package/dist/chunk-CWHYQWNU.mjs +0 -224
  123. package/dist/chunk-CWHYQWNU.mjs.map +0 -1
  124. package/dist/chunk-DBENOSTA.js +0 -156
  125. package/dist/chunk-DBENOSTA.js.map +0 -1
  126. package/dist/chunk-DWIG5GF2.js +0 -135
  127. package/dist/chunk-DWIG5GF2.js.map +0 -1
  128. package/dist/chunk-EAUTTWTQ.mjs +0 -231
  129. package/dist/chunk-EAUTTWTQ.mjs.map +0 -1
  130. package/dist/chunk-FEX5C4OH.mjs +0 -1007
  131. package/dist/chunk-FEX5C4OH.mjs.map +0 -1
  132. package/dist/chunk-FN553YPU.js +0 -441
  133. package/dist/chunk-FN553YPU.js.map +0 -1
  134. package/dist/chunk-FT2EK4AM.mjs +0 -420
  135. package/dist/chunk-FT2EK4AM.mjs.map +0 -1
  136. package/dist/chunk-FXWYPHA3.mjs +0 -13
  137. package/dist/chunk-FXWYPHA3.mjs.map +0 -1
  138. package/dist/chunk-GS3PP67B.js +0 -200
  139. package/dist/chunk-GS3PP67B.js.map +0 -1
  140. package/dist/chunk-IGA3VEZM.mjs +0 -503
  141. package/dist/chunk-IGA3VEZM.mjs.map +0 -1
  142. package/dist/chunk-J5LGTIGS.mjs +0 -9
  143. package/dist/chunk-J5LGTIGS.mjs.map +0 -1
  144. package/dist/chunk-JB6UXRKD.mjs +0 -97
  145. package/dist/chunk-JB6UXRKD.mjs.map +0 -1
  146. package/dist/chunk-JQAQV75V.js +0 -561
  147. package/dist/chunk-JQAQV75V.js.map +0 -1
  148. package/dist/chunk-JQHUBZ4M.js +0 -88
  149. package/dist/chunk-JQHUBZ4M.js.map +0 -1
  150. package/dist/chunk-LT7JK7RJ.js +0 -87
  151. package/dist/chunk-LT7JK7RJ.js.map +0 -1
  152. package/dist/chunk-N6IUADIP.mjs +0 -414
  153. package/dist/chunk-N6IUADIP.mjs.map +0 -1
  154. package/dist/chunk-OEJK37LO.mjs +0 -328
  155. package/dist/chunk-OEJK37LO.mjs.map +0 -1
  156. package/dist/chunk-OKB3MS5F.js +0 -547
  157. package/dist/chunk-OKB3MS5F.js.map +0 -1
  158. package/dist/chunk-OPVES6W2.js +0 -16
  159. package/dist/chunk-OPVES6W2.js.map +0 -1
  160. package/dist/chunk-OWNUKWXV.js +0 -291
  161. package/dist/chunk-OWNUKWXV.js.map +0 -1
  162. package/dist/chunk-POD52NJ3.mjs +0 -526
  163. package/dist/chunk-POD52NJ3.mjs.map +0 -1
  164. package/dist/chunk-PQTXSQ4P.js +0 -369
  165. package/dist/chunk-PQTXSQ4P.js.map +0 -1
  166. package/dist/chunk-PZ5AY32C.js +0 -11
  167. package/dist/chunk-PZ5AY32C.js.map +0 -1
  168. package/dist/chunk-QFR7DVAJ.mjs +0 -63
  169. package/dist/chunk-QFR7DVAJ.mjs.map +0 -1
  170. package/dist/chunk-S535LAXW.js +0 -1054
  171. package/dist/chunk-S535LAXW.js.map +0 -1
  172. package/dist/chunk-SGQNLTRK.js +0 -73
  173. package/dist/chunk-SGQNLTRK.js.map +0 -1
  174. package/dist/chunk-SRDWUHDY.mjs +0 -188
  175. package/dist/chunk-SRDWUHDY.mjs.map +0 -1
  176. package/dist/chunk-TXU7NTT4.js +0 -249
  177. package/dist/chunk-TXU7NTT4.js.map +0 -1
  178. package/dist/chunk-TZEWREAC.mjs +0 -277
  179. package/dist/chunk-TZEWREAC.mjs.map +0 -1
  180. package/dist/chunk-V6CWFDIJ.mjs +0 -123
  181. package/dist/chunk-V6CWFDIJ.mjs.map +0 -1
  182. package/dist/chunk-X55EORNF.js +0 -259
  183. package/dist/chunk-X55EORNF.js.map +0 -1
  184. package/dist/chunk-YBJC5WMX.mjs +0 -341
  185. package/dist/chunk-YBJC5WMX.mjs.map +0 -1
  186. package/dist/chunk-YOPAXITF.mjs +0 -75
  187. package/dist/chunk-YOPAXITF.mjs.map +0 -1
  188. package/dist/chunk-ZE4FDBRI.mjs +0 -79
  189. package/dist/chunk-ZE4FDBRI.mjs.map +0 -1
  190. package/dist/collection/index.js.map +0 -1
  191. package/dist/collection/index.mjs.map +0 -1
  192. package/dist/core/index.js.map +0 -1
  193. package/dist/core/index.mjs.map +0 -1
  194. package/dist/decorator/index.js.map +0 -1
  195. package/dist/decorator/index.mjs.map +0 -1
  196. package/dist/dx/index.js.map +0 -1
  197. package/dist/dx/index.mjs.map +0 -1
  198. package/dist/flow/index.js.map +0 -1
  199. package/dist/flow/index.mjs.map +0 -1
  200. package/dist/fn/index.js.map +0 -1
  201. package/dist/fn/index.mjs.map +0 -1
  202. package/dist/guards/index.js.map +0 -1
  203. package/dist/guards/index.mjs.map +0 -1
  204. package/dist/index.js.map +0 -1
  205. package/dist/index.mjs.map +0 -1
  206. package/dist/input/index.js.map +0 -1
  207. package/dist/input/index.mjs.map +0 -1
  208. package/dist/iterator/index.js.map +0 -1
  209. package/dist/iterator/index.mjs.map +0 -1
  210. package/dist/logic/index.js.map +0 -1
  211. package/dist/logic/index.mjs.map +0 -1
  212. package/dist/math/index.js.map +0 -1
  213. package/dist/math/index.mjs.map +0 -1
  214. package/dist/narrowing/index.js.map +0 -1
  215. package/dist/narrowing/index.mjs.map +0 -1
  216. package/dist/object/index.js.map +0 -1
  217. package/dist/object/index.mjs.map +0 -1
  218. package/dist/result/index.js.map +0 -1
  219. package/dist/result/index.mjs.map +0 -1
  220. package/dist/schema/index.js.map +0 -1
  221. package/dist/schema/index.mjs.map +0 -1
  222. package/dist/string/index.js.map +0 -1
  223. package/dist/string/index.mjs.map +0 -1
  224. package/dist/typed/index.js.map +0 -1
  225. package/dist/typed/index.mjs.map +0 -1
@@ -1,200 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkPZ5AY32C_js = require('./chunk-PZ5AY32C.js');
4
-
5
- // src/async/index.ts
6
- var async_exports = {};
7
- chunkPZ5AY32C_js.__export(async_exports, {
8
- awaitTo: () => awaitTo,
9
- debounce: () => debounce,
10
- defer: () => defer,
11
- once: () => once,
12
- onceAsync: () => onceAsync,
13
- parallel: () => parallel,
14
- retry: () => retry,
15
- sleep: () => sleep,
16
- throttle: () => throttle,
17
- withTimeout: () => withTimeout
18
- });
19
-
20
- // src/async/awaitTo.ts
21
- async function awaitTo(promise) {
22
- try {
23
- const result = await promise;
24
- return [null, result];
25
- } catch (error) {
26
- return [error, null];
27
- }
28
- }
29
-
30
- // src/async/sleep.ts
31
- function sleep(ms) {
32
- return new Promise((resolve) => setTimeout(resolve, ms));
33
- }
34
-
35
- // src/async/withTimeout.ts
36
- async function withTimeout(promise, ms, message = "Operation timed out") {
37
- let timeoutId;
38
- const timeoutPromise = new Promise((_, reject) => {
39
- timeoutId = setTimeout(() => {
40
- reject(new Error(message));
41
- }, ms);
42
- });
43
- try {
44
- const result = await Promise.race([promise, timeoutPromise]);
45
- return result;
46
- } finally {
47
- if (timeoutId !== void 0) {
48
- clearTimeout(timeoutId);
49
- }
50
- }
51
- }
52
-
53
- // src/async/retry.ts
54
- async function retry(fn, options = {}) {
55
- const { attempts = 3, delay = 1e3, backoff = 1, onRetry } = options;
56
- let lastError;
57
- let currentDelay = delay;
58
- for (let attempt = 1; attempt <= attempts; attempt++) {
59
- try {
60
- return await fn();
61
- } catch (error) {
62
- lastError = error instanceof Error ? error : new Error(String(error));
63
- if (attempt < attempts) {
64
- onRetry?.(lastError, attempt);
65
- await new Promise((resolve) => setTimeout(resolve, currentDelay));
66
- currentDelay *= backoff;
67
- }
68
- }
69
- }
70
- throw lastError;
71
- }
72
-
73
- // src/async/debounce.ts
74
- function debounce(fn, delay) {
75
- let timeoutId;
76
- const debounced = (...args) => {
77
- if (timeoutId !== void 0) {
78
- clearTimeout(timeoutId);
79
- }
80
- timeoutId = setTimeout(() => {
81
- fn(...args);
82
- timeoutId = void 0;
83
- }, delay);
84
- };
85
- debounced.cancel = () => {
86
- if (timeoutId !== void 0) {
87
- clearTimeout(timeoutId);
88
- timeoutId = void 0;
89
- }
90
- };
91
- return debounced;
92
- }
93
-
94
- // src/async/throttle.ts
95
- function throttle(fn, interval) {
96
- let lastCall = 0;
97
- let timeoutId;
98
- const throttled = (...args) => {
99
- const now = Date.now();
100
- const remaining = interval - (now - lastCall);
101
- if (remaining <= 0) {
102
- if (timeoutId !== void 0) {
103
- clearTimeout(timeoutId);
104
- timeoutId = void 0;
105
- }
106
- lastCall = now;
107
- fn(...args);
108
- } else if (timeoutId === void 0) {
109
- timeoutId = setTimeout(() => {
110
- lastCall = Date.now();
111
- timeoutId = void 0;
112
- fn(...args);
113
- }, remaining);
114
- }
115
- };
116
- throttled.cancel = () => {
117
- if (timeoutId !== void 0) {
118
- clearTimeout(timeoutId);
119
- timeoutId = void 0;
120
- }
121
- };
122
- return throttled;
123
- }
124
-
125
- // src/async/once.ts
126
- function once(fn) {
127
- let called = false;
128
- let result;
129
- return ((...args) => {
130
- if (!called) {
131
- called = true;
132
- result = fn(...args);
133
- }
134
- return result;
135
- });
136
- }
137
-
138
- // src/async/onceAsync.ts
139
- function onceAsync(fn) {
140
- let promise;
141
- return () => {
142
- if (promise === void 0) {
143
- promise = fn();
144
- }
145
- return promise;
146
- };
147
- }
148
-
149
- // src/async/defer.ts
150
- function defer() {
151
- let resolve;
152
- let reject;
153
- const promise = new Promise((res, rej) => {
154
- resolve = res;
155
- reject = rej;
156
- });
157
- return { promise, resolve, reject };
158
- }
159
-
160
- // src/async/parallel.ts
161
- async function parallel(tasks, options = {}) {
162
- const { concurrency = Infinity } = options;
163
- if (tasks.length === 0) {
164
- return [];
165
- }
166
- if (concurrency === Infinity || concurrency >= tasks.length) {
167
- return Promise.all(tasks.map((task) => task()));
168
- }
169
- const results = new Array(tasks.length);
170
- let currentIndex = 0;
171
- async function runNext() {
172
- while (currentIndex < tasks.length) {
173
- const index = currentIndex++;
174
- const task = tasks[index];
175
- if (task) {
176
- results[index] = await task();
177
- }
178
- }
179
- }
180
- const workers = Array.from(
181
- { length: Math.min(concurrency, tasks.length) },
182
- () => runNext()
183
- );
184
- await Promise.all(workers);
185
- return results;
186
- }
187
-
188
- exports.async_exports = async_exports;
189
- exports.awaitTo = awaitTo;
190
- exports.debounce = debounce;
191
- exports.defer = defer;
192
- exports.once = once;
193
- exports.onceAsync = onceAsync;
194
- exports.parallel = parallel;
195
- exports.retry = retry;
196
- exports.sleep = sleep;
197
- exports.throttle = throttle;
198
- exports.withTimeout = withTimeout;
199
- //# sourceMappingURL=chunk-GS3PP67B.js.map
200
- //# sourceMappingURL=chunk-GS3PP67B.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/async/index.ts","../src/async/awaitTo.ts","../src/async/sleep.ts","../src/async/withTimeout.ts","../src/async/retry.ts","../src/async/debounce.ts","../src/async/throttle.ts","../src/async/once.ts","../src/async/onceAsync.ts","../src/async/defer.ts","../src/async/parallel.ts"],"names":["__export"],"mappings":"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","file":"chunk-GS3PP67B.js","sourcesContent":["export { awaitTo } from './awaitTo'\nexport { sleep } from './sleep'\nexport { withTimeout } from './withTimeout'\nexport { retry } from './retry'\nexport type { RetryOptions } from './retry'\nexport { debounce } from './debounce'\nexport { throttle } from './throttle'\nexport { once } from './once'\nexport { onceAsync } from './onceAsync'\nexport { defer } from './defer'\nexport type { Deferred } from './defer'\nexport { parallel } from './parallel'\n","/**\n * Wraps a promise to return a tuple of [error, result].\n * Eliminates the need for try/catch blocks.\n *\n * @example\n * const [error, user] = await awaitTo(fetchUser(id))\n * if (error) {\n * console.error('Failed to fetch user:', error)\n * return\n * }\n * console.log(user.name)\n */\nexport async function awaitTo<T, E = Error>(\n promise: Promise<T>\n): Promise<[E, null] | [null, T]> {\n try {\n const result = await promise\n return [null, result]\n } catch (error) {\n return [error as E, null]\n }\n}\n","/**\n * Returns a promise that resolves after the specified milliseconds.\n *\n * @example\n * await sleep(1000) // wait 1 second\n * console.log('Done waiting')\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n","/**\n * Wraps a promise with a timeout. Rejects if the promise doesn't resolve in time.\n *\n * @example\n * const result = await withTimeout(fetchData(), 5000)\n * // Throws if fetchData takes more than 5 seconds\n */\nexport async function withTimeout<T>(\n promise: Promise<T>,\n ms: number,\n message: string = 'Operation timed out'\n): Promise<T> {\n let timeoutId: ReturnType<typeof setTimeout> | undefined\n\n const timeoutPromise = new Promise<never>((_, reject) => {\n timeoutId = setTimeout(() => {\n reject(new Error(message))\n }, ms)\n })\n\n try {\n const result = await Promise.race([promise, timeoutPromise])\n return result\n } finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId)\n }\n }\n}\n","export interface RetryOptions {\n /** Maximum number of attempts (default: 3) */\n attempts?: number\n /** Delay between attempts in ms (default: 1000) */\n delay?: number\n /** Multiply delay by this factor after each attempt (default: 1) */\n backoff?: number\n /** Called when an attempt fails */\n onRetry?: (error: Error, attempt: number) => void\n}\n\n/**\n * Retries a function until it succeeds or max attempts is reached.\n *\n * @example\n * const data = await retry(() => fetchData(), {\n * attempts: 3,\n * delay: 1000,\n * backoff: 2,\n * })\n */\nexport async function retry<T>(\n fn: () => Promise<T>,\n options: RetryOptions = {}\n): Promise<T> {\n const { attempts = 3, delay = 1000, backoff = 1, onRetry } = options\n\n let lastError: Error | undefined\n let currentDelay = delay\n\n for (let attempt = 1; attempt <= attempts; attempt++) {\n try {\n return await fn()\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error))\n\n if (attempt < attempts) {\n onRetry?.(lastError, attempt)\n await new Promise((resolve) => setTimeout(resolve, currentDelay))\n currentDelay *= backoff\n }\n }\n }\n\n throw lastError\n}\n","/**\n * Creates a debounced version of a function.\n * The function will only be called after it stops being called for the specified delay.\n *\n * @example\n * const debouncedSearch = debounce((query: string) => {\n * console.log('Searching:', query)\n * }, 300)\n *\n * debouncedSearch('h')\n * debouncedSearch('he')\n * debouncedSearch('hello') // Only this one executes after 300ms\n */\nexport function debounce<T extends (...args: Parameters<T>) => void>(\n fn: T,\n delay: number\n): ((...args: Parameters<T>) => void) & { cancel: () => void } {\n let timeoutId: ReturnType<typeof setTimeout> | undefined\n\n const debounced = (...args: Parameters<T>): void => {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId)\n }\n\n timeoutId = setTimeout(() => {\n fn(...args)\n timeoutId = undefined\n }, delay)\n }\n\n debounced.cancel = (): void => {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId)\n timeoutId = undefined\n }\n }\n\n return debounced\n}\n","/**\n * Creates a throttled version of a function.\n * The function will only be called at most once per specified interval.\n *\n * @example\n * const throttledScroll = throttle(() => {\n * console.log('Scroll event')\n * }, 100)\n *\n * window.addEventListener('scroll', throttledScroll)\n */\nexport function throttle<T extends (...args: Parameters<T>) => void>(\n fn: T,\n interval: number\n): ((...args: Parameters<T>) => void) & { cancel: () => void } {\n let lastCall = 0\n let timeoutId: ReturnType<typeof setTimeout> | undefined\n\n const throttled = (...args: Parameters<T>): void => {\n const now = Date.now()\n const remaining = interval - (now - lastCall)\n\n if (remaining <= 0) {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId)\n timeoutId = undefined\n }\n lastCall = now\n fn(...args)\n } else if (timeoutId === undefined) {\n timeoutId = setTimeout(() => {\n lastCall = Date.now()\n timeoutId = undefined\n fn(...args)\n }, remaining)\n }\n }\n\n throttled.cancel = (): void => {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId)\n timeoutId = undefined\n }\n }\n\n return throttled\n}\n","/**\n * Creates a function that can only be called once.\n * Subsequent calls return the result of the first call.\n *\n * @example\n * const initialize = once(() => {\n * console.log('Initializing...')\n * return { ready: true }\n * })\n *\n * initialize() // logs 'Initializing...', returns { ready: true }\n * initialize() // returns { ready: true } without logging\n */\nexport function once<T extends (...args: Parameters<T>) => ReturnType<T>>(\n fn: T\n): T {\n let called = false\n let result: ReturnType<T>\n\n return ((...args: Parameters<T>): ReturnType<T> => {\n if (!called) {\n called = true\n result = fn(...args)\n }\n return result\n }) as T\n}\n","/**\n * Creates an async function that can only be called once.\n * Subsequent calls return the same promise.\n * Useful for initialization that should only happen once.\n *\n * @example\n * const loadConfig = onceAsync(async () => {\n * const response = await fetch('/config')\n * return response.json()\n * })\n *\n * // Both calls return the same promise\n * const config1 = await loadConfig()\n * const config2 = await loadConfig()\n */\nexport function onceAsync<T>(fn: () => Promise<T>): () => Promise<T> {\n let promise: Promise<T> | undefined\n\n return (): Promise<T> => {\n if (promise === undefined) {\n promise = fn()\n }\n return promise\n }\n}\n","export interface Deferred<T> {\n promise: Promise<T>\n resolve: (value: T | PromiseLike<T>) => void\n reject: (reason?: unknown) => void\n}\n\n/**\n * Creates a deferred promise that can be resolved or rejected externally.\n *\n * @example\n * const deferred = defer<string>()\n *\n * setTimeout(() => {\n * deferred.resolve('Done!')\n * }, 1000)\n *\n * const result = await deferred.promise\n */\nexport function defer<T>(): Deferred<T> {\n let resolve!: (value: T | PromiseLike<T>) => void\n let reject!: (reason?: unknown) => void\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n\n return { promise, resolve, reject }\n}\n","/**\n * Runs async functions in parallel with a concurrency limit.\n *\n * @example\n * const urls = ['url1', 'url2', 'url3', 'url4', 'url5']\n * const results = await parallel(\n * urls.map(url => () => fetch(url)),\n * { concurrency: 2 }\n * )\n */\nexport async function parallel<T>(\n tasks: readonly (() => Promise<T>)[],\n options: { concurrency?: number } = {}\n): Promise<T[]> {\n const { concurrency = Infinity } = options\n\n if (tasks.length === 0) {\n return []\n }\n\n if (concurrency === Infinity || concurrency >= tasks.length) {\n return Promise.all(tasks.map((task) => task()))\n }\n\n const results: T[] = new Array(tasks.length)\n let currentIndex = 0\n\n async function runNext(): Promise<void> {\n while (currentIndex < tasks.length) {\n const index = currentIndex++\n const task = tasks[index]\n if (task) {\n results[index] = await task()\n }\n }\n }\n\n const workers = Array.from(\n { length: Math.min(concurrency, tasks.length) },\n () => runNext()\n )\n\n await Promise.all(workers)\n\n return results\n}\n"]}