@ricsam/formula-engine 0.2.2 → 0.2.3

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 (337) hide show
  1. package/dist/cjs/core/ast-traverser.cjs +19 -9
  2. package/dist/cjs/core/ast-traverser.cjs.map +2 -2
  3. package/dist/cjs/core/autofill-utils.cjs +19 -9
  4. package/dist/cjs/core/autofill-utils.cjs.map +2 -2
  5. package/dist/cjs/core/cell-mover.cjs +19 -9
  6. package/dist/cjs/core/cell-mover.cjs.map +2 -2
  7. package/dist/cjs/core/commands/command-executor.cjs +24 -13
  8. package/dist/cjs/core/commands/command-executor.cjs.map +3 -3
  9. package/dist/cjs/core/commands/content-commands.cjs +292 -9
  10. package/dist/cjs/core/commands/content-commands.cjs.map +3 -3
  11. package/dist/cjs/core/commands/metadata-commands.cjs +19 -9
  12. package/dist/cjs/core/commands/metadata-commands.cjs.map +2 -2
  13. package/dist/cjs/core/commands/named-expression-commands.cjs +138 -13
  14. package/dist/cjs/core/commands/named-expression-commands.cjs.map +3 -3
  15. package/dist/cjs/core/commands/structure-commands.cjs +216 -15
  16. package/dist/cjs/core/commands/structure-commands.cjs.map +3 -3
  17. package/dist/cjs/core/commands/style-commands.cjs +19 -9
  18. package/dist/cjs/core/commands/style-commands.cjs.map +2 -2
  19. package/dist/cjs/core/commands/table-commands.cjs +134 -13
  20. package/dist/cjs/core/commands/table-commands.cjs.map +3 -3
  21. package/dist/cjs/core/commands/types.cjs +36 -9
  22. package/dist/cjs/core/commands/types.cjs.map +3 -3
  23. package/dist/cjs/core/engine-snapshot.cjs +51 -0
  24. package/dist/cjs/core/engine-snapshot.cjs.map +10 -0
  25. package/dist/cjs/core/engine.cjs +51 -34
  26. package/dist/cjs/core/engine.cjs.map +3 -3
  27. package/dist/cjs/core/managers/cache-manager.cjs +123 -9
  28. package/dist/cjs/core/managers/cache-manager.cjs.map +3 -3
  29. package/dist/cjs/core/managers/copy-manager.cjs +19 -9
  30. package/dist/cjs/core/managers/copy-manager.cjs.map +2 -2
  31. package/dist/cjs/core/managers/dependency-manager.cjs +697 -9
  32. package/dist/cjs/core/managers/dependency-manager.cjs.map +3 -3
  33. package/dist/cjs/core/managers/dependency-node.cjs +14 -8
  34. package/dist/cjs/core/managers/dependency-node.cjs.map +1 -1
  35. package/dist/cjs/core/managers/evaluation-manager.cjs +296 -11
  36. package/dist/cjs/core/managers/evaluation-manager.cjs.map +3 -3
  37. package/dist/cjs/core/managers/event-manager.cjs +19 -9
  38. package/dist/cjs/core/managers/event-manager.cjs.map +2 -2
  39. package/dist/cjs/core/managers/frontier-dependency-manager.cjs +65 -12
  40. package/dist/cjs/core/managers/frontier-dependency-manager.cjs.map +3 -3
  41. package/dist/cjs/core/managers/isDependencyNode.cjs +19 -9
  42. package/dist/cjs/core/managers/isDependencyNode.cjs.map +2 -2
  43. package/dist/cjs/core/managers/named-expression-manager.cjs +121 -29
  44. package/dist/cjs/core/managers/named-expression-manager.cjs.map +3 -3
  45. package/dist/cjs/core/managers/range-eval-order-builder.cjs +19 -9
  46. package/dist/cjs/core/managers/range-eval-order-builder.cjs.map +2 -2
  47. package/dist/cjs/core/managers/reference-manager.cjs +25 -9
  48. package/dist/cjs/core/managers/reference-manager.cjs.map +3 -3
  49. package/dist/cjs/core/managers/schema-manager.cjs +19 -9
  50. package/dist/cjs/core/managers/schema-manager.cjs.map +2 -2
  51. package/dist/cjs/core/managers/style-manager.cjs +28 -9
  52. package/dist/cjs/core/managers/style-manager.cjs.map +3 -3
  53. package/dist/cjs/core/managers/table-manager.cjs +25 -9
  54. package/dist/cjs/core/managers/table-manager.cjs.map +3 -3
  55. package/dist/cjs/core/managers/workbook-manager.cjs +38 -13
  56. package/dist/cjs/core/managers/workbook-manager.cjs.map +3 -3
  57. package/dist/cjs/core/map-serializer.cjs +19 -9
  58. package/dist/cjs/core/map-serializer.cjs.map +2 -2
  59. package/dist/cjs/core/named-expression-renamer.cjs +19 -9
  60. package/dist/cjs/core/named-expression-renamer.cjs.map +2 -2
  61. package/dist/cjs/core/resource-keys.cjs +67 -0
  62. package/dist/cjs/core/resource-keys.cjs.map +10 -0
  63. package/dist/cjs/core/schema/cell-orm.cjs +19 -9
  64. package/dist/cjs/core/schema/cell-orm.cjs.map +2 -2
  65. package/dist/cjs/core/schema/grid-orm.cjs +19 -9
  66. package/dist/cjs/core/schema/grid-orm.cjs.map +2 -2
  67. package/dist/cjs/core/schema/schema-builder.cjs +19 -9
  68. package/dist/cjs/core/schema/schema-builder.cjs.map +2 -2
  69. package/dist/cjs/core/schema/schema-helpers.cjs +19 -9
  70. package/dist/cjs/core/schema/schema-helpers.cjs.map +2 -2
  71. package/dist/cjs/core/schema/schema.cjs +19 -9
  72. package/dist/cjs/core/schema/schema.cjs.map +2 -2
  73. package/dist/cjs/core/schema/table-orm.cjs +19 -9
  74. package/dist/cjs/core/schema/table-orm.cjs.map +2 -2
  75. package/dist/cjs/core/sheet-renamer.cjs +19 -9
  76. package/dist/cjs/core/sheet-renamer.cjs.map +2 -2
  77. package/dist/cjs/core/sheet-utils.cjs +19 -9
  78. package/dist/cjs/core/sheet-utils.cjs.map +2 -2
  79. package/dist/cjs/core/table-renamer.cjs +19 -9
  80. package/dist/cjs/core/table-renamer.cjs.map +2 -2
  81. package/dist/cjs/core/types.cjs +19 -9
  82. package/dist/cjs/core/types.cjs.map +2 -2
  83. package/dist/cjs/core/utils/color-utils.cjs +19 -9
  84. package/dist/cjs/core/utils/color-utils.cjs.map +2 -2
  85. package/dist/cjs/core/utils/range-serializer.cjs +19 -9
  86. package/dist/cjs/core/utils/range-serializer.cjs.map +2 -2
  87. package/dist/cjs/core/utils/range-utils.cjs +19 -9
  88. package/dist/cjs/core/utils/range-utils.cjs.map +2 -2
  89. package/dist/cjs/core/utils/spreadsheet-visualizer.cjs +19 -9
  90. package/dist/cjs/core/utils/spreadsheet-visualizer.cjs.map +2 -2
  91. package/dist/cjs/core/utils.cjs +19 -9
  92. package/dist/cjs/core/utils.cjs.map +2 -2
  93. package/dist/cjs/core/workbook-renamer.cjs +19 -9
  94. package/dist/cjs/core/workbook-renamer.cjs.map +2 -2
  95. package/dist/cjs/debug/flags.cjs +19 -9
  96. package/dist/cjs/debug/flags.cjs.map +2 -2
  97. package/dist/cjs/evaluator/arithmetic/add/add.cjs +19 -9
  98. package/dist/cjs/evaluator/arithmetic/add/add.cjs.map +2 -2
  99. package/dist/cjs/evaluator/arithmetic/divide/divide.cjs +19 -9
  100. package/dist/cjs/evaluator/arithmetic/divide/divide.cjs.map +2 -2
  101. package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs +19 -9
  102. package/dist/cjs/evaluator/arithmetic/multiply/multiply.cjs.map +2 -2
  103. package/dist/cjs/evaluator/arithmetic/power/power.cjs +19 -9
  104. package/dist/cjs/evaluator/arithmetic/power/power.cjs.map +2 -2
  105. package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs +19 -9
  106. package/dist/cjs/evaluator/arithmetic/subtract/subtract.cjs.map +2 -2
  107. package/dist/cjs/evaluator/comparison/equals.cjs +19 -9
  108. package/dist/cjs/evaluator/comparison/equals.cjs.map +2 -2
  109. package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs +19 -9
  110. package/dist/cjs/evaluator/comparison/greater-than-or-equal.cjs.map +2 -2
  111. package/dist/cjs/evaluator/comparison/greater-than.cjs +19 -9
  112. package/dist/cjs/evaluator/comparison/greater-than.cjs.map +2 -2
  113. package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs +19 -9
  114. package/dist/cjs/evaluator/comparison/less-than-or-equal.cjs.map +2 -2
  115. package/dist/cjs/evaluator/comparison/less-than.cjs +19 -9
  116. package/dist/cjs/evaluator/comparison/less-than.cjs.map +2 -2
  117. package/dist/cjs/evaluator/comparison/not-equals.cjs +19 -9
  118. package/dist/cjs/evaluator/comparison/not-equals.cjs.map +2 -2
  119. package/dist/cjs/evaluator/concatenation/concatenate.cjs +19 -9
  120. package/dist/cjs/evaluator/concatenation/concatenate.cjs.map +2 -2
  121. package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs +19 -9
  122. package/dist/cjs/evaluator/dependency-nodes/ast-evaluation-node.cjs.map +2 -2
  123. package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs +35 -9
  124. package/dist/cjs/evaluator/dependency-nodes/base-eval-node.cjs.map +3 -3
  125. package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs +22 -9
  126. package/dist/cjs/evaluator/dependency-nodes/cell-value-node.cjs.map +3 -3
  127. package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs +35 -11
  128. package/dist/cjs/evaluator/dependency-nodes/empty-cell-evaluation-node.cjs.map +3 -3
  129. package/dist/cjs/evaluator/dependency-nodes/resource-dependency-node.cjs +61 -0
  130. package/dist/cjs/evaluator/dependency-nodes/resource-dependency-node.cjs.map +10 -0
  131. package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs +19 -9
  132. package/dist/cjs/evaluator/dependency-nodes/spill-meta-node.cjs.map +2 -2
  133. package/dist/cjs/evaluator/dependency-nodes/virtual-cell-value-node.cjs +22 -9
  134. package/dist/cjs/evaluator/dependency-nodes/virtual-cell-value-node.cjs.map +3 -3
  135. package/dist/cjs/evaluator/evaluate-scalar-operator.cjs +19 -9
  136. package/dist/cjs/evaluator/evaluate-scalar-operator.cjs.map +2 -2
  137. package/dist/cjs/evaluator/evaluation-context.cjs +19 -9
  138. package/dist/cjs/evaluator/evaluation-context.cjs.map +2 -2
  139. package/dist/cjs/evaluator/evaluation-error.cjs +19 -9
  140. package/dist/cjs/evaluator/evaluation-error.cjs.map +2 -2
  141. package/dist/cjs/evaluator/formula-evaluator.cjs +55 -12
  142. package/dist/cjs/evaluator/formula-evaluator.cjs.map +3 -3
  143. package/dist/cjs/evaluator/range-evaluation-node.cjs +35 -11
  144. package/dist/cjs/evaluator/range-evaluation-node.cjs.map +3 -3
  145. package/dist/cjs/functions/_template/template.cjs +19 -9
  146. package/dist/cjs/functions/_template/template.cjs.map +2 -2
  147. package/dist/cjs/functions/array/sequence/sequence.cjs +19 -9
  148. package/dist/cjs/functions/array/sequence/sequence.cjs.map +2 -2
  149. package/dist/cjs/functions/criteria-parser.cjs +19 -9
  150. package/dist/cjs/functions/criteria-parser.cjs.map +2 -2
  151. package/dist/cjs/functions/criteria-utils.cjs +19 -9
  152. package/dist/cjs/functions/criteria-utils.cjs.map +2 -2
  153. package/dist/cjs/functions/function-registry.cjs +19 -9
  154. package/dist/cjs/functions/function-registry.cjs.map +2 -2
  155. package/dist/cjs/functions/function-utils.cjs +19 -9
  156. package/dist/cjs/functions/function-utils.cjs.map +2 -2
  157. package/dist/cjs/functions/information/cell/cell.cjs +19 -9
  158. package/dist/cjs/functions/information/cell/cell.cjs.map +2 -2
  159. package/dist/cjs/functions/information/column/column.cjs +19 -9
  160. package/dist/cjs/functions/information/column/column.cjs.map +2 -2
  161. package/dist/cjs/functions/information/row/row.cjs +19 -9
  162. package/dist/cjs/functions/information/row/row.cjs.map +2 -2
  163. package/dist/cjs/functions/logical/and/and.cjs +19 -9
  164. package/dist/cjs/functions/logical/and/and.cjs.map +2 -2
  165. package/dist/cjs/functions/logical/if/if.cjs +19 -9
  166. package/dist/cjs/functions/logical/if/if.cjs.map +2 -2
  167. package/dist/cjs/functions/logical/iferror/iferror.cjs +19 -9
  168. package/dist/cjs/functions/logical/iferror/iferror.cjs.map +2 -2
  169. package/dist/cjs/functions/logical/or/or.cjs +19 -9
  170. package/dist/cjs/functions/logical/or/or.cjs.map +2 -2
  171. package/dist/cjs/functions/lookup/count/count-utils.cjs +19 -9
  172. package/dist/cjs/functions/lookup/count/count-utils.cjs.map +2 -2
  173. package/dist/cjs/functions/lookup/count/count.cjs +19 -9
  174. package/dist/cjs/functions/lookup/count/count.cjs.map +2 -2
  175. package/dist/cjs/functions/lookup/count/countif.cjs +19 -9
  176. package/dist/cjs/functions/lookup/count/countif.cjs.map +2 -2
  177. package/dist/cjs/functions/lookup/count/countifs.cjs +19 -9
  178. package/dist/cjs/functions/lookup/count/countifs.cjs.map +2 -2
  179. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs +19 -9
  180. package/dist/cjs/functions/lookup/index-lookup/index-lookup.cjs.map +2 -2
  181. package/dist/cjs/functions/lookup/match/match.cjs +21 -10
  182. package/dist/cjs/functions/lookup/match/match.cjs.map +3 -3
  183. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs +19 -9
  184. package/dist/cjs/functions/lookup/xlookup/xlookup.cjs.map +2 -2
  185. package/dist/cjs/functions/math/average/average-utils.cjs +19 -9
  186. package/dist/cjs/functions/math/average/average-utils.cjs.map +2 -2
  187. package/dist/cjs/functions/math/average/average.cjs +19 -9
  188. package/dist/cjs/functions/math/average/average.cjs.map +2 -2
  189. package/dist/cjs/functions/math/average/averageif.cjs +19 -9
  190. package/dist/cjs/functions/math/average/averageif.cjs.map +2 -2
  191. package/dist/cjs/functions/math/average/averageifs.cjs +19 -9
  192. package/dist/cjs/functions/math/average/averageifs.cjs.map +2 -2
  193. package/dist/cjs/functions/math/ceiling/ceiling.cjs +19 -9
  194. package/dist/cjs/functions/math/ceiling/ceiling.cjs.map +2 -2
  195. package/dist/cjs/functions/math/max/max-utils.cjs +19 -9
  196. package/dist/cjs/functions/math/max/max-utils.cjs.map +2 -2
  197. package/dist/cjs/functions/math/max/max.cjs +19 -9
  198. package/dist/cjs/functions/math/max/max.cjs.map +2 -2
  199. package/dist/cjs/functions/math/max/maxif.cjs +19 -9
  200. package/dist/cjs/functions/math/max/maxif.cjs.map +2 -2
  201. package/dist/cjs/functions/math/max/maxifs.cjs +19 -9
  202. package/dist/cjs/functions/math/max/maxifs.cjs.map +2 -2
  203. package/dist/cjs/functions/math/min/min-utils.cjs +19 -9
  204. package/dist/cjs/functions/math/min/min-utils.cjs.map +2 -2
  205. package/dist/cjs/functions/math/min/min.cjs +19 -9
  206. package/dist/cjs/functions/math/min/min.cjs.map +2 -2
  207. package/dist/cjs/functions/math/min/minif.cjs +19 -9
  208. package/dist/cjs/functions/math/min/minif.cjs.map +2 -2
  209. package/dist/cjs/functions/math/min/minifs.cjs +19 -9
  210. package/dist/cjs/functions/math/min/minifs.cjs.map +2 -2
  211. package/dist/cjs/functions/math/sum/sum.cjs +19 -9
  212. package/dist/cjs/functions/math/sum/sum.cjs.map +2 -2
  213. package/dist/cjs/functions/math/sum/sumif.cjs +19 -9
  214. package/dist/cjs/functions/math/sum/sumif.cjs.map +2 -2
  215. package/dist/cjs/functions/math/sum/sumifs.cjs +19 -9
  216. package/dist/cjs/functions/math/sum/sumifs.cjs.map +2 -2
  217. package/dist/cjs/functions/math/sum/summation-utils.cjs +19 -9
  218. package/dist/cjs/functions/math/sum/summation-utils.cjs.map +2 -2
  219. package/dist/cjs/functions/reference/address/address.cjs +19 -9
  220. package/dist/cjs/functions/reference/address/address.cjs.map +2 -2
  221. package/dist/cjs/functions/reference/indirect/indirect.cjs +19 -9
  222. package/dist/cjs/functions/reference/indirect/indirect.cjs.map +2 -2
  223. package/dist/cjs/functions/reference/offset/offset.cjs +19 -9
  224. package/dist/cjs/functions/reference/offset/offset.cjs.map +2 -2
  225. package/dist/cjs/functions/text/concatenate/concatenate.cjs +21 -9
  226. package/dist/cjs/functions/text/concatenate/concatenate.cjs.map +3 -3
  227. package/dist/cjs/functions/text/exact/exact.cjs +19 -9
  228. package/dist/cjs/functions/text/exact/exact.cjs.map +2 -2
  229. package/dist/cjs/functions/text/find/find.cjs +19 -9
  230. package/dist/cjs/functions/text/find/find.cjs.map +2 -2
  231. package/dist/cjs/functions/text/left/left.cjs +19 -9
  232. package/dist/cjs/functions/text/left/left.cjs.map +2 -2
  233. package/dist/cjs/functions/text/len/len.cjs +19 -9
  234. package/dist/cjs/functions/text/len/len.cjs.map +2 -2
  235. package/dist/cjs/functions/text/mid/mid.cjs +19 -9
  236. package/dist/cjs/functions/text/mid/mid.cjs.map +2 -2
  237. package/dist/cjs/functions/text/right/right.cjs +19 -9
  238. package/dist/cjs/functions/text/right/right.cjs.map +2 -2
  239. package/dist/cjs/functions/text/text-helpers.cjs +19 -9
  240. package/dist/cjs/functions/text/text-helpers.cjs.map +2 -2
  241. package/dist/cjs/functions/text/textjoin/textjoin.cjs +19 -9
  242. package/dist/cjs/functions/text/textjoin/textjoin.cjs.map +2 -2
  243. package/dist/cjs/lib.cjs +24 -13
  244. package/dist/cjs/lib.cjs.map +2 -2
  245. package/dist/cjs/package.json +1 -1
  246. package/dist/cjs/parser/ast.cjs +19 -9
  247. package/dist/cjs/parser/ast.cjs.map +2 -2
  248. package/dist/cjs/parser/formatter.cjs +19 -9
  249. package/dist/cjs/parser/formatter.cjs.map +2 -2
  250. package/dist/cjs/parser/grammar.cjs +19 -9
  251. package/dist/cjs/parser/grammar.cjs.map +2 -2
  252. package/dist/cjs/parser/lexer.cjs +19 -9
  253. package/dist/cjs/parser/lexer.cjs.map +2 -2
  254. package/dist/cjs/parser/parser.cjs +19 -9
  255. package/dist/cjs/parser/parser.cjs.map +2 -2
  256. package/dist/cjs/react/hooks.cjs +31 -10
  257. package/dist/cjs/react/hooks.cjs.map +2 -2
  258. package/dist/mjs/core/commands/command-executor.mjs +7 -5
  259. package/dist/mjs/core/commands/command-executor.mjs.map +3 -3
  260. package/dist/mjs/core/commands/content-commands.mjs +279 -2
  261. package/dist/mjs/core/commands/content-commands.mjs.map +3 -3
  262. package/dist/mjs/core/commands/named-expression-commands.mjs +121 -6
  263. package/dist/mjs/core/commands/named-expression-commands.mjs.map +3 -3
  264. package/dist/mjs/core/commands/structure-commands.mjs +204 -8
  265. package/dist/mjs/core/commands/structure-commands.mjs.map +3 -3
  266. package/dist/mjs/core/commands/table-commands.mjs +117 -6
  267. package/dist/mjs/core/commands/table-commands.mjs.map +3 -3
  268. package/dist/mjs/core/commands/types.mjs +18 -1
  269. package/dist/mjs/core/commands/types.mjs.map +3 -3
  270. package/dist/mjs/core/engine-snapshot.mjs +11 -0
  271. package/dist/mjs/core/engine-snapshot.mjs.map +10 -0
  272. package/dist/mjs/core/engine.mjs +35 -26
  273. package/dist/mjs/core/engine.mjs.map +3 -3
  274. package/dist/mjs/core/managers/cache-manager.mjs +105 -1
  275. package/dist/mjs/core/managers/cache-manager.mjs.map +3 -3
  276. package/dist/mjs/core/managers/dependency-manager.mjs +687 -2
  277. package/dist/mjs/core/managers/dependency-manager.mjs.map +3 -3
  278. package/dist/mjs/core/managers/evaluation-manager.mjs +283 -4
  279. package/dist/mjs/core/managers/evaluation-manager.mjs.map +3 -3
  280. package/dist/mjs/core/managers/frontier-dependency-manager.mjs +47 -4
  281. package/dist/mjs/core/managers/frontier-dependency-manager.mjs.map +3 -3
  282. package/dist/mjs/core/managers/named-expression-manager.mjs +104 -21
  283. package/dist/mjs/core/managers/named-expression-manager.mjs.map +3 -3
  284. package/dist/mjs/core/managers/reference-manager.mjs +7 -1
  285. package/dist/mjs/core/managers/reference-manager.mjs.map +3 -3
  286. package/dist/mjs/core/managers/style-manager.mjs +10 -1
  287. package/dist/mjs/core/managers/style-manager.mjs.map +3 -3
  288. package/dist/mjs/core/managers/table-manager.mjs +7 -1
  289. package/dist/mjs/core/managers/table-manager.mjs.map +3 -3
  290. package/dist/mjs/core/managers/workbook-manager.mjs +20 -5
  291. package/dist/mjs/core/managers/workbook-manager.mjs.map +3 -3
  292. package/dist/mjs/core/resource-keys.mjs +27 -0
  293. package/dist/mjs/core/resource-keys.mjs.map +10 -0
  294. package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs +17 -1
  295. package/dist/mjs/evaluator/dependency-nodes/base-eval-node.mjs.map +3 -3
  296. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs +4 -1
  297. package/dist/mjs/evaluator/dependency-nodes/cell-value-node.mjs.map +3 -3
  298. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs +17 -3
  299. package/dist/mjs/evaluator/dependency-nodes/empty-cell-evaluation-node.mjs.map +3 -3
  300. package/dist/mjs/evaluator/dependency-nodes/resource-dependency-node.mjs +21 -0
  301. package/dist/mjs/evaluator/dependency-nodes/resource-dependency-node.mjs.map +10 -0
  302. package/dist/mjs/evaluator/dependency-nodes/virtual-cell-value-node.mjs +4 -1
  303. package/dist/mjs/evaluator/dependency-nodes/virtual-cell-value-node.mjs.map +3 -3
  304. package/dist/mjs/evaluator/formula-evaluator.mjs +42 -4
  305. package/dist/mjs/evaluator/formula-evaluator.mjs.map +3 -3
  306. package/dist/mjs/evaluator/range-evaluation-node.mjs +17 -3
  307. package/dist/mjs/evaluator/range-evaluation-node.mjs.map +3 -3
  308. package/dist/mjs/functions/lookup/match/match.mjs +3 -2
  309. package/dist/mjs/functions/lookup/match/match.mjs.map +3 -3
  310. package/dist/mjs/functions/text/concatenate/concatenate.mjs +3 -1
  311. package/dist/mjs/functions/text/concatenate/concatenate.mjs.map +3 -3
  312. package/dist/mjs/package.json +1 -1
  313. package/dist/types/core/commands/content-commands.d.ts +31 -1
  314. package/dist/types/core/commands/named-expression-commands.d.ts +16 -1
  315. package/dist/types/core/commands/structure-commands.d.ts +24 -1
  316. package/dist/types/core/commands/table-commands.d.ts +16 -1
  317. package/dist/types/core/commands/types.d.ts +25 -1
  318. package/dist/types/core/engine-snapshot.d.ts +138 -0
  319. package/dist/types/core/engine.d.ts +1 -0
  320. package/dist/types/core/managers/cache-manager.d.ts +9 -0
  321. package/dist/types/core/managers/dependency-manager.d.ts +56 -1
  322. package/dist/types/core/managers/dependency-node.d.ts +2 -1
  323. package/dist/types/core/managers/evaluation-manager.d.ts +21 -1
  324. package/dist/types/core/managers/frontier-dependency-manager.d.ts +12 -2
  325. package/dist/types/core/managers/named-expression-manager.d.ts +17 -1
  326. package/dist/types/core/managers/reference-manager.d.ts +3 -0
  327. package/dist/types/core/managers/style-manager.d.ts +3 -0
  328. package/dist/types/core/managers/table-manager.d.ts +3 -0
  329. package/dist/types/core/managers/workbook-manager.d.ts +4 -1
  330. package/dist/types/core/resource-keys.d.ts +14 -0
  331. package/dist/types/evaluator/dependency-nodes/base-eval-node.d.ts +5 -0
  332. package/dist/types/evaluator/dependency-nodes/cell-value-node.d.ts +1 -0
  333. package/dist/types/evaluator/dependency-nodes/empty-cell-evaluation-node.d.ts +8 -1
  334. package/dist/types/evaluator/dependency-nodes/resource-dependency-node.d.ts +8 -0
  335. package/dist/types/evaluator/dependency-nodes/virtual-cell-value-node.d.ts +1 -0
  336. package/dist/types/evaluator/range-evaluation-node.d.ts +8 -1
  337. package/package.json +6 -2
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
6
8
  var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
8
10
  if (entry)
9
11
  return entry;
10
12
  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
- }));
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
16
21
  __moduleCache.set(from, entry);
17
22
  return entry;
18
23
  };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
19
29
  var __export = (target, all) => {
20
30
  for (var name in all)
21
31
  __defProp(target, name, {
22
32
  get: all[name],
23
33
  enumerable: true,
24
34
  configurable: true,
25
- set: (newValue) => all[name] = () => newValue
35
+ set: __exportSetter.bind(all, name)
26
36
  });
27
37
  };
28
38
 
@@ -44,6 +54,7 @@ var import_utils = require("../utils.cjs");
44
54
  var import_spill_meta_node = require("../../evaluator/dependency-nodes/spill-meta-node.cjs");
45
55
  var import_empty_cell_evaluation_node = require("../../evaluator/dependency-nodes/empty-cell-evaluation-node.cjs");
46
56
  var import_virtual_cell_value_node = require("../../evaluator/dependency-nodes/virtual-cell-value-node.cjs");
57
+ var import_resource_dependency_node = require("../../evaluator/dependency-nodes/resource-dependency-node.cjs");
47
58
 
48
59
  class EvaluationManager {
49
60
  workbookManager;
@@ -60,6 +71,9 @@ class EvaluationManager {
60
71
  clearEvaluationCache() {
61
72
  this.dependencyManager.clearEvaluationCache();
62
73
  }
74
+ invalidateFromMutation(footprint) {
75
+ this.dependencyManager.invalidateFromMutation(footprint);
76
+ }
63
77
  evaluationResultToSerializedValue(evaluation, cellAddress, debug) {
64
78
  if (evaluation.type !== "error" && evaluation.type !== "awaiting-evaluation") {
65
79
  const value = evaluation.result;
@@ -77,14 +91,250 @@ class EvaluationManager {
77
91
  }
78
92
  return evaluation.err;
79
93
  }
94
+ buildSnapshotOrigin(node) {
95
+ if ("cellAddress" in node) {
96
+ return node.cellAddress;
97
+ }
98
+ const contextDependency = node.getContextDependency();
99
+ return {
100
+ workbookName: contextDependency.workbookName ?? "__snapshot__",
101
+ sheetName: contextDependency.sheetName ?? "__snapshot__",
102
+ colIndex: contextDependency.colIndex ?? 0,
103
+ rowIndex: contextDependency.rowIndex ?? 0
104
+ };
105
+ }
106
+ serializeErrorEvaluationResultSnapshot(evaluation, getNodeSnapshotId) {
107
+ return {
108
+ type: "error",
109
+ err: evaluation.err,
110
+ message: evaluation.message,
111
+ errAddressId: getNodeSnapshotId(evaluation.errAddress),
112
+ sourceCell: evaluation.sourceCell
113
+ };
114
+ }
115
+ serializeSingleEvaluationResultSnapshot(evaluation, getNodeSnapshotId) {
116
+ if (evaluation.type === "awaiting-evaluation") {
117
+ return;
118
+ }
119
+ if (evaluation.type === "error") {
120
+ return this.serializeErrorEvaluationResultSnapshot(evaluation, getNodeSnapshotId);
121
+ }
122
+ return {
123
+ type: "value",
124
+ result: evaluation.result,
125
+ sourceCell: evaluation.sourceCell
126
+ };
127
+ }
128
+ deserializeSingleEvaluationResultSnapshot(evaluation, resolveNodeSnapshotId) {
129
+ if (evaluation.type === "error") {
130
+ return {
131
+ type: "error",
132
+ err: evaluation.err,
133
+ message: evaluation.message,
134
+ errAddress: resolveNodeSnapshotId(evaluation.errAddressId),
135
+ sourceCell: evaluation.sourceCell
136
+ };
137
+ }
138
+ return {
139
+ type: "value",
140
+ result: evaluation.result,
141
+ sourceCell: evaluation.sourceCell
142
+ };
143
+ }
144
+ serializeEvaluateAllCellsResultSnapshot(evaluation, getNodeSnapshotId) {
145
+ if (evaluation.type === "awaiting-evaluation") {
146
+ return;
147
+ }
148
+ if (evaluation.type === "error") {
149
+ return this.serializeErrorEvaluationResultSnapshot(evaluation, getNodeSnapshotId);
150
+ }
151
+ const values = [];
152
+ for (const value of evaluation.values) {
153
+ const serialized = this.serializeSingleEvaluationResultSnapshot(value.result, getNodeSnapshotId);
154
+ if (!serialized) {
155
+ return;
156
+ }
157
+ values.push({
158
+ relativePos: value.relativePos,
159
+ result: serialized
160
+ });
161
+ }
162
+ return {
163
+ type: "values",
164
+ values
165
+ };
166
+ }
167
+ deserializeEvaluateAllCellsResultSnapshot(evaluation, resolveNodeSnapshotId) {
168
+ if (evaluation.type === "error") {
169
+ return this.deserializeSingleEvaluationResultSnapshot(evaluation, resolveNodeSnapshotId);
170
+ }
171
+ return {
172
+ type: "values",
173
+ values: evaluation.values.map((value) => ({
174
+ relativePos: value.relativePos,
175
+ result: this.deserializeSingleEvaluationResultSnapshot(value.result, resolveNodeSnapshotId)
176
+ }))
177
+ };
178
+ }
179
+ serializeFunctionEvaluationResultSnapshot(evaluation, options) {
180
+ if (evaluation.type !== "spilled-values") {
181
+ return this.serializeSingleEvaluationResultSnapshot(evaluation, options.getNodeSnapshotId);
182
+ }
183
+ const origin = this.buildSnapshotOrigin(options.sourceNode);
184
+ const spillArea = evaluation.spillArea(origin);
185
+ const relativeSpillArea = import_utils.getRelativeRange(spillArea, {
186
+ colIndex: origin.colIndex,
187
+ rowIndex: origin.rowIndex
188
+ });
189
+ if (evaluation.sourceRange) {
190
+ return {
191
+ type: "spilled-values",
192
+ spill: {
193
+ kind: "source-range",
194
+ relativeSpillArea,
195
+ source: evaluation.source,
196
+ sourceCell: evaluation.sourceCell,
197
+ sourceRange: evaluation.sourceRange
198
+ }
199
+ };
200
+ }
201
+ if (relativeSpillArea.width.type !== "number" || relativeSpillArea.height.type !== "number") {
202
+ return;
203
+ }
204
+ const context = new import_evaluation_context.EvaluationContext(this.tableManager, options.sourceNode, origin);
205
+ const values = [];
206
+ for (let y = 0;y < relativeSpillArea.height.value; y++) {
207
+ for (let x = 0;x < relativeSpillArea.width.value; x++) {
208
+ const result = import_utils.captureEvaluationErrors(options.sourceNode, () => evaluation.evaluate({ x, y }, context));
209
+ const serialized = this.serializeSingleEvaluationResultSnapshot(result, options.getNodeSnapshotId);
210
+ if (!serialized) {
211
+ return;
212
+ }
213
+ values.push({
214
+ relativePos: { x, y },
215
+ result: serialized
216
+ });
217
+ }
218
+ }
219
+ return {
220
+ type: "spilled-values",
221
+ spill: {
222
+ kind: "materialized",
223
+ relativeSpillArea,
224
+ source: evaluation.source,
225
+ sourceCell: evaluation.sourceCell,
226
+ sourceRange: evaluation.sourceRange,
227
+ values
228
+ }
229
+ };
230
+ }
231
+ deserializeFunctionEvaluationResultSnapshot(evaluation, resolveNodeSnapshotId) {
232
+ if (evaluation.type !== "spilled-values") {
233
+ return this.deserializeSingleEvaluationResultSnapshot(evaluation, resolveNodeSnapshotId);
234
+ }
235
+ const spillSnapshot = evaluation.spill;
236
+ if (spillSnapshot.kind === "materialized") {
237
+ const values = new Map(spillSnapshot.values.map((value) => [
238
+ `${value.relativePos.x},${value.relativePos.y}`,
239
+ this.deserializeSingleEvaluationResultSnapshot(value.result, resolveNodeSnapshotId)
240
+ ]));
241
+ return {
242
+ type: "spilled-values",
243
+ source: spillSnapshot.source,
244
+ sourceCell: spillSnapshot.sourceCell,
245
+ sourceRange: spillSnapshot.sourceRange,
246
+ spillArea: (origin) => import_utils.getAbsoluteRange(spillSnapshot.relativeSpillArea, {
247
+ colIndex: origin.colIndex,
248
+ rowIndex: origin.rowIndex
249
+ }),
250
+ evaluate: (spillOffset) => values.get(`${spillOffset.x},${spillOffset.y}`) ?? {
251
+ type: "value",
252
+ result: this.convertScalarValueToCellValue("")
253
+ },
254
+ evaluateAllCells: () => ({
255
+ type: "values",
256
+ values: spillSnapshot.values.map((value) => ({
257
+ relativePos: value.relativePos,
258
+ result: this.deserializeSingleEvaluationResultSnapshot(value.result, resolveNodeSnapshotId)
259
+ }))
260
+ })
261
+ };
262
+ }
263
+ return {
264
+ type: "spilled-values",
265
+ source: spillSnapshot.source,
266
+ sourceCell: spillSnapshot.sourceCell,
267
+ sourceRange: spillSnapshot.sourceRange,
268
+ spillArea: (origin) => import_utils.getAbsoluteRange(spillSnapshot.relativeSpillArea, {
269
+ colIndex: origin.colIndex,
270
+ rowIndex: origin.rowIndex
271
+ }),
272
+ evaluate: (spillOffset, context) => {
273
+ const cellAddress = {
274
+ workbookName: spillSnapshot.sourceRange.workbookName,
275
+ sheetName: spillSnapshot.sourceRange.sheetName,
276
+ colIndex: spillSnapshot.sourceRange.range.start.col + spillOffset.x,
277
+ rowIndex: spillSnapshot.sourceRange.range.start.row + spillOffset.y
278
+ };
279
+ const evalNode = this.dependencyManager.getCellValueOrEmptyCellNode(import_utils.cellAddressToKey(cellAddress));
280
+ context.dependencyNode.addDependency(evalNode);
281
+ return evalNode.evaluationResult;
282
+ },
283
+ evaluateAllCells: ({ intersection, context, origin }) => {
284
+ let range = spillSnapshot.sourceRange.range;
285
+ if (intersection) {
286
+ const relativeRange = import_utils.getRelativeRange(intersection, origin);
287
+ const projectedIntersection = import_utils.getAbsoluteRange(relativeRange, {
288
+ colIndex: spillSnapshot.sourceRange.range.start.col,
289
+ rowIndex: spillSnapshot.sourceRange.range.start.row
290
+ });
291
+ const nextRange = import_utils.getRangeIntersection(spillSnapshot.sourceRange.range, projectedIntersection);
292
+ if (nextRange) {
293
+ range = nextRange;
294
+ }
295
+ }
296
+ const rangeAddress = {
297
+ workbookName: spillSnapshot.sourceRange.workbookName,
298
+ sheetName: spillSnapshot.sourceRange.sheetName,
299
+ range
300
+ };
301
+ const rangeNode = this.dependencyManager.getRangeNode(import_utils.rangeAddressToKey(rangeAddress));
302
+ context.dependencyNode.addDependency(rangeNode);
303
+ return rangeNode.result;
304
+ }
305
+ };
306
+ }
307
+ serializeSpillMetaEvaluationResultSnapshot(evaluation, options) {
308
+ if (evaluation.type === "does-not-spill") {
309
+ return { type: "does-not-spill" };
310
+ }
311
+ if (evaluation.type === "error") {
312
+ return this.serializeErrorEvaluationResultSnapshot(evaluation, options.getNodeSnapshotId);
313
+ }
314
+ const serialized = this.serializeFunctionEvaluationResultSnapshot(evaluation, options);
315
+ if (!serialized || serialized.type !== "spilled-values") {
316
+ return;
317
+ }
318
+ return serialized;
319
+ }
320
+ deserializeSpillMetaEvaluationResultSnapshot(evaluation, resolveNodeSnapshotId) {
321
+ if (evaluation.type === "does-not-spill") {
322
+ return evaluation;
323
+ }
324
+ if (evaluation.type === "error") {
325
+ return this.deserializeSingleEvaluationResultSnapshot(evaluation, resolveNodeSnapshotId);
326
+ }
327
+ return this.deserializeFunctionEvaluationResultSnapshot(evaluation, resolveNodeSnapshotId);
328
+ }
80
329
  evaluateEmptyCell(node) {
81
- node.resetDirectDepsUpdated();
82
330
  if (node.resolved) {
83
331
  const result = node.evaluationResult;
84
332
  if (result && result.type !== "awaiting-evaluation") {
85
333
  return;
86
334
  }
87
335
  }
336
+ this.dependencyManager.unregisterNode(node);
337
+ node.resetDirectDepsUpdated();
88
338
  const ctx = new import_evaluation_context.EvaluationContext(this.tableManager, node, node.cellAddress);
89
339
  const inSpilled = this.dependencyManager.getSpillValue(node.cellAddress);
90
340
  if (inSpilled) {
@@ -107,11 +357,13 @@ class EvaluationManager {
107
357
  };
108
358
  node.setEvaluationResult(evaluationResult);
109
359
  }
360
+ this.dependencyManager.registerNode(node);
110
361
  }
111
362
  evaluateRangeNode(node) {
112
363
  if (node.resolved) {
113
364
  return;
114
365
  }
366
+ this.dependencyManager.unregisterNode(node);
115
367
  node.resetDirectDepsUpdated();
116
368
  const result = import_utils.captureEvaluationErrors(node, () => {
117
369
  node.upgradeFrontierDependencies();
@@ -175,11 +427,15 @@ class EvaluationManager {
175
427
  };
176
428
  });
177
429
  node.setResult(result);
430
+ this.dependencyManager.registerNode(node);
178
431
  }
179
432
  evaluateCellNode(node) {
180
433
  if (node.resolved) {
181
434
  return;
182
435
  }
436
+ if (!(node instanceof import_virtual_cell_value_node.VirtualCellValueNode)) {
437
+ this.dependencyManager.unregisterNode(node);
438
+ }
183
439
  node.resetDirectDepsUpdated();
184
440
  const ctx = new import_evaluation_context.EvaluationContext(this.tableManager, node, node.cellAddress);
185
441
  if (node instanceof import_cell_value_node.CellValueNode && node.spillMeta) {
@@ -187,6 +443,7 @@ class EvaluationManager {
187
443
  if (spillOrigin.evaluationResult.type === "spilled-values") {
188
444
  const result = spillOrigin.evaluationResult.evaluate({ x: 0, y: 0 }, ctx);
189
445
  node.setEvaluationResult(result);
446
+ this.dependencyManager.registerNode(node);
190
447
  return;
191
448
  }
192
449
  }
@@ -205,6 +462,9 @@ class EvaluationManager {
205
462
  errAddress: node
206
463
  };
207
464
  node.setEvaluationResult(evaluationResult);
465
+ if (!(node instanceof import_virtual_cell_value_node.VirtualCellValueNode)) {
466
+ this.dependencyManager.registerNode(node);
467
+ }
208
468
  return;
209
469
  }
210
470
  if (typeof content !== "string" || !content.startsWith("=")) {
@@ -212,6 +472,7 @@ class EvaluationManager {
212
472
  node.setEvaluationResult({
213
473
  type: "does-not-spill"
214
474
  });
475
+ this.dependencyManager.registerNode(node);
215
476
  return;
216
477
  }
217
478
  const result = {
@@ -219,6 +480,9 @@ class EvaluationManager {
219
480
  result: this.convertScalarValueToCellValue(content)
220
481
  };
221
482
  node.setEvaluationResult(result);
483
+ if (!(node instanceof import_virtual_cell_value_node.VirtualCellValueNode)) {
484
+ this.dependencyManager.registerNode(node);
485
+ }
222
486
  return;
223
487
  }
224
488
  let evaluation = import_utils.captureEvaluationErrors(node, () => this.formulaEvaluator.evaluateFormula(content.slice(1), ctx));
@@ -239,11 +503,13 @@ class EvaluationManager {
239
503
  }
240
504
  if (node instanceof import_spill_meta_node.SpillMetaNode) {
241
505
  node.setEvaluationResult(evaluation);
506
+ this.dependencyManager.registerNode(node);
242
507
  } else {
243
508
  const spillMetaNode = this.dependencyManager.getSpillMetaNode(node.key.replace(/^[^:]+:/, "spill-meta:"));
244
509
  node.addDependency(spillMetaNode);
245
510
  node.setSpillMetaNode(spillMetaNode);
246
511
  spillMetaNode.setEvaluationResult(evaluation);
512
+ this.dependencyManager.registerNode(spillMetaNode);
247
513
  if (evaluation.type === "spilled-values") {
248
514
  const originResult = evaluation.evaluate({ x: 0, y: 0 }, ctx);
249
515
  node.setEvaluationResult(originResult);
@@ -251,6 +517,9 @@ class EvaluationManager {
251
517
  node.setEvaluationResult(evaluation);
252
518
  }
253
519
  }
520
+ if (!(node instanceof import_virtual_cell_value_node.VirtualCellValueNode)) {
521
+ this.dependencyManager.registerNode(node);
522
+ }
254
523
  return;
255
524
  }
256
525
  if (evaluation.type === "value") {
@@ -258,13 +527,20 @@ class EvaluationManager {
258
527
  node.setEvaluationResult({
259
528
  type: "does-not-spill"
260
529
  });
530
+ this.dependencyManager.registerNode(node);
261
531
  return;
262
532
  } else {
263
533
  node.setEvaluationResult(evaluation);
534
+ if (!(node instanceof import_virtual_cell_value_node.VirtualCellValueNode)) {
535
+ this.dependencyManager.registerNode(node);
536
+ }
264
537
  return;
265
538
  }
266
539
  }
267
540
  node.setEvaluationResult(evaluation);
541
+ if (!(node instanceof import_virtual_cell_value_node.VirtualCellValueNode)) {
542
+ this.dependencyManager.registerNode(node);
543
+ }
268
544
  }
269
545
  evaluateDependencyNode(dependency) {
270
546
  if (dependency instanceof import_empty_cell_evaluation_node.EmptyCellEvaluationNode) {
@@ -282,6 +558,9 @@ class EvaluationManager {
282
558
  if (dependency instanceof import_ast_evaluation_node.AstEvaluationNode) {
283
559
  return;
284
560
  }
561
+ if (dependency instanceof import_resource_dependency_node.ResourceDependencyNode) {
562
+ return;
563
+ }
285
564
  if (dependency instanceof import_spill_meta_node.SpillMetaNode) {
286
565
  this.evaluateCellNode(dependency);
287
566
  return;
@@ -318,7 +597,7 @@ class EvaluationManager {
318
597
  };
319
598
  if (evaluationPlan.cycleNodes) {
320
599
  for (const node2 of evaluationPlan.cycleNodes) {
321
- if (!(node2 instanceof import_range_evaluation_node.RangeEvaluationNode)) {
600
+ if (!(node2 instanceof import_range_evaluation_node.RangeEvaluationNode) && !(node2 instanceof import_resource_dependency_node.ResourceDependencyNode)) {
322
601
  node2.setEvaluationResult(evaluationResult);
323
602
  }
324
603
  }
@@ -360,6 +639,12 @@ class EvaluationManager {
360
639
  this.isEvaluating = false;
361
640
  }
362
641
  convertScalarValueToCellValue(val) {
642
+ if (val === "INFINITY") {
643
+ return { type: "infinity", sign: "positive" };
644
+ }
645
+ if (val === "-INFINITY") {
646
+ return { type: "infinity", sign: "negative" };
647
+ }
363
648
  if (typeof val === "number") {
364
649
  return { type: "number", value: val };
365
650
  }
@@ -433,4 +718,4 @@ class EvaluationManager {
433
718
  }
434
719
  }
435
720
 
436
- //# debugId=5440BFA176AF38B564756E2164756E21
721
+ //# debugId=0C4138D8E8FF4A1064756E2164756E21