@cj-tech-master/excelts 1.6.2 → 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 +36 -4
- package/README_zh.md +37 -6
- 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 +29 -26
- package/dist/cjs/stream/xlsx/workbook-writer.js +71 -57
- package/dist/cjs/stream/xlsx/worksheet-reader.js +27 -23
- package/dist/cjs/stream/xlsx/worksheet-writer.js +72 -66
- 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/stream/xlsx/hyperlink-reader.js +1 -1
- package/dist/esm/stream/xlsx/workbook-reader.js +7 -4
- package/dist/esm/stream/xlsx/workbook-writer.js +37 -23
- package/dist/esm/stream/xlsx/worksheet-reader.js +12 -8
- package/dist/esm/stream/xlsx/worksheet-writer.js +12 -6
- 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 +4 -4
- 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 -20
- package/dist/types/local.d.ts +0 -1
- package/dist/types/stream/xlsx/hyperlink-reader.d.ts +11 -11
- package/dist/types/stream/xlsx/workbook-reader.d.ts +125 -36
- package/dist/types/stream/xlsx/workbook-writer.d.ts +105 -22
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +40 -22
- package/dist/types/stream/xlsx/worksheet-writer.d.ts +83 -49
- package/dist/types/types.d.ts +4 -16
- 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,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base compression utilities using Web Streams API
|
|
4
|
+
* Shared between Node.js and Browser implementations
|
|
5
|
+
*
|
|
6
|
+
* Uses CompressionStream/DecompressionStream API with "deflate-raw" format
|
|
7
|
+
* (raw DEFLATE without zlib header/trailer, required for ZIP files)
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.hasCompressionStream = hasCompressionStream;
|
|
11
|
+
exports.compressWithStream = compressWithStream;
|
|
12
|
+
exports.decompressWithStream = decompressWithStream;
|
|
13
|
+
/**
|
|
14
|
+
* Check if CompressionStream is available
|
|
15
|
+
*/
|
|
16
|
+
function hasCompressionStream() {
|
|
17
|
+
return typeof CompressionStream !== "undefined";
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Compress using CompressionStream API
|
|
21
|
+
* Uses "deflate-raw" format (required for ZIP files)
|
|
22
|
+
*
|
|
23
|
+
* @param data - Data to compress
|
|
24
|
+
* @returns Compressed data
|
|
25
|
+
*/
|
|
26
|
+
async function compressWithStream(data) {
|
|
27
|
+
const cs = new CompressionStream("deflate-raw");
|
|
28
|
+
const writer = cs.writable.getWriter();
|
|
29
|
+
const reader = cs.readable.getReader();
|
|
30
|
+
// Write data and close
|
|
31
|
+
writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
|
|
32
|
+
writer.close();
|
|
33
|
+
// Read all compressed chunks
|
|
34
|
+
const chunks = [];
|
|
35
|
+
let totalLength = 0;
|
|
36
|
+
while (true) {
|
|
37
|
+
const { done, value } = await reader.read();
|
|
38
|
+
if (done) {
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
chunks.push(value);
|
|
42
|
+
totalLength += value.length;
|
|
43
|
+
}
|
|
44
|
+
// Combine chunks into single array
|
|
45
|
+
const result = new Uint8Array(totalLength);
|
|
46
|
+
let offset = 0;
|
|
47
|
+
for (const chunk of chunks) {
|
|
48
|
+
result.set(chunk, offset);
|
|
49
|
+
offset += chunk.length;
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Decompress using DecompressionStream API
|
|
55
|
+
*
|
|
56
|
+
* @param data - Compressed data (deflate-raw format)
|
|
57
|
+
* @returns Decompressed data
|
|
58
|
+
*/
|
|
59
|
+
async function decompressWithStream(data) {
|
|
60
|
+
const ds = new DecompressionStream("deflate-raw");
|
|
61
|
+
const writer = ds.writable.getWriter();
|
|
62
|
+
const reader = ds.readable.getReader();
|
|
63
|
+
// Write data and close
|
|
64
|
+
writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
|
|
65
|
+
writer.close();
|
|
66
|
+
// Read all decompressed chunks
|
|
67
|
+
const chunks = [];
|
|
68
|
+
let totalLength = 0;
|
|
69
|
+
while (true) {
|
|
70
|
+
const { done, value } = await reader.read();
|
|
71
|
+
if (done) {
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
chunks.push(value);
|
|
75
|
+
totalLength += value.length;
|
|
76
|
+
}
|
|
77
|
+
// Combine chunks into single array
|
|
78
|
+
const result = new Uint8Array(totalLength);
|
|
79
|
+
let offset = 0;
|
|
80
|
+
for (const chunk of chunks) {
|
|
81
|
+
result.set(chunk, offset);
|
|
82
|
+
offset += chunk.length;
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser compression utilities using Web Streams API
|
|
4
|
+
*
|
|
5
|
+
* Uses CompressionStream API (Chrome 80+, Firefox 113+, Safari 16.4+)
|
|
6
|
+
* with "deflate-raw" format (required for ZIP files)
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.hasCompressionStream = void 0;
|
|
10
|
+
exports.hasNativeZlib = hasNativeZlib;
|
|
11
|
+
exports.compress = compress;
|
|
12
|
+
exports.compressSync = compressSync;
|
|
13
|
+
exports.decompress = decompress;
|
|
14
|
+
exports.decompressSync = decompressSync;
|
|
15
|
+
const compress_base_1 = require("./compress.base");
|
|
16
|
+
Object.defineProperty(exports, "hasCompressionStream", { enumerable: true, get: function () { return compress_base_1.hasCompressionStream; } });
|
|
17
|
+
/**
|
|
18
|
+
* Check if native zlib is available (always false in browser)
|
|
19
|
+
*/
|
|
20
|
+
function hasNativeZlib() {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Compress data using browser's native CompressionStream
|
|
25
|
+
*
|
|
26
|
+
* @param data - Data to compress
|
|
27
|
+
* @param options - Compression options
|
|
28
|
+
* @returns Compressed data
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const data = new TextEncoder().encode("Hello, World!");
|
|
33
|
+
* const compressed = await compress(data, { level: 6 });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
async function compress(data, options = {}) {
|
|
37
|
+
const level = options.level ?? 6;
|
|
38
|
+
// Level 0 means no compression
|
|
39
|
+
if (level === 0) {
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
// Use CompressionStream
|
|
43
|
+
if (typeof CompressionStream !== "undefined") {
|
|
44
|
+
return (0, compress_base_1.compressWithStream)(data);
|
|
45
|
+
}
|
|
46
|
+
// No compression available - return original data
|
|
47
|
+
console.warn("No native compression available, returning uncompressed data");
|
|
48
|
+
return data;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Compress data synchronously
|
|
52
|
+
* Not available in browser - throws error
|
|
53
|
+
*
|
|
54
|
+
* @param _data - Data to compress
|
|
55
|
+
* @param _options - Compression options
|
|
56
|
+
* @throws Error always - sync compression not available in browser
|
|
57
|
+
*/
|
|
58
|
+
function compressSync(_data, _options = {}) {
|
|
59
|
+
throw new Error("Synchronous compression is not available in browser environment");
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Decompress data using browser's native DecompressionStream
|
|
63
|
+
*
|
|
64
|
+
* @param data - Compressed data (deflate-raw format)
|
|
65
|
+
* @returns Decompressed data
|
|
66
|
+
*/
|
|
67
|
+
async function decompress(data) {
|
|
68
|
+
// Use DecompressionStream
|
|
69
|
+
if (typeof DecompressionStream !== "undefined") {
|
|
70
|
+
return (0, compress_base_1.decompressWithStream)(data);
|
|
71
|
+
}
|
|
72
|
+
throw new Error("No native decompression available in browser");
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Decompress data synchronously
|
|
76
|
+
* Not available in browser - throws error
|
|
77
|
+
*
|
|
78
|
+
* @param _data - Compressed data
|
|
79
|
+
* @throws Error always - sync decompression not available in browser
|
|
80
|
+
*/
|
|
81
|
+
function decompressSync(_data) {
|
|
82
|
+
throw new Error("Synchronous decompression is not available in browser environment");
|
|
83
|
+
}
|
|
@@ -1,107 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Node.js compression utilities using native zlib
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Both use "deflate-raw" format which is required for ZIP files
|
|
9
|
-
* (raw DEFLATE without zlib header/trailer)
|
|
5
|
+
* Uses zlib module (C++ implementation, fastest) with "deflate-raw" format
|
|
6
|
+
* (raw DEFLATE without zlib header/trailer, required for ZIP files)
|
|
10
7
|
*/
|
|
11
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
-
if (k2 === undefined) k2 = k;
|
|
13
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
-
}
|
|
17
|
-
Object.defineProperty(o, k2, desc);
|
|
18
|
-
}) : (function(o, m, k, k2) {
|
|
19
|
-
if (k2 === undefined) k2 = k;
|
|
20
|
-
o[k2] = m[k];
|
|
21
|
-
}));
|
|
22
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
-
}) : function(o, v) {
|
|
25
|
-
o["default"] = v;
|
|
26
|
-
});
|
|
27
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
-
var ownKeys = function(o) {
|
|
29
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
-
var ar = [];
|
|
31
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
-
return ar;
|
|
33
|
-
};
|
|
34
|
-
return ownKeys(o);
|
|
35
|
-
};
|
|
36
|
-
return function (mod) {
|
|
37
|
-
if (mod && mod.__esModule) return mod;
|
|
38
|
-
var result = {};
|
|
39
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
-
__setModuleDefault(result, mod);
|
|
41
|
-
return result;
|
|
42
|
-
};
|
|
43
|
-
})();
|
|
44
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
exports.
|
|
9
|
+
exports.hasCompressionStream = void 0;
|
|
46
10
|
exports.hasNativeZlib = hasNativeZlib;
|
|
47
|
-
exports.hasCompressionStream = hasCompressionStream;
|
|
48
11
|
exports.compress = compress;
|
|
49
12
|
exports.compressSync = compressSync;
|
|
50
13
|
exports.decompress = decompress;
|
|
51
14
|
exports.decompressSync = decompressSync;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
let _zlibLoading = null;
|
|
57
|
-
// Auto-initialize zlib in Node.js environment
|
|
58
|
-
if (isNode) {
|
|
59
|
-
_zlibLoading = Promise.resolve().then(() => __importStar(require("zlib"))).then(module => {
|
|
60
|
-
_zlib = module.default ?? module;
|
|
61
|
-
return _zlib;
|
|
62
|
-
})
|
|
63
|
-
.catch(() => {
|
|
64
|
-
_zlib = null;
|
|
65
|
-
return null;
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Get zlib module (Node.js only)
|
|
70
|
-
* Returns null if not yet loaded or not in Node.js
|
|
71
|
-
*/
|
|
72
|
-
function getZlib() {
|
|
73
|
-
return _zlib;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Ensure zlib is loaded (Node.js only)
|
|
77
|
-
* Call this before using sync methods if you need to guarantee availability
|
|
78
|
-
*/
|
|
79
|
-
async function ensureZlib() {
|
|
80
|
-
if (_zlibLoading) {
|
|
81
|
-
return _zlibLoading;
|
|
82
|
-
}
|
|
83
|
-
return _zlib;
|
|
84
|
-
}
|
|
15
|
+
const zlib_1 = require("zlib");
|
|
16
|
+
// Re-export shared types and utilities
|
|
17
|
+
var compress_base_1 = require("./compress.base");
|
|
18
|
+
Object.defineProperty(exports, "hasCompressionStream", { enumerable: true, get: function () { return compress_base_1.hasCompressionStream; } });
|
|
85
19
|
/**
|
|
86
|
-
* Check if native zlib is available (Node.js)
|
|
20
|
+
* Check if native zlib is available (always true in Node.js)
|
|
87
21
|
*/
|
|
88
22
|
function hasNativeZlib() {
|
|
89
|
-
|
|
90
|
-
return zlib !== null && typeof zlib.deflateRawSync === "function";
|
|
23
|
+
return true;
|
|
91
24
|
}
|
|
92
25
|
/**
|
|
93
|
-
*
|
|
94
|
-
*/
|
|
95
|
-
function hasCompressionStream() {
|
|
96
|
-
return typeof CompressionStream !== "undefined";
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Compress data using the best available native method
|
|
100
|
-
*
|
|
101
|
-
* Priority:
|
|
102
|
-
* 1. Node.js zlib (if available) - fastest, supports compression levels
|
|
103
|
-
* 2. CompressionStream (browser/Node.js 17+) - no level support
|
|
104
|
-
* 3. Return uncompressed data (fallback)
|
|
26
|
+
* Compress data using Node.js native zlib
|
|
105
27
|
*
|
|
106
28
|
* @param data - Data to compress
|
|
107
29
|
* @param options - Compression options
|
|
@@ -119,143 +41,41 @@ async function compress(data, options = {}) {
|
|
|
119
41
|
if (level === 0) {
|
|
120
42
|
return data;
|
|
121
43
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
// Try Node.js zlib first (fastest, supports levels)
|
|
125
|
-
if (zlib && typeof zlib.deflateRawSync === "function") {
|
|
126
|
-
const result = zlib.deflateRawSync(Buffer.from(data), { level });
|
|
127
|
-
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
128
|
-
}
|
|
129
|
-
// Fall back to CompressionStream (browser/Node.js 17+)
|
|
130
|
-
if (typeof CompressionStream !== "undefined") {
|
|
131
|
-
return compressWithCompressionStream(data);
|
|
132
|
-
}
|
|
133
|
-
// No compression available - return original data
|
|
134
|
-
console.warn("No native compression available, returning uncompressed data");
|
|
135
|
-
return data;
|
|
44
|
+
const result = (0, zlib_1.deflateRawSync)(Buffer.from(data), { level });
|
|
45
|
+
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
136
46
|
}
|
|
137
47
|
/**
|
|
138
48
|
* Compress data synchronously using Node.js zlib
|
|
139
|
-
* Only available in Node.js environment
|
|
140
49
|
*
|
|
141
50
|
* @param data - Data to compress
|
|
142
51
|
* @param options - Compression options
|
|
143
52
|
* @returns Compressed data
|
|
144
|
-
* @throws Error if not in Node.js environment
|
|
145
53
|
*/
|
|
146
54
|
function compressSync(data, options = {}) {
|
|
147
55
|
const level = options.level ?? 6;
|
|
148
56
|
if (level === 0) {
|
|
149
57
|
return data;
|
|
150
58
|
}
|
|
151
|
-
const
|
|
152
|
-
if (!zlib || typeof zlib.deflateRawSync !== "function") {
|
|
153
|
-
throw new Error("Synchronous compression is only available in Node.js environment");
|
|
154
|
-
}
|
|
155
|
-
const result = zlib.deflateRawSync(Buffer.from(data), { level });
|
|
59
|
+
const result = (0, zlib_1.deflateRawSync)(Buffer.from(data), { level });
|
|
156
60
|
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
157
61
|
}
|
|
158
62
|
/**
|
|
159
|
-
*
|
|
160
|
-
* Uses "deflate-raw" format (required for ZIP files)
|
|
161
|
-
*
|
|
162
|
-
* Note: CompressionStream does not support compression level configuration
|
|
163
|
-
*
|
|
164
|
-
* @param data - Data to compress
|
|
165
|
-
* @returns Compressed data
|
|
166
|
-
*/
|
|
167
|
-
async function compressWithCompressionStream(data) {
|
|
168
|
-
const cs = new CompressionStream("deflate-raw");
|
|
169
|
-
const writer = cs.writable.getWriter();
|
|
170
|
-
const reader = cs.readable.getReader();
|
|
171
|
-
// Write data and close
|
|
172
|
-
writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
|
|
173
|
-
writer.close();
|
|
174
|
-
// Read all compressed chunks
|
|
175
|
-
const chunks = [];
|
|
176
|
-
let totalLength = 0;
|
|
177
|
-
while (true) {
|
|
178
|
-
const { done, value } = await reader.read();
|
|
179
|
-
if (done) {
|
|
180
|
-
break;
|
|
181
|
-
}
|
|
182
|
-
chunks.push(value);
|
|
183
|
-
totalLength += value.length;
|
|
184
|
-
}
|
|
185
|
-
// Combine chunks into single array
|
|
186
|
-
const result = new Uint8Array(totalLength);
|
|
187
|
-
let offset = 0;
|
|
188
|
-
for (const chunk of chunks) {
|
|
189
|
-
result.set(chunk, offset);
|
|
190
|
-
offset += chunk.length;
|
|
191
|
-
}
|
|
192
|
-
return result;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Decompress data using the best available native method
|
|
63
|
+
* Decompress data using Node.js native zlib
|
|
196
64
|
*
|
|
197
65
|
* @param data - Compressed data (deflate-raw format)
|
|
198
66
|
* @returns Decompressed data
|
|
199
67
|
*/
|
|
200
68
|
async function decompress(data) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
// Try Node.js zlib first
|
|
204
|
-
if (zlib && typeof zlib.inflateRawSync === "function") {
|
|
205
|
-
const result = zlib.inflateRawSync(Buffer.from(data));
|
|
206
|
-
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
207
|
-
}
|
|
208
|
-
// Fall back to DecompressionStream
|
|
209
|
-
if (typeof DecompressionStream !== "undefined") {
|
|
210
|
-
return decompressWithDecompressionStream(data);
|
|
211
|
-
}
|
|
212
|
-
throw new Error("No native decompression available");
|
|
69
|
+
const result = (0, zlib_1.inflateRawSync)(Buffer.from(data));
|
|
70
|
+
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
213
71
|
}
|
|
214
72
|
/**
|
|
215
73
|
* Decompress data synchronously using Node.js zlib
|
|
216
74
|
*
|
|
217
75
|
* @param data - Compressed data (deflate-raw format)
|
|
218
76
|
* @returns Decompressed data
|
|
219
|
-
* @throws Error if not in Node.js environment
|
|
220
77
|
*/
|
|
221
78
|
function decompressSync(data) {
|
|
222
|
-
const
|
|
223
|
-
if (!zlib || typeof zlib.inflateRawSync !== "function") {
|
|
224
|
-
throw new Error("Synchronous decompression is only available in Node.js environment");
|
|
225
|
-
}
|
|
226
|
-
const result = zlib.inflateRawSync(Buffer.from(data));
|
|
79
|
+
const result = (0, zlib_1.inflateRawSync)(Buffer.from(data));
|
|
227
80
|
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
228
81
|
}
|
|
229
|
-
/**
|
|
230
|
-
* Decompress using browser's native DecompressionStream
|
|
231
|
-
*
|
|
232
|
-
* @param data - Compressed data (deflate-raw format)
|
|
233
|
-
* @returns Decompressed data
|
|
234
|
-
*/
|
|
235
|
-
async function decompressWithDecompressionStream(data) {
|
|
236
|
-
const ds = new DecompressionStream("deflate-raw");
|
|
237
|
-
const writer = ds.writable.getWriter();
|
|
238
|
-
const reader = ds.readable.getReader();
|
|
239
|
-
// Write data and close
|
|
240
|
-
writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
|
|
241
|
-
writer.close();
|
|
242
|
-
// Read all decompressed chunks
|
|
243
|
-
const chunks = [];
|
|
244
|
-
let totalLength = 0;
|
|
245
|
-
while (true) {
|
|
246
|
-
const { done, value } = await reader.read();
|
|
247
|
-
if (done) {
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
chunks.push(value);
|
|
251
|
-
totalLength += value.length;
|
|
252
|
-
}
|
|
253
|
-
// Combine chunks into single array
|
|
254
|
-
const result = new Uint8Array(totalLength);
|
|
255
|
-
let offset = 0;
|
|
256
|
-
for (const chunk of chunks) {
|
|
257
|
-
result.set(chunk, offset);
|
|
258
|
-
offset += chunk.length;
|
|
259
|
-
}
|
|
260
|
-
return result;
|
|
261
|
-
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CRC32 calculation utility for ZIP files (Browser version)
|
|
4
|
+
*
|
|
5
|
+
* Uses lookup table optimization - no Node.js dependencies
|
|
6
|
+
*
|
|
7
|
+
* The polynomial used is the standard CRC-32 IEEE 802.3:
|
|
8
|
+
* x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1
|
|
9
|
+
* Represented as 0xEDB88320 in reversed (LSB-first) form
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.crc32 = crc32;
|
|
13
|
+
exports.ensureCrc32 = ensureCrc32;
|
|
14
|
+
exports.crc32Update = crc32Update;
|
|
15
|
+
exports.crc32Finalize = crc32Finalize;
|
|
16
|
+
/**
|
|
17
|
+
* Pre-computed CRC32 lookup table (256 entries)
|
|
18
|
+
* Generated using the standard polynomial 0xEDB88320
|
|
19
|
+
*/
|
|
20
|
+
const CRC32_TABLE = /* @__PURE__ */ (() => {
|
|
21
|
+
const table = new Uint32Array(256);
|
|
22
|
+
for (let i = 0; i < 256; i++) {
|
|
23
|
+
let crc = i;
|
|
24
|
+
for (let j = 0; j < 8; j++) {
|
|
25
|
+
crc = crc & 1 ? 0xedb88320 ^ (crc >>> 1) : crc >>> 1;
|
|
26
|
+
}
|
|
27
|
+
table[i] = crc;
|
|
28
|
+
}
|
|
29
|
+
return table;
|
|
30
|
+
})();
|
|
31
|
+
/**
|
|
32
|
+
* Calculate CRC32 checksum for the given data
|
|
33
|
+
*
|
|
34
|
+
* @param data - Input data as Uint8Array
|
|
35
|
+
* @returns CRC32 checksum as unsigned 32-bit integer
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const data = new TextEncoder().encode("Hello, World!");
|
|
40
|
+
* const checksum = crc32(data);
|
|
41
|
+
* console.log(checksum.toString(16)); // "ec4ac3d0"
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
function crc32(data) {
|
|
45
|
+
let crc = 0xffffffff;
|
|
46
|
+
for (let i = 0; i < data.length; i++) {
|
|
47
|
+
crc = CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8);
|
|
48
|
+
}
|
|
49
|
+
return (crc ^ 0xffffffff) >>> 0;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Ensure CRC32 is ready (no-op in browser, for API compatibility)
|
|
53
|
+
*/
|
|
54
|
+
async function ensureCrc32() {
|
|
55
|
+
// No-op in browser
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Calculate CRC32 incrementally (useful for streaming)
|
|
59
|
+
* Call with initial crc of 0xffffffff, then finalize with crc32Finalize
|
|
60
|
+
*
|
|
61
|
+
* @param crc - Current CRC value (start with 0xffffffff)
|
|
62
|
+
* @param data - Input data chunk
|
|
63
|
+
* @returns Updated CRC value (not finalized)
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* let crc = 0xffffffff;
|
|
68
|
+
* crc = crc32Update(crc, chunk1);
|
|
69
|
+
* crc = crc32Update(crc, chunk2);
|
|
70
|
+
* const checksum = crc32Finalize(crc);
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
function crc32Update(crc, data) {
|
|
74
|
+
for (let i = 0; i < data.length; i++) {
|
|
75
|
+
crc = CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8);
|
|
76
|
+
}
|
|
77
|
+
return crc;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Finalize CRC32 calculation
|
|
81
|
+
* XOR with 0xffffffff and convert to unsigned 32-bit
|
|
82
|
+
*
|
|
83
|
+
* @param crc - CRC value from crc32Update
|
|
84
|
+
* @returns Final CRC32 checksum
|
|
85
|
+
*/
|
|
86
|
+
function crc32Finalize(crc) {
|
|
87
|
+
return (crc ^ 0xffffffff) >>> 0;
|
|
88
|
+
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* @example Basic usage
|
|
19
19
|
* ```ts
|
|
20
|
-
* import { createZip } from "./utils/zip/index
|
|
20
|
+
* import { createZip } from "./utils/zip/index";
|
|
21
21
|
*
|
|
22
22
|
* const zipData = await createZip([
|
|
23
23
|
* { name: "hello.txt", data: new TextEncoder().encode("Hello!") },
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
*
|
|
31
31
|
* @example Streaming usage
|
|
32
32
|
* ```ts
|
|
33
|
-
* import { ZipBuilder } from "./utils/zip/index
|
|
33
|
+
* import { ZipBuilder } from "./utils/zip/index";
|
|
34
34
|
*
|
|
35
35
|
* const builder = new ZipBuilder({ level: 1 });
|
|
36
36
|
*
|
|
@@ -51,20 +51,20 @@
|
|
|
51
51
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
52
52
|
exports.ZipBuilder = exports.createZipSync = exports.createZip = exports.hasCompressionStream = exports.hasNativeZlib = exports.decompressSync = exports.decompress = exports.compressSync = exports.compress = exports.crc32Finalize = exports.crc32Update = exports.crc32 = void 0;
|
|
53
53
|
// CRC32 utilities
|
|
54
|
-
var
|
|
55
|
-
Object.defineProperty(exports, "crc32", { enumerable: true, get: function () { return
|
|
56
|
-
Object.defineProperty(exports, "crc32Update", { enumerable: true, get: function () { return
|
|
57
|
-
Object.defineProperty(exports, "crc32Finalize", { enumerable: true, get: function () { return
|
|
54
|
+
var crc32_1 = require("./crc32");
|
|
55
|
+
Object.defineProperty(exports, "crc32", { enumerable: true, get: function () { return crc32_1.crc32; } });
|
|
56
|
+
Object.defineProperty(exports, "crc32Update", { enumerable: true, get: function () { return crc32_1.crc32Update; } });
|
|
57
|
+
Object.defineProperty(exports, "crc32Finalize", { enumerable: true, get: function () { return crc32_1.crc32Finalize; } });
|
|
58
58
|
// Compression utilities
|
|
59
|
-
var
|
|
60
|
-
Object.defineProperty(exports, "compress", { enumerable: true, get: function () { return
|
|
61
|
-
Object.defineProperty(exports, "compressSync", { enumerable: true, get: function () { return
|
|
62
|
-
Object.defineProperty(exports, "decompress", { enumerable: true, get: function () { return
|
|
63
|
-
Object.defineProperty(exports, "decompressSync", { enumerable: true, get: function () { return
|
|
64
|
-
Object.defineProperty(exports, "hasNativeZlib", { enumerable: true, get: function () { return
|
|
65
|
-
Object.defineProperty(exports, "hasCompressionStream", { enumerable: true, get: function () { return
|
|
59
|
+
var compress_1 = require("./compress");
|
|
60
|
+
Object.defineProperty(exports, "compress", { enumerable: true, get: function () { return compress_1.compress; } });
|
|
61
|
+
Object.defineProperty(exports, "compressSync", { enumerable: true, get: function () { return compress_1.compressSync; } });
|
|
62
|
+
Object.defineProperty(exports, "decompress", { enumerable: true, get: function () { return compress_1.decompress; } });
|
|
63
|
+
Object.defineProperty(exports, "decompressSync", { enumerable: true, get: function () { return compress_1.decompressSync; } });
|
|
64
|
+
Object.defineProperty(exports, "hasNativeZlib", { enumerable: true, get: function () { return compress_1.hasNativeZlib; } });
|
|
65
|
+
Object.defineProperty(exports, "hasCompressionStream", { enumerable: true, get: function () { return compress_1.hasCompressionStream; } });
|
|
66
66
|
// ZIP builder
|
|
67
|
-
var
|
|
68
|
-
Object.defineProperty(exports, "createZip", { enumerable: true, get: function () { return
|
|
69
|
-
Object.defineProperty(exports, "createZipSync", { enumerable: true, get: function () { return
|
|
70
|
-
Object.defineProperty(exports, "ZipBuilder", { enumerable: true, get: function () { return
|
|
67
|
+
var zip_builder_1 = require("./zip-builder");
|
|
68
|
+
Object.defineProperty(exports, "createZip", { enumerable: true, get: function () { return zip_builder_1.createZip; } });
|
|
69
|
+
Object.defineProperty(exports, "createZipSync", { enumerable: true, get: function () { return zip_builder_1.createZipSync; } });
|
|
70
|
+
Object.defineProperty(exports, "ZipBuilder", { enumerable: true, get: function () { return zip_builder_1.ZipBuilder; } });
|
|
@@ -26,8 +26,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.ZipBuilder = void 0;
|
|
27
27
|
exports.createZip = createZip;
|
|
28
28
|
exports.createZipSync = createZipSync;
|
|
29
|
-
const
|
|
30
|
-
const
|
|
29
|
+
const crc32_1 = require("./crc32");
|
|
30
|
+
const compress_1 = require("./compress");
|
|
31
31
|
// ZIP signature constants
|
|
32
32
|
const LOCAL_FILE_HEADER_SIG = 0x04034b50;
|
|
33
33
|
const CENTRAL_DIR_HEADER_SIG = 0x02014b50;
|
|
@@ -156,12 +156,12 @@ async function createZip(entries, options = {}) {
|
|
|
156
156
|
const [dosTime, dosDate] = dateToDos(modDate);
|
|
157
157
|
// Compress data
|
|
158
158
|
const isCompressed = level > 0 && entry.data.length > 0;
|
|
159
|
-
const compressedData = isCompressed ? await (0,
|
|
159
|
+
const compressedData = isCompressed ? await (0, compress_1.compress)(entry.data, { level }) : entry.data;
|
|
160
160
|
const processedEntry = {
|
|
161
161
|
name: nameBytes,
|
|
162
162
|
data: entry.data,
|
|
163
163
|
compressedData,
|
|
164
|
-
crc: (0,
|
|
164
|
+
crc: (0, crc32_1.crc32)(entry.data),
|
|
165
165
|
compressionMethod: isCompressed ? COMPRESSION_DEFLATE : COMPRESSION_STORE,
|
|
166
166
|
modTime: dosTime,
|
|
167
167
|
modDate: dosDate,
|
|
@@ -221,12 +221,12 @@ function createZipSync(entries, options = {}) {
|
|
|
221
221
|
const [dosTime, dosDate] = dateToDos(modDate);
|
|
222
222
|
// Compress data
|
|
223
223
|
const isCompressed = level > 0 && entry.data.length > 0;
|
|
224
|
-
const compressedData = isCompressed ? (0,
|
|
224
|
+
const compressedData = isCompressed ? (0, compress_1.compressSync)(entry.data, { level }) : entry.data;
|
|
225
225
|
const processedEntry = {
|
|
226
226
|
name: nameBytes,
|
|
227
227
|
data: entry.data,
|
|
228
228
|
compressedData,
|
|
229
|
-
crc: (0,
|
|
229
|
+
crc: (0, crc32_1.crc32)(entry.data),
|
|
230
230
|
compressionMethod: isCompressed ? COMPRESSION_DEFLATE : COMPRESSION_STORE,
|
|
231
231
|
modTime: dosTime,
|
|
232
232
|
modDate: dosDate,
|
|
@@ -294,13 +294,13 @@ class ZipBuilder {
|
|
|
294
294
|
// Compress data
|
|
295
295
|
const isCompressed = this.level > 0 && entry.data.length > 0;
|
|
296
296
|
const compressedData = isCompressed
|
|
297
|
-
? await (0,
|
|
297
|
+
? await (0, compress_1.compress)(entry.data, { level: this.level })
|
|
298
298
|
: entry.data;
|
|
299
299
|
const processedEntry = {
|
|
300
300
|
name: nameBytes,
|
|
301
301
|
data: entry.data,
|
|
302
302
|
compressedData,
|
|
303
|
-
crc: (0,
|
|
303
|
+
crc: (0, crc32_1.crc32)(entry.data),
|
|
304
304
|
compressionMethod: isCompressed ? COMPRESSION_DEFLATE : COMPRESSION_STORE,
|
|
305
305
|
modTime: dosTime,
|
|
306
306
|
modDate: dosDate,
|
|
@@ -326,13 +326,13 @@ class ZipBuilder {
|
|
|
326
326
|
// Compress data
|
|
327
327
|
const isCompressed = this.level > 0 && entry.data.length > 0;
|
|
328
328
|
const compressedData = isCompressed
|
|
329
|
-
? (0,
|
|
329
|
+
? (0, compress_1.compressSync)(entry.data, { level: this.level })
|
|
330
330
|
: entry.data;
|
|
331
331
|
const processedEntry = {
|
|
332
332
|
name: nameBytes,
|
|
333
333
|
data: entry.data,
|
|
334
334
|
compressedData,
|
|
335
|
-
crc: (0,
|
|
335
|
+
crc: (0, crc32_1.crc32)(entry.data),
|
|
336
336
|
compressionMethod: isCompressed ? COMPRESSION_DEFLATE : COMPRESSION_STORE,
|
|
337
337
|
modTime: dosTime,
|
|
338
338
|
modDate: dosDate,
|