@andrew_l/toolkit 0.2.13 → 0.2.15
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/dist/index.cjs +354 -40
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +75 -2
- package/dist/index.d.mts +75 -2
- package/dist/index.d.ts +75 -2
- package/dist/index.mjs +353 -41
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -357,6 +357,90 @@ function shuffle(arr) {
|
|
|
357
357
|
return result;
|
|
358
358
|
}
|
|
359
359
|
|
|
360
|
+
class SortedArray extends Array {
|
|
361
|
+
#compareFn;
|
|
362
|
+
/**
|
|
363
|
+
* Creates a new SortedArray instance.
|
|
364
|
+
*
|
|
365
|
+
* @param compareFn The comparison function to determine the sort order
|
|
366
|
+
* @param items Optional initial items to add to the array (will be sorted immediately)
|
|
367
|
+
*/
|
|
368
|
+
constructor(compareFn, items = []) {
|
|
369
|
+
super();
|
|
370
|
+
this.#compareFn = compareFn;
|
|
371
|
+
if (items.length > 0) {
|
|
372
|
+
super.push.apply(this, items.toSorted(this.#compareFn));
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Inserts multiple items while maintaining sort order
|
|
377
|
+
* @param items The items to insert
|
|
378
|
+
* @returns The new length of the array
|
|
379
|
+
*/
|
|
380
|
+
push(...items) {
|
|
381
|
+
var newItems = items.toSorted(this.#compareFn);
|
|
382
|
+
var newItemsLen = newItems.length;
|
|
383
|
+
var originalLen = this.length;
|
|
384
|
+
var result = new Array(originalLen + newItemsLen);
|
|
385
|
+
var i = 0, j = 0, k = 0;
|
|
386
|
+
while (i < originalLen && j < newItemsLen) {
|
|
387
|
+
if (this.#compareFn(this[i], newItems[j]) <= 0) {
|
|
388
|
+
result[k++] = this[i++];
|
|
389
|
+
} else {
|
|
390
|
+
result[k++] = newItems[j++];
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
while (i < originalLen) {
|
|
394
|
+
result[k++] = this[i++];
|
|
395
|
+
}
|
|
396
|
+
while (j < newItemsLen) {
|
|
397
|
+
result[k++] = newItems[j++];
|
|
398
|
+
}
|
|
399
|
+
this.length = 0;
|
|
400
|
+
super.push.apply(this, result);
|
|
401
|
+
return this.length;
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Override Array methods that would break the sorted order
|
|
405
|
+
*/
|
|
406
|
+
unshift(...items) {
|
|
407
|
+
return this.push(...items);
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Creates a new SortedArray with the same comparison function
|
|
411
|
+
* @returns A new SortedArray instance
|
|
412
|
+
*/
|
|
413
|
+
slice(start, end) {
|
|
414
|
+
var result = new SortedArray(this.#compareFn);
|
|
415
|
+
var sliced = super.slice(start, end);
|
|
416
|
+
super.push.apply(result, sliced);
|
|
417
|
+
return result;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Concatenates arrays or values while maintaining sort order
|
|
421
|
+
* @param items Arrays or values to concatenate
|
|
422
|
+
* @returns A new SortedArray with the concatenated elements
|
|
423
|
+
*/
|
|
424
|
+
concat(...items) {
|
|
425
|
+
var result = new SortedArray(this.#compareFn, this);
|
|
426
|
+
for (const item of items) {
|
|
427
|
+
if (Array.isArray(item)) {
|
|
428
|
+
result.push.apply(result, item);
|
|
429
|
+
} else {
|
|
430
|
+
result.push(item);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
return result;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
["map", "filter", "flatMap", "flat", "reverse", "sort"].forEach((key) => {
|
|
437
|
+
SortedArray.prototype[key] = function() {
|
|
438
|
+
const arr = Array.prototype[key].apply(this, arguments);
|
|
439
|
+
Object.setPrototypeOf(arr, Array.prototype);
|
|
440
|
+
return arr;
|
|
441
|
+
};
|
|
442
|
+
});
|
|
443
|
+
|
|
360
444
|
const sum = (values) => {
|
|
361
445
|
return values.reduce((a, b) => a + (isNumber(b) ? b : 0), 0);
|
|
362
446
|
};
|
|
@@ -2496,46 +2580,274 @@ const ColorParser = {
|
|
|
2496
2580
|
HEX: parseHEX
|
|
2497
2581
|
};
|
|
2498
2582
|
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2583
|
+
var encoder = new TextEncoder();
|
|
2584
|
+
var TABLE = new Int32Array([
|
|
2585
|
+
0,
|
|
2586
|
+
1996959894,
|
|
2587
|
+
3993919788,
|
|
2588
|
+
2567524794,
|
|
2589
|
+
124634137,
|
|
2590
|
+
1886057615,
|
|
2591
|
+
3915621685,
|
|
2592
|
+
2657392035,
|
|
2593
|
+
249268274,
|
|
2594
|
+
2044508324,
|
|
2595
|
+
3772115230,
|
|
2596
|
+
2547177864,
|
|
2597
|
+
162941995,
|
|
2598
|
+
2125561021,
|
|
2599
|
+
3887607047,
|
|
2600
|
+
2428444049,
|
|
2601
|
+
498536548,
|
|
2602
|
+
1789927666,
|
|
2603
|
+
4089016648,
|
|
2604
|
+
2227061214,
|
|
2605
|
+
450548861,
|
|
2606
|
+
1843258603,
|
|
2607
|
+
4107580753,
|
|
2608
|
+
2211677639,
|
|
2609
|
+
325883990,
|
|
2610
|
+
1684777152,
|
|
2611
|
+
4251122042,
|
|
2612
|
+
2321926636,
|
|
2613
|
+
335633487,
|
|
2614
|
+
1661365465,
|
|
2615
|
+
4195302755,
|
|
2616
|
+
2366115317,
|
|
2617
|
+
997073096,
|
|
2618
|
+
1281953886,
|
|
2619
|
+
3579855332,
|
|
2620
|
+
2724688242,
|
|
2621
|
+
1006888145,
|
|
2622
|
+
1258607687,
|
|
2623
|
+
3524101629,
|
|
2624
|
+
2768942443,
|
|
2625
|
+
901097722,
|
|
2626
|
+
1119000684,
|
|
2627
|
+
3686517206,
|
|
2628
|
+
2898065728,
|
|
2629
|
+
853044451,
|
|
2630
|
+
1172266101,
|
|
2631
|
+
3705015759,
|
|
2632
|
+
2882616665,
|
|
2633
|
+
651767980,
|
|
2634
|
+
1373503546,
|
|
2635
|
+
3369554304,
|
|
2636
|
+
3218104598,
|
|
2637
|
+
565507253,
|
|
2638
|
+
1454621731,
|
|
2639
|
+
3485111705,
|
|
2640
|
+
3099436303,
|
|
2641
|
+
671266974,
|
|
2642
|
+
1594198024,
|
|
2643
|
+
3322730930,
|
|
2644
|
+
2970347812,
|
|
2645
|
+
795835527,
|
|
2646
|
+
1483230225,
|
|
2647
|
+
3244367275,
|
|
2648
|
+
3060149565,
|
|
2649
|
+
1994146192,
|
|
2650
|
+
31158534,
|
|
2651
|
+
2563907772,
|
|
2652
|
+
4023717930,
|
|
2653
|
+
1907459465,
|
|
2654
|
+
112637215,
|
|
2655
|
+
2680153253,
|
|
2656
|
+
3904427059,
|
|
2657
|
+
2013776290,
|
|
2658
|
+
251722036,
|
|
2659
|
+
2517215374,
|
|
2660
|
+
3775830040,
|
|
2661
|
+
2137656763,
|
|
2662
|
+
141376813,
|
|
2663
|
+
2439277719,
|
|
2664
|
+
3865271297,
|
|
2665
|
+
1802195444,
|
|
2666
|
+
476864866,
|
|
2667
|
+
2238001368,
|
|
2668
|
+
4066508878,
|
|
2669
|
+
1812370925,
|
|
2670
|
+
453092731,
|
|
2671
|
+
2181625025,
|
|
2672
|
+
4111451223,
|
|
2673
|
+
1706088902,
|
|
2674
|
+
314042704,
|
|
2675
|
+
2344532202,
|
|
2676
|
+
4240017532,
|
|
2677
|
+
1658658271,
|
|
2678
|
+
366619977,
|
|
2679
|
+
2362670323,
|
|
2680
|
+
4224994405,
|
|
2681
|
+
1303535960,
|
|
2682
|
+
984961486,
|
|
2683
|
+
2747007092,
|
|
2684
|
+
3569037538,
|
|
2685
|
+
1256170817,
|
|
2686
|
+
1037604311,
|
|
2687
|
+
2765210733,
|
|
2688
|
+
3554079995,
|
|
2689
|
+
1131014506,
|
|
2690
|
+
879679996,
|
|
2691
|
+
2909243462,
|
|
2692
|
+
3663771856,
|
|
2693
|
+
1141124467,
|
|
2694
|
+
855842277,
|
|
2695
|
+
2852801631,
|
|
2696
|
+
3708648649,
|
|
2697
|
+
1342533948,
|
|
2698
|
+
654459306,
|
|
2699
|
+
3188396048,
|
|
2700
|
+
3373015174,
|
|
2701
|
+
1466479909,
|
|
2702
|
+
544179635,
|
|
2703
|
+
3110523913,
|
|
2704
|
+
3462522015,
|
|
2705
|
+
1591671054,
|
|
2706
|
+
702138776,
|
|
2707
|
+
2966460450,
|
|
2708
|
+
3352799412,
|
|
2709
|
+
1504918807,
|
|
2710
|
+
783551873,
|
|
2711
|
+
3082640443,
|
|
2712
|
+
3233442989,
|
|
2713
|
+
3988292384,
|
|
2714
|
+
2596254646,
|
|
2715
|
+
62317068,
|
|
2716
|
+
1957810842,
|
|
2717
|
+
3939845945,
|
|
2718
|
+
2647816111,
|
|
2719
|
+
81470997,
|
|
2720
|
+
1943803523,
|
|
2721
|
+
3814918930,
|
|
2722
|
+
2489596804,
|
|
2723
|
+
225274430,
|
|
2724
|
+
2053790376,
|
|
2725
|
+
3826175755,
|
|
2726
|
+
2466906013,
|
|
2727
|
+
167816743,
|
|
2728
|
+
2097651377,
|
|
2729
|
+
4027552580,
|
|
2730
|
+
2265490386,
|
|
2731
|
+
503444072,
|
|
2732
|
+
1762050814,
|
|
2733
|
+
4150417245,
|
|
2734
|
+
2154129355,
|
|
2735
|
+
426522225,
|
|
2736
|
+
1852507879,
|
|
2737
|
+
4275313526,
|
|
2738
|
+
2312317920,
|
|
2739
|
+
282753626,
|
|
2740
|
+
1742555852,
|
|
2741
|
+
4189708143,
|
|
2742
|
+
2394877945,
|
|
2743
|
+
397917763,
|
|
2744
|
+
1622183637,
|
|
2745
|
+
3604390888,
|
|
2746
|
+
2714866558,
|
|
2747
|
+
953729732,
|
|
2748
|
+
1340076626,
|
|
2749
|
+
3518719985,
|
|
2750
|
+
2797360999,
|
|
2751
|
+
1068828381,
|
|
2752
|
+
1219638859,
|
|
2753
|
+
3624741850,
|
|
2754
|
+
2936675148,
|
|
2755
|
+
906185462,
|
|
2756
|
+
1090812512,
|
|
2757
|
+
3747672003,
|
|
2758
|
+
2825379669,
|
|
2759
|
+
829329135,
|
|
2760
|
+
1181335161,
|
|
2761
|
+
3412177804,
|
|
2762
|
+
3160834842,
|
|
2763
|
+
628085408,
|
|
2764
|
+
1382605366,
|
|
2765
|
+
3423369109,
|
|
2766
|
+
3138078467,
|
|
2767
|
+
570562233,
|
|
2768
|
+
1426400815,
|
|
2769
|
+
3317316542,
|
|
2770
|
+
2998733608,
|
|
2771
|
+
733239954,
|
|
2772
|
+
1555261956,
|
|
2773
|
+
3268935591,
|
|
2774
|
+
3050360625,
|
|
2775
|
+
752459403,
|
|
2776
|
+
1541320221,
|
|
2777
|
+
2607071920,
|
|
2778
|
+
3965973030,
|
|
2779
|
+
1969922972,
|
|
2780
|
+
40735498,
|
|
2781
|
+
2617837225,
|
|
2782
|
+
3943577151,
|
|
2783
|
+
1913087877,
|
|
2784
|
+
83908371,
|
|
2785
|
+
2512341634,
|
|
2786
|
+
3803740692,
|
|
2787
|
+
2075208622,
|
|
2788
|
+
213261112,
|
|
2789
|
+
2463272603,
|
|
2790
|
+
3855990285,
|
|
2791
|
+
2094854071,
|
|
2792
|
+
198958881,
|
|
2793
|
+
2262029012,
|
|
2794
|
+
4057260610,
|
|
2795
|
+
1759359992,
|
|
2796
|
+
534414190,
|
|
2797
|
+
2176718541,
|
|
2798
|
+
4139329115,
|
|
2799
|
+
1873836001,
|
|
2800
|
+
414664567,
|
|
2801
|
+
2282248934,
|
|
2802
|
+
4279200368,
|
|
2803
|
+
1711684554,
|
|
2804
|
+
285281116,
|
|
2805
|
+
2405801727,
|
|
2806
|
+
4167216745,
|
|
2807
|
+
1634467795,
|
|
2808
|
+
376229701,
|
|
2809
|
+
2685067896,
|
|
2810
|
+
3608007406,
|
|
2811
|
+
1308918612,
|
|
2812
|
+
956543938,
|
|
2813
|
+
2808555105,
|
|
2814
|
+
3495958263,
|
|
2815
|
+
1231636301,
|
|
2816
|
+
1047427035,
|
|
2817
|
+
2932959818,
|
|
2818
|
+
3654703836,
|
|
2819
|
+
1088359270,
|
|
2820
|
+
936918e3,
|
|
2821
|
+
2847714899,
|
|
2822
|
+
3736837829,
|
|
2823
|
+
1202900863,
|
|
2824
|
+
817233897,
|
|
2825
|
+
3183342108,
|
|
2826
|
+
3401237130,
|
|
2827
|
+
1404277552,
|
|
2828
|
+
615818150,
|
|
2829
|
+
3134207493,
|
|
2830
|
+
3453421203,
|
|
2831
|
+
1423857449,
|
|
2832
|
+
601450431,
|
|
2833
|
+
3009837614,
|
|
2834
|
+
3294710456,
|
|
2835
|
+
1567103746,
|
|
2836
|
+
711928724,
|
|
2837
|
+
3020668471,
|
|
2838
|
+
3272380065,
|
|
2839
|
+
1510334235,
|
|
2840
|
+
755167117
|
|
2841
|
+
]);
|
|
2842
|
+
function crc32(current, seed) {
|
|
2843
|
+
if (isString(current)) {
|
|
2844
|
+
return crc32(encoder.encode(current), seed);
|
|
2845
|
+
}
|
|
2846
|
+
var crc = seed === 0 ? 0 : ~~seed ^ -1;
|
|
2847
|
+
for (var index = 0; index < current.length; index++) {
|
|
2848
|
+
crc = TABLE[(crc ^ current[index]) & 255] ^ crc >>> 8;
|
|
2537
2849
|
}
|
|
2538
|
-
return
|
|
2850
|
+
return crc ^ -1;
|
|
2539
2851
|
}
|
|
2540
2852
|
|
|
2541
2853
|
function isDateObject(value) {
|
|
@@ -4080,7 +4392,7 @@ class SimpleEventEmitter {
|
|
|
4080
4392
|
if (!set) return false;
|
|
4081
4393
|
set.forEach((fn) => {
|
|
4082
4394
|
try {
|
|
4083
|
-
const result = fn();
|
|
4395
|
+
const result = fn(...args);
|
|
4084
4396
|
if (isPromise(result)) {
|
|
4085
4397
|
result.catch((err) => {
|
|
4086
4398
|
this.emit("error", err);
|
|
@@ -4585,6 +4897,7 @@ exports.BrowserAssertionError = BrowserAssertionError;
|
|
|
4585
4897
|
exports.CancellablePromise = CancellablePromise;
|
|
4586
4898
|
exports.ColorParser = ColorParser;
|
|
4587
4899
|
exports.EJSON = instance;
|
|
4900
|
+
exports.EJSONInstance = EJSON;
|
|
4588
4901
|
exports.EJSONStream = EJSONStream;
|
|
4589
4902
|
exports.FindMean = FindMean;
|
|
4590
4903
|
exports.FixedMap = FixedMap;
|
|
@@ -4592,6 +4905,7 @@ exports.FixedWeakMap = FixedWeakMap;
|
|
|
4592
4905
|
exports.LruCache = LruCache;
|
|
4593
4906
|
exports.Queue = Queue;
|
|
4594
4907
|
exports.SimpleEventEmitter = SimpleEventEmitter;
|
|
4908
|
+
exports.SortedArray = SortedArray;
|
|
4595
4909
|
exports.TWEMOJI_REGEX = TWEMOJI_REGEX;
|
|
4596
4910
|
exports.TimeBucket = TimeBucket;
|
|
4597
4911
|
exports.TimeSpan = TimeSpan;
|