@cj-tech-master/excelts 3.1.0-canary.20260102071304.d80b29d → 4.0.0-canary.20260103013222.0e5d37f

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 (630) hide show
  1. package/README.md +2 -2
  2. package/README_zh.md +2 -2
  3. package/dist/browser/index.browser.d.ts +25 -0
  4. package/dist/browser/index.browser.js +40 -0
  5. package/dist/browser/index.d.ts +23 -0
  6. package/dist/browser/index.js +35 -0
  7. package/dist/browser/modules/archive/byte-queue.d.ts +18 -0
  8. package/dist/browser/modules/archive/byte-queue.js +125 -0
  9. package/dist/browser/modules/archive/compress.base.d.ts +98 -0
  10. package/dist/browser/modules/archive/compress.base.js +173 -0
  11. package/dist/browser/modules/archive/compress.browser.d.ts +57 -0
  12. package/dist/browser/modules/archive/compress.browser.js +93 -0
  13. package/dist/browser/modules/archive/compress.d.ts +44 -0
  14. package/dist/browser/modules/archive/compress.js +86 -0
  15. package/dist/browser/modules/archive/crc32.base.d.ts +25 -0
  16. package/dist/browser/modules/archive/crc32.base.js +51 -0
  17. package/dist/browser/modules/archive/crc32.browser.d.ts +30 -0
  18. package/dist/browser/modules/archive/crc32.browser.js +32 -0
  19. package/dist/browser/modules/archive/crc32.d.ts +59 -0
  20. package/dist/browser/modules/archive/crc32.js +97 -0
  21. package/dist/browser/modules/archive/defaults.d.ts +4 -0
  22. package/dist/browser/modules/archive/defaults.js +3 -0
  23. package/dist/browser/modules/archive/deflate-fallback.d.ts +39 -0
  24. package/dist/browser/modules/archive/deflate-fallback.js +564 -0
  25. package/dist/browser/modules/archive/extract.d.ts +94 -0
  26. package/dist/browser/modules/archive/extract.js +106 -0
  27. package/dist/browser/modules/archive/index.base.d.ts +11 -0
  28. package/dist/browser/modules/archive/index.base.js +13 -0
  29. package/dist/browser/modules/archive/index.browser.d.ts +11 -0
  30. package/dist/browser/modules/archive/index.browser.js +17 -0
  31. package/dist/browser/modules/archive/index.d.ts +11 -0
  32. package/dist/browser/modules/archive/index.js +15 -0
  33. package/dist/browser/modules/archive/parse.base.d.ts +198 -0
  34. package/dist/browser/modules/archive/parse.base.js +610 -0
  35. package/dist/browser/modules/archive/parse.browser.d.ts +22 -0
  36. package/dist/browser/modules/archive/parse.browser.js +564 -0
  37. package/dist/browser/modules/archive/parse.d.ts +16 -0
  38. package/dist/browser/modules/archive/parse.js +94 -0
  39. package/dist/browser/modules/archive/streaming-compress.base.d.ts +36 -0
  40. package/dist/browser/modules/archive/streaming-compress.base.js +9 -0
  41. package/dist/browser/modules/archive/streaming-compress.browser.d.ts +26 -0
  42. package/dist/browser/modules/archive/streaming-compress.browser.js +296 -0
  43. package/dist/browser/modules/archive/streaming-compress.d.ts +22 -0
  44. package/dist/browser/modules/archive/streaming-compress.js +68 -0
  45. package/dist/browser/modules/archive/streaming-zip.d.ts +120 -0
  46. package/dist/browser/modules/archive/streaming-zip.js +407 -0
  47. package/dist/browser/modules/archive/utils/binary.d.ts +24 -0
  48. package/dist/browser/modules/archive/utils/binary.js +69 -0
  49. package/dist/browser/modules/archive/utils/bytes.d.ts +7 -0
  50. package/dist/browser/modules/archive/utils/bytes.js +101 -0
  51. package/dist/browser/modules/archive/utils/parse-buffer.d.ts +18 -0
  52. package/dist/browser/modules/archive/utils/parse-buffer.js +55 -0
  53. package/dist/browser/modules/archive/utils/text.d.ts +20 -0
  54. package/dist/browser/modules/archive/utils/text.js +33 -0
  55. package/dist/browser/modules/archive/utils/timestamps.d.ts +28 -0
  56. package/dist/browser/modules/archive/utils/timestamps.js +48 -0
  57. package/dist/browser/modules/archive/utils/zip-extra-fields.d.ts +19 -0
  58. package/dist/browser/modules/archive/utils/zip-extra-fields.js +72 -0
  59. package/dist/browser/modules/archive/utils/zip-extra.d.ts +18 -0
  60. package/dist/browser/modules/archive/utils/zip-extra.js +68 -0
  61. package/dist/browser/modules/archive/zip-builder.d.ts +117 -0
  62. package/dist/browser/modules/archive/zip-builder.js +292 -0
  63. package/dist/browser/modules/archive/zip-constants.d.ts +18 -0
  64. package/dist/browser/modules/archive/zip-constants.js +23 -0
  65. package/dist/browser/modules/archive/zip-entry-info.d.ts +29 -0
  66. package/dist/browser/modules/archive/zip-entry-info.js +6 -0
  67. package/dist/browser/modules/archive/zip-entry-metadata.d.ts +23 -0
  68. package/dist/browser/modules/archive/zip-entry-metadata.js +24 -0
  69. package/dist/browser/modules/archive/zip-parser.d.ts +62 -0
  70. package/dist/browser/modules/archive/zip-parser.js +332 -0
  71. package/dist/browser/modules/archive/zip-records.d.ts +43 -0
  72. package/dist/browser/modules/archive/zip-records.js +84 -0
  73. package/dist/browser/modules/csv/csv-core.d.ts +215 -0
  74. package/dist/browser/modules/csv/csv-core.js +723 -0
  75. package/dist/browser/modules/csv/csv-number.d.ts +3 -0
  76. package/dist/browser/modules/csv/csv-number.js +20 -0
  77. package/dist/browser/modules/csv/csv-stream.d.ts +121 -0
  78. package/dist/browser/modules/csv/csv-stream.js +703 -0
  79. package/dist/browser/modules/csv/csv.browser.d.ts +60 -0
  80. package/dist/browser/modules/csv/csv.browser.js +265 -0
  81. package/dist/browser/modules/csv/csv.d.ts +14 -0
  82. package/dist/browser/modules/csv/csv.js +29 -0
  83. package/dist/browser/modules/excel/anchor.d.ts +33 -0
  84. package/dist/browser/modules/excel/anchor.js +97 -0
  85. package/dist/browser/modules/excel/cell.d.ts +138 -0
  86. package/dist/browser/modules/excel/cell.js +946 -0
  87. package/dist/browser/modules/excel/column.d.ts +122 -0
  88. package/dist/browser/modules/excel/column.js +358 -0
  89. package/dist/browser/modules/excel/data-validations.d.ts +11 -0
  90. package/dist/browser/modules/excel/data-validations.js +43 -0
  91. package/dist/browser/modules/excel/defined-names.d.ts +37 -0
  92. package/dist/browser/modules/excel/defined-names.js +214 -0
  93. package/dist/browser/modules/excel/enums.d.ts +62 -0
  94. package/dist/browser/modules/excel/enums.js +58 -0
  95. package/dist/browser/modules/excel/image.d.ts +64 -0
  96. package/dist/browser/modules/excel/image.js +60 -0
  97. package/dist/browser/modules/excel/note.d.ts +29 -0
  98. package/dist/browser/modules/excel/note.js +61 -0
  99. package/dist/browser/modules/excel/pivot-table.d.ts +152 -0
  100. package/dist/browser/modules/excel/pivot-table.js +237 -0
  101. package/dist/browser/modules/excel/range.d.ts +62 -0
  102. package/dist/browser/modules/excel/range.js +280 -0
  103. package/dist/browser/modules/excel/row.d.ts +127 -0
  104. package/dist/browser/modules/excel/row.js +441 -0
  105. package/dist/browser/modules/excel/stream/hyperlink-reader.d.ts +33 -0
  106. package/dist/browser/modules/excel/stream/hyperlink-reader.js +84 -0
  107. package/dist/browser/modules/excel/stream/sheet-comments-writer.d.ts +26 -0
  108. package/dist/browser/modules/excel/stream/sheet-comments-writer.js +101 -0
  109. package/dist/browser/modules/excel/stream/sheet-rels-writer.d.ts +45 -0
  110. package/dist/browser/modules/excel/stream/sheet-rels-writer.js +91 -0
  111. package/dist/browser/modules/excel/stream/workbook-reader.browser.d.ts +169 -0
  112. package/dist/browser/modules/excel/stream/workbook-reader.browser.js +443 -0
  113. package/dist/browser/modules/excel/stream/workbook-reader.d.ts +24 -0
  114. package/dist/browser/modules/excel/stream/workbook-reader.js +50 -0
  115. package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +147 -0
  116. package/dist/browser/modules/excel/stream/workbook-writer.browser.js +356 -0
  117. package/dist/browser/modules/excel/stream/workbook-writer.d.ts +31 -0
  118. package/dist/browser/modules/excel/stream/workbook-writer.js +52 -0
  119. package/dist/browser/modules/excel/stream/worksheet-reader.d.ts +61 -0
  120. package/dist/browser/modules/excel/stream/worksheet-reader.js +367 -0
  121. package/dist/browser/modules/excel/stream/worksheet-writer.d.ts +140 -0
  122. package/dist/browser/modules/excel/stream/worksheet-writer.js +613 -0
  123. package/dist/browser/modules/excel/table.d.ts +81 -0
  124. package/dist/browser/modules/excel/table.js +405 -0
  125. package/dist/browser/modules/excel/types.d.ts +518 -0
  126. package/dist/browser/modules/excel/types.js +22 -0
  127. package/dist/browser/modules/excel/utils/cell-format.d.ts +32 -0
  128. package/dist/browser/modules/excel/utils/cell-format.js +814 -0
  129. package/dist/browser/modules/excel/utils/cell-matrix.d.ts +37 -0
  130. package/dist/browser/modules/excel/utils/cell-matrix.js +180 -0
  131. package/dist/browser/modules/excel/utils/col-cache.d.ts +36 -0
  132. package/dist/browser/modules/excel/utils/col-cache.js +278 -0
  133. package/dist/browser/modules/excel/utils/copy-style.d.ts +5 -0
  134. package/dist/browser/modules/excel/utils/copy-style.js +43 -0
  135. package/dist/browser/modules/excel/utils/encryptor.browser.d.ts +19 -0
  136. package/dist/browser/modules/excel/utils/encryptor.browser.js +46 -0
  137. package/dist/browser/modules/excel/utils/encryptor.d.ts +9 -0
  138. package/dist/browser/modules/excel/utils/encryptor.js +35 -0
  139. package/dist/browser/modules/excel/utils/iterate-stream.d.ts +14 -0
  140. package/dist/browser/modules/excel/utils/iterate-stream.js +55 -0
  141. package/dist/browser/modules/excel/utils/ooxml-paths.d.ts +64 -0
  142. package/dist/browser/modules/excel/utils/ooxml-paths.js +209 -0
  143. package/dist/browser/modules/excel/utils/parse-sax.d.ts +113 -0
  144. package/dist/browser/modules/excel/utils/parse-sax.js +1206 -0
  145. package/dist/browser/modules/excel/utils/shared-formula.d.ts +2 -0
  146. package/dist/browser/modules/excel/utils/shared-formula.js +36 -0
  147. package/dist/browser/modules/excel/utils/shared-strings.d.ts +12 -0
  148. package/dist/browser/modules/excel/utils/shared-strings.js +29 -0
  149. package/dist/browser/modules/excel/utils/sheet-utils.d.ts +190 -0
  150. package/dist/browser/modules/excel/utils/sheet-utils.js +674 -0
  151. package/dist/browser/modules/excel/utils/stream-buf.d.ts +126 -0
  152. package/dist/browser/modules/excel/utils/stream-buf.js +452 -0
  153. package/dist/browser/modules/excel/utils/string-buf.d.ts +29 -0
  154. package/dist/browser/modules/excel/utils/string-buf.js +75 -0
  155. package/dist/browser/modules/excel/utils/under-dash.d.ts +7 -0
  156. package/dist/browser/modules/excel/utils/under-dash.js +166 -0
  157. package/dist/browser/modules/excel/utils/xml-stream.d.ts +34 -0
  158. package/dist/browser/modules/excel/utils/xml-stream.js +179 -0
  159. package/dist/browser/modules/excel/workbook.d.ts +195 -0
  160. package/dist/browser/modules/excel/workbook.js +314 -0
  161. package/dist/browser/modules/excel/worksheet.d.ts +333 -0
  162. package/dist/browser/modules/excel/worksheet.js +924 -0
  163. package/dist/browser/modules/excel/xlsx/defaultnumformats.d.ts +12 -0
  164. package/dist/browser/modules/excel/xlsx/defaultnumformats.js +149 -0
  165. package/dist/browser/modules/excel/xlsx/rel-type.d.ts +19 -0
  166. package/dist/browser/modules/excel/xlsx/rel-type.js +19 -0
  167. package/dist/browser/modules/excel/xlsx/xform/base-xform.d.ts +33 -0
  168. package/dist/browser/modules/excel/xlsx/xform/base-xform.js +135 -0
  169. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +17 -0
  170. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +124 -0
  171. package/dist/browser/modules/excel/xlsx/xform/book/sheet-xform.d.ts +14 -0
  172. package/dist/browser/modules/excel/xlsx/xform/book/sheet-xform.js +30 -0
  173. package/dist/browser/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.d.ts +11 -0
  174. package/dist/browser/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.js +21 -0
  175. package/dist/browser/modules/excel/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +12 -0
  176. package/dist/browser/modules/excel/xlsx/xform/book/workbook-pivot-cache-xform.js +24 -0
  177. package/dist/browser/modules/excel/xlsx/xform/book/workbook-properties-xform.d.ts +11 -0
  178. package/dist/browser/modules/excel/xlsx/xform/book/workbook-properties-xform.js +24 -0
  179. package/dist/browser/modules/excel/xlsx/xform/book/workbook-view-xform.d.ts +17 -0
  180. package/dist/browser/modules/excel/xlsx/xform/book/workbook-view-xform.js +46 -0
  181. package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.d.ts +23 -0
  182. package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +234 -0
  183. package/dist/browser/modules/excel/xlsx/xform/comment/comment-xform.d.ts +28 -0
  184. package/dist/browser/modules/excel/xlsx/xform/comment/comment-xform.js +76 -0
  185. package/dist/browser/modules/excel/xlsx/xform/comment/comments-xform.d.ts +21 -0
  186. package/dist/browser/modules/excel/xlsx/xform/comment/comments-xform.js +72 -0
  187. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +16 -0
  188. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +34 -0
  189. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-protection-xform.d.ts +14 -0
  190. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +30 -0
  191. package/dist/browser/modules/excel/xlsx/xform/comment/vml-anchor-xform.d.ts +27 -0
  192. package/dist/browser/modules/excel/xlsx/xform/comment/vml-anchor-xform.js +55 -0
  193. package/dist/browser/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +35 -0
  194. package/dist/browser/modules/excel/xlsx/xform/comment/vml-client-data-xform.js +82 -0
  195. package/dist/browser/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +24 -0
  196. package/dist/browser/modules/excel/xlsx/xform/comment/vml-notes-xform.js +96 -0
  197. package/dist/browser/modules/excel/xlsx/xform/comment/vml-shape-xform.d.ts +25 -0
  198. package/dist/browser/modules/excel/xlsx/xform/comment/vml-shape-xform.js +83 -0
  199. package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +23 -0
  200. package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +60 -0
  201. package/dist/browser/modules/excel/xlsx/xform/composite-xform.d.ts +11 -0
  202. package/dist/browser/modules/excel/xlsx/xform/composite-xform.js +48 -0
  203. package/dist/browser/modules/excel/xlsx/xform/core/app-heading-pairs-xform.d.ts +8 -0
  204. package/dist/browser/modules/excel/xlsx/xform/core/app-heading-pairs-xform.js +24 -0
  205. package/dist/browser/modules/excel/xlsx/xform/core/app-titles-of-parts-xform.d.ts +8 -0
  206. package/dist/browser/modules/excel/xlsx/xform/core/app-titles-of-parts-xform.js +21 -0
  207. package/dist/browser/modules/excel/xlsx/xform/core/app-xform.d.ts +26 -0
  208. package/dist/browser/modules/excel/xlsx/xform/core/app-xform.js +83 -0
  209. package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.d.ts +11 -0
  210. package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +122 -0
  211. package/dist/browser/modules/excel/xlsx/xform/core/core-xform.d.ts +42 -0
  212. package/dist/browser/modules/excel/xlsx/xform/core/core-xform.js +124 -0
  213. package/dist/browser/modules/excel/xlsx/xform/core/relationship-xform.d.ts +14 -0
  214. package/dist/browser/modules/excel/xlsx/xform/core/relationship-xform.js +20 -0
  215. package/dist/browser/modules/excel/xlsx/xform/core/relationships-xform.d.ts +14 -0
  216. package/dist/browser/modules/excel/xlsx/xform/core/relationships-xform.js +62 -0
  217. package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +13 -0
  218. package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +44 -0
  219. package/dist/browser/modules/excel/xlsx/xform/drawing/blip-fill-xform.d.ts +16 -0
  220. package/dist/browser/modules/excel/xlsx/xform/drawing/blip-fill-xform.js +57 -0
  221. package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +14 -0
  222. package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.js +40 -0
  223. package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +9 -0
  224. package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pic-pr-xform.js +32 -0
  225. package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pr-xform.d.ts +18 -0
  226. package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pr-xform.js +59 -0
  227. package/dist/browser/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +24 -0
  228. package/dist/browser/modules/excel/xlsx/xform/drawing/cell-position-xform.js +68 -0
  229. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +24 -0
  230. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.js +96 -0
  231. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-lst-xform.d.ts +9 -0
  232. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-lst-xform.js +37 -0
  233. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +20 -0
  234. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.js +34 -0
  235. package/dist/browser/modules/excel/xlsx/xform/drawing/hlink-click-xform.d.ts +11 -0
  236. package/dist/browser/modules/excel/xlsx/xform/drawing/hlink-click-xform.js +39 -0
  237. package/dist/browser/modules/excel/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +15 -0
  238. package/dist/browser/modules/excel/xlsx/xform/drawing/nv-pic-pr-xform.js +56 -0
  239. package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +20 -0
  240. package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +52 -0
  241. package/dist/browser/modules/excel/xlsx/xform/drawing/pic-xform.d.ts +22 -0
  242. package/dist/browser/modules/excel/xlsx/xform/drawing/pic-xform.js +64 -0
  243. package/dist/browser/modules/excel/xlsx/xform/drawing/sp-pr.d.ts +32 -0
  244. package/dist/browser/modules/excel/xlsx/xform/drawing/sp-pr.js +17 -0
  245. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +20 -0
  246. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +51 -0
  247. package/dist/browser/modules/excel/xlsx/xform/list-xform.d.ts +32 -0
  248. package/dist/browser/modules/excel/xlsx/xform/list-xform.js +89 -0
  249. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +42 -0
  250. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +128 -0
  251. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +15 -0
  252. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.js +78 -0
  253. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +60 -0
  254. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +179 -0
  255. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +73 -0
  256. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +234 -0
  257. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +119 -0
  258. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +624 -0
  259. package/dist/browser/modules/excel/xlsx/xform/sheet/auto-filter-xform.d.ts +8 -0
  260. package/dist/browser/modules/excel/xlsx/xform/sheet/auto-filter-xform.js +34 -0
  261. package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.d.ts +17 -0
  262. package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.js +460 -0
  263. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +41 -0
  264. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +259 -0
  265. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cfvo-xform.d.ts +8 -0
  266. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cfvo-xform.js +22 -0
  267. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/color-scale-xform.d.ts +13 -0
  268. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/color-scale-xform.js +35 -0
  269. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +9 -0
  270. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formatting-xform.js +37 -0
  271. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +16 -0
  272. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +74 -0
  273. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/databar-xform.d.ts +13 -0
  274. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/databar-xform.js +39 -0
  275. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +9 -0
  276. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +67 -0
  277. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/formula-xform.d.ts +9 -0
  278. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/formula-xform.js +19 -0
  279. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/icon-set-xform.d.ts +11 -0
  280. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/icon-set-xform.js +37 -0
  281. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +10 -0
  282. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +22 -0
  283. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +23 -0
  284. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +80 -0
  285. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +13 -0
  286. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +35 -0
  287. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +16 -0
  288. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +48 -0
  289. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +13 -0
  290. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +40 -0
  291. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +29 -0
  292. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +69 -0
  293. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +9 -0
  294. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/f-ext-xform.js +19 -0
  295. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +20 -0
  296. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +60 -0
  297. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +9 -0
  298. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +19 -0
  299. package/dist/browser/modules/excel/xlsx/xform/sheet/col-breaks-xform.d.ts +16 -0
  300. package/dist/browser/modules/excel/xlsx/xform/sheet/col-breaks-xform.js +35 -0
  301. package/dist/browser/modules/excel/xlsx/xform/sheet/col-xform.d.ts +22 -0
  302. package/dist/browser/modules/excel/xlsx/xform/sheet/col-xform.js +75 -0
  303. package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.d.ts +12 -0
  304. package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.js +269 -0
  305. package/dist/browser/modules/excel/xlsx/xform/sheet/dimension-xform.d.ts +10 -0
  306. package/dist/browser/modules/excel/xlsx/xform/sheet/dimension-xform.js +23 -0
  307. package/dist/browser/modules/excel/xlsx/xform/sheet/drawing-xform.d.ts +12 -0
  308. package/dist/browser/modules/excel/xlsx/xform/sheet/drawing-xform.js +27 -0
  309. package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +16 -0
  310. package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +66 -0
  311. package/dist/browser/modules/excel/xlsx/xform/sheet/header-footer-xform.d.ts +20 -0
  312. package/dist/browser/modules/excel/xlsx/xform/sheet/header-footer-xform.js +124 -0
  313. package/dist/browser/modules/excel/xlsx/xform/sheet/hyperlink-xform.d.ts +16 -0
  314. package/dist/browser/modules/excel/xlsx/xform/sheet/hyperlink-xform.js +47 -0
  315. package/dist/browser/modules/excel/xlsx/xform/sheet/merge-cell-xform.d.ts +9 -0
  316. package/dist/browser/modules/excel/xlsx/xform/sheet/merge-cell-xform.js +21 -0
  317. package/dist/browser/modules/excel/xlsx/xform/sheet/merges.d.ts +14 -0
  318. package/dist/browser/modules/excel/xlsx/xform/sheet/merges.js +50 -0
  319. package/dist/browser/modules/excel/xlsx/xform/sheet/outline-properties-xform.d.ts +13 -0
  320. package/dist/browser/modules/excel/xlsx/xform/sheet/outline-properties-xform.js +36 -0
  321. package/dist/browser/modules/excel/xlsx/xform/sheet/page-breaks-xform.d.ts +14 -0
  322. package/dist/browser/modules/excel/xlsx/xform/sheet/page-breaks-xform.js +33 -0
  323. package/dist/browser/modules/excel/xlsx/xform/sheet/page-margins-xform.d.ts +17 -0
  324. package/dist/browser/modules/excel/xlsx/xform/sheet/page-margins-xform.js +42 -0
  325. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-properties-xform.d.ts +12 -0
  326. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-properties-xform.js +29 -0
  327. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +27 -0
  328. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +96 -0
  329. package/dist/browser/modules/excel/xlsx/xform/sheet/picture-xform.d.ts +12 -0
  330. package/dist/browser/modules/excel/xlsx/xform/sheet/picture-xform.js +27 -0
  331. package/dist/browser/modules/excel/xlsx/xform/sheet/print-options-xform.d.ts +15 -0
  332. package/dist/browser/modules/excel/xlsx/xform/sheet/print-options-xform.js +41 -0
  333. package/dist/browser/modules/excel/xlsx/xform/sheet/row-breaks-xform.d.ts +10 -0
  334. package/dist/browser/modules/excel/xlsx/xform/sheet/row-breaks-xform.js +29 -0
  335. package/dist/browser/modules/excel/xlsx/xform/sheet/row-xform.d.ts +37 -0
  336. package/dist/browser/modules/excel/xlsx/xform/sheet/row-xform.js +152 -0
  337. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +16 -0
  338. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +49 -0
  339. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-properties-xform.d.ts +19 -0
  340. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-properties-xform.js +82 -0
  341. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-protection-xform.d.ts +31 -0
  342. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-protection-xform.js +80 -0
  343. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +32 -0
  344. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +193 -0
  345. package/dist/browser/modules/excel/xlsx/xform/sheet/table-part-xform.d.ts +12 -0
  346. package/dist/browser/modules/excel/xlsx/xform/sheet/table-part-xform.js +27 -0
  347. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.d.ts +21 -0
  348. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +518 -0
  349. package/dist/browser/modules/excel/xlsx/xform/simple/boolean-xform.d.ts +15 -0
  350. package/dist/browser/modules/excel/xlsx/xform/simple/boolean-xform.js +24 -0
  351. package/dist/browser/modules/excel/xlsx/xform/simple/date-xform.d.ts +22 -0
  352. package/dist/browser/modules/excel/xlsx/xform/simple/date-xform.js +65 -0
  353. package/dist/browser/modules/excel/xlsx/xform/simple/float-xform.d.ts +18 -0
  354. package/dist/browser/modules/excel/xlsx/xform/simple/float-xform.js +47 -0
  355. package/dist/browser/modules/excel/xlsx/xform/simple/integer-xform.d.ts +20 -0
  356. package/dist/browser/modules/excel/xlsx/xform/simple/integer-xform.js +52 -0
  357. package/dist/browser/modules/excel/xlsx/xform/simple/string-xform.d.ts +18 -0
  358. package/dist/browser/modules/excel/xlsx/xform/simple/string-xform.js +47 -0
  359. package/dist/browser/modules/excel/xlsx/xform/static-xform.d.ts +17 -0
  360. package/dist/browser/modules/excel/xlsx/xform/static-xform.js +55 -0
  361. package/dist/browser/modules/excel/xlsx/xform/strings/phonetic-text-xform.d.ts +20 -0
  362. package/dist/browser/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +86 -0
  363. package/dist/browser/modules/excel/xlsx/xform/strings/rich-text-xform.d.ts +25 -0
  364. package/dist/browser/modules/excel/xlsx/xform/strings/rich-text-xform.js +77 -0
  365. package/dist/browser/modules/excel/xlsx/xform/strings/shared-string-xform.d.ts +17 -0
  366. package/dist/browser/modules/excel/xlsx/xform/strings/shared-string-xform.js +90 -0
  367. package/dist/browser/modules/excel/xlsx/xform/strings/shared-strings-xform.d.ts +27 -0
  368. package/dist/browser/modules/excel/xlsx/xform/strings/shared-strings-xform.js +109 -0
  369. package/dist/browser/modules/excel/xlsx/xform/strings/text-xform.d.ts +10 -0
  370. package/dist/browser/modules/excel/xlsx/xform/strings/text-xform.js +36 -0
  371. package/dist/browser/modules/excel/xlsx/xform/style/alignment-xform.d.ts +18 -0
  372. package/dist/browser/modules/excel/xlsx/xform/style/alignment-xform.js +152 -0
  373. package/dist/browser/modules/excel/xlsx/xform/style/border-xform.d.ts +49 -0
  374. package/dist/browser/modules/excel/xlsx/xform/style/border-xform.js +188 -0
  375. package/dist/browser/modules/excel/xlsx/xform/style/color-xform.d.ts +17 -0
  376. package/dist/browser/modules/excel/xlsx/xform/style/color-xform.js +61 -0
  377. package/dist/browser/modules/excel/xlsx/xform/style/dxf-xform.d.ts +23 -0
  378. package/dist/browser/modules/excel/xlsx/xform/style/dxf-xform.js +92 -0
  379. package/dist/browser/modules/excel/xlsx/xform/style/fill-xform.d.ts +85 -0
  380. package/dist/browser/modules/excel/xlsx/xform/style/fill-xform.js +312 -0
  381. package/dist/browser/modules/excel/xlsx/xform/style/font-xform.d.ts +35 -0
  382. package/dist/browser/modules/excel/xlsx/xform/style/font-xform.js +100 -0
  383. package/dist/browser/modules/excel/xlsx/xform/style/numfmt-xform.d.ts +18 -0
  384. package/dist/browser/modules/excel/xlsx/xform/style/numfmt-xform.js +50 -0
  385. package/dist/browser/modules/excel/xlsx/xform/style/protection-xform.d.ts +13 -0
  386. package/dist/browser/modules/excel/xlsx/xform/style/protection-xform.js +49 -0
  387. package/dist/browser/modules/excel/xlsx/xform/style/style-xform.d.ts +30 -0
  388. package/dist/browser/modules/excel/xlsx/xform/style/style-xform.js +108 -0
  389. package/dist/browser/modules/excel/xlsx/xform/style/styles-xform.d.ts +46 -0
  390. package/dist/browser/modules/excel/xlsx/xform/style/styles-xform.js +484 -0
  391. package/dist/browser/modules/excel/xlsx/xform/style/underline-xform.d.ts +14 -0
  392. package/dist/browser/modules/excel/xlsx/xform/style/underline-xform.js +38 -0
  393. package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +21 -0
  394. package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.js +70 -0
  395. package/dist/browser/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +15 -0
  396. package/dist/browser/modules/excel/xlsx/xform/table/custom-filter-xform.js +31 -0
  397. package/dist/browser/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +24 -0
  398. package/dist/browser/modules/excel/xlsx/xform/table/filter-column-xform.js +87 -0
  399. package/dist/browser/modules/excel/xlsx/xform/table/filter-xform.d.ts +14 -0
  400. package/dist/browser/modules/excel/xlsx/xform/table/filter-xform.js +29 -0
  401. package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.d.ts +21 -0
  402. package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.js +41 -0
  403. package/dist/browser/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +18 -0
  404. package/dist/browser/modules/excel/xlsx/xform/table/table-style-info-xform.js +44 -0
  405. package/dist/browser/modules/excel/xlsx/xform/table/table-xform.d.ts +33 -0
  406. package/dist/browser/modules/excel/xlsx/xform/table/table-xform.js +126 -0
  407. package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +208 -0
  408. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +1152 -0
  409. package/dist/browser/modules/excel/xlsx/xlsx.d.ts +24 -0
  410. package/dist/browser/modules/excel/xlsx/xlsx.js +239 -0
  411. package/dist/browser/modules/excel/xlsx/xml/theme1.d.ts +1 -0
  412. package/dist/browser/modules/excel/xlsx/xml/theme1.js +1 -0
  413. package/dist/browser/modules/stream/base-transform.d.ts +68 -0
  414. package/dist/browser/modules/stream/base-transform.js +160 -0
  415. package/dist/browser/modules/stream/buffered-stream.d.ts +94 -0
  416. package/dist/browser/modules/stream/buffered-stream.js +277 -0
  417. package/dist/browser/modules/stream/chunked-builder.d.ts +97 -0
  418. package/dist/browser/modules/stream/chunked-builder.js +165 -0
  419. package/dist/browser/modules/stream/event-emitter.d.ts +30 -0
  420. package/dist/browser/modules/stream/event-emitter.js +239 -0
  421. package/dist/browser/modules/stream/index.browser.d.ts +22 -0
  422. package/dist/browser/modules/stream/index.browser.js +25 -0
  423. package/dist/browser/modules/stream/index.d.ts +49 -0
  424. package/dist/browser/modules/stream/index.js +52 -0
  425. package/dist/browser/modules/stream/pull-stream.d.ts +67 -0
  426. package/dist/browser/modules/stream/pull-stream.js +204 -0
  427. package/dist/browser/modules/stream/shared.d.ts +54 -0
  428. package/dist/browser/modules/stream/shared.js +156 -0
  429. package/dist/browser/modules/stream/streams.browser.d.ts +936 -0
  430. package/dist/browser/modules/stream/streams.browser.js +3297 -0
  431. package/dist/browser/modules/stream/streams.d.ts +282 -0
  432. package/dist/browser/modules/stream/streams.js +940 -0
  433. package/dist/browser/modules/stream/types.d.ts +238 -0
  434. package/dist/browser/modules/stream/types.js +7 -0
  435. package/dist/browser/modules/stream/utils.d.ts +24 -0
  436. package/dist/browser/modules/stream/utils.js +85 -0
  437. package/dist/browser/utils/browser.d.ts +9 -0
  438. package/dist/browser/utils/browser.js +49 -0
  439. package/dist/browser/utils/datetime.d.ts +56 -0
  440. package/dist/browser/utils/datetime.js +493 -0
  441. package/dist/browser/utils/env.d.ts +14 -0
  442. package/dist/browser/utils/env.js +18 -0
  443. package/dist/browser/utils/utils.base.d.ts +49 -0
  444. package/dist/browser/utils/utils.base.js +275 -0
  445. package/dist/browser/utils/utils.browser.d.ts +6 -0
  446. package/dist/browser/utils/utils.browser.js +12 -0
  447. package/dist/browser/utils/utils.d.ts +6 -0
  448. package/dist/browser/utils/utils.js +19 -0
  449. package/dist/browser/utils/uuid.d.ts +11 -0
  450. package/dist/browser/utils/uuid.js +55 -0
  451. package/dist/{browser → iife}/excelts.iife.js +1 -1
  452. package/dist/{browser → iife}/excelts.iife.min.js +1 -1
  453. package/dist/types/index.browser.d.ts +20 -20
  454. package/dist/types/index.d.ts +23 -23
  455. package/dist/types/modules/archive/compress.browser.d.ts +1 -1
  456. package/dist/types/modules/archive/compress.d.ts +2 -2
  457. package/dist/types/modules/archive/crc32.browser.d.ts +1 -1
  458. package/dist/types/modules/archive/crc32.d.ts +1 -1
  459. package/dist/types/modules/archive/defaults.d.ts +1 -1
  460. package/dist/types/modules/archive/extract.d.ts +2 -2
  461. package/dist/types/modules/archive/index.base.d.ts +4 -4
  462. package/dist/types/modules/archive/index.browser.d.ts +5 -5
  463. package/dist/types/modules/archive/index.d.ts +5 -5
  464. package/dist/types/modules/archive/parse.base.d.ts +3 -3
  465. package/dist/types/modules/archive/parse.browser.d.ts +2 -2
  466. package/dist/types/modules/archive/parse.d.ts +3 -3
  467. package/dist/types/modules/archive/streaming-compress.browser.d.ts +2 -2
  468. package/dist/types/modules/archive/streaming-compress.d.ts +2 -2
  469. package/dist/types/modules/archive/streaming-zip.d.ts +2 -2
  470. package/dist/types/modules/archive/zip-builder.d.ts +2 -2
  471. package/dist/types/modules/archive/zip-entry-metadata.d.ts +1 -1
  472. package/dist/types/modules/archive/zip-parser.d.ts +1 -1
  473. package/dist/types/modules/csv/csv-stream.d.ts +3 -3
  474. package/dist/types/modules/csv/csv.browser.d.ts +9 -9
  475. package/dist/types/modules/csv/csv.d.ts +4 -4
  476. package/dist/types/modules/excel/anchor.d.ts +1 -1
  477. package/dist/types/modules/excel/cell.d.ts +7 -7
  478. package/dist/types/modules/excel/column.d.ts +3 -3
  479. package/dist/types/modules/excel/defined-names.d.ts +4 -4
  480. package/dist/types/modules/excel/image.d.ts +2 -2
  481. package/dist/types/modules/excel/pivot-table.d.ts +1 -1
  482. package/dist/types/modules/excel/range.d.ts +1 -1
  483. package/dist/types/modules/excel/row.d.ts +3 -3
  484. package/dist/types/modules/excel/stream/hyperlink-reader.d.ts +2 -2
  485. package/dist/types/modules/excel/stream/workbook-reader.browser.d.ts +6 -6
  486. package/dist/types/modules/excel/stream/workbook-reader.d.ts +5 -5
  487. package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +8 -8
  488. package/dist/types/modules/excel/stream/workbook-writer.d.ts +2 -2
  489. package/dist/types/modules/excel/stream/worksheet-reader.d.ts +6 -6
  490. package/dist/types/modules/excel/stream/worksheet-writer.d.ts +9 -9
  491. package/dist/types/modules/excel/table.d.ts +2 -2
  492. package/dist/types/modules/excel/utils/col-cache.d.ts +1 -1
  493. package/dist/types/modules/excel/utils/sheet-utils.d.ts +3 -3
  494. package/dist/types/modules/excel/utils/stream-buf.d.ts +2 -2
  495. package/dist/types/modules/excel/workbook.d.ts +9 -9
  496. package/dist/types/modules/excel/worksheet.d.ts +10 -10
  497. package/dist/types/modules/excel/xlsx/xform/base-xform.d.ts +1 -1
  498. package/dist/types/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -1
  499. package/dist/types/modules/excel/xlsx/xform/book/sheet-xform.d.ts +1 -1
  500. package/dist/types/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
  501. package/dist/types/modules/excel/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
  502. package/dist/types/modules/excel/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
  503. package/dist/types/modules/excel/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
  504. package/dist/types/modules/excel/xlsx/xform/book/workbook-xform.d.ts +2 -2
  505. package/dist/types/modules/excel/xlsx/xform/comment/comment-xform.d.ts +2 -2
  506. package/dist/types/modules/excel/xlsx/xform/comment/comments-xform.d.ts +2 -2
  507. package/dist/types/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
  508. package/dist/types/modules/excel/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
  509. package/dist/types/modules/excel/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
  510. package/dist/types/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
  511. package/dist/types/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
  512. package/dist/types/modules/excel/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
  513. package/dist/types/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
  514. package/dist/types/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
  515. package/dist/types/modules/excel/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
  516. package/dist/types/modules/excel/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
  517. package/dist/types/modules/excel/xlsx/xform/core/app-xform.d.ts +1 -1
  518. package/dist/types/modules/excel/xlsx/xform/core/content-types-xform.d.ts +1 -1
  519. package/dist/types/modules/excel/xlsx/xform/core/core-xform.d.ts +1 -1
  520. package/dist/types/modules/excel/xlsx/xform/core/relationship-xform.d.ts +1 -1
  521. package/dist/types/modules/excel/xlsx/xform/core/relationships-xform.d.ts +1 -1
  522. package/dist/types/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
  523. package/dist/types/modules/excel/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
  524. package/dist/types/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -1
  525. package/dist/types/modules/excel/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
  526. package/dist/types/modules/excel/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
  527. package/dist/types/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
  528. package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
  529. package/dist/types/modules/excel/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
  530. package/dist/types/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -1
  531. package/dist/types/modules/excel/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
  532. package/dist/types/modules/excel/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
  533. package/dist/types/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
  534. package/dist/types/modules/excel/xlsx/xform/drawing/pic-xform.d.ts +1 -1
  535. package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
  536. package/dist/types/modules/excel/xlsx/xform/list-xform.d.ts +1 -1
  537. package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
  538. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
  539. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
  540. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
  541. package/dist/types/modules/excel/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
  542. package/dist/types/modules/excel/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  543. package/dist/types/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
  544. package/dist/types/modules/excel/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
  545. package/dist/types/modules/excel/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
  546. package/dist/types/modules/excel/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
  547. package/dist/types/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
  548. package/dist/types/modules/excel/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
  549. package/dist/types/modules/excel/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
  550. package/dist/types/modules/excel/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
  551. package/dist/types/modules/excel/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
  552. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
  553. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
  554. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
  555. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
  556. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
  557. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
  558. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
  559. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
  560. package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
  561. package/dist/types/modules/excel/xlsx/xform/sheet/col-breaks-xform.d.ts +1 -1
  562. package/dist/types/modules/excel/xlsx/xform/sheet/col-xform.d.ts +1 -1
  563. package/dist/types/modules/excel/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
  564. package/dist/types/modules/excel/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
  565. package/dist/types/modules/excel/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
  566. package/dist/types/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
  567. package/dist/types/modules/excel/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
  568. package/dist/types/modules/excel/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
  569. package/dist/types/modules/excel/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
  570. package/dist/types/modules/excel/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
  571. package/dist/types/modules/excel/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
  572. package/dist/types/modules/excel/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
  573. package/dist/types/modules/excel/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
  574. package/dist/types/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
  575. package/dist/types/modules/excel/xlsx/xform/sheet/picture-xform.d.ts +1 -1
  576. package/dist/types/modules/excel/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
  577. package/dist/types/modules/excel/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
  578. package/dist/types/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -1
  579. package/dist/types/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
  580. package/dist/types/modules/excel/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
  581. package/dist/types/modules/excel/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
  582. package/dist/types/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
  583. package/dist/types/modules/excel/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
  584. package/dist/types/modules/excel/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
  585. package/dist/types/modules/excel/xlsx/xform/simple/boolean-xform.d.ts +1 -1
  586. package/dist/types/modules/excel/xlsx/xform/simple/date-xform.d.ts +1 -1
  587. package/dist/types/modules/excel/xlsx/xform/simple/float-xform.d.ts +1 -1
  588. package/dist/types/modules/excel/xlsx/xform/simple/integer-xform.d.ts +1 -1
  589. package/dist/types/modules/excel/xlsx/xform/simple/string-xform.d.ts +1 -1
  590. package/dist/types/modules/excel/xlsx/xform/static-xform.d.ts +1 -1
  591. package/dist/types/modules/excel/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
  592. package/dist/types/modules/excel/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
  593. package/dist/types/modules/excel/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
  594. package/dist/types/modules/excel/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
  595. package/dist/types/modules/excel/xlsx/xform/strings/text-xform.d.ts +1 -1
  596. package/dist/types/modules/excel/xlsx/xform/style/alignment-xform.d.ts +1 -1
  597. package/dist/types/modules/excel/xlsx/xform/style/border-xform.d.ts +2 -2
  598. package/dist/types/modules/excel/xlsx/xform/style/color-xform.d.ts +1 -1
  599. package/dist/types/modules/excel/xlsx/xform/style/dxf-xform.d.ts +1 -1
  600. package/dist/types/modules/excel/xlsx/xform/style/fill-xform.d.ts +2 -2
  601. package/dist/types/modules/excel/xlsx/xform/style/font-xform.d.ts +1 -1
  602. package/dist/types/modules/excel/xlsx/xform/style/numfmt-xform.d.ts +1 -1
  603. package/dist/types/modules/excel/xlsx/xform/style/protection-xform.d.ts +1 -1
  604. package/dist/types/modules/excel/xlsx/xform/style/style-xform.d.ts +3 -3
  605. package/dist/types/modules/excel/xlsx/xform/style/styles-xform.d.ts +2 -2
  606. package/dist/types/modules/excel/xlsx/xform/style/underline-xform.d.ts +1 -1
  607. package/dist/types/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
  608. package/dist/types/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
  609. package/dist/types/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +2 -2
  610. package/dist/types/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -1
  611. package/dist/types/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -1
  612. package/dist/types/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
  613. package/dist/types/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -1
  614. package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +3 -3
  615. package/dist/types/modules/excel/xlsx/xlsx.d.ts +1 -1
  616. package/dist/types/modules/stream/base-transform.d.ts +1 -1
  617. package/dist/types/modules/stream/buffered-stream.d.ts +1 -1
  618. package/dist/types/modules/stream/index.browser.d.ts +8 -8
  619. package/dist/types/modules/stream/index.d.ts +8 -8
  620. package/dist/types/modules/stream/pull-stream.d.ts +1 -1
  621. package/dist/types/modules/stream/streams.browser.d.ts +4 -4
  622. package/dist/types/modules/stream/streams.d.ts +3 -3
  623. package/dist/types/modules/stream/utils.d.ts +1 -1
  624. package/dist/types/utils/utils.browser.d.ts +1 -1
  625. package/dist/types/utils/utils.d.ts +1 -1
  626. package/package.json +10 -6
  627. package/dist/browser/excelts.esm.js +0 -24621
  628. package/dist/browser/excelts.esm.js.map +0 -1
  629. package/dist/browser/excelts.esm.min.js +0 -148
  630. /package/dist/{browser → iife}/excelts.iife.js.map +0 -0
@@ -0,0 +1,1152 @@
1
+ /**
2
+ * XLSX - Abstract base class for XLSX operations
3
+ *
4
+ * Contains all platform-agnostic logic shared between Node.js and Browser versions:
5
+ * - reconcile: Reconcile model after parsing
6
+ * - _process*Entry: Process individual ZIP entries
7
+ * - add*: Add content to ZIP during writing
8
+ * - prepareModel: Prepare model for writing
9
+ * - loadFromFiles: Load from pre-extracted ZIP data
10
+ */
11
+ import { XmlStream } from "../utils/xml-stream.js";
12
+ import { StylesXform } from "./xform/style/styles-xform.js";
13
+ import { CoreXform } from "./xform/core/core-xform.js";
14
+ import { SharedStringsXform } from "./xform/strings/shared-strings-xform.js";
15
+ import { RelationshipsXform } from "./xform/core/relationships-xform.js";
16
+ import { ContentTypesXform } from "./xform/core/content-types-xform.js";
17
+ import { AppXform } from "./xform/core/app-xform.js";
18
+ import { WorkbookXform } from "./xform/book/workbook-xform.js";
19
+ import { WorkSheetXform } from "./xform/sheet/worksheet-xform.js";
20
+ import { DrawingXform } from "./xform/drawing/drawing-xform.js";
21
+ import { TableXform } from "./xform/table/table-xform.js";
22
+ import { PivotCacheRecordsXform } from "./xform/pivot-table/pivot-cache-records-xform.js";
23
+ import { PivotCacheDefinitionXform } from "./xform/pivot-table/pivot-cache-definition-xform.js";
24
+ import { PivotTableXform } from "./xform/pivot-table/pivot-table-xform.js";
25
+ import { CommentsXform } from "./xform/comment/comments-xform.js";
26
+ import { VmlNotesXform } from "./xform/comment/vml-notes-xform.js";
27
+ import { theme1Xml } from "./xml/theme1.js";
28
+ import { RelType } from "./rel-type.js";
29
+ import { StreamBuf } from "../utils/stream-buf.js";
30
+ import { bufferToString, base64ToUint8Array } from "../../../utils/utils.browser.js";
31
+ import { StreamingZip, ZipDeflateFile } from "../../archive/streaming-zip.js";
32
+ import { ZipParser } from "../../archive/index.browser.js";
33
+ import { PassThrough, concatUint8Arrays } from "../../stream/index.browser.js";
34
+ import { commentsPath, commentsRelTargetFromWorksheetName, drawingPath, drawingRelsPath, OOXML_REL_TARGETS, pivotTableRelTargetFromWorksheetName, pivotCacheDefinitionRelTargetFromWorkbook, getCommentsIndexFromPath, getDrawingNameFromPath, getDrawingNameFromRelsPath, getMediaFilenameFromPath, mediaPath, getPivotCacheDefinitionNameFromPath, getPivotCacheDefinitionNameFromRelsPath, getPivotCacheRecordsNameFromPath, getPivotTableNameFromPath, getPivotTableNameFromRelsPath, pivotCacheDefinitionPath, pivotCacheDefinitionRelsPath, pivotCacheDefinitionRelTargetFromPivotTable, pivotCacheRecordsPath, pivotCacheRecordsRelTarget, pivotTablePath, pivotTableRelsPath, getTableNameFromPath, tablePath, tableRelTargetFromWorksheetName, themePath, getThemeNameFromPath, getVmlDrawingNameFromPath, getWorksheetNoFromWorksheetPath, getWorksheetNoFromWorksheetRelsPath, isBinaryEntryPath, normalizeZipPath, OOXML_PATHS, vmlDrawingRelTargetFromWorksheetName, vmlDrawingPath, worksheetPath, worksheetRelsPath } from "../utils/ooxml-paths.js";
35
+ class StreamingZipWriterAdapter {
36
+ constructor(options) {
37
+ this.events = new Map();
38
+ this.pipedStream = null;
39
+ this.finalized = false;
40
+ this.level = options?.level ?? 6;
41
+ this.modTime = options?.modTime;
42
+ this.timestamps = options?.timestamps;
43
+ this.zip = new StreamingZip((err, data, final) => {
44
+ if (err) {
45
+ this._emit("error", err);
46
+ return;
47
+ }
48
+ if (data && data.length > 0) {
49
+ this._emit("data", data);
50
+ if (this.pipedStream) {
51
+ this.pipedStream.write(data);
52
+ }
53
+ }
54
+ if (final) {
55
+ if (this.pipedStream) {
56
+ this.pipedStream.end();
57
+ }
58
+ this._emit("finish");
59
+ }
60
+ });
61
+ }
62
+ _emit(event, ...args) {
63
+ const callbacks = this.events.get(event);
64
+ if (!callbacks) {
65
+ return;
66
+ }
67
+ for (const cb of callbacks) {
68
+ cb(...args);
69
+ }
70
+ }
71
+ on(event, callback) {
72
+ const callbacks = this.events.get(event) || new Set();
73
+ callbacks.add(callback);
74
+ this.events.set(event, callbacks);
75
+ return this;
76
+ }
77
+ once(event, callback) {
78
+ const wrapped = (...args) => {
79
+ this.off(event, wrapped);
80
+ callback(...args);
81
+ };
82
+ return this.on(event, wrapped);
83
+ }
84
+ off(event, callback) {
85
+ const callbacks = this.events.get(event);
86
+ if (!callbacks) {
87
+ return this;
88
+ }
89
+ callbacks.delete(callback);
90
+ if (callbacks.size === 0) {
91
+ this.events.delete(event);
92
+ }
93
+ return this;
94
+ }
95
+ pipe(stream) {
96
+ this.pipedStream = stream;
97
+ }
98
+ append(data, options) {
99
+ if (this.finalized) {
100
+ throw new Error("Cannot append after finalize");
101
+ }
102
+ let buffer;
103
+ if (options.base64) {
104
+ buffer = base64ToUint8Array(typeof data === "string" ? data : String(data));
105
+ }
106
+ else if (typeof data === "string") {
107
+ buffer = StreamingZipWriterAdapter.textEncoder.encode(data);
108
+ }
109
+ else if (data instanceof Uint8Array) {
110
+ buffer = data;
111
+ }
112
+ else if (ArrayBuffer.isView(data)) {
113
+ buffer = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
114
+ }
115
+ else if (data instanceof ArrayBuffer) {
116
+ buffer = new Uint8Array(data);
117
+ }
118
+ else {
119
+ buffer = data;
120
+ }
121
+ const file = new ZipDeflateFile(options.name, {
122
+ level: this.level,
123
+ modTime: this.modTime,
124
+ timestamps: this.timestamps
125
+ });
126
+ this.zip.add(file);
127
+ const pushResult = file.push(buffer, true);
128
+ if (pushResult && typeof pushResult.catch === "function") {
129
+ pushResult.catch((err) => this._emit("error", err));
130
+ }
131
+ }
132
+ finalize() {
133
+ if (this.finalized) {
134
+ return;
135
+ }
136
+ this.finalized = true;
137
+ this.zip.end();
138
+ }
139
+ }
140
+ StreamingZipWriterAdapter.textEncoder = new TextEncoder();
141
+ /**
142
+ * XLSX class - handles Excel file operations
143
+ * Works in both Node.js and Browser environments
144
+ */
145
+ class XLSX {
146
+ constructor(workbook) {
147
+ this.workbook = workbook;
148
+ }
149
+ // ===========================================================================
150
+ // Stream creation - cross-platform implementation using modules/stream
151
+ // ===========================================================================
152
+ /**
153
+ * Create a stream from binary data (for media/themes)
154
+ */
155
+ createBinaryStream(data) {
156
+ const stream = new PassThrough();
157
+ stream.end(data);
158
+ return stream;
159
+ }
160
+ /**
161
+ * Create a stream from string content (for XML parsing)
162
+ */
163
+ createTextStream(content) {
164
+ const stream = new PassThrough();
165
+ stream.end(content);
166
+ return stream;
167
+ }
168
+ // ===========================================================================
169
+ // Shared implementations - used by all platforms
170
+ // ===========================================================================
171
+ /**
172
+ * Create a StreamBuf instance for buffering data
173
+ */
174
+ createStreamBuf() {
175
+ return new StreamBuf();
176
+ }
177
+ /**
178
+ * Convert buffer/Uint8Array to string
179
+ */
180
+ bufferToString(data) {
181
+ return bufferToString(data);
182
+ }
183
+ /**
184
+ * Create a ZIP writer adapter.
185
+ * Can be overridden by subclasses for platform-specific implementations.
186
+ */
187
+ createZipWriter(options) {
188
+ return new StreamingZipWriterAdapter(options);
189
+ }
190
+ /**
191
+ * Write all workbook content to a ZIP writer
192
+ * Shared by both Node.js write() and browser writeBuffer()
193
+ */
194
+ async writeToZip(zip, options) {
195
+ const { model } = this.workbook;
196
+ this.prepareModel(model, options);
197
+ await this.addContentTypes(zip, model);
198
+ await this.addOfficeRels(zip, model);
199
+ await this.addWorkbookRels(zip, model);
200
+ await this.addWorksheets(zip, model);
201
+ await this.addSharedStrings(zip, model);
202
+ this.addDrawings(zip, model);
203
+ this.addTables(zip, model);
204
+ this.addPivotTables(zip, model);
205
+ await Promise.all([this.addThemes(zip, model), this.addStyles(zip, model)]);
206
+ await this.addMedia(zip, model);
207
+ await Promise.all([this.addApp(zip, model), this.addCore(zip, model)]);
208
+ await this.addWorkbook(zip, model);
209
+ }
210
+ // ===========================================================================
211
+ // Stream/Buffer operations - shared by all platforms
212
+ // ===========================================================================
213
+ /**
214
+ * Read workbook from a stream
215
+ */
216
+ async read(stream, options) {
217
+ // Collect all stream data into a single buffer
218
+ const chunks = [];
219
+ await new Promise((resolve, reject) => {
220
+ const onData = (chunk) => {
221
+ chunks.push(chunk);
222
+ };
223
+ const onEnd = () => {
224
+ stream.off("data", onData);
225
+ stream.off("end", onEnd);
226
+ stream.off("error", onError);
227
+ resolve();
228
+ };
229
+ const onError = (err) => {
230
+ stream.off("data", onData);
231
+ stream.off("end", onEnd);
232
+ stream.off("error", onError);
233
+ reject(err);
234
+ };
235
+ stream.on("data", onData);
236
+ stream.on("end", onEnd);
237
+ stream.on("error", onError);
238
+ });
239
+ return this.loadBuffer(concatUint8Arrays(chunks), options);
240
+ }
241
+ /**
242
+ * Write workbook to a stream
243
+ */
244
+ async write(stream, options) {
245
+ var _a;
246
+ options = options || {};
247
+ options.zip = options.zip || {};
248
+ (_a = options.zip).modTime ?? (_a.modTime = this.workbook.modified ?? this.workbook.created);
249
+ const zip = this.createZipWriter(options.zip);
250
+ zip.pipe(stream);
251
+ await this.writeToZip(zip, options);
252
+ return this._finalize(zip);
253
+ }
254
+ /**
255
+ * Load workbook from buffer/ArrayBuffer/Uint8Array
256
+ */
257
+ async load(data, options) {
258
+ let buffer;
259
+ // Validate input
260
+ const isBuffer = typeof Buffer !== "undefined" ? Buffer.isBuffer(data) : false;
261
+ if (!data ||
262
+ (typeof data === "object" &&
263
+ !isBuffer &&
264
+ !(data instanceof Uint8Array) &&
265
+ !(data instanceof ArrayBuffer))) {
266
+ throw new Error("Can't read the data of 'the loaded zip file'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?");
267
+ }
268
+ // Handle base64 input
269
+ if (options && options.base64) {
270
+ buffer = base64ToUint8Array(data.toString());
271
+ }
272
+ else if (data instanceof ArrayBuffer) {
273
+ buffer = new Uint8Array(data);
274
+ }
275
+ else if (data instanceof Uint8Array) {
276
+ buffer = data;
277
+ }
278
+ else {
279
+ // Node.js Buffer or other array-like
280
+ buffer = new Uint8Array(data);
281
+ }
282
+ return this.loadBuffer(buffer, options);
283
+ }
284
+ /**
285
+ * Internal: Load from Uint8Array buffer
286
+ */
287
+ async loadBuffer(buffer, options) {
288
+ const parser = new ZipParser(buffer);
289
+ const filesMap = await parser.extractAll();
290
+ // Convert Map to Record for loadFromFiles
291
+ const allFiles = {};
292
+ for (const [path, content] of filesMap) {
293
+ allFiles[path] = content;
294
+ }
295
+ return this.loadFromFiles(allFiles, options);
296
+ }
297
+ /**
298
+ * Internal: Load workbook from an async stream of ZIP entries.
299
+ *
300
+ * This is the foundation for TRUE streaming reads on platforms that have a
301
+ * streaming ZIP parser (e.g. Node.js `modules/archive` Parse).
302
+ */
303
+ async loadFromZipEntries(entries, options) {
304
+ const model = {
305
+ worksheets: [],
306
+ worksheetHash: {},
307
+ worksheetRels: [],
308
+ themes: {},
309
+ media: [],
310
+ mediaIndex: {},
311
+ drawings: {},
312
+ drawingRels: {},
313
+ comments: {},
314
+ tables: {},
315
+ vmlDrawings: {},
316
+ pivotTables: {},
317
+ pivotTableRels: {},
318
+ pivotCacheDefinitions: {},
319
+ pivotCacheDefinitionRels: {},
320
+ pivotCacheRecords: {}
321
+ };
322
+ for await (const entry of entries) {
323
+ let drained = false;
324
+ const drainEntry = async () => {
325
+ if (drained) {
326
+ return;
327
+ }
328
+ drained = true;
329
+ await entry.drain();
330
+ };
331
+ if (entry.type === "Directory") {
332
+ await drainEntry();
333
+ continue;
334
+ }
335
+ const entryName = normalizeZipPath(entry.name);
336
+ const stream = entry.stream;
337
+ try {
338
+ const sheetNo = getWorksheetNoFromWorksheetPath(entryName);
339
+ if (sheetNo !== undefined) {
340
+ await this._processWorksheetEntry(stream, model, sheetNo, options, entryName);
341
+ continue;
342
+ }
343
+ switch (entryName) {
344
+ case OOXML_PATHS.rootRels:
345
+ model.globalRels = await this.parseRels(stream);
346
+ break;
347
+ case OOXML_PATHS.xlWorkbook: {
348
+ const workbook = await this.parseWorkbook(stream);
349
+ model.sheets = workbook.sheets;
350
+ model.definedNames = workbook.definedNames;
351
+ model.views = workbook.views;
352
+ model.properties = workbook.properties;
353
+ model.calcProperties = workbook.calcProperties;
354
+ model.pivotCaches = workbook.pivotCaches;
355
+ break;
356
+ }
357
+ case OOXML_PATHS.xlSharedStrings:
358
+ model.sharedStrings = new SharedStringsXform();
359
+ await model.sharedStrings.parseStream(stream);
360
+ break;
361
+ case OOXML_PATHS.xlWorkbookRels:
362
+ model.workbookRels = await this.parseRels(stream);
363
+ break;
364
+ case OOXML_PATHS.docPropsApp: {
365
+ const appXform = new AppXform();
366
+ const appProperties = await appXform.parseStream(stream);
367
+ model.company = appProperties.company;
368
+ model.manager = appProperties.manager;
369
+ break;
370
+ }
371
+ case OOXML_PATHS.docPropsCore: {
372
+ const coreXform = new CoreXform();
373
+ const coreProperties = await coreXform.parseStream(stream);
374
+ Object.assign(model, coreProperties);
375
+ break;
376
+ }
377
+ case OOXML_PATHS.xlStyles:
378
+ model.styles = new StylesXform();
379
+ await model.styles.parseStream(stream);
380
+ break;
381
+ default: {
382
+ const handled = await this._processDefaultEntry(stream, model, entryName);
383
+ if (!handled) {
384
+ // Important for true streaming parsers: always consume unknown entries
385
+ await drainEntry();
386
+ }
387
+ break;
388
+ }
389
+ }
390
+ }
391
+ finally {
392
+ // Make sure we don't leave the entry stream partially consumed.
393
+ // This is critical for true streaming parsers which may otherwise abort
394
+ // the underlying entry stream (showing up as AbortError/ABORT_ERR).
395
+ try {
396
+ await drainEntry();
397
+ }
398
+ catch {
399
+ // ignore drain errors; the primary parse error (if any) is more useful
400
+ }
401
+ }
402
+ }
403
+ this.reconcile(model, options);
404
+ this.workbook.model = model;
405
+ return this.workbook;
406
+ }
407
+ /**
408
+ * Write workbook to buffer
409
+ */
410
+ async writeBuffer(options) {
411
+ var _a;
412
+ options = options || {};
413
+ options.zip = options.zip || {};
414
+ (_a = options.zip).modTime ?? (_a.modTime = this.workbook.modified ?? this.workbook.created);
415
+ const zip = this.createZipWriter(options.zip);
416
+ const stream = this.createStreamBuf();
417
+ zip.pipe(stream);
418
+ await this.writeToZip(zip, options);
419
+ await this._finalize(zip);
420
+ return stream.read() || new Uint8Array(0);
421
+ }
422
+ // ===========================================================================
423
+ // Media handling - base implementation (buffer/base64 only)
424
+ // ===========================================================================
425
+ /**
426
+ * Add media files to ZIP
427
+ * Supports buffer, base64, and filename (if readFileAsync is provided)
428
+ */
429
+ async addMedia(zip, model) {
430
+ await Promise.all(model.media.map(async (medium) => {
431
+ if (medium.type !== "image") {
432
+ throw new Error("Unsupported media");
433
+ }
434
+ // Preserve legacy behavior: `${undefined}` becomes "undefined" in template strings
435
+ const mediaName = medium.name ?? "undefined";
436
+ const filename = mediaPath(`${mediaName}.${medium.extension}`);
437
+ if (medium.filename) {
438
+ if (this.readFileAsync) {
439
+ const data = await this.readFileAsync(medium.filename);
440
+ return zip.append(data, { name: filename });
441
+ }
442
+ throw new Error("Loading images from filename is not supported in this environment");
443
+ }
444
+ if (medium.buffer) {
445
+ return zip.append(medium.buffer, { name: filename });
446
+ }
447
+ if (medium.base64) {
448
+ const content = medium.base64.substring(medium.base64.indexOf(",") + 1);
449
+ return zip.append(content, { name: filename, base64: true });
450
+ }
451
+ throw new Error("Unsupported media");
452
+ }));
453
+ }
454
+ // ===========================================================================
455
+ // Parse helpers - shared by all platforms
456
+ // ===========================================================================
457
+ parseRels(stream) {
458
+ const xform = new RelationshipsXform();
459
+ return xform.parseStream(stream);
460
+ }
461
+ parseWorkbook(stream) {
462
+ const xform = new WorkbookXform();
463
+ return xform.parseStream(stream);
464
+ }
465
+ parseSharedStrings(stream) {
466
+ const xform = new SharedStringsXform();
467
+ return xform.parseStream(stream);
468
+ }
469
+ // ===========================================================================
470
+ // Reconcile - shared by all platforms
471
+ // ===========================================================================
472
+ reconcile(model, options) {
473
+ const workbookXform = new WorkbookXform();
474
+ const worksheetXform = new WorkSheetXform(options);
475
+ const drawingXform = new DrawingXform();
476
+ const tableXform = new TableXform();
477
+ workbookXform.reconcile(model);
478
+ // reconcile drawings with their rels
479
+ const drawingOptions = {
480
+ media: model.media,
481
+ mediaIndex: model.mediaIndex
482
+ };
483
+ Object.keys(model.drawings).forEach(name => {
484
+ const drawing = model.drawings[name];
485
+ const drawingRel = model.drawingRels[name];
486
+ if (drawingRel) {
487
+ drawingOptions.rels = drawingRel.reduce((o, rel) => {
488
+ o[rel.Id] = rel;
489
+ return o;
490
+ }, {});
491
+ (drawing.anchors || []).forEach((anchor) => {
492
+ const hyperlinks = anchor.picture && anchor.picture.hyperlinks;
493
+ if (hyperlinks && drawingOptions.rels[hyperlinks.rId]) {
494
+ hyperlinks.hyperlink = drawingOptions.rels[hyperlinks.rId].Target;
495
+ delete hyperlinks.rId;
496
+ }
497
+ });
498
+ drawingXform.reconcile(drawing, drawingOptions);
499
+ }
500
+ });
501
+ // reconcile tables with the default styles
502
+ const tableOptions = {
503
+ styles: model.styles
504
+ };
505
+ Object.values(model.tables).forEach((table) => {
506
+ tableXform.reconcile(table, tableOptions);
507
+ });
508
+ // Reconcile pivot tables
509
+ this._reconcilePivotTables(model);
510
+ const sheetOptions = {
511
+ styles: model.styles,
512
+ sharedStrings: model.sharedStrings,
513
+ media: model.media,
514
+ mediaIndex: model.mediaIndex,
515
+ date1904: model.properties && model.properties.date1904,
516
+ drawings: model.drawings,
517
+ comments: model.comments,
518
+ tables: model.tables,
519
+ vmlDrawings: model.vmlDrawings,
520
+ pivotTables: model.pivotTablesIndexed
521
+ };
522
+ model.worksheets.forEach((worksheet) => {
523
+ worksheet.relationships = model.worksheetRels[worksheet.sheetNo];
524
+ worksheetXform.reconcile(worksheet, sheetOptions);
525
+ });
526
+ // delete unnecessary parts
527
+ delete model.worksheetHash;
528
+ delete model.worksheetRels;
529
+ delete model.globalRels;
530
+ delete model.sharedStrings;
531
+ delete model.workbookRels;
532
+ delete model.sheetDefs;
533
+ delete model.styles;
534
+ delete model.mediaIndex;
535
+ delete model.drawings;
536
+ delete model.drawingRels;
537
+ delete model.vmlDrawings;
538
+ delete model.pivotTableRels;
539
+ delete model.pivotCacheDefinitionRels;
540
+ }
541
+ /**
542
+ * Reconcile pivot tables by linking them to worksheets and their cache data.
543
+ */
544
+ _reconcilePivotTables(model) {
545
+ const rawPivotTables = model.pivotTables || {};
546
+ if (typeof rawPivotTables !== "object" || Object.keys(rawPivotTables).length === 0) {
547
+ model.pivotTables = [];
548
+ model.pivotTablesIndexed = {};
549
+ return;
550
+ }
551
+ const definitionToCacheId = this._buildDefinitionToCacheIdMap(model);
552
+ const cacheMap = new Map();
553
+ Object.entries(model.pivotCacheDefinitions || {}).forEach(([name, definition]) => {
554
+ const cacheId = definitionToCacheId.get(name);
555
+ if (cacheId !== undefined) {
556
+ const recordsName = name.replace("Definition", "Records");
557
+ cacheMap.set(cacheId, {
558
+ definition,
559
+ records: model.pivotCacheRecords?.[recordsName],
560
+ definitionName: name
561
+ });
562
+ }
563
+ });
564
+ const loadedPivotTables = [];
565
+ const pivotTablesIndexed = {};
566
+ Object.entries(rawPivotTables).forEach(([pivotName, pivotTable]) => {
567
+ const pt = pivotTable;
568
+ const tableNumber = this._extractTableNumber(pivotName);
569
+ const cacheData = cacheMap.get(pt.cacheId);
570
+ const completePivotTable = {
571
+ ...pt,
572
+ tableNumber,
573
+ cacheDefinition: cacheData?.definition,
574
+ cacheRecords: cacheData?.records,
575
+ cacheFields: cacheData?.definition?.cacheFields || [],
576
+ rows: pt.rowFields.filter(f => f >= 0),
577
+ columns: pt.colFields.filter(f => f >= 0 && f !== -2),
578
+ values: pt.dataFields.map(df => df.fld),
579
+ metric: this._determineMetric(pt.dataFields),
580
+ applyWidthHeightFormats: pt.applyWidthHeightFormats || "0"
581
+ };
582
+ loadedPivotTables.push(completePivotTable);
583
+ pivotTablesIndexed[pivotTableRelTargetFromWorksheetName(pivotName)] = completePivotTable;
584
+ });
585
+ loadedPivotTables.sort((a, b) => a.tableNumber - b.tableNumber);
586
+ model.pivotTables = loadedPivotTables;
587
+ model.pivotTablesIndexed = pivotTablesIndexed;
588
+ model.loadedPivotTables = loadedPivotTables;
589
+ }
590
+ _extractTableNumber(name) {
591
+ const match = name.match(/pivotTable(\d+)/);
592
+ return match ? parseInt(match[1], 10) : 1;
593
+ }
594
+ _buildCacheIdMap(model) {
595
+ const rIdToCacheId = new Map();
596
+ const pivotCaches = model.pivotCaches || [];
597
+ for (const cache of pivotCaches) {
598
+ if (cache.cacheId && cache.rId) {
599
+ rIdToCacheId.set(cache.rId, parseInt(cache.cacheId, 10));
600
+ }
601
+ }
602
+ return rIdToCacheId;
603
+ }
604
+ _buildDefinitionToCacheIdMap(model) {
605
+ const definitionToCacheId = new Map();
606
+ const rIdToCacheId = this._buildCacheIdMap(model);
607
+ const workbookRels = model.workbookRels || [];
608
+ for (const rel of workbookRels) {
609
+ if (rel.Type === XLSX.RelType.PivotCacheDefinition && rel.Target) {
610
+ const match = rel.Target.match(/pivotCacheDefinition(\d+)\.xml/);
611
+ if (match) {
612
+ const defName = `pivotCacheDefinition${match[1]}`;
613
+ const cacheId = rIdToCacheId.get(rel.Id);
614
+ if (cacheId !== undefined) {
615
+ definitionToCacheId.set(defName, cacheId);
616
+ }
617
+ }
618
+ }
619
+ }
620
+ return definitionToCacheId;
621
+ }
622
+ _determineMetric(dataFields) {
623
+ if (dataFields.length > 0 && dataFields[0].subtotal === "count") {
624
+ return "count";
625
+ }
626
+ return "sum";
627
+ }
628
+ // ===========================================================================
629
+ // Process Entry methods - shared by all platforms
630
+ // ===========================================================================
631
+ async _processWorksheetEntry(stream, model, sheetNo, options, path) {
632
+ const xform = new WorkSheetXform(options);
633
+ const worksheet = await xform.parseStream(stream);
634
+ if (!worksheet) {
635
+ throw new Error(`Failed to parse worksheet ${path}`);
636
+ }
637
+ worksheet.sheetNo = sheetNo;
638
+ model.worksheetHash[path] = worksheet;
639
+ model.worksheets.push(worksheet);
640
+ }
641
+ async _processCommentEntry(stream, model, name) {
642
+ const xform = new CommentsXform();
643
+ const comments = await xform.parseStream(stream);
644
+ model.comments[commentsRelTargetFromWorksheetName(name)] = comments;
645
+ }
646
+ async _processTableEntry(stream, model, name) {
647
+ const xform = new TableXform();
648
+ const table = await xform.parseStream(stream);
649
+ model.tables[tableRelTargetFromWorksheetName(name)] = table;
650
+ }
651
+ async _processWorksheetRelsEntry(stream, model, sheetNo) {
652
+ const xform = new RelationshipsXform();
653
+ const relationships = await xform.parseStream(stream);
654
+ model.worksheetRels[sheetNo] = relationships;
655
+ }
656
+ async _processMediaEntry(stream, model, filename) {
657
+ const lastDot = filename.lastIndexOf(".");
658
+ if (lastDot >= 1) {
659
+ const extension = filename.substr(lastDot + 1);
660
+ const name = filename.substr(0, lastDot);
661
+ await new Promise((resolve, reject) => {
662
+ const streamBuf = this.createStreamBuf();
663
+ const cleanup = () => {
664
+ stream.off("error", onError);
665
+ streamBuf.off("error", onError);
666
+ streamBuf.off("finish", onFinish);
667
+ };
668
+ const onFinish = () => {
669
+ cleanup();
670
+ model.mediaIndex[filename] = model.media.length;
671
+ model.mediaIndex[name] = model.media.length;
672
+ const medium = {
673
+ type: "image",
674
+ name,
675
+ extension,
676
+ buffer: streamBuf.read()
677
+ };
678
+ model.media.push(medium);
679
+ resolve();
680
+ };
681
+ const onError = (error) => {
682
+ cleanup();
683
+ reject(error);
684
+ };
685
+ streamBuf.once("finish", onFinish);
686
+ stream.on("error", onError);
687
+ streamBuf.on("error", onError);
688
+ stream.pipe(streamBuf);
689
+ });
690
+ }
691
+ }
692
+ async _processDrawingEntry(entry, model, name) {
693
+ const xform = new DrawingXform();
694
+ const drawing = await xform.parseStream(entry);
695
+ model.drawings[name] = drawing;
696
+ }
697
+ async _processDrawingRelsEntry(entry, model, name) {
698
+ const xform = new RelationshipsXform();
699
+ const relationships = await xform.parseStream(entry);
700
+ model.drawingRels[name] = relationships;
701
+ }
702
+ async _processVmlDrawingEntry(entry, model, name) {
703
+ const xform = new VmlNotesXform();
704
+ const vmlDrawing = await xform.parseStream(entry);
705
+ model.vmlDrawings[vmlDrawingRelTargetFromWorksheetName(name)] = vmlDrawing;
706
+ }
707
+ async _processThemeEntry(stream, model, name) {
708
+ await new Promise((resolve, reject) => {
709
+ const streamBuf = this.createStreamBuf();
710
+ const cleanup = () => {
711
+ stream.off("error", onError);
712
+ streamBuf.off("error", onError);
713
+ streamBuf.off("finish", onFinish);
714
+ };
715
+ const onFinish = () => {
716
+ cleanup();
717
+ const data = streamBuf.read();
718
+ model.themes[name] = data
719
+ ? typeof data === "string"
720
+ ? data
721
+ : this.bufferToString(data)
722
+ : "";
723
+ resolve();
724
+ };
725
+ const onError = (err) => {
726
+ cleanup();
727
+ reject(err);
728
+ };
729
+ streamBuf.once("finish", onFinish);
730
+ stream.on("error", onError);
731
+ streamBuf.on("error", onError);
732
+ stream.pipe(streamBuf);
733
+ });
734
+ }
735
+ async _processPivotTableEntry(stream, model, name) {
736
+ const xform = new PivotTableXform();
737
+ const pivotTable = await xform.parseStream(stream);
738
+ if (pivotTable) {
739
+ model.pivotTables[name] = pivotTable;
740
+ }
741
+ }
742
+ async _processPivotTableRelsEntry(stream, model, name) {
743
+ const xform = new RelationshipsXform();
744
+ const relationships = await xform.parseStream(stream);
745
+ model.pivotTableRels[name] = relationships;
746
+ }
747
+ async _processPivotCacheDefinitionEntry(stream, model, name) {
748
+ const xform = new PivotCacheDefinitionXform();
749
+ const cacheDefinition = await xform.parseStream(stream);
750
+ if (cacheDefinition) {
751
+ model.pivotCacheDefinitions[name] = cacheDefinition;
752
+ }
753
+ }
754
+ async _processPivotCacheDefinitionRelsEntry(stream, model, name) {
755
+ const xform = new RelationshipsXform();
756
+ const relationships = await xform.parseStream(stream);
757
+ model.pivotCacheDefinitionRels[name] = relationships;
758
+ }
759
+ async _processPivotCacheRecordsEntry(stream, model, name) {
760
+ const xform = new PivotCacheRecordsXform();
761
+ const cacheRecords = await xform.parseStream(stream);
762
+ if (cacheRecords) {
763
+ model.pivotCacheRecords[name] = cacheRecords;
764
+ }
765
+ }
766
+ // ===========================================================================
767
+ // loadFromFiles - shared logic for loading from pre-extracted ZIP data
768
+ // ===========================================================================
769
+ async loadFromFiles(zipData, options) {
770
+ const model = {
771
+ worksheets: [],
772
+ worksheetHash: {},
773
+ worksheetRels: [],
774
+ themes: {},
775
+ media: [],
776
+ mediaIndex: {},
777
+ drawings: {},
778
+ drawingRels: {},
779
+ comments: {},
780
+ tables: {},
781
+ vmlDrawings: {},
782
+ pivotTables: {},
783
+ pivotTableRels: {},
784
+ pivotCacheDefinitions: {},
785
+ pivotCacheDefinitionRels: {},
786
+ pivotCacheRecords: {}
787
+ };
788
+ const entries = Object.keys(zipData).map(name => ({
789
+ name,
790
+ dir: name.endsWith("/"),
791
+ data: zipData[name]
792
+ }));
793
+ for (const entry of entries) {
794
+ if (!entry.dir) {
795
+ const entryName = normalizeZipPath(entry.name);
796
+ // Create appropriate stream based on entry type
797
+ const isBinaryEntry = isBinaryEntryPath(entryName);
798
+ const stream = isBinaryEntry
799
+ ? this.createBinaryStream(entry.data)
800
+ : this.createTextStream(this.bufferToString(entry.data));
801
+ const sheetNo = getWorksheetNoFromWorksheetPath(entryName);
802
+ if (sheetNo !== undefined) {
803
+ await this._processWorksheetEntry(stream, model, sheetNo, options, entryName);
804
+ }
805
+ else {
806
+ switch (entryName) {
807
+ case OOXML_PATHS.rootRels:
808
+ model.globalRels = await this.parseRels(stream);
809
+ break;
810
+ case OOXML_PATHS.xlWorkbook: {
811
+ const workbook = await this.parseWorkbook(stream);
812
+ model.sheets = workbook.sheets;
813
+ model.definedNames = workbook.definedNames;
814
+ model.views = workbook.views;
815
+ model.properties = workbook.properties;
816
+ model.calcProperties = workbook.calcProperties;
817
+ model.pivotCaches = workbook.pivotCaches;
818
+ break;
819
+ }
820
+ case OOXML_PATHS.xlSharedStrings:
821
+ model.sharedStrings = new SharedStringsXform();
822
+ await model.sharedStrings.parseStream(stream);
823
+ break;
824
+ case OOXML_PATHS.xlWorkbookRels:
825
+ model.workbookRels = await this.parseRels(stream);
826
+ break;
827
+ case OOXML_PATHS.docPropsApp: {
828
+ const appXform = new AppXform();
829
+ const appProperties = await appXform.parseStream(stream);
830
+ model.company = appProperties.company;
831
+ model.manager = appProperties.manager;
832
+ break;
833
+ }
834
+ case OOXML_PATHS.docPropsCore: {
835
+ const coreXform = new CoreXform();
836
+ const coreProperties = await coreXform.parseStream(stream);
837
+ Object.assign(model, coreProperties);
838
+ break;
839
+ }
840
+ case OOXML_PATHS.xlStyles:
841
+ model.styles = new StylesXform();
842
+ await model.styles.parseStream(stream);
843
+ break;
844
+ default:
845
+ await this._processDefaultEntry(stream, model, entryName);
846
+ }
847
+ }
848
+ }
849
+ }
850
+ this.reconcile(model, options);
851
+ this.workbook.model = model;
852
+ return this.workbook;
853
+ }
854
+ /**
855
+ * Process default entries (drawings, comments, tables, etc.)
856
+ */
857
+ async _processDefaultEntry(stream, model, entryName) {
858
+ const worksheetRelsSheetNo = getWorksheetNoFromWorksheetRelsPath(entryName);
859
+ if (worksheetRelsSheetNo !== undefined) {
860
+ const sheetNo = worksheetRelsSheetNo;
861
+ await this._processWorksheetRelsEntry(stream, model, sheetNo);
862
+ return true;
863
+ }
864
+ const mediaFilename = getMediaFilenameFromPath(entryName);
865
+ if (mediaFilename) {
866
+ await this._processMediaEntry(stream, model, mediaFilename);
867
+ return true;
868
+ }
869
+ const drawingName = getDrawingNameFromPath(entryName);
870
+ if (drawingName) {
871
+ await this._processDrawingEntry(stream, model, drawingName);
872
+ return true;
873
+ }
874
+ const drawingRelsName = getDrawingNameFromRelsPath(entryName);
875
+ if (drawingRelsName) {
876
+ await this._processDrawingRelsEntry(stream, model, drawingRelsName);
877
+ return true;
878
+ }
879
+ const vmlDrawingName = getVmlDrawingNameFromPath(entryName);
880
+ if (vmlDrawingName) {
881
+ await this._processVmlDrawingEntry(stream, model, vmlDrawingName);
882
+ return true;
883
+ }
884
+ const commentsIndex = getCommentsIndexFromPath(entryName);
885
+ if (commentsIndex) {
886
+ await this._processCommentEntry(stream, model, `comments${commentsIndex}`);
887
+ return true;
888
+ }
889
+ const tableName = getTableNameFromPath(entryName);
890
+ if (tableName) {
891
+ await this._processTableEntry(stream, model, tableName);
892
+ return true;
893
+ }
894
+ const themeName = getThemeNameFromPath(entryName);
895
+ if (themeName) {
896
+ await this._processThemeEntry(stream, model, themeName);
897
+ return true;
898
+ }
899
+ // Pivot table files
900
+ const pivotTableName = getPivotTableNameFromPath(entryName);
901
+ if (pivotTableName) {
902
+ await this._processPivotTableEntry(stream, model, pivotTableName);
903
+ return true;
904
+ }
905
+ const pivotTableRelsName = getPivotTableNameFromRelsPath(entryName);
906
+ if (pivotTableRelsName) {
907
+ await this._processPivotTableRelsEntry(stream, model, pivotTableRelsName);
908
+ return true;
909
+ }
910
+ // Pivot cache files
911
+ const pivotCacheDefinitionName = getPivotCacheDefinitionNameFromPath(entryName);
912
+ if (pivotCacheDefinitionName) {
913
+ await this._processPivotCacheDefinitionEntry(stream, model, pivotCacheDefinitionName);
914
+ return true;
915
+ }
916
+ const pivotCacheDefinitionRelsName = getPivotCacheDefinitionNameFromRelsPath(entryName);
917
+ if (pivotCacheDefinitionRelsName) {
918
+ await this._processPivotCacheDefinitionRelsEntry(stream, model, pivotCacheDefinitionRelsName);
919
+ return true;
920
+ }
921
+ const pivotCacheRecordsName = getPivotCacheRecordsNameFromPath(entryName);
922
+ if (pivotCacheRecordsName) {
923
+ await this._processPivotCacheRecordsEntry(stream, model, pivotCacheRecordsName);
924
+ return true;
925
+ }
926
+ return false;
927
+ }
928
+ // ===========================================================================
929
+ // Write methods - shared by all platforms
930
+ // ===========================================================================
931
+ async addContentTypes(zip, model) {
932
+ const xform = new ContentTypesXform();
933
+ const xml = xform.toXml(model);
934
+ zip.append(xml, { name: OOXML_PATHS.contentTypes });
935
+ }
936
+ async addApp(zip, model) {
937
+ const xform = new AppXform();
938
+ const xml = xform.toXml(model);
939
+ zip.append(xml, { name: OOXML_PATHS.docPropsApp });
940
+ }
941
+ async addCore(zip, model) {
942
+ const xform = new CoreXform();
943
+ zip.append(xform.toXml(model), { name: OOXML_PATHS.docPropsCore });
944
+ }
945
+ async addThemes(zip, model) {
946
+ const themes = model.themes || { theme1: theme1Xml };
947
+ Object.keys(themes).forEach(name => {
948
+ const xml = themes[name];
949
+ zip.append(xml, { name: themePath(name) });
950
+ });
951
+ }
952
+ async addOfficeRels(zip, _model) {
953
+ const xform = new RelationshipsXform();
954
+ const xml = xform.toXml([
955
+ { Id: "rId1", Type: XLSX.RelType.OfficeDocument, Target: OOXML_PATHS.xlWorkbook },
956
+ { Id: "rId2", Type: XLSX.RelType.CoreProperties, Target: OOXML_PATHS.docPropsCore },
957
+ { Id: "rId3", Type: XLSX.RelType.ExtenderProperties, Target: OOXML_PATHS.docPropsApp }
958
+ ]);
959
+ zip.append(xml, { name: OOXML_PATHS.rootRels });
960
+ }
961
+ async addWorkbookRels(zip, model) {
962
+ let count = 1;
963
+ const relationships = [
964
+ { Id: `rId${count++}`, Type: XLSX.RelType.Styles, Target: OOXML_REL_TARGETS.workbookStyles },
965
+ { Id: `rId${count++}`, Type: XLSX.RelType.Theme, Target: OOXML_REL_TARGETS.workbookTheme1 }
966
+ ];
967
+ if (model.sharedStrings.count) {
968
+ relationships.push({
969
+ Id: `rId${count++}`,
970
+ Type: XLSX.RelType.SharedStrings,
971
+ Target: OOXML_REL_TARGETS.workbookSharedStrings
972
+ });
973
+ }
974
+ (model.pivotTables || []).forEach((pivotTable) => {
975
+ pivotTable.rId = `rId${count++}`;
976
+ relationships.push({
977
+ Id: pivotTable.rId,
978
+ Type: XLSX.RelType.PivotCacheDefinition,
979
+ Target: pivotCacheDefinitionRelTargetFromWorkbook(pivotTable.tableNumber)
980
+ });
981
+ });
982
+ model.worksheets.forEach((worksheet, index) => {
983
+ worksheet.rId = `rId${count++}`;
984
+ worksheet.fileIndex = index + 1;
985
+ relationships.push({
986
+ Id: worksheet.rId,
987
+ Type: XLSX.RelType.Worksheet,
988
+ Target: `worksheets/sheet${worksheet.fileIndex}.xml`
989
+ });
990
+ });
991
+ const xform = new RelationshipsXform();
992
+ const xml = xform.toXml(relationships);
993
+ zip.append(xml, { name: OOXML_PATHS.xlWorkbookRels });
994
+ }
995
+ async addSharedStrings(zip, model) {
996
+ if (model.sharedStrings && model.sharedStrings.count) {
997
+ zip.append(model.sharedStrings.xml, { name: OOXML_PATHS.xlSharedStrings });
998
+ }
999
+ }
1000
+ async addStyles(zip, model) {
1001
+ const { xml } = model.styles;
1002
+ if (xml) {
1003
+ zip.append(xml, { name: OOXML_PATHS.xlStyles });
1004
+ }
1005
+ }
1006
+ async addWorkbook(zip, model) {
1007
+ const xform = new WorkbookXform();
1008
+ zip.append(xform.toXml(model), { name: OOXML_PATHS.xlWorkbook });
1009
+ }
1010
+ async addWorksheets(zip, model) {
1011
+ const worksheetXform = new WorkSheetXform();
1012
+ const relationshipsXform = new RelationshipsXform();
1013
+ const commentsXform = new CommentsXform();
1014
+ const vmlNotesXform = new VmlNotesXform();
1015
+ model.worksheets.forEach((worksheet, index) => {
1016
+ const fileIndex = worksheet.fileIndex || index + 1;
1017
+ let xmlStream = new XmlStream();
1018
+ worksheetXform.render(xmlStream, worksheet);
1019
+ zip.append(xmlStream.xml, { name: worksheetPath(fileIndex) });
1020
+ if (worksheet.rels && worksheet.rels.length) {
1021
+ xmlStream = new XmlStream();
1022
+ relationshipsXform.render(xmlStream, worksheet.rels);
1023
+ zip.append(xmlStream.xml, { name: worksheetRelsPath(fileIndex) });
1024
+ }
1025
+ if (worksheet.comments.length > 0) {
1026
+ xmlStream = new XmlStream();
1027
+ commentsXform.render(xmlStream, worksheet);
1028
+ zip.append(xmlStream.xml, { name: commentsPath(fileIndex) });
1029
+ xmlStream = new XmlStream();
1030
+ vmlNotesXform.render(xmlStream, worksheet);
1031
+ zip.append(xmlStream.xml, { name: vmlDrawingPath(fileIndex) });
1032
+ }
1033
+ });
1034
+ }
1035
+ addDrawings(zip, model) {
1036
+ const drawingXform = new DrawingXform();
1037
+ const relsXform = new RelationshipsXform();
1038
+ model.worksheets.forEach((worksheet) => {
1039
+ const { drawing } = worksheet;
1040
+ if (drawing) {
1041
+ drawingXform.prepare(drawing);
1042
+ let xml = drawingXform.toXml(drawing);
1043
+ zip.append(xml, { name: drawingPath(drawing.name) });
1044
+ xml = relsXform.toXml(drawing.rels);
1045
+ zip.append(xml, { name: drawingRelsPath(drawing.name) });
1046
+ }
1047
+ });
1048
+ }
1049
+ addTables(zip, model) {
1050
+ const tableXform = new TableXform();
1051
+ model.worksheets.forEach((worksheet) => {
1052
+ const { tables } = worksheet;
1053
+ tables.forEach((table) => {
1054
+ tableXform.prepare(table, {});
1055
+ const tableXml = tableXform.toXml(table);
1056
+ zip.append(tableXml, { name: tablePath(table.target) });
1057
+ });
1058
+ });
1059
+ }
1060
+ addPivotTables(zip, model) {
1061
+ if (!model.pivotTables.length) {
1062
+ return;
1063
+ }
1064
+ const pivotCacheRecordsXform = new PivotCacheRecordsXform();
1065
+ const pivotCacheDefinitionXform = new PivotCacheDefinitionXform();
1066
+ const pivotTableXform = new PivotTableXform();
1067
+ const relsXform = new RelationshipsXform();
1068
+ model.pivotTables.forEach((pivotTable) => {
1069
+ const n = pivotTable.tableNumber;
1070
+ const isLoaded = pivotTable.isLoaded;
1071
+ if (isLoaded) {
1072
+ if (pivotTable.cacheDefinition) {
1073
+ const xml = pivotCacheDefinitionXform.toXml(pivotTable.cacheDefinition);
1074
+ zip.append(xml, { name: pivotCacheDefinitionPath(n) });
1075
+ }
1076
+ if (pivotTable.cacheRecords) {
1077
+ const xml = pivotCacheRecordsXform.toXml(pivotTable.cacheRecords);
1078
+ zip.append(xml, { name: pivotCacheRecordsPath(n) });
1079
+ }
1080
+ }
1081
+ else {
1082
+ let xml = pivotCacheRecordsXform.toXml(pivotTable);
1083
+ zip.append(xml, { name: pivotCacheRecordsPath(n) });
1084
+ xml = pivotCacheDefinitionXform.toXml(pivotTable);
1085
+ zip.append(xml, { name: pivotCacheDefinitionPath(n) });
1086
+ }
1087
+ let xml = relsXform.toXml([
1088
+ {
1089
+ Id: "rId1",
1090
+ Type: XLSX.RelType.PivotCacheRecords,
1091
+ Target: pivotCacheRecordsRelTarget(n)
1092
+ }
1093
+ ]);
1094
+ zip.append(xml, { name: pivotCacheDefinitionRelsPath(n) });
1095
+ xml = pivotTableXform.toXml(pivotTable);
1096
+ zip.append(xml, { name: pivotTablePath(n) });
1097
+ xml = relsXform.toXml([
1098
+ {
1099
+ Id: "rId1",
1100
+ Type: XLSX.RelType.PivotCacheDefinition,
1101
+ Target: pivotCacheDefinitionRelTargetFromPivotTable(n)
1102
+ }
1103
+ ]);
1104
+ zip.append(xml, { name: pivotTableRelsPath(n) });
1105
+ });
1106
+ }
1107
+ _finalize(zip) {
1108
+ return new Promise((resolve, reject) => {
1109
+ zip.on("finish", () => {
1110
+ resolve(this);
1111
+ });
1112
+ zip.on("error", reject);
1113
+ zip.finalize();
1114
+ });
1115
+ }
1116
+ prepareModel(model, options) {
1117
+ model.creator = model.creator || "ExcelTS";
1118
+ model.lastModifiedBy = model.lastModifiedBy || "ExcelTS";
1119
+ model.created = model.created || new Date();
1120
+ model.modified = model.modified || new Date();
1121
+ model.useSharedStrings =
1122
+ options.useSharedStrings !== undefined ? options.useSharedStrings : true;
1123
+ model.useStyles = options.useStyles !== undefined ? options.useStyles : true;
1124
+ model.sharedStrings = new SharedStringsXform();
1125
+ model.styles = model.useStyles ? new StylesXform(true) : new StylesXform.Mock();
1126
+ const workbookXform = new WorkbookXform();
1127
+ const worksheetXform = new WorkSheetXform();
1128
+ workbookXform.prepare(model);
1129
+ const worksheetOptions = {
1130
+ sharedStrings: model.sharedStrings,
1131
+ styles: model.styles,
1132
+ date1904: model.properties.date1904,
1133
+ drawingsCount: 0,
1134
+ media: model.media
1135
+ };
1136
+ worksheetOptions.drawings = model.drawings = [];
1137
+ worksheetOptions.commentRefs = model.commentRefs = [];
1138
+ let tableCount = 0;
1139
+ model.tables = [];
1140
+ model.worksheets.forEach((worksheet) => {
1141
+ worksheet.tables.forEach((table) => {
1142
+ tableCount++;
1143
+ table.target = `table${tableCount}.xml`;
1144
+ table.id = tableCount;
1145
+ model.tables.push(table);
1146
+ });
1147
+ worksheetXform.prepare(worksheet, worksheetOptions);
1148
+ });
1149
+ }
1150
+ }
1151
+ XLSX.RelType = RelType;
1152
+ export { XLSX };