@zengrid/core 1.0.2 → 1.0.5

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 (276) hide show
  1. package/dist/index.cjs.js +43 -55
  2. package/dist/index.esm.js +2 -14
  3. package/dist/package.json +3 -2
  4. package/dist/src/a11y/aria-manager.d.ts.map +1 -1
  5. package/dist/src/a11y/focus-manager.d.ts.map +1 -1
  6. package/dist/src/a11y/index.d.ts.map +1 -1
  7. package/dist/src/data/data-accessor/array-accessor.d.ts.map +1 -1
  8. package/dist/src/data/data-accessor/column-store-accessor.d.ts.map +1 -1
  9. package/dist/src/data/data-accessor/data-accessor.interface.d.ts.map +1 -1
  10. package/dist/src/data/data-accessor/index.d.ts.map +1 -1
  11. package/dist/src/data/data-accessor/sparse-matrix-accessor.d.ts.map +1 -1
  12. package/dist/src/data/data-manager.d.ts.map +1 -1
  13. package/dist/src/data/data-source.interface.d.ts.map +1 -1
  14. package/dist/src/data/grid-data-model.d.ts +2 -2
  15. package/dist/src/data/grid-data-model.d.ts.map +1 -1
  16. package/dist/src/data/index-map/index-map.d.ts.map +1 -1
  17. package/dist/src/data/index-map/index-map.interface.d.ts.map +1 -1
  18. package/dist/src/data/index-map/index.d.ts.map +1 -1
  19. package/dist/src/data/index.d.ts.map +1 -1
  20. package/dist/src/editing/cell-editor.interface.d.ts.map +1 -1
  21. package/dist/src/editing/date-editor.d.ts.map +1 -1
  22. package/dist/src/editing/editor-manager.d.ts.map +1 -1
  23. package/dist/src/editing/index.d.ts.map +1 -1
  24. package/dist/src/editing/number-editor.d.ts.map +1 -1
  25. package/dist/src/editing/select-editor.d.ts.map +1 -1
  26. package/dist/src/editing/text-editor.d.ts.map +1 -1
  27. package/dist/src/events/event-emitter.d.ts.map +1 -1
  28. package/dist/src/events/grid-events.d.ts.map +1 -1
  29. package/dist/src/events/index.d.ts.map +1 -1
  30. package/dist/src/features/autofill/autofill-manager.d.ts +1 -1
  31. package/dist/src/features/autofill/autofill-manager.d.ts.map +1 -1
  32. package/dist/src/features/autofill/index.d.ts.map +1 -1
  33. package/dist/src/features/column-resize/auto-fit-calculator.d.ts.map +1 -1
  34. package/dist/src/features/column-resize/column-resize-manager.d.ts.map +1 -1
  35. package/dist/src/features/column-resize/column-resize-manager.interface.d.ts.map +1 -1
  36. package/dist/src/features/column-resize/index.d.ts.map +1 -1
  37. package/dist/src/features/column-resize/resize-constraint-manager.d.ts.map +1 -1
  38. package/dist/src/features/column-resize/resize-handle-renderer.d.ts.map +1 -1
  39. package/dist/src/features/column-resize/resize-preview.d.ts.map +1 -1
  40. package/dist/src/features/column-resize/resize-state-manager.d.ts.map +1 -1
  41. package/dist/src/features/column-resize/resize-strategies.d.ts.map +1 -1
  42. package/dist/src/features/column-resize/resize-test-helper.d.ts.map +1 -1
  43. package/dist/src/features/column-resize/resize-zone-detector.d.ts.map +1 -1
  44. package/dist/src/features/copy-paste/clipboard-manager.d.ts.map +1 -1
  45. package/dist/src/features/copy-paste/index.d.ts.map +1 -1
  46. package/dist/src/features/filtering/adapters/adapter.interface.d.ts.map +1 -1
  47. package/dist/src/features/filtering/adapters/graphql-adapter.d.ts.map +1 -1
  48. package/dist/src/features/filtering/adapters/index.d.ts.map +1 -1
  49. package/dist/src/features/filtering/adapters/rest-adapter.d.ts.map +1 -1
  50. package/dist/src/features/filtering/adapters/sql-adapter.d.ts.map +1 -1
  51. package/dist/src/features/filtering/adapters/types.d.ts.map +1 -1
  52. package/dist/src/features/filtering/column-filter.d.ts.map +1 -1
  53. package/dist/src/features/filtering/filter-autocomplete.d.ts.map +1 -1
  54. package/dist/src/features/filtering/filter-cache.d.ts.map +1 -1
  55. package/dist/src/features/filtering/filter-compiler.d.ts.map +1 -1
  56. package/dist/src/features/filtering/filter-export-manager.d.ts.map +1 -1
  57. package/dist/src/features/filtering/filter-index-manager.d.ts +1 -1
  58. package/dist/src/features/filtering/filter-index-manager.d.ts.map +1 -1
  59. package/dist/src/features/filtering/filter-manager.d.ts +1 -1
  60. package/dist/src/features/filtering/filter-manager.d.ts.map +1 -1
  61. package/dist/src/features/filtering/filter-optimizer.d.ts.map +1 -1
  62. package/dist/src/features/filtering/filter-query-parser.d.ts.map +1 -1
  63. package/dist/src/features/filtering/index.d.ts.map +1 -1
  64. package/dist/src/features/filtering/range-filter-optimizer.d.ts.map +1 -1
  65. package/dist/src/features/filtering/substring-filter.d.ts.map +1 -1
  66. package/dist/src/features/filtering/types.d.ts.map +1 -1
  67. package/dist/src/features/formulas/formula-calculator.d.ts.map +1 -1
  68. package/dist/src/features/formulas/index.d.ts.map +1 -1
  69. package/dist/src/features/hit-testing/index.d.ts.map +1 -1
  70. package/dist/src/features/hit-testing/spatial-hit-tester.d.ts +1 -1
  71. package/dist/src/features/hit-testing/spatial-hit-tester.d.ts.map +1 -1
  72. package/dist/src/features/loading/index.d.ts.map +1 -1
  73. package/dist/src/features/loading/loading-indicator.d.ts.map +1 -1
  74. package/dist/src/features/pagination/index.d.ts.map +1 -1
  75. package/dist/src/features/pagination/paginator.d.ts.map +1 -1
  76. package/dist/src/features/selection/index.d.ts.map +1 -1
  77. package/dist/src/features/selection/selection-manager.d.ts.map +1 -1
  78. package/dist/src/features/sorting/index.d.ts.map +1 -1
  79. package/dist/src/features/sorting/row-sorter.interface.d.ts.map +1 -1
  80. package/dist/src/features/sorting/single-column-sorter.d.ts.map +1 -1
  81. package/dist/src/features/sorting/sort-manager.d.ts.map +1 -1
  82. package/dist/src/features/undo-redo/index.d.ts.map +1 -1
  83. package/dist/src/features/undo-redo/undo-redo-manager.d.ts.map +1 -1
  84. package/dist/src/grid.d.ts.map +1 -1
  85. package/dist/src/i18n/index.d.ts.map +1 -1
  86. package/dist/src/i18n/locale-manager.d.ts.map +1 -1
  87. package/dist/src/i18n/rtl-support.d.ts.map +1 -1
  88. package/dist/src/index.d.ts +4 -4
  89. package/dist/src/index.d.ts.map +1 -1
  90. package/dist/src/keyboard/index.d.ts.map +1 -1
  91. package/dist/src/keyboard/keyboard-navigator.d.ts.map +1 -1
  92. package/dist/src/rendering/cache/index.d.ts.map +1 -1
  93. package/dist/src/rendering/cache/renderer-cache.d.ts.map +1 -1
  94. package/dist/src/rendering/cache/renderer-cache.interface.d.ts.map +1 -1
  95. package/dist/src/rendering/cell-pool/cell-pool.d.ts.map +1 -1
  96. package/dist/src/rendering/cell-pool/cell-pool.interface.d.ts.map +1 -1
  97. package/dist/src/rendering/cell-pool/index.d.ts.map +1 -1
  98. package/dist/src/rendering/cell-positioner/cell-positioner.d.ts.map +1 -1
  99. package/dist/src/rendering/cell-positioner/cell-positioner.interface.d.ts.map +1 -1
  100. package/dist/src/rendering/cell-positioner/index.d.ts.map +1 -1
  101. package/dist/src/rendering/height-provider/height-provider.interface.d.ts.map +1 -1
  102. package/dist/src/rendering/height-provider/index.d.ts.map +1 -1
  103. package/dist/src/rendering/height-provider/uniform-height-provider.d.ts.map +1 -1
  104. package/dist/src/rendering/height-provider/variable-height-provider.d.ts.map +1 -1
  105. package/dist/src/rendering/renderers/advanced-cell-renderer.d.ts.map +1 -1
  106. package/dist/src/rendering/renderers/image-renderer.d.ts.map +1 -1
  107. package/dist/src/rendering/renderers/index.d.ts.map +1 -1
  108. package/dist/src/rendering/renderers/number-renderer.d.ts.map +1 -1
  109. package/dist/src/rendering/renderers/renderer-registry.d.ts.map +1 -1
  110. package/dist/src/rendering/renderers/renderer.interface.d.ts.map +1 -1
  111. package/dist/src/rendering/renderers/text-renderer.d.ts.map +1 -1
  112. package/dist/src/rendering/spatial-hit-tester.d.ts +1 -1
  113. package/dist/src/rendering/spatial-hit-tester.d.ts.map +1 -1
  114. package/dist/src/rendering/virtual-scroller/index.d.ts.map +1 -1
  115. package/dist/src/rendering/virtual-scroller/virtual-scroller.d.ts.map +1 -1
  116. package/dist/src/rendering/virtual-scroller/virtual-scroller.interface.d.ts.map +1 -1
  117. package/dist/src/rendering/width-provider/index.d.ts.map +1 -1
  118. package/dist/src/rendering/width-provider/uniform-width-provider.d.ts.map +1 -1
  119. package/dist/src/rendering/width-provider/variable-width-provider.d.ts.map +1 -1
  120. package/dist/src/rendering/width-provider/width-provider.interface.d.ts.map +1 -1
  121. package/dist/src/selection/hit-tester.d.ts.map +1 -1
  122. package/dist/src/selection/hit-tester.interface.d.ts.map +1 -1
  123. package/dist/src/selection/index.d.ts.map +1 -1
  124. package/dist/src/selection/range-utils.d.ts.map +1 -1
  125. package/dist/src/selection/range-utils.interface.d.ts.map +1 -1
  126. package/dist/src/shared/algorithms/filter/bloom-filter.d.ts +120 -0
  127. package/dist/src/shared/algorithms/filter/bloom-filter.d.ts.map +1 -0
  128. package/dist/src/shared/algorithms/filter/index.d.ts +7 -0
  129. package/dist/src/shared/algorithms/filter/index.d.ts.map +1 -0
  130. package/dist/src/shared/algorithms/graph/bfs.d.ts +71 -0
  131. package/dist/src/shared/algorithms/graph/bfs.d.ts.map +1 -0
  132. package/dist/src/shared/algorithms/graph/dfs.d.ts +62 -0
  133. package/dist/src/shared/algorithms/graph/dfs.d.ts.map +1 -0
  134. package/dist/src/shared/algorithms/graph/graph.interface.d.ts +63 -0
  135. package/dist/src/shared/algorithms/graph/graph.interface.d.ts.map +1 -0
  136. package/dist/src/shared/algorithms/graph/index.d.ts +9 -0
  137. package/dist/src/shared/algorithms/graph/index.d.ts.map +1 -0
  138. package/dist/src/shared/algorithms/index.d.ts +11 -0
  139. package/dist/src/shared/algorithms/index.d.ts.map +1 -0
  140. package/dist/src/shared/algorithms/pattern/index.d.ts +8 -0
  141. package/dist/src/shared/algorithms/pattern/index.d.ts.map +1 -0
  142. package/dist/src/shared/algorithms/pattern/sequence-detector.d.ts +62 -0
  143. package/dist/src/shared/algorithms/pattern/sequence-detector.d.ts.map +1 -0
  144. package/dist/src/shared/algorithms/search/binary-search.d.ts +86 -0
  145. package/dist/src/shared/algorithms/search/binary-search.d.ts.map +1 -0
  146. package/dist/src/shared/algorithms/search/index.d.ts +6 -0
  147. package/dist/src/shared/algorithms/search/index.d.ts.map +1 -0
  148. package/dist/src/shared/algorithms/sorting/comparators.d.ts +126 -0
  149. package/dist/src/shared/algorithms/sorting/comparators.d.ts.map +1 -0
  150. package/dist/src/shared/algorithms/sorting/index.d.ts +9 -0
  151. package/dist/src/shared/algorithms/sorting/index.d.ts.map +1 -0
  152. package/dist/src/shared/algorithms/sorting/sorting.interface.d.ts +38 -0
  153. package/dist/src/shared/algorithms/sorting/sorting.interface.d.ts.map +1 -0
  154. package/dist/src/shared/algorithms/sorting/timsort.d.ts +55 -0
  155. package/dist/src/shared/algorithms/sorting/timsort.d.ts.map +1 -0
  156. package/dist/src/shared/data-structures/column-store/column-store.d.ts +52 -0
  157. package/dist/src/shared/data-structures/column-store/column-store.d.ts.map +1 -0
  158. package/dist/src/shared/data-structures/column-store/column-store.interface.d.ts +155 -0
  159. package/dist/src/shared/data-structures/column-store/column-store.interface.d.ts.map +1 -0
  160. package/dist/src/shared/data-structures/column-store/index.d.ts +6 -0
  161. package/dist/src/shared/data-structures/column-store/index.d.ts.map +1 -0
  162. package/dist/src/shared/data-structures/command-stack/command-stack.d.ts +61 -0
  163. package/dist/src/shared/data-structures/command-stack/command-stack.d.ts.map +1 -0
  164. package/dist/src/shared/data-structures/command-stack/command-stack.interface.d.ts +80 -0
  165. package/dist/src/shared/data-structures/command-stack/command-stack.interface.d.ts.map +1 -0
  166. package/dist/src/shared/data-structures/command-stack/index.d.ts +3 -0
  167. package/dist/src/shared/data-structures/command-stack/index.d.ts.map +1 -0
  168. package/dist/src/shared/data-structures/dependency-graph/dependency-graph.d.ts +147 -0
  169. package/dist/src/shared/data-structures/dependency-graph/dependency-graph.d.ts.map +1 -0
  170. package/dist/src/shared/data-structures/dependency-graph/dependency-graph.interface.d.ts +161 -0
  171. package/dist/src/shared/data-structures/dependency-graph/dependency-graph.interface.d.ts.map +1 -0
  172. package/dist/src/shared/data-structures/dependency-graph/index.d.ts +8 -0
  173. package/dist/src/shared/data-structures/dependency-graph/index.d.ts.map +1 -0
  174. package/dist/src/shared/data-structures/disjoint-set/disjoint-set.d.ts +84 -0
  175. package/dist/src/shared/data-structures/disjoint-set/disjoint-set.d.ts.map +1 -0
  176. package/dist/src/shared/data-structures/disjoint-set/disjoint-set.interface.d.ts +185 -0
  177. package/dist/src/shared/data-structures/disjoint-set/disjoint-set.interface.d.ts.map +1 -0
  178. package/dist/src/shared/data-structures/disjoint-set/index.d.ts +7 -0
  179. package/dist/src/shared/data-structures/disjoint-set/index.d.ts.map +1 -0
  180. package/dist/src/shared/data-structures/index-map/index-map.d.ts +150 -0
  181. package/dist/src/shared/data-structures/index-map/index-map.d.ts.map +1 -0
  182. package/dist/src/shared/data-structures/index-map/index-map.interface.d.ts +186 -0
  183. package/dist/src/shared/data-structures/index-map/index-map.interface.d.ts.map +1 -0
  184. package/dist/src/shared/data-structures/index-map/index.d.ts +6 -0
  185. package/dist/src/shared/data-structures/index-map/index.d.ts.map +1 -0
  186. package/dist/src/shared/data-structures/index.d.ts +36 -0
  187. package/dist/src/shared/data-structures/index.d.ts.map +1 -0
  188. package/dist/src/shared/data-structures/interval-tree/index.d.ts +7 -0
  189. package/dist/src/shared/data-structures/interval-tree/index.d.ts.map +1 -0
  190. package/dist/src/shared/data-structures/interval-tree/interval-tree.d.ts +141 -0
  191. package/dist/src/shared/data-structures/interval-tree/interval-tree.d.ts.map +1 -0
  192. package/dist/src/shared/data-structures/interval-tree/interval-tree.interface.d.ts +212 -0
  193. package/dist/src/shared/data-structures/interval-tree/interval-tree.interface.d.ts.map +1 -0
  194. package/dist/src/shared/data-structures/lru-cache/index.d.ts +3 -0
  195. package/dist/src/shared/data-structures/lru-cache/index.d.ts.map +1 -0
  196. package/dist/src/shared/data-structures/lru-cache/lru-cache.d.ts +134 -0
  197. package/dist/src/shared/data-structures/lru-cache/lru-cache.d.ts.map +1 -0
  198. package/dist/src/shared/data-structures/lru-cache/lru-cache.interface.d.ts +173 -0
  199. package/dist/src/shared/data-structures/lru-cache/lru-cache.interface.d.ts.map +1 -0
  200. package/dist/src/shared/data-structures/prefix-sum-array/index.d.ts +6 -0
  201. package/dist/src/shared/data-structures/prefix-sum-array/index.d.ts.map +1 -0
  202. package/dist/src/shared/data-structures/prefix-sum-array/prefix-sum-array.d.ts +63 -0
  203. package/dist/src/shared/data-structures/prefix-sum-array/prefix-sum-array.d.ts.map +1 -0
  204. package/dist/src/shared/data-structures/prefix-sum-array/prefix-sum-array.interface.d.ts +80 -0
  205. package/dist/src/shared/data-structures/prefix-sum-array/prefix-sum-array.interface.d.ts.map +1 -0
  206. package/dist/src/shared/data-structures/rtree/index.d.ts +8 -0
  207. package/dist/src/shared/data-structures/rtree/index.d.ts.map +1 -0
  208. package/dist/src/shared/data-structures/rtree/rtree.d.ts +81 -0
  209. package/dist/src/shared/data-structures/rtree/rtree.d.ts.map +1 -0
  210. package/dist/src/shared/data-structures/rtree/rtree.interface.d.ts +143 -0
  211. package/dist/src/shared/data-structures/rtree/rtree.interface.d.ts.map +1 -0
  212. package/dist/src/shared/data-structures/segment-tree/index.d.ts +4 -0
  213. package/dist/src/shared/data-structures/segment-tree/index.d.ts.map +1 -0
  214. package/dist/src/shared/data-structures/segment-tree/segment-tree.d.ts +134 -0
  215. package/dist/src/shared/data-structures/segment-tree/segment-tree.d.ts.map +1 -0
  216. package/dist/src/shared/data-structures/segment-tree/segment-tree.interface.d.ts +202 -0
  217. package/dist/src/shared/data-structures/segment-tree/segment-tree.interface.d.ts.map +1 -0
  218. package/dist/src/shared/data-structures/skip-list/index.d.ts +4 -0
  219. package/dist/src/shared/data-structures/skip-list/index.d.ts.map +1 -0
  220. package/dist/src/shared/data-structures/skip-list/skip-list.d.ts +137 -0
  221. package/dist/src/shared/data-structures/skip-list/skip-list.d.ts.map +1 -0
  222. package/dist/src/shared/data-structures/skip-list/skip-list.interface.d.ts +223 -0
  223. package/dist/src/shared/data-structures/skip-list/skip-list.interface.d.ts.map +1 -0
  224. package/dist/src/shared/data-structures/sparse-matrix/index.d.ts +6 -0
  225. package/dist/src/shared/data-structures/sparse-matrix/index.d.ts.map +1 -0
  226. package/dist/src/shared/data-structures/sparse-matrix/sparse-matrix.d.ts +44 -0
  227. package/dist/src/shared/data-structures/sparse-matrix/sparse-matrix.d.ts.map +1 -0
  228. package/dist/src/shared/data-structures/sparse-matrix/sparse-matrix.interface.d.ts +105 -0
  229. package/dist/src/shared/data-structures/sparse-matrix/sparse-matrix.interface.d.ts.map +1 -0
  230. package/dist/src/shared/data-structures/suffix-array/index.d.ts +3 -0
  231. package/dist/src/shared/data-structures/suffix-array/index.d.ts.map +1 -0
  232. package/dist/src/shared/data-structures/suffix-array/suffix-array.d.ts +102 -0
  233. package/dist/src/shared/data-structures/suffix-array/suffix-array.d.ts.map +1 -0
  234. package/dist/src/shared/data-structures/suffix-array/suffix-array.interface.d.ts +117 -0
  235. package/dist/src/shared/data-structures/suffix-array/suffix-array.interface.d.ts.map +1 -0
  236. package/dist/src/shared/data-structures/trie/index.d.ts +8 -0
  237. package/dist/src/shared/data-structures/trie/index.d.ts.map +1 -0
  238. package/dist/src/shared/data-structures/trie/trie.d.ts +205 -0
  239. package/dist/src/shared/data-structures/trie/trie.d.ts.map +1 -0
  240. package/dist/src/shared/data-structures/trie/trie.interface.d.ts +117 -0
  241. package/dist/src/shared/data-structures/trie/trie.interface.d.ts.map +1 -0
  242. package/dist/src/shared/index.d.ts +47 -0
  243. package/dist/src/shared/index.d.ts.map +1 -0
  244. package/dist/src/shared/patterns/coordinator.d.ts +90 -0
  245. package/dist/src/shared/patterns/coordinator.d.ts.map +1 -0
  246. package/dist/src/shared/patterns/event-emitter.d.ts +106 -0
  247. package/dist/src/shared/patterns/event-emitter.d.ts.map +1 -0
  248. package/dist/src/shared/patterns/factory.d.ts +120 -0
  249. package/dist/src/shared/patterns/factory.d.ts.map +1 -0
  250. package/dist/src/shared/patterns/index.d.ts +21 -0
  251. package/dist/src/shared/patterns/index.d.ts.map +1 -0
  252. package/dist/src/shared/patterns/mediator.d.ts +116 -0
  253. package/dist/src/shared/patterns/mediator.d.ts.map +1 -0
  254. package/dist/src/shared/patterns/object-pool.d.ts +178 -0
  255. package/dist/src/shared/patterns/object-pool.d.ts.map +1 -0
  256. package/dist/src/shared/patterns/observer.d.ts +89 -0
  257. package/dist/src/shared/patterns/observer.d.ts.map +1 -0
  258. package/dist/src/shared/patterns/operation-mode.d.ts +75 -0
  259. package/dist/src/shared/patterns/operation-mode.d.ts.map +1 -0
  260. package/dist/src/shared/patterns/state-machine.d.ts +122 -0
  261. package/dist/src/shared/patterns/state-machine.d.ts.map +1 -0
  262. package/dist/src/shared/types/common.d.ts +56 -0
  263. package/dist/src/shared/types/common.d.ts.map +1 -0
  264. package/dist/src/shared/types/index.d.ts +5 -0
  265. package/dist/src/shared/types/index.d.ts.map +1 -0
  266. package/dist/src/shared/utils/index.d.ts +7 -0
  267. package/dist/src/shared/utils/index.d.ts.map +1 -0
  268. package/dist/src/shared/utils/timing.d.ts +104 -0
  269. package/dist/src/shared/utils/timing.d.ts.map +1 -0
  270. package/dist/src/shared/utils/timing.interface.d.ts +96 -0
  271. package/dist/src/shared/utils/timing.interface.d.ts.map +1 -0
  272. package/dist/src/touch/index.d.ts.map +1 -1
  273. package/dist/src/touch/touch-handler.d.ts.map +1 -1
  274. package/dist/src/types/index.d.ts.map +1 -1
  275. package/dist/src/types.d.ts.map +1 -1
  276. package/package.json +3 -2
@@ -0,0 +1,205 @@
1
+ import type { ITrie, TrieOptions, TrieSearchResult } from './trie.interface';
2
+ /**
3
+ * Trie (Prefix Tree) Data Structure
4
+ *
5
+ * A tree-based data structure for efficient prefix-based searches.
6
+ *
7
+ * **Time Complexity:**
8
+ * - Insert: O(m) where m = word length
9
+ * - Search: O(m)
10
+ * - Autocomplete: O(m + n) where n = number of suggestions
11
+ * - Delete: O(m)
12
+ *
13
+ * **Space Complexity:** O(ALPHABET_SIZE * m * n) where n = number of words
14
+ *
15
+ * **Use Cases:**
16
+ * - Column filter autocomplete: type "ap" → suggests "apple", "application"
17
+ * - Search suggestions: real-time filtering as user types
18
+ * - Dictionary lookups: spell checking
19
+ * - IP routing tables
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const trie = new Trie();
24
+ * trie.insert('apple');
25
+ * trie.insert('application');
26
+ * trie.insert('app');
27
+ *
28
+ * trie.search('apple'); // true
29
+ * trie.search('appl'); // false
30
+ * trie.startsWith('app'); // true
31
+ * trie.autocomplete('app'); // ['app', 'apple', 'application']
32
+ *
33
+ * const result = trie.find('app');
34
+ * // {
35
+ * // term: 'app',
36
+ * // isComplete: true,
37
+ * // suggestions: ['app', 'apple', 'application'],
38
+ * // count: 3
39
+ * // }
40
+ * ```
41
+ *
42
+ * @example Grid Integration
43
+ * ```typescript
44
+ * // Column filter with autocomplete
45
+ * class FilterManager {
46
+ * private valueTrie = new Trie();
47
+ *
48
+ * indexColumn(col: number): void {
49
+ * const values = this.grid.getColumnValues(col);
50
+ * values.forEach(v => this.valueTrie.insert(String(v)));
51
+ * }
52
+ *
53
+ * getSuggestions(prefix: string): string[] {
54
+ * return this.valueTrie.autocomplete(prefix, 10);
55
+ * }
56
+ * }
57
+ * ```
58
+ */
59
+ export declare class Trie implements ITrie {
60
+ private root;
61
+ private options;
62
+ private wordCount;
63
+ constructor(options?: TrieOptions);
64
+ /**
65
+ * Insert a word into the trie
66
+ *
67
+ * @param word - Word to insert
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * trie.insert('hello');
72
+ * trie.insert('world');
73
+ * ```
74
+ */
75
+ insert(word: string): void;
76
+ /**
77
+ * Search for an exact word in the trie
78
+ *
79
+ * @param word - Word to search for
80
+ * @returns true if word exists, false otherwise
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * trie.insert('apple');
85
+ * trie.search('apple'); // true
86
+ * trie.search('app'); // false (not a complete word)
87
+ * trie.search('apples'); // false
88
+ * ```
89
+ */
90
+ search(word: string): boolean;
91
+ /**
92
+ * Check if any word starts with the given prefix
93
+ *
94
+ * @param prefix - Prefix to check
95
+ * @returns true if prefix exists, false otherwise
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * trie.insert('apple');
100
+ * trie.startsWith('app'); // true
101
+ * trie.startsWith('ban'); // false
102
+ * ```
103
+ */
104
+ startsWith(prefix: string): boolean;
105
+ /**
106
+ * Get autocomplete suggestions for a prefix
107
+ *
108
+ * @param prefix - Prefix to search for
109
+ * @param maxResults - Maximum number of results (default: from options)
110
+ * @returns Array of suggestions
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * trie.insert('apple');
115
+ * trie.insert('application');
116
+ * trie.insert('app');
117
+ *
118
+ * trie.autocomplete('app'); // ['app', 'apple', 'application']
119
+ * trie.autocomplete('app', 2); // ['app', 'apple']
120
+ * ```
121
+ */
122
+ autocomplete(prefix: string, maxResults?: number): string[];
123
+ /**
124
+ * Get detailed search result with metadata
125
+ *
126
+ * @param term - Search term
127
+ * @returns Search result with suggestions and metadata
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * const result = trie.find('app');
132
+ * // {
133
+ * // term: 'app',
134
+ * // isComplete: true,
135
+ * // suggestions: ['app', 'apple', 'application'],
136
+ * // count: 3
137
+ * // }
138
+ * ```
139
+ */
140
+ find(term: string): TrieSearchResult;
141
+ /**
142
+ * Delete a word from the trie
143
+ *
144
+ * @param word - Word to delete
145
+ * @returns true if word was deleted, false if word didn't exist
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * trie.insert('apple');
150
+ * trie.delete('apple'); // true
151
+ * trie.delete('banana'); // false (doesn't exist)
152
+ * ```
153
+ */
154
+ delete(word: string): boolean;
155
+ /**
156
+ * Clear all words from the trie
157
+ */
158
+ clear(): void;
159
+ /**
160
+ * Get all words in the trie
161
+ *
162
+ * @returns Array of all words
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * trie.insert('apple');
167
+ * trie.insert('banana');
168
+ * trie.getAllWords(); // ['apple', 'banana']
169
+ * ```
170
+ */
171
+ getAllWords(): string[];
172
+ /**
173
+ * Get the number of unique words in the trie
174
+ *
175
+ * @returns Number of words
176
+ */
177
+ size(): number;
178
+ /**
179
+ * Check if the trie is empty
180
+ *
181
+ * @returns true if empty, false otherwise
182
+ */
183
+ isEmpty(): boolean;
184
+ /**
185
+ * Normalize a string based on case sensitivity option
186
+ */
187
+ private normalize;
188
+ /**
189
+ * Restore original case from prefix to suggestion
190
+ */
191
+ private restoreCase;
192
+ /**
193
+ * Find a node in the trie by traversing the path
194
+ */
195
+ private findNode;
196
+ /**
197
+ * Collect all words from a node using DFS
198
+ */
199
+ private collectWords;
200
+ /**
201
+ * Recursively delete a word from the trie
202
+ */
203
+ private deleteRecursive;
204
+ }
205
+ //# sourceMappingURL=trie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trie.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/trie/trie.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAEL,WAAW,EACX,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAgB1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,qBAAa,IAAK,YAAW,KAAK;IAChC,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,SAAS,CAAa;gBAElB,OAAO,GAAE,WAAgB;IASrC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoB1B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO7B;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAOnC;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAkB3D;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAqBpC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO7B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;;;;;;;;;;OAWG;IACH,WAAW,IAAI,MAAM,EAAE;IAMvB;;;;OAIG;IACH,IAAI,IAAI,MAAM;IAId;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAMlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAahB;;OAEG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,eAAe;CAwCxB"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Trie (Prefix Tree) Interface
3
+ *
4
+ * Used for:
5
+ * - Autocomplete in column filters
6
+ * - Search suggestions
7
+ * - Dictionary lookups
8
+ * - Prefix-based searches
9
+ */
10
+ /**
11
+ * Trie search result
12
+ */
13
+ export interface TrieSearchResult {
14
+ /**
15
+ * The search term
16
+ */
17
+ term: string;
18
+ /**
19
+ * Whether the term exists as a complete word
20
+ */
21
+ isComplete: boolean;
22
+ /**
23
+ * All words with this prefix
24
+ */
25
+ suggestions: string[];
26
+ /**
27
+ * Number of words with this prefix
28
+ */
29
+ count: number;
30
+ }
31
+ /**
32
+ * Trie node interface
33
+ */
34
+ export interface ITrieNode {
35
+ /**
36
+ * Character at this node
37
+ */
38
+ char: string;
39
+ /**
40
+ * Is this the end of a word?
41
+ */
42
+ isEndOfWord: boolean;
43
+ /**
44
+ * Child nodes
45
+ */
46
+ children: Map<string, ITrieNode>;
47
+ /**
48
+ * Number of words passing through this node
49
+ */
50
+ wordCount: number;
51
+ }
52
+ /**
53
+ * Trie options
54
+ */
55
+ export interface TrieOptions {
56
+ /**
57
+ * Case-sensitive search
58
+ * @default false
59
+ */
60
+ caseSensitive?: boolean;
61
+ /**
62
+ * Maximum suggestions to return
63
+ * @default 10
64
+ */
65
+ maxSuggestions?: number;
66
+ /**
67
+ * Allow partial matches
68
+ * @default true
69
+ */
70
+ allowPartial?: boolean;
71
+ }
72
+ /**
73
+ * Trie data structure interface
74
+ */
75
+ export interface ITrie {
76
+ /**
77
+ * Insert a word into the trie
78
+ */
79
+ insert(word: string): void;
80
+ /**
81
+ * Search for a word in the trie
82
+ */
83
+ search(word: string): boolean;
84
+ /**
85
+ * Check if any word starts with the given prefix
86
+ */
87
+ startsWith(prefix: string): boolean;
88
+ /**
89
+ * Get all words with the given prefix (autocomplete)
90
+ */
91
+ autocomplete(prefix: string, maxResults?: number): string[];
92
+ /**
93
+ * Get detailed search result
94
+ */
95
+ find(term: string): TrieSearchResult;
96
+ /**
97
+ * Delete a word from the trie
98
+ */
99
+ delete(word: string): boolean;
100
+ /**
101
+ * Clear all words from the trie
102
+ */
103
+ clear(): void;
104
+ /**
105
+ * Get all words in the trie
106
+ */
107
+ getAllWords(): string[];
108
+ /**
109
+ * Get the number of words in the trie
110
+ */
111
+ size(): number;
112
+ /**
113
+ * Check if the trie is empty
114
+ */
115
+ isEmpty(): boolean;
116
+ }
117
+ //# sourceMappingURL=trie.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trie.interface.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/trie/trie.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEjC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAE9B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE5D;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAErC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAE9B;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE,CAAC;IAExB;;OAEG;IACH,IAAI,IAAI,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC;CACpB"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * ZenGrid Shared Package
3
+ * Reusable algorithms and data structures
4
+ *
5
+ * @packageDocumentation
6
+ */
7
+ export { SparseMatrix } from './data-structures/sparse-matrix';
8
+ export type { ReadonlySparseMatrix, ISparseMatrix, SparseMatrixOptions, } from './data-structures/sparse-matrix';
9
+ export { PrefixSumArray } from './data-structures/prefix-sum-array';
10
+ export type { IPrefixSumArray, PrefixSumArrayOptions, } from './data-structures/prefix-sum-array';
11
+ export { ColumnStore } from './data-structures/column-store';
12
+ export type { IColumnStore, ColumnStoreOptions, ColumnDefinition, ColumnType, AggregateOperation, AggregationResult, } from './data-structures/column-store';
13
+ export { LRUCache } from './data-structures/lru-cache';
14
+ export type { ILRUCache, LRUCacheOptions, CacheEntry, CacheStats, } from './data-structures/lru-cache';
15
+ export { CommandStack } from './data-structures/command-stack';
16
+ export type { ICommandStack, ICommand, ICommandStackOptions, } from './data-structures/command-stack';
17
+ export { SegmentTree } from './data-structures/segment-tree';
18
+ export type { ISegmentTree, SegmentTreeOptions, AggregateFunction, AggregationType, } from './data-structures/segment-tree';
19
+ export { Aggregations, SegmentTreeUtils } from './data-structures/segment-tree';
20
+ export { SkipList } from './data-structures/skip-list';
21
+ export type { ISkipList, SkipListNode, SkipListOptions, RangeResult as SkipListRangeResult, SkipListStats, } from './data-structures/skip-list';
22
+ export { defaultComparator as skipListDefaultComparator, SkipListUtils } from './data-structures/skip-list';
23
+ export { DisjointSet } from './data-structures/disjoint-set';
24
+ export type { IDisjointSet, DisjointSetOptions, DisjointSetStats, } from './data-structures/disjoint-set';
25
+ export { DisjointSetUtils } from './data-structures/disjoint-set';
26
+ export { IndexMap } from './data-structures/index-map';
27
+ export type { IIndexMap, IndexMapEntry, IndexMapOptions, } from './data-structures/index-map';
28
+ export { IntervalTree } from './data-structures/interval-tree';
29
+ export type { IIntervalTree, Interval, IntervalData, IntervalTreeOptions, } from './data-structures/interval-tree';
30
+ export { IntervalUtils } from './data-structures/interval-tree';
31
+ export { RTree } from './data-structures/rtree';
32
+ export type { IRTree, RTreeData, RTreeOptions, RTreeSearchResult, RTreeStats, } from './data-structures/rtree';
33
+ export { Trie } from './data-structures/trie';
34
+ export type { ITrie, ITrieNode, TrieOptions, TrieSearchResult, } from './data-structures/trie';
35
+ export { DependencyGraph } from './data-structures/dependency-graph';
36
+ export type { IDependencyGraph, NodeId, Dependency, DependencyGraphOptions, TopologicalSortResult, GraphStats, } from './data-structures/dependency-graph';
37
+ export { SuffixArray } from './data-structures/suffix-array';
38
+ export type { ISuffixArray, SuffixArrayOptions, SuffixSearchResult, SuffixArrayStats, } from './data-structures/suffix-array';
39
+ export { binarySearch, binarySearchLeft, binarySearchRight, } from './algorithms/search';
40
+ export type { BinarySearchOptions, BinarySearchResult, } from './algorithms/search';
41
+ export type { Comparator, Predicate, EqualityFn, HashFn, Range, Rectangle, Point, BoundingBox, } from './types';
42
+ export { debounce, throttle, createRAFBatchScheduler, delay, timeout, } from './utils/timing';
43
+ export type { DebounceOptions, DebouncedFunction, ThrottleOptions, ThrottledFunction, RAFBatchScheduler, } from './utils/timing.interface';
44
+ export { EventEmitter, Subject, StateMachine, BaseCoordinator, Factory, SingletonFactory, Mediator, MediatedComponent, EventMediator, ObjectPool, KeyedObjectPool, resolveOperationMode, OperationModeManager, } from './patterns';
45
+ export type { IEventEmitter, IObserver, ISubject, IStateMachine, StateMachineOptions, TransitionHandler, ICoordinator, IFactory, IMediator, IObjectPool, ObjectPoolOptions, ObjectPoolStats, OperationMode, ResolvedOperationMode, OperationModeConfig, } from './patterns';
46
+ export declare const VERSION = "0.1.0";
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,YAAY,EACV,eAAe,EACf,qBAAqB,GACtB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,YAAY,EACV,SAAS,EACT,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,YAAY,EACV,aAAa,EACb,QAAQ,EACR,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,YAAY,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,WAAW,IAAI,mBAAmB,EAClC,aAAa,GACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,IAAI,yBAAyB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5G,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,YAAY,EACV,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,YAAY,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,YAAY,EACV,MAAM,EACN,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,UAAU,GACX,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EACV,KAAK,EACL,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,YAAY,EACV,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,GACX,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,MAAM,EACN,KAAK,EACL,SAAS,EACT,KAAK,EACL,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,uBAAuB,EACvB,KAAK,EACL,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,SAAS,EACT,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,OAAO,UAAU,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Coordinator Pattern
3
+ *
4
+ * Base class for coordinators that manage lifecycle and integration
5
+ * of components within a larger system.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * class SortCoordinator extends BaseCoordinator {
10
+ * constructor(
11
+ * private grid: Grid,
12
+ * private sortManager: SortManager
13
+ * ) {
14
+ * super();
15
+ * }
16
+ *
17
+ * protected onInitialize(): void {
18
+ * // Setup event listeners
19
+ * this.sortManager.on('sort:change', this.handleSortChange);
20
+ * }
21
+ *
22
+ * protected onCleanup(): void {
23
+ * // Remove event listeners
24
+ * this.sortManager.off('sort:change', this.handleSortChange);
25
+ * }
26
+ *
27
+ * private handleSortChange = () => {
28
+ * this.grid.refresh();
29
+ * };
30
+ * }
31
+ *
32
+ * const coordinator = new SortCoordinator(grid, sortManager);
33
+ * coordinator.initialize(); // Setup
34
+ * // ... use ...
35
+ * coordinator.cleanup(); // Teardown
36
+ * ```
37
+ */
38
+ export interface ICoordinator {
39
+ /** Initialize the coordinator */
40
+ initialize(): void;
41
+ /** Cleanup and tear down the coordinator */
42
+ cleanup(): void;
43
+ /** Check if the coordinator is initialized */
44
+ readonly isInitialized: boolean;
45
+ }
46
+ /**
47
+ * Base coordinator implementation
48
+ *
49
+ * Provides lifecycle management with initialization and cleanup hooks.
50
+ */
51
+ export declare abstract class BaseCoordinator implements ICoordinator {
52
+ private _initialized;
53
+ /**
54
+ * Initialize the coordinator
55
+ *
56
+ * This can be called multiple times safely - it will only
57
+ * initialize once until cleanup() is called.
58
+ */
59
+ initialize(): void;
60
+ /**
61
+ * Cleanup the coordinator
62
+ *
63
+ * This can be called multiple times safely - cleanup will only
64
+ * occur if the coordinator is initialized.
65
+ */
66
+ cleanup(): void;
67
+ /**
68
+ * Check if the coordinator is initialized
69
+ */
70
+ get isInitialized(): boolean;
71
+ /**
72
+ * Hook called during initialization
73
+ *
74
+ * Subclasses should override this to perform their setup.
75
+ */
76
+ protected abstract onInitialize(): void;
77
+ /**
78
+ * Hook called during cleanup
79
+ *
80
+ * Subclasses should override this to perform their teardown.
81
+ */
82
+ protected abstract onCleanup(): void;
83
+ /**
84
+ * Assert that the coordinator is initialized
85
+ *
86
+ * Throws an error if not initialized.
87
+ */
88
+ protected assertInitialized(): void;
89
+ }
90
+ //# sourceMappingURL=coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../../src/shared/patterns/coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,UAAU,IAAI,IAAI,CAAC;IAEnB,4CAA4C;IAC5C,OAAO,IAAI,IAAI,CAAC;IAEhB,8CAA8C;IAC9C,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED;;;;GAIG;AACH,8BAAsB,eAAgB,YAAW,YAAY;IAC3D,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;;OAKG;IACH,UAAU,IAAI,IAAI;IAoBlB;;;;;OAKG;IACH,OAAO,IAAI,IAAI;IAiBf;;OAEG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI;IAEvC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI;IAEpC;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;CAOpC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Type-safe event emitter pattern
3
+ *
4
+ * Provides a strongly-typed pub/sub system for events.
5
+ * Supports both synchronous and asynchronous event handlers.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * interface MyEvents {
10
+ * 'user:login': { userId: string; timestamp: number };
11
+ * 'user:logout': { userId: string };
12
+ * 'data:update': { id: number; data: any };
13
+ * }
14
+ *
15
+ * const emitter = new EventEmitter<MyEvents>();
16
+ *
17
+ * // Subscribe
18
+ * emitter.on('user:login', (event) => {
19
+ * console.log(`User ${event.userId} logged in at ${event.timestamp}`);
20
+ * });
21
+ *
22
+ * // Emit
23
+ * emitter.emit('user:login', {
24
+ * userId: '123',
25
+ * timestamp: Date.now(),
26
+ * });
27
+ *
28
+ * // Unsubscribe
29
+ * emitter.off('user:login', handler);
30
+ * ```
31
+ */
32
+ export interface IEventEmitter<TEvents extends Record<string, any>> {
33
+ on<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): () => void;
34
+ once<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): () => void;
35
+ off<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): void;
36
+ emit<K extends keyof TEvents>(event: K, data: TEvents[K]): void;
37
+ removeAllListeners<K extends keyof TEvents>(event?: K): void;
38
+ listenerCount<K extends keyof TEvents>(event: K): number;
39
+ eventNames(): Array<keyof TEvents>;
40
+ setMaxListeners(n: number): void;
41
+ getMaxListeners(): number;
42
+ }
43
+ export declare class EventEmitter<TEvents extends Record<string, any>> implements IEventEmitter<TEvents> {
44
+ private listeners;
45
+ private onceListeners;
46
+ private maxListeners;
47
+ /**
48
+ * Subscribe to an event
49
+ * @param event - Event name
50
+ * @param handler - Event handler function
51
+ * @returns Unsubscribe function
52
+ */
53
+ on<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): () => void;
54
+ /**
55
+ * Subscribe to an event (fires only once)
56
+ * @param event - Event name
57
+ * @param handler - Event handler function
58
+ * @returns Unsubscribe function
59
+ */
60
+ once<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): () => void;
61
+ /**
62
+ * Unsubscribe from an event
63
+ * @param event - Event name
64
+ * @param handler - Event handler function to remove
65
+ */
66
+ off<K extends keyof TEvents>(event: K, handler: (data: TEvents[K]) => void): void;
67
+ /**
68
+ * Remove a once listener
69
+ * @param event - Event name
70
+ * @param handler - Event handler function to remove
71
+ */
72
+ private offOnce;
73
+ /**
74
+ * Emit an event
75
+ * @param event - Event name
76
+ * @param data - Event data
77
+ */
78
+ emit<K extends keyof TEvents>(event: K, data: TEvents[K]): void;
79
+ /**
80
+ * Remove all listeners for an event (or all events if no event specified)
81
+ * @param event - Optional event name
82
+ */
83
+ removeAllListeners<K extends keyof TEvents>(event?: K): void;
84
+ /**
85
+ * Get the number of listeners for an event
86
+ * @param event - Event name
87
+ * @returns Number of listeners
88
+ */
89
+ listenerCount<K extends keyof TEvents>(event: K): number;
90
+ /**
91
+ * Get all event names that have listeners
92
+ * @returns Array of event names
93
+ */
94
+ eventNames(): Array<keyof TEvents>;
95
+ /**
96
+ * Set the maximum number of listeners per event
97
+ * @param n - Maximum number of listeners
98
+ */
99
+ setMaxListeners(n: number): void;
100
+ /**
101
+ * Get the maximum number of listeners per event
102
+ * @returns Maximum number of listeners
103
+ */
104
+ getMaxListeners(): number;
105
+ }
106
+ //# sourceMappingURL=event-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../../../src/shared/patterns/event-emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAChE,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACvF,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACzF,GAAG,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAClF,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChE,kBAAkB,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAC7D,aAAa,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IACzD,UAAU,IAAI,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC;IACnC,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,IAAI,MAAM,CAAC;CAC3B;AAED,qBAAa,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,YAAW,aAAa,CAAC,OAAO,CAAC;IAC9F,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,aAAa,CAAgD;IACrE,OAAO,CAAC,YAAY,CAAO;IAE3B;;;;;OAKG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EACxB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAClC,MAAM,IAAI;IAmBb;;;;;OAKG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAC1B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAClC,MAAM,IAAI;IAWb;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,OAAO,EACzB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAClC,IAAI;IAUP;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAaf;;;;OAIG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IA4B/D;;;OAGG;IACH,kBAAkB,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;IAU5D;;;;OAIG;IACH,aAAa,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM;IAMxD;;;OAGG;IACH,UAAU,IAAI,KAAK,CAAC,MAAM,OAAO,CAAC;IAWlC;;;OAGG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhC;;;OAGG;IACH,eAAe,IAAI,MAAM;CAG1B"}