@cj-tech-master/excelts 1.6.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +139 -24
- package/README_zh.md +140 -26
- package/dist/browser/excelts.esm.js +18468 -0
- package/dist/browser/excelts.esm.js.map +1 -0
- package/dist/browser/excelts.esm.min.js +125 -0
- package/dist/browser/excelts.iife.js +13107 -47146
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +24 -106
- package/dist/cjs/csv/csv-core.js +701 -0
- package/dist/cjs/csv/csv-stream.js +646 -0
- package/dist/cjs/csv/csv.base.js +137 -0
- package/dist/cjs/csv/csv.browser.js +68 -0
- package/dist/cjs/csv/csv.js +218 -162
- package/dist/cjs/doc/anchor.js +2 -2
- package/dist/cjs/doc/cell.js +22 -22
- package/dist/cjs/doc/column.js +28 -7
- package/dist/cjs/doc/data-validations.js +3 -3
- package/dist/cjs/doc/defined-names.js +13 -13
- package/dist/cjs/doc/image.js +7 -7
- package/dist/cjs/doc/modelcontainer.js +2 -2
- package/dist/cjs/doc/note.js +2 -2
- package/dist/cjs/doc/pivot-table.js +5 -5
- package/dist/cjs/doc/range.js +11 -11
- package/dist/cjs/doc/row.js +16 -16
- package/dist/cjs/doc/table.js +5 -5
- package/dist/cjs/doc/workbook.base.js +211 -0
- package/dist/cjs/doc/workbook.browser.js +62 -0
- package/dist/cjs/doc/workbook.js +68 -179
- package/dist/cjs/doc/worksheet.js +45 -41
- package/dist/cjs/index.js +49 -32
- package/dist/cjs/stream/xlsx/hyperlink-reader.js +6 -6
- package/dist/cjs/stream/xlsx/sheet-comments-writer.js +12 -12
- package/dist/cjs/stream/xlsx/sheet-rels-writer.js +4 -4
- package/dist/cjs/stream/xlsx/workbook-reader.js +22 -22
- package/dist/cjs/stream/xlsx/workbook-writer.js +38 -38
- package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
- package/dist/cjs/stream/xlsx/worksheet-writer.js +67 -60
- package/dist/cjs/utils/browser-buffer.js +75 -0
- package/dist/cjs/utils/cell-format.js +2 -2
- package/dist/cjs/utils/cell-matrix.js +5 -5
- package/dist/cjs/utils/datetime.js +648 -0
- package/dist/cjs/utils/encryptor.browser.js +240 -0
- package/dist/cjs/utils/parse-sax.js +1191 -13
- package/dist/cjs/utils/shared-formula.js +5 -5
- package/dist/cjs/utils/sheet-utils.js +13 -13
- package/dist/cjs/utils/stream-buf.browser.js +355 -0
- package/dist/cjs/utils/stream-buf.js +5 -5
- package/dist/cjs/utils/unzip/extract.js +11 -11
- package/dist/cjs/utils/unzip/index.js +21 -21
- package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
- package/dist/cjs/utils/unzip/parse.js +16 -16
- package/dist/cjs/utils/unzip/zip-parser.js +14 -3
- package/dist/cjs/utils/utils.base.js +161 -0
- package/dist/cjs/utils/utils.browser.js +89 -0
- package/dist/cjs/utils/utils.js +46 -154
- package/dist/cjs/utils/xml-stream.js +3 -3
- package/dist/cjs/utils/zip/compress.base.js +88 -0
- package/dist/cjs/utils/zip/compress.browser.js +127 -0
- package/dist/cjs/utils/zip/compress.js +18 -198
- package/dist/cjs/utils/zip/crc32.browser.js +88 -0
- package/dist/cjs/utils/zip/deflate-fallback.js +575 -0
- package/dist/cjs/utils/zip/index.js +17 -17
- package/dist/cjs/utils/zip/streaming-zip.js +264 -0
- package/dist/cjs/utils/zip/zip-builder.js +10 -10
- package/dist/cjs/utils/zip-stream.browser.js +135 -0
- package/dist/cjs/utils/zip-stream.js +4 -4
- package/dist/cjs/xlsx/xform/base-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
- package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
- package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
- package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
- package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
- package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
- package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
- package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
- package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
- package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
- package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
- package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
- package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
- package/dist/cjs/xlsx/xform/list-xform.js +2 -2
- package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
- package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
- package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
- package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
- package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +10 -11
- package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
- package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
- package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
- package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +11 -12
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
- package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
- package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/col-breaks-xform.js +38 -0
- package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
- package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +15 -3
- package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +15 -17
- package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +75 -70
- package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
- package/dist/cjs/xlsx/xform/static-xform.js +4 -4
- package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
- package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
- package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
- package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
- package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
- package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
- package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
- package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
- package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
- package/dist/cjs/xlsx/xlsx.base.js +742 -0
- package/dist/cjs/xlsx/xlsx.browser.js +162 -0
- package/dist/cjs/xlsx/xlsx.js +118 -892
- package/dist/esm/csv/csv-core.js +694 -0
- package/dist/esm/csv/csv-stream.js +638 -0
- package/dist/esm/csv/csv.base.js +127 -0
- package/dist/esm/csv/csv.browser.js +65 -0
- package/dist/esm/csv/csv.js +181 -159
- package/dist/esm/doc/column.js +21 -0
- package/dist/esm/doc/workbook.base.js +207 -0
- package/dist/esm/doc/workbook.browser.js +59 -0
- package/dist/esm/doc/workbook.js +64 -175
- package/dist/esm/doc/worksheet.js +4 -0
- package/dist/esm/index.browser.js +33 -1
- package/dist/esm/index.js +23 -8
- package/dist/esm/local.js +0 -1
- package/dist/esm/stream/xlsx/workbook-writer.js +1 -1
- package/dist/esm/stream/xlsx/worksheet-writer.js +8 -1
- package/dist/esm/utils/browser-buffer.js +67 -0
- package/dist/esm/utils/datetime.js +639 -0
- package/dist/esm/utils/encryptor.browser.js +237 -0
- package/dist/esm/utils/parse-sax.js +1188 -12
- package/dist/esm/utils/stream-buf.browser.js +352 -0
- package/dist/esm/utils/unzip/zip-parser.js +11 -0
- package/dist/esm/utils/utils.base.js +142 -0
- package/dist/esm/utils/utils.browser.js +68 -0
- package/dist/esm/utils/utils.js +15 -123
- package/dist/esm/utils/zip/compress.base.js +83 -0
- package/dist/esm/utils/zip/compress.browser.js +121 -0
- package/dist/esm/utils/zip/compress.js +16 -164
- package/dist/esm/utils/zip/crc32.browser.js +82 -0
- package/dist/esm/utils/zip/deflate-fallback.js +570 -0
- package/dist/esm/utils/zip/streaming-zip.js +259 -0
- package/dist/esm/utils/zip-stream.browser.js +132 -0
- package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
- package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
- package/dist/esm/xlsx/xform/sheet/col-breaks-xform.js +35 -0
- package/dist/esm/xlsx/xform/sheet/page-breaks-xform.js +13 -1
- package/dist/esm/xlsx/xform/sheet/row-breaks-xform.js +11 -13
- package/dist/esm/xlsx/xform/sheet/worksheet-xform.js +7 -2
- package/dist/esm/xlsx/xlsx.base.js +739 -0
- package/dist/esm/xlsx/xlsx.browser.js +159 -0
- package/dist/esm/xlsx/xlsx.js +114 -888
- package/dist/types/csv/csv-core.d.ts +207 -0
- package/dist/types/csv/csv-stream.d.ts +114 -0
- package/dist/types/csv/csv.base.d.ts +62 -0
- package/dist/types/csv/csv.browser.d.ts +33 -0
- package/dist/types/csv/csv.d.ts +97 -71
- package/dist/types/doc/anchor.d.ts +1 -1
- package/dist/types/doc/cell.d.ts +7 -7
- package/dist/types/doc/column.d.ts +9 -3
- package/dist/types/doc/defined-names.d.ts +4 -4
- package/dist/types/doc/image.d.ts +2 -2
- package/dist/types/doc/modelcontainer.d.ts +1 -1
- package/dist/types/doc/pivot-table.d.ts +1 -1
- package/dist/types/doc/range.d.ts +1 -1
- package/dist/types/doc/row.d.ts +3 -3
- package/dist/types/doc/table.d.ts +2 -2
- package/dist/types/doc/workbook.base.d.ts +111 -0
- package/dist/types/doc/workbook.browser.d.ts +38 -0
- package/dist/types/doc/workbook.d.ts +62 -92
- package/dist/types/doc/worksheet.d.ts +12 -10
- package/dist/types/index.browser.d.ts +19 -5
- package/dist/types/index.d.ts +24 -23
- package/dist/types/local.d.ts +0 -1
- package/dist/types/stream/xlsx/hyperlink-reader.d.ts +1 -1
- package/dist/types/stream/xlsx/workbook-reader.d.ts +4 -4
- package/dist/types/stream/xlsx/workbook-writer.d.ts +7 -7
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
- package/dist/types/stream/xlsx/worksheet-writer.d.ts +11 -9
- package/dist/types/types.d.ts +6 -0
- package/dist/types/utils/browser-buffer.d.ts +28 -0
- package/dist/types/utils/col-cache.d.ts +1 -1
- package/dist/types/utils/datetime.d.ts +85 -0
- package/dist/types/utils/encryptor.browser.d.ts +28 -0
- package/dist/types/utils/parse-sax.d.ts +108 -1
- package/dist/types/utils/sheet-utils.d.ts +3 -3
- package/dist/types/utils/stream-buf.browser.d.ts +41 -0
- package/dist/types/utils/unzip/extract.d.ts +6 -6
- package/dist/types/utils/unzip/index.d.ts +8 -8
- package/dist/types/utils/unzip/parse.d.ts +3 -3
- package/dist/types/utils/unzip/zip-parser.d.ts +5 -0
- package/dist/types/utils/utils.base.d.ts +29 -0
- package/dist/types/utils/utils.browser.d.ts +29 -0
- package/dist/types/utils/utils.d.ts +6 -25
- package/dist/types/utils/zip/compress.base.d.ts +45 -0
- package/dist/types/utils/zip/compress.browser.d.ts +63 -0
- package/dist/types/utils/zip/compress.d.ts +13 -45
- package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
- package/dist/types/utils/zip/deflate-fallback.d.ts +39 -0
- package/dist/types/utils/zip/index.d.ts +5 -5
- package/dist/types/utils/zip/streaming-zip.d.ts +96 -0
- package/dist/types/utils/zip/zip-builder.d.ts +1 -1
- package/dist/types/utils/zip-stream.browser.d.ts +39 -0
- package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
- package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/col-breaks-xform.d.ts +16 -0
- package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +5 -1
- package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +5 -1
- package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
- package/dist/types/xlsx/xlsx.base.d.ts +134 -0
- package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
- package/dist/types/xlsx/xlsx.d.ts +20 -80
- package/package.json +16 -39
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.slideFormula = slideFormula;
|
|
4
|
-
const
|
|
4
|
+
const col_cache_1 = require("./col-cache");
|
|
5
5
|
// const cellRefRegex = /(([a-z_\-0-9]*)!)?[$]?([a-z]+)[$]?([1-9][0-9]*)/i;
|
|
6
6
|
const replacementCandidateRx = /(([a-z_\-0-9]*)!)?([a-z0-9_$]{2,})([(])?/gi;
|
|
7
7
|
const CRrx = /^([$])?([a-z]+)([$])?([1-9][0-9]*)$/i;
|
|
8
8
|
function slideFormula(formula, fromCell, toCell) {
|
|
9
|
-
const offset =
|
|
10
|
-
const to =
|
|
9
|
+
const offset = col_cache_1.colCache.decode(fromCell);
|
|
10
|
+
const to = col_cache_1.colCache.decode(toCell);
|
|
11
11
|
return formula.replace(replacementCandidateRx, (refMatch, sheet, sheetMaybe, addrPart, trailingParen) => {
|
|
12
12
|
if (trailingParen) {
|
|
13
13
|
return refMatch;
|
|
@@ -22,7 +22,7 @@ function slideFormula(formula, fromCell, toCell) {
|
|
|
22
22
|
// > XFD is the highest col number in excel 2007 and beyond, so this is a named range
|
|
23
23
|
return refMatch;
|
|
24
24
|
}
|
|
25
|
-
let col =
|
|
25
|
+
let col = col_cache_1.colCache.l2n(colStr);
|
|
26
26
|
let row = parseInt(rowStr, 10);
|
|
27
27
|
if (!colDollar) {
|
|
28
28
|
col += to.col - offset.col;
|
|
@@ -30,7 +30,7 @@ function slideFormula(formula, fromCell, toCell) {
|
|
|
30
30
|
if (!rowDollar) {
|
|
31
31
|
row += to.row - offset.row;
|
|
32
32
|
}
|
|
33
|
-
const res = (sheet || "") + (colDollar || "") +
|
|
33
|
+
const res = (sheet || "") + (colDollar || "") + col_cache_1.colCache.n2l(col) + (rowDollar || "") + row;
|
|
34
34
|
return res;
|
|
35
35
|
}
|
|
36
36
|
return refMatch;
|
|
@@ -22,9 +22,9 @@ exports.bookAppendSheet = bookAppendSheet;
|
|
|
22
22
|
exports.aoaToSheet = aoaToSheet;
|
|
23
23
|
exports.sheetAddAoa = sheetAddAoa;
|
|
24
24
|
exports.sheetToAoa = sheetToAoa;
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
25
|
+
const workbook_1 = require("../doc/workbook");
|
|
26
|
+
const col_cache_1 = require("./col-cache");
|
|
27
|
+
const cell_format_1 = require("./cell-format");
|
|
28
28
|
/**
|
|
29
29
|
* Convert a Date object back to Excel serial number without timezone issues.
|
|
30
30
|
* This reverses the excelToDate conversion exactly.
|
|
@@ -113,15 +113,15 @@ function formatValue(value, fmt, dateFormat) {
|
|
|
113
113
|
if (serial < 0) {
|
|
114
114
|
serial += 1;
|
|
115
115
|
}
|
|
116
|
-
return (0,
|
|
116
|
+
return (0, cell_format_1.format)(fmt, serial);
|
|
117
117
|
}
|
|
118
118
|
// Only apply dateFormat override to actual date formats
|
|
119
119
|
// (not elapsed time formats like [h]:mm:ss)
|
|
120
120
|
const actualFmt = dateFormat && isDateFormat(fmt) ? dateFormat : fmt;
|
|
121
|
-
return (0,
|
|
121
|
+
return (0, cell_format_1.format)(actualFmt, serial);
|
|
122
122
|
}
|
|
123
123
|
// Number/Boolean/String - let cellFormat handle it
|
|
124
|
-
return (0,
|
|
124
|
+
return (0, cell_format_1.format)(fmt, value);
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
127
|
* Get formatted display text for a cell value
|
|
@@ -170,14 +170,14 @@ function getCellDisplayText(cell, dateFormat) {
|
|
|
170
170
|
* @example decodeCol("A") => 0, decodeCol("Z") => 25, decodeCol("AA") => 26
|
|
171
171
|
*/
|
|
172
172
|
function decodeCol(colstr) {
|
|
173
|
-
return
|
|
173
|
+
return col_cache_1.colCache.l2n(colstr.toUpperCase()) - 1;
|
|
174
174
|
}
|
|
175
175
|
/**
|
|
176
176
|
* Encode 0-indexed column number to string
|
|
177
177
|
* @example encodeCol(0) => "A", encodeCol(25) => "Z", encodeCol(26) => "AA"
|
|
178
178
|
*/
|
|
179
179
|
function encodeCol(col) {
|
|
180
|
-
return
|
|
180
|
+
return col_cache_1.colCache.n2l(col + 1);
|
|
181
181
|
}
|
|
182
182
|
/**
|
|
183
183
|
* Decode row string to 0-indexed number
|
|
@@ -198,7 +198,7 @@ function encodeRow(row) {
|
|
|
198
198
|
* @example decodeCell("A1") => {c: 0, r: 0}, decodeCell("B2") => {c: 1, r: 1}
|
|
199
199
|
*/
|
|
200
200
|
function decodeCell(cstr) {
|
|
201
|
-
const addr =
|
|
201
|
+
const addr = col_cache_1.colCache.decodeAddress(cstr.toUpperCase());
|
|
202
202
|
return { c: addr.col - 1, r: addr.row - 1 };
|
|
203
203
|
}
|
|
204
204
|
/**
|
|
@@ -206,7 +206,7 @@ function decodeCell(cstr) {
|
|
|
206
206
|
* @example encodeCell({c: 0, r: 0}) => "A1", encodeCell({c: 1, r: 1}) => "B2"
|
|
207
207
|
*/
|
|
208
208
|
function encodeCell(cell) {
|
|
209
|
-
return
|
|
209
|
+
return col_cache_1.colCache.encodeAddress(cell.r + 1, cell.c + 1);
|
|
210
210
|
}
|
|
211
211
|
/**
|
|
212
212
|
* Decode range string to Range object
|
|
@@ -241,7 +241,7 @@ function encodeRange(startOrRange, end) {
|
|
|
241
241
|
function jsonToSheet(data, opts) {
|
|
242
242
|
const o = opts || {};
|
|
243
243
|
// Create a temporary workbook to get a worksheet
|
|
244
|
-
const tempWb = new
|
|
244
|
+
const tempWb = new workbook_1.Workbook();
|
|
245
245
|
const worksheet = tempWb.addWorksheet("Sheet1");
|
|
246
246
|
if (data.length === 0) {
|
|
247
247
|
return worksheet;
|
|
@@ -573,7 +573,7 @@ function sheetToCsv(worksheet, opts) {
|
|
|
573
573
|
* Create a new workbook
|
|
574
574
|
*/
|
|
575
575
|
function bookNew() {
|
|
576
|
-
return new
|
|
576
|
+
return new workbook_1.Workbook();
|
|
577
577
|
}
|
|
578
578
|
/**
|
|
579
579
|
* Append worksheet to workbook (xlsx compatible)
|
|
@@ -610,7 +610,7 @@ function bookAppendSheet(workbook, worksheet, name) {
|
|
|
610
610
|
* const ws = aoaToSheet([["Name", "Age"], ["Alice", 30], ["Bob", 25]])
|
|
611
611
|
*/
|
|
612
612
|
function aoaToSheet(data, opts) {
|
|
613
|
-
const tempWb = new
|
|
613
|
+
const tempWb = new workbook_1.Workbook();
|
|
614
614
|
const worksheet = tempWb.addWorksheet("Sheet1");
|
|
615
615
|
if (data.length === 0) {
|
|
616
616
|
return worksheet;
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StreamBuf = void 0;
|
|
4
|
+
const string_buf_1 = require("./string-buf");
|
|
5
|
+
// =============================================================================
|
|
6
|
+
// Data chunks - encapsulating incoming data
|
|
7
|
+
class StringChunk {
|
|
8
|
+
constructor(data, encoding) {
|
|
9
|
+
this._data = data;
|
|
10
|
+
this._encoding = encoding;
|
|
11
|
+
}
|
|
12
|
+
get length() {
|
|
13
|
+
return this.toBuffer().length;
|
|
14
|
+
}
|
|
15
|
+
copy(target, targetOffset, offset, length) {
|
|
16
|
+
const buf = this.toBuffer();
|
|
17
|
+
const bytesToCopy = Math.min(length, buf.length - offset);
|
|
18
|
+
target.set(buf.subarray(offset, offset + bytesToCopy), targetOffset);
|
|
19
|
+
return bytesToCopy;
|
|
20
|
+
}
|
|
21
|
+
toBuffer() {
|
|
22
|
+
if (!this._buffer) {
|
|
23
|
+
this._buffer = new TextEncoder().encode(this._data);
|
|
24
|
+
}
|
|
25
|
+
return this._buffer;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
class StringBufChunk {
|
|
29
|
+
constructor(data) {
|
|
30
|
+
this._data = data;
|
|
31
|
+
}
|
|
32
|
+
get length() {
|
|
33
|
+
return this._data.length;
|
|
34
|
+
}
|
|
35
|
+
copy(target, targetOffset, offset, length) {
|
|
36
|
+
const buf = this.toBuffer();
|
|
37
|
+
const bytesToCopy = Math.min(length, buf.length - offset);
|
|
38
|
+
target.set(buf.subarray(offset, offset + bytesToCopy), targetOffset);
|
|
39
|
+
return bytesToCopy;
|
|
40
|
+
}
|
|
41
|
+
toBuffer() {
|
|
42
|
+
return this._data.toBuffer();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
class BufferChunk {
|
|
46
|
+
constructor(data) {
|
|
47
|
+
this._data = data;
|
|
48
|
+
}
|
|
49
|
+
get length() {
|
|
50
|
+
return this._data.length;
|
|
51
|
+
}
|
|
52
|
+
copy(target, targetOffset, offset, length) {
|
|
53
|
+
const bytesToCopy = Math.min(length, this._data.length - offset);
|
|
54
|
+
target.set(this._data.subarray(offset, offset + bytesToCopy), targetOffset);
|
|
55
|
+
}
|
|
56
|
+
toBuffer() {
|
|
57
|
+
return this._data;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// =============================================================================
|
|
61
|
+
// ReadWriteBuf - a single buffer supporting simple read-write
|
|
62
|
+
class ReadWriteBuf {
|
|
63
|
+
constructor(size) {
|
|
64
|
+
this.size = size;
|
|
65
|
+
this.buffer = new Uint8Array(size);
|
|
66
|
+
this.iRead = 0;
|
|
67
|
+
this.iWrite = 0;
|
|
68
|
+
}
|
|
69
|
+
toBuffer() {
|
|
70
|
+
if (this.iRead === 0 && this.iWrite === this.size) {
|
|
71
|
+
return this.buffer;
|
|
72
|
+
}
|
|
73
|
+
return this.buffer.slice(this.iRead, this.iWrite);
|
|
74
|
+
}
|
|
75
|
+
get length() {
|
|
76
|
+
return this.iWrite - this.iRead;
|
|
77
|
+
}
|
|
78
|
+
get eod() {
|
|
79
|
+
return this.iRead === this.iWrite;
|
|
80
|
+
}
|
|
81
|
+
get full() {
|
|
82
|
+
return this.iWrite === this.size;
|
|
83
|
+
}
|
|
84
|
+
read(size) {
|
|
85
|
+
if (size === 0) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
if (size === undefined || size >= this.length) {
|
|
89
|
+
const buf = this.toBuffer();
|
|
90
|
+
this.iRead = this.iWrite;
|
|
91
|
+
return buf;
|
|
92
|
+
}
|
|
93
|
+
const buf = this.buffer.slice(this.iRead, this.iRead + size);
|
|
94
|
+
this.iRead += size;
|
|
95
|
+
return buf;
|
|
96
|
+
}
|
|
97
|
+
write(chunk, offset, length) {
|
|
98
|
+
const size = Math.min(length, this.size - this.iWrite);
|
|
99
|
+
chunk.copy(this.buffer, this.iWrite, offset, offset + size);
|
|
100
|
+
this.iWrite += size;
|
|
101
|
+
return size;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// =============================================================================
|
|
105
|
+
// StreamBuf - Browser version without Node.js stream dependency
|
|
106
|
+
// A simple buffer manager that mimics stream behavior for xlsx writing
|
|
107
|
+
class StreamBuf {
|
|
108
|
+
constructor(options) {
|
|
109
|
+
options = options || {};
|
|
110
|
+
this.bufSize = options.bufSize || 1024 * 1024;
|
|
111
|
+
this.buffers = [];
|
|
112
|
+
this.batch = options.batch || false;
|
|
113
|
+
this.corked = false;
|
|
114
|
+
this.paused = false;
|
|
115
|
+
this.encoding = null;
|
|
116
|
+
this.pipes = [];
|
|
117
|
+
this.events = new Map();
|
|
118
|
+
}
|
|
119
|
+
// Event emitter methods
|
|
120
|
+
on(event, callback) {
|
|
121
|
+
const callbacks = this.events.get(event) || [];
|
|
122
|
+
callbacks.push(callback);
|
|
123
|
+
this.events.set(event, callbacks);
|
|
124
|
+
return this;
|
|
125
|
+
}
|
|
126
|
+
once(event, callback) {
|
|
127
|
+
const onceCallback = (...args) => {
|
|
128
|
+
this.off(event, onceCallback);
|
|
129
|
+
callback(...args);
|
|
130
|
+
};
|
|
131
|
+
return this.on(event, onceCallback);
|
|
132
|
+
}
|
|
133
|
+
off(event, callback) {
|
|
134
|
+
const callbacks = this.events.get(event) || [];
|
|
135
|
+
const index = callbacks.indexOf(callback);
|
|
136
|
+
if (index !== -1) {
|
|
137
|
+
callbacks.splice(index, 1);
|
|
138
|
+
}
|
|
139
|
+
return this;
|
|
140
|
+
}
|
|
141
|
+
emit(event, ...args) {
|
|
142
|
+
const callbacks = this.events.get(event) || [];
|
|
143
|
+
callbacks.forEach(cb => cb(...args));
|
|
144
|
+
return callbacks.length > 0;
|
|
145
|
+
}
|
|
146
|
+
removeListener(event, callback) {
|
|
147
|
+
return this.off(event, callback);
|
|
148
|
+
}
|
|
149
|
+
toBuffer() {
|
|
150
|
+
switch (this.buffers.length) {
|
|
151
|
+
case 0:
|
|
152
|
+
return null;
|
|
153
|
+
case 1:
|
|
154
|
+
return this.buffers[0].toBuffer();
|
|
155
|
+
default: {
|
|
156
|
+
const totalLength = this.buffers.reduce((acc, buf) => acc + buf.length, 0);
|
|
157
|
+
const result = new Uint8Array(totalLength);
|
|
158
|
+
let offset = 0;
|
|
159
|
+
for (const rwBuf of this.buffers) {
|
|
160
|
+
const buf = rwBuf.toBuffer();
|
|
161
|
+
result.set(buf, offset);
|
|
162
|
+
offset += buf.length;
|
|
163
|
+
}
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
_getWritableBuffer() {
|
|
169
|
+
if (this.buffers.length) {
|
|
170
|
+
const last = this.buffers[this.buffers.length - 1];
|
|
171
|
+
if (!last.full) {
|
|
172
|
+
return last;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
const buf = new ReadWriteBuf(this.bufSize);
|
|
176
|
+
this.buffers.push(buf);
|
|
177
|
+
return buf;
|
|
178
|
+
}
|
|
179
|
+
async _pipe(chunk) {
|
|
180
|
+
const write = (pipe) => {
|
|
181
|
+
return new Promise(resolve => {
|
|
182
|
+
pipe.write(chunk.toBuffer(), () => {
|
|
183
|
+
resolve();
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
};
|
|
187
|
+
await Promise.all(this.pipes.map(write));
|
|
188
|
+
}
|
|
189
|
+
_writeToBuffers(chunk) {
|
|
190
|
+
let inPos = 0;
|
|
191
|
+
const inLen = chunk.length;
|
|
192
|
+
while (inPos < inLen) {
|
|
193
|
+
const buffer = this._getWritableBuffer();
|
|
194
|
+
inPos += buffer.write(chunk, inPos, inLen - inPos);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async write(data, encoding, callback) {
|
|
198
|
+
const nop = () => { };
|
|
199
|
+
if (encoding instanceof Function) {
|
|
200
|
+
callback = encoding;
|
|
201
|
+
encoding = "utf8";
|
|
202
|
+
}
|
|
203
|
+
callback = callback || nop;
|
|
204
|
+
let chunk;
|
|
205
|
+
if (data instanceof string_buf_1.StringBuf || (data && data.constructor?.name === "StringBuf")) {
|
|
206
|
+
chunk = new StringBufChunk(data);
|
|
207
|
+
}
|
|
208
|
+
else if (data instanceof Uint8Array) {
|
|
209
|
+
chunk = new BufferChunk(data);
|
|
210
|
+
}
|
|
211
|
+
else if (ArrayBuffer.isView(data)) {
|
|
212
|
+
chunk = new BufferChunk(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
|
|
213
|
+
}
|
|
214
|
+
else if (data instanceof ArrayBuffer) {
|
|
215
|
+
chunk = new BufferChunk(new Uint8Array(data));
|
|
216
|
+
}
|
|
217
|
+
else if (typeof data === "string" || data instanceof String) {
|
|
218
|
+
chunk = new StringChunk(String(data), encoding);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
throw new Error("Chunk must be one of type String, Uint8Array, ArrayBuffer or StringBuf.");
|
|
222
|
+
}
|
|
223
|
+
if (this.pipes.length) {
|
|
224
|
+
if (this.batch) {
|
|
225
|
+
this._writeToBuffers(chunk);
|
|
226
|
+
while (!this.corked && this.buffers.length > 1) {
|
|
227
|
+
await this._pipe(new BufferChunk(this.buffers.shift().toBuffer()));
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else if (!this.corked) {
|
|
231
|
+
await this._pipe(chunk);
|
|
232
|
+
callback();
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
this._writeToBuffers(chunk);
|
|
236
|
+
queueMicrotask(() => callback());
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
if (!this.paused) {
|
|
241
|
+
this.emit("data", chunk.toBuffer());
|
|
242
|
+
}
|
|
243
|
+
this._writeToBuffers(chunk);
|
|
244
|
+
this.emit("readable");
|
|
245
|
+
}
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
cork() {
|
|
249
|
+
this.corked = true;
|
|
250
|
+
}
|
|
251
|
+
_flush() {
|
|
252
|
+
if (this.pipes.length) {
|
|
253
|
+
while (this.buffers.length) {
|
|
254
|
+
this._pipe(new BufferChunk(this.buffers.shift().toBuffer()));
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
uncork() {
|
|
259
|
+
this.corked = false;
|
|
260
|
+
this._flush();
|
|
261
|
+
}
|
|
262
|
+
end(chunk, encoding, callback) {
|
|
263
|
+
const writeComplete = (error) => {
|
|
264
|
+
if (error) {
|
|
265
|
+
callback?.(error);
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
this._flush();
|
|
269
|
+
this.pipes.forEach((pipe) => {
|
|
270
|
+
pipe.end();
|
|
271
|
+
});
|
|
272
|
+
this.emit("finish");
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
if (chunk) {
|
|
276
|
+
this.write(chunk, encoding, writeComplete);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
writeComplete();
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
read(size) {
|
|
283
|
+
let buffers;
|
|
284
|
+
if (size) {
|
|
285
|
+
buffers = [];
|
|
286
|
+
while (size && this.buffers.length && !this.buffers[0].eod) {
|
|
287
|
+
const first = this.buffers[0];
|
|
288
|
+
const buffer = first.read(size);
|
|
289
|
+
if (buffer) {
|
|
290
|
+
size -= buffer.length;
|
|
291
|
+
buffers.push(buffer);
|
|
292
|
+
}
|
|
293
|
+
if (first.eod && first.full) {
|
|
294
|
+
this.buffers.shift();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return concatUint8Arrays(buffers);
|
|
298
|
+
}
|
|
299
|
+
buffers = this.buffers.map(buf => buf.toBuffer()).filter(Boolean);
|
|
300
|
+
this.buffers = [];
|
|
301
|
+
return concatUint8Arrays(buffers);
|
|
302
|
+
}
|
|
303
|
+
setEncoding(encoding) {
|
|
304
|
+
this.encoding = encoding;
|
|
305
|
+
}
|
|
306
|
+
pause() {
|
|
307
|
+
this.paused = true;
|
|
308
|
+
}
|
|
309
|
+
resume() {
|
|
310
|
+
this.paused = false;
|
|
311
|
+
}
|
|
312
|
+
isPaused() {
|
|
313
|
+
return this.paused;
|
|
314
|
+
}
|
|
315
|
+
pipe(destination) {
|
|
316
|
+
this.pipes.push(destination);
|
|
317
|
+
if (!this.paused && this.buffers.length) {
|
|
318
|
+
this.end();
|
|
319
|
+
}
|
|
320
|
+
return destination;
|
|
321
|
+
}
|
|
322
|
+
unpipe(destination) {
|
|
323
|
+
this.pipes = this.pipes.filter((pipe) => pipe !== destination);
|
|
324
|
+
}
|
|
325
|
+
unshift() {
|
|
326
|
+
throw new Error("Not Implemented");
|
|
327
|
+
}
|
|
328
|
+
wrap() {
|
|
329
|
+
throw new Error("Not Implemented");
|
|
330
|
+
}
|
|
331
|
+
push(chunk) {
|
|
332
|
+
if (chunk !== null) {
|
|
333
|
+
this.write(chunk);
|
|
334
|
+
}
|
|
335
|
+
return true;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
exports.StreamBuf = StreamBuf;
|
|
339
|
+
// Helper function to concatenate Uint8Arrays
|
|
340
|
+
function concatUint8Arrays(arrays) {
|
|
341
|
+
if (arrays.length === 0) {
|
|
342
|
+
return new Uint8Array(0);
|
|
343
|
+
}
|
|
344
|
+
if (arrays.length === 1) {
|
|
345
|
+
return arrays[0];
|
|
346
|
+
}
|
|
347
|
+
const totalLength = arrays.reduce((acc, arr) => acc + arr.length, 0);
|
|
348
|
+
const result = new Uint8Array(totalLength);
|
|
349
|
+
let offset = 0;
|
|
350
|
+
for (const arr of arrays) {
|
|
351
|
+
result.set(arr, offset);
|
|
352
|
+
offset += arr.length;
|
|
353
|
+
}
|
|
354
|
+
return result;
|
|
355
|
+
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StreamBuf = void 0;
|
|
4
4
|
const stream_1 = require("stream");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
const string_buf_1 = require("./string-buf");
|
|
7
7
|
// =============================================================================
|
|
8
8
|
// data chunks - encapsulating incoming data
|
|
9
9
|
class StringChunk {
|
|
@@ -142,7 +142,7 @@ const StreamBuf = function (options) {
|
|
|
142
142
|
this.encoding = null;
|
|
143
143
|
};
|
|
144
144
|
exports.StreamBuf = StreamBuf;
|
|
145
|
-
(0,
|
|
145
|
+
(0, utils_1.inherits)(StreamBuf, stream_1.Duplex, {
|
|
146
146
|
toBuffer() {
|
|
147
147
|
switch (this.buffers.length) {
|
|
148
148
|
case 0:
|
|
@@ -195,11 +195,11 @@ exports.StreamBuf = StreamBuf;
|
|
|
195
195
|
callback = encoding;
|
|
196
196
|
encoding = "utf8";
|
|
197
197
|
}
|
|
198
|
-
callback = callback ||
|
|
198
|
+
callback = callback || utils_1.nop;
|
|
199
199
|
// encapsulate data into a chunk
|
|
200
200
|
let chunk;
|
|
201
201
|
// Use constructor name check for better ES6 module compatibility
|
|
202
|
-
if (data instanceof
|
|
202
|
+
if (data instanceof string_buf_1.StringBuf || (data && data.constructor?.name === "StringBuf")) {
|
|
203
203
|
chunk = new StringBufChunk(data);
|
|
204
204
|
}
|
|
205
205
|
else if (Buffer.isBuffer(data)) {
|
|
@@ -10,7 +10,7 @@ exports.extractAll = extractAll;
|
|
|
10
10
|
exports.extractFile = extractFile;
|
|
11
11
|
exports.listFiles = listFiles;
|
|
12
12
|
exports.forEachEntry = forEachEntry;
|
|
13
|
-
const
|
|
13
|
+
const zip_parser_1 = require("./zip-parser");
|
|
14
14
|
/**
|
|
15
15
|
* Extract all files from a ZIP buffer
|
|
16
16
|
*
|
|
@@ -19,7 +19,7 @@ const zip_parser_js_1 = require("./zip-parser");
|
|
|
19
19
|
*
|
|
20
20
|
* @example
|
|
21
21
|
* ```ts
|
|
22
|
-
* import { extractAll } from "./utils/unzip/extract
|
|
22
|
+
* import { extractAll } from "./utils/unzip/extract";
|
|
23
23
|
*
|
|
24
24
|
* const zipData = fs.readFileSync("archive.zip");
|
|
25
25
|
* const files = await extractAll(zipData);
|
|
@@ -31,7 +31,7 @@ const zip_parser_js_1 = require("./zip-parser");
|
|
|
31
31
|
*/
|
|
32
32
|
async function extractAll(zipData) {
|
|
33
33
|
const files = new Map();
|
|
34
|
-
const parser = new
|
|
34
|
+
const parser = new zip_parser_1.ZipParser(zipData);
|
|
35
35
|
for (const entry of parser.getEntries()) {
|
|
36
36
|
const data = await parser.extract(entry.path);
|
|
37
37
|
files.set(entry.path, {
|
|
@@ -52,7 +52,7 @@ async function extractAll(zipData) {
|
|
|
52
52
|
*
|
|
53
53
|
* @example
|
|
54
54
|
* ```ts
|
|
55
|
-
* import { extractFile } from "./utils/unzip/extract
|
|
55
|
+
* import { extractFile } from "./utils/unzip/extract";
|
|
56
56
|
*
|
|
57
57
|
* const zipData = fs.readFileSync("archive.zip");
|
|
58
58
|
* const content = await extractFile(zipData, "readme.txt");
|
|
@@ -62,7 +62,7 @@ async function extractAll(zipData) {
|
|
|
62
62
|
* ```
|
|
63
63
|
*/
|
|
64
64
|
async function extractFile(zipData, filePath) {
|
|
65
|
-
const parser = new
|
|
65
|
+
const parser = new zip_parser_1.ZipParser(zipData);
|
|
66
66
|
return parser.extract(filePath);
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
@@ -73,7 +73,7 @@ async function extractFile(zipData, filePath) {
|
|
|
73
73
|
*
|
|
74
74
|
* @example
|
|
75
75
|
* ```ts
|
|
76
|
-
* import { listFiles } from "./utils/unzip/extract
|
|
76
|
+
* import { listFiles } from "./utils/unzip/extract";
|
|
77
77
|
*
|
|
78
78
|
* const zipData = fs.readFileSync("archive.zip");
|
|
79
79
|
* const paths = await listFiles(zipData);
|
|
@@ -81,7 +81,7 @@ async function extractFile(zipData, filePath) {
|
|
|
81
81
|
* ```
|
|
82
82
|
*/
|
|
83
83
|
async function listFiles(zipData) {
|
|
84
|
-
const parser = new
|
|
84
|
+
const parser = new zip_parser_1.ZipParser(zipData);
|
|
85
85
|
return parser.listFiles();
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
@@ -92,7 +92,7 @@ async function listFiles(zipData) {
|
|
|
92
92
|
*
|
|
93
93
|
* @example
|
|
94
94
|
* ```ts
|
|
95
|
-
* import { forEachEntry } from "./utils/unzip/extract
|
|
95
|
+
* import { forEachEntry } from "./utils/unzip/extract";
|
|
96
96
|
*
|
|
97
97
|
* await forEachEntry(zipData, async (path, getData) => {
|
|
98
98
|
* if (path.endsWith(".xml")) {
|
|
@@ -104,11 +104,11 @@ async function listFiles(zipData) {
|
|
|
104
104
|
* ```
|
|
105
105
|
*/
|
|
106
106
|
async function forEachEntry(zipData, callback) {
|
|
107
|
-
const parser = new
|
|
107
|
+
const parser = new zip_parser_1.ZipParser(zipData);
|
|
108
108
|
await parser.forEach(async (entry, getData) => {
|
|
109
109
|
return callback(entry.path, getData, entry);
|
|
110
110
|
});
|
|
111
111
|
}
|
|
112
112
|
// Re-export ZipParser for advanced usage
|
|
113
|
-
var
|
|
114
|
-
Object.defineProperty(exports, "ZipParser", { enumerable: true, get: function () { return
|
|
113
|
+
var zip_parser_2 = require("./zip-parser");
|
|
114
|
+
Object.defineProperty(exports, "ZipParser", { enumerable: true, get: function () { return zip_parser_2.ZipParser; } });
|
|
@@ -21,25 +21,25 @@
|
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
22
|
exports.ZipParser = exports.forEachEntry = exports.listFiles = exports.extractFile = exports.extractAll = exports.parseExtraField = exports.parseDateTime = exports.parseBuffer = exports.bufferStream = exports.NoopStream = exports.PullStream = exports.createParse = exports.Parse = void 0;
|
|
23
23
|
// Stream-based API (Node.js only - requires stream module)
|
|
24
|
-
var
|
|
25
|
-
Object.defineProperty(exports, "Parse", { enumerable: true, get: function () { return
|
|
26
|
-
Object.defineProperty(exports, "createParse", { enumerable: true, get: function () { return
|
|
27
|
-
var
|
|
28
|
-
Object.defineProperty(exports, "PullStream", { enumerable: true, get: function () { return
|
|
29
|
-
var
|
|
30
|
-
Object.defineProperty(exports, "NoopStream", { enumerable: true, get: function () { return
|
|
31
|
-
var
|
|
32
|
-
Object.defineProperty(exports, "bufferStream", { enumerable: true, get: function () { return
|
|
33
|
-
var
|
|
34
|
-
Object.defineProperty(exports, "parseBuffer", { enumerable: true, get: function () { return
|
|
35
|
-
var
|
|
36
|
-
Object.defineProperty(exports, "parseDateTime", { enumerable: true, get: function () { return
|
|
37
|
-
var
|
|
38
|
-
Object.defineProperty(exports, "parseExtraField", { enumerable: true, get: function () { return
|
|
24
|
+
var parse_1 = require("./parse");
|
|
25
|
+
Object.defineProperty(exports, "Parse", { enumerable: true, get: function () { return parse_1.Parse; } });
|
|
26
|
+
Object.defineProperty(exports, "createParse", { enumerable: true, get: function () { return parse_1.createParse; } });
|
|
27
|
+
var pull_stream_1 = require("./pull-stream");
|
|
28
|
+
Object.defineProperty(exports, "PullStream", { enumerable: true, get: function () { return pull_stream_1.PullStream; } });
|
|
29
|
+
var noop_stream_1 = require("./noop-stream");
|
|
30
|
+
Object.defineProperty(exports, "NoopStream", { enumerable: true, get: function () { return noop_stream_1.NoopStream; } });
|
|
31
|
+
var buffer_stream_1 = require("./buffer-stream");
|
|
32
|
+
Object.defineProperty(exports, "bufferStream", { enumerable: true, get: function () { return buffer_stream_1.bufferStream; } });
|
|
33
|
+
var parse_buffer_1 = require("./parse-buffer");
|
|
34
|
+
Object.defineProperty(exports, "parseBuffer", { enumerable: true, get: function () { return parse_buffer_1.parse; } });
|
|
35
|
+
var parse_datetime_1 = require("./parse-datetime");
|
|
36
|
+
Object.defineProperty(exports, "parseDateTime", { enumerable: true, get: function () { return parse_datetime_1.parseDateTime; } });
|
|
37
|
+
var parse_extra_field_1 = require("./parse-extra-field");
|
|
38
|
+
Object.defineProperty(exports, "parseExtraField", { enumerable: true, get: function () { return parse_extra_field_1.parseExtraField; } });
|
|
39
39
|
// Buffer-based API (Browser + Node.js - cross-platform)
|
|
40
|
-
var
|
|
41
|
-
Object.defineProperty(exports, "extractAll", { enumerable: true, get: function () { return
|
|
42
|
-
Object.defineProperty(exports, "extractFile", { enumerable: true, get: function () { return
|
|
43
|
-
Object.defineProperty(exports, "listFiles", { enumerable: true, get: function () { return
|
|
44
|
-
Object.defineProperty(exports, "forEachEntry", { enumerable: true, get: function () { return
|
|
45
|
-
Object.defineProperty(exports, "ZipParser", { enumerable: true, get: function () { return
|
|
40
|
+
var extract_1 = require("./extract");
|
|
41
|
+
Object.defineProperty(exports, "extractAll", { enumerable: true, get: function () { return extract_1.extractAll; } });
|
|
42
|
+
Object.defineProperty(exports, "extractFile", { enumerable: true, get: function () { return extract_1.extractFile; } });
|
|
43
|
+
Object.defineProperty(exports, "listFiles", { enumerable: true, get: function () { return extract_1.listFiles; } });
|
|
44
|
+
Object.defineProperty(exports, "forEachEntry", { enumerable: true, get: function () { return extract_1.forEachEntry; } });
|
|
45
|
+
Object.defineProperty(exports, "ZipParser", { enumerable: true, get: function () { return extract_1.ZipParser; } });
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.parseExtraField = parseExtraField;
|
|
11
|
-
const
|
|
11
|
+
const parse_buffer_1 = require("./parse-buffer");
|
|
12
12
|
function parseExtraField(extraField, vars) {
|
|
13
13
|
let extra;
|
|
14
14
|
// Find the ZIP64 header, if present.
|
|
15
15
|
while (!extra && extraField && extraField.length) {
|
|
16
|
-
const candidateExtra = (0,
|
|
16
|
+
const candidateExtra = (0, parse_buffer_1.parse)(extraField, [
|
|
17
17
|
["signature", 2],
|
|
18
18
|
["partSize", 2]
|
|
19
19
|
]);
|
|
@@ -30,7 +30,7 @@ function parseExtraField(extraField, vars) {
|
|
|
30
30
|
fieldsToExpect.push(["offsetToLocalFileHeader", 8]);
|
|
31
31
|
}
|
|
32
32
|
// slice off the 4 bytes for signature and partSize
|
|
33
|
-
extra = (0,
|
|
33
|
+
extra = (0, parse_buffer_1.parse)(extraField.slice(4), fieldsToExpect);
|
|
34
34
|
}
|
|
35
35
|
else {
|
|
36
36
|
// Advance the buffer to the next part.
|