@cj-tech-master/excelts 1.6.3-canary.20251224124621.73c5d94 → 1.6.3

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 (376) hide show
  1. package/README.md +18 -31
  2. package/README_zh.md +19 -31
  3. package/dist/browser/excelts.iife.js +40910 -7518
  4. package/dist/browser/excelts.iife.js.map +1 -1
  5. package/dist/browser/excelts.iife.min.js +105 -25
  6. package/dist/cjs/csv/csv.js +162 -226
  7. package/dist/cjs/doc/anchor.js +2 -2
  8. package/dist/cjs/doc/cell.js +22 -22
  9. package/dist/cjs/doc/column.js +7 -7
  10. package/dist/cjs/doc/data-validations.js +3 -3
  11. package/dist/cjs/doc/defined-names.js +13 -13
  12. package/dist/cjs/doc/image.js +7 -7
  13. package/dist/cjs/doc/modelcontainer.js +2 -2
  14. package/dist/cjs/doc/note.js +2 -2
  15. package/dist/cjs/doc/pivot-table.js +5 -5
  16. package/dist/cjs/doc/range.js +11 -11
  17. package/dist/cjs/doc/row.js +16 -16
  18. package/dist/cjs/doc/table.js +5 -5
  19. package/dist/cjs/doc/workbook.js +179 -68
  20. package/dist/cjs/doc/worksheet.js +41 -41
  21. package/dist/cjs/index.js +32 -49
  22. package/dist/cjs/stream/xlsx/hyperlink-reader.js +6 -6
  23. package/dist/cjs/stream/xlsx/sheet-comments-writer.js +12 -12
  24. package/dist/cjs/stream/xlsx/sheet-rels-writer.js +4 -4
  25. package/dist/cjs/stream/xlsx/workbook-reader.js +22 -22
  26. package/dist/cjs/stream/xlsx/workbook-writer.js +34 -34
  27. package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
  28. package/dist/cjs/stream/xlsx/worksheet-writer.js +60 -60
  29. package/dist/cjs/utils/cell-format.js +2 -2
  30. package/dist/cjs/utils/cell-matrix.js +5 -5
  31. package/dist/cjs/utils/parse-sax.js +2 -2
  32. package/dist/cjs/utils/shared-formula.js +5 -5
  33. package/dist/cjs/utils/sheet-utils.js +13 -13
  34. package/dist/cjs/utils/stream-buf.js +5 -5
  35. package/dist/cjs/utils/unzip/extract.js +11 -11
  36. package/dist/cjs/utils/unzip/index.js +21 -21
  37. package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
  38. package/dist/cjs/utils/unzip/parse.js +16 -16
  39. package/dist/cjs/utils/unzip/zip-parser.js +3 -3
  40. package/dist/cjs/utils/utils.js +154 -46
  41. package/dist/cjs/utils/xml-stream.js +3 -3
  42. package/dist/cjs/utils/zip/compress.js +198 -18
  43. package/dist/cjs/utils/zip/index.js +17 -17
  44. package/dist/cjs/utils/zip/zip-builder.js +10 -10
  45. package/dist/cjs/utils/zip-stream.js +4 -4
  46. package/dist/cjs/xlsx/xform/base-xform.js +4 -4
  47. package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
  48. package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
  49. package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
  50. package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
  51. package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
  52. package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
  53. package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
  54. package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
  55. package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
  56. package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
  57. package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
  58. package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
  59. package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
  60. package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
  61. package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
  62. package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
  63. package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
  64. package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
  65. package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
  66. package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
  67. package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
  68. package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
  69. package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
  70. package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
  71. package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
  72. package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
  73. package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
  74. package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
  75. package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
  76. package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
  77. package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
  78. package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
  79. package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
  80. package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
  81. package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
  82. package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
  83. package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
  84. package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
  85. package/dist/cjs/xlsx/xform/list-xform.js +2 -2
  86. package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
  87. package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
  88. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
  89. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
  90. package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +11 -10
  91. package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
  92. package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
  93. package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
  94. package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
  95. package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
  96. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
  97. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
  98. package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
  99. package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
  100. package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
  101. package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
  102. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
  103. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +12 -11
  104. package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
  105. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
  106. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
  107. package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
  108. package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
  109. package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
  110. package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
  111. package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
  112. package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
  113. package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
  114. package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
  115. package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
  116. package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
  117. package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
  118. package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
  119. package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
  120. package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
  121. package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +2 -2
  122. package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
  123. package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
  124. package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
  125. package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
  126. package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
  127. package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +4 -4
  128. package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
  129. package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
  130. package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
  131. package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
  132. package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
  133. package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
  134. package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +68 -68
  135. package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
  136. package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
  137. package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
  138. package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
  139. package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
  140. package/dist/cjs/xlsx/xform/static-xform.js +4 -4
  141. package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
  142. package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
  143. package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
  144. package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
  145. package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
  146. package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
  147. package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
  148. package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
  149. package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
  150. package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
  151. package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
  152. package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
  153. package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
  154. package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
  155. package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
  156. package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
  157. package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
  158. package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
  159. package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
  160. package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
  161. package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
  162. package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
  163. package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
  164. package/dist/cjs/xlsx/xlsx.js +833 -91
  165. package/dist/esm/csv/csv.js +159 -189
  166. package/dist/esm/doc/workbook.js +175 -64
  167. package/dist/esm/index.browser.js +1 -33
  168. package/dist/esm/index.js +8 -23
  169. package/dist/esm/local.js +1 -0
  170. package/dist/esm/utils/utils.js +123 -15
  171. package/dist/esm/utils/zip/compress.js +164 -16
  172. package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +3 -2
  173. package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +3 -2
  174. package/dist/esm/xlsx/xlsx.js +829 -87
  175. package/dist/types/csv/csv.d.ts +71 -97
  176. package/dist/types/doc/anchor.d.ts +1 -1
  177. package/dist/types/doc/cell.d.ts +7 -7
  178. package/dist/types/doc/column.d.ts +3 -3
  179. package/dist/types/doc/defined-names.d.ts +4 -4
  180. package/dist/types/doc/image.d.ts +2 -2
  181. package/dist/types/doc/modelcontainer.d.ts +1 -1
  182. package/dist/types/doc/pivot-table.d.ts +1 -1
  183. package/dist/types/doc/range.d.ts +1 -1
  184. package/dist/types/doc/row.d.ts +3 -3
  185. package/dist/types/doc/table.d.ts +2 -2
  186. package/dist/types/doc/workbook.d.ts +92 -62
  187. package/dist/types/doc/worksheet.d.ts +10 -10
  188. package/dist/types/index.browser.d.ts +5 -19
  189. package/dist/types/index.d.ts +23 -24
  190. package/dist/types/local.d.ts +1 -0
  191. package/dist/types/stream/xlsx/hyperlink-reader.d.ts +1 -1
  192. package/dist/types/stream/xlsx/workbook-reader.d.ts +4 -4
  193. package/dist/types/stream/xlsx/workbook-writer.d.ts +6 -6
  194. package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
  195. package/dist/types/stream/xlsx/worksheet-writer.d.ts +9 -9
  196. package/dist/types/utils/col-cache.d.ts +1 -1
  197. package/dist/types/utils/sheet-utils.d.ts +3 -3
  198. package/dist/types/utils/unzip/extract.d.ts +6 -6
  199. package/dist/types/utils/unzip/index.d.ts +8 -8
  200. package/dist/types/utils/unzip/parse.d.ts +3 -3
  201. package/dist/types/utils/utils.d.ts +25 -6
  202. package/dist/types/utils/zip/compress.d.ts +45 -13
  203. package/dist/types/utils/zip/index.d.ts +5 -5
  204. package/dist/types/utils/zip/zip-builder.d.ts +1 -1
  205. package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
  206. package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
  207. package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
  208. package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
  209. package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
  210. package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
  211. package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
  212. package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
  213. package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
  214. package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
  215. package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
  216. package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
  217. package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
  218. package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
  219. package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
  220. package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
  221. package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
  222. package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
  223. package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
  224. package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
  225. package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
  226. package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
  227. package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
  228. package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
  229. package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
  230. package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
  231. package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
  232. package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
  233. package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
  234. package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
  235. package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
  236. package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
  237. package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
  238. package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
  239. package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
  240. package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
  241. package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
  242. package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
  243. package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
  244. package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
  245. package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
  246. package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
  247. package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
  248. package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
  249. package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
  250. package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  251. package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
  252. package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
  253. package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
  254. package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
  255. package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
  256. package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
  257. package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
  258. package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
  259. package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
  260. package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
  261. package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
  262. package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
  263. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
  264. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
  265. package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
  266. package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
  267. package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
  268. package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
  269. package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
  270. package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
  271. package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
  272. package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
  273. package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
  274. package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
  275. package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
  276. package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
  277. package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
  278. package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
  279. package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
  280. package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
  281. package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
  282. package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
  283. package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
  284. package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
  285. package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
  286. package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
  287. package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
  288. package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
  289. package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
  290. package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
  291. package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
  292. package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
  293. package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
  294. package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
  295. package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
  296. package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
  297. package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
  298. package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
  299. package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
  300. package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
  301. package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
  302. package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
  303. package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
  304. package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
  305. package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
  306. package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
  307. package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
  308. package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
  309. package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
  310. package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
  311. package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
  312. package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
  313. package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
  314. package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
  315. package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
  316. package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
  317. package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
  318. package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
  319. package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
  320. package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
  321. package/dist/types/xlsx/xlsx.d.ts +80 -20
  322. package/package.json +15 -13
  323. package/dist/browser/excelts.esm.js +0 -19115
  324. package/dist/browser/excelts.esm.js.map +0 -1
  325. package/dist/browser/excelts.esm.min.js +0 -127
  326. package/dist/cjs/csv/csv-core.js +0 -701
  327. package/dist/cjs/csv/csv-stream.js +0 -646
  328. package/dist/cjs/csv/csv.base.js +0 -154
  329. package/dist/cjs/csv/csv.browser.js +0 -68
  330. package/dist/cjs/doc/workbook.base.js +0 -211
  331. package/dist/cjs/doc/workbook.browser.js +0 -62
  332. package/dist/cjs/utils/browser-buffer.js +0 -75
  333. package/dist/cjs/utils/encryptor.browser.js +0 -240
  334. package/dist/cjs/utils/stream-buf.browser.js +0 -355
  335. package/dist/cjs/utils/utils.base.js +0 -161
  336. package/dist/cjs/utils/utils.browser.js +0 -89
  337. package/dist/cjs/utils/zip/compress.base.js +0 -85
  338. package/dist/cjs/utils/zip/compress.browser.js +0 -83
  339. package/dist/cjs/utils/zip/crc32.browser.js +0 -88
  340. package/dist/cjs/utils/zip-stream.browser.js +0 -135
  341. package/dist/cjs/xlsx/xlsx.base.js +0 -742
  342. package/dist/cjs/xlsx/xlsx.browser.js +0 -205
  343. package/dist/esm/csv/csv-core.js +0 -694
  344. package/dist/esm/csv/csv-stream.js +0 -638
  345. package/dist/esm/csv/csv.base.js +0 -141
  346. package/dist/esm/csv/csv.browser.js +0 -65
  347. package/dist/esm/doc/workbook.base.js +0 -207
  348. package/dist/esm/doc/workbook.browser.js +0 -59
  349. package/dist/esm/utils/browser-buffer.js +0 -67
  350. package/dist/esm/utils/encryptor.browser.js +0 -237
  351. package/dist/esm/utils/stream-buf.browser.js +0 -352
  352. package/dist/esm/utils/utils.base.js +0 -142
  353. package/dist/esm/utils/utils.browser.js +0 -68
  354. package/dist/esm/utils/zip/compress.base.js +0 -80
  355. package/dist/esm/utils/zip/compress.browser.js +0 -76
  356. package/dist/esm/utils/zip/crc32.browser.js +0 -82
  357. package/dist/esm/utils/zip-stream.browser.js +0 -132
  358. package/dist/esm/xlsx/xlsx.base.js +0 -739
  359. package/dist/esm/xlsx/xlsx.browser.js +0 -202
  360. package/dist/types/csv/csv-core.d.ts +0 -207
  361. package/dist/types/csv/csv-stream.d.ts +0 -114
  362. package/dist/types/csv/csv.base.d.ts +0 -61
  363. package/dist/types/csv/csv.browser.d.ts +0 -33
  364. package/dist/types/doc/workbook.base.d.ts +0 -111
  365. package/dist/types/doc/workbook.browser.d.ts +0 -38
  366. package/dist/types/utils/browser-buffer.d.ts +0 -28
  367. package/dist/types/utils/encryptor.browser.d.ts +0 -28
  368. package/dist/types/utils/stream-buf.browser.d.ts +0 -41
  369. package/dist/types/utils/utils.base.d.ts +0 -29
  370. package/dist/types/utils/utils.browser.d.ts +0 -29
  371. package/dist/types/utils/zip/compress.base.d.ts +0 -42
  372. package/dist/types/utils/zip/compress.browser.d.ts +0 -54
  373. package/dist/types/utils/zip/crc32.browser.d.ts +0 -52
  374. package/dist/types/utils/zip-stream.browser.d.ts +0 -39
  375. package/dist/types/xlsx/xlsx.base.d.ts +0 -134
  376. package/dist/types/xlsx/xlsx.browser.d.ts +0 -31
@@ -1,142 +0,0 @@
1
- /**
2
- * Base utility functions shared between Node.js and Browser
3
- * Platform-independent implementations only
4
- */
5
- // =============================================================================
6
- // Basic utilities
7
- // =============================================================================
8
- export function delay(ms) {
9
- return new Promise(resolve => setTimeout(resolve, ms));
10
- }
11
- export function nop() { }
12
- export const inherits = function (cls, superCtor, statics, prototype) {
13
- cls.super_ = superCtor;
14
- if (!prototype) {
15
- prototype = statics;
16
- statics = null;
17
- }
18
- if (statics) {
19
- Object.keys(statics).forEach(i => {
20
- Object.defineProperty(cls, i, Object.getOwnPropertyDescriptor(statics, i));
21
- });
22
- }
23
- const properties = {
24
- constructor: {
25
- value: cls,
26
- enumerable: false,
27
- writable: false,
28
- configurable: true
29
- }
30
- };
31
- if (prototype) {
32
- Object.keys(prototype).forEach(i => {
33
- properties[i] = Object.getOwnPropertyDescriptor(prototype, i);
34
- });
35
- }
36
- cls.prototype = Object.create(superCtor.prototype, properties);
37
- };
38
- // =============================================================================
39
- // Date utilities
40
- // =============================================================================
41
- export function dateToExcel(d, date1904) {
42
- return 25569 + d.getTime() / (24 * 3600 * 1000) - (date1904 ? 1462 : 0);
43
- }
44
- export function excelToDate(v, date1904) {
45
- const millisecondSinceEpoch = Math.round((v - 25569 + (date1904 ? 1462 : 0)) * 24 * 3600 * 1000);
46
- return new Date(millisecondSinceEpoch);
47
- }
48
- export function toIsoDateString(dt) {
49
- return dt.toISOString().substr(0, 10);
50
- }
51
- export function parsePath(filepath) {
52
- const last = filepath.lastIndexOf("/");
53
- return {
54
- path: filepath.substring(0, last),
55
- name: filepath.substring(last + 1)
56
- };
57
- }
58
- export function getRelsPath(filepath) {
59
- const path = parsePath(filepath);
60
- return `${path.path}/_rels/${path.name}.rels`;
61
- }
62
- // =============================================================================
63
- // XML utilities
64
- // =============================================================================
65
- const xmlDecodingMap = {
66
- lt: "<",
67
- gt: ">",
68
- amp: "&",
69
- quot: '"',
70
- apos: "'"
71
- };
72
- export function xmlDecode(text) {
73
- return text.replace(/&(#\d+|#x[0-9A-Fa-f]+|\w+);/g, (match, entity) => {
74
- if (entity[0] === "#") {
75
- // Numeric character reference
76
- const code = entity[1] === "x" ? parseInt(entity.slice(2), 16) : parseInt(entity.slice(1));
77
- return String.fromCodePoint(code);
78
- }
79
- return xmlDecodingMap[entity] || match;
80
- });
81
- }
82
- // =============================================================================
83
- // Parsing utilities
84
- // =============================================================================
85
- export function validInt(value) {
86
- const i = typeof value === "number" ? value : parseInt(value, 10);
87
- return Number.isNaN(i) ? 0 : i;
88
- }
89
- export function isDateFmt(fmt) {
90
- if (!fmt) {
91
- return false;
92
- }
93
- // must not be a string fmt
94
- if (fmt.indexOf("@") > -1) {
95
- return false;
96
- }
97
- // must remove all chars inside quotes and []
98
- let cleanFmt = fmt.replace(/\[[^\]]*]/g, "");
99
- cleanFmt = cleanFmt.replace(/"[^"]*"/g, "");
100
- // then check for date formatting chars
101
- return cleanFmt.match(/[ymdhMsb]+/) !== null;
102
- }
103
- export function parseBoolean(value) {
104
- return value === true || value === "true" || value === 1 || value === "1";
105
- }
106
- // =============================================================================
107
- // Collection utilities
108
- // =============================================================================
109
- export function* range(start, stop, step = 1) {
110
- const compareOrder = step > 0 ? (a, b) => a < b : (a, b) => a > b;
111
- for (let value = start; compareOrder(value, stop); value += step) {
112
- yield value;
113
- }
114
- }
115
- export function toSortedArray(values) {
116
- const result = Array.from(values);
117
- // If all numbers, use numeric sort
118
- if (result.every(item => Number.isFinite(item))) {
119
- return result.sort((a, b) => a - b);
120
- }
121
- return result.sort();
122
- }
123
- export function objectFromProps(props, value = null) {
124
- return props.reduce((result, property) => {
125
- result[property] = value;
126
- return result;
127
- }, {});
128
- }
129
- // =============================================================================
130
- // Buffer utilities (cross-platform)
131
- // =============================================================================
132
- const textDecoder = new TextDecoder("utf-8");
133
- /**
134
- * Convert a Buffer, ArrayBuffer, or Uint8Array to a UTF-8 string
135
- * Works in both Node.js and browser environments
136
- */
137
- export function bufferToString(chunk) {
138
- if (typeof chunk === "string") {
139
- return chunk;
140
- }
141
- return textDecoder.decode(chunk);
142
- }
@@ -1,68 +0,0 @@
1
- /**
2
- * Browser utility functions
3
- * Re-exports shared utilities and adds browser-specific implementations
4
- */
5
- // Re-export all shared utilities
6
- export { delay, nop, inherits, dateToExcel, excelToDate, toIsoDateString, parsePath, getRelsPath, xmlDecode, validInt, isDateFmt, parseBoolean, range, toSortedArray, objectFromProps, bufferToString } from "./utils.base.js";
7
- // =============================================================================
8
- // XML encoding (Browser version with full Unicode support)
9
- // =============================================================================
10
- const xmlEncodingMap = {
11
- "<": "&lt;",
12
- ">": "&gt;",
13
- "&": "&amp;",
14
- '"': "&quot;",
15
- "'": "&apos;"
16
- };
17
- export function xmlEncode(text) {
18
- // Handles special characters:
19
- // 1. XML entities: < > & " '
20
- // 2. Control characters (0x00-0x1F except tab, newline, carriage return)
21
- // 3. Invalid XML characters: 0xFFFE, 0xFFFF
22
- // 4. Characters that need escaping in attributes
23
- // First pass: escape XML entities
24
- let result = text.replace(/[<>&"']/g, char => xmlEncodingMap[char] || char);
25
- // Second pass: handle control characters and invalid XML characters
26
- // Valid XML chars: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
27
- // oxlint-disable-next-line no-control-regex
28
- result = result.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\uFFFE\uFFFF]/g, char => {
29
- const code = char.charCodeAt(0);
30
- // For control characters, use numeric character reference
31
- return `&#x${code.toString(16).toUpperCase()};`;
32
- });
33
- // Third pass: handle invalid surrogate pairs
34
- result = result.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g, () => "\uFFFD" // replacement character
35
- );
36
- return result;
37
- }
38
- // =============================================================================
39
- // File system utilities (Browser stub - always returns false)
40
- // =============================================================================
41
- export function fileExists(_path) {
42
- return Promise.resolve(false);
43
- }
44
- // =============================================================================
45
- // Legacy export for backward compatibility
46
- // =============================================================================
47
- import { nop, inherits, dateToExcel, excelToDate, parsePath, getRelsPath, xmlDecode, validInt, isDateFmt, toIsoDateString, parseBoolean, range, toSortedArray, objectFromProps } from "./utils.base.js";
48
- /** @deprecated Import functions directly instead of using the utils object */
49
- export const utils = {
50
- nop,
51
- inherits,
52
- dateToExcel,
53
- excelToDate,
54
- parsePath,
55
- getRelsPath,
56
- xmlEncode,
57
- xmlDecode,
58
- validInt,
59
- isDateFmt,
60
- fs: {
61
- exists: fileExists
62
- },
63
- toIsoDateString,
64
- parseBoolean,
65
- range,
66
- toSortedArray,
67
- objectFromProps
68
- };
@@ -1,80 +0,0 @@
1
- /**
2
- * Base compression utilities using Web Streams API
3
- * Shared between Node.js and Browser implementations
4
- *
5
- * Uses CompressionStream/DecompressionStream API with "deflate-raw" format
6
- * (raw DEFLATE without zlib header/trailer, required for ZIP files)
7
- */
8
- /**
9
- * Check if CompressionStream is available
10
- */
11
- export function hasCompressionStream() {
12
- return typeof CompressionStream !== "undefined";
13
- }
14
- /**
15
- * Compress using CompressionStream API
16
- * Uses "deflate-raw" format (required for ZIP files)
17
- *
18
- * @param data - Data to compress
19
- * @returns Compressed data
20
- */
21
- export async function compressWithStream(data) {
22
- const cs = new CompressionStream("deflate-raw");
23
- const writer = cs.writable.getWriter();
24
- const reader = cs.readable.getReader();
25
- // Write data and close
26
- writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
27
- writer.close();
28
- // Read all compressed chunks
29
- const chunks = [];
30
- let totalLength = 0;
31
- while (true) {
32
- const { done, value } = await reader.read();
33
- if (done) {
34
- break;
35
- }
36
- chunks.push(value);
37
- totalLength += value.length;
38
- }
39
- // Combine chunks into single array
40
- const result = new Uint8Array(totalLength);
41
- let offset = 0;
42
- for (const chunk of chunks) {
43
- result.set(chunk, offset);
44
- offset += chunk.length;
45
- }
46
- return result;
47
- }
48
- /**
49
- * Decompress using DecompressionStream API
50
- *
51
- * @param data - Compressed data (deflate-raw format)
52
- * @returns Decompressed data
53
- */
54
- export async function decompressWithStream(data) {
55
- const ds = new DecompressionStream("deflate-raw");
56
- const writer = ds.writable.getWriter();
57
- const reader = ds.readable.getReader();
58
- // Write data and close
59
- writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
60
- writer.close();
61
- // Read all decompressed chunks
62
- const chunks = [];
63
- let totalLength = 0;
64
- while (true) {
65
- const { done, value } = await reader.read();
66
- if (done) {
67
- break;
68
- }
69
- chunks.push(value);
70
- totalLength += value.length;
71
- }
72
- // Combine chunks into single array
73
- const result = new Uint8Array(totalLength);
74
- let offset = 0;
75
- for (const chunk of chunks) {
76
- result.set(chunk, offset);
77
- offset += chunk.length;
78
- }
79
- return result;
80
- }
@@ -1,76 +0,0 @@
1
- /**
2
- * Browser compression utilities using Web Streams API
3
- *
4
- * Uses CompressionStream API (Chrome 80+, Firefox 113+, Safari 16.4+)
5
- * with "deflate-raw" format (required for ZIP files)
6
- */
7
- import { hasCompressionStream, compressWithStream, decompressWithStream } from "./compress.base.js";
8
- // Re-export shared types and utilities
9
- export { hasCompressionStream };
10
- /**
11
- * Check if native zlib is available (always false in browser)
12
- */
13
- export function hasNativeZlib() {
14
- return false;
15
- }
16
- /**
17
- * Compress data using browser's native CompressionStream
18
- *
19
- * @param data - Data to compress
20
- * @param options - Compression options
21
- * @returns Compressed data
22
- *
23
- * @example
24
- * ```ts
25
- * const data = new TextEncoder().encode("Hello, World!");
26
- * const compressed = await compress(data, { level: 6 });
27
- * ```
28
- */
29
- export async function compress(data, options = {}) {
30
- const level = options.level ?? 6;
31
- // Level 0 means no compression
32
- if (level === 0) {
33
- return data;
34
- }
35
- // Use CompressionStream
36
- if (typeof CompressionStream !== "undefined") {
37
- return compressWithStream(data);
38
- }
39
- // No compression available - return original data
40
- console.warn("No native compression available, returning uncompressed data");
41
- return data;
42
- }
43
- /**
44
- * Compress data synchronously
45
- * Not available in browser - throws error
46
- *
47
- * @param _data - Data to compress
48
- * @param _options - Compression options
49
- * @throws Error always - sync compression not available in browser
50
- */
51
- export function compressSync(_data, _options = {}) {
52
- throw new Error("Synchronous compression is not available in browser environment");
53
- }
54
- /**
55
- * Decompress data using browser's native DecompressionStream
56
- *
57
- * @param data - Compressed data (deflate-raw format)
58
- * @returns Decompressed data
59
- */
60
- export async function decompress(data) {
61
- // Use DecompressionStream
62
- if (typeof DecompressionStream !== "undefined") {
63
- return decompressWithStream(data);
64
- }
65
- throw new Error("No native decompression available in browser");
66
- }
67
- /**
68
- * Decompress data synchronously
69
- * Not available in browser - throws error
70
- *
71
- * @param _data - Compressed data
72
- * @throws Error always - sync decompression not available in browser
73
- */
74
- export function decompressSync(_data) {
75
- throw new Error("Synchronous decompression is not available in browser environment");
76
- }
@@ -1,82 +0,0 @@
1
- /**
2
- * CRC32 calculation utility for ZIP files (Browser version)
3
- *
4
- * Uses lookup table optimization - no Node.js dependencies
5
- *
6
- * The polynomial used is the standard CRC-32 IEEE 802.3:
7
- * x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1
8
- * Represented as 0xEDB88320 in reversed (LSB-first) form
9
- */
10
- /**
11
- * Pre-computed CRC32 lookup table (256 entries)
12
- * Generated using the standard polynomial 0xEDB88320
13
- */
14
- const CRC32_TABLE = /* @__PURE__ */ (() => {
15
- const table = new Uint32Array(256);
16
- for (let i = 0; i < 256; i++) {
17
- let crc = i;
18
- for (let j = 0; j < 8; j++) {
19
- crc = crc & 1 ? 0xedb88320 ^ (crc >>> 1) : crc >>> 1;
20
- }
21
- table[i] = crc;
22
- }
23
- return table;
24
- })();
25
- /**
26
- * Calculate CRC32 checksum for the given data
27
- *
28
- * @param data - Input data as Uint8Array
29
- * @returns CRC32 checksum as unsigned 32-bit integer
30
- *
31
- * @example
32
- * ```ts
33
- * const data = new TextEncoder().encode("Hello, World!");
34
- * const checksum = crc32(data);
35
- * console.log(checksum.toString(16)); // "ec4ac3d0"
36
- * ```
37
- */
38
- export function crc32(data) {
39
- let crc = 0xffffffff;
40
- for (let i = 0; i < data.length; i++) {
41
- crc = CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8);
42
- }
43
- return (crc ^ 0xffffffff) >>> 0;
44
- }
45
- /**
46
- * Ensure CRC32 is ready (no-op in browser, for API compatibility)
47
- */
48
- export async function ensureCrc32() {
49
- // No-op in browser
50
- }
51
- /**
52
- * Calculate CRC32 incrementally (useful for streaming)
53
- * Call with initial crc of 0xffffffff, then finalize with crc32Finalize
54
- *
55
- * @param crc - Current CRC value (start with 0xffffffff)
56
- * @param data - Input data chunk
57
- * @returns Updated CRC value (not finalized)
58
- *
59
- * @example
60
- * ```ts
61
- * let crc = 0xffffffff;
62
- * crc = crc32Update(crc, chunk1);
63
- * crc = crc32Update(crc, chunk2);
64
- * const checksum = crc32Finalize(crc);
65
- * ```
66
- */
67
- export function crc32Update(crc, data) {
68
- for (let i = 0; i < data.length; i++) {
69
- crc = CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8);
70
- }
71
- return crc;
72
- }
73
- /**
74
- * Finalize CRC32 calculation
75
- * XOR with 0xffffffff and convert to unsigned 32-bit
76
- *
77
- * @param crc - CRC value from crc32Update
78
- * @returns Final CRC32 checksum
79
- */
80
- export function crc32Finalize(crc) {
81
- return (crc ^ 0xffffffff) >>> 0;
82
- }
@@ -1,132 +0,0 @@
1
- import { ZipBuilder } from "./zip/zip-builder.js";
2
- import { StreamBuf } from "./stream-buf.browser.js";
3
- // Helper function for base64 decoding in browser
4
- function base64ToUint8Array(base64) {
5
- const binaryString = atob(base64);
6
- const bytes = new Uint8Array(binaryString.length);
7
- for (let i = 0; i < binaryString.length; i++) {
8
- bytes[i] = binaryString.charCodeAt(i);
9
- }
10
- return bytes;
11
- }
12
- // =============================================================================
13
- // The ZipWriter class - Browser version without Node.js events dependency
14
- // Packs streamed data into an output zip stream
15
- class ZipWriter {
16
- constructor(options) {
17
- this.finalized = false;
18
- this.pendingWrites = [];
19
- this.events = new Map();
20
- const level = options?.compression === "STORE"
21
- ? 0
22
- : Math.max(0, Math.min(9, options?.compressionOptions?.level ?? 1));
23
- this.stream = new StreamBuf();
24
- this.zipBuilder = new ZipBuilder({ level });
25
- }
26
- // Event emitter methods
27
- on(event, callback) {
28
- const callbacks = this.events.get(event) || [];
29
- callbacks.push(callback);
30
- this.events.set(event, callbacks);
31
- return this;
32
- }
33
- once(event, callback) {
34
- const onceCallback = (...args) => {
35
- this.off(event, onceCallback);
36
- callback(...args);
37
- };
38
- return this.on(event, onceCallback);
39
- }
40
- off(event, callback) {
41
- const callbacks = this.events.get(event) || [];
42
- const index = callbacks.indexOf(callback);
43
- if (index !== -1) {
44
- callbacks.splice(index, 1);
45
- }
46
- return this;
47
- }
48
- emit(event, ...args) {
49
- const callbacks = this.events.get(event) || [];
50
- callbacks.forEach(cb => cb(...args));
51
- return callbacks.length > 0;
52
- }
53
- removeListener(event, callback) {
54
- return this.off(event, callback);
55
- }
56
- append(data, options) {
57
- let buffer;
58
- if (Object.prototype.hasOwnProperty.call(options, "base64") && options.base64) {
59
- const base64Data = typeof data === "string" ? data : String(data);
60
- buffer = base64ToUint8Array(base64Data);
61
- }
62
- else if (typeof data === "string") {
63
- buffer = new TextEncoder().encode(data);
64
- }
65
- else if (data instanceof Uint8Array) {
66
- buffer = data;
67
- }
68
- else if (ArrayBuffer.isView(data)) {
69
- buffer = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
70
- }
71
- else if (data instanceof ArrayBuffer) {
72
- buffer = new Uint8Array(data);
73
- }
74
- else {
75
- buffer = data;
76
- }
77
- const writePromise = this.zipBuilder
78
- .addFile({ name: options.name, data: buffer })
79
- .then(chunks => {
80
- for (const chunk of chunks) {
81
- this.stream.write(new Uint8Array(chunk));
82
- }
83
- });
84
- this.pendingWrites.push(writePromise);
85
- }
86
- push(chunk) {
87
- return this.stream.push(chunk);
88
- }
89
- async finalize() {
90
- if (this.finalized) {
91
- return;
92
- }
93
- this.finalized = true;
94
- await Promise.all(this.pendingWrites);
95
- const finalChunks = this.zipBuilder.finalize();
96
- for (const chunk of finalChunks) {
97
- this.stream.write(new Uint8Array(chunk));
98
- }
99
- this.stream.end();
100
- this.emit("finish");
101
- }
102
- // ==========================================================================
103
- // Stream.Readable interface
104
- read(size) {
105
- return this.stream.read(size);
106
- }
107
- setEncoding(encoding) {
108
- return this.stream.setEncoding(encoding);
109
- }
110
- pause() {
111
- return this.stream.pause();
112
- }
113
- resume() {
114
- return this.stream.resume();
115
- }
116
- isPaused() {
117
- return this.stream.isPaused();
118
- }
119
- pipe(destination) {
120
- return this.stream.pipe(destination);
121
- }
122
- unpipe(destination) {
123
- return this.stream.unpipe(destination);
124
- }
125
- unshift() {
126
- return this.stream.unshift();
127
- }
128
- wrap() {
129
- return this.stream.wrap();
130
- }
131
- }
132
- export { ZipWriter };