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

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 +31 -18
  2. package/README_zh.md +31 -19
  3. package/dist/browser/excelts.esm.js +19115 -0
  4. package/dist/browser/excelts.esm.js.map +1 -0
  5. package/dist/browser/excelts.esm.min.js +127 -0
  6. package/dist/browser/excelts.iife.js +13576 -46968
  7. package/dist/browser/excelts.iife.js.map +1 -1
  8. package/dist/browser/excelts.iife.min.js +25 -105
  9. package/dist/cjs/csv/csv-core.js +701 -0
  10. package/dist/cjs/csv/csv-stream.js +646 -0
  11. package/dist/cjs/csv/csv.base.js +154 -0
  12. package/dist/cjs/csv/csv.browser.js +68 -0
  13. package/dist/cjs/csv/csv.js +226 -162
  14. package/dist/cjs/doc/anchor.js +2 -2
  15. package/dist/cjs/doc/cell.js +22 -22
  16. package/dist/cjs/doc/column.js +7 -7
  17. package/dist/cjs/doc/data-validations.js +3 -3
  18. package/dist/cjs/doc/defined-names.js +13 -13
  19. package/dist/cjs/doc/image.js +7 -7
  20. package/dist/cjs/doc/modelcontainer.js +2 -2
  21. package/dist/cjs/doc/note.js +2 -2
  22. package/dist/cjs/doc/pivot-table.js +5 -5
  23. package/dist/cjs/doc/range.js +11 -11
  24. package/dist/cjs/doc/row.js +16 -16
  25. package/dist/cjs/doc/table.js +5 -5
  26. package/dist/cjs/doc/workbook.base.js +211 -0
  27. package/dist/cjs/doc/workbook.browser.js +62 -0
  28. package/dist/cjs/doc/workbook.js +68 -179
  29. package/dist/cjs/doc/worksheet.js +41 -41
  30. package/dist/cjs/index.js +49 -32
  31. package/dist/cjs/stream/xlsx/hyperlink-reader.js +6 -6
  32. package/dist/cjs/stream/xlsx/sheet-comments-writer.js +12 -12
  33. package/dist/cjs/stream/xlsx/sheet-rels-writer.js +4 -4
  34. package/dist/cjs/stream/xlsx/workbook-reader.js +22 -22
  35. package/dist/cjs/stream/xlsx/workbook-writer.js +34 -34
  36. package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
  37. package/dist/cjs/stream/xlsx/worksheet-writer.js +60 -60
  38. package/dist/cjs/utils/browser-buffer.js +75 -0
  39. package/dist/cjs/utils/cell-format.js +2 -2
  40. package/dist/cjs/utils/cell-matrix.js +5 -5
  41. package/dist/cjs/utils/encryptor.browser.js +240 -0
  42. package/dist/cjs/utils/parse-sax.js +2 -2
  43. package/dist/cjs/utils/shared-formula.js +5 -5
  44. package/dist/cjs/utils/sheet-utils.js +13 -13
  45. package/dist/cjs/utils/stream-buf.browser.js +355 -0
  46. package/dist/cjs/utils/stream-buf.js +5 -5
  47. package/dist/cjs/utils/unzip/extract.js +11 -11
  48. package/dist/cjs/utils/unzip/index.js +21 -21
  49. package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
  50. package/dist/cjs/utils/unzip/parse.js +16 -16
  51. package/dist/cjs/utils/unzip/zip-parser.js +3 -3
  52. package/dist/cjs/utils/utils.base.js +161 -0
  53. package/dist/cjs/utils/utils.browser.js +89 -0
  54. package/dist/cjs/utils/utils.js +46 -154
  55. package/dist/cjs/utils/xml-stream.js +3 -3
  56. package/dist/cjs/utils/zip/compress.base.js +85 -0
  57. package/dist/cjs/utils/zip/compress.browser.js +83 -0
  58. package/dist/cjs/utils/zip/compress.js +18 -198
  59. package/dist/cjs/utils/zip/crc32.browser.js +88 -0
  60. package/dist/cjs/utils/zip/index.js +17 -17
  61. package/dist/cjs/utils/zip/zip-builder.js +10 -10
  62. package/dist/cjs/utils/zip-stream.browser.js +135 -0
  63. package/dist/cjs/utils/zip-stream.js +4 -4
  64. package/dist/cjs/xlsx/xform/base-xform.js +4 -4
  65. package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
  66. package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
  67. package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
  68. package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
  69. package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
  70. package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
  71. package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
  72. package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
  73. package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
  74. package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
  75. package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
  76. package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
  77. package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
  78. package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
  79. package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
  80. package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
  81. package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
  82. package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
  83. package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
  84. package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
  85. package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
  86. package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
  87. package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
  88. package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
  89. package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
  90. package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
  91. package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
  92. package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
  93. package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
  94. package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
  95. package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
  96. package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
  97. package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
  98. package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
  99. package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
  100. package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
  101. package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
  102. package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
  103. package/dist/cjs/xlsx/xform/list-xform.js +2 -2
  104. package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
  105. package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
  106. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
  107. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
  108. package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +10 -11
  109. package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
  110. package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
  111. package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
  112. package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
  113. package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
  114. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
  115. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
  116. package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
  117. package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
  118. package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
  119. package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
  120. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
  121. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +11 -12
  122. package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
  123. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
  124. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
  125. package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
  126. package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
  127. package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
  128. package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
  129. package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
  130. package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
  131. package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
  132. package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
  133. package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
  134. package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
  135. package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
  136. package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
  137. package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
  138. package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
  139. package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +2 -2
  140. package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
  141. package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
  142. package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
  143. package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
  144. package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
  145. package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +4 -4
  146. package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
  147. package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
  148. package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
  149. package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
  150. package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
  151. package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
  152. package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +68 -68
  153. package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
  154. package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
  155. package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
  156. package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
  157. package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
  158. package/dist/cjs/xlsx/xform/static-xform.js +4 -4
  159. package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
  160. package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
  161. package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
  162. package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
  163. package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
  164. package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
  165. package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
  166. package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
  167. package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
  168. package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
  169. package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
  170. package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
  171. package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
  172. package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
  173. package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
  174. package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
  175. package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
  176. package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
  177. package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
  178. package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
  179. package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
  180. package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
  181. package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
  182. package/dist/cjs/xlsx/xlsx.base.js +742 -0
  183. package/dist/cjs/xlsx/xlsx.browser.js +205 -0
  184. package/dist/cjs/xlsx/xlsx.js +91 -833
  185. package/dist/esm/csv/csv-core.js +694 -0
  186. package/dist/esm/csv/csv-stream.js +638 -0
  187. package/dist/esm/csv/csv.base.js +141 -0
  188. package/dist/esm/csv/csv.browser.js +65 -0
  189. package/dist/esm/csv/csv.js +189 -159
  190. package/dist/esm/doc/workbook.base.js +207 -0
  191. package/dist/esm/doc/workbook.browser.js +59 -0
  192. package/dist/esm/doc/workbook.js +64 -175
  193. package/dist/esm/index.browser.js +33 -1
  194. package/dist/esm/index.js +23 -8
  195. package/dist/esm/local.js +0 -1
  196. package/dist/esm/utils/browser-buffer.js +67 -0
  197. package/dist/esm/utils/encryptor.browser.js +237 -0
  198. package/dist/esm/utils/stream-buf.browser.js +352 -0
  199. package/dist/esm/utils/utils.base.js +142 -0
  200. package/dist/esm/utils/utils.browser.js +68 -0
  201. package/dist/esm/utils/utils.js +15 -123
  202. package/dist/esm/utils/zip/compress.base.js +80 -0
  203. package/dist/esm/utils/zip/compress.browser.js +76 -0
  204. package/dist/esm/utils/zip/compress.js +16 -164
  205. package/dist/esm/utils/zip/crc32.browser.js +82 -0
  206. package/dist/esm/utils/zip-stream.browser.js +132 -0
  207. package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
  208. package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
  209. package/dist/esm/xlsx/xlsx.base.js +739 -0
  210. package/dist/esm/xlsx/xlsx.browser.js +202 -0
  211. package/dist/esm/xlsx/xlsx.js +87 -829
  212. package/dist/types/csv/csv-core.d.ts +207 -0
  213. package/dist/types/csv/csv-stream.d.ts +114 -0
  214. package/dist/types/csv/csv.base.d.ts +61 -0
  215. package/dist/types/csv/csv.browser.d.ts +33 -0
  216. package/dist/types/csv/csv.d.ts +97 -71
  217. package/dist/types/doc/anchor.d.ts +1 -1
  218. package/dist/types/doc/cell.d.ts +7 -7
  219. package/dist/types/doc/column.d.ts +3 -3
  220. package/dist/types/doc/defined-names.d.ts +4 -4
  221. package/dist/types/doc/image.d.ts +2 -2
  222. package/dist/types/doc/modelcontainer.d.ts +1 -1
  223. package/dist/types/doc/pivot-table.d.ts +1 -1
  224. package/dist/types/doc/range.d.ts +1 -1
  225. package/dist/types/doc/row.d.ts +3 -3
  226. package/dist/types/doc/table.d.ts +2 -2
  227. package/dist/types/doc/workbook.base.d.ts +111 -0
  228. package/dist/types/doc/workbook.browser.d.ts +38 -0
  229. package/dist/types/doc/workbook.d.ts +62 -92
  230. package/dist/types/doc/worksheet.d.ts +10 -10
  231. package/dist/types/index.browser.d.ts +19 -5
  232. package/dist/types/index.d.ts +24 -23
  233. package/dist/types/local.d.ts +0 -1
  234. package/dist/types/stream/xlsx/hyperlink-reader.d.ts +1 -1
  235. package/dist/types/stream/xlsx/workbook-reader.d.ts +4 -4
  236. package/dist/types/stream/xlsx/workbook-writer.d.ts +6 -6
  237. package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
  238. package/dist/types/stream/xlsx/worksheet-writer.d.ts +9 -9
  239. package/dist/types/utils/browser-buffer.d.ts +28 -0
  240. package/dist/types/utils/col-cache.d.ts +1 -1
  241. package/dist/types/utils/encryptor.browser.d.ts +28 -0
  242. package/dist/types/utils/sheet-utils.d.ts +3 -3
  243. package/dist/types/utils/stream-buf.browser.d.ts +41 -0
  244. package/dist/types/utils/unzip/extract.d.ts +6 -6
  245. package/dist/types/utils/unzip/index.d.ts +8 -8
  246. package/dist/types/utils/unzip/parse.d.ts +3 -3
  247. package/dist/types/utils/utils.base.d.ts +29 -0
  248. package/dist/types/utils/utils.browser.d.ts +29 -0
  249. package/dist/types/utils/utils.d.ts +6 -25
  250. package/dist/types/utils/zip/compress.base.d.ts +42 -0
  251. package/dist/types/utils/zip/compress.browser.d.ts +54 -0
  252. package/dist/types/utils/zip/compress.d.ts +13 -45
  253. package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
  254. package/dist/types/utils/zip/index.d.ts +5 -5
  255. package/dist/types/utils/zip/zip-builder.d.ts +1 -1
  256. package/dist/types/utils/zip-stream.browser.d.ts +39 -0
  257. package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
  258. package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
  259. package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
  260. package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
  261. package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
  262. package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
  263. package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
  264. package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
  265. package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
  266. package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
  267. package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
  268. package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
  269. package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
  270. package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
  271. package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
  272. package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
  273. package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
  274. package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
  275. package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
  276. package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
  277. package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
  278. package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
  279. package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
  280. package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
  281. package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
  282. package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
  283. package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
  284. package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
  285. package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
  286. package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
  287. package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
  288. package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
  289. package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
  290. package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
  291. package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
  292. package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
  293. package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
  294. package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
  295. package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
  296. package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
  297. package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
  298. package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
  299. package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
  300. package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
  301. package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
  302. package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  303. package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
  304. package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
  305. package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
  306. package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
  307. package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
  308. package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
  309. package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
  310. package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
  311. package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
  312. package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
  313. package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
  314. package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
  315. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
  316. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
  317. package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
  318. package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
  319. package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
  320. package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
  321. package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
  322. package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
  323. package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
  324. package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
  325. package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
  326. package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
  327. package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
  328. package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
  329. package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
  330. package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
  331. package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
  332. package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
  333. package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
  334. package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
  335. package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
  336. package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
  337. package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
  338. package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
  339. package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
  340. package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
  341. package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
  342. package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
  343. package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
  344. package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
  345. package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
  346. package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
  347. package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
  348. package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
  349. package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
  350. package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
  351. package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
  352. package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
  353. package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
  354. package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
  355. package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
  356. package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
  357. package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
  358. package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
  359. package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
  360. package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
  361. package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
  362. package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
  363. package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
  364. package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
  365. package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
  366. package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
  367. package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
  368. package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
  369. package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
  370. package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
  371. package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
  372. package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
  373. package/dist/types/xlsx/xlsx.base.d.ts +134 -0
  374. package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
  375. package/dist/types/xlsx/xlsx.d.ts +20 -80
  376. package/package.json +13 -15
@@ -0,0 +1,142 @@
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
+ }
@@ -0,0 +1,68 @@
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,53 +1,13 @@
1
+ /**
2
+ * Node.js utility functions
3
+ * Re-exports shared utilities and adds Node.js-specific implementations
4
+ */
1
5
  import fs from "fs";
2
- export function delay(ms) {
3
- return new Promise(resolve => setTimeout(resolve, ms));
4
- }
5
- export function nop() { }
6
- // useful stuff
7
- export const inherits = function (cls, superCtor, statics, prototype) {
8
- cls.super_ = superCtor;
9
- if (!prototype) {
10
- prototype = statics;
11
- statics = null;
12
- }
13
- if (statics) {
14
- Object.keys(statics).forEach(i => {
15
- Object.defineProperty(cls, i, Object.getOwnPropertyDescriptor(statics, i));
16
- });
17
- }
18
- const properties = {
19
- constructor: {
20
- value: cls,
21
- enumerable: false,
22
- writable: false,
23
- configurable: true
24
- }
25
- };
26
- if (prototype) {
27
- Object.keys(prototype).forEach(i => {
28
- properties[i] = Object.getOwnPropertyDescriptor(prototype, i);
29
- });
30
- }
31
- cls.prototype = Object.create(superCtor.prototype, properties);
32
- };
33
- export function dateToExcel(d, date1904) {
34
- return 25569 + d.getTime() / (24 * 3600 * 1000) - (date1904 ? 1462 : 0);
35
- }
36
- export function excelToDate(v, date1904) {
37
- const millisecondSinceEpoch = Math.round((v - 25569 + (date1904 ? 1462 : 0)) * 24 * 3600 * 1000);
38
- return new Date(millisecondSinceEpoch);
39
- }
40
- export function parsePath(filepath) {
41
- const last = filepath.lastIndexOf("/");
42
- return {
43
- path: filepath.substring(0, last),
44
- name: filepath.substring(last + 1)
45
- };
46
- }
47
- export function getRelsPath(filepath) {
48
- const path = parsePath(filepath);
49
- return `${path.path}/_rels/${path.name}.rels`;
50
- }
6
+ // Re-export all shared utilities
7
+ export { delay, nop, inherits, dateToExcel, excelToDate, toIsoDateString, parsePath, getRelsPath, xmlDecode, validInt, isDateFmt, parseBoolean, range, toSortedArray, objectFromProps, bufferToString } from "./utils.base.js";
8
+ // =============================================================================
9
+ // XML encoding (Node.js optimized version)
10
+ // =============================================================================
51
11
  // oxlint-disable-next-line no-control-regex -- Control characters are intentionally matched for XML encoding
52
12
  const xmlDecodeRegex = /[<>&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/;
53
13
  export function xmlEncode(text) {
@@ -101,39 +61,9 @@ export function xmlEncode(text) {
101
61
  }
102
62
  return result;
103
63
  }
104
- export function xmlDecode(text) {
105
- return text.replace(/&([a-z]*);/g, c => {
106
- switch (c) {
107
- case "&lt;":
108
- return "<";
109
- case "&gt;":
110
- return ">";
111
- case "&amp;":
112
- return "&";
113
- case "&apos;":
114
- return "'";
115
- case "&quot;":
116
- return '"';
117
- default:
118
- return c;
119
- }
120
- });
121
- }
122
- export function validInt(value) {
123
- const i = parseInt(value, 10);
124
- return !Number.isNaN(i) ? i : 0;
125
- }
126
- export function isDateFmt(fmt) {
127
- if (!fmt) {
128
- return false;
129
- }
130
- // must remove all chars inside quotes and []
131
- fmt = fmt.replace(/\[[^\]]*]/g, "");
132
- fmt = fmt.replace(/"[^"]*"/g, "");
133
- // then check for date formatting chars
134
- const result = fmt.match(/[ymdhMsb]+/) !== null;
135
- return result;
136
- }
64
+ // =============================================================================
65
+ // File system utilities (Node.js only)
66
+ // =============================================================================
137
67
  export function fileExists(path) {
138
68
  return new Promise(resolve => {
139
69
  fs.access(path, fs.constants.F_OK, err => {
@@ -141,36 +71,10 @@ export function fileExists(path) {
141
71
  });
142
72
  });
143
73
  }
144
- export function toIsoDateString(dt) {
145
- return dt.toISOString().substr(0, 10);
146
- }
147
- export function parseBoolean(value) {
148
- return value === true || value === "true" || value === 1 || value === "1";
149
- }
150
- export function* range(start, stop, step = 1) {
151
- const compareOrder = step > 0 ? (a, b) => a < b : (a, b) => a > b;
152
- for (let value = start; compareOrder(value, stop); value += step) {
153
- yield value;
154
- }
155
- }
156
- export function toSortedArray(values) {
157
- const result = Array.from(values);
158
- // Note: per default, `Array.prototype.sort()` converts values
159
- // to strings when comparing. Here, if we have numbers, we use
160
- // numeric sort.
161
- if (result.every(item => Number.isFinite(item))) {
162
- const compareNumbers = (a, b) => a - b;
163
- return result.sort(compareNumbers);
164
- }
165
- return result.sort();
166
- }
167
- export function objectFromProps(props, value = null) {
168
- return props.reduce((result, property) => {
169
- result[property] = value;
170
- return result;
171
- }, {});
172
- }
74
+ // =============================================================================
173
75
  // Legacy export for backward compatibility
76
+ // =============================================================================
77
+ import { nop, inherits, dateToExcel, excelToDate, parsePath, getRelsPath, xmlDecode, validInt, isDateFmt, toIsoDateString, parseBoolean, range, toSortedArray, objectFromProps } from "./utils.base.js";
174
78
  /** @deprecated Import functions directly instead of using the utils object */
175
79
  export const utils = {
176
80
  nop,
@@ -192,15 +96,3 @@ export const utils = {
192
96
  toSortedArray,
193
97
  objectFromProps
194
98
  };
195
- // TextDecoder is available in ES2020+ and all modern browsers/Node.js
196
- const textDecoder = new TextDecoder("utf-8");
197
- /**
198
- * Convert a Buffer or ArrayBuffer to a UTF-8 string
199
- * Works in both Node.js and browser environments
200
- */
201
- export function bufferToString(chunk) {
202
- if (typeof chunk === "string") {
203
- return chunk;
204
- }
205
- return textDecoder.decode(chunk);
206
- }
@@ -0,0 +1,80 @@
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
+ }
@@ -0,0 +1,76 @@
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
+ }