@ricsam/formula-engine 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) 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 +5 -5
  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/function-utils.cjs.map +1 -1
  64. package/dist/cjs/functions/index.cjs.map +1 -1
  65. package/dist/cjs/functions/information/cell/cell.cjs +3 -3
  66. package/dist/cjs/functions/information/cell/cell.cjs.map +2 -2
  67. package/dist/cjs/functions/information/column/column.cjs +4 -4
  68. package/dist/cjs/functions/information/column/column.cjs.map +2 -2
  69. package/dist/cjs/functions/information/row/row.cjs +4 -4
  70. package/dist/cjs/functions/information/row/row.cjs.map +2 -2
  71. package/dist/cjs/functions/logical/and/and.cjs +2 -2
  72. package/dist/cjs/functions/logical/and/and.cjs.map +2 -2
  73. package/dist/cjs/functions/logical/if/if.cjs +2 -2
  74. package/dist/cjs/functions/logical/if/if.cjs.map +3 -3
  75. package/dist/cjs/functions/logical/iferror/iferror.cjs +3 -3
  76. package/dist/cjs/functions/logical/iferror/iferror.cjs.map +2 -2
  77. package/dist/cjs/functions/logical/or/or.cjs +2 -2
  78. package/dist/cjs/functions/logical/or/or.cjs.map +2 -2
  79. package/dist/cjs/functions/lookup/count/count-utils.cjs.map +1 -1
  80. package/dist/cjs/functions/lookup/count/count.cjs +2 -2
  81. package/dist/cjs/functions/lookup/count/count.cjs.map +2 -2
  82. package/dist/cjs/functions/lookup/count/countif.cjs +2 -2
  83. package/dist/cjs/functions/lookup/count/countif.cjs.map +2 -2
  84. package/dist/cjs/functions/lookup/count/countifs.cjs.map +1 -1
  85. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs +2 -2
  86. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs.map +2 -2
  87. package/dist/cjs/functions/lookup/match/match.cjs +2 -2
  88. package/dist/cjs/functions/lookup/match/match.cjs.map +2 -2
  89. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs +2 -2
  90. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs.map +2 -2
  91. package/dist/cjs/functions/math/average/average-utils.cjs +2 -2
  92. package/dist/cjs/functions/math/average/average-utils.cjs.map +2 -2
  93. package/dist/cjs/functions/math/average/average.cjs +2 -2
  94. package/dist/cjs/functions/math/average/average.cjs.map +2 -2
  95. package/dist/cjs/functions/math/average/averageif.cjs +3 -3
  96. package/dist/cjs/functions/math/average/averageif.cjs.map +3 -3
  97. package/dist/cjs/functions/math/average/averageifs.cjs.map +2 -2
  98. package/dist/cjs/functions/math/ceiling/ceiling.cjs +2 -2
  99. package/dist/cjs/functions/math/ceiling/ceiling.cjs.map +3 -3
  100. package/dist/cjs/functions/math/max/max-utils.cjs +2 -2
  101. package/dist/cjs/functions/math/max/max-utils.cjs.map +2 -2
  102. package/dist/cjs/functions/math/max/max.cjs +2 -2
  103. package/dist/cjs/functions/math/max/max.cjs.map +2 -2
  104. package/dist/cjs/functions/math/max/maxif.cjs +2 -2
  105. package/dist/cjs/functions/math/max/maxif.cjs.map +2 -2
  106. package/dist/cjs/functions/math/max/maxifs.cjs.map +2 -2
  107. package/dist/cjs/functions/math/min/min-utils.cjs +2 -2
  108. package/dist/cjs/functions/math/min/min-utils.cjs.map +2 -2
  109. package/dist/cjs/functions/math/min/min.cjs +2 -2
  110. package/dist/cjs/functions/math/min/min.cjs.map +3 -3
  111. package/dist/cjs/functions/math/min/minif.cjs +2 -2
  112. package/dist/cjs/functions/math/min/minif.cjs.map +2 -2
  113. package/dist/cjs/functions/math/min/minifs.cjs.map +2 -2
  114. package/dist/cjs/functions/math/sum/sum.cjs +2 -2
  115. package/dist/cjs/functions/math/sum/sum.cjs.map +2 -2
  116. package/dist/cjs/functions/math/sum/sumif.cjs +2 -2
  117. package/dist/cjs/functions/math/sum/sumif.cjs.map +2 -2
  118. package/dist/cjs/functions/math/sum/sumifs.cjs.map +2 -2
  119. package/dist/cjs/functions/math/sum/summation-utils.cjs.map +1 -1
  120. package/dist/cjs/functions/reference/address/address.cjs +2 -2
  121. package/dist/cjs/functions/reference/address/address.cjs.map +2 -2
  122. package/dist/cjs/functions/reference/indirect/indirect.cjs +3 -3
  123. package/dist/cjs/functions/reference/indirect/indirect.cjs.map +3 -3
  124. package/dist/cjs/functions/reference/offset/offset.cjs +3 -3
  125. package/dist/cjs/functions/reference/offset/offset.cjs.map +2 -2
  126. package/dist/cjs/functions/text/concatenate/concatenate.cjs +2 -2
  127. package/dist/cjs/functions/text/concatenate/concatenate.cjs.map +2 -2
  128. package/dist/cjs/functions/text/exact/exact.cjs +2 -2
  129. package/dist/cjs/functions/text/exact/exact.cjs.map +2 -2
  130. package/dist/cjs/functions/text/find/find.cjs +2 -2
  131. package/dist/cjs/functions/text/find/find.cjs.map +3 -3
  132. package/dist/cjs/functions/text/left/left.cjs +2 -2
  133. package/dist/cjs/functions/text/left/left.cjs.map +2 -2
  134. package/dist/cjs/functions/text/len/len.cjs +2 -2
  135. package/dist/cjs/functions/text/len/len.cjs.map +3 -3
  136. package/dist/cjs/functions/text/mid/mid.cjs +2 -2
  137. package/dist/cjs/functions/text/mid/mid.cjs.map +2 -2
  138. package/dist/cjs/functions/text/right/right.cjs +2 -2
  139. package/dist/cjs/functions/text/right/right.cjs.map +3 -3
  140. package/dist/cjs/functions/text/text-helpers.cjs +2 -2
  141. package/dist/cjs/functions/text/text-helpers.cjs.map +2 -2
  142. package/dist/cjs/functions/text/textjoin/textjoin.cjs +2 -2
  143. package/dist/cjs/functions/text/textjoin/textjoin.cjs.map +3 -3
  144. package/dist/cjs/package.json +1 -1
  145. package/dist/cjs/parser/formatter.cjs +2 -2
  146. package/dist/cjs/parser/formatter.cjs.map +2 -2
  147. package/dist/mjs/core/engine.mjs +7 -9
  148. package/dist/mjs/core/engine.mjs.map +3 -3
  149. package/dist/mjs/core/managers/dependency-manager.mjs +8 -8
  150. package/dist/mjs/core/managers/dependency-manager.mjs.map +3 -3
  151. package/dist/mjs/core/managers/evaluation-manager.mjs +10 -10
  152. package/dist/mjs/core/managers/evaluation-manager.mjs.map +2 -2
  153. package/dist/mjs/core/managers/frontier-dependency-manager.mjs.map +1 -1
  154. package/dist/mjs/core/managers/isDependencyNode.mjs +6 -6
  155. package/dist/mjs/core/managers/isDependencyNode.mjs.map +2 -2
  156. package/dist/mjs/core/managers/named-expression-manager.mjs.map +1 -1
  157. package/dist/mjs/core/managers/range-eval-order-builder.mjs +2 -2
  158. package/dist/mjs/core/managers/range-eval-order-builder.mjs.map +3 -3
  159. package/dist/mjs/core/managers/workbook-manager.mjs +3 -3
  160. package/dist/mjs/core/managers/workbook-manager.mjs.map +2 -2
  161. package/dist/mjs/core/types.mjs.map +2 -2
  162. package/dist/mjs/core/utils.mjs +2 -2
  163. package/dist/mjs/core/utils.mjs.map +2 -2
  164. package/dist/mjs/evaluator/arithmetic/add/add.mjs +2 -2
  165. package/dist/mjs/evaluator/arithmetic/add/add.mjs.map +2 -2
  166. package/dist/mjs/evaluator/arithmetic/divide/divide.mjs +2 -2
  167. package/dist/mjs/evaluator/arithmetic/divide/divide.mjs.map +2 -2
  168. package/dist/mjs/evaluator/arithmetic/multiply/multiply.mjs +2 -2
  169. package/dist/mjs/evaluator/arithmetic/multiply/multiply.mjs.map +2 -2
  170. package/dist/mjs/evaluator/arithmetic/power/power.mjs +2 -2
  171. package/dist/mjs/evaluator/arithmetic/power/power.mjs.map +2 -2
  172. package/dist/mjs/evaluator/arithmetic/subtract/subtract.mjs +2 -2
  173. package/dist/mjs/evaluator/arithmetic/subtract/subtract.mjs.map +2 -2
  174. package/dist/mjs/evaluator/comparison/equals.mjs.map +1 -1
  175. package/dist/mjs/evaluator/comparison/greater-than-or-equal.mjs +2 -2
  176. package/dist/mjs/evaluator/comparison/greater-than-or-equal.mjs.map +2 -2
  177. package/dist/mjs/evaluator/comparison/greater-than.mjs +2 -2
  178. package/dist/mjs/evaluator/comparison/greater-than.mjs.map +2 -2
  179. package/dist/mjs/evaluator/comparison/less-than-or-equal.mjs +2 -2
  180. package/dist/mjs/evaluator/comparison/less-than-or-equal.mjs.map +2 -2
  181. package/dist/mjs/evaluator/comparison/less-than.mjs +2 -2
  182. package/dist/mjs/evaluator/comparison/less-than.mjs.map +2 -2
  183. package/dist/mjs/evaluator/comparison/not-equals.mjs +2 -2
  184. package/dist/mjs/evaluator/comparison/not-equals.mjs.map +2 -2
  185. package/dist/mjs/evaluator/concatenation/concatenate.mjs +2 -2
  186. package/dist/mjs/evaluator/concatenation/concatenate.mjs.map +2 -2
  187. package/dist/mjs/evaluator/dependency-nodes/ast-evaluation-node.mjs +2 -2
  188. package/dist/mjs/evaluator/dependency-nodes/ast-evaluation-node.mjs.map +2 -2
  189. package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs.map +2 -2
  190. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs +2 -2
  191. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs.map +2 -2
  192. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs +3 -3
  193. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs.map +2 -2
  194. package/dist/mjs/evaluator/dependency-nodes/spill-meta-node.mjs +2 -2
  195. package/dist/mjs/evaluator/dependency-nodes/spill-meta-node.mjs.map +2 -2
  196. package/dist/mjs/evaluator/evaluate-scalar-operator.mjs.map +1 -1
  197. package/dist/mjs/evaluator/evaluation-context.mjs.map +2 -2
  198. package/dist/mjs/evaluator/evaluation-error.mjs.map +1 -1
  199. package/dist/mjs/evaluator/formula-evaluator.mjs +7 -7
  200. package/dist/mjs/evaluator/formula-evaluator.mjs.map +3 -3
  201. package/dist/mjs/evaluator/range-evaluation-node.mjs +3 -3
  202. package/dist/mjs/evaluator/range-evaluation-node.mjs.map +2 -2
  203. package/dist/mjs/functions/_template/template.mjs.map +1 -1
  204. package/dist/mjs/functions/array/sequence/sequence.mjs +4 -4
  205. package/dist/mjs/functions/array/sequence/sequence.mjs.map +2 -2
  206. package/dist/mjs/functions/criteria-parser.mjs.map +1 -1
  207. package/dist/mjs/functions/criteria-utils.mjs +8 -8
  208. package/dist/mjs/functions/criteria-utils.mjs.map +3 -3
  209. package/dist/mjs/functions/function-utils.mjs.map +1 -1
  210. package/dist/mjs/functions/index.mjs.map +1 -1
  211. package/dist/mjs/functions/information/cell/cell.mjs +3 -3
  212. package/dist/mjs/functions/information/cell/cell.mjs.map +2 -2
  213. package/dist/mjs/functions/information/column/column.mjs +4 -4
  214. package/dist/mjs/functions/information/column/column.mjs.map +2 -2
  215. package/dist/mjs/functions/information/row/row.mjs +4 -4
  216. package/dist/mjs/functions/information/row/row.mjs.map +2 -2
  217. package/dist/mjs/functions/logical/and/and.mjs +2 -2
  218. package/dist/mjs/functions/logical/and/and.mjs.map +2 -2
  219. package/dist/mjs/functions/logical/if/if.mjs +2 -2
  220. package/dist/mjs/functions/logical/if/if.mjs.map +3 -3
  221. package/dist/mjs/functions/logical/iferror/iferror.mjs +3 -3
  222. package/dist/mjs/functions/logical/iferror/iferror.mjs.map +2 -2
  223. package/dist/mjs/functions/logical/or/or.mjs +2 -2
  224. package/dist/mjs/functions/logical/or/or.mjs.map +2 -2
  225. package/dist/mjs/functions/lookup/count/count-utils.mjs.map +1 -1
  226. package/dist/mjs/functions/lookup/count/count.mjs +2 -2
  227. package/dist/mjs/functions/lookup/count/count.mjs.map +2 -2
  228. package/dist/mjs/functions/lookup/count/countif.mjs +2 -2
  229. package/dist/mjs/functions/lookup/count/countif.mjs.map +2 -2
  230. package/dist/mjs/functions/lookup/count/countifs.mjs.map +1 -1
  231. package/dist/mjs/functions/lookup/index-lookup/index-lookup.mjs +2 -2
  232. package/dist/mjs/functions/lookup/index-lookup/index-lookup.mjs.map +2 -2
  233. package/dist/mjs/functions/lookup/match/match.mjs +2 -2
  234. package/dist/mjs/functions/lookup/match/match.mjs.map +2 -2
  235. package/dist/mjs/functions/lookup/xlookup/xlookup.mjs +2 -2
  236. package/dist/mjs/functions/lookup/xlookup/xlookup.mjs.map +2 -2
  237. package/dist/mjs/functions/math/average/average-utils.mjs +2 -2
  238. package/dist/mjs/functions/math/average/average-utils.mjs.map +2 -2
  239. package/dist/mjs/functions/math/average/average.mjs +2 -2
  240. package/dist/mjs/functions/math/average/average.mjs.map +2 -2
  241. package/dist/mjs/functions/math/average/averageif.mjs +3 -3
  242. package/dist/mjs/functions/math/average/averageif.mjs.map +3 -3
  243. package/dist/mjs/functions/math/average/averageifs.mjs.map +2 -2
  244. package/dist/mjs/functions/math/ceiling/ceiling.mjs +2 -2
  245. package/dist/mjs/functions/math/ceiling/ceiling.mjs.map +3 -3
  246. package/dist/mjs/functions/math/max/max-utils.mjs +2 -2
  247. package/dist/mjs/functions/math/max/max-utils.mjs.map +2 -2
  248. package/dist/mjs/functions/math/max/max.mjs +2 -2
  249. package/dist/mjs/functions/math/max/max.mjs.map +2 -2
  250. package/dist/mjs/functions/math/max/maxif.mjs +2 -2
  251. package/dist/mjs/functions/math/max/maxif.mjs.map +2 -2
  252. package/dist/mjs/functions/math/max/maxifs.mjs.map +2 -2
  253. package/dist/mjs/functions/math/min/min-utils.mjs +2 -2
  254. package/dist/mjs/functions/math/min/min-utils.mjs.map +2 -2
  255. package/dist/mjs/functions/math/min/min.mjs +2 -2
  256. package/dist/mjs/functions/math/min/min.mjs.map +2 -2
  257. package/dist/mjs/functions/math/min/minif.mjs +2 -2
  258. package/dist/mjs/functions/math/min/minif.mjs.map +2 -2
  259. package/dist/mjs/functions/math/min/minifs.mjs.map +2 -2
  260. package/dist/mjs/functions/math/sum/sum.mjs +2 -2
  261. package/dist/mjs/functions/math/sum/sum.mjs.map +2 -2
  262. package/dist/mjs/functions/math/sum/sumif.mjs +2 -2
  263. package/dist/mjs/functions/math/sum/sumif.mjs.map +2 -2
  264. package/dist/mjs/functions/math/sum/sumifs.mjs.map +2 -2
  265. package/dist/mjs/functions/math/sum/summation-utils.mjs.map +1 -1
  266. package/dist/mjs/functions/reference/address/address.mjs +2 -2
  267. package/dist/mjs/functions/reference/address/address.mjs.map +2 -2
  268. package/dist/mjs/functions/reference/indirect/indirect.mjs +3 -3
  269. package/dist/mjs/functions/reference/indirect/indirect.mjs.map +3 -3
  270. package/dist/mjs/functions/reference/offset/offset.mjs +3 -3
  271. package/dist/mjs/functions/reference/offset/offset.mjs.map +2 -2
  272. package/dist/mjs/functions/text/concatenate/concatenate.mjs +2 -2
  273. package/dist/mjs/functions/text/concatenate/concatenate.mjs.map +2 -2
  274. package/dist/mjs/functions/text/exact/exact.mjs +2 -2
  275. package/dist/mjs/functions/text/exact/exact.mjs.map +2 -2
  276. package/dist/mjs/functions/text/find/find.mjs +2 -2
  277. package/dist/mjs/functions/text/find/find.mjs.map +3 -3
  278. package/dist/mjs/functions/text/left/left.mjs +3 -3
  279. package/dist/mjs/functions/text/left/left.mjs.map +2 -2
  280. package/dist/mjs/functions/text/len/len.mjs +2 -2
  281. package/dist/mjs/functions/text/len/len.mjs.map +3 -3
  282. package/dist/mjs/functions/text/mid/mid.mjs +3 -3
  283. package/dist/mjs/functions/text/mid/mid.mjs.map +2 -2
  284. package/dist/mjs/functions/text/right/right.mjs +4 -4
  285. package/dist/mjs/functions/text/right/right.mjs.map +3 -3
  286. package/dist/mjs/functions/text/text-helpers.mjs +2 -2
  287. package/dist/mjs/functions/text/text-helpers.mjs.map +2 -2
  288. package/dist/mjs/functions/text/textjoin/textjoin.mjs +2 -2
  289. package/dist/mjs/functions/text/textjoin/textjoin.mjs.map +3 -3
  290. package/dist/mjs/package.json +1 -1
  291. package/dist/mjs/parser/formatter.mjs +2 -2
  292. package/dist/mjs/parser/formatter.mjs.map +2 -2
  293. package/dist/types/core/engine.d.ts +5 -1
  294. package/dist/types/core/managers/dependency-manager.d.ts +7 -7
  295. package/dist/types/core/managers/dependency-node.d.ts +5 -5
  296. package/dist/types/core/managers/evaluation-manager.d.ts +4 -4
  297. package/dist/types/core/managers/frontier-dependency-manager.d.ts +2 -2
  298. package/dist/types/core/managers/named-expression-manager.d.ts +2 -2
  299. package/dist/types/core/managers/workbook-manager.d.ts +1 -1
  300. package/dist/types/core/types.d.ts +3 -3
  301. package/dist/types/evaluator/arithmetic/add/add.d.ts +1 -1
  302. package/dist/types/evaluator/arithmetic/divide/divide.d.ts +1 -1
  303. package/dist/types/evaluator/arithmetic/multiply/multiply.d.ts +1 -1
  304. package/dist/types/evaluator/arithmetic/power/power.d.ts +1 -1
  305. package/dist/types/evaluator/arithmetic/subtract/subtract.d.ts +1 -1
  306. package/dist/types/evaluator/comparison/equals.d.ts +1 -1
  307. package/dist/types/evaluator/comparison/greater-than-or-equal.d.ts +1 -1
  308. package/dist/types/evaluator/comparison/greater-than.d.ts +1 -1
  309. package/dist/types/evaluator/comparison/less-than-or-equal.d.ts +1 -1
  310. package/dist/types/evaluator/comparison/less-than.d.ts +1 -1
  311. package/dist/types/evaluator/comparison/not-equals.d.ts +1 -1
  312. package/dist/types/evaluator/concatenation/concatenate.d.ts +1 -1
  313. package/dist/types/evaluator/dependency-nodes/ast-evaluation-node.d.ts +2 -2
  314. package/dist/types/evaluator/dependency-nodes/base-eval-node.d.ts +1 -1
  315. package/dist/types/evaluator/dependency-nodes/cell-value-node.d.ts +1 -1
  316. package/dist/types/evaluator/dependency-nodes/empty-cell-evaluation-node.d.ts +4 -4
  317. package/dist/types/evaluator/dependency-nodes/spill-meta-node.d.ts +1 -1
  318. package/dist/types/evaluator/evaluate-scalar-operator.d.ts +1 -1
  319. package/dist/types/evaluator/evaluation-context.d.ts +3 -3
  320. package/dist/types/evaluator/evaluation-error.d.ts +2 -2
  321. package/dist/types/evaluator/formula-evaluator.d.ts +5 -5
  322. package/dist/types/evaluator/range-evaluation-node.d.ts +4 -4
  323. package/dist/types/functions/_template/template.d.ts +1 -1
  324. package/dist/types/functions/array/sequence/sequence.d.ts +1 -1
  325. package/dist/types/functions/criteria-parser.d.ts +1 -1
  326. package/dist/types/functions/criteria-utils.d.ts +5 -5
  327. package/dist/types/functions/function-utils.d.ts +5 -5
  328. package/dist/types/functions/index.d.ts +1 -1
  329. package/dist/types/functions/information/cell/cell.d.ts +1 -1
  330. package/dist/types/functions/information/column/column.d.ts +1 -1
  331. package/dist/types/functions/information/row/row.d.ts +1 -1
  332. package/dist/types/functions/logical/and/and.d.ts +1 -1
  333. package/dist/types/functions/logical/if/if.d.ts +1 -1
  334. package/dist/types/functions/logical/iferror/iferror.d.ts +1 -1
  335. package/dist/types/functions/logical/or/or.d.ts +1 -1
  336. package/dist/types/functions/lookup/count/count-utils.d.ts +2 -2
  337. package/dist/types/functions/lookup/count/count.d.ts +1 -1
  338. package/dist/types/functions/lookup/count/countif.d.ts +1 -1
  339. package/dist/types/functions/lookup/count/countifs.d.ts +1 -1
  340. package/dist/types/functions/lookup/index-lookup/index-lookup.d.ts +1 -1
  341. package/dist/types/functions/lookup/match/match.d.ts +1 -1
  342. package/dist/types/functions/lookup/xlookup/xlookup.d.ts +1 -1
  343. package/dist/types/functions/math/average/average-utils.d.ts +2 -2
  344. package/dist/types/functions/math/average/average.d.ts +1 -1
  345. package/dist/types/functions/math/average/averageif.d.ts +1 -1
  346. package/dist/types/functions/math/average/averageifs.d.ts +1 -1
  347. package/dist/types/functions/math/ceiling/ceiling.d.ts +1 -1
  348. package/dist/types/functions/math/max/max-utils.d.ts +2 -2
  349. package/dist/types/functions/math/max/max.d.ts +1 -1
  350. package/dist/types/functions/math/max/maxif.d.ts +1 -1
  351. package/dist/types/functions/math/max/maxifs.d.ts +1 -1
  352. package/dist/types/functions/math/min/min-utils.d.ts +2 -2
  353. package/dist/types/functions/math/min/min.d.ts +1 -1
  354. package/dist/types/functions/math/min/minif.d.ts +1 -1
  355. package/dist/types/functions/math/min/minifs.d.ts +1 -1
  356. package/dist/types/functions/math/sum/sum.d.ts +1 -1
  357. package/dist/types/functions/math/sum/sumif.d.ts +1 -1
  358. package/dist/types/functions/math/sum/sumifs.d.ts +1 -1
  359. package/dist/types/functions/math/sum/summation-utils.d.ts +1 -1
  360. package/dist/types/functions/reference/address/address.d.ts +1 -1
  361. package/dist/types/functions/reference/indirect/indirect.d.ts +1 -1
  362. package/dist/types/functions/reference/offset/offset.d.ts +1 -1
  363. package/dist/types/functions/text/concatenate/concatenate.d.ts +1 -1
  364. package/dist/types/functions/text/exact/exact.d.ts +1 -1
  365. package/dist/types/functions/text/find/find.d.ts +1 -1
  366. package/dist/types/functions/text/left/left.d.ts +1 -1
  367. package/dist/types/functions/text/len/len.d.ts +1 -1
  368. package/dist/types/functions/text/mid/mid.d.ts +1 -1
  369. package/dist/types/functions/text/right/right.d.ts +1 -1
  370. package/dist/types/functions/text/text-helpers.d.ts +3 -3
  371. package/dist/types/functions/text/textjoin/textjoin.d.ts +1 -1
  372. package/package.json +1 -1
  373. package/dist/cjs/core/managers/index.cjs +0 -49
  374. package/dist/cjs/core/managers/index.cjs.map +0 -10
  375. package/dist/mjs/core/managers/index.mjs +0 -21
  376. package/dist/mjs/core/managers/index.mjs.map +0 -10
  377. package/dist/types/core/managers/index.d.ts +0 -7
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/parser/formatter.ts"],
4
4
  "sourcesContent": [
5
- "import { indexToColumn } from \"src/core/utils\";\nimport { type CellValue, type SerializedCellValue } from \"../core/types.mjs\";\nimport { parseOpenEndedRange, parseInfiniteRange } from \"./grammar.mjs\";\nimport type {\n ArrayNode,\n ASTNode,\n BinaryOpNode,\n FunctionNode,\n NamedExpressionNode,\n RangeNode,\n ReferenceNode,\n StructuredReferenceNode,\n ThreeDRangeNode,\n UnaryOpNode,\n ValueNode,\n} from \"./ast.mjs\";\nimport { getOperatorPrecedence, getOperatorAssociativity } from \"./grammar.mjs\";\nimport { parseFormula } from \"./parser.mjs\";\n\nexport function astToString(ast: ASTNode): string {\n switch (ast.type) {\n case \"value\":\n return formatValue(ast.value);\n\n case \"reference\":\n return formatReference(ast);\n\n case \"range\":\n return formatRange(ast);\n\n case \"function\":\n return formatFunction(ast);\n\n case \"unary-op\":\n return formatUnaryOp(ast);\n\n case \"binary-op\":\n return formatBinaryOp(ast);\n\n case \"array\":\n return formatArray(ast);\n\n case \"named-expression\":\n return formatNamedExpression(ast);\n\n case \"error\":\n return ast.error;\n\n case \"empty\":\n return \"\";\n\n case \"3d-range\":\n return formatThreeDRange(ast);\n\n case \"structured-reference\":\n return formatStructuredReference(ast);\n\n case \"infinity\":\n return \"INFINITY\";\n\n default:\n throw new Error(`Unknown AST node type: ${(ast as any).type}`);\n }\n}\n\nfunction formatValue(value: CellValue): string {\n if (value.type === \"string\") {\n // Escape quotes by doubling them and wrap in quotes\n return `\"${value.value.replace(/\"/g, '\"\"')}\"`;\n } else if (value.type === \"boolean\") {\n return value.value ? \"TRUE\" : \"FALSE\";\n } else if (value.type === \"number\") {\n return value.value.toString();\n }\n return String(value);\n}\n\nfunction formatReference(ast: ReferenceNode): string {\n const { address, isAbsolute, sheetName, workbookName } = ast;\n const colLetter = indexToColumn(address.colIndex);\n const rowNumber = address.rowIndex + 1; // Convert from 0-based to 1-based\n\n const colRef = isAbsolute.col ? `$${colLetter}` : colLetter;\n const rowRef = isAbsolute.row ? `$${rowNumber}` : rowNumber.toString();\n\n const cellRef = `${colRef}${rowRef}`;\n\n let result = cellRef;\n\n if (sheetName) {\n const quotedSheet = sheetName.includes(\" \") ? `'${sheetName}'` : sheetName;\n result = `${quotedSheet}!${cellRef}`;\n }\n\n if (workbookName) {\n result = `[${workbookName}]${result}`;\n }\n\n return result;\n}\n\nfunction formatRange(ast: RangeNode): string {\n const { range, isAbsolute, sheetName, workbookName } = ast;\n\n // Handle infinite ranges\n if (range.end.col.type === \"infinity\" || range.end.row.type === \"infinity\") {\n return formatInfiniteRange(ast);\n }\n\n // Regular range\n const startCol = indexToColumn(range.start.col);\n const startRow = range.start.row + 1;\n const endCol = indexToColumn(range.end.col.value);\n const endRow = range.end.row.value + 1;\n\n const startColRef = isAbsolute.start.col ? `$${startCol}` : startCol;\n const startRowRef = isAbsolute.start.row\n ? `$${startRow}`\n : startRow.toString();\n const endColRef = isAbsolute.end.col ? `$${endCol}` : endCol;\n const endRowRef = isAbsolute.end.row ? `$${endRow}` : endRow.toString();\n\n const rangeRef = `${startColRef}${startRowRef}:${endColRef}${endRowRef}`;\n\n let result = rangeRef;\n\n if (sheetName) {\n const quotedSheet = sheetName.includes(\" \") ? `'${sheetName}'` : sheetName;\n result = `${quotedSheet}!${rangeRef}`;\n }\n\n if (workbookName) {\n result = `[${workbookName}]${result}`;\n }\n\n return result;\n}\n\nfunction formatInfiniteRange(ast: RangeNode): string {\n const { range, isAbsolute, sheetName, workbookName } = ast;\n\n let rangeRef: string;\n\n // Canonical formatting rules:\n // 1. Start is always explicit cell (A5, $A$5, etc.)\n // 2. End varies by openness:\n // - Open→: A5:10 (row-bounded)\n // - Open↓: A5:D (column-bounded)\n // - Open both: A5:INFINITY\n // 3. Excel compatibility: whole rows/columns use canonical cell form\n // - 5:5 → A5:5, A:A → A1:A\n\n const startCol = indexToColumn(range.start.col);\n const startRow = range.start.row + 1;\n\n const startColRef = isAbsolute.start.col ? `$${startCol}` : startCol;\n const startRowRef = isAbsolute.start.row\n ? `$${startRow}`\n : startRow.toString();\n\n if (range.end.col.type === \"infinity\" && range.end.row.type === \"infinity\") {\n // Open both: A5:INFINITY\n rangeRef = `${startColRef}${startRowRef}:INFINITY`;\n } else if (range.end.col.type === \"infinity\") {\n // Open→ (row-bounded): A5:10\n if (range.end.row.type !== \"number\") {\n throw new Error(\"Expected finite row for infinite column range\");\n }\n\n const endRow = range.end.row.value + 1;\n const endRowRef = isAbsolute.end.row ? `$${endRow}` : endRow.toString();\n\n // Always use canonical cell form: A5:10 (not 5:10)\n rangeRef = `${startColRef}${startRowRef}:${endRowRef}`;\n } else if (range.end.row.type === \"infinity\") {\n // Open↓ (column-bounded): A5:D\n if (range.end.col.type !== \"number\") {\n throw new Error(\"Expected finite column for infinite row range\");\n }\n\n const endCol = indexToColumn(range.end.col.value);\n const endColRef = isAbsolute.end.col ? `$${endCol}` : endCol;\n\n // Always use canonical cell form: A1:D (not A:D)\n rangeRef = `${startColRef}${startRowRef}:${endColRef}`;\n } else {\n throw new Error(\n \"Expected at least one infinite dimension for infinite range\"\n );\n }\n\n let result = rangeRef;\n\n if (sheetName) {\n const quotedSheet = sheetName.includes(\" \") ? `'${sheetName}'` : sheetName;\n result = `${quotedSheet}!${rangeRef}`;\n }\n\n if (workbookName) {\n result = `[${workbookName}]${result}`;\n }\n\n return result;\n}\n\nfunction formatFunction(ast: FunctionNode): string {\n const { name, args } = ast;\n const formattedArgs = args.map((arg: ASTNode) => astToString(arg)).join(\",\");\n return `${name}(${formattedArgs})`;\n}\n\nfunction formatUnaryOp(ast: UnaryOpNode): string {\n const { operator, operand } = ast;\n const operandStr = astToString(operand);\n\n if (operator === \"%\") {\n return `${operandStr}%`;\n } else {\n return `${operator}${operandStr}`;\n }\n}\n\nfunction formatBinaryOp(ast: BinaryOpNode): string {\n const { operator, left, right } = ast;\n\n // Determine if we need parentheses for left and right operands\n const leftNeedsParens = needsParentheses(left, ast, \"left\");\n const rightNeedsParens = needsParentheses(right, ast, \"right\");\n\n const leftStr = leftNeedsParens\n ? `(${astToString(left)})`\n : astToString(left);\n const rightStr = rightNeedsParens\n ? `(${astToString(right)})`\n : astToString(right);\n\n return `${leftStr}${operator}${rightStr}`;\n}\n\nfunction needsParentheses(\n child: ASTNode,\n parent: ASTNode,\n position: \"left\" | \"right\"\n): boolean {\n if (child.type !== \"binary-op\") {\n return false;\n }\n\n // Only binary operations need precedence checking\n if (parent.type !== \"binary-op\") {\n return false;\n }\n\n const childPrecedence = getOperatorPrecedence(child.operator);\n const parentPrecedence = getOperatorPrecedence(parent.operator);\n\n // Lower precedence always needs parentheses\n if (childPrecedence < parentPrecedence) {\n return true;\n }\n\n // For same precedence, check associativity\n if (childPrecedence === parentPrecedence) {\n const associativity = getOperatorAssociativity(parent.operator);\n\n // For left-associative operators, right side needs parentheses\n // For right-associative operators, left side needs parentheses\n if (associativity === \"left\" && position === \"right\") {\n return true;\n } else if (associativity === \"right\" && position === \"left\") {\n return true;\n }\n }\n\n return false;\n}\n\nfunction formatArray(ast: ArrayNode): string {\n const { elements } = ast;\n const rows = elements.map((row: ASTNode[]) =>\n row.map((cell: ASTNode) => astToString(cell)).join(\",\")\n );\n return `{${rows.join(\";\")}}`;\n}\n\nfunction formatNamedExpression(ast: NamedExpressionNode): string {\n const { name, sheetName, workbookName } = ast;\n\n let result = name;\n\n if (sheetName !== undefined) {\n // Sheet-scoped named expression\n const quotedSheet = sheetName.includes(\" \") ? `'${sheetName}'` : sheetName;\n result = `${quotedSheet}!${name}`;\n }\n\n if (workbookName) {\n result = `[${workbookName}]${result}`;\n }\n\n return result;\n}\n\nfunction formatThreeDRange(ast: ThreeDRangeNode): string {\n const { startSheet, endSheet, workbookName, reference } = ast;\n const refStr = astToString(reference);\n\n // Remove sheet name and workbook name from reference if present (since we're adding the 3D range prefix)\n let cleanRef = refStr;\n if (cleanRef.includes(\"!\")) {\n cleanRef = cleanRef.split(\"!\")[1]!;\n }\n // Remove workbook prefix if present\n if (cleanRef.startsWith(\"[\") && cleanRef.includes(\"]\")) {\n const bracketEnd = cleanRef.indexOf(\"]\");\n cleanRef = cleanRef.substring(bracketEnd + 1);\n }\n\n const quotedStartSheet = startSheet.includes(\" \")\n ? `'${startSheet}'`\n : startSheet;\n const quotedEndSheet = endSheet.includes(\" \") ? `'${endSheet}'` : endSheet;\n\n let result = `${quotedStartSheet}:${quotedEndSheet}!${cleanRef}`;\n\n if (workbookName) {\n result = `[${workbookName}]${result}`;\n }\n\n return result;\n}\n\n/**\n * Check if a column name contains special characters that require double bracket syntax\n */\nfunction needsColumnBrackets(columnName: string): boolean {\n // Column names need extra brackets if they contain spaces or special characters\n // Note: Colons are NOT included here since they can be part of column names\n // Column ranges must use explicit double-bracket syntax: [[Col1]:[Col2]]\n return /[\\s\\[\\]#@,=/]/.test(columnName);\n}\n\nfunction formatStructuredReference(ast: StructuredReferenceNode): string {\n const { tableName, sheetName, workbookName, cols, selector, isCurrentRow } =\n ast;\n\n if (!tableName && isCurrentRow) {\n // Current row reference like [@Column] or @Column\n if (cols && cols.startCol) {\n return `[@${cols.startCol}]`;\n }\n return \"@\";\n }\n\n if (!tableName && !isCurrentRow) {\n // Bare column reference like [Column] or [#Data]\n if (selector) {\n return `[${selector}]`;\n } else if (cols) {\n const startNeedsBrackets = needsColumnBrackets(cols.startCol);\n\n if (cols.startCol === cols.endCol) {\n // Single column\n if (startNeedsBrackets) {\n return `[[${cols.startCol}]]`;\n } else {\n return `[${cols.startCol}]`;\n }\n } else {\n // Column range - always use double-bracket syntax to avoid ambiguity\n // with column names that contain colons\n return `[[${cols.startCol}]:[${cols.endCol}]]`;\n }\n }\n return \"[]\"; // Empty bare reference (shouldn't happen)\n }\n\n let result = \"\";\n\n if (workbookName) {\n result += `[${workbookName}]`;\n }\n\n if (sheetName) {\n const quotedSheet = sheetName.includes(\" \") ? `'${sheetName}'` : sheetName;\n result += `${quotedSheet}!`;\n }\n\n result += tableName;\n\n if (selector && cols) {\n // Complex syntax like Table1[[#Headers],[Column1]] or Table1[[#Headers],[Col1]:[Col2]]\n const colRef =\n cols.startCol === cols.endCol\n ? `[${cols.startCol}]` // Single column: [Column]\n : `[${cols.startCol}]:[${cols.endCol}]`; // Range: [Col1]:[Col2]\n result += `[[${selector}],${colRef}]`;\n } else if (selector) {\n // Simple selector like Table1[#Data]\n result += `[${selector}]`;\n } else if (cols) {\n const startNeedsBrackets = needsColumnBrackets(cols.startCol);\n const endNeedsBrackets =\n cols.startCol !== cols.endCol && needsColumnBrackets(cols.endCol);\n const anyNeedsBrackets = startNeedsBrackets || endNeedsBrackets;\n\n if (isCurrentRow) {\n // Current row references\n if (cols.startCol === cols.endCol) {\n // Single column - always use simple format [@ColumnName]\n // No need for double brackets even if column name has spaces\n result += `[@${cols.startCol}]`;\n } else {\n // Column range - always use double-bracket syntax to avoid ambiguity\n // with column names that contain colons\n result += `[@[${cols.startCol}]:[${cols.endCol}]]`;\n }\n } else {\n // Regular column references\n if (cols.startCol === cols.endCol) {\n // Single column - always use single brackets for table references\n result += `[${cols.startCol}]`;\n } else {\n // Column range - always use double-bracket syntax to avoid ambiguity\n // with column names that contain colons\n result += `[[${cols.startCol}]:[${cols.endCol}]]`;\n }\n }\n }\n\n return result;\n}\n\nexport function formatFormula(formula: string): string {\n return astToString(parseFormula(formula));\n}\n\nexport function normalizeSerializedCellValue(\n value: SerializedCellValue\n): SerializedCellValue {\n if (value === undefined || (typeof value === \"string\" && value === \"\"))\n return \"\";\n\n if (typeof value === \"string\" && value.startsWith(\"=\")) {\n return `=${formatFormula(value.slice(1))}`;\n }\n\n return value;\n}\n\nexport function isSerializedCellValueEqual(\n a: SerializedCellValue,\n b: SerializedCellValue\n): boolean {\n const normalizedA = normalizeSerializedCellValue(a);\n const normalizedB = normalizeSerializedCellValue(b);\n\n return normalizedA === normalizedB;\n}\n"
5
+ "import { indexToColumn } from \"../core/utils.mjs\";\nimport { type CellValue, type SerializedCellValue } from \"../core/types.mjs\";\nimport { parseOpenEndedRange, parseInfiniteRange } from \"./grammar.mjs\";\nimport type {\n ArrayNode,\n ASTNode,\n BinaryOpNode,\n FunctionNode,\n NamedExpressionNode,\n RangeNode,\n ReferenceNode,\n StructuredReferenceNode,\n ThreeDRangeNode,\n UnaryOpNode,\n ValueNode,\n} from \"./ast.mjs\";\nimport { getOperatorPrecedence, getOperatorAssociativity } from \"./grammar.mjs\";\nimport { parseFormula } from \"./parser.mjs\";\n\nexport function astToString(ast: ASTNode): string {\n switch (ast.type) {\n case \"value\":\n return formatValue(ast.value);\n\n case \"reference\":\n return formatReference(ast);\n\n case \"range\":\n return formatRange(ast);\n\n case \"function\":\n return formatFunction(ast);\n\n case \"unary-op\":\n return formatUnaryOp(ast);\n\n case \"binary-op\":\n return formatBinaryOp(ast);\n\n case \"array\":\n return formatArray(ast);\n\n case \"named-expression\":\n return formatNamedExpression(ast);\n\n case \"error\":\n return ast.error;\n\n case \"empty\":\n return \"\";\n\n case \"3d-range\":\n return formatThreeDRange(ast);\n\n case \"structured-reference\":\n return formatStructuredReference(ast);\n\n case \"infinity\":\n return \"INFINITY\";\n\n default:\n throw new Error(`Unknown AST node type: ${(ast as any).type}`);\n }\n}\n\nfunction formatValue(value: CellValue): string {\n if (value.type === \"string\") {\n // Escape quotes by doubling them and wrap in quotes\n return `\"${value.value.replace(/\"/g, '\"\"')}\"`;\n } else if (value.type === \"boolean\") {\n return value.value ? \"TRUE\" : \"FALSE\";\n } else if (value.type === \"number\") {\n return value.value.toString();\n }\n return String(value);\n}\n\nfunction formatReference(ast: ReferenceNode): string {\n const { address, isAbsolute, sheetName, workbookName } = ast;\n const colLetter = indexToColumn(address.colIndex);\n const rowNumber = address.rowIndex + 1; // Convert from 0-based to 1-based\n\n const colRef = isAbsolute.col ? `$${colLetter}` : colLetter;\n const rowRef = isAbsolute.row ? `$${rowNumber}` : rowNumber.toString();\n\n const cellRef = `${colRef}${rowRef}`;\n\n let result = cellRef;\n\n if (sheetName) {\n const quotedSheet = sheetName.includes(\" \") ? `'${sheetName}'` : sheetName;\n result = `${quotedSheet}!${cellRef}`;\n }\n\n if (workbookName) {\n result = `[${workbookName}]${result}`;\n }\n\n return result;\n}\n\nfunction formatRange(ast: RangeNode): string {\n const { range, isAbsolute, sheetName, workbookName } = ast;\n\n // Handle infinite ranges\n if (range.end.col.type === \"infinity\" || range.end.row.type === \"infinity\") {\n return formatInfiniteRange(ast);\n }\n\n // Regular range\n const startCol = indexToColumn(range.start.col);\n const startRow = range.start.row + 1;\n const endCol = indexToColumn(range.end.col.value);\n const endRow = range.end.row.value + 1;\n\n const startColRef = isAbsolute.start.col ? `$${startCol}` : startCol;\n const startRowRef = isAbsolute.start.row\n ? `$${startRow}`\n : startRow.toString();\n const endColRef = isAbsolute.end.col ? `$${endCol}` : endCol;\n const endRowRef = isAbsolute.end.row ? `$${endRow}` : endRow.toString();\n\n const rangeRef = `${startColRef}${startRowRef}:${endColRef}${endRowRef}`;\n\n let result = rangeRef;\n\n if (sheetName) {\n const quotedSheet = sheetName.includes(\" \") ? `'${sheetName}'` : sheetName;\n result = `${quotedSheet}!${rangeRef}`;\n }\n\n if (workbookName) {\n result = `[${workbookName}]${result}`;\n }\n\n return result;\n}\n\nfunction formatInfiniteRange(ast: RangeNode): string {\n const { range, isAbsolute, sheetName, workbookName } = ast;\n\n let rangeRef: string;\n\n // Canonical formatting rules:\n // 1. Start is always explicit cell (A5, $A$5, etc.)\n // 2. End varies by openness:\n // - Open→: A5:10 (row-bounded)\n // - Open↓: A5:D (column-bounded)\n // - Open both: A5:INFINITY\n // 3. Excel compatibility: whole rows/columns use canonical cell form\n // - 5:5 → A5:5, A:A → A1:A\n\n const startCol = indexToColumn(range.start.col);\n const startRow = range.start.row + 1;\n\n const startColRef = isAbsolute.start.col ? `$${startCol}` : startCol;\n const startRowRef = isAbsolute.start.row\n ? `$${startRow}`\n : startRow.toString();\n\n if (range.end.col.type === \"infinity\" && range.end.row.type === \"infinity\") {\n // Open both: A5:INFINITY\n rangeRef = `${startColRef}${startRowRef}:INFINITY`;\n } else if (range.end.col.type === \"infinity\") {\n // Open→ (row-bounded): A5:10\n if (range.end.row.type !== \"number\") {\n throw new Error(\"Expected finite row for infinite column range\");\n }\n\n const endRow = range.end.row.value + 1;\n const endRowRef = isAbsolute.end.row ? `$${endRow}` : endRow.toString();\n\n // Always use canonical cell form: A5:10 (not 5:10)\n rangeRef = `${startColRef}${startRowRef}:${endRowRef}`;\n } else if (range.end.row.type === \"infinity\") {\n // Open↓ (column-bounded): A5:D\n if (range.end.col.type !== \"number\") {\n throw new Error(\"Expected finite column for infinite row range\");\n }\n\n const endCol = indexToColumn(range.end.col.value);\n const endColRef = isAbsolute.end.col ? `$${endCol}` : endCol;\n\n // Always use canonical cell form: A1:D (not A:D)\n rangeRef = `${startColRef}${startRowRef}:${endColRef}`;\n } else {\n throw new Error(\n \"Expected at least one infinite dimension for infinite range\"\n );\n }\n\n let result = rangeRef;\n\n if (sheetName) {\n const quotedSheet = sheetName.includes(\" \") ? `'${sheetName}'` : sheetName;\n result = `${quotedSheet}!${rangeRef}`;\n }\n\n if (workbookName) {\n result = `[${workbookName}]${result}`;\n }\n\n return result;\n}\n\nfunction formatFunction(ast: FunctionNode): string {\n const { name, args } = ast;\n const formattedArgs = args.map((arg: ASTNode) => astToString(arg)).join(\",\");\n return `${name}(${formattedArgs})`;\n}\n\nfunction formatUnaryOp(ast: UnaryOpNode): string {\n const { operator, operand } = ast;\n const operandStr = astToString(operand);\n\n if (operator === \"%\") {\n return `${operandStr}%`;\n } else {\n return `${operator}${operandStr}`;\n }\n}\n\nfunction formatBinaryOp(ast: BinaryOpNode): string {\n const { operator, left, right } = ast;\n\n // Determine if we need parentheses for left and right operands\n const leftNeedsParens = needsParentheses(left, ast, \"left\");\n const rightNeedsParens = needsParentheses(right, ast, \"right\");\n\n const leftStr = leftNeedsParens\n ? `(${astToString(left)})`\n : astToString(left);\n const rightStr = rightNeedsParens\n ? `(${astToString(right)})`\n : astToString(right);\n\n return `${leftStr}${operator}${rightStr}`;\n}\n\nfunction needsParentheses(\n child: ASTNode,\n parent: ASTNode,\n position: \"left\" | \"right\"\n): boolean {\n if (child.type !== \"binary-op\") {\n return false;\n }\n\n // Only binary operations need precedence checking\n if (parent.type !== \"binary-op\") {\n return false;\n }\n\n const childPrecedence = getOperatorPrecedence(child.operator);\n const parentPrecedence = getOperatorPrecedence(parent.operator);\n\n // Lower precedence always needs parentheses\n if (childPrecedence < parentPrecedence) {\n return true;\n }\n\n // For same precedence, check associativity\n if (childPrecedence === parentPrecedence) {\n const associativity = getOperatorAssociativity(parent.operator);\n\n // For left-associative operators, right side needs parentheses\n // For right-associative operators, left side needs parentheses\n if (associativity === \"left\" && position === \"right\") {\n return true;\n } else if (associativity === \"right\" && position === \"left\") {\n return true;\n }\n }\n\n return false;\n}\n\nfunction formatArray(ast: ArrayNode): string {\n const { elements } = ast;\n const rows = elements.map((row: ASTNode[]) =>\n row.map((cell: ASTNode) => astToString(cell)).join(\",\")\n );\n return `{${rows.join(\";\")}}`;\n}\n\nfunction formatNamedExpression(ast: NamedExpressionNode): string {\n const { name, sheetName, workbookName } = ast;\n\n let result = name;\n\n if (sheetName !== undefined) {\n // Sheet-scoped named expression\n const quotedSheet = sheetName.includes(\" \") ? `'${sheetName}'` : sheetName;\n result = `${quotedSheet}!${name}`;\n }\n\n if (workbookName) {\n result = `[${workbookName}]${result}`;\n }\n\n return result;\n}\n\nfunction formatThreeDRange(ast: ThreeDRangeNode): string {\n const { startSheet, endSheet, workbookName, reference } = ast;\n const refStr = astToString(reference);\n\n // Remove sheet name and workbook name from reference if present (since we're adding the 3D range prefix)\n let cleanRef = refStr;\n if (cleanRef.includes(\"!\")) {\n cleanRef = cleanRef.split(\"!\")[1]!;\n }\n // Remove workbook prefix if present\n if (cleanRef.startsWith(\"[\") && cleanRef.includes(\"]\")) {\n const bracketEnd = cleanRef.indexOf(\"]\");\n cleanRef = cleanRef.substring(bracketEnd + 1);\n }\n\n const quotedStartSheet = startSheet.includes(\" \")\n ? `'${startSheet}'`\n : startSheet;\n const quotedEndSheet = endSheet.includes(\" \") ? `'${endSheet}'` : endSheet;\n\n let result = `${quotedStartSheet}:${quotedEndSheet}!${cleanRef}`;\n\n if (workbookName) {\n result = `[${workbookName}]${result}`;\n }\n\n return result;\n}\n\n/**\n * Check if a column name contains special characters that require double bracket syntax\n */\nfunction needsColumnBrackets(columnName: string): boolean {\n // Column names need extra brackets if they contain spaces or special characters\n // Note: Colons are NOT included here since they can be part of column names\n // Column ranges must use explicit double-bracket syntax: [[Col1]:[Col2]]\n return /[\\s\\[\\]#@,=/]/.test(columnName);\n}\n\nfunction formatStructuredReference(ast: StructuredReferenceNode): string {\n const { tableName, sheetName, workbookName, cols, selector, isCurrentRow } =\n ast;\n\n if (!tableName && isCurrentRow) {\n // Current row reference like [@Column] or @Column\n if (cols && cols.startCol) {\n return `[@${cols.startCol}]`;\n }\n return \"@\";\n }\n\n if (!tableName && !isCurrentRow) {\n // Bare column reference like [Column] or [#Data]\n if (selector) {\n return `[${selector}]`;\n } else if (cols) {\n const startNeedsBrackets = needsColumnBrackets(cols.startCol);\n\n if (cols.startCol === cols.endCol) {\n // Single column\n if (startNeedsBrackets) {\n return `[[${cols.startCol}]]`;\n } else {\n return `[${cols.startCol}]`;\n }\n } else {\n // Column range - always use double-bracket syntax to avoid ambiguity\n // with column names that contain colons\n return `[[${cols.startCol}]:[${cols.endCol}]]`;\n }\n }\n return \"[]\"; // Empty bare reference (shouldn't happen)\n }\n\n let result = \"\";\n\n if (workbookName) {\n result += `[${workbookName}]`;\n }\n\n if (sheetName) {\n const quotedSheet = sheetName.includes(\" \") ? `'${sheetName}'` : sheetName;\n result += `${quotedSheet}!`;\n }\n\n result += tableName;\n\n if (selector && cols) {\n // Complex syntax like Table1[[#Headers],[Column1]] or Table1[[#Headers],[Col1]:[Col2]]\n const colRef =\n cols.startCol === cols.endCol\n ? `[${cols.startCol}]` // Single column: [Column]\n : `[${cols.startCol}]:[${cols.endCol}]`; // Range: [Col1]:[Col2]\n result += `[[${selector}],${colRef}]`;\n } else if (selector) {\n // Simple selector like Table1[#Data]\n result += `[${selector}]`;\n } else if (cols) {\n const startNeedsBrackets = needsColumnBrackets(cols.startCol);\n const endNeedsBrackets =\n cols.startCol !== cols.endCol && needsColumnBrackets(cols.endCol);\n const anyNeedsBrackets = startNeedsBrackets || endNeedsBrackets;\n\n if (isCurrentRow) {\n // Current row references\n if (cols.startCol === cols.endCol) {\n // Single column - always use simple format [@ColumnName]\n // No need for double brackets even if column name has spaces\n result += `[@${cols.startCol}]`;\n } else {\n // Column range - always use double-bracket syntax to avoid ambiguity\n // with column names that contain colons\n result += `[@[${cols.startCol}]:[${cols.endCol}]]`;\n }\n } else {\n // Regular column references\n if (cols.startCol === cols.endCol) {\n // Single column - always use single brackets for table references\n result += `[${cols.startCol}]`;\n } else {\n // Column range - always use double-bracket syntax to avoid ambiguity\n // with column names that contain colons\n result += `[[${cols.startCol}]:[${cols.endCol}]]`;\n }\n }\n }\n\n return result;\n}\n\nexport function formatFormula(formula: string): string {\n return astToString(parseFormula(formula));\n}\n\nexport function normalizeSerializedCellValue(\n value: SerializedCellValue\n): SerializedCellValue {\n if (value === undefined || (typeof value === \"string\" && value === \"\"))\n return \"\";\n\n if (typeof value === \"string\" && value.startsWith(\"=\")) {\n return `=${formatFormula(value.slice(1))}`;\n }\n\n return value;\n}\n\nexport function isSerializedCellValueEqual(\n a: SerializedCellValue,\n b: SerializedCellValue\n): boolean {\n const normalizedA = normalizeSerializedCellValue(a);\n const normalizedB = normalizeSerializedCellValue(b);\n\n return normalizedA === normalizedB;\n}\n"
6
6
  ],
7
7
  "mappings": "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",
8
- "debugId": "4A7465BE494DEACA64756E2164756E21",
8
+ "debugId": "BF0F8475C15DC70164756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -5,8 +5,12 @@
5
5
  import { type CellAddress, type NamedExpression, type RangeAddress, type SerializedCellValue, type SingleEvaluationResult, type SpreadsheetRange, type SpreadsheetRangeEnd, type TableDefinition } from "./types";
6
6
  import type { FillDirection } from "@ricsam/selection-manager";
7
7
  import { AutoFill } from "./autofill-utils";
8
- import { DependencyManager, EvaluationManager, EventManager, NamedExpressionManager, TableManager } from "./managers";
9
8
  import { WorkbookManager } from "./managers/workbook-manager";
9
+ import { NamedExpressionManager } from "./managers/named-expression-manager";
10
+ import { TableManager } from "./managers/table-manager";
11
+ import { EventManager } from "./managers/event-manager";
12
+ import { EvaluationManager } from "./managers/evaluation-manager";
13
+ import { DependencyManager } from "./managers/dependency-manager";
10
14
  /**
11
15
  * Main FormulaEngine class
12
16
  */
@@ -1,14 +1,14 @@
1
- import { type ContextDependency } from "src/evaluator/evaluation-context";
1
+ import { type ContextDependency } from "../../evaluator/evaluation-context";
2
2
  import { type CellAddress, type EvaluationOrder, type SpilledValue } from "../types";
3
- import { AstEvaluationNode } from "src/evaluator/dependency-nodes/ast-evaluation-node";
4
- import { CellValueNode } from "src/evaluator/dependency-nodes/cell-value-node";
5
- import { EmptyCellEvaluationNode } from "src/evaluator/dependency-nodes/empty-cell-evaluation-node";
6
- import { RangeEvaluationNode } from "src/evaluator/range-evaluation-node";
7
- import type { ASTNode } from "src/parser/ast";
3
+ import { AstEvaluationNode } from "../../evaluator/dependency-nodes/ast-evaluation-node";
4
+ import { CellValueNode } from "../../evaluator/dependency-nodes/cell-value-node";
5
+ import { EmptyCellEvaluationNode } from "../../evaluator/dependency-nodes/empty-cell-evaluation-node";
6
+ import { SpillMetaNode } from "../../evaluator/dependency-nodes/spill-meta-node";
7
+ import { RangeEvaluationNode } from "../../evaluator/range-evaluation-node";
8
+ import type { ASTNode } from "../../parser/ast";
8
9
  import { CacheManager } from "./cache-manager";
9
10
  import type { CellNodeKeyDictionary, CellNodeType, DependencyNode } from "./dependency-node";
10
11
  import { WorkbookManager } from "./workbook-manager";
11
- import { SpillMetaNode } from "src/evaluator/dependency-nodes/spill-meta-node";
12
12
  export interface DependencyTreeNode {
13
13
  type: "cell" | "range" | "empty";
14
14
  circular?: boolean;
@@ -1,8 +1,8 @@
1
- import { AstEvaluationNode } from "src/evaluator/dependency-nodes/ast-evaluation-node";
2
- import { CellValueNode } from "src/evaluator/dependency-nodes/cell-value-node";
3
- import { EmptyCellEvaluationNode } from "src/evaluator/dependency-nodes/empty-cell-evaluation-node";
4
- import { SpillMetaNode } from "src/evaluator/dependency-nodes/spill-meta-node";
5
- import { RangeEvaluationNode } from "src/evaluator/range-evaluation-node";
1
+ import { AstEvaluationNode } from "../../evaluator/dependency-nodes/ast-evaluation-node";
2
+ import { CellValueNode } from "../../evaluator/dependency-nodes/cell-value-node";
3
+ import { EmptyCellEvaluationNode } from "../../evaluator/dependency-nodes/empty-cell-evaluation-node";
4
+ import { SpillMetaNode } from "../../evaluator/dependency-nodes/spill-meta-node";
5
+ import { RangeEvaluationNode } from "../../evaluator/range-evaluation-node";
6
6
  export type DependencyNode = CellValueNode | RangeEvaluationNode | EmptyCellEvaluationNode | AstEvaluationNode | SpillMetaNode;
7
7
  export type CellNodeType = "cell-value" | "empty" | "spill-meta";
8
8
  export type CellNodeKey = `${CellNodeType}:${string}`;
@@ -1,11 +1,11 @@
1
- import { CellValueNode } from "src/evaluator/dependency-nodes/cell-value-node";
2
- import { RangeEvaluationNode } from "src/evaluator/range-evaluation-node";
1
+ import { CellValueNode } from "../../evaluator/dependency-nodes/cell-value-node";
2
+ import { RangeEvaluationNode } from "../../evaluator/range-evaluation-node";
3
3
  import { FormulaEvaluator } from "../../evaluator/formula-evaluator";
4
4
  import { type CellAddress, type CellValue, type SerializedCellValue, type SingleEvaluationResult, type SpreadsheetRange } from "../types";
5
5
  import type { DependencyManager } from "./dependency-manager";
6
6
  import type { WorkbookManager } from "./workbook-manager";
7
- import { SpillMetaNode } from "src/evaluator/dependency-nodes/spill-meta-node";
8
- import { EmptyCellEvaluationNode } from "src/evaluator/dependency-nodes/empty-cell-evaluation-node";
7
+ import { SpillMetaNode } from "../../evaluator/dependency-nodes/spill-meta-node";
8
+ import { EmptyCellEvaluationNode } from "../../evaluator/dependency-nodes/empty-cell-evaluation-node";
9
9
  import type { TableManager } from "./table-manager";
10
10
  export declare class EvaluationManager {
11
11
  private workbookManager;
@@ -1,9 +1,9 @@
1
- import { CellValueNode } from "src/evaluator/dependency-nodes/cell-value-node";
1
+ import { CellValueNode } from "../../evaluator/dependency-nodes/cell-value-node";
2
2
  import type { CellAddress, CellInRangeResult, RangeAddress } from "../types";
3
3
  import type { DependencyManager } from "./dependency-manager";
4
4
  import type { DependencyNode } from "./dependency-node";
5
5
  import type { WorkbookManager } from "./workbook-manager";
6
- import type { SpillMetaNode } from "src/evaluator/dependency-nodes/spill-meta-node";
6
+ import type { SpillMetaNode } from "../../evaluator/dependency-nodes/spill-meta-node";
7
7
  type EvalOrderEntry = {
8
8
  type: "value";
9
9
  address: CellAddress;
@@ -1,6 +1,6 @@
1
1
  import type { NamedExpression } from "../types";
2
- import type { NamedExpressionNode } from "src/parser/ast";
3
- import type { EvaluationContext } from "src/evaluator/evaluation-context";
2
+ import type { NamedExpressionNode } from "../../parser/ast";
3
+ import type { EvaluationContext } from "../../evaluator/evaluation-context";
4
4
  export declare class NamedExpressionManager {
5
5
  sheetExpressions: Map<string, Map<string, Map<string, NamedExpression>>>;
6
6
  workbookExpressions: Map<string, Map<string, NamedExpression>>;
@@ -1,5 +1,5 @@
1
1
  import { type CellAddress, type SerializedCellValue, type Sheet, type Workbook } from "../types";
2
- import type { RangeAddress } from "src/core/types";
2
+ import type { RangeAddress } from "../types";
3
3
  interface IndexEntry {
4
4
  number: number;
5
5
  key: string;
@@ -2,9 +2,9 @@
2
2
  * Core type definitions for FormulaEngine
3
3
  * This file contains all fundamental types used throughout the engine
4
4
  */
5
- import type { FunctionNode } from "src/parser/ast";
6
- import type { FormulaEvaluator } from "src/evaluator/formula-evaluator";
7
- import type { EvaluationContext } from "src/evaluator/evaluation-context";
5
+ import type { EvaluationContext } from "../evaluator/evaluation-context";
6
+ import type { FormulaEvaluator } from "../evaluator/formula-evaluator";
7
+ import type { FunctionNode } from "../parser/ast";
8
8
  import type { DependencyNode } from "./managers/dependency-node";
9
9
  import type { LookupOrder } from "./managers/range-eval-order-builder";
10
10
  export interface CellAddress {
@@ -1,2 +1,2 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../../core/types";
2
2
  export declare const add: ArethmeticEvaluator;
@@ -1,2 +1,2 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../../core/types";
2
2
  export declare const divide: ArethmeticEvaluator;
@@ -1,2 +1,2 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../../core/types";
2
2
  export declare const multiply: ArethmeticEvaluator;
@@ -1,2 +1,2 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../../core/types";
2
2
  export declare const power: ArethmeticEvaluator;
@@ -1,2 +1,2 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../../core/types";
2
2
  export declare const subtract: ArethmeticEvaluator;
@@ -1,4 +1,4 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../core/types";
2
2
  /**
3
3
  * Equals operator (=) - Returns TRUE if both values are exactly equal
4
4
  * Strict type checking: both type and value must match
@@ -1,4 +1,4 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../core/types";
2
2
  /**
3
3
  * Greater than or equal operator (>=) - Returns TRUE if left >= right
4
4
  * Implemented as NOT (left < right)
@@ -1,4 +1,4 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../core/types";
2
2
  /**
3
3
  * Greater than operator (>) - Returns TRUE if left > right
4
4
  * Implemented as NOT (left <= right)
@@ -1,4 +1,4 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../core/types";
2
2
  /**
3
3
  * Less than or equal operator (<=) - Returns TRUE if left <= right
4
4
  * Uses lessThan OR equals logic
@@ -1,4 +1,4 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../core/types";
2
2
  /**
3
3
  * Less than operator (<) - Returns TRUE if left < right
4
4
  * Only works with numbers and infinity
@@ -1,4 +1,4 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../core/types";
2
2
  /**
3
3
  * Not equals operator (<>) - Returns TRUE if values are not equal
4
4
  * Uses the equals operator and negates the result
@@ -1,4 +1,4 @@
1
- import type { ArethmeticEvaluator } from "src/core/types";
1
+ import type { ArethmeticEvaluator } from "../../core/types";
2
2
  /**
3
3
  * Concatenation operator (&) - Concatenates two values as strings
4
4
  * Works with numbers and strings only
@@ -1,5 +1,5 @@
1
- import type { FunctionEvaluationResult } from "src/core/types";
2
- import type { ASTNode } from "src/parser/ast";
1
+ import type { FunctionEvaluationResult } from "../../core/types";
2
+ import type { ASTNode } from "../../parser/ast";
3
3
  import type { ContextDependency } from "../evaluation-context";
4
4
  import { BaseEvalNode } from "./base-eval-node";
5
5
  export declare class AstEvaluationNode extends BaseEvalNode<FunctionEvaluationResult> {
@@ -1,4 +1,4 @@
1
- import { type DependencyNode } from "src/core/managers/dependency-node";
1
+ import { type DependencyNode } from "../../core/managers/dependency-node";
2
2
  import type { SpillMetaNode } from "./spill-meta-node";
3
3
  export declare class BaseEvalNode<T> {
4
4
  key: string;
@@ -1,4 +1,4 @@
1
- import type { CellAddress, SingleEvaluationResult } from "src/core/types";
1
+ import type { CellAddress, SingleEvaluationResult } from "../../core/types";
2
2
  import { BaseEvalNode } from "./base-eval-node";
3
3
  import type { SpillMetaNode } from "./spill-meta-node";
4
4
  export declare class CellValueNode extends BaseEvalNode<SingleEvaluationResult> {
@@ -1,7 +1,7 @@
1
- import type { DependencyManager } from "src/core/managers/dependency-manager";
2
- import { FrontierDependencyManager } from "src/core/managers/frontier-dependency-manager";
3
- import type { WorkbookManager } from "src/core/managers/workbook-manager";
4
- import type { CellAddress, SingleEvaluationResult } from "src/core/types";
1
+ import type { DependencyManager } from "../../core/managers/dependency-manager";
2
+ import { FrontierDependencyManager } from "../../core/managers/frontier-dependency-manager";
3
+ import type { WorkbookManager } from "../../core/managers/workbook-manager";
4
+ import type { CellAddress, SingleEvaluationResult } from "../../core/types";
5
5
  export declare class EmptyCellEvaluationNode extends FrontierDependencyManager {
6
6
  emptyCellKey: string;
7
7
  key: string;
@@ -1,4 +1,4 @@
1
- import type { CellAddress, DoesNotSpillResult, ErrorEvaluationResult, SpilledValuesEvaluationResult } from "src/core/types";
1
+ import type { CellAddress, DoesNotSpillResult, ErrorEvaluationResult, SpilledValuesEvaluationResult } from "../../core/types";
2
2
  import { BaseEvalNode } from "./base-eval-node";
3
3
  export declare class SpillMetaNode extends BaseEvalNode<SpilledValuesEvaluationResult | ErrorEvaluationResult | DoesNotSpillResult> {
4
4
  readonly cellAddress: CellAddress;
@@ -1,4 +1,4 @@
1
- import type { FormulaEvaluator } from "src/evaluator/formula-evaluator";
1
+ import type { FormulaEvaluator } from "./formula-evaluator";
2
2
  import { type ArethmeticEvaluator, type FunctionEvaluationResult } from "../core/types";
3
3
  import type { EvaluationContext } from "./evaluation-context";
4
4
  export type EvaluateScalarOperatorOptions = {
@@ -1,6 +1,6 @@
1
- import type { TableManager } from "src/core/managers";
2
- import type { DependencyNode } from "src/core/managers/dependency-node";
3
- import type { CellAddress } from "src/core/types";
1
+ import type { DependencyNode } from "../core/managers/dependency-node";
2
+ import type { TableManager } from "../core/managers/table-manager";
3
+ import type { CellAddress } from "../core/types";
4
4
  export declare class EvaluationContext {
5
5
  private _cellAddress;
6
6
  private _tableName;
@@ -1,5 +1,5 @@
1
- import type { DependencyNode } from "src/core/managers/dependency-node";
2
- import type { FormulaError } from "src/core/types";
1
+ import type { DependencyNode } from "../core/managers/dependency-node";
2
+ import type { FormulaError } from "../core/types";
3
3
  export declare class EvaluationError extends Error {
4
4
  readonly type: FormulaError;
5
5
  readonly errAddress?: DependencyNode | undefined;
@@ -1,9 +1,9 @@
1
1
  import { type CellAddress, type CellValue, type FunctionEvaluationResult, type SpreadsheetRange } from "../core/types";
2
- import type { DependencyManager } from "src/core/managers/dependency-manager";
3
- import type { TableManager } from "src/core/managers/table-manager";
4
- import { type EvaluateScalarOperatorOptions } from "src/evaluator/evaluate-scalar-operator";
5
- import type { ArrayNode, ASTNode, BinaryOpNode, FunctionNode, NamedExpressionNode, RangeNode, ReferenceNode, StructuredReferenceNode, ThreeDRangeNode, UnaryOpNode, ValueNode } from "src/parser/ast";
6
- import type { NamedExpressionManager } from "src/core/managers/named-expression-manager";
2
+ import type { DependencyManager } from "../core/managers/dependency-manager";
3
+ import type { NamedExpressionManager } from "../core/managers/named-expression-manager";
4
+ import type { TableManager } from "../core/managers/table-manager";
5
+ import { type EvaluateScalarOperatorOptions } from "../evaluator/evaluate-scalar-operator";
6
+ import type { ArrayNode, ASTNode, BinaryOpNode, FunctionNode, NamedExpressionNode, RangeNode, ReferenceNode, StructuredReferenceNode, ThreeDRangeNode, UnaryOpNode, ValueNode } from "../parser/ast";
7
7
  import { EvaluationContext } from "./evaluation-context";
8
8
  export declare class FormulaEvaluator {
9
9
  private tableManager;
@@ -1,7 +1,7 @@
1
- import type { DependencyManager } from "src/core/managers/dependency-manager";
2
- import { FrontierDependencyManager } from "src/core/managers/frontier-dependency-manager";
3
- import type { WorkbookManager } from "src/core/managers/workbook-manager";
4
- import type { EvaluateAllCellsResult, RangeAddress } from "src/core/types";
1
+ import type { DependencyManager } from "../core/managers/dependency-manager";
2
+ import { FrontierDependencyManager } from "../core/managers/frontier-dependency-manager";
3
+ import type { WorkbookManager } from "../core/managers/workbook-manager";
4
+ import type { EvaluateAllCellsResult, RangeAddress } from "../core/types";
5
5
  export declare class RangeEvaluationNode extends FrontierDependencyManager {
6
6
  rangeKey: string;
7
7
  key: string;
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../core/types";
2
2
  /**
3
3
  * TEMPLATE function implementation
4
4
  */
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * SEQUENCE(rows, [columns], [start], [step])
4
4
  * Generates a sequence of numbers in an array.
@@ -1,4 +1,4 @@
1
- import { type CellValue } from "src/core/types";
1
+ import { type CellValue } from "../core/types";
2
2
  /**
3
3
  * Parsed criteria result
4
4
  */
@@ -1,9 +1,9 @@
1
- import { type FunctionEvaluationResult, type SingleEvaluationResult, type CellInfinity, type ErrorEvaluationResult } from "src/core/types";
2
- import type { EvaluationContext } from "src/evaluator/evaluation-context";
3
- import type { FormulaEvaluator } from "src/evaluator/formula-evaluator";
4
- import type { FunctionNode, ASTNode } from "src/parser/ast";
1
+ import type { LookupOrder } from "../core/managers/range-eval-order-builder";
2
+ import { type CellInfinity, type ErrorEvaluationResult, type FunctionEvaluationResult, type SingleEvaluationResult } from "../core/types";
3
+ import type { EvaluationContext } from "../evaluator/evaluation-context";
4
+ import type { FormulaEvaluator } from "../evaluator/formula-evaluator";
5
+ import type { ASTNode, FunctionNode } from "../parser/ast";
5
6
  import { type ParsedCriteria } from "./criteria-parser";
6
- import type { LookupOrder } from "src/core/managers";
7
7
  /**
8
8
  * Criteria pair for criteria-based functions
9
9
  */
@@ -1,8 +1,8 @@
1
- import type { LookupOrder } from "src/core/managers";
2
- import { type ErrorEvaluationResult, type SingleEvaluationResult } from "src/core/types";
3
- import type { EvaluationContext } from "src/evaluator/evaluation-context";
4
- import type { FormulaEvaluator } from "src/evaluator/formula-evaluator";
5
- import type { FunctionNode } from "src/parser/ast";
1
+ import type { LookupOrder } from "../core/managers/range-eval-order-builder";
2
+ import { type ErrorEvaluationResult, type SingleEvaluationResult } from "../core/types";
3
+ import type { EvaluationContext } from "../evaluator/evaluation-context";
4
+ import type { FormulaEvaluator } from "../evaluator/formula-evaluator";
5
+ import type { FunctionNode } from "../parser/ast";
6
6
  /**
7
7
  * Creates an array of all values from arguments of a function node
8
8
  * Returns SingleEvaluationResult for each value found in the arguments
@@ -1,2 +1,2 @@
1
- import type { FunctionDefinition } from "src/core/types";
1
+ import type { FunctionDefinition } from "../core/types";
2
2
  export declare const functions: Record<string, FunctionDefinition>;
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * CELL function - Returns information about the formatting, location, or contents of a cell
4
4
  *
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * COLUMN function - Returns the column number of a reference
4
4
  *
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * ROW function - Returns the row number of a reference
4
4
  *
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * AND function implementation
4
4
  */
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * IF function implementation
4
4
  */
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * IFERROR function implementation
4
4
  */
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * OR function implementation
4
4
  */
@@ -1,5 +1,5 @@
1
- import { type CellAddress, type FunctionEvaluationResult, type SingleEvaluationResult } from "src/core/types";
2
- import type { ParsedCriteria } from "src/functions/criteria-parser";
1
+ import { type CellAddress, type FunctionEvaluationResult, type SingleEvaluationResult } from "../../../core/types";
2
+ import type { ParsedCriteria } from "../../criteria-parser";
3
3
  /**
4
4
  * Performs counting of numeric values from an iterable of SingleEvaluationResult values
5
5
  * Handles numbers and infinities according to Excel's COUNT behavior
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * COUNT function - Counts the number of cells that contain numbers
4
4
  *
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * COUNTIF function - Counts cells in a range that meet a criteria
4
4
  *
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * COUNTIFS function - Counts cells that meet multiple criteria
4
4
  *
@@ -1,2 +1,2 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  export declare const INDEX: FunctionDefinition;
@@ -1,2 +1,2 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  export declare const MATCH: FunctionDefinition;
@@ -1,2 +1,2 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  export declare const XLOOKUP: FunctionDefinition;
@@ -1,5 +1,5 @@
1
- import { type FunctionEvaluationResult, type SingleEvaluationResult } from "src/core/types";
2
- import type { EvaluationContext } from "src/evaluator/evaluation-context";
1
+ import { type FunctionEvaluationResult, type SingleEvaluationResult } from "../../../core/types";
2
+ import type { EvaluationContext } from "../../../evaluator/evaluation-context";
3
3
  /**
4
4
  * Performs averaging of an iterable of SingleEvaluationResult values
5
5
  * Handles numbers, infinities, and errors according to Excel's AVERAGE behavior
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * AVERAGE function - Calculates the arithmetic mean of all numbers in the arguments
4
4
  *
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * AVERAGEIF function - Calculates the average of cells in a range that meet a criteria
4
4
  *
@@ -1,4 +1,4 @@
1
- import { type FunctionDefinition } from "src/core/types";
1
+ import { type FunctionDefinition } from "../../../core/types";
2
2
  /**
3
3
  * AVERAGEIFS function - Calculates the average of cells in a range that meet multiple criteria
4
4
  *