@einfach-excel/excel-core-ts 0.0.0-stage → 0.2.0

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 (653) hide show
  1. package/@types/deps.d.ts +120 -0
  2. package/@types/deps.d.ts.map +1 -0
  3. package/@types/eval/array-selectors.d.ts +30 -0
  4. package/@types/eval/array-selectors.d.ts.map +1 -0
  5. package/@types/eval/array-shape.d.ts +15 -0
  6. package/@types/eval/array-shape.d.ts.map +1 -0
  7. package/@types/eval/binary-ops.d.ts +14 -0
  8. package/@types/eval/binary-ops.d.ts.map +1 -0
  9. package/@types/eval/canonical-name.d.ts +8 -0
  10. package/@types/eval/canonical-name.d.ts.map +1 -0
  11. package/@types/eval/cell-address.d.ts +13 -0
  12. package/@types/eval/cell-address.d.ts.map +1 -0
  13. package/@types/eval/cell-info.d.ts +13 -0
  14. package/@types/eval/cell-info.d.ts.map +1 -0
  15. package/@types/eval/cell-read.d.ts +41 -0
  16. package/@types/eval/cell-read.d.ts.map +1 -0
  17. package/@types/eval/coerce.d.ts +78 -0
  18. package/@types/eval/coerce.d.ts.map +1 -0
  19. package/@types/eval/criteria-grammar.d.ts +91 -0
  20. package/@types/eval/criteria-grammar.d.ts.map +1 -0
  21. package/@types/eval/criteria-value-range.d.ts +45 -0
  22. package/@types/eval/criteria-value-range.d.ts.map +1 -0
  23. package/@types/eval/criteria-value-rect.d.ts +53 -0
  24. package/@types/eval/criteria-value-rect.d.ts.map +1 -0
  25. package/@types/eval/cycle-guard.d.ts +15 -0
  26. package/@types/eval/cycle-guard.d.ts.map +1 -0
  27. package/@types/eval/error-value.d.ts +12 -0
  28. package/@types/eval/error-value.d.ts.map +1 -0
  29. package/@types/eval/evaluate.d.ts +25 -0
  30. package/@types/eval/evaluate.d.ts.map +1 -0
  31. package/@types/eval/evaluator-array-operations.d.ts +20 -0
  32. package/@types/eval/evaluator-array-operations.d.ts.map +1 -0
  33. package/@types/eval/evaluator-call.d.ts +13 -0
  34. package/@types/eval/evaluator-call.d.ts.map +1 -0
  35. package/@types/eval/evaluator-control-flow.d.ts +18 -0
  36. package/@types/eval/evaluator-control-flow.d.ts.map +1 -0
  37. package/@types/eval/evaluator-expression.d.ts +27 -0
  38. package/@types/eval/evaluator-expression.d.ts.map +1 -0
  39. package/@types/eval/evaluator-reference-functions.d.ts +23 -0
  40. package/@types/eval/evaluator-reference-functions.d.ts.map +1 -0
  41. package/@types/eval/foreign-sheet.d.ts +26 -0
  42. package/@types/eval/foreign-sheet.d.ts.map +1 -0
  43. package/@types/eval/functions/_locale.d.ts +61 -0
  44. package/@types/eval/functions/_locale.d.ts.map +1 -0
  45. package/@types/eval/functions/array.d.ts +14 -0
  46. package/@types/eval/functions/array.d.ts.map +1 -0
  47. package/@types/eval/functions/database.d.ts +10 -0
  48. package/@types/eval/functions/database.d.ts.map +1 -0
  49. package/@types/eval/functions/date.d.ts +19 -0
  50. package/@types/eval/functions/date.d.ts.map +1 -0
  51. package/@types/eval/functions/engineering/base-conversions.d.ts +16 -0
  52. package/@types/eval/functions/engineering/base-conversions.d.ts.map +1 -0
  53. package/@types/eval/functions/engineering/bessel-evaluate.d.ts +4 -0
  54. package/@types/eval/functions/engineering/bessel-evaluate.d.ts.map +1 -0
  55. package/@types/eval/functions/engineering/bessel-ik.d.ts +6 -0
  56. package/@types/eval/functions/engineering/bessel-ik.d.ts.map +1 -0
  57. package/@types/eval/functions/engineering/bessel-jy.d.ts +8 -0
  58. package/@types/eval/functions/engineering/bessel-jy.d.ts.map +1 -0
  59. package/@types/eval/functions/engineering/bitwise.d.ts +13 -0
  60. package/@types/eval/functions/engineering/bitwise.d.ts.map +1 -0
  61. package/@types/eval/functions/engineering/complex-format.d.ts +28 -0
  62. package/@types/eval/functions/engineering/complex-format.d.ts.map +1 -0
  63. package/@types/eval/functions/engineering/complex-operations.d.ts +20 -0
  64. package/@types/eval/functions/engineering/complex-operations.d.ts.map +1 -0
  65. package/@types/eval/functions/engineering/complex-trigonometry.d.ts +14 -0
  66. package/@types/eval/functions/engineering/complex-trigonometry.d.ts.map +1 -0
  67. package/@types/eval/functions/engineering/erf.d.ts +8 -0
  68. package/@types/eval/functions/engineering/erf.d.ts.map +1 -0
  69. package/@types/eval/functions/engineering/index.d.ts +12 -0
  70. package/@types/eval/functions/engineering/index.d.ts.map +1 -0
  71. package/@types/eval/functions/engineering/shared.d.ts +5 -0
  72. package/@types/eval/functions/engineering/shared.d.ts.map +1 -0
  73. package/@types/eval/functions/engineering/units.d.ts +5 -0
  74. package/@types/eval/functions/engineering/units.d.ts.map +1 -0
  75. package/@types/eval/functions/financial/amortization.d.ts +9 -0
  76. package/@types/eval/functions/financial/amortization.d.ts.map +1 -0
  77. package/@types/eval/functions/financial/bond-calendar.d.ts +51 -0
  78. package/@types/eval/functions/financial/bond-calendar.d.ts.map +1 -0
  79. package/@types/eval/functions/financial/bond-pricing.d.ts +10 -0
  80. package/@types/eval/functions/financial/bond-pricing.d.ts.map +1 -0
  81. package/@types/eval/functions/financial/bond-primitives.d.ts +15 -0
  82. package/@types/eval/functions/financial/bond-primitives.d.ts.map +1 -0
  83. package/@types/eval/functions/financial/cashflow-returns.d.ts +19 -0
  84. package/@types/eval/functions/financial/cashflow-returns.d.ts.map +1 -0
  85. package/@types/eval/functions/financial/cashflow-schedules.d.ts +29 -0
  86. package/@types/eval/functions/financial/cashflow-schedules.d.ts.map +1 -0
  87. package/@types/eval/functions/financial/coupon-schedule.d.ts +8 -0
  88. package/@types/eval/functions/financial/coupon-schedule.d.ts.map +1 -0
  89. package/@types/eval/functions/financial/depreciation.d.ts +8 -0
  90. package/@types/eval/functions/financial/depreciation.d.ts.map +1 -0
  91. package/@types/eval/functions/financial/discount-securities.d.ts +12 -0
  92. package/@types/eval/functions/financial/discount-securities.d.ts.map +1 -0
  93. package/@types/eval/functions/financial/index.d.ts +15 -0
  94. package/@types/eval/functions/financial/index.d.ts.map +1 -0
  95. package/@types/eval/functions/financial/odd-first-bonds.d.ts +7 -0
  96. package/@types/eval/functions/financial/odd-first-bonds.d.ts.map +1 -0
  97. package/@types/eval/functions/financial/odd-last-bonds.d.ts +5 -0
  98. package/@types/eval/functions/financial/odd-last-bonds.d.ts.map +1 -0
  99. package/@types/eval/functions/financial/period-interest.d.ts +14 -0
  100. package/@types/eval/functions/financial/period-interest.d.ts.map +1 -0
  101. package/@types/eval/functions/financial/shared.d.ts +35 -0
  102. package/@types/eval/functions/financial/shared.d.ts.map +1 -0
  103. package/@types/eval/functions/financial/tvm.d.ts +28 -0
  104. package/@types/eval/functions/financial/tvm.d.ts.map +1 -0
  105. package/@types/eval/functions/index.d.ts +47 -0
  106. package/@types/eval/functions/index.d.ts.map +1 -0
  107. package/@types/eval/functions/info.d.ts +79 -0
  108. package/@types/eval/functions/info.d.ts.map +1 -0
  109. package/@types/eval/functions/logical.d.ts +132 -0
  110. package/@types/eval/functions/logical.d.ts.map +1 -0
  111. package/@types/eval/functions/lookup-binary-search.d.ts +6 -0
  112. package/@types/eval/functions/lookup-binary-search.d.ts.map +1 -0
  113. package/@types/eval/functions/lookup-common.d.ts +10 -0
  114. package/@types/eval/functions/lookup-common.d.ts.map +1 -0
  115. package/@types/eval/functions/lookup-comparison.d.ts +8 -0
  116. package/@types/eval/functions/lookup-comparison.d.ts.map +1 -0
  117. package/@types/eval/functions/lookup-index-match.d.ts +5 -0
  118. package/@types/eval/functions/lookup-index-match.d.ts.map +1 -0
  119. package/@types/eval/functions/lookup-reference-shape.d.ts +9 -0
  120. package/@types/eval/functions/lookup-reference-shape.d.ts.map +1 -0
  121. package/@types/eval/functions/lookup-table.d.ts +5 -0
  122. package/@types/eval/functions/lookup-table.d.ts.map +1 -0
  123. package/@types/eval/functions/lookup-vector.d.ts +5 -0
  124. package/@types/eval/functions/lookup-vector.d.ts.map +1 -0
  125. package/@types/eval/functions/lookup-xlookup.d.ts +14 -0
  126. package/@types/eval/functions/lookup-xlookup.d.ts.map +1 -0
  127. package/@types/eval/functions/lookup.d.ts +10 -0
  128. package/@types/eval/functions/lookup.d.ts.map +1 -0
  129. package/@types/eval/functions/math/advanced-rounding.d.ts +16 -0
  130. package/@types/eval/functions/math/advanced-rounding.d.ts.map +1 -0
  131. package/@types/eval/functions/math/aggregation.d.ts +35 -0
  132. package/@types/eval/functions/math/aggregation.d.ts.map +1 -0
  133. package/@types/eval/functions/math/arithmetic.d.ts +44 -0
  134. package/@types/eval/functions/math/arithmetic.d.ts.map +1 -0
  135. package/@types/eval/functions/math/combinatorics.d.ts +17 -0
  136. package/@types/eval/functions/math/combinatorics.d.ts.map +1 -0
  137. package/@types/eval/functions/math/index.d.ts +15 -0
  138. package/@types/eval/functions/math/index.d.ts.map +1 -0
  139. package/@types/eval/functions/math/integer-series.d.ts +19 -0
  140. package/@types/eval/functions/math/integer-series.d.ts.map +1 -0
  141. package/@types/eval/functions/math/matrix.d.ts +12 -0
  142. package/@types/eval/functions/math/matrix.d.ts.map +1 -0
  143. package/@types/eval/functions/math/radix-and-pairs.d.ts +10 -0
  144. package/@types/eval/functions/math/radix-and-pairs.d.ts.map +1 -0
  145. package/@types/eval/functions/math/rounding.d.ts +14 -0
  146. package/@types/eval/functions/math/rounding.d.ts.map +1 -0
  147. package/@types/eval/functions/math/shared.d.ts +5 -0
  148. package/@types/eval/functions/math/shared.d.ts.map +1 -0
  149. package/@types/eval/functions/math/subtotal.d.ts +11 -0
  150. package/@types/eval/functions/math/subtotal.d.ts.map +1 -0
  151. package/@types/eval/functions/math/trigonometry.d.ts +38 -0
  152. package/@types/eval/functions/math/trigonometry.d.ts.map +1 -0
  153. package/@types/eval/functions/regex-ascii.d.ts +33 -0
  154. package/@types/eval/functions/regex-ascii.d.ts.map +1 -0
  155. package/@types/eval/functions/stats/basic-distributions.d.ts +18 -0
  156. package/@types/eval/functions/stats/basic-distributions.d.ts.map +1 -0
  157. package/@types/eval/functions/stats/beta-gamma-distributions.d.ts +9 -0
  158. package/@types/eval/functions/stats/beta-gamma-distributions.d.ts.map +1 -0
  159. package/@types/eval/functions/stats/binomial-distributions.d.ts +5 -0
  160. package/@types/eval/functions/stats/binomial-distributions.d.ts.map +1 -0
  161. package/@types/eval/functions/stats/continuous-distributions.d.ts +16 -0
  162. package/@types/eval/functions/stats/continuous-distributions.d.ts.map +1 -0
  163. package/@types/eval/functions/stats/count-distributions.d.ts +6 -0
  164. package/@types/eval/functions/stats/count-distributions.d.ts.map +1 -0
  165. package/@types/eval/functions/stats/criteria-counting.d.ts +15 -0
  166. package/@types/eval/functions/stats/criteria-counting.d.ts.map +1 -0
  167. package/@types/eval/functions/stats/criteria-statistics.d.ts +10 -0
  168. package/@types/eval/functions/stats/criteria-statistics.d.ts.map +1 -0
  169. package/@types/eval/functions/stats/descriptive-advanced.d.ts +25 -0
  170. package/@types/eval/functions/stats/descriptive-advanced.d.ts.map +1 -0
  171. package/@types/eval/functions/stats/descriptive.d.ts +35 -0
  172. package/@types/eval/functions/stats/descriptive.d.ts.map +1 -0
  173. package/@types/eval/functions/stats/distribution-primitives.d.ts +28 -0
  174. package/@types/eval/functions/stats/distribution-primitives.d.ts.map +1 -0
  175. package/@types/eval/functions/stats/index.d.ts +6 -0
  176. package/@types/eval/functions/stats/index.d.ts.map +1 -0
  177. package/@types/eval/functions/stats/matrix-regression.d.ts +7 -0
  178. package/@types/eval/functions/stats/matrix-regression.d.ts.map +1 -0
  179. package/@types/eval/functions/stats/normal-distribution.d.ts +8 -0
  180. package/@types/eval/functions/stats/normal-distribution.d.ts.map +1 -0
  181. package/@types/eval/functions/stats/numeric.d.ts +68 -0
  182. package/@types/eval/functions/stats/numeric.d.ts.map +1 -0
  183. package/@types/eval/functions/stats/paired-statistics.d.ts +12 -0
  184. package/@types/eval/functions/stats/paired-statistics.d.ts.map +1 -0
  185. package/@types/eval/functions/stats/probability-tests.d.ts +6 -0
  186. package/@types/eval/functions/stats/probability-tests.d.ts.map +1 -0
  187. package/@types/eval/functions/stats/regression-statistics.d.ts +24 -0
  188. package/@types/eval/functions/stats/regression-statistics.d.ts.map +1 -0
  189. package/@types/eval/functions/stats/special-functions.d.ts +7 -0
  190. package/@types/eval/functions/stats/special-functions.d.ts.map +1 -0
  191. package/@types/eval/functions/stats/student-distribution.d.ts +7 -0
  192. package/@types/eval/functions/stats/student-distribution.d.ts.map +1 -0
  193. package/@types/eval/functions/stats/values.d.ts +13 -0
  194. package/@types/eval/functions/stats/values.d.ts.map +1 -0
  195. package/@types/eval/functions/text/char-codes.d.ts +13 -0
  196. package/@types/eval/functions/text/char-codes.d.ts.map +1 -0
  197. package/@types/eval/functions/text/dbcs.d.ts +11 -0
  198. package/@types/eval/functions/text/dbcs.d.ts.map +1 -0
  199. package/@types/eval/functions/text/encode-url.d.ts +6 -0
  200. package/@types/eval/functions/text/encode-url.d.ts.map +1 -0
  201. package/@types/eval/functions/text/format-custom.d.ts +7 -0
  202. package/@types/eval/functions/text/format-custom.d.ts.map +1 -0
  203. package/@types/eval/functions/text/format-datetime-parse.d.ts +31 -0
  204. package/@types/eval/functions/text/format-datetime-parse.d.ts.map +1 -0
  205. package/@types/eval/functions/text/format-datetime-render.d.ts +5 -0
  206. package/@types/eval/functions/text/format-datetime-render.d.ts.map +1 -0
  207. package/@types/eval/functions/text/format-numeric.d.ts +32 -0
  208. package/@types/eval/functions/text/format-numeric.d.ts.map +1 -0
  209. package/@types/eval/functions/text/format-sections.d.ts +15 -0
  210. package/@types/eval/functions/text/format-sections.d.ts.map +1 -0
  211. package/@types/eval/functions/text/format-text-section.d.ts +5 -0
  212. package/@types/eval/functions/text/format-text-section.d.ts.map +1 -0
  213. package/@types/eval/functions/text/format.d.ts +10 -0
  214. package/@types/eval/functions/text/format.d.ts.map +1 -0
  215. package/@types/eval/functions/text/host-degraded.d.ts +18 -0
  216. package/@types/eval/functions/text/host-degraded.d.ts.map +1 -0
  217. package/@types/eval/functions/text/index.d.ts +32 -0
  218. package/@types/eval/functions/text/index.d.ts.map +1 -0
  219. package/@types/eval/functions/text/japanese-width.d.ts +8 -0
  220. package/@types/eval/functions/text/japanese-width.d.ts.map +1 -0
  221. package/@types/eval/functions/text/join.d.ts +25 -0
  222. package/@types/eval/functions/text/join.d.ts.map +1 -0
  223. package/@types/eval/functions/text/locale-number.d.ts +7 -0
  224. package/@types/eval/functions/text/locale-number.d.ts.map +1 -0
  225. package/@types/eval/functions/text/normalize.d.ts +25 -0
  226. package/@types/eval/functions/text/normalize.d.ts.map +1 -0
  227. package/@types/eval/functions/text/number-parse.d.ts +21 -0
  228. package/@types/eval/functions/text/number-parse.d.ts.map +1 -0
  229. package/@types/eval/functions/text/read-args.d.ts +59 -0
  230. package/@types/eval/functions/text/read-args.d.ts.map +1 -0
  231. package/@types/eval/functions/text/regex.d.ts +8 -0
  232. package/@types/eval/functions/text/regex.d.ts.map +1 -0
  233. package/@types/eval/functions/text/roman.d.ts +7 -0
  234. package/@types/eval/functions/text/roman.d.ts.map +1 -0
  235. package/@types/eval/functions/text/search.d.ts +29 -0
  236. package/@types/eval/functions/text/search.d.ts.map +1 -0
  237. package/@types/eval/functions/text/slice.d.ts +45 -0
  238. package/@types/eval/functions/text/slice.d.ts.map +1 -0
  239. package/@types/eval/functions/text/split.d.ts +8 -0
  240. package/@types/eval/functions/text/split.d.ts.map +1 -0
  241. package/@types/eval/functions/text/substitute.d.ts +22 -0
  242. package/@types/eval/functions/text/substitute.d.ts.map +1 -0
  243. package/@types/eval/functions/text/value-to-text.d.ts +9 -0
  244. package/@types/eval/functions/text/value-to-text.d.ts.map +1 -0
  245. package/@types/eval/general-text.d.ts +35 -0
  246. package/@types/eval/general-text.d.ts.map +1 -0
  247. package/@types/eval/grid.d.ts +28 -0
  248. package/@types/eval/grid.d.ts.map +1 -0
  249. package/@types/eval/higher-order-array.d.ts +14 -0
  250. package/@types/eval/higher-order-array.d.ts.map +1 -0
  251. package/@types/eval/higher-order-deps.d.ts +39 -0
  252. package/@types/eval/higher-order-deps.d.ts.map +1 -0
  253. package/@types/eval/higher-order-sparse.d.ts +7 -0
  254. package/@types/eval/higher-order-sparse.d.ts.map +1 -0
  255. package/@types/eval/higher-order.d.ts +10 -0
  256. package/@types/eval/higher-order.d.ts.map +1 -0
  257. package/@types/eval/index.d.ts +12 -0
  258. package/@types/eval/index.d.ts.map +1 -0
  259. package/@types/eval/indirect-text.d.ts +10 -0
  260. package/@types/eval/indirect-text.d.ts.map +1 -0
  261. package/@types/eval/lambda-apply.d.ts +53 -0
  262. package/@types/eval/lambda-apply.d.ts.map +1 -0
  263. package/@types/eval/lambda-resolution.d.ts +22 -0
  264. package/@types/eval/lambda-resolution.d.ts.map +1 -0
  265. package/@types/eval/overflow.d.ts +39 -0
  266. package/@types/eval/overflow.d.ts.map +1 -0
  267. package/@types/eval/range-gate.d.ts +77 -0
  268. package/@types/eval/range-gate.d.ts.map +1 -0
  269. package/@types/eval/reference-info.d.ts +41 -0
  270. package/@types/eval/reference-info.d.ts.map +1 -0
  271. package/@types/eval/runtime-ref-read.d.ts +34 -0
  272. package/@types/eval/runtime-ref-read.d.ts.map +1 -0
  273. package/@types/eval/runtime-ref-resolve.d.ts +90 -0
  274. package/@types/eval/runtime-ref-resolve.d.ts.map +1 -0
  275. package/@types/eval/runtime-ref.d.ts +43 -0
  276. package/@types/eval/runtime-ref.d.ts.map +1 -0
  277. package/@types/eval/sparse-aggregations.d.ts +48 -0
  278. package/@types/eval/sparse-aggregations.d.ts.map +1 -0
  279. package/@types/eval/sparse-criteria.d.ts +58 -0
  280. package/@types/eval/sparse-criteria.d.ts.map +1 -0
  281. package/@types/eval/sparse-multi-criterion.d.ts +13 -0
  282. package/@types/eval/sparse-multi-criterion.d.ts.map +1 -0
  283. package/@types/eval/sparse-range-alignment.d.ts +15 -0
  284. package/@types/eval/sparse-range-alignment.d.ts.map +1 -0
  285. package/@types/eval/sparse-single-criterion.d.ts +12 -0
  286. package/@types/eval/sparse-single-criterion.d.ts.map +1 -0
  287. package/@types/eval/sparse-subtotal.d.ts +11 -0
  288. package/@types/eval/sparse-subtotal.d.ts.map +1 -0
  289. package/@types/eval/spill-anchor-gate.d.ts +41 -0
  290. package/@types/eval/spill-anchor-gate.d.ts.map +1 -0
  291. package/@types/eval/spill-aware-context.d.ts +20 -0
  292. package/@types/eval/spill-aware-context.d.ts.map +1 -0
  293. package/@types/eval/spill-collision.d.ts +95 -0
  294. package/@types/eval/spill-collision.d.ts.map +1 -0
  295. package/@types/eval/spill-projection-run.d.ts +36 -0
  296. package/@types/eval/spill-projection-run.d.ts.map +1 -0
  297. package/@types/eval/spill-projection.d.ts +144 -0
  298. package/@types/eval/spill-projection.d.ts.map +1 -0
  299. package/@types/eval/trampoline-ctx.d.ts +48 -0
  300. package/@types/eval/trampoline-ctx.d.ts.map +1 -0
  301. package/@types/eval/trampoline.d.ts +36 -0
  302. package/@types/eval/trampoline.d.ts.map +1 -0
  303. package/@types/eval/whole-axis-clamp.d.ts +54 -0
  304. package/@types/eval/whole-axis-clamp.d.ts.map +1 -0
  305. package/@types/index.d.ts +25 -0
  306. package/@types/index.d.ts.map +1 -0
  307. package/@types/parser/index.d.ts +22 -0
  308. package/@types/parser/index.d.ts.map +1 -0
  309. package/@types/parser/parser.d.ts +31 -0
  310. package/@types/parser/parser.d.ts.map +1 -0
  311. package/@types/parser/tokenizer.d.ts +117 -0
  312. package/@types/parser/tokenizer.d.ts.map +1 -0
  313. package/@types/print-config.d.ts +57 -0
  314. package/@types/print-config.d.ts.map +1 -0
  315. package/@types/propagation.d.ts +52 -0
  316. package/@types/propagation.d.ts.map +1 -0
  317. package/@types/refs/a1.d.ts +83 -0
  318. package/@types/refs/a1.d.ts.map +1 -0
  319. package/@types/refs/index.d.ts +14 -0
  320. package/@types/refs/index.d.ts.map +1 -0
  321. package/@types/refs/ranges.d.ts +98 -0
  322. package/@types/refs/ranges.d.ts.map +1 -0
  323. package/@types/sheet.d.ts +197 -0
  324. package/@types/sheet.d.ts.map +1 -0
  325. package/@types/types.d.ts +526 -0
  326. package/@types/types.d.ts.map +1 -0
  327. package/@types/workbook.d.ts +308 -0
  328. package/@types/workbook.d.ts.map +1 -0
  329. package/LICENSE +21 -0
  330. package/README.md +67 -2
  331. package/cjs/deps.cjs +334 -0
  332. package/cjs/eval/array-selectors.cjs +279 -0
  333. package/cjs/eval/array-shape.cjs +52 -0
  334. package/cjs/eval/binary-ops.cjs +139 -0
  335. package/cjs/eval/canonical-name.cjs +12 -0
  336. package/cjs/eval/cell-address.cjs +39 -0
  337. package/cjs/eval/cell-info.cjs +119 -0
  338. package/cjs/eval/cell-read.cjs +180 -0
  339. package/cjs/eval/coerce.cjs +146 -0
  340. package/cjs/eval/criteria-grammar.cjs +302 -0
  341. package/cjs/eval/criteria-value-range.cjs +52 -0
  342. package/cjs/eval/criteria-value-rect.cjs +60 -0
  343. package/cjs/eval/cycle-guard.cjs +32 -0
  344. package/cjs/eval/error-value.cjs +20 -0
  345. package/cjs/eval/evaluate.cjs +309 -0
  346. package/cjs/eval/evaluator-array-operations.cjs +161 -0
  347. package/cjs/eval/evaluator-call.cjs +35 -0
  348. package/cjs/eval/evaluator-control-flow.cjs +137 -0
  349. package/cjs/eval/evaluator-expression.cjs +144 -0
  350. package/cjs/eval/evaluator-reference-functions.cjs +72 -0
  351. package/cjs/eval/foreign-sheet.cjs +103 -0
  352. package/cjs/eval/functions/_locale.cjs +349 -0
  353. package/cjs/eval/functions/array.cjs +1101 -0
  354. package/cjs/eval/functions/database.cjs +487 -0
  355. package/cjs/eval/functions/date.cjs +1340 -0
  356. package/cjs/eval/functions/engineering/base-conversions.cjs +188 -0
  357. package/cjs/eval/functions/engineering/bessel-evaluate.cjs +22 -0
  358. package/cjs/eval/functions/engineering/bessel-ik.cjs +89 -0
  359. package/cjs/eval/functions/engineering/bessel-jy.cjs +123 -0
  360. package/cjs/eval/functions/engineering/bitwise.cjs +113 -0
  361. package/cjs/eval/functions/engineering/complex-format.cjs +215 -0
  362. package/cjs/eval/functions/engineering/complex-operations.cjs +188 -0
  363. package/cjs/eval/functions/engineering/complex-trigonometry.cjs +126 -0
  364. package/cjs/eval/functions/engineering/erf.cjs +163 -0
  365. package/cjs/eval/functions/engineering/index.cjs +77 -0
  366. package/cjs/eval/functions/engineering/shared.cjs +17 -0
  367. package/cjs/eval/functions/engineering/units.cjs +252 -0
  368. package/cjs/eval/functions/financial/amortization.cjs +191 -0
  369. package/cjs/eval/functions/financial/bond-calendar.cjs +264 -0
  370. package/cjs/eval/functions/financial/bond-pricing.cjs +208 -0
  371. package/cjs/eval/functions/financial/bond-primitives.cjs +90 -0
  372. package/cjs/eval/functions/financial/cashflow-returns.cjs +131 -0
  373. package/cjs/eval/functions/financial/cashflow-schedules.cjs +292 -0
  374. package/cjs/eval/functions/financial/coupon-schedule.cjs +68 -0
  375. package/cjs/eval/functions/financial/depreciation.cjs +180 -0
  376. package/cjs/eval/functions/financial/discount-securities.cjs +204 -0
  377. package/cjs/eval/functions/financial/index.cjs +128 -0
  378. package/cjs/eval/functions/financial/odd-first-bonds.cjs +162 -0
  379. package/cjs/eval/functions/financial/odd-last-bonds.cjs +95 -0
  380. package/cjs/eval/functions/financial/period-interest.cjs +119 -0
  381. package/cjs/eval/functions/financial/shared.cjs +129 -0
  382. package/cjs/eval/functions/financial/tvm.cjs +228 -0
  383. package/cjs/eval/functions/index.cjs +82 -0
  384. package/cjs/eval/functions/info.cjs +367 -0
  385. package/cjs/eval/functions/logical.cjs +349 -0
  386. package/cjs/eval/functions/lookup-binary-search.cjs +60 -0
  387. package/cjs/eval/functions/lookup-common.cjs +62 -0
  388. package/cjs/eval/functions/lookup-comparison.cjs +85 -0
  389. package/cjs/eval/functions/lookup-index-match.cjs +97 -0
  390. package/cjs/eval/functions/lookup-reference-shape.cjs +120 -0
  391. package/cjs/eval/functions/lookup-table.cjs +53 -0
  392. package/cjs/eval/functions/lookup-vector.cjs +84 -0
  393. package/cjs/eval/functions/lookup-xlookup.cjs +130 -0
  394. package/cjs/eval/functions/lookup.cjs +39 -0
  395. package/cjs/eval/functions/math/advanced-rounding.cjs +113 -0
  396. package/cjs/eval/functions/math/aggregation.cjs +213 -0
  397. package/cjs/eval/functions/math/arithmetic.cjs +182 -0
  398. package/cjs/eval/functions/math/combinatorics.cjs +156 -0
  399. package/cjs/eval/functions/math/index.cjs +112 -0
  400. package/cjs/eval/functions/math/integer-series.cjs +160 -0
  401. package/cjs/eval/functions/math/matrix.cjs +170 -0
  402. package/cjs/eval/functions/math/radix-and-pairs.cjs +134 -0
  403. package/cjs/eval/functions/math/rounding.cjs +143 -0
  404. package/cjs/eval/functions/math/shared.cjs +17 -0
  405. package/cjs/eval/functions/math/subtotal.cjs +223 -0
  406. package/cjs/eval/functions/math/trigonometry.cjs +250 -0
  407. package/cjs/eval/functions/regex-ascii.cjs +92 -0
  408. package/cjs/eval/functions/stats/basic-distributions.cjs +206 -0
  409. package/cjs/eval/functions/stats/beta-gamma-distributions.cjs +117 -0
  410. package/cjs/eval/functions/stats/binomial-distributions.cjs +63 -0
  411. package/cjs/eval/functions/stats/continuous-distributions.cjs +186 -0
  412. package/cjs/eval/functions/stats/count-distributions.cjs +69 -0
  413. package/cjs/eval/functions/stats/criteria-counting.cjs +194 -0
  414. package/cjs/eval/functions/stats/criteria-statistics.cjs +137 -0
  415. package/cjs/eval/functions/stats/descriptive-advanced.cjs +163 -0
  416. package/cjs/eval/functions/stats/descriptive.cjs +257 -0
  417. package/cjs/eval/functions/stats/distribution-primitives.cjs +208 -0
  418. package/cjs/eval/functions/stats/index.cjs +164 -0
  419. package/cjs/eval/functions/stats/matrix-regression.cjs +432 -0
  420. package/cjs/eval/functions/stats/normal-distribution.cjs +123 -0
  421. package/cjs/eval/functions/stats/numeric.cjs +193 -0
  422. package/cjs/eval/functions/stats/paired-statistics.cjs +88 -0
  423. package/cjs/eval/functions/stats/probability-tests.cjs +158 -0
  424. package/cjs/eval/functions/stats/regression-statistics.cjs +155 -0
  425. package/cjs/eval/functions/stats/special-functions.cjs +119 -0
  426. package/cjs/eval/functions/stats/student-distribution.cjs +74 -0
  427. package/cjs/eval/functions/stats/values.cjs +34 -0
  428. package/cjs/eval/functions/text/char-codes.cjs +67 -0
  429. package/cjs/eval/functions/text/dbcs.cjs +113 -0
  430. package/cjs/eval/functions/text/encode-url.cjs +49 -0
  431. package/cjs/eval/functions/text/format-custom.cjs +221 -0
  432. package/cjs/eval/functions/text/format-datetime-parse.cjs +252 -0
  433. package/cjs/eval/functions/text/format-datetime-render.cjs +164 -0
  434. package/cjs/eval/functions/text/format-numeric.cjs +148 -0
  435. package/cjs/eval/functions/text/format-sections.cjs +174 -0
  436. package/cjs/eval/functions/text/format-text-section.cjs +82 -0
  437. package/cjs/eval/functions/text/format.cjs +162 -0
  438. package/cjs/eval/functions/text/host-degraded.cjs +107 -0
  439. package/cjs/eval/functions/text/index.cjs +84 -0
  440. package/cjs/eval/functions/text/japanese-width.cjs +312 -0
  441. package/cjs/eval/functions/text/join.cjs +124 -0
  442. package/cjs/eval/functions/text/locale-number.cjs +72 -0
  443. package/cjs/eval/functions/text/normalize.cjs +88 -0
  444. package/cjs/eval/functions/text/number-parse.cjs +148 -0
  445. package/cjs/eval/functions/text/read-args.cjs +108 -0
  446. package/cjs/eval/functions/text/regex.cjs +179 -0
  447. package/cjs/eval/functions/text/roman.cjs +482 -0
  448. package/cjs/eval/functions/text/search.cjs +209 -0
  449. package/cjs/eval/functions/text/slice.cjs +230 -0
  450. package/cjs/eval/functions/text/split.cjs +251 -0
  451. package/cjs/eval/functions/text/substitute.cjs +110 -0
  452. package/cjs/eval/functions/text/value-to-text.cjs +88 -0
  453. package/cjs/eval/general-text.cjs +116 -0
  454. package/cjs/eval/grid.cjs +78 -0
  455. package/cjs/eval/higher-order-array.cjs +73 -0
  456. package/cjs/eval/higher-order-sparse.cjs +87 -0
  457. package/cjs/eval/higher-order.cjs +184 -0
  458. package/cjs/eval/indirect-text.cjs +139 -0
  459. package/cjs/eval/lambda-apply.cjs +145 -0
  460. package/cjs/eval/lambda-resolution.cjs +242 -0
  461. package/cjs/eval/overflow.cjs +47 -0
  462. package/cjs/eval/range-gate.cjs +45 -0
  463. package/cjs/eval/reference-info.cjs +257 -0
  464. package/cjs/eval/runtime-ref-read.cjs +227 -0
  465. package/cjs/eval/runtime-ref-resolve.cjs +531 -0
  466. package/cjs/eval/runtime-ref.cjs +99 -0
  467. package/cjs/eval/sparse-aggregations.cjs +232 -0
  468. package/cjs/eval/sparse-criteria.cjs +167 -0
  469. package/cjs/eval/sparse-multi-criterion.cjs +123 -0
  470. package/cjs/eval/sparse-range-alignment.cjs +38 -0
  471. package/cjs/eval/sparse-single-criterion.cjs +223 -0
  472. package/cjs/eval/sparse-subtotal.cjs +269 -0
  473. package/cjs/eval/spill-anchor-gate.cjs +89 -0
  474. package/cjs/eval/spill-aware-context.cjs +11 -0
  475. package/cjs/eval/spill-collision.cjs +180 -0
  476. package/cjs/eval/spill-projection-run.cjs +46 -0
  477. package/cjs/eval/spill-projection.cjs +154 -0
  478. package/cjs/eval/trampoline-ctx.cjs +204 -0
  479. package/cjs/eval/trampoline.cjs +241 -0
  480. package/cjs/eval/whole-axis-clamp.cjs +55 -0
  481. package/cjs/index.cjs +61 -0
  482. package/cjs/parser/index.cjs +47 -0
  483. package/cjs/parser/parser.cjs +522 -0
  484. package/cjs/parser/tokenizer.cjs +614 -0
  485. package/cjs/print-config.cjs +196 -0
  486. package/cjs/propagation.cjs +227 -0
  487. package/cjs/refs/a1.cjs +147 -0
  488. package/cjs/refs/ranges.cjs +239 -0
  489. package/cjs/sheet.cjs +208 -0
  490. package/cjs/types.cjs +92 -0
  491. package/cjs/workbook.cjs +784 -0
  492. package/esm/deps.mjs +329 -0
  493. package/esm/eval/array-selectors.mjs +273 -0
  494. package/esm/eval/array-shape.mjs +46 -0
  495. package/esm/eval/binary-ops.mjs +137 -0
  496. package/esm/eval/canonical-name.mjs +10 -0
  497. package/esm/eval/cell-address.mjs +35 -0
  498. package/esm/eval/cell-info.mjs +117 -0
  499. package/esm/eval/cell-read.mjs +176 -0
  500. package/esm/eval/coerce.mjs +141 -0
  501. package/esm/eval/criteria-grammar.mjs +291 -0
  502. package/esm/eval/criteria-value-range.mjs +50 -0
  503. package/esm/eval/criteria-value-rect.mjs +55 -0
  504. package/esm/eval/cycle-guard.mjs +29 -0
  505. package/esm/eval/error-value.mjs +18 -0
  506. package/esm/eval/evaluate.mjs +298 -0
  507. package/esm/eval/evaluator-array-operations.mjs +156 -0
  508. package/esm/eval/evaluator-call.mjs +33 -0
  509. package/esm/eval/evaluator-control-flow.mjs +129 -0
  510. package/esm/eval/evaluator-expression.mjs +142 -0
  511. package/esm/eval/evaluator-reference-functions.mjs +66 -0
  512. package/esm/eval/foreign-sheet.mjs +101 -0
  513. package/esm/eval/functions/_locale.mjs +345 -0
  514. package/esm/eval/functions/array.mjs +1099 -0
  515. package/esm/eval/functions/database.mjs +485 -0
  516. package/esm/eval/functions/date.mjs +1338 -0
  517. package/esm/eval/functions/engineering/base-conversions.mjs +174 -0
  518. package/esm/eval/functions/engineering/bessel-evaluate.mjs +20 -0
  519. package/esm/eval/functions/engineering/bessel-ik.mjs +85 -0
  520. package/esm/eval/functions/engineering/bessel-jy.mjs +117 -0
  521. package/esm/eval/functions/engineering/bitwise.mjs +104 -0
  522. package/esm/eval/functions/engineering/complex-format.mjs +202 -0
  523. package/esm/eval/functions/engineering/complex-operations.mjs +170 -0
  524. package/esm/eval/functions/engineering/complex-trigonometry.mjs +114 -0
  525. package/esm/eval/functions/engineering/erf.mjs +157 -0
  526. package/esm/eval/functions/engineering/index.mjs +29 -0
  527. package/esm/eval/functions/engineering/shared.mjs +14 -0
  528. package/esm/eval/functions/engineering/units.mjs +249 -0
  529. package/esm/eval/functions/financial/amortization.mjs +183 -0
  530. package/esm/eval/functions/financial/bond-calendar.mjs +242 -0
  531. package/esm/eval/functions/financial/bond-pricing.mjs +199 -0
  532. package/esm/eval/functions/financial/bond-primitives.mjs +85 -0
  533. package/esm/eval/functions/financial/cashflow-returns.mjs +124 -0
  534. package/esm/eval/functions/financial/cashflow-schedules.mjs +282 -0
  535. package/esm/eval/functions/financial/coupon-schedule.mjs +61 -0
  536. package/esm/eval/functions/financial/depreciation.mjs +173 -0
  537. package/esm/eval/functions/financial/discount-securities.mjs +193 -0
  538. package/esm/eval/functions/financial/index.mjs +71 -0
  539. package/esm/eval/functions/financial/odd-first-bonds.mjs +156 -0
  540. package/esm/eval/functions/financial/odd-last-bonds.mjs +91 -0
  541. package/esm/eval/functions/financial/period-interest.mjs +114 -0
  542. package/esm/eval/functions/financial/shared.mjs +110 -0
  543. package/esm/eval/functions/financial/tvm.mjs +219 -0
  544. package/esm/eval/functions/index.mjs +78 -0
  545. package/esm/eval/functions/info.mjs +348 -0
  546. package/esm/eval/functions/logical.mjs +335 -0
  547. package/esm/eval/functions/lookup-binary-search.mjs +56 -0
  548. package/esm/eval/functions/lookup-common.mjs +54 -0
  549. package/esm/eval/functions/lookup-comparison.mjs +79 -0
  550. package/esm/eval/functions/lookup-index-match.mjs +94 -0
  551. package/esm/eval/functions/lookup-reference-shape.mjs +113 -0
  552. package/esm/eval/functions/lookup-table.mjs +50 -0
  553. package/esm/eval/functions/lookup-vector.mjs +81 -0
  554. package/esm/eval/functions/lookup-xlookup.mjs +127 -0
  555. package/esm/eval/functions/lookup.mjs +24 -0
  556. package/esm/eval/functions/math/advanced-rounding.mjs +102 -0
  557. package/esm/eval/functions/math/aggregation.mjs +204 -0
  558. package/esm/eval/functions/math/arithmetic.mjs +175 -0
  559. package/esm/eval/functions/math/combinatorics.mjs +147 -0
  560. package/esm/eval/functions/math/index.mjs +35 -0
  561. package/esm/eval/functions/math/integer-series.mjs +153 -0
  562. package/esm/eval/functions/math/matrix.mjs +164 -0
  563. package/esm/eval/functions/math/radix-and-pairs.mjs +127 -0
  564. package/esm/eval/functions/math/rounding.mjs +131 -0
  565. package/esm/eval/functions/math/shared.mjs +14 -0
  566. package/esm/eval/functions/math/subtotal.mjs +218 -0
  567. package/esm/eval/functions/math/trigonometry.mjs +215 -0
  568. package/esm/eval/functions/regex-ascii.mjs +90 -0
  569. package/esm/eval/functions/stats/basic-distributions.mjs +189 -0
  570. package/esm/eval/functions/stats/beta-gamma-distributions.mjs +109 -0
  571. package/esm/eval/functions/stats/binomial-distributions.mjs +59 -0
  572. package/esm/eval/functions/stats/continuous-distributions.mjs +171 -0
  573. package/esm/eval/functions/stats/count-distributions.mjs +64 -0
  574. package/esm/eval/functions/stats/criteria-counting.mjs +188 -0
  575. package/esm/eval/functions/stats/criteria-statistics.mjs +132 -0
  576. package/esm/eval/functions/stats/descriptive-advanced.mjs +147 -0
  577. package/esm/eval/functions/stats/descriptive.mjs +241 -0
  578. package/esm/eval/functions/stats/distribution-primitives.mjs +185 -0
  579. package/esm/eval/functions/stats/index.mjs +162 -0
  580. package/esm/eval/functions/stats/matrix-regression.mjs +426 -0
  581. package/esm/eval/functions/stats/normal-distribution.mjs +116 -0
  582. package/esm/eval/functions/stats/numeric.mjs +181 -0
  583. package/esm/eval/functions/stats/paired-statistics.mjs +82 -0
  584. package/esm/eval/functions/stats/probability-tests.mjs +153 -0
  585. package/esm/eval/functions/stats/regression-statistics.mjs +145 -0
  586. package/esm/eval/functions/stats/special-functions.mjs +112 -0
  587. package/esm/eval/functions/stats/student-distribution.mjs +67 -0
  588. package/esm/eval/functions/stats/values.mjs +30 -0
  589. package/esm/eval/functions/text/char-codes.mjs +62 -0
  590. package/esm/eval/functions/text/dbcs.mjs +105 -0
  591. package/esm/eval/functions/text/encode-url.mjs +47 -0
  592. package/esm/eval/functions/text/format-custom.mjs +218 -0
  593. package/esm/eval/functions/text/format-datetime-parse.mjs +250 -0
  594. package/esm/eval/functions/text/format-datetime-render.mjs +162 -0
  595. package/esm/eval/functions/text/format-numeric.mjs +140 -0
  596. package/esm/eval/functions/text/format-sections.mjs +169 -0
  597. package/esm/eval/functions/text/format-text-section.mjs +80 -0
  598. package/esm/eval/functions/text/format.mjs +160 -0
  599. package/esm/eval/functions/text/host-degraded.mjs +103 -0
  600. package/esm/eval/functions/text/index.mjs +82 -0
  601. package/esm/eval/functions/text/japanese-width.mjs +308 -0
  602. package/esm/eval/functions/text/join.mjs +119 -0
  603. package/esm/eval/functions/text/locale-number.mjs +69 -0
  604. package/esm/eval/functions/text/normalize.mjs +82 -0
  605. package/esm/eval/functions/text/number-parse.mjs +145 -0
  606. package/esm/eval/functions/text/read-args.mjs +98 -0
  607. package/esm/eval/functions/text/regex.mjs +175 -0
  608. package/esm/eval/functions/text/roman.mjs +479 -0
  609. package/esm/eval/functions/text/search.mjs +203 -0
  610. package/esm/eval/functions/text/slice.mjs +219 -0
  611. package/esm/eval/functions/text/split.mjs +247 -0
  612. package/esm/eval/functions/text/substitute.mjs +107 -0
  613. package/esm/eval/functions/text/value-to-text.mjs +84 -0
  614. package/esm/eval/general-text.mjs +114 -0
  615. package/esm/eval/grid.mjs +72 -0
  616. package/esm/eval/higher-order-array.mjs +69 -0
  617. package/esm/eval/higher-order-sparse.mjs +83 -0
  618. package/esm/eval/higher-order.mjs +177 -0
  619. package/esm/eval/indirect-text.mjs +137 -0
  620. package/esm/eval/lambda-apply.mjs +137 -0
  621. package/esm/eval/lambda-resolution.mjs +240 -0
  622. package/esm/eval/overflow.mjs +45 -0
  623. package/esm/eval/range-gate.mjs +40 -0
  624. package/esm/eval/reference-info.mjs +246 -0
  625. package/esm/eval/runtime-ref-read.mjs +221 -0
  626. package/esm/eval/runtime-ref-resolve.mjs +524 -0
  627. package/esm/eval/runtime-ref.mjs +88 -0
  628. package/esm/eval/sparse-aggregations.mjs +227 -0
  629. package/esm/eval/sparse-criteria.mjs +160 -0
  630. package/esm/eval/sparse-multi-criterion.mjs +118 -0
  631. package/esm/eval/sparse-range-alignment.mjs +33 -0
  632. package/esm/eval/sparse-single-criterion.mjs +219 -0
  633. package/esm/eval/sparse-subtotal.mjs +266 -0
  634. package/esm/eval/spill-anchor-gate.mjs +86 -0
  635. package/esm/eval/spill-aware-context.mjs +9 -0
  636. package/esm/eval/spill-collision.mjs +177 -0
  637. package/esm/eval/spill-projection-run.mjs +44 -0
  638. package/esm/eval/spill-projection.mjs +147 -0
  639. package/esm/eval/trampoline-ctx.mjs +201 -0
  640. package/esm/eval/trampoline.mjs +239 -0
  641. package/esm/eval/whole-axis-clamp.mjs +53 -0
  642. package/esm/index.mjs +13 -0
  643. package/esm/parser/index.mjs +42 -0
  644. package/esm/parser/parser.mjs +519 -0
  645. package/esm/parser/tokenizer.mjs +612 -0
  646. package/esm/print-config.mjs +187 -0
  647. package/esm/propagation.mjs +225 -0
  648. package/esm/refs/a1.mjs +140 -0
  649. package/esm/refs/ranges.mjs +228 -0
  650. package/esm/sheet.mjs +204 -0
  651. package/esm/types.mjs +88 -0
  652. package/esm/workbook.mjs +782 -0
  653. package/package.json +54 -3
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Workbook-level reverse dependency graph — the TS mirror of Rust's
3
+ * `cell_dependents` / `RangeDependentIndex` (see
4
+ * `excel/rust/excel-core/src/sheet.rs` and
5
+ * `docs/KEY_GRANULAR_INVALIDATION.md` for the design RFC).
6
+ *
7
+ * The graph answers ONE question fast: "which formulas may change when
8
+ * cell (sheetId, key) changes?" Mutations run a BFS over those edges so
9
+ * a write dirties O(true dependents), not O(cached formulas) — the
10
+ * audit C-2 fix.
11
+ *
12
+ * Three edge classes:
13
+ * - **point** — `=A1+1` registers `A1 → formula`.
14
+ * - **range** — `=SUM(A1:B10)` / `=SUM(A:A)` registers the range in a
15
+ * column-bucketed index (Rust `RangeDependentIndex` shape: per-column
16
+ * buckets plus a linear `wide` fallback for ranges spanning more than
17
+ * `WIDE_COL_SPAN` columns, e.g. whole-row `1:1` ranges). Buckets are
18
+ * keyed by COLUMN because rows are unbounded (whole-column aggregates
19
+ * over sparse data are the hot case) while columns are capped at
20
+ * 16 384.
21
+ * - **broad** — formulas whose reads cannot be statically bounded:
22
+ * `INDIRECT` / `OFFSET` / dynamic-range endpoints, plus volatile
23
+ * functions (NOW / TODAY / RAND / RANDBETWEEN / RANDARRAY). These are
24
+ * dirtied by EVERY value write — which is both Excel's volatile
25
+ * contract and exactly what the old whole-sheet flush did for them.
26
+ *
27
+ * Deps are extracted STATICALLY from the AST (`collectStaticDeps`),
28
+ * resolving names through the registry — so `=SUM(MYRANGE)` depends on
29
+ * the bound range, and a named LAMBDA's body contributes its refs (the
30
+ * TS twin of the Rust B-4 fix). Static extraction over-approximates
31
+ * (both IF branches register) which can only cause spurious re-evals,
32
+ * never stale values.
33
+ *
34
+ * Installation is lazy and replace-shaped: the workbook installs a
35
+ * formula's edges whenever the evaluator visits it (anchor derive runs
36
+ * AND transitive trampoline visits via `EvalContext.onFormulaEvaluated`)
37
+ * — the TS twin of Rust's hydrate-on-read dep install. Registry changes
38
+ * bump `namesRevision` so the next visit re-extracts.
39
+ */
40
+ import type { CellKey, CellRange, Expr, NameBinding } from './types';
41
+ /** Workbook-global formula identity: `${sheetId}<NUL>${key}`. */
42
+ export type FormulaId = string;
43
+ export declare function fidOf(sheetId: string, key: CellKey): FormulaId;
44
+ export declare function fidLocation(fid: FormulaId): {
45
+ sheetId: string;
46
+ key: CellKey;
47
+ };
48
+ export interface CollectedDeps {
49
+ /** Point refs. `sheetName` undefined ⇒ the formula's own sheet. */
50
+ points: Array<{
51
+ sheetName?: string;
52
+ key: CellKey;
53
+ }>;
54
+ /** Range refs, normalized via `parseRange`. */
55
+ ranges: Array<{
56
+ sheetName?: string;
57
+ range: CellRange;
58
+ }>;
59
+ /** True when the formula must be dirtied on every value write. */
60
+ broad: boolean;
61
+ }
62
+ /**
63
+ * Walk `ast` and collect every statically-visible cell/range reference.
64
+ * `resolveName` threads the workbook names registry so named ranges and
65
+ * named-LAMBDA bodies contribute their refs. LET/LAMBDA parameter names
66
+ * that shadow workbook names may over-collect — harmless (spurious dep).
67
+ */
68
+ export declare function collectStaticDeps(ast: Expr, resolveName: (name: string) => NameBinding | undefined): CollectedDeps;
69
+ /** Deps resolved against workbook sheet ids, ready for installation. */
70
+ export interface ResolvedDeps {
71
+ points: Array<{
72
+ sheetId: string;
73
+ key: CellKey;
74
+ }>;
75
+ ranges: Array<{
76
+ sheetId: string;
77
+ range: CellRange;
78
+ }>;
79
+ broad: boolean;
80
+ }
81
+ export declare class DepGraph {
82
+ private readonly cellDependents;
83
+ private readonly rangeIndexes;
84
+ /** Formulas dirtied by every value write. Read by the workbook BFS. */
85
+ readonly broadDependents: Set<string>;
86
+ private readonly installed;
87
+ /** Fast bail-out so dep-free bulk imports pay nothing per key. */
88
+ isEmpty(): boolean;
89
+ /** True when `fid` is already installed for this exact AST + registry rev. */
90
+ isCurrent(fid: FormulaId, ast: Expr, namesRevision: number, runtimeKey?: string): boolean;
91
+ /** Replace-install `fid`'s edges. */
92
+ install(fid: FormulaId, ast: Expr, namesRevision: number, deps: ResolvedDeps, runtimeKey?: string): void;
93
+ /** Remove every edge `fid` installed. Bounded maps under formula churn. */
94
+ uninstall(fid: FormulaId): void;
95
+ /**
96
+ * Size probe for the always-on scale suite (TS mirror of Rust's
97
+ * `debug_dep_graph_stats`). Pure observation — no graph mutation.
98
+ *
99
+ * - `installed`: formulas with live edges (size of `installed`).
100
+ * - `pointKeys`: distinct (sheet, key) coordinates with ≥1 point
101
+ * dependent (Σ of per-sheet cellDependents map sizes).
102
+ * - `rangeEntries`: distinct registered ranges across all sheets.
103
+ * - `broad`: formulas in the dirty-on-every-write set.
104
+ *
105
+ * @internal
106
+ */
107
+ debugStats(): {
108
+ installed: number;
109
+ pointKeys: number;
110
+ rangeEntries: number;
111
+ broad: number;
112
+ };
113
+ /**
114
+ * Append every formula depending on (sheetId, key) — point edges plus
115
+ * range entries containing the coordinate (candidates narrowed via the
116
+ * column bucket; `wide` scanned linearly, expected tiny).
117
+ */
118
+ dependentsOfInto(sheetId: string, key: CellKey, out: FormulaId[]): void;
119
+ }
120
+ //# sourceMappingURL=deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAEpE,iEAAiE;AACjE,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAI9B,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,SAAS,CAE9D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAG7E;AAqBD,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,MAAM,EAAE,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACnD,+CAA+C;IAC/C,MAAM,EAAE,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IACvD,kEAAkE;IAClE,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,IAAI,EACT,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,GACrD,aAAa,CAIf;AAoID,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAChD,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IACpD,KAAK,EAAE,OAAO,CAAA;CACf;AAmCD,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkD;IAEjF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAElE,uEAAuE;IACvE,QAAQ,CAAC,eAAe,cAAuB;IAE/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAElE,kEAAkE;IAClE,OAAO,IAAI,OAAO;IAIlB,8EAA8E;IAC9E,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,OAAO;IAUrF,qCAAqC;IACrC,OAAO,CACL,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,IAAI,EACT,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,YAAY,EAClB,UAAU,SAAK,GACd,IAAI;IA4DP,2EAA2E;IAC3E,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAiC/B;;;;;;;;;;;OAWG;IACH,UAAU,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAa3F;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI;CA+BxE"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 条件选择类函数在**数组**判定参数上的求值。
3
+ *
4
+ * 职责:当 `IF` / `IFERROR` / `IFNA` / `IFS` / `SWITCH` / `CHOOSE` 的判定参数是
5
+ * 一片数组时,逐格算出这一格该走哪一路分支,再把被选中的那几路广播回同一形状。
6
+ *
7
+ * 标量路径(短路、只算选中的那一支)留在 `evaluate.ts` —— 那是 `evaluate` 自己
8
+ * 的懒求值约定。「实参怎么求值」是**参数**传进来的,不是 import 的:反向 import
9
+ * `evaluate.ts` 会成环。
10
+ *
11
+ * 超过 300 行是刻意的:六个函数走的是同一套算法 —— 逐格定选路、只物化被选中的
12
+ * 那几路、按广播规则取格 —— 共用同一张 `ArraySelection` 选路矩阵。按函数名拆,
13
+ * 这张矩阵的协议就要在两个文件之间来回对,读者更难确认「某一格为什么取到这个
14
+ * 值」。
15
+ */
16
+ import type { EvalContext, Expr, Value } from '../types';
17
+ /**
18
+ * 求值器的「实参求值」(`evaluate.ts` 的 `evaluateFunctionArg`)。
19
+ *
20
+ * 传参而不是 import,是为了不与求值器成环 —— 参照 `spill-collision.ts` 的形状。
21
+ */
22
+ export type EvaluateFunctionArg = (expr: Expr, ctx: EvalContext) => Value;
23
+ export declare function evaluateArrayIf(cond: Value, args: ReadonlyArray<Expr>, ctx: EvalContext, evaluateFunctionArg: EvaluateFunctionArg): Value;
24
+ export declare function evaluateArrayIfError(value: Value, fallback: Expr, ctx: EvalContext, catches: (error: Value & {
25
+ kind: 'error';
26
+ }) => boolean, evaluateFunctionArg: EvaluateFunctionArg): Value;
27
+ export declare function evaluateArrayChoose(indexValue: Value, args: ReadonlyArray<Expr>, ctx: EvalContext, evaluateFunctionArg: EvaluateFunctionArg): Value;
28
+ export declare function evaluateArrayIfs(args: ReadonlyArray<Expr>, ctx: EvalContext, startPair: number, firstCond: Value, evaluateFunctionArg: EvaluateFunctionArg): Value;
29
+ export declare function evaluateArraySwitch(exprValue: Value, args: ReadonlyArray<Expr>, ctx: EvalContext, evaluateFunctionArg: EvaluateFunctionArg): Value;
30
+ //# sourceMappingURL=array-selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-selectors.d.ts","sourceRoot":"","sources":["../../src/eval/array-selectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAaxD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,KAAK,KAAK,CAAA;AAEzE,wBAAgB,eAAe,CAC7B,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EACzB,GAAG,EAAE,WAAW,EAChB,mBAAmB,EAAE,mBAAmB,GACvC,KAAK,CA0DP;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,IAAI,EACd,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,KAAK,OAAO,EACtD,mBAAmB,EAAE,mBAAmB,GACvC,KAAK,CAyBP;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,KAAK,EACjB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EACzB,GAAG,EAAE,WAAW,EAChB,mBAAmB,EAAE,mBAAmB,GACvC,KAAK,CAoCP;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EACzB,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,KAAK,EAChB,mBAAmB,EAAE,mBAAmB,GACvC,KAAK,CAsCP;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,KAAK,EAChB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EACzB,GAAG,EAAE,WAAW,EAChB,mBAAmB,EAAE,mBAAmB,GACvC,KAAK,CAiEP"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 数组结果的形状闸门。
3
+ *
4
+ * 职责:判定一个二维 `Value` 矩阵能不能作为数组结果落地 —— 行必须等长、格数
5
+ * 不超过软上限、行列不超过 Excel 网格、格子里不能再嵌一片没摊开的数组 ——
6
+ * 不合格就给出对应的错误值。
7
+ */
8
+ import type { Value } from '../types';
9
+ /** 数组结果的软上限(格数)。`spill-collision.ts` 用它砍「够不着」的候选锚点。 */
10
+ export declare const ARRAY_CELL_CAP = 1048576;
11
+ export declare function arrayShapeError(rows: number, cols: number, label: string, capMessage?: string): Value | undefined;
12
+ export declare function scalarCellError(value: Value): Value | undefined;
13
+ export declare function matrixScalarCellError(matrix: Value[][]): Value | undefined;
14
+ export declare function arrayResult(matrix: Value[][], label?: string): Value;
15
+ //# sourceMappingURL=array-shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-shape.d.ts","sourceRoot":"","sources":["../../src/eval/array-shape.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAIrC,uDAAuD;AACvD,eAAO,MAAM,cAAc,UAAY,CAAA;AAIvC,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,SAAoC,GAC7C,KAAK,GAAG,SAAS,CAanB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAE/D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,GAAG,SAAS,CAQ1E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,SAAiB,GAAG,KAAK,CAQ5E"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 二元运算符的求值。
3
+ *
4
+ * 职责:给定一个运算符与两个已经求好的 `Value`,算出结果值 —— 数组广播、错误
5
+ * 传播、Excel 的比较语义都在这里收口。
6
+ */
7
+ import type { BinaryOp, Value } from '../types';
8
+ /**
9
+ * Apply a binary operator. Errors propagate (left-first per Excel).
10
+ * Comparisons return `boolean` Value. Concat returns `string`. Numeric
11
+ * ops return `number`.
12
+ */
13
+ export declare function applyBinary(op: BinaryOp, left: Value, right: Value): Value;
14
+ //# sourceMappingURL=binary-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary-ops.d.ts","sourceRoot":"","sources":["../../src/eval/binary-ops.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAO/C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAK1E"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 名字的规范化。
3
+ *
4
+ * 职责:把工作簿里的一个名字(定义名 / LAMBDA 参数 / LET 绑定)折成查表用的键
5
+ * —— Excel 的名字大小写不敏感。
6
+ */
7
+ export declare function canonicalName(name: string): string;
8
+ //# sourceMappingURL=canonical-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-name.d.ts","sourceRoot":"","sources":["../../src/eval/canonical-name.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 地址表示之间的转换。
3
+ *
4
+ * 职责:在 A1 文本、`CellKey`、`CellCoord` 这三种地址表示之间互转。
5
+ */
6
+ import type { CellCoord, CellKey } from '../types';
7
+ export declare function parseRefToCoord(a1: string): {
8
+ row: number;
9
+ col: number;
10
+ } | null;
11
+ export declare function cellCoordFromKey(key: CellKey): CellCoord | undefined;
12
+ export declare function parseRefToKey(a1: string): CellKey | null;
13
+ //# sourceMappingURL=cell-address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell-address.d.ts","sourceRoot":"","sources":["../../src/eval/cell-address.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAUlD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAI/E;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAOpE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAIxD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `CELL` 函数。
3
+ *
4
+ * 职责:按第一个实参的 info_type,报出目标格的一项元信息 —— 地址、行列号、
5
+ * 内容、类型、前缀、宽度、保护、颜色、括号、格式、文件名。
6
+ *
7
+ * 与 `reference-info.ts` 里那一族的差别:那些函数各自只答一件事,`CELL` 一个
8
+ * 函数就要答十二件,它自己的 switch 值得单开一个文件。
9
+ */
10
+ import type { EvalContext, Expr, Value } from '../types';
11
+ import type { RefInfoDeps } from './reference-info';
12
+ export declare function evaluateCellInfo(args: ReadonlyArray<Expr>, ctx: EvalContext, deps: RefInfoDeps): Value;
13
+ //# sourceMappingURL=cell-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell-info.d.ts","sourceRoot":"","sources":["../../src/eval/cell-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAIxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EACzB,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,WAAW,GAChB,KAAK,CA+DP"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * 递归路径下「把一个地址读成值」。
3
+ *
4
+ * 职责:在一份 `cells` 快照里解析一个地址(或一片区域),公式格就地递归求值,
5
+ * 用 `ctx.currentlyEvaluating` 挡住环。
6
+ *
7
+ * 这是**递归**那条路 —— 宿主自造 `EvalContext` 的直测、跨表 shim 的嵌套读走
8
+ * 它。逐格入口(`sheet.ts`)走的是 `trampoline.ts` 的显式工作栈,两条路各自
9
+ * 保留,原因见 `resolveCell` 的 Recursion note。
10
+ *
11
+ * 求值器是**参数**传进来的,不是 import 的:反向 import `evaluate.ts` 会成环。
12
+ */
13
+ import type { Cell, CellKey, EvalContext, Value } from '../types';
14
+ import { type SpillProjectionRun } from './spill-projection-run';
15
+ import type { EvaluateExpr } from './trampoline';
16
+ /**
17
+ * Generic ref-lookup shared between the per-sheet ctx (workbook wires it)
18
+ * and the cross-sheet shim. Pulled into evaluator-internal scope so cycle
19
+ * detection lives in exactly one place.
20
+ *
21
+ * Returns `BLANK` when the cell does not exist (Excel behavior — an
22
+ * unwritten cell reads as blank, not as `#REF!`).
23
+ */
24
+ export declare function refLookupGeneric(a1: string, cells: ReadonlyMap<CellKey, Cell>, ctx: EvalContext, evaluate: EvaluateExpr): Value;
25
+ /**
26
+ * Generic range lookup. Returns a row-major 2-D `Value[][]`. Blank cells
27
+ * stay blank rather than being omitted.
28
+ *
29
+ * For whole-row / whole-col ranges (`A:A`, `1:1`) the range expands to
30
+ * the Excel max bounds via `parseRange`; `clampWholeAxisRange` pulls the
31
+ * tail back to the used region first, and anything still over
32
+ * `MATERIALIZE_REFUSE_CELL_CAP` is refused — 拒绝值带外带标记,见
33
+ * `range-gate.ts`。SUM / COUNTIF 一族另有稀疏孪生,根本不到这里。
34
+ */
35
+ export declare function rangeLookupGeneric(start: string, end: string, cells: ReadonlyMap<CellKey, Cell>, ctx: EvalContext, evaluate: EvaluateExpr): Value[][];
36
+ /**
37
+ * 递归路径的投影账本。每次查找现建一个(`unstable` 关掉备忘录),因为 `cells`
38
+ * 与求值栈都由调用方的 `currentlyEvaluating` 决定,跨调用复用会读到过期形状。
39
+ */
40
+ export declare function outOfBandSpillRun(cells: ReadonlyMap<CellKey, Cell>, ctx: EvalContext, evaluateAnchor: (key: CellKey, target: ReadonlyMap<CellKey, Cell>) => Value): SpillProjectionRun;
41
+ //# sourceMappingURL=cell-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell-read.d.ts","sourceRoot":"","sources":["../../src/eval/cell-read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAKjE,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAO1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EACjC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,YAAY,GACrB,KAAK,CAIP;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EACjC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,YAAY,GACrB,KAAK,EAAE,EAAE,CAmCX;AA0CD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EACjC,GAAG,EAAE,WAAW,EAChB,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,GAC1E,kBAAkB,CAgBpB"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Value ↔ scalar coercion helpers.
3
+ *
4
+ * Excel coercion rules (the subset we need for Wave B/B2 arithmetic +
5
+ * comparison + concat):
6
+ *
7
+ * - `blank` → `0` in arithmetic, `""` in concat, `false` in boolean.
8
+ * - `number` → itself.
9
+ * - `string` → parsed as number when it looks numeric; otherwise
10
+ * `#VALUE!`. Special-case `"TRUE"` / `"FALSE"` for boolean.
11
+ * - `boolean` → `1` / `0` in arithmetic, `"TRUE"` / `"FALSE"` in concat.
12
+ * - `error` → propagates; callers should use `propagateError` before
13
+ * attempting coercion.
14
+ * - `array` → not coerced here; binary ops on arrays will be handled in
15
+ * Wave E (spill / range broadcast). Returning a `#VALUE!`
16
+ * envelope is correct for v1.
17
+ *
18
+ * Every helper is total — returns either the desired primitive (wrapped
19
+ * in `{ ok: true, value }`) or a `Value` error envelope. Callers thread
20
+ * the error verbatim, preserving the Excel "first-error-wins" rule.
21
+ */
22
+ import type { Value } from '../types';
23
+ export interface CoerceOk<T> {
24
+ readonly ok: true;
25
+ readonly value: T;
26
+ }
27
+ export interface CoerceErr {
28
+ readonly ok: false;
29
+ readonly error: Value & {
30
+ kind: 'error';
31
+ };
32
+ }
33
+ export type CoerceResult<T> = CoerceOk<T> | CoerceErr;
34
+ /**
35
+ * Returns the first `kind: 'error'` value in `args`, or `undefined` if
36
+ * none. Used by the evaluator's binary/unary ops and by function impls
37
+ * that opt into the default error-short-circuit behavior.
38
+ */
39
+ export declare function propagateError(args: ReadonlyArray<Value>): (Value & {
40
+ kind: 'error';
41
+ }) | undefined;
42
+ /**
43
+ * Coerce a `Value` to a JS `number` using Excel arithmetic rules.
44
+ *
45
+ * - `blank` → 0
46
+ * - `number` → itself
47
+ * - `boolean` → 1 / 0
48
+ * - `string` → `Number(trimmed)` if finite; else `#VALUE!`
49
+ * - `error` → propagated (caller should have short-circuited already)
50
+ * - `array` → top-left scalar coerced recursively; empty array → `#VALUE!`
51
+ */
52
+ export declare function toNumber(v: Value): CoerceResult<number>;
53
+ /**
54
+ * Coerce a `Value` to a JS `string` for concat / TEXT-like contexts.
55
+ *
56
+ * - `blank` → ""
57
+ * - `string` → itself
58
+ * - `number` → Excel 的「General」转文本规格(`excelGeneralToText`),不是 JS
59
+ * `String(n)`:15 位有效数字、大写带符号至少两位的指数、两侧各自的科学计数
60
+ * 门槛。`String(n)` 会给出 `'1e+21'` / `'1e-7'` 这种 Excel 不存在的写法。
61
+ * `TEXT()` 的显式 number-format 是另一条路,不走这里。
62
+ * - `boolean` → "TRUE" / "FALSE"
63
+ * - `error` → propagates
64
+ * - `array` → top-left scalar
65
+ */
66
+ export declare function toString(v: Value): CoerceResult<string>;
67
+ /**
68
+ * Coerce a `Value` to a JS `boolean` for IF / AND / OR contexts.
69
+ *
70
+ * - `blank` → false
71
+ * - `boolean` → itself
72
+ * - `number` → `n !== 0`
73
+ * - `string` → "TRUE" / "FALSE" case-insensitive; else `#VALUE!`
74
+ * - `error` → propagates
75
+ * - `array` → top-left scalar
76
+ */
77
+ export declare function toBoolean(v: Value): CoerceResult<boolean>;
78
+ //# sourceMappingURL=coerce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coerce.d.ts","sourceRoot":"","sources":["../../src/eval/coerce.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAGrC,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAA;CAC1C;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;AAKrD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,SAAS,CAKlG;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAuBvD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAkBvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAsBzD"}
@@ -0,0 +1,91 @@
1
+ import type { Value } from '../types';
2
+ /** Shared Excel criteria parsing and scalar matching. */
3
+ export type Comparator = '=' | '<>' | '<' | '<=' | '>' | '>=';
4
+ export interface ParsedCriterion {
5
+ readonly op: Comparator;
6
+ /** Comparand as a Value — number / string / boolean / blank. */
7
+ readonly target: Value;
8
+ /** Set when the criterion is a string whose body contains `*` or `?`. */
9
+ readonly wildcard: boolean;
10
+ }
11
+ /** Split a string criterion into (comparator, rest). Defaults to `=`. */
12
+ export declare function parseStringCriterion(raw: string): {
13
+ op: Comparator;
14
+ rest: string;
15
+ };
16
+ export declare function parseNumericString(raw: string): number | undefined;
17
+ /**
18
+ * Convert a Value-shaped criterion into the parsed form. Numeric / boolean
19
+ * / blank criteria become `op:'='` against the original Value. String
20
+ * criteria run through the comparator prefix check; the remainder is
21
+ * coerced to number when possible so `">5"` compares numerically.
22
+ */
23
+ export declare function parseCriterion(criterion: Value): ParsedCriterion | {
24
+ error: Value;
25
+ };
26
+ /**
27
+ * Excel wildcard match:
28
+ * `*` → any run of characters (including empty)
29
+ * `?` → exactly one character
30
+ * `~*` / `~?` / `~~` → literal `*` / `?` / `~`
31
+ *
32
+ * Case-insensitive — Excel string comparison is.
33
+ */
34
+ export declare function wildcardMatch(text: string, pattern: string): boolean;
35
+ export declare function escapeRegex(s: string): string;
36
+ /**
37
+ * Test whether `value` satisfies `parsed`. Excel rules:
38
+ *
39
+ * - Blank cells match `=""`, do **not** match other numeric/string criteria.
40
+ * - Type mismatches under `=` / `<>` are false / true respectively (a
41
+ * number cell never equals a string criterion).
42
+ * - Comparison operators (`<`, `<=`, `>`, `>=`) only work between
43
+ * numerically-coercible values; otherwise no match.
44
+ * - String equality is case-insensitive (Excel-compat).
45
+ *
46
+ * 错误格分两档,**取决于判据带不带通配符**,别把两档合并:
47
+ *
48
+ * - **不带**通配符(`"#N/A"` / `"<>#N/A"`)→ 按**显示文本**参与比较,于是
49
+ * `"#N/A"` 命中错误格,Excel 的标准错误过滤配方靠的就是这个。
50
+ * - **带**通配符(`"*"` / `"*N*"`)→ 错误格是**非文本格**,完全不参与匹配,
51
+ * 因此 `"*"` 不命中它、`"<>*"` 命中它。
52
+ *
53
+ * 再往外还有第三档:criteria 实参**本身**求值成错误值 → 在 `parseCriterion`
54
+ * 里原样传播,根本走不到这里。
55
+ */
56
+ export declare function matchesCriterion(cell: Value, parsed: ParsedCriterion): boolean;
57
+ export declare function makeCriterionMatcher(criterion: Value): {
58
+ readonly ok: true;
59
+ readonly matches: (value: Value) => boolean;
60
+ readonly matchesBlank: boolean;
61
+ } | {
62
+ readonly ok: false;
63
+ readonly error: Value;
64
+ };
65
+ /**
66
+ * AVERAGEIF / AVERAGEIFS 的**值区取数口径**:只认真正的数字。
67
+ *
68
+ * 与 SUMIF 的 `toNumber` 是两档,别合并 —— 求和把空格当 0 加进去无害,平均
69
+ * 却要靠它决定**分母**。Excel 的措辞是 "If a cell in average_range is an
70
+ * empty cell, AVERAGEIF ignores it" 与 "Cells in range that contain TRUE or
71
+ * FALSE are ignored",等价于「只有 number 格进分子分母」,与裸 `AVERAGE`
72
+ * (`forEachNumericArg`,见 `functions/math.ts`)同一条规则。
73
+ *
74
+ * 事故留痕:这里曾经是 `toNumber`,于是空格 → 0、`TRUE` → 1、文本 `"5"` → 5
75
+ * 全都进了分母。`AVERAGEIF(A1:A3,"")` 因此在 A2 空、B2 空时答 **0**
76
+ * (命中一格、值 0),而 Excel 与本仓 Rust 引擎都是 `#DIV/0!` —— 这两条
77
+ * 看着是两个 bug,其实是同一处口径错误的两个症状。
78
+ *
79
+ * Rust 孪生:`excel/rust/excel-core/src/eval_criteria_blank.rs::number_only`。
80
+ * 稀疏孪生:`sparse-single-criterion.ts` / `sparse-multi-criterion.ts` 的
81
+ * AVERAGEIF(S) 分支 —— 三处必须同改。
82
+ */
83
+ export declare function averageTierNumber(v: Value): number | undefined;
84
+ /** Coerce to a number for ordered comparison; return undefined if no clean coercion. */
85
+ export declare function numericComparable(v: Value): number | undefined;
86
+ /**
87
+ * Scalar equality used by `=` / `<>`. Numeric criteria coerce numeric
88
+ * strings from cells, matching Excel/Rust COUNTIF-family behavior.
89
+ */
90
+ export declare function scalarEquals(a: Value, b: Value): boolean;
91
+ //# sourceMappingURL=criteria-grammar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"criteria-grammar.d.ts","sourceRoot":"","sources":["../../src/eval/criteria-grammar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAErC,yDAAyD;AAEzD,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;AAE7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;IACtB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC3B;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CASlF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKlE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,KAAK,GAAG,eAAe,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAqCnF;AAMD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CA0BpE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAkD9E;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,KAAK,GAEd;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IAC3C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAC/B,GACD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACtB,CAUJ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAO9D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAexD"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * 一件事:**物化路径上,把 SUMIF / AVERAGEIF 的值区实参按「左上角 + 条件区形状」
3
+ * 重新读一遍**,再交给 `FUNCTIONS` 注册表里的实现。
4
+ *
5
+ * 为什么必须在求值器这一层做:`FUNCTIONS.SUMIF` 只拿得到 `Value[]`,值区被压成
6
+ * 一个数组之后就再也不知道它落在网格的哪里 —— 而 Excel 的规则要求越过值区自身
7
+ * 的边界继续往下读(`SUMIF(A1:A3,">1",B1)` 要读到 B3)。只有还握着 `Expr` 的
8
+ * 求值器能把这片格子重新解析出来。
9
+ *
10
+ * 事故留痕:修之前这条路用 `n = min(len(range), len(sum_range))` 截断,于是
11
+ * `SUMIF(A1:A3,">1",B1)` 给 0、`SUMIF(A1:A3,">1",B1:B2)` 给 200(Excel 都是
12
+ * 500);而同一个函数的稀疏孪生 `evaluateSparseSumIf` 用 `relativeCoord` 走的
13
+ * 正是对的规则 —— 同一组输入,两条路两个答案,且没有任何测试把它们对起来。
14
+ * 现在两条路共用 `criteria-value-rect.ts` 的同一条几何规则,配对断言在
15
+ * `test/criteria-value-range.test.ts`。
16
+ */
17
+ import type { CellCoord, EvalContext, Expr, Value } from '../types';
18
+ import type { RuntimeRefResult } from './runtime-ref-resolve';
19
+ /**
20
+ * 求值器按回调传进来的两件事。**不回头 import `evaluate.ts`** —— 本文件被
21
+ * 求值器直接依赖,反向 import 会成环,而循环依赖在本仓是硬门禁
22
+ * (`rollup.config.mjs` 的 `INTENTIONAL_CYCLE` 白名单不为新代码开口)。
23
+ * 形状照抄同目录的 `RefResolveDeps` / `RefInfoDeps`。
24
+ */
25
+ export interface CriteriaValueDeps {
26
+ /** 表达式 → 运行期引用矩形(`evaluate.ts` 的 `runtimeRefFromExpr`)。 */
27
+ readonly resolveRef: (expr: Expr, ctx: EvalContext) => RuntimeRefResult;
28
+ /** 单格读,折叠成标量(`evaluate.ts` 的 `valueAtRuntimeCoord`)。 */
29
+ readonly valueAt: (sheetName: string | undefined, coord: CellCoord, ctx: EvalContext) => Value;
30
+ }
31
+ export interface AlignedCriteriaValueArg {
32
+ readonly index: number;
33
+ readonly value: Value;
34
+ }
35
+ /**
36
+ * 值区实参要不要重读?要就返回替换值,不要就返回 `undefined`(调用方照常求值)。
37
+ *
38
+ * 返回 `undefined` 的几种情形,都是刻意保持原行为:
39
+ * - 不是 SUMIF / AVERAGEIF,或没写第三个实参;
40
+ * - 条件区或值区不是引用(数组字面量、函数结果……)—— Excel 这条规则讲的是
41
+ * 引用的几何,非引用没有「左上角」可言;
42
+ * - 两边形状本来就一样 —— 重读会得到同一片格子,白花开销。
43
+ */
44
+ export declare function alignCriteriaValueArg(upperName: string, args: ReadonlyArray<Expr>, ctx: EvalContext, deps: CriteriaValueDeps): AlignedCriteriaValueArg | undefined;
45
+ //# sourceMappingURL=criteria-value-range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"criteria-value-range.d.ts","sourceRoot":"","sources":["../../src/eval/criteria-value-range.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAO7D;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,KAAK,gBAAgB,CAAA;IACvE,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,CAChB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,WAAW,KACb,KAAK,CAAA;CACX;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EACzB,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,iBAAiB,GACtB,uBAAuB,GAAG,SAAS,CA0BrC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * 一件事:**SUMIF / AVERAGEIF 第三个实参(值区)实际覆盖哪个矩形**。
3
+ *
4
+ * Excel 对这两个函数的值区只取**左上角**,行列数由**条件区**决定 —— 值区自己
5
+ * 写成一格、写短、写长、甚至写成整列,都不参与形状:
6
+ *
7
+ * > "The sum_range argument does not have to be the same size and shape as the
8
+ * > range argument. The actual cells that are added are determined by using
9
+ * > the upper leftmost cell in the sum_range argument as the beginning cell,
10
+ * > and then including cells that correspond in size and shape to the range
11
+ * > argument." —— Microsoft, SUMIF(AVERAGEIF 的 average_range 同款措辞)
12
+ *
13
+ * 这条规则在本仓有三个消费者,都必须走这里:
14
+ * 1. 稀疏路径 `sparse-single-criterion.ts` —— 它靠 `relativeCoord` 逐格换算,
15
+ * 等价于本矩形,是历史上唯一做对的一条;
16
+ * 2. 物化路径 `criteria-value-range.ts` —— 把值区按本矩形重新读一遍再交给
17
+ * `FUNCTIONS.SUMIF` / `FUNCTIONS.AVERAGEIF`;
18
+ * 3. 依赖图 `deps.ts` —— 公式读了哪片格子就得依赖哪片,否则 `B1` 之外的格子
19
+ * 变了不会触发重算。
20
+ *
21
+ * 本文件**不 import 求值器**,`deps.ts` 才能安全地用它(那边在 import 图上位于
22
+ * 求值器之外)。
23
+ *
24
+ * ⚠️ 只管 SUMIF / AVERAGEIF 这一档「传统 IF 家族」。`SUMIFS` / `AVERAGEIFS` /
25
+ * `MAXIFS` / `MINIFS` / `COUNTIFS` 是另一条规则:Excel 要求各区形状严格相同,
26
+ * 否则 `#VALUE!` —— 别把这里的宽容套过去。
27
+ */
28
+ import type { CellRange, Expr } from '../types';
29
+ /** 走这条规则的函数名(大写)。 */
30
+ export declare function usesCriteriaValueRect(upperName: string): boolean;
31
+ /**
32
+ * 值区实际矩形 = `anchor` 的左上角 + `criteria` 的行列数。
33
+ *
34
+ * 越过网格边界返回 `undefined`(调用方给 `#REF!`)—— 与稀疏路径
35
+ * `relativeCoord` 的越界判定同一口径。
36
+ */
37
+ export declare function criteriaValueRect(criteria: CellRange, anchor: CellRange): CellRange | undefined;
38
+ /** 两个矩形行列数是否相同 —— 相同就不必重新读值区。 */
39
+ export declare function sameRectShape(a: CellRange, b: CellRange): boolean;
40
+ /**
41
+ * 依赖图要登记的值区矩形 —— `deps.ts` 的入口。
42
+ *
43
+ * `=SUMIF(A1:A3,">1",B1)` 静态上只看得见 `B1` 一个点,实际读到 B1:B3。不把
44
+ * 真实矩形登记进去,B2 / B3 改了不会触发重算 —— 值是对的但会变陈。
45
+ *
46
+ * 返回 `undefined` 时调用方照常按普通实参收集依赖(形状本来就一样、实参不是
47
+ * 静态引用、或矩形越界)。
48
+ */
49
+ export declare function criteriaValueDepRect(upperName: string, args: ReadonlyArray<Expr>, sheetName: string | undefined): {
50
+ readonly sheetName?: string;
51
+ readonly range: CellRange;
52
+ } | undefined;
53
+ //# sourceMappingURL=criteria-value-rect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"criteria-value-rect.d.ts","sourceRoot":"","sources":["../../src/eval/criteria-value-rect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAG/C,qBAAqB;AACrB,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,SAAS,GAChB,SAAS,GAAG,SAAS,CAKvB;AAED,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAKjE;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EACzB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG,SAAS,CAQxE"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 环检测键。
3
+ *
4
+ * 职责:给「某个 `cells` 快照里的某个 `CellKey`」造一个跨表不会撞车的键。
5
+ */
6
+ import type { Cell, CellKey } from '../types';
7
+ export declare function tagFor(cells: ReadonlyMap<CellKey, Cell>): string;
8
+ /**
9
+ * Build the composite cycle-set key for `(cells, cellKey)`. Exported so
10
+ * `sheet.ts` can seed the set with the entry-point cell before invoking
11
+ * `evaluate` directly (the entry doesn't flow through `resolveCell` and
12
+ * would otherwise re-enter unguarded).
13
+ */
14
+ export declare function cycleGuardKey(cells: ReadonlyMap<CellKey, Cell>, key: CellKey): CellKey;
15
+ //# sourceMappingURL=cycle-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cycle-guard.d.ts","sourceRoot":"","sources":["../../src/eval/cycle-guard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAU7C,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,CAOhE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EACjC,GAAG,EAAE,OAAO,GACX,OAAO,CAET"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 求值器的错误值构造器。
3
+ *
4
+ * 职责:把一个 `ErrorCode`(可选附言)包成 `Value` 的 `error` 变体。
5
+ *
6
+ * 单列一个文件,是为了让求值器的那些叶子模块(`array-shape` / `grid` /
7
+ * `binary-ops` / `runtime-ref` …)都能用上它,而不必反过来 import
8
+ * `evaluate.ts` —— 那会把它们一并拖进求值器的循环导入。
9
+ */
10
+ import type { ErrorCode, Value } from '../types';
11
+ export declare const ERR: (code: ErrorCode, message?: string) => Value;
12
+ //# sourceMappingURL=error-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-value.d.ts","sourceRoot":"","sources":["../../src/eval/error-value.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhD,eAAO,MAAM,GAAG,GAAI,MAAM,SAAS,EAAE,UAAU,MAAM,KAAG,KAC4B,CAAA"}