@radically-straightforward/utilities 2.0.23 → 2.0.25
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/CHANGELOG.md +10 -0
- package/README.md +62 -27
- package/build/index.d.mts +54 -23
- package/build/index.d.mts.map +1 -1
- package/build/index.mjs +94 -50
- package/build/index.mjs.map +1 -1
- package/build/index.test.mjs +26 -19
- package/build/index.test.mjs.map +1 -1
- package/package.json +8 -5
- package/source/index.mts +115 -80
- package/source/index.test.mts +37 -27
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.25 · 2026-09-03
|
|
4
|
+
|
|
5
|
+
- Added `reciprocalRankFusion()`.
|
|
6
|
+
|
|
7
|
+
## 2.0.24 · 2026-06-29
|
|
8
|
+
|
|
9
|
+
- **Breaking changes:**
|
|
10
|
+
- `utilities.foregroundJob()` was renamed to `utilities.throttle()`.
|
|
11
|
+
- `utilities.backgroundJob()` was renamed to `utilities.setInterval()` and the `interval` parameter was renamed to `duration`.
|
|
12
|
+
|
|
3
13
|
## 2.0.21 · 2026-01-15
|
|
4
14
|
|
|
5
15
|
- Removed `Cache`, because it became so specific to Live Navigation cache that it was moved there.
|
package/README.md
CHANGED
|
@@ -319,6 +319,14 @@ console.log(
|
|
|
319
319
|
// => `… work in restaurants? For my <span class="highlight">peanuts</span> allergy <span class="highlight">peanut</span> butter is sometimes …`
|
|
320
320
|
```
|
|
321
321
|
|
|
322
|
+
### `reciprocalRankFusion()`
|
|
323
|
+
|
|
324
|
+
```typescript
|
|
325
|
+
export function reciprocalRankFusion(arrays: any[][]): any[];
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Merge multiple ranked lists into a single ranked list using [Reciprocal Rank Fusion](https://dl.acm.org/doi/10.1145/1571941.1572114). The `arrays` are expected to be sorted in descending order of relevance, for example, the first element is the most relevant and the last element is the least relevant.
|
|
329
|
+
|
|
322
330
|
### `isDate()`
|
|
323
331
|
|
|
324
332
|
```typescript
|
|
@@ -484,51 +492,68 @@ Similar to `collections-deep-equal` but either incomplete, or lacking type defin
|
|
|
484
492
|
- <https://twitter.com/swannodette/status/1067962983924539392>
|
|
485
493
|
- <https://gist.github.com/modernserf/c000e62d40f678cf395e3f360b9b0e43>
|
|
486
494
|
|
|
487
|
-
### `
|
|
495
|
+
### `setInterval()`
|
|
488
496
|
|
|
489
497
|
```typescript
|
|
490
|
-
export function
|
|
498
|
+
export function setInterval(
|
|
491
499
|
{
|
|
492
|
-
|
|
500
|
+
duration,
|
|
493
501
|
firstRun = "async",
|
|
494
502
|
onStop = () => {},
|
|
495
503
|
}: {
|
|
496
|
-
|
|
504
|
+
duration: number;
|
|
497
505
|
firstRun?: "sync" | "async" | "delayed";
|
|
498
506
|
onStop?: () => void | Promise<void>;
|
|
499
507
|
},
|
|
500
|
-
|
|
508
|
+
function_: () => void | Promise<void>,
|
|
501
509
|
): {
|
|
502
510
|
run: () => Promise<void>;
|
|
503
511
|
stop: () => Promise<void>;
|
|
504
512
|
};
|
|
505
513
|
```
|
|
506
514
|
|
|
507
|
-
> **Note:** This is a lower level utility. See `@radically-straightforward/node`’s and `@radically-straightforward/javascript`’s extensions to `
|
|
515
|
+
> **Note:** This is a lower level utility. See `@radically-straightforward/node`’s and `@radically-straightforward/javascript`’s extensions to `setInterval()` that are better suited for their specific environments.
|
|
508
516
|
|
|
509
|
-
|
|
517
|
+
JavaScript’s `setInterval()` and `utilities.setInterval()` are different in the following ways:
|
|
510
518
|
|
|
511
|
-
`
|
|
519
|
+
1. In JavaScript’s `setInterval()`, the interval starts counting when the `function_` **starts** running, so if the `function_` takes too long to run, then there may be multiple runs of `function_` happening at the same time:
|
|
512
520
|
|
|
513
|
-
|
|
521
|
+
```
|
|
522
|
+
Interval: |--------------|--------------|...
|
|
523
|
+
Execution: |-------------------|
|
|
524
|
+
|-------------------|
|
|
525
|
+
|-------------------|
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
In `utilities.setInterval()`, the interval starts counting when `function_` **ends** running, so there’s always at most one run of `function_` happening at any given time:
|
|
514
529
|
|
|
515
530
|
```
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
531
|
+
Interval: |--------------| |--------------|
|
|
532
|
+
Execution: |------------| |------------| ...
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
2. You may use `interval.run()` to force the `function_` to run right away. If the `function_` is already running, calling `interval.run()` schedules it to run again:
|
|
520
536
|
|
|
521
|
-
|
|
522
|
-
|
|
537
|
+
```
|
|
538
|
+
interval.run(): ↓ ↓ ↓ ↓
|
|
539
|
+
Interval: |------XXXXXXXX| |--------------| ...
|
|
540
|
+
Execution: |------------| |------------| |------------|------------|
|
|
523
541
|
```
|
|
524
542
|
|
|
525
|
-
|
|
543
|
+
3. You may use `interval.stop()` to stop the interval. If the `function_` is in the middle of running, it will finish, but it will not be scheduled to run again. This is similar to how an HTTP server may terminate gracefully by stopping accepting new requests but finishing responding to existing requests. After a job has been stopped, you may not `interval.run()` it again (calling `interval.run()` has no effect).
|
|
526
544
|
|
|
527
|
-
|
|
545
|
+
```
|
|
546
|
+
interval.stop(): ↓
|
|
547
|
+
Interval: |--------XXXXXXX|
|
|
548
|
+
Execution: |------------|
|
|
528
549
|
|
|
529
|
-
4. We introduce a random interval variance of 10% on top of the given `interval` to avoid many background jobs from starting at the same time and overloading the machine.
|
|
530
550
|
|
|
531
|
-
|
|
551
|
+
interval.stop(): ↓
|
|
552
|
+
Interval: |--------------|
|
|
553
|
+
Execution: |------------| |------------|
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
4. We introduce a random variance of 10% on top of the given `duration` to avoid the `function_`s from different processes of the same kind from starting at the same time and overloading the machine.
|
|
532
557
|
|
|
533
558
|
### `timeout()`
|
|
534
559
|
|
|
@@ -541,24 +566,34 @@ export async function timeout<Type>(
|
|
|
541
566
|
|
|
542
567
|
Run the given `function_` up to the timeout. If the timeout is reached, the returned promise rejects, but there is no way to guarantee that the `function_` execution will stop.
|
|
543
568
|
|
|
544
|
-
### `
|
|
569
|
+
### `throttle()`
|
|
545
570
|
|
|
546
571
|
```typescript
|
|
547
|
-
export function
|
|
548
|
-
|
|
572
|
+
export function throttle(
|
|
573
|
+
function_: () => void | Promise<void>,
|
|
549
574
|
): (() => Promise<void>) & {
|
|
550
575
|
promise: Promise<void>;
|
|
551
576
|
};
|
|
552
577
|
```
|
|
553
578
|
|
|
554
|
-
|
|
579
|
+
Ensures that the given `function_` is running at most once at any given moment.
|
|
580
|
+
|
|
581
|
+
If the function is called only once, it runs immediately (this is different from Lodash’s [`debounce()`](https://lodash.com/docs/4.17.15#debounce) and [`throttle()`](https://lodash.com/docs/4.17.15#throttle) that can include a waiting time—the timing of `utilities.throttle()` is based on how long the `function_` takes to finish):
|
|
555
582
|
|
|
556
|
-
|
|
583
|
+
```
|
|
584
|
+
Calls: ↓
|
|
585
|
+
Execution: |------|
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
If the function is called multiple times, it’s scheduled to rerun **once** after completion (this is different from enqueuing the function calls, which would run the function three times instead of twice in the following example):
|
|
557
589
|
|
|
558
|
-
|
|
590
|
+
```
|
|
591
|
+
Calls: ↓ ↓ ↓
|
|
592
|
+
Execution: |------|----|
|
|
593
|
+
```
|
|
559
594
|
|
|
560
|
-
This is
|
|
595
|
+
This is useful, for example, for an autocomplete feature in which an event listener of the `input` event `fetch()`es from the server.
|
|
561
596
|
|
|
562
|
-
There’s a promise available under the `.promise` property of the returned value that resolves when there’s no
|
|
597
|
+
There’s a promise available under the `.promise` property of the returned value that resolves when there’s no `function_` running. It’s useful to synchronize actions that must wait on the `function_` to be over.
|
|
563
598
|
|
|
564
599
|
<!-- DOCUMENTATION END: ./source/index.mts -->
|
package/build/index.d.mts
CHANGED
|
@@ -233,6 +233,10 @@ export declare function highlight(text: string, search: Set<string>, { prefix, s
|
|
|
233
233
|
export declare function snippet(text: string, search: Set<string>, { surroundingTokens, ...highlightOptions }?: {
|
|
234
234
|
surroundingTokens?: number;
|
|
235
235
|
} & Parameters<typeof highlight>[2]): string;
|
|
236
|
+
/**
|
|
237
|
+
* Merge multiple ranked lists into a single ranked list using [Reciprocal Rank Fusion](https://dl.acm.org/doi/10.1145/1571941.1572114). The `arrays` are expected to be sorted in descending order of relevance, for example, the first element is the most relevant and the last element is the least relevant.
|
|
238
|
+
*/
|
|
239
|
+
export declare function reciprocalRankFusion(arrays: any[][]): any[];
|
|
236
240
|
/**
|
|
237
241
|
* Determine whether the given `string` is a valid `Date`, that is, it’s in ISO format and corresponds to an existing date, for example, it is **not** April 32nd.
|
|
238
242
|
*/
|
|
@@ -378,37 +382,54 @@ export declare namespace intern {
|
|
|
378
382
|
}
|
|
379
383
|
export declare const internSymbol: unique symbol;
|
|
380
384
|
/**
|
|
381
|
-
* > **Note:** This is a lower level utility. See `@radically-straightforward/node`’s and `@radically-straightforward/javascript`’s extensions to `
|
|
385
|
+
* > **Note:** This is a lower level utility. See `@radically-straightforward/node`’s and `@radically-straightforward/javascript`’s extensions to `setInterval()` that are better suited for their specific environments.
|
|
386
|
+
*
|
|
387
|
+
* JavaScript’s `setInterval()` and `utilities.setInterval()` are different in the following ways:
|
|
382
388
|
*
|
|
383
|
-
*
|
|
389
|
+
* 1. In JavaScript’s `setInterval()`, the interval starts counting when the `function_` **starts** running, so if the `function_` takes too long to run, then there may be multiple runs of `function_` happening at the same time:
|
|
384
390
|
*
|
|
385
|
-
*
|
|
391
|
+
* ```
|
|
392
|
+
* Interval: |--------------|--------------|...
|
|
393
|
+
* Execution: |-------------------|
|
|
394
|
+
* |-------------------|
|
|
395
|
+
* |-------------------|
|
|
396
|
+
* ```
|
|
386
397
|
*
|
|
387
|
-
*
|
|
398
|
+
* In `utilities.setInterval()`, the interval starts counting when `function_` **ends** running, so there’s always at most one run of `function_` happening at any given time:
|
|
388
399
|
*
|
|
389
400
|
* ```
|
|
390
|
-
*
|
|
391
|
-
*
|
|
392
|
-
*
|
|
393
|
-
*
|
|
401
|
+
* Interval: |--------------| |--------------|
|
|
402
|
+
* Execution: |------------| |------------| ...
|
|
403
|
+
* ```
|
|
404
|
+
*
|
|
405
|
+
* 2. You may use `interval.run()` to force the `function_` to run right away. If the `function_` is already running, calling `interval.run()` schedules it to run again:
|
|
394
406
|
*
|
|
395
|
-
*
|
|
396
|
-
*
|
|
407
|
+
* ```
|
|
408
|
+
* interval.run(): ↓ ↓ ↓ ↓
|
|
409
|
+
* Interval: |------XXXXXXXX| |--------------| ...
|
|
410
|
+
* Execution: |------------| |------------| |------------|------------|
|
|
397
411
|
* ```
|
|
398
412
|
*
|
|
399
|
-
*
|
|
413
|
+
* 3. You may use `interval.stop()` to stop the interval. If the `function_` is in the middle of running, it will finish, but it will not be scheduled to run again. This is similar to how an HTTP server may terminate gracefully by stopping accepting new requests but finishing responding to existing requests. After a job has been stopped, you may not `interval.run()` it again (calling `interval.run()` has no effect).
|
|
400
414
|
*
|
|
401
|
-
*
|
|
415
|
+
* ```
|
|
416
|
+
* interval.stop(): ↓
|
|
417
|
+
* Interval: |--------XXXXXXX|
|
|
418
|
+
* Execution: |------------|
|
|
402
419
|
*
|
|
403
|
-
* 4. We introduce a random interval variance of 10% on top of the given `interval` to avoid many background jobs from starting at the same time and overloading the machine.
|
|
404
420
|
*
|
|
405
|
-
*
|
|
421
|
+
* interval.stop(): ↓
|
|
422
|
+
* Interval: |--------------|
|
|
423
|
+
* Execution: |------------| |------------|
|
|
424
|
+
* ```
|
|
425
|
+
*
|
|
426
|
+
* 4. We introduce a random variance of 10% on top of the given `duration` to avoid the `function_`s from different processes of the same kind from starting at the same time and overloading the machine.
|
|
406
427
|
*/
|
|
407
|
-
export declare function
|
|
408
|
-
|
|
428
|
+
export declare function setInterval({ duration, firstRun, onStop, }: {
|
|
429
|
+
duration: number;
|
|
409
430
|
firstRun?: "sync" | "async" | "delayed";
|
|
410
431
|
onStop?: () => void | Promise<void>;
|
|
411
|
-
},
|
|
432
|
+
}, function_: () => void | Promise<void>): {
|
|
412
433
|
run: () => Promise<void>;
|
|
413
434
|
stop: () => Promise<void>;
|
|
414
435
|
};
|
|
@@ -417,17 +438,27 @@ export declare function backgroundJob({ interval, firstRun, onStop, }: {
|
|
|
417
438
|
*/
|
|
418
439
|
export declare function timeout<Type>(duration: number, function_: () => Promise<Type>): Promise<Type>;
|
|
419
440
|
/**
|
|
420
|
-
*
|
|
441
|
+
* Ensures that the given `function_` is running at most once at any given moment.
|
|
442
|
+
*
|
|
443
|
+
* If the function is called only once, it runs immediately (this is different from Lodash’s [`debounce()`](https://lodash.com/docs/4.17.15#debounce) and [`throttle()`](https://lodash.com/docs/4.17.15#throttle) that can include a waiting time—the timing of `utilities.throttle()` is based on how long the `function_` takes to finish):
|
|
444
|
+
*
|
|
445
|
+
* ```
|
|
446
|
+
* Calls: ↓
|
|
447
|
+
* Execution: |------|
|
|
448
|
+
* ```
|
|
421
449
|
*
|
|
422
|
-
*
|
|
450
|
+
* If the function is called multiple times, it’s scheduled to rerun **once** after completion (this is different from enqueuing the function calls, which would run the function three times instead of twice in the following example):
|
|
423
451
|
*
|
|
424
|
-
*
|
|
452
|
+
* ```
|
|
453
|
+
* Calls: ↓ ↓ ↓
|
|
454
|
+
* Execution: |------|----|
|
|
455
|
+
* ```
|
|
425
456
|
*
|
|
426
|
-
* This is
|
|
457
|
+
* This is useful, for example, for an autocomplete feature in which an event listener of the `input` event `fetch()`es from the server.
|
|
427
458
|
*
|
|
428
|
-
* There’s a promise available under the `.promise` property of the returned value that resolves when there’s no
|
|
459
|
+
* There’s a promise available under the `.promise` property of the returned value that resolves when there’s no `function_` running. It’s useful to synchronize actions that must wait on the `function_` to be over.
|
|
429
460
|
*/
|
|
430
|
-
export declare function
|
|
461
|
+
export declare function throttle(function_: () => void | Promise<void>): (() => Promise<void>) & {
|
|
431
462
|
promise: Promise<void>;
|
|
432
463
|
};
|
|
433
464
|
//# sourceMappingURL=index.d.mts.map
|
package/build/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,KAAK;IAC5C,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACnD,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC,CAQA;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,GAAG,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAEnD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,wBAAyB,SAAQ,eAAe
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":"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"}
|
package/build/index.mjs
CHANGED
|
@@ -320,6 +320,25 @@ export function snippet(text, search, { surroundingTokens = 5, ...highlightOptio
|
|
|
320
320
|
: textTokens[textTokenSnippetIndexEnd].end) +
|
|
321
321
|
(textTokenSnippetIndexEnd === textTokens.length - 1 ? "" : " …"), search, highlightOptions);
|
|
322
322
|
}
|
|
323
|
+
/**
|
|
324
|
+
* Merge multiple ranked lists into a single ranked list using [Reciprocal Rank Fusion](https://dl.acm.org/doi/10.1145/1571941.1572114). The `arrays` are expected to be sorted in descending order of relevance, for example, the first element is the most relevant and the last element is the least relevant.
|
|
325
|
+
*/
|
|
326
|
+
export function reciprocalRankFusion(arrays) {
|
|
327
|
+
const elements = new Set(arrays.flat());
|
|
328
|
+
const elementsWithScores = [...elements].map((element) => {
|
|
329
|
+
let score = 0;
|
|
330
|
+
for (const array of arrays) {
|
|
331
|
+
const index = array.indexOf(element);
|
|
332
|
+
if (index !== -1) {
|
|
333
|
+
score += 1 / (index + 1 + 60);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return { element, score };
|
|
337
|
+
});
|
|
338
|
+
return elementsWithScores
|
|
339
|
+
.sort((a, b) => b.score - a.score)
|
|
340
|
+
.map((elementWithScore) => elementWithScore.element);
|
|
341
|
+
}
|
|
323
342
|
/**
|
|
324
343
|
* Determine whether the given `string` is a valid `Date`, that is, it’s in ISO format and corresponds to an existing date, for example, it is **not** April 32nd.
|
|
325
344
|
*/
|
|
@@ -479,54 +498,70 @@ intern.finalizationRegistry = new FinalizationRegistry(({ type, key }) => {
|
|
|
479
498
|
intern.pool[type].delete(key);
|
|
480
499
|
});
|
|
481
500
|
/**
|
|
482
|
-
* > **Note:** This is a lower level utility. See `@radically-straightforward/node`’s and `@radically-straightforward/javascript`’s extensions to `
|
|
501
|
+
* > **Note:** This is a lower level utility. See `@radically-straightforward/node`’s and `@radically-straightforward/javascript`’s extensions to `setInterval()` that are better suited for their specific environments.
|
|
483
502
|
*
|
|
484
|
-
*
|
|
503
|
+
* JavaScript’s `setInterval()` and `utilities.setInterval()` are different in the following ways:
|
|
485
504
|
*
|
|
486
|
-
* `
|
|
505
|
+
* 1. In JavaScript’s `setInterval()`, the interval starts counting when the `function_` **starts** running, so if the `function_` takes too long to run, then there may be multiple runs of `function_` happening at the same time:
|
|
487
506
|
*
|
|
488
|
-
*
|
|
507
|
+
* ```
|
|
508
|
+
* Interval: |--------------|--------------|...
|
|
509
|
+
* Execution: |-------------------|
|
|
510
|
+
* |-------------------|
|
|
511
|
+
* |-------------------|
|
|
512
|
+
* ```
|
|
513
|
+
*
|
|
514
|
+
* In `utilities.setInterval()`, the interval starts counting when `function_` **ends** running, so there’s always at most one run of `function_` happening at any given time:
|
|
489
515
|
*
|
|
490
516
|
* ```
|
|
491
|
-
*
|
|
492
|
-
*
|
|
493
|
-
*
|
|
494
|
-
*
|
|
517
|
+
* Interval: |--------------| |--------------|
|
|
518
|
+
* Execution: |------------| |------------| ...
|
|
519
|
+
* ```
|
|
520
|
+
*
|
|
521
|
+
* 2. You may use `interval.run()` to force the `function_` to run right away. If the `function_` is already running, calling `interval.run()` schedules it to run again:
|
|
495
522
|
*
|
|
496
|
-
*
|
|
497
|
-
*
|
|
523
|
+
* ```
|
|
524
|
+
* interval.run(): ↓ ↓ ↓ ↓
|
|
525
|
+
* Interval: |------XXXXXXXX| |--------------| ...
|
|
526
|
+
* Execution: |------------| |------------| |------------|------------|
|
|
498
527
|
* ```
|
|
499
528
|
*
|
|
500
|
-
*
|
|
529
|
+
* 3. You may use `interval.stop()` to stop the interval. If the `function_` is in the middle of running, it will finish, but it will not be scheduled to run again. This is similar to how an HTTP server may terminate gracefully by stopping accepting new requests but finishing responding to existing requests. After a job has been stopped, you may not `interval.run()` it again (calling `interval.run()` has no effect).
|
|
530
|
+
*
|
|
531
|
+
* ```
|
|
532
|
+
* interval.stop(): ↓
|
|
533
|
+
* Interval: |--------XXXXXXX|
|
|
534
|
+
* Execution: |------------|
|
|
501
535
|
*
|
|
502
|
-
* 3. You may use `backgroundJob.stop()` to stop the background job. If the background job is in the middle of running, it will finish but it will not be scheduled to run again. This is similar to how an HTTP server may terminate gracefully by stopping accepting new requests but finishing responding to existing requests. After a job has been stopped, you may not `backgroundJob.run()` it again (calling `backgroundJob.run()` has no effect).
|
|
503
536
|
*
|
|
504
|
-
*
|
|
537
|
+
* interval.stop(): ↓
|
|
538
|
+
* Interval: |--------------|
|
|
539
|
+
* Execution: |------------| |------------|
|
|
540
|
+
* ```
|
|
505
541
|
*
|
|
506
|
-
*
|
|
542
|
+
* 4. We introduce a random variance of 10% on top of the given `duration` to avoid the `function_`s from different processes of the same kind from starting at the same time and overloading the machine.
|
|
507
543
|
*/
|
|
508
|
-
export function
|
|
509
|
-
let state = "
|
|
544
|
+
export function setInterval({ duration, firstRun = "async", onStop = () => { }, }, function_) {
|
|
545
|
+
let state = "waiting";
|
|
510
546
|
let timeout;
|
|
511
|
-
const
|
|
547
|
+
const interval = {
|
|
512
548
|
run: async () => {
|
|
513
|
-
if (state === "
|
|
549
|
+
if (state === "waiting") {
|
|
514
550
|
clearTimeout(timeout);
|
|
515
551
|
state = "running";
|
|
516
552
|
try {
|
|
517
|
-
await
|
|
553
|
+
await function_();
|
|
518
554
|
}
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
state = "sleeping";
|
|
555
|
+
finally {
|
|
556
|
+
if (state === "running" || state === "runningAndMarkedForRerun") {
|
|
557
|
+
timeout = setTimeout(() => {
|
|
558
|
+
interval.run();
|
|
559
|
+
}, state ===
|
|
560
|
+
"runningAndMarkedForRerun"
|
|
561
|
+
? 0
|
|
562
|
+
: duration * (1 + 0.1 * Math.random()));
|
|
563
|
+
state = "waiting";
|
|
564
|
+
}
|
|
530
565
|
}
|
|
531
566
|
}
|
|
532
567
|
else if (state === "running")
|
|
@@ -539,18 +574,18 @@ export function backgroundJob({ interval, firstRun = "async", onStop = () => { }
|
|
|
539
574
|
},
|
|
540
575
|
};
|
|
541
576
|
if (firstRun === "sync")
|
|
542
|
-
|
|
577
|
+
interval.run();
|
|
543
578
|
else
|
|
544
579
|
timeout = setTimeout(() => {
|
|
545
|
-
|
|
580
|
+
interval.run();
|
|
546
581
|
}, firstRun === "async"
|
|
547
582
|
? 0
|
|
548
583
|
: firstRun === "delayed"
|
|
549
|
-
?
|
|
584
|
+
? duration * (1 + 0.1 * Math.random())
|
|
550
585
|
: (() => {
|
|
551
586
|
throw new Error();
|
|
552
587
|
})());
|
|
553
|
-
return
|
|
588
|
+
return interval;
|
|
554
589
|
}
|
|
555
590
|
/**
|
|
556
591
|
* Run the given `function_` up to the timeout. If the timeout is reached, the returned promise rejects, but there is no way to guarantee that the `function_` execution will stop.
|
|
@@ -572,17 +607,27 @@ export async function timeout(duration, function_) {
|
|
|
572
607
|
}
|
|
573
608
|
}
|
|
574
609
|
/**
|
|
575
|
-
*
|
|
610
|
+
* Ensures that the given `function_` is running at most once at any given moment.
|
|
611
|
+
*
|
|
612
|
+
* If the function is called only once, it runs immediately (this is different from Lodash’s [`debounce()`](https://lodash.com/docs/4.17.15#debounce) and [`throttle()`](https://lodash.com/docs/4.17.15#throttle) that can include a waiting time—the timing of `utilities.throttle()` is based on how long the `function_` takes to finish):
|
|
613
|
+
*
|
|
614
|
+
* ```
|
|
615
|
+
* Calls: ↓
|
|
616
|
+
* Execution: |------|
|
|
617
|
+
* ```
|
|
576
618
|
*
|
|
577
|
-
*
|
|
619
|
+
* If the function is called multiple times, it’s scheduled to rerun **once** after completion (this is different from enqueuing the function calls, which would run the function three times instead of twice in the following example):
|
|
578
620
|
*
|
|
579
|
-
*
|
|
621
|
+
* ```
|
|
622
|
+
* Calls: ↓ ↓ ↓
|
|
623
|
+
* Execution: |------|----|
|
|
624
|
+
* ```
|
|
580
625
|
*
|
|
581
|
-
* This is
|
|
626
|
+
* This is useful, for example, for an autocomplete feature in which an event listener of the `input` event `fetch()`es from the server.
|
|
582
627
|
*
|
|
583
|
-
* There’s a promise available under the `.promise` property of the returned value that resolves when there’s no
|
|
628
|
+
* There’s a promise available under the `.promise` property of the returned value that resolves when there’s no `function_` running. It’s useful to synchronize actions that must wait on the `function_` to be over.
|
|
584
629
|
*/
|
|
585
|
-
export function
|
|
630
|
+
export function throttle(function_) {
|
|
586
631
|
let state = "available";
|
|
587
632
|
let promiseWithResolvers;
|
|
588
633
|
return run;
|
|
@@ -594,18 +639,17 @@ export function foregroundJob(job) {
|
|
|
594
639
|
}
|
|
595
640
|
state = "running";
|
|
596
641
|
try {
|
|
597
|
-
await
|
|
598
|
-
}
|
|
599
|
-
catch (error) {
|
|
600
|
-
log("FOREGROUND JOB ERROR", String(error), error?.stack ?? "");
|
|
642
|
+
await function_();
|
|
601
643
|
}
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
644
|
+
finally {
|
|
645
|
+
if (state ===
|
|
646
|
+
"runningAndMarkedForRerun") {
|
|
647
|
+
state = "rerun";
|
|
648
|
+
await run();
|
|
649
|
+
}
|
|
650
|
+
state = "available";
|
|
651
|
+
promiseWithResolvers.resolve(undefined);
|
|
606
652
|
}
|
|
607
|
-
state = "available";
|
|
608
|
-
promiseWithResolvers.resolve(undefined);
|
|
609
653
|
}
|
|
610
654
|
else {
|
|
611
655
|
state = "runningAndMarkedForRerun";
|
package/build/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,QAAgB;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAKlC,IAAI,OAAY,CAAC;IACjB,IAAI,MAAW,CAAC;IAChB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QAClE,OAAO,GAAG,cAAc,CAAC;QACzB,MAAM,GAAG,aAAa,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,GAAG,YAAsB;IAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAC3D;QACE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC;YACJ,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU;gBAC/B,MAAM,IAAI,MAAM,KAAK,CAAC;gBACtB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAC3B,KAAK,MAAM,IAAI,IAAI,KAAK;oBACtB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;wBACpB,IAAI,CAAC;4BACH,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;wBACvC,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC1B,CAAC;YACP,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC;QACxB,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,MAAM,CACpB,eAAqC,EACrC,GAAG,aAAoB;IAEvB,IAAI,gBAAgB,GAAG,eAAe;SACnC,IAAI,CAAC,EAAE,CAAC;SACR,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CACL,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CACzB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAChB,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAChE,QAAQ,CACT,CAAC;IACJ,IAAI,gBAAgB,KAAK,QAAQ;QAAE,gBAAgB,GAAG,CAAC,CAAC;IACxD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,UAAU,CACzC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,EACnC,IAAI,CACL,CAAC;QACF,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,IAAI,eAAe;SACtB,EAAE,CAAC,CAAC,CAAC,CAAE;SACP,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAY,EACZ,EACE,SAAS,GAAG,IAAI,GAAG,EAAE,EACrB,eAAe,GAAG,QAAQ,EAC1B,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,MAKrB,EAAE;IAEN,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,0CAA0C,CAAC,CAAC,CAAC,OAAO,CAC3E,CAAC,KAAK,EAAE,EAAE;QACR,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,eAAe,IAAI,eAAe,KAAK,QAAQ;YACpD,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE;oBACE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;oBAClB,eAAe;oBACf,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;iBACnC;aACF,CAAC;IACR,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK;SACT,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,MAAmB,EACnB,EACE,MAAM,GAAG,KAAK,EACd,KAAK,GAAG,0BAA0B,EAClC,GAAG,GAAG,SAAS,EACf,GAAG,eAAe,KAKiB,EAAE;IAEvC,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,MAAM,CAC9D,CAAC,iBAAiB,EAAE,EAAE,CACpB,MAAM;QACJ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAC9B,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAC/C;QACH,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAC1C,CAAC;IACF,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7E,KAAK,MAAM,sBAAsB,IAAI,iBAAiB,CAAC,IAAI,EAAE;QAC3D,eAAe;YACb,KAAK;gBACL,IAAI,CAAC,KAAK,CACR,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAC/C,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAC9C;gBACD,GAAG;gBACH,IAAI,CAAC,KAAK,CACR,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAC7C,iBAAiB,CAAC,sBAAsB,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CACpE,CAAC;IACN,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,UAAU,OAAO,CACrB,IAAY,EACZ,MAAmB,EACnB,EACE,iBAAiB,GAAG,CAAC,EACrB,GAAG,gBAAgB,KACiD,EAAE;IAExE,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE;QAChC,GAAG,gBAAgB;QACnB,eAAe,EAAE,MAAM;KACxB,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,UAAU,CAAC,SAAS,CAC9C,CAAC,iBAAiB,EAAE,EAAE,CACpB,iBAAiB,CAAC,eAAe,KAAK,KAAK;QAC3C,CAAC,gBAAgB,CAAC,MAAM;YACtB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAC9B,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAC/C;YACH,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAC3C,CAAC;IACF,IAAI,mBAAmB,KAAK,CAAC,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,MAAM,0BAA0B,GAAG,IAAI,CAAC,GAAG,CACzC,CAAC,EACD,mBAAmB,GAAG,iBAAiB,CACxC,CAAC;IACF,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,CACvC,UAAU,CAAC,MAAM,GAAG,CAAC,EACrB,mBAAmB,GAAG,iBAAiB,CACxC,CAAC;IACF,OAAO,SAAS,CACd,CAAC,0BAA0B,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,KAAK,CACR,0BAA0B,KAAK,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAChD,wBAAwB,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,MAAM;YACb,CAAC,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAC7C;QACD,CAAC,wBAAwB,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAClE,MAAM,EACN,gBAAgB,CACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,OAAO,CACL,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAC3E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAW,2CAA2C,CAAC;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GACxB,+CAA+C,CAAC;AAoBlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,MAAM,UAAU,MAAM,CAEpB,KAAW;IACX,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAC3C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,CAAC,GAAG,EAAE;gBACJ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC,CAAC,EAAE,CAAC;IACX,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACvD,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;QAC1C,IACE,WAAW,KAAK,SAAS;YACzB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM;YAE/C,SAAS;QACX,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,KAAa,CAAC,GAAG,CAAC,KAAM,WAAmB,CAAC,GAAG,CAAC,CAAC;YACxE,OAAO,WAAkB,CAAC;IAC9B,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3C,IACE,CAAC,CACC,OAAO,UAAU,KAAK,QAAQ;YAC9B,OAAO,UAAU,KAAK,QAAQ;YAC9B,OAAO,UAAU,KAAK,QAAQ;YAC9B,OAAO,UAAU,KAAK,SAAS;YAC/B,OAAO,UAAU,KAAK,QAAQ;YAC9B,UAAU,KAAK,SAAS;YACxB,UAAU,KAAK,IAAI;YAClB,UAAkB,CAAC,YAAY,CAAC,KAAK,IAAI,CAC3C;YAED,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IACN,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACpB,KAAa,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,KAAY,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,OAAO,KAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE7C,MAAM,CAAC,IAAI,GAAG;IACZ,KAAK,EAAE,IAAI,GAAG,EAA+C;IAC7D,MAAM,EAAE,IAAI,GAAG,EAGZ;CACJ,CAAC;AAEF,MAAM,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAGnD,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;IACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,aAAa,CAC3B,EACE,QAAQ,EACR,QAAQ,GAAG,OAAO,EAClB,MAAM,GAAG,GAAG,EAAE,GAAE,CAAC,GAKlB,EACD,GAA+B;IAK/B,IAAI,KAAK,GACP,UAAU,CAAC;IACb,IAAI,OAAsC,CAAC;IAC3C,MAAM,aAAa,GAAG;QACpB,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,KAAK,GAAG,SAAS,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,GAAG,EAAE,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,GAAG,CACD,sBAAsB,EACtB,MAAM,CAAC,KAAK,CAAC,EACZ,KAAe,EAAE,KAAK,IAAI,EAAE,CAC9B,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,0BAA0B,EAAE,CAAC;oBAChE,OAAO,GAAG,UAAU,CAClB,GAAG,EAAE;wBACH,aAAa,CAAC,GAAG,EAAE,CAAC;oBACtB,CAAC,EACA,KAAgD;wBAC/C,0BAA0B;wBAC1B,CAAC,CAAC,CAAC;wBACH,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CACzC,CAAC;oBACF,KAAK,GAAG,UAAU,CAAC;gBACrB,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,KAAK,SAAS;gBAAE,KAAK,GAAG,0BAA0B,CAAC;QACrE,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,KAAK,GAAG,SAAS,CAAC;YAClB,MAAM,MAAM,EAAE,CAAC;QACjB,CAAC;KACF,CAAC;IACF,IAAI,QAAQ,KAAK,MAAM;QAAE,aAAa,CAAC,GAAG,EAAE,CAAC;;QAE3C,OAAO,GAAG,UAAU,CAClB,GAAG,EAAE;YACH,aAAa,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC,EACD,QAAQ,KAAK,OAAO;YAClB,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,QAAQ,KAAK,SAAS;gBACtB,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACtC,CAAC,CAAC,CAAC,GAAG,EAAE;oBACJ,MAAM,IAAI,KAAK,EAAE,CAAC;gBACpB,CAAC,CAAC,EAAE,CACX,CAAC;IACJ,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,QAAgB,EAChB,SAA8B;IAE9B,IAAI,OAAO,GAA+B,SAAS,CAAC;IACpD,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAO;YAC9B,SAAS,EAAE;YACX,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC9B,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBACxB,MAAM,CAAC,SAAS,CAAC,CAAC;gBACpB,CAAC,EAAE,QAAQ,CAAC,CAAC;YACf,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,GAA+B;IAE/B,IAAI,KAAK,GACP,WAAW,CAAC;IACd,IAAI,oBAA6D,CAAC;IAClE,OAAO,GAAU,CAAC;IAClB,KAAK,UAAU,GAAG;QAChB,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YAC/C,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC1B,oBAAoB,GAAG,oBAAoB,EAAE,CAAC;gBAC7C,GAAW,CAAC,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC;YACtD,CAAC;YACD,KAAK,GAAG,SAAS,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,GAAG,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CACD,sBAAsB,EACtB,MAAM,CAAC,KAAK,CAAC,EACZ,KAAe,EAAE,KAAK,IAAI,EAAE,CAC9B,CAAC;YACJ,CAAC;YACD,IACG,KAAgD;gBACjD,0BAA0B,EAC1B,CAAC;gBACD,KAAK,GAAG,OAAO,CAAC;gBAChB,MAAM,GAAG,EAAE,CAAC;YACd,CAAC;YACD,KAAK,GAAG,WAAW,CAAC;YACpB,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,0BAA0B,CAAC;YACnC,MAAM,oBAAoB,CAAC,OAAO,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../source/index.mts"],"names":[],"mappings":"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"}
|
package/build/index.test.mjs
CHANGED
|
@@ -149,6 +149,13 @@ test("snippet()", () => {
|
|
|
149
149
|
stem: (token) => natural.PorterStemmer.stem(token),
|
|
150
150
|
}), `… work in restaurants?\n\nFor my <span class="highlight">peanuts</span> allergy <span class="highlight">peanut</span> butter is sometimes …`);
|
|
151
151
|
});
|
|
152
|
+
test("reciprocalRankFusion()", () => {
|
|
153
|
+
assert.deepEqual(utilities.reciprocalRankFusion([
|
|
154
|
+
["a", "b", "c"],
|
|
155
|
+
["b", "c", "d"],
|
|
156
|
+
["c", "d", "e"],
|
|
157
|
+
]), ["c", "b", "d", "a", "e"]);
|
|
158
|
+
});
|
|
152
159
|
test("isDate()", () => {
|
|
153
160
|
assert(utilities.isDate("2024-04-01T14:57:46.638Z"));
|
|
154
161
|
assert(!utilities.isDate("2024-04-01T14:57:46.68Z"));
|
|
@@ -210,25 +217,25 @@ test("intern()", () => {
|
|
|
210
217
|
$([1])[0] = 2;
|
|
211
218
|
});
|
|
212
219
|
});
|
|
213
|
-
test("
|
|
214
|
-
skip: process.stdin.isTTY && process.argv[2] === "
|
|
220
|
+
test("setInterval()", {
|
|
221
|
+
skip: process.stdin.isTTY && process.argv[2] === "setInterval()"
|
|
215
222
|
? false
|
|
216
|
-
: `Run interactive test with ‘node ./build/index.test.mjs "
|
|
223
|
+
: `Run interactive test with ‘node ./build/index.test.mjs "setInterval()"’.`,
|
|
217
224
|
}, async () => {
|
|
218
|
-
const
|
|
219
|
-
console.log("
|
|
225
|
+
const interval = utilities.setInterval({ duration: 3 * 1000 }, async () => {
|
|
226
|
+
console.log("setInterval(): Running ‘function_’...");
|
|
220
227
|
await utilities.sleep(3 * 1000);
|
|
221
|
-
console.log("
|
|
228
|
+
console.log("setInterval(): ...finished running ‘function_’.");
|
|
222
229
|
if (Math.random() < 0.3)
|
|
223
|
-
throw new Error("There’s a 30% chance that the
|
|
230
|
+
throw new Error("There’s a 30% chance that the ‘function_’ results in error.");
|
|
224
231
|
});
|
|
225
232
|
process.on("SIGTSTP", () => {
|
|
226
|
-
|
|
233
|
+
interval.run();
|
|
227
234
|
});
|
|
228
235
|
process.on("SIGINT", () => {
|
|
229
|
-
|
|
236
|
+
interval.stop();
|
|
230
237
|
});
|
|
231
|
-
console.log("
|
|
238
|
+
console.log("setInterval(): Press ⌃Z to ‘interval.run()’ and ⌃C to ‘interval.stop()’...");
|
|
232
239
|
});
|
|
233
240
|
test("timeout()", async () => {
|
|
234
241
|
await utilities.timeout(5000, async () => {
|
|
@@ -248,22 +255,22 @@ test("timeout()", async () => {
|
|
|
248
255
|
});
|
|
249
256
|
});
|
|
250
257
|
});
|
|
251
|
-
test("
|
|
252
|
-
skip: process.stdin.isTTY && process.argv[2] === "
|
|
258
|
+
test("throttle()", {
|
|
259
|
+
skip: process.stdin.isTTY && process.argv[2] === "throttle()"
|
|
253
260
|
? false
|
|
254
|
-
: `Run interactive test with ‘node ./build/index.test.mjs "
|
|
261
|
+
: `Run interactive test with ‘node ./build/index.test.mjs "throttle()"’.`,
|
|
255
262
|
}, async () => {
|
|
256
|
-
const
|
|
257
|
-
console.log("
|
|
263
|
+
const throttledFunction = utilities.throttle(async () => {
|
|
264
|
+
console.log("throttle(): Running ‘function_’...");
|
|
258
265
|
await utilities.sleep(3 * 1000);
|
|
259
|
-
console.log("
|
|
266
|
+
console.log("throttle(): ...finished running ‘function_’.");
|
|
260
267
|
if (Math.random() < 0.3)
|
|
261
|
-
throw new Error("There’s a 30% chance that the
|
|
268
|
+
throw new Error("There’s a 30% chance that the ‘function_’ results in error.");
|
|
262
269
|
});
|
|
263
270
|
process.on("SIGTSTP", () => {
|
|
264
|
-
|
|
271
|
+
throttledFunction();
|
|
265
272
|
});
|
|
266
|
-
console.log("
|
|
273
|
+
console.log("throttle(): Press ⌃Z to run ‘function_’...");
|
|
267
274
|
setInterval(() => { });
|
|
268
275
|
});
|
|
269
276
|
//# sourceMappingURL=index.test.mjs.map
|
package/build/index.test.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.mjs","sourceRoot":"","sources":["../source/index.test.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.test.mjs","sourceRoot":"","sources":["../source/index.test.mts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@radically-straightforward/utilities",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.25",
|
|
4
4
|
"description": "🛠️ Utilities for Node.js and the browser",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"node",
|
|
@@ -29,11 +29,14 @@
|
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@radically-straightforward/documentation": "^1.0.9",
|
|
32
|
-
"@radically-straightforward/typescript": "^1.0.
|
|
33
|
-
"@types/node": "^
|
|
32
|
+
"@radically-straightforward/typescript": "^1.0.5",
|
|
33
|
+
"@types/node": "^26.1.1",
|
|
34
34
|
"natural": "^8.1.1",
|
|
35
|
-
"prettier": "^3.
|
|
36
|
-
"typescript": "^
|
|
35
|
+
"prettier": "^3.9.5",
|
|
36
|
+
"typescript": "^7.0.2"
|
|
37
|
+
},
|
|
38
|
+
"allowScripts": {
|
|
39
|
+
"@radically-straightforward/typescript@1.0.5": true
|
|
37
40
|
},
|
|
38
41
|
"prettier": {}
|
|
39
42
|
}
|
package/source/index.mts
CHANGED
|
@@ -405,6 +405,26 @@ export function snippet(
|
|
|
405
405
|
);
|
|
406
406
|
}
|
|
407
407
|
|
|
408
|
+
/**
|
|
409
|
+
* Merge multiple ranked lists into a single ranked list using [Reciprocal Rank Fusion](https://dl.acm.org/doi/10.1145/1571941.1572114). The `arrays` are expected to be sorted in descending order of relevance, for example, the first element is the most relevant and the last element is the least relevant.
|
|
410
|
+
*/
|
|
411
|
+
export function reciprocalRankFusion(arrays: any[][]): any[] {
|
|
412
|
+
const elements = new Set(arrays.flat());
|
|
413
|
+
const elementsWithScores = [...elements].map((element) => {
|
|
414
|
+
let score = 0;
|
|
415
|
+
for (const array of arrays) {
|
|
416
|
+
const index = array.indexOf(element);
|
|
417
|
+
if (index !== -1) {
|
|
418
|
+
score += 1 / (index + 1 + 60);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
return { element, score };
|
|
422
|
+
});
|
|
423
|
+
return elementsWithScores
|
|
424
|
+
.sort((a, b) => b.score - a.score)
|
|
425
|
+
.map((elementWithScore) => elementWithScore.element);
|
|
426
|
+
}
|
|
427
|
+
|
|
408
428
|
/**
|
|
409
429
|
* Determine whether the given `string` is a valid `Date`, that is, it’s in ISO format and corresponds to an existing date, for example, it is **not** April 32nd.
|
|
410
430
|
*/
|
|
@@ -567,18 +587,16 @@ export function intern<
|
|
|
567
587
|
return internValue as any;
|
|
568
588
|
}
|
|
569
589
|
for (const innerValue of Object.values(value))
|
|
570
|
-
if (
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
)
|
|
581
|
-
)
|
|
590
|
+
if (!(
|
|
591
|
+
typeof innerValue === "string" ||
|
|
592
|
+
typeof innerValue === "number" ||
|
|
593
|
+
typeof innerValue === "bigint" ||
|
|
594
|
+
typeof innerValue === "boolean" ||
|
|
595
|
+
typeof innerValue === "symbol" ||
|
|
596
|
+
innerValue === undefined ||
|
|
597
|
+
innerValue === null ||
|
|
598
|
+
(innerValue as any)[internSymbol] === true
|
|
599
|
+
))
|
|
582
600
|
throw new Error(
|
|
583
601
|
`Failed to intern value because of non-interned inner value.`,
|
|
584
602
|
);
|
|
@@ -608,75 +626,87 @@ intern.finalizationRegistry = new FinalizationRegistry<{
|
|
|
608
626
|
});
|
|
609
627
|
|
|
610
628
|
/**
|
|
611
|
-
* > **Note:** This is a lower level utility. See `@radically-straightforward/node`’s and `@radically-straightforward/javascript`’s extensions to `
|
|
629
|
+
* > **Note:** This is a lower level utility. See `@radically-straightforward/node`’s and `@radically-straightforward/javascript`’s extensions to `setInterval()` that are better suited for their specific environments.
|
|
612
630
|
*
|
|
613
|
-
*
|
|
631
|
+
* JavaScript’s `setInterval()` and `utilities.setInterval()` are different in the following ways:
|
|
614
632
|
*
|
|
615
|
-
* `
|
|
633
|
+
* 1. In JavaScript’s `setInterval()`, the interval starts counting when the `function_` **starts** running, so if the `function_` takes too long to run, then there may be multiple runs of `function_` happening at the same time:
|
|
616
634
|
*
|
|
617
|
-
*
|
|
635
|
+
* ```
|
|
636
|
+
* Interval: |--------------|--------------|...
|
|
637
|
+
* Execution: |-------------------|
|
|
638
|
+
* |-------------------|
|
|
639
|
+
* |-------------------|
|
|
640
|
+
* ```
|
|
618
641
|
*
|
|
642
|
+
* In `utilities.setInterval()`, the interval starts counting when `function_` **ends** running, so there’s always at most one run of `function_` happening at any given time:
|
|
643
|
+
*
|
|
644
|
+
* ```
|
|
645
|
+
* Interval: |--------------| |--------------|
|
|
646
|
+
* Execution: |------------| |------------| ...
|
|
619
647
|
* ```
|
|
620
|
-
* setInterval()
|
|
621
|
-
* | SLOW BACKGROUND JOB |
|
|
622
|
-
* | INTERVAL | SLOW BACKGROUND JOB |
|
|
623
|
-
* | INTERVAL | ...
|
|
624
648
|
*
|
|
625
|
-
*
|
|
626
|
-
*
|
|
649
|
+
* 2. You may use `interval.run()` to force the `function_` to run right away. If the `function_` is already running, calling `interval.run()` schedules it to run again:
|
|
650
|
+
*
|
|
627
651
|
* ```
|
|
652
|
+
* interval.run(): ↓ ↓ ↓ ↓
|
|
653
|
+
* Interval: |------XXXXXXXX| |--------------| ...
|
|
654
|
+
* Execution: |------------| |------------| |------------|------------|
|
|
655
|
+
* ```
|
|
656
|
+
*
|
|
657
|
+
* 3. You may use `interval.stop()` to stop the interval. If the `function_` is in the middle of running, it will finish, but it will not be scheduled to run again. This is similar to how an HTTP server may terminate gracefully by stopping accepting new requests but finishing responding to existing requests. After a job has been stopped, you may not `interval.run()` it again (calling `interval.run()` has no effect).
|
|
628
658
|
*
|
|
629
|
-
*
|
|
659
|
+
* ```
|
|
660
|
+
* interval.stop(): ↓
|
|
661
|
+
* Interval: |--------XXXXXXX|
|
|
662
|
+
* Execution: |------------|
|
|
630
663
|
*
|
|
631
|
-
* 3. You may use `backgroundJob.stop()` to stop the background job. If the background job is in the middle of running, it will finish but it will not be scheduled to run again. This is similar to how an HTTP server may terminate gracefully by stopping accepting new requests but finishing responding to existing requests. After a job has been stopped, you may not `backgroundJob.run()` it again (calling `backgroundJob.run()` has no effect).
|
|
632
664
|
*
|
|
633
|
-
*
|
|
665
|
+
* interval.stop(): ↓
|
|
666
|
+
* Interval: |--------------|
|
|
667
|
+
* Execution: |------------| |------------|
|
|
668
|
+
* ```
|
|
634
669
|
*
|
|
635
|
-
*
|
|
670
|
+
* 4. We introduce a random variance of 10% on top of the given `duration` to avoid the `function_`s from different processes of the same kind from starting at the same time and overloading the machine.
|
|
636
671
|
*/
|
|
637
|
-
export function
|
|
672
|
+
export function setInterval(
|
|
638
673
|
{
|
|
639
|
-
|
|
674
|
+
duration,
|
|
640
675
|
firstRun = "async",
|
|
641
676
|
onStop = () => {},
|
|
642
677
|
}: {
|
|
643
|
-
|
|
678
|
+
duration: number;
|
|
644
679
|
firstRun?: "sync" | "async" | "delayed";
|
|
645
680
|
onStop?: () => void | Promise<void>;
|
|
646
681
|
},
|
|
647
|
-
|
|
682
|
+
function_: () => void | Promise<void>,
|
|
648
683
|
): {
|
|
649
684
|
run: () => Promise<void>;
|
|
650
685
|
stop: () => Promise<void>;
|
|
651
686
|
} {
|
|
652
|
-
let state: "
|
|
653
|
-
"
|
|
687
|
+
let state: "waiting" | "running" | "runningAndMarkedForRerun" | "stopped" =
|
|
688
|
+
"waiting";
|
|
654
689
|
let timeout: ReturnType<typeof setTimeout>;
|
|
655
|
-
const
|
|
690
|
+
const interval = {
|
|
656
691
|
run: async () => {
|
|
657
|
-
if (state === "
|
|
692
|
+
if (state === "waiting") {
|
|
658
693
|
clearTimeout(timeout);
|
|
659
694
|
state = "running";
|
|
660
695
|
try {
|
|
661
|
-
await
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
"runningAndMarkedForRerun"
|
|
676
|
-
? 0
|
|
677
|
-
: interval * (1 + 0.1 * Math.random()),
|
|
678
|
-
);
|
|
679
|
-
state = "sleeping";
|
|
696
|
+
await function_();
|
|
697
|
+
} finally {
|
|
698
|
+
if (state === "running" || state === "runningAndMarkedForRerun") {
|
|
699
|
+
timeout = setTimeout(
|
|
700
|
+
() => {
|
|
701
|
+
interval.run();
|
|
702
|
+
},
|
|
703
|
+
(state as "running" | "runningAndMarkedForRerun") ===
|
|
704
|
+
"runningAndMarkedForRerun"
|
|
705
|
+
? 0
|
|
706
|
+
: duration * (1 + 0.1 * Math.random()),
|
|
707
|
+
);
|
|
708
|
+
state = "waiting";
|
|
709
|
+
}
|
|
680
710
|
}
|
|
681
711
|
} else if (state === "running") state = "runningAndMarkedForRerun";
|
|
682
712
|
},
|
|
@@ -686,21 +716,21 @@ export function backgroundJob(
|
|
|
686
716
|
await onStop();
|
|
687
717
|
},
|
|
688
718
|
};
|
|
689
|
-
if (firstRun === "sync")
|
|
719
|
+
if (firstRun === "sync") interval.run();
|
|
690
720
|
else
|
|
691
721
|
timeout = setTimeout(
|
|
692
722
|
() => {
|
|
693
|
-
|
|
723
|
+
interval.run();
|
|
694
724
|
},
|
|
695
725
|
firstRun === "async"
|
|
696
726
|
? 0
|
|
697
727
|
: firstRun === "delayed"
|
|
698
|
-
?
|
|
728
|
+
? duration * (1 + 0.1 * Math.random())
|
|
699
729
|
: (() => {
|
|
700
730
|
throw new Error();
|
|
701
731
|
})(),
|
|
702
732
|
);
|
|
703
|
-
return
|
|
733
|
+
return interval;
|
|
704
734
|
}
|
|
705
735
|
|
|
706
736
|
/**
|
|
@@ -726,18 +756,28 @@ export async function timeout<Type>(
|
|
|
726
756
|
}
|
|
727
757
|
|
|
728
758
|
/**
|
|
729
|
-
*
|
|
759
|
+
* Ensures that the given `function_` is running at most once at any given moment.
|
|
760
|
+
*
|
|
761
|
+
* If the function is called only once, it runs immediately (this is different from Lodash’s [`debounce()`](https://lodash.com/docs/4.17.15#debounce) and [`throttle()`](https://lodash.com/docs/4.17.15#throttle) that can include a waiting time—the timing of `utilities.throttle()` is based on how long the `function_` takes to finish):
|
|
730
762
|
*
|
|
731
|
-
*
|
|
763
|
+
* ```
|
|
764
|
+
* Calls: ↓
|
|
765
|
+
* Execution: |------|
|
|
766
|
+
* ```
|
|
732
767
|
*
|
|
733
|
-
*
|
|
768
|
+
* If the function is called multiple times, it’s scheduled to rerun **once** after completion (this is different from enqueuing the function calls, which would run the function three times instead of twice in the following example):
|
|
734
769
|
*
|
|
735
|
-
*
|
|
770
|
+
* ```
|
|
771
|
+
* Calls: ↓ ↓ ↓
|
|
772
|
+
* Execution: |------|----|
|
|
773
|
+
* ```
|
|
736
774
|
*
|
|
737
|
-
*
|
|
775
|
+
* This is useful, for example, for an autocomplete feature in which an event listener of the `input` event `fetch()`es from the server.
|
|
776
|
+
*
|
|
777
|
+
* There’s a promise available under the `.promise` property of the returned value that resolves when there’s no `function_` running. It’s useful to synchronize actions that must wait on the `function_` to be over.
|
|
738
778
|
*/
|
|
739
|
-
export function
|
|
740
|
-
|
|
779
|
+
export function throttle(
|
|
780
|
+
function_: () => void | Promise<void>,
|
|
741
781
|
): (() => Promise<void>) & { promise: Promise<void> } {
|
|
742
782
|
let state: "available" | "running" | "runningAndMarkedForRerun" | "rerun" =
|
|
743
783
|
"available";
|
|
@@ -751,23 +791,18 @@ export function foregroundJob(
|
|
|
751
791
|
}
|
|
752
792
|
state = "running";
|
|
753
793
|
try {
|
|
754
|
-
await
|
|
755
|
-
}
|
|
756
|
-
|
|
757
|
-
"
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
) {
|
|
766
|
-
state = "rerun";
|
|
767
|
-
await run();
|
|
794
|
+
await function_();
|
|
795
|
+
} finally {
|
|
796
|
+
if (
|
|
797
|
+
(state as "running" | "runningAndMarkedForRerun") ===
|
|
798
|
+
"runningAndMarkedForRerun"
|
|
799
|
+
) {
|
|
800
|
+
state = "rerun";
|
|
801
|
+
await run();
|
|
802
|
+
}
|
|
803
|
+
state = "available";
|
|
804
|
+
promiseWithResolvers.resolve(undefined);
|
|
768
805
|
}
|
|
769
|
-
state = "available";
|
|
770
|
-
promiseWithResolvers.resolve(undefined);
|
|
771
806
|
} else {
|
|
772
807
|
state = "runningAndMarkedForRerun";
|
|
773
808
|
await promiseWithResolvers.promise;
|
package/source/index.test.mts
CHANGED
|
@@ -219,6 +219,17 @@ test("snippet()", () => {
|
|
|
219
219
|
);
|
|
220
220
|
});
|
|
221
221
|
|
|
222
|
+
test("reciprocalRankFusion()", () => {
|
|
223
|
+
assert.deepEqual(
|
|
224
|
+
utilities.reciprocalRankFusion([
|
|
225
|
+
["a", "b", "c"],
|
|
226
|
+
["b", "c", "d"],
|
|
227
|
+
["c", "d", "e"],
|
|
228
|
+
]),
|
|
229
|
+
["c", "b", "d", "a", "e"],
|
|
230
|
+
);
|
|
231
|
+
});
|
|
232
|
+
|
|
222
233
|
test("isDate()", () => {
|
|
223
234
|
assert(utilities.isDate("2024-04-01T14:57:46.638Z"));
|
|
224
235
|
assert(!utilities.isDate("2024-04-01T14:57:46.68Z"));
|
|
@@ -292,33 +303,32 @@ test("intern()", () => {
|
|
|
292
303
|
});
|
|
293
304
|
|
|
294
305
|
test(
|
|
295
|
-
"
|
|
306
|
+
"setInterval()",
|
|
296
307
|
{
|
|
297
308
|
skip:
|
|
298
|
-
process.stdin.isTTY && process.argv[2] === "
|
|
309
|
+
process.stdin.isTTY && process.argv[2] === "setInterval()"
|
|
299
310
|
? false
|
|
300
|
-
: `Run interactive test with ‘node ./build/index.test.mjs "
|
|
311
|
+
: `Run interactive test with ‘node ./build/index.test.mjs "setInterval()"’.`,
|
|
301
312
|
},
|
|
302
313
|
async () => {
|
|
303
|
-
const
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
);
|
|
313
|
-
},
|
|
314
|
-
);
|
|
314
|
+
const interval = utilities.setInterval({ duration: 3 * 1000 }, async () => {
|
|
315
|
+
console.log("setInterval(): Running ‘function_’...");
|
|
316
|
+
await utilities.sleep(3 * 1000);
|
|
317
|
+
console.log("setInterval(): ...finished running ‘function_’.");
|
|
318
|
+
if (Math.random() < 0.3)
|
|
319
|
+
throw new Error(
|
|
320
|
+
"There’s a 30% chance that the ‘function_’ results in error.",
|
|
321
|
+
);
|
|
322
|
+
});
|
|
315
323
|
process.on("SIGTSTP", () => {
|
|
316
|
-
|
|
324
|
+
interval.run();
|
|
317
325
|
});
|
|
318
326
|
process.on("SIGINT", () => {
|
|
319
|
-
|
|
327
|
+
interval.stop();
|
|
320
328
|
});
|
|
321
|
-
console.log(
|
|
329
|
+
console.log(
|
|
330
|
+
"setInterval(): Press ⌃Z to ‘interval.run()’ and ⌃C to ‘interval.stop()’...",
|
|
331
|
+
);
|
|
322
332
|
},
|
|
323
333
|
);
|
|
324
334
|
|
|
@@ -342,27 +352,27 @@ test("timeout()", async () => {
|
|
|
342
352
|
});
|
|
343
353
|
|
|
344
354
|
test(
|
|
345
|
-
"
|
|
355
|
+
"throttle()",
|
|
346
356
|
{
|
|
347
357
|
skip:
|
|
348
|
-
process.stdin.isTTY && process.argv[2] === "
|
|
358
|
+
process.stdin.isTTY && process.argv[2] === "throttle()"
|
|
349
359
|
? false
|
|
350
|
-
: `Run interactive test with ‘node ./build/index.test.mjs "
|
|
360
|
+
: `Run interactive test with ‘node ./build/index.test.mjs "throttle()"’.`,
|
|
351
361
|
},
|
|
352
362
|
async () => {
|
|
353
|
-
const
|
|
354
|
-
console.log("
|
|
363
|
+
const throttledFunction = utilities.throttle(async () => {
|
|
364
|
+
console.log("throttle(): Running ‘function_’...");
|
|
355
365
|
await utilities.sleep(3 * 1000);
|
|
356
|
-
console.log("
|
|
366
|
+
console.log("throttle(): ...finished running ‘function_’.");
|
|
357
367
|
if (Math.random() < 0.3)
|
|
358
368
|
throw new Error(
|
|
359
|
-
"There’s a 30% chance that the
|
|
369
|
+
"There’s a 30% chance that the ‘function_’ results in error.",
|
|
360
370
|
);
|
|
361
371
|
});
|
|
362
372
|
process.on("SIGTSTP", () => {
|
|
363
|
-
|
|
373
|
+
throttledFunction();
|
|
364
374
|
});
|
|
365
|
-
console.log("
|
|
375
|
+
console.log("throttle(): Press ⌃Z to run ‘function_’...");
|
|
366
376
|
setInterval(() => {});
|
|
367
377
|
},
|
|
368
378
|
);
|