@zengrid/shared 1.0.3 → 1.1.0

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 (217) hide show
  1. package/README.md +4 -0
  2. package/dist/README.md +48 -0
  3. package/dist/index.cjs.default.js +1 -0
  4. package/dist/index.cjs.js +8696 -0
  5. package/dist/index.cjs.mjs +2 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.esm.js +8640 -0
  8. package/dist/package.json +54 -0
  9. package/dist/src/algorithms/filter/bloom-filter.d.ts +120 -0
  10. package/dist/src/algorithms/filter/bloom-filter.d.ts.map +1 -0
  11. package/dist/src/algorithms/filter/index.d.ts +7 -0
  12. package/dist/src/algorithms/filter/index.d.ts.map +1 -0
  13. package/dist/src/algorithms/graph/bfs.d.ts +71 -0
  14. package/dist/src/algorithms/graph/bfs.d.ts.map +1 -0
  15. package/dist/src/algorithms/graph/dfs.d.ts +62 -0
  16. package/dist/src/algorithms/graph/dfs.d.ts.map +1 -0
  17. package/dist/src/algorithms/graph/graph.interface.d.ts +63 -0
  18. package/dist/src/algorithms/graph/graph.interface.d.ts.map +1 -0
  19. package/dist/src/algorithms/graph/index.d.ts +9 -0
  20. package/dist/src/algorithms/graph/index.d.ts.map +1 -0
  21. package/dist/src/algorithms/index.d.ts +11 -0
  22. package/dist/src/algorithms/index.d.ts.map +1 -0
  23. package/dist/src/algorithms/pattern/index.d.ts +8 -0
  24. package/dist/src/algorithms/pattern/index.d.ts.map +1 -0
  25. package/dist/src/algorithms/pattern/sequence-detector.d.ts +62 -0
  26. package/dist/src/algorithms/pattern/sequence-detector.d.ts.map +1 -0
  27. package/dist/src/algorithms/search/binary-search.d.ts +86 -0
  28. package/dist/src/algorithms/search/binary-search.d.ts.map +1 -0
  29. package/dist/src/algorithms/search/index.d.ts +6 -0
  30. package/dist/src/algorithms/search/index.d.ts.map +1 -0
  31. package/dist/src/algorithms/sorting/comparators.d.ts +126 -0
  32. package/dist/src/algorithms/sorting/comparators.d.ts.map +1 -0
  33. package/dist/src/algorithms/sorting/index.d.ts +9 -0
  34. package/dist/src/algorithms/sorting/index.d.ts.map +1 -0
  35. package/dist/src/algorithms/sorting/sorting.interface.d.ts +38 -0
  36. package/dist/src/algorithms/sorting/sorting.interface.d.ts.map +1 -0
  37. package/dist/src/algorithms/sorting/timsort-gallop.d.ts +21 -0
  38. package/dist/src/algorithms/sorting/timsort-gallop.d.ts.map +1 -0
  39. package/dist/src/algorithms/sorting/timsort-merge.d.ts +6 -0
  40. package/dist/src/algorithms/sorting/timsort-merge.d.ts.map +1 -0
  41. package/dist/src/algorithms/sorting/timsort-run.d.ts +38 -0
  42. package/dist/src/algorithms/sorting/timsort-run.d.ts.map +1 -0
  43. package/dist/src/algorithms/sorting/timsort.d.ts +55 -0
  44. package/dist/src/algorithms/sorting/timsort.d.ts.map +1 -0
  45. package/dist/src/algorithms/sorting/timsort.interface.d.ts +32 -0
  46. package/dist/src/algorithms/sorting/timsort.interface.d.ts.map +1 -0
  47. package/dist/src/data-structures/column-store/column-store.d.ts +52 -0
  48. package/dist/src/data-structures/column-store/column-store.d.ts.map +1 -0
  49. package/dist/src/data-structures/column-store/column-store.interface.d.ts +155 -0
  50. package/dist/src/data-structures/column-store/column-store.interface.d.ts.map +1 -0
  51. package/dist/src/data-structures/column-store/index.d.ts +6 -0
  52. package/dist/src/data-structures/column-store/index.d.ts.map +1 -0
  53. package/dist/src/data-structures/command-stack/command-stack.d.ts +61 -0
  54. package/dist/src/data-structures/command-stack/command-stack.d.ts.map +1 -0
  55. package/dist/src/data-structures/command-stack/command-stack.interface.d.ts +80 -0
  56. package/dist/src/data-structures/command-stack/command-stack.interface.d.ts.map +1 -0
  57. package/dist/src/data-structures/command-stack/index.d.ts +3 -0
  58. package/dist/src/data-structures/command-stack/index.d.ts.map +1 -0
  59. package/dist/src/data-structures/dependency-graph/dependency-graph.d.ts +147 -0
  60. package/dist/src/data-structures/dependency-graph/dependency-graph.d.ts.map +1 -0
  61. package/dist/src/data-structures/dependency-graph/dependency-graph.interface.d.ts +161 -0
  62. package/dist/src/data-structures/dependency-graph/dependency-graph.interface.d.ts.map +1 -0
  63. package/dist/src/data-structures/dependency-graph/index.d.ts +8 -0
  64. package/dist/src/data-structures/dependency-graph/index.d.ts.map +1 -0
  65. package/dist/src/data-structures/disjoint-set/disjoint-set.d.ts +84 -0
  66. package/dist/src/data-structures/disjoint-set/disjoint-set.d.ts.map +1 -0
  67. package/dist/src/data-structures/disjoint-set/disjoint-set.interface.d.ts +185 -0
  68. package/dist/src/data-structures/disjoint-set/disjoint-set.interface.d.ts.map +1 -0
  69. package/dist/src/data-structures/disjoint-set/index.d.ts +7 -0
  70. package/dist/src/data-structures/disjoint-set/index.d.ts.map +1 -0
  71. package/dist/src/data-structures/index-map/index-map.d.ts +150 -0
  72. package/dist/src/data-structures/index-map/index-map.d.ts.map +1 -0
  73. package/dist/src/data-structures/index-map/index-map.interface.d.ts +186 -0
  74. package/dist/src/data-structures/index-map/index-map.interface.d.ts.map +1 -0
  75. package/dist/src/data-structures/index-map/index.d.ts +6 -0
  76. package/dist/src/data-structures/index-map/index.d.ts.map +1 -0
  77. package/dist/src/data-structures/index.d.ts +36 -0
  78. package/dist/src/data-structures/index.d.ts.map +1 -0
  79. package/dist/src/data-structures/interval-tree/index.d.ts +7 -0
  80. package/dist/src/data-structures/interval-tree/index.d.ts.map +1 -0
  81. package/dist/src/data-structures/interval-tree/interval-tree.d.ts +58 -0
  82. package/dist/src/data-structures/interval-tree/interval-tree.d.ts.map +1 -0
  83. package/dist/src/data-structures/interval-tree/interval-tree.interface.d.ts +212 -0
  84. package/dist/src/data-structures/interval-tree/interval-tree.interface.d.ts.map +1 -0
  85. package/dist/src/data-structures/interval-tree/node.d.ts +34 -0
  86. package/dist/src/data-structures/interval-tree/node.d.ts.map +1 -0
  87. package/dist/src/data-structures/interval-tree/operations/balance.d.ts +34 -0
  88. package/dist/src/data-structures/interval-tree/operations/balance.d.ts.map +1 -0
  89. package/dist/src/data-structures/interval-tree/operations/delete.d.ts +26 -0
  90. package/dist/src/data-structures/interval-tree/operations/delete.d.ts.map +1 -0
  91. package/dist/src/data-structures/interval-tree/operations/insert.d.ts +19 -0
  92. package/dist/src/data-structures/interval-tree/operations/insert.d.ts.map +1 -0
  93. package/dist/src/data-structures/interval-tree/operations/search.d.ts +46 -0
  94. package/dist/src/data-structures/interval-tree/operations/search.d.ts.map +1 -0
  95. package/dist/src/data-structures/interval-tree/operations/traversal.d.ts +29 -0
  96. package/dist/src/data-structures/interval-tree/operations/traversal.d.ts.map +1 -0
  97. package/dist/src/data-structures/interval-tree/operations/utilities.d.ts +30 -0
  98. package/dist/src/data-structures/interval-tree/operations/utilities.d.ts.map +1 -0
  99. package/dist/src/data-structures/lru-cache/index.d.ts +3 -0
  100. package/dist/src/data-structures/lru-cache/index.d.ts.map +1 -0
  101. package/dist/src/data-structures/lru-cache/lru-cache.d.ts +134 -0
  102. package/dist/src/data-structures/lru-cache/lru-cache.d.ts.map +1 -0
  103. package/dist/src/data-structures/lru-cache/lru-cache.interface.d.ts +173 -0
  104. package/dist/src/data-structures/lru-cache/lru-cache.interface.d.ts.map +1 -0
  105. package/dist/src/data-structures/prefix-sum-array/index.d.ts +6 -0
  106. package/dist/src/data-structures/prefix-sum-array/index.d.ts.map +1 -0
  107. package/dist/src/data-structures/prefix-sum-array/prefix-sum-array.d.ts +63 -0
  108. package/dist/src/data-structures/prefix-sum-array/prefix-sum-array.d.ts.map +1 -0
  109. package/dist/src/data-structures/prefix-sum-array/prefix-sum-array.interface.d.ts +80 -0
  110. package/dist/src/data-structures/prefix-sum-array/prefix-sum-array.interface.d.ts.map +1 -0
  111. package/dist/src/data-structures/ring-buffer.d.ts +96 -0
  112. package/dist/src/data-structures/ring-buffer.d.ts.map +1 -0
  113. package/dist/src/data-structures/rtree/index.d.ts +8 -0
  114. package/dist/src/data-structures/rtree/index.d.ts.map +1 -0
  115. package/dist/src/data-structures/rtree/rtree.d.ts +81 -0
  116. package/dist/src/data-structures/rtree/rtree.d.ts.map +1 -0
  117. package/dist/src/data-structures/rtree/rtree.interface.d.ts +143 -0
  118. package/dist/src/data-structures/rtree/rtree.interface.d.ts.map +1 -0
  119. package/dist/src/data-structures/segment-tree/aggregation-config.d.ts +6 -0
  120. package/dist/src/data-structures/segment-tree/aggregation-config.d.ts.map +1 -0
  121. package/dist/src/data-structures/segment-tree/index.d.ts +4 -0
  122. package/dist/src/data-structures/segment-tree/index.d.ts.map +1 -0
  123. package/dist/src/data-structures/segment-tree/lazy-propagation.d.ts +5 -0
  124. package/dist/src/data-structures/segment-tree/lazy-propagation.d.ts.map +1 -0
  125. package/dist/src/data-structures/segment-tree/segment-tree.d.ts +30 -0
  126. package/dist/src/data-structures/segment-tree/segment-tree.d.ts.map +1 -0
  127. package/dist/src/data-structures/segment-tree/segment-tree.interface.d.ts +202 -0
  128. package/dist/src/data-structures/segment-tree/segment-tree.interface.d.ts.map +1 -0
  129. package/dist/src/data-structures/segment-tree/tree-builder.d.ts +3 -0
  130. package/dist/src/data-structures/segment-tree/tree-builder.d.ts.map +1 -0
  131. package/dist/src/data-structures/segment-tree/tree-query.d.ts +3 -0
  132. package/dist/src/data-structures/segment-tree/tree-query.d.ts.map +1 -0
  133. package/dist/src/data-structures/segment-tree/tree-search.d.ts +2 -0
  134. package/dist/src/data-structures/segment-tree/tree-search.d.ts.map +1 -0
  135. package/dist/src/data-structures/segment-tree/tree-update.d.ts +4 -0
  136. package/dist/src/data-structures/segment-tree/tree-update.d.ts.map +1 -0
  137. package/dist/src/data-structures/segment-tree/tree-validation.d.ts +3 -0
  138. package/dist/src/data-structures/segment-tree/tree-validation.d.ts.map +1 -0
  139. package/dist/src/data-structures/skip-list/index.d.ts +4 -0
  140. package/dist/src/data-structures/skip-list/index.d.ts.map +1 -0
  141. package/dist/src/data-structures/skip-list/skip-list.d.ts +137 -0
  142. package/dist/src/data-structures/skip-list/skip-list.d.ts.map +1 -0
  143. package/dist/src/data-structures/skip-list/skip-list.interface.d.ts +223 -0
  144. package/dist/src/data-structures/skip-list/skip-list.interface.d.ts.map +1 -0
  145. package/dist/src/data-structures/sparse-matrix/index.d.ts +6 -0
  146. package/dist/src/data-structures/sparse-matrix/index.d.ts.map +1 -0
  147. package/dist/src/data-structures/sparse-matrix/sparse-matrix.d.ts +44 -0
  148. package/dist/src/data-structures/sparse-matrix/sparse-matrix.d.ts.map +1 -0
  149. package/dist/src/data-structures/sparse-matrix/sparse-matrix.interface.d.ts +105 -0
  150. package/dist/src/data-structures/sparse-matrix/sparse-matrix.interface.d.ts.map +1 -0
  151. package/dist/src/data-structures/suffix-array/index.d.ts +3 -0
  152. package/dist/src/data-structures/suffix-array/index.d.ts.map +1 -0
  153. package/dist/src/data-structures/suffix-array/suffix-array.d.ts +102 -0
  154. package/dist/src/data-structures/suffix-array/suffix-array.d.ts.map +1 -0
  155. package/dist/src/data-structures/suffix-array/suffix-array.interface.d.ts +117 -0
  156. package/dist/src/data-structures/suffix-array/suffix-array.interface.d.ts.map +1 -0
  157. package/dist/src/data-structures/trie/index.d.ts +8 -0
  158. package/dist/src/data-structures/trie/index.d.ts.map +1 -0
  159. package/dist/src/data-structures/trie/trie.d.ts +205 -0
  160. package/dist/src/data-structures/trie/trie.d.ts.map +1 -0
  161. package/dist/src/data-structures/trie/trie.interface.d.ts +117 -0
  162. package/dist/src/data-structures/trie/trie.interface.d.ts.map +1 -0
  163. package/dist/src/index.d.ts +54 -0
  164. package/dist/src/index.d.ts.map +1 -0
  165. package/dist/src/patterns/coordinator.d.ts +90 -0
  166. package/dist/src/patterns/coordinator.d.ts.map +1 -0
  167. package/dist/src/patterns/event-emitter.d.ts +106 -0
  168. package/dist/src/patterns/event-emitter.d.ts.map +1 -0
  169. package/dist/src/patterns/factory.d.ts +120 -0
  170. package/dist/src/patterns/factory.d.ts.map +1 -0
  171. package/dist/src/patterns/index.d.ts +21 -0
  172. package/dist/src/patterns/index.d.ts.map +1 -0
  173. package/dist/src/patterns/mediator.d.ts +116 -0
  174. package/dist/src/patterns/mediator.d.ts.map +1 -0
  175. package/dist/src/patterns/object-pool.d.ts +178 -0
  176. package/dist/src/patterns/object-pool.d.ts.map +1 -0
  177. package/dist/src/patterns/observer.d.ts +89 -0
  178. package/dist/src/patterns/observer.d.ts.map +1 -0
  179. package/dist/src/patterns/operation-mode.d.ts +75 -0
  180. package/dist/src/patterns/operation-mode.d.ts.map +1 -0
  181. package/dist/src/patterns/state-machine.d.ts +122 -0
  182. package/dist/src/patterns/state-machine.d.ts.map +1 -0
  183. package/dist/src/reactive/batch-processor.d.ts +80 -0
  184. package/dist/src/reactive/batch-processor.d.ts.map +1 -0
  185. package/dist/src/reactive/core/batch-manager.d.ts +48 -0
  186. package/dist/src/reactive/core/batch-manager.d.ts.map +1 -0
  187. package/dist/src/reactive/core/batch-queue.d.ts +39 -0
  188. package/dist/src/reactive/core/batch-queue.d.ts.map +1 -0
  189. package/dist/src/reactive/core/event-handler-registry.d.ts +52 -0
  190. package/dist/src/reactive/core/event-handler-registry.d.ts.map +1 -0
  191. package/dist/src/reactive/core/event-mapper.d.ts +37 -0
  192. package/dist/src/reactive/core/event-mapper.d.ts.map +1 -0
  193. package/dist/src/reactive/core/pool-stats.d.ts +47 -0
  194. package/dist/src/reactive/core/pool-stats.d.ts.map +1 -0
  195. package/dist/src/reactive/core/subscription-manager.d.ts +46 -0
  196. package/dist/src/reactive/core/subscription-manager.d.ts.map +1 -0
  197. package/dist/src/reactive/event-delegator.d.ts +84 -0
  198. package/dist/src/reactive/event-delegator.d.ts.map +1 -0
  199. package/dist/src/reactive/index.d.ts +61 -0
  200. package/dist/src/reactive/index.d.ts.map +1 -0
  201. package/dist/src/reactive/interfaces.d.ts +207 -0
  202. package/dist/src/reactive/interfaces.d.ts.map +1 -0
  203. package/dist/src/reactive/object-pool.d.ts +97 -0
  204. package/dist/src/reactive/object-pool.d.ts.map +1 -0
  205. package/dist/src/reactive/reactive-state.d.ts +132 -0
  206. package/dist/src/reactive/reactive-state.d.ts.map +1 -0
  207. package/dist/src/types/common.d.ts +56 -0
  208. package/dist/src/types/common.d.ts.map +1 -0
  209. package/dist/src/types/index.d.ts +5 -0
  210. package/dist/src/types/index.d.ts.map +1 -0
  211. package/dist/src/utils/index.d.ts +7 -0
  212. package/dist/src/utils/index.d.ts.map +1 -0
  213. package/dist/src/utils/timing.d.ts +104 -0
  214. package/dist/src/utils/timing.d.ts.map +1 -0
  215. package/dist/src/utils/timing.interface.d.ts +96 -0
  216. package/dist/src/utils/timing.interface.d.ts.map +1 -0
  217. package/package.json +52 -52
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@zengrid/shared",
3
+ "version": "1.1.0",
4
+ "description": "14 advanced data structures and algorithms for high-performance grids",
5
+ "main": "./index.cjs.js",
6
+ "module": "./index.esm.js",
7
+ "types": "./dist/index.d.ts",
8
+ "sideEffects": false,
9
+ "exports": {
10
+ ".": {
11
+ "module": "./index.esm.js",
12
+ "types": "./index.d.ts",
13
+ "import": "./index.cjs.mjs",
14
+ "default": "./index.cjs.js"
15
+ },
16
+ "./algorithms/*": {
17
+ "types": "./dist/algorithms/*/index.d.ts",
18
+ "import": "./dist/algorithms/*/index.esm.js",
19
+ "require": "./dist/algorithms/*/index.cjs"
20
+ },
21
+ "./data-structures/*": {
22
+ "types": "./dist/data-structures/*/index.d.ts",
23
+ "import": "./dist/data-structures/*/index.esm.js",
24
+ "require": "./dist/data-structures/*/index.cjs"
25
+ },
26
+ "./types": {
27
+ "types": "./dist/types/index.d.ts",
28
+ "import": "./dist/types/index.esm.js",
29
+ "require": "./dist/types/index.cjs"
30
+ },
31
+ "./package.json": "./package.json"
32
+ },
33
+ "files": [
34
+ "dist",
35
+ "README.md"
36
+ ],
37
+ "keywords": [
38
+ "algorithms",
39
+ "data-structures",
40
+ "grid",
41
+ "utilities"
42
+ ],
43
+ "author": "ZenGrid Team",
44
+ "license": "MIT",
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "https://github.com/zengrid-dev/zengrid.git",
48
+ "directory": "packages/shared"
49
+ },
50
+ "bugs": {
51
+ "url": "https://github.com/zengrid-dev/zengrid/issues"
52
+ },
53
+ "homepage": "https://github.com/zengrid-dev/zengrid#readme"
54
+ }
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Bloom Filter - Probabilistic Data Structure
3
+ *
4
+ * A space-efficient probabilistic data structure for testing set membership.
5
+ * May have false positives but never false negatives.
6
+ *
7
+ * **Time Complexity:**
8
+ * - Add: O(k) where k = number of hash functions
9
+ * - Check: O(k)
10
+ *
11
+ * **Space Complexity:** O(m) where m = bit array size
12
+ *
13
+ * **Use Cases:**
14
+ * - Quick "definitely not in set" checks (e.g., "does this filter value exist?")
15
+ * - Cache optimization (avoid expensive lookups for non-existent items)
16
+ * - Duplicate detection in large datasets
17
+ * - Spell checkers
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const filter = new BloomFilter(1000, 3); // 1000 bits, 3 hash functions
22
+ *
23
+ * // Add some items
24
+ * filter.add('apple');
25
+ * filter.add('banana');
26
+ * filter.add('cherry');
27
+ *
28
+ * filter.contains('apple'); // true (definitely in set)
29
+ * filter.contains('grape'); // false (definitely NOT in set)
30
+ * filter.contains('apples'); // might be true (false positive possible)
31
+ * ```
32
+ *
33
+ * @example Grid Filter Optimization
34
+ * ```typescript
35
+ * // Quickly check if a filter value might exist before scanning column
36
+ * class ColumnFilter {
37
+ * private bloomFilter = new BloomFilter(10000, 4);
38
+ *
39
+ * indexColumn(values: any[]): void {
40
+ * values.forEach(v => this.bloomFilter.add(String(v)));
41
+ * }
42
+ *
43
+ * mightContain(value: string): boolean {
44
+ * return this.bloomFilter.contains(value);
45
+ * }
46
+ * }
47
+ * ```
48
+ */
49
+ export declare class BloomFilter {
50
+ private bitArray;
51
+ private size;
52
+ private hashCount;
53
+ /**
54
+ * Create a new Bloom Filter
55
+ *
56
+ * @param size - Size of the bit array (larger = fewer false positives)
57
+ * @param hashCount - Number of hash functions (more = fewer false positives, slower)
58
+ */
59
+ constructor(size: number, hashCount?: number);
60
+ /**
61
+ * Add an item to the filter
62
+ *
63
+ * @param item - Item to add
64
+ */
65
+ add(item: string): void;
66
+ /**
67
+ * Check if an item might be in the set
68
+ *
69
+ * @param item - Item to check
70
+ * @returns true if item might be in set, false if definitely NOT in set
71
+ */
72
+ contains(item: string): boolean;
73
+ /**
74
+ * Clear the filter
75
+ */
76
+ clear(): void;
77
+ /**
78
+ * Get the false positive probability
79
+ *
80
+ * P(false positive) ≈ (1 - e^(-kn/m))^k
81
+ * where k = hash functions, n = items added, m = bit array size
82
+ *
83
+ * @param itemCount - Number of items added
84
+ * @returns Estimated false positive probability
85
+ */
86
+ getFalsePositiveRate(itemCount: number): number;
87
+ /**
88
+ * Calculate optimal bit array size for desired false positive rate
89
+ *
90
+ * m = -(n * ln(p)) / (ln(2)^2)
91
+ *
92
+ * @param itemCount - Expected number of items
93
+ * @param falsePositiveRate - Desired false positive rate (e.g., 0.01 for 1%)
94
+ * @returns Optimal bit array size
95
+ */
96
+ static optimalSize(itemCount: number, falsePositiveRate: number): number;
97
+ /**
98
+ * Calculate optimal number of hash functions
99
+ *
100
+ * k = (m/n) * ln(2)
101
+ *
102
+ * @param bitArraySize - Size of bit array
103
+ * @param itemCount - Expected number of items
104
+ * @returns Optimal number of hash functions
105
+ */
106
+ static optimalHashCount(bitArraySize: number, itemCount: number): number;
107
+ /**
108
+ * Generate multiple hash values for an item
109
+ */
110
+ private getHashes;
111
+ /**
112
+ * First hash function (simple polynomial hash)
113
+ */
114
+ private hashFunc1;
115
+ /**
116
+ * Second hash function (FNV-1a variant)
117
+ */
118
+ private hashFunc2;
119
+ }
120
+ //# sourceMappingURL=bloom-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bloom-filter.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/filter/bloom-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;;OAKG;gBACS,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU;IAM/C;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQvB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAY/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;;;;OAQG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAQ/C;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM;IAIxE;;;;;;;;OAQG;IACH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAMxE;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,OAAO,CAAC,SAAS;CAUlB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Filter Algorithms
3
+ *
4
+ * Efficient filtering and probabilistic data structures.
5
+ */
6
+ export { BloomFilter } from './bloom-filter';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/filter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type { AdjacencyList, BFSOptions, PathResult } from './graph.interface';
2
+ /**
3
+ * Breadth-First Search (BFS)
4
+ *
5
+ * Explores nodes level by level, visiting all neighbors before moving deeper.
6
+ *
7
+ * **Time Complexity:** O(V + E) where V = vertices, E = edges
8
+ * **Space Complexity:** O(V) for the queue
9
+ *
10
+ * **Use Cases:**
11
+ * - Shortest path in unweighted graphs
12
+ * - Level-order traversal
13
+ * - Finding connected components
14
+ * - Web crawling
15
+ * - Social network analysis (friends of friends)
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const graph: AdjacencyList<string> = new Map([
20
+ * ['A', new Set(['B', 'C'])],
21
+ * ['B', new Set(['D', 'E'])],
22
+ * ['C', new Set(['F'])],
23
+ * ['D', new Set()],
24
+ * ['E', new Set()],
25
+ * ['F', new Set()],
26
+ * ]);
27
+ *
28
+ * const visited = bfs(graph, 'A');
29
+ * // visited: ['A', 'B', 'C', 'D', 'E', 'F'] (breadth-first order)
30
+ * ```
31
+ *
32
+ * @param graph - Adjacency list representation
33
+ * @param start - Starting node
34
+ * @param options - Traversal options
35
+ * @returns Array of visited nodes in BFS order
36
+ */
37
+ export declare function bfs<T>(graph: AdjacencyList<T>, start: T, options?: BFSOptions<T>): T[];
38
+ /**
39
+ * BFS to find shortest path between two nodes (unweighted)
40
+ *
41
+ * @param graph - Adjacency list
42
+ * @param start - Start node
43
+ * @param end - End node
44
+ * @returns Path result with shortest path
45
+ */
46
+ export declare function bfsShortestPath<T>(graph: AdjacencyList<T>, start: T, end: T): PathResult<T>;
47
+ /**
48
+ * Find all nodes at a specific distance from start
49
+ *
50
+ * @param graph - Adjacency list
51
+ * @param start - Start node
52
+ * @param distance - Distance from start
53
+ * @returns Array of nodes at the specified distance
54
+ */
55
+ export declare function nodesAtDistance<T>(graph: AdjacencyList<T>, start: T, distance: number): T[];
56
+ /**
57
+ * Find connected component containing a node
58
+ *
59
+ * @param graph - Adjacency list
60
+ * @param start - Starting node
61
+ * @returns All nodes in the connected component
62
+ */
63
+ export declare function connectedComponent<T>(graph: AdjacencyList<T>, start: T): T[];
64
+ /**
65
+ * Find all connected components in the graph
66
+ *
67
+ * @param graph - Adjacency list
68
+ * @returns Array of connected components
69
+ */
70
+ export declare function allConnectedComponents<T>(graph: AdjacencyList<T>): T[][];
71
+ //# sourceMappingURL=bfs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bfs.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/graph/bfs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAE,UAAU,CAAC,CAAC,CAAM,GAAG,CAAC,EAAE,CA8B1F;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CA8C3F;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE,CA8B3F;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAE5E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAaxE"}
@@ -0,0 +1,62 @@
1
+ import type { AdjacencyList, DFSOptions } from './graph.interface';
2
+ /**
3
+ * Depth-First Search (DFS)
4
+ *
5
+ * Explores as far as possible along each branch before backtracking.
6
+ *
7
+ * **Time Complexity:** O(V + E) where V = vertices, E = edges
8
+ * **Space Complexity:** O(V) for the recursion stack
9
+ *
10
+ * **Use Cases:**
11
+ * - Path finding
12
+ * - Cycle detection
13
+ * - Topological sorting
14
+ * - Connected components
15
+ * - Maze solving
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const graph: AdjacencyList<string> = new Map([
20
+ * ['A', new Set(['B', 'C'])],
21
+ * ['B', new Set(['D'])],
22
+ * ['C', new Set(['D'])],
23
+ * ['D', new Set()],
24
+ * ]);
25
+ *
26
+ * const visited = dfs(graph, 'A');
27
+ * // visited: ['A', 'B', 'D', 'C'] (depth-first order)
28
+ * ```
29
+ *
30
+ * @param graph - Adjacency list representation
31
+ * @param start - Starting node
32
+ * @param options - Traversal options
33
+ * @returns Array of visited nodes in DFS order
34
+ */
35
+ export declare function dfs<T>(graph: AdjacencyList<T>, start: T, options?: DFSOptions<T>): T[];
36
+ /**
37
+ * DFS to find a path between two nodes
38
+ *
39
+ * @param graph - Adjacency list
40
+ * @param start - Start node
41
+ * @param end - End node
42
+ * @returns Path from start to end, or empty array if no path exists
43
+ */
44
+ export declare function dfsPath<T>(graph: AdjacencyList<T>, start: T, end: T): T[];
45
+ /**
46
+ * Detect if a graph has cycles using DFS
47
+ *
48
+ * @param graph - Adjacency list
49
+ * @returns true if graph has cycles
50
+ */
51
+ export declare function hasCycle<T>(graph: AdjacencyList<T>): boolean;
52
+ /**
53
+ * Find all strongly connected components using Tarjan's algorithm
54
+ *
55
+ * A strongly connected component is a maximal set of vertices
56
+ * where every vertex is reachable from every other vertex.
57
+ *
58
+ * @param graph - Adjacency list
59
+ * @returns Array of strongly connected components
60
+ */
61
+ export declare function stronglyConnectedComponents<T>(graph: AdjacencyList<T>): T[][];
62
+ //# sourceMappingURL=dfs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dfs.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/graph/dfs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAE,UAAU,CAAC,CAAC,CAAM,GAAG,CAAC,EAAE,CAiC1F;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CA0BzE;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CA6B5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAiD7E"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Graph algorithm interfaces and types
3
+ */
4
+ /**
5
+ * Generic graph representation (adjacency list)
6
+ */
7
+ export type AdjacencyList<T = any> = Map<T, Set<T>>;
8
+ /**
9
+ * Weighted edge
10
+ */
11
+ export interface WeightedEdge<T> {
12
+ from: T;
13
+ to: T;
14
+ weight: number;
15
+ }
16
+ /**
17
+ * DFS traversal options
18
+ */
19
+ export interface DFSOptions<T> {
20
+ /**
21
+ * Callback when visiting a node
22
+ */
23
+ onVisit?: (node: T, depth: number) => void;
24
+ /**
25
+ * Callback when backtracking from a node
26
+ */
27
+ onBacktrack?: (node: T) => void;
28
+ /**
29
+ * Callback when detecting a back edge (cycle)
30
+ */
31
+ onBackEdge?: (from: T, to: T) => void;
32
+ }
33
+ /**
34
+ * BFS traversal options
35
+ */
36
+ export interface BFSOptions<T> {
37
+ /**
38
+ * Callback when visiting a node
39
+ */
40
+ onVisit?: (node: T, level: number) => void;
41
+ /**
42
+ * Maximum depth to traverse
43
+ */
44
+ maxDepth?: number;
45
+ }
46
+ /**
47
+ * Path result
48
+ */
49
+ export interface PathResult<T> {
50
+ /**
51
+ * Nodes in the path
52
+ */
53
+ path: T[];
54
+ /**
55
+ * Total cost/distance
56
+ */
57
+ cost: number;
58
+ /**
59
+ * Whether a path was found
60
+ */
61
+ found: boolean;
62
+ }
63
+ //# sourceMappingURL=graph.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.interface.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/graph/graph.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,EAAE,CAAC,CAAC;IACN,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IAEV;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Graph Algorithms
3
+ *
4
+ * Efficient algorithms for graph traversal, path finding, and analysis.
5
+ */
6
+ export { dfs, dfsPath, hasCycle, stronglyConnectedComponents } from './dfs';
7
+ export { bfs, bfsShortestPath, nodesAtDistance, connectedComponent, allConnectedComponents, } from './bfs';
8
+ export type { AdjacencyList, WeightedEdge, DFSOptions, BFSOptions, PathResult, } from './graph.interface';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/graph/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,OAAO,CAAC;AAG5E,OAAO,EACL,GAAG,EACH,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,OAAO,CAAC;AAGf,YAAY,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Algorithms for ZenGrid
3
+ */
4
+ export { binarySearch, binarySearchLeft, binarySearchRight } from './search';
5
+ export type { BinarySearchOptions, BinarySearchResult } from './search';
6
+ export { dfs, dfsPath, hasCycle, stronglyConnectedComponents, bfs, bfsShortestPath, nodesAtDistance, connectedComponent, allConnectedComponents, } from './graph';
7
+ export type { AdjacencyList, WeightedEdge, DFSOptions, BFSOptions, PathResult } from './graph';
8
+ export { BloomFilter } from './filter';
9
+ export { detectSequence, generateSequence, autofill } from './pattern';
10
+ export type { SequenceType, SequencePattern } from './pattern';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGxE,OAAO,EACL,GAAG,EACH,OAAO,EACP,QAAQ,EACR,2BAA2B,EAC3B,GAAG,EACH,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG/F,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Pattern Detection Algorithms
3
+ *
4
+ * Algorithms for detecting patterns in data sequences and autofill.
5
+ */
6
+ export { detectSequence, generateSequence, autofill } from './sequence-detector';
7
+ export type { SequenceType, SequencePattern } from './sequence-detector';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/pattern/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEjF,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Sequence Detection for Autofill
3
+ *
4
+ * Detects patterns in data sequences for intelligent autofill.
5
+ *
6
+ * **Supported Patterns:**
7
+ * - Arithmetic sequences: 1, 2, 3, 4, ...
8
+ * - Geometric sequences: 2, 4, 8, 16, ...
9
+ * - Date sequences: Jan 1, Jan 2, Jan 3, ...
10
+ * - Day sequences: Mon, Tue, Wed, ...
11
+ * - Text patterns: Item 1, Item 2, Item 3, ...
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Detect arithmetic sequence
16
+ * const pattern = detectSequence([1, 2, 3, 4]);
17
+ * // pattern: { type: 'arithmetic', step: 1 }
18
+ *
19
+ * // Generate next values
20
+ * const next = generateSequence(pattern, 5, 3);
21
+ * // next: [5, 6, 7]
22
+ * ```
23
+ */
24
+ /**
25
+ * Sequence pattern types
26
+ */
27
+ export type SequenceType = 'arithmetic' | 'geometric' | 'date' | 'text' | 'constant' | 'none';
28
+ /**
29
+ * Detected sequence pattern
30
+ */
31
+ export interface SequencePattern {
32
+ type: SequenceType;
33
+ step?: number;
34
+ ratio?: number;
35
+ template?: string;
36
+ confidence: number;
37
+ }
38
+ /**
39
+ * Detect sequence pattern from an array of values
40
+ *
41
+ * @param values - Array of values (at least 2 required)
42
+ * @returns Detected pattern
43
+ */
44
+ export declare function detectSequence(values: any[]): SequencePattern;
45
+ /**
46
+ * Generate next values in a sequence
47
+ *
48
+ * @param pattern - Detected sequence pattern
49
+ * @param startValue - Starting value
50
+ * @param count - Number of values to generate
51
+ * @returns Array of generated values
52
+ */
53
+ export declare function generateSequence(pattern: SequencePattern, startValue: any, count: number): any[];
54
+ /**
55
+ * Autofill a range based on detected pattern
56
+ *
57
+ * @param source - Source values to detect pattern from
58
+ * @param targetLength - Desired length of result
59
+ * @returns Autofilled array
60
+ */
61
+ export declare function autofill(source: any[], targetLength: number): any[];
62
+ //# sourceMappingURL=sequence-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence-detector.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/pattern/sequence-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,WAAW,GACX,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,eAAe,CAkC7D;AAqGD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,CAsDhG;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,GAAG,EAAE,CAqBnE"}
@@ -0,0 +1,86 @@
1
+ import type { Comparator } from '../../types';
2
+ /**
3
+ * Options for binary search
4
+ */
5
+ export interface BinarySearchOptions<T> {
6
+ /**
7
+ * Custom comparator function
8
+ * @default (a, b) => a - b for numbers
9
+ */
10
+ comparator?: Comparator<T>;
11
+ /**
12
+ * If true, returns insertion point when not found
13
+ * Insertion point is the index where the target should be inserted
14
+ * @default false
15
+ */
16
+ returnInsertionPoint?: boolean;
17
+ }
18
+ /**
19
+ * Result of binary search
20
+ */
21
+ export interface BinarySearchResult {
22
+ /**
23
+ * Whether the target was found
24
+ */
25
+ found: boolean;
26
+ /**
27
+ * Index where target was found, or -1 if not found
28
+ * If returnInsertionPoint is true and not found, returns insertion index
29
+ */
30
+ index: number;
31
+ }
32
+ /**
33
+ * Performs binary search on a sorted array
34
+ *
35
+ * @param array - Sorted array to search
36
+ * @param target - Value to find
37
+ * @param options - Search options
38
+ * @returns Search result with found status and index
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const result = binarySearch([1, 3, 5, 7, 9], 5);
43
+ * // { found: true, index: 2 }
44
+ *
45
+ * const result2 = binarySearch([1, 3, 5, 7], 4, { returnInsertionPoint: true });
46
+ * // { found: false, index: 2 } - insert at index 2 to maintain order
47
+ * ```
48
+ *
49
+ * @complexity O(log n) where n = array.length
50
+ */
51
+ export declare function binarySearch<T>(array: ReadonlyArray<T>, target: T, options?: BinarySearchOptions<T>): BinarySearchResult;
52
+ /**
53
+ * Find the leftmost (first) occurrence of target in sorted array
54
+ *
55
+ * @param array - Sorted array (may have duplicates)
56
+ * @param target - Value to find
57
+ * @param comparator - Custom comparator
58
+ * @returns Index of first occurrence, or -1 if not found
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const index = binarySearchLeft([1, 2, 2, 2, 3], 2);
63
+ * // 1 (first occurrence of 2)
64
+ * ```
65
+ *
66
+ * @complexity O(log n)
67
+ */
68
+ export declare function binarySearchLeft<T>(array: ReadonlyArray<T>, target: T, comparator?: Comparator<T>): number;
69
+ /**
70
+ * Find the rightmost (last) occurrence of target in sorted array
71
+ *
72
+ * @param array - Sorted array (may have duplicates)
73
+ * @param target - Value to find
74
+ * @param comparator - Custom comparator
75
+ * @returns Index of last occurrence, or -1 if not found
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * const index = binarySearchRight([1, 2, 2, 2, 3], 2);
80
+ * // 3 (last occurrence of 2)
81
+ * ```
82
+ *
83
+ * @complexity O(log n)
84
+ */
85
+ export declare function binarySearchRight<T>(array: ReadonlyArray<T>, target: T, comparator?: Comparator<T>): number;
86
+ //# sourceMappingURL=binary-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary-search.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/search/binary-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAE3B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAOD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,mBAAmB,CAAC,CAAC,CAAM,GACnC,kBAAkB,CA+BpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,CAAC,EACT,UAAU,GAAE,UAAU,CAAC,CAAC,CAAsC,GAC7D,MAAM,CAqBR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,CAAC,EACT,UAAU,GAAE,UAAU,CAAC,CAAC,CAAsC,GAC7D,MAAM,CAqBR"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Search algorithms
3
+ */
4
+ export { binarySearch, binarySearchLeft, binarySearchRight } from './binary-search';
5
+ export type { BinarySearchOptions, BinarySearchResult } from './binary-search';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/search/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpF,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}