@zengrid/core 1.0.2 → 1.0.4

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 +2 -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 +2 -2
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Column Store interfaces for ZenGrid
3
+ * Column-oriented storage using typed arrays for performance
4
+ */
5
+ /**
6
+ * Supported column data types
7
+ */
8
+ export type ColumnType = 'int32' | 'float64' | 'string' | 'boolean';
9
+ /**
10
+ * Aggregation operations
11
+ */
12
+ export type AggregateOperation = 'sum' | 'avg' | 'min' | 'max' | 'count';
13
+ /**
14
+ * Column definition
15
+ */
16
+ export interface ColumnDefinition {
17
+ /** Column name/identifier */
18
+ name: string;
19
+ /** Data type */
20
+ type: ColumnType;
21
+ /** Default value for new rows */
22
+ defaultValue?: any;
23
+ }
24
+ /**
25
+ * Aggregation result
26
+ */
27
+ export interface AggregationResult {
28
+ operation: AggregateOperation;
29
+ column: string;
30
+ value: number;
31
+ count: number;
32
+ }
33
+ /**
34
+ * Column Store interface
35
+ *
36
+ * Column-oriented storage for dense grid data.
37
+ * Uses typed arrays (Float64Array, Int32Array) for numeric columns for better performance.
38
+ */
39
+ export interface ColumnStore {
40
+ /**
41
+ * Add a new column
42
+ * @param definition - Column definition
43
+ * @complexity O(n) where n = rowCount
44
+ */
45
+ addColumn(definition: ColumnDefinition): void;
46
+ /**
47
+ * Remove a column
48
+ * @param columnName - Column to remove
49
+ * @returns true if column existed and was removed
50
+ * @complexity O(1)
51
+ */
52
+ removeColumn(columnName: string): boolean;
53
+ /**
54
+ * Check if column exists
55
+ * @param columnName - Column name
56
+ * @complexity O(1)
57
+ */
58
+ hasColumn(columnName: string): boolean;
59
+ /**
60
+ * Get value at (row, column)
61
+ * @param row - Row index
62
+ * @param columnName - Column name
63
+ * @returns Value or undefined if out of bounds
64
+ * @complexity O(1)
65
+ */
66
+ getValue(row: number, columnName: string): any;
67
+ /**
68
+ * Set value at (row, column)
69
+ * @param row - Row index
70
+ * @param columnName - Column name
71
+ * @param value - Value to set
72
+ * @complexity O(1)
73
+ */
74
+ setValue(row: number, columnName: string, value: any): void;
75
+ /**
76
+ * Get entire row as object
77
+ * @param row - Row index
78
+ * @returns Object with column names as keys
79
+ * @complexity O(c) where c = number of columns
80
+ */
81
+ getRow(row: number): Record<string, any>;
82
+ /**
83
+ * Set multiple values in a row
84
+ * @param row - Row index
85
+ * @param values - Object with column names and values
86
+ * @complexity O(k) where k = Object.keys(values).length
87
+ */
88
+ setRow(row: number, values: Record<string, any>): void;
89
+ /**
90
+ * Get entire column as array
91
+ * @param columnName - Column name
92
+ * @returns Copy of column data
93
+ * @complexity O(n) where n = rowCount
94
+ */
95
+ getColumn(columnName: string): any[];
96
+ /**
97
+ * Set entire column
98
+ * @param columnName - Column name
99
+ * @param values - Array of values (length must match rowCount)
100
+ * @complexity O(n)
101
+ */
102
+ setColumn(columnName: string, values: any[]): void;
103
+ /**
104
+ * Perform aggregation on a column
105
+ * @param columnName - Column to aggregate
106
+ * @param operation - Aggregation operation
107
+ * @returns Aggregation result
108
+ * @complexity O(n)
109
+ */
110
+ aggregate(columnName: string, operation: AggregateOperation): AggregationResult;
111
+ /**
112
+ * Add new rows (expand capacity)
113
+ * @param count - Number of rows to add
114
+ * @complexity O(n * c) where n = count, c = columns
115
+ */
116
+ addRows(count: number): void;
117
+ /**
118
+ * Clear all data but keep column definitions
119
+ * @complexity O(c) where c = number of columns
120
+ */
121
+ clear(): void;
122
+ /**
123
+ * Number of rows
124
+ */
125
+ readonly rowCount: number;
126
+ /**
127
+ * Number of columns
128
+ */
129
+ readonly columnCount: number;
130
+ /**
131
+ * Column names
132
+ */
133
+ readonly columns: ReadonlyArray<string>;
134
+ }
135
+ /**
136
+ * Options for creating a ColumnStore
137
+ */
138
+ export interface ColumnStoreOptions {
139
+ /**
140
+ * Initial row count
141
+ * @default 0
142
+ */
143
+ rowCount?: number;
144
+ /**
145
+ * Column definitions
146
+ * @default []
147
+ */
148
+ columns?: ColumnDefinition[];
149
+ /**
150
+ * Whether to grow automatically when accessing rows beyond rowCount
151
+ * @default false
152
+ */
153
+ autoGrow?: boolean;
154
+ }
155
+ //# sourceMappingURL=column-store.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-store.interface.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/column-store/column-store.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,iCAAiC;IACjC,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE9C;;;;;OAKG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAE1C;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC;IAE/C;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAE5D;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAEvD;;;;;OAKG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;IAErC;;;;;OAKG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEnD;;;;;;OAMG;IACH,SAAS,CACP,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,kBAAkB,GAC5B,iBAAiB,CAAC;IAErB;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Column Store - Column-oriented storage with typed arrays
3
+ */
4
+ export { ColumnStore } from './column-store';
5
+ export type { ColumnStore as IColumnStore, ColumnStoreOptions, ColumnDefinition, ColumnType, AggregateOperation, AggregationResult, } from './column-store.interface';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/column-store/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACV,WAAW,IAAI,YAAY,EAC3B,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,61 @@
1
+ import type { ICommand, ICommandStack, ICommandStackOptions } from './command-stack.interface';
2
+ /**
3
+ * Implementation of a command stack for undo/redo functionality.
4
+ *
5
+ * Time Complexity:
6
+ * - execute: O(1)
7
+ * - undo: O(1)
8
+ * - redo: O(1)
9
+ * - canUndo/canRedo: O(1)
10
+ * - clear: O(1)
11
+ *
12
+ * Space Complexity: O(n) where n is the number of commands (up to maxSize)
13
+ */
14
+ export declare class CommandStack implements ICommandStack {
15
+ private undoStack;
16
+ private redoStack;
17
+ private readonly maxSize;
18
+ constructor(options?: ICommandStackOptions);
19
+ /**
20
+ * Executes a command and adds it to the undo stack.
21
+ * Clears the redo stack as new actions invalidate the redo history.
22
+ */
23
+ execute(command: ICommand): void;
24
+ /**
25
+ * Undoes the last executed command.
26
+ */
27
+ undo(): boolean;
28
+ /**
29
+ * Redoes the last undone command.
30
+ */
31
+ redo(): boolean;
32
+ /**
33
+ * Checks if there are commands that can be undone.
34
+ */
35
+ canUndo(): boolean;
36
+ /**
37
+ * Checks if there are commands that can be redone.
38
+ */
39
+ canRedo(): boolean;
40
+ /**
41
+ * Clears all commands from both stacks.
42
+ */
43
+ clear(): void;
44
+ /**
45
+ * Gets the number of commands in the undo stack.
46
+ */
47
+ getUndoCount(): number;
48
+ /**
49
+ * Gets the number of commands in the redo stack.
50
+ */
51
+ getRedoCount(): number;
52
+ /**
53
+ * Gets the descriptions of all commands in the undo stack.
54
+ */
55
+ getUndoHistory(): string[];
56
+ /**
57
+ * Gets the descriptions of all commands in the redo stack.
58
+ */
59
+ getRedoHistory(): string[];
60
+ }
61
+ //# sourceMappingURL=command-stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-stack.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/command-stack/command-stack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAEnC;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,GAAE,oBAAyB;IAQ9C;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAehC;;OAEG;IACH,IAAI,IAAI,OAAO;IAYf;;OAEG;IACH,IAAI,IAAI,OAAO;IAmBf;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAM1B;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;CAK3B"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Represents a command that can be executed, undone, and redone.
3
+ */
4
+ export interface ICommand {
5
+ /**
6
+ * Executes the command.
7
+ */
8
+ execute(): void;
9
+ /**
10
+ * Undoes the command.
11
+ */
12
+ undo(): void;
13
+ /**
14
+ * Redoes the command (default implementation calls execute).
15
+ */
16
+ redo?(): void;
17
+ /**
18
+ * Optional description of the command for debugging.
19
+ */
20
+ description?: string;
21
+ }
22
+ /**
23
+ * Configuration options for CommandStack.
24
+ */
25
+ export interface ICommandStackOptions {
26
+ /**
27
+ * Maximum number of commands to keep in history.
28
+ * @default 100
29
+ */
30
+ maxSize?: number;
31
+ }
32
+ /**
33
+ * Interface for a command stack that supports undo/redo operations.
34
+ */
35
+ export interface ICommandStack {
36
+ /**
37
+ * Executes a command and adds it to the undo stack.
38
+ * Clears the redo stack.
39
+ */
40
+ execute(command: ICommand): void;
41
+ /**
42
+ * Undoes the last executed command.
43
+ * @returns true if a command was undone, false otherwise
44
+ */
45
+ undo(): boolean;
46
+ /**
47
+ * Redoes the last undone command.
48
+ * @returns true if a command was redone, false otherwise
49
+ */
50
+ redo(): boolean;
51
+ /**
52
+ * Checks if there are commands that can be undone.
53
+ */
54
+ canUndo(): boolean;
55
+ /**
56
+ * Checks if there are commands that can be redone.
57
+ */
58
+ canRedo(): boolean;
59
+ /**
60
+ * Clears all commands from the stack.
61
+ */
62
+ clear(): void;
63
+ /**
64
+ * Gets the number of commands in the undo stack.
65
+ */
66
+ getUndoCount(): number;
67
+ /**
68
+ * Gets the number of commands in the redo stack.
69
+ */
70
+ getRedoCount(): number;
71
+ /**
72
+ * Gets the descriptions of all commands in the undo stack.
73
+ */
74
+ getUndoHistory(): string[];
75
+ /**
76
+ * Gets the descriptions of all commands in the redo stack.
77
+ */
78
+ getRedoHistory(): string[];
79
+ }
80
+ //# sourceMappingURL=command-stack.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-stack.interface.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/command-stack/command-stack.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;OAEG;IACH,IAAI,CAAC,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEjC;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC;IAEhB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC;IAEhB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC;IAEnB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC;IAEnB;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC;IAEvB;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC;IAEvB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE,CAAC;IAE3B;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE,CAAC;CAC5B"}
@@ -0,0 +1,3 @@
1
+ export * from './command-stack';
2
+ export * from './command-stack.interface';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/command-stack/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,147 @@
1
+ import type { IDependencyGraph, NodeId, DependencyGraphOptions, TopologicalSortResult, GraphStats } from './dependency-graph.interface';
2
+ /**
3
+ * Dependency Graph (Directed Acyclic Graph)
4
+ *
5
+ * A graph structure for tracking dependencies between nodes.
6
+ * Optimized for formula calculation order and cycle detection.
7
+ *
8
+ * **Time Complexity:**
9
+ * - Add node: O(1)
10
+ * - Add edge: O(1) without cycle check, O(V + E) with cycle check
11
+ * - Remove node: O(E) where E = edges connected to node
12
+ * - Topological sort: O(V + E) using Kahn's algorithm
13
+ * - Cycle detection: O(V + E) using DFS
14
+ *
15
+ * **Space Complexity:** O(V + E)
16
+ *
17
+ * **Use Cases:**
18
+ * - Formula dependencies: =SUM(A1:A10) depends on cells A1 through A10
19
+ * - Calculation order: Calculate dependencies before dependents
20
+ * - Circular reference detection: =A1 in cell A1 is invalid
21
+ * - Dirty cell propagation: When B1 changes, recalculate all cells that depend on B1
22
+ *
23
+ * @example Basic Formula Dependencies
24
+ * ```typescript
25
+ * const graph = new DependencyGraph();
26
+ *
27
+ * // Cell A3 contains formula =A1+A2
28
+ * graph.addDependency('A3', 'A1'); // A3 depends on A1
29
+ * graph.addDependency('A3', 'A2'); // A3 depends on A2
30
+ *
31
+ * // Cell A4 contains formula =A3*2
32
+ * graph.addDependency('A4', 'A3'); // A4 depends on A3
33
+ *
34
+ * // Get calculation order
35
+ * const { order } = graph.topologicalSort();
36
+ * // order: ['A1', 'A2', 'A3', 'A4']
37
+ *
38
+ * // Detect circular reference
39
+ * const wouldCycle = graph.wouldCreateCycle('A1', 'A4');
40
+ * // wouldCycle: true (A4→A3→A1→A4 creates a cycle)
41
+ * ```
42
+ *
43
+ * @example Incremental Recalculation
44
+ * ```typescript
45
+ * // User changes cell B1
46
+ * const affectedCells = graph.getCalculationOrder(['B1']);
47
+ * // Returns: ['B1', 'C1', 'D1', ...] (all cells that transitively depend on B1)
48
+ *
49
+ * // Recalculate only affected cells in correct order
50
+ * affectedCells.forEach(cellId => {
51
+ * calculateCell(cellId);
52
+ * });
53
+ * ```
54
+ */
55
+ export declare class DependencyGraph implements IDependencyGraph {
56
+ /** Map of node → nodes it depends on */
57
+ private dependencies;
58
+ /** Map of node → nodes that depend on it */
59
+ private dependents;
60
+ private options;
61
+ constructor(options?: DependencyGraphOptions);
62
+ /**
63
+ * Add a node to the graph
64
+ */
65
+ addNode(id: NodeId): void;
66
+ /**
67
+ * Add a dependency edge (from depends on to)
68
+ *
69
+ * @param from - Dependent node
70
+ * @param to - Dependency node
71
+ * @returns true if edge was added, false if it would create a cycle
72
+ */
73
+ addDependency(from: NodeId, to: NodeId): boolean;
74
+ /**
75
+ * Remove a node and all its dependencies
76
+ */
77
+ removeNode(id: NodeId): boolean;
78
+ /**
79
+ * Remove a specific dependency
80
+ */
81
+ removeDependency(from: NodeId, to: NodeId): boolean;
82
+ /**
83
+ * Check if a node exists
84
+ */
85
+ hasNode(id: NodeId): boolean;
86
+ /**
87
+ * Check if a dependency exists
88
+ */
89
+ hasDependency(from: NodeId, to: NodeId): boolean;
90
+ /**
91
+ * Get direct dependencies of a node (what it depends on)
92
+ */
93
+ getDependencies(id: NodeId): NodeId[];
94
+ /**
95
+ * Get direct dependents of a node (what depends on it)
96
+ */
97
+ getDependents(id: NodeId): NodeId[];
98
+ /**
99
+ * Get all transitive dependencies (recursive)
100
+ */
101
+ getTransitiveDependencies(id: NodeId): NodeId[];
102
+ /**
103
+ * Get all transitive dependents (recursive)
104
+ */
105
+ getTransitiveDependents(id: NodeId): NodeId[];
106
+ /**
107
+ * Check if adding a dependency would create a cycle
108
+ *
109
+ * Uses DFS to detect if there's a path from 'to' back to 'from'
110
+ */
111
+ wouldCreateCycle(from: NodeId, to: NodeId): boolean;
112
+ /**
113
+ * Detect all cycles in the graph using DFS
114
+ */
115
+ detectCycles(): NodeId[][];
116
+ /**
117
+ * Perform topological sort using Kahn's algorithm
118
+ *
119
+ * Returns nodes in dependency order (dependencies before dependents)
120
+ */
121
+ topologicalSort(): TopologicalSortResult;
122
+ /**
123
+ * Get calculation order for incremental updates
124
+ *
125
+ * Returns all nodes that need to be recalculated when the given nodes change,
126
+ * in the correct calculation order.
127
+ */
128
+ getCalculationOrder(changedNodes: NodeId[]): NodeId[];
129
+ /**
130
+ * Clear all nodes and edges
131
+ */
132
+ clear(): void;
133
+ /**
134
+ * Get all nodes
135
+ */
136
+ getAllNodes(): NodeId[];
137
+ /**
138
+ * Get statistics about the graph
139
+ */
140
+ getStats(): GraphStats;
141
+ /**
142
+ * Clone the graph
143
+ */
144
+ clone(): IDependencyGraph;
145
+ private calculateDepth;
146
+ }
147
+ //# sourceMappingURL=dependency-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/dependency-graph/dependency-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,MAAM,EACN,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,EACX,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,wCAAwC;IACxC,OAAO,CAAC,YAAY,CAAuC;IAE3D,4CAA4C;IAC5C,OAAO,CAAC,UAAU,CAAuC;IAEzD,OAAO,CAAC,OAAO,CAAmC;gBAEtC,OAAO,GAAE,sBAA2B;IAOhD;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAOzB;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IA4BhD;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAsB/B;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IASnD;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAIhD;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAIrC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAInC;;OAEG;IACH,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAqB/C;;OAEG;IACH,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAqB7C;;;;OAIG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IA0BnD;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE,EAAE;IAsC1B;;;;OAIG;IACH,eAAe,IAAI,qBAAqB;IAuDxC;;;;;OAKG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAmCrD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACH,QAAQ,IAAI,UAAU;IA+BtB;;OAEG;IACH,KAAK,IAAI,gBAAgB;IAoBzB,OAAO,CAAC,cAAc;CAoBvB"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Dependency Graph (DAG) Interface
3
+ *
4
+ * Used for:
5
+ * - Formula dependency tracking (cell A1 depends on B1, C1)
6
+ * - Topological sorting for calculation order
7
+ * - Cycle detection to prevent circular references
8
+ * - Dirty cell tracking for incremental recalculation
9
+ */
10
+ /**
11
+ * Graph node identifier
12
+ */
13
+ export type NodeId = string | number;
14
+ /**
15
+ * Dependency relationship
16
+ */
17
+ export interface Dependency {
18
+ /**
19
+ * Source node (dependent)
20
+ */
21
+ from: NodeId;
22
+ /**
23
+ * Target node (dependency)
24
+ */
25
+ to: NodeId;
26
+ }
27
+ /**
28
+ * Topological sort result
29
+ */
30
+ export interface TopologicalSortResult {
31
+ /**
32
+ * Sorted nodes in dependency order
33
+ */
34
+ order: NodeId[];
35
+ /**
36
+ * Whether the graph has cycles
37
+ */
38
+ hasCycle: boolean;
39
+ /**
40
+ * Nodes involved in cycles (if any)
41
+ */
42
+ cycleNodes: NodeId[];
43
+ }
44
+ /**
45
+ * Graph statistics
46
+ */
47
+ export interface GraphStats {
48
+ /**
49
+ * Total number of nodes
50
+ */
51
+ nodeCount: number;
52
+ /**
53
+ * Total number of edges (dependencies)
54
+ */
55
+ edgeCount: number;
56
+ /**
57
+ * Nodes with no dependencies (sources)
58
+ */
59
+ sourceCount: number;
60
+ /**
61
+ * Nodes with no dependents (sinks)
62
+ */
63
+ sinkCount: number;
64
+ /**
65
+ * Maximum dependency chain length
66
+ */
67
+ maxDepth: number;
68
+ }
69
+ /**
70
+ * Dependency Graph options
71
+ */
72
+ export interface DependencyGraphOptions {
73
+ /**
74
+ * Allow self-loops (node depending on itself)
75
+ * @default false
76
+ */
77
+ allowSelfLoops?: boolean;
78
+ /**
79
+ * Throw error on cycle detection
80
+ * @default false
81
+ */
82
+ throwOnCycle?: boolean;
83
+ }
84
+ /**
85
+ * Dependency Graph interface
86
+ */
87
+ export interface IDependencyGraph {
88
+ /**
89
+ * Add a node to the graph
90
+ */
91
+ addNode(id: NodeId): void;
92
+ /**
93
+ * Add a dependency edge (from depends on to)
94
+ */
95
+ addDependency(from: NodeId, to: NodeId): boolean;
96
+ /**
97
+ * Remove a node and all its dependencies
98
+ */
99
+ removeNode(id: NodeId): boolean;
100
+ /**
101
+ * Remove a specific dependency
102
+ */
103
+ removeDependency(from: NodeId, to: NodeId): boolean;
104
+ /**
105
+ * Check if a node exists
106
+ */
107
+ hasNode(id: NodeId): boolean;
108
+ /**
109
+ * Check if a dependency exists
110
+ */
111
+ hasDependency(from: NodeId, to: NodeId): boolean;
112
+ /**
113
+ * Get all dependencies of a node (what it depends on)
114
+ */
115
+ getDependencies(id: NodeId): NodeId[];
116
+ /**
117
+ * Get all dependents of a node (what depends on it)
118
+ */
119
+ getDependents(id: NodeId): NodeId[];
120
+ /**
121
+ * Get all transitive dependencies (recursive)
122
+ */
123
+ getTransitiveDependencies(id: NodeId): NodeId[];
124
+ /**
125
+ * Get all transitive dependents (recursive)
126
+ */
127
+ getTransitiveDependents(id: NodeId): NodeId[];
128
+ /**
129
+ * Detect if adding a dependency would create a cycle
130
+ */
131
+ wouldCreateCycle(from: NodeId, to: NodeId): boolean;
132
+ /**
133
+ * Detect all cycles in the graph
134
+ */
135
+ detectCycles(): NodeId[][];
136
+ /**
137
+ * Perform topological sort
138
+ */
139
+ topologicalSort(): TopologicalSortResult;
140
+ /**
141
+ * Get calculation order for incremental updates
142
+ */
143
+ getCalculationOrder(changedNodes: NodeId[]): NodeId[];
144
+ /**
145
+ * Clear all nodes and edges
146
+ */
147
+ clear(): void;
148
+ /**
149
+ * Get all nodes
150
+ */
151
+ getAllNodes(): NodeId[];
152
+ /**
153
+ * Get statistics about the graph
154
+ */
155
+ getStats(): GraphStats;
156
+ /**
157
+ * Clone the graph
158
+ */
159
+ clone(): IDependencyGraph;
160
+ }
161
+ //# sourceMappingURL=dependency-graph.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.interface.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/dependency-graph/dependency-graph.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAEjD;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAEhC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpD;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAE7B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAEjD;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEpC;;OAEG;IACH,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEhD;;OAEG;IACH,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE9C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpD;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE,EAAE,CAAC;IAE3B;;OAEG;IACH,eAAe,IAAI,qBAAqB,CAAC;IAEzC;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAEtD;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE,CAAC;IAExB;;OAEG;IACH,QAAQ,IAAI,UAAU,CAAC;IAEvB;;OAEG;IACH,KAAK,IAAI,gBAAgB,CAAC;CAC3B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Dependency Graph (DAG) data structure
3
+ *
4
+ * Used for formula dependency tracking, cycle detection, and calculation ordering.
5
+ */
6
+ export { DependencyGraph } from './dependency-graph';
7
+ export type { IDependencyGraph, NodeId, Dependency, DependencyGraphOptions, TopologicalSortResult, GraphStats, } from './dependency-graph.interface';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/data-structures/dependency-graph/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,GACX,MAAM,8BAA8B,CAAC"}