@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 @@
1
+ {"version":3,"file":"interval-tree.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/interval-tree/interval-tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAqBnC;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;gBAEtD,OAAO,GAAE,mBAAwB;IAM7C,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IA2BpD,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAY9C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAQxC,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE;IAM7C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE;IAI7C,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE;IAMtD,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE;IAMvD,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAKtC,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAKtC,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAIvC,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;IAM5B,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAI5D,MAAM,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC;IAQ3E,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,KAAK,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAQpE,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,EACX,SAAS,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,EACjD,OAAO,CAAC,EAAE,mBAAmB,GAC5B,YAAY,CAAC,CAAC,CAAC;IAIlB,QAAQ,IAAI,MAAM;IAIlB,QAAQ,IAAI,OAAO;CAGpB"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Interval Tree interfaces for ZenGrid
3
+ * Efficiently finds all intervals that overlap with a given interval or point
4
+ */
5
+ /**
6
+ * Represents an interval with a start and end
7
+ */
8
+ export interface Interval {
9
+ /** Start of the interval (inclusive) */
10
+ start: number;
11
+ /** End of the interval (inclusive) */
12
+ end: number;
13
+ }
14
+ /**
15
+ * An interval with associated data
16
+ */
17
+ export interface IntervalData<T> extends Interval {
18
+ /** User data associated with this interval */
19
+ data: T;
20
+ /** Optional unique identifier */
21
+ id?: string | number;
22
+ }
23
+ /**
24
+ * Interval Tree interface
25
+ *
26
+ * An augmented binary search tree for efficient interval queries.
27
+ * Each node stores an interval and the maximum endpoint in its subtree.
28
+ *
29
+ * Use cases:
30
+ * - Finding all overlapping time ranges
31
+ * - Range queries in calendars/schedules
32
+ * - Collision detection (e.g., overlapping cells in a grid)
33
+ * - Finding visible rows/columns in virtual scrolling
34
+ * - Query optimization (index range scans)
35
+ *
36
+ * Performance:
37
+ * - Insert: O(log n) average, O(n) worst case (use Red-Black tree for guaranteed O(log n))
38
+ * - Delete: O(log n) average
39
+ * - Search overlapping: O(log n + k) where k = number of results
40
+ * - Point query: O(log n + k)
41
+ * - Space: O(n)
42
+ */
43
+ export interface IIntervalTree<T> {
44
+ /**
45
+ * Insert an interval with associated data
46
+ * @param interval - The interval to insert
47
+ * @param data - Data to associate with the interval
48
+ * @returns The inserted interval with data
49
+ * @complexity O(log n) average
50
+ */
51
+ insert(interval: Interval, data: T): IntervalData<T>;
52
+ /**
53
+ * Delete an interval by reference
54
+ * @param intervalData - The interval to delete
55
+ * @returns true if found and deleted
56
+ * @complexity O(log n)
57
+ */
58
+ delete(intervalData: IntervalData<T>): boolean;
59
+ /**
60
+ * Delete an interval by ID
61
+ * @param id - The ID of the interval to delete
62
+ * @returns true if found and deleted
63
+ * @complexity O(n) - requires linear search
64
+ */
65
+ deleteById(id: string | number): boolean;
66
+ /**
67
+ * Find all intervals that overlap with the given interval
68
+ * @param interval - The query interval
69
+ * @returns Array of overlapping intervals
70
+ * @complexity O(log n + k) where k = number of results
71
+ */
72
+ search(interval: Interval): IntervalData<T>[];
73
+ /**
74
+ * Find all intervals that contain the given point
75
+ * @param point - The point to query
76
+ * @returns Array of intervals containing the point
77
+ * @complexity O(log n + k) where k = number of results
78
+ */
79
+ searchPoint(point: number): IntervalData<T>[];
80
+ /**
81
+ * Find all intervals that are completely contained within the given interval
82
+ * @param interval - The containing interval
83
+ * @returns Array of contained intervals
84
+ * @complexity O(n) worst case
85
+ */
86
+ searchContained(interval: Interval): IntervalData<T>[];
87
+ /**
88
+ * Find all intervals that completely contain the given interval
89
+ * @param interval - The interval to be contained
90
+ * @returns Array of containing intervals
91
+ * @complexity O(n) worst case
92
+ */
93
+ searchContaining(interval: Interval): IntervalData<T>[];
94
+ /**
95
+ * Find the interval with the earliest start time
96
+ * @returns The interval or undefined if tree is empty
97
+ * @complexity O(log n)
98
+ */
99
+ findMin(): IntervalData<T> | undefined;
100
+ /**
101
+ * Find the interval with the latest end time
102
+ * @returns The interval or undefined if tree is empty
103
+ * @complexity O(log n)
104
+ */
105
+ findMax(): IntervalData<T> | undefined;
106
+ /**
107
+ * Check if any interval overlaps with the given interval
108
+ * @param interval - The query interval
109
+ * @complexity O(log n)
110
+ */
111
+ hasOverlap(interval: Interval): boolean;
112
+ /**
113
+ * Get all intervals in sorted order (by start time)
114
+ * @returns Array of all intervals sorted by start
115
+ * @complexity O(n)
116
+ */
117
+ inorder(): IntervalData<T>[];
118
+ /**
119
+ * Iterate over all intervals in sorted order
120
+ * @param callback - Function to call for each interval
121
+ * @complexity O(n)
122
+ */
123
+ forEach(callback: (interval: IntervalData<T>) => void): void;
124
+ /**
125
+ * Filter intervals by a predicate
126
+ * @param predicate - Test function
127
+ * @returns New interval tree with intervals that pass the test
128
+ * @complexity O(n)
129
+ */
130
+ filter(predicate: (interval: IntervalData<T>) => boolean): IIntervalTree<T>;
131
+ /**
132
+ * Map intervals to a new interval tree
133
+ * @param mapper - Transform function for the data
134
+ * @returns New interval tree with transformed data
135
+ * @complexity O(n)
136
+ */
137
+ map<U>(mapper: (data: T, interval: Interval) => U): IIntervalTree<U>;
138
+ /**
139
+ * Clear all intervals
140
+ * @complexity O(1)
141
+ */
142
+ clear(): void;
143
+ /**
144
+ * Number of intervals in the tree
145
+ */
146
+ readonly size: number;
147
+ /**
148
+ * Whether the tree is empty
149
+ */
150
+ readonly isEmpty: boolean;
151
+ /**
152
+ * Height of the tree (for debugging/analysis)
153
+ */
154
+ readonly height: number;
155
+ }
156
+ /**
157
+ * Options for creating an IntervalTree
158
+ */
159
+ export interface IntervalTreeOptions {
160
+ /**
161
+ * Whether to use a balanced tree (Red-Black tree)
162
+ * Guarantees O(log n) operations but slightly slower constants
163
+ * @default false (uses simple BST)
164
+ */
165
+ balanced?: boolean;
166
+ /**
167
+ * Whether to allow duplicate intervals
168
+ * @default true
169
+ */
170
+ allowDuplicates?: boolean;
171
+ /**
172
+ * Custom comparator for intervals
173
+ * Defaults to comparing by start time, then end time
174
+ */
175
+ comparator?: (a: Interval, b: Interval) => number;
176
+ }
177
+ /**
178
+ * Helper functions for interval operations
179
+ */
180
+ export declare const IntervalUtils: {
181
+ /**
182
+ * Check if two intervals overlap
183
+ */
184
+ overlaps(a: Interval, b: Interval): boolean;
185
+ /**
186
+ * Check if interval contains a point
187
+ */
188
+ contains(interval: Interval, point: number): boolean;
189
+ /**
190
+ * Check if interval A contains interval B
191
+ */
192
+ containsInterval(a: Interval, b: Interval): boolean;
193
+ /**
194
+ * Get the intersection of two intervals
195
+ * Returns undefined if they don't overlap
196
+ */
197
+ intersection(a: Interval, b: Interval): Interval | undefined;
198
+ /**
199
+ * Get the union of two overlapping intervals
200
+ * Returns undefined if they don't overlap
201
+ */
202
+ union(a: Interval, b: Interval): Interval | undefined;
203
+ /**
204
+ * Merge overlapping intervals
205
+ */
206
+ mergeOverlapping(intervals: Interval[]): Interval[];
207
+ /**
208
+ * Default comparator: compare by start, then by end
209
+ */
210
+ defaultComparator(a: Interval, b: Interval): number;
211
+ };
212
+ //# sourceMappingURL=interval-tree.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interval-tree.interface.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/interval-tree/interval-tree.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,QAAQ;IAC/C,8CAA8C;IAC9C,IAAI,EAAE,CAAC,CAAC;IACR,iCAAiC;IACjC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAErD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAE/C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAEzC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9C;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9C;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvD;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAExD;;;;OAIG;IACH,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAEvC;;;;OAIG;IACH,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAEvC;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAExC;;;;OAIG;IACH,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAE7D;;;;;OAKG;IACH,MAAM,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAE5E;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,KAAK,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAErE;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC;CACnD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB;;OAEG;gBACS,QAAQ,KAAK,QAAQ,GAAG,OAAO;IAI3C;;OAEG;uBACgB,QAAQ,SAAS,MAAM,GAAG,OAAO;IAIpD;;OAEG;wBACiB,QAAQ,KAAK,QAAQ,GAAG,OAAO;IAInD;;;OAGG;oBACa,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS;IAU5D;;;OAGG;aACM,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS;IAUrD;;OAEG;gCACyB,QAAQ,EAAE,GAAG,QAAQ,EAAE;IAsBnD;;OAEG;yBACkB,QAAQ,KAAK,QAAQ,GAAG,MAAM;CAMpD,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Interval Tree Node
3
+ * Internal node structure for the interval tree
4
+ */
5
+ import type { IntervalData } from './interval-tree.interface';
6
+ /**
7
+ * Internal tree node
8
+ * Each node stores an interval and the maximum endpoint in its subtree
9
+ */
10
+ export declare class IntervalNode<T> {
11
+ interval: IntervalData<T>;
12
+ max: number;
13
+ left: IntervalNode<T> | null;
14
+ right: IntervalNode<T> | null;
15
+ height: number;
16
+ constructor(interval: IntervalData<T>);
17
+ }
18
+ /**
19
+ * Get height of a node (0 for null nodes)
20
+ */
21
+ export declare function getHeight<T>(node: IntervalNode<T> | null): number;
22
+ /**
23
+ * Update max value for a node based on its interval and children
24
+ */
25
+ export declare function updateMax<T>(node: IntervalNode<T>): void;
26
+ /**
27
+ * Update height for a node based on its children
28
+ */
29
+ export declare function updateHeight<T>(node: IntervalNode<T>): void;
30
+ /**
31
+ * Find minimum node in a subtree (leftmost node)
32
+ */
33
+ export declare function findMinNode<T>(node: IntervalNode<T> | null): IntervalNode<T> | null;
34
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/interval-tree/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;GAGG;AACH,qBAAa,YAAY,CAAC,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAQ;IACpC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAQ;IACrC,MAAM,EAAE,MAAM,CAAK;gBAEP,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;CAItC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAMnF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * AVL Tree Balancing Operations
3
+ * Handles tree balancing through rotations
4
+ */
5
+ import { IntervalNode } from '../node';
6
+ /**
7
+ * Get balance factor of a node (left height - right height)
8
+ */
9
+ export declare function getBalanceFactor<T>(node: IntervalNode<T>): number;
10
+ /**
11
+ * Left rotation
12
+ * Rotates the node to the left, making its right child the new root
13
+ *
14
+ * @param node - Node to rotate
15
+ * @returns New root after rotation
16
+ */
17
+ export declare function rotateLeft<T>(node: IntervalNode<T>): IntervalNode<T>;
18
+ /**
19
+ * Right rotation
20
+ * Rotates the node to the right, making its left child the new root
21
+ *
22
+ * @param node - Node to rotate
23
+ * @returns New root after rotation
24
+ */
25
+ export declare function rotateRight<T>(node: IntervalNode<T>): IntervalNode<T>;
26
+ /**
27
+ * Balance a node using AVL rotations
28
+ * Performs rotations based on balance factor to maintain AVL property
29
+ *
30
+ * @param node - Node to balance
31
+ * @returns Balanced node (may be a different node after rotation)
32
+ */
33
+ export declare function balance<T>(node: IntervalNode<T>): IntervalNode<T>;
34
+ //# sourceMappingURL=balance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../../../../src/data-structures/interval-tree/operations/balance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAsC,MAAM,SAAS,CAAC;AAE3E;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAEjE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAcpE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAcrE;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAwBjE"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Delete Operations
3
+ * Handles deletion of intervals from the tree
4
+ */
5
+ import type { Interval, IntervalData } from '../interval-tree.interface';
6
+ import { IntervalNode } from '../node';
7
+ /**
8
+ * Delete an interval from the tree
9
+ *
10
+ * @param node - Root of the subtree
11
+ * @param interval - Interval to delete
12
+ * @param comparator - Comparator function for intervals
13
+ * @param balanced - Whether to balance the tree
14
+ * @param onDelete - Callback when a node is deleted
15
+ * @returns New root of the subtree (null if deleted)
16
+ */
17
+ export declare function deleteNode<T>(node: IntervalNode<T> | null, interval: IntervalData<T>, comparator: (a: Interval, b: Interval) => number, balanced: boolean, onDelete?: () => void): IntervalNode<T> | null;
18
+ /**
19
+ * Find an interval by ID in the tree
20
+ *
21
+ * @param node - Root of the subtree
22
+ * @param id - ID to search for
23
+ * @returns The interval data if found, null otherwise
24
+ */
25
+ export declare function findById<T>(node: IntervalNode<T> | null, id: string | number): IntervalData<T> | null;
26
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../../src/data-structures/interval-tree/operations/delete.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAwC,MAAM,SAAS,CAAC;AAG7E;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,UAAU,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,EAChD,QAAQ,EAAE,OAAO,EACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAmDxB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,GAClB,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAQxB"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Insert Operations
3
+ * Handles insertion of intervals into the tree
4
+ */
5
+ import type { Interval, IntervalData } from '../interval-tree.interface';
6
+ import { IntervalNode } from '../node';
7
+ /**
8
+ * Insert an interval into the tree
9
+ *
10
+ * @param node - Root of the subtree
11
+ * @param interval - Interval to insert
12
+ * @param comparator - Comparator function for intervals
13
+ * @param allowDuplicates - Whether to allow duplicate intervals
14
+ * @param balanced - Whether to balance the tree
15
+ * @param onInsert - Callback called when a new node is inserted
16
+ * @returns New root of the subtree
17
+ */
18
+ export declare function insertNode<T>(node: IntervalNode<T> | null, interval: IntervalData<T>, comparator: (a: Interval, b: Interval) => number, allowDuplicates: boolean, balanced: boolean, onInsert?: () => void): IntervalNode<T>;
19
+ //# sourceMappingURL=insert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../../../src/data-structures/interval-tree/operations/insert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,YAAY,EAA2B,MAAM,SAAS,CAAC;AAGhE;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,UAAU,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,EAChD,eAAe,EAAE,OAAO,EACxB,QAAQ,EAAE,OAAO,EACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,YAAY,CAAC,CAAC,CAAC,CA2CjB"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Search Operations
3
+ * Handles various search queries on the interval tree
4
+ */
5
+ import type { Interval, IntervalData } from '../interval-tree.interface';
6
+ import { IntervalNode } from '../node';
7
+ /**
8
+ * Find all intervals that overlap with the given interval
9
+ *
10
+ * @param node - Root of the subtree
11
+ * @param interval - Query interval
12
+ * @param result - Array to collect results
13
+ */
14
+ export declare function searchOverlap<T>(node: IntervalNode<T> | null, interval: Interval, result: IntervalData<T>[]): void;
15
+ /**
16
+ * Check if any interval overlaps with the given interval
17
+ *
18
+ * @param node - Root of the subtree
19
+ * @param interval - Query interval
20
+ * @returns true if any overlap exists
21
+ */
22
+ export declare function hasOverlap<T>(node: IntervalNode<T> | null, interval: Interval): boolean;
23
+ /**
24
+ * Find all intervals completely contained within the given interval
25
+ *
26
+ * @param node - Root of the subtree
27
+ * @param interval - Containing interval
28
+ * @param result - Array to collect results
29
+ */
30
+ export declare function searchContained<T>(node: IntervalNode<T> | null, interval: Interval, result: IntervalData<T>[]): void;
31
+ /**
32
+ * Find all intervals that completely contain the given interval
33
+ *
34
+ * @param node - Root of the subtree
35
+ * @param interval - Interval to be contained
36
+ * @param result - Array to collect results
37
+ */
38
+ export declare function searchContaining<T>(node: IntervalNode<T> | null, interval: Interval, result: IntervalData<T>[]): void;
39
+ /**
40
+ * Find the interval with the maximum endpoint
41
+ *
42
+ * @param node - Root of the subtree
43
+ * @returns Interval with the maximum endpoint
44
+ */
45
+ export declare function findMaxEndpoint<T>(node: IntervalNode<T>): IntervalData<T>;
46
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../src/data-structures/interval-tree/operations/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GACxB,IAAI,CAmBN;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAqBvF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GACxB,IAAI,CAiBN;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GACxB,IAAI,CAiBN;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAmBzE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Traversal Operations
3
+ * Handles traversal and iteration over the tree
4
+ */
5
+ import type { IntervalData } from '../interval-tree.interface';
6
+ import { IntervalNode } from '../node';
7
+ /**
8
+ * Inorder traversal of the tree
9
+ *
10
+ * @param node - Root of the subtree
11
+ * @param result - Array to collect results
12
+ */
13
+ export declare function inorder<T>(node: IntervalNode<T> | null, result: IntervalData<T>[]): void;
14
+ /**
15
+ * Iterate over all intervals in the tree
16
+ *
17
+ * @param node - Root of the subtree
18
+ * @param callback - Function to call for each interval
19
+ */
20
+ export declare function forEach<T>(node: IntervalNode<T> | null, callback: (interval: IntervalData<T>) => void): void;
21
+ /**
22
+ * Validate tree structure
23
+ *
24
+ * @param node - Root of the subtree
25
+ * @param comparator - Comparator function for intervals
26
+ * @returns true if valid
27
+ */
28
+ export declare function validateNode<T>(node: IntervalNode<T> | null, comparator: (a: IntervalData<T>, b: IntervalData<T>) => number): boolean;
29
+ //# sourceMappingURL=traversal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traversal.d.ts","sourceRoot":"","sources":["../../../../../src/data-structures/interval-tree/operations/traversal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAKxF;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAC5C,IAAI,CAKN;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,GAC7D,OAAO,CAuBT"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Utility Operations
3
+ * Static and helper methods for IntervalTree
4
+ */
5
+ import type { IIntervalTree, Interval, IntervalData, IntervalTreeOptions } from '../interval-tree.interface';
6
+ import type { IntervalNode } from '../node';
7
+ /**
8
+ * Filter intervals by a predicate
9
+ */
10
+ export declare function filter<T>(tree: IIntervalTree<T>, root: IntervalNode<T> | null, predicate: (interval: IntervalData<T>) => boolean, options: IntervalTreeOptions): IIntervalTree<T>;
11
+ /**
12
+ * Map intervals to a new interval tree
13
+ */
14
+ export declare function map<T, U>(tree: IIntervalTree<T>, root: IntervalNode<T> | null, mapper: (data: T, interval: Interval) => U, options: IntervalTreeOptions): IIntervalTree<U>;
15
+ /**
16
+ * Get tree structure as string
17
+ */
18
+ export declare function treeToString<T>(root: IntervalNode<T> | null, balanced: boolean): string;
19
+ /**
20
+ * Validate tree structure
21
+ */
22
+ export declare function validate<T>(root: IntervalNode<T> | null, comparator: (a: Interval, b: Interval) => number): boolean;
23
+ /**
24
+ * Create IntervalTree from array of intervals
25
+ */
26
+ export declare function fromArray<T>(IntervalTreeClass: new (opts?: IntervalTreeOptions) => IIntervalTree<T>, intervals: Array<{
27
+ interval: Interval;
28
+ data: T;
29
+ }>, options?: IntervalTreeOptions): IIntervalTree<T>;
30
+ //# sourceMappingURL=utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../../src/data-structures/interval-tree/operations/utilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EACtB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EACtB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,EACjD,OAAO,EAAE,mBAAmB,GAC3B,aAAa,CAAC,CAAC,CAAC,CAWlB;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EACtB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EACtB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,KAAK,CAAC,EAC1C,OAAO,EAAE,mBAAmB,GAC3B,aAAa,CAAC,CAAC,CAAC,CAUlB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAIvF;AAUD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5B,UAAU,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,GAC/C,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,iBAAiB,EAAE,KAAK,IAAI,CAAC,EAAE,mBAAmB,KAAK,aAAa,CAAC,CAAC,CAAC,EACvE,SAAS,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,EACjD,OAAO,CAAC,EAAE,mBAAmB,GAC5B,aAAa,CAAC,CAAC,CAAC,CAMlB"}
@@ -0,0 +1,3 @@
1
+ export { LRUCache } from './lru-cache';
2
+ export type { ILRUCache, LRUCacheOptions, CacheEntry, CacheStats } from './lru-cache.interface';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/lru-cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,134 @@
1
+ import type { ILRUCache, LRUCacheOptions, CacheEntry, CacheStats } from './lru-cache.interface';
2
+ /**
3
+ * LRU Cache - Least Recently Used Cache
4
+ *
5
+ * A cache with automatic eviction of least recently used entries.
6
+ * Uses doubly-linked list + hash map for O(1) operations.
7
+ *
8
+ * **Time Complexity:**
9
+ * - get: O(1)
10
+ * - set: O(1)
11
+ * - delete: O(1)
12
+ * - has: O(1)
13
+ * - clear: O(n)
14
+ *
15
+ * **Space Complexity:** O(n) where n = number of entries
16
+ *
17
+ * **Use Cases in Grid:**
18
+ * - Cache rendered cells: Avoid re-rendering visible cells
19
+ * - Cache formula results: =SUM(A1:A1000) computed once
20
+ * - Cache formatted values: "$1,234.56" cached instead of re-formatting
21
+ * - Cache API responses: Reduce server requests
22
+ *
23
+ * @example Cell Rendering Cache
24
+ * ```typescript
25
+ * const cellCache = new LRUCache<string, HTMLElement>({ capacity: 500 });
26
+ *
27
+ * function renderCell(row: number, col: number): HTMLElement {
28
+ * const key = `${row},${col}`;
29
+ * let element = cellCache.get(key);
30
+ *
31
+ * if (!element) {
32
+ * element = createCellElement(row, col); // Expensive operation
33
+ * cellCache.set(key, element);
34
+ * }
35
+ *
36
+ * return element;
37
+ * }
38
+ * ```
39
+ *
40
+ * @example Formula Cache
41
+ * ```typescript
42
+ * const formulaCache = new LRUCache<string, number>({
43
+ * capacity: 1000,
44
+ * ttl: 5000, // 5 seconds
45
+ * });
46
+ *
47
+ * function evaluateFormula(formula: string): number {
48
+ * return formulaCache.get(formula) ?? computeFormula(formula);
49
+ * }
50
+ * ```
51
+ */
52
+ export declare class LRUCache<K, V> implements ILRUCache<K, V> {
53
+ private capacity;
54
+ private ttl;
55
+ private cache;
56
+ private head;
57
+ private tail;
58
+ private onEvict?;
59
+ private trackStats;
60
+ private hits;
61
+ private misses;
62
+ private evictions;
63
+ private sets;
64
+ constructor(options?: LRUCacheOptions);
65
+ /**
66
+ * Get a value from the cache
67
+ */
68
+ get(key: K): V | undefined;
69
+ /**
70
+ * Set a value in the cache
71
+ */
72
+ set(key: K, value: V): void;
73
+ /**
74
+ * Check if a key exists
75
+ */
76
+ has(key: K): boolean;
77
+ /**
78
+ * Delete a specific entry
79
+ */
80
+ delete(key: K): boolean;
81
+ /**
82
+ * Clear all entries
83
+ */
84
+ clear(): void;
85
+ /**
86
+ * Get current size
87
+ */
88
+ size(): number;
89
+ /**
90
+ * Get statistics
91
+ */
92
+ getStats(): CacheStats;
93
+ /**
94
+ * Get all keys (oldest to newest)
95
+ */
96
+ keys(): K[];
97
+ /**
98
+ * Get all values (oldest to newest)
99
+ */
100
+ values(): V[];
101
+ /**
102
+ * Get all entries with metadata
103
+ */
104
+ entries(): Array<[K, CacheEntry<V>]>;
105
+ /**
106
+ * Peek without updating LRU order
107
+ */
108
+ peek(key: K): V | undefined;
109
+ /**
110
+ * Resize cache capacity
111
+ */
112
+ resize(newCapacity: number): void;
113
+ /**
114
+ * Check if a node is expired
115
+ */
116
+ private isExpired;
117
+ /**
118
+ * Move node to head (most recently used)
119
+ */
120
+ private moveToHead;
121
+ /**
122
+ * Add node to head
123
+ */
124
+ private addToHead;
125
+ /**
126
+ * Remove node from list
127
+ */
128
+ private removeNode;
129
+ /**
130
+ * Evict least recently used entry
131
+ */
132
+ private evictLRU;
133
+ }
134
+ //# sourceMappingURL=lru-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lru-cache.d.ts","sourceRoot":"","sources":["../../../../src/data-structures/lru-cache/lru-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAiBhG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,OAAO,CAAC,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAAU;IAG5B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,IAAI,CAAa;gBAEb,OAAO,GAAE,eAAoB;IAYzC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IA0B1B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAyB3B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAYpB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAUvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAab;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,QAAQ,IAAI,UAAU;IAsBtB;;OAEG;IACH,IAAI,IAAI,CAAC,EAAE;IAYX;;OAEG;IACH,MAAM,IAAI,CAAC,EAAE;IAYb;;OAEG;IACH,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAoBpC;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAa3B;;OAEG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAejC;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAcjB"}