@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,396 @@
1
+ "use strict";
2
+ /**
3
+ * Shared helpers for native function implementations.
4
+ *
5
+ * Centralizes small utilities that were previously duplicated across multiple
6
+ * function files (math, statistical, financial, text, date, engineering,
7
+ * conditional, dynamic-array, database, lookup). None of these change runtime
8
+ * semantics — they are the canonical extractions of the identical helpers that
9
+ * appeared in several modules.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.checkError = checkError;
13
+ exports.argToNumber = argToNumber;
14
+ exports.flattenNumbers = flattenNumbers;
15
+ exports.flattenAll = flattenAll;
16
+ exports.firstError = firstError;
17
+ exports.asArray = asArray;
18
+ exports.getCell = getCell;
19
+ exports.hasUnescapedWildcard = hasUnescapedWildcard;
20
+ exports.excelWildcardToRegex = excelWildcardToRegex;
21
+ exports.unescapeExcelWildcard = unescapeExcelWildcard;
22
+ exports.stripSubtotalMaskedCells = stripSubtotalMaskedCells;
23
+ exports.stripHiddenRowCells = stripHiddenRowCells;
24
+ exports.stripErrorCells = stripErrorCells;
25
+ const values_1 = require("../runtime/values");
26
+ // ============================================================================
27
+ // Error propagation
28
+ // ============================================================================
29
+ /**
30
+ * Return the error value if `v` (as a scalar, extracted via `topLeft`) is an
31
+ * error; otherwise return `null`. Used by text / date / engineering functions
32
+ * for the standard "propagate first-arg error" pattern.
33
+ */
34
+ function checkError(v) {
35
+ const s = (0, values_1.topLeft)(v);
36
+ return s.kind === 4 /* RVKind.Error */ ? s : null;
37
+ }
38
+ // ============================================================================
39
+ // Argument coercion
40
+ // ============================================================================
41
+ /**
42
+ * Coerce a single RuntimeValue argument to a number. Applies `topLeft` first
43
+ * so that a 1×1 (or arbitrary) array yields its top-left scalar before
44
+ * numeric coercion. Matches the semantics formerly found as `argToNumber` in
45
+ * `math.ts` and `numArg(args, idx)` in `statistical.ts`.
46
+ */
47
+ function argToNumber(arg) {
48
+ const s = (0, values_1.topLeft)(arg);
49
+ if (s.kind === 4 /* RVKind.Error */) {
50
+ return s;
51
+ }
52
+ return (0, values_1.toNumberRV)(s);
53
+ }
54
+ // ============================================================================
55
+ // Flattening
56
+ // ============================================================================
57
+ /**
58
+ * Flatten a list of arguments into a sequence of numeric values (or errors).
59
+ *
60
+ * Array arguments contribute only their `Number` and `Error` cells — booleans,
61
+ * strings, and blanks inside arrays are skipped (Excel range semantics).
62
+ * Direct scalar arguments are coerced via `toNumberRV`, except for direct
63
+ * `Blank` scalars which are skipped (Excel aggregate semantics).
64
+ *
65
+ * Returns a list of `NumberValue | ErrorValue`. Callers that need raw
66
+ * `number[]` after an error check should map `.value` themselves.
67
+ */
68
+ function flattenNumbers(args) {
69
+ const result = [];
70
+ for (const arg of args) {
71
+ if (arg.kind === 5 /* RVKind.Array */) {
72
+ for (const row of arg.rows) {
73
+ for (const cell of row) {
74
+ if (cell.kind === 4 /* RVKind.Error */) {
75
+ result.push(cell);
76
+ }
77
+ else if (cell.kind === 1 /* RVKind.Number */) {
78
+ result.push(cell);
79
+ }
80
+ // Skip booleans, strings, blanks in array context (Excel behavior).
81
+ }
82
+ }
83
+ }
84
+ else if (arg.kind === 4 /* RVKind.Error */) {
85
+ result.push(arg);
86
+ }
87
+ else if (arg.kind !== 0 /* RVKind.Blank */) {
88
+ result.push((0, values_1.toNumberRV)(arg));
89
+ }
90
+ // Skip blanks for direct scalar args.
91
+ }
92
+ return result;
93
+ }
94
+ /**
95
+ * Flatten all cells from the arguments into a flat list of ScalarValue,
96
+ * preserving every cell (including blanks, errors, booleans, strings).
97
+ * Direct scalar arguments are projected via `topLeft`.
98
+ */
99
+ function flattenAll(args) {
100
+ const result = [];
101
+ for (const arg of args) {
102
+ if (arg.kind === 5 /* RVKind.Array */) {
103
+ for (const row of arg.rows) {
104
+ for (const cell of row) {
105
+ result.push(cell);
106
+ }
107
+ }
108
+ }
109
+ else {
110
+ result.push((0, values_1.topLeft)(arg));
111
+ }
112
+ }
113
+ return result;
114
+ }
115
+ /**
116
+ * Return the first `ErrorValue` in a list of `NumberValue | ErrorValue`,
117
+ * or `null` if none is present.
118
+ */
119
+ function firstError(values) {
120
+ for (const v of values) {
121
+ if (v.kind === 4 /* RVKind.Error */) {
122
+ return v;
123
+ }
124
+ }
125
+ return null;
126
+ }
127
+ // ============================================================================
128
+ // Array helpers
129
+ // ============================================================================
130
+ /**
131
+ * Narrow a RuntimeValue to an ArrayValue, returning `null` if it is not an
132
+ * array. Used by conditional / database / lookup / dynamic-array families.
133
+ */
134
+ function asArray(v) {
135
+ return v.kind === 5 /* RVKind.Array */ ? v : null;
136
+ }
137
+ /**
138
+ * Safe cell accessor for ArrayValue — returns `BLANK` for out-of-bounds (r, c).
139
+ */
140
+ function getCell(arr, r, c) {
141
+ if (r < arr.height && c < arr.width) {
142
+ return arr.rows[r][c];
143
+ }
144
+ return values_1.BLANK;
145
+ }
146
+ // ============================================================================
147
+ // Excel wildcard helpers
148
+ // ============================================================================
149
+ /**
150
+ * Return `true` if `s` contains an unescaped `*` or `?`. Excel uses `~` as
151
+ * the escape character, so `~*` and `~?` are literals while `*` and `?` at
152
+ * any other position are wildcards. `~~` is an escaped tilde.
153
+ *
154
+ * Centralised here so every wildcard-consuming function (SEARCH, MATCH,
155
+ * XLOOKUP, SUMIF/COUNTIF/…) agrees on whether a criterion should trigger
156
+ * the wildcard code path.
157
+ */
158
+ function hasUnescapedWildcard(s) {
159
+ for (let i = 0; i < s.length; i++) {
160
+ const ch = s[i];
161
+ if (ch === "~" && i + 1 < s.length) {
162
+ i++; // skip the escaped char
163
+ continue;
164
+ }
165
+ if (ch === "*" || ch === "?") {
166
+ return true;
167
+ }
168
+ }
169
+ return false;
170
+ }
171
+ /** Escape a single character for use in a regex literal. */
172
+ function regexEscapeChar(ch) {
173
+ return /[.*+^${}()|[\]\\?]/.test(ch) ? "\\" + ch : ch;
174
+ }
175
+ /**
176
+ * Convert an Excel wildcard pattern to a JavaScript regex source. Rules:
177
+ * `*` → `.*`
178
+ * `?` → `.`
179
+ * `~*` → literal `*`
180
+ * `~?` → literal `?`
181
+ * `~~` → literal `~`
182
+ * `~x` → literal `x` (any other character after `~` is treated literally,
183
+ * matching Excel's tolerant behaviour)
184
+ * everything else → regex-escaped literal
185
+ *
186
+ * Callers typically wrap the result in `^…$` and use the `i` flag for
187
+ * case-insensitive matching.
188
+ */
189
+ function excelWildcardToRegex(s) {
190
+ let out = "";
191
+ for (let i = 0; i < s.length; i++) {
192
+ const ch = s[i];
193
+ if (ch === "~" && i + 1 < s.length) {
194
+ out += regexEscapeChar(s[i + 1]);
195
+ i++;
196
+ continue;
197
+ }
198
+ if (ch === "*") {
199
+ out += ".*";
200
+ continue;
201
+ }
202
+ if (ch === "?") {
203
+ out += ".";
204
+ continue;
205
+ }
206
+ out += regexEscapeChar(ch);
207
+ }
208
+ return out;
209
+ }
210
+ /**
211
+ * Strip `~` escape characters from an Excel criteria string so the remaining
212
+ * text can be used for a literal comparison. `~*` → `*`, `~?` → `?`,
213
+ * `~~` → `~`, etc. Only used when the caller has already determined that the
214
+ * pattern contains no unescaped wildcards.
215
+ */
216
+ function unescapeExcelWildcard(s) {
217
+ let out = "";
218
+ for (let i = 0; i < s.length; i++) {
219
+ const ch = s[i];
220
+ if (ch === "~" && i + 1 < s.length) {
221
+ out += s[i + 1];
222
+ i++;
223
+ continue;
224
+ }
225
+ out += ch;
226
+ }
227
+ return out;
228
+ }
229
+ /**
230
+ * Replace every cell marked by the array's `subtotalMask` with BLANK so an
231
+ * outer SUBTOTAL/AGGREGATE call does not double-count the inner aggregate's
232
+ * result. Only ArrayValue args carrying a mask are rewritten; scalars and
233
+ * arrays without masks pass through unchanged.
234
+ *
235
+ * Excel behavior: SUBTOTAL and AGGREGATE deliberately skip any cell whose
236
+ * own formula is itself SUBTOTAL or AGGREGATE — this is how the classic
237
+ * "totals row inside a filtered range" case works without double-counting.
238
+ */
239
+ function stripSubtotalMaskedCells(args) {
240
+ let needsCopy = false;
241
+ for (const arg of args) {
242
+ if (arg.kind === 5 /* RVKind.Array */ && arg.subtotalMask) {
243
+ needsCopy = true;
244
+ break;
245
+ }
246
+ }
247
+ if (!needsCopy) {
248
+ return args;
249
+ }
250
+ const out = [];
251
+ for (const arg of args) {
252
+ if (arg.kind !== 5 /* RVKind.Array */ || !arg.subtotalMask) {
253
+ out.push(arg);
254
+ continue;
255
+ }
256
+ const mask = arg.subtotalMask;
257
+ const newRows = [];
258
+ for (let r = 0; r < arg.height; r++) {
259
+ const srcRow = arg.rows[r];
260
+ const maskRow = mask[r];
261
+ const newRow = new Array(arg.width);
262
+ for (let c = 0; c < arg.width; c++) {
263
+ newRow[c] = maskRow?.[c] ? values_1.BLANK : srcRow[c];
264
+ }
265
+ newRows.push(newRow);
266
+ }
267
+ // Drop the mask on the rewritten array — masked cells are already BLANK.
268
+ // Preserve hiddenRowMask so downstream SUBTOTAL 1xx / AGGREGATE opt
269
+ // 5/7 handling still applies to rows whose visibility was recorded.
270
+ out.push({
271
+ kind: 5 /* RVKind.Array */,
272
+ rows: newRows,
273
+ height: arg.height,
274
+ width: arg.width,
275
+ ...(arg.originRow !== undefined
276
+ ? { originRow: arg.originRow, originCol: arg.originCol }
277
+ : {}),
278
+ ...(arg.hiddenRowMask ? { hiddenRowMask: arg.hiddenRowMask } : {})
279
+ });
280
+ }
281
+ return out;
282
+ }
283
+ /**
284
+ * Replace every cell in a hidden row with BLANK so aggregate functions
285
+ * drop them during flattening. Callers: SUBTOTAL's 1xx-variant codes
286
+ * (101-111) and AGGREGATE with option 5 or 7.
287
+ *
288
+ * Only ArrayValue args carrying a hiddenRowMask are rewritten.
289
+ */
290
+ function stripHiddenRowCells(args) {
291
+ let needsCopy = false;
292
+ for (const arg of args) {
293
+ if (arg.kind === 5 /* RVKind.Array */ && arg.hiddenRowMask) {
294
+ needsCopy = true;
295
+ break;
296
+ }
297
+ }
298
+ if (!needsCopy) {
299
+ return args;
300
+ }
301
+ const out = [];
302
+ for (const arg of args) {
303
+ if (arg.kind !== 5 /* RVKind.Array */ || !arg.hiddenRowMask) {
304
+ out.push(arg);
305
+ continue;
306
+ }
307
+ const mask = arg.hiddenRowMask;
308
+ const newRows = [];
309
+ for (let r = 0; r < arg.height; r++) {
310
+ if (mask[r]) {
311
+ const blankRow = new Array(arg.width).fill(values_1.BLANK);
312
+ newRows.push(blankRow);
313
+ }
314
+ else {
315
+ newRows.push(arg.rows[r].slice());
316
+ }
317
+ }
318
+ // Drop hiddenRowMask on rewritten output; preserve subtotalMask if any.
319
+ out.push({
320
+ kind: 5 /* RVKind.Array */,
321
+ rows: newRows,
322
+ height: arg.height,
323
+ width: arg.width,
324
+ ...(arg.originRow !== undefined
325
+ ? { originRow: arg.originRow, originCol: arg.originCol }
326
+ : {}),
327
+ ...(arg.subtotalMask ? { subtotalMask: arg.subtotalMask } : {})
328
+ });
329
+ }
330
+ return out;
331
+ }
332
+ /**
333
+ * Replace every error cell inside ArrayValue args with BLANK so
334
+ * aggregate functions simply skip them during flattening. Callers:
335
+ * AGGREGATE with option 2, 3, 6, or 7.
336
+ *
337
+ * Direct scalar error args are left alone — AGGREGATE's caller
338
+ * already passes them as scalars; our aggregators will surface them
339
+ * as-is, which matches Excel when a direct literal is an error.
340
+ *
341
+ * This is distinct from the standard error-propagation path: arrays
342
+ * that contain errors normally propagate those errors out of the
343
+ * aggregate. With option 2/3/6/7, errors inside the *arrays* are
344
+ * deliberately ignored.
345
+ */
346
+ function stripErrorCells(args) {
347
+ let needsCopy = false;
348
+ for (const arg of args) {
349
+ if (arg.kind === 5 /* RVKind.Array */) {
350
+ for (const row of arg.rows) {
351
+ for (const cell of row) {
352
+ if (cell.kind === 4 /* RVKind.Error */) {
353
+ needsCopy = true;
354
+ break;
355
+ }
356
+ }
357
+ if (needsCopy) {
358
+ break;
359
+ }
360
+ }
361
+ if (needsCopy) {
362
+ break;
363
+ }
364
+ }
365
+ }
366
+ if (!needsCopy) {
367
+ return args;
368
+ }
369
+ const out = [];
370
+ for (const arg of args) {
371
+ if (arg.kind !== 5 /* RVKind.Array */) {
372
+ out.push(arg);
373
+ continue;
374
+ }
375
+ const newRows = [];
376
+ for (const srcRow of arg.rows) {
377
+ const newRow = new Array(srcRow.length);
378
+ for (let c = 0; c < srcRow.length; c++) {
379
+ newRow[c] = srcRow[c].kind === 4 /* RVKind.Error */ ? values_1.BLANK : srcRow[c];
380
+ }
381
+ newRows.push(newRow);
382
+ }
383
+ out.push({
384
+ kind: 5 /* RVKind.Array */,
385
+ rows: newRows,
386
+ height: arg.height,
387
+ width: arg.width,
388
+ ...(arg.originRow !== undefined
389
+ ? { originRow: arg.originRow, originCol: arg.originCol }
390
+ : {}),
391
+ ...(arg.subtotalMask ? { subtotalMask: arg.subtotalMask } : {}),
392
+ ...(arg.hiddenRowMask ? { hiddenRowMask: arg.hiddenRowMask } : {})
393
+ });
394
+ }
395
+ return out;
396
+ }