@cj-tech-master/excelts 1.6.2-canary.20251224015244.0b06ae9 → 1.6.3-canary.20251224124621.73c5d94
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 +31 -18
- package/README_zh.md +31 -19
- package/dist/browser/excelts.esm.js +19115 -0
- package/dist/browser/excelts.esm.js.map +1 -0
- package/dist/browser/excelts.esm.min.js +127 -0
- package/dist/browser/excelts.iife.js +13576 -46968
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +25 -105
- 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 +154 -0
- package/dist/cjs/csv/csv.browser.js +68 -0
- package/dist/cjs/csv/csv.js +226 -162
- package/dist/cjs/doc/anchor.js +2 -2
- package/dist/cjs/doc/cell.js +22 -22
- package/dist/cjs/doc/column.js +7 -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 +41 -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 +34 -34
- package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
- package/dist/cjs/stream/xlsx/worksheet-writer.js +60 -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/encryptor.browser.js +240 -0
- package/dist/cjs/utils/parse-sax.js +2 -2
- 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 +3 -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 +85 -0
- package/dist/cjs/utils/zip/compress.browser.js +83 -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/index.js +17 -17
- 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-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 +2 -2
- 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 +4 -4
- 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 +68 -68
- 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 +205 -0
- package/dist/cjs/xlsx/xlsx.js +91 -833
- 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 +141 -0
- package/dist/esm/csv/csv.browser.js +65 -0
- package/dist/esm/csv/csv.js +189 -159
- 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/index.browser.js +33 -1
- package/dist/esm/index.js +23 -8
- package/dist/esm/local.js +0 -1
- package/dist/esm/utils/browser-buffer.js +67 -0
- package/dist/esm/utils/encryptor.browser.js +237 -0
- package/dist/esm/utils/stream-buf.browser.js +352 -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 +80 -0
- package/dist/esm/utils/zip/compress.browser.js +76 -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-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/xlsx.base.js +739 -0
- package/dist/esm/xlsx/xlsx.browser.js +202 -0
- package/dist/esm/xlsx/xlsx.js +87 -829
- 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 +61 -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 +3 -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 +10 -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 +6 -6
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
- package/dist/types/stream/xlsx/worksheet-writer.d.ts +9 -9
- package/dist/types/utils/browser-buffer.d.ts +28 -0
- package/dist/types/utils/col-cache.d.ts +1 -1
- package/dist/types/utils/encryptor.browser.d.ts +28 -0
- 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/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 +42 -0
- package/dist/types/utils/zip/compress.browser.d.ts +54 -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/index.d.ts +5 -5
- 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-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 +1 -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 +1 -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 +13 -15
|
@@ -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.
|
|
@@ -14,12 +14,12 @@ exports.Parse = void 0;
|
|
|
14
14
|
exports.createParse = createParse;
|
|
15
15
|
const zlib_1 = __importDefault(require("zlib"));
|
|
16
16
|
const stream_1 = require("stream");
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
17
|
+
const pull_stream_1 = require("./pull-stream");
|
|
18
|
+
const noop_stream_1 = require("./noop-stream");
|
|
19
|
+
const buffer_stream_1 = require("./buffer-stream");
|
|
20
|
+
const parse_extra_field_1 = require("./parse-extra-field");
|
|
21
|
+
const parse_datetime_1 = require("./parse-datetime");
|
|
22
|
+
const parse_buffer_1 = require("./parse-buffer");
|
|
23
23
|
// Check if native zlib is available (Node.js environment)
|
|
24
24
|
// In browser with polyfill, createInflateRaw may not exist or may not work properly
|
|
25
25
|
const hasNativeZlib = typeof zlib_1.default?.createInflateRaw === "function" &&
|
|
@@ -103,7 +103,7 @@ function createInflateRaw() {
|
|
|
103
103
|
}
|
|
104
104
|
const endDirectorySignature = Buffer.alloc(4);
|
|
105
105
|
endDirectorySignature.writeUInt32LE(0x06054b50, 0);
|
|
106
|
-
class Parse extends
|
|
106
|
+
class Parse extends pull_stream_1.PullStream {
|
|
107
107
|
constructor(opts = {}) {
|
|
108
108
|
super();
|
|
109
109
|
this._opts = opts;
|
|
@@ -163,7 +163,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
163
163
|
}
|
|
164
164
|
async _readCrxHeader() {
|
|
165
165
|
const data = await this.pull(12);
|
|
166
|
-
this.crxHeader = (0,
|
|
166
|
+
this.crxHeader = (0, parse_buffer_1.parse)(data, [
|
|
167
167
|
["version", 4],
|
|
168
168
|
["pubKeyLength", 4],
|
|
169
169
|
["signatureLength", 4]
|
|
@@ -176,7 +176,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
176
176
|
}
|
|
177
177
|
async _readFile() {
|
|
178
178
|
const data = await this.pull(26);
|
|
179
|
-
const vars = (0,
|
|
179
|
+
const vars = (0, parse_buffer_1.parse)(data, [
|
|
180
180
|
["versionsNeededToExtract", 2],
|
|
181
181
|
["flags", 2],
|
|
182
182
|
["compressionMethod", 2],
|
|
@@ -188,7 +188,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
188
188
|
["fileNameLength", 2],
|
|
189
189
|
["extraFieldLength", 2]
|
|
190
190
|
]);
|
|
191
|
-
vars.lastModifiedDateTime = (0,
|
|
191
|
+
vars.lastModifiedDateTime = (0, parse_datetime_1.parseDateTime)(vars.lastModifiedDate || 0, vars.lastModifiedTime || 0);
|
|
192
192
|
if (this.crxHeader) {
|
|
193
193
|
vars.crxHeader = this.crxHeader;
|
|
194
194
|
}
|
|
@@ -198,7 +198,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
198
198
|
let __autodraining = false;
|
|
199
199
|
entry.autodrain = function () {
|
|
200
200
|
__autodraining = true;
|
|
201
|
-
const draining = entry.pipe(new
|
|
201
|
+
const draining = entry.pipe(new noop_stream_1.NoopStream());
|
|
202
202
|
draining.promise = function () {
|
|
203
203
|
return new Promise((resolve, reject) => {
|
|
204
204
|
draining.on("finish", resolve);
|
|
@@ -208,7 +208,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
208
208
|
return draining;
|
|
209
209
|
};
|
|
210
210
|
entry.buffer = function () {
|
|
211
|
-
return (0,
|
|
211
|
+
return (0, buffer_stream_1.bufferStream)(entry);
|
|
212
212
|
};
|
|
213
213
|
entry.path = fileName;
|
|
214
214
|
entry.props = {
|
|
@@ -233,7 +233,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
const extraFieldData = await this.pull(vars.extraFieldLength || 0);
|
|
236
|
-
const extra = (0,
|
|
236
|
+
const extra = (0, parse_extra_field_1.parseExtraField)(extraFieldData, vars);
|
|
237
237
|
entry.vars = vars;
|
|
238
238
|
entry.extra = extra;
|
|
239
239
|
if (this._opts.forceStream) {
|
|
@@ -278,7 +278,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
278
278
|
}
|
|
279
279
|
async _processDataDescriptor(entry) {
|
|
280
280
|
const data = await this.pull(16);
|
|
281
|
-
const vars = (0,
|
|
281
|
+
const vars = (0, parse_buffer_1.parse)(data, [
|
|
282
282
|
["dataDescriptorSignature", 4],
|
|
283
283
|
["crc32", 4],
|
|
284
284
|
["compressedSize", 4],
|
|
@@ -289,7 +289,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
289
289
|
}
|
|
290
290
|
async _readCentralDirectoryFileHeader() {
|
|
291
291
|
const data = await this.pull(42);
|
|
292
|
-
const vars = (0,
|
|
292
|
+
const vars = (0, parse_buffer_1.parse)(data, [
|
|
293
293
|
["versionMadeBy", 2],
|
|
294
294
|
["versionsNeededToExtract", 2],
|
|
295
295
|
["flags", 2],
|
|
@@ -314,7 +314,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
314
314
|
}
|
|
315
315
|
async _readEndOfCentralDirectoryRecord() {
|
|
316
316
|
const data = await this.pull(18);
|
|
317
|
-
const vars = (0,
|
|
317
|
+
const vars = (0, parse_buffer_1.parse)(data, [
|
|
318
318
|
["diskNumber", 2],
|
|
319
319
|
["diskStart", 2],
|
|
320
320
|
["numberOfRecordsOnDisk", 2],
|
|
@@ -9,7 +9,7 @@ exports.ZipParser = void 0;
|
|
|
9
9
|
exports.parseZipEntries = parseZipEntries;
|
|
10
10
|
exports.extractEntryData = extractEntryData;
|
|
11
11
|
exports.extractEntryDataSync = extractEntryDataSync;
|
|
12
|
-
const
|
|
12
|
+
const compress_1 = require("../zip/compress");
|
|
13
13
|
// ZIP file signatures
|
|
14
14
|
const LOCAL_FILE_HEADER_SIG = 0x04034b50;
|
|
15
15
|
const CENTRAL_DIR_HEADER_SIG = 0x02014b50;
|
|
@@ -322,7 +322,7 @@ async function extractEntryData(data, entry) {
|
|
|
322
322
|
return compressedData;
|
|
323
323
|
}
|
|
324
324
|
else if (entry.compressionMethod === COMPRESSION_DEFLATE) {
|
|
325
|
-
return (0,
|
|
325
|
+
return (0, compress_1.decompress)(compressedData);
|
|
326
326
|
}
|
|
327
327
|
else {
|
|
328
328
|
throw new Error(`Unsupported compression method: ${entry.compressionMethod}`);
|
|
@@ -363,7 +363,7 @@ function extractEntryDataSync(data, entry) {
|
|
|
363
363
|
return compressedData;
|
|
364
364
|
}
|
|
365
365
|
else if (entry.compressionMethod === COMPRESSION_DEFLATE) {
|
|
366
|
-
return (0,
|
|
366
|
+
return (0, compress_1.decompressSync)(compressedData);
|
|
367
367
|
}
|
|
368
368
|
else {
|
|
369
369
|
throw new Error(`Unsupported compression method: ${entry.compressionMethod}`);
|