@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,240 +0,0 @@
1
- "use strict";
2
- /**
3
- * Browser-compatible Encryptor with pure JS SHA implementations
4
- * This provides synchronous hash functions for browser compatibility
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.Encryptor = void 0;
8
- const browser_buffer_1 = require("./browser-buffer");
9
- // Helper to convert number to little-endian Uint8Array
10
- function uint32ToLe(num) {
11
- const bytes = new Uint8Array(4);
12
- bytes[0] = num & 0xff;
13
- bytes[1] = (num >> 8) & 0xff;
14
- bytes[2] = (num >> 16) & 0xff;
15
- bytes[3] = (num >> 24) & 0xff;
16
- return bytes;
17
- }
18
- // ============================================================================
19
- // Pure JavaScript SHA-512 implementation
20
- // ============================================================================
21
- // SHA-512 constants (first 80 primes 2..409)
22
- const K = new BigUint64Array([
23
- 0x428a2f98d728ae22n,
24
- 0x7137449123ef65cdn,
25
- 0xb5c0fbcfec4d3b2fn,
26
- 0xe9b5dba58189dbb4n,
27
- 0x3956c25bf348b538n,
28
- 0x59f111f1b605d019n,
29
- 0x923f82a4af194f9bn,
30
- 0xab1c5ed5da6d8118n,
31
- 0xd807aa98a3030242n,
32
- 0x12835b0145706fben,
33
- 0x243185be4ee4b28cn,
34
- 0x550c7dc3d5ffb4e2n,
35
- 0x72be5d74f27b896fn,
36
- 0x80deb1fe3b1696b1n,
37
- 0x9bdc06a725c71235n,
38
- 0xc19bf174cf692694n,
39
- 0xe49b69c19ef14ad2n,
40
- 0xefbe4786384f25e3n,
41
- 0x0fc19dc68b8cd5b5n,
42
- 0x240ca1cc77ac9c65n,
43
- 0x2de92c6f592b0275n,
44
- 0x4a7484aa6ea6e483n,
45
- 0x5cb0a9dcbd41fbd4n,
46
- 0x76f988da831153b5n,
47
- 0x983e5152ee66dfabn,
48
- 0xa831c66d2db43210n,
49
- 0xb00327c898fb213fn,
50
- 0xbf597fc7beef0ee4n,
51
- 0xc6e00bf33da88fc2n,
52
- 0xd5a79147930aa725n,
53
- 0x06ca6351e003826fn,
54
- 0x142929670a0e6e70n,
55
- 0x27b70a8546d22ffcn,
56
- 0x2e1b21385c26c926n,
57
- 0x4d2c6dfc5ac42aedn,
58
- 0x53380d139d95b3dfn,
59
- 0x650a73548baf63den,
60
- 0x766a0abb3c77b2a8n,
61
- 0x81c2c92e47edaee6n,
62
- 0x92722c851482353bn,
63
- 0xa2bfe8a14cf10364n,
64
- 0xa81a664bbc423001n,
65
- 0xc24b8b70d0f89791n,
66
- 0xc76c51a30654be30n,
67
- 0xd192e819d6ef5218n,
68
- 0xd69906245565a910n,
69
- 0xf40e35855771202an,
70
- 0x106aa07032bbd1b8n,
71
- 0x19a4c116b8d2d0c8n,
72
- 0x1e376c085141ab53n,
73
- 0x2748774cdf8eeb99n,
74
- 0x34b0bcb5e19b48a8n,
75
- 0x391c0cb3c5c95a63n,
76
- 0x4ed8aa4ae3418acbn,
77
- 0x5b9cca4f7763e373n,
78
- 0x682e6ff3d6b2b8a3n,
79
- 0x748f82ee5defb2fcn,
80
- 0x78a5636f43172f60n,
81
- 0x84c87814a1f0ab72n,
82
- 0x8cc702081a6439ecn,
83
- 0x90befffa23631e28n,
84
- 0xa4506cebde82bde9n,
85
- 0xbef9a3f7b2c67915n,
86
- 0xc67178f2e372532bn,
87
- 0xca273eceea26619cn,
88
- 0xd186b8c721c0c207n,
89
- 0xeada7dd6cde0eb1en,
90
- 0xf57d4f7fee6ed178n,
91
- 0x06f067aa72176fban,
92
- 0x0a637dc5a2c898a6n,
93
- 0x113f9804bef90daen,
94
- 0x1b710b35131c471bn,
95
- 0x28db77f523047d84n,
96
- 0x32caab7b40c72493n,
97
- 0x3c9ebe0a15c9bebcn,
98
- 0x431d67c49c100d4cn,
99
- 0x4cc5d4becb3e42b6n,
100
- 0x597f299cfc657e2an,
101
- 0x5fcb6fab3ad6faecn,
102
- 0x6c44198c4a475817n
103
- ]);
104
- // Initial hash values for SHA-512
105
- const H0 = new BigUint64Array([
106
- 0x6a09e667f3bcc908n,
107
- 0xbb67ae8584caa73bn,
108
- 0x3c6ef372fe94f82bn,
109
- 0xa54ff53a5f1d36f1n,
110
- 0x510e527fade682d1n,
111
- 0x9b05688c2b3e6c1fn,
112
- 0x1f83d9abfb41bd6bn,
113
- 0x5be0cd19137e2179n
114
- ]);
115
- function rotr64(x, n) {
116
- return ((x >> BigInt(n)) | (x << BigInt(64 - n))) & 0xffffffffffffffffn;
117
- }
118
- function sha512(message) {
119
- // Pre-processing: adding padding bits
120
- const msgLen = message.length;
121
- const msgBitLen = BigInt(msgLen * 8);
122
- // Calculate padding length (message + 1 + padding + 16 bytes for length) should be multiple of 128
123
- const padLen = (128 - ((msgLen + 17) % 128)) % 128;
124
- const paddedLen = msgLen + 1 + padLen + 16;
125
- const padded = new Uint8Array(paddedLen);
126
- padded.set(message);
127
- padded[msgLen] = 0x80;
128
- // Append original length in bits as 128-bit big-endian (we only use lower 64 bits)
129
- const view = new DataView(padded.buffer);
130
- // Upper 64 bits (always 0 for messages < 2^64 bits)
131
- view.setBigUint64(paddedLen - 16, 0n, false);
132
- // Lower 64 bits
133
- view.setBigUint64(paddedLen - 8, msgBitLen, false);
134
- // Initialize hash values
135
- const H = new BigUint64Array(H0);
136
- // Process message in 1024-bit (128-byte) chunks
137
- const W = new BigUint64Array(80);
138
- for (let chunkStart = 0; chunkStart < paddedLen; chunkStart += 128) {
139
- const chunkView = new DataView(padded.buffer, chunkStart, 128);
140
- // Copy chunk into first 16 words W[0..15]
141
- for (let i = 0; i < 16; i++) {
142
- W[i] = chunkView.getBigUint64(i * 8, false);
143
- }
144
- // Extend the first 16 words into the remaining 64 words W[16..79]
145
- for (let i = 16; i < 80; i++) {
146
- const s0 = rotr64(W[i - 15], 1) ^ rotr64(W[i - 15], 8) ^ (W[i - 15] >> 7n);
147
- const s1 = rotr64(W[i - 2], 19) ^ rotr64(W[i - 2], 61) ^ (W[i - 2] >> 6n);
148
- W[i] = (W[i - 16] + s0 + W[i - 7] + s1) & 0xffffffffffffffffn;
149
- }
150
- // Initialize working variables
151
- let a = H[0], b = H[1], c = H[2], d = H[3];
152
- let e = H[4], f = H[5], g = H[6], h = H[7];
153
- // Main loop
154
- for (let i = 0; i < 80; i++) {
155
- const S1 = rotr64(e, 14) ^ rotr64(e, 18) ^ rotr64(e, 41);
156
- const ch = (e & f) ^ (~e & g);
157
- const temp1 = (h + S1 + ch + K[i] + W[i]) & 0xffffffffffffffffn;
158
- const S0 = rotr64(a, 28) ^ rotr64(a, 34) ^ rotr64(a, 39);
159
- const maj = (a & b) ^ (a & c) ^ (b & c);
160
- const temp2 = (S0 + maj) & 0xffffffffffffffffn;
161
- h = g;
162
- g = f;
163
- f = e;
164
- e = (d + temp1) & 0xffffffffffffffffn;
165
- d = c;
166
- c = b;
167
- b = a;
168
- a = (temp1 + temp2) & 0xffffffffffffffffn;
169
- }
170
- // Add compressed chunk to current hash value
171
- H[0] = (H[0] + a) & 0xffffffffffffffffn;
172
- H[1] = (H[1] + b) & 0xffffffffffffffffn;
173
- H[2] = (H[2] + c) & 0xffffffffffffffffn;
174
- H[3] = (H[3] + d) & 0xffffffffffffffffn;
175
- H[4] = (H[4] + e) & 0xffffffffffffffffn;
176
- H[5] = (H[5] + f) & 0xffffffffffffffffn;
177
- H[6] = (H[6] + g) & 0xffffffffffffffffn;
178
- H[7] = (H[7] + h) & 0xffffffffffffffffn;
179
- }
180
- // Produce the final hash value (big-endian)
181
- const result = new Uint8Array(64);
182
- const resultView = new DataView(result.buffer);
183
- for (let i = 0; i < 8; i++) {
184
- resultView.setBigUint64(i * 8, H[i], false);
185
- }
186
- return result;
187
- }
188
- // ============================================================================
189
- // Encryptor implementation
190
- // ============================================================================
191
- const Encryptor = {
192
- /**
193
- * Calculate a hash of the concatenated buffers with the given algorithm.
194
- * @param algorithm - The hash algorithm.
195
- * @returns The hash as Uint8Array
196
- */
197
- hash(algorithm, ...buffers) {
198
- const data = (0, browser_buffer_1.concatUint8Arrays)(...buffers);
199
- const algo = algorithm.toLowerCase().replace("-", "");
200
- if (algo === "sha512") {
201
- return sha512(data);
202
- }
203
- throw new Error(`Hash algorithm '${algorithm}' not supported in browser sync mode!`);
204
- },
205
- /**
206
- * Convert a password into an encryption key
207
- * @param password - The password
208
- * @param hashAlgorithm - The hash algorithm
209
- * @param saltValue - The salt value (base64 encoded)
210
- * @param spinCount - The spin count
211
- * @returns The encryption key (base64 encoded)
212
- */
213
- convertPasswordToHash(password, hashAlgorithm, saltValue, spinCount) {
214
- const algo = hashAlgorithm.toLowerCase().replace("-", "");
215
- if (algo !== "sha512") {
216
- throw new Error(`Hash algorithm '${hashAlgorithm}' not supported in browser!`);
217
- }
218
- // Password must be in unicode buffer (UTF-16LE)
219
- const passwordBuffer = (0, browser_buffer_1.stringToUtf16Le)(password);
220
- // Generate the initial hash
221
- const saltBuffer = (0, browser_buffer_1.base64ToUint8Array)(saltValue);
222
- let key = this.hash(hashAlgorithm, saltBuffer, passwordBuffer);
223
- // Now regenerate until spin count
224
- for (let i = 0; i < spinCount; i++) {
225
- const iterator = uint32ToLe(i);
226
- key = this.hash(hashAlgorithm, key, iterator);
227
- }
228
- return (0, browser_buffer_1.uint8ArrayToBase64)(key);
229
- },
230
- /**
231
- * Generates cryptographically strong pseudo-random data.
232
- * @param size The size argument is a number indicating the number of bytes to generate.
233
- */
234
- randomBytes(size) {
235
- const bytes = new browser_buffer_1.BrowserBuffer(size);
236
- crypto.getRandomValues(bytes);
237
- return bytes;
238
- }
239
- };
240
- exports.Encryptor = Encryptor;
@@ -1,355 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StreamBuf = void 0;
4
- const string_buf_1 = require("./string-buf");
5
- // =============================================================================
6
- // Data chunks - encapsulating incoming data
7
- class StringChunk {
8
- constructor(data, encoding) {
9
- this._data = data;
10
- this._encoding = encoding;
11
- }
12
- get length() {
13
- return this.toBuffer().length;
14
- }
15
- copy(target, targetOffset, offset, length) {
16
- const buf = this.toBuffer();
17
- const bytesToCopy = Math.min(length, buf.length - offset);
18
- target.set(buf.subarray(offset, offset + bytesToCopy), targetOffset);
19
- return bytesToCopy;
20
- }
21
- toBuffer() {
22
- if (!this._buffer) {
23
- this._buffer = new TextEncoder().encode(this._data);
24
- }
25
- return this._buffer;
26
- }
27
- }
28
- class StringBufChunk {
29
- constructor(data) {
30
- this._data = data;
31
- }
32
- get length() {
33
- return this._data.length;
34
- }
35
- copy(target, targetOffset, offset, length) {
36
- const buf = this.toBuffer();
37
- const bytesToCopy = Math.min(length, buf.length - offset);
38
- target.set(buf.subarray(offset, offset + bytesToCopy), targetOffset);
39
- return bytesToCopy;
40
- }
41
- toBuffer() {
42
- return this._data.toBuffer();
43
- }
44
- }
45
- class BufferChunk {
46
- constructor(data) {
47
- this._data = data;
48
- }
49
- get length() {
50
- return this._data.length;
51
- }
52
- copy(target, targetOffset, offset, length) {
53
- const bytesToCopy = Math.min(length, this._data.length - offset);
54
- target.set(this._data.subarray(offset, offset + bytesToCopy), targetOffset);
55
- }
56
- toBuffer() {
57
- return this._data;
58
- }
59
- }
60
- // =============================================================================
61
- // ReadWriteBuf - a single buffer supporting simple read-write
62
- class ReadWriteBuf {
63
- constructor(size) {
64
- this.size = size;
65
- this.buffer = new Uint8Array(size);
66
- this.iRead = 0;
67
- this.iWrite = 0;
68
- }
69
- toBuffer() {
70
- if (this.iRead === 0 && this.iWrite === this.size) {
71
- return this.buffer;
72
- }
73
- return this.buffer.slice(this.iRead, this.iWrite);
74
- }
75
- get length() {
76
- return this.iWrite - this.iRead;
77
- }
78
- get eod() {
79
- return this.iRead === this.iWrite;
80
- }
81
- get full() {
82
- return this.iWrite === this.size;
83
- }
84
- read(size) {
85
- if (size === 0) {
86
- return null;
87
- }
88
- if (size === undefined || size >= this.length) {
89
- const buf = this.toBuffer();
90
- this.iRead = this.iWrite;
91
- return buf;
92
- }
93
- const buf = this.buffer.slice(this.iRead, this.iRead + size);
94
- this.iRead += size;
95
- return buf;
96
- }
97
- write(chunk, offset, length) {
98
- const size = Math.min(length, this.size - this.iWrite);
99
- chunk.copy(this.buffer, this.iWrite, offset, offset + size);
100
- this.iWrite += size;
101
- return size;
102
- }
103
- }
104
- // =============================================================================
105
- // StreamBuf - Browser version without Node.js stream dependency
106
- // A simple buffer manager that mimics stream behavior for xlsx writing
107
- class StreamBuf {
108
- constructor(options) {
109
- options = options || {};
110
- this.bufSize = options.bufSize || 1024 * 1024;
111
- this.buffers = [];
112
- this.batch = options.batch || false;
113
- this.corked = false;
114
- this.paused = false;
115
- this.encoding = null;
116
- this.pipes = [];
117
- this.events = new Map();
118
- }
119
- // Event emitter methods
120
- on(event, callback) {
121
- const callbacks = this.events.get(event) || [];
122
- callbacks.push(callback);
123
- this.events.set(event, callbacks);
124
- return this;
125
- }
126
- once(event, callback) {
127
- const onceCallback = (...args) => {
128
- this.off(event, onceCallback);
129
- callback(...args);
130
- };
131
- return this.on(event, onceCallback);
132
- }
133
- off(event, callback) {
134
- const callbacks = this.events.get(event) || [];
135
- const index = callbacks.indexOf(callback);
136
- if (index !== -1) {
137
- callbacks.splice(index, 1);
138
- }
139
- return this;
140
- }
141
- emit(event, ...args) {
142
- const callbacks = this.events.get(event) || [];
143
- callbacks.forEach(cb => cb(...args));
144
- return callbacks.length > 0;
145
- }
146
- removeListener(event, callback) {
147
- return this.off(event, callback);
148
- }
149
- toBuffer() {
150
- switch (this.buffers.length) {
151
- case 0:
152
- return null;
153
- case 1:
154
- return this.buffers[0].toBuffer();
155
- default: {
156
- const totalLength = this.buffers.reduce((acc, buf) => acc + buf.length, 0);
157
- const result = new Uint8Array(totalLength);
158
- let offset = 0;
159
- for (const rwBuf of this.buffers) {
160
- const buf = rwBuf.toBuffer();
161
- result.set(buf, offset);
162
- offset += buf.length;
163
- }
164
- return result;
165
- }
166
- }
167
- }
168
- _getWritableBuffer() {
169
- if (this.buffers.length) {
170
- const last = this.buffers[this.buffers.length - 1];
171
- if (!last.full) {
172
- return last;
173
- }
174
- }
175
- const buf = new ReadWriteBuf(this.bufSize);
176
- this.buffers.push(buf);
177
- return buf;
178
- }
179
- async _pipe(chunk) {
180
- const write = (pipe) => {
181
- return new Promise(resolve => {
182
- pipe.write(chunk.toBuffer(), () => {
183
- resolve();
184
- });
185
- });
186
- };
187
- await Promise.all(this.pipes.map(write));
188
- }
189
- _writeToBuffers(chunk) {
190
- let inPos = 0;
191
- const inLen = chunk.length;
192
- while (inPos < inLen) {
193
- const buffer = this._getWritableBuffer();
194
- inPos += buffer.write(chunk, inPos, inLen - inPos);
195
- }
196
- }
197
- async write(data, encoding, callback) {
198
- const nop = () => { };
199
- if (encoding instanceof Function) {
200
- callback = encoding;
201
- encoding = "utf8";
202
- }
203
- callback = callback || nop;
204
- let chunk;
205
- if (data instanceof string_buf_1.StringBuf || (data && data.constructor?.name === "StringBuf")) {
206
- chunk = new StringBufChunk(data);
207
- }
208
- else if (data instanceof Uint8Array) {
209
- chunk = new BufferChunk(data);
210
- }
211
- else if (ArrayBuffer.isView(data)) {
212
- chunk = new BufferChunk(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
213
- }
214
- else if (data instanceof ArrayBuffer) {
215
- chunk = new BufferChunk(new Uint8Array(data));
216
- }
217
- else if (typeof data === "string" || data instanceof String) {
218
- chunk = new StringChunk(String(data), encoding);
219
- }
220
- else {
221
- throw new Error("Chunk must be one of type String, Uint8Array, ArrayBuffer or StringBuf.");
222
- }
223
- if (this.pipes.length) {
224
- if (this.batch) {
225
- this._writeToBuffers(chunk);
226
- while (!this.corked && this.buffers.length > 1) {
227
- await this._pipe(new BufferChunk(this.buffers.shift().toBuffer()));
228
- }
229
- }
230
- else if (!this.corked) {
231
- await this._pipe(chunk);
232
- callback();
233
- }
234
- else {
235
- this._writeToBuffers(chunk);
236
- queueMicrotask(() => callback());
237
- }
238
- }
239
- else {
240
- if (!this.paused) {
241
- this.emit("data", chunk.toBuffer());
242
- }
243
- this._writeToBuffers(chunk);
244
- this.emit("readable");
245
- }
246
- return true;
247
- }
248
- cork() {
249
- this.corked = true;
250
- }
251
- _flush() {
252
- if (this.pipes.length) {
253
- while (this.buffers.length) {
254
- this._pipe(new BufferChunk(this.buffers.shift().toBuffer()));
255
- }
256
- }
257
- }
258
- uncork() {
259
- this.corked = false;
260
- this._flush();
261
- }
262
- end(chunk, encoding, callback) {
263
- const writeComplete = (error) => {
264
- if (error) {
265
- callback?.(error);
266
- }
267
- else {
268
- this._flush();
269
- this.pipes.forEach((pipe) => {
270
- pipe.end();
271
- });
272
- this.emit("finish");
273
- }
274
- };
275
- if (chunk) {
276
- this.write(chunk, encoding, writeComplete);
277
- }
278
- else {
279
- writeComplete();
280
- }
281
- }
282
- read(size) {
283
- let buffers;
284
- if (size) {
285
- buffers = [];
286
- while (size && this.buffers.length && !this.buffers[0].eod) {
287
- const first = this.buffers[0];
288
- const buffer = first.read(size);
289
- if (buffer) {
290
- size -= buffer.length;
291
- buffers.push(buffer);
292
- }
293
- if (first.eod && first.full) {
294
- this.buffers.shift();
295
- }
296
- }
297
- return concatUint8Arrays(buffers);
298
- }
299
- buffers = this.buffers.map(buf => buf.toBuffer()).filter(Boolean);
300
- this.buffers = [];
301
- return concatUint8Arrays(buffers);
302
- }
303
- setEncoding(encoding) {
304
- this.encoding = encoding;
305
- }
306
- pause() {
307
- this.paused = true;
308
- }
309
- resume() {
310
- this.paused = false;
311
- }
312
- isPaused() {
313
- return this.paused;
314
- }
315
- pipe(destination) {
316
- this.pipes.push(destination);
317
- if (!this.paused && this.buffers.length) {
318
- this.end();
319
- }
320
- return destination;
321
- }
322
- unpipe(destination) {
323
- this.pipes = this.pipes.filter((pipe) => pipe !== destination);
324
- }
325
- unshift() {
326
- throw new Error("Not Implemented");
327
- }
328
- wrap() {
329
- throw new Error("Not Implemented");
330
- }
331
- push(chunk) {
332
- if (chunk !== null) {
333
- this.write(chunk);
334
- }
335
- return true;
336
- }
337
- }
338
- exports.StreamBuf = StreamBuf;
339
- // Helper function to concatenate Uint8Arrays
340
- function concatUint8Arrays(arrays) {
341
- if (arrays.length === 0) {
342
- return new Uint8Array(0);
343
- }
344
- if (arrays.length === 1) {
345
- return arrays[0];
346
- }
347
- const totalLength = arrays.reduce((acc, arr) => acc + arr.length, 0);
348
- const result = new Uint8Array(totalLength);
349
- let offset = 0;
350
- for (const arr of arrays) {
351
- result.set(arr, offset);
352
- offset += arr.length;
353
- }
354
- return result;
355
- }