@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,21 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * AVERAGEIFS function - Calculates the average of cells in a range that meet multiple criteria
4
+ *
5
+ * Usage: AVERAGEIFS(average_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
6
+ *
7
+ * average_range: The range of cells to average
8
+ * criteria_range1: The first range to evaluate against criteria1
9
+ * criteria1: The first criteria to match against
10
+ * criteria_range2, criteria2: Optional additional criteria pairs
11
+ *
12
+ * Examples:
13
+ * AVERAGEIFS(B1:B10, A1:A10, "Apple") - averages B1:B10 where A1:A10 = "Apple"
14
+ * AVERAGEIFS(C1:C10, A1:A10, "Apple", B1:B10, ">10") - averages C1:C10 where A1:A10 = "Apple" AND B1:B10 > 10
15
+ *
16
+ * Note:
17
+ * - All criteria must be satisfied for a value to be included
18
+ * - Only numeric values are included in the average calculation
19
+ * - Returns error if no values match all criteria
20
+ */
21
+ export declare const AVERAGEIFS: FunctionDefinition;
@@ -0,0 +1,5 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * CEILING function implementation
4
+ */
5
+ export declare const CEILING: FunctionDefinition;
@@ -0,0 +1,20 @@
1
+ import { type FunctionEvaluationResult, type SingleEvaluationResult, type CellInfinity } from "src/core/types";
2
+ import type { EvaluationContext } from "src/evaluator/evaluation-context";
3
+ /**
4
+ * Result type for processInfinity in max functions
5
+ */
6
+ export type ProcessInfinityResult<T> = {
7
+ type: "infinity";
8
+ infinity: CellInfinity;
9
+ } | {
10
+ type: "state";
11
+ state: T;
12
+ };
13
+ /**
14
+ * Perform maximum calculation over an iterator of SingleEvaluationResults
15
+ * Handles the common logic shared by MAX, MAXIF, MAXIFS functions
16
+ *
17
+ * @param results - Iterator of SingleEvaluationResults to find maximum from
18
+ * @returns FunctionEvaluationResult with the maximum, infinity, or error
19
+ */
20
+ export declare function performMaximum(results: Iterable<SingleEvaluationResult>, context: EvaluationContext): FunctionEvaluationResult;
@@ -0,0 +1,18 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * MAX function - Returns the largest number in the arguments
4
+ *
5
+ * Usage: MAX(value1, [value2], ...)
6
+ *
7
+ * Examples:
8
+ * MAX(1, 2, 3) - returns 3
9
+ * MAX(A1:A10) - finds maximum in the range A1:A10
10
+ * MAX(A1:A5, B1:B5) - finds maximum across both ranges
11
+ *
12
+ * Note:
13
+ * - Only numeric values are considered
14
+ * - Text, logical values, and empty cells are ignored in ranges
15
+ * - Direct text/logical arguments cause errors
16
+ * - Returns error if no numeric values are found
17
+ */
18
+ export declare const MAX: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * MAXIF function - Returns the maximum value among cells specified by a criteria
4
+ *
5
+ * Usage: MAXIF(range, criteria, [max_range])
6
+ *
7
+ * range: The range of cells to evaluate against the criteria
8
+ * criteria: The criteria to match against. Can be:
9
+ * - Exact value: "Apple", 42
10
+ * - Comparison: ">10", "<=5", "<>0"
11
+ * - Wildcards: "App*", "?ruit"
12
+ * max_range: Optional. The range to find maximum from. If omitted, uses the range parameter
13
+ *
14
+ * Examples:
15
+ * MAXIF(A1:A10, "Apple") - max of cells in A1:A10 that contain "Apple"
16
+ * MAXIF(B1:B10, ">10") - max of cells in B1:B10 with values greater than 10
17
+ * MAXIF(A1:A10, "Apple", B1:B10) - max of B1:B10 where A1:A10 contains "Apple"
18
+ *
19
+ * Note:
20
+ * - Only numeric values are considered for the maximum
21
+ * - Returns error if no values match the criteria
22
+ */
23
+ export declare const MAXIF: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * MAXIFS function - Returns the maximum value among cells specified by multiple criteria
4
+ *
5
+ * Usage: MAXIFS(max_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
6
+ *
7
+ * max_range: The range of cells from which you want the maximum
8
+ * criteria_range1: The first range in which to evaluate criteria
9
+ * criteria1: The criteria to apply to criteria_range1
10
+ * criteria_range2, criteria2: Optional additional criteria pairs
11
+ *
12
+ * Examples:
13
+ * MAXIFS(B1:B10, A1:A10, "Apple") - max of B1:B10 where A1:A10 = "Apple"
14
+ * MAXIFS(C1:C10, A1:A10, "Apple", B1:B10, ">10") - max of C1:C10 where A1:A10 = "Apple" AND B1:B10 > 10
15
+ *
16
+ * Note:
17
+ * - All criteria must be satisfied for a value to be included
18
+ * - Only numeric values are considered for the maximum
19
+ * - Returns error if no values match all criteria
20
+ */
21
+ export declare const MAXIFS: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { type FunctionEvaluationResult, type SingleEvaluationResult, type CellInfinity } from "src/core/types";
2
+ import type { EvaluationContext } from "src/evaluator/evaluation-context";
3
+ /**
4
+ * Result type for processInfinity in min functions
5
+ */
6
+ export type ProcessInfinityResult<T> = {
7
+ type: "infinity";
8
+ infinity: CellInfinity;
9
+ } | {
10
+ type: "state";
11
+ state: T;
12
+ };
13
+ /**
14
+ * Perform minimum calculation over an iterator of SingleEvaluationResults
15
+ * Handles the common logic shared by MIN, MINIF, MINIFS functions
16
+ *
17
+ * @param results - Iterator of SingleEvaluationResults to find minimum from
18
+ * @returns FunctionEvaluationResult with the minimum, infinity, or error
19
+ */
20
+ export declare function performMinimum(results: Iterable<SingleEvaluationResult>, context: EvaluationContext): FunctionEvaluationResult;
@@ -0,0 +1,5 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * MIN function - Returns the smallest number in the arguments
4
+ */
5
+ export declare const MIN: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * MINIF function - Returns the minimum value among cells specified by a criteria
4
+ *
5
+ * Usage: MINIF(range, criteria, [min_range])
6
+ *
7
+ * range: The range of cells to evaluate against the criteria
8
+ * criteria: The criteria to match against. Can be:
9
+ * - Exact value: "Apple", 42
10
+ * - Comparison: ">10", "<=5", "<>0"
11
+ * - Wildcards: "App*", "?ruit"
12
+ * min_range: Optional. The range to find minimum from. If omitted, uses the range parameter
13
+ *
14
+ * Examples:
15
+ * MINIF(A1:A10, "Apple") - min of cells in A1:A10 that contain "Apple"
16
+ * MINIF(B1:B10, ">10") - min of cells in B1:B10 with values greater than 10
17
+ * MINIF(A1:A10, "Apple", B1:B10) - min of B1:B10 where A1:A10 contains "Apple"
18
+ *
19
+ * Note:
20
+ * - Only numeric values are considered for the minimum
21
+ * - Returns error if no values match the criteria
22
+ */
23
+ export declare const MINIF: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * MINIFS function - Returns the minimum value among cells specified by multiple criteria
4
+ *
5
+ * Usage: MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
6
+ *
7
+ * min_range: The range of cells from which you want the minimum
8
+ * criteria_range1: The first range in which to evaluate criteria
9
+ * criteria1: The criteria to apply to criteria_range1
10
+ * criteria_range2, criteria2: Optional additional criteria pairs
11
+ *
12
+ * Examples:
13
+ * MINIFS(B1:B10, A1:A10, "Apple") - min of B1:B10 where A1:A10 = "Apple"
14
+ * MINIFS(C1:C10, A1:A10, "Apple", B1:B10, ">10") - min of C1:C10 where A1:A10 = "Apple" AND B1:B10 > 10
15
+ *
16
+ * Note:
17
+ * - All criteria must be satisfied for a value to be included
18
+ * - Only numeric values are considered for the minimum
19
+ * - Returns error if no values match all criteria
20
+ */
21
+ export declare const MINIFS: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * SUM function - Adds all numbers in the arguments
4
+ */
5
+ export declare const SUM: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * SUMIF function - Sums cells in a range that meet a criteria
4
+ *
5
+ * Usage: SUMIF(range, criteria, [sum_range])
6
+ *
7
+ * range: The range of cells to evaluate against the criteria
8
+ * criteria: The criteria to match against. Can be:
9
+ * - Exact value: "Apple", 42
10
+ * - Comparison: ">10", "<=5", "<>0"
11
+ * - Wildcards: "App*", "?ruit"
12
+ * sum_range: Optional. The range to sum. If omitted, uses the range parameter
13
+ *
14
+ * Examples:
15
+ * SUMIF(A1:A10, "Apple") - sums cells in A1:A10 that contain "Apple"
16
+ * SUMIF(B1:B10, ">10") - sums cells in B1:B10 with values greater than 10
17
+ * SUMIF(A1:A10, "Apple", B1:B10) - sums B1:B10 where A1:A10 contains "Apple"
18
+ *
19
+ * Note:
20
+ * - Only numeric values are included in the sum
21
+ * - Returns 0 if no values match the criteria
22
+ */
23
+ export declare const SUMIF: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * SUMIFS function - Sums cells in a range that meet multiple criteria
4
+ *
5
+ * Usage: SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
6
+ *
7
+ * sum_range: The range of cells to sum
8
+ * criteria_range1: The first range to evaluate against criteria1
9
+ * criteria1: The first criteria to match against
10
+ * criteria_range2, criteria2: Optional additional criteria pairs
11
+ *
12
+ * Examples:
13
+ * SUMIFS(B1:B10, A1:A10, "Apple") - sums B1:B10 where A1:A10 = "Apple"
14
+ * SUMIFS(C1:C10, A1:A10, "Apple", B1:B10, ">10") - sums C1:C10 where A1:A10 = "Apple" AND B1:B10 > 10
15
+ *
16
+ * Note:
17
+ * - All criteria must be satisfied for a value to be included
18
+ * - Only numeric values are included in the sum
19
+ * - Returns 0 if no values match all criteria (unlike other IFS functions that return error)
20
+ */
21
+ export declare const SUMIFS: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import { type FunctionEvaluationResult, type SingleEvaluationResult, type CellInfinity } from "src/core/types";
2
+ /**
3
+ * Result type for processInfinity in sum functions
4
+ */
5
+ export type ProcessInfinityResult<T> = {
6
+ type: "infinity";
7
+ infinity: CellInfinity;
8
+ } | {
9
+ type: "state";
10
+ state: T;
11
+ };
12
+ /**
13
+ * Perform summation with error propagation
14
+ * Used when errors should be propagated instead of skipped (e.g., SUM with direct error arguments)
15
+ *
16
+ * @param results - Iterator of SingleEvaluationResults to sum
17
+ * @returns FunctionEvaluationResult with the sum, infinity, or first error encountered
18
+ */
19
+ export declare function performSummation(results: Iterable<SingleEvaluationResult>): FunctionEvaluationResult;
@@ -0,0 +1,18 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * ADDRESS function - Creates a cell reference as text given row and column numbers
4
+ *
5
+ * Usage: ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text])
6
+ *
7
+ * row_num: The row number to use in the cell reference
8
+ * column_num: The column number to use in the cell reference
9
+ * abs_num: (optional) Type of reference to return (1=absolute, 2=absolute row/relative col, 3=relative row/absolute col, 4=relative)
10
+ * a1: (optional) A logical value that specifies the A1 or R1C1 reference style (TRUE or omitted = A1 style)
11
+ * sheet_text: (optional) The name of the worksheet to be used as the external reference
12
+ *
13
+ * Examples:
14
+ * - ADDRESS(2, 3) returns "$C$2"
15
+ * - ADDRESS(2, 3, 4) returns "C2"
16
+ * - ADDRESS(2, 3, 1, TRUE, "Sheet2") returns "Sheet2!$C$2"
17
+ */
18
+ export declare const ADDRESS: FunctionDefinition;
@@ -0,0 +1,20 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * INDIRECT function - Returns the reference specified by a text string
4
+ *
5
+ * Usage: INDIRECT(ref_text, [a1])
6
+ *
7
+ * ref_text: A reference to a cell that contains an A1-style reference, an R1C1-style reference,
8
+ * a name defined as a reference, or a reference to a cell as a text string
9
+ * a1: (optional) A logical value that specifies what type of reference is in ref_text
10
+ * TRUE or omitted = A1-style reference
11
+ * FALSE = R1C1-style reference
12
+ *
13
+ * Examples:
14
+ * - INDIRECT("A1") returns the value in cell A1
15
+ * - INDIRECT("B" & ROW()) returns the value in column B of the current row
16
+ * - INDIRECT("Sheet2!A1") returns the value in cell A1 of Sheet2
17
+ *
18
+ * Note: This function is volatile - it recalculates whenever the worksheet recalculates
19
+ */
20
+ export declare const INDIRECT: FunctionDefinition;
@@ -0,0 +1,23 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * OFFSET function - Returns a reference offset from a given reference
4
+ *
5
+ * Usage: OFFSET(reference, rows, cols, [height], [width])
6
+ *
7
+ * reference: The reference from which you want to base the offset
8
+ * rows: The number of rows, up or down, that you want the upper-left cell to refer to
9
+ * cols: The number of columns, left or right, that you want the upper-left cell to refer to
10
+ * height: (optional) The height, in number of rows, that you want the returned reference to be
11
+ * width: (optional) The width, in number of columns, that you want the returned reference to be
12
+ *
13
+ * Examples:
14
+ * - OFFSET(A1, 2, 3) returns the value in cell D3 (2 rows down, 3 columns right from A1)
15
+ * - OFFSET(A1, 0, 0, 3, 1) returns the range A1:A3
16
+ * - OFFSET(A1, 1, 1, 2, 2) returns the range B2:C3
17
+ *
18
+ * Notes:
19
+ * - If rows or cols offset reference from the edge of the worksheet, returns #REF! error
20
+ * - Height and width must be positive
21
+ * - If height or width is omitted, the same height or width as reference is used
22
+ */
23
+ export declare const OFFSET: FunctionDefinition;
@@ -0,0 +1,5 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * CONCATENATE function implementation
4
+ */
5
+ export declare const CONCATENATE: FunctionDefinition;
@@ -0,0 +1,5 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * EXACT function implementation
4
+ */
5
+ export declare const EXACT: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * FIND function - Finds one text string within another (case-sensitive)
4
+ *
5
+ * Usage: FIND(find_text, within_text, [start_num])
6
+ *
7
+ * find_text: The text you want to find.
8
+ * within_text: The text containing the text you want to find.
9
+ * start_num: [Optional] The character at which to start the search (default: 1).
10
+ *
11
+ * Example: FIND("World", "Hello World", 1) returns 7
12
+ *
13
+ * Note:
14
+ * - The search is case-sensitive
15
+ * - Returns the position of the first character of find_text within within_text
16
+ * - Returns #VALUE! error if text is not found
17
+ * - Supports dynamic arrays (spilled values) for find_text and within_text
18
+ * - Strict type checking: text arguments must be strings, start_num must be number
19
+ */
20
+ export declare const FIND: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * LEFT function - Returns the leftmost characters from a text string
4
+ *
5
+ * Usage: LEFT(text, num_chars)
6
+ *
7
+ * text: The text string to extract characters from.
8
+ * num_chars: The number of characters to extract from the left side of the text.
9
+ *
10
+ * Example: LEFT("Hello, World!", 5) returns "Hello"
11
+ *
12
+ * Note:
13
+ * - If num_chars is less than 0, the function returns an error.
14
+ * - If num_chars is greater than the length of text, the function returns the entire text.
15
+ * - Supports dynamic arrays (spilled values) for both arguments
16
+ * - Strict type checking: text must be string, num_chars must be number
17
+ * - Implemented as MID(text, 1, num_chars)
18
+ */
19
+ export declare const LEFT: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * LEN function - Returns the length of a text string
4
+ *
5
+ * Usage: LEN(text)
6
+ *
7
+ * text: The text string whose length you want to find.
8
+ *
9
+ * Example: LEN("Hello World") returns 11
10
+ *
11
+ * Note:
12
+ * - Supports dynamic arrays (spilled values) for the text argument
13
+ * - Strict type checking: text must be string
14
+ * - Returns the number of characters in the text string
15
+ */
16
+ export declare const LEN: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * MID function - Returns characters from the middle of a text string
4
+ *
5
+ * Usage: MID(text, start_num, num_chars)
6
+ *
7
+ * text: The text string to extract characters from.
8
+ * start_num: The position of the first character to extract (1-based).
9
+ * num_chars: The number of characters to extract.
10
+ *
11
+ * Example: MID("Hello, World!", 8, 5) returns "World"
12
+ *
13
+ * Note:
14
+ * - If start_num is less than 1, the function returns an error.
15
+ * - If num_chars is less than 0, the function returns an error.
16
+ * - If start_num is greater than the length of text, the function returns an empty string.
17
+ * - Supports dynamic arrays (spilled values) for all arguments
18
+ * - Strict type checking: text must be string, start_num and num_chars must be numbers
19
+ */
20
+ export declare const MID: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ export declare const RIGHT: FunctionDefinition;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ import { type CellString, type FunctionEvaluationResult, type ErrorEvaluationResult } from "src/core/types";
2
+ import type { FormulaEvaluator } from "src/evaluator/formula-evaluator";
3
+ import type { EvaluationContext } from "src/evaluator/evaluation-context";
4
+ /**
5
+ * Strictly extracts string value without type coercion
6
+ */
7
+ export declare function convertToString(result: FunctionEvaluationResult, context: EvaluationContext): string | ErrorEvaluationResult;
8
+ /**
9
+ * Strictly extracts numeric value without type coercion
10
+ */
11
+ export declare function extractNumericValue(result: FunctionEvaluationResult, context: EvaluationContext): number | ErrorEvaluationResult;
12
+ /**
13
+ * MID substring operation for MID function
14
+ */
15
+ export declare function midOperation(textResult: FunctionEvaluationResult, startNumResult: FunctionEvaluationResult, numCharsResult: FunctionEvaluationResult, context: EvaluationContext): {
16
+ type: "value";
17
+ result: CellString;
18
+ } | ErrorEvaluationResult;
19
+ /**
20
+ * Helper for creating spilled-values result for MID function (3 parameters)
21
+ */
22
+ export declare function createMidSpilledResult(this: FormulaEvaluator, { textResult, startNumResult, numCharsResult, context, }: {
23
+ textResult: FunctionEvaluationResult;
24
+ startNumResult: FunctionEvaluationResult;
25
+ numCharsResult: FunctionEvaluationResult;
26
+ context: EvaluationContext;
27
+ }): FunctionEvaluationResult;
@@ -0,0 +1,5 @@
1
+ import { type FunctionDefinition } from "src/core/types";
2
+ /**
3
+ * TEXTJOIN function implementation
4
+ */
5
+ export declare const TEXTJOIN: FunctionDefinition;