@cj-tech-master/excelts 1.6.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/README.md +139 -24
  2. package/README_zh.md +140 -26
  3. package/dist/browser/excelts.esm.js +18468 -0
  4. package/dist/browser/excelts.esm.js.map +1 -0
  5. package/dist/browser/excelts.esm.min.js +125 -0
  6. package/dist/browser/excelts.iife.js +13107 -47146
  7. package/dist/browser/excelts.iife.js.map +1 -1
  8. package/dist/browser/excelts.iife.min.js +24 -106
  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 +137 -0
  12. package/dist/cjs/csv/csv.browser.js +68 -0
  13. package/dist/cjs/csv/csv.js +218 -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 +28 -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 +45 -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 +38 -38
  36. package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
  37. package/dist/cjs/stream/xlsx/worksheet-writer.js +67 -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/datetime.js +648 -0
  42. package/dist/cjs/utils/encryptor.browser.js +240 -0
  43. package/dist/cjs/utils/parse-sax.js +1191 -13
  44. package/dist/cjs/utils/shared-formula.js +5 -5
  45. package/dist/cjs/utils/sheet-utils.js +13 -13
  46. package/dist/cjs/utils/stream-buf.browser.js +355 -0
  47. package/dist/cjs/utils/stream-buf.js +5 -5
  48. package/dist/cjs/utils/unzip/extract.js +11 -11
  49. package/dist/cjs/utils/unzip/index.js +21 -21
  50. package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
  51. package/dist/cjs/utils/unzip/parse.js +16 -16
  52. package/dist/cjs/utils/unzip/zip-parser.js +14 -3
  53. package/dist/cjs/utils/utils.base.js +161 -0
  54. package/dist/cjs/utils/utils.browser.js +89 -0
  55. package/dist/cjs/utils/utils.js +46 -154
  56. package/dist/cjs/utils/xml-stream.js +3 -3
  57. package/dist/cjs/utils/zip/compress.base.js +88 -0
  58. package/dist/cjs/utils/zip/compress.browser.js +127 -0
  59. package/dist/cjs/utils/zip/compress.js +18 -198
  60. package/dist/cjs/utils/zip/crc32.browser.js +88 -0
  61. package/dist/cjs/utils/zip/deflate-fallback.js +575 -0
  62. package/dist/cjs/utils/zip/index.js +17 -17
  63. package/dist/cjs/utils/zip/streaming-zip.js +264 -0
  64. package/dist/cjs/utils/zip/zip-builder.js +10 -10
  65. package/dist/cjs/utils/zip-stream.browser.js +135 -0
  66. package/dist/cjs/utils/zip-stream.js +4 -4
  67. package/dist/cjs/xlsx/xform/base-xform.js +4 -4
  68. package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
  69. package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
  70. package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
  71. package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
  72. package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
  73. package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
  74. package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
  75. package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
  76. package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
  77. package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
  78. package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
  79. package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
  80. package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
  81. package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
  82. package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
  83. package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
  84. package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
  85. package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
  86. package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
  87. package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
  88. package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
  89. package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
  90. package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
  91. package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
  92. package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
  93. package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
  94. package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
  95. package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
  96. package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
  97. package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
  98. package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
  99. package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
  100. package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
  101. package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
  102. package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
  103. package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
  104. package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
  105. package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
  106. package/dist/cjs/xlsx/xform/list-xform.js +2 -2
  107. package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
  108. package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
  109. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
  110. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
  111. package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +10 -11
  112. package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
  113. package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
  114. package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
  115. package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
  116. package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
  117. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
  118. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
  119. package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
  120. package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
  121. package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
  122. package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
  123. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
  124. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +11 -12
  125. package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
  126. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
  127. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
  128. package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
  129. package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
  130. package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
  131. package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
  132. package/dist/cjs/xlsx/xform/sheet/col-breaks-xform.js +38 -0
  133. package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
  134. package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
  135. package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
  136. package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
  137. package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
  138. package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
  139. package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
  140. package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
  141. package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
  142. package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
  143. package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +15 -3
  144. package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
  145. package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
  146. package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
  147. package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
  148. package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
  149. package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +15 -17
  150. package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
  151. package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
  152. package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
  153. package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
  154. package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
  155. package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
  156. package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +75 -70
  157. package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
  158. package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
  159. package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
  160. package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
  161. package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
  162. package/dist/cjs/xlsx/xform/static-xform.js +4 -4
  163. package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
  164. package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
  165. package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
  166. package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
  167. package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
  168. package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
  169. package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
  170. package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
  171. package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
  172. package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
  173. package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
  174. package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
  175. package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
  176. package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
  177. package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
  178. package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
  179. package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
  180. package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
  181. package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
  182. package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
  183. package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
  184. package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
  185. package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
  186. package/dist/cjs/xlsx/xlsx.base.js +742 -0
  187. package/dist/cjs/xlsx/xlsx.browser.js +162 -0
  188. package/dist/cjs/xlsx/xlsx.js +118 -892
  189. package/dist/esm/csv/csv-core.js +694 -0
  190. package/dist/esm/csv/csv-stream.js +638 -0
  191. package/dist/esm/csv/csv.base.js +127 -0
  192. package/dist/esm/csv/csv.browser.js +65 -0
  193. package/dist/esm/csv/csv.js +181 -159
  194. package/dist/esm/doc/column.js +21 -0
  195. package/dist/esm/doc/workbook.base.js +207 -0
  196. package/dist/esm/doc/workbook.browser.js +59 -0
  197. package/dist/esm/doc/workbook.js +64 -175
  198. package/dist/esm/doc/worksheet.js +4 -0
  199. package/dist/esm/index.browser.js +33 -1
  200. package/dist/esm/index.js +23 -8
  201. package/dist/esm/local.js +0 -1
  202. package/dist/esm/stream/xlsx/workbook-writer.js +1 -1
  203. package/dist/esm/stream/xlsx/worksheet-writer.js +8 -1
  204. package/dist/esm/utils/browser-buffer.js +67 -0
  205. package/dist/esm/utils/datetime.js +639 -0
  206. package/dist/esm/utils/encryptor.browser.js +237 -0
  207. package/dist/esm/utils/parse-sax.js +1188 -12
  208. package/dist/esm/utils/stream-buf.browser.js +352 -0
  209. package/dist/esm/utils/unzip/zip-parser.js +11 -0
  210. package/dist/esm/utils/utils.base.js +142 -0
  211. package/dist/esm/utils/utils.browser.js +68 -0
  212. package/dist/esm/utils/utils.js +15 -123
  213. package/dist/esm/utils/zip/compress.base.js +83 -0
  214. package/dist/esm/utils/zip/compress.browser.js +121 -0
  215. package/dist/esm/utils/zip/compress.js +16 -164
  216. package/dist/esm/utils/zip/crc32.browser.js +82 -0
  217. package/dist/esm/utils/zip/deflate-fallback.js +570 -0
  218. package/dist/esm/utils/zip/streaming-zip.js +259 -0
  219. package/dist/esm/utils/zip-stream.browser.js +132 -0
  220. package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
  221. package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
  222. package/dist/esm/xlsx/xform/sheet/col-breaks-xform.js +35 -0
  223. package/dist/esm/xlsx/xform/sheet/page-breaks-xform.js +13 -1
  224. package/dist/esm/xlsx/xform/sheet/row-breaks-xform.js +11 -13
  225. package/dist/esm/xlsx/xform/sheet/worksheet-xform.js +7 -2
  226. package/dist/esm/xlsx/xlsx.base.js +739 -0
  227. package/dist/esm/xlsx/xlsx.browser.js +159 -0
  228. package/dist/esm/xlsx/xlsx.js +114 -888
  229. package/dist/types/csv/csv-core.d.ts +207 -0
  230. package/dist/types/csv/csv-stream.d.ts +114 -0
  231. package/dist/types/csv/csv.base.d.ts +62 -0
  232. package/dist/types/csv/csv.browser.d.ts +33 -0
  233. package/dist/types/csv/csv.d.ts +97 -71
  234. package/dist/types/doc/anchor.d.ts +1 -1
  235. package/dist/types/doc/cell.d.ts +7 -7
  236. package/dist/types/doc/column.d.ts +9 -3
  237. package/dist/types/doc/defined-names.d.ts +4 -4
  238. package/dist/types/doc/image.d.ts +2 -2
  239. package/dist/types/doc/modelcontainer.d.ts +1 -1
  240. package/dist/types/doc/pivot-table.d.ts +1 -1
  241. package/dist/types/doc/range.d.ts +1 -1
  242. package/dist/types/doc/row.d.ts +3 -3
  243. package/dist/types/doc/table.d.ts +2 -2
  244. package/dist/types/doc/workbook.base.d.ts +111 -0
  245. package/dist/types/doc/workbook.browser.d.ts +38 -0
  246. package/dist/types/doc/workbook.d.ts +62 -92
  247. package/dist/types/doc/worksheet.d.ts +12 -10
  248. package/dist/types/index.browser.d.ts +19 -5
  249. package/dist/types/index.d.ts +24 -23
  250. package/dist/types/local.d.ts +0 -1
  251. package/dist/types/stream/xlsx/hyperlink-reader.d.ts +1 -1
  252. package/dist/types/stream/xlsx/workbook-reader.d.ts +4 -4
  253. package/dist/types/stream/xlsx/workbook-writer.d.ts +7 -7
  254. package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
  255. package/dist/types/stream/xlsx/worksheet-writer.d.ts +11 -9
  256. package/dist/types/types.d.ts +6 -0
  257. package/dist/types/utils/browser-buffer.d.ts +28 -0
  258. package/dist/types/utils/col-cache.d.ts +1 -1
  259. package/dist/types/utils/datetime.d.ts +85 -0
  260. package/dist/types/utils/encryptor.browser.d.ts +28 -0
  261. package/dist/types/utils/parse-sax.d.ts +108 -1
  262. package/dist/types/utils/sheet-utils.d.ts +3 -3
  263. package/dist/types/utils/stream-buf.browser.d.ts +41 -0
  264. package/dist/types/utils/unzip/extract.d.ts +6 -6
  265. package/dist/types/utils/unzip/index.d.ts +8 -8
  266. package/dist/types/utils/unzip/parse.d.ts +3 -3
  267. package/dist/types/utils/unzip/zip-parser.d.ts +5 -0
  268. package/dist/types/utils/utils.base.d.ts +29 -0
  269. package/dist/types/utils/utils.browser.d.ts +29 -0
  270. package/dist/types/utils/utils.d.ts +6 -25
  271. package/dist/types/utils/zip/compress.base.d.ts +45 -0
  272. package/dist/types/utils/zip/compress.browser.d.ts +63 -0
  273. package/dist/types/utils/zip/compress.d.ts +13 -45
  274. package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
  275. package/dist/types/utils/zip/deflate-fallback.d.ts +39 -0
  276. package/dist/types/utils/zip/index.d.ts +5 -5
  277. package/dist/types/utils/zip/streaming-zip.d.ts +96 -0
  278. package/dist/types/utils/zip/zip-builder.d.ts +1 -1
  279. package/dist/types/utils/zip-stream.browser.d.ts +39 -0
  280. package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
  281. package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
  282. package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
  283. package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
  284. package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
  285. package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
  286. package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
  287. package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
  288. package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
  289. package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
  290. package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
  291. package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
  292. package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
  293. package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
  294. package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
  295. package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
  296. package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
  297. package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
  298. package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
  299. package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
  300. package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
  301. package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
  302. package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
  303. package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
  304. package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
  305. package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
  306. package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
  307. package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
  308. package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
  309. package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
  310. package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
  311. package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
  312. package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
  313. package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
  314. package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
  315. package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
  316. package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
  317. package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
  318. package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
  319. package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
  320. package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
  321. package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
  322. package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
  323. package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
  324. package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
  325. package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  326. package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
  327. package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
  328. package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
  329. package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
  330. package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
  331. package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
  332. package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
  333. package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
  334. package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
  335. package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
  336. package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
  337. package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
  338. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
  339. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
  340. package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
  341. package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
  342. package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
  343. package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
  344. package/dist/types/xlsx/xform/sheet/col-breaks-xform.d.ts +16 -0
  345. package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
  346. package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
  347. package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
  348. package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
  349. package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
  350. package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
  351. package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
  352. package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
  353. package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
  354. package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +5 -1
  355. package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
  356. package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
  357. package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
  358. package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
  359. package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
  360. package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +5 -1
  361. package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
  362. package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
  363. package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
  364. package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
  365. package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
  366. package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
  367. package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
  368. package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
  369. package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
  370. package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
  371. package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
  372. package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
  373. package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
  374. package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
  375. package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
  376. package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
  377. package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
  378. package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
  379. package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
  380. package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
  381. package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
  382. package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
  383. package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
  384. package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
  385. package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
  386. package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
  387. package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
  388. package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
  389. package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
  390. package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
  391. package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
  392. package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
  393. package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
  394. package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
  395. package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
  396. package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
  397. package/dist/types/xlsx/xlsx.base.d.ts +134 -0
  398. package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
  399. package/dist/types/xlsx/xlsx.d.ts +20 -80
  400. package/package.json +16 -39
@@ -0,0 +1,575 @@
1
+ "use strict";
2
+ /**
3
+ * Pure JavaScript DEFLATE implementation for browsers without CompressionStream support
4
+ *
5
+ * This fallback supports:
6
+ * - Decompression: Full DEFLATE decompression (RFC 1951)
7
+ * - Compression: STORE mode only (no compression, but valid DEFLATE format)
8
+ *
9
+ * Used automatically when CompressionStream with "deflate-raw" is unavailable:
10
+ * - Firefox < 113
11
+ * - Safari < 16.4
12
+ * - Chrome < 103
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.inflateRaw = inflateRaw;
16
+ exports.deflateRawStore = deflateRawStore;
17
+ exports.deflateRawCompressed = deflateRawCompressed;
18
+ // ============================================================================
19
+ // DEFLATE Decompression (Full implementation)
20
+ // ============================================================================
21
+ // Fixed Huffman code lengths for literals/lengths (RFC 1951)
22
+ const FIXED_LITERAL_LENGTHS = new Uint8Array(288);
23
+ for (let i = 0; i <= 143; i++) {
24
+ FIXED_LITERAL_LENGTHS[i] = 8;
25
+ }
26
+ for (let i = 144; i <= 255; i++) {
27
+ FIXED_LITERAL_LENGTHS[i] = 9;
28
+ }
29
+ for (let i = 256; i <= 279; i++) {
30
+ FIXED_LITERAL_LENGTHS[i] = 7;
31
+ }
32
+ for (let i = 280; i <= 287; i++) {
33
+ FIXED_LITERAL_LENGTHS[i] = 8;
34
+ }
35
+ // Fixed Huffman code lengths for distances
36
+ const FIXED_DISTANCE_LENGTHS = new Uint8Array(32).fill(5);
37
+ // Length base values and extra bits (codes 257-285)
38
+ const LENGTH_BASE = [
39
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131,
40
+ 163, 195, 227, 258
41
+ ];
42
+ const LENGTH_EXTRA = [
43
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0
44
+ ];
45
+ // Distance base values and extra bits (codes 0-29)
46
+ const DISTANCE_BASE = [
47
+ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049,
48
+ 3073, 4097, 6145, 8193, 12289, 16385, 24577
49
+ ];
50
+ const DISTANCE_EXTRA = [
51
+ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13
52
+ ];
53
+ // Code length order for dynamic Huffman tables
54
+ const CODE_LENGTH_ORDER = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
55
+ /**
56
+ * Build Huffman tree from code lengths
57
+ */
58
+ function buildHuffmanTree(lengths, maxSymbol) {
59
+ // Count codes of each length
60
+ const blCount = new Uint16Array(16);
61
+ for (let i = 0; i < maxSymbol; i++) {
62
+ if (lengths[i] > 0) {
63
+ blCount[lengths[i]]++;
64
+ }
65
+ }
66
+ // Find first code value for each length
67
+ const nextCode = new Uint16Array(16);
68
+ let code = 0;
69
+ for (let bits = 1; bits <= 15; bits++) {
70
+ code = (code + blCount[bits - 1]) << 1;
71
+ nextCode[bits] = code;
72
+ }
73
+ // Build tree
74
+ const root = {};
75
+ for (let symbol = 0; symbol < maxSymbol; symbol++) {
76
+ const len = lengths[symbol];
77
+ if (len === 0) {
78
+ continue;
79
+ }
80
+ code = nextCode[len]++;
81
+ let node = root;
82
+ for (let bit = len - 1; bit >= 0; bit--) {
83
+ const b = (code >> bit) & 1;
84
+ if (b === 0) {
85
+ if (!node.left) {
86
+ node.left = {};
87
+ }
88
+ node = node.left;
89
+ }
90
+ else {
91
+ if (!node.right) {
92
+ node.right = {};
93
+ }
94
+ node = node.right;
95
+ }
96
+ }
97
+ node.symbol = symbol;
98
+ }
99
+ return root;
100
+ }
101
+ /**
102
+ * Bit reader for DEFLATE streams
103
+ */
104
+ class BitReader {
105
+ constructor(data) {
106
+ this.data = data;
107
+ this.pos = 0;
108
+ this.bitBuf = 0;
109
+ this.bitCount = 0;
110
+ }
111
+ /**
112
+ * Read n bits (LSB first)
113
+ */
114
+ readBits(n) {
115
+ while (this.bitCount < n) {
116
+ if (this.pos >= this.data.length) {
117
+ throw new Error("Unexpected end of DEFLATE data");
118
+ }
119
+ this.bitBuf |= this.data[this.pos++] << this.bitCount;
120
+ this.bitCount += 8;
121
+ }
122
+ const result = this.bitBuf & ((1 << n) - 1);
123
+ this.bitBuf >>= n;
124
+ this.bitCount -= n;
125
+ return result;
126
+ }
127
+ /**
128
+ * Decode a symbol using Huffman tree
129
+ */
130
+ decodeSymbol(tree) {
131
+ let node = tree;
132
+ while (node.symbol === undefined) {
133
+ const bit = this.readBits(1);
134
+ node = bit === 0 ? node.left : node.right;
135
+ if (!node) {
136
+ throw new Error("Invalid Huffman code");
137
+ }
138
+ }
139
+ return node.symbol;
140
+ }
141
+ /**
142
+ * Align to byte boundary
143
+ */
144
+ alignToByte() {
145
+ this.bitBuf = 0;
146
+ this.bitCount = 0;
147
+ }
148
+ /**
149
+ * Read a byte directly (must be aligned)
150
+ */
151
+ readByte() {
152
+ if (this.pos >= this.data.length) {
153
+ throw new Error("Unexpected end of data");
154
+ }
155
+ return this.data[this.pos++];
156
+ }
157
+ /**
158
+ * Read 16-bit little-endian value (must be aligned)
159
+ */
160
+ readUint16() {
161
+ return this.readByte() | (this.readByte() << 8);
162
+ }
163
+ }
164
+ /**
165
+ * Decompress DEFLATE data (raw format, no zlib header)
166
+ *
167
+ * @param data - Compressed data in deflate-raw format
168
+ * @returns Decompressed data
169
+ */
170
+ function inflateRaw(data) {
171
+ const reader = new BitReader(data);
172
+ const output = [];
173
+ let isFinal = false;
174
+ while (!isFinal) {
175
+ isFinal = reader.readBits(1) === 1;
176
+ const blockType = reader.readBits(2);
177
+ if (blockType === 0) {
178
+ // Stored block (no compression)
179
+ reader.alignToByte();
180
+ const len = reader.readUint16();
181
+ const nlen = reader.readUint16();
182
+ if ((len ^ nlen) !== 0xffff) {
183
+ throw new Error("Invalid stored block length");
184
+ }
185
+ for (let i = 0; i < len; i++) {
186
+ output.push(reader.readByte());
187
+ }
188
+ }
189
+ else if (blockType === 1 || blockType === 2) {
190
+ // Compressed block
191
+ let literalTree;
192
+ let distanceTree;
193
+ if (blockType === 1) {
194
+ // Fixed Huffman codes
195
+ literalTree = buildHuffmanTree(FIXED_LITERAL_LENGTHS, 288);
196
+ distanceTree = buildHuffmanTree(FIXED_DISTANCE_LENGTHS, 32);
197
+ }
198
+ else {
199
+ // Dynamic Huffman codes
200
+ const hlit = reader.readBits(5) + 257;
201
+ const hdist = reader.readBits(5) + 1;
202
+ const hclen = reader.readBits(4) + 4;
203
+ // Read code length code lengths
204
+ const codeLengthLengths = new Uint8Array(19);
205
+ for (let i = 0; i < hclen; i++) {
206
+ codeLengthLengths[CODE_LENGTH_ORDER[i]] = reader.readBits(3);
207
+ }
208
+ const codeLengthTree = buildHuffmanTree(codeLengthLengths, 19);
209
+ // Decode literal/length and distance code lengths
210
+ const allLengths = new Uint8Array(hlit + hdist);
211
+ let i = 0;
212
+ while (i < hlit + hdist) {
213
+ const symbol = reader.decodeSymbol(codeLengthTree);
214
+ if (symbol < 16) {
215
+ allLengths[i++] = symbol;
216
+ }
217
+ else if (symbol === 16) {
218
+ // Copy previous length 3-6 times
219
+ const repeat = reader.readBits(2) + 3;
220
+ const prev = allLengths[i - 1];
221
+ for (let j = 0; j < repeat; j++) {
222
+ allLengths[i++] = prev;
223
+ }
224
+ }
225
+ else if (symbol === 17) {
226
+ // Repeat 0 for 3-10 times
227
+ const repeat = reader.readBits(3) + 3;
228
+ for (let j = 0; j < repeat; j++) {
229
+ allLengths[i++] = 0;
230
+ }
231
+ }
232
+ else if (symbol === 18) {
233
+ // Repeat 0 for 11-138 times
234
+ const repeat = reader.readBits(7) + 11;
235
+ for (let j = 0; j < repeat; j++) {
236
+ allLengths[i++] = 0;
237
+ }
238
+ }
239
+ }
240
+ literalTree = buildHuffmanTree(allLengths.subarray(0, hlit), hlit);
241
+ distanceTree = buildHuffmanTree(allLengths.subarray(hlit), hdist);
242
+ }
243
+ // Decode compressed data
244
+ while (true) {
245
+ const symbol = reader.decodeSymbol(literalTree);
246
+ if (symbol < 256) {
247
+ // Literal byte
248
+ output.push(symbol);
249
+ }
250
+ else if (symbol === 256) {
251
+ // End of block
252
+ break;
253
+ }
254
+ else {
255
+ // Length/distance pair
256
+ const lengthCode = symbol - 257;
257
+ const length = LENGTH_BASE[lengthCode] + reader.readBits(LENGTH_EXTRA[lengthCode]);
258
+ const distCode = reader.decodeSymbol(distanceTree);
259
+ const distance = DISTANCE_BASE[distCode] + reader.readBits(DISTANCE_EXTRA[distCode]);
260
+ // Copy from output buffer
261
+ const start = output.length - distance;
262
+ for (let i = 0; i < length; i++) {
263
+ output.push(output[start + i]);
264
+ }
265
+ }
266
+ }
267
+ }
268
+ else {
269
+ throw new Error("Invalid DEFLATE block type: " + blockType);
270
+ }
271
+ }
272
+ return new Uint8Array(output);
273
+ }
274
+ // ============================================================================
275
+ // DEFLATE Compression (STORE mode only - no actual compression)
276
+ // ============================================================================
277
+ /**
278
+ * Compress data using DEFLATE STORE mode (no compression)
279
+ *
280
+ * This creates valid DEFLATE data but without actual compression.
281
+ * Files will be larger but this works on all browsers.
282
+ *
283
+ * @param data - Data to "compress"
284
+ * @returns DEFLATE-formatted data (stored, not compressed)
285
+ */
286
+ function deflateRawStore(data) {
287
+ // Maximum stored block size is 65535 bytes
288
+ const MAX_BLOCK_SIZE = 65535;
289
+ const numBlocks = Math.ceil(data.length / MAX_BLOCK_SIZE) || 1;
290
+ // Calculate output size: 5 bytes header per block + data
291
+ const outputSize = numBlocks * 5 + data.length;
292
+ const output = new Uint8Array(outputSize);
293
+ let outPos = 0;
294
+ let inPos = 0;
295
+ for (let block = 0; block < numBlocks; block++) {
296
+ const isLast = block === numBlocks - 1;
297
+ const blockSize = Math.min(MAX_BLOCK_SIZE, data.length - inPos);
298
+ // Block header: BFINAL (1 bit) + BTYPE=00 (2 bits) = stored block
299
+ // Then align to byte boundary (5 bits padding)
300
+ output[outPos++] = isLast ? 0x01 : 0x00;
301
+ // LEN (16-bit little-endian)
302
+ output[outPos++] = blockSize & 0xff;
303
+ output[outPos++] = (blockSize >> 8) & 0xff;
304
+ // NLEN (one's complement of LEN)
305
+ output[outPos++] = ~blockSize & 0xff;
306
+ output[outPos++] = (~blockSize >> 8) & 0xff;
307
+ // Data
308
+ output.set(data.subarray(inPos, inPos + blockSize), outPos);
309
+ outPos += blockSize;
310
+ inPos += blockSize;
311
+ }
312
+ return output.subarray(0, outPos);
313
+ }
314
+ // ============================================================================
315
+ // LZ77 + Huffman Compression (Basic implementation)
316
+ // ============================================================================
317
+ /**
318
+ * Compress data using DEFLATE with fixed Huffman codes
319
+ *
320
+ * This provides real compression using LZ77 + fixed Huffman codes.
321
+ * Not as efficient as full DEFLATE but much better than STORE mode.
322
+ *
323
+ * @param data - Data to compress
324
+ * @returns Compressed data in deflate-raw format
325
+ */
326
+ function deflateRawCompressed(data) {
327
+ if (data.length === 0) {
328
+ // Empty input: single final block with just end-of-block symbol
329
+ return new Uint8Array([0x03, 0x00]);
330
+ }
331
+ // For small data, use STORE mode
332
+ if (data.length < 100) {
333
+ return deflateRawStore(data);
334
+ }
335
+ const output = new BitWriter();
336
+ // Write final block header with fixed Huffman (BFINAL=1, BTYPE=01)
337
+ output.writeBits(1, 1); // BFINAL
338
+ output.writeBits(1, 2); // BTYPE = 01 (fixed Huffman)
339
+ // LZ77 compression with hash table
340
+ const hashTable = new Map();
341
+ let pos = 0;
342
+ while (pos < data.length) {
343
+ // Try to find a match
344
+ let bestLen = 0;
345
+ let bestDist = 0;
346
+ if (pos + 2 < data.length) {
347
+ const hash = (data[pos] << 16) | (data[pos + 1] << 8) | data[pos + 2];
348
+ const matchPos = hashTable.get(hash);
349
+ if (matchPos !== undefined && pos - matchPos <= 32768) {
350
+ const dist = pos - matchPos;
351
+ let len = 0;
352
+ const maxLen = Math.min(258, data.length - pos);
353
+ while (len < maxLen && data[matchPos + len] === data[pos + len]) {
354
+ len++;
355
+ }
356
+ if (len >= 3) {
357
+ bestLen = len;
358
+ bestDist = dist;
359
+ }
360
+ }
361
+ // Update hash table
362
+ hashTable.set(hash, pos);
363
+ }
364
+ if (bestLen >= 3) {
365
+ // Write length/distance pair
366
+ writeLengthCode(output, bestLen);
367
+ writeDistanceCode(output, bestDist);
368
+ pos += bestLen;
369
+ }
370
+ else {
371
+ // Write literal
372
+ writeLiteralCode(output, data[pos]);
373
+ pos++;
374
+ }
375
+ }
376
+ // Write end-of-block symbol (256)
377
+ writeLiteralCode(output, 256);
378
+ return output.finish();
379
+ }
380
+ /**
381
+ * Bit writer for DEFLATE output
382
+ */
383
+ class BitWriter {
384
+ constructor() {
385
+ this.chunks = [];
386
+ this.buffer = [];
387
+ this.bitBuf = 0;
388
+ this.bitCount = 0;
389
+ }
390
+ writeBits(value, count) {
391
+ this.bitBuf |= value << this.bitCount;
392
+ this.bitCount += count;
393
+ while (this.bitCount >= 8) {
394
+ this.buffer.push(this.bitBuf & 0xff);
395
+ this.bitBuf >>= 8;
396
+ this.bitCount -= 8;
397
+ if (this.buffer.length >= 65536) {
398
+ this.chunks.push(new Uint8Array(this.buffer));
399
+ this.buffer = [];
400
+ }
401
+ }
402
+ }
403
+ writeBitsReverse(value, count) {
404
+ // Write bits in reverse order (MSB first, used for Huffman codes)
405
+ let reversed = 0;
406
+ for (let i = 0; i < count; i++) {
407
+ reversed = (reversed << 1) | ((value >> i) & 1);
408
+ }
409
+ this.writeBits(reversed, count);
410
+ }
411
+ finish() {
412
+ // Flush remaining bits
413
+ if (this.bitCount > 0) {
414
+ this.buffer.push(this.bitBuf & 0xff);
415
+ }
416
+ if (this.chunks.length === 0) {
417
+ return new Uint8Array(this.buffer);
418
+ }
419
+ this.chunks.push(new Uint8Array(this.buffer));
420
+ const totalLength = this.chunks.reduce((sum, chunk) => sum + chunk.length, 0);
421
+ const result = new Uint8Array(totalLength);
422
+ let offset = 0;
423
+ for (const chunk of this.chunks) {
424
+ result.set(chunk, offset);
425
+ offset += chunk.length;
426
+ }
427
+ return result;
428
+ }
429
+ }
430
+ // Fixed Huffman code tables
431
+ const LITERAL_CODES = [];
432
+ const LITERAL_LENGTHS_TABLE = [];
433
+ // Build fixed literal/length Huffman codes
434
+ for (let i = 0; i <= 287; i++) {
435
+ let code;
436
+ let len;
437
+ if (i <= 143) {
438
+ // 00110000 - 10111111 (8 bits)
439
+ code = 0x30 + i;
440
+ len = 8;
441
+ }
442
+ else if (i <= 255) {
443
+ // 110010000 - 111111111 (9 bits)
444
+ code = 0x190 + (i - 144);
445
+ len = 9;
446
+ }
447
+ else if (i <= 279) {
448
+ // 0000000 - 0010111 (7 bits)
449
+ code = i - 256;
450
+ len = 7;
451
+ }
452
+ else {
453
+ // 11000000 - 11000111 (8 bits)
454
+ code = 0xc0 + (i - 280);
455
+ len = 8;
456
+ }
457
+ LITERAL_CODES[i] = [code, len];
458
+ LITERAL_LENGTHS_TABLE[i] = len;
459
+ }
460
+ /**
461
+ * Write a literal or end-of-block symbol using fixed Huffman codes
462
+ */
463
+ function writeLiteralCode(output, symbol) {
464
+ const [code, len] = LITERAL_CODES[symbol];
465
+ output.writeBitsReverse(code, len);
466
+ }
467
+ /**
468
+ * Write a length code (257-285)
469
+ */
470
+ function writeLengthCode(output, length) {
471
+ let code;
472
+ let extraBits;
473
+ let extraValue;
474
+ if (length <= 10) {
475
+ code = 257 + length - 3;
476
+ extraBits = 0;
477
+ extraValue = 0;
478
+ }
479
+ else if (length <= 18) {
480
+ const base = length - 11;
481
+ code = 265 + Math.floor(base / 2);
482
+ extraBits = 1;
483
+ extraValue = base % 2;
484
+ }
485
+ else if (length <= 34) {
486
+ const base = length - 19;
487
+ code = 269 + Math.floor(base / 4);
488
+ extraBits = 2;
489
+ extraValue = base % 4;
490
+ }
491
+ else if (length <= 66) {
492
+ const base = length - 35;
493
+ code = 273 + Math.floor(base / 8);
494
+ extraBits = 3;
495
+ extraValue = base % 8;
496
+ }
497
+ else if (length <= 130) {
498
+ const base = length - 67;
499
+ code = 277 + Math.floor(base / 16);
500
+ extraBits = 4;
501
+ extraValue = base % 16;
502
+ }
503
+ else if (length <= 257) {
504
+ const base = length - 131;
505
+ code = 281 + Math.floor(base / 32);
506
+ extraBits = 5;
507
+ extraValue = base % 32;
508
+ }
509
+ else {
510
+ code = 285;
511
+ extraBits = 0;
512
+ extraValue = 0;
513
+ }
514
+ writeLiteralCode(output, code);
515
+ if (extraBits > 0) {
516
+ output.writeBits(extraValue, extraBits);
517
+ }
518
+ }
519
+ /**
520
+ * Write a distance code
521
+ */
522
+ function writeDistanceCode(output, distance) {
523
+ // Distance code table from RFC 1951
524
+ // Each entry: [maxDistance, code, extraBits]
525
+ const DIST_TABLE = [
526
+ [1, 0, 0],
527
+ [2, 1, 0],
528
+ [3, 2, 0],
529
+ [4, 3, 0],
530
+ [6, 4, 1],
531
+ [8, 5, 1],
532
+ [12, 6, 2],
533
+ [16, 7, 2],
534
+ [24, 8, 3],
535
+ [32, 9, 3],
536
+ [48, 10, 4],
537
+ [64, 11, 4],
538
+ [96, 12, 5],
539
+ [128, 13, 5],
540
+ [192, 14, 6],
541
+ [256, 15, 6],
542
+ [384, 16, 7],
543
+ [512, 17, 7],
544
+ [768, 18, 8],
545
+ [1024, 19, 8],
546
+ [1536, 20, 9],
547
+ [2048, 21, 9],
548
+ [3072, 22, 10],
549
+ [4096, 23, 10],
550
+ [6144, 24, 11],
551
+ [8192, 25, 11],
552
+ [12288, 26, 12],
553
+ [16384, 27, 12],
554
+ [24576, 28, 13],
555
+ [32768, 29, 13]
556
+ ];
557
+ // Find the appropriate distance code
558
+ let code = 0;
559
+ let extraBits = 0;
560
+ let baseDistance = 1;
561
+ for (const [maxDist, c, extra] of DIST_TABLE) {
562
+ if (distance <= maxDist) {
563
+ code = c;
564
+ extraBits = extra;
565
+ break;
566
+ }
567
+ baseDistance = maxDist + 1;
568
+ }
569
+ const extraValue = distance - baseDistance;
570
+ // Distance codes use 5-bit fixed code (reversed for Huffman)
571
+ output.writeBitsReverse(code, 5);
572
+ if (extraBits > 0) {
573
+ output.writeBits(extraValue, extraBits);
574
+ }
575
+ }
@@ -17,7 +17,7 @@
17
17
  *
18
18
  * @example Basic usage
19
19
  * ```ts
20
- * import { createZip } from "./utils/zip/index.js";
20
+ * import { createZip } from "./utils/zip/index";
21
21
  *
22
22
  * const zipData = await createZip([
23
23
  * { name: "hello.txt", data: new TextEncoder().encode("Hello!") },
@@ -30,7 +30,7 @@
30
30
  *
31
31
  * @example Streaming usage
32
32
  * ```ts
33
- * import { ZipBuilder } from "./utils/zip/index.js";
33
+ * import { ZipBuilder } from "./utils/zip/index";
34
34
  *
35
35
  * const builder = new ZipBuilder({ level: 1 });
36
36
  *
@@ -51,20 +51,20 @@
51
51
  Object.defineProperty(exports, "__esModule", { value: true });
52
52
  exports.ZipBuilder = exports.createZipSync = exports.createZip = exports.hasCompressionStream = exports.hasNativeZlib = exports.decompressSync = exports.decompress = exports.compressSync = exports.compress = exports.crc32Finalize = exports.crc32Update = exports.crc32 = void 0;
53
53
  // CRC32 utilities
54
- var crc32_js_1 = require("./crc32");
55
- Object.defineProperty(exports, "crc32", { enumerable: true, get: function () { return crc32_js_1.crc32; } });
56
- Object.defineProperty(exports, "crc32Update", { enumerable: true, get: function () { return crc32_js_1.crc32Update; } });
57
- Object.defineProperty(exports, "crc32Finalize", { enumerable: true, get: function () { return crc32_js_1.crc32Finalize; } });
54
+ var crc32_1 = require("./crc32");
55
+ Object.defineProperty(exports, "crc32", { enumerable: true, get: function () { return crc32_1.crc32; } });
56
+ Object.defineProperty(exports, "crc32Update", { enumerable: true, get: function () { return crc32_1.crc32Update; } });
57
+ Object.defineProperty(exports, "crc32Finalize", { enumerable: true, get: function () { return crc32_1.crc32Finalize; } });
58
58
  // Compression utilities
59
- var compress_js_1 = require("./compress");
60
- Object.defineProperty(exports, "compress", { enumerable: true, get: function () { return compress_js_1.compress; } });
61
- Object.defineProperty(exports, "compressSync", { enumerable: true, get: function () { return compress_js_1.compressSync; } });
62
- Object.defineProperty(exports, "decompress", { enumerable: true, get: function () { return compress_js_1.decompress; } });
63
- Object.defineProperty(exports, "decompressSync", { enumerable: true, get: function () { return compress_js_1.decompressSync; } });
64
- Object.defineProperty(exports, "hasNativeZlib", { enumerable: true, get: function () { return compress_js_1.hasNativeZlib; } });
65
- Object.defineProperty(exports, "hasCompressionStream", { enumerable: true, get: function () { return compress_js_1.hasCompressionStream; } });
59
+ var compress_1 = require("./compress");
60
+ Object.defineProperty(exports, "compress", { enumerable: true, get: function () { return compress_1.compress; } });
61
+ Object.defineProperty(exports, "compressSync", { enumerable: true, get: function () { return compress_1.compressSync; } });
62
+ Object.defineProperty(exports, "decompress", { enumerable: true, get: function () { return compress_1.decompress; } });
63
+ Object.defineProperty(exports, "decompressSync", { enumerable: true, get: function () { return compress_1.decompressSync; } });
64
+ Object.defineProperty(exports, "hasNativeZlib", { enumerable: true, get: function () { return compress_1.hasNativeZlib; } });
65
+ Object.defineProperty(exports, "hasCompressionStream", { enumerable: true, get: function () { return compress_1.hasCompressionStream; } });
66
66
  // ZIP builder
67
- var zip_builder_js_1 = require("./zip-builder");
68
- Object.defineProperty(exports, "createZip", { enumerable: true, get: function () { return zip_builder_js_1.createZip; } });
69
- Object.defineProperty(exports, "createZipSync", { enumerable: true, get: function () { return zip_builder_js_1.createZipSync; } });
70
- Object.defineProperty(exports, "ZipBuilder", { enumerable: true, get: function () { return zip_builder_js_1.ZipBuilder; } });
67
+ var zip_builder_1 = require("./zip-builder");
68
+ Object.defineProperty(exports, "createZip", { enumerable: true, get: function () { return zip_builder_1.createZip; } });
69
+ Object.defineProperty(exports, "createZipSync", { enumerable: true, get: function () { return zip_builder_1.createZipSync; } });
70
+ Object.defineProperty(exports, "ZipBuilder", { enumerable: true, get: function () { return zip_builder_1.ZipBuilder; } });