typetify 0.1.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.
- package/LICENSE +21 -0
- package/README.md +327 -0
- package/dist/async/index.d.mts +152 -0
- package/dist/async/index.d.ts +152 -0
- package/dist/async/index.js +49 -0
- package/dist/async/index.js.map +1 -0
- package/dist/async/index.mjs +4 -0
- package/dist/async/index.mjs.map +1 -0
- package/dist/chunk-2LJ6NZ6K.js +108 -0
- package/dist/chunk-2LJ6NZ6K.js.map +1 -0
- package/dist/chunk-44Y5JSGU.js +145 -0
- package/dist/chunk-44Y5JSGU.js.map +1 -0
- package/dist/chunk-4NXETABV.mjs +116 -0
- package/dist/chunk-4NXETABV.mjs.map +1 -0
- package/dist/chunk-6ZBTL74K.js +129 -0
- package/dist/chunk-6ZBTL74K.js.map +1 -0
- package/dist/chunk-CN3GYRJN.mjs +137 -0
- package/dist/chunk-CN3GYRJN.mjs.map +1 -0
- package/dist/chunk-CNTE6ZVH.js +359 -0
- package/dist/chunk-CNTE6ZVH.js.map +1 -0
- package/dist/chunk-DBENOSTA.js +156 -0
- package/dist/chunk-DBENOSTA.js.map +1 -0
- package/dist/chunk-DWIG5GF2.js +135 -0
- package/dist/chunk-DWIG5GF2.js.map +1 -0
- package/dist/chunk-EAUTTWTQ.mjs +231 -0
- package/dist/chunk-EAUTTWTQ.mjs.map +1 -0
- package/dist/chunk-FXWYPHA3.mjs +13 -0
- package/dist/chunk-FXWYPHA3.mjs.map +1 -0
- package/dist/chunk-GS3PP67B.js +200 -0
- package/dist/chunk-GS3PP67B.js.map +1 -0
- package/dist/chunk-J5LGTIGS.mjs +9 -0
- package/dist/chunk-J5LGTIGS.mjs.map +1 -0
- package/dist/chunk-JAOGY4JO.mjs +1007 -0
- package/dist/chunk-JAOGY4JO.mjs.map +1 -0
- package/dist/chunk-JB6UXRKD.mjs +97 -0
- package/dist/chunk-JB6UXRKD.mjs.map +1 -0
- package/dist/chunk-JQHUBZ4M.js +88 -0
- package/dist/chunk-JQHUBZ4M.js.map +1 -0
- package/dist/chunk-L3M7LGKL.mjs +128 -0
- package/dist/chunk-L3M7LGKL.mjs.map +1 -0
- package/dist/chunk-LT7JK7RJ.js +87 -0
- package/dist/chunk-LT7JK7RJ.js.map +1 -0
- package/dist/chunk-OEJK37LO.mjs +328 -0
- package/dist/chunk-OEJK37LO.mjs.map +1 -0
- package/dist/chunk-OPVES6W2.js +16 -0
- package/dist/chunk-OPVES6W2.js.map +1 -0
- package/dist/chunk-OWNUKWXV.js +291 -0
- package/dist/chunk-OWNUKWXV.js.map +1 -0
- package/dist/chunk-PQTXSQ4P.js +369 -0
- package/dist/chunk-PQTXSQ4P.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +11 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-QFR7DVAJ.mjs +63 -0
- package/dist/chunk-QFR7DVAJ.mjs.map +1 -0
- package/dist/chunk-SGQNLTRK.js +73 -0
- package/dist/chunk-SGQNLTRK.js.map +1 -0
- package/dist/chunk-SIA5BSVY.js +1054 -0
- package/dist/chunk-SIA5BSVY.js.map +1 -0
- package/dist/chunk-SRDWUHDY.mjs +188 -0
- package/dist/chunk-SRDWUHDY.mjs.map +1 -0
- package/dist/chunk-TXU7NTT4.js +249 -0
- package/dist/chunk-TXU7NTT4.js.map +1 -0
- package/dist/chunk-TZEWREAC.mjs +277 -0
- package/dist/chunk-TZEWREAC.mjs.map +1 -0
- package/dist/chunk-V6CWFDIJ.mjs +123 -0
- package/dist/chunk-V6CWFDIJ.mjs.map +1 -0
- package/dist/chunk-YBJC5WMX.mjs +341 -0
- package/dist/chunk-YBJC5WMX.mjs.map +1 -0
- package/dist/chunk-YOPAXITF.mjs +75 -0
- package/dist/chunk-YOPAXITF.mjs.map +1 -0
- package/dist/chunk-ZE4FDBRI.mjs +79 -0
- package/dist/chunk-ZE4FDBRI.mjs.map +1 -0
- package/dist/collection/index.d.mts +291 -0
- package/dist/collection/index.d.ts +291 -0
- package/dist/collection/index.js +125 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/index.mjs +4 -0
- package/dist/collection/index.mjs.map +1 -0
- package/dist/core/index.d.mts +85 -0
- package/dist/core/index.d.ts +85 -0
- package/dist/core/index.js +41 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/index.mjs +4 -0
- package/dist/core/index.mjs.map +1 -0
- package/dist/decorator/index.d.mts +165 -0
- package/dist/decorator/index.d.ts +165 -0
- package/dist/decorator/index.js +57 -0
- package/dist/decorator/index.js.map +1 -0
- package/dist/decorator/index.mjs +4 -0
- package/dist/decorator/index.mjs.map +1 -0
- package/dist/dx/index.d.mts +125 -0
- package/dist/dx/index.d.ts +125 -0
- package/dist/dx/index.js +53 -0
- package/dist/dx/index.js.map +1 -0
- package/dist/dx/index.mjs +4 -0
- package/dist/dx/index.mjs.map +1 -0
- package/dist/flow/index.d.mts +165 -0
- package/dist/flow/index.d.ts +165 -0
- package/dist/flow/index.js +50 -0
- package/dist/flow/index.js.map +1 -0
- package/dist/flow/index.mjs +5 -0
- package/dist/flow/index.mjs.map +1 -0
- package/dist/fn/index.d.mts +77 -0
- package/dist/fn/index.d.ts +77 -0
- package/dist/fn/index.js +37 -0
- package/dist/fn/index.js.map +1 -0
- package/dist/fn/index.mjs +4 -0
- package/dist/fn/index.mjs.map +1 -0
- package/dist/guards/index.d.mts +165 -0
- package/dist/guards/index.d.ts +165 -0
- package/dist/guards/index.js +69 -0
- package/dist/guards/index.js.map +1 -0
- package/dist/guards/index.mjs +4 -0
- package/dist/guards/index.mjs.map +1 -0
- package/dist/index.d.mts +228 -0
- package/dist/index.d.ts +228 -0
- package/dist/index.js +775 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +51 -0
- package/dist/index.mjs.map +1 -0
- package/dist/input/index.d.mts +185 -0
- package/dist/input/index.d.ts +185 -0
- package/dist/input/index.js +74 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/index.mjs +5 -0
- package/dist/input/index.mjs.map +1 -0
- package/dist/iterator/index.d.mts +209 -0
- package/dist/iterator/index.d.ts +209 -0
- package/dist/iterator/index.js +522 -0
- package/dist/iterator/index.js.map +1 -0
- package/dist/iterator/index.mjs +502 -0
- package/dist/iterator/index.mjs.map +1 -0
- package/dist/logic/index.d.mts +531 -0
- package/dist/logic/index.d.ts +531 -0
- package/dist/logic/index.js +416 -0
- package/dist/logic/index.js.map +1 -0
- package/dist/logic/index.mjs +367 -0
- package/dist/logic/index.mjs.map +1 -0
- package/dist/math/index.d.mts +86 -0
- package/dist/math/index.d.ts +86 -0
- package/dist/math/index.js +45 -0
- package/dist/math/index.js.map +1 -0
- package/dist/math/index.mjs +4 -0
- package/dist/math/index.mjs.map +1 -0
- package/dist/narrowing/index.d.mts +429 -0
- package/dist/narrowing/index.d.ts +429 -0
- package/dist/narrowing/index.js +220 -0
- package/dist/narrowing/index.js.map +1 -0
- package/dist/narrowing/index.mjs +186 -0
- package/dist/narrowing/index.mjs.map +1 -0
- package/dist/object/index.d.mts +327 -0
- package/dist/object/index.d.ts +327 -0
- package/dist/object/index.js +113 -0
- package/dist/object/index.js.map +1 -0
- package/dist/object/index.mjs +4 -0
- package/dist/object/index.mjs.map +1 -0
- package/dist/result/index.d.mts +201 -0
- package/dist/result/index.d.ts +201 -0
- package/dist/result/index.js +86 -0
- package/dist/result/index.js.map +1 -0
- package/dist/result/index.mjs +5 -0
- package/dist/result/index.mjs.map +1 -0
- package/dist/schema/index.d.mts +216 -0
- package/dist/schema/index.d.ts +216 -0
- package/dist/schema/index.js +410 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/index.mjs +384 -0
- package/dist/schema/index.mjs.map +1 -0
- package/dist/string/index.d.mts +102 -0
- package/dist/string/index.d.ts +102 -0
- package/dist/string/index.js +49 -0
- package/dist/string/index.js.map +1 -0
- package/dist/string/index.mjs +4 -0
- package/dist/string/index.mjs.map +1 -0
- package/dist/typed/index.d.mts +1962 -0
- package/dist/typed/index.d.ts +1962 -0
- package/dist/typed/index.js +193 -0
- package/dist/typed/index.js.map +1 -0
- package/dist/typed/index.mjs +4 -0
- package/dist/typed/index.mjs.map +1 -0
- package/dist/types-Db0vauC3.d.mts +258 -0
- package/dist/types-Db0vauC3.d.ts +258 -0
- package/dist/types-VsDp2t8s.d.mts +30 -0
- package/dist/types-VsDp2t8s.d.ts +30 -0
- package/package.json +157 -0
|
@@ -0,0 +1,200 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __export = (target, all) => {
|
|
3
|
+
for (var name in all)
|
|
4
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export { __export };
|
|
8
|
+
//# sourceMappingURL=chunk-J5LGTIGS.mjs.map
|
|
9
|
+
//# sourceMappingURL=chunk-J5LGTIGS.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-J5LGTIGS.mjs"}
|