@cj-tech-master/excelts 4.2.0 → 4.2.1-canary.20260112134913.a3cecdd

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 (317) hide show
  1. package/THIRD_PARTY_NOTICES.md +0 -31
  2. package/dist/browser/index.browser.d.ts +1 -0
  3. package/dist/browser/index.browser.js +12 -0
  4. package/dist/{types/modules/archive → browser/modules/archive/compression}/compress.base.d.ts +1 -0
  5. package/dist/browser/modules/archive/{compress.base.js → compression/compress.base.js} +2 -1
  6. package/dist/{types/modules/archive → browser/modules/archive/compression}/compress.browser.d.ts +10 -8
  7. package/dist/{esm/modules/archive → browser/modules/archive/compression}/compress.browser.js +18 -19
  8. package/dist/browser/modules/archive/{compress.d.ts → compression/compress.d.ts} +2 -2
  9. package/dist/browser/modules/archive/{compress.js → compression/compress.js} +1 -1
  10. package/dist/browser/modules/archive/{crc32.browser.d.ts → compression/crc32.browser.d.ts} +1 -1
  11. package/dist/browser/modules/archive/{crc32.d.ts → compression/crc32.d.ts} +1 -1
  12. package/dist/browser/modules/archive/{crc32.js → compression/crc32.js} +1 -1
  13. package/dist/browser/modules/archive/{deflate-fallback.js → compression/deflate-fallback.js} +1 -1
  14. package/dist/browser/modules/archive/{streaming-compress.browser.d.ts → compression/streaming-compress.browser.d.ts} +2 -2
  15. package/dist/browser/modules/archive/{streaming-compress.browser.js → compression/streaming-compress.browser.js} +3 -3
  16. package/dist/browser/modules/archive/{streaming-compress.d.ts → compression/streaming-compress.d.ts} +2 -2
  17. package/dist/browser/modules/archive/{streaming-compress.js → compression/streaming-compress.js} +2 -2
  18. package/dist/browser/modules/archive/defaults.d.ts +1 -0
  19. package/dist/browser/modules/archive/defaults.js +6 -3
  20. package/dist/browser/modules/archive/index.base.d.ts +4 -4
  21. package/dist/browser/modules/archive/index.base.js +3 -6
  22. package/dist/browser/modules/archive/index.browser.d.ts +3 -4
  23. package/dist/browser/modules/archive/index.browser.js +3 -7
  24. package/dist/browser/modules/archive/index.d.ts +3 -4
  25. package/dist/browser/modules/archive/index.js +3 -5
  26. package/dist/browser/modules/archive/internal/byte-queue.d.ts +33 -0
  27. package/dist/browser/modules/archive/internal/byte-queue.js +407 -0
  28. package/dist/browser/modules/archive/io/archive-sink.d.ts +8 -0
  29. package/dist/browser/modules/archive/io/archive-sink.js +45 -0
  30. package/dist/browser/modules/archive/io/archive-source.d.ts +6 -0
  31. package/dist/browser/modules/archive/io/archive-source.js +100 -0
  32. package/dist/browser/modules/archive/{extract.d.ts → unzip/extract.d.ts} +2 -2
  33. package/dist/browser/modules/archive/unzip/index.d.ts +40 -0
  34. package/dist/browser/modules/archive/unzip/index.js +164 -0
  35. package/dist/browser/modules/archive/{parse.base.d.ts → unzip/stream.base.d.ts} +58 -3
  36. package/dist/browser/modules/archive/unzip/stream.base.js +1022 -0
  37. package/dist/browser/modules/archive/{parse.browser.d.ts → unzip/stream.browser.d.ts} +1 -1
  38. package/dist/browser/modules/archive/{parse.browser.js → unzip/stream.browser.js} +376 -110
  39. package/dist/browser/modules/archive/{parse.d.ts → unzip/stream.d.ts} +2 -2
  40. package/dist/{esm/modules/archive/parse.js → browser/modules/archive/unzip/stream.js} +7 -6
  41. package/dist/{types/modules/archive → browser/modules/archive/unzip}/zip-parser.d.ts +1 -1
  42. package/dist/{esm/modules/archive → browser/modules/archive/unzip}/zip-parser.js +38 -24
  43. package/dist/browser/modules/archive/utils/async-queue.d.ts +7 -0
  44. package/dist/browser/modules/archive/utils/async-queue.js +103 -0
  45. package/dist/browser/modules/archive/utils/bytes.js +16 -16
  46. package/dist/browser/modules/archive/utils/compressibility.d.ts +10 -0
  47. package/dist/browser/modules/archive/utils/compressibility.js +57 -0
  48. package/dist/browser/modules/archive/utils/parse-buffer.js +21 -23
  49. package/dist/browser/modules/archive/utils/pattern-scanner.d.ts +21 -0
  50. package/dist/browser/modules/archive/utils/pattern-scanner.js +27 -0
  51. package/dist/browser/modules/archive/utils/timestamps.js +62 -1
  52. package/dist/browser/modules/archive/utils/zip-extra-fields.d.ts +1 -1
  53. package/dist/browser/modules/archive/utils/zip-extra-fields.js +26 -14
  54. package/dist/browser/modules/archive/zip/index.d.ts +42 -0
  55. package/dist/browser/modules/archive/zip/index.js +157 -0
  56. package/dist/browser/modules/archive/{streaming-zip.d.ts → zip/stream.d.ts} +28 -5
  57. package/dist/browser/modules/archive/{streaming-zip.js → zip/stream.js} +192 -48
  58. package/dist/browser/modules/archive/zip/zip-bytes.d.ts +73 -0
  59. package/dist/browser/modules/archive/zip/zip-bytes.js +239 -0
  60. package/dist/{esm/modules/archive → browser/modules/archive/zip}/zip-entry-metadata.js +3 -3
  61. package/dist/browser/modules/archive/{zip-records.d.ts → zip-spec/zip-records.d.ts} +20 -0
  62. package/dist/browser/modules/archive/zip-spec/zip-records.js +126 -0
  63. package/dist/browser/modules/excel/form-control.d.ts +2 -0
  64. package/dist/browser/modules/excel/form-control.js +54 -16
  65. package/dist/browser/modules/excel/stream/workbook-reader.browser.js +1 -1
  66. package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +1 -1
  67. package/dist/browser/modules/excel/stream/workbook-writer.browser.js +1 -1
  68. package/dist/browser/modules/excel/utils/ooxml-validator.d.ts +48 -0
  69. package/dist/browser/modules/excel/utils/ooxml-validator.js +469 -0
  70. package/dist/browser/modules/excel/worksheet.js +5 -2
  71. package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -0
  72. package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
  73. package/dist/browser/modules/excel/xlsx/xform/drawing/sp-xform.d.ts +18 -0
  74. package/dist/browser/modules/excel/xlsx/xform/drawing/sp-xform.js +112 -0
  75. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +6 -1
  76. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
  77. package/dist/browser/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
  78. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -0
  79. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
  80. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +117 -5
  81. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +3 -6
  82. package/dist/browser/modules/excel/xlsx/xlsx.js +1 -1
  83. package/dist/browser/modules/stream/base-transform.d.ts +3 -0
  84. package/dist/browser/modules/stream/base-transform.js +34 -20
  85. package/dist/browser/modules/stream/buffered-stream.d.ts +2 -12
  86. package/dist/browser/modules/stream/chunked-builder.js +4 -4
  87. package/dist/browser/modules/stream/index.browser.d.ts +13 -19
  88. package/dist/browser/modules/stream/index.browser.js +10 -22
  89. package/dist/browser/modules/stream/index.d.ts +18 -41
  90. package/dist/browser/modules/stream/index.js +15 -44
  91. package/dist/browser/modules/stream/internal/event-utils.d.ts +17 -0
  92. package/dist/browser/modules/stream/internal/event-utils.js +40 -0
  93. package/dist/browser/modules/stream/internal/type-guards.d.ts +9 -0
  94. package/dist/browser/modules/stream/internal/type-guards.js +24 -0
  95. package/dist/browser/modules/stream/pull-stream.d.ts +5 -6
  96. package/dist/browser/modules/stream/pull-stream.js +107 -43
  97. package/dist/browser/modules/stream/shared.d.ts +1 -1
  98. package/dist/browser/modules/stream/shared.js +7 -4
  99. package/dist/browser/modules/stream/streams.browser.d.ts +32 -42
  100. package/dist/browser/modules/stream/streams.browser.js +941 -823
  101. package/dist/browser/modules/stream/streams.d.ts +4 -20
  102. package/dist/browser/modules/stream/streams.js +146 -95
  103. package/dist/browser/modules/stream/utils.js +5 -38
  104. package/dist/cjs/modules/archive/{compress.base.js → compression/compress.base.js} +2 -1
  105. package/dist/cjs/modules/archive/{compress.browser.js → compression/compress.browser.js} +18 -19
  106. package/dist/cjs/modules/archive/{compress.js → compression/compress.js} +1 -1
  107. package/dist/cjs/modules/archive/{crc32.js → compression/crc32.js} +1 -1
  108. package/dist/cjs/modules/archive/{deflate-fallback.js → compression/deflate-fallback.js} +1 -1
  109. package/dist/cjs/modules/archive/{streaming-compress.browser.js → compression/streaming-compress.browser.js} +3 -3
  110. package/dist/cjs/modules/archive/{streaming-compress.js → compression/streaming-compress.js} +2 -2
  111. package/dist/cjs/modules/archive/defaults.js +7 -4
  112. package/dist/cjs/modules/archive/index.base.js +9 -19
  113. package/dist/cjs/modules/archive/index.browser.js +4 -10
  114. package/dist/cjs/modules/archive/index.js +4 -8
  115. package/dist/cjs/modules/archive/internal/byte-queue.js +411 -0
  116. package/dist/cjs/modules/archive/io/archive-sink.js +49 -0
  117. package/dist/cjs/modules/archive/io/archive-source.js +105 -0
  118. package/dist/cjs/modules/archive/unzip/index.js +170 -0
  119. package/dist/cjs/modules/archive/unzip/stream.base.js +1044 -0
  120. package/dist/cjs/modules/archive/{parse.browser.js → unzip/stream.browser.js} +377 -111
  121. package/dist/cjs/modules/archive/{parse.js → unzip/stream.js} +9 -8
  122. package/dist/cjs/modules/archive/{zip-parser.js → unzip/zip-parser.js} +47 -33
  123. package/dist/cjs/modules/archive/utils/async-queue.js +106 -0
  124. package/dist/cjs/modules/archive/utils/bytes.js +16 -16
  125. package/dist/cjs/modules/archive/utils/compressibility.js +60 -0
  126. package/dist/cjs/modules/archive/utils/parse-buffer.js +21 -23
  127. package/dist/cjs/modules/archive/utils/pattern-scanner.js +31 -0
  128. package/dist/cjs/modules/archive/utils/timestamps.js +64 -3
  129. package/dist/cjs/modules/archive/utils/zip-extra-fields.js +26 -14
  130. package/dist/cjs/modules/archive/zip/index.js +162 -0
  131. package/dist/cjs/modules/archive/{streaming-zip.js → zip/stream.js} +194 -50
  132. package/dist/cjs/modules/archive/zip/zip-bytes.js +242 -0
  133. package/dist/cjs/modules/archive/{zip-entry-metadata.js → zip/zip-entry-metadata.js} +5 -5
  134. package/dist/cjs/modules/archive/zip-spec/zip-records.js +136 -0
  135. package/dist/cjs/modules/excel/form-control.js +54 -16
  136. package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +2 -2
  137. package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +4 -4
  138. package/dist/cjs/modules/excel/utils/ooxml-validator.js +475 -0
  139. package/dist/cjs/modules/excel/worksheet.js +5 -2
  140. package/dist/cjs/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
  141. package/dist/cjs/modules/excel/xlsx/xform/drawing/sp-xform.js +115 -0
  142. package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
  143. package/dist/cjs/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
  144. package/dist/cjs/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
  145. package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +117 -5
  146. package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +6 -9
  147. package/dist/cjs/modules/excel/xlsx/xlsx.js +2 -2
  148. package/dist/cjs/modules/stream/base-transform.js +34 -20
  149. package/dist/cjs/modules/stream/chunked-builder.js +4 -4
  150. package/dist/cjs/modules/stream/index.browser.js +10 -17
  151. package/dist/cjs/modules/stream/index.js +15 -39
  152. package/dist/cjs/modules/stream/internal/event-utils.js +43 -0
  153. package/dist/cjs/modules/stream/internal/type-guards.js +30 -0
  154. package/dist/cjs/modules/stream/pull-stream.js +107 -43
  155. package/dist/cjs/modules/stream/shared.js +7 -4
  156. package/dist/cjs/modules/stream/streams.browser.js +947 -834
  157. package/dist/cjs/modules/stream/streams.js +156 -107
  158. package/dist/cjs/modules/stream/utils.js +3 -36
  159. package/dist/esm/index.browser.js +12 -0
  160. package/dist/esm/modules/archive/{compress.base.js → compression/compress.base.js} +2 -1
  161. package/dist/{browser/modules/archive → esm/modules/archive/compression}/compress.browser.js +18 -19
  162. package/dist/esm/modules/archive/{compress.js → compression/compress.js} +1 -1
  163. package/dist/esm/modules/archive/{crc32.js → compression/crc32.js} +1 -1
  164. package/dist/esm/modules/archive/{deflate-fallback.js → compression/deflate-fallback.js} +1 -1
  165. package/dist/esm/modules/archive/{streaming-compress.browser.js → compression/streaming-compress.browser.js} +3 -3
  166. package/dist/esm/modules/archive/{streaming-compress.js → compression/streaming-compress.js} +2 -2
  167. package/dist/esm/modules/archive/defaults.js +6 -3
  168. package/dist/esm/modules/archive/index.base.js +3 -6
  169. package/dist/esm/modules/archive/index.browser.js +3 -7
  170. package/dist/esm/modules/archive/index.js +3 -5
  171. package/dist/esm/modules/archive/internal/byte-queue.js +407 -0
  172. package/dist/esm/modules/archive/io/archive-sink.js +45 -0
  173. package/dist/esm/modules/archive/io/archive-source.js +100 -0
  174. package/dist/esm/modules/archive/unzip/index.js +164 -0
  175. package/dist/esm/modules/archive/unzip/stream.base.js +1022 -0
  176. package/dist/esm/modules/archive/{parse.browser.js → unzip/stream.browser.js} +376 -110
  177. package/dist/{browser/modules/archive/parse.js → esm/modules/archive/unzip/stream.js} +7 -6
  178. package/dist/{browser/modules/archive → esm/modules/archive/unzip}/zip-parser.js +38 -24
  179. package/dist/esm/modules/archive/utils/async-queue.js +103 -0
  180. package/dist/esm/modules/archive/utils/bytes.js +16 -16
  181. package/dist/esm/modules/archive/utils/compressibility.js +57 -0
  182. package/dist/esm/modules/archive/utils/parse-buffer.js +21 -23
  183. package/dist/esm/modules/archive/utils/pattern-scanner.js +27 -0
  184. package/dist/esm/modules/archive/utils/timestamps.js +62 -1
  185. package/dist/esm/modules/archive/utils/zip-extra-fields.js +26 -14
  186. package/dist/esm/modules/archive/zip/index.js +157 -0
  187. package/dist/esm/modules/archive/{streaming-zip.js → zip/stream.js} +192 -48
  188. package/dist/esm/modules/archive/zip/zip-bytes.js +239 -0
  189. package/dist/{browser/modules/archive → esm/modules/archive/zip}/zip-entry-metadata.js +3 -3
  190. package/dist/esm/modules/archive/zip-spec/zip-records.js +126 -0
  191. package/dist/esm/modules/excel/form-control.js +54 -16
  192. package/dist/esm/modules/excel/stream/workbook-reader.browser.js +1 -1
  193. package/dist/esm/modules/excel/stream/workbook-writer.browser.js +1 -1
  194. package/dist/esm/modules/excel/utils/ooxml-validator.js +469 -0
  195. package/dist/esm/modules/excel/worksheet.js +5 -2
  196. package/dist/esm/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
  197. package/dist/esm/modules/excel/xlsx/xform/drawing/sp-xform.js +112 -0
  198. package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
  199. package/dist/esm/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
  200. package/dist/esm/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
  201. package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +117 -5
  202. package/dist/esm/modules/excel/xlsx/xlsx.browser.js +3 -6
  203. package/dist/esm/modules/excel/xlsx/xlsx.js +1 -1
  204. package/dist/esm/modules/stream/base-transform.js +34 -20
  205. package/dist/esm/modules/stream/chunked-builder.js +4 -4
  206. package/dist/esm/modules/stream/index.browser.js +10 -22
  207. package/dist/esm/modules/stream/index.js +15 -44
  208. package/dist/esm/modules/stream/internal/event-utils.js +40 -0
  209. package/dist/esm/modules/stream/internal/type-guards.js +24 -0
  210. package/dist/esm/modules/stream/pull-stream.js +107 -43
  211. package/dist/esm/modules/stream/shared.js +7 -4
  212. package/dist/esm/modules/stream/streams.browser.js +941 -823
  213. package/dist/esm/modules/stream/streams.js +146 -95
  214. package/dist/esm/modules/stream/utils.js +5 -38
  215. package/dist/iife/THIRD_PARTY_NOTICES.md +81 -0
  216. package/dist/iife/excelts.iife.js +4979 -2800
  217. package/dist/iife/excelts.iife.js.map +1 -1
  218. package/dist/iife/excelts.iife.min.js +103 -31
  219. package/dist/types/index.browser.d.ts +1 -0
  220. package/dist/{browser/modules/archive → types/modules/archive/compression}/compress.base.d.ts +1 -0
  221. package/dist/{browser/modules/archive → types/modules/archive/compression}/compress.browser.d.ts +10 -8
  222. package/dist/types/modules/archive/{streaming-compress.browser.d.ts → compression/streaming-compress.browser.d.ts} +1 -1
  223. package/dist/types/modules/archive/defaults.d.ts +1 -0
  224. package/dist/types/modules/archive/index.base.d.ts +4 -4
  225. package/dist/types/modules/archive/index.browser.d.ts +3 -4
  226. package/dist/types/modules/archive/index.d.ts +3 -4
  227. package/dist/types/modules/archive/internal/byte-queue.d.ts +33 -0
  228. package/dist/types/modules/archive/io/archive-sink.d.ts +8 -0
  229. package/dist/types/modules/archive/io/archive-source.d.ts +6 -0
  230. package/dist/types/modules/archive/unzip/index.d.ts +40 -0
  231. package/dist/types/modules/archive/{parse.base.d.ts → unzip/stream.base.d.ts} +60 -5
  232. package/dist/types/modules/archive/{parse.browser.d.ts → unzip/stream.browser.d.ts} +2 -2
  233. package/dist/types/modules/archive/{parse.d.ts → unzip/stream.d.ts} +3 -3
  234. package/dist/{browser/modules/archive → types/modules/archive/unzip}/zip-parser.d.ts +1 -1
  235. package/dist/types/modules/archive/utils/async-queue.d.ts +7 -0
  236. package/dist/types/modules/archive/utils/compressibility.d.ts +10 -0
  237. package/dist/types/modules/archive/utils/pattern-scanner.d.ts +21 -0
  238. package/dist/types/modules/archive/utils/zip-extra-fields.d.ts +1 -1
  239. package/dist/types/modules/archive/zip/index.d.ts +42 -0
  240. package/dist/types/modules/archive/{streaming-zip.d.ts → zip/stream.d.ts} +29 -6
  241. package/dist/types/modules/archive/zip/zip-bytes.d.ts +73 -0
  242. package/dist/types/modules/archive/{zip-entry-metadata.d.ts → zip/zip-entry-metadata.d.ts} +1 -1
  243. package/dist/types/modules/archive/{zip-records.d.ts → zip-spec/zip-records.d.ts} +20 -0
  244. package/dist/types/modules/excel/form-control.d.ts +2 -0
  245. package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +1 -1
  246. package/dist/types/modules/excel/utils/ooxml-validator.d.ts +48 -0
  247. package/dist/types/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -0
  248. package/dist/types/modules/excel/xlsx/xform/drawing/sp-xform.d.ts +18 -0
  249. package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +6 -1
  250. package/dist/types/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -0
  251. package/dist/types/modules/stream/base-transform.d.ts +3 -0
  252. package/dist/types/modules/stream/buffered-stream.d.ts +2 -12
  253. package/dist/types/modules/stream/index.browser.d.ts +13 -19
  254. package/dist/types/modules/stream/index.d.ts +18 -41
  255. package/dist/types/modules/stream/internal/event-utils.d.ts +17 -0
  256. package/dist/types/modules/stream/internal/type-guards.d.ts +9 -0
  257. package/dist/types/modules/stream/pull-stream.d.ts +5 -6
  258. package/dist/types/modules/stream/shared.d.ts +1 -1
  259. package/dist/types/modules/stream/streams.browser.d.ts +32 -42
  260. package/dist/types/modules/stream/streams.d.ts +4 -20
  261. package/package.json +19 -15
  262. package/dist/browser/modules/archive/byte-queue.d.ts +0 -18
  263. package/dist/browser/modules/archive/byte-queue.js +0 -125
  264. package/dist/browser/modules/archive/parse.base.js +0 -610
  265. package/dist/browser/modules/archive/utils/zip-extra.d.ts +0 -18
  266. package/dist/browser/modules/archive/utils/zip-extra.js +0 -68
  267. package/dist/browser/modules/archive/zip-builder.d.ts +0 -117
  268. package/dist/browser/modules/archive/zip-builder.js +0 -292
  269. package/dist/browser/modules/archive/zip-constants.d.ts +0 -18
  270. package/dist/browser/modules/archive/zip-constants.js +0 -23
  271. package/dist/browser/modules/archive/zip-records.js +0 -84
  272. package/dist/cjs/modules/archive/byte-queue.js +0 -129
  273. package/dist/cjs/modules/archive/parse.base.js +0 -632
  274. package/dist/cjs/modules/archive/utils/zip-extra.js +0 -74
  275. package/dist/cjs/modules/archive/zip-builder.js +0 -297
  276. package/dist/cjs/modules/archive/zip-constants.js +0 -26
  277. package/dist/cjs/modules/archive/zip-records.js +0 -90
  278. package/dist/esm/modules/archive/byte-queue.js +0 -125
  279. package/dist/esm/modules/archive/parse.base.js +0 -610
  280. package/dist/esm/modules/archive/utils/zip-extra.js +0 -68
  281. package/dist/esm/modules/archive/zip-builder.js +0 -292
  282. package/dist/esm/modules/archive/zip-constants.js +0 -23
  283. package/dist/esm/modules/archive/zip-records.js +0 -84
  284. package/dist/types/modules/archive/byte-queue.d.ts +0 -18
  285. package/dist/types/modules/archive/utils/zip-extra.d.ts +0 -18
  286. package/dist/types/modules/archive/zip-builder.d.ts +0 -117
  287. package/dist/types/modules/archive/zip-constants.d.ts +0 -18
  288. /package/dist/browser/modules/archive/{crc32.base.d.ts → compression/crc32.base.d.ts} +0 -0
  289. /package/dist/browser/modules/archive/{crc32.base.js → compression/crc32.base.js} +0 -0
  290. /package/dist/browser/modules/archive/{crc32.browser.js → compression/crc32.browser.js} +0 -0
  291. /package/dist/browser/modules/archive/{deflate-fallback.d.ts → compression/deflate-fallback.d.ts} +0 -0
  292. /package/dist/browser/modules/archive/{streaming-compress.base.d.ts → compression/streaming-compress.base.d.ts} +0 -0
  293. /package/dist/browser/modules/archive/{streaming-compress.base.js → compression/streaming-compress.base.js} +0 -0
  294. /package/dist/browser/modules/archive/{extract.js → unzip/extract.js} +0 -0
  295. /package/dist/browser/modules/archive/{zip-entry-metadata.d.ts → zip/zip-entry-metadata.d.ts} +0 -0
  296. /package/dist/browser/modules/archive/{zip-entry-info.d.ts → zip-spec/zip-entry-info.d.ts} +0 -0
  297. /package/dist/browser/modules/archive/{zip-entry-info.js → zip-spec/zip-entry-info.js} +0 -0
  298. /package/dist/cjs/modules/archive/{crc32.base.js → compression/crc32.base.js} +0 -0
  299. /package/dist/cjs/modules/archive/{crc32.browser.js → compression/crc32.browser.js} +0 -0
  300. /package/dist/cjs/modules/archive/{streaming-compress.base.js → compression/streaming-compress.base.js} +0 -0
  301. /package/dist/cjs/modules/archive/{extract.js → unzip/extract.js} +0 -0
  302. /package/dist/cjs/modules/archive/{zip-entry-info.js → zip-spec/zip-entry-info.js} +0 -0
  303. /package/dist/esm/modules/archive/{crc32.base.js → compression/crc32.base.js} +0 -0
  304. /package/dist/esm/modules/archive/{crc32.browser.js → compression/crc32.browser.js} +0 -0
  305. /package/dist/esm/modules/archive/{streaming-compress.base.js → compression/streaming-compress.base.js} +0 -0
  306. /package/dist/esm/modules/archive/{extract.js → unzip/extract.js} +0 -0
  307. /package/dist/esm/modules/archive/{zip-entry-info.js → zip-spec/zip-entry-info.js} +0 -0
  308. /package/dist/{LICENSE → iife/LICENSE} +0 -0
  309. /package/dist/types/modules/archive/{compress.d.ts → compression/compress.d.ts} +0 -0
  310. /package/dist/types/modules/archive/{crc32.base.d.ts → compression/crc32.base.d.ts} +0 -0
  311. /package/dist/types/modules/archive/{crc32.browser.d.ts → compression/crc32.browser.d.ts} +0 -0
  312. /package/dist/types/modules/archive/{crc32.d.ts → compression/crc32.d.ts} +0 -0
  313. /package/dist/types/modules/archive/{deflate-fallback.d.ts → compression/deflate-fallback.d.ts} +0 -0
  314. /package/dist/types/modules/archive/{streaming-compress.base.d.ts → compression/streaming-compress.base.d.ts} +0 -0
  315. /package/dist/types/modules/archive/{streaming-compress.d.ts → compression/streaming-compress.d.ts} +0 -0
  316. /package/dist/types/modules/archive/{extract.d.ts → unzip/extract.d.ts} +0 -0
  317. /package/dist/types/modules/archive/{zip-entry-info.d.ts → zip-spec/zip-entry-info.d.ts} +0 -0
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ /**
3
+ * ZIP file format encoder (single-buffer output)
4
+ *
5
+ * Implements ZIP file structure according to PKWARE's APPNOTE.TXT specification
6
+ * https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
7
+ *
8
+ * This module focuses on producing a complete ZIP as a single Uint8Array.
9
+ * For true streaming (push chunks while reading sources), use `zip()` / `ZipArchive.stream()`.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.createZip = createZip;
13
+ exports.createZipSync = createZipSync;
14
+ const compress_1 = require("../compression/compress.js");
15
+ const crc32_1 = require("../compression/crc32.js");
16
+ const defaults_1 = require("../defaults.js");
17
+ const compressibility_1 = require("../utils/compressibility.js");
18
+ const text_1 = require("../utils/text.js");
19
+ const zip_entry_metadata_1 = require("./zip-entry-metadata.js");
20
+ const zip_records_1 = require("../zip-spec/zip-records.js");
21
+ const REPRODUCIBLE_ZIP_MOD_TIME = new Date(1980, 0, 1, 0, 0, 0);
22
+ function encodeZipComment(comment) {
23
+ // Keep empty comment as empty bytes (no encoding surprises).
24
+ return comment ? (0, text_1.encodeUtf8)(comment) : new Uint8Array(0);
25
+ }
26
+ function shouldDeflate(level, data) {
27
+ return level > 0 && data.length > 0;
28
+ }
29
+ async function compressEntryMaybe(entry, level, compressOptions, smartStore) {
30
+ if (!shouldDeflate(level, entry.data)) {
31
+ return { compressedData: entry.data, deflate: false };
32
+ }
33
+ if (!smartStore) {
34
+ const compressed = await (0, compress_1.compress)(entry.data, compressOptions);
35
+ return { compressedData: compressed, deflate: true };
36
+ }
37
+ // Heuristic: skip deflate for high-entropy inputs.
38
+ if ((0, compressibility_1.isProbablyIncompressible)(entry.data)) {
39
+ return { compressedData: entry.data, deflate: false };
40
+ }
41
+ const compressed = await (0, compress_1.compress)(entry.data, compressOptions);
42
+ if (compressed.length >= entry.data.length) {
43
+ return { compressedData: entry.data, deflate: false };
44
+ }
45
+ return { compressedData: compressed, deflate: true };
46
+ }
47
+ function compressEntryMaybeSync(entry, level, compressOptions, smartStore) {
48
+ if (!shouldDeflate(level, entry.data)) {
49
+ return { compressedData: entry.data, deflate: false };
50
+ }
51
+ if (!smartStore) {
52
+ const compressed = (0, compress_1.compressSync)(entry.data, compressOptions);
53
+ return { compressedData: compressed, deflate: true };
54
+ }
55
+ if ((0, compressibility_1.isProbablyIncompressible)(entry.data)) {
56
+ return { compressedData: entry.data, deflate: false };
57
+ }
58
+ const compressed = (0, compress_1.compressSync)(entry.data, compressOptions);
59
+ if (compressed.length >= entry.data.length) {
60
+ return { compressedData: entry.data, deflate: false };
61
+ }
62
+ return { compressedData: compressed, deflate: true };
63
+ }
64
+ function computeLocalRecordSize(entry) {
65
+ return (zip_records_1.ZIP_LOCAL_FILE_HEADER_FIXED_SIZE +
66
+ entry.name.length +
67
+ entry.extraField.length +
68
+ entry.compressedData.length);
69
+ }
70
+ function computeCentralDirHeaderSize(entry) {
71
+ return (zip_records_1.ZIP_CENTRAL_DIR_HEADER_FIXED_SIZE +
72
+ entry.name.length +
73
+ entry.extraField.length +
74
+ entry.comment.length);
75
+ }
76
+ function buildProcessedEntry(entry, offset, settings, compressedData, deflate) {
77
+ const modDate = entry.modTime ?? settings.defaultModTime;
78
+ const metadata = (0, zip_entry_metadata_1.buildZipEntryMetadata)({
79
+ name: entry.name,
80
+ comment: entry.comment,
81
+ modTime: modDate,
82
+ timestamps: settings.timestamps,
83
+ useDataDescriptor: false,
84
+ deflate
85
+ });
86
+ return {
87
+ name: metadata.nameBytes,
88
+ uncompressedSize: entry.data.length,
89
+ compressedData,
90
+ crc: (0, crc32_1.crc32)(entry.data),
91
+ compressionMethod: (0, zip_entry_metadata_1.resolveZipCompressionMethod)(deflate),
92
+ modTime: metadata.dosTime,
93
+ modDate: metadata.dosDate,
94
+ extraField: metadata.extraField,
95
+ comment: metadata.commentBytes,
96
+ offset
97
+ };
98
+ }
99
+ function appendProcessedEntry(processedEntries, entry, compressedData, deflate, currentOffset, settings) {
100
+ const processedEntry = buildProcessedEntry(entry, currentOffset, settings, compressedData, deflate);
101
+ processedEntries.push(processedEntry);
102
+ return {
103
+ processedEntry,
104
+ nextOffset: currentOffset + computeLocalRecordSize(processedEntry)
105
+ };
106
+ }
107
+ function finalizeZip(processedEntries, zipComment) {
108
+ // Assemble ZIP into a single buffer to reduce allocations and copying.
109
+ let localSectionSize = 0;
110
+ let centralDirSize = 0;
111
+ for (const entry of processedEntries) {
112
+ localSectionSize += computeLocalRecordSize(entry);
113
+ centralDirSize += computeCentralDirHeaderSize(entry);
114
+ }
115
+ // The central directory should start immediately after local section.
116
+ const centralDirOffset = localSectionSize;
117
+ const totalSize = localSectionSize + centralDirSize + zip_records_1.ZIP_END_OF_CENTRAL_DIR_FIXED_SIZE + zipComment.length;
118
+ const out = new Uint8Array(totalSize);
119
+ const view = new DataView(out.buffer, out.byteOffset, out.byteLength);
120
+ let offset = 0;
121
+ // Local file headers and data
122
+ for (const entry of processedEntries) {
123
+ offset += (0, zip_records_1.writeLocalFileHeaderInto)(out, view, offset, {
124
+ fileName: entry.name,
125
+ extraField: entry.extraField,
126
+ flags: zip_records_1.FLAG_UTF8,
127
+ compressionMethod: entry.compressionMethod,
128
+ dosTime: entry.modTime,
129
+ dosDate: entry.modDate,
130
+ crc32: entry.crc,
131
+ compressedSize: entry.compressedData.length,
132
+ uncompressedSize: entry.uncompressedSize
133
+ });
134
+ out.set(entry.compressedData, offset);
135
+ offset += entry.compressedData.length;
136
+ }
137
+ // Central directory headers
138
+ for (const entry of processedEntries) {
139
+ offset += (0, zip_records_1.writeCentralDirectoryHeaderInto)(out, view, offset, {
140
+ fileName: entry.name,
141
+ extraField: entry.extraField,
142
+ comment: entry.comment,
143
+ flags: zip_records_1.FLAG_UTF8,
144
+ compressionMethod: entry.compressionMethod,
145
+ dosTime: entry.modTime,
146
+ dosDate: entry.modDate,
147
+ crc32: entry.crc,
148
+ compressedSize: entry.compressedData.length,
149
+ uncompressedSize: entry.uncompressedSize,
150
+ localHeaderOffset: entry.offset
151
+ });
152
+ }
153
+ // End of central directory
154
+ (0, zip_records_1.writeEndOfCentralDirectoryInto)(out, view, offset, {
155
+ entryCount: processedEntries.length,
156
+ centralDirSize,
157
+ centralDirOffset,
158
+ comment: zipComment
159
+ });
160
+ return out;
161
+ }
162
+ /**
163
+ * Create a ZIP file from entries (async)
164
+ */
165
+ async function createZip(entries, options = {}) {
166
+ const reproducible = options.reproducible ?? false;
167
+ const level = options.level ?? defaults_1.DEFAULT_ZIP_LEVEL;
168
+ const smartStore = options.smartStore ?? true;
169
+ const concurrency = options.concurrency ?? 4;
170
+ const timestamps = options.timestamps ?? (reproducible ? "dos" : defaults_1.DEFAULT_ZIP_TIMESTAMPS);
171
+ const zipComment = encodeZipComment(options.comment);
172
+ const defaultModTime = options.modTime ?? (reproducible ? REPRODUCIBLE_ZIP_MOD_TIME : new Date());
173
+ const settings = {
174
+ level,
175
+ timestamps,
176
+ defaultModTime
177
+ };
178
+ const thresholdBytes = options.thresholdBytes;
179
+ const limit = Math.max(1, Math.floor(concurrency));
180
+ const processedEntries = new Array(entries.length);
181
+ if (entries.length > 0) {
182
+ let nextIndex = 0;
183
+ const workerCount = Math.min(limit, entries.length);
184
+ const workers = Array.from({ length: workerCount }, async () => {
185
+ while (true) {
186
+ const idx = nextIndex++;
187
+ if (idx >= entries.length) {
188
+ return;
189
+ }
190
+ const entry = entries[idx];
191
+ const entryLevel = entry.level ?? level;
192
+ const compressOptions = {
193
+ level: entryLevel,
194
+ thresholdBytes
195
+ };
196
+ const { compressedData, deflate } = await compressEntryMaybe(entry, entryLevel, compressOptions, smartStore);
197
+ processedEntries[idx] = buildProcessedEntry(entry, 0, settings, compressedData, deflate);
198
+ }
199
+ });
200
+ await Promise.all(workers);
201
+ }
202
+ // Compute offsets in original order.
203
+ let currentOffset = 0;
204
+ for (let i = 0; i < processedEntries.length; i++) {
205
+ const processedEntry = processedEntries[i];
206
+ processedEntry.offset = currentOffset;
207
+ currentOffset += computeLocalRecordSize(processedEntry);
208
+ }
209
+ return finalizeZip(processedEntries, zipComment);
210
+ }
211
+ /**
212
+ * Create a ZIP file from entries (sync)
213
+ *
214
+ * This is supported in both Node.js and browser builds.
215
+ */
216
+ function createZipSync(entries, options = {}) {
217
+ const reproducible = options.reproducible ?? false;
218
+ const level = options.level ?? defaults_1.DEFAULT_ZIP_LEVEL;
219
+ const smartStore = options.smartStore ?? true;
220
+ const timestamps = options.timestamps ?? (reproducible ? "dos" : defaults_1.DEFAULT_ZIP_TIMESTAMPS);
221
+ const zipComment = encodeZipComment(options.comment);
222
+ const defaultModTime = options.modTime ?? (reproducible ? REPRODUCIBLE_ZIP_MOD_TIME : new Date());
223
+ const settings = {
224
+ level,
225
+ timestamps,
226
+ defaultModTime
227
+ };
228
+ const thresholdBytes = options.thresholdBytes;
229
+ const processedEntries = [];
230
+ let currentOffset = 0;
231
+ for (const entry of entries) {
232
+ const entryLevel = entry.level ?? level;
233
+ const compressOptions = {
234
+ level: entryLevel,
235
+ thresholdBytes
236
+ };
237
+ const { compressedData, deflate } = compressEntryMaybeSync(entry, entryLevel, compressOptions, smartStore);
238
+ const result = appendProcessedEntry(processedEntries, entry, compressedData, deflate, currentOffset, settings);
239
+ currentOffset = result.nextOffset;
240
+ }
241
+ return finalizeZip(processedEntries, zipComment);
242
+ }
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveZipCompressionMethod = resolveZipCompressionMethod;
4
4
  exports.resolveZipFlags = resolveZipFlags;
5
5
  exports.buildZipEntryMetadata = buildZipEntryMetadata;
6
- const text_1 = require("./utils/text.js");
7
- const timestamps_1 = require("./utils/timestamps.js");
8
- const zip_constants_1 = require("./zip-constants.js");
6
+ const text_1 = require("../utils/text.js");
7
+ const timestamps_1 = require("../utils/timestamps.js");
8
+ const zip_records_1 = require("../zip-spec/zip-records.js");
9
9
  function resolveZipCompressionMethod(deflate) {
10
- return deflate ? zip_constants_1.COMPRESSION_DEFLATE : zip_constants_1.COMPRESSION_STORE;
10
+ return deflate ? zip_records_1.COMPRESSION_DEFLATE : zip_records_1.COMPRESSION_STORE;
11
11
  }
12
12
  function resolveZipFlags(useDataDescriptor) {
13
- return useDataDescriptor ? zip_constants_1.FLAG_UTF8 | zip_constants_1.FLAG_DATA_DESCRIPTOR : zip_constants_1.FLAG_UTF8;
13
+ return useDataDescriptor ? zip_records_1.FLAG_UTF8 | zip_records_1.FLAG_DATA_DESCRIPTOR : zip_records_1.FLAG_UTF8;
14
14
  }
15
15
  function buildZipEntryMetadata(input) {
16
16
  const nameBytes = (0, text_1.encodeUtf8)(input.name);
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * ZIP record builders (PKWARE APPNOTE)
4
+ *
5
+ * Shared by streaming zip writer and buffer zip builder.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ZIP_END_OF_CENTRAL_DIR_FIXED_SIZE = exports.ZIP_CENTRAL_DIR_HEADER_FIXED_SIZE = exports.ZIP_LOCAL_FILE_HEADER_FIXED_SIZE = exports.UINT32_MAX = exports.UINT16_MAX = exports.FLAG_DATA_DESCRIPTOR = exports.FLAG_UTF8 = exports.COMPRESSION_DEFLATE = exports.COMPRESSION_STORE = exports.VERSION_MADE_BY = exports.VERSION_NEEDED = exports.ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG = exports.ZIP64_END_OF_CENTRAL_DIR_SIG = exports.DATA_DESCRIPTOR_SIG = exports.END_OF_CENTRAL_DIR_SIG = exports.CENTRAL_DIR_HEADER_SIG = exports.LOCAL_FILE_HEADER_SIG = void 0;
9
+ exports.writeLocalFileHeaderInto = writeLocalFileHeaderInto;
10
+ exports.buildLocalFileHeader = buildLocalFileHeader;
11
+ exports.writeCentralDirectoryHeaderInto = writeCentralDirectoryHeaderInto;
12
+ exports.buildCentralDirectoryHeader = buildCentralDirectoryHeader;
13
+ exports.writeEndOfCentralDirectoryInto = writeEndOfCentralDirectoryInto;
14
+ exports.buildEndOfCentralDirectory = buildEndOfCentralDirectory;
15
+ exports.buildDataDescriptor = buildDataDescriptor;
16
+ // =============================================================================
17
+ // ZIP format constants (PKWARE APPNOTE)
18
+ // =============================================================================
19
+ // Signatures
20
+ exports.LOCAL_FILE_HEADER_SIG = 0x04034b50;
21
+ exports.CENTRAL_DIR_HEADER_SIG = 0x02014b50;
22
+ exports.END_OF_CENTRAL_DIR_SIG = 0x06054b50;
23
+ exports.DATA_DESCRIPTOR_SIG = 0x08074b50;
24
+ exports.ZIP64_END_OF_CENTRAL_DIR_SIG = 0x06064b50;
25
+ exports.ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG = 0x07064b50;
26
+ // Versions
27
+ exports.VERSION_NEEDED = 20; // 2.0 - supports DEFLATE
28
+ exports.VERSION_MADE_BY = 20; // 2.0
29
+ // Compression methods
30
+ exports.COMPRESSION_STORE = 0;
31
+ exports.COMPRESSION_DEFLATE = 8;
32
+ // General purpose bit flags
33
+ exports.FLAG_UTF8 = 0x0800;
34
+ exports.FLAG_DATA_DESCRIPTOR = 0x0008;
35
+ // ZIP64 / sentinel sizes
36
+ exports.UINT16_MAX = 0xffff;
37
+ exports.UINT32_MAX = 0xffffffff;
38
+ exports.ZIP_LOCAL_FILE_HEADER_FIXED_SIZE = 30;
39
+ exports.ZIP_CENTRAL_DIR_HEADER_FIXED_SIZE = 46;
40
+ exports.ZIP_END_OF_CENTRAL_DIR_FIXED_SIZE = 22;
41
+ function writeLocalFileHeaderInto(out, view, offset, input) {
42
+ const versionNeeded = input.versionNeeded ?? exports.VERSION_NEEDED;
43
+ view.setUint32(offset + 0, exports.LOCAL_FILE_HEADER_SIG, true);
44
+ view.setUint16(offset + 4, versionNeeded, true);
45
+ view.setUint16(offset + 6, input.flags, true);
46
+ view.setUint16(offset + 8, input.compressionMethod, true);
47
+ view.setUint16(offset + 10, input.dosTime, true);
48
+ view.setUint16(offset + 12, input.dosDate, true);
49
+ view.setUint32(offset + 14, input.crc32, true);
50
+ view.setUint32(offset + 18, input.compressedSize, true);
51
+ view.setUint32(offset + 22, input.uncompressedSize, true);
52
+ view.setUint16(offset + 26, input.fileName.length, true);
53
+ view.setUint16(offset + 28, input.extraField.length, true);
54
+ out.set(input.fileName, offset + exports.ZIP_LOCAL_FILE_HEADER_FIXED_SIZE);
55
+ if (input.extraField.length > 0) {
56
+ out.set(input.extraField, offset + exports.ZIP_LOCAL_FILE_HEADER_FIXED_SIZE + input.fileName.length);
57
+ }
58
+ return exports.ZIP_LOCAL_FILE_HEADER_FIXED_SIZE + input.fileName.length + input.extraField.length;
59
+ }
60
+ function buildLocalFileHeader(input) {
61
+ const header = new Uint8Array(exports.ZIP_LOCAL_FILE_HEADER_FIXED_SIZE + input.fileName.length + input.extraField.length);
62
+ const view = new DataView(header.buffer, header.byteOffset, header.byteLength);
63
+ writeLocalFileHeaderInto(header, view, 0, input);
64
+ return header;
65
+ }
66
+ function writeCentralDirectoryHeaderInto(out, view, offset, input) {
67
+ const versionMadeBy = input.versionMadeBy ?? exports.VERSION_MADE_BY;
68
+ const versionNeeded = input.versionNeeded ?? exports.VERSION_NEEDED;
69
+ const externalAttributes = input.externalAttributes ?? 0;
70
+ view.setUint32(offset + 0, exports.CENTRAL_DIR_HEADER_SIG, true);
71
+ view.setUint16(offset + 4, versionMadeBy, true);
72
+ view.setUint16(offset + 6, versionNeeded, true);
73
+ view.setUint16(offset + 8, input.flags, true);
74
+ view.setUint16(offset + 10, input.compressionMethod, true);
75
+ view.setUint16(offset + 12, input.dosTime, true);
76
+ view.setUint16(offset + 14, input.dosDate, true);
77
+ view.setUint32(offset + 16, input.crc32, true);
78
+ view.setUint32(offset + 20, input.compressedSize, true);
79
+ view.setUint32(offset + 24, input.uncompressedSize, true);
80
+ view.setUint16(offset + 28, input.fileName.length, true);
81
+ view.setUint16(offset + 30, input.extraField.length, true);
82
+ view.setUint16(offset + 32, input.comment.length, true);
83
+ view.setUint16(offset + 34, 0, true); // disk number start
84
+ view.setUint16(offset + 36, 0, true); // internal file attributes
85
+ view.setUint32(offset + 38, externalAttributes, true);
86
+ view.setUint32(offset + 42, input.localHeaderOffset, true);
87
+ out.set(input.fileName, offset + exports.ZIP_CENTRAL_DIR_HEADER_FIXED_SIZE);
88
+ if (input.extraField.length > 0) {
89
+ out.set(input.extraField, offset + exports.ZIP_CENTRAL_DIR_HEADER_FIXED_SIZE + input.fileName.length);
90
+ }
91
+ if (input.comment.length > 0) {
92
+ out.set(input.comment, offset + exports.ZIP_CENTRAL_DIR_HEADER_FIXED_SIZE + input.fileName.length + input.extraField.length);
93
+ }
94
+ return (exports.ZIP_CENTRAL_DIR_HEADER_FIXED_SIZE +
95
+ input.fileName.length +
96
+ input.extraField.length +
97
+ input.comment.length);
98
+ }
99
+ function buildCentralDirectoryHeader(input) {
100
+ const header = new Uint8Array(exports.ZIP_CENTRAL_DIR_HEADER_FIXED_SIZE +
101
+ input.fileName.length +
102
+ input.extraField.length +
103
+ input.comment.length);
104
+ const view = new DataView(header.buffer, header.byteOffset, header.byteLength);
105
+ writeCentralDirectoryHeaderInto(header, view, 0, input);
106
+ return header;
107
+ }
108
+ function writeEndOfCentralDirectoryInto(out, view, offset, input) {
109
+ view.setUint32(offset + 0, exports.END_OF_CENTRAL_DIR_SIG, true);
110
+ view.setUint16(offset + 4, 0, true);
111
+ view.setUint16(offset + 6, 0, true);
112
+ view.setUint16(offset + 8, input.entryCount, true);
113
+ view.setUint16(offset + 10, input.entryCount, true);
114
+ view.setUint32(offset + 12, input.centralDirSize, true);
115
+ view.setUint32(offset + 16, input.centralDirOffset, true);
116
+ view.setUint16(offset + 20, input.comment.length, true);
117
+ if (input.comment.length > 0) {
118
+ out.set(input.comment, offset + exports.ZIP_END_OF_CENTRAL_DIR_FIXED_SIZE);
119
+ }
120
+ return exports.ZIP_END_OF_CENTRAL_DIR_FIXED_SIZE + input.comment.length;
121
+ }
122
+ function buildEndOfCentralDirectory(input) {
123
+ const record = new Uint8Array(exports.ZIP_END_OF_CENTRAL_DIR_FIXED_SIZE + input.comment.length);
124
+ const view = new DataView(record.buffer, record.byteOffset, record.byteLength);
125
+ writeEndOfCentralDirectoryInto(record, view, 0, input);
126
+ return record;
127
+ }
128
+ function buildDataDescriptor(crc32, compressedSize, uncompressedSize) {
129
+ const descriptor = new Uint8Array(16);
130
+ const view = new DataView(descriptor.buffer);
131
+ view.setUint32(0, exports.DATA_DESCRIPTOR_SIG, true);
132
+ view.setUint32(4, crc32, true);
133
+ view.setUint32(8, compressedSize, true);
134
+ view.setUint32(12, uncompressedSize, true);
135
+ return descriptor;
136
+ }
@@ -109,25 +109,63 @@ class FormCheckbox {
109
109
  let tl;
110
110
  let br;
111
111
  if (typeof range === "string") {
112
- // Parse cell reference like "B2" or "B2:D3"
113
- const decoded = col_cache_1.colCache.decode(range);
114
- if ("top" in decoded) {
115
- // It's a range like "B2:D3"
116
- tl = {
117
- col: decoded.left - 1, // Convert to 0-based
118
- colOff: DEFAULT_COL_OFF,
119
- row: decoded.top - 1,
120
- rowOff: DEFAULT_ROW_OFF
121
- };
122
- br = {
123
- col: decoded.right - 1,
124
- colOff: DEFAULT_END_COL_OFF,
125
- row: decoded.bottom - 1,
126
- rowOff: DEFAULT_END_ROW_OFF
127
- };
112
+ // Parse cell reference like "B2" or range like "B2:D3"
113
+ const isRange = range.includes(":");
114
+ if (isRange) {
115
+ const decoded = col_cache_1.colCache.decode(range);
116
+ if ("top" in decoded) {
117
+ // Treat 1-cell ranges (e.g., "J4:J4") as a single cell with default checkbox size.
118
+ if (decoded.left === decoded.right && decoded.top === decoded.bottom) {
119
+ const col = decoded.left - 1;
120
+ const row = decoded.top - 1;
121
+ tl = {
122
+ col,
123
+ colOff: DEFAULT_COL_OFF,
124
+ row,
125
+ rowOff: DEFAULT_ROW_OFF
126
+ };
127
+ br = {
128
+ col: col + 2,
129
+ colOff: DEFAULT_END_COL_OFF,
130
+ row: row + 1,
131
+ rowOff: DEFAULT_END_ROW_OFF
132
+ };
133
+ }
134
+ else {
135
+ // Regular range
136
+ tl = {
137
+ col: decoded.left - 1, // Convert to 0-based
138
+ colOff: DEFAULT_COL_OFF,
139
+ row: decoded.top - 1,
140
+ rowOff: DEFAULT_ROW_OFF
141
+ };
142
+ br = {
143
+ col: decoded.right - 1,
144
+ colOff: DEFAULT_END_COL_OFF,
145
+ row: decoded.bottom - 1,
146
+ rowOff: DEFAULT_END_ROW_OFF
147
+ };
148
+ }
149
+ }
150
+ else {
151
+ // Defensive fallback: if the cache returns an address, treat it like a single-cell ref.
152
+ tl = {
153
+ col: decoded.col - 1,
154
+ colOff: DEFAULT_COL_OFF,
155
+ row: decoded.row - 1,
156
+ rowOff: DEFAULT_ROW_OFF
157
+ };
158
+ br = {
159
+ col: decoded.col + 1,
160
+ colOff: DEFAULT_END_COL_OFF,
161
+ row: decoded.row,
162
+ rowOff: DEFAULT_END_ROW_OFF
163
+ };
164
+ }
128
165
  }
129
166
  else {
130
167
  // Single cell reference - create default size checkbox
168
+ const decoded = col_cache_1.colCache.decodeAddress(range);
131
169
  tl = {
132
170
  col: decoded.col - 1,
133
171
  colOff: DEFAULT_COL_OFF,
@@ -12,7 +12,7 @@
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.WorkbookReader = exports.WorkbookReaderOptionsSchema = exports.WorkbookReaderBase = void 0;
14
14
  const _stream_1 = require("../../stream/index.js");
15
- const parse_1 = require("../../archive/parse.js");
15
+ const stream_1 = require("../../archive/unzip/stream.js");
16
16
  const iterate_stream_1 = require("../utils/iterate-stream.js");
17
17
  const ooxml_paths_1 = require("../utils/ooxml-paths.js");
18
18
  const parse_sax_1 = require("../utils/parse-sax.js");
@@ -359,7 +359,7 @@ class WorkbookReaderBase extends _stream_1.EventEmitter {
359
359
  }
360
360
  }
361
361
  async *_parseEntries(stream) {
362
- const zip = (0, parse_1.createParse)({ forceStream: true });
362
+ const zip = (0, stream_1.createParse)({ forceStream: true });
363
363
  stream.on("error", (err) => zip.emit("error", err));
364
364
  stream.pipe(zip);
365
365
  for await (const entry of (0, iterate_stream_1.iterateStream)(zip)) {
@@ -10,7 +10,7 @@
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.WorkbookWriter = exports.WorkbookWriterOptionsSchema = exports.WorkbookWriterBase = void 0;
13
- const streaming_zip_1 = require("../../archive/streaming-zip.js");
13
+ const stream_1 = require("../../archive/zip/stream.js");
14
14
  const stream_buf_1 = require("../utils/stream-buf.js");
15
15
  const utils_1 = require("../../../utils/utils.js");
16
16
  const rel_type_1 = require("../xlsx/rel-type.js");
@@ -54,7 +54,7 @@ class WorkbookWriterBase {
54
54
  this.commentRefs = [];
55
55
  this._trueStreaming = options.trueStreaming ?? false;
56
56
  // Create Zip instance
57
- this.zip = new streaming_zip_1.Zip((err, data, final) => {
57
+ this.zip = new stream_1.Zip((err, data, final) => {
58
58
  if (err) {
59
59
  this.stream.emit("error", err);
60
60
  }
@@ -88,7 +88,7 @@ class WorkbookWriterBase {
88
88
  bufSize: this._trueStreaming ? 4096 : 65536,
89
89
  batch: !this._trueStreaming
90
90
  });
91
- const zipFile = new streaming_zip_1.ZipDeflate(path, { level: this.compressionLevel });
91
+ const zipFile = new stream_1.ZipDeflate(path, { level: this.compressionLevel });
92
92
  this.zip.add(zipFile);
93
93
  const onData = (chunk) => zipFile.push(chunk);
94
94
  stream.on("data", onData);
@@ -100,7 +100,7 @@ class WorkbookWriterBase {
100
100
  return stream;
101
101
  }
102
102
  _addFile(data, name, base64) {
103
- const zipFile = new streaming_zip_1.ZipDeflate(name, { level: this.compressionLevel });
103
+ const zipFile = new stream_1.ZipDeflate(name, { level: this.compressionLevel });
104
104
  this.zip.add(zipFile);
105
105
  let buffer;
106
106
  if (base64) {