@cj-tech-master/excelts 1.6.3-canary.20251224124621.73c5d94 → 1.6.3
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 +18 -31
- package/README_zh.md +19 -31
- package/dist/browser/excelts.iife.js +40910 -7518
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +105 -25
- package/dist/cjs/csv/csv.js +162 -226
- 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.js +179 -68
- package/dist/cjs/doc/worksheet.js +41 -41
- package/dist/cjs/index.js +32 -49
- 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/cell-format.js +2 -2
- package/dist/cjs/utils/cell-matrix.js +5 -5
- 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.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.js +154 -46
- package/dist/cjs/utils/xml-stream.js +3 -3
- package/dist/cjs/utils/zip/compress.js +198 -18
- 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.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 +11 -10
- 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 +12 -11
- 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.js +833 -91
- package/dist/esm/csv/csv.js +159 -189
- package/dist/esm/doc/workbook.js +175 -64
- package/dist/esm/index.browser.js +1 -33
- package/dist/esm/index.js +8 -23
- package/dist/esm/local.js +1 -0
- package/dist/esm/utils/utils.js +123 -15
- package/dist/esm/utils/zip/compress.js +164 -16
- package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +3 -2
- package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +3 -2
- package/dist/esm/xlsx/xlsx.js +829 -87
- package/dist/types/csv/csv.d.ts +71 -97
- 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.d.ts +92 -62
- package/dist/types/doc/worksheet.d.ts +10 -10
- package/dist/types/index.browser.d.ts +5 -19
- package/dist/types/index.d.ts +23 -24
- package/dist/types/local.d.ts +1 -0
- 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/col-cache.d.ts +1 -1
- package/dist/types/utils/sheet-utils.d.ts +3 -3
- 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.d.ts +25 -6
- package/dist/types/utils/zip/compress.d.ts +45 -13
- package/dist/types/utils/zip/index.d.ts +5 -5
- package/dist/types/utils/zip/zip-builder.d.ts +1 -1
- 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.d.ts +80 -20
- package/package.json +15 -13
- package/dist/browser/excelts.esm.js +0 -19115
- package/dist/browser/excelts.esm.js.map +0 -1
- package/dist/browser/excelts.esm.min.js +0 -127
- package/dist/cjs/csv/csv-core.js +0 -701
- package/dist/cjs/csv/csv-stream.js +0 -646
- package/dist/cjs/csv/csv.base.js +0 -154
- package/dist/cjs/csv/csv.browser.js +0 -68
- package/dist/cjs/doc/workbook.base.js +0 -211
- package/dist/cjs/doc/workbook.browser.js +0 -62
- package/dist/cjs/utils/browser-buffer.js +0 -75
- package/dist/cjs/utils/encryptor.browser.js +0 -240
- package/dist/cjs/utils/stream-buf.browser.js +0 -355
- package/dist/cjs/utils/utils.base.js +0 -161
- package/dist/cjs/utils/utils.browser.js +0 -89
- package/dist/cjs/utils/zip/compress.base.js +0 -85
- package/dist/cjs/utils/zip/compress.browser.js +0 -83
- package/dist/cjs/utils/zip/crc32.browser.js +0 -88
- package/dist/cjs/utils/zip-stream.browser.js +0 -135
- package/dist/cjs/xlsx/xlsx.base.js +0 -742
- package/dist/cjs/xlsx/xlsx.browser.js +0 -205
- package/dist/esm/csv/csv-core.js +0 -694
- package/dist/esm/csv/csv-stream.js +0 -638
- package/dist/esm/csv/csv.base.js +0 -141
- package/dist/esm/csv/csv.browser.js +0 -65
- package/dist/esm/doc/workbook.base.js +0 -207
- package/dist/esm/doc/workbook.browser.js +0 -59
- package/dist/esm/utils/browser-buffer.js +0 -67
- package/dist/esm/utils/encryptor.browser.js +0 -237
- package/dist/esm/utils/stream-buf.browser.js +0 -352
- package/dist/esm/utils/utils.base.js +0 -142
- package/dist/esm/utils/utils.browser.js +0 -68
- package/dist/esm/utils/zip/compress.base.js +0 -80
- package/dist/esm/utils/zip/compress.browser.js +0 -76
- package/dist/esm/utils/zip/crc32.browser.js +0 -82
- package/dist/esm/utils/zip-stream.browser.js +0 -132
- package/dist/esm/xlsx/xlsx.base.js +0 -739
- package/dist/esm/xlsx/xlsx.browser.js +0 -202
- package/dist/types/csv/csv-core.d.ts +0 -207
- package/dist/types/csv/csv-stream.d.ts +0 -114
- package/dist/types/csv/csv.base.d.ts +0 -61
- package/dist/types/csv/csv.browser.d.ts +0 -33
- package/dist/types/doc/workbook.base.d.ts +0 -111
- package/dist/types/doc/workbook.browser.d.ts +0 -38
- package/dist/types/utils/browser-buffer.d.ts +0 -28
- package/dist/types/utils/encryptor.browser.d.ts +0 -28
- package/dist/types/utils/stream-buf.browser.d.ts +0 -41
- package/dist/types/utils/utils.base.d.ts +0 -29
- package/dist/types/utils/utils.browser.d.ts +0 -29
- package/dist/types/utils/zip/compress.base.d.ts +0 -42
- package/dist/types/utils/zip/compress.browser.d.ts +0 -54
- package/dist/types/utils/zip/crc32.browser.d.ts +0 -52
- package/dist/types/utils/zip-stream.browser.d.ts +0 -39
- package/dist/types/xlsx/xlsx.base.d.ts +0 -134
- package/dist/types/xlsx/xlsx.browser.d.ts +0 -31
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base utility functions shared between Node.js and Browser
|
|
3
|
-
* Platform-independent implementations only
|
|
4
|
-
*/
|
|
5
|
-
// =============================================================================
|
|
6
|
-
// Basic utilities
|
|
7
|
-
// =============================================================================
|
|
8
|
-
export function delay(ms) {
|
|
9
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
10
|
-
}
|
|
11
|
-
export function nop() { }
|
|
12
|
-
export const inherits = function (cls, superCtor, statics, prototype) {
|
|
13
|
-
cls.super_ = superCtor;
|
|
14
|
-
if (!prototype) {
|
|
15
|
-
prototype = statics;
|
|
16
|
-
statics = null;
|
|
17
|
-
}
|
|
18
|
-
if (statics) {
|
|
19
|
-
Object.keys(statics).forEach(i => {
|
|
20
|
-
Object.defineProperty(cls, i, Object.getOwnPropertyDescriptor(statics, i));
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
const properties = {
|
|
24
|
-
constructor: {
|
|
25
|
-
value: cls,
|
|
26
|
-
enumerable: false,
|
|
27
|
-
writable: false,
|
|
28
|
-
configurable: true
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
if (prototype) {
|
|
32
|
-
Object.keys(prototype).forEach(i => {
|
|
33
|
-
properties[i] = Object.getOwnPropertyDescriptor(prototype, i);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
cls.prototype = Object.create(superCtor.prototype, properties);
|
|
37
|
-
};
|
|
38
|
-
// =============================================================================
|
|
39
|
-
// Date utilities
|
|
40
|
-
// =============================================================================
|
|
41
|
-
export function dateToExcel(d, date1904) {
|
|
42
|
-
return 25569 + d.getTime() / (24 * 3600 * 1000) - (date1904 ? 1462 : 0);
|
|
43
|
-
}
|
|
44
|
-
export function excelToDate(v, date1904) {
|
|
45
|
-
const millisecondSinceEpoch = Math.round((v - 25569 + (date1904 ? 1462 : 0)) * 24 * 3600 * 1000);
|
|
46
|
-
return new Date(millisecondSinceEpoch);
|
|
47
|
-
}
|
|
48
|
-
export function toIsoDateString(dt) {
|
|
49
|
-
return dt.toISOString().substr(0, 10);
|
|
50
|
-
}
|
|
51
|
-
export function parsePath(filepath) {
|
|
52
|
-
const last = filepath.lastIndexOf("/");
|
|
53
|
-
return {
|
|
54
|
-
path: filepath.substring(0, last),
|
|
55
|
-
name: filepath.substring(last + 1)
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
export function getRelsPath(filepath) {
|
|
59
|
-
const path = parsePath(filepath);
|
|
60
|
-
return `${path.path}/_rels/${path.name}.rels`;
|
|
61
|
-
}
|
|
62
|
-
// =============================================================================
|
|
63
|
-
// XML utilities
|
|
64
|
-
// =============================================================================
|
|
65
|
-
const xmlDecodingMap = {
|
|
66
|
-
lt: "<",
|
|
67
|
-
gt: ">",
|
|
68
|
-
amp: "&",
|
|
69
|
-
quot: '"',
|
|
70
|
-
apos: "'"
|
|
71
|
-
};
|
|
72
|
-
export function xmlDecode(text) {
|
|
73
|
-
return text.replace(/&(#\d+|#x[0-9A-Fa-f]+|\w+);/g, (match, entity) => {
|
|
74
|
-
if (entity[0] === "#") {
|
|
75
|
-
// Numeric character reference
|
|
76
|
-
const code = entity[1] === "x" ? parseInt(entity.slice(2), 16) : parseInt(entity.slice(1));
|
|
77
|
-
return String.fromCodePoint(code);
|
|
78
|
-
}
|
|
79
|
-
return xmlDecodingMap[entity] || match;
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
// =============================================================================
|
|
83
|
-
// Parsing utilities
|
|
84
|
-
// =============================================================================
|
|
85
|
-
export function validInt(value) {
|
|
86
|
-
const i = typeof value === "number" ? value : parseInt(value, 10);
|
|
87
|
-
return Number.isNaN(i) ? 0 : i;
|
|
88
|
-
}
|
|
89
|
-
export function isDateFmt(fmt) {
|
|
90
|
-
if (!fmt) {
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
// must not be a string fmt
|
|
94
|
-
if (fmt.indexOf("@") > -1) {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
// must remove all chars inside quotes and []
|
|
98
|
-
let cleanFmt = fmt.replace(/\[[^\]]*]/g, "");
|
|
99
|
-
cleanFmt = cleanFmt.replace(/"[^"]*"/g, "");
|
|
100
|
-
// then check for date formatting chars
|
|
101
|
-
return cleanFmt.match(/[ymdhMsb]+/) !== null;
|
|
102
|
-
}
|
|
103
|
-
export function parseBoolean(value) {
|
|
104
|
-
return value === true || value === "true" || value === 1 || value === "1";
|
|
105
|
-
}
|
|
106
|
-
// =============================================================================
|
|
107
|
-
// Collection utilities
|
|
108
|
-
// =============================================================================
|
|
109
|
-
export function* range(start, stop, step = 1) {
|
|
110
|
-
const compareOrder = step > 0 ? (a, b) => a < b : (a, b) => a > b;
|
|
111
|
-
for (let value = start; compareOrder(value, stop); value += step) {
|
|
112
|
-
yield value;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
export function toSortedArray(values) {
|
|
116
|
-
const result = Array.from(values);
|
|
117
|
-
// If all numbers, use numeric sort
|
|
118
|
-
if (result.every(item => Number.isFinite(item))) {
|
|
119
|
-
return result.sort((a, b) => a - b);
|
|
120
|
-
}
|
|
121
|
-
return result.sort();
|
|
122
|
-
}
|
|
123
|
-
export function objectFromProps(props, value = null) {
|
|
124
|
-
return props.reduce((result, property) => {
|
|
125
|
-
result[property] = value;
|
|
126
|
-
return result;
|
|
127
|
-
}, {});
|
|
128
|
-
}
|
|
129
|
-
// =============================================================================
|
|
130
|
-
// Buffer utilities (cross-platform)
|
|
131
|
-
// =============================================================================
|
|
132
|
-
const textDecoder = new TextDecoder("utf-8");
|
|
133
|
-
/**
|
|
134
|
-
* Convert a Buffer, ArrayBuffer, or Uint8Array to a UTF-8 string
|
|
135
|
-
* Works in both Node.js and browser environments
|
|
136
|
-
*/
|
|
137
|
-
export function bufferToString(chunk) {
|
|
138
|
-
if (typeof chunk === "string") {
|
|
139
|
-
return chunk;
|
|
140
|
-
}
|
|
141
|
-
return textDecoder.decode(chunk);
|
|
142
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Browser utility functions
|
|
3
|
-
* Re-exports shared utilities and adds browser-specific implementations
|
|
4
|
-
*/
|
|
5
|
-
// Re-export all shared utilities
|
|
6
|
-
export { delay, nop, inherits, dateToExcel, excelToDate, toIsoDateString, parsePath, getRelsPath, xmlDecode, validInt, isDateFmt, parseBoolean, range, toSortedArray, objectFromProps, bufferToString } from "./utils.base.js";
|
|
7
|
-
// =============================================================================
|
|
8
|
-
// XML encoding (Browser version with full Unicode support)
|
|
9
|
-
// =============================================================================
|
|
10
|
-
const xmlEncodingMap = {
|
|
11
|
-
"<": "<",
|
|
12
|
-
">": ">",
|
|
13
|
-
"&": "&",
|
|
14
|
-
'"': """,
|
|
15
|
-
"'": "'"
|
|
16
|
-
};
|
|
17
|
-
export function xmlEncode(text) {
|
|
18
|
-
// Handles special characters:
|
|
19
|
-
// 1. XML entities: < > & " '
|
|
20
|
-
// 2. Control characters (0x00-0x1F except tab, newline, carriage return)
|
|
21
|
-
// 3. Invalid XML characters: 0xFFFE, 0xFFFF
|
|
22
|
-
// 4. Characters that need escaping in attributes
|
|
23
|
-
// First pass: escape XML entities
|
|
24
|
-
let result = text.replace(/[<>&"']/g, char => xmlEncodingMap[char] || char);
|
|
25
|
-
// Second pass: handle control characters and invalid XML characters
|
|
26
|
-
// Valid XML chars: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
|
|
27
|
-
// oxlint-disable-next-line no-control-regex
|
|
28
|
-
result = result.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\uFFFE\uFFFF]/g, char => {
|
|
29
|
-
const code = char.charCodeAt(0);
|
|
30
|
-
// For control characters, use numeric character reference
|
|
31
|
-
return `&#x${code.toString(16).toUpperCase()};`;
|
|
32
|
-
});
|
|
33
|
-
// Third pass: handle invalid surrogate pairs
|
|
34
|
-
result = result.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g, () => "\uFFFD" // replacement character
|
|
35
|
-
);
|
|
36
|
-
return result;
|
|
37
|
-
}
|
|
38
|
-
// =============================================================================
|
|
39
|
-
// File system utilities (Browser stub - always returns false)
|
|
40
|
-
// =============================================================================
|
|
41
|
-
export function fileExists(_path) {
|
|
42
|
-
return Promise.resolve(false);
|
|
43
|
-
}
|
|
44
|
-
// =============================================================================
|
|
45
|
-
// Legacy export for backward compatibility
|
|
46
|
-
// =============================================================================
|
|
47
|
-
import { nop, inherits, dateToExcel, excelToDate, parsePath, getRelsPath, xmlDecode, validInt, isDateFmt, toIsoDateString, parseBoolean, range, toSortedArray, objectFromProps } from "./utils.base.js";
|
|
48
|
-
/** @deprecated Import functions directly instead of using the utils object */
|
|
49
|
-
export const utils = {
|
|
50
|
-
nop,
|
|
51
|
-
inherits,
|
|
52
|
-
dateToExcel,
|
|
53
|
-
excelToDate,
|
|
54
|
-
parsePath,
|
|
55
|
-
getRelsPath,
|
|
56
|
-
xmlEncode,
|
|
57
|
-
xmlDecode,
|
|
58
|
-
validInt,
|
|
59
|
-
isDateFmt,
|
|
60
|
-
fs: {
|
|
61
|
-
exists: fileExists
|
|
62
|
-
},
|
|
63
|
-
toIsoDateString,
|
|
64
|
-
parseBoolean,
|
|
65
|
-
range,
|
|
66
|
-
toSortedArray,
|
|
67
|
-
objectFromProps
|
|
68
|
-
};
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base compression utilities using Web Streams API
|
|
3
|
-
* Shared between Node.js and Browser implementations
|
|
4
|
-
*
|
|
5
|
-
* Uses CompressionStream/DecompressionStream API with "deflate-raw" format
|
|
6
|
-
* (raw DEFLATE without zlib header/trailer, required for ZIP files)
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Check if CompressionStream is available
|
|
10
|
-
*/
|
|
11
|
-
export function hasCompressionStream() {
|
|
12
|
-
return typeof CompressionStream !== "undefined";
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Compress using CompressionStream API
|
|
16
|
-
* Uses "deflate-raw" format (required for ZIP files)
|
|
17
|
-
*
|
|
18
|
-
* @param data - Data to compress
|
|
19
|
-
* @returns Compressed data
|
|
20
|
-
*/
|
|
21
|
-
export async function compressWithStream(data) {
|
|
22
|
-
const cs = new CompressionStream("deflate-raw");
|
|
23
|
-
const writer = cs.writable.getWriter();
|
|
24
|
-
const reader = cs.readable.getReader();
|
|
25
|
-
// Write data and close
|
|
26
|
-
writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
|
|
27
|
-
writer.close();
|
|
28
|
-
// Read all compressed chunks
|
|
29
|
-
const chunks = [];
|
|
30
|
-
let totalLength = 0;
|
|
31
|
-
while (true) {
|
|
32
|
-
const { done, value } = await reader.read();
|
|
33
|
-
if (done) {
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
chunks.push(value);
|
|
37
|
-
totalLength += value.length;
|
|
38
|
-
}
|
|
39
|
-
// Combine chunks into single array
|
|
40
|
-
const result = new Uint8Array(totalLength);
|
|
41
|
-
let offset = 0;
|
|
42
|
-
for (const chunk of chunks) {
|
|
43
|
-
result.set(chunk, offset);
|
|
44
|
-
offset += chunk.length;
|
|
45
|
-
}
|
|
46
|
-
return result;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Decompress using DecompressionStream API
|
|
50
|
-
*
|
|
51
|
-
* @param data - Compressed data (deflate-raw format)
|
|
52
|
-
* @returns Decompressed data
|
|
53
|
-
*/
|
|
54
|
-
export async function decompressWithStream(data) {
|
|
55
|
-
const ds = new DecompressionStream("deflate-raw");
|
|
56
|
-
const writer = ds.writable.getWriter();
|
|
57
|
-
const reader = ds.readable.getReader();
|
|
58
|
-
// Write data and close
|
|
59
|
-
writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
|
|
60
|
-
writer.close();
|
|
61
|
-
// Read all decompressed chunks
|
|
62
|
-
const chunks = [];
|
|
63
|
-
let totalLength = 0;
|
|
64
|
-
while (true) {
|
|
65
|
-
const { done, value } = await reader.read();
|
|
66
|
-
if (done) {
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
chunks.push(value);
|
|
70
|
-
totalLength += value.length;
|
|
71
|
-
}
|
|
72
|
-
// Combine chunks into single array
|
|
73
|
-
const result = new Uint8Array(totalLength);
|
|
74
|
-
let offset = 0;
|
|
75
|
-
for (const chunk of chunks) {
|
|
76
|
-
result.set(chunk, offset);
|
|
77
|
-
offset += chunk.length;
|
|
78
|
-
}
|
|
79
|
-
return result;
|
|
80
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Browser compression utilities using Web Streams API
|
|
3
|
-
*
|
|
4
|
-
* Uses CompressionStream API (Chrome 80+, Firefox 113+, Safari 16.4+)
|
|
5
|
-
* with "deflate-raw" format (required for ZIP files)
|
|
6
|
-
*/
|
|
7
|
-
import { hasCompressionStream, compressWithStream, decompressWithStream } from "./compress.base.js";
|
|
8
|
-
// Re-export shared types and utilities
|
|
9
|
-
export { hasCompressionStream };
|
|
10
|
-
/**
|
|
11
|
-
* Check if native zlib is available (always false in browser)
|
|
12
|
-
*/
|
|
13
|
-
export function hasNativeZlib() {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Compress data using browser's native CompressionStream
|
|
18
|
-
*
|
|
19
|
-
* @param data - Data to compress
|
|
20
|
-
* @param options - Compression options
|
|
21
|
-
* @returns Compressed data
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```ts
|
|
25
|
-
* const data = new TextEncoder().encode("Hello, World!");
|
|
26
|
-
* const compressed = await compress(data, { level: 6 });
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export async function compress(data, options = {}) {
|
|
30
|
-
const level = options.level ?? 6;
|
|
31
|
-
// Level 0 means no compression
|
|
32
|
-
if (level === 0) {
|
|
33
|
-
return data;
|
|
34
|
-
}
|
|
35
|
-
// Use CompressionStream
|
|
36
|
-
if (typeof CompressionStream !== "undefined") {
|
|
37
|
-
return compressWithStream(data);
|
|
38
|
-
}
|
|
39
|
-
// No compression available - return original data
|
|
40
|
-
console.warn("No native compression available, returning uncompressed data");
|
|
41
|
-
return data;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Compress data synchronously
|
|
45
|
-
* Not available in browser - throws error
|
|
46
|
-
*
|
|
47
|
-
* @param _data - Data to compress
|
|
48
|
-
* @param _options - Compression options
|
|
49
|
-
* @throws Error always - sync compression not available in browser
|
|
50
|
-
*/
|
|
51
|
-
export function compressSync(_data, _options = {}) {
|
|
52
|
-
throw new Error("Synchronous compression is not available in browser environment");
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Decompress data using browser's native DecompressionStream
|
|
56
|
-
*
|
|
57
|
-
* @param data - Compressed data (deflate-raw format)
|
|
58
|
-
* @returns Decompressed data
|
|
59
|
-
*/
|
|
60
|
-
export async function decompress(data) {
|
|
61
|
-
// Use DecompressionStream
|
|
62
|
-
if (typeof DecompressionStream !== "undefined") {
|
|
63
|
-
return decompressWithStream(data);
|
|
64
|
-
}
|
|
65
|
-
throw new Error("No native decompression available in browser");
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Decompress data synchronously
|
|
69
|
-
* Not available in browser - throws error
|
|
70
|
-
*
|
|
71
|
-
* @param _data - Compressed data
|
|
72
|
-
* @throws Error always - sync decompression not available in browser
|
|
73
|
-
*/
|
|
74
|
-
export function decompressSync(_data) {
|
|
75
|
-
throw new Error("Synchronous decompression is not available in browser environment");
|
|
76
|
-
}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CRC32 calculation utility for ZIP files (Browser version)
|
|
3
|
-
*
|
|
4
|
-
* Uses lookup table optimization - no Node.js dependencies
|
|
5
|
-
*
|
|
6
|
-
* The polynomial used is the standard CRC-32 IEEE 802.3:
|
|
7
|
-
* 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
|
|
8
|
-
* Represented as 0xEDB88320 in reversed (LSB-first) form
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Pre-computed CRC32 lookup table (256 entries)
|
|
12
|
-
* Generated using the standard polynomial 0xEDB88320
|
|
13
|
-
*/
|
|
14
|
-
const CRC32_TABLE = /* @__PURE__ */ (() => {
|
|
15
|
-
const table = new Uint32Array(256);
|
|
16
|
-
for (let i = 0; i < 256; i++) {
|
|
17
|
-
let crc = i;
|
|
18
|
-
for (let j = 0; j < 8; j++) {
|
|
19
|
-
crc = crc & 1 ? 0xedb88320 ^ (crc >>> 1) : crc >>> 1;
|
|
20
|
-
}
|
|
21
|
-
table[i] = crc;
|
|
22
|
-
}
|
|
23
|
-
return table;
|
|
24
|
-
})();
|
|
25
|
-
/**
|
|
26
|
-
* Calculate CRC32 checksum for the given data
|
|
27
|
-
*
|
|
28
|
-
* @param data - Input data as Uint8Array
|
|
29
|
-
* @returns CRC32 checksum as unsigned 32-bit integer
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```ts
|
|
33
|
-
* const data = new TextEncoder().encode("Hello, World!");
|
|
34
|
-
* const checksum = crc32(data);
|
|
35
|
-
* console.log(checksum.toString(16)); // "ec4ac3d0"
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
export function crc32(data) {
|
|
39
|
-
let crc = 0xffffffff;
|
|
40
|
-
for (let i = 0; i < data.length; i++) {
|
|
41
|
-
crc = CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8);
|
|
42
|
-
}
|
|
43
|
-
return (crc ^ 0xffffffff) >>> 0;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Ensure CRC32 is ready (no-op in browser, for API compatibility)
|
|
47
|
-
*/
|
|
48
|
-
export async function ensureCrc32() {
|
|
49
|
-
// No-op in browser
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Calculate CRC32 incrementally (useful for streaming)
|
|
53
|
-
* Call with initial crc of 0xffffffff, then finalize with crc32Finalize
|
|
54
|
-
*
|
|
55
|
-
* @param crc - Current CRC value (start with 0xffffffff)
|
|
56
|
-
* @param data - Input data chunk
|
|
57
|
-
* @returns Updated CRC value (not finalized)
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
60
|
-
* ```ts
|
|
61
|
-
* let crc = 0xffffffff;
|
|
62
|
-
* crc = crc32Update(crc, chunk1);
|
|
63
|
-
* crc = crc32Update(crc, chunk2);
|
|
64
|
-
* const checksum = crc32Finalize(crc);
|
|
65
|
-
* ```
|
|
66
|
-
*/
|
|
67
|
-
export function crc32Update(crc, data) {
|
|
68
|
-
for (let i = 0; i < data.length; i++) {
|
|
69
|
-
crc = CRC32_TABLE[(crc ^ data[i]) & 0xff] ^ (crc >>> 8);
|
|
70
|
-
}
|
|
71
|
-
return crc;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Finalize CRC32 calculation
|
|
75
|
-
* XOR with 0xffffffff and convert to unsigned 32-bit
|
|
76
|
-
*
|
|
77
|
-
* @param crc - CRC value from crc32Update
|
|
78
|
-
* @returns Final CRC32 checksum
|
|
79
|
-
*/
|
|
80
|
-
export function crc32Finalize(crc) {
|
|
81
|
-
return (crc ^ 0xffffffff) >>> 0;
|
|
82
|
-
}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import { ZipBuilder } from "./zip/zip-builder.js";
|
|
2
|
-
import { StreamBuf } from "./stream-buf.browser.js";
|
|
3
|
-
// Helper function for base64 decoding in browser
|
|
4
|
-
function base64ToUint8Array(base64) {
|
|
5
|
-
const binaryString = atob(base64);
|
|
6
|
-
const bytes = new Uint8Array(binaryString.length);
|
|
7
|
-
for (let i = 0; i < binaryString.length; i++) {
|
|
8
|
-
bytes[i] = binaryString.charCodeAt(i);
|
|
9
|
-
}
|
|
10
|
-
return bytes;
|
|
11
|
-
}
|
|
12
|
-
// =============================================================================
|
|
13
|
-
// The ZipWriter class - Browser version without Node.js events dependency
|
|
14
|
-
// Packs streamed data into an output zip stream
|
|
15
|
-
class ZipWriter {
|
|
16
|
-
constructor(options) {
|
|
17
|
-
this.finalized = false;
|
|
18
|
-
this.pendingWrites = [];
|
|
19
|
-
this.events = new Map();
|
|
20
|
-
const level = options?.compression === "STORE"
|
|
21
|
-
? 0
|
|
22
|
-
: Math.max(0, Math.min(9, options?.compressionOptions?.level ?? 1));
|
|
23
|
-
this.stream = new StreamBuf();
|
|
24
|
-
this.zipBuilder = new ZipBuilder({ level });
|
|
25
|
-
}
|
|
26
|
-
// Event emitter methods
|
|
27
|
-
on(event, callback) {
|
|
28
|
-
const callbacks = this.events.get(event) || [];
|
|
29
|
-
callbacks.push(callback);
|
|
30
|
-
this.events.set(event, callbacks);
|
|
31
|
-
return this;
|
|
32
|
-
}
|
|
33
|
-
once(event, callback) {
|
|
34
|
-
const onceCallback = (...args) => {
|
|
35
|
-
this.off(event, onceCallback);
|
|
36
|
-
callback(...args);
|
|
37
|
-
};
|
|
38
|
-
return this.on(event, onceCallback);
|
|
39
|
-
}
|
|
40
|
-
off(event, callback) {
|
|
41
|
-
const callbacks = this.events.get(event) || [];
|
|
42
|
-
const index = callbacks.indexOf(callback);
|
|
43
|
-
if (index !== -1) {
|
|
44
|
-
callbacks.splice(index, 1);
|
|
45
|
-
}
|
|
46
|
-
return this;
|
|
47
|
-
}
|
|
48
|
-
emit(event, ...args) {
|
|
49
|
-
const callbacks = this.events.get(event) || [];
|
|
50
|
-
callbacks.forEach(cb => cb(...args));
|
|
51
|
-
return callbacks.length > 0;
|
|
52
|
-
}
|
|
53
|
-
removeListener(event, callback) {
|
|
54
|
-
return this.off(event, callback);
|
|
55
|
-
}
|
|
56
|
-
append(data, options) {
|
|
57
|
-
let buffer;
|
|
58
|
-
if (Object.prototype.hasOwnProperty.call(options, "base64") && options.base64) {
|
|
59
|
-
const base64Data = typeof data === "string" ? data : String(data);
|
|
60
|
-
buffer = base64ToUint8Array(base64Data);
|
|
61
|
-
}
|
|
62
|
-
else if (typeof data === "string") {
|
|
63
|
-
buffer = new TextEncoder().encode(data);
|
|
64
|
-
}
|
|
65
|
-
else if (data instanceof Uint8Array) {
|
|
66
|
-
buffer = data;
|
|
67
|
-
}
|
|
68
|
-
else if (ArrayBuffer.isView(data)) {
|
|
69
|
-
buffer = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
70
|
-
}
|
|
71
|
-
else if (data instanceof ArrayBuffer) {
|
|
72
|
-
buffer = new Uint8Array(data);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
buffer = data;
|
|
76
|
-
}
|
|
77
|
-
const writePromise = this.zipBuilder
|
|
78
|
-
.addFile({ name: options.name, data: buffer })
|
|
79
|
-
.then(chunks => {
|
|
80
|
-
for (const chunk of chunks) {
|
|
81
|
-
this.stream.write(new Uint8Array(chunk));
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
this.pendingWrites.push(writePromise);
|
|
85
|
-
}
|
|
86
|
-
push(chunk) {
|
|
87
|
-
return this.stream.push(chunk);
|
|
88
|
-
}
|
|
89
|
-
async finalize() {
|
|
90
|
-
if (this.finalized) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
this.finalized = true;
|
|
94
|
-
await Promise.all(this.pendingWrites);
|
|
95
|
-
const finalChunks = this.zipBuilder.finalize();
|
|
96
|
-
for (const chunk of finalChunks) {
|
|
97
|
-
this.stream.write(new Uint8Array(chunk));
|
|
98
|
-
}
|
|
99
|
-
this.stream.end();
|
|
100
|
-
this.emit("finish");
|
|
101
|
-
}
|
|
102
|
-
// ==========================================================================
|
|
103
|
-
// Stream.Readable interface
|
|
104
|
-
read(size) {
|
|
105
|
-
return this.stream.read(size);
|
|
106
|
-
}
|
|
107
|
-
setEncoding(encoding) {
|
|
108
|
-
return this.stream.setEncoding(encoding);
|
|
109
|
-
}
|
|
110
|
-
pause() {
|
|
111
|
-
return this.stream.pause();
|
|
112
|
-
}
|
|
113
|
-
resume() {
|
|
114
|
-
return this.stream.resume();
|
|
115
|
-
}
|
|
116
|
-
isPaused() {
|
|
117
|
-
return this.stream.isPaused();
|
|
118
|
-
}
|
|
119
|
-
pipe(destination) {
|
|
120
|
-
return this.stream.pipe(destination);
|
|
121
|
-
}
|
|
122
|
-
unpipe(destination) {
|
|
123
|
-
return this.stream.unpipe(destination);
|
|
124
|
-
}
|
|
125
|
-
unshift() {
|
|
126
|
-
return this.stream.unshift();
|
|
127
|
-
}
|
|
128
|
-
wrap() {
|
|
129
|
-
return this.stream.wrap();
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
export { ZipWriter };
|