data-structure-typed 1.53.6 → 1.53.8

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 (161) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +16 -25
  3. package/benchmark/report.html +32 -5
  4. package/benchmark/report.json +326 -23
  5. package/dist/cjs/common/index.d.ts +12 -0
  6. package/dist/cjs/common/index.js +29 -0
  7. package/dist/cjs/common/index.js.map +1 -0
  8. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
  9. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +9 -12
  10. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  11. package/dist/cjs/data-structures/binary-tree/avl-tree.js +2 -2
  12. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  13. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +55 -20
  14. package/dist/cjs/data-structures/binary-tree/binary-tree.js +102 -68
  15. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  16. package/dist/cjs/data-structures/binary-tree/bst.d.ts +131 -37
  17. package/dist/cjs/data-structures/binary-tree/bst.js +222 -69
  18. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  19. package/dist/cjs/data-structures/binary-tree/index.d.ts +1 -1
  20. package/dist/cjs/data-structures/binary-tree/index.js +1 -1
  21. package/dist/cjs/data-structures/binary-tree/index.js.map +1 -1
  22. package/dist/{mjs/data-structures/binary-tree/rb-tree.d.ts → cjs/data-structures/binary-tree/red-black-tree.d.ts} +56 -0
  23. package/dist/cjs/data-structures/binary-tree/{rb-tree.js → red-black-tree.js} +60 -4
  24. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -0
  25. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +2 -2
  26. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +7 -7
  27. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  28. package/dist/cjs/data-structures/hash/hash-map.d.ts +30 -0
  29. package/dist/cjs/data-structures/hash/hash-map.js +30 -0
  30. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  31. package/dist/cjs/data-structures/heap/heap.d.ts +26 -9
  32. package/dist/cjs/data-structures/heap/heap.js +37 -17
  33. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  34. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +54 -9
  35. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +80 -19
  36. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  37. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +35 -2
  38. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +55 -11
  39. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  40. package/dist/cjs/data-structures/queue/deque.d.ts +37 -8
  41. package/dist/cjs/data-structures/queue/deque.js +73 -29
  42. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  43. package/dist/cjs/data-structures/queue/queue.d.ts +41 -1
  44. package/dist/cjs/data-structures/queue/queue.js +51 -9
  45. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  46. package/dist/cjs/data-structures/stack/stack.d.ts +27 -10
  47. package/dist/cjs/data-structures/stack/stack.js +39 -20
  48. package/dist/cjs/data-structures/stack/stack.js.map +1 -1
  49. package/dist/cjs/data-structures/trie/trie.d.ts +111 -6
  50. package/dist/cjs/data-structures/trie/trie.js +123 -14
  51. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  52. package/dist/cjs/index.d.ts +1 -1
  53. package/dist/cjs/index.js +1 -1
  54. package/dist/cjs/index.js.map +1 -1
  55. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -1
  56. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +3 -2
  57. package/dist/cjs/types/data-structures/binary-tree/rb-tree.d.ts +1 -1
  58. package/dist/cjs/types/utils/utils.d.ts +10 -6
  59. package/dist/cjs/utils/utils.js +4 -2
  60. package/dist/cjs/utils/utils.js.map +1 -1
  61. package/dist/mjs/common/index.d.ts +12 -0
  62. package/dist/mjs/common/index.js +29 -0
  63. package/dist/mjs/common/index.js.map +1 -0
  64. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
  65. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +10 -12
  66. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  67. package/dist/mjs/data-structures/binary-tree/avl-tree.js +3 -2
  68. package/dist/mjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  69. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +55 -20
  70. package/dist/mjs/data-structures/binary-tree/binary-tree.js +97 -63
  71. package/dist/mjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  72. package/dist/mjs/data-structures/binary-tree/bst.d.ts +131 -37
  73. package/dist/mjs/data-structures/binary-tree/bst.js +224 -69
  74. package/dist/mjs/data-structures/binary-tree/bst.js.map +1 -1
  75. package/dist/mjs/data-structures/binary-tree/index.d.ts +1 -1
  76. package/dist/mjs/data-structures/binary-tree/index.js +1 -1
  77. package/dist/mjs/data-structures/binary-tree/index.js.map +1 -1
  78. package/dist/{cjs/data-structures/binary-tree/rb-tree.d.ts → mjs/data-structures/binary-tree/red-black-tree.d.ts} +56 -0
  79. package/dist/mjs/data-structures/binary-tree/{rb-tree.js → red-black-tree.js} +60 -4
  80. package/dist/mjs/data-structures/binary-tree/red-black-tree.js.map +1 -0
  81. package/dist/mjs/data-structures/binary-tree/tree-multi-map.d.ts +2 -2
  82. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +5 -5
  83. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  84. package/dist/mjs/data-structures/hash/hash-map.d.ts +30 -0
  85. package/dist/mjs/data-structures/hash/hash-map.js +30 -0
  86. package/dist/mjs/data-structures/hash/hash-map.js.map +1 -1
  87. package/dist/mjs/data-structures/heap/heap.d.ts +26 -9
  88. package/dist/mjs/data-structures/heap/heap.js +37 -17
  89. package/dist/mjs/data-structures/heap/heap.js.map +1 -1
  90. package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +54 -9
  91. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +80 -19
  92. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  93. package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +35 -2
  94. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +55 -11
  95. package/dist/mjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  96. package/dist/mjs/data-structures/queue/deque.d.ts +37 -8
  97. package/dist/mjs/data-structures/queue/deque.js +73 -29
  98. package/dist/mjs/data-structures/queue/deque.js.map +1 -1
  99. package/dist/mjs/data-structures/queue/queue.d.ts +41 -1
  100. package/dist/mjs/data-structures/queue/queue.js +51 -9
  101. package/dist/mjs/data-structures/queue/queue.js.map +1 -1
  102. package/dist/mjs/data-structures/stack/stack.d.ts +27 -10
  103. package/dist/mjs/data-structures/stack/stack.js +39 -20
  104. package/dist/mjs/data-structures/stack/stack.js.map +1 -1
  105. package/dist/mjs/data-structures/trie/trie.d.ts +111 -6
  106. package/dist/mjs/data-structures/trie/trie.js +123 -14
  107. package/dist/mjs/data-structures/trie/trie.js.map +1 -1
  108. package/dist/mjs/index.d.ts +1 -1
  109. package/dist/mjs/index.js +1 -1
  110. package/dist/mjs/index.js.map +1 -1
  111. package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -1
  112. package/dist/mjs/types/data-structures/binary-tree/bst.d.ts +3 -2
  113. package/dist/mjs/types/data-structures/binary-tree/rb-tree.d.ts +1 -1
  114. package/dist/mjs/types/utils/utils.d.ts +10 -6
  115. package/dist/mjs/utils/utils.js +4 -2
  116. package/dist/mjs/utils/utils.js.map +1 -1
  117. package/dist/umd/data-structure-typed.js +671 -246
  118. package/dist/umd/data-structure-typed.min.js +3 -3
  119. package/dist/umd/data-structure-typed.min.js.map +1 -1
  120. package/package.json +7 -7
  121. package/src/common/index.ts +25 -0
  122. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +9 -11
  123. package/src/data-structures/binary-tree/avl-tree.ts +3 -2
  124. package/src/data-structures/binary-tree/binary-tree.ts +110 -66
  125. package/src/data-structures/binary-tree/bst.ts +232 -72
  126. package/src/data-structures/binary-tree/index.ts +1 -1
  127. package/src/data-structures/binary-tree/{rb-tree.ts → red-black-tree.ts} +56 -3
  128. package/src/data-structures/binary-tree/tree-multi-map.ts +6 -6
  129. package/src/data-structures/hash/hash-map.ts +30 -0
  130. package/src/data-structures/heap/heap.ts +72 -49
  131. package/src/data-structures/linked-list/doubly-linked-list.ts +173 -105
  132. package/src/data-structures/linked-list/singly-linked-list.ts +61 -11
  133. package/src/data-structures/queue/deque.ts +72 -28
  134. package/src/data-structures/queue/queue.ts +50 -7
  135. package/src/data-structures/stack/stack.ts +39 -20
  136. package/src/data-structures/trie/trie.ts +123 -13
  137. package/src/index.ts +1 -1
  138. package/src/types/data-structures/binary-tree/binary-tree.ts +1 -1
  139. package/src/types/data-structures/binary-tree/bst.ts +3 -2
  140. package/src/types/data-structures/binary-tree/rb-tree.ts +1 -1
  141. package/src/types/utils/utils.ts +16 -10
  142. package/src/utils/utils.ts +4 -2
  143. package/test/performance/data-structures/binary-tree/avl-tree.test.ts +3 -0
  144. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +4 -1
  145. package/test/performance/reportor.ts +38 -33
  146. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +2 -2
  147. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +47 -47
  148. package/test/unit/data-structures/binary-tree/bst.test.ts +114 -44
  149. package/test/unit/data-structures/binary-tree/overall.test.ts +14 -22
  150. package/test/unit/data-structures/binary-tree/{rb-tree.test.ts → red-black-tree.test.ts} +55 -1
  151. package/test/unit/data-structures/trie/trie.test.ts +151 -0
  152. package/test/unit/utils/utils.test.ts +6 -6
  153. package/dist/cjs/constants/index.d.ts +0 -4
  154. package/dist/cjs/constants/index.js +0 -9
  155. package/dist/cjs/constants/index.js.map +0 -1
  156. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +0 -1
  157. package/dist/mjs/constants/index.d.ts +0 -4
  158. package/dist/mjs/constants/index.js +0 -6
  159. package/dist/mjs/constants/index.js.map +0 -1
  160. package/dist/mjs/data-structures/binary-tree/rb-tree.js.map +0 -1
  161. package/src/constants/index.ts +0 -4
@@ -28,10 +28,6 @@ export declare class Stack<E = any, R = any> extends IterableElementBase<E, R, S
28
28
  * @returns The size of the elements array.
29
29
  */
30
30
  get size(): number;
31
- /**
32
- * Time Complexity: O(n)
33
- * Space Complexity: O(n)
34
- */
35
31
  /**
36
32
  * Time Complexity: O(n)
37
33
  * Space Complexity: O(n)
@@ -43,6 +39,9 @@ export declare class Stack<E = any, R = any> extends IterableElementBase<E, R, S
43
39
  */
44
40
  static fromArray<E>(elements: E[]): Stack<E>;
45
41
  /**
42
+ * Time Complexity: O(1)
43
+ * Space Complexity: O(1)
44
+ *
46
45
  * The function checks if an array is empty and returns a boolean value.
47
46
  * @returns A boolean value indicating whether the `_elements` array is empty or not.
48
47
  */
@@ -74,15 +73,33 @@ export declare class Stack<E = any, R = any> extends IterableElementBase<E, R, S
74
73
  */
75
74
  pop(): E | undefined;
76
75
  /**
77
- * The delete function removes an element from the stack.
78
- * @param element: E Specify the element to be deleted
79
- * @return A boolean value indicating whether the element was successfully deleted or not
76
+ * Time Complexity: O(k)
77
+ * Space Complexity: O(1)
78
+ *
79
+ * The function `pushMany` iterates over elements and pushes them into an array after applying a
80
+ * transformation function if provided.
81
+ * @param {Iterable<E> | Iterable<R>} elements - The `elements` parameter in the `pushMany` function
82
+ * is an iterable containing elements of type `E` or `R`. The function iterates over each element in
83
+ * the iterable and pushes it into the data structure. If a transformation function `toElementFn` is
84
+ * provided, it is used to
85
+ * @returns The `pushMany` function is returning an array of boolean values indicating whether each
86
+ * element was successfully pushed into the data structure.
87
+ */
88
+ pushMany(elements: Iterable<E> | Iterable<R>): boolean[];
89
+ /**
90
+ * Time Complexity: O(n)
91
+ * Space Complexity: O(1)
92
+ *
93
+ * The toArray function returns a copy of the elements in an array.
94
+ * @returns An array of type E.
80
95
  */
81
96
  delete(element: E): boolean;
82
97
  /**
83
- * The deleteAt function deletes the element at a given index.
84
- * @param index: number Determine the index of the element to be deleted
85
- * @return A boolean value
98
+ * Time Complexity: O(n)
99
+ * Space Complexity: O(1)
100
+ *
101
+ * The toArray function returns a copy of the elements in an array.
102
+ * @returns An array of type E.
86
103
  */
87
104
  deleteAt(index: number): boolean;
88
105
  /**
@@ -14,16 +14,7 @@ class Stack extends base_1.IterableElementBase {
14
14
  constructor(elements = [], options) {
15
15
  super(options);
16
16
  this._elements = [];
17
- if (elements) {
18
- for (const el of elements) {
19
- if (this.toElementFn) {
20
- this.push(this.toElementFn(el));
21
- }
22
- else {
23
- this.push(el);
24
- }
25
- }
26
- }
17
+ this.pushMany(elements);
27
18
  }
28
19
  /**
29
20
  * The elements function returns the elements of this set.
@@ -39,10 +30,6 @@ class Stack extends base_1.IterableElementBase {
39
30
  get size() {
40
31
  return this.elements.length;
41
32
  }
42
- /**
43
- * Time Complexity: O(n)
44
- * Space Complexity: O(n)
45
- */
46
33
  /**
47
34
  * Time Complexity: O(n)
48
35
  * Space Complexity: O(n)
@@ -56,6 +43,9 @@ class Stack extends base_1.IterableElementBase {
56
43
  return new Stack(elements);
57
44
  }
58
45
  /**
46
+ * Time Complexity: O(1)
47
+ * Space Complexity: O(1)
48
+ *
59
49
  * The function checks if an array is empty and returns a boolean value.
60
50
  * @returns A boolean value indicating whether the `_elements` array is empty or not.
61
51
  */
@@ -100,18 +90,47 @@ class Stack extends base_1.IterableElementBase {
100
90
  return this.elements.pop();
101
91
  }
102
92
  /**
103
- * The delete function removes an element from the stack.
104
- * @param element: E Specify the element to be deleted
105
- * @return A boolean value indicating whether the element was successfully deleted or not
93
+ * Time Complexity: O(k)
94
+ * Space Complexity: O(1)
95
+ *
96
+ * The function `pushMany` iterates over elements and pushes them into an array after applying a
97
+ * transformation function if provided.
98
+ * @param {Iterable<E> | Iterable<R>} elements - The `elements` parameter in the `pushMany` function
99
+ * is an iterable containing elements of type `E` or `R`. The function iterates over each element in
100
+ * the iterable and pushes it into the data structure. If a transformation function `toElementFn` is
101
+ * provided, it is used to
102
+ * @returns The `pushMany` function is returning an array of boolean values indicating whether each
103
+ * element was successfully pushed into the data structure.
104
+ */
105
+ pushMany(elements) {
106
+ const ans = [];
107
+ for (const el of elements) {
108
+ if (this.toElementFn) {
109
+ ans.push(this.push(this.toElementFn(el)));
110
+ }
111
+ else {
112
+ ans.push(this.push(el));
113
+ }
114
+ }
115
+ return ans;
116
+ }
117
+ /**
118
+ * Time Complexity: O(n)
119
+ * Space Complexity: O(1)
120
+ *
121
+ * The toArray function returns a copy of the elements in an array.
122
+ * @returns An array of type E.
106
123
  */
107
124
  delete(element) {
108
125
  const index = this.elements.indexOf(element);
109
126
  return this.deleteAt(index);
110
127
  }
111
128
  /**
112
- * The deleteAt function deletes the element at a given index.
113
- * @param index: number Determine the index of the element to be deleted
114
- * @return A boolean value
129
+ * Time Complexity: O(n)
130
+ * Space Complexity: O(1)
131
+ *
132
+ * The toArray function returns a copy of the elements in an array.
133
+ * @returns An array of type E.
115
134
  */
116
135
  deleteAt(index) {
117
136
  const spliced = this.elements.splice(index, 1);
@@ -1 +1 @@
1
- {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../../src/data-structures/stack/stack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../../src/data-structures/stack/stack.ts"],"names":[],"mappings":"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"}
@@ -65,13 +65,100 @@ export declare class TrieNode {
65
65
  * 9. Spell Check: Checking the spelling of words.
66
66
  * 10. IP Routing: Used in certain types of IP routing algorithms.
67
67
  * 11. Text Word Frequency Count: Counting and storing the frequency of words in a large amount of text data.
68
+ * @example
69
+ * // Autocomplete: Prefix validation and checking
70
+ * const autocomplete = new Trie<string>(['gmail.com', 'gmail.co.nz', 'gmail.co.jp', 'yahoo.com', 'outlook.com']);
71
+ *
72
+ * // Get all completions for a prefix
73
+ * const gmailCompletions = autocomplete.getWords('gmail');
74
+ * console.log(gmailCompletions); // ['gmail.com', 'gmail.co.nz', 'gmail.co.jp']
75
+ * @example
76
+ * // File System Path Operations
77
+ * const fileSystem = new Trie<string>([
78
+ * '/home/user/documents/file1.txt',
79
+ * '/home/user/documents/file2.txt',
80
+ * '/home/user/pictures/photo.jpg',
81
+ * '/home/user/pictures/vacation/',
82
+ * '/home/user/downloads'
83
+ * ]);
84
+ *
85
+ * // Find common directory prefix
86
+ * console.log(fileSystem.getLongestCommonPrefix()); // '/home/user/'
87
+ *
88
+ * // List all files in a directory
89
+ * const documentsFiles = fileSystem.getWords('/home/user/documents/');
90
+ * console.log(documentsFiles); // ['/home/user/documents/file1.txt', '/home/user/documents/file2.txt']
91
+ * @example
92
+ * // Autocomplete: Basic word suggestions
93
+ * // Create a trie for autocomplete
94
+ * const autocomplete = new Trie<string>([
95
+ * 'function',
96
+ * 'functional',
97
+ * 'functions',
98
+ * 'class',
99
+ * 'classes',
100
+ * 'classical',
101
+ * 'closure',
102
+ * 'const',
103
+ * 'constructor'
104
+ * ]);
105
+ *
106
+ * // Test autocomplete with different prefixes
107
+ * console.log(autocomplete.getWords('fun')); // ['functional', 'functions', 'function']
108
+ * console.log(autocomplete.getWords('cla')); // ['classes', 'classical', 'class']
109
+ * console.log(autocomplete.getWords('con')); // ['constructor', 'const']
110
+ *
111
+ * // Test with non-matching prefix
112
+ * console.log(autocomplete.getWords('xyz')); // []
113
+ * @example
114
+ * // Dictionary: Case-insensitive word lookup
115
+ * // Create a case-insensitive dictionary
116
+ * const dictionary = new Trie<string>([], { caseSensitive: false });
117
+ *
118
+ * // Add words with mixed casing
119
+ * dictionary.add('Hello');
120
+ * dictionary.add('WORLD');
121
+ * dictionary.add('JavaScript');
122
+ *
123
+ * // Test lookups with different casings
124
+ * console.log(dictionary.has('hello')); // true
125
+ * console.log(dictionary.has('HELLO')); // true
126
+ * console.log(dictionary.has('Hello')); // true
127
+ * console.log(dictionary.has('javascript')); // true
128
+ * console.log(dictionary.has('JAVASCRIPT')); // true
129
+ * @example
130
+ * // IP Address Routing Table
131
+ * // Add IP address prefixes and their corresponding routes
132
+ * const routes = {
133
+ * '192.168.1': 'LAN_SUBNET_1',
134
+ * '192.168.2': 'LAN_SUBNET_2',
135
+ * '10.0.0': 'PRIVATE_NETWORK_1',
136
+ * '10.0.1': 'PRIVATE_NETWORK_2'
137
+ * };
138
+ *
139
+ * const ipRoutingTable = new Trie<string>(Object.keys(routes));
140
+ *
141
+ * // Check IP address prefix matching
142
+ * console.log(ipRoutingTable.hasPrefix('192.168.1')); // true
143
+ * console.log(ipRoutingTable.hasPrefix('192.168.2')); // true
144
+ *
145
+ * // Validate IP address belongs to subnet
146
+ * const ip = '192.168.1.100';
147
+ * const subnet = ip.split('.').slice(0, 3).join('.');
148
+ * console.log(ipRoutingTable.hasPrefix(subnet)); // true
68
149
  */
69
150
  export declare class Trie<R = any> extends IterableElementBase<string, R, Trie<R>> {
70
151
  /**
71
- * The constructor function for the Trie class.
72
- * @param words: Iterable string Initialize the trie with a set of words
73
- * @param options?: TrieOptions Allow the user to pass in options for the trie
74
- * @return This
152
+ * The constructor initializes a Trie data structure with optional options and words provided as
153
+ * input.
154
+ * @param {Iterable<string> | Iterable<R>} words - The `words` parameter in the constructor is an
155
+ * iterable containing either strings or elements of type `R`. It is used to initialize the Trie with
156
+ * a list of words or elements. If no `words` are provided, an empty iterable is used as the default
157
+ * value.
158
+ * @param [options] - The `options` parameter in the constructor is an optional object that can
159
+ * contain configuration options for the Trie data structure. One of the options it can have is
160
+ * `caseSensitive`, which is a boolean value indicating whether the Trie should be case-sensitive or
161
+ * not. If `caseSensitive` is set to `
75
162
  */
76
163
  constructor(words?: Iterable<string> | Iterable<R>, options?: TrieOptions<R>);
77
164
  protected _size: number;
@@ -101,6 +188,19 @@ export declare class Trie<R = any> extends IterableElementBase<string, R, Trie<R
101
188
  * @returns {boolean} True if the word was successfully added.
102
189
  */
103
190
  add(word: string): boolean;
191
+ /**
192
+ * Time Complexity: O(n * l)
193
+ * Space Complexity: O(1)
194
+ *
195
+ * The `addMany` function in TypeScript takes an iterable of strings or elements of type R, converts
196
+ * them using a provided function if available, and adds them to a data structure while returning an
197
+ * array of boolean values indicating success.
198
+ * @param {Iterable<string> | Iterable<R>} words - The `words` parameter in the `addMany` function is
199
+ * an iterable that contains either strings or elements of type `R`.
200
+ * @returns The `addMany` method returns an array of boolean values indicating whether each word in
201
+ * the input iterable was successfully added to the data structure.
202
+ */
203
+ addMany(words: Iterable<string> | Iterable<R>): boolean[];
104
204
  /**
105
205
  * Time Complexity: O(l), where l is the length of the input word.
106
206
  * Space Complexity: O(1) - Constant space.
@@ -135,9 +235,14 @@ export declare class Trie<R = any> extends IterableElementBase<string, R, Trie<R
135
235
  */
136
236
  delete(word: string): boolean;
137
237
  /**
138
- * Time Complexity: O(n), where n is the total number of nodes in the trie.
139
- * Space Complexity: O(1) - Constant space.
238
+ * Time Complexity: O(n)
239
+ * Space Complexity: O(1)
140
240
  *
241
+ * The function `getHeight` calculates the height of a trie data structure starting from the root
242
+ * node.
243
+ * @returns The `getHeight` method returns the maximum depth or height of the trie tree starting from
244
+ * the root node. It calculates the depth using a breadth-first search (BFS) traversal of the trie
245
+ * tree and returns the maximum depth found.
141
246
  */
142
247
  getHeight(): number;
143
248
  /**
@@ -74,13 +74,100 @@ exports.TrieNode = TrieNode;
74
74
  * 9. Spell Check: Checking the spelling of words.
75
75
  * 10. IP Routing: Used in certain types of IP routing algorithms.
76
76
  * 11. Text Word Frequency Count: Counting and storing the frequency of words in a large amount of text data.
77
+ * @example
78
+ * // Autocomplete: Prefix validation and checking
79
+ * const autocomplete = new Trie<string>(['gmail.com', 'gmail.co.nz', 'gmail.co.jp', 'yahoo.com', 'outlook.com']);
80
+ *
81
+ * // Get all completions for a prefix
82
+ * const gmailCompletions = autocomplete.getWords('gmail');
83
+ * console.log(gmailCompletions); // ['gmail.com', 'gmail.co.nz', 'gmail.co.jp']
84
+ * @example
85
+ * // File System Path Operations
86
+ * const fileSystem = new Trie<string>([
87
+ * '/home/user/documents/file1.txt',
88
+ * '/home/user/documents/file2.txt',
89
+ * '/home/user/pictures/photo.jpg',
90
+ * '/home/user/pictures/vacation/',
91
+ * '/home/user/downloads'
92
+ * ]);
93
+ *
94
+ * // Find common directory prefix
95
+ * console.log(fileSystem.getLongestCommonPrefix()); // '/home/user/'
96
+ *
97
+ * // List all files in a directory
98
+ * const documentsFiles = fileSystem.getWords('/home/user/documents/');
99
+ * console.log(documentsFiles); // ['/home/user/documents/file1.txt', '/home/user/documents/file2.txt']
100
+ * @example
101
+ * // Autocomplete: Basic word suggestions
102
+ * // Create a trie for autocomplete
103
+ * const autocomplete = new Trie<string>([
104
+ * 'function',
105
+ * 'functional',
106
+ * 'functions',
107
+ * 'class',
108
+ * 'classes',
109
+ * 'classical',
110
+ * 'closure',
111
+ * 'const',
112
+ * 'constructor'
113
+ * ]);
114
+ *
115
+ * // Test autocomplete with different prefixes
116
+ * console.log(autocomplete.getWords('fun')); // ['functional', 'functions', 'function']
117
+ * console.log(autocomplete.getWords('cla')); // ['classes', 'classical', 'class']
118
+ * console.log(autocomplete.getWords('con')); // ['constructor', 'const']
119
+ *
120
+ * // Test with non-matching prefix
121
+ * console.log(autocomplete.getWords('xyz')); // []
122
+ * @example
123
+ * // Dictionary: Case-insensitive word lookup
124
+ * // Create a case-insensitive dictionary
125
+ * const dictionary = new Trie<string>([], { caseSensitive: false });
126
+ *
127
+ * // Add words with mixed casing
128
+ * dictionary.add('Hello');
129
+ * dictionary.add('WORLD');
130
+ * dictionary.add('JavaScript');
131
+ *
132
+ * // Test lookups with different casings
133
+ * console.log(dictionary.has('hello')); // true
134
+ * console.log(dictionary.has('HELLO')); // true
135
+ * console.log(dictionary.has('Hello')); // true
136
+ * console.log(dictionary.has('javascript')); // true
137
+ * console.log(dictionary.has('JAVASCRIPT')); // true
138
+ * @example
139
+ * // IP Address Routing Table
140
+ * // Add IP address prefixes and their corresponding routes
141
+ * const routes = {
142
+ * '192.168.1': 'LAN_SUBNET_1',
143
+ * '192.168.2': 'LAN_SUBNET_2',
144
+ * '10.0.0': 'PRIVATE_NETWORK_1',
145
+ * '10.0.1': 'PRIVATE_NETWORK_2'
146
+ * };
147
+ *
148
+ * const ipRoutingTable = new Trie<string>(Object.keys(routes));
149
+ *
150
+ * // Check IP address prefix matching
151
+ * console.log(ipRoutingTable.hasPrefix('192.168.1')); // true
152
+ * console.log(ipRoutingTable.hasPrefix('192.168.2')); // true
153
+ *
154
+ * // Validate IP address belongs to subnet
155
+ * const ip = '192.168.1.100';
156
+ * const subnet = ip.split('.').slice(0, 3).join('.');
157
+ * console.log(ipRoutingTable.hasPrefix(subnet)); // true
77
158
  */
78
159
  class Trie extends base_1.IterableElementBase {
79
160
  /**
80
- * The constructor function for the Trie class.
81
- * @param words: Iterable string Initialize the trie with a set of words
82
- * @param options?: TrieOptions Allow the user to pass in options for the trie
83
- * @return This
161
+ * The constructor initializes a Trie data structure with optional options and words provided as
162
+ * input.
163
+ * @param {Iterable<string> | Iterable<R>} words - The `words` parameter in the constructor is an
164
+ * iterable containing either strings or elements of type `R`. It is used to initialize the Trie with
165
+ * a list of words or elements. If no `words` are provided, an empty iterable is used as the default
166
+ * value.
167
+ * @param [options] - The `options` parameter in the constructor is an optional object that can
168
+ * contain configuration options for the Trie data structure. One of the options it can have is
169
+ * `caseSensitive`, which is a boolean value indicating whether the Trie should be case-sensitive or
170
+ * not. If `caseSensitive` is set to `
84
171
  */
85
172
  constructor(words = [], options) {
86
173
  super(options);
@@ -93,14 +180,7 @@ class Trie extends base_1.IterableElementBase {
93
180
  this._caseSensitive = caseSensitive;
94
181
  }
95
182
  if (words) {
96
- for (const word of words) {
97
- if (this.toElementFn) {
98
- this.add(this.toElementFn(word));
99
- }
100
- else {
101
- this.add(word);
102
- }
103
- }
183
+ this.addMany(words);
104
184
  }
105
185
  }
106
186
  /**
@@ -151,6 +231,30 @@ class Trie extends base_1.IterableElementBase {
151
231
  }
152
232
  return isNewWord;
153
233
  }
234
+ /**
235
+ * Time Complexity: O(n * l)
236
+ * Space Complexity: O(1)
237
+ *
238
+ * The `addMany` function in TypeScript takes an iterable of strings or elements of type R, converts
239
+ * them using a provided function if available, and adds them to a data structure while returning an
240
+ * array of boolean values indicating success.
241
+ * @param {Iterable<string> | Iterable<R>} words - The `words` parameter in the `addMany` function is
242
+ * an iterable that contains either strings or elements of type `R`.
243
+ * @returns The `addMany` method returns an array of boolean values indicating whether each word in
244
+ * the input iterable was successfully added to the data structure.
245
+ */
246
+ addMany(words) {
247
+ const ans = [];
248
+ for (const word of words) {
249
+ if (this.toElementFn) {
250
+ ans.push(this.add(this.toElementFn(word)));
251
+ }
252
+ else {
253
+ ans.push(this.add(word));
254
+ }
255
+ }
256
+ return ans;
257
+ }
154
258
  /**
155
259
  * Time Complexity: O(l), where l is the length of the input word.
156
260
  * Space Complexity: O(1) - Constant space.
@@ -234,9 +338,14 @@ class Trie extends base_1.IterableElementBase {
234
338
  return isDeleted;
235
339
  }
236
340
  /**
237
- * Time Complexity: O(n), where n is the total number of nodes in the trie.
238
- * Space Complexity: O(1) - Constant space.
341
+ * Time Complexity: O(n)
342
+ * Space Complexity: O(1)
239
343
  *
344
+ * The function `getHeight` calculates the height of a trie data structure starting from the root
345
+ * node.
346
+ * @returns The `getHeight` method returns the maximum depth or height of the trie tree starting from
347
+ * the root node. It calculates the depth using a breadth-first search (BFS) traversal of the trie
348
+ * tree and returns the maximum depth found.
240
349
  */
241
350
  getHeight() {
242
351
  const startNode = this.root;
@@ -1 +1 @@
1
- {"version":3,"file":"trie.js","sourceRoot":"","sources":["../../../../src/data-structures/trie/trie.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trie.js","sourceRoot":"","sources":["../../../../src/data-structures/trie/trie.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,4 @@ export * from './data-structures';
2
2
  export * from './utils';
3
3
  export * from './interfaces';
4
4
  export * from './types';
5
- export * from './constants';
5
+ export * from './common';
package/dist/cjs/index.js CHANGED
@@ -18,5 +18,5 @@ __exportStar(require("./data-structures"), exports);
18
18
  __exportStar(require("./utils"), exports);
19
19
  __exportStar(require("./interfaces"), exports);
20
20
  __exportStar(require("./types"), exports);
21
- __exportStar(require("./constants"), exports);
21
+ __exportStar(require("./common"), exports);
22
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,0CAAwB;AACxB,+CAA6B;AAC7B,0CAAwB;AACxB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,0CAAwB;AACxB,+CAA6B;AAC7B,0CAAwB;AACxB,2CAAyB"}
@@ -1,6 +1,6 @@
1
1
  import { BinaryTree, BinaryTreeNode } from '../../../data-structures';
2
2
  import { IterationType, OptValue } from '../../common';
3
- import { DFSOperation } from '../../../constants';
3
+ import { DFSOperation } from '../../../common';
4
4
  export type BinaryTreeNodeNested<K, V> = BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
5
5
  export type BinaryTreeNested<K, V, R, NODE extends BinaryTreeNode<K, V, NODE>> = BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
6
6
  export type ToEntryFn<K, V, R> = (rawElement: R) => BTNEntry<K, V>;
@@ -1,10 +1,11 @@
1
1
  import { BST, BSTNode } from '../../../data-structures';
2
2
  import type { BinaryTreeOptions } from './binary-tree';
3
- import { Comparator } from '../../common';
3
+ import { Comparable } from '../../utils';
4
4
  export type BSTNodeNested<K, V> = BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
5
5
  export type BSTNested<K, V, R, NODE extends BSTNode<K, V, NODE>> = BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
6
6
  export type BSTOptions<K, V, R> = BinaryTreeOptions<K, V, R> & {
7
- comparator?: Comparator<K>;
7
+ extractComparable?: (key: K) => Comparable;
8
+ isReverse?: boolean;
8
9
  };
9
10
  export type BSTNOptKey<K> = K | undefined;
10
11
  export type OptNode<NODE> = NODE | undefined;
@@ -3,4 +3,4 @@ import type { BSTOptions } from "./bst";
3
3
  export type RBTNColor = 'RED' | 'BLACK';
4
4
  export type RedBlackTreeNodeNested<K, V> = RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
5
5
  export type RedBlackTreeNested<K, V, R, NODE extends RedBlackTreeNode<K, V, NODE>> = RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
6
- export type RBTreeOptions<K, V, R> = BSTOptions<K, V, R> & {};
6
+ export type RBTreeOptions<K, V, R> = Omit<BSTOptions<K, V, R>, 'isReverse'> & {};
@@ -6,13 +6,17 @@ export type TrlFn<A extends any[] = any[], R = any> = (...args: A) => R;
6
6
  export type TrlAsyncFn = (...args: any[]) => any;
7
7
  export type SpecifyOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
8
8
  export type Any = string | number | bigint | boolean | symbol | undefined | object;
9
+ export type Arithmetic = number | bigint;
9
10
  export type ComparablePrimitive = number | bigint | string | boolean;
10
- export type ComparableObject = {
11
- [key in string]: any;
12
- } & ({
13
- valueOf: () => ComparablePrimitive | ComparableObject;
11
+ export interface BaseComparableObject {
12
+ [key: string]: unknown;
13
+ }
14
+ export interface ValueComparableObject extends BaseComparableObject {
15
+ valueOf: () => ComparablePrimitive | ValueComparableObject;
14
16
  toString?: () => string;
15
- } | {
17
+ }
18
+ export interface StringComparableObject extends BaseComparableObject {
16
19
  toString: () => string;
17
- });
20
+ }
21
+ export type ComparableObject = ValueComparableObject | StringComparableObject;
18
22
  export type Comparable = ComparablePrimitive | Date | ComparableObject;
@@ -214,7 +214,8 @@ exports.roundFixed = roundFixed;
214
214
  function isPrimitiveComparable(value) {
215
215
  const valueType = typeof value;
216
216
  if (valueType === 'number')
217
- return !Number.isNaN(value);
217
+ return true;
218
+ // if (valueType === 'number') return !Number.isNaN(value);
218
219
  return valueType === 'bigint' || valueType === 'string' || valueType === 'boolean';
219
220
  }
220
221
  /**
@@ -266,7 +267,8 @@ function isComparable(value, isForceObjectComparable = false) {
266
267
  if (typeof value !== 'object')
267
268
  return false;
268
269
  if (value instanceof Date)
269
- return !Number.isNaN(value.getTime());
270
+ return true;
271
+ // if (value instanceof Date) return !Number.isNaN(value.getTime());
270
272
  if (isForceObjectComparable)
271
273
  return true;
272
274
  const comparableValue = tryObjectToPrimitive(value);