@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,185 @@
1
+ /**
2
+ * Disjoint Set (Union-Find) interfaces for ZenGrid
3
+ * Efficient data structure for managing merged cells and connected components
4
+ */
5
+ /**
6
+ * Disjoint Set statistics
7
+ */
8
+ export interface DisjointSetStats {
9
+ /** Total number of elements */
10
+ totalElements: number;
11
+ /** Number of disjoint sets */
12
+ numSets: number;
13
+ /** Size of the largest set */
14
+ largestSetSize: number;
15
+ /** Average set size */
16
+ averageSetSize: number;
17
+ /** Memory usage estimate in bytes */
18
+ memoryBytes: number;
19
+ }
20
+ /**
21
+ * Disjoint Set interface (Union-Find)
22
+ *
23
+ * A data structure for tracking a partition of elements into disjoint sets.
24
+ * Uses path compression and union by rank for near-constant time operations.
25
+ *
26
+ * Use cases:
27
+ * - Managing merged cells in spreadsheets
28
+ * - Tracking connected components in graphs
29
+ * - Detecting cycles in undirected graphs
30
+ * - Kruskal's minimum spanning tree algorithm
31
+ * - Image segmentation
32
+ * - Network connectivity
33
+ *
34
+ * Performance:
35
+ * - makeSet: O(1)
36
+ * - find: O(α(n)) amortized, where α is inverse Ackermann function (effectively O(1))
37
+ * - union: O(α(n)) amortized
38
+ * - connected: O(α(n)) amortized
39
+ * - Space: O(n)
40
+ *
41
+ * Optimizations:
42
+ * - Path compression: Makes find operations extremely fast
43
+ * - Union by rank: Keeps trees shallow for better performance
44
+ * - Both optimizations together give near-constant time complexity
45
+ */
46
+ export interface IDisjointSet<T> {
47
+ /**
48
+ * Create a new set containing only the given element
49
+ * If element already exists, this is a no-op
50
+ * @param element - The element to create a set for
51
+ * @complexity O(1)
52
+ */
53
+ makeSet(element: T): void;
54
+ /**
55
+ * Find the representative (root) of the set containing the element
56
+ * Uses path compression to optimize future queries
57
+ * @param element - The element to find
58
+ * @returns The representative element, or undefined if element doesn't exist
59
+ * @complexity O(α(n)) amortized
60
+ */
61
+ find(element: T): T | undefined;
62
+ /**
63
+ * Unite the sets containing two elements
64
+ * Uses union by rank to keep trees shallow
65
+ * @param element1 - First element
66
+ * @param element2 - Second element
67
+ * @returns true if sets were merged, false if already in same set or element doesn't exist
68
+ * @complexity O(α(n)) amortized
69
+ */
70
+ union(element1: T, element2: T): boolean;
71
+ /**
72
+ * Check if two elements are in the same set
73
+ * @param element1 - First element
74
+ * @param element2 - Second element
75
+ * @returns true if both elements exist and are in the same set
76
+ * @complexity O(α(n)) amortized
77
+ */
78
+ connected(element1: T, element2: T): boolean;
79
+ /**
80
+ * Get the size of the set containing the element
81
+ * @param element - The element to query
82
+ * @returns Size of the set, or 0 if element doesn't exist
83
+ * @complexity O(α(n)) amortized
84
+ */
85
+ getSetSize(element: T): number;
86
+ /**
87
+ * Get all disjoint sets
88
+ * @returns Map from representative element to array of all elements in that set
89
+ * @complexity O(n)
90
+ */
91
+ getSets(): Map<T, T[]>;
92
+ /**
93
+ * Get all elements in the same set as the given element
94
+ * @param element - The element to query
95
+ * @returns Array of all elements in the same set, or empty array if element doesn't exist
96
+ * @complexity O(n) - needs to scan all elements
97
+ */
98
+ getSet(element: T): T[];
99
+ /**
100
+ * Check if an element exists in the data structure
101
+ * @param element - The element to check
102
+ * @complexity O(1)
103
+ */
104
+ has(element: T): boolean;
105
+ /**
106
+ * Remove an element from the data structure
107
+ * Note: This is not a standard operation for Disjoint Set and has O(n) complexity
108
+ * @param element - The element to remove
109
+ * @returns true if element was found and removed
110
+ * @complexity O(n)
111
+ */
112
+ remove(element: T): boolean;
113
+ /**
114
+ * Clear all sets
115
+ * @complexity O(1)
116
+ */
117
+ clear(): void;
118
+ /**
119
+ * Get all elements
120
+ * @returns Array of all elements
121
+ * @complexity O(n)
122
+ */
123
+ elements(): T[];
124
+ /**
125
+ * Get statistics about the disjoint set
126
+ */
127
+ getStats(): DisjointSetStats;
128
+ /**
129
+ * Number of elements in the data structure
130
+ */
131
+ readonly size: number;
132
+ /**
133
+ * Number of disjoint sets
134
+ */
135
+ readonly numSets: number;
136
+ /**
137
+ * Whether the data structure is empty
138
+ */
139
+ readonly isEmpty: boolean;
140
+ }
141
+ /**
142
+ * Options for creating a Disjoint Set
143
+ */
144
+ export interface DisjointSetOptions<T> {
145
+ /**
146
+ * Custom hash function for elements
147
+ * If not provided, uses JSON.stringify for objects or toString for primitives
148
+ */
149
+ hashFn?: (element: T) => string | number;
150
+ /**
151
+ * Custom equality function
152
+ * If not provided, uses strict equality (===)
153
+ */
154
+ equalityFn?: (a: T, b: T) => boolean;
155
+ /**
156
+ * Initial elements to create sets for
157
+ */
158
+ initialElements?: T[];
159
+ }
160
+ /**
161
+ * Utility functions for Disjoint Set
162
+ */
163
+ export declare const DisjointSetUtils: {
164
+ /**
165
+ * Calculate expected memory usage
166
+ * @param n - Number of elements
167
+ * @returns Estimated memory in bytes
168
+ */
169
+ estimateMemory(n: number): number;
170
+ /**
171
+ * Check if operations are effectively O(1)
172
+ * For practical purposes, α(n) ≤ 4 for any realistic n
173
+ */
174
+ inverseAckermann(n: number): number;
175
+ /**
176
+ * Create a grid coordinate hash function for merged cells
177
+ * Useful for grid applications where elements are [row, col] coordinates
178
+ */
179
+ gridHashFn(element: [number, number]): string;
180
+ /**
181
+ * Create equality function for grid coordinates
182
+ */
183
+ gridEqualityFn(a: [number, number], b: [number, number]): boolean;
184
+ };
185
+ //# sourceMappingURL=disjoint-set.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disjoint-set.interface.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/disjoint-set/disjoint-set.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAE1B;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAEhC;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC;IAEzC;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC;IAE7C;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;IAE/B;;;;OAIG;IACH,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEvB;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAExB;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;IAEzB;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;;OAIG;IACH,QAAQ,IAAI,CAAC,EAAE,CAAC;IAEhB;;OAEG;IACH,QAAQ,IAAI,gBAAgB,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;IAEzC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;IAErC;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;;;OAIG;sBACe,MAAM,GAAG,MAAM;IAOjC;;;OAGG;wBACiB,MAAM,GAAG,MAAM;IAUnC;;;OAGG;wBACiB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAI7C;;OAEG;sBACe,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;CAGlE,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Disjoint Set (Union-Find) for ZenGrid
3
+ */
4
+ export { DisjointSet } from './disjoint-set';
5
+ export type { IDisjointSet, DisjointSetOptions, DisjointSetStats } from './disjoint-set.interface';
6
+ export { DisjointSetUtils } from './disjoint-set.interface';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/disjoint-set/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * IndexMap implementation
3
+ * Provides O(1) bidirectional lookup with maintained insertion order
4
+ */
5
+ import type { IIndexMap, IndexMapEntry, IndexMapOptions } from './index-map.interface';
6
+ /**
7
+ * IndexMap - A hybrid data structure combining Map and Array benefits
8
+ *
9
+ * Features:
10
+ * - O(1) key → value lookup
11
+ * - O(1) index → entry lookup
12
+ * - O(1) key → index lookup
13
+ * - Optional O(1) value → key reverse lookup
14
+ * - Maintains insertion order
15
+ *
16
+ * Implementation:
17
+ * - Uses Map for key → {value, index} mapping
18
+ * - Uses Array for index → {key, value} mapping
19
+ * - Optional Map for value → key[] reverse mapping
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const map = new IndexMap<string, number>();
24
+ * map.set('a', 1); // index 0
25
+ * map.set('b', 2); // index 1
26
+ * map.set('c', 3); // index 2
27
+ *
28
+ * map.get('b'); // 2
29
+ * map.getByIndex(1); // { key: 'b', value: 2, index: 1 }
30
+ * map.indexOf('c'); // 2
31
+ * map.getValueByIndex(0); // 1
32
+ * ```
33
+ */
34
+ export declare class IndexMap<K, V> implements IIndexMap<K, V> {
35
+ private keyToData;
36
+ private indexToEntry;
37
+ private valueToKeys?;
38
+ private readonly reverseMapping;
39
+ constructor(options?: IndexMapOptions);
40
+ /**
41
+ * Set a key-value pair
42
+ */
43
+ set(key: K, value: V): number;
44
+ /**
45
+ * Get value by key
46
+ */
47
+ get(key: K): V | undefined;
48
+ /**
49
+ * Get entry by index
50
+ */
51
+ getByIndex(index: number): IndexMapEntry<K, V> | undefined;
52
+ /**
53
+ * Get key by index
54
+ */
55
+ getKeyByIndex(index: number): K | undefined;
56
+ /**
57
+ * Get value by index
58
+ */
59
+ getValueByIndex(index: number): V | undefined;
60
+ /**
61
+ * Get the index of a key
62
+ */
63
+ indexOf(key: K): number;
64
+ /**
65
+ * Reverse lookup: get key(s) by value
66
+ */
67
+ getKeysByValue(value: V): K[];
68
+ /**
69
+ * Check if a key exists
70
+ */
71
+ has(key: K): boolean;
72
+ /**
73
+ * Check if a value exists
74
+ */
75
+ hasValue(value: V): boolean;
76
+ /**
77
+ * Delete an entry by key
78
+ * Reindexes all subsequent entries
79
+ */
80
+ delete(key: K): boolean;
81
+ /**
82
+ * Delete an entry by index
83
+ */
84
+ deleteByIndex(index: number): boolean;
85
+ /**
86
+ * Clear all entries
87
+ */
88
+ clear(): void;
89
+ /**
90
+ * Get all keys in insertion order
91
+ */
92
+ keys(): K[];
93
+ /**
94
+ * Get all values in insertion order
95
+ */
96
+ values(): V[];
97
+ /**
98
+ * Get all entries in insertion order
99
+ */
100
+ entries(): [K, V][];
101
+ /**
102
+ * Iterate over entries
103
+ */
104
+ forEach(callback: (value: V, key: K, index: number) => void): void;
105
+ /**
106
+ * Find the first key that satisfies a predicate
107
+ */
108
+ find(predicate: (value: V, key: K, index: number) => boolean): K | undefined;
109
+ /**
110
+ * Filter entries by a predicate
111
+ */
112
+ filter(predicate: (value: V, key: K, index: number) => boolean): IIndexMap<K, V>;
113
+ /**
114
+ * Map values to a new IndexMap
115
+ */
116
+ map<U>(mapper: (value: V, key: K, index: number) => U): IIndexMap<K, U>;
117
+ /**
118
+ * Number of entries
119
+ */
120
+ get size(): number;
121
+ /**
122
+ * Whether reverse mapping is enabled
123
+ */
124
+ get hasReverseMapping(): boolean;
125
+ /**
126
+ * Create IndexMap from an array of entries
127
+ */
128
+ static from<K, V>(entries: Iterable<[K, V]>, options?: IndexMapOptions): IndexMap<K, V>;
129
+ /**
130
+ * Create IndexMap from a regular Map
131
+ */
132
+ static fromMap<K, V>(source: Map<K, V>, options?: IndexMapOptions): IndexMap<K, V>;
133
+ /**
134
+ * Create IndexMap from an object
135
+ */
136
+ static fromObject<V>(obj: Record<string, V>, options?: IndexMapOptions): IndexMap<string, V>;
137
+ /**
138
+ * Convert to a plain object (only works with string keys)
139
+ */
140
+ toObject(): Record<string, V>;
141
+ /**
142
+ * Convert to a regular Map
143
+ */
144
+ toMap(): Map<K, V>;
145
+ /**
146
+ * Get a string representation for debugging
147
+ */
148
+ toString(): string;
149
+ }
150
+ //# sourceMappingURL=index-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-map.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/index-map/index-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * IndexMap interfaces for ZenGrid
3
+ * Provides O(1) bidirectional lookup: key → value, index → entry, and optionally value → key
4
+ */
5
+ /**
6
+ * Entry in the IndexMap containing both key and value
7
+ */
8
+ export interface IndexMapEntry<K, V> {
9
+ key: K;
10
+ value: V;
11
+ index: number;
12
+ }
13
+ /**
14
+ * IndexMap interface
15
+ *
16
+ * A data structure that combines the benefits of Map and Array:
17
+ * - O(1) key → value lookup (like Map)
18
+ * - O(1) index → entry lookup (like Array)
19
+ * - O(1) key → index lookup
20
+ * - Maintains insertion order
21
+ * - Optional O(1) value → key reverse lookup
22
+ *
23
+ * Use cases:
24
+ * - Column/row mappings where you need both name and index access
25
+ * - Ordered collections with fast lookup by both key and position
26
+ * - Maintaining insertion order while allowing random access
27
+ */
28
+ export interface IIndexMap<K, V> {
29
+ /**
30
+ * Set a key-value pair
31
+ * If key exists, updates the value without changing index
32
+ * If key is new, appends to the end
33
+ * @param key - The key
34
+ * @param value - The value
35
+ * @returns The index of the entry
36
+ * @complexity O(1)
37
+ */
38
+ set(key: K, value: V): number;
39
+ /**
40
+ * Get value by key
41
+ * @param key - The key to look up
42
+ * @returns The value or undefined if not found
43
+ * @complexity O(1)
44
+ */
45
+ get(key: K): V | undefined;
46
+ /**
47
+ * Get entry by index
48
+ * @param index - The index (0-based)
49
+ * @returns The entry or undefined if out of bounds
50
+ * @complexity O(1)
51
+ */
52
+ getByIndex(index: number): IndexMapEntry<K, V> | undefined;
53
+ /**
54
+ * Get key by index
55
+ * @param index - The index (0-based)
56
+ * @returns The key or undefined if out of bounds
57
+ * @complexity O(1)
58
+ */
59
+ getKeyByIndex(index: number): K | undefined;
60
+ /**
61
+ * Get value by index
62
+ * @param index - The index (0-based)
63
+ * @returns The value or undefined if out of bounds
64
+ * @complexity O(1)
65
+ */
66
+ getValueByIndex(index: number): V | undefined;
67
+ /**
68
+ * Get the index of a key
69
+ * @param key - The key to look up
70
+ * @returns The index or -1 if not found
71
+ * @complexity O(1)
72
+ */
73
+ indexOf(key: K): number;
74
+ /**
75
+ * Get the key(s) for a given value (reverse lookup)
76
+ * Only available when enableReverseMapping is true
77
+ * @param value - The value to find
78
+ * @returns Array of keys that map to this value (empty if not found or reverse mapping disabled)
79
+ * @complexity O(1) if reverse mapping enabled, O(n) if disabled
80
+ */
81
+ getKeysByValue(value: V): K[];
82
+ /**
83
+ * Check if a key exists
84
+ * @param key - The key to check
85
+ * @complexity O(1)
86
+ */
87
+ has(key: K): boolean;
88
+ /**
89
+ * Check if a value exists
90
+ * @param value - The value to check
91
+ * @complexity O(1) if reverse mapping enabled, O(n) if disabled
92
+ */
93
+ hasValue(value: V): boolean;
94
+ /**
95
+ * Delete an entry by key
96
+ * Reindexes all subsequent entries
97
+ * @param key - The key to delete
98
+ * @returns true if the entry existed and was deleted
99
+ * @complexity O(n) due to reindexing
100
+ */
101
+ delete(key: K): boolean;
102
+ /**
103
+ * Delete an entry by index
104
+ * Reindexes all subsequent entries
105
+ * @param index - The index to delete
106
+ * @returns true if the index was valid and entry was deleted
107
+ * @complexity O(n) due to reindexing
108
+ */
109
+ deleteByIndex(index: number): boolean;
110
+ /**
111
+ * Clear all entries
112
+ * @complexity O(1)
113
+ */
114
+ clear(): void;
115
+ /**
116
+ * Get all keys in insertion order
117
+ * @returns Array of keys
118
+ * @complexity O(n)
119
+ */
120
+ keys(): K[];
121
+ /**
122
+ * Get all values in insertion order
123
+ * @returns Array of values
124
+ * @complexity O(n)
125
+ */
126
+ values(): V[];
127
+ /**
128
+ * Get all entries in insertion order
129
+ * @returns Array of [key, value] tuples
130
+ * @complexity O(n)
131
+ */
132
+ entries(): [K, V][];
133
+ /**
134
+ * Iterate over entries
135
+ * @param callback - Function to call for each entry
136
+ * @complexity O(n)
137
+ */
138
+ forEach(callback: (value: V, key: K, index: number) => void): void;
139
+ /**
140
+ * Find the first key that satisfies a predicate
141
+ * @param predicate - Test function
142
+ * @returns The key or undefined
143
+ * @complexity O(n)
144
+ */
145
+ find(predicate: (value: V, key: K, index: number) => boolean): K | undefined;
146
+ /**
147
+ * Filter entries by a predicate
148
+ * @param predicate - Test function
149
+ * @returns New IndexMap with entries that pass the test
150
+ * @complexity O(n)
151
+ */
152
+ filter(predicate: (value: V, key: K, index: number) => boolean): IIndexMap<K, V>;
153
+ /**
154
+ * Map values to a new IndexMap
155
+ * @param mapper - Transform function
156
+ * @returns New IndexMap with transformed values
157
+ * @complexity O(n)
158
+ */
159
+ map<U>(mapper: (value: V, key: K, index: number) => U): IIndexMap<K, U>;
160
+ /**
161
+ * Number of entries
162
+ */
163
+ readonly size: number;
164
+ /**
165
+ * Whether reverse value → key mapping is enabled
166
+ */
167
+ readonly hasReverseMapping: boolean;
168
+ }
169
+ /**
170
+ * Options for creating an IndexMap
171
+ */
172
+ export interface IndexMapOptions {
173
+ /**
174
+ * Enable bidirectional value → key lookup
175
+ * Maintains a reverse map for O(1) value → key queries
176
+ * Increases memory usage but enables fast reverse lookups
177
+ * @default false
178
+ */
179
+ enableReverseMapping?: boolean;
180
+ /**
181
+ * Initial capacity hint for optimization
182
+ * @default 16
183
+ */
184
+ initialCapacity?: number;
185
+ }
186
+ //# sourceMappingURL=index-map.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-map.interface.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/index-map/index-map.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC;IACjC,GAAG,EAAE,CAAC,CAAC;IACP,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,EAAE,CAAC;IAC7B;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAE9B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAE3B;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAE3D;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAE5C;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAE9C;;;;;OAKG;IACH,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAE9B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;IAE5B;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAExB;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtC;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;;OAIG;IACH,IAAI,IAAI,CAAC,EAAE,CAAC;IAEZ;;;;OAIG;IACH,MAAM,IAAI,CAAC,EAAE,CAAC;IAEd;;;;OAIG;IACH,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAEnE;;;;;OAKG;IACH,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC;IAE7E;;;;;OAKG;IACH,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjF;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAExE;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * IndexMap - Bidirectional lookup data structure
3
+ */
4
+ export { IndexMap } from './index-map';
5
+ export type { IIndexMap, IndexMapEntry, IndexMapOptions } from './index-map.interface';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/index-map/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Data Structures for ZenGrid
3
+ */
4
+ export { SparseMatrix } from './sparse-matrix';
5
+ export type { ReadonlySparseMatrix, ISparseMatrix, SparseMatrixOptions } from './sparse-matrix';
6
+ export { PrefixSumArray } from './prefix-sum-array';
7
+ export type { IPrefixSumArray, PrefixSumArrayOptions } from './prefix-sum-array';
8
+ export { ColumnStore } from './column-store';
9
+ export type { IColumnStore, ColumnStoreOptions, ColumnDefinition, ColumnType, AggregateOperation, AggregationResult, } from './column-store';
10
+ export { IndexMap } from './index-map';
11
+ export type { IIndexMap, IndexMapEntry, IndexMapOptions } from './index-map';
12
+ export { IntervalTree } from './interval-tree';
13
+ export type { IIntervalTree, Interval, IntervalData, IntervalTreeOptions } from './interval-tree';
14
+ export { IntervalUtils } from './interval-tree';
15
+ export { Trie } from './trie';
16
+ export type { ITrie, ITrieNode, TrieOptions, TrieSearchResult } from './trie';
17
+ export { RTree } from './rtree';
18
+ export type { IRTree, Rectangle, RTreeData, RTreeOptions, RTreeSearchResult, RTreeStats, } from './rtree';
19
+ export { DependencyGraph } from './dependency-graph';
20
+ export type { IDependencyGraph, NodeId, Dependency, DependencyGraphOptions, TopologicalSortResult, GraphStats, } from './dependency-graph';
21
+ export { SuffixArray } from './suffix-array';
22
+ export type { ISuffixArray, SuffixArrayOptions, SuffixSearchResult, SuffixArrayStats, } from './suffix-array';
23
+ export { LRUCache } from './lru-cache';
24
+ export type { ILRUCache, LRUCacheOptions, CacheEntry, CacheStats } from './lru-cache';
25
+ export { CommandStack } from './command-stack';
26
+ export type { ICommandStack, ICommand, ICommandStackOptions } from './command-stack';
27
+ export { SegmentTree } from './segment-tree';
28
+ export type { ISegmentTree, SegmentTreeOptions, AggregateFunction, AggregationType, } from './segment-tree';
29
+ export { Aggregations, SegmentTreeUtils } from './segment-tree';
30
+ export { SkipList } from './skip-list';
31
+ export type { ISkipList, SkipListNode, SkipListOptions, RangeResult, SkipListStats, } from './skip-list';
32
+ export { defaultComparator, SkipListUtils } from './skip-list';
33
+ export { DisjointSet } from './disjoint-set';
34
+ export type { IDisjointSet, DisjointSetOptions, DisjointSetStats } from './disjoint-set';
35
+ export { DisjointSetUtils } from './disjoint-set';
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-structures/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGhG,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGjF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAG9E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EACV,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGtF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGrF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGhE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,WAAW,EACX,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Interval Tree - Augmented BST for interval queries
3
+ */
4
+ export { IntervalTree } from './interval-tree';
5
+ export type { IIntervalTree, Interval, IntervalData, IntervalTreeOptions, } from './interval-tree.interface';
6
+ export { IntervalUtils } from './interval-tree.interface';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/interval-tree/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Interval Tree implementation
3
+ * Augmented BST for efficient interval queries
4
+ */
5
+ import type { IIntervalTree, Interval, IntervalData, IntervalTreeOptions } from './interval-tree.interface';
6
+ /**
7
+ * Interval Tree - Augmented BST for interval queries
8
+ *
9
+ * Implementation:
10
+ * - Each node stores an interval and the max endpoint in its subtree
11
+ * - Balanced using AVL tree rotations for guaranteed O(log n) operations
12
+ * - Intervals are ordered by start time
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const tree = new IntervalTree<string>();
17
+ * tree.insert({ start: 10, end: 20 }, 'A');
18
+ * tree.insert({ start: 15, end: 25 }, 'B');
19
+ * tree.insert({ start: 30, end: 40 }, 'C');
20
+ *
21
+ * tree.search({ start: 18, end: 22 }); // Returns A and B
22
+ * tree.searchPoint(35); // Returns C
23
+ * ```
24
+ */
25
+ export declare class IntervalTree<T> implements IIntervalTree<T> {
26
+ private root;
27
+ private count;
28
+ private nextId;
29
+ private readonly balanced;
30
+ private readonly allowDuplicates;
31
+ private readonly comparator;
32
+ constructor(options?: IntervalTreeOptions);
33
+ insert(interval: Interval, data: T): IntervalData<T>;
34
+ delete(intervalData: IntervalData<T>): boolean;
35
+ deleteById(id: string | number): boolean;
36
+ search(interval: Interval): IntervalData<T>[];
37
+ searchPoint(point: number): IntervalData<T>[];
38
+ searchContained(interval: Interval): IntervalData<T>[];
39
+ searchContaining(interval: Interval): IntervalData<T>[];
40
+ findMin(): IntervalData<T> | undefined;
41
+ findMax(): IntervalData<T> | undefined;
42
+ hasOverlap(interval: Interval): boolean;
43
+ inorder(): IntervalData<T>[];
44
+ forEach(callback: (interval: IntervalData<T>) => void): void;
45
+ filter(predicate: (interval: IntervalData<T>) => boolean): IIntervalTree<T>;
46
+ map<U>(mapper: (data: T, interval: Interval) => U): IIntervalTree<U>;
47
+ clear(): void;
48
+ get size(): number;
49
+ get isEmpty(): boolean;
50
+ get height(): number;
51
+ static from<T>(intervals: Array<{
52
+ interval: Interval;
53
+ data: T;
54
+ }>, options?: IntervalTreeOptions): IntervalTree<T>;
55
+ toString(): string;
56
+ validate(): boolean;
57
+ }
58
+ //# sourceMappingURL=interval-tree.d.ts.map