data-structure-typed 2.6.0 → 2.6.2

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.
Files changed (160) hide show
  1. package/.github/workflows/ci.yml +7 -2
  2. package/.github/workflows/release-package.yml +9 -2
  3. package/CHANGELOG.md +9 -1
  4. package/dist/cjs/binary-tree.cjs +2927 -23688
  5. package/dist/cjs/graph.cjs +845 -2634
  6. package/dist/cjs/hash.cjs +185 -616
  7. package/dist/cjs/heap.cjs +266 -818
  8. package/dist/cjs/index.cjs +5116 -31358
  9. package/dist/cjs/linked-list.cjs +644 -2615
  10. package/dist/cjs/matrix.cjs +220 -535
  11. package/dist/cjs/priority-queue.cjs +266 -818
  12. package/dist/cjs/queue.cjs +637 -2343
  13. package/dist/cjs/stack.cjs +124 -530
  14. package/dist/cjs/trie.cjs +145 -592
  15. package/dist/cjs-legacy/binary-tree.cjs +4352 -25113
  16. package/dist/cjs-legacy/graph.cjs +847 -2636
  17. package/dist/cjs-legacy/hash.cjs +181 -612
  18. package/dist/cjs-legacy/heap.cjs +266 -818
  19. package/dist/cjs-legacy/index.cjs +6657 -32899
  20. package/dist/cjs-legacy/linked-list.cjs +640 -2611
  21. package/dist/cjs-legacy/matrix.cjs +220 -535
  22. package/dist/cjs-legacy/priority-queue.cjs +266 -818
  23. package/dist/cjs-legacy/queue.cjs +634 -2340
  24. package/dist/cjs-legacy/stack.cjs +124 -530
  25. package/dist/cjs-legacy/trie.cjs +145 -592
  26. package/dist/esm/binary-tree.mjs +2927 -23688
  27. package/dist/esm/graph.mjs +845 -2634
  28. package/dist/esm/hash.mjs +185 -616
  29. package/dist/esm/heap.mjs +266 -818
  30. package/dist/esm/index.mjs +5116 -31358
  31. package/dist/esm/linked-list.mjs +644 -2615
  32. package/dist/esm/matrix.mjs +220 -535
  33. package/dist/esm/priority-queue.mjs +266 -818
  34. package/dist/esm/queue.mjs +637 -2343
  35. package/dist/esm/stack.mjs +124 -530
  36. package/dist/esm/trie.mjs +145 -592
  37. package/dist/esm-legacy/binary-tree.mjs +4352 -25113
  38. package/dist/esm-legacy/graph.mjs +847 -2636
  39. package/dist/esm-legacy/hash.mjs +181 -612
  40. package/dist/esm-legacy/heap.mjs +266 -818
  41. package/dist/esm-legacy/index.mjs +6657 -32899
  42. package/dist/esm-legacy/linked-list.mjs +640 -2611
  43. package/dist/esm-legacy/matrix.mjs +220 -535
  44. package/dist/esm-legacy/priority-queue.mjs +266 -818
  45. package/dist/esm-legacy/queue.mjs +634 -2340
  46. package/dist/esm-legacy/stack.mjs +124 -530
  47. package/dist/esm-legacy/trie.mjs +145 -592
  48. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +29 -500
  49. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +38 -563
  50. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +230 -1212
  51. package/dist/types/data-structures/binary-tree/bst.d.ts +124 -1063
  52. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +99 -854
  53. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +62 -314
  54. package/dist/types/data-structures/binary-tree/tree-map.d.ts +366 -5057
  55. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +277 -4885
  56. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +253 -3929
  57. package/dist/types/data-structures/binary-tree/tree-set.d.ts +261 -4782
  58. package/dist/types/data-structures/graph/abstract-graph.d.ts +44 -44
  59. package/dist/types/data-structures/graph/directed-graph.d.ts +130 -527
  60. package/dist/types/data-structures/graph/undirected-graph.d.ts +125 -482
  61. package/dist/types/data-structures/hash/hash-map.d.ts +132 -562
  62. package/dist/types/data-structures/heap/heap.d.ts +194 -746
  63. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +120 -809
  64. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -733
  65. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +193 -863
  66. package/dist/types/data-structures/matrix/matrix.d.ts +159 -474
  67. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -6
  68. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +6 -11
  69. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
  70. package/dist/types/data-structures/queue/deque.d.ts +196 -804
  71. package/dist/types/data-structures/queue/queue.d.ts +99 -585
  72. package/dist/types/data-structures/stack/stack.d.ts +75 -481
  73. package/dist/types/data-structures/trie/trie.d.ts +98 -584
  74. package/dist/umd/data-structure-typed.js +6580 -32822
  75. package/dist/umd/data-structure-typed.min.js +3 -3
  76. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +162 -215
  77. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +9 -9
  78. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +47 -47
  79. package/docs-site-docusaurus/docs/api/classes/BST.md +155 -208
  80. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +7 -7
  81. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +13 -29
  82. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +104 -158
  83. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  84. package/docs-site-docusaurus/docs/api/classes/Deque.md +253 -101
  85. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +60 -80
  86. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +244 -114
  87. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +6 -6
  88. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +9 -9
  89. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  90. package/docs-site-docusaurus/docs/api/classes/HashMap.md +52 -48
  91. package/docs-site-docusaurus/docs/api/classes/Heap.md +119 -64
  92. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +84 -14
  93. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +138 -34
  94. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +149 -41
  95. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +23 -23
  96. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +172 -92
  97. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +60 -80
  98. package/docs-site-docusaurus/docs/api/classes/Matrix.md +57 -52
  99. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +117 -62
  100. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +120 -70
  101. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +117 -62
  102. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +125 -75
  103. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +119 -64
  104. package/docs-site-docusaurus/docs/api/classes/Queue.md +158 -74
  105. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +171 -225
  106. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -22
  107. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +172 -94
  108. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +4 -4
  109. package/docs-site-docusaurus/docs/api/classes/SkipList.md +98 -75
  110. package/docs-site-docusaurus/docs/api/classes/Stack.md +112 -50
  111. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +104 -129
  112. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +90 -121
  113. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +298 -107
  114. package/docs-site-docusaurus/docs/api/classes/Trie.md +116 -58
  115. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  116. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +59 -77
  117. package/package.json +45 -46
  118. package/src/common/error.ts +15 -32
  119. package/src/common/index.ts +0 -3
  120. package/src/data-structures/base/iterable-element-base.ts +0 -3
  121. package/src/data-structures/base/linear-base.ts +2 -36
  122. package/src/data-structures/binary-tree/avl-tree.ts +31 -529
  123. package/src/data-structures/binary-tree/binary-indexed-tree.ts +47 -572
  124. package/src/data-structures/binary-tree/binary-tree.ts +326 -1311
  125. package/src/data-structures/binary-tree/bst.ts +158 -1082
  126. package/src/data-structures/binary-tree/red-black-tree.ts +451 -1290
  127. package/src/data-structures/binary-tree/segment-tree.ts +73 -351
  128. package/src/data-structures/binary-tree/tree-map.ts +462 -5124
  129. package/src/data-structures/binary-tree/tree-multi-map.ts +302 -4914
  130. package/src/data-structures/binary-tree/tree-multi-set.ts +299 -3983
  131. package/src/data-structures/binary-tree/tree-set.ts +338 -4836
  132. package/src/data-structures/graph/abstract-graph.ts +98 -167
  133. package/src/data-structures/graph/directed-graph.ts +137 -562
  134. package/src/data-structures/graph/map-graph.ts +0 -3
  135. package/src/data-structures/graph/undirected-graph.ts +132 -511
  136. package/src/data-structures/hash/hash-map.ts +154 -582
  137. package/src/data-structures/heap/heap.ts +200 -795
  138. package/src/data-structures/linked-list/doubly-linked-list.ts +121 -865
  139. package/src/data-structures/linked-list/singly-linked-list.ts +122 -794
  140. package/src/data-structures/linked-list/skip-linked-list.ts +211 -918
  141. package/src/data-structures/matrix/matrix.ts +179 -518
  142. package/src/data-structures/matrix/navigator.ts +0 -1
  143. package/src/data-structures/priority-queue/max-priority-queue.ts +1 -6
  144. package/src/data-structures/priority-queue/min-priority-queue.ts +6 -11
  145. package/src/data-structures/priority-queue/priority-queue.ts +1 -2
  146. package/src/data-structures/queue/deque.ts +214 -882
  147. package/src/data-structures/queue/queue.ts +102 -625
  148. package/src/data-structures/stack/stack.ts +76 -505
  149. package/src/data-structures/trie/trie.ts +98 -628
  150. package/src/types/common.ts +0 -10
  151. package/src/types/data-structures/binary-tree/bst.ts +0 -7
  152. package/src/types/data-structures/binary-tree/red-black-tree.ts +0 -1
  153. package/src/types/data-structures/graph/abstract-graph.ts +0 -2
  154. package/src/types/data-structures/hash/hash-map.ts +0 -3
  155. package/src/types/data-structures/hash/index.ts +0 -1
  156. package/src/types/data-structures/matrix/navigator.ts +0 -2
  157. package/src/types/utils/utils.ts +0 -7
  158. package/src/types/utils/validate-type.ts +0 -7
  159. package/src/utils/number.ts +0 -2
  160. package/src/utils/utils.ts +0 -5
@@ -266,7 +266,6 @@ var Stack = class extends IterableElementBase {
266
266
  static {
267
267
  __name(this, "Stack");
268
268
  }
269
- _equals = /* @__PURE__ */ __name((a, b) => Object.is(a, b), "_equals");
270
269
  /**
271
270
  * Create a Stack and optionally bulk-push elements.
272
271
  * @remarks Time O(N), Space O(N)
@@ -288,54 +287,14 @@ var Stack = class extends IterableElementBase {
288
287
  return this._elements;
289
288
  }
290
289
  /**
291
- * Get the number of stored elements.
292
- * @remarks Time O(1), Space O(1)
293
- * @returns Current size.
294
-
295
-
296
-
297
-
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
-
306
-
307
-
308
-
309
-
310
-
311
-
312
-
313
-
314
-
315
-
316
-
317
-
318
-
319
-
320
-
321
-
322
-
323
-
324
-
325
-
326
-
327
-
328
-
329
-
330
-
331
-
332
-
333
-
334
- * @example
335
- * // Get number of elements
336
- * const stack = new Stack<number>([1, 2, 3]);
337
- * console.log(stack.size); // 3;
338
- */
290
+ * Get the number of stored elements.
291
+ * @remarks Time O(1), Space O(1)
292
+ * @returns Current size.
293
+ * @example
294
+ * // Get number of elements
295
+ * const stack = new Stack<number>([1, 2, 3]);
296
+ * console.log(stack.size); // 3;
297
+ */
339
298
  get size() {
340
299
  return this.elements.length;
341
300
  }
@@ -353,247 +312,79 @@ var Stack = class extends IterableElementBase {
353
312
  return new this(elements, options);
354
313
  }
355
314
  /**
356
- * Check whether the stack is empty.
357
- * @remarks Time O(1), Space O(1)
358
- * @returns True if size is 0.
359
-
360
-
361
-
362
-
363
-
364
-
365
-
366
-
367
-
368
-
369
-
370
-
371
-
372
-
373
-
374
-
375
-
376
-
377
-
378
-
379
-
380
-
381
-
382
-
383
-
384
-
385
-
386
-
387
-
388
-
389
-
390
-
391
-
392
-
393
-
394
-
395
-
396
-
397
-
398
-
399
-
400
-
401
- * @example
402
- * // Check if stack has elements
403
- * const stack = new Stack<number>();
404
- * console.log(stack.isEmpty()); // true;
405
- * stack.push(1);
406
- * console.log(stack.isEmpty()); // false;
407
- */
315
+ * Check whether the stack is empty.
316
+ * @remarks Time O(1), Space O(1)
317
+ * @returns True if size is 0.
318
+ * @example
319
+ * // Check if stack has elements
320
+ * const stack = new Stack<number>();
321
+ * console.log(stack.isEmpty()); // true;
322
+ * stack.push(1);
323
+ * console.log(stack.isEmpty()); // false;
324
+ */
408
325
  isEmpty() {
409
326
  return this.elements.length === 0;
410
327
  }
411
328
  /**
412
- * Get the top element without removing it.
413
- * @remarks Time O(1), Space O(1)
414
- * @returns Top element or undefined.
415
-
416
-
417
-
418
-
419
-
420
-
421
-
422
-
423
-
424
-
425
-
426
-
427
-
428
-
429
-
430
-
431
-
432
-
433
-
434
-
435
-
436
-
437
-
438
-
439
-
440
-
441
-
442
-
443
-
444
-
445
-
446
-
447
-
448
-
449
-
450
-
451
-
452
-
453
-
454
-
455
-
456
-
457
- * @example
458
- * // View the top element without removing it
459
- * const stack = new Stack<string>(['a', 'b', 'c']);
460
- * console.log(stack.peek()); // 'c';
461
- * console.log(stack.size); // 3;
462
- */
329
+ * Get the top element without removing it.
330
+ * @remarks Time O(1), Space O(1)
331
+ * @returns Top element or undefined.
332
+ * @example
333
+ * // View the top element without removing it
334
+ * const stack = new Stack<string>(['a', 'b', 'c']);
335
+ * console.log(stack.peek()); // 'c';
336
+ * console.log(stack.size); // 3;
337
+ */
463
338
  peek() {
464
339
  return this.isEmpty() ? void 0 : this.elements[this.elements.length - 1];
465
340
  }
466
341
  /**
467
- * Push one element onto the top.
468
- * @remarks Time O(1), Space O(1)
469
- * @param element - Element to push.
470
- * @returns True when pushed.
471
-
472
-
473
-
474
-
475
-
476
-
477
-
478
-
479
-
480
-
481
-
482
-
483
-
484
-
485
-
486
-
487
-
488
-
489
-
490
-
491
-
492
-
493
-
494
-
495
-
496
-
497
-
498
-
499
-
500
-
501
-
502
-
503
-
504
-
505
-
506
-
507
-
508
-
509
-
510
-
511
-
512
-
513
- * @example
514
- * // basic Stack creation and push operation
515
- * // Create a simple Stack with initial values
516
- * const stack = new Stack([1, 2, 3, 4, 5]);
517
- *
518
- * // Verify the stack maintains insertion order (LIFO will be shown in pop)
519
- * console.log([...stack]); // [1, 2, 3, 4, 5];
520
- *
521
- * // Check length
522
- * console.log(stack.size); // 5;
523
- *
524
- * // Push a new element to the top
525
- * stack.push(6);
526
- * console.log(stack.size); // 6;
527
- */
342
+ * Push one element onto the top.
343
+ * @remarks Time O(1), Space O(1)
344
+ * @param element - Element to push.
345
+ * @returns True when pushed.
346
+ * @example
347
+ * // basic Stack creation and push operation
348
+ * // Create a simple Stack with initial values
349
+ * const stack = new Stack([1, 2, 3, 4, 5]);
350
+ *
351
+ * // Verify the stack maintains insertion order (LIFO will be shown in pop)
352
+ * console.log([...stack]); // [1, 2, 3, 4, 5];
353
+ *
354
+ * // Check length
355
+ * console.log(stack.size); // 5;
356
+ *
357
+ * // Push a new element to the top
358
+ * stack.push(6);
359
+ * console.log(stack.size); // 6;
360
+ */
528
361
  push(element) {
529
362
  this.elements.push(element);
530
363
  return true;
531
364
  }
532
365
  /**
533
- * Pop and return the top element.
534
- * @remarks Time O(1), Space O(1)
535
- * @returns Removed element or undefined.
536
-
537
-
538
-
539
-
540
-
541
-
542
-
543
-
544
-
545
-
546
-
547
-
548
-
549
-
550
-
551
-
552
-
553
-
554
-
555
-
556
-
557
-
558
-
559
-
560
-
561
-
562
-
563
-
564
-
565
-
566
-
567
-
568
-
569
-
570
-
571
-
572
-
573
-
574
-
575
-
576
-
577
-
578
- * @example
579
- * // Stack pop operation (LIFO - Last In First Out)
580
- * const stack = new Stack<number>([10, 20, 30, 40, 50]);
581
- *
582
- * // Peek at the top element without removing
583
- * const top = stack.peek();
584
- * console.log(top); // 50;
585
- *
586
- * // Pop removes from the top (LIFO order)
587
- * const popped = stack.pop();
588
- * console.log(popped); // 50;
589
- *
590
- * // Next pop gets the previous element
591
- * const next = stack.pop();
592
- * console.log(next); // 40;
593
- *
594
- * // Verify length decreased
595
- * console.log(stack.size); // 3;
596
- */
366
+ * Pop and return the top element.
367
+ * @remarks Time O(1), Space O(1)
368
+ * @returns Removed element or undefined.
369
+ * @example
370
+ * // Stack pop operation (LIFO - Last In First Out)
371
+ * const stack = new Stack<number>([10, 20, 30, 40, 50]);
372
+ *
373
+ * // Peek at the top element without removing
374
+ * const top = stack.peek();
375
+ * console.log(top); // 50;
376
+ *
377
+ * // Pop removes from the top (LIFO order)
378
+ * const popped = stack.pop();
379
+ * console.log(popped); // 50;
380
+ *
381
+ * // Next pop gets the previous element
382
+ * const next = stack.pop();
383
+ * console.log(next); // 40;
384
+ *
385
+ * // Verify length decreased
386
+ * console.log(stack.size); // 3;
387
+ */
597
388
  pop() {
598
389
  return this.isEmpty() ? void 0 : this.elements.pop();
599
390
  }
@@ -612,55 +403,16 @@ var Stack = class extends IterableElementBase {
612
403
  return ans;
613
404
  }
614
405
  /**
615
- * Delete the first occurrence of a specific element.
616
- * @remarks Time O(N), Space O(1)
617
- * @param element - Element to remove (using the configured equality).
618
- * @returns True if an element was removed.
619
-
620
-
621
-
622
-
623
-
624
-
625
-
626
-
627
-
628
-
629
-
630
-
631
-
632
-
633
-
634
-
635
-
636
-
637
-
638
-
639
-
640
-
641
-
642
-
643
-
644
-
645
-
646
-
647
-
648
-
649
-
650
-
651
-
652
-
653
-
654
-
655
-
656
-
657
-
658
- * @example
659
- * // Remove element
660
- * const stack = new Stack<number>([1, 2, 3]);
661
- * stack.delete(2);
662
- * console.log(stack.toArray()); // [1, 3];
663
- */
406
+ * Delete the first occurrence of a specific element.
407
+ * @remarks Time O(N), Space O(1)
408
+ * @param element - Element to remove (using the configured equality).
409
+ * @returns True if an element was removed.
410
+ * @example
411
+ * // Remove element
412
+ * const stack = new Stack<number>([1, 2, 3]);
413
+ * stack.delete(2);
414
+ * console.log(stack.toArray()); // [1, 3];
415
+ */
664
416
  delete(element) {
665
417
  const idx = this._indexOfByEquals(element);
666
418
  return this.deleteAt(idx) !== void 0;
@@ -692,167 +444,47 @@ var Stack = class extends IterableElementBase {
692
444
  return false;
693
445
  }
694
446
  /**
695
- * Remove all elements and reset storage.
696
- * @remarks Time O(1), Space O(1)
697
- * @returns void
698
-
699
-
700
-
701
-
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
-
712
-
713
-
714
-
715
-
716
-
717
-
718
-
719
-
720
-
721
-
722
-
723
-
724
-
725
-
726
-
727
-
728
-
729
-
730
-
731
-
732
-
733
-
734
-
735
-
736
-
737
-
738
- * @example
739
- * // Remove all elements
740
- * const stack = new Stack<number>([1, 2, 3]);
741
- * stack.clear();
742
- * console.log(stack.isEmpty()); // true;
743
- */
447
+ * Remove all elements and reset storage.
448
+ * @remarks Time O(1), Space O(1)
449
+ * @returns void
450
+ * @example
451
+ * // Remove all elements
452
+ * const stack = new Stack<number>([1, 2, 3]);
453
+ * stack.clear();
454
+ * console.log(stack.isEmpty()); // true;
455
+ */
744
456
  clear() {
745
457
  this._elements = [];
746
458
  }
747
459
  /**
748
- * Deep clone this stack.
749
- * @remarks Time O(N), Space O(N)
750
- * @returns A new stack with the same content.
751
-
752
-
753
-
754
-
755
-
756
-
757
-
758
-
759
-
760
-
761
-
762
-
763
-
764
-
765
-
766
-
767
-
768
-
769
-
770
-
771
-
772
-
773
-
774
-
775
-
776
-
777
-
778
-
779
-
780
-
781
-
782
-
783
-
784
-
785
-
786
-
787
-
788
-
789
-
790
-
791
- * @example
792
- * // Create independent copy
793
- * const stack = new Stack<number>([1, 2, 3]);
794
- * const copy = stack.clone();
795
- * copy.pop();
796
- * console.log(stack.size); // 3;
797
- * console.log(copy.size); // 2;
798
- */
460
+ * Deep clone this stack.
461
+ * @remarks Time O(N), Space O(N)
462
+ * @returns A new stack with the same content.
463
+ * @example
464
+ * // Create independent copy
465
+ * const stack = new Stack<number>([1, 2, 3]);
466
+ * const copy = stack.clone();
467
+ * copy.pop();
468
+ * console.log(stack.size); // 3;
469
+ * console.log(copy.size); // 2;
470
+ */
799
471
  clone() {
800
472
  const out = this._createInstance({ toElementFn: this.toElementFn });
801
473
  for (const v of this) out.push(v);
802
474
  return out;
803
475
  }
804
476
  /**
805
- * Filter elements into a new stack of the same class.
806
- * @remarks Time O(N), Space O(N)
807
- * @param predicate - Predicate (value, index, stack) → boolean to keep value.
808
- * @param [thisArg] - Value for `this` inside the predicate.
809
- * @returns A new stack with kept values.
810
-
811
-
812
-
813
-
814
-
815
-
816
-
817
-
818
-
819
-
820
-
821
-
822
-
823
-
824
-
825
-
826
-
827
-
828
-
829
-
830
-
831
-
832
-
833
-
834
-
835
-
836
-
837
-
838
-
839
-
840
-
841
-
842
-
843
-
844
-
845
-
846
-
847
-
848
-
849
-
850
- * @example
851
- * // Filter elements
852
- * const stack = new Stack<number>([1, 2, 3, 4, 5]);
853
- * const evens = stack.filter(x => x % 2 === 0);
854
- * console.log(evens.toArray()); // [2, 4];
855
- */
477
+ * Filter elements into a new stack of the same class.
478
+ * @remarks Time O(N), Space O(N)
479
+ * @param predicate - Predicate (value, index, stack) → boolean to keep value.
480
+ * @param [thisArg] - Value for `this` inside the predicate.
481
+ * @returns A new stack with kept values.
482
+ * @example
483
+ * // Filter elements
484
+ * const stack = new Stack<number>([1, 2, 3, 4, 5]);
485
+ * const evens = stack.filter(x => x % 2 === 0);
486
+ * console.log(evens.toArray()); // [2, 4];
487
+ */
856
488
  filter(predicate, thisArg) {
857
489
  const out = this._createInstance({ toElementFn: this.toElementFn });
858
490
  let index = 0;
@@ -879,59 +511,20 @@ var Stack = class extends IterableElementBase {
879
511
  return out;
880
512
  }
881
513
  /**
882
- * Map values into a new stack (possibly different element type).
883
- * @remarks Time O(N), Space O(N)
884
- * @template EM
885
- * @template RM
886
- * @param callback - Mapping function (value, index, stack) → newElement.
887
- * @param [options] - Options for the output stack (e.g., toElementFn).
888
- * @param [thisArg] - Value for `this` inside the callback.
889
- * @returns A new Stack with mapped elements.
890
-
891
-
892
-
893
-
894
-
895
-
896
-
897
-
898
-
899
-
900
-
901
-
902
-
903
-
904
-
905
-
906
-
907
-
908
-
909
-
910
-
911
-
912
-
913
-
914
-
915
-
916
-
917
-
918
-
919
-
920
-
921
-
922
-
923
-
924
-
925
-
926
-
927
-
928
-
929
- * @example
930
- * // Transform elements
931
- * const stack = new Stack<number>([1, 2, 3]);
932
- * const doubled = stack.map(x => x * 2);
933
- * console.log(doubled.toArray()); // [2, 4, 6];
934
- */
514
+ * Map values into a new stack (possibly different element type).
515
+ * @remarks Time O(N), Space O(N)
516
+ * @template EM
517
+ * @template RM
518
+ * @param callback - Mapping function (value, index, stack) → newElement.
519
+ * @param [options] - Options for the output stack (e.g., toElementFn).
520
+ * @param [thisArg] - Value for `this` inside the callback.
521
+ * @returns A new Stack with mapped elements.
522
+ * @example
523
+ * // Transform elements
524
+ * const stack = new Stack<number>([1, 2, 3]);
525
+ * const doubled = stack.map(x => x * 2);
526
+ * console.log(doubled.toArray()); // [2, 4, 6];
527
+ */
935
528
  map(callback, options, thisArg) {
936
529
  const out = this._createLike([], { ...options ?? {} });
937
530
  let index = 0;
@@ -951,6 +544,7 @@ var Stack = class extends IterableElementBase {
951
544
  this._equals = equals;
952
545
  return this;
953
546
  }
547
+ _equals = /* @__PURE__ */ __name((a, b) => Object.is(a, b), "_equals");
954
548
  /**
955
549
  * (Protected) Find the index of a target element using the equality function.
956
550
  * @remarks Time O(N), Space O(1)