@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
@@ -31,7 +31,7 @@ export { DefinedNames, type DefinedNameModel } from "./modules/excel/defined-nam
31
31
  export type { CheckboxState } from "./modules/excel/form-control.js";
32
32
  export type { ColumnDefn, ColumnHeaderValue } from "./modules/excel/column.js";
33
33
  export type { RangeInput } from "./modules/excel/range.js";
34
- export type { WorkbookModel, WorkbookMedia } from "./modules/excel/workbook.js";
34
+ export type { WorkbookModel, WorkbookMedia, WorkbookProtectionModel, ExternalLinkModel, ExternalLinkCachedSheet } from "./modules/excel/workbook.js";
35
35
  export { decodeCol, encodeCol, decodeRow, encodeRow, decodeCell, encodeCell, decodeRange, encodeRange } from "./modules/excel/utils/address.js";
36
36
  export type { CellAddress, SheetRange, Origin } from "./modules/excel/utils/address.js";
37
37
  export type { SheetToJSONOptions, AddJSONOptions, AddAOAOptions } from "./modules/excel/worksheet.js";
@@ -30,7 +30,7 @@ export { DefinedNames, type DefinedNameModel } from "./modules/excel/defined-nam
30
30
  export type { CheckboxState } from "./modules/excel/form-control.js";
31
31
  export type { ColumnDefn, ColumnHeaderValue } from "./modules/excel/column.js";
32
32
  export type { RangeInput } from "./modules/excel/range.js";
33
- export type { WorkbookModel, WorkbookMedia } from "./modules/excel/workbook.js";
33
+ export type { WorkbookModel, WorkbookMedia, WorkbookProtectionModel, ExternalLinkModel, ExternalLinkCachedSheet } from "./modules/excel/workbook.js";
34
34
  export type { NodeInput } from "./modules/excel/stream/workbook-reader.js";
35
35
  export { decodeCol, encodeCol, decodeRow, encodeRow, decodeCell, encodeCell, decodeRange, encodeRange } from "./modules/excel/utils/address.js";
36
36
  export type { CellAddress, SheetRange, Origin } from "./modules/excel/utils/address.js";
@@ -2,7 +2,7 @@ import type { Column } from "./column.js";
2
2
  import type { ValueType, FormulaType } from "./enums.js";
3
3
  import { Note } from "./note.js";
4
4
  import type { Row } from "./row.js";
5
- import type { Style, NumFmt, Font, Alignment, Protection, Borders, Fill, CellRichTextValue, CellErrorValue, DataValidation, CellValue, CellHyperlinkValue } from "./types.js";
5
+ import type { Style, NumFmt, Font, Alignment, Protection, Borders, Fill, CellRichTextValue, CellErrorValue, DataValidation, CellValue, CellValueInput, CellHyperlinkValue, RichText } from "./types.js";
6
6
  import type { Workbook } from "./workbook.js";
7
7
  import type { Worksheet } from "./worksheet.js";
8
8
  export type FormulaResult = string | number | boolean | Date | CellErrorValue;
@@ -13,6 +13,7 @@ export interface FormulaValueData {
13
13
  sharedFormula?: string;
14
14
  result?: FormulaResult;
15
15
  date1904?: boolean;
16
+ isDynamicArray?: boolean;
16
17
  }
17
18
  interface FullAddress {
18
19
  sheetName: string;
@@ -62,12 +63,24 @@ export interface CellModel {
62
63
  formula?: string;
63
64
  sharedFormula?: string;
64
65
  result?: FormulaResult;
65
- richText?: CellRichTextValue;
66
+ /**
67
+ * Rich-text runs associated with this cell.
68
+ *
69
+ * - When `type === RichText`, this holds a CellRichTextValue (object wrapping
70
+ * the runs array) — this is the historical, cell-level rich-text payload.
71
+ * - When `type === Hyperlink`, this holds a plain RichText[] — the runs used
72
+ * for formatted display of the hyperlink text.
73
+ *
74
+ * Callers should branch on `type` before accessing the shape.
75
+ */
76
+ richText?: CellRichTextValue | RichText[];
66
77
  sharedString?: number;
67
78
  error?: CellErrorValue;
68
79
  rawValue?: unknown;
80
+ isDynamicArray?: boolean;
69
81
  }
70
82
  export type CellValueType = CellValue;
83
+ export type CellValueInputType = CellValueInput;
71
84
  declare class Cell {
72
85
  static Types: typeof ValueType;
73
86
  private _row;
@@ -111,7 +124,7 @@ declare class Cell {
111
124
  get isHyperlink(): boolean;
112
125
  get hyperlink(): string | undefined;
113
126
  get value(): CellValueType;
114
- set value(v: CellValueType);
127
+ set value(v: CellValueInputType);
115
128
  get note(): string | NoteConfig | undefined;
116
129
  set note(note: string | NoteConfig);
117
130
  get comment(): Note | undefined;
@@ -121,6 +134,7 @@ declare class Cell {
121
134
  toString(): string;
122
135
  get formula(): string | undefined;
123
136
  get result(): FormulaResult | undefined;
137
+ set result(value: FormulaResult | undefined);
124
138
  get formulaType(): FormulaType;
125
139
  get fullAddress(): FullAddress;
126
140
  get name(): string;
@@ -2,6 +2,7 @@ import { Range } from "./range.js";
2
2
  import type { Address } from "./types.js";
3
3
  import { CellMatrix } from "./utils/cell-matrix.js";
4
4
  import { type DecodedRange } from "./utils/col-cache.js";
5
+ import { type SyntaxProbe } from "../formula/default-syntax-probe.js";
5
6
  interface DefinedNameCell {
6
7
  sheetName?: string;
7
8
  address: string;
@@ -13,25 +14,119 @@ type CellLocation = Address | DecodedRange;
13
14
  interface DefinedNameModel {
14
15
  name: string;
15
16
  ranges: string[];
17
+ localSheetId?: number;
18
+ /** Formula expression for formula-based defined names (e.g. "LAMBDA(x,y,x+y)") */
19
+ formulaExpression?: string;
20
+ /** Original XML text — preserved for opaque names round-trip */
21
+ rawText?: string;
22
+ /**
23
+ * Classification determined by the semantic layer:
24
+ * - "reference": pure cell/range union — stored in matrixMap
25
+ * - "formula": parseable expression — stored in formulaMap
26
+ * - "opaque": unrecognised content preserved for round-trip — stored in opaqueMap
27
+ */
28
+ kind?: "reference" | "formula" | "opaque";
29
+ }
30
+ /** Stored entry for an opaque (unrecognised) defined name. */
31
+ interface OpaqueEntry {
32
+ rawText: string;
33
+ localSheetId?: number;
16
34
  }
17
35
  declare class DefinedNames {
18
36
  matrixMap: Record<string, CellMatrix>;
19
- constructor();
37
+ /**
38
+ * Formula-based defined names: storageKey → formula expression string.
39
+ */
40
+ formulaMap: Record<string, string>;
41
+ /**
42
+ * Tracks the localSheetId for each storage key.
43
+ * If a key is not in this map, the name is workbook-scoped (global).
44
+ */
45
+ localSheetIdMap: Record<string, number>;
46
+ /**
47
+ * Opaque defined names: storageKey → original text + optional localSheetId.
48
+ */
49
+ opaqueMap: Record<string, OpaqueEntry>;
50
+ /**
51
+ * Reverse mapping: storageKey → original name (bare, without scope suffix).
52
+ * Needed because storageKey encodes the scope, but consumers need the bare name.
53
+ */
54
+ nameForKey: Record<string, string>;
55
+ /**
56
+ * Optional explicit formula-syntax probe. When set, this is used to
57
+ * classify non-range, non-wrapper defined-name text during `set model`.
58
+ * When unset, the classifier falls back to the process-wide default
59
+ * probe (set by `installFormulaEngine()`). When neither is available,
60
+ * classification is conservative — non-range text becomes opaque.
61
+ */
62
+ private readonly _explicitProbe;
63
+ /**
64
+ * @param probe Optional formula-syntax probe used when classifying
65
+ * defined-name text. Injecting a probe here makes classification
66
+ * deterministic for this instance regardless of process-global
67
+ * `installFormulaEngine()` state. When omitted, the instance defers
68
+ * to the default probe at classification time (see `set model`).
69
+ */
70
+ constructor(probe?: SyntaxProbe);
20
71
  getMatrix(name: string): CellMatrix;
21
72
  add(locStr: string, name: string): void;
22
73
  addEx(location: CellLocation, name: string): void;
74
+ /**
75
+ * Register a formula-based defined name.
76
+ *
77
+ * Unlike `add()` which binds a name to a cell/range reference, this binds
78
+ * a name to an arbitrary formula expression that will be evaluated at
79
+ * calculation time.
80
+ *
81
+ * @param name - The defined name (e.g. "MyArray")
82
+ * @param expression - The formula expression (e.g. "{1,2;3,4}", "LAMBDA(x,y,x+y)")
83
+ */
84
+ addFormula(name: string, expression: string): void;
23
85
  remove(locStr: string, name: string): void;
24
86
  removeEx(location: CellLocation, name: string): void;
25
87
  removeAllNames(location: CellLocation): void;
26
88
  forEach(callback: (name: string, cell: DefinedNameCell) => void): void;
27
89
  getNames(addressStr: string): string[];
28
90
  getNamesEx(address: Address): string[];
91
+ /**
92
+ * Return all defined name entries in this collection, including scope info.
93
+ * Each entry has the bare name and optional localSheetId.
94
+ * Same bare name may appear multiple times with different scopes.
95
+ */
96
+ getAllNames(): {
97
+ name: string;
98
+ localSheetId?: number;
99
+ }[];
100
+ /**
101
+ * Return all defined name entries with full details (name, ranges, scope).
102
+ *
103
+ * This is the primary enumeration API. Each entry is self-contained —
104
+ * no second lookup is needed. Same bare name may appear multiple times
105
+ * with different scopes.
106
+ */
107
+ getAllEntries(): DefinedNameModel[];
29
108
  _explore(matrix: CellMatrix, cell: DefinedNameCell): Range;
109
+ /**
110
+ * Get ranges for a specific scoped entry.
111
+ *
112
+ * Unlike `getRanges(name)` which uses the bare name (and may hit the
113
+ * wrong scope when the same name exists both globally and locally),
114
+ * this method uses the internal `storageKey` to look up the exact entry.
115
+ */
116
+ getRangesScoped(name: string, localSheetId?: number): DefinedNameModel;
30
117
  getRanges(name: string, matrix?: CellMatrix): DefinedNameModel;
31
118
  normaliseMatrix(matrix: CellMatrix, sheetName: string): void;
32
119
  spliceRows(sheetName: string, start: number, numDelete: number, numInsert: number): void;
33
120
  spliceColumns(sheetName: string, start: number, numDelete: number, numInsert: number): void;
34
121
  get model(): DefinedNameModel[];
122
+ /**
123
+ * Deserialise an array of `DefinedNameModel` entries (typically from XLSX parsing).
124
+ *
125
+ * Stage 2 of the two-phase design: each entry's `rawText` is classified
126
+ * into reference / formula / opaque by `classifyDefinedName()`. Entries
127
+ * that arrive without `rawText` (programmatic API) fall back to inspecting
128
+ * the existing `ranges` and `formulaExpression` fields for compatibility.
129
+ */
35
130
  set model(value: DefinedNameModel[]);
36
131
  }
37
132
  export { DefinedNames, type DefinedNameModel };
@@ -8,12 +8,19 @@ interface ImageExt {
8
8
  width?: number;
9
9
  height?: number;
10
10
  }
11
+ /** Absolute position in pixels (for absoluteAnchor). */
12
+ interface ImagePos {
13
+ x: number;
14
+ y: number;
15
+ }
11
16
  interface ImageRange {
12
17
  tl: Anchor;
13
18
  br?: Anchor;
14
19
  ext?: ImageExt;
15
20
  editAs?: string;
16
21
  hyperlinks?: ImageHyperlinks;
22
+ /** Absolute position — mutually exclusive with tl/br cell anchors. */
23
+ pos?: ImagePos;
17
24
  }
18
25
  interface BackgroundModel {
19
26
  type: "background";
@@ -37,6 +44,8 @@ interface ImageRangeModel {
37
44
  br?: AnchorModel;
38
45
  ext?: ImageExt;
39
46
  editAs?: string;
47
+ /** Absolute position — when present, tl/br are ignored. */
48
+ pos?: ImagePos;
40
49
  }
41
50
  interface ImageModel {
42
51
  type: "image";
@@ -58,6 +67,8 @@ interface RangeInput {
58
67
  ext?: ImageExt;
59
68
  editAs?: string;
60
69
  hyperlinks?: ImageHyperlinks;
70
+ /** Absolute position — when present, tl/br are ignored. */
71
+ pos?: ImagePos;
61
72
  }
62
73
  interface ModelInput {
63
74
  type: string;
@@ -8,6 +8,7 @@
8
8
  * Node.js uses `workbook-reader.ts`, which extends the same base implementation
9
9
  * with filesystem-specific features (filename input + temp-file buffering).
10
10
  */
11
+ import type { ZipEntry } from "../../archive/unzip/stream.js";
11
12
  import { HyperlinkReader, type Hyperlink } from "./hyperlink-reader.js";
12
13
  import { WorksheetReader } from "./worksheet-reader.js";
13
14
  import type { WorksheetState, Font, WorkbookProperties } from "../types.js";
@@ -72,7 +73,7 @@ export type ParseEvent<TWorksheetReader, THyperlinkReader> = SharedStringEvent |
72
73
  export interface WaitingWorksheetEntry {
73
74
  eventType: "waiting-worksheet";
74
75
  sheetNo: string;
75
- entry: any;
76
+ entry: ZipEntry;
76
77
  }
77
78
  export type CommonInput = Uint8Array | ArrayBuffer | Readable | ReadableStream<Uint8Array>;
78
79
  export interface WorkbookReaderOptions {
@@ -120,6 +121,10 @@ export declare abstract class WorkbookReaderBase<TInput, TWorksheetReader extend
120
121
  workbookRels?: WorkbookRelationship[];
121
122
  properties?: WorkbookPropertiesXform;
122
123
  model?: WorkbookModel;
124
+ /** Whether xl/metadata.xml contains XLDAPR dynamic array metadata */
125
+ hasDynamicArrayMetadata: boolean;
126
+ /** Precise set of cm values (1-indexed) that map to XLDAPR metadataType */
127
+ dynamicArrayCmIndices?: Set<number>;
123
128
  /** Maximum bytes to buffer for worksheets waiting on prerequisites. Default: 256 MB. */
124
129
  protected _maxBufferedBytes: number;
125
130
  /** Running total of bytes buffered for waiting worksheets. */
@@ -134,7 +139,7 @@ export declare abstract class WorkbookReaderBase<TInput, TWorksheetReader extend
134
139
  protected HyperlinkReaderClass: ReaderConstructor<THyperlinkReader, this>;
135
140
  constructor(input: TInput, options: WorkbookReaderOptions, WorksheetReaderClass: ReaderConstructor<TWorksheetReader, any>, HyperlinkReaderClass: ReaderConstructor<THyperlinkReader, any>);
136
141
  protected _getStream(input: TInput): Readable;
137
- abstract _storeWaitingWorksheet(sheetNo: string, entry: any): Promise<TWaitingWorksheet>;
142
+ abstract _storeWaitingWorksheet(sheetNo: string, entry: ZipEntry): Promise<TWaitingWorksheet>;
138
143
  abstract _processWaitingWorksheets(waitingWorksheets: TWaitingWorksheet[]): AsyncIterableIterator<WorksheetReadyEvent<TWorksheetReader>>;
139
144
  protected _cleanupWaitingWorksheets(_waitingWorksheets: TWaitingWorksheet[]): void;
140
145
  private _createWorksheetReader;
@@ -147,6 +152,7 @@ export declare abstract class WorkbookReaderBase<TInput, TWorksheetReader extend
147
152
  private _parseWorkbook;
148
153
  private _parseSharedStrings;
149
154
  private _parseStyles;
155
+ private _parseMetadata;
150
156
  protected _parseWorksheet(iterator: AsyncIterable<unknown>, sheetNo: string): IterableIterator<WorksheetReadyEvent<TWorksheetReader>>;
151
157
  protected _parseHyperlinks(iterator: AsyncIterable<unknown>, sheetNo: string): AsyncIterableIterator<HyperlinksEvent<THyperlinkReader>>;
152
158
  protected _parseEntries(stream: Readable): AsyncIterableIterator<ParseEvent<TWorksheetReader, THyperlinkReader> | WaitingWorksheetEntry>;
@@ -164,7 +170,7 @@ interface WaitingWorksheet {
164
170
  }
165
171
  declare class WorkbookReader extends WorkbookReaderBase<CommonInput, WorksheetReader, HyperlinkReader, WaitingWorksheet> {
166
172
  constructor(input: CommonInput, options?: WorkbookReaderOptions);
167
- _storeWaitingWorksheet(sheetNo: string, entry: any): Promise<WaitingWorksheet>;
173
+ _storeWaitingWorksheet(sheetNo: string, entry: ZipEntry): Promise<WaitingWorksheet>;
168
174
  _processWaitingWorksheets(waitingWorksheets: WaitingWorksheet[]): AsyncIterableIterator<WorksheetReadyEvent<WorksheetReader>>;
169
175
  }
170
176
  export { WorkbookReader };
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Extends base with file path support and temp file storage for large files.
5
5
  */
6
+ import type { ZipEntry } from "../../archive/unzip/stream.js";
6
7
  import { HyperlinkReader } from "./hyperlink-reader.js";
7
8
  import { WorkbookReaderBase, type CommonInput, type WorkbookReaderOptions, type WorksheetReadyEvent, WorkbookReaderOptionsSchema } from "./workbook-reader.browser.js";
8
9
  import { WorksheetReader } from "./worksheet-reader.js";
@@ -18,7 +19,7 @@ interface WaitingWorksheet {
18
19
  declare class WorkbookReader extends WorkbookReaderBase<NodeInput, WorksheetReader, HyperlinkReader, WaitingWorksheet> {
19
20
  constructor(input: NodeInput, options?: WorkbookReaderOptions);
20
21
  _getStream(input: NodeInput): Readable;
21
- _storeWaitingWorksheet(sheetNo: string, entry: any): Promise<WaitingWorksheet>;
22
+ _storeWaitingWorksheet(sheetNo: string, entry: ZipEntry): Promise<WaitingWorksheet>;
22
23
  _processWaitingWorksheets(waitingWorksheets: WaitingWorksheet[]): AsyncIterableIterator<WorksheetReadyEvent<WorksheetReader>>;
23
24
  }
24
25
  export { WorkbookReader, WorkbookReaderOptionsSchema };
@@ -10,11 +10,17 @@
10
10
  import { Zip } from "../../archive/zip/stream.js";
11
11
  import { DefinedNames } from "../defined-names.js";
12
12
  import { WorksheetWriter } from "./worksheet-writer.js";
13
- import type { ImageData, WorkbookView, AddWorksheetOptions } from "../types.js";
13
+ import type { Font, ImageData, WorkbookView, WorkbookProtection, AddWorksheetOptions } from "../types.js";
14
14
  import { SharedStrings } from "../utils/shared-strings.js";
15
15
  import { StylesXform } from "../xlsx/xform/style/styles-xform.js";
16
16
  import type { Writable } from "../../stream/index.js";
17
- interface Medium extends ImageData {
17
+ /**
18
+ * An image registered in the streaming writer.
19
+ *
20
+ * Extends the public {@link ImageData} shape with the unique stored name
21
+ * (`name`) assigned by `addImage`, and pins `type` to `"image"`.
22
+ */
23
+ export interface Medium extends ImageData {
18
24
  type: "image";
19
25
  name: string;
20
26
  }
@@ -56,8 +62,8 @@ export interface WorkbookWriterOptions {
56
62
  trueStreaming?: boolean;
57
63
  }
58
64
  interface OutputStreamLike {
59
- emit(eventName: string | symbol, ...args: any[]): boolean;
60
- write(chunk: any): boolean | Promise<boolean>;
65
+ emit(eventName: string | symbol, ...args: unknown[]): boolean;
66
+ write(chunk: Uint8Array | string): boolean | Promise<boolean>;
61
67
  end(): void;
62
68
  once(eventName: string | symbol, listener: (...args: any[]) => void): this;
63
69
  removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
@@ -107,6 +113,18 @@ export declare abstract class WorkbookWriterBase<TWorksheetWriter extends Worksh
107
113
  compressionLevel: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
108
114
  media: Medium[];
109
115
  commentRefs: CommentRef[];
116
+ /** Number of cells with dynamic array formulas, accumulated during worksheet commit */
117
+ dynamicArrayCount: number;
118
+ /** Workbook-level structure protection */
119
+ protection?: {
120
+ lockStructure?: boolean;
121
+ lockWindows?: boolean;
122
+ lockRevision?: boolean;
123
+ algorithmName?: string;
124
+ hashValue?: string;
125
+ saltValue?: string;
126
+ spinCount?: number;
127
+ };
110
128
  zip: Zip;
111
129
  stream: OutputStreamLike;
112
130
  promise: Promise<void[] | void>;
@@ -118,12 +136,27 @@ export declare abstract class WorkbookWriterBase<TWorksheetWriter extends Worksh
118
136
  */
119
137
  protected _createOutputStream(options: WorkbookWriterOptions): OutputStreamLike;
120
138
  get definedNames(): DefinedNames;
139
+ /**
140
+ * The default font for the workbook (fontId=0 / "Normal" style).
141
+ * Must be set before any worksheet rows are committed.
142
+ */
143
+ get defaultFont(): Partial<Font> | undefined;
144
+ set defaultFont(font: Partial<Font> | undefined);
121
145
  protected _addFile(data: string | Uint8Array, name: string, base64?: boolean): void;
122
146
  private _commitWorksheets;
123
147
  commit(): Promise<void>;
124
148
  get nextId(): number;
125
149
  addImage(image: ImageData): number;
126
- getImage(id: number): ImageData | undefined;
150
+ getImage(id: number): Medium | undefined;
151
+ /**
152
+ * Protect the workbook structure with an optional password.
153
+ * Prevents users from adding, deleting, renaming, moving, or copying worksheets.
154
+ */
155
+ protect(password?: string, options?: Partial<WorkbookProtection>): Promise<void>;
156
+ /**
157
+ * Remove workbook structure protection.
158
+ */
159
+ unprotect(): void;
127
160
  addWorksheet(name?: string, options?: Partial<AddWorksheetOptions>): TWorksheetWriter;
128
161
  getWorksheet(id?: string | number): TWorksheetWriter | undefined;
129
162
  addStyles(): Promise<void>;
@@ -144,6 +177,7 @@ export declare abstract class WorkbookWriterBase<TWorksheetWriter extends Worksh
144
177
  addCore(): Promise<void>;
145
178
  addSharedStrings(): Promise<void>;
146
179
  addFeaturePropertyBag(): Promise<void>;
180
+ addMetadata(): Promise<void>;
147
181
  addWorkbookRels(): Promise<void>;
148
182
  addWorkbook(): Promise<void>;
149
183
  private _finalize;
@@ -6,13 +6,14 @@
6
6
  import { WorkbookWriterBase, type WorkbookWriterOptions as BaseOptions, type WorkbookZipOptions, type ZlibOptions } from "./workbook-writer.browser.js";
7
7
  import { WorksheetWriter } from "./worksheet-writer.js";
8
8
  export type { WorkbookZipOptions, ZlibOptions };
9
+ export type { Medium } from "./workbook-writer.browser.js";
9
10
  export interface WorkbookWriterOptions extends BaseOptions {
10
11
  /** If stream not specified, this field specifies the path to a file to write the XLSX workbook to */
11
12
  filename?: string;
12
13
  }
13
14
  interface OutputStreamLike {
14
- emit(eventName: string | symbol, ...args: any[]): boolean;
15
- write(chunk: any): boolean | Promise<boolean>;
15
+ emit(eventName: string | symbol, ...args: unknown[]): boolean;
16
+ write(chunk: Uint8Array | string): boolean | Promise<boolean>;
16
17
  end(): void;
17
18
  once(eventName: string | symbol, listener: (...args: any[]) => void): this;
18
19
  removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
@@ -3,11 +3,37 @@ import { Column } from "../column.js";
3
3
  import { DataValidations } from "../data-validations.js";
4
4
  import { Dimensions } from "../range.js";
5
5
  import { Row } from "../row.js";
6
- import type { RowBreak, ColBreak, PageSetup, HeaderFooter, WorksheetProperties, WorksheetView, WorksheetState, AutoFilter, WorksheetProtection, ConditionalFormattingOptions, AddImageRange, WatermarkOptions, RowValues } from "../types.js";
6
+ import type { Medium as WriterMedium } from "./workbook-writer.js";
7
+ import { type DrawingAnchor, type DrawingRel } from "../utils/drawing-utils.js";
8
+ import type { SharedStrings } from "../utils/shared-strings.js";
9
+ import type { StreamBuf } from "../utils/stream-buf.js";
10
+ import type { RowBreak, ColBreak, PageSetup, HeaderFooter, WorksheetProperties, WorksheetView, WorksheetState, AutoFilter, WorksheetProtection, ConditionalFormattingOptions, AddImageRange, IgnoredError, WatermarkOptions, RowValues } from "../types.js";
11
+ /**
12
+ * Structural view of the fields/methods WorksheetWriter needs from its
13
+ * parent WorkbookWriter. Defined here (rather than importing WorkbookWriter
14
+ * directly) to avoid the circular `workbook-writer.ts <-> worksheet-writer.ts`
15
+ * dependency. The shape must stay in sync with the concrete WorkbookWriter.
16
+ */
17
+ export interface WorkbookWriterLike {
18
+ /** Shared-string table (deduplicates plain/rich-text cell values). */
19
+ readonly sharedStrings: SharedStrings;
20
+ /**
21
+ * Style manager. Typed loosely here (`unknown`) because the concrete
22
+ * `StylesXform` is an internal xform class and pulling it in would
23
+ * reintroduce the circular import. Xform methods accept it by duck-typing.
24
+ */
25
+ readonly styles: object;
26
+ /** Incremented once per dynamic-array formula cell during row commit. */
27
+ dynamicArrayCount: number;
28
+ /** Lookup a media (image/chart) by registered id. */
29
+ getImage(id: number): WriterMedium | undefined;
30
+ /** Open a streaming entry in the output zip for the given path. */
31
+ _openStream(path: string): InstanceType<typeof StreamBuf>;
32
+ }
7
33
  interface WorksheetWriterOptions {
8
34
  id: number;
9
35
  name?: string;
10
- workbook: any;
36
+ workbook: WorkbookWriterLike;
11
37
  useSharedStrings?: boolean;
12
38
  properties?: Partial<WorksheetProperties>;
13
39
  state?: WorksheetState;
@@ -38,6 +64,11 @@ interface WriterImageModel {
38
64
  height: number;
39
65
  };
40
66
  editAs?: string;
67
+ /** Absolute position in pixels — mutually exclusive with tl/br cell anchors. */
68
+ pos?: {
69
+ x: number;
70
+ y: number;
71
+ };
41
72
  };
42
73
  hyperlinks?: {
43
74
  hyperlink?: string;
@@ -67,6 +98,7 @@ declare class WorksheetWriter {
67
98
  private _formulae;
68
99
  private _siFormulae;
69
100
  conditionalFormatting: ConditionalFormattingOptions[];
101
+ ignoredErrors: IgnoredError[];
70
102
  rowBreaks: RowBreak[];
71
103
  colBreaks: ColBreak[];
72
104
  properties: Partial<WorksheetProperties> & {
@@ -104,8 +136,8 @@ declare class WorksheetWriter {
104
136
  /** Relationship Id - assigned by WorkbookWriter */
105
137
  rId?: string;
106
138
  constructor(options: WorksheetWriterOptions);
107
- get workbook(): any;
108
- get stream(): any;
139
+ get workbook(): WorkbookWriterLike;
140
+ get stream(): InstanceType<typeof StreamBuf>;
109
141
  destroy(): void;
110
142
  commit(): void;
111
143
  get dimensions(): Dimensions;
@@ -184,6 +216,7 @@ declare class WorksheetWriter {
184
216
  * The prepare phase was already done in _writeConditionalFormatting().
185
217
  */
186
218
  private _writeExtLst;
219
+ private _writeIgnoredErrors;
187
220
  private _writeRowBreaks;
188
221
  private _writeColBreaks;
189
222
  private _writeDataValidations;
@@ -197,8 +230,8 @@ declare class WorksheetWriter {
197
230
  get drawing(): {
198
231
  rId: string;
199
232
  name: string;
200
- anchors: any[];
201
- rels: any[];
233
+ anchors: DrawingAnchor[];
234
+ rels: DrawingRel[];
202
235
  } | undefined;
203
236
  private _writeBackground;
204
237
  private _writeLegacyData;