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
@@ -1,25 +1,15 @@
1
1
  export type CP = 1 | -1 | 0;
2
-
3
2
  export type IterationType = 'ITERATIVE' | 'RECURSIVE';
4
-
5
3
  export type FamilyPosition = 'ROOT' | 'LEFT' | 'RIGHT' | 'ROOT_LEFT' | 'ROOT_RIGHT' | 'ISOLATED' | 'MAL_NODE';
6
-
7
4
  export type Comparator<K> = (a: K, b: K) => number;
8
-
9
5
  export type DFSOrderPattern = 'PRE' | 'IN' | 'POST';
10
-
11
6
  export type NodeDisplayLayout = [string[], number, number, number];
12
-
13
7
  export interface IterableWithSize<T> extends Iterable<T> {
14
8
  size: number | ((...args: unknown[]) => number);
15
9
  }
16
-
17
10
  export interface IterableWithLength<T> extends Iterable<T> {
18
11
  length: number | ((...args: unknown[]) => number);
19
12
  }
20
-
21
13
  export type OptValue<V> = V | undefined;
22
-
23
14
  export type IterableWithSizeOrLength<T> = IterableWithSize<T> | IterableWithLength<T>;
24
-
25
15
  export type CRUD = 'CREATED' | 'READ' | 'UPDATED' | 'DELETED';
@@ -2,19 +2,12 @@ import type { BinaryTreeOptions } from './binary-tree';
2
2
  import type { Comparator, OptValue } from '../../common';
3
3
 
4
4
  type BSTBaseOptions<K, V, R> = Omit<BinaryTreeOptions<K, V, R>, 'isDuplicate'>;
5
-
6
5
  export type BSTOptions<K, V, R> = BSTBaseOptions<K, V, R> & {
7
6
  comparator?: Comparator<K>;
8
7
  enableOrderStatistic?: boolean;
9
8
  }
10
-
11
9
  export type BSTNOptKey<K> = K | undefined;
12
-
13
10
  export type OptNode<NODE> = NODE | undefined;
14
-
15
11
  export type BSTNEntry<K, V> = [BSTNOptKey<K>, OptValue<V>];
16
-
17
12
  export type BSTNOptKeyOrNode<K, NODE> = BSTNOptKey<K> | NODE;
18
-
19
13
  export type BSTNRep<K, V, NODE> = BSTNEntry<K, V> | BSTNOptKeyOrNode<K, NODE>;
20
-
@@ -1,5 +1,4 @@
1
1
  import type { BSTOptions } from './bst';
2
2
 
3
3
  export type RBTNColor = 'RED' | 'BLACK';
4
-
5
4
  export type RedBlackTreeOptions<K, V, R> = BSTOptions<K, V, R>;
@@ -1,5 +1,4 @@
1
1
  export type VertexKey = string | number;
2
-
3
2
  export type DijkstraResult<V> =
4
3
  | {
5
4
  distMap: Map<V, number>;
@@ -11,7 +10,6 @@ export type DijkstraResult<V> =
11
10
  minPath: V[];
12
11
  }
13
12
  | undefined;
14
-
15
13
  export type GraphOptions<V = any> = {
16
14
  vertexValueInitializer?: (key: VertexKey) => V;
17
15
  defaultEdgeWeight?: number;
@@ -4,16 +4,13 @@ export type HashMapLinkedNode<K, V> = {
4
4
  next: HashMapLinkedNode<K, V>;
5
5
  prev: HashMapLinkedNode<K, V>;
6
6
  };
7
-
8
7
  export type LinkedHashMapOptions<K, V, R> = {
9
8
  hashFn?: (key: K) => string;
10
9
  objHashFn?: (key: K) => object;
11
10
  toEntryFn?: (rawElement: R) => [K, V];
12
11
  };
13
-
14
12
  export type HashMapOptions<K, V, R> = {
15
13
  hashFn?: (key: K) => string;
16
14
  toEntryFn?: (rawElement: R) => [K, V];
17
15
  };
18
-
19
16
  export type HashMapStoreItem<K, V> = { key: K; value: V };
@@ -1,3 +1,2 @@
1
1
  export * from './hash-map';
2
-
3
2
  export type HashFunction<K> = (key: K) => number;
@@ -1,7 +1,5 @@
1
1
  export type Direction = 'up' | 'right' | 'down' | 'left';
2
-
3
2
  export type Turning = { [key in Direction]: Direction };
4
-
5
3
  export type NavigatorParams<T = any> = {
6
4
  matrix: T[][];
7
5
  turning: Turning;
@@ -1,11 +1,7 @@
1
1
  export type SpecifyOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
2
-
3
2
  export type Any = string | number | bigint | boolean | symbol | undefined | object;
4
-
5
3
  export type Arithmetic = number | bigint;
6
-
7
4
  export type ElemOf<T> = T extends (infer U)[] ? U : never;
8
-
9
5
  export type ComparablePrimitive = number | bigint | string | boolean;
10
6
 
11
7
  export interface BaseComparableObject {
@@ -22,12 +18,9 @@ export interface StringComparableObject extends BaseComparableObject {
22
18
  }
23
19
 
24
20
  export type ComparableObject = ValueComparableObject | StringComparableObject;
25
-
26
21
  export type Comparable = ComparablePrimitive | Date | ComparableObject;
27
-
28
22
  export type TrampolineThunk<T> = {
29
23
  readonly isThunk: true;
30
24
  readonly fn: () => Trampoline<T>;
31
25
  };
32
-
33
26
  export type Trampoline<T> = T | TrampolineThunk<T>;
@@ -1,27 +1,20 @@
1
1
  export type KeyValueObject = { [key: string]: unknown };
2
-
3
2
  export type KeyValueObjectWithKey = { [key: string]: unknown; key: string | number | symbol };
4
-
5
3
  export type NonNumberNonObjectButDefined = string | boolean | symbol | null;
6
-
7
4
  export type ObjectWithoutKey = Omit<KeyValueObject, 'key'>;
8
-
9
5
  export type ObjectWithNonNumberKey = {
10
6
  [key: string]: unknown;
11
7
  key: string | boolean | symbol | null | object | undefined;
12
8
  };
13
-
14
9
  export type ObjectWithNumberKey = {
15
10
  [key: string]: unknown;
16
11
  key: number;
17
12
  };
18
-
19
13
  export type RestrictValByKey =
20
14
  | NonNumberNonObjectButDefined
21
15
  | ObjectWithoutKey
22
16
  | ObjectWithNonNumberKey
23
17
  | ObjectWithNumberKey;
24
-
25
18
  export type DummyAny =
26
19
  | string
27
20
  | number
@@ -14,9 +14,7 @@
14
14
  export function toBinaryString(num: number, digit = 32) {
15
15
  // Convert number to binary string
16
16
  let binaryString = (num >>> 0).toString(2); // Use the unsigned right shift operator to ensure you get a binary representation of a 32-bit unsigned integer
17
-
18
17
  // Use pad Start to ensure the string length is 32 bits
19
18
  binaryString = binaryString.padStart(digit, '0');
20
-
21
19
  return binaryString;
22
20
  }
@@ -34,7 +34,6 @@ export const arrayRemove = function <T>(array: T[], predicate: (item: T, index:
34
34
  let i = -1,
35
35
  len = array ? array.length : 0;
36
36
  const result = [];
37
-
38
37
  while (++i < len) {
39
38
  const value = array[i];
40
39
  if (predicate(value, i, array)) {
@@ -43,7 +42,6 @@ export const arrayRemove = function <T>(array: T[], predicate: (item: T, index:
43
42
  len--;
44
43
  }
45
44
  }
46
-
47
45
  return result;
48
46
  };
49
47
 
@@ -190,7 +188,6 @@ function tryObjectToPrimitive(obj: object): ComparablePrimitive | null {
190
188
  export function isComparable(value: unknown, isForceObjectComparable = false): value is Comparable {
191
189
  if (value === null || value === undefined) return false;
192
190
  if (isPrimitiveComparable(value)) return true;
193
-
194
191
  if (typeof value !== 'object') return false;
195
192
  if (value instanceof Date) return true;
196
193
  // if (value instanceof Date) return !Number.isNaN(value.getTime());
@@ -303,12 +300,10 @@ export function makeTrampoline<Args extends any[], Result>(
303
300
  */
304
301
  export async function asyncTrampoline<T>(initial: Trampoline<T> | Promise<Trampoline<T>>): Promise<T> {
305
302
  let current = await initial; // Wait for the initial step to resolve if it's a Promise
306
-
307
303
  // Keep executing thunks until we reach a non-thunk (final) value
308
304
  while (isTrampolineThunk(current)) {
309
305
  current = await current.fn(); // Execute the thunk function (may be async)
310
306
  }
311
-
312
307
  // Once the final value is reached, return it
313
308
  return current;
314
309
  }