@andrew_l/toolkit 0.2.13 → 0.2.14

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 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
- const T0 = signed_crc_table();
2500
- function signed_crc_table() {
2501
- var c = 0, table = new Array(256);
2502
- for (var n = 0; n != 256; ++n) {
2503
- c = n;
2504
- c = c & 1 ? -2097792136 ^ c >>> 1 : c >>> 1;
2505
- c = c & 1 ? -2097792136 ^ c >>> 1 : c >>> 1;
2506
- c = c & 1 ? -2097792136 ^ c >>> 1 : c >>> 1;
2507
- c = c & 1 ? -2097792136 ^ c >>> 1 : c >>> 1;
2508
- c = c & 1 ? -2097792136 ^ c >>> 1 : c >>> 1;
2509
- c = c & 1 ? -2097792136 ^ c >>> 1 : c >>> 1;
2510
- c = c & 1 ? -2097792136 ^ c >>> 1 : c >>> 1;
2511
- c = c & 1 ? -2097792136 ^ c >>> 1 : c >>> 1;
2512
- table[n] = c;
2513
- }
2514
- return Int32Array ? new Int32Array(table) : table;
2515
- }
2516
- function crc32(str, seed = 0) {
2517
- var C = seed ^ -1;
2518
- for (var i = 0, L = str.length, c = 0, d = 0; i < L; ) {
2519
- c = str.charCodeAt(i++);
2520
- if (c < 128) {
2521
- C = C >>> 8 ^ T0[(C ^ c) & 255];
2522
- } else if (c < 2048) {
2523
- C = C >>> 8 ^ T0[(C ^ (192 | c >> 6 & 31)) & 255];
2524
- C = C >>> 8 ^ T0[(C ^ (128 | c & 63)) & 255];
2525
- } else if (c >= 55296 && c < 57344) {
2526
- c = (c & 1023) + 64;
2527
- d = str.charCodeAt(i++) & 1023;
2528
- C = C >>> 8 ^ T0[(C ^ (240 | c >> 8 & 7)) & 255];
2529
- C = C >>> 8 ^ T0[(C ^ (128 | c >> 2 & 63)) & 255];
2530
- C = C >>> 8 ^ T0[(C ^ (128 | d >> 6 & 15 | (c & 3) << 4)) & 255];
2531
- C = C >>> 8 ^ T0[(C ^ (128 | d & 63)) & 255];
2532
- } else {
2533
- C = C >>> 8 ^ T0[(C ^ (224 | c >> 12 & 15)) & 255];
2534
- C = C >>> 8 ^ T0[(C ^ (128 | c >> 6 & 63)) & 255];
2535
- C = C >>> 8 ^ T0[(C ^ (128 | c & 63)) & 255];
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 ~C;
2850
+ return crc ^ -1;
2539
2851
  }
2540
2852
 
2541
2853
  function isDateObject(value) {
@@ -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;