@cj-tech-master/excelts 4.2.1 → 4.2.2-canary.20260115044841.88820eb

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 (331) 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/{esm/modules/archive → browser/modules/archive/compression}/compress.base.js +1 -1
  5. package/dist/{types/modules/archive → browser/modules/archive/compression}/compress.browser.d.ts +2 -8
  6. package/dist/browser/modules/archive/{compress.browser.js → compression/compress.browser.js} +3 -11
  7. package/dist/browser/modules/archive/{compress.d.ts → compression/compress.d.ts} +2 -2
  8. package/dist/{esm/modules/archive → browser/modules/archive/compression}/compress.js +1 -1
  9. package/dist/browser/modules/archive/{crc32.browser.d.ts → compression/crc32.browser.d.ts} +1 -1
  10. package/dist/browser/modules/archive/{crc32.d.ts → compression/crc32.d.ts} +1 -1
  11. package/dist/browser/modules/archive/{crc32.js → compression/crc32.js} +1 -1
  12. package/dist/browser/modules/archive/{deflate-fallback.js → compression/deflate-fallback.js} +1 -1
  13. package/dist/browser/modules/archive/{streaming-compress.browser.d.ts → compression/streaming-compress.browser.d.ts} +2 -2
  14. package/dist/browser/modules/archive/{streaming-compress.browser.js → compression/streaming-compress.browser.js} +3 -3
  15. package/dist/browser/modules/archive/{streaming-compress.d.ts → compression/streaming-compress.d.ts} +2 -2
  16. package/dist/browser/modules/archive/{streaming-compress.js → compression/streaming-compress.js} +2 -2
  17. package/dist/browser/modules/archive/defaults.d.ts +1 -0
  18. package/dist/browser/modules/archive/defaults.js +6 -3
  19. package/dist/browser/modules/archive/index.base.d.ts +4 -4
  20. package/dist/browser/modules/archive/index.base.js +3 -6
  21. package/dist/browser/modules/archive/index.browser.d.ts +3 -4
  22. package/dist/browser/modules/archive/index.browser.js +3 -7
  23. package/dist/browser/modules/archive/index.d.ts +3 -4
  24. package/dist/browser/modules/archive/index.js +3 -5
  25. package/dist/browser/modules/archive/internal/byte-queue.d.ts +33 -0
  26. package/dist/browser/modules/archive/internal/byte-queue.js +407 -0
  27. package/dist/browser/modules/archive/io/archive-sink.d.ts +8 -0
  28. package/dist/browser/modules/archive/io/archive-sink.js +45 -0
  29. package/dist/browser/modules/archive/io/archive-source.d.ts +6 -0
  30. package/dist/browser/modules/archive/io/archive-source.js +100 -0
  31. package/dist/browser/modules/archive/{extract.d.ts → unzip/extract.d.ts} +2 -2
  32. package/dist/browser/modules/archive/unzip/index.d.ts +40 -0
  33. package/dist/browser/modules/archive/unzip/index.js +164 -0
  34. package/dist/browser/modules/archive/{parse.base.d.ts → unzip/stream.base.d.ts} +36 -2
  35. package/dist/browser/modules/archive/unzip/stream.base.js +1022 -0
  36. package/dist/browser/modules/archive/{parse.browser.d.ts → unzip/stream.browser.d.ts} +1 -1
  37. package/dist/browser/modules/archive/{parse.browser.js → unzip/stream.browser.js} +371 -110
  38. package/dist/browser/modules/archive/{parse.d.ts → unzip/stream.d.ts} +2 -2
  39. package/dist/{esm/modules/archive/parse.js → browser/modules/archive/unzip/stream.js} +6 -5
  40. package/dist/browser/modules/archive/{zip-parser.d.ts → unzip/zip-parser.d.ts} +1 -1
  41. package/dist/{esm/modules/archive → browser/modules/archive/unzip}/zip-parser.js +38 -24
  42. package/dist/browser/modules/archive/utils/async-queue.d.ts +7 -0
  43. package/dist/browser/modules/archive/utils/async-queue.js +103 -0
  44. package/dist/browser/modules/archive/utils/bytes.js +16 -16
  45. package/dist/browser/modules/archive/utils/compressibility.d.ts +10 -0
  46. package/dist/browser/modules/archive/utils/compressibility.js +57 -0
  47. package/dist/browser/modules/archive/utils/parse-buffer.js +21 -23
  48. package/dist/browser/modules/archive/utils/pattern-scanner.d.ts +21 -0
  49. package/dist/browser/modules/archive/utils/pattern-scanner.js +27 -0
  50. package/dist/browser/modules/archive/utils/timestamps.js +62 -1
  51. package/dist/browser/modules/archive/utils/zip-extra-fields.d.ts +1 -1
  52. package/dist/browser/modules/archive/utils/zip-extra-fields.js +26 -14
  53. package/dist/browser/modules/archive/zip/index.d.ts +42 -0
  54. package/dist/browser/modules/archive/zip/index.js +157 -0
  55. package/dist/browser/modules/archive/{streaming-zip.d.ts → zip/stream.d.ts} +28 -5
  56. package/dist/browser/modules/archive/{streaming-zip.js → zip/stream.js} +192 -48
  57. package/dist/browser/modules/archive/zip/zip-bytes.d.ts +73 -0
  58. package/dist/browser/modules/archive/zip/zip-bytes.js +239 -0
  59. package/dist/{esm/modules/archive → browser/modules/archive/zip}/zip-entry-metadata.js +3 -3
  60. package/dist/browser/modules/archive/{zip-records.d.ts → zip-spec/zip-records.d.ts} +20 -0
  61. package/dist/browser/modules/archive/zip-spec/zip-records.js +126 -0
  62. package/dist/browser/modules/excel/stream/workbook-reader.browser.js +1 -1
  63. package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +1 -1
  64. package/dist/browser/modules/excel/stream/workbook-writer.browser.js +1 -1
  65. package/dist/browser/modules/excel/utils/ooxml-validator.d.ts +48 -0
  66. package/dist/browser/modules/excel/utils/ooxml-validator.js +469 -0
  67. package/dist/browser/modules/excel/utils/parse-sax.d.ts +3 -0
  68. package/dist/browser/modules/excel/utils/parse-sax.js +32 -13
  69. package/dist/browser/modules/excel/worksheet.js +5 -2
  70. package/dist/browser/modules/excel/xlsx/xform/core/app-xform.js +3 -3
  71. package/dist/browser/modules/excel/xlsx/xform/core/core-xform.js +56 -68
  72. package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -0
  73. package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
  74. package/dist/browser/modules/excel/xlsx/xform/drawing/sp-xform.d.ts +18 -0
  75. package/dist/browser/modules/excel/xlsx/xform/drawing/sp-xform.js +112 -0
  76. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +6 -1
  77. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
  78. package/dist/browser/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
  79. package/dist/browser/modules/excel/xlsx/xform/list-xform.js +8 -10
  80. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -0
  81. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
  82. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +110 -12
  83. package/dist/browser/modules/excel/xlsx/xform/strings/shared-string-xform.js +2 -3
  84. package/dist/browser/modules/excel/xlsx/xform/strings/text-xform.js +5 -7
  85. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +11 -10
  86. package/dist/browser/modules/excel/xlsx/xlsx.js +1 -1
  87. package/dist/browser/modules/stream/base-transform.d.ts +3 -0
  88. package/dist/browser/modules/stream/base-transform.js +34 -20
  89. package/dist/browser/modules/stream/buffered-stream.d.ts +2 -12
  90. package/dist/browser/modules/stream/chunked-builder.js +4 -4
  91. package/dist/browser/modules/stream/index.browser.d.ts +13 -19
  92. package/dist/browser/modules/stream/index.browser.js +10 -22
  93. package/dist/browser/modules/stream/index.d.ts +18 -41
  94. package/dist/browser/modules/stream/index.js +15 -44
  95. package/dist/browser/modules/stream/internal/event-utils.d.ts +17 -0
  96. package/dist/browser/modules/stream/internal/event-utils.js +40 -0
  97. package/dist/browser/modules/stream/internal/type-guards.d.ts +9 -0
  98. package/dist/browser/modules/stream/internal/type-guards.js +24 -0
  99. package/dist/browser/modules/stream/pull-stream.d.ts +5 -6
  100. package/dist/browser/modules/stream/pull-stream.js +107 -43
  101. package/dist/browser/modules/stream/shared.d.ts +1 -1
  102. package/dist/browser/modules/stream/shared.js +7 -4
  103. package/dist/browser/modules/stream/streams.browser.d.ts +32 -44
  104. package/dist/browser/modules/stream/streams.browser.js +921 -836
  105. package/dist/browser/modules/stream/streams.d.ts +4 -20
  106. package/dist/browser/modules/stream/streams.js +146 -95
  107. package/dist/browser/modules/stream/utils.js +5 -38
  108. package/dist/cjs/modules/archive/{compress.base.js → compression/compress.base.js} +1 -1
  109. package/dist/cjs/modules/archive/{compress.browser.js → compression/compress.browser.js} +3 -11
  110. package/dist/cjs/modules/archive/{compress.js → compression/compress.js} +1 -1
  111. package/dist/cjs/modules/archive/{crc32.js → compression/crc32.js} +1 -1
  112. package/dist/cjs/modules/archive/{deflate-fallback.js → compression/deflate-fallback.js} +1 -1
  113. package/dist/cjs/modules/archive/{streaming-compress.browser.js → compression/streaming-compress.browser.js} +3 -3
  114. package/dist/cjs/modules/archive/{streaming-compress.js → compression/streaming-compress.js} +2 -2
  115. package/dist/cjs/modules/archive/defaults.js +7 -4
  116. package/dist/cjs/modules/archive/index.base.js +9 -19
  117. package/dist/cjs/modules/archive/index.browser.js +4 -10
  118. package/dist/cjs/modules/archive/index.js +4 -8
  119. package/dist/cjs/modules/archive/internal/byte-queue.js +411 -0
  120. package/dist/cjs/modules/archive/io/archive-sink.js +49 -0
  121. package/dist/cjs/modules/archive/io/archive-source.js +105 -0
  122. package/dist/cjs/modules/archive/unzip/index.js +170 -0
  123. package/dist/cjs/modules/archive/unzip/stream.base.js +1044 -0
  124. package/dist/cjs/modules/archive/{parse.browser.js → unzip/stream.browser.js} +372 -111
  125. package/dist/cjs/modules/archive/{parse.js → unzip/stream.js} +9 -8
  126. package/dist/cjs/modules/archive/{zip-parser.js → unzip/zip-parser.js} +47 -33
  127. package/dist/cjs/modules/archive/utils/async-queue.js +106 -0
  128. package/dist/cjs/modules/archive/utils/bytes.js +16 -16
  129. package/dist/cjs/modules/archive/utils/compressibility.js +60 -0
  130. package/dist/cjs/modules/archive/utils/parse-buffer.js +21 -23
  131. package/dist/cjs/modules/archive/utils/pattern-scanner.js +31 -0
  132. package/dist/cjs/modules/archive/utils/timestamps.js +64 -3
  133. package/dist/cjs/modules/archive/utils/zip-extra-fields.js +26 -14
  134. package/dist/cjs/modules/archive/zip/index.js +162 -0
  135. package/dist/cjs/modules/archive/{streaming-zip.js → zip/stream.js} +194 -50
  136. package/dist/cjs/modules/archive/zip/zip-bytes.js +242 -0
  137. package/dist/cjs/modules/archive/{zip-entry-metadata.js → zip/zip-entry-metadata.js} +5 -5
  138. package/dist/cjs/modules/archive/zip-spec/zip-records.js +136 -0
  139. package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +2 -2
  140. package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +4 -4
  141. package/dist/cjs/modules/excel/utils/ooxml-validator.js +475 -0
  142. package/dist/cjs/modules/excel/utils/parse-sax.js +32 -13
  143. package/dist/cjs/modules/excel/worksheet.js +5 -2
  144. package/dist/cjs/modules/excel/xlsx/xform/core/app-xform.js +3 -3
  145. package/dist/cjs/modules/excel/xlsx/xform/core/core-xform.js +56 -68
  146. package/dist/cjs/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
  147. package/dist/cjs/modules/excel/xlsx/xform/drawing/sp-xform.js +115 -0
  148. package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
  149. package/dist/cjs/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
  150. package/dist/cjs/modules/excel/xlsx/xform/list-xform.js +8 -10
  151. package/dist/cjs/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
  152. package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +110 -12
  153. package/dist/cjs/modules/excel/xlsx/xform/strings/shared-string-xform.js +2 -3
  154. package/dist/cjs/modules/excel/xlsx/xform/strings/text-xform.js +5 -7
  155. package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +14 -13
  156. package/dist/cjs/modules/excel/xlsx/xlsx.js +2 -2
  157. package/dist/cjs/modules/stream/base-transform.js +34 -20
  158. package/dist/cjs/modules/stream/chunked-builder.js +4 -4
  159. package/dist/cjs/modules/stream/index.browser.js +10 -17
  160. package/dist/cjs/modules/stream/index.js +15 -39
  161. package/dist/cjs/modules/stream/internal/event-utils.js +43 -0
  162. package/dist/cjs/modules/stream/internal/type-guards.js +30 -0
  163. package/dist/cjs/modules/stream/pull-stream.js +107 -43
  164. package/dist/cjs/modules/stream/shared.js +7 -4
  165. package/dist/cjs/modules/stream/streams.browser.js +927 -847
  166. package/dist/cjs/modules/stream/streams.js +156 -107
  167. package/dist/cjs/modules/stream/utils.js +3 -36
  168. package/dist/esm/index.browser.js +12 -0
  169. package/dist/{browser/modules/archive → esm/modules/archive/compression}/compress.base.js +1 -1
  170. package/dist/esm/modules/archive/{compress.browser.js → compression/compress.browser.js} +3 -11
  171. package/dist/{browser/modules/archive → esm/modules/archive/compression}/compress.js +1 -1
  172. package/dist/esm/modules/archive/{crc32.js → compression/crc32.js} +1 -1
  173. package/dist/esm/modules/archive/{deflate-fallback.js → compression/deflate-fallback.js} +1 -1
  174. package/dist/esm/modules/archive/{streaming-compress.browser.js → compression/streaming-compress.browser.js} +3 -3
  175. package/dist/esm/modules/archive/{streaming-compress.js → compression/streaming-compress.js} +2 -2
  176. package/dist/esm/modules/archive/defaults.js +6 -3
  177. package/dist/esm/modules/archive/index.base.js +3 -6
  178. package/dist/esm/modules/archive/index.browser.js +3 -7
  179. package/dist/esm/modules/archive/index.js +3 -5
  180. package/dist/esm/modules/archive/internal/byte-queue.js +407 -0
  181. package/dist/esm/modules/archive/io/archive-sink.js +45 -0
  182. package/dist/esm/modules/archive/io/archive-source.js +100 -0
  183. package/dist/esm/modules/archive/unzip/index.js +164 -0
  184. package/dist/esm/modules/archive/unzip/stream.base.js +1022 -0
  185. package/dist/esm/modules/archive/{parse.browser.js → unzip/stream.browser.js} +371 -110
  186. package/dist/{browser/modules/archive/parse.js → esm/modules/archive/unzip/stream.js} +6 -5
  187. package/dist/{browser/modules/archive → esm/modules/archive/unzip}/zip-parser.js +38 -24
  188. package/dist/esm/modules/archive/utils/async-queue.js +103 -0
  189. package/dist/esm/modules/archive/utils/bytes.js +16 -16
  190. package/dist/esm/modules/archive/utils/compressibility.js +57 -0
  191. package/dist/esm/modules/archive/utils/parse-buffer.js +21 -23
  192. package/dist/esm/modules/archive/utils/pattern-scanner.js +27 -0
  193. package/dist/esm/modules/archive/utils/timestamps.js +62 -1
  194. package/dist/esm/modules/archive/utils/zip-extra-fields.js +26 -14
  195. package/dist/esm/modules/archive/zip/index.js +157 -0
  196. package/dist/esm/modules/archive/{streaming-zip.js → zip/stream.js} +192 -48
  197. package/dist/esm/modules/archive/zip/zip-bytes.js +239 -0
  198. package/dist/{browser/modules/archive → esm/modules/archive/zip}/zip-entry-metadata.js +3 -3
  199. package/dist/esm/modules/archive/zip-spec/zip-records.js +126 -0
  200. package/dist/esm/modules/excel/stream/workbook-reader.browser.js +1 -1
  201. package/dist/esm/modules/excel/stream/workbook-writer.browser.js +1 -1
  202. package/dist/esm/modules/excel/utils/ooxml-validator.js +469 -0
  203. package/dist/esm/modules/excel/utils/parse-sax.js +32 -13
  204. package/dist/esm/modules/excel/worksheet.js +5 -2
  205. package/dist/esm/modules/excel/xlsx/xform/core/app-xform.js +3 -3
  206. package/dist/esm/modules/excel/xlsx/xform/core/core-xform.js +56 -68
  207. package/dist/esm/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
  208. package/dist/esm/modules/excel/xlsx/xform/drawing/sp-xform.js +112 -0
  209. package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
  210. package/dist/esm/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
  211. package/dist/esm/modules/excel/xlsx/xform/list-xform.js +8 -10
  212. package/dist/esm/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
  213. package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +110 -12
  214. package/dist/esm/modules/excel/xlsx/xform/strings/shared-string-xform.js +2 -3
  215. package/dist/esm/modules/excel/xlsx/xform/strings/text-xform.js +5 -7
  216. package/dist/esm/modules/excel/xlsx/xlsx.browser.js +11 -10
  217. package/dist/esm/modules/excel/xlsx/xlsx.js +1 -1
  218. package/dist/esm/modules/stream/base-transform.js +34 -20
  219. package/dist/esm/modules/stream/chunked-builder.js +4 -4
  220. package/dist/esm/modules/stream/index.browser.js +10 -22
  221. package/dist/esm/modules/stream/index.js +15 -44
  222. package/dist/esm/modules/stream/internal/event-utils.js +40 -0
  223. package/dist/esm/modules/stream/internal/type-guards.js +24 -0
  224. package/dist/esm/modules/stream/pull-stream.js +107 -43
  225. package/dist/esm/modules/stream/shared.js +7 -4
  226. package/dist/esm/modules/stream/streams.browser.js +921 -836
  227. package/dist/esm/modules/stream/streams.js +146 -95
  228. package/dist/esm/modules/stream/utils.js +5 -38
  229. package/dist/iife/THIRD_PARTY_NOTICES.md +0 -31
  230. package/dist/iife/excelts.iife.js +6592 -4537
  231. package/dist/iife/excelts.iife.js.map +1 -1
  232. package/dist/iife/excelts.iife.min.js +103 -31
  233. package/dist/types/index.browser.d.ts +1 -0
  234. package/dist/{browser/modules/archive → types/modules/archive/compression}/compress.browser.d.ts +2 -8
  235. package/dist/types/modules/archive/{streaming-compress.browser.d.ts → compression/streaming-compress.browser.d.ts} +1 -1
  236. package/dist/types/modules/archive/defaults.d.ts +1 -0
  237. package/dist/types/modules/archive/index.base.d.ts +4 -4
  238. package/dist/types/modules/archive/index.browser.d.ts +3 -4
  239. package/dist/types/modules/archive/index.d.ts +3 -4
  240. package/dist/types/modules/archive/internal/byte-queue.d.ts +33 -0
  241. package/dist/types/modules/archive/io/archive-sink.d.ts +8 -0
  242. package/dist/types/modules/archive/io/archive-source.d.ts +6 -0
  243. package/dist/types/modules/archive/unzip/index.d.ts +40 -0
  244. package/dist/types/modules/archive/{parse.base.d.ts → unzip/stream.base.d.ts} +38 -4
  245. package/dist/types/modules/archive/{parse.browser.d.ts → unzip/stream.browser.d.ts} +2 -2
  246. package/dist/types/modules/archive/{parse.d.ts → unzip/stream.d.ts} +3 -3
  247. package/dist/types/modules/archive/{zip-parser.d.ts → unzip/zip-parser.d.ts} +1 -1
  248. package/dist/types/modules/archive/utils/async-queue.d.ts +7 -0
  249. package/dist/types/modules/archive/utils/compressibility.d.ts +10 -0
  250. package/dist/types/modules/archive/utils/pattern-scanner.d.ts +21 -0
  251. package/dist/types/modules/archive/utils/zip-extra-fields.d.ts +1 -1
  252. package/dist/types/modules/archive/zip/index.d.ts +42 -0
  253. package/dist/types/modules/archive/{streaming-zip.d.ts → zip/stream.d.ts} +29 -6
  254. package/dist/types/modules/archive/zip/zip-bytes.d.ts +73 -0
  255. package/dist/types/modules/archive/{zip-entry-metadata.d.ts → zip/zip-entry-metadata.d.ts} +1 -1
  256. package/dist/types/modules/archive/{zip-records.d.ts → zip-spec/zip-records.d.ts} +20 -0
  257. package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +1 -1
  258. package/dist/types/modules/excel/utils/ooxml-validator.d.ts +48 -0
  259. package/dist/types/modules/excel/utils/parse-sax.d.ts +3 -0
  260. package/dist/types/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -0
  261. package/dist/types/modules/excel/xlsx/xform/drawing/sp-xform.d.ts +18 -0
  262. package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +6 -1
  263. package/dist/types/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -0
  264. package/dist/types/modules/stream/base-transform.d.ts +3 -0
  265. package/dist/types/modules/stream/buffered-stream.d.ts +2 -12
  266. package/dist/types/modules/stream/index.browser.d.ts +13 -19
  267. package/dist/types/modules/stream/index.d.ts +18 -41
  268. package/dist/types/modules/stream/internal/event-utils.d.ts +17 -0
  269. package/dist/types/modules/stream/internal/type-guards.d.ts +9 -0
  270. package/dist/types/modules/stream/pull-stream.d.ts +5 -6
  271. package/dist/types/modules/stream/shared.d.ts +1 -1
  272. package/dist/types/modules/stream/streams.browser.d.ts +32 -44
  273. package/dist/types/modules/stream/streams.d.ts +4 -20
  274. package/package.json +14 -10
  275. package/dist/browser/modules/archive/byte-queue.d.ts +0 -18
  276. package/dist/browser/modules/archive/byte-queue.js +0 -125
  277. package/dist/browser/modules/archive/parse.base.js +0 -644
  278. package/dist/browser/modules/archive/utils/zip-extra.d.ts +0 -18
  279. package/dist/browser/modules/archive/utils/zip-extra.js +0 -68
  280. package/dist/browser/modules/archive/zip-builder.d.ts +0 -117
  281. package/dist/browser/modules/archive/zip-builder.js +0 -292
  282. package/dist/browser/modules/archive/zip-constants.d.ts +0 -18
  283. package/dist/browser/modules/archive/zip-constants.js +0 -23
  284. package/dist/browser/modules/archive/zip-records.js +0 -84
  285. package/dist/cjs/modules/archive/byte-queue.js +0 -129
  286. package/dist/cjs/modules/archive/parse.base.js +0 -666
  287. package/dist/cjs/modules/archive/utils/zip-extra.js +0 -74
  288. package/dist/cjs/modules/archive/zip-builder.js +0 -297
  289. package/dist/cjs/modules/archive/zip-constants.js +0 -26
  290. package/dist/cjs/modules/archive/zip-records.js +0 -90
  291. package/dist/esm/modules/archive/byte-queue.js +0 -125
  292. package/dist/esm/modules/archive/parse.base.js +0 -644
  293. package/dist/esm/modules/archive/utils/zip-extra.js +0 -68
  294. package/dist/esm/modules/archive/zip-builder.js +0 -292
  295. package/dist/esm/modules/archive/zip-constants.js +0 -23
  296. package/dist/esm/modules/archive/zip-records.js +0 -84
  297. package/dist/types/modules/archive/byte-queue.d.ts +0 -18
  298. package/dist/types/modules/archive/utils/zip-extra.d.ts +0 -18
  299. package/dist/types/modules/archive/zip-builder.d.ts +0 -117
  300. package/dist/types/modules/archive/zip-constants.d.ts +0 -18
  301. /package/dist/browser/modules/archive/{compress.base.d.ts → compression/compress.base.d.ts} +0 -0
  302. /package/dist/browser/modules/archive/{crc32.base.d.ts → compression/crc32.base.d.ts} +0 -0
  303. /package/dist/browser/modules/archive/{crc32.base.js → compression/crc32.base.js} +0 -0
  304. /package/dist/browser/modules/archive/{crc32.browser.js → compression/crc32.browser.js} +0 -0
  305. /package/dist/browser/modules/archive/{deflate-fallback.d.ts → compression/deflate-fallback.d.ts} +0 -0
  306. /package/dist/browser/modules/archive/{streaming-compress.base.d.ts → compression/streaming-compress.base.d.ts} +0 -0
  307. /package/dist/browser/modules/archive/{streaming-compress.base.js → compression/streaming-compress.base.js} +0 -0
  308. /package/dist/browser/modules/archive/{extract.js → unzip/extract.js} +0 -0
  309. /package/dist/browser/modules/archive/{zip-entry-metadata.d.ts → zip/zip-entry-metadata.d.ts} +0 -0
  310. /package/dist/browser/modules/archive/{zip-entry-info.d.ts → zip-spec/zip-entry-info.d.ts} +0 -0
  311. /package/dist/browser/modules/archive/{zip-entry-info.js → zip-spec/zip-entry-info.js} +0 -0
  312. /package/dist/cjs/modules/archive/{crc32.base.js → compression/crc32.base.js} +0 -0
  313. /package/dist/cjs/modules/archive/{crc32.browser.js → compression/crc32.browser.js} +0 -0
  314. /package/dist/cjs/modules/archive/{streaming-compress.base.js → compression/streaming-compress.base.js} +0 -0
  315. /package/dist/cjs/modules/archive/{extract.js → unzip/extract.js} +0 -0
  316. /package/dist/cjs/modules/archive/{zip-entry-info.js → zip-spec/zip-entry-info.js} +0 -0
  317. /package/dist/esm/modules/archive/{crc32.base.js → compression/crc32.base.js} +0 -0
  318. /package/dist/esm/modules/archive/{crc32.browser.js → compression/crc32.browser.js} +0 -0
  319. /package/dist/esm/modules/archive/{streaming-compress.base.js → compression/streaming-compress.base.js} +0 -0
  320. /package/dist/esm/modules/archive/{extract.js → unzip/extract.js} +0 -0
  321. /package/dist/esm/modules/archive/{zip-entry-info.js → zip-spec/zip-entry-info.js} +0 -0
  322. /package/dist/types/modules/archive/{compress.base.d.ts → compression/compress.base.d.ts} +0 -0
  323. /package/dist/types/modules/archive/{compress.d.ts → compression/compress.d.ts} +0 -0
  324. /package/dist/types/modules/archive/{crc32.base.d.ts → compression/crc32.base.d.ts} +0 -0
  325. /package/dist/types/modules/archive/{crc32.browser.d.ts → compression/crc32.browser.d.ts} +0 -0
  326. /package/dist/types/modules/archive/{crc32.d.ts → compression/crc32.d.ts} +0 -0
  327. /package/dist/types/modules/archive/{deflate-fallback.d.ts → compression/deflate-fallback.d.ts} +0 -0
  328. /package/dist/types/modules/archive/{streaming-compress.base.d.ts → compression/streaming-compress.base.d.ts} +0 -0
  329. /package/dist/types/modules/archive/{streaming-compress.d.ts → compression/streaming-compress.d.ts} +0 -0
  330. /package/dist/types/modules/archive/{extract.d.ts → unzip/extract.d.ts} +0 -0
  331. /package/dist/types/modules/archive/{zip-entry-info.d.ts → zip-spec/zip-entry-info.d.ts} +0 -0
@@ -137,6 +137,14 @@ class WorkSheetXform extends BaseXform {
137
137
  options.merges = new Merges();
138
138
  model.hyperlinks = options.hyperlinks = [];
139
139
  model.comments = options.comments = [];
140
+ // Some Excel builds are surprisingly strict when legacy form controls exist.
141
+ // Emitting a default sheetView (workbookViewId=0) matches typical Excel output
142
+ // and avoids relying on optional element handling.
143
+ if (model.formControls && model.formControls.length > 0) {
144
+ if (!model.views || model.views.length === 0) {
145
+ model.views = [{ workbookViewId: 0 }];
146
+ }
147
+ }
140
148
  options.formulae = {};
141
149
  options.siFormulae = 0;
142
150
  this.map.cols.prepare(model.cols, options);
@@ -278,6 +286,23 @@ class WorkSheetXform extends BaseXform {
278
286
  // prepare form controls (legacy checkboxes)
279
287
  // Form controls share the VML file with comments, but need separate ctrlProp relationships
280
288
  if (model.formControls && model.formControls.length > 0) {
289
+ // Ensure a DrawingML drawing part exists for form controls.
290
+ // Excel often repairs sheets that have legacy controls but no <drawing> part.
291
+ let { drawing } = model;
292
+ if (!drawing) {
293
+ drawing = model.drawing = {
294
+ rId: nextRid(rels),
295
+ name: `drawing${++options.drawingsCount}`,
296
+ anchors: [],
297
+ rels: []
298
+ };
299
+ options.drawings.push(drawing);
300
+ rels.push({
301
+ Id: drawing.rId,
302
+ Type: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",
303
+ Target: drawingRelTargetFromWorksheet(drawing.name)
304
+ });
305
+ }
281
306
  // If no comments, we need to add the VML drawing relationship for form controls
282
307
  if (model.comments.length === 0) {
283
308
  rels.push({
@@ -286,6 +311,14 @@ class WorkSheetXform extends BaseXform {
286
311
  Target: vmlDrawingRelTargetFromWorksheet(model.id)
287
312
  });
288
313
  }
314
+ // Add hidden DrawingML shapes that bridge to the VML shape ids.
315
+ // This mirrors what Excel writes when it "repairs" legacy form controls.
316
+ const toNativePos = (p) => ({
317
+ nativeCol: p.col,
318
+ nativeColOff: p.colOff,
319
+ nativeRow: p.row,
320
+ nativeRowOff: p.rowOff
321
+ });
289
322
  // Add ctrlProp relationships for each form control
290
323
  for (const control of model.formControls) {
291
324
  const globalCtrlPropId = options.formControlRefs.length + 1;
@@ -298,6 +331,22 @@ class WorkSheetXform extends BaseXform {
298
331
  Target: ctrlPropRelTargetFromWorksheet(globalCtrlPropId)
299
332
  });
300
333
  options.formControlRefs.push(globalCtrlPropId);
334
+ const defaultName = `Check Box ${Math.max(1, control.shapeId - 1024)}`;
335
+ drawing.anchors.push({
336
+ range: {
337
+ editAs: "absolute",
338
+ tl: toNativePos(control.tl),
339
+ br: toNativePos(control.br)
340
+ },
341
+ alternateContent: { requires: "a14" },
342
+ shape: {
343
+ cNvPrId: control.shapeId,
344
+ name: control.name || defaultName,
345
+ hidden: true,
346
+ spid: `_x0000_s${control.shapeId}`,
347
+ text: control.text
348
+ }
349
+ });
301
350
  }
302
351
  }
303
352
  // prepare ext items
@@ -305,7 +354,14 @@ class WorkSheetXform extends BaseXform {
305
354
  }
306
355
  render(xmlStream, model) {
307
356
  xmlStream.openXml(XmlStream.StdDocAttributes);
308
- xmlStream.openNode("worksheet", WorkSheetXform.WORKSHEET_ATTRIBUTES);
357
+ const worksheetAttrs = { ...WorkSheetXform.WORKSHEET_ATTRIBUTES };
358
+ if (model.formControls && model.formControls.length > 0) {
359
+ worksheetAttrs["xmlns:x14"] = "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main";
360
+ worksheetAttrs["xmlns:xdr"] =
361
+ "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing";
362
+ worksheetAttrs["mc:Ignorable"] = `${worksheetAttrs["mc:Ignorable"]} x14`;
363
+ }
364
+ xmlStream.openNode("worksheet", worksheetAttrs);
309
365
  const sheetFormatPropertiesModel = model.properties
310
366
  ? {
311
367
  defaultRowHeight: model.properties.defaultRowHeight,
@@ -355,26 +411,68 @@ class WorkSheetXform extends BaseXform {
355
411
  this.map.colBreaks.render(xmlStream, model.colBreaks);
356
412
  this.map.drawing.render(xmlStream, model.drawing); // Note: must be after rowBreaks/colBreaks
357
413
  this.map.picture.render(xmlStream, model.background); // Note: must be after drawing
358
- this.map.tableParts.render(xmlStream, model.tables);
414
+ if (model.rels) {
415
+ // Add a <legacyDrawing /> node for each VML drawing relationship (comments and/or form controls).
416
+ // NOTE: Excel is picky about worksheet child element order; legacyDrawing must come before controls.
417
+ model.rels.forEach(rel => {
418
+ if (rel.Type === RelType.VmlDrawing) {
419
+ xmlStream.leafNode("legacyDrawing", { "r:id": rel.Id });
420
+ }
421
+ });
422
+ }
359
423
  // Controls section for legacy form controls (checkboxes, etc.)
360
424
  // Excel expects <controls> entries that reference ctrlProp relationships.
361
425
  if (model.formControls && model.formControls.length > 0) {
426
+ xmlStream.openNode("mc:AlternateContent");
427
+ xmlStream.openNode("mc:Choice", { Requires: "x14" });
362
428
  xmlStream.openNode("controls");
363
429
  for (const control of model.formControls) {
364
- if (control.ctrlPropRelId) {
365
- xmlStream.leafNode("control", { shapeId: control.shapeId, "r:id": control.ctrlPropRelId });
430
+ if (!control.ctrlPropRelId) {
431
+ continue;
366
432
  }
433
+ const defaultName = `Check Box ${Math.max(1, control.shapeId - 1024)}`;
434
+ xmlStream.openNode("mc:AlternateContent");
435
+ xmlStream.openNode("mc:Choice", { Requires: "x14" });
436
+ xmlStream.openNode("control", {
437
+ shapeId: control.shapeId,
438
+ "r:id": control.ctrlPropRelId,
439
+ name: control.name || defaultName
440
+ });
441
+ xmlStream.openNode("controlPr", {
442
+ locked: 0,
443
+ defaultSize: 0,
444
+ print: control.print ? 1 : 0,
445
+ autoFill: 0,
446
+ autoLine: 0,
447
+ autoPict: 0
448
+ });
449
+ xmlStream.openNode("anchor");
450
+ xmlStream.openNode("from");
451
+ xmlStream.leafNode("xdr:col", undefined, control.tl.col);
452
+ xmlStream.leafNode("xdr:colOff", undefined, control.tl.colOff);
453
+ xmlStream.leafNode("xdr:row", undefined, control.tl.row);
454
+ xmlStream.leafNode("xdr:rowOff", undefined, control.tl.rowOff);
455
+ xmlStream.closeNode();
456
+ xmlStream.openNode("to");
457
+ xmlStream.leafNode("xdr:col", undefined, control.br.col);
458
+ xmlStream.leafNode("xdr:colOff", undefined, control.br.colOff);
459
+ xmlStream.leafNode("xdr:row", undefined, control.br.row);
460
+ xmlStream.leafNode("xdr:rowOff", undefined, control.br.rowOff);
461
+ xmlStream.closeNode(); // to
462
+ xmlStream.closeNode(); // anchor
463
+ xmlStream.closeNode(); // controlPr
464
+ xmlStream.closeNode(); // control
465
+ xmlStream.closeNode(); // mc:Choice
466
+ xmlStream.leafNode("mc:Fallback");
467
+ xmlStream.closeNode(); // mc:AlternateContent
367
468
  }
368
469
  xmlStream.closeNode();
470
+ xmlStream.closeNode();
471
+ xmlStream.leafNode("mc:Fallback");
472
+ xmlStream.closeNode();
369
473
  }
370
- if (model.rels) {
371
- // Add a <legacyDrawing /> node for each VML drawing relationship (comments and/or form controls).
372
- model.rels.forEach(rel => {
373
- if (rel.Type === RelType.VmlDrawing) {
374
- xmlStream.leafNode("legacyDrawing", { "r:id": rel.Id });
375
- }
376
- });
377
- }
474
+ // Table parts must come after <controls> in worksheet element order.
475
+ this.map.tableParts.render(xmlStream, model.tables);
378
476
  // extLst should be the last element in the worksheet.
379
477
  this.map.extLst.render(xmlStream, model);
380
478
  xmlStream.closeNode();
@@ -36,16 +36,15 @@ class SharedStringXform extends BaseXform {
36
36
  xmlStream.closeNode();
37
37
  }
38
38
  parseOpen(node) {
39
- const { name } = node;
40
39
  if (this.parser) {
41
40
  this.parser.parseOpen(node);
42
41
  return true;
43
42
  }
44
- if (name === this.tag) {
43
+ if (node.name === this.tag) {
45
44
  this.model = {};
46
45
  return true;
47
46
  }
48
- this.parser = this.map[name];
47
+ this.parser = this.map[node.name];
49
48
  if (this.parser) {
50
49
  this.parser.parseOpen(node);
51
50
  return true;
@@ -13,14 +13,12 @@ class TextXform extends BaseXform {
13
13
  xmlStream.closeNode();
14
14
  }
15
15
  parseOpen(node) {
16
- switch (node.name) {
17
- case "t":
18
- this._text = [];
19
- this.model = ""; // Initialize model to empty string
20
- return true;
21
- default:
22
- return false;
16
+ if (node.name === "t") {
17
+ this._text = [];
18
+ this.model = "";
19
+ return true;
23
20
  }
21
+ return false;
24
22
  }
25
23
  parseText(text) {
26
24
  this._text.push(text);
@@ -30,8 +30,8 @@ import { theme1Xml } from "./xml/theme1.js";
30
30
  import { RelType } from "./rel-type.js";
31
31
  import { StreamBuf } from "../utils/stream-buf.js";
32
32
  import { bufferToString, base64ToUint8Array } from "../../../utils/utils.browser.js";
33
- import { StreamingZip, ZipDeflateFile } from "../../archive/streaming-zip.js";
34
- import { ZipParser } from "../../archive/index.browser.js";
33
+ import { StreamingZip, ZipDeflateFile } from "../../archive/zip/stream.js";
34
+ import { ZipParser } from "../../archive/unzip/zip-parser.js";
35
35
  import { PassThrough, concatUint8Arrays } from "../../stream/index.browser.js";
36
36
  import { commentsPath, commentsRelTargetFromWorksheetName, ctrlPropPath, drawingPath, drawingRelsPath, OOXML_REL_TARGETS, pivotTableRelTargetFromWorksheetName, pivotCacheDefinitionRelTargetFromWorkbook, getCommentsIndexFromPath, getDrawingNameFromPath, getDrawingNameFromRelsPath, getMediaFilenameFromPath, mediaPath, getPivotCacheDefinitionNameFromPath, getPivotCacheDefinitionNameFromRelsPath, getPivotCacheRecordsNameFromPath, getPivotTableNameFromPath, getPivotTableNameFromRelsPath, pivotCacheDefinitionPath, pivotCacheDefinitionRelsPath, pivotCacheDefinitionRelTargetFromPivotTable, pivotCacheRecordsPath, pivotCacheRecordsRelTarget, pivotTablePath, pivotTableRelsPath, getTableNameFromPath, tablePath, tableRelTargetFromWorksheetName, themePath, getThemeNameFromPath, getVmlDrawingNameFromPath, getWorksheetNoFromWorksheetPath, getWorksheetNoFromWorksheetRelsPath, isBinaryEntryPath, normalizeZipPath, OOXML_PATHS, vmlDrawingRelTargetFromWorksheetName, vmlDrawingPath, worksheetPath, worksheetRelsPath } from "../utils/ooxml-paths.js";
37
37
  class StreamingZipWriterAdapter {
@@ -126,10 +126,7 @@ class StreamingZipWriterAdapter {
126
126
  timestamps: this.timestamps
127
127
  });
128
128
  this.zip.add(file);
129
- const pushResult = file.push(buffer, true);
130
- if (pushResult && typeof pushResult.catch === "function") {
131
- pushResult.catch((err) => this._emit("error", err));
132
- }
129
+ file.push(buffer, true);
133
130
  }
134
131
  finalize() {
135
132
  if (this.finalized) {
@@ -367,8 +364,10 @@ class XLSX {
367
364
  case OOXML_PATHS.docPropsApp: {
368
365
  const appXform = new AppXform();
369
366
  const appProperties = await appXform.parseStream(stream);
370
- model.company = appProperties.company;
371
- model.manager = appProperties.manager;
367
+ if (appProperties) {
368
+ model.company = appProperties.company;
369
+ model.manager = appProperties.manager;
370
+ }
372
371
  break;
373
372
  }
374
373
  case OOXML_PATHS.docPropsCore: {
@@ -830,8 +829,10 @@ class XLSX {
830
829
  case OOXML_PATHS.docPropsApp: {
831
830
  const appXform = new AppXform();
832
831
  const appProperties = await appXform.parseStream(stream);
833
- model.company = appProperties.company;
834
- model.manager = appProperties.manager;
832
+ if (appProperties) {
833
+ model.company = appProperties.company;
834
+ model.manager = appProperties.manager;
835
+ }
835
836
  break;
836
837
  }
837
838
  case OOXML_PATHS.docPropsCore: {
@@ -16,7 +16,7 @@
16
16
  import fs from "fs";
17
17
  import { fileExists } from "../../../utils/utils.browser.js";
18
18
  import { XLSX as XLSXBase } from "./xlsx.browser.js";
19
- import { Parse } from "../../archive/index.browser.js";
19
+ import { Parse } from "../../archive/unzip/stream.browser.js";
20
20
  import { Writable, pipeline } from "../../stream/index.browser.js";
21
21
  class XLSX extends XLSXBase {
22
22
  constructor(workbook) {
@@ -24,6 +24,8 @@ export declare abstract class BaseTransform<TInput = Uint8Array, TOutput = Uint8
24
24
  protected _errorEmitted: boolean;
25
25
  protected _objectMode: boolean;
26
26
  protected _highWaterMark: number;
27
+ private _ending;
28
+ private _flushInProgress;
27
29
  constructor(options?: BaseTransformOptions);
28
30
  /**
29
31
  * Main transform implementation - must be overridden by subclasses
@@ -49,6 +51,7 @@ export declare abstract class BaseTransform<TInput = Uint8Array, TOutput = Uint8
49
51
  * Process next chunk in buffer
50
52
  */
51
53
  private _processNext;
54
+ private _maybeFlush;
52
55
  /**
53
56
  * Emit error only once
54
57
  */
@@ -17,6 +17,8 @@ export class BaseTransform extends EventEmitter {
17
17
  this._isDestroyed = false;
18
18
  this._isFinished = false;
19
19
  this._errorEmitted = false;
20
+ this._ending = false;
21
+ this._flushInProgress = false;
20
22
  this._objectMode = options.objectMode ?? false;
21
23
  this._highWaterMark = options.highWaterMark ?? 16384;
22
24
  }
@@ -45,26 +47,8 @@ export class BaseTransform extends EventEmitter {
45
47
  if (chunk !== undefined) {
46
48
  this.write(chunk);
47
49
  }
48
- // Wait for buffer to drain, then flush
49
- const checkAndFlush = () => {
50
- if (this._buffer.length === this._bufferIndex && !this._isProcessing) {
51
- this.processFlush((err, data) => {
52
- if (err) {
53
- this._emitError(err);
54
- }
55
- else if (data !== undefined) {
56
- this.emit("data", data);
57
- }
58
- this._isFinished = true;
59
- this.emit("finish");
60
- this.emit("end");
61
- });
62
- }
63
- else {
64
- setTimeout(checkAndFlush, 0);
65
- }
66
- };
67
- checkAndFlush();
50
+ this._ending = true;
51
+ this._maybeFlush();
68
52
  }
69
53
  /**
70
54
  * Destroy the stream
@@ -113,13 +97,43 @@ export class BaseTransform extends EventEmitter {
113
97
  }
114
98
  // Process next chunk
115
99
  this._processNext();
100
+ this._maybeFlush();
116
101
  }
117
102
  });
118
103
  }
119
104
  catch (err) {
120
105
  this._isProcessing = false;
121
106
  this._emitError(err);
107
+ this._maybeFlush();
108
+ }
109
+ }
110
+ _maybeFlush() {
111
+ if (!this._ending || this._isDestroyed || this._isFinished || this._flushInProgress) {
112
+ return;
122
113
  }
114
+ // If an error was emitted, stop flushing to avoid hanging end().
115
+ if (this._errorEmitted) {
116
+ this._isFinished = true;
117
+ this.emit("finish");
118
+ this.emit("end");
119
+ return;
120
+ }
121
+ if (this._isProcessing || this._bufferIndex < this._buffer.length) {
122
+ return;
123
+ }
124
+ this._flushInProgress = true;
125
+ this.processFlush((err, data) => {
126
+ this._flushInProgress = false;
127
+ if (err) {
128
+ this._emitError(err);
129
+ }
130
+ else if (data !== undefined) {
131
+ this.emit("data", data);
132
+ }
133
+ this._isFinished = true;
134
+ this.emit("finish");
135
+ this.emit("end");
136
+ });
123
137
  }
124
138
  /**
125
139
  * Emit error only once
@@ -5,14 +5,8 @@
5
5
  * Works identically in both browser and Node.js environments.
6
6
  */
7
7
  import { EventEmitter } from "@stream/event-emitter";
8
- /**
9
- * Represents a chunk of data with copy capabilities
10
- */
11
- export interface DataChunk {
12
- readonly length: number;
13
- copy(target: Uint8Array, targetOffset: number, offset: number, length: number): number;
14
- toUint8Array(): Uint8Array;
15
- }
8
+ import type { BufferedStreamOptions, DataChunk } from "@stream/types";
9
+ export type { BufferedStreamOptions, DataChunk } from "@stream/types";
16
10
  /**
17
11
  * String chunk implementation
18
12
  */
@@ -34,10 +28,6 @@ export declare class BufferChunk implements DataChunk {
34
28
  copy(target: Uint8Array, targetOffset: number, offset: number, length: number): number;
35
29
  toUint8Array(): Uint8Array;
36
30
  }
37
- export interface BufferedStreamOptions {
38
- /** Batch size for internal read-write buffers */
39
- batchSize?: number;
40
- }
41
31
  /**
42
32
  * Browser-compatible Buffered Stream with efficient chunk management
43
33
  */
@@ -45,7 +45,7 @@ export class ChunkedBuilder {
45
45
  _consolidate() {
46
46
  if (this._pieces.length > 0) {
47
47
  this._chunks.push(this._pieces.join(""));
48
- this._pieces = [];
48
+ this._pieces.length = 0;
49
49
  }
50
50
  }
51
51
  /**
@@ -76,8 +76,8 @@ export class ChunkedBuilder {
76
76
  * Clear all content
77
77
  */
78
78
  clear() {
79
- this._pieces = [];
80
- this._chunks = [];
79
+ this._pieces.length = 0;
80
+ this._chunks.length = 0;
81
81
  this._totalLength = 0;
82
82
  }
83
83
  /**
@@ -99,7 +99,7 @@ export class ChunkedBuilder {
99
99
  // Has chunks - consolidate and join
100
100
  if (piecesLen > 0) {
101
101
  this._chunks.push(this._pieces.join(""));
102
- this._pieces = [];
102
+ this._pieces.length = 0;
103
103
  }
104
104
  if (this._chunks.length === 1) {
105
105
  return this._chunks[0];
@@ -1,22 +1,16 @@
1
1
  /**
2
- * Stream Module (browser type surface)
2
+ * Stream Module (browser entry)
3
3
  *
4
- * Mirrors [src/modules/stream/index.ts] but explicitly re-exports from
5
- * ./streams.browser so we can enforce index export-surface parity.
4
+ * Mirrors the public surface of `./index.ts`, but exports the browser
5
+ * implementation from `./streams.browser`.
6
+ *
7
+ * This file is intentionally export-only (tree-shaking friendly).
6
8
  */
7
- import type { ReadableStreamOptions, WritableStreamOptions, TransformStreamOptions, DuplexStreamOptions, PullStreamOptions, BufferedStreamOptions, TransformCallback, FlushCallback, WriteCallback, DestroyCallback, IEventEmitter, IReadable, IWritable, ITransform, IDuplex, IPullStream, IBufferedStream, IPassThrough, ICollector, DataChunk, EventListener, PipelineSource, PipelineTransform, PipelineDestination, ReadWriteBufferOptions } from "@stream/types";
8
- export type { ReadableStreamOptions, WritableStreamOptions, TransformStreamOptions, DuplexStreamOptions, PullStreamOptions, BufferedStreamOptions, TransformCallback, FlushCallback, WriteCallback, DestroyCallback, IEventEmitter, IReadable, IWritable, ITransform, IDuplex, IPullStream, IBufferedStream, IPassThrough, ICollector, DataChunk, EventListener, PipelineSource, PipelineTransform, PipelineDestination, ReadWriteBufferOptions };
9
- import { Readable, Writable, Transform, Duplex, PassThrough, Collector, PullStream, BufferedStream, StringChunk, BufferChunk, createReadable, createWritable, createTransform, createCollector, createPassThrough, createPullStream, createBufferedStream, createReadableFromArray, createReadableFromAsyncIterable, createReadableFromGenerator, createReadableFromPromise, createDuplex, createEmptyReadable, createNullWritable, pipeline, finished, streamToPromise, streamToUint8Array, streamToBuffer, streamToString, drainStream, copyStream, addAbortSignal, compose, finishedAll, once, promisify, isReadable, isWritable, isTransform, isDuplex, isStream, isDestroyed, isDisturbed, isErrored, getDefaultHighWaterMark, setDefaultHighWaterMark, duplexPair, normalizeWritable as Writeable, consumers, promises } from "@stream/streams.browser";
10
- import type { PipelineOptions, FinishedOptions } from "@stream/streams.browser";
11
- export { Readable, Writable, Transform, Duplex, PassThrough, Collector, PullStream, BufferedStream, StringChunk, BufferChunk, createReadable, createWritable, createTransform, createCollector, createPassThrough, createPullStream, createBufferedStream, createReadableFromArray, createReadableFromAsyncIterable, createReadableFromGenerator, createReadableFromPromise, createDuplex, createEmptyReadable, createNullWritable, pipeline, finished, streamToPromise, streamToUint8Array, streamToBuffer, streamToString, drainStream, copyStream, addAbortSignal, compose, finishedAll, once, promisify, isReadable, isWritable, isTransform, isDuplex, isStream, isDestroyed, isDisturbed, isErrored, getDefaultHighWaterMark, setDefaultHighWaterMark, duplexPair, Writeable, consumers, promises };
12
- export type { PipelineOptions, FinishedOptions };
13
- import { EventEmitter } from "@stream/event-emitter";
14
- export { EventEmitter };
15
- import { ChunkedBuilder, TransactionalChunkedBuilder } from "@stream/chunked-builder";
16
- import type { ChunkedBuilderOptions, BuilderSnapshot } from "@stream/chunked-builder";
17
- export { ChunkedBuilder, TransactionalChunkedBuilder };
18
- export type { ChunkedBuilderOptions, BuilderSnapshot };
19
- import { textEncoder, textDecoder, stringToUint8Array, uint8ArrayToString, uint8ArrayEquals, uint8ArrayIndexOf, uint8ArraySlice, toUint8Array, bufferToString, concatUint8Arrays } from "@stream/shared";
20
- export { textEncoder, textDecoder, stringToUint8Array, uint8ArrayToString, uint8ArrayEquals, uint8ArrayIndexOf, uint8ArraySlice, toUint8Array, bufferToString, concatUint8Arrays };
21
- import { collect, text, json, bytes, fromString, fromJSON, fromBytes, transform, filter } from "@stream/utils";
22
- export { collect, text, json, bytes, fromString, fromJSON, fromBytes, transform, filter };
9
+ export type { ReadableStreamOptions, WritableStreamOptions, TransformStreamOptions, DuplexStreamOptions, PullStreamOptions, BufferedStreamOptions, TransformCallback, FlushCallback, WriteCallback, DestroyCallback, IEventEmitter, IReadable, IWritable, ITransform, IDuplex, IPullStream, IBufferedStream, IPassThrough, ICollector, DataChunk, EventListener, PipelineSource, PipelineTransform, PipelineDestination, ReadWriteBufferOptions } from "@stream/types";
10
+ export { Readable, Writable, Transform, Duplex, PassThrough, Collector, PullStream, BufferedStream, StringChunk, BufferChunk, createReadable, createWritable, createTransform, createCollector, createPassThrough, createPullStream, createBufferedStream, createReadableFromArray, createReadableFromAsyncIterable, createReadableFromGenerator, createReadableFromPromise, createDuplex, createEmptyReadable, createNullWritable, pipeline, finished, streamToPromise, streamToUint8Array, streamToBuffer, streamToString, drainStream, copyStream, addAbortSignal, compose, finishedAll, once, promisify, isReadable, isWritable, isTransform, isDuplex, isStream, isDestroyed, isDisturbed, isErrored, getDefaultHighWaterMark, setDefaultHighWaterMark, duplexPair, normalizeWritable as Writeable, consumers, promises } from "@stream/streams.browser";
11
+ export type { PipelineOptions, FinishedOptions } from "@stream/streams.browser";
12
+ export { EventEmitter } from "@stream/event-emitter";
13
+ export { ChunkedBuilder, TransactionalChunkedBuilder } from "@stream/chunked-builder";
14
+ export type { ChunkedBuilderOptions, BuilderSnapshot } from "@stream/chunked-builder";
15
+ export { textEncoder, textDecoder, stringToUint8Array, uint8ArrayToString, uint8ArrayEquals, uint8ArrayIndexOf, uint8ArraySlice, toUint8Array, bufferToString, concatUint8Arrays } from "@stream/shared";
16
+ export { collect, text, json, bytes, fromString, fromJSON, fromBytes, transform, filter } from "@stream/utils";
@@ -1,25 +1,13 @@
1
1
  /**
2
- * Stream Module (browser type surface)
2
+ * Stream Module (browser entry)
3
3
  *
4
- * Mirrors [src/modules/stream/index.ts] but explicitly re-exports from
5
- * ./streams.browser so we can enforce index export-surface parity.
4
+ * Mirrors the public surface of `./index.ts`, but exports the browser
5
+ * implementation from `./streams.browser`.
6
+ *
7
+ * This file is intentionally export-only (tree-shaking friendly).
6
8
  */
7
- // =============================================================================
8
- // Native Stream Classes and Functions (browser)
9
- // =============================================================================
10
- import { Readable, Writable, Transform, Duplex, PassThrough, Collector, PullStream, BufferedStream, StringChunk, BufferChunk, createReadable, createWritable, createTransform, createCollector, createPassThrough, createPullStream, createBufferedStream, createReadableFromArray, createReadableFromAsyncIterable, createReadableFromGenerator, createReadableFromPromise, createDuplex, createEmptyReadable, createNullWritable, pipeline, finished, streamToPromise, streamToUint8Array, streamToBuffer, streamToString, drainStream, copyStream, addAbortSignal, compose, finishedAll, once, promisify, isReadable, isWritable, isTransform, isDuplex, isStream, isDestroyed, isDisturbed, isErrored, getDefaultHighWaterMark, setDefaultHighWaterMark, duplexPair, normalizeWritable as Writeable, consumers, promises } from "./streams.browser.js";
11
- export { Readable, Writable, Transform, Duplex, PassThrough, Collector, PullStream, BufferedStream, StringChunk, BufferChunk, createReadable, createWritable, createTransform, createCollector, createPassThrough, createPullStream, createBufferedStream, createReadableFromArray, createReadableFromAsyncIterable, createReadableFromGenerator, createReadableFromPromise, createDuplex, createEmptyReadable, createNullWritable, pipeline, finished, streamToPromise, streamToUint8Array, streamToBuffer, streamToString, drainStream, copyStream, addAbortSignal, compose, finishedAll, once, promisify, isReadable, isWritable, isTransform, isDuplex, isStream, isDestroyed, isDisturbed, isErrored, getDefaultHighWaterMark, setDefaultHighWaterMark, duplexPair, Writeable, consumers, promises };
12
- import { EventEmitter } from "./event-emitter.js";
13
- export { EventEmitter };
14
- // =============================================================================
15
- // ChunkedBuilder (platform-independent)
16
- // =============================================================================
17
- import { ChunkedBuilder, TransactionalChunkedBuilder } from "./chunked-builder.js";
18
- export { ChunkedBuilder, TransactionalChunkedBuilder };
19
- // =============================================================================
20
- // Utility Functions (platform-independent)
21
- // =============================================================================
22
- import { textEncoder, textDecoder, stringToUint8Array, uint8ArrayToString, uint8ArrayEquals, uint8ArrayIndexOf, uint8ArraySlice, toUint8Array, bufferToString, concatUint8Arrays } from "./shared.js";
23
- export { textEncoder, textDecoder, stringToUint8Array, uint8ArrayToString, uint8ArrayEquals, uint8ArrayIndexOf, uint8ArraySlice, toUint8Array, bufferToString, concatUint8Arrays };
24
- import { collect, text, json, bytes, fromString, fromJSON, fromBytes, transform, filter } from "./utils.js";
25
- export { collect, text, json, bytes, fromString, fromJSON, fromBytes, transform, filter };
9
+ export { Readable, Writable, Transform, Duplex, PassThrough, Collector, PullStream, BufferedStream, StringChunk, BufferChunk, createReadable, createWritable, createTransform, createCollector, createPassThrough, createPullStream, createBufferedStream, createReadableFromArray, createReadableFromAsyncIterable, createReadableFromGenerator, createReadableFromPromise, createDuplex, createEmptyReadable, createNullWritable, pipeline, finished, streamToPromise, streamToUint8Array, streamToBuffer, streamToString, drainStream, copyStream, addAbortSignal, compose, finishedAll, once, promisify, isReadable, isWritable, isTransform, isDuplex, isStream, isDestroyed, isDisturbed, isErrored, getDefaultHighWaterMark, setDefaultHighWaterMark, duplexPair, normalizeWritable as Writeable, consumers, promises } from "./streams.browser.js";
10
+ export { EventEmitter } from "./event-emitter.js";
11
+ export { ChunkedBuilder, TransactionalChunkedBuilder } from "./chunked-builder.js";
12
+ export { textEncoder, textDecoder, stringToUint8Array, uint8ArrayToString, uint8ArrayEquals, uint8ArrayIndexOf, uint8ArraySlice, toUint8Array, bufferToString, concatUint8Arrays } from "./shared.js";
13
+ export { collect, text, json, bytes, fromString, fromJSON, fromBytes, transform, filter } from "./utils.js";
@@ -1,49 +1,26 @@
1
1
  /**
2
- * Stream Module
2
+ * Stream Module (Node.js entry)
3
3
  *
4
- * Native stream implementations for Node.js and Browser.
4
+ * Public entrypoint for stream utilities and classes.
5
5
  *
6
- * - Node.js: Uses native `stream` module (Readable, Writable, Transform, Duplex, PassThrough)
7
- * - Browser: Uses Web Streams API (ReadableStream, WritableStream, TransformStream)
8
- *
9
- * Both implementations provide the same API for cross-platform compatibility.
6
+ * Notes:
7
+ * - This file is intentionally export-only (tree-shaking friendly).
8
+ * - Browser builds should import from `@stream/index.browser`.
10
9
  *
11
10
  * @example
12
- * ```typescript
13
- * import {
14
- * Readable,
15
- * Writable,
16
- * Transform,
17
- * Duplex,
18
- * PassThrough,
19
- * pipeline,
20
- * createTransform,
21
- * streamToUint8Array
22
- * } from './modules/stream';
23
- *
24
- * // Create a transform stream
25
- * const uppercase = createTransform<Uint8Array, Uint8Array>(chunk => {
26
- * const text = new TextDecoder().decode(chunk);
27
- * return new TextEncoder().encode(text.toUpperCase());
28
- * });
11
+ * ```ts
12
+ * import { pipeline, createTransform, createCollector } from "@stream";
29
13
  *
30
- * // Use pipeline for clean stream composition
31
- * await pipeline(readable, uppercase, writable);
14
+ * const upper = createTransform<Uint8Array, Uint8Array>(chunk => chunk);
15
+ * const out = createCollector<Uint8Array>();
16
+ * await pipeline(source, upper, out);
32
17
  * ```
33
18
  */
34
- import type { ReadableStreamOptions, WritableStreamOptions, TransformStreamOptions, DuplexStreamOptions, PullStreamOptions, BufferedStreamOptions, TransformCallback, FlushCallback, WriteCallback, DestroyCallback, IEventEmitter, IReadable, IWritable, ITransform, IDuplex, IPullStream, IBufferedStream, IPassThrough, ICollector, DataChunk, EventListener, PipelineSource, PipelineTransform, PipelineDestination, ReadWriteBufferOptions } from "@stream/types";
35
- export type { ReadableStreamOptions, WritableStreamOptions, TransformStreamOptions, DuplexStreamOptions, PullStreamOptions, BufferedStreamOptions, TransformCallback, FlushCallback, WriteCallback, DestroyCallback, IEventEmitter, IReadable, IWritable, ITransform, IDuplex, IPullStream, IBufferedStream, IPassThrough, ICollector, DataChunk, EventListener, PipelineSource, PipelineTransform, PipelineDestination, ReadWriteBufferOptions };
36
- import { Readable, Writable, Transform, Duplex, PassThrough, Collector, PullStream, BufferedStream, StringChunk, BufferChunk, createReadable, createWritable, createTransform, createCollector, createPassThrough, createPullStream, createBufferedStream, createReadableFromArray, createReadableFromAsyncIterable, createReadableFromGenerator, createReadableFromPromise, createDuplex, createEmptyReadable, createNullWritable, pipeline, finished, streamToPromise, streamToUint8Array, streamToBuffer, streamToString, drainStream, copyStream, addAbortSignal, compose, finishedAll, once, promisify, isReadable, isWritable, isTransform, isDuplex, isStream, isDestroyed, isDisturbed, isErrored, getDefaultHighWaterMark, setDefaultHighWaterMark, duplexPair, normalizeWritable as Writeable, consumers, promises } from "@stream/streams";
37
- import type { PipelineOptions, FinishedOptions } from "@stream/streams";
38
- export { Readable, Writable, Transform, Duplex, PassThrough, Collector, PullStream, BufferedStream, StringChunk, BufferChunk, createReadable, createWritable, createTransform, createCollector, createPassThrough, createPullStream, createBufferedStream, createReadableFromArray, createReadableFromAsyncIterable, createReadableFromGenerator, createReadableFromPromise, createDuplex, createEmptyReadable, createNullWritable, pipeline, finished, streamToPromise, streamToUint8Array, streamToBuffer, streamToString, drainStream, copyStream, addAbortSignal, compose, finishedAll, once, promisify, isReadable, isWritable, isTransform, isDuplex, isStream, isDestroyed, isDisturbed, isErrored, getDefaultHighWaterMark, setDefaultHighWaterMark, duplexPair, Writeable, consumers, promises };
39
- export type { PipelineOptions, FinishedOptions };
40
- import { EventEmitter } from "@stream/event-emitter";
41
- export { EventEmitter };
42
- import { ChunkedBuilder, TransactionalChunkedBuilder } from "@stream/chunked-builder";
43
- import type { ChunkedBuilderOptions, BuilderSnapshot } from "@stream/chunked-builder";
44
- export { ChunkedBuilder, TransactionalChunkedBuilder };
45
- export type { ChunkedBuilderOptions, BuilderSnapshot };
46
- import { textEncoder, textDecoder, stringToUint8Array, uint8ArrayToString, uint8ArrayEquals, uint8ArrayIndexOf, uint8ArraySlice, toUint8Array, bufferToString, concatUint8Arrays } from "@stream/shared";
47
- export { textEncoder, textDecoder, stringToUint8Array, uint8ArrayToString, uint8ArrayEquals, uint8ArrayIndexOf, uint8ArraySlice, toUint8Array, bufferToString, concatUint8Arrays };
48
- import { collect, text, json, bytes, fromString, fromJSON, fromBytes, transform, filter } from "@stream/utils";
49
- export { collect, text, json, bytes, fromString, fromJSON, fromBytes, transform, filter };
19
+ export type { ReadableStreamOptions, WritableStreamOptions, TransformStreamOptions, DuplexStreamOptions, PullStreamOptions, BufferedStreamOptions, TransformCallback, FlushCallback, WriteCallback, DestroyCallback, IEventEmitter, IReadable, IWritable, ITransform, IDuplex, IPullStream, IBufferedStream, IPassThrough, ICollector, DataChunk, EventListener, PipelineSource, PipelineTransform, PipelineDestination, ReadWriteBufferOptions } from "@stream/types";
20
+ export { Readable, Writable, Transform, Duplex, PassThrough, Collector, PullStream, BufferedStream, StringChunk, BufferChunk, createReadable, createWritable, createTransform, createCollector, createPassThrough, createPullStream, createBufferedStream, createReadableFromArray, createReadableFromAsyncIterable, createReadableFromGenerator, createReadableFromPromise, createDuplex, createEmptyReadable, createNullWritable, pipeline, finished, streamToPromise, streamToUint8Array, streamToBuffer, streamToString, drainStream, copyStream, addAbortSignal, compose, finishedAll, once, promisify, isReadable, isWritable, isTransform, isDuplex, isStream, isDestroyed, isDisturbed, isErrored, getDefaultHighWaterMark, setDefaultHighWaterMark, duplexPair, normalizeWritable as Writeable, consumers, promises } from "@stream/streams";
21
+ export type { PipelineOptions, FinishedOptions } from "@stream/streams";
22
+ export { EventEmitter } from "@stream/event-emitter";
23
+ export { ChunkedBuilder, TransactionalChunkedBuilder } from "@stream/chunked-builder";
24
+ export type { ChunkedBuilderOptions, BuilderSnapshot } from "@stream/chunked-builder";
25
+ export { textEncoder, textDecoder, stringToUint8Array, uint8ArrayToString, uint8ArrayEquals, uint8ArrayIndexOf, uint8ArraySlice, toUint8Array, bufferToString, concatUint8Arrays } from "@stream/shared";
26
+ export { collect, text, json, bytes, fromString, fromJSON, fromBytes, transform, filter } from "@stream/utils";