@jdsalasc/solvejs-async 1.5.2 → 1.7.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/README.md +43 -19
- package/dist/cjs/index.cjs +162 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.d.ts +46 -0
- package/dist/esm/index.js +159 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,23 +7,24 @@ Zero-dependency async/concurrency utilities for JavaScript and TypeScript.
|
|
|
7
7
|
|
|
8
8
|
## Utilities
|
|
9
9
|
|
|
10
|
-
- `sleep`
|
|
11
|
-
- `timeout`
|
|
12
|
-
- `retry`
|
|
13
|
-
- `pMap`
|
|
14
|
-
- `debouncePromise`
|
|
15
|
-
- `throttlePromise`
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
- Queueing/rate-limit orchestration is intentionally out of scope for now.
|
|
10
|
+
- `sleep`
|
|
11
|
+
- `timeout`
|
|
12
|
+
- `retry`
|
|
13
|
+
- `pMap`
|
|
14
|
+
- `debouncePromise`
|
|
15
|
+
- `throttlePromise`
|
|
16
|
+
- `createTaskQueue`
|
|
17
|
+
- `createRateLimiter`
|
|
18
|
+
- `createTokenBucketLimiter`
|
|
19
|
+
|
|
20
|
+
## When to use this package
|
|
21
|
+
|
|
22
|
+
Use it when you need predictable retry logic, promise time limits, queues, and rate-limited async execution without heavy helper libraries.
|
|
23
|
+
|
|
24
|
+
## Limitations and Constraints
|
|
26
25
|
|
|
26
|
+
- `throttlePromise` drops calls made during the throttle window.
|
|
27
|
+
- `debouncePromise` cancels previous pending calls with a rejection.
|
|
27
28
|
## Install
|
|
28
29
|
|
|
29
30
|
```bash
|
|
@@ -33,12 +34,35 @@ npm i @jdsalasc/solvejs-async
|
|
|
33
34
|
## Quick example
|
|
34
35
|
|
|
35
36
|
```ts
|
|
36
|
-
import { retry, timeout, pMap } from "@jdsalasc/solvejs-async";
|
|
37
|
+
import { createTaskQueue, createRateLimiter, createTokenBucketLimiter, retry, timeout, pMap } from "@jdsalasc/solvejs-async";
|
|
37
38
|
|
|
38
39
|
const data = await retry(
|
|
39
40
|
() => timeout(fetch("https://api.example.com/items").then((r) => r.json()), 3000),
|
|
40
41
|
{ retries: 2, delayMs: 200, backoffFactor: 2 }
|
|
41
42
|
);
|
|
42
43
|
|
|
43
|
-
const ids = await pMap(data.items, async (item) => item.id, { concurrency: 4 });
|
|
44
|
-
|
|
44
|
+
const ids = await pMap(data.items, async (item) => item.id, { concurrency: 4 });
|
|
45
|
+
const queue = createTaskQueue({ concurrency: 2 });
|
|
46
|
+
const limiter = createRateLimiter({ maxCalls: 5, windowMs: 1000 });
|
|
47
|
+
const burstLimiter = createTokenBucketLimiter({ capacity: 10, refillTokens: 2, refillIntervalMs: 1000 });
|
|
48
|
+
await queue.add(() => limiter(() => fetch("https://api.example.com/reindex")));
|
|
49
|
+
await burstLimiter(() => fetch("https://api.example.com/heavy-sync"), 3);
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Endpoint tier token costs (token-bucket)
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
import { createTokenBucketLimiter } from "@jdsalasc/solvejs-async";
|
|
56
|
+
|
|
57
|
+
const limiter = createTokenBucketLimiter({ capacity: 20, refillTokens: 10, refillIntervalMs: 1000 });
|
|
58
|
+
const endpointCost = {
|
|
59
|
+
"/health": 1,
|
|
60
|
+
"/search": 2,
|
|
61
|
+
"/invoice/preview": 3,
|
|
62
|
+
"/invoice/finalize": 6,
|
|
63
|
+
"/batch/settlement": 10
|
|
64
|
+
} as const;
|
|
65
|
+
|
|
66
|
+
await limiter(() => fetch("https://api.example.com/health"), endpointCost["/health"]);
|
|
67
|
+
await limiter(() => fetch("https://api.example.com/batch/settlement"), endpointCost["/batch/settlement"]);
|
|
68
|
+
```
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -6,6 +6,9 @@ exports.retry = retry;
|
|
|
6
6
|
exports.pMap = pMap;
|
|
7
7
|
exports.debouncePromise = debouncePromise;
|
|
8
8
|
exports.throttlePromise = throttlePromise;
|
|
9
|
+
exports.createTaskQueue = createTaskQueue;
|
|
10
|
+
exports.createRateLimiter = createRateLimiter;
|
|
11
|
+
exports.createTokenBucketLimiter = createTokenBucketLimiter;
|
|
9
12
|
function assertNonNegativeFinite(value, label) {
|
|
10
13
|
if (!Number.isFinite(value) || value < 0) {
|
|
11
14
|
throw new TypeError(`Expected ${label} to be a non-negative finite number.`);
|
|
@@ -188,4 +191,163 @@ function throttlePromise(fn, options) {
|
|
|
188
191
|
}
|
|
189
192
|
};
|
|
190
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* Creates a lightweight async task queue with bounded concurrency.
|
|
196
|
+
*
|
|
197
|
+
* @param options - Queue options.
|
|
198
|
+
* @param options.concurrency - Maximum number of tasks running in parallel.
|
|
199
|
+
* @returns Queue controller with `add`, `pending`, and `running`.
|
|
200
|
+
*/
|
|
201
|
+
function createTaskQueue(options = {}) {
|
|
202
|
+
const concurrency = options.concurrency ?? 1;
|
|
203
|
+
assertPositiveInteger(concurrency, "concurrency");
|
|
204
|
+
const queue = [];
|
|
205
|
+
let activeCount = 0;
|
|
206
|
+
const schedule = () => {
|
|
207
|
+
while (activeCount < concurrency && queue.length > 0) {
|
|
208
|
+
const run = queue.shift();
|
|
209
|
+
if (!run)
|
|
210
|
+
return;
|
|
211
|
+
activeCount += 1;
|
|
212
|
+
run();
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
const add = (task) => new Promise((resolve, reject) => {
|
|
216
|
+
queue.push(() => {
|
|
217
|
+
Promise.resolve()
|
|
218
|
+
.then(task)
|
|
219
|
+
.then(resolve, reject)
|
|
220
|
+
.finally(() => {
|
|
221
|
+
activeCount -= 1;
|
|
222
|
+
schedule();
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
schedule();
|
|
226
|
+
});
|
|
227
|
+
return {
|
|
228
|
+
add,
|
|
229
|
+
pending: () => queue.length,
|
|
230
|
+
running: () => activeCount
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Creates a fixed-window async rate limiter wrapper.
|
|
235
|
+
*
|
|
236
|
+
* @param options - Rate limiter options.
|
|
237
|
+
* @param options.maxCalls - Maximum executions allowed within the window.
|
|
238
|
+
* @param options.windowMs - Window duration in milliseconds.
|
|
239
|
+
* @returns Function that schedules work respecting the configured rate.
|
|
240
|
+
*/
|
|
241
|
+
function createRateLimiter(options) {
|
|
242
|
+
const { maxCalls, windowMs } = options;
|
|
243
|
+
assertPositiveInteger(maxCalls, "maxCalls");
|
|
244
|
+
assertNonNegativeFinite(windowMs, "windowMs");
|
|
245
|
+
let chain = Promise.resolve();
|
|
246
|
+
const executionTimestamps = [];
|
|
247
|
+
return async (task) => {
|
|
248
|
+
const run = async () => {
|
|
249
|
+
const now = Date.now();
|
|
250
|
+
while (executionTimestamps.length > 0 && now - executionTimestamps[0] >= windowMs) {
|
|
251
|
+
executionTimestamps.shift();
|
|
252
|
+
}
|
|
253
|
+
if (executionTimestamps.length >= maxCalls) {
|
|
254
|
+
const earliest = executionTimestamps[0];
|
|
255
|
+
const waitMs = Math.max(0, windowMs - (now - earliest));
|
|
256
|
+
if (waitMs > 0) {
|
|
257
|
+
await sleep(waitMs);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
executionTimestamps.push(Date.now());
|
|
261
|
+
return task();
|
|
262
|
+
};
|
|
263
|
+
const resultPromise = chain.then(run, run);
|
|
264
|
+
chain = resultPromise.then(() => undefined, () => undefined);
|
|
265
|
+
return resultPromise;
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Creates a token-bucket limiter for bursty traffic with smooth refill.
|
|
270
|
+
*
|
|
271
|
+
* @param options - Token bucket options.
|
|
272
|
+
* @param options.capacity - Maximum bucket size.
|
|
273
|
+
* @param options.refillTokens - Tokens added each refill interval.
|
|
274
|
+
* @param options.refillIntervalMs - Refill interval in milliseconds.
|
|
275
|
+
* @param options.initialTokens - Initial token count. Defaults to `capacity`.
|
|
276
|
+
* @returns Function that schedules work when enough tokens are available.
|
|
277
|
+
*/
|
|
278
|
+
function createTokenBucketLimiter(options) {
|
|
279
|
+
const { capacity, refillTokens, refillIntervalMs } = options;
|
|
280
|
+
const initialTokens = options.initialTokens ?? capacity;
|
|
281
|
+
assertPositiveInteger(capacity, "capacity");
|
|
282
|
+
assertPositiveInteger(refillTokens, "refillTokens");
|
|
283
|
+
assertPositiveInteger(refillIntervalMs, "refillIntervalMs");
|
|
284
|
+
assertNonNegativeFinite(initialTokens, "initialTokens");
|
|
285
|
+
if (initialTokens > capacity) {
|
|
286
|
+
throw new TypeError("Expected initialTokens to be less than or equal to capacity.");
|
|
287
|
+
}
|
|
288
|
+
const queue = [];
|
|
289
|
+
let availableTokens = initialTokens;
|
|
290
|
+
let lastRefillAt = Date.now();
|
|
291
|
+
let drainTimer;
|
|
292
|
+
const refill = () => {
|
|
293
|
+
const now = Date.now();
|
|
294
|
+
const elapsed = now - lastRefillAt;
|
|
295
|
+
if (elapsed < refillIntervalMs) {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
const intervals = Math.floor(elapsed / refillIntervalMs);
|
|
299
|
+
availableTokens = Math.min(capacity, availableTokens + intervals * refillTokens);
|
|
300
|
+
lastRefillAt += intervals * refillIntervalMs;
|
|
301
|
+
};
|
|
302
|
+
const scheduleDrain = () => {
|
|
303
|
+
if (queue.length === 0 || drainTimer) {
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const next = queue[0];
|
|
307
|
+
const missingTokens = Math.max(0, next.tokenCost - availableTokens);
|
|
308
|
+
if (missingTokens === 0) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
const intervalsNeeded = Math.ceil(missingTokens / refillTokens);
|
|
312
|
+
const nextReadyAt = lastRefillAt + intervalsNeeded * refillIntervalMs;
|
|
313
|
+
const waitMs = Math.max(1, nextReadyAt - Date.now());
|
|
314
|
+
drainTimer = setTimeout(() => {
|
|
315
|
+
drainTimer = undefined;
|
|
316
|
+
runQueue();
|
|
317
|
+
}, waitMs);
|
|
318
|
+
};
|
|
319
|
+
const runQueue = () => {
|
|
320
|
+
refill();
|
|
321
|
+
while (queue.length > 0) {
|
|
322
|
+
const next = queue[0];
|
|
323
|
+
if (next.tokenCost > availableTokens) {
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
queue.shift();
|
|
327
|
+
availableTokens -= next.tokenCost;
|
|
328
|
+
Promise.resolve()
|
|
329
|
+
.then(next.task)
|
|
330
|
+
.then(next.resolve, next.reject)
|
|
331
|
+
.finally(() => {
|
|
332
|
+
runQueue();
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
scheduleDrain();
|
|
336
|
+
};
|
|
337
|
+
return (task, tokenCost = 1) => {
|
|
338
|
+
assertPositiveInteger(tokenCost, "tokenCost");
|
|
339
|
+
if (tokenCost > capacity) {
|
|
340
|
+
throw new TypeError("Expected tokenCost to be less than or equal to capacity.");
|
|
341
|
+
}
|
|
342
|
+
return new Promise((resolve, reject) => {
|
|
343
|
+
queue.push({
|
|
344
|
+
tokenCost,
|
|
345
|
+
task,
|
|
346
|
+
resolve: resolve,
|
|
347
|
+
reject
|
|
348
|
+
});
|
|
349
|
+
runQueue();
|
|
350
|
+
});
|
|
351
|
+
};
|
|
352
|
+
}
|
|
191
353
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAkBA,sBAGC;AAUD,0BAiBC;AAiBD,sBAgCC;AAcD,oBAiCC;AAaD,0CAuCC;AAaD,0CAwBC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -63,3 +63,49 @@ export type ThrottlePromiseOptions = {
|
|
|
63
63
|
* @returns Throttled async function.
|
|
64
64
|
*/
|
|
65
65
|
export declare function throttlePromise<TArgs extends unknown[], TResult>(fn: (...args: TArgs) => Promise<TResult> | TResult, options: ThrottlePromiseOptions): (...args: TArgs) => Promise<TResult | undefined>;
|
|
66
|
+
export type TaskQueueOptions = {
|
|
67
|
+
concurrency?: number;
|
|
68
|
+
};
|
|
69
|
+
export type TaskQueue = {
|
|
70
|
+
add: <T>(task: () => Promise<T> | T) => Promise<T>;
|
|
71
|
+
pending: () => number;
|
|
72
|
+
running: () => number;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Creates a lightweight async task queue with bounded concurrency.
|
|
76
|
+
*
|
|
77
|
+
* @param options - Queue options.
|
|
78
|
+
* @param options.concurrency - Maximum number of tasks running in parallel.
|
|
79
|
+
* @returns Queue controller with `add`, `pending`, and `running`.
|
|
80
|
+
*/
|
|
81
|
+
export declare function createTaskQueue(options?: TaskQueueOptions): TaskQueue;
|
|
82
|
+
export type RateLimiterOptions = {
|
|
83
|
+
maxCalls: number;
|
|
84
|
+
windowMs: number;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Creates a fixed-window async rate limiter wrapper.
|
|
88
|
+
*
|
|
89
|
+
* @param options - Rate limiter options.
|
|
90
|
+
* @param options.maxCalls - Maximum executions allowed within the window.
|
|
91
|
+
* @param options.windowMs - Window duration in milliseconds.
|
|
92
|
+
* @returns Function that schedules work respecting the configured rate.
|
|
93
|
+
*/
|
|
94
|
+
export declare function createRateLimiter(options: RateLimiterOptions): <T>(task: () => Promise<T> | T) => Promise<T>;
|
|
95
|
+
export type TokenBucketLimiterOptions = {
|
|
96
|
+
capacity: number;
|
|
97
|
+
refillTokens: number;
|
|
98
|
+
refillIntervalMs: number;
|
|
99
|
+
initialTokens?: number;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Creates a token-bucket limiter for bursty traffic with smooth refill.
|
|
103
|
+
*
|
|
104
|
+
* @param options - Token bucket options.
|
|
105
|
+
* @param options.capacity - Maximum bucket size.
|
|
106
|
+
* @param options.refillTokens - Tokens added each refill interval.
|
|
107
|
+
* @param options.refillIntervalMs - Refill interval in milliseconds.
|
|
108
|
+
* @param options.initialTokens - Initial token count. Defaults to `capacity`.
|
|
109
|
+
* @returns Function that schedules work when enough tokens are available.
|
|
110
|
+
*/
|
|
111
|
+
export declare function createTokenBucketLimiter(options: TokenBucketLimiterOptions): <T>(task: () => Promise<T> | T, tokenCost?: number) => Promise<T>;
|
package/dist/esm/index.js
CHANGED
|
@@ -180,4 +180,163 @@ export function throttlePromise(fn, options) {
|
|
|
180
180
|
}
|
|
181
181
|
};
|
|
182
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Creates a lightweight async task queue with bounded concurrency.
|
|
185
|
+
*
|
|
186
|
+
* @param options - Queue options.
|
|
187
|
+
* @param options.concurrency - Maximum number of tasks running in parallel.
|
|
188
|
+
* @returns Queue controller with `add`, `pending`, and `running`.
|
|
189
|
+
*/
|
|
190
|
+
export function createTaskQueue(options = {}) {
|
|
191
|
+
const concurrency = options.concurrency ?? 1;
|
|
192
|
+
assertPositiveInteger(concurrency, "concurrency");
|
|
193
|
+
const queue = [];
|
|
194
|
+
let activeCount = 0;
|
|
195
|
+
const schedule = () => {
|
|
196
|
+
while (activeCount < concurrency && queue.length > 0) {
|
|
197
|
+
const run = queue.shift();
|
|
198
|
+
if (!run)
|
|
199
|
+
return;
|
|
200
|
+
activeCount += 1;
|
|
201
|
+
run();
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
const add = (task) => new Promise((resolve, reject) => {
|
|
205
|
+
queue.push(() => {
|
|
206
|
+
Promise.resolve()
|
|
207
|
+
.then(task)
|
|
208
|
+
.then(resolve, reject)
|
|
209
|
+
.finally(() => {
|
|
210
|
+
activeCount -= 1;
|
|
211
|
+
schedule();
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
schedule();
|
|
215
|
+
});
|
|
216
|
+
return {
|
|
217
|
+
add,
|
|
218
|
+
pending: () => queue.length,
|
|
219
|
+
running: () => activeCount
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Creates a fixed-window async rate limiter wrapper.
|
|
224
|
+
*
|
|
225
|
+
* @param options - Rate limiter options.
|
|
226
|
+
* @param options.maxCalls - Maximum executions allowed within the window.
|
|
227
|
+
* @param options.windowMs - Window duration in milliseconds.
|
|
228
|
+
* @returns Function that schedules work respecting the configured rate.
|
|
229
|
+
*/
|
|
230
|
+
export function createRateLimiter(options) {
|
|
231
|
+
const { maxCalls, windowMs } = options;
|
|
232
|
+
assertPositiveInteger(maxCalls, "maxCalls");
|
|
233
|
+
assertNonNegativeFinite(windowMs, "windowMs");
|
|
234
|
+
let chain = Promise.resolve();
|
|
235
|
+
const executionTimestamps = [];
|
|
236
|
+
return async (task) => {
|
|
237
|
+
const run = async () => {
|
|
238
|
+
const now = Date.now();
|
|
239
|
+
while (executionTimestamps.length > 0 && now - executionTimestamps[0] >= windowMs) {
|
|
240
|
+
executionTimestamps.shift();
|
|
241
|
+
}
|
|
242
|
+
if (executionTimestamps.length >= maxCalls) {
|
|
243
|
+
const earliest = executionTimestamps[0];
|
|
244
|
+
const waitMs = Math.max(0, windowMs - (now - earliest));
|
|
245
|
+
if (waitMs > 0) {
|
|
246
|
+
await sleep(waitMs);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
executionTimestamps.push(Date.now());
|
|
250
|
+
return task();
|
|
251
|
+
};
|
|
252
|
+
const resultPromise = chain.then(run, run);
|
|
253
|
+
chain = resultPromise.then(() => undefined, () => undefined);
|
|
254
|
+
return resultPromise;
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Creates a token-bucket limiter for bursty traffic with smooth refill.
|
|
259
|
+
*
|
|
260
|
+
* @param options - Token bucket options.
|
|
261
|
+
* @param options.capacity - Maximum bucket size.
|
|
262
|
+
* @param options.refillTokens - Tokens added each refill interval.
|
|
263
|
+
* @param options.refillIntervalMs - Refill interval in milliseconds.
|
|
264
|
+
* @param options.initialTokens - Initial token count. Defaults to `capacity`.
|
|
265
|
+
* @returns Function that schedules work when enough tokens are available.
|
|
266
|
+
*/
|
|
267
|
+
export function createTokenBucketLimiter(options) {
|
|
268
|
+
const { capacity, refillTokens, refillIntervalMs } = options;
|
|
269
|
+
const initialTokens = options.initialTokens ?? capacity;
|
|
270
|
+
assertPositiveInteger(capacity, "capacity");
|
|
271
|
+
assertPositiveInteger(refillTokens, "refillTokens");
|
|
272
|
+
assertPositiveInteger(refillIntervalMs, "refillIntervalMs");
|
|
273
|
+
assertNonNegativeFinite(initialTokens, "initialTokens");
|
|
274
|
+
if (initialTokens > capacity) {
|
|
275
|
+
throw new TypeError("Expected initialTokens to be less than or equal to capacity.");
|
|
276
|
+
}
|
|
277
|
+
const queue = [];
|
|
278
|
+
let availableTokens = initialTokens;
|
|
279
|
+
let lastRefillAt = Date.now();
|
|
280
|
+
let drainTimer;
|
|
281
|
+
const refill = () => {
|
|
282
|
+
const now = Date.now();
|
|
283
|
+
const elapsed = now - lastRefillAt;
|
|
284
|
+
if (elapsed < refillIntervalMs) {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const intervals = Math.floor(elapsed / refillIntervalMs);
|
|
288
|
+
availableTokens = Math.min(capacity, availableTokens + intervals * refillTokens);
|
|
289
|
+
lastRefillAt += intervals * refillIntervalMs;
|
|
290
|
+
};
|
|
291
|
+
const scheduleDrain = () => {
|
|
292
|
+
if (queue.length === 0 || drainTimer) {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
const next = queue[0];
|
|
296
|
+
const missingTokens = Math.max(0, next.tokenCost - availableTokens);
|
|
297
|
+
if (missingTokens === 0) {
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
const intervalsNeeded = Math.ceil(missingTokens / refillTokens);
|
|
301
|
+
const nextReadyAt = lastRefillAt + intervalsNeeded * refillIntervalMs;
|
|
302
|
+
const waitMs = Math.max(1, nextReadyAt - Date.now());
|
|
303
|
+
drainTimer = setTimeout(() => {
|
|
304
|
+
drainTimer = undefined;
|
|
305
|
+
runQueue();
|
|
306
|
+
}, waitMs);
|
|
307
|
+
};
|
|
308
|
+
const runQueue = () => {
|
|
309
|
+
refill();
|
|
310
|
+
while (queue.length > 0) {
|
|
311
|
+
const next = queue[0];
|
|
312
|
+
if (next.tokenCost > availableTokens) {
|
|
313
|
+
break;
|
|
314
|
+
}
|
|
315
|
+
queue.shift();
|
|
316
|
+
availableTokens -= next.tokenCost;
|
|
317
|
+
Promise.resolve()
|
|
318
|
+
.then(next.task)
|
|
319
|
+
.then(next.resolve, next.reject)
|
|
320
|
+
.finally(() => {
|
|
321
|
+
runQueue();
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
scheduleDrain();
|
|
325
|
+
};
|
|
326
|
+
return (task, tokenCost = 1) => {
|
|
327
|
+
assertPositiveInteger(tokenCost, "tokenCost");
|
|
328
|
+
if (tokenCost > capacity) {
|
|
329
|
+
throw new TypeError("Expected tokenCost to be less than or equal to capacity.");
|
|
330
|
+
}
|
|
331
|
+
return new Promise((resolve, reject) => {
|
|
332
|
+
queue.push({
|
|
333
|
+
tokenCost,
|
|
334
|
+
task,
|
|
335
|
+
resolve: resolve,
|
|
336
|
+
reject
|
|
337
|
+
});
|
|
338
|
+
runQueue();
|
|
339
|
+
});
|
|
340
|
+
};
|
|
341
|
+
}
|
|
183
342
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jdsalasc/solvejs-async",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "Zero-dependency JavaScript/TypeScript async utilities for production: sleep, promise timeout, retry with backoff, and concurrency-limited pMap.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|