@cj-tech-master/excelts 9.2.1 → 9.3.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 (383) hide show
  1. package/README.md +25 -2
  2. package/README_zh.md +29 -6
  3. package/dist/browser/index.browser.d.ts +1 -1
  4. package/dist/browser/index.browser.js +4 -0
  5. package/dist/browser/index.d.ts +1 -1
  6. package/dist/browser/index.js +4 -0
  7. package/dist/browser/modules/excel/cell.d.ts +17 -3
  8. package/dist/browser/modules/excel/cell.js +170 -22
  9. package/dist/browser/modules/excel/defined-names.d.ts +96 -1
  10. package/dist/browser/modules/excel/defined-names.js +411 -21
  11. package/dist/browser/modules/excel/image.d.ts +11 -0
  12. package/dist/browser/modules/excel/image.js +24 -1
  13. package/dist/browser/modules/excel/stream/workbook-reader.browser.d.ts +9 -3
  14. package/dist/browser/modules/excel/stream/workbook-reader.browser.js +14 -0
  15. package/dist/browser/modules/excel/stream/workbook-reader.d.ts +2 -1
  16. package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +39 -5
  17. package/dist/browser/modules/excel/stream/workbook-writer.browser.js +48 -1
  18. package/dist/browser/modules/excel/stream/workbook-writer.d.ts +3 -2
  19. package/dist/browser/modules/excel/stream/worksheet-reader.js +17 -1
  20. package/dist/browser/modules/excel/stream/worksheet-writer.d.ts +39 -6
  21. package/dist/browser/modules/excel/stream/worksheet-writer.js +45 -5
  22. package/dist/browser/modules/excel/table.js +15 -2
  23. package/dist/browser/modules/excel/types.d.ts +133 -2
  24. package/dist/browser/modules/excel/utils/col-cache.d.ts +1 -0
  25. package/dist/browser/modules/excel/utils/col-cache.js +15 -0
  26. package/dist/browser/modules/excel/utils/drawing-utils.d.ts +3 -3
  27. package/dist/browser/modules/excel/utils/drawing-utils.js +4 -0
  28. package/dist/browser/modules/excel/utils/external-link-formula.d.ts +76 -0
  29. package/dist/browser/modules/excel/utils/external-link-formula.js +208 -0
  30. package/dist/browser/modules/excel/utils/iterate-stream.d.ts +9 -3
  31. package/dist/browser/modules/excel/utils/iterate-stream.js +3 -1
  32. package/dist/browser/modules/excel/utils/ooxml-paths.d.ts +19 -0
  33. package/dist/browser/modules/excel/utils/ooxml-paths.js +37 -2
  34. package/dist/browser/modules/excel/utils/shared-strings.d.ts +8 -3
  35. package/dist/browser/modules/excel/utils/shared-strings.js +21 -2
  36. package/dist/browser/modules/excel/utils/workbook-protection.d.ts +30 -0
  37. package/dist/browser/modules/excel/utils/workbook-protection.js +30 -0
  38. package/dist/browser/modules/excel/workbook.browser.d.ts +257 -6
  39. package/dist/browser/modules/excel/workbook.browser.js +318 -34
  40. package/dist/browser/modules/excel/workbook.d.ts +1 -1
  41. package/dist/browser/modules/excel/worksheet.d.ts +3 -1
  42. package/dist/browser/modules/excel/worksheet.js +21 -2
  43. package/dist/browser/modules/excel/xlsx/rel-type.d.ts +15 -0
  44. package/dist/browser/modules/excel/xlsx/rel-type.js +16 -1
  45. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +6 -5
  46. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +21 -86
  47. package/dist/browser/modules/excel/xlsx/xform/book/external-link-xform.d.ts +84 -0
  48. package/dist/browser/modules/excel/xlsx/xform/book/external-link-xform.js +330 -0
  49. package/dist/browser/modules/excel/xlsx/xform/book/external-reference-xform.d.ts +17 -0
  50. package/dist/browser/modules/excel/xlsx/xform/book/external-reference-xform.js +24 -0
  51. package/dist/browser/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.d.ts +3 -0
  52. package/dist/browser/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.js +11 -2
  53. package/dist/browser/modules/excel/xlsx/xform/book/workbook-protection-xform.d.ts +20 -0
  54. package/dist/browser/modules/excel/xlsx/xform/book/workbook-protection-xform.js +66 -0
  55. package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +38 -5
  56. package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +19 -1
  57. package/dist/browser/modules/excel/xlsx/xform/core/metadata-xform.d.ts +56 -0
  58. package/dist/browser/modules/excel/xlsx/xform/core/metadata-xform.js +158 -0
  59. package/dist/browser/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.d.ts +26 -0
  60. package/dist/browser/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +105 -0
  61. package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +3 -0
  62. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.js +10 -2
  63. package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  64. package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.js +166 -8
  65. package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.js +1 -1
  66. package/dist/browser/modules/excel/xlsx/xform/sheet/ignored-errors-xform.d.ts +21 -0
  67. package/dist/browser/modules/excel/xlsx/xform/sheet/ignored-errors-xform.js +80 -0
  68. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +9 -4
  69. package/dist/browser/modules/excel/xlsx/xform/style/border-xform.js +4 -1
  70. package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +172 -13
  71. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +410 -20
  72. package/dist/browser/modules/excel/xlsx/xlsx.d.ts +7 -4
  73. package/dist/browser/modules/excel/xlsx/xlsx.js +4 -5
  74. package/dist/browser/modules/formula/compile/address-utils.d.ts +62 -0
  75. package/dist/browser/modules/formula/compile/address-utils.js +83 -0
  76. package/dist/browser/modules/formula/compile/binder.d.ts +42 -0
  77. package/dist/browser/modules/formula/compile/binder.js +487 -0
  78. package/dist/browser/modules/formula/compile/bound-ast.d.ts +230 -0
  79. package/dist/browser/modules/formula/compile/bound-ast.js +80 -0
  80. package/dist/browser/modules/formula/compile/compiled-formula.d.ts +137 -0
  81. package/dist/browser/modules/formula/compile/compiled-formula.js +383 -0
  82. package/dist/browser/modules/formula/compile/dependency-analysis.d.ts +93 -0
  83. package/dist/browser/modules/formula/compile/dependency-analysis.js +432 -0
  84. package/dist/browser/modules/formula/compile/structured-ref-utils.d.ts +93 -0
  85. package/dist/browser/modules/formula/compile/structured-ref-utils.js +136 -0
  86. package/dist/browser/modules/formula/default-syntax-probe.d.ts +79 -0
  87. package/dist/browser/modules/formula/default-syntax-probe.js +83 -0
  88. package/dist/browser/modules/formula/functions/_date-context.d.ts +4 -0
  89. package/dist/browser/modules/formula/functions/_date-context.js +29 -0
  90. package/dist/browser/modules/formula/functions/_shared.d.ts +121 -0
  91. package/dist/browser/modules/formula/functions/_shared.js +381 -0
  92. package/dist/browser/modules/formula/functions/conditional.d.ts +27 -0
  93. package/dist/browser/modules/formula/functions/conditional.js +343 -0
  94. package/dist/browser/modules/formula/functions/database.d.ts +37 -0
  95. package/dist/browser/modules/formula/functions/database.js +274 -0
  96. package/dist/browser/modules/formula/functions/date.d.ts +61 -0
  97. package/dist/browser/modules/formula/functions/date.js +855 -0
  98. package/dist/browser/modules/formula/functions/dynamic-array.d.ts +23 -0
  99. package/dist/browser/modules/formula/functions/dynamic-array.js +860 -0
  100. package/dist/browser/modules/formula/functions/engineering.d.ts +57 -0
  101. package/dist/browser/modules/formula/functions/engineering.js +1128 -0
  102. package/dist/browser/modules/formula/functions/financial.d.ts +202 -0
  103. package/dist/browser/modules/formula/functions/financial.js +2296 -0
  104. package/dist/browser/modules/formula/functions/lookup.d.ts +18 -0
  105. package/dist/browser/modules/formula/functions/lookup.js +886 -0
  106. package/dist/browser/modules/formula/functions/math.d.ts +114 -0
  107. package/dist/browser/modules/formula/functions/math.js +1406 -0
  108. package/dist/browser/modules/formula/functions/statistical.d.ts +193 -0
  109. package/dist/browser/modules/formula/functions/statistical.js +3390 -0
  110. package/dist/browser/modules/formula/functions/text.d.ts +86 -0
  111. package/dist/browser/modules/formula/functions/text.js +1845 -0
  112. package/dist/browser/modules/formula/host-registry.d.ts +53 -0
  113. package/dist/browser/modules/formula/host-registry.js +69 -0
  114. package/dist/browser/modules/formula/index.d.ts +39 -0
  115. package/dist/browser/modules/formula/index.js +49 -0
  116. package/dist/browser/modules/formula/install.d.ts +62 -0
  117. package/dist/browser/modules/formula/install.js +88 -0
  118. package/dist/browser/modules/formula/integration/apply-writeback-plan.d.ts +26 -0
  119. package/dist/browser/modules/formula/integration/apply-writeback-plan.js +210 -0
  120. package/dist/browser/modules/formula/integration/calculate-formulas-impl.d.ts +30 -0
  121. package/dist/browser/modules/formula/integration/calculate-formulas-impl.js +616 -0
  122. package/dist/browser/modules/formula/integration/calculate-formulas.d.ts +67 -0
  123. package/dist/browser/modules/formula/integration/calculate-formulas.js +68 -0
  124. package/dist/browser/modules/formula/integration/formula-instance.d.ts +64 -0
  125. package/dist/browser/modules/formula/integration/formula-instance.js +79 -0
  126. package/dist/browser/modules/formula/integration/workbook-adapter.d.ts +26 -0
  127. package/dist/browser/modules/formula/integration/workbook-adapter.js +324 -0
  128. package/dist/browser/modules/formula/integration/workbook-snapshot.d.ts +267 -0
  129. package/dist/browser/modules/formula/integration/workbook-snapshot.js +77 -0
  130. package/dist/browser/modules/formula/materialize/build-writeback-plan.d.ts +34 -0
  131. package/dist/browser/modules/formula/materialize/build-writeback-plan.js +473 -0
  132. package/dist/browser/modules/formula/materialize/spill-engine.d.ts +9 -0
  133. package/dist/browser/modules/formula/materialize/spill-engine.js +38 -0
  134. package/dist/browser/modules/formula/materialize/types.d.ts +179 -0
  135. package/dist/browser/modules/formula/materialize/types.js +29 -0
  136. package/dist/browser/modules/formula/materialize/writeback-plan.d.ts +167 -0
  137. package/dist/browser/modules/formula/materialize/writeback-plan.js +27 -0
  138. package/dist/browser/modules/formula/runtime/evaluator.d.ts +151 -0
  139. package/dist/browser/modules/formula/runtime/evaluator.js +2291 -0
  140. package/dist/browser/modules/formula/runtime/function-registry.d.ts +47 -0
  141. package/dist/browser/modules/formula/runtime/function-registry.js +840 -0
  142. package/dist/browser/modules/formula/runtime/values.d.ts +211 -0
  143. package/dist/browser/modules/formula/runtime/values.js +385 -0
  144. package/dist/browser/modules/formula/syntax/ast.d.ts +129 -0
  145. package/dist/browser/modules/formula/syntax/ast.js +28 -0
  146. package/dist/browser/modules/formula/syntax/parser.d.ts +18 -0
  147. package/dist/browser/modules/formula/syntax/parser.js +439 -0
  148. package/dist/browser/modules/formula/syntax/token-types.d.ts +153 -0
  149. package/dist/browser/modules/formula/syntax/token-types.js +59 -0
  150. package/dist/browser/modules/formula/syntax/tokenizer.d.ts +10 -0
  151. package/dist/browser/modules/formula/syntax/tokenizer.js +1074 -0
  152. package/dist/browser/modules/pdf/excel-bridge.js +9 -0
  153. package/dist/cjs/index.js +4 -0
  154. package/dist/cjs/modules/excel/cell.js +170 -22
  155. package/dist/cjs/modules/excel/defined-names.js +411 -21
  156. package/dist/cjs/modules/excel/image.js +24 -1
  157. package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +14 -0
  158. package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +48 -1
  159. package/dist/cjs/modules/excel/stream/worksheet-reader.js +17 -1
  160. package/dist/cjs/modules/excel/stream/worksheet-writer.js +45 -5
  161. package/dist/cjs/modules/excel/table.js +15 -2
  162. package/dist/cjs/modules/excel/utils/col-cache.js +15 -0
  163. package/dist/cjs/modules/excel/utils/drawing-utils.js +4 -0
  164. package/dist/cjs/modules/excel/utils/external-link-formula.js +212 -0
  165. package/dist/cjs/modules/excel/utils/iterate-stream.js +3 -1
  166. package/dist/cjs/modules/excel/utils/ooxml-paths.js +42 -2
  167. package/dist/cjs/modules/excel/utils/shared-strings.js +21 -2
  168. package/dist/cjs/modules/excel/utils/workbook-protection.js +33 -0
  169. package/dist/cjs/modules/excel/workbook.browser.js +318 -34
  170. package/dist/cjs/modules/excel/worksheet.js +20 -1
  171. package/dist/cjs/modules/excel/xlsx/rel-type.js +16 -1
  172. package/dist/cjs/modules/excel/xlsx/xform/book/defined-name-xform.js +21 -86
  173. package/dist/cjs/modules/excel/xlsx/xform/book/external-link-xform.js +333 -0
  174. package/dist/cjs/modules/excel/xlsx/xform/book/external-reference-xform.js +27 -0
  175. package/dist/cjs/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.js +11 -2
  176. package/dist/cjs/modules/excel/xlsx/xform/book/workbook-protection-xform.js +69 -0
  177. package/dist/cjs/modules/excel/xlsx/xform/book/workbook-xform.js +38 -5
  178. package/dist/cjs/modules/excel/xlsx/xform/core/content-types-xform.js +18 -0
  179. package/dist/cjs/modules/excel/xlsx/xform/core/metadata-xform.js +161 -0
  180. package/dist/cjs/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +108 -0
  181. package/dist/cjs/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +3 -0
  182. package/dist/cjs/modules/excel/xlsx/xform/drawing/drawing-xform.js +10 -2
  183. package/dist/cjs/modules/excel/xlsx/xform/sheet/cell-xform.js +166 -8
  184. package/dist/cjs/modules/excel/xlsx/xform/sheet/data-validations-xform.js +1 -1
  185. package/dist/cjs/modules/excel/xlsx/xform/sheet/ignored-errors-xform.js +83 -0
  186. package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +9 -4
  187. package/dist/cjs/modules/excel/xlsx/xform/style/border-xform.js +4 -1
  188. package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +408 -18
  189. package/dist/cjs/modules/excel/xlsx/xlsx.js +4 -5
  190. package/dist/cjs/modules/formula/compile/address-utils.js +89 -0
  191. package/dist/cjs/modules/formula/compile/binder.js +489 -0
  192. package/dist/cjs/modules/formula/compile/bound-ast.js +68 -0
  193. package/dist/cjs/modules/formula/compile/compiled-formula.js +387 -0
  194. package/dist/cjs/modules/formula/compile/dependency-analysis.js +437 -0
  195. package/dist/cjs/modules/formula/compile/structured-ref-utils.js +141 -0
  196. package/dist/cjs/modules/formula/default-syntax-probe.js +87 -0
  197. package/dist/cjs/modules/formula/functions/_date-context.js +33 -0
  198. package/dist/cjs/modules/formula/functions/_shared.js +396 -0
  199. package/dist/cjs/modules/formula/functions/conditional.js +354 -0
  200. package/dist/cjs/modules/formula/functions/database.js +288 -0
  201. package/dist/cjs/modules/formula/functions/date.js +883 -0
  202. package/dist/cjs/modules/formula/functions/dynamic-array.js +881 -0
  203. package/dist/cjs/modules/formula/functions/engineering.js +1183 -0
  204. package/dist/cjs/modules/formula/functions/financial.js +2348 -0
  205. package/dist/cjs/modules/formula/functions/lookup.js +902 -0
  206. package/dist/cjs/modules/formula/functions/math.js +1487 -0
  207. package/dist/cjs/modules/formula/functions/statistical.js +3488 -0
  208. package/dist/cjs/modules/formula/functions/text.js +1889 -0
  209. package/dist/cjs/modules/formula/host-registry.js +75 -0
  210. package/dist/cjs/modules/formula/index.js +58 -0
  211. package/dist/cjs/modules/formula/install.js +93 -0
  212. package/dist/cjs/modules/formula/integration/apply-writeback-plan.js +213 -0
  213. package/dist/cjs/modules/formula/integration/calculate-formulas-impl.js +619 -0
  214. package/dist/cjs/modules/formula/integration/calculate-formulas.js +71 -0
  215. package/dist/cjs/modules/formula/integration/formula-instance.js +82 -0
  216. package/dist/cjs/modules/formula/integration/workbook-adapter.js +327 -0
  217. package/dist/cjs/modules/formula/integration/workbook-snapshot.js +84 -0
  218. package/dist/cjs/modules/formula/materialize/build-writeback-plan.js +475 -0
  219. package/dist/cjs/modules/formula/materialize/spill-engine.js +42 -0
  220. package/dist/cjs/modules/formula/materialize/types.js +32 -0
  221. package/dist/cjs/modules/formula/materialize/writeback-plan.js +28 -0
  222. package/dist/cjs/modules/formula/runtime/evaluator.js +2298 -0
  223. package/dist/cjs/modules/formula/runtime/function-registry.js +846 -0
  224. package/dist/cjs/modules/formula/runtime/values.js +385 -0
  225. package/dist/cjs/modules/formula/syntax/ast.js +8 -0
  226. package/dist/cjs/modules/formula/syntax/parser.js +440 -0
  227. package/dist/cjs/modules/formula/syntax/token-types.js +32 -0
  228. package/dist/cjs/modules/formula/syntax/tokenizer.js +1076 -0
  229. package/dist/cjs/modules/pdf/excel-bridge.js +9 -0
  230. package/dist/esm/index.browser.js +4 -0
  231. package/dist/esm/index.js +4 -0
  232. package/dist/esm/modules/excel/cell.js +170 -22
  233. package/dist/esm/modules/excel/defined-names.js +411 -21
  234. package/dist/esm/modules/excel/image.js +24 -1
  235. package/dist/esm/modules/excel/stream/workbook-reader.browser.js +14 -0
  236. package/dist/esm/modules/excel/stream/workbook-writer.browser.js +48 -1
  237. package/dist/esm/modules/excel/stream/worksheet-reader.js +17 -1
  238. package/dist/esm/modules/excel/stream/worksheet-writer.js +45 -5
  239. package/dist/esm/modules/excel/table.js +15 -2
  240. package/dist/esm/modules/excel/utils/col-cache.js +15 -0
  241. package/dist/esm/modules/excel/utils/drawing-utils.js +4 -0
  242. package/dist/esm/modules/excel/utils/external-link-formula.js +208 -0
  243. package/dist/esm/modules/excel/utils/iterate-stream.js +3 -1
  244. package/dist/esm/modules/excel/utils/ooxml-paths.js +37 -2
  245. package/dist/esm/modules/excel/utils/shared-strings.js +21 -2
  246. package/dist/esm/modules/excel/utils/workbook-protection.js +30 -0
  247. package/dist/esm/modules/excel/workbook.browser.js +318 -34
  248. package/dist/esm/modules/excel/worksheet.js +21 -2
  249. package/dist/esm/modules/excel/xlsx/rel-type.js +16 -1
  250. package/dist/esm/modules/excel/xlsx/xform/book/defined-name-xform.js +21 -86
  251. package/dist/esm/modules/excel/xlsx/xform/book/external-link-xform.js +330 -0
  252. package/dist/esm/modules/excel/xlsx/xform/book/external-reference-xform.js +24 -0
  253. package/dist/esm/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.js +11 -2
  254. package/dist/esm/modules/excel/xlsx/xform/book/workbook-protection-xform.js +66 -0
  255. package/dist/esm/modules/excel/xlsx/xform/book/workbook-xform.js +38 -5
  256. package/dist/esm/modules/excel/xlsx/xform/core/content-types-xform.js +19 -1
  257. package/dist/esm/modules/excel/xlsx/xform/core/metadata-xform.js +158 -0
  258. package/dist/esm/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +105 -0
  259. package/dist/esm/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +3 -0
  260. package/dist/esm/modules/excel/xlsx/xform/drawing/drawing-xform.js +10 -2
  261. package/dist/esm/modules/excel/xlsx/xform/sheet/cell-xform.js +166 -8
  262. package/dist/esm/modules/excel/xlsx/xform/sheet/data-validations-xform.js +1 -1
  263. package/dist/esm/modules/excel/xlsx/xform/sheet/ignored-errors-xform.js +80 -0
  264. package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +9 -4
  265. package/dist/esm/modules/excel/xlsx/xform/style/border-xform.js +4 -1
  266. package/dist/esm/modules/excel/xlsx/xlsx.browser.js +410 -20
  267. package/dist/esm/modules/excel/xlsx/xlsx.js +4 -5
  268. package/dist/esm/modules/formula/compile/address-utils.js +83 -0
  269. package/dist/esm/modules/formula/compile/binder.js +487 -0
  270. package/dist/esm/modules/formula/compile/bound-ast.js +80 -0
  271. package/dist/esm/modules/formula/compile/compiled-formula.js +383 -0
  272. package/dist/esm/modules/formula/compile/dependency-analysis.js +432 -0
  273. package/dist/esm/modules/formula/compile/structured-ref-utils.js +136 -0
  274. package/dist/esm/modules/formula/default-syntax-probe.js +83 -0
  275. package/dist/esm/modules/formula/functions/_date-context.js +29 -0
  276. package/dist/esm/modules/formula/functions/_shared.js +381 -0
  277. package/dist/esm/modules/formula/functions/conditional.js +343 -0
  278. package/dist/esm/modules/formula/functions/database.js +274 -0
  279. package/dist/esm/modules/formula/functions/date.js +855 -0
  280. package/dist/esm/modules/formula/functions/dynamic-array.js +860 -0
  281. package/dist/esm/modules/formula/functions/engineering.js +1128 -0
  282. package/dist/esm/modules/formula/functions/financial.js +2296 -0
  283. package/dist/esm/modules/formula/functions/lookup.js +886 -0
  284. package/dist/esm/modules/formula/functions/math.js +1406 -0
  285. package/dist/esm/modules/formula/functions/statistical.js +3390 -0
  286. package/dist/esm/modules/formula/functions/text.js +1845 -0
  287. package/dist/esm/modules/formula/host-registry.js +69 -0
  288. package/dist/esm/modules/formula/index.js +49 -0
  289. package/dist/esm/modules/formula/install.js +88 -0
  290. package/dist/esm/modules/formula/integration/apply-writeback-plan.js +210 -0
  291. package/dist/esm/modules/formula/integration/calculate-formulas-impl.js +616 -0
  292. package/dist/esm/modules/formula/integration/calculate-formulas.js +68 -0
  293. package/dist/esm/modules/formula/integration/formula-instance.js +79 -0
  294. package/dist/esm/modules/formula/integration/workbook-adapter.js +324 -0
  295. package/dist/esm/modules/formula/integration/workbook-snapshot.js +77 -0
  296. package/dist/esm/modules/formula/materialize/build-writeback-plan.js +473 -0
  297. package/dist/esm/modules/formula/materialize/spill-engine.js +38 -0
  298. package/dist/esm/modules/formula/materialize/types.js +29 -0
  299. package/dist/esm/modules/formula/materialize/writeback-plan.js +27 -0
  300. package/dist/esm/modules/formula/runtime/evaluator.js +2291 -0
  301. package/dist/esm/modules/formula/runtime/function-registry.js +840 -0
  302. package/dist/esm/modules/formula/runtime/values.js +385 -0
  303. package/dist/esm/modules/formula/syntax/ast.js +28 -0
  304. package/dist/esm/modules/formula/syntax/parser.js +439 -0
  305. package/dist/esm/modules/formula/syntax/token-types.js +59 -0
  306. package/dist/esm/modules/formula/syntax/tokenizer.js +1074 -0
  307. package/dist/esm/modules/pdf/excel-bridge.js +9 -0
  308. package/dist/iife/excelts.iife.js +2302 -373
  309. package/dist/iife/excelts.iife.js.map +1 -1
  310. package/dist/iife/excelts.iife.min.js +34 -34
  311. package/dist/types/index.browser.d.ts +1 -1
  312. package/dist/types/index.d.ts +1 -1
  313. package/dist/types/modules/excel/cell.d.ts +17 -3
  314. package/dist/types/modules/excel/defined-names.d.ts +96 -1
  315. package/dist/types/modules/excel/image.d.ts +11 -0
  316. package/dist/types/modules/excel/stream/workbook-reader.browser.d.ts +9 -3
  317. package/dist/types/modules/excel/stream/workbook-reader.d.ts +2 -1
  318. package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +39 -5
  319. package/dist/types/modules/excel/stream/workbook-writer.d.ts +3 -2
  320. package/dist/types/modules/excel/stream/worksheet-writer.d.ts +39 -6
  321. package/dist/types/modules/excel/types.d.ts +133 -2
  322. package/dist/types/modules/excel/utils/col-cache.d.ts +1 -0
  323. package/dist/types/modules/excel/utils/drawing-utils.d.ts +3 -3
  324. package/dist/types/modules/excel/utils/external-link-formula.d.ts +76 -0
  325. package/dist/types/modules/excel/utils/iterate-stream.d.ts +9 -3
  326. package/dist/types/modules/excel/utils/ooxml-paths.d.ts +19 -0
  327. package/dist/types/modules/excel/utils/shared-strings.d.ts +8 -3
  328. package/dist/types/modules/excel/utils/workbook-protection.d.ts +30 -0
  329. package/dist/types/modules/excel/workbook.browser.d.ts +257 -6
  330. package/dist/types/modules/excel/workbook.d.ts +1 -1
  331. package/dist/types/modules/excel/worksheet.d.ts +3 -1
  332. package/dist/types/modules/excel/xlsx/rel-type.d.ts +15 -0
  333. package/dist/types/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +6 -5
  334. package/dist/types/modules/excel/xlsx/xform/book/external-link-xform.d.ts +84 -0
  335. package/dist/types/modules/excel/xlsx/xform/book/external-reference-xform.d.ts +17 -0
  336. package/dist/types/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.d.ts +3 -0
  337. package/dist/types/modules/excel/xlsx/xform/book/workbook-protection-xform.d.ts +20 -0
  338. package/dist/types/modules/excel/xlsx/xform/core/metadata-xform.d.ts +56 -0
  339. package/dist/types/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.d.ts +26 -0
  340. package/dist/types/modules/excel/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  341. package/dist/types/modules/excel/xlsx/xform/sheet/ignored-errors-xform.d.ts +21 -0
  342. package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +172 -13
  343. package/dist/types/modules/excel/xlsx/xlsx.d.ts +7 -4
  344. package/dist/types/modules/formula/compile/address-utils.d.ts +62 -0
  345. package/dist/types/modules/formula/compile/binder.d.ts +42 -0
  346. package/dist/types/modules/formula/compile/bound-ast.d.ts +230 -0
  347. package/dist/types/modules/formula/compile/compiled-formula.d.ts +137 -0
  348. package/dist/types/modules/formula/compile/dependency-analysis.d.ts +93 -0
  349. package/dist/types/modules/formula/compile/structured-ref-utils.d.ts +93 -0
  350. package/dist/types/modules/formula/default-syntax-probe.d.ts +79 -0
  351. package/dist/types/modules/formula/functions/_date-context.d.ts +4 -0
  352. package/dist/types/modules/formula/functions/_shared.d.ts +121 -0
  353. package/dist/types/modules/formula/functions/conditional.d.ts +27 -0
  354. package/dist/types/modules/formula/functions/database.d.ts +37 -0
  355. package/dist/types/modules/formula/functions/date.d.ts +61 -0
  356. package/dist/types/modules/formula/functions/dynamic-array.d.ts +23 -0
  357. package/dist/types/modules/formula/functions/engineering.d.ts +57 -0
  358. package/dist/types/modules/formula/functions/financial.d.ts +202 -0
  359. package/dist/types/modules/formula/functions/lookup.d.ts +18 -0
  360. package/dist/types/modules/formula/functions/math.d.ts +114 -0
  361. package/dist/types/modules/formula/functions/statistical.d.ts +193 -0
  362. package/dist/types/modules/formula/functions/text.d.ts +86 -0
  363. package/dist/types/modules/formula/host-registry.d.ts +53 -0
  364. package/dist/types/modules/formula/index.d.ts +39 -0
  365. package/dist/types/modules/formula/install.d.ts +62 -0
  366. package/dist/types/modules/formula/integration/apply-writeback-plan.d.ts +26 -0
  367. package/dist/types/modules/formula/integration/calculate-formulas-impl.d.ts +30 -0
  368. package/dist/types/modules/formula/integration/calculate-formulas.d.ts +67 -0
  369. package/dist/types/modules/formula/integration/formula-instance.d.ts +64 -0
  370. package/dist/types/modules/formula/integration/workbook-adapter.d.ts +26 -0
  371. package/dist/types/modules/formula/integration/workbook-snapshot.d.ts +267 -0
  372. package/dist/types/modules/formula/materialize/build-writeback-plan.d.ts +34 -0
  373. package/dist/types/modules/formula/materialize/spill-engine.d.ts +9 -0
  374. package/dist/types/modules/formula/materialize/types.d.ts +179 -0
  375. package/dist/types/modules/formula/materialize/writeback-plan.d.ts +167 -0
  376. package/dist/types/modules/formula/runtime/evaluator.d.ts +151 -0
  377. package/dist/types/modules/formula/runtime/function-registry.d.ts +47 -0
  378. package/dist/types/modules/formula/runtime/values.d.ts +211 -0
  379. package/dist/types/modules/formula/syntax/ast.d.ts +129 -0
  380. package/dist/types/modules/formula/syntax/parser.d.ts +18 -0
  381. package/dist/types/modules/formula/syntax/token-types.d.ts +153 -0
  382. package/dist/types/modules/formula/syntax/tokenizer.d.ts +10 -0
  383. package/package.json +28 -28
@@ -0,0 +1,385 @@
1
+ "use strict";
2
+ /**
3
+ * Runtime Value System — The engine's canonical value representation.
4
+ *
5
+ * Every value that flows through the formula evaluator is a `RuntimeValue`.
6
+ * This is a properly tagged discriminated union that all function
7
+ * implementations operate on directly — no adapter layer.
8
+ *
9
+ * ## Design Principles
10
+ *
11
+ * 1. **No Date objects** — dates are represented as their Excel serial
12
+ * number (a plain `number`). Date formatting is an output concern.
13
+ * 2. **No monkey-patched arrays** — `ArrayValue` is a proper type with
14
+ * explicit `height`, `width`, and optional origin metadata.
15
+ * 3. **Reference is a first-class value** — `ReferenceValue` can flow
16
+ * through the evaluator and be passed to functions.
17
+ * 4. **Error codes are strict** — `ErrorValue` uses a typed code enum.
18
+ * 5. **Lambda is a value** — `LambdaValue` is part of the value union.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.ERRORS = exports.BLANK = void 0;
22
+ exports.rvNumber = rvNumber;
23
+ exports.rvString = rvString;
24
+ exports.rvBoolean = rvBoolean;
25
+ exports.rvError = rvError;
26
+ exports.rvArray = rvArray;
27
+ exports.rvRef = rvRef;
28
+ exports.rvCellRef = rvCellRef;
29
+ exports.rvLambda = rvLambda;
30
+ exports.isError = isError;
31
+ exports.isArray = isArray;
32
+ exports.isLambda = isLambda;
33
+ exports.isScalar = isScalar;
34
+ exports.toNumberRV = toNumberRV;
35
+ exports.toStringRV = toStringRV;
36
+ exports.toBooleanRV = toBooleanRV;
37
+ exports.compareScalarsSameKind = compareScalarsSameKind;
38
+ exports.scalarEquals = scalarEquals;
39
+ exports.topLeft = topLeft;
40
+ exports.fromSnapshotValue = fromSnapshotValue;
41
+ // ============================================================================
42
+ // Singleton Constants
43
+ // ============================================================================
44
+ /** The singleton blank value. */
45
+ exports.BLANK = { kind: 0 /* RVKind.Blank */ };
46
+ /** Common error values. */
47
+ exports.ERRORS = {
48
+ VALUE: { kind: 4 /* RVKind.Error */, code: "#VALUE!" },
49
+ REF: { kind: 4 /* RVKind.Error */, code: "#REF!" },
50
+ NAME: { kind: 4 /* RVKind.Error */, code: "#NAME?" },
51
+ DIV0: { kind: 4 /* RVKind.Error */, code: "#DIV/0!" },
52
+ NA: { kind: 4 /* RVKind.Error */, code: "#N/A" },
53
+ NUM: { kind: 4 /* RVKind.Error */, code: "#NUM!" },
54
+ NULL: { kind: 4 /* RVKind.Error */, code: "#NULL!" },
55
+ SPILL: { kind: 4 /* RVKind.Error */, code: "#SPILL!" },
56
+ CALC: { kind: 4 /* RVKind.Error */, code: "#CALC!" }
57
+ };
58
+ // ============================================================================
59
+ // Constructor Helpers
60
+ // ============================================================================
61
+ function rvNumber(value) {
62
+ return { kind: 1 /* RVKind.Number */, value };
63
+ }
64
+ function rvString(value) {
65
+ return { kind: 2 /* RVKind.String */, value };
66
+ }
67
+ function rvBoolean(value) {
68
+ return { kind: 3 /* RVKind.Boolean */, value };
69
+ }
70
+ function rvError(code) {
71
+ return { kind: 4 /* RVKind.Error */, code };
72
+ }
73
+ function rvArray(rows, originRow, originCol, subtotalMask, hiddenRowMask) {
74
+ const height = rows.length;
75
+ // Determine max width across all rows for rectangular normalisation.
76
+ let width = 0;
77
+ for (const row of rows) {
78
+ if (row.length > width) {
79
+ width = row.length;
80
+ }
81
+ }
82
+ // Pad short rows with BLANK so the resulting ArrayValue is rectangular.
83
+ // The old implementation did `row.push(BLANK)` directly — mutating the
84
+ // caller's arrays. Callers that shared row references across multiple
85
+ // `rvArray` calls could observe surprise modifications; we now copy any
86
+ // row that needs padding and leave the caller's arrays untouched.
87
+ let normalisedRows = rows;
88
+ if (height > 0 && width > 0) {
89
+ let anyNeedPadding = false;
90
+ for (const row of rows) {
91
+ if (row.length < width) {
92
+ anyNeedPadding = true;
93
+ break;
94
+ }
95
+ }
96
+ if (anyNeedPadding) {
97
+ normalisedRows = new Array(height);
98
+ for (let r = 0; r < height; r++) {
99
+ const row = rows[r];
100
+ if (row.length === width) {
101
+ normalisedRows[r] = row;
102
+ continue;
103
+ }
104
+ const padded = new Array(width);
105
+ for (let c = 0; c < row.length; c++) {
106
+ padded[c] = row[c];
107
+ }
108
+ for (let c = row.length; c < width; c++) {
109
+ padded[c] = exports.BLANK;
110
+ }
111
+ normalisedRows[r] = padded;
112
+ }
113
+ }
114
+ }
115
+ return originRow !== undefined
116
+ ? {
117
+ kind: 5 /* RVKind.Array */,
118
+ rows: normalisedRows,
119
+ height,
120
+ width,
121
+ originRow,
122
+ originCol,
123
+ ...(subtotalMask ? { subtotalMask } : {}),
124
+ ...(hiddenRowMask ? { hiddenRowMask } : {})
125
+ }
126
+ : {
127
+ kind: 5 /* RVKind.Array */,
128
+ rows: normalisedRows,
129
+ height,
130
+ width,
131
+ ...(subtotalMask ? { subtotalMask } : {}),
132
+ ...(hiddenRowMask ? { hiddenRowMask } : {})
133
+ };
134
+ }
135
+ function rvRef(sheet, top, left, bottom, right) {
136
+ return {
137
+ kind: 6 /* RVKind.Reference */,
138
+ areas: [{ sheet, top, left, bottom, right }]
139
+ };
140
+ }
141
+ function rvCellRef(sheet, row, col) {
142
+ return {
143
+ kind: 6 /* RVKind.Reference */,
144
+ areas: [{ sheet, top: row, left: col, bottom: row, right: col }],
145
+ singleCell: true
146
+ };
147
+ }
148
+ function rvLambda(params, body, closureBindings) {
149
+ return { kind: 7 /* RVKind.Lambda */, params, body, closureBindings };
150
+ }
151
+ // ============================================================================
152
+ // Type Guards
153
+ // ============================================================================
154
+ function isError(v) {
155
+ return v.kind === 4 /* RVKind.Error */;
156
+ }
157
+ function isArray(v) {
158
+ return v.kind === 5 /* RVKind.Array */;
159
+ }
160
+ function isLambda(v) {
161
+ return v.kind === 7 /* RVKind.Lambda */;
162
+ }
163
+ function isScalar(v) {
164
+ return (v.kind === 0 /* RVKind.Blank */ ||
165
+ v.kind === 1 /* RVKind.Number */ ||
166
+ v.kind === 2 /* RVKind.String */ ||
167
+ v.kind === 3 /* RVKind.Boolean */ ||
168
+ v.kind === 4 /* RVKind.Error */);
169
+ }
170
+ // ============================================================================
171
+ // Coercion Helpers
172
+ // ============================================================================
173
+ /**
174
+ * Parse a user-facing numeric string the way Excel does.
175
+ *
176
+ * Accepts:
177
+ * - plain decimals: `"1"`, `"-1.5"`, `"+.25"`
178
+ * - scientific notation: `"1.2e3"`, `"2E-4"`
179
+ * - percentage suffix: `"50%"` → 0.5
180
+ * - leading/trailing whitespace around the above
181
+ *
182
+ * Rejects (unlike JavaScript's `Number()`):
183
+ * - empty strings and whitespace-only (`" "` would become 0)
184
+ * - `"Infinity"`, `"-Infinity"`, `"NaN"` (Excel treats as text)
185
+ * - hexadecimal (`"0x10"`), octal, binary literals
186
+ * - currency symbols, thousands separators, locale-specific formats
187
+ * (these are out of scope for the engine; callers should strip before
188
+ * calling)
189
+ *
190
+ * Returns `#VALUE!` on any rejection so the error bubbles naturally
191
+ * through formula evaluation.
192
+ */
193
+ function parseNumericString(raw) {
194
+ const s = raw.trim();
195
+ if (s === "") {
196
+ return exports.ERRORS.VALUE;
197
+ }
198
+ let body = s;
199
+ let percentFactor = 1;
200
+ if (body.endsWith("%")) {
201
+ percentFactor = 0.01;
202
+ body = body.slice(0, -1).trim();
203
+ if (body === "") {
204
+ return exports.ERRORS.VALUE;
205
+ }
206
+ }
207
+ // Require at least one digit somewhere; this shuts the door on
208
+ // "Infinity", "NaN", "0x10", "1e" (Excel's own lexer refuses these).
209
+ // The strict decimal grammar below also rejects "1_000" etc.
210
+ if (!/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/.test(body)) {
211
+ return exports.ERRORS.VALUE;
212
+ }
213
+ const n = Number(body);
214
+ if (!Number.isFinite(n)) {
215
+ return exports.ERRORS.VALUE;
216
+ }
217
+ return rvNumber(n * percentFactor);
218
+ }
219
+ /**
220
+ * Coerce a runtime value to a number.
221
+ * - Blank → 0
222
+ * - Number → itself
223
+ * - Boolean → 1 / 0
224
+ * - String → parse or #VALUE!
225
+ * - Error → propagate
226
+ */
227
+ function toNumberRV(v) {
228
+ switch (v.kind) {
229
+ case 1 /* RVKind.Number */:
230
+ return v;
231
+ case 0 /* RVKind.Blank */:
232
+ return rvNumber(0);
233
+ case 3 /* RVKind.Boolean */:
234
+ return rvNumber(v.value ? 1 : 0);
235
+ case 2 /* RVKind.String */: {
236
+ return parseNumericString(v.value);
237
+ }
238
+ case 4 /* RVKind.Error */:
239
+ return v;
240
+ default:
241
+ return exports.ERRORS.VALUE;
242
+ }
243
+ }
244
+ /**
245
+ * Coerce a runtime value to a string.
246
+ */
247
+ function toStringRV(v) {
248
+ switch (v.kind) {
249
+ case 2 /* RVKind.String */:
250
+ return v.value;
251
+ case 1 /* RVKind.Number */:
252
+ return String(v.value);
253
+ case 3 /* RVKind.Boolean */:
254
+ return v.value ? "TRUE" : "FALSE";
255
+ case 0 /* RVKind.Blank */:
256
+ return "";
257
+ case 4 /* RVKind.Error */:
258
+ return v.code;
259
+ default:
260
+ return "";
261
+ }
262
+ }
263
+ /**
264
+ * Coerce a runtime value to a boolean.
265
+ */
266
+ function toBooleanRV(v) {
267
+ switch (v.kind) {
268
+ case 3 /* RVKind.Boolean */:
269
+ return v;
270
+ case 1 /* RVKind.Number */:
271
+ return rvBoolean(v.value !== 0);
272
+ case 0 /* RVKind.Blank */:
273
+ return rvBoolean(false);
274
+ case 2 /* RVKind.String */: {
275
+ const u = v.value.toUpperCase();
276
+ if (u === "TRUE") {
277
+ return rvBoolean(true);
278
+ }
279
+ if (u === "FALSE") {
280
+ return rvBoolean(false);
281
+ }
282
+ return exports.ERRORS.VALUE;
283
+ }
284
+ case 4 /* RVKind.Error */:
285
+ return v;
286
+ default:
287
+ return exports.ERRORS.VALUE;
288
+ }
289
+ }
290
+ /**
291
+ * Structural equality of scalar values.
292
+ *
293
+ * - Different kinds → false
294
+ * - Number / Boolean / Blank → strict value equality (Blank always equal)
295
+ * - String → case-insensitive comparison (Excel semantics)
296
+ * - Error → not equal (errors do not compare equal to each other)
297
+ */
298
+ /**
299
+ * Three-way compare two scalars that share a kind.
300
+ *
301
+ * Returns a negative number if `a < b`, zero if equal, positive if `a > b`.
302
+ * Returns `NaN` when the kinds differ or cannot be ordered (e.g. errors);
303
+ * callers decide how to surface the incomparability — sort helpers usually
304
+ * skip NaN pairs, while comparison operators route to a kind-priority
305
+ * tiebreak. Strings are compared case-insensitively to match Excel.
306
+ */
307
+ function compareScalarsSameKind(a, b) {
308
+ if (a.kind !== b.kind) {
309
+ return Number.NaN;
310
+ }
311
+ switch (a.kind) {
312
+ case 1 /* RVKind.Number */:
313
+ return a.value - b.value;
314
+ case 2 /* RVKind.String */: {
315
+ const al = a.value.toLowerCase();
316
+ const bl = b.value.toLowerCase();
317
+ return al < bl ? -1 : al > bl ? 1 : 0;
318
+ }
319
+ case 3 /* RVKind.Boolean */: {
320
+ const bv = b.value;
321
+ return a.value === bv ? 0 : a.value ? 1 : -1;
322
+ }
323
+ case 0 /* RVKind.Blank */:
324
+ return 0;
325
+ default:
326
+ return Number.NaN;
327
+ }
328
+ }
329
+ function scalarEquals(a, b) {
330
+ if (a.kind !== b.kind) {
331
+ return false;
332
+ }
333
+ switch (a.kind) {
334
+ case 1 /* RVKind.Number */:
335
+ return a.value === b.value;
336
+ case 2 /* RVKind.String */:
337
+ return a.value.toLowerCase() === b.value.toLowerCase();
338
+ case 3 /* RVKind.Boolean */:
339
+ return a.value === b.value;
340
+ case 0 /* RVKind.Blank */:
341
+ return true;
342
+ default:
343
+ return false;
344
+ }
345
+ }
346
+ /**
347
+ * Get the top-left scalar from any value (for implicit intersection fallback).
348
+ */
349
+ function topLeft(v) {
350
+ if (isScalar(v)) {
351
+ return v;
352
+ }
353
+ if (v.kind === 5 /* RVKind.Array */) {
354
+ if (v.height === 0 || v.width === 0) {
355
+ return exports.BLANK;
356
+ }
357
+ return v.rows[0][0];
358
+ }
359
+ // Reference, Lambda → need context to resolve
360
+ return exports.ERRORS.VALUE;
361
+ }
362
+ // ============================================================================
363
+ // Snapshot Value Conversion
364
+ // ============================================================================
365
+ /**
366
+ * Convert a SnapshotCellValue to a RuntimeValue.
367
+ */
368
+ function fromSnapshotValue(v) {
369
+ if (v === null) {
370
+ return exports.BLANK;
371
+ }
372
+ if (typeof v === "number") {
373
+ return rvNumber(v);
374
+ }
375
+ if (typeof v === "string") {
376
+ return rvString(v);
377
+ }
378
+ if (typeof v === "boolean") {
379
+ return rvBoolean(v);
380
+ }
381
+ if (typeof v === "object" && "error" in v) {
382
+ return rvError(v.error);
383
+ }
384
+ return exports.BLANK;
385
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * AST Node Types for Formula Parser
4
+ *
5
+ * Defines the Abstract Syntax Tree node types as a proper discriminated union.
6
+ * Each node variant carries only the data relevant to its type.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });