@ricsam/formula-engine 0.0.3 → 0.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 (381) hide show
  1. package/dist/cjs/core/engine.cjs +12 -8
  2. package/dist/cjs/core/engine.cjs.map +3 -3
  3. package/dist/cjs/core/managers/dependency-manager.cjs +8 -8
  4. package/dist/cjs/core/managers/dependency-manager.cjs.map +3 -3
  5. package/dist/cjs/core/managers/evaluation-manager.cjs +10 -10
  6. package/dist/cjs/core/managers/evaluation-manager.cjs.map +2 -2
  7. package/dist/cjs/core/managers/frontier-dependency-manager.cjs.map +1 -1
  8. package/dist/cjs/core/managers/isDependencyNode.cjs +6 -6
  9. package/dist/cjs/core/managers/isDependencyNode.cjs.map +2 -2
  10. package/dist/cjs/core/managers/named-expression-manager.cjs.map +1 -1
  11. package/dist/cjs/core/managers/range-eval-order-builder.cjs +2 -2
  12. package/dist/cjs/core/managers/range-eval-order-builder.cjs.map +3 -3
  13. package/dist/cjs/core/managers/workbook-manager.cjs +3 -3
  14. package/dist/cjs/core/managers/workbook-manager.cjs.map +2 -2
  15. package/dist/cjs/core/types.cjs.map +2 -2
  16. package/dist/cjs/core/utils.cjs +2 -2
  17. package/dist/cjs/core/utils.cjs.map +2 -2
  18. package/dist/cjs/evaluator/arithmetic/add/add.cjs +2 -2
  19. package/dist/cjs/evaluator/arithmetic/add/add.cjs.map +2 -2
  20. package/dist/cjs/evaluator/arithmetic/divide/divide.cjs +2 -2
  21. package/dist/cjs/evaluator/arithmetic/divide/divide.cjs.map +2 -2
  22. package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs +2 -2
  23. package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs.map +2 -2
  24. package/dist/cjs/evaluator/arithmetic/power/power.cjs +2 -2
  25. package/dist/cjs/evaluator/arithmetic/power/power.cjs.map +2 -2
  26. package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs +2 -2
  27. package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs.map +2 -2
  28. package/dist/cjs/evaluator/comparison/equals.cjs.map +1 -1
  29. package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs +2 -2
  30. package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs.map +2 -2
  31. package/dist/cjs/evaluator/comparison/greater-than.cjs +2 -2
  32. package/dist/cjs/evaluator/comparison/greater-than.cjs.map +2 -2
  33. package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs +2 -2
  34. package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs.map +2 -2
  35. package/dist/cjs/evaluator/comparison/less-than.cjs +2 -2
  36. package/dist/cjs/evaluator/comparison/less-than.cjs.map +2 -2
  37. package/dist/cjs/evaluator/comparison/not-equals.cjs +2 -2
  38. package/dist/cjs/evaluator/comparison/not-equals.cjs.map +2 -2
  39. package/dist/cjs/evaluator/concatenation/concatenate.cjs +2 -2
  40. package/dist/cjs/evaluator/concatenation/concatenate.cjs.map +2 -2
  41. package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs +2 -2
  42. package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs.map +2 -2
  43. package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs.map +2 -2
  44. package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs +2 -2
  45. package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs.map +2 -2
  46. package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs +3 -3
  47. package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs.map +2 -2
  48. package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs +2 -2
  49. package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs.map +2 -2
  50. package/dist/cjs/evaluator/evaluate-scalar-operator.cjs.map +1 -1
  51. package/dist/cjs/evaluator/evaluation-context.cjs.map +2 -2
  52. package/dist/cjs/evaluator/evaluation-error.cjs.map +1 -1
  53. package/dist/cjs/evaluator/formula-evaluator.cjs +6 -6
  54. package/dist/cjs/evaluator/formula-evaluator.cjs.map +3 -3
  55. package/dist/cjs/evaluator/range-evaluation-node.cjs +3 -3
  56. package/dist/cjs/evaluator/range-evaluation-node.cjs.map +2 -2
  57. package/dist/cjs/functions/_template/template.cjs.map +1 -1
  58. package/dist/cjs/functions/array/sequence/sequence.cjs +4 -4
  59. package/dist/cjs/functions/array/sequence/sequence.cjs.map +2 -2
  60. package/dist/cjs/functions/criteria-parser.cjs.map +1 -1
  61. package/dist/cjs/functions/criteria-utils.cjs +4 -4
  62. package/dist/cjs/functions/criteria-utils.cjs.map +3 -3
  63. package/dist/cjs/functions/{index.cjs → function-registry.cjs} +5 -5
  64. package/dist/cjs/functions/function-registry.cjs.map +10 -0
  65. package/dist/cjs/functions/function-utils.cjs.map +1 -1
  66. package/dist/cjs/functions/information/cell/cell.cjs +3 -3
  67. package/dist/cjs/functions/information/cell/cell.cjs.map +2 -2
  68. package/dist/cjs/functions/information/column/column.cjs +4 -4
  69. package/dist/cjs/functions/information/column/column.cjs.map +2 -2
  70. package/dist/cjs/functions/information/row/row.cjs +4 -4
  71. package/dist/cjs/functions/information/row/row.cjs.map +2 -2
  72. package/dist/cjs/functions/logical/and/and.cjs +2 -2
  73. package/dist/cjs/functions/logical/and/and.cjs.map +2 -2
  74. package/dist/cjs/functions/logical/if/if.cjs +2 -2
  75. package/dist/cjs/functions/logical/if/if.cjs.map +3 -3
  76. package/dist/cjs/functions/logical/iferror/iferror.cjs +3 -3
  77. package/dist/cjs/functions/logical/iferror/iferror.cjs.map +2 -2
  78. package/dist/cjs/functions/logical/or/or.cjs +2 -2
  79. package/dist/cjs/functions/logical/or/or.cjs.map +2 -2
  80. package/dist/cjs/functions/lookup/count/count-utils.cjs.map +1 -1
  81. package/dist/cjs/functions/lookup/count/count.cjs +2 -2
  82. package/dist/cjs/functions/lookup/count/count.cjs.map +2 -2
  83. package/dist/cjs/functions/lookup/count/countif.cjs +2 -2
  84. package/dist/cjs/functions/lookup/count/countif.cjs.map +2 -2
  85. package/dist/cjs/functions/lookup/count/countifs.cjs.map +1 -1
  86. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs +2 -2
  87. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs.map +2 -2
  88. package/dist/cjs/functions/lookup/match/match.cjs +2 -2
  89. package/dist/cjs/functions/lookup/match/match.cjs.map +2 -2
  90. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs +2 -2
  91. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs.map +2 -2
  92. package/dist/cjs/functions/math/average/average-utils.cjs +2 -2
  93. package/dist/cjs/functions/math/average/average-utils.cjs.map +2 -2
  94. package/dist/cjs/functions/math/average/average.cjs +2 -2
  95. package/dist/cjs/functions/math/average/average.cjs.map +2 -2
  96. package/dist/cjs/functions/math/average/averageif.cjs +3 -3
  97. package/dist/cjs/functions/math/average/averageif.cjs.map +3 -3
  98. package/dist/cjs/functions/math/average/averageifs.cjs.map +2 -2
  99. package/dist/cjs/functions/math/ceiling/ceiling.cjs +2 -2
  100. package/dist/cjs/functions/math/ceiling/ceiling.cjs.map +3 -3
  101. package/dist/cjs/functions/math/max/max-utils.cjs +2 -2
  102. package/dist/cjs/functions/math/max/max-utils.cjs.map +2 -2
  103. package/dist/cjs/functions/math/max/max.cjs +2 -2
  104. package/dist/cjs/functions/math/max/max.cjs.map +2 -2
  105. package/dist/cjs/functions/math/max/maxif.cjs +2 -2
  106. package/dist/cjs/functions/math/max/maxif.cjs.map +2 -2
  107. package/dist/cjs/functions/math/max/maxifs.cjs.map +2 -2
  108. package/dist/cjs/functions/math/min/min-utils.cjs +2 -2
  109. package/dist/cjs/functions/math/min/min-utils.cjs.map +2 -2
  110. package/dist/cjs/functions/math/min/min.cjs +2 -2
  111. package/dist/cjs/functions/math/min/min.cjs.map +3 -3
  112. package/dist/cjs/functions/math/min/minif.cjs +2 -2
  113. package/dist/cjs/functions/math/min/minif.cjs.map +2 -2
  114. package/dist/cjs/functions/math/min/minifs.cjs.map +2 -2
  115. package/dist/cjs/functions/math/sum/sum.cjs +2 -2
  116. package/dist/cjs/functions/math/sum/sum.cjs.map +2 -2
  117. package/dist/cjs/functions/math/sum/sumif.cjs +2 -2
  118. package/dist/cjs/functions/math/sum/sumif.cjs.map +2 -2
  119. package/dist/cjs/functions/math/sum/sumifs.cjs.map +2 -2
  120. package/dist/cjs/functions/math/sum/summation-utils.cjs.map +1 -1
  121. package/dist/cjs/functions/reference/address/address.cjs +2 -2
  122. package/dist/cjs/functions/reference/address/address.cjs.map +2 -2
  123. package/dist/cjs/functions/reference/indirect/indirect.cjs +3 -3
  124. package/dist/cjs/functions/reference/indirect/indirect.cjs.map +3 -3
  125. package/dist/cjs/functions/reference/offset/offset.cjs +3 -3
  126. package/dist/cjs/functions/reference/offset/offset.cjs.map +2 -2
  127. package/dist/cjs/functions/text/concatenate/concatenate.cjs +2 -2
  128. package/dist/cjs/functions/text/concatenate/concatenate.cjs.map +2 -2
  129. package/dist/cjs/functions/text/exact/exact.cjs +2 -2
  130. package/dist/cjs/functions/text/exact/exact.cjs.map +2 -2
  131. package/dist/cjs/functions/text/find/find.cjs +2 -2
  132. package/dist/cjs/functions/text/find/find.cjs.map +3 -3
  133. package/dist/cjs/functions/text/left/left.cjs +2 -2
  134. package/dist/cjs/functions/text/left/left.cjs.map +2 -2
  135. package/dist/cjs/functions/text/len/len.cjs +2 -2
  136. package/dist/cjs/functions/text/len/len.cjs.map +3 -3
  137. package/dist/cjs/functions/text/mid/mid.cjs +2 -2
  138. package/dist/cjs/functions/text/mid/mid.cjs.map +2 -2
  139. package/dist/cjs/functions/text/right/right.cjs +2 -2
  140. package/dist/cjs/functions/text/right/right.cjs.map +3 -3
  141. package/dist/cjs/functions/text/text-helpers.cjs +2 -2
  142. package/dist/cjs/functions/text/text-helpers.cjs.map +2 -2
  143. package/dist/cjs/functions/text/textjoin/textjoin.cjs +2 -2
  144. package/dist/cjs/functions/text/textjoin/textjoin.cjs.map +3 -3
  145. package/dist/cjs/package.json +1 -1
  146. package/dist/cjs/parser/formatter.cjs +2 -2
  147. package/dist/cjs/parser/formatter.cjs.map +2 -2
  148. package/dist/mjs/core/engine.mjs +7 -9
  149. package/dist/mjs/core/engine.mjs.map +3 -3
  150. package/dist/mjs/core/managers/dependency-manager.mjs +8 -8
  151. package/dist/mjs/core/managers/dependency-manager.mjs.map +3 -3
  152. package/dist/mjs/core/managers/evaluation-manager.mjs +10 -10
  153. package/dist/mjs/core/managers/evaluation-manager.mjs.map +2 -2
  154. package/dist/mjs/core/managers/frontier-dependency-manager.mjs.map +1 -1
  155. package/dist/mjs/core/managers/isDependencyNode.mjs +6 -6
  156. package/dist/mjs/core/managers/isDependencyNode.mjs.map +2 -2
  157. package/dist/mjs/core/managers/named-expression-manager.mjs.map +1 -1
  158. package/dist/mjs/core/managers/range-eval-order-builder.mjs +2 -2
  159. package/dist/mjs/core/managers/range-eval-order-builder.mjs.map +3 -3
  160. package/dist/mjs/core/managers/workbook-manager.mjs +3 -3
  161. package/dist/mjs/core/managers/workbook-manager.mjs.map +2 -2
  162. package/dist/mjs/core/types.mjs.map +2 -2
  163. package/dist/mjs/core/utils.mjs +2 -2
  164. package/dist/mjs/core/utils.mjs.map +2 -2
  165. package/dist/mjs/evaluator/arithmetic/add/add.mjs +2 -2
  166. package/dist/mjs/evaluator/arithmetic/add/add.mjs.map +2 -2
  167. package/dist/mjs/evaluator/arithmetic/divide/divide.mjs +2 -2
  168. package/dist/mjs/evaluator/arithmetic/divide/divide.mjs.map +2 -2
  169. package/dist/mjs/evaluator/arithmetic/multiply/multiply.mjs +2 -2
  170. package/dist/mjs/evaluator/arithmetic/multiply/multiply.mjs.map +2 -2
  171. package/dist/mjs/evaluator/arithmetic/power/power.mjs +2 -2
  172. package/dist/mjs/evaluator/arithmetic/power/power.mjs.map +2 -2
  173. package/dist/mjs/evaluator/arithmetic/subtract/subtract.mjs +2 -2
  174. package/dist/mjs/evaluator/arithmetic/subtract/subtract.mjs.map +2 -2
  175. package/dist/mjs/evaluator/comparison/equals.mjs.map +1 -1
  176. package/dist/mjs/evaluator/comparison/greater-than-or-equal.mjs +2 -2
  177. package/dist/mjs/evaluator/comparison/greater-than-or-equal.mjs.map +2 -2
  178. package/dist/mjs/evaluator/comparison/greater-than.mjs +2 -2
  179. package/dist/mjs/evaluator/comparison/greater-than.mjs.map +2 -2
  180. package/dist/mjs/evaluator/comparison/less-than-or-equal.mjs +2 -2
  181. package/dist/mjs/evaluator/comparison/less-than-or-equal.mjs.map +2 -2
  182. package/dist/mjs/evaluator/comparison/less-than.mjs +2 -2
  183. package/dist/mjs/evaluator/comparison/less-than.mjs.map +2 -2
  184. package/dist/mjs/evaluator/comparison/not-equals.mjs +2 -2
  185. package/dist/mjs/evaluator/comparison/not-equals.mjs.map +2 -2
  186. package/dist/mjs/evaluator/concatenation/concatenate.mjs +2 -2
  187. package/dist/mjs/evaluator/concatenation/concatenate.mjs.map +2 -2
  188. package/dist/mjs/evaluator/dependency-nodes/ast-evaluation-node.mjs +2 -2
  189. package/dist/mjs/evaluator/dependency-nodes/ast-evaluation-node.mjs.map +2 -2
  190. package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs.map +2 -2
  191. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs +2 -2
  192. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs.map +2 -2
  193. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs +3 -3
  194. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs.map +2 -2
  195. package/dist/mjs/evaluator/dependency-nodes/spill-meta-node.mjs +2 -2
  196. package/dist/mjs/evaluator/dependency-nodes/spill-meta-node.mjs.map +2 -2
  197. package/dist/mjs/evaluator/evaluate-scalar-operator.mjs.map +1 -1
  198. package/dist/mjs/evaluator/evaluation-context.mjs.map +2 -2
  199. package/dist/mjs/evaluator/evaluation-error.mjs.map +1 -1
  200. package/dist/mjs/evaluator/formula-evaluator.mjs +7 -7
  201. package/dist/mjs/evaluator/formula-evaluator.mjs.map +3 -3
  202. package/dist/mjs/evaluator/range-evaluation-node.mjs +3 -3
  203. package/dist/mjs/evaluator/range-evaluation-node.mjs.map +2 -2
  204. package/dist/mjs/functions/_template/template.mjs.map +1 -1
  205. package/dist/mjs/functions/array/sequence/sequence.mjs +4 -4
  206. package/dist/mjs/functions/array/sequence/sequence.mjs.map +2 -2
  207. package/dist/mjs/functions/criteria-parser.mjs.map +1 -1
  208. package/dist/mjs/functions/criteria-utils.mjs +8 -8
  209. package/dist/mjs/functions/criteria-utils.mjs.map +3 -3
  210. package/dist/mjs/functions/{index.mjs → function-registry.mjs} +2 -2
  211. package/dist/mjs/functions/function-registry.mjs.map +10 -0
  212. package/dist/mjs/functions/function-utils.mjs.map +1 -1
  213. package/dist/mjs/functions/information/cell/cell.mjs +3 -3
  214. package/dist/mjs/functions/information/cell/cell.mjs.map +2 -2
  215. package/dist/mjs/functions/information/column/column.mjs +4 -4
  216. package/dist/mjs/functions/information/column/column.mjs.map +2 -2
  217. package/dist/mjs/functions/information/row/row.mjs +4 -4
  218. package/dist/mjs/functions/information/row/row.mjs.map +2 -2
  219. package/dist/mjs/functions/logical/and/and.mjs +2 -2
  220. package/dist/mjs/functions/logical/and/and.mjs.map +2 -2
  221. package/dist/mjs/functions/logical/if/if.mjs +2 -2
  222. package/dist/mjs/functions/logical/if/if.mjs.map +3 -3
  223. package/dist/mjs/functions/logical/iferror/iferror.mjs +3 -3
  224. package/dist/mjs/functions/logical/iferror/iferror.mjs.map +2 -2
  225. package/dist/mjs/functions/logical/or/or.mjs +2 -2
  226. package/dist/mjs/functions/logical/or/or.mjs.map +2 -2
  227. package/dist/mjs/functions/lookup/count/count-utils.mjs.map +1 -1
  228. package/dist/mjs/functions/lookup/count/count.mjs +2 -2
  229. package/dist/mjs/functions/lookup/count/count.mjs.map +2 -2
  230. package/dist/mjs/functions/lookup/count/countif.mjs +2 -2
  231. package/dist/mjs/functions/lookup/count/countif.mjs.map +2 -2
  232. package/dist/mjs/functions/lookup/count/countifs.mjs.map +1 -1
  233. package/dist/mjs/functions/lookup/index-lookup/index-lookup.mjs +2 -2
  234. package/dist/mjs/functions/lookup/index-lookup/index-lookup.mjs.map +2 -2
  235. package/dist/mjs/functions/lookup/match/match.mjs +2 -2
  236. package/dist/mjs/functions/lookup/match/match.mjs.map +2 -2
  237. package/dist/mjs/functions/lookup/xlookup/xlookup.mjs +2 -2
  238. package/dist/mjs/functions/lookup/xlookup/xlookup.mjs.map +2 -2
  239. package/dist/mjs/functions/math/average/average-utils.mjs +2 -2
  240. package/dist/mjs/functions/math/average/average-utils.mjs.map +2 -2
  241. package/dist/mjs/functions/math/average/average.mjs +2 -2
  242. package/dist/mjs/functions/math/average/average.mjs.map +2 -2
  243. package/dist/mjs/functions/math/average/averageif.mjs +3 -3
  244. package/dist/mjs/functions/math/average/averageif.mjs.map +3 -3
  245. package/dist/mjs/functions/math/average/averageifs.mjs.map +2 -2
  246. package/dist/mjs/functions/math/ceiling/ceiling.mjs +2 -2
  247. package/dist/mjs/functions/math/ceiling/ceiling.mjs.map +3 -3
  248. package/dist/mjs/functions/math/max/max-utils.mjs +2 -2
  249. package/dist/mjs/functions/math/max/max-utils.mjs.map +2 -2
  250. package/dist/mjs/functions/math/max/max.mjs +2 -2
  251. package/dist/mjs/functions/math/max/max.mjs.map +2 -2
  252. package/dist/mjs/functions/math/max/maxif.mjs +2 -2
  253. package/dist/mjs/functions/math/max/maxif.mjs.map +2 -2
  254. package/dist/mjs/functions/math/max/maxifs.mjs.map +2 -2
  255. package/dist/mjs/functions/math/min/min-utils.mjs +2 -2
  256. package/dist/mjs/functions/math/min/min-utils.mjs.map +2 -2
  257. package/dist/mjs/functions/math/min/min.mjs +2 -2
  258. package/dist/mjs/functions/math/min/min.mjs.map +2 -2
  259. package/dist/mjs/functions/math/min/minif.mjs +2 -2
  260. package/dist/mjs/functions/math/min/minif.mjs.map +2 -2
  261. package/dist/mjs/functions/math/min/minifs.mjs.map +2 -2
  262. package/dist/mjs/functions/math/sum/sum.mjs +2 -2
  263. package/dist/mjs/functions/math/sum/sum.mjs.map +2 -2
  264. package/dist/mjs/functions/math/sum/sumif.mjs +2 -2
  265. package/dist/mjs/functions/math/sum/sumif.mjs.map +2 -2
  266. package/dist/mjs/functions/math/sum/sumifs.mjs.map +2 -2
  267. package/dist/mjs/functions/math/sum/summation-utils.mjs.map +1 -1
  268. package/dist/mjs/functions/reference/address/address.mjs +2 -2
  269. package/dist/mjs/functions/reference/address/address.mjs.map +2 -2
  270. package/dist/mjs/functions/reference/indirect/indirect.mjs +3 -3
  271. package/dist/mjs/functions/reference/indirect/indirect.mjs.map +3 -3
  272. package/dist/mjs/functions/reference/offset/offset.mjs +3 -3
  273. package/dist/mjs/functions/reference/offset/offset.mjs.map +2 -2
  274. package/dist/mjs/functions/text/concatenate/concatenate.mjs +2 -2
  275. package/dist/mjs/functions/text/concatenate/concatenate.mjs.map +2 -2
  276. package/dist/mjs/functions/text/exact/exact.mjs +2 -2
  277. package/dist/mjs/functions/text/exact/exact.mjs.map +2 -2
  278. package/dist/mjs/functions/text/find/find.mjs +2 -2
  279. package/dist/mjs/functions/text/find/find.mjs.map +3 -3
  280. package/dist/mjs/functions/text/left/left.mjs +3 -3
  281. package/dist/mjs/functions/text/left/left.mjs.map +2 -2
  282. package/dist/mjs/functions/text/len/len.mjs +2 -2
  283. package/dist/mjs/functions/text/len/len.mjs.map +3 -3
  284. package/dist/mjs/functions/text/mid/mid.mjs +3 -3
  285. package/dist/mjs/functions/text/mid/mid.mjs.map +2 -2
  286. package/dist/mjs/functions/text/right/right.mjs +4 -4
  287. package/dist/mjs/functions/text/right/right.mjs.map +3 -3
  288. package/dist/mjs/functions/text/text-helpers.mjs +2 -2
  289. package/dist/mjs/functions/text/text-helpers.mjs.map +2 -2
  290. package/dist/mjs/functions/text/textjoin/textjoin.mjs +2 -2
  291. package/dist/mjs/functions/text/textjoin/textjoin.mjs.map +3 -3
  292. package/dist/mjs/package.json +1 -1
  293. package/dist/mjs/parser/formatter.mjs +2 -2
  294. package/dist/mjs/parser/formatter.mjs.map +2 -2
  295. package/dist/types/core/engine.d.ts +5 -1
  296. package/dist/types/core/managers/dependency-manager.d.ts +7 -7
  297. package/dist/types/core/managers/dependency-node.d.ts +5 -5
  298. package/dist/types/core/managers/evaluation-manager.d.ts +4 -4
  299. package/dist/types/core/managers/frontier-dependency-manager.d.ts +2 -2
  300. package/dist/types/core/managers/named-expression-manager.d.ts +2 -2
  301. package/dist/types/core/managers/workbook-manager.d.ts +1 -1
  302. package/dist/types/core/types.d.ts +3 -3
  303. package/dist/types/evaluator/arithmetic/add/add.d.ts +1 -1
  304. package/dist/types/evaluator/arithmetic/divide/divide.d.ts +1 -1
  305. package/dist/types/evaluator/arithmetic/multiply/multiply.d.ts +1 -1
  306. package/dist/types/evaluator/arithmetic/power/power.d.ts +1 -1
  307. package/dist/types/evaluator/arithmetic/subtract/subtract.d.ts +1 -1
  308. package/dist/types/evaluator/comparison/equals.d.ts +1 -1
  309. package/dist/types/evaluator/comparison/greater-than-or-equal.d.ts +1 -1
  310. package/dist/types/evaluator/comparison/greater-than.d.ts +1 -1
  311. package/dist/types/evaluator/comparison/less-than-or-equal.d.ts +1 -1
  312. package/dist/types/evaluator/comparison/less-than.d.ts +1 -1
  313. package/dist/types/evaluator/comparison/not-equals.d.ts +1 -1
  314. package/dist/types/evaluator/concatenation/concatenate.d.ts +1 -1
  315. package/dist/types/evaluator/dependency-nodes/ast-evaluation-node.d.ts +2 -2
  316. package/dist/types/evaluator/dependency-nodes/base-eval-node.d.ts +1 -1
  317. package/dist/types/evaluator/dependency-nodes/cell-value-node.d.ts +1 -1
  318. package/dist/types/evaluator/dependency-nodes/empty-cell-evaluation-node.d.ts +4 -4
  319. package/dist/types/evaluator/dependency-nodes/spill-meta-node.d.ts +1 -1
  320. package/dist/types/evaluator/evaluate-scalar-operator.d.ts +1 -1
  321. package/dist/types/evaluator/evaluation-context.d.ts +3 -3
  322. package/dist/types/evaluator/evaluation-error.d.ts +2 -2
  323. package/dist/types/evaluator/formula-evaluator.d.ts +5 -5
  324. package/dist/types/evaluator/range-evaluation-node.d.ts +4 -4
  325. package/dist/types/functions/_template/template.d.ts +1 -1
  326. package/dist/types/functions/array/sequence/sequence.d.ts +1 -1
  327. package/dist/types/functions/criteria-parser.d.ts +1 -1
  328. package/dist/types/functions/criteria-utils.d.ts +5 -5
  329. package/dist/types/functions/{index.d.ts → function-registry.d.ts} +1 -1
  330. package/dist/types/functions/function-utils.d.ts +5 -5
  331. package/dist/types/functions/information/cell/cell.d.ts +1 -1
  332. package/dist/types/functions/information/column/column.d.ts +1 -1
  333. package/dist/types/functions/information/row/row.d.ts +1 -1
  334. package/dist/types/functions/logical/and/and.d.ts +1 -1
  335. package/dist/types/functions/logical/if/if.d.ts +1 -1
  336. package/dist/types/functions/logical/iferror/iferror.d.ts +1 -1
  337. package/dist/types/functions/logical/or/or.d.ts +1 -1
  338. package/dist/types/functions/lookup/count/count-utils.d.ts +2 -2
  339. package/dist/types/functions/lookup/count/count.d.ts +1 -1
  340. package/dist/types/functions/lookup/count/countif.d.ts +1 -1
  341. package/dist/types/functions/lookup/count/countifs.d.ts +1 -1
  342. package/dist/types/functions/lookup/index-lookup/index-lookup.d.ts +1 -1
  343. package/dist/types/functions/lookup/match/match.d.ts +1 -1
  344. package/dist/types/functions/lookup/xlookup/xlookup.d.ts +1 -1
  345. package/dist/types/functions/math/average/average-utils.d.ts +2 -2
  346. package/dist/types/functions/math/average/average.d.ts +1 -1
  347. package/dist/types/functions/math/average/averageif.d.ts +1 -1
  348. package/dist/types/functions/math/average/averageifs.d.ts +1 -1
  349. package/dist/types/functions/math/ceiling/ceiling.d.ts +1 -1
  350. package/dist/types/functions/math/max/max-utils.d.ts +2 -2
  351. package/dist/types/functions/math/max/max.d.ts +1 -1
  352. package/dist/types/functions/math/max/maxif.d.ts +1 -1
  353. package/dist/types/functions/math/max/maxifs.d.ts +1 -1
  354. package/dist/types/functions/math/min/min-utils.d.ts +2 -2
  355. package/dist/types/functions/math/min/min.d.ts +1 -1
  356. package/dist/types/functions/math/min/minif.d.ts +1 -1
  357. package/dist/types/functions/math/min/minifs.d.ts +1 -1
  358. package/dist/types/functions/math/sum/sum.d.ts +1 -1
  359. package/dist/types/functions/math/sum/sumif.d.ts +1 -1
  360. package/dist/types/functions/math/sum/sumifs.d.ts +1 -1
  361. package/dist/types/functions/math/sum/summation-utils.d.ts +1 -1
  362. package/dist/types/functions/reference/address/address.d.ts +1 -1
  363. package/dist/types/functions/reference/indirect/indirect.d.ts +1 -1
  364. package/dist/types/functions/reference/offset/offset.d.ts +1 -1
  365. package/dist/types/functions/text/concatenate/concatenate.d.ts +1 -1
  366. package/dist/types/functions/text/exact/exact.d.ts +1 -1
  367. package/dist/types/functions/text/find/find.d.ts +1 -1
  368. package/dist/types/functions/text/left/left.d.ts +1 -1
  369. package/dist/types/functions/text/len/len.d.ts +1 -1
  370. package/dist/types/functions/text/mid/mid.d.ts +1 -1
  371. package/dist/types/functions/text/right/right.d.ts +1 -1
  372. package/dist/types/functions/text/text-helpers.d.ts +3 -3
  373. package/dist/types/functions/text/textjoin/textjoin.d.ts +1 -1
  374. package/package.json +1 -1
  375. package/dist/cjs/core/managers/index.cjs +0 -49
  376. package/dist/cjs/core/managers/index.cjs.map +0 -10
  377. package/dist/cjs/functions/index.cjs.map +0 -10
  378. package/dist/mjs/core/managers/index.mjs +0 -21
  379. package/dist/mjs/core/managers/index.mjs.map +0 -10
  380. package/dist/mjs/functions/index.mjs.map +0 -10
  381. package/dist/types/core/managers/index.d.ts +0 -7
@@ -32,9 +32,8 @@ __export(exports_engine, {
32
32
  FormulaEngine: () => FormulaEngine
33
33
  });
34
34
  module.exports = __toCommonJS(exports_engine);
35
- var import_formula_evaluator = require("src/evaluator/formula-evaluator");
35
+ var import_formula_evaluator = require("../evaluator/formula-evaluator.cjs");
36
36
  var import_autofill_utils = require("./autofill-utils.cjs");
37
- var import_managers = require("./managers.cjs");
38
37
  var import_workbook_manager = require("./managers/workbook-manager.cjs");
39
38
  var import_map_serializer = require("./map-serializer.cjs");
40
39
  var import_named_expression_renamer = require("./named-expression-renamer.cjs");
@@ -42,6 +41,11 @@ var import_sheet_renamer = require("./sheet-renamer.cjs");
42
41
  var import_table_renamer = require("./table-renamer.cjs");
43
42
  var import_workbook_renamer = require("./workbook-renamer.cjs");
44
43
  var import_cache_manager = require("./managers/cache-manager.cjs");
44
+ var import_named_expression_manager = require("./managers/named-expression-manager.cjs");
45
+ var import_table_manager = require("./managers/table-manager.cjs");
46
+ var import_event_manager = require("./managers/event-manager.cjs");
47
+ var import_evaluation_manager = require("./managers/evaluation-manager.cjs");
48
+ var import_dependency_manager = require("./managers/dependency-manager.cjs");
45
49
 
46
50
  class FormulaEngine {
47
51
  workbookManager;
@@ -59,14 +63,14 @@ class FormulaEngine {
59
63
  _autoFillManager;
60
64
  _dependencyManager;
61
65
  constructor() {
62
- this.eventManager = new import_managers.EventManager;
66
+ this.eventManager = new import_event_manager.EventManager;
63
67
  this.workbookManager = new import_workbook_manager.WorkbookManager;
64
- this.namedExpressionManager = new import_managers.NamedExpressionManager;
65
- this.tableManager = new import_managers.TableManager(this.workbookManager);
68
+ this.namedExpressionManager = new import_named_expression_manager.NamedExpressionManager;
69
+ this.tableManager = new import_table_manager.TableManager(this.workbookManager);
66
70
  const cacheManager = new import_cache_manager.CacheManager;
67
- this.dependencyManager = new import_managers.DependencyManager(cacheManager, this.workbookManager);
71
+ this.dependencyManager = new import_dependency_manager.DependencyManager(cacheManager, this.workbookManager);
68
72
  const formulaEvaluator = new import_formula_evaluator.FormulaEvaluator(this.tableManager, this.dependencyManager, this.namedExpressionManager);
69
- this.evaluationManager = new import_managers.EvaluationManager(this.workbookManager, this.tableManager, formulaEvaluator, this.dependencyManager);
73
+ this.evaluationManager = new import_evaluation_manager.EvaluationManager(this.workbookManager, this.tableManager, formulaEvaluator, this.dependencyManager);
70
74
  this.autoFillManager = new import_autofill_utils.AutoFill(this.workbookManager, this);
71
75
  this._workbookManager = this.workbookManager;
72
76
  this._namedExpressionManager = this.namedExpressionManager;
@@ -387,4 +391,4 @@ class FormulaEngine {
387
391
  }
388
392
  }
389
393
 
390
- //# debugId=44D794D7FD29ABC164756E2164756E21
394
+ //# debugId=71251CFBE2EFBD8864756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/core/engine.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * Main FormulaEngine class\n * Core API implementation for spreadsheet calculations\n */\n\nimport {\n type CellAddress,\n type NamedExpression,\n type RangeAddress,\n type SerializedCellValue,\n type SingleEvaluationResult,\n type SpreadsheetRange,\n type SpreadsheetRangeEnd,\n type TableDefinition,\n} from \"./types.cjs\";\n\nimport type { FillDirection } from \"@ricsam/selection-manager\";\nimport { FormulaEvaluator } from \"src/evaluator/formula-evaluator\";\nimport { AutoFill } from \"./autofill-utils.cjs\";\nimport {\n DependencyManager,\n EvaluationManager,\n EventManager,\n NamedExpressionManager,\n TableManager,\n} from \"./managers.cjs\";\nimport { WorkbookManager } from \"./managers/workbook-manager.cjs\";\nimport { deserialize, serialize } from \"./map-serializer.cjs\";\nimport { renameNamedExpressionInFormula } from \"./named-expression-renamer.cjs\";\nimport { renameSheetInFormula } from \"./sheet-renamer.cjs\";\nimport { renameTableInFormula } from \"./table-renamer.cjs\";\nimport { renameWorkbookInFormula } from \"./workbook-renamer.cjs\";\nimport { cellAddressToKey, keyToCellAddress } from \"./utils.cjs\";\nimport { CacheManager } from \"./managers/cache-manager.cjs\";\n\n/**\n * Main FormulaEngine class\n */\nexport class FormulaEngine {\n private workbookManager: WorkbookManager;\n private namedExpressionManager: NamedExpressionManager;\n private tableManager: TableManager;\n private eventManager: EventManager;\n private evaluationManager: EvaluationManager;\n private autoFillManager: AutoFill;\n private dependencyManager: DependencyManager;\n\n /**\n * Public access to the store manager for testing\n */\n public _workbookManager: WorkbookManager;\n public _namedExpressionManager: NamedExpressionManager;\n public _tableManager: TableManager;\n public _eventManager: EventManager;\n public _evaluationManager: EvaluationManager;\n public _autoFillManager: AutoFill;\n public _dependencyManager: DependencyManager;\n\n constructor() {\n this.eventManager = new EventManager();\n this.workbookManager = new WorkbookManager();\n this.namedExpressionManager = new NamedExpressionManager();\n this.tableManager = new TableManager(this.workbookManager);\n const cacheManager = new CacheManager();\n this.dependencyManager = new DependencyManager(\n cacheManager,\n this.workbookManager\n );\n\n const formulaEvaluator = new FormulaEvaluator(\n this.tableManager,\n this.dependencyManager,\n this.namedExpressionManager,\n );\n\n this.evaluationManager = new EvaluationManager(\n this.workbookManager,\n this.tableManager,\n formulaEvaluator,\n this.dependencyManager\n );\n\n this.autoFillManager = new AutoFill(this.workbookManager, this);\n\n this._workbookManager = this.workbookManager;\n this._namedExpressionManager = this.namedExpressionManager;\n this._tableManager = this.tableManager;\n this._eventManager = this.eventManager;\n this._evaluationManager = this.evaluationManager;\n this._autoFillManager = this.autoFillManager;\n this._dependencyManager = this.dependencyManager;\n }\n\n /**\n * Static factory method to build an empty engine\n */\n static buildEmpty(): FormulaEngine {\n return new FormulaEngine();\n }\n\n //#region Cell\n getCellEvaluationResult(\n cellAddress: CellAddress\n ): SingleEvaluationResult | undefined {\n return this.evaluationManager.getCellEvaluationResult(cellAddress);\n }\n\n getCellValue(cellAddress: CellAddress, debug?: boolean): SerializedCellValue {\n const result = this.getCellEvaluationResult(cellAddress);\n if (!result) {\n return \"\";\n }\n\n return this.evaluationManager.evaluationResultToSerializedValue(\n result,\n cellAddress,\n debug\n );\n }\n\n getCellDependents(\n address: CellAddress | SpreadsheetRange\n ): (SpreadsheetRange | CellAddress)[] {\n throw new Error(\"Not implemented\");\n }\n\n getCellPrecedents(\n address: CellAddress | SpreadsheetRange\n ): (SpreadsheetRange | CellAddress)[] {\n throw new Error(\"Not implemented\");\n }\n\n //#endregion\n\n //#region Named Expressions\n addNamedExpression({\n expression,\n expressionName,\n sheetName,\n workbookName,\n }: {\n expression: string;\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }) {\n this.namedExpressionManager.addNamedExpression({\n expression,\n expressionName,\n sheetName,\n workbookName,\n });\n\n // Re-evaluate all sheets since named expressions can be referenced from anywhere\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n removeNamedExpression({\n expressionName,\n sheetName,\n workbookName,\n }: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }) {\n const found = this.namedExpressionManager.removeNamedExpression({\n expressionName,\n sheetName,\n workbookName,\n });\n\n if (found) {\n // Re-evaluate all sheets since named expressions can be referenced from anywhere\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n return found;\n }\n\n updateNamedExpression({\n expression,\n expressionName,\n sheetName,\n workbookName,\n }: {\n expression: string;\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }) {\n this.namedExpressionManager.updateNamedExpression({\n expression,\n expressionName,\n sheetName,\n workbookName,\n });\n\n // Re-evaluate all sheets since named expressions can be referenced from anywhere\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n renameNamedExpression({\n expressionName,\n sheetName,\n workbookName,\n newName,\n }: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n newName: string;\n }) {\n const result = this.namedExpressionManager.renameNamedExpression({\n expressionName,\n sheetName,\n workbookName,\n newName,\n });\n\n // Update all formulas that reference this named expression in sheet cells\n this.workbookManager.updateAllFormulas((formula) =>\n renameNamedExpressionInFormula(formula, expressionName, newName)\n );\n\n // Update named expressions that reference this named expression\n this.namedExpressionManager.updateAllNamedExpressions((formula) =>\n renameNamedExpressionInFormula(formula, expressionName, newName)\n );\n\n // Re-evaluate all sheets since named expressions can be referenced from anywhere\n this.reevaluate();\n this.eventManager.emitUpdate();\n\n return result;\n }\n\n setNamedExpressions(\n opts: (\n | {\n type: \"global\";\n }\n | {\n type: \"sheet\";\n sheetName: string;\n workbookName: string;\n }\n | {\n type: \"workbook\";\n workbookName: string;\n }\n ) & {\n expressions: Map<string, NamedExpression>;\n }\n ) {\n this.namedExpressionManager.setNamedExpressions(opts);\n\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n //#endregion\n\n //#region Tables\n addTable(props: {\n tableName: string;\n sheetName: string;\n workbookName: string;\n start: string;\n numRows: SpreadsheetRangeEnd;\n numCols: number;\n }) {\n const table = this.tableManager.addTable({\n ...props,\n getCellValue: (cellAddress: CellAddress) =>\n this.getCellValue(cellAddress),\n });\n\n // Re-evaluate all sheets since structured references might depend on this table\n this.reevaluate();\n this.eventManager.emitUpdate();\n\n return table;\n }\n\n renameTable(\n workbookName: string,\n names: { oldName: string; newName: string }\n ) {\n this.tableManager.renameTable(workbookName, names);\n\n // Update all formulas that reference this table in sheet cells\n this.workbookManager.updateAllFormulas((formula) =>\n renameTableInFormula(formula, names.oldName, names.newName)\n );\n\n // Update named expressions that reference this table\n this.namedExpressionManager.updateAllNamedExpressions((formula) =>\n renameTableInFormula(formula, names.oldName, names.newName)\n );\n\n // Re-evaluate all sheets since structured references might depend on this table\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n updateTable(opts: {\n tableName: string;\n sheetName?: string;\n start?: string;\n numRows?: SpreadsheetRangeEnd;\n numCols?: number;\n workbookName: string;\n }) {\n this.tableManager.updateTable({\n ...opts,\n getCellValue: (cellAddress: CellAddress) =>\n this.getCellValue(cellAddress),\n });\n\n // Re-evaluate all sheets since structured references might depend on this table\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n removeTable(opts: { tableName: string; workbookName: string }) {\n const found = this.tableManager.removeTable(opts);\n\n if (found) {\n // Re-evaluate all sheets since structured references might depend on this table\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n return found;\n }\n\n resetTables(tables: Map<string, Map<string, TableDefinition>>) {\n this.tableManager.resetTables(tables);\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n getTables(workbookName: string) {\n return this.tableManager.getTables(workbookName);\n }\n\n isCellInTable(cellAddress: CellAddress): TableDefinition | undefined {\n return this.tableManager.isCellInTable(cellAddress);\n }\n\n //#endregion\n\n //#region Sheets\n addSheet(opts: { workbookName: string; sheetName: string }) {\n const newSheet = this.workbookManager.addSheet(opts);\n const wbLevel = this.namedExpressionManager.addSheet(opts);\n this.reevaluate();\n this.eventManager.emitUpdate();\n return newSheet;\n }\n\n removeSheet(opts: { workbookName: string; sheetName: string }) {\n const sheet = this.workbookManager.removeSheet(opts);\n\n // Clean up related data\n this.namedExpressionManager.removeSheet(opts);\n this.tableManager.removeSheet(opts);\n\n // Add engine-specific logic: re-evaluate since references might be affected\n this.reevaluate();\n this.eventManager.emitUpdate();\n\n return sheet;\n }\n\n renameSheet(opts: {\n sheetName: string;\n newSheetName: string;\n workbookName: string;\n }) {\n const sheet = this.workbookManager.renameSheet(opts);\n\n // Update scoped named expressions\n this.namedExpressionManager.renameSheet(opts);\n\n // Update tables that belong to the renamed sheet\n this.tableManager.updateTablesForSheetRename(opts);\n\n // Update all formulas that reference this sheet\n this.workbookManager.updateAllFormulas((formula) =>\n renameSheetInFormula({\n formula,\n oldSheetName: opts.sheetName,\n newSheetName: opts.newSheetName,\n })\n );\n\n // Add engine-specific logic: re-evaluate since references might be affected\n this.reevaluate();\n this.eventManager.emitUpdate();\n\n return sheet;\n }\n\n getSheets(workbookName: string) {\n return this.workbookManager.getSheets(workbookName);\n }\n\n getSheet({\n workbookName,\n sheetName,\n }: {\n workbookName: string;\n sheetName: string;\n }) {\n return this.workbookManager.getSheet({ workbookName, sheetName });\n }\n\n getSheetSerialized(opts: {\n sheetName: string;\n workbookName: string;\n }): Map<string, SerializedCellValue> {\n return this.workbookManager.getSheetSerialized(opts);\n }\n\n //#endregion\n\n //#region Workbook\n addWorkbook(workbookName: string) {\n this.workbookManager.addWorkbook(workbookName);\n this.namedExpressionManager.addWorkbook(workbookName);\n this.tableManager.addWorkbook(workbookName);\n\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n removeWorkbook(workbookName: string) {\n this.workbookManager.removeWorkbook(workbookName);\n this.namedExpressionManager.removeWorkbook(workbookName);\n this.tableManager.removeWorkbook(workbookName);\n\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n cloneWorkbook(fromWorkbookName: string, toWorkbookName: string) {\n // Check if source workbook exists\n const sourceWorkbook = this.workbookManager\n .getWorkbooks()\n .get(fromWorkbookName);\n if (!sourceWorkbook) {\n throw new Error(`Source workbook \"${fromWorkbookName}\" not found`);\n }\n\n // Check if target workbook name already exists\n if (this.workbookManager.getWorkbooks().has(toWorkbookName)) {\n throw new Error(`Target workbook \"${toWorkbookName}\" already exists`);\n }\n\n // Create new workbook\n this.addWorkbook(toWorkbookName);\n\n // Clone all sheets from source workbook\n for (const [sheetName, sheet] of sourceWorkbook.sheets) {\n // Add sheet to target workbook\n this.addSheet({\n workbookName: toWorkbookName,\n sheetName: sheetName,\n });\n\n // Copy all cell content using setSheetContent for efficiency\n this.setSheetContent(\n {\n workbookName: toWorkbookName,\n sheetName: sheetName,\n },\n new Map(sheet.content)\n );\n }\n\n // Clone workbook-scoped named expressions\n const sourceWorkbookExpressions = this.namedExpressionManager\n .getNamedExpressions()\n .workbookExpressions.get(fromWorkbookName);\n if (sourceWorkbookExpressions) {\n for (const [name, expression] of sourceWorkbookExpressions) {\n this.addNamedExpression({\n expressionName: name,\n expression: expression.expression,\n workbookName: toWorkbookName,\n });\n }\n }\n\n // Clone sheet-scoped named expressions\n const sourceSheetExpressions = this.namedExpressionManager\n .getNamedExpressions()\n .sheetExpressions.get(fromWorkbookName);\n if (sourceSheetExpressions) {\n for (const [sheetName, sheetExpressions] of sourceSheetExpressions) {\n for (const [name, expression] of sheetExpressions) {\n this.addNamedExpression({\n expressionName: name,\n expression: expression.expression,\n workbookName: toWorkbookName,\n sheetName: sheetName,\n });\n }\n }\n }\n\n // Clone tables\n const sourceTables = this.tableManager.tables.get(fromWorkbookName);\n if (sourceTables) {\n for (const [tableName, table] of sourceTables) {\n this.tableManager.copyTable(\n {\n workbookName: fromWorkbookName,\n tableName: tableName,\n },\n {\n workbookName: toWorkbookName,\n tableName: tableName,\n }\n );\n }\n }\n\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n renameWorkbook(opts: { workbookName: string; newWorkbookName: string }) {\n this.workbookManager.renameWorkbook(opts);\n\n // Update scoped named expressions\n this.namedExpressionManager.renameWorkbook(opts);\n\n // Update tables that belong to the renamed sheet\n this.tableManager.updateTablesForWorkbookRename(opts);\n\n // Update all formulas that reference this workbook\n this.workbookManager.updateAllFormulas((formula) =>\n renameWorkbookInFormula({\n formula,\n oldWorkbookName: opts.workbookName,\n newWorkbookName: opts.newWorkbookName,\n })\n );\n\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n getWorkbooks() {\n return this.workbookManager.getWorkbooks();\n }\n //#endregion\n\n //#region CRUD Operations\n /**\n * Overrides the content of a sheet.\n * @param sheetName - The name of the sheet to set the content of\n * @param content - A map of cell addresses to their serialized values\n * @remarks This method is used to set the content of a sheet. It will re-evaluate all sheets to ensure all dependencies are resolved correctly.\n */\n setSheetContent(\n opts: { sheetName: string; workbookName: string },\n content: Map<string, SerializedCellValue>\n ) {\n this.workbookManager.setSheetContent(opts, content);\n\n // Re-evaluate all sheets to ensure all dependencies are resolved correctly\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n setCellContent(address: CellAddress, content: SerializedCellValue) {\n this.workbookManager.setCellContent(address, content);\n\n // Re-evaluate all sheets to ensure all dependencies are resolved correctly\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n //#endregion\n\n //#region Evaluation\n\n /**\n * Re-evaluates all sheets to ensure all dependencies are resolved correctly\n *\n * but just clears the evaluation cache\n */\n reevaluate() {\n this.evaluationManager.clearEvaluationCache();\n }\n //#endregion\n\n //#region Auto-fill\n /**\n * Auto-fills the fillRange based on the seedRange and the direction.\n */\n autoFill(\n opts: { sheetName: string; workbookName: string },\n /**\n * The user's original selection that defines the pattern/series.\n */\n seedRange: SpreadsheetRange,\n /**\n * the new cells populated by the drag, excluding the seed\n */\n fillRange: SpreadsheetRange,\n /**\n * The direction of the fill.\n */\n direction: FillDirection\n ) {\n this.autoFillManager.fill(opts, seedRange, fillRange, direction);\n }\n\n /**\n * Removes the content in the spreadsheet that is inside the range.\n */\n clearSpreadsheetRange(address: RangeAddress) {\n this.workbookManager.clearSpreadsheetRange(address);\n\n // Re-evaluate all sheets to ensure all dependencies are resolved correctly\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n //#endregion\n\n //#region State - UI library integration\n getState() {\n return {\n workbooks: this.workbookManager.getWorkbooks(),\n namedExpressions: this.namedExpressionManager.getNamedExpressions(),\n tables: this.tableManager.tables,\n };\n }\n\n onUpdate(listener: () => void) {\n return this.eventManager.onUpdate(listener);\n }\n\n serializeEngine(): string {\n return serialize(this.getState());\n }\n\n resetToSerializedEngine(data: string) {\n const deserialized = deserialize(data) as ReturnType<typeof this.getState>;\n\n this.workbookManager.resetWorkbooks(deserialized.workbooks);\n\n deserialized.workbooks.forEach((workbook) => {\n this.namedExpressionManager.addWorkbook(workbook.name);\n this.tableManager.addWorkbook(workbook.name);\n workbook.sheets.forEach((sheet) => {\n this.namedExpressionManager.addSheet({\n workbookName: workbook.name,\n sheetName: sheet.name,\n });\n });\n });\n\n this.namedExpressionManager.resetNamedExpressions(\n deserialized.namedExpressions\n );\n this.tableManager.resetTables(deserialized.tables);\n\n // Re-evaluate all sheets to ensure all dependencies are resolved correctly\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n //#endregion\n}\n"
5
+ "/**\n * Main FormulaEngine class\n * Core API implementation for spreadsheet calculations\n */\n\nimport {\n type CellAddress,\n type NamedExpression,\n type RangeAddress,\n type SerializedCellValue,\n type SingleEvaluationResult,\n type SpreadsheetRange,\n type SpreadsheetRangeEnd,\n type TableDefinition,\n} from \"./types.cjs\";\n\nimport type { FillDirection } from \"@ricsam/selection-manager\";\nimport { FormulaEvaluator } from \"../evaluator/formula-evaluator.cjs\";\nimport { AutoFill } from \"./autofill-utils.cjs\";\nimport { WorkbookManager } from \"./managers/workbook-manager.cjs\";\nimport { deserialize, serialize } from \"./map-serializer.cjs\";\nimport { renameNamedExpressionInFormula } from \"./named-expression-renamer.cjs\";\nimport { renameSheetInFormula } from \"./sheet-renamer.cjs\";\nimport { renameTableInFormula } from \"./table-renamer.cjs\";\nimport { renameWorkbookInFormula } from \"./workbook-renamer.cjs\";\nimport { cellAddressToKey, keyToCellAddress } from \"./utils.cjs\";\nimport { CacheManager } from \"./managers/cache-manager.cjs\";\nimport { NamedExpressionManager } from \"./managers/named-expression-manager.cjs\";\nimport { TableManager } from \"./managers/table-manager.cjs\";\nimport { EventManager } from \"./managers/event-manager.cjs\";\nimport { EvaluationManager } from \"./managers/evaluation-manager.cjs\";\nimport { DependencyManager } from \"./managers/dependency-manager.cjs\";\n\n/**\n * Main FormulaEngine class\n */\nexport class FormulaEngine {\n private workbookManager: WorkbookManager;\n private namedExpressionManager: NamedExpressionManager;\n private tableManager: TableManager;\n private eventManager: EventManager;\n private evaluationManager: EvaluationManager;\n private autoFillManager: AutoFill;\n private dependencyManager: DependencyManager;\n\n /**\n * Public access to the store manager for testing\n */\n public _workbookManager: WorkbookManager;\n public _namedExpressionManager: NamedExpressionManager;\n public _tableManager: TableManager;\n public _eventManager: EventManager;\n public _evaluationManager: EvaluationManager;\n public _autoFillManager: AutoFill;\n public _dependencyManager: DependencyManager;\n\n constructor() {\n this.eventManager = new EventManager();\n this.workbookManager = new WorkbookManager();\n this.namedExpressionManager = new NamedExpressionManager();\n this.tableManager = new TableManager(this.workbookManager);\n const cacheManager = new CacheManager();\n this.dependencyManager = new DependencyManager(\n cacheManager,\n this.workbookManager\n );\n\n const formulaEvaluator = new FormulaEvaluator(\n this.tableManager,\n this.dependencyManager,\n this.namedExpressionManager,\n );\n\n this.evaluationManager = new EvaluationManager(\n this.workbookManager,\n this.tableManager,\n formulaEvaluator,\n this.dependencyManager\n );\n\n this.autoFillManager = new AutoFill(this.workbookManager, this);\n\n this._workbookManager = this.workbookManager;\n this._namedExpressionManager = this.namedExpressionManager;\n this._tableManager = this.tableManager;\n this._eventManager = this.eventManager;\n this._evaluationManager = this.evaluationManager;\n this._autoFillManager = this.autoFillManager;\n this._dependencyManager = this.dependencyManager;\n }\n\n /**\n * Static factory method to build an empty engine\n */\n static buildEmpty(): FormulaEngine {\n return new FormulaEngine();\n }\n\n //#region Cell\n getCellEvaluationResult(\n cellAddress: CellAddress\n ): SingleEvaluationResult | undefined {\n return this.evaluationManager.getCellEvaluationResult(cellAddress);\n }\n\n getCellValue(cellAddress: CellAddress, debug?: boolean): SerializedCellValue {\n const result = this.getCellEvaluationResult(cellAddress);\n if (!result) {\n return \"\";\n }\n\n return this.evaluationManager.evaluationResultToSerializedValue(\n result,\n cellAddress,\n debug\n );\n }\n\n getCellDependents(\n address: CellAddress | SpreadsheetRange\n ): (SpreadsheetRange | CellAddress)[] {\n throw new Error(\"Not implemented\");\n }\n\n getCellPrecedents(\n address: CellAddress | SpreadsheetRange\n ): (SpreadsheetRange | CellAddress)[] {\n throw new Error(\"Not implemented\");\n }\n\n //#endregion\n\n //#region Named Expressions\n addNamedExpression({\n expression,\n expressionName,\n sheetName,\n workbookName,\n }: {\n expression: string;\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }) {\n this.namedExpressionManager.addNamedExpression({\n expression,\n expressionName,\n sheetName,\n workbookName,\n });\n\n // Re-evaluate all sheets since named expressions can be referenced from anywhere\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n removeNamedExpression({\n expressionName,\n sheetName,\n workbookName,\n }: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }) {\n const found = this.namedExpressionManager.removeNamedExpression({\n expressionName,\n sheetName,\n workbookName,\n });\n\n if (found) {\n // Re-evaluate all sheets since named expressions can be referenced from anywhere\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n return found;\n }\n\n updateNamedExpression({\n expression,\n expressionName,\n sheetName,\n workbookName,\n }: {\n expression: string;\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }) {\n this.namedExpressionManager.updateNamedExpression({\n expression,\n expressionName,\n sheetName,\n workbookName,\n });\n\n // Re-evaluate all sheets since named expressions can be referenced from anywhere\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n renameNamedExpression({\n expressionName,\n sheetName,\n workbookName,\n newName,\n }: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n newName: string;\n }) {\n const result = this.namedExpressionManager.renameNamedExpression({\n expressionName,\n sheetName,\n workbookName,\n newName,\n });\n\n // Update all formulas that reference this named expression in sheet cells\n this.workbookManager.updateAllFormulas((formula) =>\n renameNamedExpressionInFormula(formula, expressionName, newName)\n );\n\n // Update named expressions that reference this named expression\n this.namedExpressionManager.updateAllNamedExpressions((formula) =>\n renameNamedExpressionInFormula(formula, expressionName, newName)\n );\n\n // Re-evaluate all sheets since named expressions can be referenced from anywhere\n this.reevaluate();\n this.eventManager.emitUpdate();\n\n return result;\n }\n\n setNamedExpressions(\n opts: (\n | {\n type: \"global\";\n }\n | {\n type: \"sheet\";\n sheetName: string;\n workbookName: string;\n }\n | {\n type: \"workbook\";\n workbookName: string;\n }\n ) & {\n expressions: Map<string, NamedExpression>;\n }\n ) {\n this.namedExpressionManager.setNamedExpressions(opts);\n\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n //#endregion\n\n //#region Tables\n addTable(props: {\n tableName: string;\n sheetName: string;\n workbookName: string;\n start: string;\n numRows: SpreadsheetRangeEnd;\n numCols: number;\n }) {\n const table = this.tableManager.addTable({\n ...props,\n getCellValue: (cellAddress: CellAddress) =>\n this.getCellValue(cellAddress),\n });\n\n // Re-evaluate all sheets since structured references might depend on this table\n this.reevaluate();\n this.eventManager.emitUpdate();\n\n return table;\n }\n\n renameTable(\n workbookName: string,\n names: { oldName: string; newName: string }\n ) {\n this.tableManager.renameTable(workbookName, names);\n\n // Update all formulas that reference this table in sheet cells\n this.workbookManager.updateAllFormulas((formula) =>\n renameTableInFormula(formula, names.oldName, names.newName)\n );\n\n // Update named expressions that reference this table\n this.namedExpressionManager.updateAllNamedExpressions((formula) =>\n renameTableInFormula(formula, names.oldName, names.newName)\n );\n\n // Re-evaluate all sheets since structured references might depend on this table\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n updateTable(opts: {\n tableName: string;\n sheetName?: string;\n start?: string;\n numRows?: SpreadsheetRangeEnd;\n numCols?: number;\n workbookName: string;\n }) {\n this.tableManager.updateTable({\n ...opts,\n getCellValue: (cellAddress: CellAddress) =>\n this.getCellValue(cellAddress),\n });\n\n // Re-evaluate all sheets since structured references might depend on this table\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n removeTable(opts: { tableName: string; workbookName: string }) {\n const found = this.tableManager.removeTable(opts);\n\n if (found) {\n // Re-evaluate all sheets since structured references might depend on this table\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n return found;\n }\n\n resetTables(tables: Map<string, Map<string, TableDefinition>>) {\n this.tableManager.resetTables(tables);\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n getTables(workbookName: string) {\n return this.tableManager.getTables(workbookName);\n }\n\n isCellInTable(cellAddress: CellAddress): TableDefinition | undefined {\n return this.tableManager.isCellInTable(cellAddress);\n }\n\n //#endregion\n\n //#region Sheets\n addSheet(opts: { workbookName: string; sheetName: string }) {\n const newSheet = this.workbookManager.addSheet(opts);\n const wbLevel = this.namedExpressionManager.addSheet(opts);\n this.reevaluate();\n this.eventManager.emitUpdate();\n return newSheet;\n }\n\n removeSheet(opts: { workbookName: string; sheetName: string }) {\n const sheet = this.workbookManager.removeSheet(opts);\n\n // Clean up related data\n this.namedExpressionManager.removeSheet(opts);\n this.tableManager.removeSheet(opts);\n\n // Add engine-specific logic: re-evaluate since references might be affected\n this.reevaluate();\n this.eventManager.emitUpdate();\n\n return sheet;\n }\n\n renameSheet(opts: {\n sheetName: string;\n newSheetName: string;\n workbookName: string;\n }) {\n const sheet = this.workbookManager.renameSheet(opts);\n\n // Update scoped named expressions\n this.namedExpressionManager.renameSheet(opts);\n\n // Update tables that belong to the renamed sheet\n this.tableManager.updateTablesForSheetRename(opts);\n\n // Update all formulas that reference this sheet\n this.workbookManager.updateAllFormulas((formula) =>\n renameSheetInFormula({\n formula,\n oldSheetName: opts.sheetName,\n newSheetName: opts.newSheetName,\n })\n );\n\n // Add engine-specific logic: re-evaluate since references might be affected\n this.reevaluate();\n this.eventManager.emitUpdate();\n\n return sheet;\n }\n\n getSheets(workbookName: string) {\n return this.workbookManager.getSheets(workbookName);\n }\n\n getSheet({\n workbookName,\n sheetName,\n }: {\n workbookName: string;\n sheetName: string;\n }) {\n return this.workbookManager.getSheet({ workbookName, sheetName });\n }\n\n getSheetSerialized(opts: {\n sheetName: string;\n workbookName: string;\n }): Map<string, SerializedCellValue> {\n return this.workbookManager.getSheetSerialized(opts);\n }\n\n //#endregion\n\n //#region Workbook\n addWorkbook(workbookName: string) {\n this.workbookManager.addWorkbook(workbookName);\n this.namedExpressionManager.addWorkbook(workbookName);\n this.tableManager.addWorkbook(workbookName);\n\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n removeWorkbook(workbookName: string) {\n this.workbookManager.removeWorkbook(workbookName);\n this.namedExpressionManager.removeWorkbook(workbookName);\n this.tableManager.removeWorkbook(workbookName);\n\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n cloneWorkbook(fromWorkbookName: string, toWorkbookName: string) {\n // Check if source workbook exists\n const sourceWorkbook = this.workbookManager\n .getWorkbooks()\n .get(fromWorkbookName);\n if (!sourceWorkbook) {\n throw new Error(`Source workbook \"${fromWorkbookName}\" not found`);\n }\n\n // Check if target workbook name already exists\n if (this.workbookManager.getWorkbooks().has(toWorkbookName)) {\n throw new Error(`Target workbook \"${toWorkbookName}\" already exists`);\n }\n\n // Create new workbook\n this.addWorkbook(toWorkbookName);\n\n // Clone all sheets from source workbook\n for (const [sheetName, sheet] of sourceWorkbook.sheets) {\n // Add sheet to target workbook\n this.addSheet({\n workbookName: toWorkbookName,\n sheetName: sheetName,\n });\n\n // Copy all cell content using setSheetContent for efficiency\n this.setSheetContent(\n {\n workbookName: toWorkbookName,\n sheetName: sheetName,\n },\n new Map(sheet.content)\n );\n }\n\n // Clone workbook-scoped named expressions\n const sourceWorkbookExpressions = this.namedExpressionManager\n .getNamedExpressions()\n .workbookExpressions.get(fromWorkbookName);\n if (sourceWorkbookExpressions) {\n for (const [name, expression] of sourceWorkbookExpressions) {\n this.addNamedExpression({\n expressionName: name,\n expression: expression.expression,\n workbookName: toWorkbookName,\n });\n }\n }\n\n // Clone sheet-scoped named expressions\n const sourceSheetExpressions = this.namedExpressionManager\n .getNamedExpressions()\n .sheetExpressions.get(fromWorkbookName);\n if (sourceSheetExpressions) {\n for (const [sheetName, sheetExpressions] of sourceSheetExpressions) {\n for (const [name, expression] of sheetExpressions) {\n this.addNamedExpression({\n expressionName: name,\n expression: expression.expression,\n workbookName: toWorkbookName,\n sheetName: sheetName,\n });\n }\n }\n }\n\n // Clone tables\n const sourceTables = this.tableManager.tables.get(fromWorkbookName);\n if (sourceTables) {\n for (const [tableName, table] of sourceTables) {\n this.tableManager.copyTable(\n {\n workbookName: fromWorkbookName,\n tableName: tableName,\n },\n {\n workbookName: toWorkbookName,\n tableName: tableName,\n }\n );\n }\n }\n\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n renameWorkbook(opts: { workbookName: string; newWorkbookName: string }) {\n this.workbookManager.renameWorkbook(opts);\n\n // Update scoped named expressions\n this.namedExpressionManager.renameWorkbook(opts);\n\n // Update tables that belong to the renamed sheet\n this.tableManager.updateTablesForWorkbookRename(opts);\n\n // Update all formulas that reference this workbook\n this.workbookManager.updateAllFormulas((formula) =>\n renameWorkbookInFormula({\n formula,\n oldWorkbookName: opts.workbookName,\n newWorkbookName: opts.newWorkbookName,\n })\n );\n\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n getWorkbooks() {\n return this.workbookManager.getWorkbooks();\n }\n //#endregion\n\n //#region CRUD Operations\n /**\n * Overrides the content of a sheet.\n * @param sheetName - The name of the sheet to set the content of\n * @param content - A map of cell addresses to their serialized values\n * @remarks This method is used to set the content of a sheet. It will re-evaluate all sheets to ensure all dependencies are resolved correctly.\n */\n setSheetContent(\n opts: { sheetName: string; workbookName: string },\n content: Map<string, SerializedCellValue>\n ) {\n this.workbookManager.setSheetContent(opts, content);\n\n // Re-evaluate all sheets to ensure all dependencies are resolved correctly\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n\n setCellContent(address: CellAddress, content: SerializedCellValue) {\n this.workbookManager.setCellContent(address, content);\n\n // Re-evaluate all sheets to ensure all dependencies are resolved correctly\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n //#endregion\n\n //#region Evaluation\n\n /**\n * Re-evaluates all sheets to ensure all dependencies are resolved correctly\n *\n * but just clears the evaluation cache\n */\n reevaluate() {\n this.evaluationManager.clearEvaluationCache();\n }\n //#endregion\n\n //#region Auto-fill\n /**\n * Auto-fills the fillRange based on the seedRange and the direction.\n */\n autoFill(\n opts: { sheetName: string; workbookName: string },\n /**\n * The user's original selection that defines the pattern/series.\n */\n seedRange: SpreadsheetRange,\n /**\n * the new cells populated by the drag, excluding the seed\n */\n fillRange: SpreadsheetRange,\n /**\n * The direction of the fill.\n */\n direction: FillDirection\n ) {\n this.autoFillManager.fill(opts, seedRange, fillRange, direction);\n }\n\n /**\n * Removes the content in the spreadsheet that is inside the range.\n */\n clearSpreadsheetRange(address: RangeAddress) {\n this.workbookManager.clearSpreadsheetRange(address);\n\n // Re-evaluate all sheets to ensure all dependencies are resolved correctly\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n //#endregion\n\n //#region State - UI library integration\n getState() {\n return {\n workbooks: this.workbookManager.getWorkbooks(),\n namedExpressions: this.namedExpressionManager.getNamedExpressions(),\n tables: this.tableManager.tables,\n };\n }\n\n onUpdate(listener: () => void) {\n return this.eventManager.onUpdate(listener);\n }\n\n serializeEngine(): string {\n return serialize(this.getState());\n }\n\n resetToSerializedEngine(data: string) {\n const deserialized = deserialize(data) as ReturnType<typeof this.getState>;\n\n this.workbookManager.resetWorkbooks(deserialized.workbooks);\n\n deserialized.workbooks.forEach((workbook) => {\n this.namedExpressionManager.addWorkbook(workbook.name);\n this.tableManager.addWorkbook(workbook.name);\n workbook.sheets.forEach((sheet) => {\n this.namedExpressionManager.addSheet({\n workbookName: workbook.name,\n sheetName: sheet.name,\n });\n });\n });\n\n this.namedExpressionManager.resetNamedExpressions(\n deserialized.namedExpressions\n );\n this.tableManager.resetTables(deserialized.tables);\n\n // Re-evaluate all sheets to ensure all dependencies are resolved correctly\n this.reevaluate();\n this.eventManager.emitUpdate();\n }\n //#endregion\n}\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBiC,IAAjC;AACyB,IAAzB;AAOO,IANP;AAOgC,IAAhC;AACuC,IAAvC;AAC+C,IAA/C;AACqC,IAArC;AACqC,IAArC;AACwC,IAAxC;AAE6B,IAA7B;AAAA;AAKO,MAAM,cAAc;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAKD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEP,WAAW,GAAG;AAAA,IACZ,KAAK,eAAe,IAAI;AAAA,IACxB,KAAK,kBAAkB,IAAI;AAAA,IAC3B,KAAK,yBAAyB,IAAI;AAAA,IAClC,KAAK,eAAe,IAAI,6BAAa,KAAK,eAAe;AAAA,IACzD,MAAM,eAAe,IAAI;AAAA,IACzB,KAAK,oBAAoB,IAAI,kCAC3B,cACA,KAAK,eACP;AAAA,IAEA,MAAM,mBAAmB,IAAI,0CAC3B,KAAK,cACL,KAAK,mBACL,KAAK,sBACP;AAAA,IAEA,KAAK,oBAAoB,IAAI,kCAC3B,KAAK,iBACL,KAAK,cACL,kBACA,KAAK,iBACP;AAAA,IAEA,KAAK,kBAAkB,IAAI,+BAAS,KAAK,iBAAiB,IAAI;AAAA,IAE9D,KAAK,mBAAmB,KAAK;AAAA,IAC7B,KAAK,0BAA0B,KAAK;AAAA,IACpC,KAAK,gBAAgB,KAAK;AAAA,IAC1B,KAAK,gBAAgB,KAAK;AAAA,IAC1B,KAAK,qBAAqB,KAAK;AAAA,IAC/B,KAAK,mBAAmB,KAAK;AAAA,IAC7B,KAAK,qBAAqB,KAAK;AAAA;AAAA,SAM1B,UAAU,GAAkB;AAAA,IACjC,OAAO,IAAI;AAAA;AAAA,EAIb,uBAAuB,CACrB,aACoC;AAAA,IACpC,OAAO,KAAK,kBAAkB,wBAAwB,WAAW;AAAA;AAAA,EAGnE,YAAY,CAAC,aAA0B,OAAsC;AAAA,IAC3E,MAAM,SAAS,KAAK,wBAAwB,WAAW;AAAA,IACvD,IAAI,CAAC,QAAQ;AAAA,MACX,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,KAAK,kBAAkB,kCAC5B,QACA,aACA,KACF;AAAA;AAAA,EAGF,iBAAiB,CACf,SACoC;AAAA,IACpC,MAAM,IAAI,MAAM,iBAAiB;AAAA;AAAA,EAGnC,iBAAiB,CACf,SACoC;AAAA,IACpC,MAAM,IAAI,MAAM,iBAAiB;AAAA;AAAA,EAMnC,kBAAkB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,KAMC;AAAA,IACD,KAAK,uBAAuB,mBAAmB;AAAA,MAC7C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IAGD,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAG/B,qBAAqB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,KAKC;AAAA,IACD,MAAM,QAAQ,KAAK,uBAAuB,sBAAsB;AAAA,MAC9D;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IAED,IAAI,OAAO;AAAA,MAET,KAAK,WAAW;AAAA,MAChB,KAAK,aAAa,WAAW;AAAA,IAC/B;AAAA,IAEA,OAAO;AAAA;AAAA,EAGT,qBAAqB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,KAMC;AAAA,IACD,KAAK,uBAAuB,sBAAsB;AAAA,MAChD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IAGD,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAG/B,qBAAqB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,KAMC;AAAA,IACD,MAAM,SAAS,KAAK,uBAAuB,sBAAsB;AAAA,MAC/D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IAGD,KAAK,gBAAgB,kBAAkB,CAAC,YACtC,+DAA+B,SAAS,gBAAgB,OAAO,CACjE;AAAA,IAGA,KAAK,uBAAuB,0BAA0B,CAAC,YACrD,+DAA+B,SAAS,gBAAgB,OAAO,CACjE;AAAA,IAGA,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA,IAE7B,OAAO;AAAA;AAAA,EAGT,mBAAmB,CACjB,MAgBA;AAAA,IACA,KAAK,uBAAuB,oBAAoB,IAAI;AAAA,IAEpD,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAK/B,QAAQ,CAAC,OAON;AAAA,IACD,MAAM,QAAQ,KAAK,aAAa,SAAS;AAAA,SACpC;AAAA,MACH,cAAc,CAAC,gBACb,KAAK,aAAa,WAAW;AAAA,IACjC,CAAC;AAAA,IAGD,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA,IAE7B,OAAO;AAAA;AAAA,EAGT,WAAW,CACT,cACA,OACA;AAAA,IACA,KAAK,aAAa,YAAY,cAAc,KAAK;AAAA,IAGjD,KAAK,gBAAgB,kBAAkB,CAAC,YACtC,0CAAqB,SAAS,MAAM,SAAS,MAAM,OAAO,CAC5D;AAAA,IAGA,KAAK,uBAAuB,0BAA0B,CAAC,YACrD,0CAAqB,SAAS,MAAM,SAAS,MAAM,OAAO,CAC5D;AAAA,IAGA,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAG/B,WAAW,CAAC,MAOT;AAAA,IACD,KAAK,aAAa,YAAY;AAAA,SACzB;AAAA,MACH,cAAc,CAAC,gBACb,KAAK,aAAa,WAAW;AAAA,IACjC,CAAC;AAAA,IAGD,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAG/B,WAAW,CAAC,MAAmD;AAAA,IAC7D,MAAM,QAAQ,KAAK,aAAa,YAAY,IAAI;AAAA,IAEhD,IAAI,OAAO;AAAA,MAET,KAAK,WAAW;AAAA,MAChB,KAAK,aAAa,WAAW;AAAA,IAC/B;AAAA,IAEA,OAAO;AAAA;AAAA,EAGT,WAAW,CAAC,QAAmD;AAAA,IAC7D,KAAK,aAAa,YAAY,MAAM;AAAA,IACpC,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAG/B,SAAS,CAAC,cAAsB;AAAA,IAC9B,OAAO,KAAK,aAAa,UAAU,YAAY;AAAA;AAAA,EAGjD,aAAa,CAAC,aAAuD;AAAA,IACnE,OAAO,KAAK,aAAa,cAAc,WAAW;AAAA;AAAA,EAMpD,QAAQ,CAAC,MAAmD;AAAA,IAC1D,MAAM,WAAW,KAAK,gBAAgB,SAAS,IAAI;AAAA,IACnD,MAAM,UAAU,KAAK,uBAAuB,SAAS,IAAI;AAAA,IACzD,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA,IAC7B,OAAO;AAAA;AAAA,EAGT,WAAW,CAAC,MAAmD;AAAA,IAC7D,MAAM,QAAQ,KAAK,gBAAgB,YAAY,IAAI;AAAA,IAGnD,KAAK,uBAAuB,YAAY,IAAI;AAAA,IAC5C,KAAK,aAAa,YAAY,IAAI;AAAA,IAGlC,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA,IAE7B,OAAO;AAAA;AAAA,EAGT,WAAW,CAAC,MAIT;AAAA,IACD,MAAM,QAAQ,KAAK,gBAAgB,YAAY,IAAI;AAAA,IAGnD,KAAK,uBAAuB,YAAY,IAAI;AAAA,IAG5C,KAAK,aAAa,2BAA2B,IAAI;AAAA,IAGjD,KAAK,gBAAgB,kBAAkB,CAAC,YACtC,0CAAqB;AAAA,MACnB;AAAA,MACA,cAAc,KAAK;AAAA,MACnB,cAAc,KAAK;AAAA,IACrB,CAAC,CACH;AAAA,IAGA,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA,IAE7B,OAAO;AAAA;AAAA,EAGT,SAAS,CAAC,cAAsB;AAAA,IAC9B,OAAO,KAAK,gBAAgB,UAAU,YAAY;AAAA;AAAA,EAGpD,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,KAIC;AAAA,IACD,OAAO,KAAK,gBAAgB,SAAS,EAAE,cAAc,UAAU,CAAC;AAAA;AAAA,EAGlE,kBAAkB,CAAC,MAGkB;AAAA,IACnC,OAAO,KAAK,gBAAgB,mBAAmB,IAAI;AAAA;AAAA,EAMrD,WAAW,CAAC,cAAsB;AAAA,IAChC,KAAK,gBAAgB,YAAY,YAAY;AAAA,IAC7C,KAAK,uBAAuB,YAAY,YAAY;AAAA,IACpD,KAAK,aAAa,YAAY,YAAY;AAAA,IAE1C,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAG/B,cAAc,CAAC,cAAsB;AAAA,IACnC,KAAK,gBAAgB,eAAe,YAAY;AAAA,IAChD,KAAK,uBAAuB,eAAe,YAAY;AAAA,IACvD,KAAK,aAAa,eAAe,YAAY;AAAA,IAE7C,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAG/B,aAAa,CAAC,kBAA0B,gBAAwB;AAAA,IAE9D,MAAM,iBAAiB,KAAK,gBACzB,aAAa,EACb,IAAI,gBAAgB;AAAA,IACvB,IAAI,CAAC,gBAAgB;AAAA,MACnB,MAAM,IAAI,MAAM,oBAAoB,6BAA6B;AAAA,IACnE;AAAA,IAGA,IAAI,KAAK,gBAAgB,aAAa,EAAE,IAAI,cAAc,GAAG;AAAA,MAC3D,MAAM,IAAI,MAAM,oBAAoB,gCAAgC;AAAA,IACtE;AAAA,IAGA,KAAK,YAAY,cAAc;AAAA,IAG/B,YAAY,WAAW,UAAU,eAAe,QAAQ;AAAA,MAEtD,KAAK,SAAS;AAAA,QACZ,cAAc;AAAA,QACd;AAAA,MACF,CAAC;AAAA,MAGD,KAAK,gBACH;AAAA,QACE,cAAc;AAAA,QACd;AAAA,MACF,GACA,IAAI,IAAI,MAAM,OAAO,CACvB;AAAA,IACF;AAAA,IAGA,MAAM,4BAA4B,KAAK,uBACpC,oBAAoB,EACpB,oBAAoB,IAAI,gBAAgB;AAAA,IAC3C,IAAI,2BAA2B;AAAA,MAC7B,YAAY,MAAM,eAAe,2BAA2B;AAAA,QAC1D,KAAK,mBAAmB;AAAA,UACtB,gBAAgB;AAAA,UAChB,YAAY,WAAW;AAAA,UACvB,cAAc;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAGA,MAAM,yBAAyB,KAAK,uBACjC,oBAAoB,EACpB,iBAAiB,IAAI,gBAAgB;AAAA,IACxC,IAAI,wBAAwB;AAAA,MAC1B,YAAY,WAAW,qBAAqB,wBAAwB;AAAA,QAClE,YAAY,MAAM,eAAe,kBAAkB;AAAA,UACjD,KAAK,mBAAmB;AAAA,YACtB,gBAAgB;AAAA,YAChB,YAAY,WAAW;AAAA,YACvB,cAAc;AAAA,YACd;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAGA,MAAM,eAAe,KAAK,aAAa,OAAO,IAAI,gBAAgB;AAAA,IAClE,IAAI,cAAc;AAAA,MAChB,YAAY,WAAW,UAAU,cAAc;AAAA,QAC7C,KAAK,aAAa,UAChB;AAAA,UACE,cAAc;AAAA,UACd;AAAA,QACF,GACA;AAAA,UACE,cAAc;AAAA,UACd;AAAA,QACF,CACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAG/B,cAAc,CAAC,MAAyD;AAAA,IACtE,KAAK,gBAAgB,eAAe,IAAI;AAAA,IAGxC,KAAK,uBAAuB,eAAe,IAAI;AAAA,IAG/C,KAAK,aAAa,8BAA8B,IAAI;AAAA,IAGpD,KAAK,gBAAgB,kBAAkB,CAAC,YACtC,gDAAwB;AAAA,MACtB;AAAA,MACA,iBAAiB,KAAK;AAAA,MACtB,iBAAiB,KAAK;AAAA,IACxB,CAAC,CACH;AAAA,IAEA,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAG/B,YAAY,GAAG;AAAA,IACb,OAAO,KAAK,gBAAgB,aAAa;AAAA;AAAA,EAW3C,eAAe,CACb,MACA,SACA;AAAA,IACA,KAAK,gBAAgB,gBAAgB,MAAM,OAAO;AAAA,IAGlD,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAG/B,cAAc,CAAC,SAAsB,SAA8B;AAAA,IACjE,KAAK,gBAAgB,eAAe,SAAS,OAAO;AAAA,IAGpD,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAW/B,UAAU,GAAG;AAAA,IACX,KAAK,kBAAkB,qBAAqB;AAAA;AAAA,EAQ9C,QAAQ,CACN,MAIA,WAIA,WAIA,WACA;AAAA,IACA,KAAK,gBAAgB,KAAK,MAAM,WAAW,WAAW,SAAS;AAAA;AAAA,EAMjE,qBAAqB,CAAC,SAAuB;AAAA,IAC3C,KAAK,gBAAgB,sBAAsB,OAAO;AAAA,IAGlD,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAAA,EAK/B,QAAQ,GAAG;AAAA,IACT,OAAO;AAAA,MACL,WAAW,KAAK,gBAAgB,aAAa;AAAA,MAC7C,kBAAkB,KAAK,uBAAuB,oBAAoB;AAAA,MAClE,QAAQ,KAAK,aAAa;AAAA,IAC5B;AAAA;AAAA,EAGF,QAAQ,CAAC,UAAsB;AAAA,IAC7B,OAAO,KAAK,aAAa,SAAS,QAAQ;AAAA;AAAA,EAG5C,eAAe,GAAW;AAAA,IACxB,OAAO,gCAAU,KAAK,SAAS,CAAC;AAAA;AAAA,EAGlC,uBAAuB,CAAC,MAAc;AAAA,IACpC,MAAM,eAAe,kCAAY,IAAI;AAAA,IAErC,KAAK,gBAAgB,eAAe,aAAa,SAAS;AAAA,IAE1D,aAAa,UAAU,QAAQ,CAAC,aAAa;AAAA,MAC3C,KAAK,uBAAuB,YAAY,SAAS,IAAI;AAAA,MACrD,KAAK,aAAa,YAAY,SAAS,IAAI;AAAA,MAC3C,SAAS,OAAO,QAAQ,CAAC,UAAU;AAAA,QACjC,KAAK,uBAAuB,SAAS;AAAA,UACnC,cAAc,SAAS;AAAA,UACvB,WAAW,MAAM;AAAA,QACnB,CAAC;AAAA,OACF;AAAA,KACF;AAAA,IAED,KAAK,uBAAuB,sBAC1B,aAAa,gBACf;AAAA,IACA,KAAK,aAAa,YAAY,aAAa,MAAM;AAAA,IAGjD,KAAK,WAAW;AAAA,IAChB,KAAK,aAAa,WAAW;AAAA;AAGjC;",
8
- "debugId": "44D794D7FD29ABC164756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "71251CFBE2EFBD8864756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -32,14 +32,14 @@ __export(exports_dependency_manager, {
32
32
  DependencyManager: () => DependencyManager
33
33
  });
34
34
  module.exports = __toCommonJS(exports_dependency_manager);
35
- var import_evaluation_context = require("src/evaluator/evaluation-context");
35
+ var import_evaluation_context = require("../../evaluator/evaluation-context.cjs");
36
36
  var import_utils = require("../utils.cjs");
37
- var import_ast_evaluation_node = require("src/evaluator/dependency-nodes/ast-evaluation-node");
38
- var import_cell_value_node = require("src/evaluator/dependency-nodes/cell-value-node");
39
- var import_empty_cell_evaluation_node = require("src/evaluator/dependency-nodes/empty-cell-evaluation-node");
40
- var import_range_evaluation_node = require("src/evaluator/range-evaluation-node");
41
- var import_formatter = require("src/parser/formatter");
42
- var import_spill_meta_node = require("src/evaluator/dependency-nodes/spill-meta-node");
37
+ var import_ast_evaluation_node = require("../../evaluator/dependency-nodes/ast-evaluation-node.cjs");
38
+ var import_cell_value_node = require("../../evaluator/dependency-nodes/cell-value-node.cjs");
39
+ var import_empty_cell_evaluation_node = require("../../evaluator/dependency-nodes/empty-cell-evaluation-node.cjs");
40
+ var import_spill_meta_node = require("../../evaluator/dependency-nodes/spill-meta-node.cjs");
41
+ var import_range_evaluation_node = require("../../evaluator/range-evaluation-node.cjs");
42
+ var import_formatter = require("../../parser/formatter.cjs");
43
43
 
44
44
  class DependencyManager {
45
45
  cacheManager;
@@ -617,4 +617,4 @@ class DependencyManager {
617
617
  }
618
618
  }
619
619
 
620
- //# debugId=62F68ED5F4FB614764756E2164756E21
620
+ //# debugId=1CEF6358C34629CE64756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/core/managers/dependency-manager.ts"],
4
4
  "sourcesContent": [
5
- "import {\n contextDependencyKeys,\n eligibleKeysForContext,\n getContextDependencyKey,\n type ContextDependency,\n type ContextDependencyType,\n} from \"src/evaluator/evaluation-context\";\nimport {\n type CellAddress,\n type EvaluationOrder,\n type SpilledValue,\n} from \"../types.cjs\";\nimport { isCellInRange, keyToCellAddress } from \"../utils.cjs\";\n\nimport { AstEvaluationNode } from \"src/evaluator/dependency-nodes/ast-evaluation-node\";\nimport { CellValueNode } from \"src/evaluator/dependency-nodes/cell-value-node\";\nimport { EmptyCellEvaluationNode } from \"src/evaluator/dependency-nodes/empty-cell-evaluation-node\";\nimport { RangeEvaluationNode } from \"src/evaluator/range-evaluation-node\";\nimport type { ASTNode } from \"src/parser/ast\";\nimport { astToString } from \"src/parser/formatter\";\nimport { CacheManager } from \"./cache-manager.cjs\";\nimport type {\n CellNodeKeyDictionary,\n CellNodeType,\n DependencyNode,\n} from \"./dependency-node.cjs\";\nimport { WorkbookManager } from \"./workbook-manager.cjs\";\nimport { SpillMetaNode } from \"src/evaluator/dependency-nodes/spill-meta-node\";\nimport { flags } from \"src/debug/flags\";\n\nexport interface DependencyTreeNode {\n type: \"cell\" | \"range\" | \"empty\";\n circular?: boolean;\n key: string;\n directDepsUpdated?: boolean;\n resolved?: boolean;\n canResolve: boolean;\n resultType:\n | \"awaiting-evaluation\"\n | \"spilled-values\"\n | \"value\"\n | \"range\"\n | \"error\"\n | \"does-not-spill\";\n deps?: DependencyTreeNode[];\n frontierDependencies?: DependencyTreeNode[];\n self?: boolean;\n _debug?: {\n rawFrontierDependencies?: string[];\n discardedFrontierDependencies?: string[];\n activeFrontierDependencies?: string[];\n };\n}\n\n/**\n * The DependencyManager is responsible for storing the evaluated values and their dependencies.\n */\nexport class DependencyManager {\n /**\n * The dependency graph\n */\n private evaluatedNodes: Map<\n /**\n * key is the cell key, from cellAddressToKey\n */\n string,\n CellValueNode\n > = new Map();\n\n private spillMetaNodes: Map<string, SpillMetaNode> = new Map();\n\n private emptyCells: Map<string, EmptyCellEvaluationNode> = new Map();\n\n /**\n * registry of spilled values\n */\n private _spilledValues: Map<\n /**\n * key is the dependency node key, from dependencyNodeToKey for the origin cell\n */\n string,\n SpilledValue\n > = new Map();\n\n /**\n * Key is workbook:sheetName:rangeKey, e.g. Workbook1:Sheet1:A1:D10, from rangeAddressToKey\n */\n private ranges: Map<string, RangeEvaluationNode> = new Map();\n\n constructor(\n private cacheManager: CacheManager,\n private workbookManager: WorkbookManager\n ) {}\n\n public get spilledValues(): IterableIterator<SpilledValue> {\n return this._spilledValues.values();\n }\n\n isSpillOrigin(cellAddress: CellAddress): boolean {\n for (const spilledValue of this._spilledValues.values()) {\n if (\n spilledValue.origin.sheetName !== cellAddress.sheetName ||\n spilledValue.origin.workbookName !== cellAddress.workbookName\n ) {\n continue;\n }\n if (\n spilledValue.origin.colIndex === cellAddress.colIndex &&\n spilledValue.origin.rowIndex === cellAddress.rowIndex\n ) {\n return true;\n }\n }\n return false;\n }\n\n getSpillValue(cellAddress: CellAddress): SpilledValue | undefined {\n for (const spilledValue of this._spilledValues.values()) {\n if (\n spilledValue.origin.sheetName !== cellAddress.sheetName ||\n spilledValue.origin.workbookName !== cellAddress.workbookName\n ) {\n continue;\n }\n if (\n spilledValue.origin.colIndex === cellAddress.colIndex &&\n spilledValue.origin.rowIndex === cellAddress.rowIndex\n ) {\n return undefined;\n }\n if (isCellInRange(cellAddress, spilledValue.spillOnto)) {\n return spilledValue;\n }\n }\n return undefined;\n }\n\n getSpilledAddress(\n cellAddress: CellAddress,\n /**\n * if the spilled value is already available, we can use it to get the source address\n */\n passedSpilledValue?: SpilledValue\n ): { address: CellAddress; spillOffset: { x: number; y: number } } {\n const spilledValue = passedSpilledValue ?? this.getSpillValue(cellAddress);\n if (!spilledValue) {\n throw new Error(\"Cell is not spilled\");\n }\n const offsetLeft = cellAddress.colIndex - spilledValue.origin.colIndex;\n const offsetTop = cellAddress.rowIndex - spilledValue.origin.rowIndex;\n const address: CellAddress = {\n ...cellAddress,\n colIndex: spilledValue.origin.colIndex + offsetLeft,\n rowIndex: spilledValue.origin.rowIndex + offsetTop,\n };\n if (offsetLeft === 0 && offsetTop === 0) {\n throw new Error(\n \"Spilled value is the same as the cell address! The origin has a pre-calculated value that can be used\"\n );\n }\n return { address, spillOffset: { x: offsetLeft, y: offsetTop } };\n }\n\n clearEvaluationCache(): void {\n this.cacheManager.clear();\n this.evaluatedNodes.clear();\n this.emptyCells.clear();\n this.asts.clear();\n this.spillMetaNodes.clear();\n this.ranges.clear();\n this._spilledValues.clear();\n }\n\n setSpilledValue(nodeKey: string, spilledValue: SpilledValue): void {\n this._spilledValues.set(nodeKey.replace(/^[^:]+:/, \"\"), spilledValue);\n }\n\n getSpilledValue(nodeKey: string): SpilledValue | undefined {\n return this._spilledValues.get(nodeKey.replace(/^[^:]+:/, \"\"));\n }\n\n getEmptyCellNode(nodeKey: string): EmptyCellEvaluationNode {\n if (!nodeKey.startsWith(\"empty:\")) {\n throw new Error(\"Invalid empty cell node key: \" + nodeKey);\n }\n if (!this.emptyCells.has(nodeKey)) {\n const node = new EmptyCellEvaluationNode(\n nodeKey,\n this,\n this.workbookManager\n );\n this.emptyCells.set(nodeKey, node);\n return node;\n }\n return this.emptyCells.get(nodeKey)!;\n }\n\n getSpillMetaNode(nodeKey: string): SpillMetaNode {\n if (!nodeKey.startsWith(\"spill-meta:\")) {\n throw new Error(\"Invalid spill meta node key: \" + nodeKey);\n }\n if (!this.spillMetaNodes.has(nodeKey)) {\n const node = new SpillMetaNode(nodeKey);\n this.spillMetaNodes.set(nodeKey, node);\n return node;\n }\n return this.spillMetaNodes.get(nodeKey)!;\n }\n\n getCellValueNode(nodeKey: string): CellValueNode {\n if (!nodeKey.startsWith(\"cell-value:\")) {\n throw new Error(\"Invalid cell value node key: \" + nodeKey);\n }\n if (!this.evaluatedNodes.has(nodeKey)) {\n const node = new CellValueNode(nodeKey);\n this.evaluatedNodes.set(nodeKey, node);\n return node;\n }\n return this.evaluatedNodes.get(nodeKey)!;\n }\n\n getCellValueOrEmptyCellNode(\n nodeKey: string\n ): CellValueNode | EmptyCellEvaluationNode {\n const cellAddress = keyToCellAddress(nodeKey);\n\n const emptyKey = nodeKey.replace(/^[^:]+:/, \"empty:\");\n const cellValueKey = nodeKey.replace(/^[^:]+:/, \"cell-value:\");\n\n if (this.workbookManager.isCellEmpty(cellAddress)) {\n return this.getEmptyCellNode(emptyKey);\n }\n\n return this.getCellValueNode(cellValueKey);\n }\n\n getSpillMetaOrEmptySpillMetaNode(\n nodeKey: string\n ): SpillMetaNode | EmptyCellEvaluationNode {\n const cellAddress = keyToCellAddress(nodeKey);\n\n const emptyKey = nodeKey.replace(/^[^:]+:/, \"empty:\");\n const spillMetaKey = nodeKey.replace(/^[^:]+:/, \"spill-meta:\");\n\n if (this.workbookManager.isCellEmpty(cellAddress)) {\n return this.getEmptyCellNode(emptyKey);\n }\n\n return this.getSpillMetaNode(spillMetaKey);\n }\n\n lookupCellNode<T extends CellNodeType>(\n nodeKey: string,\n types: T[]\n ): CellNodeKeyDictionary[T][] {\n const cellAddress = keyToCellAddress(nodeKey);\n\n const emptyKey = nodeKey.replace(/^[^:]+:/, \"empty:\");\n const cellValueKey = nodeKey.replace(/^[^:]+:/, \"cell-value:\");\n const cellValueNode = this.evaluatedNodes.get(cellValueKey);\n const cellMetaKey = nodeKey.replace(/^[^:]+:/, \"cell-meta:\");\n const cellMetaNode = this.evaluatedNodes.get(cellMetaKey);\n\n if (this.workbookManager.isCellEmpty(cellAddress)) {\n if ((types as string[]).includes(\"empty\")) {\n return [this.getEmptyCellNode(emptyKey) as any];\n } else {\n return [];\n }\n }\n\n const results: any[] = [];\n\n if ((types as string[]).includes(\"cell\")) {\n if (cellValueNode) {\n results.push(cellValueNode);\n } else {\n results.push(this.getCellValueNode(cellValueKey));\n }\n }\n\n if (this.workbookManager.isFormulaCell(cellAddress)) {\n if ((types as string[]).includes(\"spill-meta\")) {\n if (cellMetaNode) {\n results.push(cellMetaNode);\n } else {\n results.push(this.getSpillMetaNode(cellValueKey));\n }\n }\n }\n\n return results;\n }\n\n getRangeNode(rangeKey: string): RangeEvaluationNode {\n if (!rangeKey.startsWith(\"range:\")) {\n throw new Error(\"Invalid range node key: \" + rangeKey);\n }\n if (!this.ranges.has(rangeKey)) {\n const node = new RangeEvaluationNode(\n rangeKey,\n this,\n this.workbookManager\n );\n this.ranges.set(rangeKey, node);\n return node;\n }\n return this.ranges.get(rangeKey)!;\n }\n\n asts: Map<\n /**\n * ast key\n */\n string,\n {\n entries: Map<\n /**\n * context dependency key\n */\n string,\n {\n evalNode: AstEvaluationNode;\n contextDependency: ContextDependency;\n }\n >;\n }\n > = new Map();\n\n getAstNode(\n ast: ASTNode,\n currentContext: Omit<Required<ContextDependency>, \"tableName\"> & {\n tableName?: string;\n }\n ): AstEvaluationNode {\n const astKey = `ast:${astToString(ast)}`; // cache normalize this later\n const astEntries = this.asts.get(astKey);\n\n const keys = eligibleKeysForContext(currentContext);\n\n for (const key of keys) {\n const astEntry = astEntries?.entries.get(key);\n if (astEntry) {\n return astEntry.evalNode;\n }\n }\n\n // if any of the ast entries match the current context, then we can return the ast node\n // otherwise we have to evalute the ast node to understand if it is context dependent\n // and later it will be saved using saveAstNode\n // if (astEntries) {\n // for (const entry of astEntries.entries.values()) {\n // // e.g. we have a row dependent ast dependency, dependent on row 1, and the current context dependency has rowIndex 1\n // // then we will get a match\n // const matches = Object.entries(entry.contextDependency).every(\n // ([key, value]) => {\n // if (typeof value === \"undefined\") {\n // return true;\n // }\n // return currentContext[key as keyof ContextDependency] === value;\n // }\n // );\n // if (matches) {\n // return entry.evalNode;\n // }\n // }\n // }\n\n // by default the ast node is cell specific\n // but later, setContextDependency is called with a more open context dependency\n const node = new AstEvaluationNode(ast, currentContext);\n // initially we store it as a cell, sheet, workbook and table dependent node\n // but later, once resolved, we can store it under a looser dependency key, e.g. only sheet, workbook and table dependent\n this.saveAstNode(node, currentContext);\n return node;\n }\n\n /**\n * Once an AST node is evaluated, we know if it is context dependent\n * and will thus save it under the correct cache key according to its\n * contextDependency\n *\n * only resolved ast nodes can be saved\n */\n private saveAstNode(\n ast: AstEvaluationNode,\n contextDependency: ContextDependency\n ) {\n const astKey = ast.key;\n const contextDependencyKey = getContextDependencyKey(contextDependency);\n const astEntries = this.asts.get(astKey);\n\n if (astEntries) {\n // if we don't already have an entry, then let's add it\n astEntries.entries.set(contextDependencyKey, {\n evalNode: ast,\n contextDependency,\n });\n } else {\n this.asts.set(astKey, {\n entries: new Map([\n [contextDependencyKey, { evalNode: ast, contextDependency }],\n ]),\n });\n }\n }\n\n getEvaluatedNodes(): Map<string, CellValueNode> {\n return this.evaluatedNodes;\n }\n\n //#region dependency graph methods\n\n /**\n * Get transitive dependencies and transitive frontier dependencies\n * This is only used by buildEvaluationOrder, so we'll optimize it there\n */\n getTransitiveDepsForEvalOrder(\n node: DependencyNode,\n visited: Set<DependencyNode> = new Set()\n ): Set<DependencyNode> {\n // Prevent infinite recursion\n if (visited.has(node)) {\n return new Set();\n }\n\n // If the node is resolved, then we don't need to evaluate it\n if (node && node.resolved) {\n return new Set();\n }\n\n // Mark this node as visited for cycle detection\n visited.add(node);\n\n const allNodes = new Set<DependencyNode>();\n allNodes.add(node);\n\n // Get direct dependencies (regular + frontier)\n const directDeps = node.getDependencies();\n\n // Recursively get transitive dependencies for each direct dependency\n for (const dep of directDeps) {\n if (!visited.has(dep)) {\n const depTransitiveDeps = this.getTransitiveDepsForEvalOrder(\n dep,\n visited\n );\n for (const transitiveDep of depTransitiveDeps) {\n allNodes.add(transitiveDep);\n }\n }\n }\n\n // Remove this node from visited set for other branches\n visited.delete(node);\n\n return allNodes;\n }\n\n /**\n * Build evaluation order for a cell using SCC-based condensation DAG approach\n *\n * Algorithm:\n * 1. Discover all transitive dependencies (skipping resolved nodes)\n * 2. Find SCCs using Tarjan's algorithm\n * 3. Create condensation DAG from SCCs\n * 4. Topologically sort the condensation DAG using Kahn's algorithm\n * 5. For each SCC, create internal evaluation order with cycle breaking\n * 6. Join the sorted SCC evaluation orders to create final evaluation order\n */\n buildEvaluationOrder(\n node: CellValueNode | EmptyCellEvaluationNode\n ): EvaluationOrder {\n if (node.resolved && this.cacheManager.getEvaluationOrder(node.key)) {\n return this.cacheManager.getEvaluationOrder(node.key)!;\n }\n\n // Phase 1: Discover all transitive dependencies (skipping resolved nodes)\n const allNodes = new Map<string, DependencyNode>();\n const visitedForDiscovery = new Set<DependencyNode>();\n\n const discoverNodes = (currentNode: DependencyNode) => {\n if (currentNode && currentNode.resolved) {\n return;\n }\n\n if (!allNodes.has(currentNode.key)) {\n allNodes.set(currentNode.key, currentNode);\n }\n\n if (visitedForDiscovery.has(currentNode)) {\n return;\n }\n\n visitedForDiscovery.add(currentNode);\n\n const allDeps = currentNode.getAllDependencies();\n for (const dep of allDeps) {\n discoverNodes(dep);\n }\n };\n\n discoverNodes(node);\n\n if (allNodes.size === 0 && node && node.resolved) {\n const result: EvaluationOrder = {\n evaluationOrder: new Set([node]),\n hasCycle: false,\n hash: this.computeHash(new Set([node])),\n };\n\n if (node && node.resolved) {\n this.cacheManager.setEvaluationOrder(node.key, result);\n }\n\n return result;\n }\n\n // Phase 2: Find SCCs using Tarjan's algorithm\n // Build SCCs considering ALL dependencies (soft + hard edges)\n const sccs = this.findSCCs(allNodes, true);\n\n // Phase 3: Create condensation DAG and check for cached SCCs\n const nodeToSCCId = new Map<DependencyNode, number>();\n const sccList: import(\"../types.cjs\").SCC[] = [];\n\n for (let i = 0; i < sccs.length; i++) {\n const sccNodes = sccs[i]!;\n\n // Check if all nodes in this SCC are resolved\n const allResolved = Array.from(sccNodes).every((n) => n.resolved);\n\n // Create SCC hash for caching\n const sccHash = Array.from(sccNodes)\n .map((n) => n.key)\n .sort()\n .join(\"|\");\n\n // Try to get cached SCC if it's resolved\n let scc: import(\"../types.cjs\").SCC;\n const cachedSCC = allResolved\n ? this.cacheManager.getSCC(sccHash)\n : undefined;\n\n if (cachedSCC) {\n scc = cachedSCC;\n } else {\n // Build evaluation order for this SCC with cycle breaking\n const sccEvalOrder = this.buildSCCEvaluationOrder(sccNodes);\n\n // Find hard-edge SCCs within this soft-edge SCC\n // Hard-edge SCCs are formed by only regular dependencies\n const hardEdgeSCCs = this.findSCCs(\n new Map(Array.from(sccNodes).map((n) => [n.key, n])),\n false // Use only hard edges (regular dependencies)\n );\n\n scc = {\n id: i,\n nodes: sccNodes,\n evaluationOrder: sccEvalOrder,\n resolved: allResolved,\n hardEdgeSCCs,\n };\n\n // Cache if resolved\n if (allResolved) {\n this.cacheManager.setSCC(sccHash, scc);\n }\n }\n\n sccList.push(scc);\n\n for (const n of sccNodes) {\n nodeToSCCId.set(n, i);\n }\n }\n\n // Build SCC dependency graph\n // Edge from A to B means A depends on B, so B must be evaluated before A\n const sccGraph = new Map<number, Set<number>>();\n for (let i = 0; i < sccList.length; i++) {\n sccGraph.set(i, new Set());\n }\n\n for (const [_, n] of allNodes) {\n const nSCCId = nodeToSCCId.get(n)!;\n // Use ALL dependencies (regular + frontier) for the condensation DAG\n // This ensures proper evaluation order even with frontier dependencies\n const deps = n.getAllDependencies();\n\n for (const dep of deps) {\n if (!allNodes.has(dep.key)) continue;\n\n const depSCCId = nodeToSCCId.get(dep)!;\n // n depends on dep, so dep's SCC must come before n's SCC\n // Add edge from dep's SCC to n's SCC\n if (nSCCId !== depSCCId) {\n sccGraph.get(depSCCId)!.add(nSCCId);\n }\n }\n }\n\n // Phase 4: Topologically sort SCCs using Kahn's algorithm\n const inDegree = new Map<number, number>();\n for (let i = 0; i < sccList.length; i++) {\n inDegree.set(i, 0);\n }\n\n for (const [_, deps] of sccGraph) {\n for (const toId of deps) {\n inDegree.set(toId, inDegree.get(toId)! + 1);\n }\n }\n\n const queue: number[] = [];\n for (let i = 0; i < sccList.length; i++) {\n if (inDegree.get(i) === 0) {\n queue.push(i);\n }\n }\n\n const sortedSCCIds: number[] = [];\n while (queue.length > 0) {\n const sccId = queue.shift()!;\n sortedSCCIds.push(sccId);\n\n const deps = sccGraph.get(sccId)!;\n for (const depId of deps) {\n const newInDegree = inDegree.get(depId)! - 1;\n inDegree.set(depId, newInDegree);\n if (newInDegree === 0) {\n queue.push(depId);\n }\n }\n }\n\n // Phase 5: Join evaluation orders from sorted SCCs\n const evaluationOrderArray: DependencyNode[] = [];\n for (const sccId of sortedSCCIds) {\n const scc = sccList[sccId]!;\n evaluationOrderArray.push(...scc.evaluationOrder);\n }\n\n const evaluationOrder = new Set(evaluationOrderArray);\n\n // Identify cycle nodes from hard-edge SCCs\n const cycleNodes = new Set<DependencyNode>();\n for (const scc of sccList) {\n for (const hardEdgeSCC of scc.hardEdgeSCCs) {\n // A hard-edge SCC with multiple nodes or a self-loop indicates a real cycle\n if (hardEdgeSCC.size > 1) {\n for (const n of hardEdgeSCC) {\n cycleNodes.add(n);\n }\n } else if (hardEdgeSCC.size === 1) {\n const node = Array.from(hardEdgeSCC)[0]!;\n if (node.getDependencies().has(node)) {\n cycleNodes.add(node);\n }\n }\n }\n }\n\n const hasCycle = cycleNodes.size > 0;\n const result: EvaluationOrder = {\n evaluationOrder,\n hasCycle,\n ...(hasCycle && { cycleNodes }),\n hash: this.computeGraphHash(allNodes, sccList),\n sccDAG: {\n sccList,\n sccGraph,\n },\n };\n\n if (node && node.resolved) {\n this.cacheManager.setEvaluationOrder(node.key, result);\n }\n\n return result;\n }\n\n /**\n * Find strongly connected components using Tarjan's algorithm\n * @param nodes - Map of nodes to analyze\n * @param includeFrontier - If true, use getAllDependencies(); if false, use getDependencies()\n * @returns Array of SCCs (each SCC is a Set of nodes)\n */\n private findSCCs(\n nodes: Map<string, DependencyNode>,\n includeFrontier: boolean\n ): Set<DependencyNode>[] {\n const index = new Map<DependencyNode, number>();\n const lowlink = new Map<DependencyNode, number>();\n const onStack = new Set<DependencyNode>();\n const stack: DependencyNode[] = [];\n const sccs: Set<DependencyNode>[] = [];\n let currentIndex = 0;\n\n const strongConnect = (v: DependencyNode) => {\n index.set(v, currentIndex);\n lowlink.set(v, currentIndex);\n currentIndex++;\n stack.push(v);\n onStack.add(v);\n\n // Use either all dependencies or just regular dependencies\n const successors = includeFrontier\n ? v.getAllDependencies()\n : v.getDependencies();\n\n for (const w of successors) {\n if (!nodes.has(w.key)) {\n continue;\n }\n\n if (!index.has(w)) {\n strongConnect(w);\n lowlink.set(v, Math.min(lowlink.get(v)!, lowlink.get(w)!));\n } else if (onStack.has(w)) {\n lowlink.set(v, Math.min(lowlink.get(v)!, index.get(w)!));\n }\n }\n\n if (lowlink.get(v) === index.get(v)) {\n const scc = new Set<DependencyNode>();\n let w: DependencyNode;\n do {\n w = stack.pop()!;\n onStack.delete(w);\n scc.add(w);\n } while (w !== v);\n\n sccs.push(scc);\n }\n };\n\n for (const [_, n] of nodes) {\n if (!index.has(n)) {\n strongConnect(n);\n }\n }\n\n return sccs;\n }\n\n /**\n * Build evaluation order within a single SCC using DFS with cycle breaking\n * Uses all dependencies (including frontier) for proper evaluation ordering\n */\n private buildSCCEvaluationOrder(\n sccNodes: Set<DependencyNode>\n ): DependencyNode[] {\n const visited = new Set<DependencyNode>();\n const visiting = new Set<DependencyNode>();\n const result: DependencyNode[] = [];\n\n const dfs = (n: DependencyNode) => {\n if (visited.has(n)) {\n return;\n }\n\n if (visiting.has(n)) {\n // Cycle detected (from any edge type), break it\n return;\n }\n\n visiting.add(n);\n\n // Use all dependencies for evaluation ordering (regular + frontier)\n const deps = n.getAllDependencies();\n for (const dep of deps) {\n if (sccNodes.has(dep) && !visited.has(dep)) {\n dfs(dep);\n }\n }\n\n visiting.delete(n);\n visited.add(n);\n result.push(n);\n };\n\n // Sort nodes by key for deterministic ordering\n const sortedNodes = Array.from(sccNodes).sort((a, b) =>\n a.key.localeCompare(b.key)\n );\n\n for (const n of sortedNodes) {\n if (!visited.has(n)) {\n dfs(n);\n }\n }\n\n return result;\n }\n\n /**\n * Compute hash representing the graph structure including SCC information\n */\n private computeGraphHash(\n allNodes: Map<string, DependencyNode>,\n sccList: import(\"../types.cjs\").SCC[]\n ): string {\n const parts: string[] = [];\n\n // Hash nodes and their dependencies\n for (const [key, node] of Array.from(allNodes.entries()).sort()) {\n const deps = Array.from(node.getAllDependencies())\n .map((d) => d.key)\n .sort()\n .join(\",\");\n parts.push(`${key}:[${deps}]`);\n }\n\n // Add SCC structure\n for (const scc of sccList) {\n const nodeKeys = Array.from(scc.nodes)\n .map((n) => n.key)\n .sort()\n .join(\",\");\n parts.push(`SCC${scc.id}:{${nodeKeys}}`);\n }\n\n return parts.join(\"|\");\n }\n\n /**\n * Compute a hash representing the current state of evaluated nodes\n * This hash changes when dependencies, frontier dependencies, or discarded frontier dependencies change\n */\n private computeHash(allNodes: Set<DependencyNode>): string {\n const nodeStates: string[] = [];\n\n for (const node of Array.from(allNodes).sort()) {\n if (node) {\n const deps = Array.from(node.getDependencies() || [])\n .map((dep) => dep.key)\n .sort()\n .join(\",\");\n\n // Handle frontier dependencies (Map<string, Set<string>>)\n const frontierDeps: string = Array.from(node.getFrontierDependencies())\n .map((dep) => dep.key)\n .sort()\n .join(\";\");\n\n const nodeState = `${node.key}:{deps:[${deps}],frontier:[${frontierDeps}]}`;\n nodeStates.push(nodeState);\n }\n }\n\n return nodeStates.join(\"|\");\n }\n\n /**\n * Get a hierarchical dependency tree for a node\n */\n getDependencyTree(node: DependencyNode): DependencyTreeNode {\n const visited = new Set<DependencyNode>();\n\n const nodeToType = (node: DependencyNode): \"cell\" | \"range\" | \"empty\" => {\n if (node instanceof RangeEvaluationNode) {\n return \"range\";\n }\n if (node instanceof EmptyCellEvaluationNode) {\n return \"empty\";\n }\n return \"cell\";\n };\n\n const buildTree = (\n node: DependencyNode,\n isSelf = false\n ): DependencyTreeNode => {\n const cellRef: string = node.toString();\n\n // Handle self-reference to avoid infinite recursion\n if (isSelf) {\n return {\n type: nodeToType(node),\n resultType:\n node instanceof RangeEvaluationNode\n ? \"range\"\n : node.evaluationResult\n ? node.evaluationResult.type\n : \"awaiting-evaluation\",\n canResolve: node.canResolve(),\n key: cellRef,\n directDepsUpdated: node.directDepsUpdated,\n resolved: node.resolved,\n self: true,\n circular: true,\n };\n }\n\n // Avoid infinite recursion for circular dependencies\n if (visited.has(node)) {\n return {\n type: nodeToType(node),\n resultType:\n node instanceof RangeEvaluationNode\n ? \"range\"\n : node.evaluationResult\n ? node.evaluationResult.type\n : \"awaiting-evaluation\",\n canResolve: node.canResolve(),\n key: cellRef,\n directDepsUpdated: node.directDepsUpdated,\n resolved: node.resolved,\n circular: true,\n };\n }\n\n visited.add(node);\n\n const directDeps = Array.from(node.getDependencies());\n let frontierDeps = Array.from(node.getFrontierDependencies());\n\n // Get regular dependencies\n const deps: DependencyTreeNode[] = directDeps.map((dep) =>\n buildTree(dep, dep.key === node.key)\n );\n\n const frontierDependencies: DependencyTreeNode[] = frontierDeps.map(\n (dep) => buildTree(dep, false)\n );\n\n visited.delete(node);\n\n const result: DependencyTreeNode = {\n type: nodeToType(node),\n resultType:\n node instanceof RangeEvaluationNode\n ? \"range\"\n : node.evaluationResult\n ? node.evaluationResult.type\n : \"awaiting-evaluation\",\n canResolve: node.canResolve(),\n key: cellRef,\n directDepsUpdated: node.directDepsUpdated,\n resolved: node.resolved,\n };\n\n // Only include deps and frontierDependencies if they have content\n if (deps.length > 0) {\n result.deps = deps;\n }\n if (frontierDependencies.length > 0) {\n result.frontierDependencies = frontierDependencies;\n }\n\n return result;\n };\n\n return buildTree(node);\n }\n //#endregion\n\n markResolvedNodes(node: DependencyNode): void {\n // Track visited nodes to avoid infinite loops in circular dependencies\n const visited = new Set<DependencyNode>();\n visited.add(node); // Don't revisit the current cell\n\n const areTransitiveDepsResolved = (nodes: Set<DependencyNode>): boolean => {\n let canResolve = true;\n for (const node of nodes) {\n if (visited.has(node) || node.resolved) {\n continue;\n }\n visited.add(node);\n\n // Check the node's dependencies to not cause cycles with frontier dependencies\n const directDeps = node.getDependencies();\n\n const a = areTransitiveDepsResolved(directDeps);\n const b = node.canResolve();\n\n if (!a || !b) {\n canResolve = false;\n }\n if (a && b) {\n node.resolve();\n // if an ast node is resolved, it will get removed from the dependency graph\n // and thus never reach evaluateNode in formula evaluator\n // so we need to save it here. The latest context dependency is the correct one.\n if (node instanceof AstEvaluationNode) {\n this.saveAstNode(node, node.getContextDependency());\n }\n }\n }\n return canResolve;\n };\n\n if (\n areTransitiveDepsResolved(node.getDependencies()) &&\n node.canResolve()\n ) {\n node.resolve();\n if (node instanceof AstEvaluationNode) {\n this.saveAstNode(node, node.getContextDependency());\n }\n }\n }\n\n /**\n * Update SCCs in cache to mark them as resolved if all their nodes are resolved\n */\n public updateResolvedSCCs(evalOrder: EvaluationOrder): void {\n if (!evalOrder.sccDAG) {\n return;\n }\n\n // Check each SCC and update cache if all nodes are resolved\n for (const scc of evalOrder.sccDAG.sccList) {\n const allResolved = Array.from(scc.nodes).every((n) => n.resolved);\n\n if (allResolved && !scc.resolved) {\n // Create updated SCC with resolved flag\n const updatedSCC: import(\"../types.cjs\").SCC = {\n ...scc,\n resolved: true,\n };\n\n // Update cache\n const sccHash = Array.from(scc.nodes)\n .map((n) => n.key)\n .sort()\n .join(\"|\");\n\n this.cacheManager.setSCC(sccHash, updatedSCC);\n }\n }\n }\n}\n"
5
+ "import {\n eligibleKeysForContext,\n getContextDependencyKey,\n type ContextDependency,\n} from \"../../evaluator/evaluation-context.cjs\";\nimport {\n type CellAddress,\n type EvaluationOrder,\n type SpilledValue,\n} from \"../types.cjs\";\nimport { isCellInRange, keyToCellAddress } from \"../utils.cjs\";\n\nimport { AstEvaluationNode } from \"../../evaluator/dependency-nodes/ast-evaluation-node.cjs\";\nimport { CellValueNode } from \"../../evaluator/dependency-nodes/cell-value-node.cjs\";\nimport { EmptyCellEvaluationNode } from \"../../evaluator/dependency-nodes/empty-cell-evaluation-node.cjs\";\nimport { SpillMetaNode } from \"../../evaluator/dependency-nodes/spill-meta-node.cjs\";\nimport { RangeEvaluationNode } from \"../../evaluator/range-evaluation-node.cjs\";\nimport type { ASTNode } from \"../../parser/ast.cjs\";\nimport { astToString } from \"../../parser/formatter.cjs\";\nimport { CacheManager } from \"./cache-manager.cjs\";\nimport type {\n CellNodeKeyDictionary,\n CellNodeType,\n DependencyNode,\n} from \"./dependency-node.cjs\";\nimport { WorkbookManager } from \"./workbook-manager.cjs\";\n\nexport interface DependencyTreeNode {\n type: \"cell\" | \"range\" | \"empty\";\n circular?: boolean;\n key: string;\n directDepsUpdated?: boolean;\n resolved?: boolean;\n canResolve: boolean;\n resultType:\n | \"awaiting-evaluation\"\n | \"spilled-values\"\n | \"value\"\n | \"range\"\n | \"error\"\n | \"does-not-spill\";\n deps?: DependencyTreeNode[];\n frontierDependencies?: DependencyTreeNode[];\n self?: boolean;\n _debug?: {\n rawFrontierDependencies?: string[];\n discardedFrontierDependencies?: string[];\n activeFrontierDependencies?: string[];\n };\n}\n\n/**\n * The DependencyManager is responsible for storing the evaluated values and their dependencies.\n */\nexport class DependencyManager {\n /**\n * The dependency graph\n */\n private evaluatedNodes: Map<\n /**\n * key is the cell key, from cellAddressToKey\n */\n string,\n CellValueNode\n > = new Map();\n\n private spillMetaNodes: Map<string, SpillMetaNode> = new Map();\n\n private emptyCells: Map<string, EmptyCellEvaluationNode> = new Map();\n\n /**\n * registry of spilled values\n */\n private _spilledValues: Map<\n /**\n * key is the dependency node key, from dependencyNodeToKey for the origin cell\n */\n string,\n SpilledValue\n > = new Map();\n\n /**\n * Key is workbook:sheetName:rangeKey, e.g. Workbook1:Sheet1:A1:D10, from rangeAddressToKey\n */\n private ranges: Map<string, RangeEvaluationNode> = new Map();\n\n constructor(\n private cacheManager: CacheManager,\n private workbookManager: WorkbookManager\n ) {}\n\n public get spilledValues(): IterableIterator<SpilledValue> {\n return this._spilledValues.values();\n }\n\n isSpillOrigin(cellAddress: CellAddress): boolean {\n for (const spilledValue of this._spilledValues.values()) {\n if (\n spilledValue.origin.sheetName !== cellAddress.sheetName ||\n spilledValue.origin.workbookName !== cellAddress.workbookName\n ) {\n continue;\n }\n if (\n spilledValue.origin.colIndex === cellAddress.colIndex &&\n spilledValue.origin.rowIndex === cellAddress.rowIndex\n ) {\n return true;\n }\n }\n return false;\n }\n\n getSpillValue(cellAddress: CellAddress): SpilledValue | undefined {\n for (const spilledValue of this._spilledValues.values()) {\n if (\n spilledValue.origin.sheetName !== cellAddress.sheetName ||\n spilledValue.origin.workbookName !== cellAddress.workbookName\n ) {\n continue;\n }\n if (\n spilledValue.origin.colIndex === cellAddress.colIndex &&\n spilledValue.origin.rowIndex === cellAddress.rowIndex\n ) {\n return undefined;\n }\n if (isCellInRange(cellAddress, spilledValue.spillOnto)) {\n return spilledValue;\n }\n }\n return undefined;\n }\n\n getSpilledAddress(\n cellAddress: CellAddress,\n /**\n * if the spilled value is already available, we can use it to get the source address\n */\n passedSpilledValue?: SpilledValue\n ): { address: CellAddress; spillOffset: { x: number; y: number } } {\n const spilledValue = passedSpilledValue ?? this.getSpillValue(cellAddress);\n if (!spilledValue) {\n throw new Error(\"Cell is not spilled\");\n }\n const offsetLeft = cellAddress.colIndex - spilledValue.origin.colIndex;\n const offsetTop = cellAddress.rowIndex - spilledValue.origin.rowIndex;\n const address: CellAddress = {\n ...cellAddress,\n colIndex: spilledValue.origin.colIndex + offsetLeft,\n rowIndex: spilledValue.origin.rowIndex + offsetTop,\n };\n if (offsetLeft === 0 && offsetTop === 0) {\n throw new Error(\n \"Spilled value is the same as the cell address! The origin has a pre-calculated value that can be used\"\n );\n }\n return { address, spillOffset: { x: offsetLeft, y: offsetTop } };\n }\n\n clearEvaluationCache(): void {\n this.cacheManager.clear();\n this.evaluatedNodes.clear();\n this.emptyCells.clear();\n this.asts.clear();\n this.spillMetaNodes.clear();\n this.ranges.clear();\n this._spilledValues.clear();\n }\n\n setSpilledValue(nodeKey: string, spilledValue: SpilledValue): void {\n this._spilledValues.set(nodeKey.replace(/^[^:]+:/, \"\"), spilledValue);\n }\n\n getSpilledValue(nodeKey: string): SpilledValue | undefined {\n return this._spilledValues.get(nodeKey.replace(/^[^:]+:/, \"\"));\n }\n\n getEmptyCellNode(nodeKey: string): EmptyCellEvaluationNode {\n if (!nodeKey.startsWith(\"empty:\")) {\n throw new Error(\"Invalid empty cell node key: \" + nodeKey);\n }\n if (!this.emptyCells.has(nodeKey)) {\n const node = new EmptyCellEvaluationNode(\n nodeKey,\n this,\n this.workbookManager\n );\n this.emptyCells.set(nodeKey, node);\n return node;\n }\n return this.emptyCells.get(nodeKey)!;\n }\n\n getSpillMetaNode(nodeKey: string): SpillMetaNode {\n if (!nodeKey.startsWith(\"spill-meta:\")) {\n throw new Error(\"Invalid spill meta node key: \" + nodeKey);\n }\n if (!this.spillMetaNodes.has(nodeKey)) {\n const node = new SpillMetaNode(nodeKey);\n this.spillMetaNodes.set(nodeKey, node);\n return node;\n }\n return this.spillMetaNodes.get(nodeKey)!;\n }\n\n getCellValueNode(nodeKey: string): CellValueNode {\n if (!nodeKey.startsWith(\"cell-value:\")) {\n throw new Error(\"Invalid cell value node key: \" + nodeKey);\n }\n if (!this.evaluatedNodes.has(nodeKey)) {\n const node = new CellValueNode(nodeKey);\n this.evaluatedNodes.set(nodeKey, node);\n return node;\n }\n return this.evaluatedNodes.get(nodeKey)!;\n }\n\n getCellValueOrEmptyCellNode(\n nodeKey: string\n ): CellValueNode | EmptyCellEvaluationNode {\n const cellAddress = keyToCellAddress(nodeKey);\n\n const emptyKey = nodeKey.replace(/^[^:]+:/, \"empty:\");\n const cellValueKey = nodeKey.replace(/^[^:]+:/, \"cell-value:\");\n\n if (this.workbookManager.isCellEmpty(cellAddress)) {\n return this.getEmptyCellNode(emptyKey);\n }\n\n return this.getCellValueNode(cellValueKey);\n }\n\n getSpillMetaOrEmptySpillMetaNode(\n nodeKey: string\n ): SpillMetaNode | EmptyCellEvaluationNode {\n const cellAddress = keyToCellAddress(nodeKey);\n\n const emptyKey = nodeKey.replace(/^[^:]+:/, \"empty:\");\n const spillMetaKey = nodeKey.replace(/^[^:]+:/, \"spill-meta:\");\n\n if (this.workbookManager.isCellEmpty(cellAddress)) {\n return this.getEmptyCellNode(emptyKey);\n }\n\n return this.getSpillMetaNode(spillMetaKey);\n }\n\n lookupCellNode<T extends CellNodeType>(\n nodeKey: string,\n types: T[]\n ): CellNodeKeyDictionary[T][] {\n const cellAddress = keyToCellAddress(nodeKey);\n\n const emptyKey = nodeKey.replace(/^[^:]+:/, \"empty:\");\n const cellValueKey = nodeKey.replace(/^[^:]+:/, \"cell-value:\");\n const cellValueNode = this.evaluatedNodes.get(cellValueKey);\n const cellMetaKey = nodeKey.replace(/^[^:]+:/, \"cell-meta:\");\n const cellMetaNode = this.evaluatedNodes.get(cellMetaKey);\n\n if (this.workbookManager.isCellEmpty(cellAddress)) {\n if ((types as string[]).includes(\"empty\")) {\n return [this.getEmptyCellNode(emptyKey) as any];\n } else {\n return [];\n }\n }\n\n const results: any[] = [];\n\n if ((types as string[]).includes(\"cell\")) {\n if (cellValueNode) {\n results.push(cellValueNode);\n } else {\n results.push(this.getCellValueNode(cellValueKey));\n }\n }\n\n if (this.workbookManager.isFormulaCell(cellAddress)) {\n if ((types as string[]).includes(\"spill-meta\")) {\n if (cellMetaNode) {\n results.push(cellMetaNode);\n } else {\n results.push(this.getSpillMetaNode(cellValueKey));\n }\n }\n }\n\n return results;\n }\n\n getRangeNode(rangeKey: string): RangeEvaluationNode {\n if (!rangeKey.startsWith(\"range:\")) {\n throw new Error(\"Invalid range node key: \" + rangeKey);\n }\n if (!this.ranges.has(rangeKey)) {\n const node = new RangeEvaluationNode(\n rangeKey,\n this,\n this.workbookManager\n );\n this.ranges.set(rangeKey, node);\n return node;\n }\n return this.ranges.get(rangeKey)!;\n }\n\n asts: Map<\n /**\n * ast key\n */\n string,\n {\n entries: Map<\n /**\n * context dependency key\n */\n string,\n {\n evalNode: AstEvaluationNode;\n contextDependency: ContextDependency;\n }\n >;\n }\n > = new Map();\n\n getAstNode(\n ast: ASTNode,\n currentContext: Omit<Required<ContextDependency>, \"tableName\"> & {\n tableName?: string;\n }\n ): AstEvaluationNode {\n const astKey = `ast:${astToString(ast)}`; // cache normalize this later\n const astEntries = this.asts.get(astKey);\n\n const keys = eligibleKeysForContext(currentContext);\n\n for (const key of keys) {\n const astEntry = astEntries?.entries.get(key);\n if (astEntry) {\n return astEntry.evalNode;\n }\n }\n\n // if any of the ast entries match the current context, then we can return the ast node\n // otherwise we have to evalute the ast node to understand if it is context dependent\n // and later it will be saved using saveAstNode\n // if (astEntries) {\n // for (const entry of astEntries.entries.values()) {\n // // e.g. we have a row dependent ast dependency, dependent on row 1, and the current context dependency has rowIndex 1\n // // then we will get a match\n // const matches = Object.entries(entry.contextDependency).every(\n // ([key, value]) => {\n // if (typeof value === \"undefined\") {\n // return true;\n // }\n // return currentContext[key as keyof ContextDependency] === value;\n // }\n // );\n // if (matches) {\n // return entry.evalNode;\n // }\n // }\n // }\n\n // by default the ast node is cell specific\n // but later, setContextDependency is called with a more open context dependency\n const node = new AstEvaluationNode(ast, currentContext);\n // initially we store it as a cell, sheet, workbook and table dependent node\n // but later, once resolved, we can store it under a looser dependency key, e.g. only sheet, workbook and table dependent\n this.saveAstNode(node, currentContext);\n return node;\n }\n\n /**\n * Once an AST node is evaluated, we know if it is context dependent\n * and will thus save it under the correct cache key according to its\n * contextDependency\n *\n * only resolved ast nodes can be saved\n */\n private saveAstNode(\n ast: AstEvaluationNode,\n contextDependency: ContextDependency\n ) {\n const astKey = ast.key;\n const contextDependencyKey = getContextDependencyKey(contextDependency);\n const astEntries = this.asts.get(astKey);\n\n if (astEntries) {\n // if we don't already have an entry, then let's add it\n astEntries.entries.set(contextDependencyKey, {\n evalNode: ast,\n contextDependency,\n });\n } else {\n this.asts.set(astKey, {\n entries: new Map([\n [contextDependencyKey, { evalNode: ast, contextDependency }],\n ]),\n });\n }\n }\n\n getEvaluatedNodes(): Map<string, CellValueNode> {\n return this.evaluatedNodes;\n }\n\n //#region dependency graph methods\n\n /**\n * Get transitive dependencies and transitive frontier dependencies\n * This is only used by buildEvaluationOrder, so we'll optimize it there\n */\n getTransitiveDepsForEvalOrder(\n node: DependencyNode,\n visited: Set<DependencyNode> = new Set()\n ): Set<DependencyNode> {\n // Prevent infinite recursion\n if (visited.has(node)) {\n return new Set();\n }\n\n // If the node is resolved, then we don't need to evaluate it\n if (node && node.resolved) {\n return new Set();\n }\n\n // Mark this node as visited for cycle detection\n visited.add(node);\n\n const allNodes = new Set<DependencyNode>();\n allNodes.add(node);\n\n // Get direct dependencies (regular + frontier)\n const directDeps = node.getDependencies();\n\n // Recursively get transitive dependencies for each direct dependency\n for (const dep of directDeps) {\n if (!visited.has(dep)) {\n const depTransitiveDeps = this.getTransitiveDepsForEvalOrder(\n dep,\n visited\n );\n for (const transitiveDep of depTransitiveDeps) {\n allNodes.add(transitiveDep);\n }\n }\n }\n\n // Remove this node from visited set for other branches\n visited.delete(node);\n\n return allNodes;\n }\n\n /**\n * Build evaluation order for a cell using SCC-based condensation DAG approach\n *\n * Algorithm:\n * 1. Discover all transitive dependencies (skipping resolved nodes)\n * 2. Find SCCs using Tarjan's algorithm\n * 3. Create condensation DAG from SCCs\n * 4. Topologically sort the condensation DAG using Kahn's algorithm\n * 5. For each SCC, create internal evaluation order with cycle breaking\n * 6. Join the sorted SCC evaluation orders to create final evaluation order\n */\n buildEvaluationOrder(\n node: CellValueNode | EmptyCellEvaluationNode\n ): EvaluationOrder {\n if (node.resolved && this.cacheManager.getEvaluationOrder(node.key)) {\n return this.cacheManager.getEvaluationOrder(node.key)!;\n }\n\n // Phase 1: Discover all transitive dependencies (skipping resolved nodes)\n const allNodes = new Map<string, DependencyNode>();\n const visitedForDiscovery = new Set<DependencyNode>();\n\n const discoverNodes = (currentNode: DependencyNode) => {\n if (currentNode && currentNode.resolved) {\n return;\n }\n\n if (!allNodes.has(currentNode.key)) {\n allNodes.set(currentNode.key, currentNode);\n }\n\n if (visitedForDiscovery.has(currentNode)) {\n return;\n }\n\n visitedForDiscovery.add(currentNode);\n\n const allDeps = currentNode.getAllDependencies();\n for (const dep of allDeps) {\n discoverNodes(dep);\n }\n };\n\n discoverNodes(node);\n\n if (allNodes.size === 0 && node && node.resolved) {\n const result: EvaluationOrder = {\n evaluationOrder: new Set([node]),\n hasCycle: false,\n hash: this.computeHash(new Set([node])),\n };\n\n if (node && node.resolved) {\n this.cacheManager.setEvaluationOrder(node.key, result);\n }\n\n return result;\n }\n\n // Phase 2: Find SCCs using Tarjan's algorithm\n // Build SCCs considering ALL dependencies (soft + hard edges)\n const sccs = this.findSCCs(allNodes, true);\n\n // Phase 3: Create condensation DAG and check for cached SCCs\n const nodeToSCCId = new Map<DependencyNode, number>();\n const sccList: import(\"../types.cjs\").SCC[] = [];\n\n for (let i = 0; i < sccs.length; i++) {\n const sccNodes = sccs[i]!;\n\n // Check if all nodes in this SCC are resolved\n const allResolved = Array.from(sccNodes).every((n) => n.resolved);\n\n // Create SCC hash for caching\n const sccHash = Array.from(sccNodes)\n .map((n) => n.key)\n .sort()\n .join(\"|\");\n\n // Try to get cached SCC if it's resolved\n let scc: import(\"../types.cjs\").SCC;\n const cachedSCC = allResolved\n ? this.cacheManager.getSCC(sccHash)\n : undefined;\n\n if (cachedSCC) {\n scc = cachedSCC;\n } else {\n // Build evaluation order for this SCC with cycle breaking\n const sccEvalOrder = this.buildSCCEvaluationOrder(sccNodes);\n\n // Find hard-edge SCCs within this soft-edge SCC\n // Hard-edge SCCs are formed by only regular dependencies\n const hardEdgeSCCs = this.findSCCs(\n new Map(Array.from(sccNodes).map((n) => [n.key, n])),\n false // Use only hard edges (regular dependencies)\n );\n\n scc = {\n id: i,\n nodes: sccNodes,\n evaluationOrder: sccEvalOrder,\n resolved: allResolved,\n hardEdgeSCCs,\n };\n\n // Cache if resolved\n if (allResolved) {\n this.cacheManager.setSCC(sccHash, scc);\n }\n }\n\n sccList.push(scc);\n\n for (const n of sccNodes) {\n nodeToSCCId.set(n, i);\n }\n }\n\n // Build SCC dependency graph\n // Edge from A to B means A depends on B, so B must be evaluated before A\n const sccGraph = new Map<number, Set<number>>();\n for (let i = 0; i < sccList.length; i++) {\n sccGraph.set(i, new Set());\n }\n\n for (const [_, n] of allNodes) {\n const nSCCId = nodeToSCCId.get(n)!;\n // Use ALL dependencies (regular + frontier) for the condensation DAG\n // This ensures proper evaluation order even with frontier dependencies\n const deps = n.getAllDependencies();\n\n for (const dep of deps) {\n if (!allNodes.has(dep.key)) continue;\n\n const depSCCId = nodeToSCCId.get(dep)!;\n // n depends on dep, so dep's SCC must come before n's SCC\n // Add edge from dep's SCC to n's SCC\n if (nSCCId !== depSCCId) {\n sccGraph.get(depSCCId)!.add(nSCCId);\n }\n }\n }\n\n // Phase 4: Topologically sort SCCs using Kahn's algorithm\n const inDegree = new Map<number, number>();\n for (let i = 0; i < sccList.length; i++) {\n inDegree.set(i, 0);\n }\n\n for (const [_, deps] of sccGraph) {\n for (const toId of deps) {\n inDegree.set(toId, inDegree.get(toId)! + 1);\n }\n }\n\n const queue: number[] = [];\n for (let i = 0; i < sccList.length; i++) {\n if (inDegree.get(i) === 0) {\n queue.push(i);\n }\n }\n\n const sortedSCCIds: number[] = [];\n while (queue.length > 0) {\n const sccId = queue.shift()!;\n sortedSCCIds.push(sccId);\n\n const deps = sccGraph.get(sccId)!;\n for (const depId of deps) {\n const newInDegree = inDegree.get(depId)! - 1;\n inDegree.set(depId, newInDegree);\n if (newInDegree === 0) {\n queue.push(depId);\n }\n }\n }\n\n // Phase 5: Join evaluation orders from sorted SCCs\n const evaluationOrderArray: DependencyNode[] = [];\n for (const sccId of sortedSCCIds) {\n const scc = sccList[sccId]!;\n evaluationOrderArray.push(...scc.evaluationOrder);\n }\n\n const evaluationOrder = new Set(evaluationOrderArray);\n\n // Identify cycle nodes from hard-edge SCCs\n const cycleNodes = new Set<DependencyNode>();\n for (const scc of sccList) {\n for (const hardEdgeSCC of scc.hardEdgeSCCs) {\n // A hard-edge SCC with multiple nodes or a self-loop indicates a real cycle\n if (hardEdgeSCC.size > 1) {\n for (const n of hardEdgeSCC) {\n cycleNodes.add(n);\n }\n } else if (hardEdgeSCC.size === 1) {\n const node = Array.from(hardEdgeSCC)[0]!;\n if (node.getDependencies().has(node)) {\n cycleNodes.add(node);\n }\n }\n }\n }\n\n const hasCycle = cycleNodes.size > 0;\n const result: EvaluationOrder = {\n evaluationOrder,\n hasCycle,\n ...(hasCycle && { cycleNodes }),\n hash: this.computeGraphHash(allNodes, sccList),\n sccDAG: {\n sccList,\n sccGraph,\n },\n };\n\n if (node && node.resolved) {\n this.cacheManager.setEvaluationOrder(node.key, result);\n }\n\n return result;\n }\n\n /**\n * Find strongly connected components using Tarjan's algorithm\n * @param nodes - Map of nodes to analyze\n * @param includeFrontier - If true, use getAllDependencies(); if false, use getDependencies()\n * @returns Array of SCCs (each SCC is a Set of nodes)\n */\n private findSCCs(\n nodes: Map<string, DependencyNode>,\n includeFrontier: boolean\n ): Set<DependencyNode>[] {\n const index = new Map<DependencyNode, number>();\n const lowlink = new Map<DependencyNode, number>();\n const onStack = new Set<DependencyNode>();\n const stack: DependencyNode[] = [];\n const sccs: Set<DependencyNode>[] = [];\n let currentIndex = 0;\n\n const strongConnect = (v: DependencyNode) => {\n index.set(v, currentIndex);\n lowlink.set(v, currentIndex);\n currentIndex++;\n stack.push(v);\n onStack.add(v);\n\n // Use either all dependencies or just regular dependencies\n const successors = includeFrontier\n ? v.getAllDependencies()\n : v.getDependencies();\n\n for (const w of successors) {\n if (!nodes.has(w.key)) {\n continue;\n }\n\n if (!index.has(w)) {\n strongConnect(w);\n lowlink.set(v, Math.min(lowlink.get(v)!, lowlink.get(w)!));\n } else if (onStack.has(w)) {\n lowlink.set(v, Math.min(lowlink.get(v)!, index.get(w)!));\n }\n }\n\n if (lowlink.get(v) === index.get(v)) {\n const scc = new Set<DependencyNode>();\n let w: DependencyNode;\n do {\n w = stack.pop()!;\n onStack.delete(w);\n scc.add(w);\n } while (w !== v);\n\n sccs.push(scc);\n }\n };\n\n for (const [_, n] of nodes) {\n if (!index.has(n)) {\n strongConnect(n);\n }\n }\n\n return sccs;\n }\n\n /**\n * Build evaluation order within a single SCC using DFS with cycle breaking\n * Uses all dependencies (including frontier) for proper evaluation ordering\n */\n private buildSCCEvaluationOrder(\n sccNodes: Set<DependencyNode>\n ): DependencyNode[] {\n const visited = new Set<DependencyNode>();\n const visiting = new Set<DependencyNode>();\n const result: DependencyNode[] = [];\n\n const dfs = (n: DependencyNode) => {\n if (visited.has(n)) {\n return;\n }\n\n if (visiting.has(n)) {\n // Cycle detected (from any edge type), break it\n return;\n }\n\n visiting.add(n);\n\n // Use all dependencies for evaluation ordering (regular + frontier)\n const deps = n.getAllDependencies();\n for (const dep of deps) {\n if (sccNodes.has(dep) && !visited.has(dep)) {\n dfs(dep);\n }\n }\n\n visiting.delete(n);\n visited.add(n);\n result.push(n);\n };\n\n // Sort nodes by key for deterministic ordering\n const sortedNodes = Array.from(sccNodes).sort((a, b) =>\n a.key.localeCompare(b.key)\n );\n\n for (const n of sortedNodes) {\n if (!visited.has(n)) {\n dfs(n);\n }\n }\n\n return result;\n }\n\n /**\n * Compute hash representing the graph structure including SCC information\n */\n private computeGraphHash(\n allNodes: Map<string, DependencyNode>,\n sccList: import(\"../types.cjs\").SCC[]\n ): string {\n const parts: string[] = [];\n\n // Hash nodes and their dependencies\n for (const [key, node] of Array.from(allNodes.entries()).sort()) {\n const deps = Array.from(node.getAllDependencies())\n .map((d) => d.key)\n .sort()\n .join(\",\");\n parts.push(`${key}:[${deps}]`);\n }\n\n // Add SCC structure\n for (const scc of sccList) {\n const nodeKeys = Array.from(scc.nodes)\n .map((n) => n.key)\n .sort()\n .join(\",\");\n parts.push(`SCC${scc.id}:{${nodeKeys}}`);\n }\n\n return parts.join(\"|\");\n }\n\n /**\n * Compute a hash representing the current state of evaluated nodes\n * This hash changes when dependencies, frontier dependencies, or discarded frontier dependencies change\n */\n private computeHash(allNodes: Set<DependencyNode>): string {\n const nodeStates: string[] = [];\n\n for (const node of Array.from(allNodes).sort()) {\n if (node) {\n const deps = Array.from(node.getDependencies() || [])\n .map((dep) => dep.key)\n .sort()\n .join(\",\");\n\n // Handle frontier dependencies (Map<string, Set<string>>)\n const frontierDeps: string = Array.from(node.getFrontierDependencies())\n .map((dep) => dep.key)\n .sort()\n .join(\";\");\n\n const nodeState = `${node.key}:{deps:[${deps}],frontier:[${frontierDeps}]}`;\n nodeStates.push(nodeState);\n }\n }\n\n return nodeStates.join(\"|\");\n }\n\n /**\n * Get a hierarchical dependency tree for a node\n */\n getDependencyTree(node: DependencyNode): DependencyTreeNode {\n const visited = new Set<DependencyNode>();\n\n const nodeToType = (node: DependencyNode): \"cell\" | \"range\" | \"empty\" => {\n if (node instanceof RangeEvaluationNode) {\n return \"range\";\n }\n if (node instanceof EmptyCellEvaluationNode) {\n return \"empty\";\n }\n return \"cell\";\n };\n\n const buildTree = (\n node: DependencyNode,\n isSelf = false\n ): DependencyTreeNode => {\n const cellRef: string = node.toString();\n\n // Handle self-reference to avoid infinite recursion\n if (isSelf) {\n return {\n type: nodeToType(node),\n resultType:\n node instanceof RangeEvaluationNode\n ? \"range\"\n : node.evaluationResult\n ? node.evaluationResult.type\n : \"awaiting-evaluation\",\n canResolve: node.canResolve(),\n key: cellRef,\n directDepsUpdated: node.directDepsUpdated,\n resolved: node.resolved,\n self: true,\n circular: true,\n };\n }\n\n // Avoid infinite recursion for circular dependencies\n if (visited.has(node)) {\n return {\n type: nodeToType(node),\n resultType:\n node instanceof RangeEvaluationNode\n ? \"range\"\n : node.evaluationResult\n ? node.evaluationResult.type\n : \"awaiting-evaluation\",\n canResolve: node.canResolve(),\n key: cellRef,\n directDepsUpdated: node.directDepsUpdated,\n resolved: node.resolved,\n circular: true,\n };\n }\n\n visited.add(node);\n\n const directDeps = Array.from(node.getDependencies());\n let frontierDeps = Array.from(node.getFrontierDependencies());\n\n // Get regular dependencies\n const deps: DependencyTreeNode[] = directDeps.map((dep) =>\n buildTree(dep, dep.key === node.key)\n );\n\n const frontierDependencies: DependencyTreeNode[] = frontierDeps.map(\n (dep) => buildTree(dep, false)\n );\n\n visited.delete(node);\n\n const result: DependencyTreeNode = {\n type: nodeToType(node),\n resultType:\n node instanceof RangeEvaluationNode\n ? \"range\"\n : node.evaluationResult\n ? node.evaluationResult.type\n : \"awaiting-evaluation\",\n canResolve: node.canResolve(),\n key: cellRef,\n directDepsUpdated: node.directDepsUpdated,\n resolved: node.resolved,\n };\n\n // Only include deps and frontierDependencies if they have content\n if (deps.length > 0) {\n result.deps = deps;\n }\n if (frontierDependencies.length > 0) {\n result.frontierDependencies = frontierDependencies;\n }\n\n return result;\n };\n\n return buildTree(node);\n }\n //#endregion\n\n markResolvedNodes(node: DependencyNode): void {\n // Track visited nodes to avoid infinite loops in circular dependencies\n const visited = new Set<DependencyNode>();\n visited.add(node); // Don't revisit the current cell\n\n const areTransitiveDepsResolved = (nodes: Set<DependencyNode>): boolean => {\n let canResolve = true;\n for (const node of nodes) {\n if (visited.has(node) || node.resolved) {\n continue;\n }\n visited.add(node);\n\n // Check the node's dependencies to not cause cycles with frontier dependencies\n const directDeps = node.getDependencies();\n\n const a = areTransitiveDepsResolved(directDeps);\n const b = node.canResolve();\n\n if (!a || !b) {\n canResolve = false;\n }\n if (a && b) {\n node.resolve();\n // if an ast node is resolved, it will get removed from the dependency graph\n // and thus never reach evaluateNode in formula evaluator\n // so we need to save it here. The latest context dependency is the correct one.\n if (node instanceof AstEvaluationNode) {\n this.saveAstNode(node, node.getContextDependency());\n }\n }\n }\n return canResolve;\n };\n\n if (\n areTransitiveDepsResolved(node.getDependencies()) &&\n node.canResolve()\n ) {\n node.resolve();\n if (node instanceof AstEvaluationNode) {\n this.saveAstNode(node, node.getContextDependency());\n }\n }\n }\n\n /**\n * Update SCCs in cache to mark them as resolved if all their nodes are resolved\n */\n public updateResolvedSCCs(evalOrder: EvaluationOrder): void {\n if (!evalOrder.sccDAG) {\n return;\n }\n\n // Check each SCC and update cache if all nodes are resolved\n for (const scc of evalOrder.sccDAG.sccList) {\n const allResolved = Array.from(scc.nodes).every((n) => n.resolved);\n\n if (allResolved && !scc.resolved) {\n // Create updated SCC with resolved flag\n const updatedSCC: import(\"../types.cjs\").SCC = {\n ...scc,\n resolved: true,\n };\n\n // Update cache\n const sccHash = Array.from(scc.nodes)\n .map((n) => n.key)\n .sort()\n .join(\"|\");\n\n this.cacheManager.setSCC(sccHash, updatedSCC);\n }\n }\n }\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "62F68ED5F4FB614764756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "1CEF6358C34629CE64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -32,17 +32,17 @@ __export(exports_evaluation_manager, {
32
32
  EvaluationManager: () => EvaluationManager
33
33
  });
34
34
  module.exports = __toCommonJS(exports_evaluation_manager);
35
- var import_flags = require("src/debug/flags");
36
- var import_ast_evaluation_node = require("src/evaluator/dependency-nodes/ast-evaluation-node");
37
- var import_cell_value_node = require("src/evaluator/dependency-nodes/cell-value-node");
38
- var import_evaluation_context = require("src/evaluator/evaluation-context");
39
- var import_evaluation_error = require("src/evaluator/evaluation-error");
40
- var import_range_evaluation_node = require("src/evaluator/range-evaluation-node");
41
- var import_formatter = require("src/parser/formatter");
35
+ var import_flags = require("../../debug/flags.cjs");
36
+ var import_ast_evaluation_node = require("../../evaluator/dependency-nodes/ast-evaluation-node.cjs");
37
+ var import_cell_value_node = require("../../evaluator/dependency-nodes/cell-value-node.cjs");
38
+ var import_evaluation_context = require("../../evaluator/evaluation-context.cjs");
39
+ var import_evaluation_error = require("../../evaluator/evaluation-error.cjs");
40
+ var import_range_evaluation_node = require("../../evaluator/range-evaluation-node.cjs");
41
+ var import_formatter = require("../../parser/formatter.cjs");
42
42
  var import_types = require("../types.cjs");
43
43
  var import_utils = require("../utils.cjs");
44
- var import_spill_meta_node = require("src/evaluator/dependency-nodes/spill-meta-node");
45
- var import_empty_cell_evaluation_node = require("src/evaluator/dependency-nodes/empty-cell-evaluation-node");
44
+ var import_spill_meta_node = require("../../evaluator/dependency-nodes/spill-meta-node.cjs");
45
+ var import_empty_cell_evaluation_node = require("../../evaluator/dependency-nodes/empty-cell-evaluation-node.cjs");
46
46
 
47
47
  class EvaluationManager {
48
48
  workbookManager;
@@ -430,4 +430,4 @@ class EvaluationManager {
430
430
  }
431
431
  }
432
432
 
433
- //# debugId=ED71727AFAD08E2464756E2164756E21
433
+ //# debugId=3C7FBADCCEDC262664756E2164756E21