@ricsam/formula-engine 0.0.1

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 (569) hide show
  1. package/README.md +100 -0
  2. package/dist/cjs/core/ast-traverser.cjs +124 -0
  3. package/dist/cjs/core/ast-traverser.cjs.map +10 -0
  4. package/dist/cjs/core/autofill-utils.cjs +304 -0
  5. package/dist/cjs/core/autofill-utils.cjs.map +10 -0
  6. package/dist/cjs/core/engine.cjs +390 -0
  7. package/dist/cjs/core/engine.cjs.map +10 -0
  8. package/dist/cjs/core/managers/cache-manager.cjs +58 -0
  9. package/dist/cjs/core/managers/cache-manager.cjs.map +10 -0
  10. package/dist/cjs/core/managers/dependency-manager.cjs +620 -0
  11. package/dist/cjs/core/managers/dependency-manager.cjs.map +10 -0
  12. package/dist/cjs/core/managers/dependency-node.cjs +24 -0
  13. package/dist/cjs/core/managers/dependency-node.cjs.map +9 -0
  14. package/dist/cjs/core/managers/evaluation-manager.cjs +433 -0
  15. package/dist/cjs/core/managers/evaluation-manager.cjs.map +10 -0
  16. package/dist/cjs/core/managers/event-manager.cjs +49 -0
  17. package/dist/cjs/core/managers/event-manager.cjs.map +10 -0
  18. package/dist/cjs/core/managers/frontier-dependency-manager.cjs +181 -0
  19. package/dist/cjs/core/managers/frontier-dependency-manager.cjs.map +10 -0
  20. package/dist/cjs/core/managers/index.cjs +49 -0
  21. package/dist/cjs/core/managers/index.cjs.map +10 -0
  22. package/dist/cjs/core/managers/isDependencyNode.cjs +44 -0
  23. package/dist/cjs/core/managers/isDependencyNode.cjs.map +10 -0
  24. package/dist/cjs/core/managers/named-expression-manager.cjs +379 -0
  25. package/dist/cjs/core/managers/named-expression-manager.cjs.map +10 -0
  26. package/dist/cjs/core/managers/range-eval-order-builder.cjs +644 -0
  27. package/dist/cjs/core/managers/range-eval-order-builder.cjs.map +10 -0
  28. package/dist/cjs/core/managers/table-manager.cjs +254 -0
  29. package/dist/cjs/core/managers/table-manager.cjs.map +10 -0
  30. package/dist/cjs/core/managers/workbook-manager.cjs +474 -0
  31. package/dist/cjs/core/managers/workbook-manager.cjs.map +10 -0
  32. package/dist/cjs/core/map-serializer.cjs +69 -0
  33. package/dist/cjs/core/map-serializer.cjs.map +10 -0
  34. package/dist/cjs/core/named-expression-renamer.cjs +88 -0
  35. package/dist/cjs/core/named-expression-renamer.cjs.map +10 -0
  36. package/dist/cjs/core/sheet-renamer.cjs +89 -0
  37. package/dist/cjs/core/sheet-renamer.cjs.map +10 -0
  38. package/dist/cjs/core/sheet-utils.cjs +39 -0
  39. package/dist/cjs/core/sheet-utils.cjs.map +10 -0
  40. package/dist/cjs/core/table-renamer.cjs +88 -0
  41. package/dist/cjs/core/table-renamer.cjs.map +10 -0
  42. package/dist/cjs/core/types.cjs +48 -0
  43. package/dist/cjs/core/types.cjs.map +10 -0
  44. package/dist/cjs/core/utils/range-serializer.cjs +65 -0
  45. package/dist/cjs/core/utils/range-serializer.cjs.map +10 -0
  46. package/dist/cjs/core/utils/spreadsheet-visualizer.cjs +142 -0
  47. package/dist/cjs/core/utils/spreadsheet-visualizer.cjs.map +10 -0
  48. package/dist/cjs/core/utils.cjs +434 -0
  49. package/dist/cjs/core/utils.cjs.map +10 -0
  50. package/dist/cjs/core/workbook-renamer.cjs +106 -0
  51. package/dist/cjs/core/workbook-renamer.cjs.map +10 -0
  52. package/dist/cjs/debug/flags.cjs +47 -0
  53. package/dist/cjs/debug/flags.cjs.map +10 -0
  54. package/dist/cjs/evaluator/arithmetic/add/add.cjs +82 -0
  55. package/dist/cjs/evaluator/arithmetic/add/add.cjs.map +10 -0
  56. package/dist/cjs/evaluator/arithmetic/divide/divide.cjs +107 -0
  57. package/dist/cjs/evaluator/arithmetic/divide/divide.cjs.map +10 -0
  58. package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs +93 -0
  59. package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs.map +10 -0
  60. package/dist/cjs/evaluator/arithmetic/power/power.cjs +125 -0
  61. package/dist/cjs/evaluator/arithmetic/power/power.cjs.map +10 -0
  62. package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs +84 -0
  63. package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs.map +10 -0
  64. package/dist/cjs/evaluator/comparison/equals.cjs +64 -0
  65. package/dist/cjs/evaluator/comparison/equals.cjs.map +10 -0
  66. package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs +61 -0
  67. package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs.map +10 -0
  68. package/dist/cjs/evaluator/comparison/greater-than.cjs +61 -0
  69. package/dist/cjs/evaluator/comparison/greater-than.cjs.map +10 -0
  70. package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs +69 -0
  71. package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs.map +10 -0
  72. package/dist/cjs/evaluator/comparison/less-than.cjs +68 -0
  73. package/dist/cjs/evaluator/comparison/less-than.cjs.map +10 -0
  74. package/dist/cjs/evaluator/comparison/not-equals.cjs +53 -0
  75. package/dist/cjs/evaluator/comparison/not-equals.cjs.map +10 -0
  76. package/dist/cjs/evaluator/concatenation/concatenate.cjs +72 -0
  77. package/dist/cjs/evaluator/concatenation/concatenate.cjs.map +10 -0
  78. package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs +58 -0
  79. package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs.map +10 -0
  80. package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs +112 -0
  81. package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs.map +10 -0
  82. package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs +54 -0
  83. package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs.map +10 -0
  84. package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs +108 -0
  85. package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs.map +10 -0
  86. package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs +50 -0
  87. package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs.map +10 -0
  88. package/dist/cjs/evaluator/evaluate-scalar-operator.cjs +254 -0
  89. package/dist/cjs/evaluator/evaluate-scalar-operator.cjs.map +10 -0
  90. package/dist/cjs/evaluator/evaluation-context.cjs +154 -0
  91. package/dist/cjs/evaluator/evaluation-context.cjs.map +10 -0
  92. package/dist/cjs/evaluator/evaluation-error.cjs +75 -0
  93. package/dist/cjs/evaluator/evaluation-error.cjs.map +10 -0
  94. package/dist/cjs/evaluator/formula-evaluator.cjs +797 -0
  95. package/dist/cjs/evaluator/formula-evaluator.cjs.map +10 -0
  96. package/dist/cjs/evaluator/range-evaluation-node.cjs +88 -0
  97. package/dist/cjs/evaluator/range-evaluation-node.cjs.map +10 -0
  98. package/dist/cjs/functions/_template/template.cjs +42 -0
  99. package/dist/cjs/functions/_template/template.cjs.map +10 -0
  100. package/dist/cjs/functions/array/sequence/sequence.cjs +315 -0
  101. package/dist/cjs/functions/array/sequence/sequence.cjs.map +10 -0
  102. package/dist/cjs/functions/criteria-parser.cjs +217 -0
  103. package/dist/cjs/functions/criteria-parser.cjs.map +10 -0
  104. package/dist/cjs/functions/criteria-utils.cjs +291 -0
  105. package/dist/cjs/functions/criteria-utils.cjs.map +10 -0
  106. package/dist/cjs/functions/function-utils.cjs +63 -0
  107. package/dist/cjs/functions/function-utils.cjs.map +10 -0
  108. package/dist/cjs/functions/index.cjs +125 -0
  109. package/dist/cjs/functions/index.cjs.map +10 -0
  110. package/dist/cjs/functions/information/cell/cell.cjs +196 -0
  111. package/dist/cjs/functions/information/cell/cell.cjs.map +10 -0
  112. package/dist/cjs/functions/information/column/column.cjs +144 -0
  113. package/dist/cjs/functions/information/column/column.cjs.map +10 -0
  114. package/dist/cjs/functions/information/row/row.cjs +150 -0
  115. package/dist/cjs/functions/information/row/row.cjs.map +10 -0
  116. package/dist/cjs/functions/logical/and/and.cjs +112 -0
  117. package/dist/cjs/functions/logical/and/and.cjs.map +10 -0
  118. package/dist/cjs/functions/logical/if/if.cjs +195 -0
  119. package/dist/cjs/functions/logical/if/if.cjs.map +10 -0
  120. package/dist/cjs/functions/logical/iferror/iferror.cjs +126 -0
  121. package/dist/cjs/functions/logical/iferror/iferror.cjs.map +10 -0
  122. package/dist/cjs/functions/logical/or/or.cjs +112 -0
  123. package/dist/cjs/functions/logical/or/or.cjs.map +10 -0
  124. package/dist/cjs/functions/lookup/count/count-utils.cjs +65 -0
  125. package/dist/cjs/functions/lookup/count/count-utils.cjs.map +10 -0
  126. package/dist/cjs/functions/lookup/count/count.cjs +48 -0
  127. package/dist/cjs/functions/lookup/count/count.cjs.map +10 -0
  128. package/dist/cjs/functions/lookup/count/countif.cjs +94 -0
  129. package/dist/cjs/functions/lookup/count/countif.cjs.map +10 -0
  130. package/dist/cjs/functions/lookup/count/countifs.cjs +63 -0
  131. package/dist/cjs/functions/lookup/count/countifs.cjs.map +10 -0
  132. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs +187 -0
  133. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs.map +10 -0
  134. package/dist/cjs/functions/lookup/match/match.cjs +168 -0
  135. package/dist/cjs/functions/lookup/match/match.cjs.map +10 -0
  136. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs +410 -0
  137. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs.map +10 -0
  138. package/dist/cjs/functions/math/average/average-utils.cjs +72 -0
  139. package/dist/cjs/functions/math/average/average-utils.cjs.map +10 -0
  140. package/dist/cjs/functions/math/average/average.cjs +48 -0
  141. package/dist/cjs/functions/math/average/average.cjs.map +10 -0
  142. package/dist/cjs/functions/math/average/averageif.cjs +83 -0
  143. package/dist/cjs/functions/math/average/averageif.cjs.map +10 -0
  144. package/dist/cjs/functions/math/average/averageifs.cjs +61 -0
  145. package/dist/cjs/functions/math/average/averageifs.cjs.map +10 -0
  146. package/dist/cjs/functions/math/ceiling/ceiling.cjs +219 -0
  147. package/dist/cjs/functions/math/ceiling/ceiling.cjs.map +10 -0
  148. package/dist/cjs/functions/math/max/max-utils.cjs +71 -0
  149. package/dist/cjs/functions/math/max/max-utils.cjs.map +10 -0
  150. package/dist/cjs/functions/math/max/max.cjs +48 -0
  151. package/dist/cjs/functions/math/max/max.cjs.map +10 -0
  152. package/dist/cjs/functions/math/max/maxif.cjs +83 -0
  153. package/dist/cjs/functions/math/max/maxif.cjs.map +10 -0
  154. package/dist/cjs/functions/math/max/maxifs.cjs +61 -0
  155. package/dist/cjs/functions/math/max/maxifs.cjs.map +10 -0
  156. package/dist/cjs/functions/math/min/min-utils.cjs +71 -0
  157. package/dist/cjs/functions/math/min/min-utils.cjs.map +10 -0
  158. package/dist/cjs/functions/math/min/min.cjs +48 -0
  159. package/dist/cjs/functions/math/min/min.cjs.map +10 -0
  160. package/dist/cjs/functions/math/min/minif.cjs +83 -0
  161. package/dist/cjs/functions/math/min/minif.cjs.map +10 -0
  162. package/dist/cjs/functions/math/min/minifs.cjs +61 -0
  163. package/dist/cjs/functions/math/min/minifs.cjs.map +10 -0
  164. package/dist/cjs/functions/math/sum/sum.cjs +48 -0
  165. package/dist/cjs/functions/math/sum/sum.cjs.map +10 -0
  166. package/dist/cjs/functions/math/sum/sumif.cjs +83 -0
  167. package/dist/cjs/functions/math/sum/sumif.cjs.map +10 -0
  168. package/dist/cjs/functions/math/sum/sumifs.cjs +60 -0
  169. package/dist/cjs/functions/math/sum/sumifs.cjs.map +10 -0
  170. package/dist/cjs/functions/math/sum/summation-utils.cjs +57 -0
  171. package/dist/cjs/functions/math/sum/summation-utils.cjs.map +10 -0
  172. package/dist/cjs/functions/reference/address/address.cjs +163 -0
  173. package/dist/cjs/functions/reference/address/address.cjs.map +10 -0
  174. package/dist/cjs/functions/reference/indirect/indirect.cjs +102 -0
  175. package/dist/cjs/functions/reference/indirect/indirect.cjs.map +10 -0
  176. package/dist/cjs/functions/reference/offset/offset.cjs +233 -0
  177. package/dist/cjs/functions/reference/offset/offset.cjs.map +10 -0
  178. package/dist/cjs/functions/text/concatenate/concatenate.cjs +167 -0
  179. package/dist/cjs/functions/text/concatenate/concatenate.cjs.map +10 -0
  180. package/dist/cjs/functions/text/exact/exact.cjs +171 -0
  181. package/dist/cjs/functions/text/exact/exact.cjs.map +10 -0
  182. package/dist/cjs/functions/text/find/find.cjs +397 -0
  183. package/dist/cjs/functions/text/find/find.cjs.map +10 -0
  184. package/dist/cjs/functions/text/left/left.cjs +109 -0
  185. package/dist/cjs/functions/text/left/left.cjs.map +10 -0
  186. package/dist/cjs/functions/text/len/len.cjs +119 -0
  187. package/dist/cjs/functions/text/len/len.cjs.map +10 -0
  188. package/dist/cjs/functions/text/mid/mid.cjs +103 -0
  189. package/dist/cjs/functions/text/mid/mid.cjs.map +10 -0
  190. package/dist/cjs/functions/text/right/right.cjs +167 -0
  191. package/dist/cjs/functions/text/right/right.cjs.map +10 -0
  192. package/dist/cjs/functions/text/text-helpers.cjs +179 -0
  193. package/dist/cjs/functions/text/text-helpers.cjs.map +10 -0
  194. package/dist/cjs/functions/text/textjoin/textjoin.cjs +173 -0
  195. package/dist/cjs/functions/text/textjoin/textjoin.cjs.map +10 -0
  196. package/dist/cjs/package.json +5 -0
  197. package/dist/cjs/parser/ast.cjs +175 -0
  198. package/dist/cjs/parser/ast.cjs.map +10 -0
  199. package/dist/cjs/parser/formatter.cjs +319 -0
  200. package/dist/cjs/parser/formatter.cjs.map +10 -0
  201. package/dist/cjs/parser/grammar.cjs +375 -0
  202. package/dist/cjs/parser/grammar.cjs.map +10 -0
  203. package/dist/cjs/parser/lexer.cjs +443 -0
  204. package/dist/cjs/parser/lexer.cjs.map +10 -0
  205. package/dist/cjs/parser/parser.cjs +1700 -0
  206. package/dist/cjs/parser/parser.cjs.map +10 -0
  207. package/dist/cjs/react/hooks.cjs +59 -0
  208. package/dist/cjs/react/hooks.cjs.map +10 -0
  209. package/dist/mjs/core/ast-traverser.mjs +94 -0
  210. package/dist/mjs/core/ast-traverser.mjs.map +10 -0
  211. package/dist/mjs/core/autofill-utils.mjs +274 -0
  212. package/dist/mjs/core/autofill-utils.mjs.map +10 -0
  213. package/dist/mjs/core/engine.mjs +366 -0
  214. package/dist/mjs/core/engine.mjs.map +10 -0
  215. package/dist/mjs/core/managers/cache-manager.mjs +27 -0
  216. package/dist/mjs/core/managers/cache-manager.mjs.map +10 -0
  217. package/dist/mjs/core/managers/dependency-manager.mjs +593 -0
  218. package/dist/mjs/core/managers/dependency-manager.mjs.map +10 -0
  219. package/dist/mjs/core/managers/dependency-node.mjs +2 -0
  220. package/dist/mjs/core/managers/dependency-node.mjs.map +9 -0
  221. package/dist/mjs/core/managers/evaluation-manager.mjs +415 -0
  222. package/dist/mjs/core/managers/evaluation-manager.mjs.map +10 -0
  223. package/dist/mjs/core/managers/event-manager.mjs +18 -0
  224. package/dist/mjs/core/managers/event-manager.mjs.map +10 -0
  225. package/dist/mjs/core/managers/frontier-dependency-manager.mjs +151 -0
  226. package/dist/mjs/core/managers/frontier-dependency-manager.mjs.map +10 -0
  227. package/dist/mjs/core/managers/index.mjs +21 -0
  228. package/dist/mjs/core/managers/index.mjs.map +10 -0
  229. package/dist/mjs/core/managers/isDependencyNode.mjs +14 -0
  230. package/dist/mjs/core/managers/isDependencyNode.mjs.map +10 -0
  231. package/dist/mjs/core/managers/named-expression-manager.mjs +348 -0
  232. package/dist/mjs/core/managers/named-expression-manager.mjs.map +10 -0
  233. package/dist/mjs/core/managers/range-eval-order-builder.mjs +618 -0
  234. package/dist/mjs/core/managers/range-eval-order-builder.mjs.map +10 -0
  235. package/dist/mjs/core/managers/table-manager.mjs +224 -0
  236. package/dist/mjs/core/managers/table-manager.mjs.map +10 -0
  237. package/dist/mjs/core/managers/workbook-manager.mjs +447 -0
  238. package/dist/mjs/core/managers/workbook-manager.mjs.map +10 -0
  239. package/dist/mjs/core/map-serializer.mjs +39 -0
  240. package/dist/mjs/core/map-serializer.mjs.map +10 -0
  241. package/dist/mjs/core/named-expression-renamer.mjs +58 -0
  242. package/dist/mjs/core/named-expression-renamer.mjs.map +10 -0
  243. package/dist/mjs/core/sheet-renamer.mjs +59 -0
  244. package/dist/mjs/core/sheet-renamer.mjs.map +10 -0
  245. package/dist/mjs/core/sheet-utils.mjs +8 -0
  246. package/dist/mjs/core/sheet-utils.mjs.map +10 -0
  247. package/dist/mjs/core/table-renamer.mjs +58 -0
  248. package/dist/mjs/core/table-renamer.mjs.map +10 -0
  249. package/dist/mjs/core/types.mjs +18 -0
  250. package/dist/mjs/core/types.mjs.map +10 -0
  251. package/dist/mjs/core/utils/range-serializer.mjs +35 -0
  252. package/dist/mjs/core/utils/range-serializer.mjs.map +10 -0
  253. package/dist/mjs/core/utils/spreadsheet-visualizer.mjs +112 -0
  254. package/dist/mjs/core/utils/spreadsheet-visualizer.mjs.map +10 -0
  255. package/dist/mjs/core/utils.mjs +409 -0
  256. package/dist/mjs/core/utils.mjs.map +10 -0
  257. package/dist/mjs/core/workbook-renamer.mjs +76 -0
  258. package/dist/mjs/core/workbook-renamer.mjs.map +10 -0
  259. package/dist/mjs/debug/flags.mjs +17 -0
  260. package/dist/mjs/debug/flags.mjs.map +10 -0
  261. package/dist/mjs/evaluator/arithmetic/add/add.mjs +52 -0
  262. package/dist/mjs/evaluator/arithmetic/add/add.mjs.map +10 -0
  263. package/dist/mjs/evaluator/arithmetic/divide/divide.mjs +77 -0
  264. package/dist/mjs/evaluator/arithmetic/divide/divide.mjs.map +10 -0
  265. package/dist/mjs/evaluator/arithmetic/multiply/multiply.mjs +63 -0
  266. package/dist/mjs/evaluator/arithmetic/multiply/multiply.mjs.map +10 -0
  267. package/dist/mjs/evaluator/arithmetic/power/power.mjs +95 -0
  268. package/dist/mjs/evaluator/arithmetic/power/power.mjs.map +10 -0
  269. package/dist/mjs/evaluator/arithmetic/subtract/subtract.mjs +54 -0
  270. package/dist/mjs/evaluator/arithmetic/subtract/subtract.mjs.map +10 -0
  271. package/dist/mjs/evaluator/comparison/equals.mjs +34 -0
  272. package/dist/mjs/evaluator/comparison/equals.mjs.map +10 -0
  273. package/dist/mjs/evaluator/comparison/greater-than-or-equal.mjs +31 -0
  274. package/dist/mjs/evaluator/comparison/greater-than-or-equal.mjs.map +10 -0
  275. package/dist/mjs/evaluator/comparison/greater-than.mjs +31 -0
  276. package/dist/mjs/evaluator/comparison/greater-than.mjs.map +10 -0
  277. package/dist/mjs/evaluator/comparison/less-than-or-equal.mjs +39 -0
  278. package/dist/mjs/evaluator/comparison/less-than-or-equal.mjs.map +10 -0
  279. package/dist/mjs/evaluator/comparison/less-than.mjs +38 -0
  280. package/dist/mjs/evaluator/comparison/less-than.mjs.map +10 -0
  281. package/dist/mjs/evaluator/comparison/not-equals.mjs +23 -0
  282. package/dist/mjs/evaluator/comparison/not-equals.mjs.map +10 -0
  283. package/dist/mjs/evaluator/concatenation/concatenate.mjs +42 -0
  284. package/dist/mjs/evaluator/concatenation/concatenate.mjs.map +10 -0
  285. package/dist/mjs/evaluator/dependency-nodes/ast-evaluation-node.mjs +28 -0
  286. package/dist/mjs/evaluator/dependency-nodes/ast-evaluation-node.mjs.map +10 -0
  287. package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs +81 -0
  288. package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs.map +10 -0
  289. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs +24 -0
  290. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs.map +10 -0
  291. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs +78 -0
  292. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs.map +10 -0
  293. package/dist/mjs/evaluator/dependency-nodes/spill-meta-node.mjs +20 -0
  294. package/dist/mjs/evaluator/dependency-nodes/spill-meta-node.mjs.map +10 -0
  295. package/dist/mjs/evaluator/evaluate-scalar-operator.mjs +226 -0
  296. package/dist/mjs/evaluator/evaluate-scalar-operator.mjs.map +10 -0
  297. package/dist/mjs/evaluator/evaluation-context.mjs +123 -0
  298. package/dist/mjs/evaluator/evaluation-context.mjs.map +10 -0
  299. package/dist/mjs/evaluator/evaluation-error.mjs +44 -0
  300. package/dist/mjs/evaluator/evaluation-error.mjs.map +10 -0
  301. package/dist/mjs/evaluator/formula-evaluator.mjs +780 -0
  302. package/dist/mjs/evaluator/formula-evaluator.mjs.map +10 -0
  303. package/dist/mjs/evaluator/range-evaluation-node.mjs +58 -0
  304. package/dist/mjs/evaluator/range-evaluation-node.mjs.map +10 -0
  305. package/dist/mjs/functions/_template/template.mjs +12 -0
  306. package/dist/mjs/functions/_template/template.mjs.map +10 -0
  307. package/dist/mjs/functions/array/sequence/sequence.mjs +287 -0
  308. package/dist/mjs/functions/array/sequence/sequence.mjs.map +10 -0
  309. package/dist/mjs/functions/criteria-parser.mjs +187 -0
  310. package/dist/mjs/functions/criteria-parser.mjs.map +10 -0
  311. package/dist/mjs/functions/criteria-utils.mjs +268 -0
  312. package/dist/mjs/functions/criteria-utils.mjs.map +10 -0
  313. package/dist/mjs/functions/function-utils.mjs +33 -0
  314. package/dist/mjs/functions/function-utils.mjs.map +10 -0
  315. package/dist/mjs/functions/index.mjs +95 -0
  316. package/dist/mjs/functions/index.mjs.map +10 -0
  317. package/dist/mjs/functions/information/cell/cell.mjs +168 -0
  318. package/dist/mjs/functions/information/cell/cell.mjs.map +10 -0
  319. package/dist/mjs/functions/information/column/column.mjs +120 -0
  320. package/dist/mjs/functions/information/column/column.mjs.map +10 -0
  321. package/dist/mjs/functions/information/row/row.mjs +126 -0
  322. package/dist/mjs/functions/information/row/row.mjs.map +10 -0
  323. package/dist/mjs/functions/logical/and/and.mjs +84 -0
  324. package/dist/mjs/functions/logical/and/and.mjs.map +10 -0
  325. package/dist/mjs/functions/logical/if/if.mjs +167 -0
  326. package/dist/mjs/functions/logical/if/if.mjs.map +10 -0
  327. package/dist/mjs/functions/logical/iferror/iferror.mjs +98 -0
  328. package/dist/mjs/functions/logical/iferror/iferror.mjs.map +10 -0
  329. package/dist/mjs/functions/logical/or/or.mjs +84 -0
  330. package/dist/mjs/functions/logical/or/or.mjs.map +10 -0
  331. package/dist/mjs/functions/lookup/count/count-utils.mjs +35 -0
  332. package/dist/mjs/functions/lookup/count/count-utils.mjs.map +10 -0
  333. package/dist/mjs/functions/lookup/count/count.mjs +18 -0
  334. package/dist/mjs/functions/lookup/count/count.mjs.map +10 -0
  335. package/dist/mjs/functions/lookup/count/countif.mjs +68 -0
  336. package/dist/mjs/functions/lookup/count/countif.mjs.map +10 -0
  337. package/dist/mjs/functions/lookup/count/countifs.mjs +37 -0
  338. package/dist/mjs/functions/lookup/count/countifs.mjs.map +10 -0
  339. package/dist/mjs/functions/lookup/index-lookup/index-lookup.mjs +159 -0
  340. package/dist/mjs/functions/lookup/index-lookup/index-lookup.mjs.map +10 -0
  341. package/dist/mjs/functions/lookup/match/match.mjs +140 -0
  342. package/dist/mjs/functions/lookup/match/match.mjs.map +10 -0
  343. package/dist/mjs/functions/lookup/xlookup/xlookup.mjs +382 -0
  344. package/dist/mjs/functions/lookup/xlookup/xlookup.mjs.map +10 -0
  345. package/dist/mjs/functions/math/average/average-utils.mjs +44 -0
  346. package/dist/mjs/functions/math/average/average-utils.mjs.map +10 -0
  347. package/dist/mjs/functions/math/average/average.mjs +18 -0
  348. package/dist/mjs/functions/math/average/average.mjs.map +10 -0
  349. package/dist/mjs/functions/math/average/averageif.mjs +58 -0
  350. package/dist/mjs/functions/math/average/averageif.mjs.map +10 -0
  351. package/dist/mjs/functions/math/average/averageifs.mjs +35 -0
  352. package/dist/mjs/functions/math/average/averageifs.mjs.map +10 -0
  353. package/dist/mjs/functions/math/ceiling/ceiling.mjs +191 -0
  354. package/dist/mjs/functions/math/ceiling/ceiling.mjs.map +10 -0
  355. package/dist/mjs/functions/math/max/max-utils.mjs +43 -0
  356. package/dist/mjs/functions/math/max/max-utils.mjs.map +10 -0
  357. package/dist/mjs/functions/math/max/max.mjs +18 -0
  358. package/dist/mjs/functions/math/max/max.mjs.map +10 -0
  359. package/dist/mjs/functions/math/max/maxif.mjs +58 -0
  360. package/dist/mjs/functions/math/max/maxif.mjs.map +10 -0
  361. package/dist/mjs/functions/math/max/maxifs.mjs +35 -0
  362. package/dist/mjs/functions/math/max/maxifs.mjs.map +10 -0
  363. package/dist/mjs/functions/math/min/min-utils.mjs +43 -0
  364. package/dist/mjs/functions/math/min/min-utils.mjs.map +10 -0
  365. package/dist/mjs/functions/math/min/min.mjs +18 -0
  366. package/dist/mjs/functions/math/min/min.mjs.map +10 -0
  367. package/dist/mjs/functions/math/min/minif.mjs +58 -0
  368. package/dist/mjs/functions/math/min/minif.mjs.map +10 -0
  369. package/dist/mjs/functions/math/min/minifs.mjs +35 -0
  370. package/dist/mjs/functions/math/min/minifs.mjs.map +10 -0
  371. package/dist/mjs/functions/math/sum/sum.mjs +18 -0
  372. package/dist/mjs/functions/math/sum/sum.mjs.map +10 -0
  373. package/dist/mjs/functions/math/sum/sumif.mjs +58 -0
  374. package/dist/mjs/functions/math/sum/sumif.mjs.map +10 -0
  375. package/dist/mjs/functions/math/sum/sumifs.mjs +34 -0
  376. package/dist/mjs/functions/math/sum/sumifs.mjs.map +10 -0
  377. package/dist/mjs/functions/math/sum/summation-utils.mjs +27 -0
  378. package/dist/mjs/functions/math/sum/summation-utils.mjs.map +10 -0
  379. package/dist/mjs/functions/reference/address/address.mjs +135 -0
  380. package/dist/mjs/functions/reference/address/address.mjs.map +10 -0
  381. package/dist/mjs/functions/reference/indirect/indirect.mjs +74 -0
  382. package/dist/mjs/functions/reference/indirect/indirect.mjs.map +10 -0
  383. package/dist/mjs/functions/reference/offset/offset.mjs +205 -0
  384. package/dist/mjs/functions/reference/offset/offset.mjs.map +10 -0
  385. package/dist/mjs/functions/text/concatenate/concatenate.mjs +139 -0
  386. package/dist/mjs/functions/text/concatenate/concatenate.mjs.map +10 -0
  387. package/dist/mjs/functions/text/exact/exact.mjs +143 -0
  388. package/dist/mjs/functions/text/exact/exact.mjs.map +10 -0
  389. package/dist/mjs/functions/text/find/find.mjs +369 -0
  390. package/dist/mjs/functions/text/find/find.mjs.map +10 -0
  391. package/dist/mjs/functions/text/left/left.mjs +81 -0
  392. package/dist/mjs/functions/text/left/left.mjs.map +10 -0
  393. package/dist/mjs/functions/text/len/len.mjs +91 -0
  394. package/dist/mjs/functions/text/len/len.mjs.map +10 -0
  395. package/dist/mjs/functions/text/mid/mid.mjs +75 -0
  396. package/dist/mjs/functions/text/mid/mid.mjs.map +10 -0
  397. package/dist/mjs/functions/text/right/right.mjs +143 -0
  398. package/dist/mjs/functions/text/right/right.mjs.map +10 -0
  399. package/dist/mjs/functions/text/text-helpers.mjs +151 -0
  400. package/dist/mjs/functions/text/text-helpers.mjs.map +10 -0
  401. package/dist/mjs/functions/text/textjoin/textjoin.mjs +145 -0
  402. package/dist/mjs/functions/text/textjoin/textjoin.mjs.map +10 -0
  403. package/dist/mjs/package.json +5 -0
  404. package/dist/mjs/parser/ast.mjs +145 -0
  405. package/dist/mjs/parser/ast.mjs.map +10 -0
  406. package/dist/mjs/parser/formatter.mjs +289 -0
  407. package/dist/mjs/parser/formatter.mjs.map +10 -0
  408. package/dist/mjs/parser/grammar.mjs +345 -0
  409. package/dist/mjs/parser/grammar.mjs.map +10 -0
  410. package/dist/mjs/parser/lexer.mjs +412 -0
  411. package/dist/mjs/parser/lexer.mjs.map +10 -0
  412. package/dist/mjs/parser/parser.mjs +1692 -0
  413. package/dist/mjs/parser/parser.mjs.map +10 -0
  414. package/dist/mjs/react/hooks.mjs +16 -0
  415. package/dist/mjs/react/hooks.mjs.map +10 -0
  416. package/dist/types/core/ast-traverser.d.ts +28 -0
  417. package/dist/types/core/autofill-utils.d.ts +32 -0
  418. package/dist/types/core/engine.d.ts +184 -0
  419. package/dist/types/core/managers/cache-manager.d.ts +14 -0
  420. package/dist/types/core/managers/dependency-manager.d.ts +147 -0
  421. package/dist/types/core/managers/dependency-node.d.ts +13 -0
  422. package/dist/types/core/managers/evaluation-manager.d.ts +30 -0
  423. package/dist/types/core/managers/event-manager.d.ts +8 -0
  424. package/dist/types/core/managers/frontier-dependency-manager.d.ts +69 -0
  425. package/dist/types/core/managers/index.d.ts +7 -0
  426. package/dist/types/core/managers/isDependencyNode.d.ts +2 -0
  427. package/dist/types/core/managers/named-expression-manager.d.ts +101 -0
  428. package/dist/types/core/managers/range-eval-order-builder.d.ts +33 -0
  429. package/dist/types/core/managers/table-manager.d.ts +84 -0
  430. package/dist/types/core/managers/workbook-manager.d.ts +136 -0
  431. package/dist/types/core/map-serializer.d.ts +4 -0
  432. package/dist/types/core/named-expression-renamer.d.ts +21 -0
  433. package/dist/types/core/sheet-renamer.d.ts +28 -0
  434. package/dist/types/core/sheet-utils.d.ts +2 -0
  435. package/dist/types/core/table-renamer.d.ts +21 -0
  436. package/dist/types/core/types.d.ts +272 -0
  437. package/dist/types/core/utils/cell-address-parsing.test.d.ts +1 -0
  438. package/dist/types/core/utils/range-serializer.d.ts +22 -0
  439. package/dist/types/core/utils/range-serializer.test.d.ts +1 -0
  440. package/dist/types/core/utils/spreadsheet-visualizer.d.ts +30 -0
  441. package/dist/types/core/utils.d.ts +48 -0
  442. package/dist/types/core/workbook-renamer.d.ts +28 -0
  443. package/dist/types/debug/flags.d.ts +11 -0
  444. package/dist/types/evaluator/arithmetic/add/add.d.ts +2 -0
  445. package/dist/types/evaluator/arithmetic/add/add.test.d.ts +1 -0
  446. package/dist/types/evaluator/arithmetic/divide/divide.d.ts +2 -0
  447. package/dist/types/evaluator/arithmetic/divide/divide.test.d.ts +1 -0
  448. package/dist/types/evaluator/arithmetic/multiply/multiply.d.ts +2 -0
  449. package/dist/types/evaluator/arithmetic/multiply/multiply.test.d.ts +1 -0
  450. package/dist/types/evaluator/arithmetic/power/power.d.ts +2 -0
  451. package/dist/types/evaluator/arithmetic/power/power.test.d.ts +1 -0
  452. package/dist/types/evaluator/arithmetic/subtract/subtract.d.ts +2 -0
  453. package/dist/types/evaluator/arithmetic/subtract/subtract.test.d.ts +1 -0
  454. package/dist/types/evaluator/comparison/comparison-operators.test.d.ts +1 -0
  455. package/dist/types/evaluator/comparison/equals.d.ts +6 -0
  456. package/dist/types/evaluator/comparison/greater-than-or-equal.d.ts +6 -0
  457. package/dist/types/evaluator/comparison/greater-than.d.ts +6 -0
  458. package/dist/types/evaluator/comparison/less-than-or-equal.d.ts +6 -0
  459. package/dist/types/evaluator/comparison/less-than.d.ts +6 -0
  460. package/dist/types/evaluator/comparison/not-equals.d.ts +6 -0
  461. package/dist/types/evaluator/concatenation/concatenate.d.ts +6 -0
  462. package/dist/types/evaluator/concatenation/concatenate.test.d.ts +1 -0
  463. package/dist/types/evaluator/dependency-nodes/ast-evaluation-node.d.ts +12 -0
  464. package/dist/types/evaluator/dependency-nodes/base-eval-node.d.ts +31 -0
  465. package/dist/types/evaluator/dependency-nodes/cell-value-node.d.ts +10 -0
  466. package/dist/types/evaluator/dependency-nodes/empty-cell-evaluation-node.d.ts +17 -0
  467. package/dist/types/evaluator/dependency-nodes/spill-meta-node.d.ts +7 -0
  468. package/dist/types/evaluator/evaluate-scalar-operator.d.ts +12 -0
  469. package/dist/types/evaluator/evaluation-context.d.ts +66 -0
  470. package/dist/types/evaluator/evaluation-error.d.ts +20 -0
  471. package/dist/types/evaluator/formula-evaluator.d.ts +67 -0
  472. package/dist/types/evaluator/open-range-evaluator.test.d.ts +1 -0
  473. package/dist/types/evaluator/range-evaluation-node.d.ts +16 -0
  474. package/dist/types/functions/_template/template.d.ts +5 -0
  475. package/dist/types/functions/_template/template.test.d.ts +1 -0
  476. package/dist/types/functions/array/sequence/performance-test.d.ts +1 -0
  477. package/dist/types/functions/array/sequence/sequence.d.ts +14 -0
  478. package/dist/types/functions/array/sequence/sequence.test.d.ts +1 -0
  479. package/dist/types/functions/criteria-parser.d.ts +27 -0
  480. package/dist/types/functions/criteria-utils.d.ts +61 -0
  481. package/dist/types/functions/function-utils.d.ts +21 -0
  482. package/dist/types/functions/index.d.ts +2 -0
  483. package/dist/types/functions/information/cell/cell.d.ts +24 -0
  484. package/dist/types/functions/information/cell/cell.test.d.ts +1 -0
  485. package/dist/types/functions/information/column/column.d.ts +14 -0
  486. package/dist/types/functions/information/column/column.test.d.ts +1 -0
  487. package/dist/types/functions/information/row/row.d.ts +14 -0
  488. package/dist/types/functions/information/row/row.test.d.ts +1 -0
  489. package/dist/types/functions/logical/and/and.d.ts +5 -0
  490. package/dist/types/functions/logical/and/and.test.d.ts +1 -0
  491. package/dist/types/functions/logical/if/if.d.ts +5 -0
  492. package/dist/types/functions/logical/if/if.test.d.ts +1 -0
  493. package/dist/types/functions/logical/iferror/iferror.d.ts +5 -0
  494. package/dist/types/functions/logical/iferror/iferror.test.d.ts +1 -0
  495. package/dist/types/functions/logical/or/or.d.ts +5 -0
  496. package/dist/types/functions/logical/or/or.test.d.ts +1 -0
  497. package/dist/types/functions/lookup/count/count-utils.d.ts +14 -0
  498. package/dist/types/functions/lookup/count/count.d.ts +21 -0
  499. package/dist/types/functions/lookup/count/count.test.d.ts +1 -0
  500. package/dist/types/functions/lookup/count/countif.d.ts +26 -0
  501. package/dist/types/functions/lookup/count/countif.test.d.ts +1 -0
  502. package/dist/types/functions/lookup/count/countifs.d.ts +21 -0
  503. package/dist/types/functions/lookup/count/countifs.test.d.ts +1 -0
  504. package/dist/types/functions/lookup/index-lookup/index-lookup.d.ts +2 -0
  505. package/dist/types/functions/lookup/index-lookup/index-lookup.test.d.ts +1 -0
  506. package/dist/types/functions/lookup/match/match.d.ts +2 -0
  507. package/dist/types/functions/lookup/match/match.test.d.ts +1 -0
  508. package/dist/types/functions/lookup/xlookup/xlookup.d.ts +2 -0
  509. package/dist/types/functions/lookup/xlookup/xlookup.test.d.ts +1 -0
  510. package/dist/types/functions/math/average/average-utils.d.ts +10 -0
  511. package/dist/types/functions/math/average/average.d.ts +18 -0
  512. package/dist/types/functions/math/average/average.test.d.ts +1 -0
  513. package/dist/types/functions/math/average/averageif.d.ts +23 -0
  514. package/dist/types/functions/math/average/averageif.test.d.ts +1 -0
  515. package/dist/types/functions/math/average/averageifs.d.ts +21 -0
  516. package/dist/types/functions/math/average/averageifs.test.d.ts +1 -0
  517. package/dist/types/functions/math/ceiling/ceiling.d.ts +5 -0
  518. package/dist/types/functions/math/ceiling/ceiling.test.d.ts +1 -0
  519. package/dist/types/functions/math/max/max-utils.d.ts +20 -0
  520. package/dist/types/functions/math/max/max.d.ts +18 -0
  521. package/dist/types/functions/math/max/max.test.d.ts +1 -0
  522. package/dist/types/functions/math/max/maxif.d.ts +23 -0
  523. package/dist/types/functions/math/max/maxif.test.d.ts +1 -0
  524. package/dist/types/functions/math/max/maxifs.d.ts +21 -0
  525. package/dist/types/functions/math/max/maxifs.test.d.ts +1 -0
  526. package/dist/types/functions/math/min/min-utils.d.ts +20 -0
  527. package/dist/types/functions/math/min/min.d.ts +5 -0
  528. package/dist/types/functions/math/min/min.test.d.ts +1 -0
  529. package/dist/types/functions/math/min/minif.d.ts +23 -0
  530. package/dist/types/functions/math/min/minif.test.d.ts +1 -0
  531. package/dist/types/functions/math/min/minifs.d.ts +21 -0
  532. package/dist/types/functions/math/min/minifs.test.d.ts +1 -0
  533. package/dist/types/functions/math/sum/sum.d.ts +5 -0
  534. package/dist/types/functions/math/sum/sum.test.d.ts +1 -0
  535. package/dist/types/functions/math/sum/sumif.d.ts +23 -0
  536. package/dist/types/functions/math/sum/sumif.test.d.ts +1 -0
  537. package/dist/types/functions/math/sum/sumifs.d.ts +21 -0
  538. package/dist/types/functions/math/sum/sumifs.test.d.ts +1 -0
  539. package/dist/types/functions/math/sum/summation-utils.d.ts +19 -0
  540. package/dist/types/functions/reference/address/address.d.ts +18 -0
  541. package/dist/types/functions/reference/address/address.test.d.ts +1 -0
  542. package/dist/types/functions/reference/indirect/indirect.d.ts +20 -0
  543. package/dist/types/functions/reference/indirect/indirect.test.d.ts +1 -0
  544. package/dist/types/functions/reference/offset/offset.d.ts +23 -0
  545. package/dist/types/functions/reference/offset/offset.test.d.ts +1 -0
  546. package/dist/types/functions/text/concatenate/concatenate.d.ts +5 -0
  547. package/dist/types/functions/text/concatenate/concatenate.test.d.ts +1 -0
  548. package/dist/types/functions/text/exact/exact.d.ts +5 -0
  549. package/dist/types/functions/text/exact/exact.test.d.ts +1 -0
  550. package/dist/types/functions/text/find/find.d.ts +20 -0
  551. package/dist/types/functions/text/find/find.test.d.ts +1 -0
  552. package/dist/types/functions/text/left/left.d.ts +19 -0
  553. package/dist/types/functions/text/left/left.test.d.ts +1 -0
  554. package/dist/types/functions/text/len/len.d.ts +16 -0
  555. package/dist/types/functions/text/len/len.test.d.ts +1 -0
  556. package/dist/types/functions/text/mid/mid.d.ts +20 -0
  557. package/dist/types/functions/text/mid/mid.test.d.ts +1 -0
  558. package/dist/types/functions/text/right/right.d.ts +2 -0
  559. package/dist/types/functions/text/right/right.test.d.ts +1 -0
  560. package/dist/types/functions/text/text-helpers.d.ts +27 -0
  561. package/dist/types/functions/text/textjoin/textjoin.d.ts +5 -0
  562. package/dist/types/functions/text/textjoin/textjoin.test.d.ts +1 -0
  563. package/dist/types/parser/ast.d.ts +275 -0
  564. package/dist/types/parser/formatter.d.ts +6 -0
  565. package/dist/types/parser/grammar.d.ts +203 -0
  566. package/dist/types/parser/lexer.d.ts +144 -0
  567. package/dist/types/parser/parser.d.ts +159 -0
  568. package/dist/types/react/hooks.d.ts +5 -0
  569. package/package.json +41 -0
@@ -0,0 +1,83 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+
29
+ // src/functions/math/average/averageif.ts
30
+ var exports_averageif = {};
31
+ __export(exports_averageif, {
32
+ AVERAGEIF: () => AVERAGEIF
33
+ });
34
+ module.exports = __toCommonJS(exports_averageif);
35
+ var import_types = require("src/core/types");
36
+ var import_criteria_utils = require("../../criteria-utils.cjs");
37
+ var import_criteria_parser = require("../../criteria-parser.cjs");
38
+ var import_average_utils = require("./average-utils.cjs");
39
+ var AVERAGEIF = {
40
+ name: "AVERAGEIF",
41
+ evaluate: function(node, context) {
42
+ const argError = import_criteria_utils.validateSingleCriteriaArgs("AVERAGEIF", node.args.length, context);
43
+ if (argError) {
44
+ return argError;
45
+ }
46
+ const criteriaRangeResult = this.evaluateNode(node.args[0], context);
47
+ if (criteriaRangeResult.type === "error") {
48
+ return criteriaRangeResult;
49
+ }
50
+ const criteriaResult = this.evaluateNode(node.args[1], context);
51
+ if (criteriaResult.type === "error") {
52
+ return criteriaResult;
53
+ }
54
+ if (criteriaResult.type !== "value") {
55
+ return {
56
+ type: "error",
57
+ err: import_types.FormulaError.VALUE,
58
+ message: "AVERAGEIF criteria must be a single value",
59
+ errAddress: context.dependencyNode
60
+ };
61
+ }
62
+ const parsedCriteria = import_criteria_parser.parseCriteria(criteriaResult.result);
63
+ if (parsedCriteria.type === "error") {
64
+ return {
65
+ type: "error",
66
+ err: import_types.FormulaError.VALUE,
67
+ message: parsedCriteria.message,
68
+ errAddress: context.dependencyNode
69
+ };
70
+ }
71
+ const averageRangeResult = node.args.length === 3 ? this.evaluateNode(node.args[2], context) : criteriaRangeResult;
72
+ if (averageRangeResult.type === "error") {
73
+ return averageRangeResult;
74
+ }
75
+ const matchingValues = import_criteria_utils.processMultiCriteriaValues(this, averageRangeResult, [{ rangeResult: criteriaRangeResult, parsedCriteria }], context, "col-major");
76
+ if (matchingValues.type === "error" || matchingValues.type === "awaiting-evaluation") {
77
+ return matchingValues;
78
+ }
79
+ return import_average_utils.performAverage(matchingValues.values, context);
80
+ }
81
+ };
82
+
83
+ //# debugId=2C57561504078A1F64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/functions/math/average/averageif.ts"],
4
+ "sourcesContent": [
5
+ "import {\n FormulaError,\n type FunctionDefinition,\n type FunctionEvaluationResult,\n} from \"src/core/types\";\nimport type { EvaluationContext } from \"src/evaluator/evaluation-context\";\nimport { \n processMultiCriteriaValues, \n validateSingleCriteriaArgs,\n} from \"../../criteria-utils.cjs\";\nimport { parseCriteria, matchesParsedCriteria } from \"../../criteria-parser.cjs\";\nimport { performAverage } from \"./average-utils.cjs\";\n\n/**\n * AVERAGEIF function - Calculates the average of cells in a range that meet a criteria\n * \n * Usage: AVERAGEIF(range, criteria, [average_range])\n * \n * range: The range of cells to evaluate against the criteria\n * criteria: The criteria to match against. Can be:\n * - Exact value: \"Apple\", 42\n * - Comparison: \">10\", \"<=5\", \"<>0\"\n * - Wildcards: \"App*\", \"?ruit\"\n * average_range: Optional. The range to average. If omitted, uses the range parameter\n * \n * Examples:\n * AVERAGEIF(A1:A10, \"Apple\") - averages cells in A1:A10 that contain \"Apple\"\n * AVERAGEIF(B1:B10, \">10\") - averages cells in B1:B10 with values greater than 10\n * AVERAGEIF(A1:A10, \"Apple\", B1:B10) - averages B1:B10 where A1:A10 contains \"Apple\"\n * \n * Note:\n * - Only numeric values are included in the average calculation\n * - Returns error if no values match the criteria\n */\nexport const AVERAGEIF: FunctionDefinition = {\n name: \"AVERAGEIF\",\n evaluate: function (node, context): FunctionEvaluationResult {\n // Validate arguments\n const argError = validateSingleCriteriaArgs(\"AVERAGEIF\", node.args.length, context);\n if (argError) {\n return argError;\n }\n\n // Evaluate criteria range (first argument)\n const criteriaRangeResult = this.evaluateNode(node.args[0]!, context);\n if (criteriaRangeResult.type === \"error\") {\n return criteriaRangeResult;\n }\n\n // Evaluate criteria (second argument)\n const criteriaResult = this.evaluateNode(node.args[1]!, context);\n if (criteriaResult.type === \"error\") {\n return criteriaResult;\n }\n\n if (criteriaResult.type !== \"value\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"AVERAGEIF criteria must be a single value\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Parse criteria\n const parsedCriteria = parseCriteria(criteriaResult.result);\n if (parsedCriteria.type === \"error\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: parsedCriteria.message,\n errAddress: context.dependencyNode,\n };\n }\n\n // Determine average range (third argument if present, otherwise same as criteria range)\n const averageRangeResult = node.args.length === 3 \n ? this.evaluateNode(node.args[2]!, context)\n : criteriaRangeResult;\n \n if (averageRangeResult.type === \"error\") {\n return averageRangeResult;\n }\n\n // Use shared average utility for standard cases\n const matchingValues = processMultiCriteriaValues(\n this,\n averageRangeResult,\n [{ rangeResult: criteriaRangeResult, parsedCriteria }],\n context,\n \"col-major\"\n );\n\n if (matchingValues.type === \"error\" || matchingValues.type === \"awaiting-evaluation\") {\n return matchingValues;\n }\n\n return performAverage(matchingValues.values, context);\n },\n};\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,IAJP;AASO,IAHP;AAIqD,IAArD;AAC+B,IAA/B;AAuBO,IAAM,YAAgC;AAAA,EAC3C,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAE3D,MAAM,WAAW,iDAA2B,aAAa,KAAK,KAAK,QAAQ,OAAO;AAAA,IAClF,IAAI,UAAU;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,sBAAsB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IACpE,IAAI,oBAAoB,SAAS,SAAS;AAAA,MACxC,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,iBAAiB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC/D,IAAI,eAAe,SAAS,SAAS;AAAA,MACnC,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,eAAe,SAAS,SAAS;AAAA,MACnC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,iBAAiB,qCAAc,eAAe,MAAM;AAAA,IAC1D,IAAI,eAAe,SAAS,SAAS;AAAA,MACnC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,0BAAa;AAAA,QAClB,SAAS,eAAe;AAAA,QACxB,YAAY,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,MAAM,qBAAqB,KAAK,KAAK,WAAW,IAC5C,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO,IACxC;AAAA,IAEJ,IAAI,mBAAmB,SAAS,SAAS;AAAA,MACvC,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,iBAAiB,iDACrB,MACA,oBACA,CAAC,EAAE,aAAa,qBAAqB,eAAe,CAAC,GACrD,SACA,WACF;AAAA,IAEA,IAAI,eAAe,SAAS,WAAW,eAAe,SAAS,uBAAuB;AAAA,MACpF,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,oCAAe,eAAe,QAAQ,OAAO;AAAA;AAExD;",
8
+ "debugId": "2C57561504078A1F64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,61 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+
29
+ // src/functions/math/average/averageifs.ts
30
+ var exports_averageifs = {};
31
+ __export(exports_averageifs, {
32
+ AVERAGEIFS: () => AVERAGEIFS
33
+ });
34
+ module.exports = __toCommonJS(exports_averageifs);
35
+ var import_criteria_utils = require("../../criteria-utils.cjs");
36
+ var import_average_utils = require("./average-utils.cjs");
37
+ var AVERAGEIFS = {
38
+ name: "AVERAGEIFS",
39
+ evaluate: function(node, context) {
40
+ const argError = import_criteria_utils.validateMultiCriteriaArgs("AVERAGEIFS", node.args.length, context);
41
+ if (argError) {
42
+ return argError;
43
+ }
44
+ const averageRangeResult = this.evaluateNode(node.args[0], context);
45
+ if (averageRangeResult.type === "error") {
46
+ return averageRangeResult;
47
+ }
48
+ const criteriaPairsResult = import_criteria_utils.parseCriteriaPairs.call(this, node, context, this.evaluateNode, 1);
49
+ if ("type" in criteriaPairsResult) {
50
+ return criteriaPairsResult;
51
+ }
52
+ const criteriaPairs = criteriaPairsResult;
53
+ const matchingValues = import_criteria_utils.processMultiCriteriaValues(this, averageRangeResult, criteriaPairs, context, "col-major");
54
+ if (matchingValues.type === "error" || matchingValues.type === "awaiting-evaluation") {
55
+ return matchingValues;
56
+ }
57
+ return import_average_utils.performAverage(matchingValues.values, context);
58
+ }
59
+ };
60
+
61
+ //# debugId=6D93A8D7357B520E64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/functions/math/average/averageifs.ts"],
4
+ "sourcesContent": [
5
+ "import {\n type FunctionDefinition,\n type FunctionEvaluationResult,\n} from \"src/core/types\";\nimport type { EvaluationContext } from \"src/evaluator/evaluation-context\";\nimport {\n parseCriteriaPairs,\n processMultiCriteriaValues,\n validateMultiCriteriaArgs,\n} from \"../../criteria-utils.cjs\";\nimport { performAverage } from \"./average-utils.cjs\";\n\n/**\n * AVERAGEIFS function - Calculates the average of cells in a range that meet multiple criteria\n *\n * Usage: AVERAGEIFS(average_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)\n *\n * average_range: The range of cells to average\n * criteria_range1: The first range to evaluate against criteria1\n * criteria1: The first criteria to match against\n * criteria_range2, criteria2: Optional additional criteria pairs\n *\n * Examples:\n * AVERAGEIFS(B1:B10, A1:A10, \"Apple\") - averages B1:B10 where A1:A10 = \"Apple\"\n * AVERAGEIFS(C1:C10, A1:A10, \"Apple\", B1:B10, \">10\") - averages C1:C10 where A1:A10 = \"Apple\" AND B1:B10 > 10\n *\n * Note:\n * - All criteria must be satisfied for a value to be included\n * - Only numeric values are included in the average calculation\n * - Returns error if no values match all criteria\n */\nexport const AVERAGEIFS: FunctionDefinition = {\n name: \"AVERAGEIFS\",\n evaluate: function (node, context): FunctionEvaluationResult {\n // Validate arguments using utility\n const argError = validateMultiCriteriaArgs(\"AVERAGEIFS\", node.args.length, context);\n if (argError) {\n return argError;\n }\n\n // Evaluate average range\n const averageRangeResult = this.evaluateNode(node.args[0]!, context);\n if (averageRangeResult.type === \"error\") {\n return averageRangeResult;\n }\n\n // Parse criteria pairs using utility\n const criteriaPairsResult = parseCriteriaPairs.call(\n this,\n node,\n context,\n this.evaluateNode,\n 1\n );\n if (\"type\" in criteriaPairsResult) {\n return criteriaPairsResult;\n }\n const criteriaPairs = criteriaPairsResult;\n\n // Use shared average utility for standard cases\n const matchingValues = processMultiCriteriaValues(\n this,\n averageRangeResult,\n criteriaPairs,\n context,\n \"col-major\"\n );\n\n if (matchingValues.type === \"error\" || matchingValues.type === \"awaiting-evaluation\") {\n return matchingValues;\n }\n\n return performAverage(matchingValues.values, context);\n },\n};\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,IAJP;AAK+B,IAA/B;AAqBO,IAAM,aAAiC;AAAA,EAC5C,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAE3D,MAAM,WAAW,gDAA0B,cAAc,KAAK,KAAK,QAAQ,OAAO;AAAA,IAClF,IAAI,UAAU;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,qBAAqB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IACnE,IAAI,mBAAmB,SAAS,SAAS;AAAA,MACvC,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,sBAAsB,yCAAmB,KAC7C,MACA,MACA,SACA,KAAK,cACL,CACF;AAAA,IACA,IAAI,UAAU,qBAAqB;AAAA,MACjC,OAAO;AAAA,IACT;AAAA,IACA,MAAM,gBAAgB;AAAA,IAGtB,MAAM,iBAAiB,iDACrB,MACA,oBACA,eACA,SACA,WACF;AAAA,IAEA,IAAI,eAAe,SAAS,WAAW,eAAe,SAAS,uBAAuB;AAAA,MACpF,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,oCAAe,eAAe,QAAQ,OAAO;AAAA;AAExD;",
8
+ "debugId": "6D93A8D7357B520E64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,219 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+
29
+ // src/functions/math/ceiling/ceiling.ts
30
+ var exports_ceiling = {};
31
+ __export(exports_ceiling, {
32
+ CEILING: () => CEILING
33
+ });
34
+ module.exports = __toCommonJS(exports_ceiling);
35
+ var import_types = require("src/core/types");
36
+ function ceilingOperation(numberValue, significanceValue, context) {
37
+ if (numberValue.type === "infinity") {
38
+ return numberValue;
39
+ }
40
+ if (significanceValue.type === "infinity") {
41
+ return {
42
+ type: "error",
43
+ err: import_types.FormulaError.VALUE,
44
+ message: "Cannot use infinity as significance",
45
+ errAddress: context.dependencyNode
46
+ };
47
+ }
48
+ const num = numberValue.value;
49
+ const sig = significanceValue.value;
50
+ if (sig === 0) {
51
+ return {
52
+ type: "error",
53
+ err: import_types.FormulaError.DIV0,
54
+ message: "Significance cannot be zero",
55
+ errAddress: context.dependencyNode
56
+ };
57
+ }
58
+ if (num > 0 && sig < 0) {
59
+ return {
60
+ type: "error",
61
+ err: import_types.FormulaError.NUM,
62
+ message: "Positive number cannot be used with negative significance",
63
+ errAddress: context.dependencyNode
64
+ };
65
+ }
66
+ if (num < 0 && sig > 0) {
67
+ return {
68
+ type: "error",
69
+ err: import_types.FormulaError.NUM,
70
+ message: "Negative number cannot be used with positive significance",
71
+ errAddress: context.dependencyNode
72
+ };
73
+ }
74
+ let result;
75
+ if (sig > 0) {
76
+ result = Math.ceil(num / sig) * sig;
77
+ } else {
78
+ result = Math.ceil(num / sig) * sig;
79
+ }
80
+ return { type: "number", value: result };
81
+ }
82
+ function createCeilingSpilledResult({
83
+ numberResult,
84
+ significanceResult,
85
+ context
86
+ }) {
87
+ const hasSpilledNumber = numberResult.type === "spilled-values";
88
+ const hasSpilledSignificance = significanceResult.type === "spilled-values";
89
+ if (!hasSpilledNumber && !hasSpilledSignificance) {
90
+ throw new Error("createCeilingSpilledResult called without spilled values");
91
+ }
92
+ return {
93
+ type: "spilled-values",
94
+ spillArea: (origin) => {
95
+ if (hasSpilledNumber && numberResult.type === "spilled-values") {
96
+ const spillArea = numberResult.spillArea(origin);
97
+ if (hasSpilledSignificance && significanceResult.type === "spilled-values") {
98
+ return this.unionRanges(this.projectRange(spillArea, origin), this.projectRange(significanceResult.spillArea(origin), origin));
99
+ }
100
+ return spillArea;
101
+ } else if (hasSpilledSignificance && significanceResult.type === "spilled-values") {
102
+ return significanceResult.spillArea(origin);
103
+ } else {
104
+ throw new Error("No spilled values found");
105
+ }
106
+ },
107
+ source: "CEILING with spilled values",
108
+ evaluate: (spilledCell, evalContext) => {
109
+ const spillNumberResult = hasSpilledNumber ? numberResult.evaluate(spilledCell, evalContext) : numberResult;
110
+ const spillSigResult = hasSpilledSignificance ? significanceResult.evaluate(spilledCell, evalContext) : significanceResult;
111
+ if (spillNumberResult === undefined || spillSigResult === undefined) {
112
+ return {
113
+ type: "error",
114
+ err: import_types.FormulaError.REF,
115
+ message: "The spilled results have not been evaluated",
116
+ errAddress: context.dependencyNode
117
+ };
118
+ }
119
+ if (spillNumberResult.type === "error") {
120
+ return spillNumberResult;
121
+ }
122
+ if (spillSigResult.type === "error") {
123
+ return spillSigResult;
124
+ }
125
+ if (spillNumberResult.type !== "value" || spillSigResult.type !== "value") {
126
+ return {
127
+ type: "error",
128
+ err: import_types.FormulaError.VALUE,
129
+ message: "Invalid spilled result for CEILING",
130
+ errAddress: context.dependencyNode
131
+ };
132
+ }
133
+ if (spillNumberResult.result.type !== "number" && spillNumberResult.result.type !== "infinity") {
134
+ return {
135
+ type: "error",
136
+ err: import_types.FormulaError.VALUE,
137
+ message: "Number argument must be a number",
138
+ errAddress: context.dependencyNode
139
+ };
140
+ }
141
+ if (spillSigResult.result.type !== "number" && spillSigResult.result.type !== "infinity") {
142
+ return {
143
+ type: "error",
144
+ err: import_types.FormulaError.VALUE,
145
+ message: "Significance argument must be a number",
146
+ errAddress: context.dependencyNode
147
+ };
148
+ }
149
+ const result = ceilingOperation(spillNumberResult.result, spillSigResult.result, context);
150
+ if (result.type === "error" || result.type === "awaiting-evaluation") {
151
+ return result;
152
+ }
153
+ return { type: "value", result };
154
+ },
155
+ evaluateAllCells: (intersectingRange) => {
156
+ throw new Error("WIP: evaluateAllCells for CEILING is not implemented");
157
+ }
158
+ };
159
+ }
160
+ var CEILING = {
161
+ name: "CEILING",
162
+ evaluate: function(node, context) {
163
+ if (node.args.length !== 2) {
164
+ return {
165
+ type: "error",
166
+ err: import_types.FormulaError.VALUE,
167
+ message: "CEILING function takes exactly 2 arguments",
168
+ errAddress: context.dependencyNode
169
+ };
170
+ }
171
+ const numberResult = this.evaluateNode(node.args[0], context);
172
+ if (numberResult.type === "error" || numberResult.type === "awaiting-evaluation") {
173
+ return numberResult;
174
+ }
175
+ const significanceResult = this.evaluateNode(node.args[1], context);
176
+ if (significanceResult.type === "error" || significanceResult.type === "awaiting-evaluation") {
177
+ return significanceResult;
178
+ }
179
+ const hasSpilledValues = numberResult.type === "spilled-values" || significanceResult.type === "spilled-values";
180
+ if (hasSpilledValues) {
181
+ return createCeilingSpilledResult.call(this, {
182
+ numberResult,
183
+ significanceResult,
184
+ context
185
+ });
186
+ }
187
+ if (numberResult.type !== "value" || significanceResult.type !== "value") {
188
+ return {
189
+ type: "error",
190
+ err: import_types.FormulaError.VALUE,
191
+ message: "Invalid argument type",
192
+ errAddress: context.dependencyNode
193
+ };
194
+ }
195
+ if (numberResult.result.type !== "number" && numberResult.result.type !== "infinity") {
196
+ return {
197
+ type: "error",
198
+ err: import_types.FormulaError.VALUE,
199
+ message: "Number argument must be a number",
200
+ errAddress: context.dependencyNode
201
+ };
202
+ }
203
+ if (significanceResult.result.type !== "number" && significanceResult.result.type !== "infinity") {
204
+ return {
205
+ type: "error",
206
+ err: import_types.FormulaError.VALUE,
207
+ message: "Significance argument must be a number",
208
+ errAddress: context.dependencyNode
209
+ };
210
+ }
211
+ const result = ceilingOperation(numberResult.result, significanceResult.result, context);
212
+ if (result.type === "error" || result.type === "awaiting-evaluation") {
213
+ return result;
214
+ }
215
+ return { type: "value", result };
216
+ }
217
+ };
218
+
219
+ //# debugId=094A5BA492E34C3364756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/functions/math/ceiling/ceiling.ts"],
4
+ "sourcesContent": [
5
+ "import {\n FormulaError,\n type CellValue,\n type CellNumber,\n type CellInfinity,\n type FunctionDefinition,\n type FunctionEvaluationResult,\n type ValueEvaluationResult,\n type CellAddress,\n type SpreadsheetRange,\n type SpilledValuesEvaluationResult,\n type SingleEvaluationResult,\n type ErrorEvaluationResult,\n} from \"src/core/types\";\nimport type { FormulaEvaluator } from \"src/evaluator/formula-evaluator\";\nimport type { EvaluationContext } from \"src/evaluator/evaluation-context\";\n\n/**\n * CEILING function - Rounds a number up to the nearest multiple of significance\n *\n * Usage: CEILING(number, significance)\n *\n * number: The number to round up (required)\n * significance: The multiple to round up to (required)\n *\n * Examples:\n * CEILING(4.3) returns 5 (rounds up to nearest integer)\n * CEILING(4.3, 0.5) returns 4.5 (rounds up to nearest 0.5)\n * CEILING(-2.1, -1) returns -3 (rounds away from zero)\n *\n * Note:\n * - Both arguments are required and must be numbers (no type coercion)\n * - Positive number with negative significance returns #NUM! error\n * - Supports spilled values (dynamic arrays)\n * - Handles infinity values appropriately\n */\n\n/**\n * Helper function to perform CEILING operation\n */\nfunction ceilingOperation(\n numberValue: CellNumber | CellInfinity,\n significanceValue: CellNumber | CellInfinity,\n context: EvaluationContext\n): CellNumber | CellInfinity | ErrorEvaluationResult {\n // Handle infinity cases\n if (numberValue.type === \"infinity\") {\n return numberValue; // Infinity remains infinity\n }\n\n if (significanceValue.type === \"infinity\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Cannot use infinity as significance\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Both are numbers\n const num = numberValue.value;\n const sig = significanceValue.value;\n\n // Significance cannot be zero\n if (sig === 0) {\n return {\n type: \"error\",\n err: FormulaError.DIV0,\n message: \"Significance cannot be zero\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Excel CEILING behavior based on testing:\n // - Always rounds away from zero\n // - Positive number with negative significance gives #NUM! error\n\n if (num > 0 && sig < 0) {\n return {\n type: \"error\",\n err: FormulaError.NUM,\n message: \"Positive number cannot be used with negative significance\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (num < 0 && sig > 0) {\n return {\n type: \"error\",\n err: FormulaError.NUM,\n message: \"Negative number cannot be used with positive significance\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Calculate result - always rounds away from zero\n let result: number;\n\n if (sig > 0) {\n // Positive significance with positive/zero number\n result = Math.ceil(num / sig) * sig;\n } else {\n // Negative significance with negative/zero number\n // Round away from zero: -2.1/-1 = 2.1, ceil(2.1) = 3, 3*-1 = -3\n result = Math.ceil(num / sig) * sig;\n }\n\n return { type: \"number\", value: result };\n}\n\n/**\n * Helper for creating spilled-values result for CEILING function\n */\nfunction createCeilingSpilledResult(\n this: FormulaEvaluator,\n {\n numberResult,\n significanceResult,\n context,\n }: {\n numberResult: FunctionEvaluationResult;\n significanceResult: FunctionEvaluationResult;\n context: EvaluationContext;\n }\n): SpilledValuesEvaluationResult | ErrorEvaluationResult {\n const hasSpilledNumber = numberResult.type === \"spilled-values\";\n const hasSpilledSignificance = significanceResult.type === \"spilled-values\";\n\n if (!hasSpilledNumber && !hasSpilledSignificance) {\n throw new Error(\"createCeilingSpilledResult called without spilled values\");\n }\n\n return {\n type: \"spilled-values\",\n spillArea: (origin: CellAddress): SpreadsheetRange => {\n // Calculate spill area (union of spilled ranges)\n if (hasSpilledNumber && numberResult.type === \"spilled-values\") {\n const spillArea = numberResult.spillArea(origin);\n if (\n hasSpilledSignificance &&\n significanceResult.type === \"spilled-values\"\n ) {\n return this.unionRanges(\n this.projectRange(spillArea, origin),\n this.projectRange(significanceResult.spillArea(origin), origin)\n );\n }\n return spillArea;\n } else if (\n hasSpilledSignificance &&\n significanceResult.type === \"spilled-values\"\n ) {\n return significanceResult.spillArea(origin);\n } else {\n throw new Error(\"No spilled values found\");\n }\n },\n source: \"CEILING with spilled values\",\n evaluate: (spilledCell: any, evalContext: any): SingleEvaluationResult => {\n // Evaluate arguments at this spilled position\n const spillNumberResult = hasSpilledNumber\n ? numberResult.evaluate(spilledCell, evalContext)\n : numberResult;\n const spillSigResult = hasSpilledSignificance\n ? significanceResult.evaluate(spilledCell, evalContext)\n : significanceResult;\n\n if (spillNumberResult === undefined || spillSigResult === undefined) {\n return {\n type: \"error\",\n err: FormulaError.REF,\n message: \"The spilled results have not been evaluated\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (spillNumberResult.type === \"error\") {\n return spillNumberResult;\n }\n if (spillSigResult.type === \"error\") {\n return spillSigResult;\n }\n\n if (\n spillNumberResult.type !== \"value\" ||\n spillSigResult.type !== \"value\"\n ) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Invalid spilled result for CEILING\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Type checking\n if (\n spillNumberResult.result.type !== \"number\" &&\n spillNumberResult.result.type !== \"infinity\"\n ) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Number argument must be a number\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (\n spillSigResult.result.type !== \"number\" &&\n spillSigResult.result.type !== \"infinity\"\n ) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Significance argument must be a number\",\n errAddress: context.dependencyNode,\n };\n }\n\n const result = ceilingOperation(\n spillNumberResult.result,\n spillSigResult.result,\n context\n );\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n return { type: \"value\", result };\n },\n evaluateAllCells: (intersectingRange: any) => {\n throw new Error(\"WIP: evaluateAllCells for CEILING is not implemented\");\n },\n };\n}\n\n/**\n * CEILING function implementation\n */\nexport const CEILING: FunctionDefinition = {\n name: \"CEILING\",\n evaluate: function (node, context): FunctionEvaluationResult {\n if (node.args.length !== 2) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"CEILING function takes exactly 2 arguments\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Evaluate number argument\n const numberResult = this.evaluateNode(node.args[0]!, context);\n if (numberResult.type === \"error\" || numberResult.type === \"awaiting-evaluation\") {\n return numberResult;\n }\n\n // Evaluate significance argument (required)\n const significanceResult = this.evaluateNode(node.args[1]!, context);\n if (significanceResult.type === \"error\" || significanceResult.type === \"awaiting-evaluation\") {\n return significanceResult;\n }\n\n // Handle spilled values\n const hasSpilledValues =\n numberResult.type === \"spilled-values\" ||\n significanceResult.type === \"spilled-values\";\n\n if (hasSpilledValues) {\n return createCeilingSpilledResult.call(this, {\n numberResult,\n significanceResult,\n context,\n });\n }\n\n // Both arguments are single values\n if (numberResult.type !== \"value\" || significanceResult.type !== \"value\") {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Invalid argument type\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Type checking - only numbers and infinity allowed\n if (\n numberResult.result.type !== \"number\" &&\n numberResult.result.type !== \"infinity\"\n ) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Number argument must be a number\",\n errAddress: context.dependencyNode,\n };\n }\n\n if (\n significanceResult.result.type !== \"number\" &&\n significanceResult.result.type !== \"infinity\"\n ) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"Significance argument must be a number\",\n errAddress: context.dependencyNode,\n };\n }\n\n // Perform CEILING operation\n const result = ceilingOperation(\n numberResult.result,\n significanceResult.result,\n context\n );\n if (result.type === \"error\" || result.type === \"awaiting-evaluation\") {\n return result;\n }\n return { type: \"value\", result };\n },\n};\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "094A5BA492E34C3364756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,71 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+
29
+ // src/functions/math/max/max-utils.ts
30
+ var exports_max_utils = {};
31
+ __export(exports_max_utils, {
32
+ performMaximum: () => performMaximum
33
+ });
34
+ module.exports = __toCommonJS(exports_max_utils);
35
+ var import_types = require("src/core/types");
36
+ function performMaximum(results, context) {
37
+ let maxValue = -Infinity;
38
+ let hasValues = false;
39
+ for (const result of results) {
40
+ if (result.type === "error") {
41
+ return result;
42
+ }
43
+ if (result.type === "value") {
44
+ if (result.result.type === "number") {
45
+ maxValue = Math.max(maxValue, result.result.value);
46
+ hasValues = true;
47
+ } else if (result.result.type === "infinity") {
48
+ if (result.result.sign === "positive") {
49
+ return {
50
+ type: "value",
51
+ result: result.result
52
+ };
53
+ }
54
+ }
55
+ }
56
+ }
57
+ if (!hasValues) {
58
+ return {
59
+ type: "error",
60
+ err: import_types.FormulaError.VALUE,
61
+ message: "No numeric values found",
62
+ errAddress: context.dependencyNode
63
+ };
64
+ }
65
+ return {
66
+ type: "value",
67
+ result: { type: "number", value: maxValue }
68
+ };
69
+ }
70
+
71
+ //# debugId=E317844019E8356164756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/functions/math/max/max-utils.ts"],
4
+ "sourcesContent": [
5
+ "import {\n FormulaError,\n type FunctionEvaluationResult,\n type SingleEvaluationResult,\n type CellInfinity,\n} from \"src/core/types\";\nimport type { EvaluationContext } from \"src/evaluator/evaluation-context\";\n\n/**\n * Result type for processInfinity in max functions\n */\nexport type ProcessInfinityResult<T> =\n | { type: \"infinity\"; infinity: CellInfinity }\n | { type: \"state\"; state: T };\n\n/**\n * Perform maximum calculation over an iterator of SingleEvaluationResults\n * Handles the common logic shared by MAX, MAXIF, MAXIFS functions\n *\n * @param results - Iterator of SingleEvaluationResults to find maximum from\n * @returns FunctionEvaluationResult with the maximum, infinity, or error\n */\nexport function performMaximum(\n results: Iterable<SingleEvaluationResult>,\n context: EvaluationContext\n): FunctionEvaluationResult {\n let maxValue = -Infinity;\n let hasValues = false;\n\n for (const result of results) {\n if (result.type === \"error\") {\n // Propagate errors immediately\n return result;\n }\n\n if (result.type === \"value\") {\n if (result.result.type === \"number\") {\n maxValue = Math.max(maxValue, result.result.value);\n hasValues = true;\n } else if (result.result.type === \"infinity\") {\n if (result.result.sign === \"positive\") {\n // Positive infinity is always the maximum - return immediately\n return {\n type: \"value\",\n result: result.result,\n };\n }\n // Negative infinity doesn't change the maximum\n }\n // Non-numeric values (strings, booleans) are ignored in maximum calculation\n }\n }\n\n if (!hasValues) {\n return {\n type: \"error\",\n err: FormulaError.VALUE,\n message: \"No numeric values found\",\n errAddress: context.dependencyNode,\n };\n }\n\n return {\n type: \"value\",\n result: { type: \"number\", value: maxValue },\n };\n}\n\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IALP;AAsBO,SAAS,cAAc,CAC5B,SACA,SAC0B;AAAA,EAC1B,IAAI,WAAW;AAAA,EACf,IAAI,YAAY;AAAA,EAEhB,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,OAAO,SAAS,SAAS;AAAA,MAE3B,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,OAAO,SAAS,SAAS;AAAA,MAC3B,IAAI,OAAO,OAAO,SAAS,UAAU;AAAA,QACnC,WAAW,KAAK,IAAI,UAAU,OAAO,OAAO,KAAK;AAAA,QACjD,YAAY;AAAA,MACd,EAAO,SAAI,OAAO,OAAO,SAAS,YAAY;AAAA,QAC5C,IAAI,OAAO,OAAO,SAAS,YAAY;AAAA,UAErC,OAAO;AAAA,YACL,MAAM;AAAA,YACN,QAAQ,OAAO;AAAA,UACjB;AAAA,QACF;AAAA,MAEF;AAAA,IAEF;AAAA,EACF;AAAA,EAEA,IAAI,CAAC,WAAW;AAAA,IACd,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,0BAAa;AAAA,MAClB,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,MAAM,UAAU,OAAO,SAAS;AAAA,EAC5C;AAAA;",
8
+ "debugId": "E317844019E8356164756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,48 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+
29
+ // src/functions/math/max/max.ts
30
+ var exports_max = {};
31
+ __export(exports_max, {
32
+ MAX: () => MAX
33
+ });
34
+ module.exports = __toCommonJS(exports_max);
35
+ var import_max_utils = require("./max-utils.cjs");
36
+ var import_function_utils = require("src/functions/function-utils");
37
+ var MAX = {
38
+ name: "MAX",
39
+ evaluate: function(node, context) {
40
+ const argumentValues = import_function_utils.createArgumentIterator(this, node, context, "col-major");
41
+ if (argumentValues.type !== "values") {
42
+ return argumentValues;
43
+ }
44
+ return import_max_utils.performMaximum(argumentValues.values, context);
45
+ }
46
+ };
47
+
48
+ //# debugId=36355D055954E28164756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/functions/math/max/max.ts"],
4
+ "sourcesContent": [
5
+ "import {\n type FunctionDefinition,\n type FunctionEvaluationResult,\n} from \"src/core/types\";\nimport { performMaximum } from \"./max-utils.cjs\";\nimport { createArgumentIterator } from \"src/functions/function-utils\";\n\n/**\n * MAX function - Returns the largest number in the arguments\n *\n * Usage: MAX(value1, [value2], ...)\n *\n * Examples:\n * MAX(1, 2, 3) - returns 3\n * MAX(A1:A10) - finds maximum in the range A1:A10\n * MAX(A1:A5, B1:B5) - finds maximum across both ranges\n *\n * Note:\n * - Only numeric values are considered\n * - Text, logical values, and empty cells are ignored in ranges\n * - Direct text/logical arguments cause errors\n * - Returns error if no numeric values are found\n */\nexport const MAX: FunctionDefinition = {\n name: \"MAX\",\n evaluate: function (node, context): FunctionEvaluationResult {\n // Create iterator over all argument values\n const argumentValues = createArgumentIterator(this, node, context, \"col-major\");\n if (argumentValues.type !== \"values\") {\n return argumentValues;\n }\n // Use shared maximum utility (now with unified error propagation)\n return performMaximum(argumentValues.values, context);\n },\n};\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAI+B,IAA/B;AACuC,IAAvC;AAkBO,IAAM,MAA0B;AAAA,EACrC,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAE3D,MAAM,iBAAiB,6CAAuB,MAAM,MAAM,SAAS,WAAW;AAAA,IAC9E,IAAI,eAAe,SAAS,UAAU;AAAA,MACpC,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,gCAAe,eAAe,QAAQ,OAAO;AAAA;AAExD;",
8
+ "debugId": "36355D055954E28164756E2164756E21",
9
+ "names": []
10
+ }