@lyit/exceljs 4.4.1

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 (543) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +3398 -0
  3. package/README_zh.md +2878 -0
  4. package/dist/LICENSE +22 -0
  5. package/dist/es5/csv/csv.js +182 -0
  6. package/dist/es5/csv/csv.js.map +1 -0
  7. package/dist/es5/csv/line-buffer.js +68 -0
  8. package/dist/es5/csv/line-buffer.js.map +1 -0
  9. package/dist/es5/csv/stream-converter.js +110 -0
  10. package/dist/es5/csv/stream-converter.js.map +1 -0
  11. package/dist/es5/doc/anchor.js +73 -0
  12. package/dist/es5/doc/anchor.js.map +1 -0
  13. package/dist/es5/doc/cell.js +960 -0
  14. package/dist/es5/doc/cell.js.map +1 -0
  15. package/dist/es5/doc/column.js +274 -0
  16. package/dist/es5/doc/column.js.map +1 -0
  17. package/dist/es5/doc/data-validations.js +18 -0
  18. package/dist/es5/doc/data-validations.js.map +1 -0
  19. package/dist/es5/doc/defined-names.js +173 -0
  20. package/dist/es5/doc/defined-names.js.map +1 -0
  21. package/dist/es5/doc/enums.js +49 -0
  22. package/dist/es5/doc/enums.js.map +1 -0
  23. package/dist/es5/doc/form-checkbox.js +342 -0
  24. package/dist/es5/doc/form-checkbox.js.map +1 -0
  25. package/dist/es5/doc/image.js +69 -0
  26. package/dist/es5/doc/image.js.map +1 -0
  27. package/dist/es5/doc/modelcontainer.js +16 -0
  28. package/dist/es5/doc/modelcontainer.js.map +1 -0
  29. package/dist/es5/doc/note.js +64 -0
  30. package/dist/es5/doc/note.js.map +1 -0
  31. package/dist/es5/doc/pivot-table.js +247 -0
  32. package/dist/es5/doc/pivot-table.js.map +1 -0
  33. package/dist/es5/doc/range.js +229 -0
  34. package/dist/es5/doc/range.js.map +1 -0
  35. package/dist/es5/doc/row.js +391 -0
  36. package/dist/es5/doc/row.js.map +1 -0
  37. package/dist/es5/doc/table.js +542 -0
  38. package/dist/es5/doc/table.js.map +1 -0
  39. package/dist/es5/doc/workbook.js +221 -0
  40. package/dist/es5/doc/workbook.js.map +1 -0
  41. package/dist/es5/doc/worksheet.js +996 -0
  42. package/dist/es5/doc/worksheet.js.map +1 -0
  43. package/dist/es5/exceljs.bare.js +14 -0
  44. package/dist/es5/exceljs.bare.js.map +1 -0
  45. package/dist/es5/exceljs.browser.js +36 -0
  46. package/dist/es5/exceljs.browser.js.map +1 -0
  47. package/dist/es5/exceljs.nodejs.js +15 -0
  48. package/dist/es5/exceljs.nodejs.js.map +1 -0
  49. package/dist/es5/index.js +15 -0
  50. package/dist/es5/stream/xlsx/hyperlink-reader.js +90 -0
  51. package/dist/es5/stream/xlsx/hyperlink-reader.js.map +1 -0
  52. package/dist/es5/stream/xlsx/sheet-comments-writer.js +94 -0
  53. package/dist/es5/stream/xlsx/sheet-comments-writer.js.map +1 -0
  54. package/dist/es5/stream/xlsx/sheet-rels-writer.js +94 -0
  55. package/dist/es5/stream/xlsx/sheet-rels-writer.js.map +1 -0
  56. package/dist/es5/stream/xlsx/workbook-reader.js +361 -0
  57. package/dist/es5/stream/xlsx/workbook-reader.js.map +1 -0
  58. package/dist/es5/stream/xlsx/workbook-writer.js +347 -0
  59. package/dist/es5/stream/xlsx/workbook-writer.js.map +1 -0
  60. package/dist/es5/stream/xlsx/worksheet-reader.js +392 -0
  61. package/dist/es5/stream/xlsx/worksheet-reader.js.map +1 -0
  62. package/dist/es5/stream/xlsx/worksheet-writer.js +652 -0
  63. package/dist/es5/stream/xlsx/worksheet-writer.js.map +1 -0
  64. package/dist/es5/utils/auto-drain.js +18 -0
  65. package/dist/es5/utils/auto-drain.js.map +1 -0
  66. package/dist/es5/utils/browser-buffer-decode.js +15 -0
  67. package/dist/es5/utils/browser-buffer-decode.js.map +1 -0
  68. package/dist/es5/utils/browser-buffer-encode.js +18 -0
  69. package/dist/es5/utils/browser-buffer-encode.js.map +1 -0
  70. package/dist/es5/utils/cell-matrix.js +149 -0
  71. package/dist/es5/utils/cell-matrix.js.map +1 -0
  72. package/dist/es5/utils/col-cache.js +258 -0
  73. package/dist/es5/utils/col-cache.js.map +1 -0
  74. package/dist/es5/utils/copy-style.js +43 -0
  75. package/dist/es5/utils/copy-style.js.map +1 -0
  76. package/dist/es5/utils/encryptor.js +58 -0
  77. package/dist/es5/utils/encryptor.js.map +1 -0
  78. package/dist/es5/utils/iterate-stream.js +46 -0
  79. package/dist/es5/utils/iterate-stream.js.map +1 -0
  80. package/dist/es5/utils/parse-sax.js +66 -0
  81. package/dist/es5/utils/parse-sax.js.map +1 -0
  82. package/dist/es5/utils/shared-formula.js +42 -0
  83. package/dist/es5/utils/shared-formula.js.map +1 -0
  84. package/dist/es5/utils/shared-strings.js +37 -0
  85. package/dist/es5/utils/shared-strings.js.map +1 -0
  86. package/dist/es5/utils/stream-base64.js +66 -0
  87. package/dist/es5/utils/stream-base64.js.map +1 -0
  88. package/dist/es5/utils/stream-buf.js +365 -0
  89. package/dist/es5/utils/stream-buf.js.map +1 -0
  90. package/dist/es5/utils/string-buf.js +73 -0
  91. package/dist/es5/utils/string-buf.js.map +1 -0
  92. package/dist/es5/utils/string-builder.js +32 -0
  93. package/dist/es5/utils/string-builder.js.map +1 -0
  94. package/dist/es5/utils/stuttered-pipe.js +61 -0
  95. package/dist/es5/utils/stuttered-pipe.js.map +1 -0
  96. package/dist/es5/utils/typed-stack.js +23 -0
  97. package/dist/es5/utils/typed-stack.js.map +1 -0
  98. package/dist/es5/utils/under-dash.js +168 -0
  99. package/dist/es5/utils/under-dash.js.map +1 -0
  100. package/dist/es5/utils/utils.js +205 -0
  101. package/dist/es5/utils/utils.js.map +1 -0
  102. package/dist/es5/utils/xml-stream.js +151 -0
  103. package/dist/es5/utils/xml-stream.js.map +1 -0
  104. package/dist/es5/utils/zip-stream.js +79 -0
  105. package/dist/es5/utils/zip-stream.js.map +1 -0
  106. package/dist/es5/xlsx/defaultnumformats.js +230 -0
  107. package/dist/es5/xlsx/defaultnumformats.js.map +1 -0
  108. package/dist/es5/xlsx/rel-type.js +22 -0
  109. package/dist/es5/xlsx/rel-type.js.map +1 -0
  110. package/dist/es5/xlsx/xform/base-xform.js +139 -0
  111. package/dist/es5/xlsx/xform/base-xform.js.map +1 -0
  112. package/dist/es5/xlsx/xform/book/defined-name-xform.js +85 -0
  113. package/dist/es5/xlsx/xform/book/defined-name-xform.js.map +1 -0
  114. package/dist/es5/xlsx/xform/book/sheet-xform.js +32 -0
  115. package/dist/es5/xlsx/xform/book/sheet-xform.js.map +1 -0
  116. package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js +24 -0
  117. package/dist/es5/xlsx/xform/book/workbook-calc-properties-xform.js.map +1 -0
  118. package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js +27 -0
  119. package/dist/es5/xlsx/xform/book/workbook-pivot-cache-xform.js.map +1 -0
  120. package/dist/es5/xlsx/xform/book/workbook-properties-xform.js +27 -0
  121. package/dist/es5/xlsx/xform/book/workbook-properties-xform.js.map +1 -0
  122. package/dist/es5/xlsx/xform/book/workbook-view-xform.js +51 -0
  123. package/dist/es5/xlsx/xform/book/workbook-view-xform.js.map +1 -0
  124. package/dist/es5/xlsx/xform/book/workbook-xform.js +244 -0
  125. package/dist/es5/xlsx/xform/book/workbook-xform.js.map +1 -0
  126. package/dist/es5/xlsx/xform/comment/comment-xform.js +103 -0
  127. package/dist/es5/xlsx/xform/comment/comment-xform.js.map +1 -0
  128. package/dist/es5/xlsx/xform/comment/comments-xform.js +76 -0
  129. package/dist/es5/xlsx/xform/comment/comments-xform.js.map +1 -0
  130. package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js +35 -0
  131. package/dist/es5/xlsx/xform/comment/style/vml-position-xform.js.map +1 -0
  132. package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js +32 -0
  133. package/dist/es5/xlsx/xform/comment/style/vml-protection-xform.js.map +1 -0
  134. package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js +53 -0
  135. package/dist/es5/xlsx/xform/comment/vml-anchor-xform.js.map +1 -0
  136. package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js +98 -0
  137. package/dist/es5/xlsx/xform/comment/vml-client-data-xform.js.map +1 -0
  138. package/dist/es5/xlsx/xform/comment/vml-notes-xform.js +235 -0
  139. package/dist/es5/xlsx/xform/comment/vml-notes-xform.js.map +1 -0
  140. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js +93 -0
  141. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +1 -0
  142. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +61 -0
  143. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +1 -0
  144. package/dist/es5/xlsx/xform/composite-xform.js +51 -0
  145. package/dist/es5/xlsx/xform/composite-xform.js.map +1 -0
  146. package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js +30 -0
  147. package/dist/es5/xlsx/xform/core/app-heading-pairs-xform.js.map +1 -0
  148. package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js +27 -0
  149. package/dist/es5/xlsx/xform/core/app-titles-of-parts-xform.js.map +1 -0
  150. package/dist/es5/xlsx/xform/core/app-xform.js +93 -0
  151. package/dist/es5/xlsx/xform/core/app-xform.js.map +1 -0
  152. package/dist/es5/xlsx/xform/core/content-types-xform.js +198 -0
  153. package/dist/es5/xlsx/xform/core/content-types-xform.js.map +1 -0
  154. package/dist/es5/xlsx/xform/core/core-xform.js +160 -0
  155. package/dist/es5/xlsx/xform/core/core-xform.js.map +1 -0
  156. package/dist/es5/xlsx/xform/core/relationship-xform.js +23 -0
  157. package/dist/es5/xlsx/xform/core/relationship-xform.js.map +1 -0
  158. package/dist/es5/xlsx/xform/core/relationships-xform.js +65 -0
  159. package/dist/es5/xlsx/xform/core/relationships-xform.js.map +1 -0
  160. package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js +47 -0
  161. package/dist/es5/xlsx/xform/drawing/base-cell-anchor-xform.js.map +1 -0
  162. package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js +61 -0
  163. package/dist/es5/xlsx/xform/drawing/blip-fill-xform.js.map +1 -0
  164. package/dist/es5/xlsx/xform/drawing/blip-xform.js +39 -0
  165. package/dist/es5/xlsx/xform/drawing/blip-xform.js.map +1 -0
  166. package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js +35 -0
  167. package/dist/es5/xlsx/xform/drawing/c-nv-pic-pr-xform.js.map +1 -0
  168. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +62 -0
  169. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +1 -0
  170. package/dist/es5/xlsx/xform/drawing/cell-position-xform.js +82 -0
  171. package/dist/es5/xlsx/xform/drawing/cell-position-xform.js.map +1 -0
  172. package/dist/es5/xlsx/xform/drawing/ctrl-prop-xform.js +75 -0
  173. package/dist/es5/xlsx/xform/drawing/ctrl-prop-xform.js.map +1 -0
  174. package/dist/es5/xlsx/xform/drawing/drawing-xform.js +98 -0
  175. package/dist/es5/xlsx/xform/drawing/drawing-xform.js.map +1 -0
  176. package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js +40 -0
  177. package/dist/es5/xlsx/xform/drawing/ext-lst-xform.js.map +1 -0
  178. package/dist/es5/xlsx/xform/drawing/ext-xform.js +38 -0
  179. package/dist/es5/xlsx/xform/drawing/ext-xform.js.map +1 -0
  180. package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js +38 -0
  181. package/dist/es5/xlsx/xform/drawing/hlink-click-xform.js.map +1 -0
  182. package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js +59 -0
  183. package/dist/es5/xlsx/xform/drawing/nv-pic-pr-xform.js.map +1 -0
  184. package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -0
  185. package/dist/es5/xlsx/xform/drawing/one-cell-anchor-xform.js.map +1 -0
  186. package/dist/es5/xlsx/xform/drawing/pic-xform.js +67 -0
  187. package/dist/es5/xlsx/xform/drawing/pic-xform.js.map +1 -0
  188. package/dist/es5/xlsx/xform/drawing/sp-pr.js +30 -0
  189. package/dist/es5/xlsx/xform/drawing/sp-pr.js.map +1 -0
  190. package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -0
  191. package/dist/es5/xlsx/xform/drawing/two-cell-anchor-xform.js.map +1 -0
  192. package/dist/es5/xlsx/xform/list-xform.js +91 -0
  193. package/dist/es5/xlsx/xform/list-xform.js.map +1 -0
  194. package/dist/es5/xlsx/xform/pivot-table/cache-field.js +72 -0
  195. package/dist/es5/xlsx/xform/pivot-table/cache-field.js.map +1 -0
  196. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +74 -0
  197. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js.map +1 -0
  198. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js +100 -0
  199. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js.map +1 -0
  200. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js +229 -0
  201. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js.map +1 -0
  202. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +40 -0
  203. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +1 -0
  204. package/dist/es5/xlsx/xform/sheet/cell-xform.js +450 -0
  205. package/dist/es5/xlsx/xform/sheet/cell-xform.js.map +1 -0
  206. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +282 -0
  207. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +1 -0
  208. package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js +25 -0
  209. package/dist/es5/xlsx/xform/sheet/cf/cfvo-xform.js.map +1 -0
  210. package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js +38 -0
  211. package/dist/es5/xlsx/xform/sheet/cf/color-scale-xform.js.map +1 -0
  212. package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js +45 -0
  213. package/dist/es5/xlsx/xform/sheet/cf/conditional-formatting-xform.js.map +1 -0
  214. package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js +77 -0
  215. package/dist/es5/xlsx/xform/sheet/cf/conditional-formattings-xform.js.map +1 -0
  216. package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js +54 -0
  217. package/dist/es5/xlsx/xform/sheet/cf/databar-xform.js.map +1 -0
  218. package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +71 -0
  219. package/dist/es5/xlsx/xform/sheet/cf/ext-lst-ref-xform.js.map +1 -0
  220. package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js +22 -0
  221. package/dist/es5/xlsx/xform/sheet/cf/formula-xform.js.map +1 -0
  222. package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js +43 -0
  223. package/dist/es5/xlsx/xform/sheet/cf/icon-set-xform.js.map +1 -0
  224. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +28 -0
  225. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js.map +1 -0
  226. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +88 -0
  227. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +1 -0
  228. package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +38 -0
  229. package/dist/es5/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js.map +1 -0
  230. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +52 -0
  231. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js.map +1 -0
  232. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +43 -0
  233. package/dist/es5/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js.map +1 -0
  234. package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +82 -0
  235. package/dist/es5/xlsx/xform/sheet/cf-ext/databar-ext-xform.js.map +1 -0
  236. package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js +22 -0
  237. package/dist/es5/xlsx/xform/sheet/cf-ext/f-ext-xform.js.map +1 -0
  238. package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +66 -0
  239. package/dist/es5/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js.map +1 -0
  240. package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +22 -0
  241. package/dist/es5/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js.map +1 -0
  242. package/dist/es5/xlsx/xform/sheet/col-xform.js +78 -0
  243. package/dist/es5/xlsx/xform/sheet/col-xform.js.map +1 -0
  244. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +247 -0
  245. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +1 -0
  246. package/dist/es5/xlsx/xform/sheet/dimension-xform.js +28 -0
  247. package/dist/es5/xlsx/xform/sheet/dimension-xform.js.map +1 -0
  248. package/dist/es5/xlsx/xform/sheet/drawing-xform.js +32 -0
  249. package/dist/es5/xlsx/xform/sheet/drawing-xform.js.map +1 -0
  250. package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js +69 -0
  251. package/dist/es5/xlsx/xform/sheet/ext-lst-xform.js.map +1 -0
  252. package/dist/es5/xlsx/xform/sheet/header-footer-xform.js +126 -0
  253. package/dist/es5/xlsx/xform/sheet/header-footer-xform.js.map +1 -0
  254. package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js +50 -0
  255. package/dist/es5/xlsx/xform/sheet/hyperlink-xform.js.map +1 -0
  256. package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js +26 -0
  257. package/dist/es5/xlsx/xform/sheet/merge-cell-xform.js.map +1 -0
  258. package/dist/es5/xlsx/xform/sheet/merges.js +52 -0
  259. package/dist/es5/xlsx/xform/sheet/merges.js.map +1 -0
  260. package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js +35 -0
  261. package/dist/es5/xlsx/xform/sheet/outline-properties-xform.js.map +1 -0
  262. package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js +24 -0
  263. package/dist/es5/xlsx/xform/sheet/page-breaks-xform.js.map +1 -0
  264. package/dist/es5/xlsx/xform/sheet/page-margins-xform.js +46 -0
  265. package/dist/es5/xlsx/xform/sheet/page-margins-xform.js.map +1 -0
  266. package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js +32 -0
  267. package/dist/es5/xlsx/xform/sheet/page-setup-properties-xform.js.map +1 -0
  268. package/dist/es5/xlsx/xform/sheet/page-setup-xform.js +99 -0
  269. package/dist/es5/xlsx/xform/sheet/page-setup-xform.js.map +1 -0
  270. package/dist/es5/xlsx/xform/sheet/picture-xform.js +32 -0
  271. package/dist/es5/xlsx/xform/sheet/picture-xform.js.map +1 -0
  272. package/dist/es5/xlsx/xform/sheet/print-options-xform.js +45 -0
  273. package/dist/es5/xlsx/xform/sheet/print-options-xform.js.map +1 -0
  274. package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js +37 -0
  275. package/dist/es5/xlsx/xform/sheet/row-breaks-xform.js.map +1 -0
  276. package/dist/es5/xlsx/xform/sheet/row-xform.js +131 -0
  277. package/dist/es5/xlsx/xform/sheet/row-xform.js.map +1 -0
  278. package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js +63 -0
  279. package/dist/es5/xlsx/xform/sheet/sheet-format-properties-xform.js.map +1 -0
  280. package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js +83 -0
  281. package/dist/es5/xlsx/xform/sheet/sheet-properties-xform.js.map +1 -0
  282. package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js +84 -0
  283. package/dist/es5/xlsx/xform/sheet/sheet-protection-xform.js.map +1 -0
  284. package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js +190 -0
  285. package/dist/es5/xlsx/xform/sheet/sheet-view-xform.js.map +1 -0
  286. package/dist/es5/xlsx/xform/sheet/table-part-xform.js +32 -0
  287. package/dist/es5/xlsx/xform/sheet/table-part-xform.js.map +1 -0
  288. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js +622 -0
  289. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +1 -0
  290. package/dist/es5/xlsx/xform/simple/boolean-xform.js +27 -0
  291. package/dist/es5/xlsx/xform/simple/boolean-xform.js.map +1 -0
  292. package/dist/es5/xlsx/xform/simple/date-xform.js +58 -0
  293. package/dist/es5/xlsx/xform/simple/date-xform.js.map +1 -0
  294. package/dist/es5/xlsx/xform/simple/float-xform.js +47 -0
  295. package/dist/es5/xlsx/xform/simple/float-xform.js.map +1 -0
  296. package/dist/es5/xlsx/xform/simple/integer-xform.js +53 -0
  297. package/dist/es5/xlsx/xform/simple/integer-xform.js.map +1 -0
  298. package/dist/es5/xlsx/xform/simple/string-xform.js +47 -0
  299. package/dist/es5/xlsx/xform/simple/string-xform.js.map +1 -0
  300. package/dist/es5/xlsx/xform/static-xform.js +61 -0
  301. package/dist/es5/xlsx/xform/static-xform.js.map +1 -0
  302. package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js +98 -0
  303. package/dist/es5/xlsx/xform/strings/phonetic-text-xform.js.map +1 -0
  304. package/dist/es5/xlsx/xform/strings/rich-text-xform.js +92 -0
  305. package/dist/es5/xlsx/xform/strings/rich-text-xform.js.map +1 -0
  306. package/dist/es5/xlsx/xform/strings/shared-string-xform.js +99 -0
  307. package/dist/es5/xlsx/xform/strings/shared-string-xform.js.map +1 -0
  308. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js +116 -0
  309. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +1 -0
  310. package/dist/es5/xlsx/xform/strings/text-xform.js +39 -0
  311. package/dist/es5/xlsx/xform/strings/text-xform.js.map +1 -0
  312. package/dist/es5/xlsx/xform/style/alignment-xform.js +139 -0
  313. package/dist/es5/xlsx/xform/style/alignment-xform.js.map +1 -0
  314. package/dist/es5/xlsx/xform/style/border-xform.js +185 -0
  315. package/dist/es5/xlsx/xform/style/border-xform.js.map +1 -0
  316. package/dist/es5/xlsx/xform/style/color-xform.js +66 -0
  317. package/dist/es5/xlsx/xform/style/color-xform.js.map +1 -0
  318. package/dist/es5/xlsx/xform/style/dxf-xform.js +106 -0
  319. package/dist/es5/xlsx/xform/style/dxf-xform.js.map +1 -0
  320. package/dist/es5/xlsx/xform/style/fill-xform.js +307 -0
  321. package/dist/es5/xlsx/xform/style/fill-xform.js.map +1 -0
  322. package/dist/es5/xlsx/xform/style/font-xform.js +175 -0
  323. package/dist/es5/xlsx/xform/style/font-xform.js.map +1 -0
  324. package/dist/es5/xlsx/xform/style/numfmt-xform.js +58 -0
  325. package/dist/es5/xlsx/xform/style/numfmt-xform.js.map +1 -0
  326. package/dist/es5/xlsx/xform/style/protection-xform.js +53 -0
  327. package/dist/es5/xlsx/xform/style/protection-xform.js.map +1 -0
  328. package/dist/es5/xlsx/xform/style/style-xform.js +118 -0
  329. package/dist/es5/xlsx/xform/style/style-xform.js.map +1 -0
  330. package/dist/es5/xlsx/xform/style/styles-xform.js +611 -0
  331. package/dist/es5/xlsx/xform/style/styles-xform.js.map +1 -0
  332. package/dist/es5/xlsx/xform/style/underline-xform.js +46 -0
  333. package/dist/es5/xlsx/xform/style/underline-xform.js.map +1 -0
  334. package/dist/es5/xlsx/xform/table/auto-filter-xform.js +75 -0
  335. package/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +1 -0
  336. package/dist/es5/xlsx/xform/table/custom-filter-xform.js +30 -0
  337. package/dist/es5/xlsx/xform/table/custom-filter-xform.js.map +1 -0
  338. package/dist/es5/xlsx/xform/table/filter-column-xform.js +92 -0
  339. package/dist/es5/xlsx/xform/table/filter-column-xform.js.map +1 -0
  340. package/dist/es5/xlsx/xform/table/filter-xform.js +28 -0
  341. package/dist/es5/xlsx/xform/table/filter-xform.js.map +1 -0
  342. package/dist/es5/xlsx/xform/table/table-column-xform.js +42 -0
  343. package/dist/es5/xlsx/xform/table/table-column-xform.js.map +1 -0
  344. package/dist/es5/xlsx/xform/table/table-style-info-xform.js +40 -0
  345. package/dist/es5/xlsx/xform/table/table-style-info-xform.js.map +1 -0
  346. package/dist/es5/xlsx/xform/table/table-xform.js +125 -0
  347. package/dist/es5/xlsx/xform/table/table-xform.js.map +1 -0
  348. package/dist/es5/xlsx/xlsx.js +1109 -0
  349. package/dist/es5/xlsx/xlsx.js.map +1 -0
  350. package/dist/es5/xlsx/xml/theme1.js +5 -0
  351. package/dist/es5/xlsx/xml/theme1.js.map +1 -0
  352. package/dist/exceljs.bare.js +65234 -0
  353. package/dist/exceljs.bare.js.map +889 -0
  354. package/dist/exceljs.bare.min.js +45 -0
  355. package/dist/exceljs.bare.min.js.map +1 -0
  356. package/dist/exceljs.js +69987 -0
  357. package/dist/exceljs.js.map +1211 -0
  358. package/dist/exceljs.min.js +45 -0
  359. package/dist/exceljs.min.js.map +1 -0
  360. package/excel.js +13 -0
  361. package/index.d.ts +2041 -0
  362. package/index.ts +2 -0
  363. package/lib/csv/csv.js +191 -0
  364. package/lib/csv/line-buffer.js +74 -0
  365. package/lib/csv/stream-converter.js +135 -0
  366. package/lib/doc/anchor.js +91 -0
  367. package/lib/doc/cell.js +1124 -0
  368. package/lib/doc/column.js +320 -0
  369. package/lib/doc/data/theme1.json +234 -0
  370. package/lib/doc/data-validations.js +19 -0
  371. package/lib/doc/defined-names.js +196 -0
  372. package/lib/doc/enums.js +48 -0
  373. package/lib/doc/form-checkbox.js +336 -0
  374. package/lib/doc/image.js +59 -0
  375. package/lib/doc/modelcontainer.js +18 -0
  376. package/lib/doc/note.js +65 -0
  377. package/lib/doc/pivot-table.js +239 -0
  378. package/lib/doc/range.js +257 -0
  379. package/lib/doc/row.js +424 -0
  380. package/lib/doc/table.js +559 -0
  381. package/lib/doc/workbook.js +240 -0
  382. package/lib/doc/worksheet.js +1041 -0
  383. package/lib/exceljs.bare.js +13 -0
  384. package/lib/exceljs.browser.js +36 -0
  385. package/lib/exceljs.nodejs.js +14 -0
  386. package/lib/stream/xlsx/hyperlink-reader.js +83 -0
  387. package/lib/stream/xlsx/sheet-comments-writer.js +121 -0
  388. package/lib/stream/xlsx/sheet-rels-writer.js +119 -0
  389. package/lib/stream/xlsx/workbook-reader.js +336 -0
  390. package/lib/stream/xlsx/workbook-writer.js +347 -0
  391. package/lib/stream/xlsx/worksheet-reader.js +374 -0
  392. package/lib/stream/xlsx/worksheet-writer.js +717 -0
  393. package/lib/utils/auto-drain.js +15 -0
  394. package/lib/utils/browser-buffer-decode.js +14 -0
  395. package/lib/utils/browser-buffer-encode.js +15 -0
  396. package/lib/utils/cell-matrix.js +165 -0
  397. package/lib/utils/col-cache.js +287 -0
  398. package/lib/utils/copy-style.js +43 -0
  399. package/lib/utils/encryptor.js +55 -0
  400. package/lib/utils/iterate-stream.js +48 -0
  401. package/lib/utils/parse-sax.js +43 -0
  402. package/lib/utils/shared-formula.js +44 -0
  403. package/lib/utils/shared-strings.js +42 -0
  404. package/lib/utils/stream-base64.js +72 -0
  405. package/lib/utils/stream-buf.js +387 -0
  406. package/lib/utils/string-buf.js +82 -0
  407. package/lib/utils/string-builder.js +35 -0
  408. package/lib/utils/stuttered-pipe.js +67 -0
  409. package/lib/utils/typed-stack.js +24 -0
  410. package/lib/utils/under-dash.js +184 -0
  411. package/lib/utils/utils.js +206 -0
  412. package/lib/utils/xml-stream.js +169 -0
  413. package/lib/utils/zip-stream.js +87 -0
  414. package/lib/xlsx/.rels +11 -0
  415. package/lib/xlsx/calcChain.xml +6 -0
  416. package/lib/xlsx/core.xml +7 -0
  417. package/lib/xlsx/defaultnumformats.js +153 -0
  418. package/lib/xlsx/rel-type.js +27 -0
  419. package/lib/xlsx/styles.xml +41 -0
  420. package/lib/xlsx/workbook.xml +16 -0
  421. package/lib/xlsx/xform/base-xform.js +145 -0
  422. package/lib/xlsx/xform/book/defined-name-xform.js +91 -0
  423. package/lib/xlsx/xform/book/sheet-xform.js +34 -0
  424. package/lib/xlsx/xform/book/workbook-calc-properties-xform.js +26 -0
  425. package/lib/xlsx/xform/book/workbook-pivot-cache-xform.js +29 -0
  426. package/lib/xlsx/xform/book/workbook-properties-xform.js +29 -0
  427. package/lib/xlsx/xform/book/workbook-view-xform.js +53 -0
  428. package/lib/xlsx/xform/book/workbook-xform.js +265 -0
  429. package/lib/xlsx/xform/comment/comment-xform.js +105 -0
  430. package/lib/xlsx/xform/comment/comments-xform.js +82 -0
  431. package/lib/xlsx/xform/comment/style/vml-position-xform.js +39 -0
  432. package/lib/xlsx/xform/comment/style/vml-protection-xform.js +36 -0
  433. package/lib/xlsx/xform/comment/vml-anchor-xform.js +60 -0
  434. package/lib/xlsx/xform/comment/vml-client-data-xform.js +92 -0
  435. package/lib/xlsx/xform/comment/vml-notes-xform.js +217 -0
  436. package/lib/xlsx/xform/comment/vml-shape-xform.js +95 -0
  437. package/lib/xlsx/xform/comment/vml-textbox-xform.js +64 -0
  438. package/lib/xlsx/xform/composite-xform.js +56 -0
  439. package/lib/xlsx/xform/core/app-heading-pairs-xform.js +32 -0
  440. package/lib/xlsx/xform/core/app-titles-of-parts-xform.js +28 -0
  441. package/lib/xlsx/xform/core/app-xform.js +100 -0
  442. package/lib/xlsx/xform/core/content-types-xform.js +211 -0
  443. package/lib/xlsx/xform/core/core-xform.js +142 -0
  444. package/lib/xlsx/xform/core/relationship-xform.js +25 -0
  445. package/lib/xlsx/xform/core/relationships-xform.js +73 -0
  446. package/lib/xlsx/xform/drawing/base-cell-anchor-xform.js +48 -0
  447. package/lib/xlsx/xform/drawing/blip-fill-xform.js +71 -0
  448. package/lib/xlsx/xform/drawing/blip-xform.js +42 -0
  449. package/lib/xlsx/xform/drawing/c-nv-pic-pr-xform.js +38 -0
  450. package/lib/xlsx/xform/drawing/c-nv-pr-xform.js +68 -0
  451. package/lib/xlsx/xform/drawing/cell-position-xform.js +77 -0
  452. package/lib/xlsx/xform/drawing/ctrl-prop-xform.js +74 -0
  453. package/lib/xlsx/xform/drawing/drawing-xform.js +109 -0
  454. package/lib/xlsx/xform/drawing/ext-lst-xform.js +43 -0
  455. package/lib/xlsx/xform/drawing/ext-xform.js +44 -0
  456. package/lib/xlsx/xform/drawing/hlink-click-xform.js +41 -0
  457. package/lib/xlsx/xform/drawing/nv-pic-pr-xform.js +65 -0
  458. package/lib/xlsx/xform/drawing/one-cell-anchor-xform.js +63 -0
  459. package/lib/xlsx/xform/drawing/pic-xform.js +77 -0
  460. package/lib/xlsx/xform/drawing/sp-pr.js +17 -0
  461. package/lib/xlsx/xform/drawing/two-cell-anchor-xform.js +62 -0
  462. package/lib/xlsx/xform/list-xform.js +95 -0
  463. package/lib/xlsx/xform/pivot-table/cache-field.js +74 -0
  464. package/lib/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +77 -0
  465. package/lib/xlsx/xform/pivot-table/pivot-cache-records-xform.js +107 -0
  466. package/lib/xlsx/xform/pivot-table/pivot-table-xform.js +265 -0
  467. package/lib/xlsx/xform/sheet/auto-filter-xform.js +38 -0
  468. package/lib/xlsx/xform/sheet/cell-xform.js +498 -0
  469. package/lib/xlsx/xform/sheet/cf/cf-rule-xform.js +308 -0
  470. package/lib/xlsx/xform/sheet/cf/cfvo-xform.js +27 -0
  471. package/lib/xlsx/xform/sheet/cf/color-scale-xform.js +45 -0
  472. package/lib/xlsx/xform/sheet/cf/conditional-formatting-xform.js +48 -0
  473. package/lib/xlsx/xform/sheet/cf/conditional-formattings-xform.js +92 -0
  474. package/lib/xlsx/xform/sheet/cf/databar-xform.js +56 -0
  475. package/lib/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +87 -0
  476. package/lib/xlsx/xform/sheet/cf/formula-xform.js +25 -0
  477. package/lib/xlsx/xform/sheet/cf/icon-set-xform.js +47 -0
  478. package/lib/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +27 -0
  479. package/lib/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +98 -0
  480. package/lib/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +43 -0
  481. package/lib/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +62 -0
  482. package/lib/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +50 -0
  483. package/lib/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +102 -0
  484. package/lib/xlsx/xform/sheet/cf-ext/f-ext-xform.js +25 -0
  485. package/lib/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +73 -0
  486. package/lib/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +25 -0
  487. package/lib/xlsx/xform/sheet/col-xform.js +86 -0
  488. package/lib/xlsx/xform/sheet/data-validations-xform.js +257 -0
  489. package/lib/xlsx/xform/sheet/dimension-xform.js +29 -0
  490. package/lib/xlsx/xform/sheet/drawing-xform.js +33 -0
  491. package/lib/xlsx/xform/sheet/ext-lst-xform.js +86 -0
  492. package/lib/xlsx/xform/sheet/header-footer-xform.js +146 -0
  493. package/lib/xlsx/xform/sheet/hyperlink-xform.js +54 -0
  494. package/lib/xlsx/xform/sheet/merge-cell-xform.js +27 -0
  495. package/lib/xlsx/xform/sheet/merges.js +56 -0
  496. package/lib/xlsx/xform/sheet/outline-properties-xform.js +43 -0
  497. package/lib/xlsx/xform/sheet/page-breaks-xform.js +27 -0
  498. package/lib/xlsx/xform/sheet/page-margins-xform.js +49 -0
  499. package/lib/xlsx/xform/sheet/page-setup-properties-xform.js +35 -0
  500. package/lib/xlsx/xform/sheet/page-setup-xform.js +103 -0
  501. package/lib/xlsx/xform/sheet/picture-xform.js +33 -0
  502. package/lib/xlsx/xform/sheet/print-options-xform.js +49 -0
  503. package/lib/xlsx/xform/sheet/row-breaks-xform.js +39 -0
  504. package/lib/xlsx/xform/sheet/row-xform.js +145 -0
  505. package/lib/xlsx/xform/sheet/sheet-format-properties-xform.js +67 -0
  506. package/lib/xlsx/xform/sheet/sheet-properties-xform.js +90 -0
  507. package/lib/xlsx/xform/sheet/sheet-protection-xform.js +89 -0
  508. package/lib/xlsx/xform/sheet/sheet-view-xform.js +202 -0
  509. package/lib/xlsx/xform/sheet/table-part-xform.js +33 -0
  510. package/lib/xlsx/xform/sheet/worksheet-xform.js +657 -0
  511. package/lib/xlsx/xform/simple/boolean-xform.js +31 -0
  512. package/lib/xlsx/xform/simple/date-xform.js +66 -0
  513. package/lib/xlsx/xform/simple/float-xform.js +51 -0
  514. package/lib/xlsx/xform/simple/integer-xform.js +57 -0
  515. package/lib/xlsx/xform/simple/string-xform.js +51 -0
  516. package/lib/xlsx/xform/static-xform.js +64 -0
  517. package/lib/xlsx/xform/strings/phonetic-text-xform.js +98 -0
  518. package/lib/xlsx/xform/strings/rich-text-xform.js +101 -0
  519. package/lib/xlsx/xform/strings/shared-string-xform.js +102 -0
  520. package/lib/xlsx/xform/strings/shared-strings-xform.js +132 -0
  521. package/lib/xlsx/xform/strings/text-xform.js +44 -0
  522. package/lib/xlsx/xform/style/alignment-xform.js +172 -0
  523. package/lib/xlsx/xform/style/border-xform.js +207 -0
  524. package/lib/xlsx/xform/style/color-xform.js +63 -0
  525. package/lib/xlsx/xform/style/dxf-xform.js +111 -0
  526. package/lib/xlsx/xform/style/fill-xform.js +364 -0
  527. package/lib/xlsx/xform/style/font-xform.js +102 -0
  528. package/lib/xlsx/xform/style/numfmt-xform.js +63 -0
  529. package/lib/xlsx/xform/style/protection-xform.js +60 -0
  530. package/lib/xlsx/xform/style/style-xform.js +125 -0
  531. package/lib/xlsx/xform/style/styles-xform.js +527 -0
  532. package/lib/xlsx/xform/style/underline-xform.js +47 -0
  533. package/lib/xlsx/xform/table/auto-filter-xform.js +81 -0
  534. package/lib/xlsx/xform/table/custom-filter-xform.js +33 -0
  535. package/lib/xlsx/xform/table/filter-column-xform.js +99 -0
  536. package/lib/xlsx/xform/table/filter-xform.js +31 -0
  537. package/lib/xlsx/xform/table/table-column-xform.js +44 -0
  538. package/lib/xlsx/xform/table/table-style-info-xform.js +41 -0
  539. package/lib/xlsx/xform/table/table-xform.js +134 -0
  540. package/lib/xlsx/xlsx.js +1160 -0
  541. package/lib/xlsx/xml/theme1.js +3 -0
  542. package/lib/xlsx/xml/theme1.xml +318 -0
  543. package/package.json +159 -0
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+
3
+ /* eslint-disable max-classes-per-file */
4
+ const Stream = require('readable-stream');
5
+ const utils = require('./utils');
6
+ const StringBuf = require('./string-buf');
7
+
8
+ // =============================================================================
9
+ // data chunks - encapsulating incoming data
10
+ class StringChunk {
11
+ constructor(data, encoding) {
12
+ this._data = data;
13
+ this._encoding = encoding;
14
+ }
15
+ get length() {
16
+ return this.toBuffer().length;
17
+ }
18
+
19
+ // copy to target buffer
20
+ copy(target, targetOffset, offset, length) {
21
+ return this.toBuffer().copy(target, targetOffset, offset, length);
22
+ }
23
+ toBuffer() {
24
+ if (!this._buffer) {
25
+ this._buffer = Buffer.from(this._data, this._encoding);
26
+ }
27
+ return this._buffer;
28
+ }
29
+ }
30
+ class StringBufChunk {
31
+ constructor(data) {
32
+ this._data = data;
33
+ }
34
+ get length() {
35
+ return this._data.length;
36
+ }
37
+
38
+ // copy to target buffer
39
+ copy(target, targetOffset, offset, length) {
40
+ // eslint-disable-next-line no-underscore-dangle
41
+ return this._data._buf.copy(target, targetOffset, offset, length);
42
+ }
43
+ toBuffer() {
44
+ return this._data.toBuffer();
45
+ }
46
+ }
47
+ class BufferChunk {
48
+ constructor(data) {
49
+ this._data = data;
50
+ }
51
+ get length() {
52
+ return this._data.length;
53
+ }
54
+
55
+ // copy to target buffer
56
+ copy(target, targetOffset, offset, length) {
57
+ this._data.copy(target, targetOffset, offset, length);
58
+ }
59
+ toBuffer() {
60
+ return this._data;
61
+ }
62
+ }
63
+
64
+ // =============================================================================
65
+ // ReadWriteBuf - a single buffer supporting simple read-write
66
+ class ReadWriteBuf {
67
+ constructor(size) {
68
+ this.size = size;
69
+ // the buffer
70
+ this.buffer = Buffer.alloc(size);
71
+ // read index
72
+ this.iRead = 0;
73
+ // write index
74
+ this.iWrite = 0;
75
+ }
76
+ toBuffer() {
77
+ if (this.iRead === 0 && this.iWrite === this.size) {
78
+ return this.buffer;
79
+ }
80
+ const buf = Buffer.alloc(this.iWrite - this.iRead);
81
+ this.buffer.copy(buf, 0, this.iRead, this.iWrite);
82
+ return buf;
83
+ }
84
+ get length() {
85
+ return this.iWrite - this.iRead;
86
+ }
87
+ get eod() {
88
+ return this.iRead === this.iWrite;
89
+ }
90
+ get full() {
91
+ return this.iWrite === this.size;
92
+ }
93
+ read(size) {
94
+ let buf;
95
+ // read size bytes from buffer and return buffer
96
+ if (size === 0) {
97
+ // special case - return null if no data requested
98
+ return null;
99
+ }
100
+ if (size === undefined || size >= this.length) {
101
+ // if no size specified or size is at least what we have then return all of the bytes
102
+ buf = this.toBuffer();
103
+ this.iRead = this.iWrite;
104
+ return buf;
105
+ }
106
+
107
+ // otherwise return a chunk
108
+ buf = Buffer.alloc(size);
109
+ this.buffer.copy(buf, 0, this.iRead, size);
110
+ this.iRead += size;
111
+ return buf;
112
+ }
113
+ write(chunk, offset, length) {
114
+ // write as many bytes from data from optional source offset
115
+ // and return number of bytes written
116
+ const size = Math.min(length, this.size - this.iWrite);
117
+ chunk.copy(this.buffer, this.iWrite, offset, offset + size);
118
+ this.iWrite += size;
119
+ return size;
120
+ }
121
+ }
122
+
123
+ // =============================================================================
124
+ // StreamBuf - a multi-purpose read-write stream
125
+ // As MemBuf - write as much data as you like. Then call toBuffer() to consolidate
126
+ // As StreamHub - pipe to multiple writables
127
+ // As readable stream - feed data into the writable part and have some other code read from it.
128
+
129
+ // Note: Not sure why but StreamBuf does not like JS "class" sugar. It fails the
130
+ // integration tests
131
+ const StreamBuf = function (options) {
132
+ // IMPORTANT: Call Duplex constructor first for archiver 7.x compatibility
133
+ Stream.Duplex.call(this, options);
134
+ options = options || {};
135
+ this.bufSize = options.bufSize || 1024 * 1024;
136
+ this.buffers = [];
137
+
138
+ // batch mode fills a buffer completely before passing the data on
139
+ // to pipes or 'readable' event listeners
140
+ this.batch = options.batch || false;
141
+ this.corked = false;
142
+ // where in the current writable buffer we're up to
143
+ this.inPos = 0;
144
+
145
+ // where in the current readable buffer we've read up to
146
+ this.outPos = 0;
147
+
148
+ // consuming pipe streams go here
149
+ this.pipes = [];
150
+
151
+ // controls emit('data')
152
+ this.paused = false;
153
+ this.encoding = null;
154
+ };
155
+ utils.inherits(StreamBuf, Stream.Duplex, {
156
+ toBuffer() {
157
+ switch (this.buffers.length) {
158
+ case 0:
159
+ return null;
160
+ case 1:
161
+ return this.buffers[0].toBuffer();
162
+ default:
163
+ return Buffer.concat(this.buffers.map(rwBuf => rwBuf.toBuffer()));
164
+ }
165
+ },
166
+ // writable
167
+ // event drain - if write returns false (which it won't), indicates when safe to write again.
168
+ // finish - end() has been called
169
+ // pipe(src) - pipe() has been called on readable
170
+ // unpipe(src) - unpipe() has been called on readable
171
+ // error - duh
172
+
173
+ _getWritableBuffer() {
174
+ if (this.buffers.length) {
175
+ const last = this.buffers[this.buffers.length - 1];
176
+ if (!last.full) {
177
+ return last;
178
+ }
179
+ }
180
+ const buf = new ReadWriteBuf(this.bufSize);
181
+ this.buffers.push(buf);
182
+ return buf;
183
+ },
184
+ async _pipe(chunk) {
185
+ const write = function (pipe) {
186
+ return new Promise(resolve => {
187
+ pipe.write(chunk.toBuffer(), () => {
188
+ resolve();
189
+ });
190
+ });
191
+ };
192
+ await Promise.all(this.pipes.map(write));
193
+ },
194
+ _writeToBuffers(chunk) {
195
+ let inPos = 0;
196
+ const inLen = chunk.length;
197
+ while (inPos < inLen) {
198
+ // find writable buffer
199
+ const buffer = this._getWritableBuffer();
200
+
201
+ // write some data
202
+ inPos += buffer.write(chunk, inPos, inLen - inPos);
203
+ }
204
+ },
205
+ async _write(chunk, encoding, callback) {
206
+ // Internal method required by Duplex interface
207
+ // Delegate to public write method which handles the callback
208
+ try {
209
+ await this.write(chunk, encoding, callback);
210
+ } catch (err) {
211
+ callback(err);
212
+ }
213
+ },
214
+ async write(data, encoding, callback) {
215
+ if (encoding instanceof Function) {
216
+ callback = encoding;
217
+ encoding = 'utf8';
218
+ }
219
+ callback = callback || utils.nop;
220
+
221
+ // encapsulate data into a chunk
222
+ let chunk;
223
+ if (data instanceof StringBuf) {
224
+ chunk = new StringBufChunk(data);
225
+ } else if (data instanceof Buffer) {
226
+ chunk = new BufferChunk(data);
227
+ } else if (typeof data === 'string' || data instanceof String || data instanceof ArrayBuffer) {
228
+ chunk = new StringChunk(data, encoding);
229
+ } else {
230
+ throw new Error('Chunk must be one of type String, Buffer or StringBuf.');
231
+ }
232
+
233
+ // now, do something with the chunk
234
+ if (this.pipes.length) {
235
+ if (this.batch) {
236
+ this._writeToBuffers(chunk);
237
+ while (!this.corked && this.buffers.length > 1) {
238
+ this._pipe(this.buffers.shift());
239
+ }
240
+ } else if (!this.corked) {
241
+ await this._pipe(chunk);
242
+ callback();
243
+ } else {
244
+ this._writeToBuffers(chunk);
245
+ process.nextTick(callback);
246
+ }
247
+ } else {
248
+ if (!this.paused) {
249
+ this.emit('data', chunk.toBuffer());
250
+ }
251
+ this._writeToBuffers(chunk);
252
+ this.emit('readable');
253
+ process.nextTick(callback);
254
+ }
255
+ return true;
256
+ },
257
+ cork() {
258
+ this.corked = true;
259
+ },
260
+ _flush(/* destination */
261
+ ) {
262
+ // if we have comsumers...
263
+ if (this.pipes.length) {
264
+ // and there's stuff not written
265
+ while (this.buffers.length) {
266
+ this._pipe(this.buffers.shift());
267
+ }
268
+ }
269
+ },
270
+ uncork() {
271
+ this.corked = false;
272
+ this._flush();
273
+ },
274
+ end(chunk, encoding, callback) {
275
+ const writeComplete = error => {
276
+ if (error) {
277
+ callback(error);
278
+ } else {
279
+ this._flush();
280
+ this.pipes.forEach(pipe => {
281
+ pipe.end();
282
+ });
283
+ this.emit('finish');
284
+ }
285
+ };
286
+ if (chunk) {
287
+ this.write(chunk, encoding, writeComplete);
288
+ } else {
289
+ writeComplete();
290
+ }
291
+ },
292
+ // readable
293
+ // event readable - some data is now available
294
+ // event data - switch to flowing mode - feeds chunks to handler
295
+ // event end - no more data
296
+ // event close - optional, indicates upstream close
297
+ // event error - duh
298
+ _read(size) {
299
+ // Internal method required by Duplex interface
300
+ // Push data from buffers to readable stream
301
+ const data = this.read(size);
302
+ if (data && data.length > 0) {
303
+ this.push(data);
304
+ }
305
+ },
306
+ read(size) {
307
+ let buffers;
308
+ // read min(buffer, size || infinity)
309
+ if (size) {
310
+ buffers = [];
311
+ while (size && this.buffers.length && !this.buffers[0].eod) {
312
+ const first = this.buffers[0];
313
+ const buffer = first.read(size);
314
+ size -= buffer.length;
315
+ buffers.push(buffer);
316
+ if (first.eod && first.full) {
317
+ this.buffers.shift();
318
+ }
319
+ }
320
+ return Buffer.concat(buffers);
321
+ }
322
+ buffers = this.buffers.map(buf => buf.toBuffer()).filter(Boolean);
323
+ this.buffers = [];
324
+ return Buffer.concat(buffers);
325
+ },
326
+ setEncoding(encoding) {
327
+ // causes stream.read or stream.on('data) to return strings of encoding instead of Buffer objects
328
+ this.encoding = encoding;
329
+ },
330
+ pause() {
331
+ this.paused = true;
332
+ },
333
+ resume() {
334
+ this.paused = false;
335
+ },
336
+ isPaused() {
337
+ return !!this.paused;
338
+ },
339
+ pipe(destination) {
340
+ // add destination to pipe list & write current buffer
341
+ this.pipes.push(destination);
342
+ if (!this.paused && this.buffers.length) {
343
+ this.end();
344
+ }
345
+ // Return destination for chaining (required for archiver 7.x)
346
+ return destination;
347
+ },
348
+ unpipe(destination) {
349
+ // remove destination from pipe list
350
+ this.pipes = this.pipes.filter(pipe => pipe !== destination);
351
+ },
352
+ unshift(/* chunk */
353
+ ) {
354
+ // some numpty has read some data that's not for them and they want to put it back!
355
+ // Might implement this some day
356
+ throw new Error('Not Implemented');
357
+ },
358
+ wrap(/* stream */
359
+ ) {
360
+ // not implemented
361
+ throw new Error('Not Implemented');
362
+ }
363
+ });
364
+ module.exports = StreamBuf;
365
+ //# sourceMappingURL=stream-buf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-buf.js","names":["Stream","require","utils","StringBuf","StringChunk","constructor","data","encoding","_data","_encoding","length","toBuffer","copy","target","targetOffset","offset","_buffer","Buffer","from","StringBufChunk","_buf","BufferChunk","ReadWriteBuf","size","buffer","alloc","iRead","iWrite","buf","eod","full","read","undefined","write","chunk","Math","min","StreamBuf","options","Duplex","call","bufSize","buffers","batch","corked","inPos","outPos","pipes","paused","inherits","concat","map","rwBuf","_getWritableBuffer","last","push","_pipe","pipe","Promise","resolve","all","_writeToBuffers","inLen","_write","callback","err","Function","nop","String","ArrayBuffer","Error","shift","process","nextTick","emit","cork","_flush","uncork","end","writeComplete","error","forEach","_read","first","filter","Boolean","setEncoding","pause","resume","isPaused","destination","unpipe","unshift","wrap","module","exports"],"sources":["../../../lib/utils/stream-buf.js"],"sourcesContent":["/* eslint-disable max-classes-per-file */\r\nconst Stream = require('readable-stream');\r\n\r\nconst utils = require('./utils');\r\nconst StringBuf = require('./string-buf');\r\n\r\n// =============================================================================\r\n// data chunks - encapsulating incoming data\r\nclass StringChunk {\r\n constructor(data, encoding) {\r\n this._data = data;\r\n this._encoding = encoding;\r\n }\r\n\r\n get length() {\r\n return this.toBuffer().length;\r\n }\r\n\r\n // copy to target buffer\r\n copy(target, targetOffset, offset, length) {\r\n return this.toBuffer().copy(target, targetOffset, offset, length);\r\n }\r\n\r\n toBuffer() {\r\n if (!this._buffer) {\r\n this._buffer = Buffer.from(this._data, this._encoding);\r\n }\r\n return this._buffer;\r\n }\r\n}\r\n\r\nclass StringBufChunk {\r\n constructor(data) {\r\n this._data = data;\r\n }\r\n\r\n get length() {\r\n return this._data.length;\r\n }\r\n\r\n // copy to target buffer\r\n copy(target, targetOffset, offset, length) {\r\n // eslint-disable-next-line no-underscore-dangle\r\n return this._data._buf.copy(target, targetOffset, offset, length);\r\n }\r\n\r\n toBuffer() {\r\n return this._data.toBuffer();\r\n }\r\n}\r\n\r\nclass BufferChunk {\r\n constructor(data) {\r\n this._data = data;\r\n }\r\n\r\n get length() {\r\n return this._data.length;\r\n }\r\n\r\n // copy to target buffer\r\n copy(target, targetOffset, offset, length) {\r\n this._data.copy(target, targetOffset, offset, length);\r\n }\r\n\r\n toBuffer() {\r\n return this._data;\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// ReadWriteBuf - a single buffer supporting simple read-write\r\nclass ReadWriteBuf {\r\n constructor(size) {\r\n this.size = size;\r\n // the buffer\r\n this.buffer = Buffer.alloc(size);\r\n // read index\r\n this.iRead = 0;\r\n // write index\r\n this.iWrite = 0;\r\n }\r\n\r\n toBuffer() {\r\n if (this.iRead === 0 && this.iWrite === this.size) {\r\n return this.buffer;\r\n }\r\n\r\n const buf = Buffer.alloc(this.iWrite - this.iRead);\r\n this.buffer.copy(buf, 0, this.iRead, this.iWrite);\r\n return buf;\r\n }\r\n\r\n get length() {\r\n return this.iWrite - this.iRead;\r\n }\r\n\r\n get eod() {\r\n return this.iRead === this.iWrite;\r\n }\r\n\r\n get full() {\r\n return this.iWrite === this.size;\r\n }\r\n\r\n read(size) {\r\n let buf;\r\n // read size bytes from buffer and return buffer\r\n if (size === 0) {\r\n // special case - return null if no data requested\r\n return null;\r\n }\r\n\r\n if (size === undefined || size >= this.length) {\r\n // if no size specified or size is at least what we have then return all of the bytes\r\n buf = this.toBuffer();\r\n this.iRead = this.iWrite;\r\n return buf;\r\n }\r\n\r\n // otherwise return a chunk\r\n buf = Buffer.alloc(size);\r\n this.buffer.copy(buf, 0, this.iRead, size);\r\n this.iRead += size;\r\n return buf;\r\n }\r\n\r\n write(chunk, offset, length) {\r\n // write as many bytes from data from optional source offset\r\n // and return number of bytes written\r\n const size = Math.min(length, this.size - this.iWrite);\r\n chunk.copy(this.buffer, this.iWrite, offset, offset + size);\r\n this.iWrite += size;\r\n return size;\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// StreamBuf - a multi-purpose read-write stream\r\n// As MemBuf - write as much data as you like. Then call toBuffer() to consolidate\r\n// As StreamHub - pipe to multiple writables\r\n// As readable stream - feed data into the writable part and have some other code read from it.\r\n\r\n// Note: Not sure why but StreamBuf does not like JS \"class\" sugar. It fails the\r\n// integration tests\r\nconst StreamBuf = function(options) {\r\n // IMPORTANT: Call Duplex constructor first for archiver 7.x compatibility\r\n Stream.Duplex.call(this, options);\r\n\r\n options = options || {};\r\n this.bufSize = options.bufSize || 1024 * 1024;\r\n this.buffers = [];\r\n\r\n // batch mode fills a buffer completely before passing the data on\r\n // to pipes or 'readable' event listeners\r\n this.batch = options.batch || false;\r\n\r\n this.corked = false;\r\n // where in the current writable buffer we're up to\r\n this.inPos = 0;\r\n\r\n // where in the current readable buffer we've read up to\r\n this.outPos = 0;\r\n\r\n // consuming pipe streams go here\r\n this.pipes = [];\r\n\r\n // controls emit('data')\r\n this.paused = false;\r\n\r\n this.encoding = null;\r\n};\r\n\r\nutils.inherits(StreamBuf, Stream.Duplex, {\r\n toBuffer() {\r\n switch (this.buffers.length) {\r\n case 0:\r\n return null;\r\n case 1:\r\n return this.buffers[0].toBuffer();\r\n default:\r\n return Buffer.concat(this.buffers.map(rwBuf => rwBuf.toBuffer()));\r\n }\r\n },\r\n\r\n // writable\r\n // event drain - if write returns false (which it won't), indicates when safe to write again.\r\n // finish - end() has been called\r\n // pipe(src) - pipe() has been called on readable\r\n // unpipe(src) - unpipe() has been called on readable\r\n // error - duh\r\n\r\n _getWritableBuffer() {\r\n if (this.buffers.length) {\r\n const last = this.buffers[this.buffers.length - 1];\r\n if (!last.full) {\r\n return last;\r\n }\r\n }\r\n const buf = new ReadWriteBuf(this.bufSize);\r\n this.buffers.push(buf);\r\n return buf;\r\n },\r\n\r\n async _pipe(chunk) {\r\n const write = function(pipe) {\r\n return new Promise(resolve => {\r\n pipe.write(chunk.toBuffer(), () => {\r\n resolve();\r\n });\r\n });\r\n };\r\n await Promise.all(this.pipes.map(write));\r\n },\r\n _writeToBuffers(chunk) {\r\n let inPos = 0;\r\n const inLen = chunk.length;\r\n while (inPos < inLen) {\r\n // find writable buffer\r\n const buffer = this._getWritableBuffer();\r\n\r\n // write some data\r\n inPos += buffer.write(chunk, inPos, inLen - inPos);\r\n }\r\n },\r\n async _write(chunk, encoding, callback) {\r\n // Internal method required by Duplex interface\r\n // Delegate to public write method which handles the callback\r\n try {\r\n await this.write(chunk, encoding, callback);\r\n } catch (err) {\r\n callback(err);\r\n }\r\n },\r\n async write(data, encoding, callback) {\r\n if (encoding instanceof Function) {\r\n callback = encoding;\r\n encoding = 'utf8';\r\n }\r\n callback = callback || utils.nop;\r\n\r\n // encapsulate data into a chunk\r\n let chunk;\r\n if (data instanceof StringBuf) {\r\n chunk = new StringBufChunk(data);\r\n } else if (data instanceof Buffer) {\r\n chunk = new BufferChunk(data);\r\n } else if (typeof data === 'string' || data instanceof String || data instanceof ArrayBuffer) {\r\n chunk = new StringChunk(data, encoding);\r\n } else {\r\n throw new Error('Chunk must be one of type String, Buffer or StringBuf.');\r\n }\r\n\r\n // now, do something with the chunk\r\n if (this.pipes.length) {\r\n if (this.batch) {\r\n this._writeToBuffers(chunk);\r\n while (!this.corked && this.buffers.length > 1) {\r\n this._pipe(this.buffers.shift());\r\n }\r\n } else if (!this.corked) {\r\n await this._pipe(chunk);\r\n callback();\r\n } else {\r\n this._writeToBuffers(chunk);\r\n process.nextTick(callback);\r\n }\r\n } else {\r\n if (!this.paused) {\r\n this.emit('data', chunk.toBuffer());\r\n }\r\n\r\n this._writeToBuffers(chunk);\r\n this.emit('readable');\r\n process.nextTick(callback);\r\n }\r\n\r\n return true;\r\n },\r\n cork() {\r\n this.corked = true;\r\n },\r\n _flush(/* destination */) {\r\n // if we have comsumers...\r\n if (this.pipes.length) {\r\n // and there's stuff not written\r\n while (this.buffers.length) {\r\n this._pipe(this.buffers.shift());\r\n }\r\n }\r\n },\r\n uncork() {\r\n this.corked = false;\r\n this._flush();\r\n },\r\n end(chunk, encoding, callback) {\r\n const writeComplete = error => {\r\n if (error) {\r\n callback(error);\r\n } else {\r\n this._flush();\r\n this.pipes.forEach(pipe => {\r\n pipe.end();\r\n });\r\n this.emit('finish');\r\n }\r\n };\r\n if (chunk) {\r\n this.write(chunk, encoding, writeComplete);\r\n } else {\r\n writeComplete();\r\n }\r\n },\r\n\r\n // readable\r\n // event readable - some data is now available\r\n // event data - switch to flowing mode - feeds chunks to handler\r\n // event end - no more data\r\n // event close - optional, indicates upstream close\r\n // event error - duh\r\n _read(size) {\r\n // Internal method required by Duplex interface\r\n // Push data from buffers to readable stream\r\n const data = this.read(size);\r\n if (data && data.length > 0) {\r\n this.push(data);\r\n }\r\n },\r\n read(size) {\r\n let buffers;\r\n // read min(buffer, size || infinity)\r\n if (size) {\r\n buffers = [];\r\n while (size && this.buffers.length && !this.buffers[0].eod) {\r\n const first = this.buffers[0];\r\n const buffer = first.read(size);\r\n size -= buffer.length;\r\n buffers.push(buffer);\r\n if (first.eod && first.full) {\r\n this.buffers.shift();\r\n }\r\n }\r\n return Buffer.concat(buffers);\r\n }\r\n\r\n buffers = this.buffers.map(buf => buf.toBuffer()).filter(Boolean);\r\n this.buffers = [];\r\n return Buffer.concat(buffers);\r\n },\r\n setEncoding(encoding) {\r\n // causes stream.read or stream.on('data) to return strings of encoding instead of Buffer objects\r\n this.encoding = encoding;\r\n },\r\n pause() {\r\n this.paused = true;\r\n },\r\n resume() {\r\n this.paused = false;\r\n },\r\n isPaused() {\r\n return !!this.paused;\r\n },\r\n pipe(destination) {\r\n // add destination to pipe list & write current buffer\r\n this.pipes.push(destination);\r\n if (!this.paused && this.buffers.length) {\r\n this.end();\r\n }\r\n // Return destination for chaining (required for archiver 7.x)\r\n return destination;\r\n },\r\n unpipe(destination) {\r\n // remove destination from pipe list\r\n this.pipes = this.pipes.filter(pipe => pipe !== destination);\r\n },\r\n unshift(/* chunk */) {\r\n // some numpty has read some data that's not for them and they want to put it back!\r\n // Might implement this some day\r\n throw new Error('Not Implemented');\r\n },\r\n wrap(/* stream */) {\r\n // not implemented\r\n throw new Error('Not Implemented');\r\n },\r\n});\r\n\r\nmodule.exports = StreamBuf;\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ // StringBuf - a way to keep string memory operations to a minimum
4
+ // while building the strings for the xml files
5
+ class StringBuf {
6
+ constructor(options) {
7
+ this._buf = Buffer.alloc(options && options.size || 16384);
8
+ this._encoding = options && options.encoding || 'utf8';
9
+
10
+ // where in the buffer we are at
11
+ this._inPos = 0;
12
+
13
+ // for use by toBuffer()
14
+ this._buffer = undefined;
15
+ }
16
+ get length() {
17
+ return this._inPos;
18
+ }
19
+ get capacity() {
20
+ return this._buf.length;
21
+ }
22
+ get buffer() {
23
+ return this._buf;
24
+ }
25
+ toBuffer() {
26
+ // return the current data as a single enclosing buffer
27
+ if (!this._buffer) {
28
+ this._buffer = Buffer.alloc(this.length);
29
+ this._buf.copy(this._buffer, 0, 0, this.length);
30
+ }
31
+ return this._buffer;
32
+ }
33
+ reset(position) {
34
+ position = position || 0;
35
+ this._buffer = undefined;
36
+ this._inPos = position;
37
+ }
38
+ _grow(min) {
39
+ let size = this._buf.length * 2;
40
+ while (size < min) {
41
+ size *= 2;
42
+ }
43
+ const buf = Buffer.alloc(size);
44
+ this._buf.copy(buf, 0);
45
+ this._buf = buf;
46
+ }
47
+ addText(text) {
48
+ this._buffer = undefined;
49
+ let inPos = this._inPos + this._buf.write(text, this._inPos, this._encoding);
50
+
51
+ // if we've hit (or nearing capacity), grow the buf
52
+ while (inPos >= this._buf.length - 4) {
53
+ this._grow(this._inPos + text.length);
54
+
55
+ // keep trying to write until we've completely written the text
56
+ inPos = this._inPos + this._buf.write(text, this._inPos, this._encoding);
57
+ }
58
+ this._inPos = inPos;
59
+ }
60
+ addStringBuf(inBuf) {
61
+ if (inBuf.length) {
62
+ this._buffer = undefined;
63
+ if (this.length + inBuf.length > this.capacity) {
64
+ this._grow(this.length + inBuf.length);
65
+ }
66
+ // eslint-disable-next-line no-underscore-dangle
67
+ inBuf._buf.copy(this._buf, this._inPos, 0, inBuf.length);
68
+ this._inPos += inBuf.length;
69
+ }
70
+ }
71
+ }
72
+ module.exports = StringBuf;
73
+ //# sourceMappingURL=string-buf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-buf.js","names":["StringBuf","constructor","options","_buf","Buffer","alloc","size","_encoding","encoding","_inPos","_buffer","undefined","length","capacity","buffer","toBuffer","copy","reset","position","_grow","min","buf","addText","text","inPos","write","addStringBuf","inBuf","module","exports"],"sources":["../../../lib/utils/string-buf.js"],"sourcesContent":["// StringBuf - a way to keep string memory operations to a minimum\r\n// while building the strings for the xml files\r\nclass StringBuf {\r\n constructor(options) {\r\n this._buf = Buffer.alloc((options && options.size) || 16384);\r\n this._encoding = (options && options.encoding) || 'utf8';\r\n\r\n // where in the buffer we are at\r\n this._inPos = 0;\r\n\r\n // for use by toBuffer()\r\n this._buffer = undefined;\r\n }\r\n\r\n get length() {\r\n return this._inPos;\r\n }\r\n\r\n get capacity() {\r\n return this._buf.length;\r\n }\r\n\r\n get buffer() {\r\n return this._buf;\r\n }\r\n\r\n toBuffer() {\r\n // return the current data as a single enclosing buffer\r\n if (!this._buffer) {\r\n this._buffer = Buffer.alloc(this.length);\r\n this._buf.copy(this._buffer, 0, 0, this.length);\r\n }\r\n return this._buffer;\r\n }\r\n\r\n reset(position) {\r\n position = position || 0;\r\n this._buffer = undefined;\r\n this._inPos = position;\r\n }\r\n\r\n _grow(min) {\r\n let size = this._buf.length * 2;\r\n while (size < min) {\r\n size *= 2;\r\n }\r\n const buf = Buffer.alloc(size);\r\n this._buf.copy(buf, 0);\r\n this._buf = buf;\r\n }\r\n\r\n addText(text) {\r\n this._buffer = undefined;\r\n\r\n let inPos = this._inPos + this._buf.write(text, this._inPos, this._encoding);\r\n\r\n // if we've hit (or nearing capacity), grow the buf\r\n while (inPos >= this._buf.length - 4) {\r\n this._grow(this._inPos + text.length);\r\n\r\n // keep trying to write until we've completely written the text\r\n inPos = this._inPos + this._buf.write(text, this._inPos, this._encoding);\r\n }\r\n\r\n this._inPos = inPos;\r\n }\r\n\r\n addStringBuf(inBuf) {\r\n if (inBuf.length) {\r\n this._buffer = undefined;\r\n\r\n if (this.length + inBuf.length > this.capacity) {\r\n this._grow(this.length + inBuf.length);\r\n }\r\n // eslint-disable-next-line no-underscore-dangle\r\n inBuf._buf.copy(this._buf, this._inPos, 0, inBuf.length);\r\n this._inPos += inBuf.length;\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = StringBuf;\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ // StringBuilder - a way to keep string memory operations to a minimum
4
+ // while building the strings for the xml files
5
+ class StringBuilder {
6
+ constructor() {
7
+ this.reset();
8
+ }
9
+ get length() {
10
+ return this._buf.length;
11
+ }
12
+ toString() {
13
+ return this._buf.join('');
14
+ }
15
+ reset(position) {
16
+ if (position) {
17
+ while (this._buf.length > position) {
18
+ this._buf.pop();
19
+ }
20
+ } else {
21
+ this._buf = [];
22
+ }
23
+ }
24
+ addText(text) {
25
+ this._buf.push(text);
26
+ }
27
+ addStringBuf(inBuf) {
28
+ this._buf.push(inBuf.toString());
29
+ }
30
+ }
31
+ module.exports = StringBuilder;
32
+ //# sourceMappingURL=string-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-builder.js","names":["StringBuilder","constructor","reset","length","_buf","toString","join","position","pop","addText","text","push","addStringBuf","inBuf","module","exports"],"sources":["../../../lib/utils/string-builder.js"],"sourcesContent":["// StringBuilder - a way to keep string memory operations to a minimum\r\n// while building the strings for the xml files\r\nclass StringBuilder {\r\n constructor() {\r\n this.reset();\r\n }\r\n\r\n get length() {\r\n return this._buf.length;\r\n }\r\n\r\n toString() {\r\n return this._buf.join('');\r\n }\r\n\r\n reset(position) {\r\n if (position) {\r\n while (this._buf.length > position) {\r\n this._buf.pop();\r\n }\r\n } else {\r\n this._buf = [];\r\n }\r\n }\r\n\r\n addText(text) {\r\n this._buf.push(text);\r\n }\r\n\r\n addStringBuf(inBuf) {\r\n this._buf.push(inBuf.toString());\r\n }\r\n}\r\n\r\nmodule.exports = StringBuilder;\r\n"],"mappings":";;AAAA;AACA;AACA,MAAMA,aAAa,CAAC;EAClBC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,KAAK,CAAC,CAAC;EACd;EAEA,IAAIC,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACC,IAAI,CAACD,MAAM;EACzB;EAEAE,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACD,IAAI,CAACE,IAAI,CAAC,EAAE,CAAC;EAC3B;EAEAJ,KAAKA,CAACK,QAAQ,EAAE;IACd,IAAIA,QAAQ,EAAE;MACZ,OAAO,IAAI,CAACH,IAAI,CAACD,MAAM,GAAGI,QAAQ,EAAE;QAClC,IAAI,CAACH,IAAI,CAACI,GAAG,CAAC,CAAC;MACjB;IACF,CAAC,MAAM;MACL,IAAI,CAACJ,IAAI,GAAG,EAAE;IAChB;EACF;EAEAK,OAAOA,CAACC,IAAI,EAAE;IACZ,IAAI,CAACN,IAAI,CAACO,IAAI,CAACD,IAAI,CAAC;EACtB;EAEAE,YAAYA,CAACC,KAAK,EAAE;IAClB,IAAI,CAACT,IAAI,CAACO,IAAI,CAACE,KAAK,CAACR,QAAQ,CAAC,CAAC,CAAC;EAClC;AACF;AAEAS,MAAM,CAACC,OAAO,GAAGf,aAAa","ignoreList":[]}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ const events = require('events');
4
+
5
+ // =============================================================================
6
+ // StutteredPipe - Used to slow down streaming so GC can get a look in
7
+ class StutteredPipe extends events.EventEmitter {
8
+ constructor(readable, writable, options) {
9
+ super();
10
+ options = options || {};
11
+ this.readable = readable;
12
+ this.writable = writable;
13
+ this.bufSize = options.bufSize || 16384;
14
+ this.autoPause = options.autoPause || false;
15
+ this.paused = false;
16
+ this.eod = false;
17
+ this.scheduled = null;
18
+ readable.on('end', () => {
19
+ this.eod = true;
20
+ writable.end();
21
+ });
22
+
23
+ // need to have some way to communicate speed of stream
24
+ // back from the consumer
25
+ readable.on('readable', () => {
26
+ if (!this.paused) {
27
+ this.resume();
28
+ }
29
+ });
30
+ this._schedule();
31
+ }
32
+ pause() {
33
+ this.paused = true;
34
+ }
35
+ resume() {
36
+ if (!this.eod) {
37
+ if (this.scheduled !== null) {
38
+ clearImmediate(this.scheduled);
39
+ }
40
+ this._schedule();
41
+ }
42
+ }
43
+ _schedule() {
44
+ this.scheduled = setImmediate(() => {
45
+ this.scheduled = null;
46
+ if (!this.eod && !this.paused) {
47
+ const data = this.readable.read(this.bufSize);
48
+ if (data && data.length) {
49
+ this.writable.write(data);
50
+ if (!this.paused && !this.autoPause) {
51
+ this._schedule();
52
+ }
53
+ } else if (!this.paused) {
54
+ this._schedule();
55
+ }
56
+ }
57
+ });
58
+ }
59
+ }
60
+ module.exports = StutteredPipe;
61
+ //# sourceMappingURL=stuttered-pipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stuttered-pipe.js","names":["events","require","StutteredPipe","EventEmitter","constructor","readable","writable","options","bufSize","autoPause","paused","eod","scheduled","on","end","resume","_schedule","pause","clearImmediate","setImmediate","data","read","length","write","module","exports"],"sources":["../../../lib/utils/stuttered-pipe.js"],"sourcesContent":["const events = require('events');\r\n\r\n// =============================================================================\r\n// StutteredPipe - Used to slow down streaming so GC can get a look in\r\nclass StutteredPipe extends events.EventEmitter {\r\n constructor(readable, writable, options) {\r\n super();\r\n\r\n options = options || {};\r\n\r\n this.readable = readable;\r\n this.writable = writable;\r\n this.bufSize = options.bufSize || 16384;\r\n this.autoPause = options.autoPause || false;\r\n\r\n this.paused = false;\r\n this.eod = false;\r\n this.scheduled = null;\r\n\r\n readable.on('end', () => {\r\n this.eod = true;\r\n writable.end();\r\n });\r\n\r\n // need to have some way to communicate speed of stream\r\n // back from the consumer\r\n readable.on('readable', () => {\r\n if (!this.paused) {\r\n this.resume();\r\n }\r\n });\r\n this._schedule();\r\n }\r\n\r\n pause() {\r\n this.paused = true;\r\n }\r\n\r\n resume() {\r\n if (!this.eod) {\r\n if (this.scheduled !== null) {\r\n clearImmediate(this.scheduled);\r\n }\r\n this._schedule();\r\n }\r\n }\r\n\r\n _schedule() {\r\n this.scheduled = setImmediate(() => {\r\n this.scheduled = null;\r\n if (!this.eod && !this.paused) {\r\n const data = this.readable.read(this.bufSize);\r\n if (data && data.length) {\r\n this.writable.write(data);\r\n\r\n if (!this.paused && !this.autoPause) {\r\n this._schedule();\r\n }\r\n } else if (!this.paused) {\r\n this._schedule();\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = StutteredPipe;\r\n"],"mappings":";;AAAA,MAAMA,MAAM,GAAGC,OAAO,CAAC,QAAQ,CAAC;;AAEhC;AACA;AACA,MAAMC,aAAa,SAASF,MAAM,CAACG,YAAY,CAAC;EAC9CC,WAAWA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,EAAE;IACvC,KAAK,CAAC,CAAC;IAEPA,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IAEvB,IAAI,CAACF,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACE,OAAO,GAAGD,OAAO,CAACC,OAAO,IAAI,KAAK;IACvC,IAAI,CAACC,SAAS,GAAGF,OAAO,CAACE,SAAS,IAAI,KAAK;IAE3C,IAAI,CAACC,MAAM,GAAG,KAAK;IACnB,IAAI,CAACC,GAAG,GAAG,KAAK;IAChB,IAAI,CAACC,SAAS,GAAG,IAAI;IAErBP,QAAQ,CAACQ,EAAE,CAAC,KAAK,EAAE,MAAM;MACvB,IAAI,CAACF,GAAG,GAAG,IAAI;MACfL,QAAQ,CAACQ,GAAG,CAAC,CAAC;IAChB,CAAC,CAAC;;IAEF;IACA;IACAT,QAAQ,CAACQ,EAAE,CAAC,UAAU,EAAE,MAAM;MAC5B,IAAI,CAAC,IAAI,CAACH,MAAM,EAAE;QAChB,IAAI,CAACK,MAAM,CAAC,CAAC;MACf;IACF,CAAC,CAAC;IACF,IAAI,CAACC,SAAS,CAAC,CAAC;EAClB;EAEAC,KAAKA,CAAA,EAAG;IACN,IAAI,CAACP,MAAM,GAAG,IAAI;EACpB;EAEAK,MAAMA,CAAA,EAAG;IACP,IAAI,CAAC,IAAI,CAACJ,GAAG,EAAE;MACb,IAAI,IAAI,CAACC,SAAS,KAAK,IAAI,EAAE;QAC3BM,cAAc,CAAC,IAAI,CAACN,SAAS,CAAC;MAChC;MACA,IAAI,CAACI,SAAS,CAAC,CAAC;IAClB;EACF;EAEAA,SAASA,CAAA,EAAG;IACV,IAAI,CAACJ,SAAS,GAAGO,YAAY,CAAC,MAAM;MAClC,IAAI,CAACP,SAAS,GAAG,IAAI;MACrB,IAAI,CAAC,IAAI,CAACD,GAAG,IAAI,CAAC,IAAI,CAACD,MAAM,EAAE;QAC7B,MAAMU,IAAI,GAAG,IAAI,CAACf,QAAQ,CAACgB,IAAI,CAAC,IAAI,CAACb,OAAO,CAAC;QAC7C,IAAIY,IAAI,IAAIA,IAAI,CAACE,MAAM,EAAE;UACvB,IAAI,CAAChB,QAAQ,CAACiB,KAAK,CAACH,IAAI,CAAC;UAEzB,IAAI,CAAC,IAAI,CAACV,MAAM,IAAI,CAAC,IAAI,CAACD,SAAS,EAAE;YACnC,IAAI,CAACO,SAAS,CAAC,CAAC;UAClB;QACF,CAAC,MAAM,IAAI,CAAC,IAAI,CAACN,MAAM,EAAE;UACvB,IAAI,CAACM,SAAS,CAAC,CAAC;QAClB;MACF;IACF,CAAC,CAAC;EACJ;AACF;AAEAQ,MAAM,CAACC,OAAO,GAAGvB,aAAa","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ class TypedStack {
4
+ constructor(type) {
5
+ this._type = type;
6
+ this._stack = [];
7
+ }
8
+ get size() {
9
+ return this._stack.length;
10
+ }
11
+ pop() {
12
+ const tos = this._stack.pop();
13
+ return tos || new this._type();
14
+ }
15
+ push(instance) {
16
+ if (!(instance instanceof this._type)) {
17
+ throw new Error('Invalid type pushed to TypedStack');
18
+ }
19
+ this._stack.push(instance);
20
+ }
21
+ }
22
+ module.exports = TypedStack;
23
+ //# sourceMappingURL=typed-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-stack.js","names":["TypedStack","constructor","type","_type","_stack","size","length","pop","tos","push","instance","Error","module","exports"],"sources":["../../../lib/utils/typed-stack.js"],"sourcesContent":["class TypedStack {\r\n constructor(type) {\r\n this._type = type;\r\n this._stack = [];\r\n }\r\n\r\n get size() {\r\n return this._stack.length;\r\n }\r\n\r\n pop() {\r\n const tos = this._stack.pop();\r\n return tos || new this._type();\r\n }\r\n\r\n push(instance) {\r\n if (!(instance instanceof this._type)) {\r\n throw new Error('Invalid type pushed to TypedStack');\r\n }\r\n this._stack.push(instance);\r\n }\r\n}\r\n\r\nmodule.exports = TypedStack;\r\n"],"mappings":";;AAAA,MAAMA,UAAU,CAAC;EACfC,WAAWA,CAACC,IAAI,EAAE;IAChB,IAAI,CAACC,KAAK,GAAGD,IAAI;IACjB,IAAI,CAACE,MAAM,GAAG,EAAE;EAClB;EAEA,IAAIC,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACD,MAAM,CAACE,MAAM;EAC3B;EAEAC,GAAGA,CAAA,EAAG;IACJ,MAAMC,GAAG,GAAG,IAAI,CAACJ,MAAM,CAACG,GAAG,CAAC,CAAC;IAC7B,OAAOC,GAAG,IAAI,IAAI,IAAI,CAACL,KAAK,CAAC,CAAC;EAChC;EAEAM,IAAIA,CAACC,QAAQ,EAAE;IACb,IAAI,EAAEA,QAAQ,YAAY,IAAI,CAACP,KAAK,CAAC,EAAE;MACrC,MAAM,IAAIQ,KAAK,CAAC,mCAAmC,CAAC;IACtD;IACA,IAAI,CAACP,MAAM,CAACK,IAAI,CAACC,QAAQ,CAAC;EAC5B;AACF;AAEAE,MAAM,CAACC,OAAO,GAAGb,UAAU","ignoreList":[]}