@cj-tech-master/excelts 1.6.3 → 2.0.0-canary.20251228013952.4f2c3c6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/README.md +139 -24
  2. package/README_zh.md +140 -26
  3. package/dist/browser/excelts.esm.js +18468 -0
  4. package/dist/browser/excelts.esm.js.map +1 -0
  5. package/dist/browser/excelts.esm.min.js +125 -0
  6. package/dist/browser/excelts.iife.js +13107 -47146
  7. package/dist/browser/excelts.iife.js.map +1 -1
  8. package/dist/browser/excelts.iife.min.js +24 -106
  9. package/dist/cjs/csv/csv-core.js +701 -0
  10. package/dist/cjs/csv/csv-stream.js +646 -0
  11. package/dist/cjs/csv/csv.base.js +137 -0
  12. package/dist/cjs/csv/csv.browser.js +68 -0
  13. package/dist/cjs/csv/csv.js +218 -162
  14. package/dist/cjs/doc/anchor.js +2 -2
  15. package/dist/cjs/doc/cell.js +22 -22
  16. package/dist/cjs/doc/column.js +28 -7
  17. package/dist/cjs/doc/data-validations.js +3 -3
  18. package/dist/cjs/doc/defined-names.js +13 -13
  19. package/dist/cjs/doc/image.js +7 -7
  20. package/dist/cjs/doc/modelcontainer.js +2 -2
  21. package/dist/cjs/doc/note.js +2 -2
  22. package/dist/cjs/doc/pivot-table.js +5 -5
  23. package/dist/cjs/doc/range.js +11 -11
  24. package/dist/cjs/doc/row.js +16 -16
  25. package/dist/cjs/doc/table.js +5 -5
  26. package/dist/cjs/doc/workbook.base.js +211 -0
  27. package/dist/cjs/doc/workbook.browser.js +62 -0
  28. package/dist/cjs/doc/workbook.js +68 -179
  29. package/dist/cjs/doc/worksheet.js +45 -41
  30. package/dist/cjs/index.js +49 -32
  31. package/dist/cjs/stream/xlsx/hyperlink-reader.js +6 -6
  32. package/dist/cjs/stream/xlsx/sheet-comments-writer.js +12 -12
  33. package/dist/cjs/stream/xlsx/sheet-rels-writer.js +4 -4
  34. package/dist/cjs/stream/xlsx/workbook-reader.js +22 -22
  35. package/dist/cjs/stream/xlsx/workbook-writer.js +38 -38
  36. package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
  37. package/dist/cjs/stream/xlsx/worksheet-writer.js +67 -60
  38. package/dist/cjs/utils/browser-buffer.js +75 -0
  39. package/dist/cjs/utils/cell-format.js +2 -2
  40. package/dist/cjs/utils/cell-matrix.js +5 -5
  41. package/dist/cjs/utils/datetime.js +499 -0
  42. package/dist/cjs/utils/encryptor.browser.js +240 -0
  43. package/dist/cjs/utils/parse-sax.js +1191 -13
  44. package/dist/cjs/utils/shared-formula.js +5 -5
  45. package/dist/cjs/utils/sheet-utils.js +13 -13
  46. package/dist/cjs/utils/stream-buf.browser.js +355 -0
  47. package/dist/cjs/utils/stream-buf.js +5 -5
  48. package/dist/cjs/utils/unzip/extract.js +11 -11
  49. package/dist/cjs/utils/unzip/index.js +21 -21
  50. package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
  51. package/dist/cjs/utils/unzip/parse.js +16 -16
  52. package/dist/cjs/utils/unzip/zip-parser.js +14 -3
  53. package/dist/cjs/utils/utils.base.js +161 -0
  54. package/dist/cjs/utils/utils.browser.js +89 -0
  55. package/dist/cjs/utils/utils.js +46 -154
  56. package/dist/cjs/utils/xml-stream.js +3 -3
  57. package/dist/cjs/utils/zip/compress.base.js +88 -0
  58. package/dist/cjs/utils/zip/compress.browser.js +127 -0
  59. package/dist/cjs/utils/zip/compress.js +18 -198
  60. package/dist/cjs/utils/zip/crc32.browser.js +88 -0
  61. package/dist/cjs/utils/zip/deflate-fallback.js +575 -0
  62. package/dist/cjs/utils/zip/index.js +17 -17
  63. package/dist/cjs/utils/zip/streaming-zip.js +264 -0
  64. package/dist/cjs/utils/zip/zip-builder.js +10 -10
  65. package/dist/cjs/utils/zip-stream.browser.js +135 -0
  66. package/dist/cjs/utils/zip-stream.js +4 -4
  67. package/dist/cjs/xlsx/xform/base-xform.js +4 -4
  68. package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
  69. package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
  70. package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
  71. package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
  72. package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
  73. package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
  74. package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
  75. package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
  76. package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
  77. package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
  78. package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
  79. package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
  80. package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
  81. package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
  82. package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
  83. package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
  84. package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
  85. package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
  86. package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
  87. package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
  88. package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
  89. package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
  90. package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
  91. package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
  92. package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
  93. package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
  94. package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
  95. package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
  96. package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
  97. package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
  98. package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
  99. package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
  100. package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
  101. package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
  102. package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
  103. package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
  104. package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
  105. package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
  106. package/dist/cjs/xlsx/xform/list-xform.js +2 -2
  107. package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
  108. package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
  109. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
  110. package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
  111. package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +10 -11
  112. package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
  113. package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
  114. package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
  115. package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
  116. package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
  117. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
  118. package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
  119. package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
  120. package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
  121. package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
  122. package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
  123. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
  124. package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +11 -12
  125. package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
  126. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
  127. package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
  128. package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
  129. package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
  130. package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
  131. package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
  132. package/dist/cjs/xlsx/xform/sheet/col-breaks-xform.js +38 -0
  133. package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
  134. package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
  135. package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
  136. package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
  137. package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
  138. package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
  139. package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
  140. package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
  141. package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
  142. package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
  143. package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +15 -3
  144. package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
  145. package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
  146. package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
  147. package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
  148. package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
  149. package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +15 -17
  150. package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
  151. package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
  152. package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
  153. package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
  154. package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
  155. package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
  156. package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +75 -70
  157. package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
  158. package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
  159. package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
  160. package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
  161. package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
  162. package/dist/cjs/xlsx/xform/static-xform.js +4 -4
  163. package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
  164. package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
  165. package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
  166. package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
  167. package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
  168. package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
  169. package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
  170. package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
  171. package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
  172. package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
  173. package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
  174. package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
  175. package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
  176. package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
  177. package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
  178. package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
  179. package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
  180. package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
  181. package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
  182. package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
  183. package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
  184. package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
  185. package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
  186. package/dist/cjs/xlsx/xlsx.base.js +742 -0
  187. package/dist/cjs/xlsx/xlsx.browser.js +162 -0
  188. package/dist/cjs/xlsx/xlsx.js +118 -892
  189. package/dist/esm/csv/csv-core.js +694 -0
  190. package/dist/esm/csv/csv-stream.js +638 -0
  191. package/dist/esm/csv/csv.base.js +127 -0
  192. package/dist/esm/csv/csv.browser.js +65 -0
  193. package/dist/esm/csv/csv.js +181 -159
  194. package/dist/esm/doc/column.js +21 -0
  195. package/dist/esm/doc/workbook.base.js +207 -0
  196. package/dist/esm/doc/workbook.browser.js +59 -0
  197. package/dist/esm/doc/workbook.js +64 -175
  198. package/dist/esm/doc/worksheet.js +4 -0
  199. package/dist/esm/index.browser.js +33 -1
  200. package/dist/esm/index.js +23 -8
  201. package/dist/esm/local.js +0 -1
  202. package/dist/esm/stream/xlsx/workbook-writer.js +1 -1
  203. package/dist/esm/stream/xlsx/worksheet-writer.js +8 -1
  204. package/dist/esm/utils/browser-buffer.js +67 -0
  205. package/dist/esm/utils/datetime.js +493 -0
  206. package/dist/esm/utils/encryptor.browser.js +237 -0
  207. package/dist/esm/utils/parse-sax.js +1188 -12
  208. package/dist/esm/utils/stream-buf.browser.js +352 -0
  209. package/dist/esm/utils/unzip/zip-parser.js +11 -0
  210. package/dist/esm/utils/utils.base.js +142 -0
  211. package/dist/esm/utils/utils.browser.js +68 -0
  212. package/dist/esm/utils/utils.js +15 -123
  213. package/dist/esm/utils/zip/compress.base.js +83 -0
  214. package/dist/esm/utils/zip/compress.browser.js +121 -0
  215. package/dist/esm/utils/zip/compress.js +16 -164
  216. package/dist/esm/utils/zip/crc32.browser.js +82 -0
  217. package/dist/esm/utils/zip/deflate-fallback.js +570 -0
  218. package/dist/esm/utils/zip/streaming-zip.js +259 -0
  219. package/dist/esm/utils/zip-stream.browser.js +132 -0
  220. package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
  221. package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
  222. package/dist/esm/xlsx/xform/sheet/col-breaks-xform.js +35 -0
  223. package/dist/esm/xlsx/xform/sheet/page-breaks-xform.js +13 -1
  224. package/dist/esm/xlsx/xform/sheet/row-breaks-xform.js +11 -13
  225. package/dist/esm/xlsx/xform/sheet/worksheet-xform.js +7 -2
  226. package/dist/esm/xlsx/xlsx.base.js +739 -0
  227. package/dist/esm/xlsx/xlsx.browser.js +159 -0
  228. package/dist/esm/xlsx/xlsx.js +114 -888
  229. package/dist/types/csv/csv-core.d.ts +207 -0
  230. package/dist/types/csv/csv-stream.d.ts +114 -0
  231. package/dist/types/csv/csv.base.d.ts +62 -0
  232. package/dist/types/csv/csv.browser.d.ts +33 -0
  233. package/dist/types/csv/csv.d.ts +97 -71
  234. package/dist/types/doc/anchor.d.ts +1 -1
  235. package/dist/types/doc/cell.d.ts +7 -7
  236. package/dist/types/doc/column.d.ts +9 -3
  237. package/dist/types/doc/defined-names.d.ts +4 -4
  238. package/dist/types/doc/image.d.ts +2 -2
  239. package/dist/types/doc/modelcontainer.d.ts +1 -1
  240. package/dist/types/doc/pivot-table.d.ts +1 -1
  241. package/dist/types/doc/range.d.ts +1 -1
  242. package/dist/types/doc/row.d.ts +3 -3
  243. package/dist/types/doc/table.d.ts +2 -2
  244. package/dist/types/doc/workbook.base.d.ts +111 -0
  245. package/dist/types/doc/workbook.browser.d.ts +38 -0
  246. package/dist/types/doc/workbook.d.ts +62 -92
  247. package/dist/types/doc/worksheet.d.ts +12 -10
  248. package/dist/types/index.browser.d.ts +19 -5
  249. package/dist/types/index.d.ts +24 -23
  250. package/dist/types/local.d.ts +0 -1
  251. package/dist/types/stream/xlsx/hyperlink-reader.d.ts +1 -1
  252. package/dist/types/stream/xlsx/workbook-reader.d.ts +4 -4
  253. package/dist/types/stream/xlsx/workbook-writer.d.ts +7 -7
  254. package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
  255. package/dist/types/stream/xlsx/worksheet-writer.d.ts +11 -9
  256. package/dist/types/types.d.ts +6 -0
  257. package/dist/types/utils/browser-buffer.d.ts +28 -0
  258. package/dist/types/utils/col-cache.d.ts +1 -1
  259. package/dist/types/utils/datetime.d.ts +56 -0
  260. package/dist/types/utils/encryptor.browser.d.ts +28 -0
  261. package/dist/types/utils/parse-sax.d.ts +108 -1
  262. package/dist/types/utils/sheet-utils.d.ts +3 -3
  263. package/dist/types/utils/stream-buf.browser.d.ts +41 -0
  264. package/dist/types/utils/unzip/extract.d.ts +6 -6
  265. package/dist/types/utils/unzip/index.d.ts +8 -8
  266. package/dist/types/utils/unzip/parse.d.ts +3 -3
  267. package/dist/types/utils/unzip/zip-parser.d.ts +5 -0
  268. package/dist/types/utils/utils.base.d.ts +29 -0
  269. package/dist/types/utils/utils.browser.d.ts +29 -0
  270. package/dist/types/utils/utils.d.ts +6 -25
  271. package/dist/types/utils/zip/compress.base.d.ts +45 -0
  272. package/dist/types/utils/zip/compress.browser.d.ts +63 -0
  273. package/dist/types/utils/zip/compress.d.ts +13 -45
  274. package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
  275. package/dist/types/utils/zip/deflate-fallback.d.ts +39 -0
  276. package/dist/types/utils/zip/index.d.ts +5 -5
  277. package/dist/types/utils/zip/streaming-zip.d.ts +96 -0
  278. package/dist/types/utils/zip/zip-builder.d.ts +1 -1
  279. package/dist/types/utils/zip-stream.browser.d.ts +39 -0
  280. package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
  281. package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
  282. package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
  283. package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
  284. package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
  285. package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
  286. package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
  287. package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
  288. package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
  289. package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
  290. package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
  291. package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
  292. package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
  293. package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
  294. package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
  295. package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
  296. package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
  297. package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
  298. package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
  299. package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
  300. package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
  301. package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
  302. package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
  303. package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
  304. package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
  305. package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
  306. package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
  307. package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
  308. package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
  309. package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
  310. package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
  311. package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
  312. package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
  313. package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
  314. package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
  315. package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
  316. package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
  317. package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
  318. package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
  319. package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
  320. package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
  321. package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
  322. package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
  323. package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
  324. package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
  325. package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
  326. package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
  327. package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
  328. package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
  329. package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
  330. package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
  331. package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
  332. package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
  333. package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
  334. package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
  335. package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
  336. package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
  337. package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
  338. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
  339. package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
  340. package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
  341. package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
  342. package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
  343. package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
  344. package/dist/types/xlsx/xform/sheet/col-breaks-xform.d.ts +16 -0
  345. package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
  346. package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
  347. package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
  348. package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
  349. package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
  350. package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
  351. package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
  352. package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
  353. package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
  354. package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +5 -1
  355. package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
  356. package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
  357. package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
  358. package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
  359. package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
  360. package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +5 -1
  361. package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
  362. package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
  363. package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
  364. package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
  365. package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
  366. package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
  367. package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
  368. package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
  369. package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
  370. package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
  371. package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
  372. package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
  373. package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
  374. package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
  375. package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
  376. package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
  377. package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
  378. package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
  379. package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
  380. package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
  381. package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
  382. package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
  383. package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
  384. package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
  385. package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
  386. package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
  387. package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
  388. package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
  389. package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
  390. package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
  391. package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
  392. package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
  393. package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
  394. package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
  395. package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
  396. package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
  397. package/dist/types/xlsx/xlsx.base.d.ts +134 -0
  398. package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
  399. package/dist/types/xlsx/xlsx.d.ts +20 -80
  400. package/package.json +16 -39
@@ -14,12 +14,12 @@ exports.Parse = void 0;
14
14
  exports.createParse = createParse;
15
15
  const zlib_1 = __importDefault(require("zlib"));
16
16
  const stream_1 = require("stream");
17
- const pull_stream_js_1 = require("./pull-stream");
18
- const noop_stream_js_1 = require("./noop-stream");
19
- const buffer_stream_js_1 = require("./buffer-stream");
20
- const parse_extra_field_js_1 = require("./parse-extra-field");
21
- const parse_datetime_js_1 = require("./parse-datetime");
22
- const parse_buffer_js_1 = require("./parse-buffer");
17
+ const pull_stream_1 = require("./pull-stream");
18
+ const noop_stream_1 = require("./noop-stream");
19
+ const buffer_stream_1 = require("./buffer-stream");
20
+ const parse_extra_field_1 = require("./parse-extra-field");
21
+ const parse_datetime_1 = require("./parse-datetime");
22
+ const parse_buffer_1 = require("./parse-buffer");
23
23
  // Check if native zlib is available (Node.js environment)
24
24
  // In browser with polyfill, createInflateRaw may not exist or may not work properly
25
25
  const hasNativeZlib = typeof zlib_1.default?.createInflateRaw === "function" &&
@@ -103,7 +103,7 @@ function createInflateRaw() {
103
103
  }
104
104
  const endDirectorySignature = Buffer.alloc(4);
105
105
  endDirectorySignature.writeUInt32LE(0x06054b50, 0);
106
- class Parse extends pull_stream_js_1.PullStream {
106
+ class Parse extends pull_stream_1.PullStream {
107
107
  constructor(opts = {}) {
108
108
  super();
109
109
  this._opts = opts;
@@ -163,7 +163,7 @@ class Parse extends pull_stream_js_1.PullStream {
163
163
  }
164
164
  async _readCrxHeader() {
165
165
  const data = await this.pull(12);
166
- this.crxHeader = (0, parse_buffer_js_1.parse)(data, [
166
+ this.crxHeader = (0, parse_buffer_1.parse)(data, [
167
167
  ["version", 4],
168
168
  ["pubKeyLength", 4],
169
169
  ["signatureLength", 4]
@@ -176,7 +176,7 @@ class Parse extends pull_stream_js_1.PullStream {
176
176
  }
177
177
  async _readFile() {
178
178
  const data = await this.pull(26);
179
- const vars = (0, parse_buffer_js_1.parse)(data, [
179
+ const vars = (0, parse_buffer_1.parse)(data, [
180
180
  ["versionsNeededToExtract", 2],
181
181
  ["flags", 2],
182
182
  ["compressionMethod", 2],
@@ -188,7 +188,7 @@ class Parse extends pull_stream_js_1.PullStream {
188
188
  ["fileNameLength", 2],
189
189
  ["extraFieldLength", 2]
190
190
  ]);
191
- vars.lastModifiedDateTime = (0, parse_datetime_js_1.parseDateTime)(vars.lastModifiedDate || 0, vars.lastModifiedTime || 0);
191
+ vars.lastModifiedDateTime = (0, parse_datetime_1.parseDateTime)(vars.lastModifiedDate || 0, vars.lastModifiedTime || 0);
192
192
  if (this.crxHeader) {
193
193
  vars.crxHeader = this.crxHeader;
194
194
  }
@@ -198,7 +198,7 @@ class Parse extends pull_stream_js_1.PullStream {
198
198
  let __autodraining = false;
199
199
  entry.autodrain = function () {
200
200
  __autodraining = true;
201
- const draining = entry.pipe(new noop_stream_js_1.NoopStream());
201
+ const draining = entry.pipe(new noop_stream_1.NoopStream());
202
202
  draining.promise = function () {
203
203
  return new Promise((resolve, reject) => {
204
204
  draining.on("finish", resolve);
@@ -208,7 +208,7 @@ class Parse extends pull_stream_js_1.PullStream {
208
208
  return draining;
209
209
  };
210
210
  entry.buffer = function () {
211
- return (0, buffer_stream_js_1.bufferStream)(entry);
211
+ return (0, buffer_stream_1.bufferStream)(entry);
212
212
  };
213
213
  entry.path = fileName;
214
214
  entry.props = {
@@ -233,7 +233,7 @@ class Parse extends pull_stream_js_1.PullStream {
233
233
  }
234
234
  }
235
235
  const extraFieldData = await this.pull(vars.extraFieldLength || 0);
236
- const extra = (0, parse_extra_field_js_1.parseExtraField)(extraFieldData, vars);
236
+ const extra = (0, parse_extra_field_1.parseExtraField)(extraFieldData, vars);
237
237
  entry.vars = vars;
238
238
  entry.extra = extra;
239
239
  if (this._opts.forceStream) {
@@ -278,7 +278,7 @@ class Parse extends pull_stream_js_1.PullStream {
278
278
  }
279
279
  async _processDataDescriptor(entry) {
280
280
  const data = await this.pull(16);
281
- const vars = (0, parse_buffer_js_1.parse)(data, [
281
+ const vars = (0, parse_buffer_1.parse)(data, [
282
282
  ["dataDescriptorSignature", 4],
283
283
  ["crc32", 4],
284
284
  ["compressedSize", 4],
@@ -289,7 +289,7 @@ class Parse extends pull_stream_js_1.PullStream {
289
289
  }
290
290
  async _readCentralDirectoryFileHeader() {
291
291
  const data = await this.pull(42);
292
- const vars = (0, parse_buffer_js_1.parse)(data, [
292
+ const vars = (0, parse_buffer_1.parse)(data, [
293
293
  ["versionMadeBy", 2],
294
294
  ["versionsNeededToExtract", 2],
295
295
  ["flags", 2],
@@ -314,7 +314,7 @@ class Parse extends pull_stream_js_1.PullStream {
314
314
  }
315
315
  async _readEndOfCentralDirectoryRecord() {
316
316
  const data = await this.pull(18);
317
- const vars = (0, parse_buffer_js_1.parse)(data, [
317
+ const vars = (0, parse_buffer_1.parse)(data, [
318
318
  ["diskNumber", 2],
319
319
  ["diskStart", 2],
320
320
  ["numberOfRecordsOnDisk", 2],
@@ -9,7 +9,7 @@ exports.ZipParser = void 0;
9
9
  exports.parseZipEntries = parseZipEntries;
10
10
  exports.extractEntryData = extractEntryData;
11
11
  exports.extractEntryDataSync = extractEntryDataSync;
12
- const compress_js_1 = require("../zip/compress");
12
+ const compress_1 = require("../zip/compress");
13
13
  // ZIP file signatures
14
14
  const LOCAL_FILE_HEADER_SIG = 0x04034b50;
15
15
  const CENTRAL_DIR_HEADER_SIG = 0x02014b50;
@@ -322,7 +322,7 @@ async function extractEntryData(data, entry) {
322
322
  return compressedData;
323
323
  }
324
324
  else if (entry.compressionMethod === COMPRESSION_DEFLATE) {
325
- return (0, compress_js_1.decompress)(compressedData);
325
+ return (0, compress_1.decompress)(compressedData);
326
326
  }
327
327
  else {
328
328
  throw new Error(`Unsupported compression method: ${entry.compressionMethod}`);
@@ -363,7 +363,7 @@ function extractEntryDataSync(data, entry) {
363
363
  return compressedData;
364
364
  }
365
365
  else if (entry.compressionMethod === COMPRESSION_DEFLATE) {
366
- return (0, compress_js_1.decompressSync)(compressedData);
366
+ return (0, compress_1.decompressSync)(compressedData);
367
367
  }
368
368
  else {
369
369
  throw new Error(`Unsupported compression method: ${entry.compressionMethod}`);
@@ -433,6 +433,17 @@ class ZipParser {
433
433
  }
434
434
  return result;
435
435
  }
436
+ /**
437
+ * Extract all files (sync, Node.js only)
438
+ * Returns object with file paths as keys and Uint8Array content as values
439
+ */
440
+ extractAllSync() {
441
+ const result = {};
442
+ for (const entry of this.entries) {
443
+ result[entry.path] = extractEntryDataSync(this.data, entry);
444
+ }
445
+ return result;
446
+ }
436
447
  /**
437
448
  * Iterate over entries with async callback
438
449
  */
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ /**
3
+ * Base utility functions shared between Node.js and Browser
4
+ * Platform-independent implementations only
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.inherits = void 0;
8
+ exports.delay = delay;
9
+ exports.nop = nop;
10
+ exports.dateToExcel = dateToExcel;
11
+ exports.excelToDate = excelToDate;
12
+ exports.toIsoDateString = toIsoDateString;
13
+ exports.parsePath = parsePath;
14
+ exports.getRelsPath = getRelsPath;
15
+ exports.xmlDecode = xmlDecode;
16
+ exports.validInt = validInt;
17
+ exports.isDateFmt = isDateFmt;
18
+ exports.parseBoolean = parseBoolean;
19
+ exports.range = range;
20
+ exports.toSortedArray = toSortedArray;
21
+ exports.objectFromProps = objectFromProps;
22
+ exports.bufferToString = bufferToString;
23
+ // =============================================================================
24
+ // Basic utilities
25
+ // =============================================================================
26
+ function delay(ms) {
27
+ return new Promise(resolve => setTimeout(resolve, ms));
28
+ }
29
+ function nop() { }
30
+ const inherits = function (cls, superCtor, statics, prototype) {
31
+ cls.super_ = superCtor;
32
+ if (!prototype) {
33
+ prototype = statics;
34
+ statics = null;
35
+ }
36
+ if (statics) {
37
+ Object.keys(statics).forEach(i => {
38
+ Object.defineProperty(cls, i, Object.getOwnPropertyDescriptor(statics, i));
39
+ });
40
+ }
41
+ const properties = {
42
+ constructor: {
43
+ value: cls,
44
+ enumerable: false,
45
+ writable: false,
46
+ configurable: true
47
+ }
48
+ };
49
+ if (prototype) {
50
+ Object.keys(prototype).forEach(i => {
51
+ properties[i] = Object.getOwnPropertyDescriptor(prototype, i);
52
+ });
53
+ }
54
+ cls.prototype = Object.create(superCtor.prototype, properties);
55
+ };
56
+ exports.inherits = inherits;
57
+ // =============================================================================
58
+ // Date utilities
59
+ // =============================================================================
60
+ function dateToExcel(d, date1904) {
61
+ return 25569 + d.getTime() / (24 * 3600 * 1000) - (date1904 ? 1462 : 0);
62
+ }
63
+ function excelToDate(v, date1904) {
64
+ const millisecondSinceEpoch = Math.round((v - 25569 + (date1904 ? 1462 : 0)) * 24 * 3600 * 1000);
65
+ return new Date(millisecondSinceEpoch);
66
+ }
67
+ function toIsoDateString(dt) {
68
+ return dt.toISOString().substr(0, 10);
69
+ }
70
+ function parsePath(filepath) {
71
+ const last = filepath.lastIndexOf("/");
72
+ return {
73
+ path: filepath.substring(0, last),
74
+ name: filepath.substring(last + 1)
75
+ };
76
+ }
77
+ function getRelsPath(filepath) {
78
+ const path = parsePath(filepath);
79
+ return `${path.path}/_rels/${path.name}.rels`;
80
+ }
81
+ // =============================================================================
82
+ // XML utilities
83
+ // =============================================================================
84
+ const xmlDecodingMap = {
85
+ lt: "<",
86
+ gt: ">",
87
+ amp: "&",
88
+ quot: '"',
89
+ apos: "'"
90
+ };
91
+ function xmlDecode(text) {
92
+ return text.replace(/&(#\d+|#x[0-9A-Fa-f]+|\w+);/g, (match, entity) => {
93
+ if (entity[0] === "#") {
94
+ // Numeric character reference
95
+ const code = entity[1] === "x" ? parseInt(entity.slice(2), 16) : parseInt(entity.slice(1));
96
+ return String.fromCodePoint(code);
97
+ }
98
+ return xmlDecodingMap[entity] || match;
99
+ });
100
+ }
101
+ // =============================================================================
102
+ // Parsing utilities
103
+ // =============================================================================
104
+ function validInt(value) {
105
+ const i = typeof value === "number" ? value : parseInt(value, 10);
106
+ return Number.isNaN(i) ? 0 : i;
107
+ }
108
+ function isDateFmt(fmt) {
109
+ if (!fmt) {
110
+ return false;
111
+ }
112
+ // must not be a string fmt
113
+ if (fmt.indexOf("@") > -1) {
114
+ return false;
115
+ }
116
+ // must remove all chars inside quotes and []
117
+ let cleanFmt = fmt.replace(/\[[^\]]*]/g, "");
118
+ cleanFmt = cleanFmt.replace(/"[^"]*"/g, "");
119
+ // then check for date formatting chars
120
+ return cleanFmt.match(/[ymdhMsb]+/) !== null;
121
+ }
122
+ function parseBoolean(value) {
123
+ return value === true || value === "true" || value === 1 || value === "1";
124
+ }
125
+ // =============================================================================
126
+ // Collection utilities
127
+ // =============================================================================
128
+ function* range(start, stop, step = 1) {
129
+ const compareOrder = step > 0 ? (a, b) => a < b : (a, b) => a > b;
130
+ for (let value = start; compareOrder(value, stop); value += step) {
131
+ yield value;
132
+ }
133
+ }
134
+ function toSortedArray(values) {
135
+ const result = Array.from(values);
136
+ // If all numbers, use numeric sort
137
+ if (result.every(item => Number.isFinite(item))) {
138
+ return result.sort((a, b) => a - b);
139
+ }
140
+ return result.sort();
141
+ }
142
+ function objectFromProps(props, value = null) {
143
+ return props.reduce((result, property) => {
144
+ result[property] = value;
145
+ return result;
146
+ }, {});
147
+ }
148
+ // =============================================================================
149
+ // Buffer utilities (cross-platform)
150
+ // =============================================================================
151
+ const textDecoder = new TextDecoder("utf-8");
152
+ /**
153
+ * Convert a Buffer, ArrayBuffer, or Uint8Array to a UTF-8 string
154
+ * Works in both Node.js and browser environments
155
+ */
156
+ function bufferToString(chunk) {
157
+ if (typeof chunk === "string") {
158
+ return chunk;
159
+ }
160
+ return textDecoder.decode(chunk);
161
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * Browser utility functions
4
+ * Re-exports shared utilities and adds browser-specific implementations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.utils = exports.bufferToString = exports.objectFromProps = exports.toSortedArray = exports.range = exports.parseBoolean = exports.isDateFmt = exports.validInt = exports.xmlDecode = exports.getRelsPath = exports.parsePath = exports.toIsoDateString = exports.excelToDate = exports.dateToExcel = exports.inherits = exports.nop = exports.delay = void 0;
8
+ exports.xmlEncode = xmlEncode;
9
+ exports.fileExists = fileExists;
10
+ // Re-export all shared utilities
11
+ var utils_base_1 = require("./utils.base");
12
+ Object.defineProperty(exports, "delay", { enumerable: true, get: function () { return utils_base_1.delay; } });
13
+ Object.defineProperty(exports, "nop", { enumerable: true, get: function () { return utils_base_1.nop; } });
14
+ Object.defineProperty(exports, "inherits", { enumerable: true, get: function () { return utils_base_1.inherits; } });
15
+ Object.defineProperty(exports, "dateToExcel", { enumerable: true, get: function () { return utils_base_1.dateToExcel; } });
16
+ Object.defineProperty(exports, "excelToDate", { enumerable: true, get: function () { return utils_base_1.excelToDate; } });
17
+ Object.defineProperty(exports, "toIsoDateString", { enumerable: true, get: function () { return utils_base_1.toIsoDateString; } });
18
+ Object.defineProperty(exports, "parsePath", { enumerable: true, get: function () { return utils_base_1.parsePath; } });
19
+ Object.defineProperty(exports, "getRelsPath", { enumerable: true, get: function () { return utils_base_1.getRelsPath; } });
20
+ Object.defineProperty(exports, "xmlDecode", { enumerable: true, get: function () { return utils_base_1.xmlDecode; } });
21
+ Object.defineProperty(exports, "validInt", { enumerable: true, get: function () { return utils_base_1.validInt; } });
22
+ Object.defineProperty(exports, "isDateFmt", { enumerable: true, get: function () { return utils_base_1.isDateFmt; } });
23
+ Object.defineProperty(exports, "parseBoolean", { enumerable: true, get: function () { return utils_base_1.parseBoolean; } });
24
+ Object.defineProperty(exports, "range", { enumerable: true, get: function () { return utils_base_1.range; } });
25
+ Object.defineProperty(exports, "toSortedArray", { enumerable: true, get: function () { return utils_base_1.toSortedArray; } });
26
+ Object.defineProperty(exports, "objectFromProps", { enumerable: true, get: function () { return utils_base_1.objectFromProps; } });
27
+ Object.defineProperty(exports, "bufferToString", { enumerable: true, get: function () { return utils_base_1.bufferToString; } });
28
+ // =============================================================================
29
+ // XML encoding (Browser version with full Unicode support)
30
+ // =============================================================================
31
+ const xmlEncodingMap = {
32
+ "<": "&lt;",
33
+ ">": "&gt;",
34
+ "&": "&amp;",
35
+ '"': "&quot;",
36
+ "'": "&apos;"
37
+ };
38
+ function xmlEncode(text) {
39
+ // Handles special characters:
40
+ // 1. XML entities: < > & " '
41
+ // 2. Control characters (0x00-0x1F except tab, newline, carriage return)
42
+ // 3. Invalid XML characters: 0xFFFE, 0xFFFF
43
+ // 4. Characters that need escaping in attributes
44
+ // First pass: escape XML entities
45
+ let result = text.replace(/[<>&"']/g, char => xmlEncodingMap[char] || char);
46
+ // Second pass: handle control characters and invalid XML characters
47
+ // Valid XML chars: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
48
+ // oxlint-disable-next-line no-control-regex
49
+ result = result.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\uFFFE\uFFFF]/g, char => {
50
+ const code = char.charCodeAt(0);
51
+ // For control characters, use numeric character reference
52
+ return `&#x${code.toString(16).toUpperCase()};`;
53
+ });
54
+ // Third pass: handle invalid surrogate pairs
55
+ result = result.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g, () => "\uFFFD" // replacement character
56
+ );
57
+ return result;
58
+ }
59
+ // =============================================================================
60
+ // File system utilities (Browser stub - always returns false)
61
+ // =============================================================================
62
+ function fileExists(_path) {
63
+ return Promise.resolve(false);
64
+ }
65
+ // =============================================================================
66
+ // Legacy export for backward compatibility
67
+ // =============================================================================
68
+ const utils_base_2 = require("./utils.base");
69
+ /** @deprecated Import functions directly instead of using the utils object */
70
+ exports.utils = {
71
+ nop: utils_base_2.nop,
72
+ inherits: utils_base_2.inherits,
73
+ dateToExcel: utils_base_2.dateToExcel,
74
+ excelToDate: utils_base_2.excelToDate,
75
+ parsePath: utils_base_2.parsePath,
76
+ getRelsPath: utils_base_2.getRelsPath,
77
+ xmlEncode,
78
+ xmlDecode: utils_base_2.xmlDecode,
79
+ validInt: utils_base_2.validInt,
80
+ isDateFmt: utils_base_2.isDateFmt,
81
+ fs: {
82
+ exists: fileExists
83
+ },
84
+ toIsoDateString: utils_base_2.toIsoDateString,
85
+ parseBoolean: utils_base_2.parseBoolean,
86
+ range: utils_base_2.range,
87
+ toSortedArray: utils_base_2.toSortedArray,
88
+ objectFromProps: utils_base_2.objectFromProps
89
+ };
@@ -1,77 +1,37 @@
1
1
  "use strict";
2
+ /**
3
+ * Node.js utility functions
4
+ * Re-exports shared utilities and adds Node.js-specific implementations
5
+ */
2
6
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
7
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
8
  };
5
9
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.utils = exports.inherits = void 0;
7
- exports.delay = delay;
8
- exports.nop = nop;
9
- exports.dateToExcel = dateToExcel;
10
- exports.excelToDate = excelToDate;
11
- exports.parsePath = parsePath;
12
- exports.getRelsPath = getRelsPath;
10
+ exports.utils = exports.bufferToString = exports.objectFromProps = exports.toSortedArray = exports.range = exports.parseBoolean = exports.isDateFmt = exports.validInt = exports.xmlDecode = exports.getRelsPath = exports.parsePath = exports.toIsoDateString = exports.excelToDate = exports.dateToExcel = exports.inherits = exports.nop = exports.delay = void 0;
13
11
  exports.xmlEncode = xmlEncode;
14
- exports.xmlDecode = xmlDecode;
15
- exports.validInt = validInt;
16
- exports.isDateFmt = isDateFmt;
17
12
  exports.fileExists = fileExists;
18
- exports.toIsoDateString = toIsoDateString;
19
- exports.parseBoolean = parseBoolean;
20
- exports.range = range;
21
- exports.toSortedArray = toSortedArray;
22
- exports.objectFromProps = objectFromProps;
23
- exports.bufferToString = bufferToString;
24
13
  const fs_1 = __importDefault(require("fs"));
25
- function delay(ms) {
26
- return new Promise(resolve => setTimeout(resolve, ms));
27
- }
28
- function nop() { }
29
- // useful stuff
30
- const inherits = function (cls, superCtor, statics, prototype) {
31
- cls.super_ = superCtor;
32
- if (!prototype) {
33
- prototype = statics;
34
- statics = null;
35
- }
36
- if (statics) {
37
- Object.keys(statics).forEach(i => {
38
- Object.defineProperty(cls, i, Object.getOwnPropertyDescriptor(statics, i));
39
- });
40
- }
41
- const properties = {
42
- constructor: {
43
- value: cls,
44
- enumerable: false,
45
- writable: false,
46
- configurable: true
47
- }
48
- };
49
- if (prototype) {
50
- Object.keys(prototype).forEach(i => {
51
- properties[i] = Object.getOwnPropertyDescriptor(prototype, i);
52
- });
53
- }
54
- cls.prototype = Object.create(superCtor.prototype, properties);
55
- };
56
- exports.inherits = inherits;
57
- function dateToExcel(d, date1904) {
58
- return 25569 + d.getTime() / (24 * 3600 * 1000) - (date1904 ? 1462 : 0);
59
- }
60
- function excelToDate(v, date1904) {
61
- const millisecondSinceEpoch = Math.round((v - 25569 + (date1904 ? 1462 : 0)) * 24 * 3600 * 1000);
62
- return new Date(millisecondSinceEpoch);
63
- }
64
- function parsePath(filepath) {
65
- const last = filepath.lastIndexOf("/");
66
- return {
67
- path: filepath.substring(0, last),
68
- name: filepath.substring(last + 1)
69
- };
70
- }
71
- function getRelsPath(filepath) {
72
- const path = parsePath(filepath);
73
- return `${path.path}/_rels/${path.name}.rels`;
74
- }
14
+ // Re-export all shared utilities
15
+ var utils_base_1 = require("./utils.base");
16
+ Object.defineProperty(exports, "delay", { enumerable: true, get: function () { return utils_base_1.delay; } });
17
+ Object.defineProperty(exports, "nop", { enumerable: true, get: function () { return utils_base_1.nop; } });
18
+ Object.defineProperty(exports, "inherits", { enumerable: true, get: function () { return utils_base_1.inherits; } });
19
+ Object.defineProperty(exports, "dateToExcel", { enumerable: true, get: function () { return utils_base_1.dateToExcel; } });
20
+ Object.defineProperty(exports, "excelToDate", { enumerable: true, get: function () { return utils_base_1.excelToDate; } });
21
+ Object.defineProperty(exports, "toIsoDateString", { enumerable: true, get: function () { return utils_base_1.toIsoDateString; } });
22
+ Object.defineProperty(exports, "parsePath", { enumerable: true, get: function () { return utils_base_1.parsePath; } });
23
+ Object.defineProperty(exports, "getRelsPath", { enumerable: true, get: function () { return utils_base_1.getRelsPath; } });
24
+ Object.defineProperty(exports, "xmlDecode", { enumerable: true, get: function () { return utils_base_1.xmlDecode; } });
25
+ Object.defineProperty(exports, "validInt", { enumerable: true, get: function () { return utils_base_1.validInt; } });
26
+ Object.defineProperty(exports, "isDateFmt", { enumerable: true, get: function () { return utils_base_1.isDateFmt; } });
27
+ Object.defineProperty(exports, "parseBoolean", { enumerable: true, get: function () { return utils_base_1.parseBoolean; } });
28
+ Object.defineProperty(exports, "range", { enumerable: true, get: function () { return utils_base_1.range; } });
29
+ Object.defineProperty(exports, "toSortedArray", { enumerable: true, get: function () { return utils_base_1.toSortedArray; } });
30
+ Object.defineProperty(exports, "objectFromProps", { enumerable: true, get: function () { return utils_base_1.objectFromProps; } });
31
+ Object.defineProperty(exports, "bufferToString", { enumerable: true, get: function () { return utils_base_1.bufferToString; } });
32
+ // =============================================================================
33
+ // XML encoding (Node.js optimized version)
34
+ // =============================================================================
75
35
  // oxlint-disable-next-line no-control-regex -- Control characters are intentionally matched for XML encoding
76
36
  const xmlDecodeRegex = /[<>&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/;
77
37
  function xmlEncode(text) {
@@ -125,39 +85,9 @@ function xmlEncode(text) {
125
85
  }
126
86
  return result;
127
87
  }
128
- function xmlDecode(text) {
129
- return text.replace(/&([a-z]*);/g, c => {
130
- switch (c) {
131
- case "&lt;":
132
- return "<";
133
- case "&gt;":
134
- return ">";
135
- case "&amp;":
136
- return "&";
137
- case "&apos;":
138
- return "'";
139
- case "&quot;":
140
- return '"';
141
- default:
142
- return c;
143
- }
144
- });
145
- }
146
- function validInt(value) {
147
- const i = parseInt(value, 10);
148
- return !Number.isNaN(i) ? i : 0;
149
- }
150
- function isDateFmt(fmt) {
151
- if (!fmt) {
152
- return false;
153
- }
154
- // must remove all chars inside quotes and []
155
- fmt = fmt.replace(/\[[^\]]*]/g, "");
156
- fmt = fmt.replace(/"[^"]*"/g, "");
157
- // then check for date formatting chars
158
- const result = fmt.match(/[ymdhMsb]+/) !== null;
159
- return result;
160
- }
88
+ // =============================================================================
89
+ // File system utilities (Node.js only)
90
+ // =============================================================================
161
91
  function fileExists(path) {
162
92
  return new Promise(resolve => {
163
93
  fs_1.default.access(path, fs_1.default.constants.F_OK, err => {
@@ -165,66 +95,28 @@ function fileExists(path) {
165
95
  });
166
96
  });
167
97
  }
168
- function toIsoDateString(dt) {
169
- return dt.toISOString().substr(0, 10);
170
- }
171
- function parseBoolean(value) {
172
- return value === true || value === "true" || value === 1 || value === "1";
173
- }
174
- function* range(start, stop, step = 1) {
175
- const compareOrder = step > 0 ? (a, b) => a < b : (a, b) => a > b;
176
- for (let value = start; compareOrder(value, stop); value += step) {
177
- yield value;
178
- }
179
- }
180
- function toSortedArray(values) {
181
- const result = Array.from(values);
182
- // Note: per default, `Array.prototype.sort()` converts values
183
- // to strings when comparing. Here, if we have numbers, we use
184
- // numeric sort.
185
- if (result.every(item => Number.isFinite(item))) {
186
- const compareNumbers = (a, b) => a - b;
187
- return result.sort(compareNumbers);
188
- }
189
- return result.sort();
190
- }
191
- function objectFromProps(props, value = null) {
192
- return props.reduce((result, property) => {
193
- result[property] = value;
194
- return result;
195
- }, {});
196
- }
98
+ // =============================================================================
197
99
  // Legacy export for backward compatibility
100
+ // =============================================================================
101
+ const utils_base_2 = require("./utils.base");
198
102
  /** @deprecated Import functions directly instead of using the utils object */
199
103
  exports.utils = {
200
- nop,
201
- inherits: exports.inherits,
202
- dateToExcel,
203
- excelToDate,
204
- parsePath,
205
- getRelsPath,
104
+ nop: utils_base_2.nop,
105
+ inherits: utils_base_2.inherits,
106
+ dateToExcel: utils_base_2.dateToExcel,
107
+ excelToDate: utils_base_2.excelToDate,
108
+ parsePath: utils_base_2.parsePath,
109
+ getRelsPath: utils_base_2.getRelsPath,
206
110
  xmlEncode,
207
- xmlDecode,
208
- validInt,
209
- isDateFmt,
111
+ xmlDecode: utils_base_2.xmlDecode,
112
+ validInt: utils_base_2.validInt,
113
+ isDateFmt: utils_base_2.isDateFmt,
210
114
  fs: {
211
115
  exists: fileExists
212
116
  },
213
- toIsoDateString,
214
- parseBoolean,
215
- range,
216
- toSortedArray,
217
- objectFromProps
117
+ toIsoDateString: utils_base_2.toIsoDateString,
118
+ parseBoolean: utils_base_2.parseBoolean,
119
+ range: utils_base_2.range,
120
+ toSortedArray: utils_base_2.toSortedArray,
121
+ objectFromProps: utils_base_2.objectFromProps
218
122
  };
219
- // TextDecoder is available in ES2020+ and all modern browsers/Node.js
220
- const textDecoder = new TextDecoder("utf-8");
221
- /**
222
- * Convert a Buffer or ArrayBuffer to a UTF-8 string
223
- * Works in both Node.js and browser environments
224
- */
225
- function bufferToString(chunk) {
226
- if (typeof chunk === "string") {
227
- return chunk;
228
- }
229
- return textDecoder.decode(chunk);
230
- }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.XmlStream = void 0;
4
- const utils_js_1 = require("./utils");
4
+ const utils_1 = require("./utils");
5
5
  // constants
6
6
  const OPEN_ANGLE = "<";
7
7
  const CLOSE_ANGLE = ">";
@@ -10,7 +10,7 @@ const CLOSE_SLASH_ANGLE = "/>";
10
10
  // Chunk size for periodic consolidation (reduces final join overhead)
11
11
  const CHUNK_SIZE = 10000;
12
12
  function pushAttribute(xml, name, value) {
13
- xml.push(` ${name}="${(0, utils_js_1.xmlEncode)(value.toString())}"`);
13
+ xml.push(` ${name}="${(0, utils_1.xmlEncode)(value.toString())}"`);
14
14
  }
15
15
  function pushAttributes(xml, attributes) {
16
16
  if (attributes) {
@@ -86,7 +86,7 @@ class XmlStream {
86
86
  this.open = false;
87
87
  }
88
88
  this.leaf = false;
89
- xml.push((0, utils_js_1.xmlEncode)(text.toString()));
89
+ xml.push((0, utils_1.xmlEncode)(text.toString()));
90
90
  }
91
91
  writeXml(xml) {
92
92
  if (this.open) {