@cj-tech-master/excelts 1.6.2-canary.20251224015244.0b06ae9 → 1.6.3-canary.20251224124621.73c5d94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -18
- package/README_zh.md +31 -19
- package/dist/browser/excelts.esm.js +19115 -0
- package/dist/browser/excelts.esm.js.map +1 -0
- package/dist/browser/excelts.esm.min.js +127 -0
- package/dist/browser/excelts.iife.js +13576 -46968
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +25 -105
- package/dist/cjs/csv/csv-core.js +701 -0
- package/dist/cjs/csv/csv-stream.js +646 -0
- package/dist/cjs/csv/csv.base.js +154 -0
- package/dist/cjs/csv/csv.browser.js +68 -0
- package/dist/cjs/csv/csv.js +226 -162
- package/dist/cjs/doc/anchor.js +2 -2
- package/dist/cjs/doc/cell.js +22 -22
- package/dist/cjs/doc/column.js +7 -7
- package/dist/cjs/doc/data-validations.js +3 -3
- package/dist/cjs/doc/defined-names.js +13 -13
- package/dist/cjs/doc/image.js +7 -7
- package/dist/cjs/doc/modelcontainer.js +2 -2
- package/dist/cjs/doc/note.js +2 -2
- package/dist/cjs/doc/pivot-table.js +5 -5
- package/dist/cjs/doc/range.js +11 -11
- package/dist/cjs/doc/row.js +16 -16
- package/dist/cjs/doc/table.js +5 -5
- package/dist/cjs/doc/workbook.base.js +211 -0
- package/dist/cjs/doc/workbook.browser.js +62 -0
- package/dist/cjs/doc/workbook.js +68 -179
- package/dist/cjs/doc/worksheet.js +41 -41
- package/dist/cjs/index.js +49 -32
- package/dist/cjs/stream/xlsx/hyperlink-reader.js +6 -6
- package/dist/cjs/stream/xlsx/sheet-comments-writer.js +12 -12
- package/dist/cjs/stream/xlsx/sheet-rels-writer.js +4 -4
- package/dist/cjs/stream/xlsx/workbook-reader.js +22 -22
- package/dist/cjs/stream/xlsx/workbook-writer.js +34 -34
- package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
- package/dist/cjs/stream/xlsx/worksheet-writer.js +60 -60
- package/dist/cjs/utils/browser-buffer.js +75 -0
- package/dist/cjs/utils/cell-format.js +2 -2
- package/dist/cjs/utils/cell-matrix.js +5 -5
- package/dist/cjs/utils/encryptor.browser.js +240 -0
- package/dist/cjs/utils/parse-sax.js +2 -2
- package/dist/cjs/utils/shared-formula.js +5 -5
- package/dist/cjs/utils/sheet-utils.js +13 -13
- package/dist/cjs/utils/stream-buf.browser.js +355 -0
- package/dist/cjs/utils/stream-buf.js +5 -5
- package/dist/cjs/utils/unzip/extract.js +11 -11
- package/dist/cjs/utils/unzip/index.js +21 -21
- package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
- package/dist/cjs/utils/unzip/parse.js +16 -16
- package/dist/cjs/utils/unzip/zip-parser.js +3 -3
- package/dist/cjs/utils/utils.base.js +161 -0
- package/dist/cjs/utils/utils.browser.js +89 -0
- package/dist/cjs/utils/utils.js +46 -154
- package/dist/cjs/utils/xml-stream.js +3 -3
- package/dist/cjs/utils/zip/compress.base.js +85 -0
- package/dist/cjs/utils/zip/compress.browser.js +83 -0
- package/dist/cjs/utils/zip/compress.js +18 -198
- package/dist/cjs/utils/zip/crc32.browser.js +88 -0
- package/dist/cjs/utils/zip/index.js +17 -17
- package/dist/cjs/utils/zip/zip-builder.js +10 -10
- package/dist/cjs/utils/zip-stream.browser.js +135 -0
- package/dist/cjs/utils/zip-stream.js +4 -4
- package/dist/cjs/xlsx/xform/base-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
- package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
- package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
- package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
- package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
- package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
- package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
- package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
- package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
- package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
- package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
- package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
- package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
- package/dist/cjs/xlsx/xform/list-xform.js +2 -2
- package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
- package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
- package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
- package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
- package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +10 -11
- package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
- package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
- package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
- package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +11 -12
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
- package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
- package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
- package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +68 -68
- package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
- package/dist/cjs/xlsx/xform/static-xform.js +4 -4
- package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
- package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
- package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
- package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
- package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
- package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
- package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
- package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
- package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
- package/dist/cjs/xlsx/xlsx.base.js +742 -0
- package/dist/cjs/xlsx/xlsx.browser.js +205 -0
- package/dist/cjs/xlsx/xlsx.js +91 -833
- package/dist/esm/csv/csv-core.js +694 -0
- package/dist/esm/csv/csv-stream.js +638 -0
- package/dist/esm/csv/csv.base.js +141 -0
- package/dist/esm/csv/csv.browser.js +65 -0
- package/dist/esm/csv/csv.js +189 -159
- package/dist/esm/doc/workbook.base.js +207 -0
- package/dist/esm/doc/workbook.browser.js +59 -0
- package/dist/esm/doc/workbook.js +64 -175
- package/dist/esm/index.browser.js +33 -1
- package/dist/esm/index.js +23 -8
- package/dist/esm/local.js +0 -1
- package/dist/esm/utils/browser-buffer.js +67 -0
- package/dist/esm/utils/encryptor.browser.js +237 -0
- package/dist/esm/utils/stream-buf.browser.js +352 -0
- package/dist/esm/utils/utils.base.js +142 -0
- package/dist/esm/utils/utils.browser.js +68 -0
- package/dist/esm/utils/utils.js +15 -123
- package/dist/esm/utils/zip/compress.base.js +80 -0
- package/dist/esm/utils/zip/compress.browser.js +76 -0
- package/dist/esm/utils/zip/compress.js +16 -164
- package/dist/esm/utils/zip/crc32.browser.js +82 -0
- package/dist/esm/utils/zip-stream.browser.js +132 -0
- package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
- package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
- package/dist/esm/xlsx/xlsx.base.js +739 -0
- package/dist/esm/xlsx/xlsx.browser.js +202 -0
- package/dist/esm/xlsx/xlsx.js +87 -829
- package/dist/types/csv/csv-core.d.ts +207 -0
- package/dist/types/csv/csv-stream.d.ts +114 -0
- package/dist/types/csv/csv.base.d.ts +61 -0
- package/dist/types/csv/csv.browser.d.ts +33 -0
- package/dist/types/csv/csv.d.ts +97 -71
- package/dist/types/doc/anchor.d.ts +1 -1
- package/dist/types/doc/cell.d.ts +7 -7
- package/dist/types/doc/column.d.ts +3 -3
- package/dist/types/doc/defined-names.d.ts +4 -4
- package/dist/types/doc/image.d.ts +2 -2
- package/dist/types/doc/modelcontainer.d.ts +1 -1
- package/dist/types/doc/pivot-table.d.ts +1 -1
- package/dist/types/doc/range.d.ts +1 -1
- package/dist/types/doc/row.d.ts +3 -3
- package/dist/types/doc/table.d.ts +2 -2
- package/dist/types/doc/workbook.base.d.ts +111 -0
- package/dist/types/doc/workbook.browser.d.ts +38 -0
- package/dist/types/doc/workbook.d.ts +62 -92
- package/dist/types/doc/worksheet.d.ts +10 -10
- package/dist/types/index.browser.d.ts +19 -5
- package/dist/types/index.d.ts +24 -23
- package/dist/types/local.d.ts +0 -1
- package/dist/types/stream/xlsx/hyperlink-reader.d.ts +1 -1
- package/dist/types/stream/xlsx/workbook-reader.d.ts +4 -4
- package/dist/types/stream/xlsx/workbook-writer.d.ts +6 -6
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
- package/dist/types/stream/xlsx/worksheet-writer.d.ts +9 -9
- package/dist/types/utils/browser-buffer.d.ts +28 -0
- package/dist/types/utils/col-cache.d.ts +1 -1
- package/dist/types/utils/encryptor.browser.d.ts +28 -0
- package/dist/types/utils/sheet-utils.d.ts +3 -3
- package/dist/types/utils/stream-buf.browser.d.ts +41 -0
- package/dist/types/utils/unzip/extract.d.ts +6 -6
- package/dist/types/utils/unzip/index.d.ts +8 -8
- package/dist/types/utils/unzip/parse.d.ts +3 -3
- package/dist/types/utils/utils.base.d.ts +29 -0
- package/dist/types/utils/utils.browser.d.ts +29 -0
- package/dist/types/utils/utils.d.ts +6 -25
- package/dist/types/utils/zip/compress.base.d.ts +42 -0
- package/dist/types/utils/zip/compress.browser.d.ts +54 -0
- package/dist/types/utils/zip/compress.d.ts +13 -45
- package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
- package/dist/types/utils/zip/index.d.ts +5 -5
- package/dist/types/utils/zip/zip-builder.d.ts +1 -1
- package/dist/types/utils/zip-stream.browser.d.ts +39 -0
- package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
- package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
- package/dist/types/xlsx/xlsx.base.d.ts +134 -0
- package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
- package/dist/types/xlsx/xlsx.d.ts +20 -80
- package/package.json +13 -15
|
@@ -1,66 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Node.js compression utilities using native zlib
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Both use "deflate-raw" format which is required for ZIP files
|
|
8
|
-
* (raw DEFLATE without zlib header/trailer)
|
|
9
|
-
*/
|
|
10
|
-
// Detect environment
|
|
11
|
-
const isNode = typeof process !== "undefined" && process.versions?.node;
|
|
12
|
-
// Lazy-loaded zlib module for Node.js
|
|
13
|
-
let _zlib = null;
|
|
14
|
-
let _zlibLoading = null;
|
|
15
|
-
// Auto-initialize zlib in Node.js environment
|
|
16
|
-
if (isNode) {
|
|
17
|
-
_zlibLoading = import("zlib")
|
|
18
|
-
.then(module => {
|
|
19
|
-
_zlib = module.default ?? module;
|
|
20
|
-
return _zlib;
|
|
21
|
-
})
|
|
22
|
-
.catch(() => {
|
|
23
|
-
_zlib = null;
|
|
24
|
-
return null;
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Get zlib module (Node.js only)
|
|
29
|
-
* Returns null if not yet loaded or not in Node.js
|
|
30
|
-
*/
|
|
31
|
-
function getZlib() {
|
|
32
|
-
return _zlib;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Ensure zlib is loaded (Node.js only)
|
|
36
|
-
* Call this before using sync methods if you need to guarantee availability
|
|
4
|
+
* Uses zlib module (C++ implementation, fastest) with "deflate-raw" format
|
|
5
|
+
* (raw DEFLATE without zlib header/trailer, required for ZIP files)
|
|
37
6
|
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
return _zlib;
|
|
43
|
-
}
|
|
7
|
+
import { deflateRawSync, inflateRawSync } from "zlib";
|
|
8
|
+
// Re-export shared types and utilities
|
|
9
|
+
export { hasCompressionStream } from "./compress.base.js";
|
|
44
10
|
/**
|
|
45
|
-
* Check if native zlib is available (Node.js)
|
|
11
|
+
* Check if native zlib is available (always true in Node.js)
|
|
46
12
|
*/
|
|
47
13
|
export function hasNativeZlib() {
|
|
48
|
-
|
|
49
|
-
return zlib !== null && typeof zlib.deflateRawSync === "function";
|
|
14
|
+
return true;
|
|
50
15
|
}
|
|
51
16
|
/**
|
|
52
|
-
*
|
|
53
|
-
*/
|
|
54
|
-
export function hasCompressionStream() {
|
|
55
|
-
return typeof CompressionStream !== "undefined";
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Compress data using the best available native method
|
|
59
|
-
*
|
|
60
|
-
* Priority:
|
|
61
|
-
* 1. Node.js zlib (if available) - fastest, supports compression levels
|
|
62
|
-
* 2. CompressionStream (browser/Node.js 17+) - no level support
|
|
63
|
-
* 3. Return uncompressed data (fallback)
|
|
17
|
+
* Compress data using Node.js native zlib
|
|
64
18
|
*
|
|
65
19
|
* @param data - Data to compress
|
|
66
20
|
* @param options - Compression options
|
|
@@ -78,143 +32,41 @@ export async function compress(data, options = {}) {
|
|
|
78
32
|
if (level === 0) {
|
|
79
33
|
return data;
|
|
80
34
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
// Try Node.js zlib first (fastest, supports levels)
|
|
84
|
-
if (zlib && typeof zlib.deflateRawSync === "function") {
|
|
85
|
-
const result = zlib.deflateRawSync(Buffer.from(data), { level });
|
|
86
|
-
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
87
|
-
}
|
|
88
|
-
// Fall back to CompressionStream (browser/Node.js 17+)
|
|
89
|
-
if (typeof CompressionStream !== "undefined") {
|
|
90
|
-
return compressWithCompressionStream(data);
|
|
91
|
-
}
|
|
92
|
-
// No compression available - return original data
|
|
93
|
-
console.warn("No native compression available, returning uncompressed data");
|
|
94
|
-
return data;
|
|
35
|
+
const result = deflateRawSync(Buffer.from(data), { level });
|
|
36
|
+
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
95
37
|
}
|
|
96
38
|
/**
|
|
97
39
|
* Compress data synchronously using Node.js zlib
|
|
98
|
-
* Only available in Node.js environment
|
|
99
40
|
*
|
|
100
41
|
* @param data - Data to compress
|
|
101
42
|
* @param options - Compression options
|
|
102
43
|
* @returns Compressed data
|
|
103
|
-
* @throws Error if not in Node.js environment
|
|
104
44
|
*/
|
|
105
45
|
export function compressSync(data, options = {}) {
|
|
106
46
|
const level = options.level ?? 6;
|
|
107
47
|
if (level === 0) {
|
|
108
48
|
return data;
|
|
109
49
|
}
|
|
110
|
-
const
|
|
111
|
-
if (!zlib || typeof zlib.deflateRawSync !== "function") {
|
|
112
|
-
throw new Error("Synchronous compression is only available in Node.js environment");
|
|
113
|
-
}
|
|
114
|
-
const result = zlib.deflateRawSync(Buffer.from(data), { level });
|
|
50
|
+
const result = deflateRawSync(Buffer.from(data), { level });
|
|
115
51
|
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
116
52
|
}
|
|
117
53
|
/**
|
|
118
|
-
*
|
|
119
|
-
* Uses "deflate-raw" format (required for ZIP files)
|
|
120
|
-
*
|
|
121
|
-
* Note: CompressionStream does not support compression level configuration
|
|
122
|
-
*
|
|
123
|
-
* @param data - Data to compress
|
|
124
|
-
* @returns Compressed data
|
|
125
|
-
*/
|
|
126
|
-
async function compressWithCompressionStream(data) {
|
|
127
|
-
const cs = new CompressionStream("deflate-raw");
|
|
128
|
-
const writer = cs.writable.getWriter();
|
|
129
|
-
const reader = cs.readable.getReader();
|
|
130
|
-
// Write data and close
|
|
131
|
-
writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
|
|
132
|
-
writer.close();
|
|
133
|
-
// Read all compressed chunks
|
|
134
|
-
const chunks = [];
|
|
135
|
-
let totalLength = 0;
|
|
136
|
-
while (true) {
|
|
137
|
-
const { done, value } = await reader.read();
|
|
138
|
-
if (done) {
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
chunks.push(value);
|
|
142
|
-
totalLength += value.length;
|
|
143
|
-
}
|
|
144
|
-
// Combine chunks into single array
|
|
145
|
-
const result = new Uint8Array(totalLength);
|
|
146
|
-
let offset = 0;
|
|
147
|
-
for (const chunk of chunks) {
|
|
148
|
-
result.set(chunk, offset);
|
|
149
|
-
offset += chunk.length;
|
|
150
|
-
}
|
|
151
|
-
return result;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Decompress data using the best available native method
|
|
54
|
+
* Decompress data using Node.js native zlib
|
|
155
55
|
*
|
|
156
56
|
* @param data - Compressed data (deflate-raw format)
|
|
157
57
|
* @returns Decompressed data
|
|
158
58
|
*/
|
|
159
59
|
export async function decompress(data) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
// Try Node.js zlib first
|
|
163
|
-
if (zlib && typeof zlib.inflateRawSync === "function") {
|
|
164
|
-
const result = zlib.inflateRawSync(Buffer.from(data));
|
|
165
|
-
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
166
|
-
}
|
|
167
|
-
// Fall back to DecompressionStream
|
|
168
|
-
if (typeof DecompressionStream !== "undefined") {
|
|
169
|
-
return decompressWithDecompressionStream(data);
|
|
170
|
-
}
|
|
171
|
-
throw new Error("No native decompression available");
|
|
60
|
+
const result = inflateRawSync(Buffer.from(data));
|
|
61
|
+
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
172
62
|
}
|
|
173
63
|
/**
|
|
174
64
|
* Decompress data synchronously using Node.js zlib
|
|
175
65
|
*
|
|
176
66
|
* @param data - Compressed data (deflate-raw format)
|
|
177
67
|
* @returns Decompressed data
|
|
178
|
-
* @throws Error if not in Node.js environment
|
|
179
68
|
*/
|
|
180
69
|
export function decompressSync(data) {
|
|
181
|
-
const
|
|
182
|
-
if (!zlib || typeof zlib.inflateRawSync !== "function") {
|
|
183
|
-
throw new Error("Synchronous decompression is only available in Node.js environment");
|
|
184
|
-
}
|
|
185
|
-
const result = zlib.inflateRawSync(Buffer.from(data));
|
|
70
|
+
const result = inflateRawSync(Buffer.from(data));
|
|
186
71
|
return new Uint8Array(result.buffer, result.byteOffset, result.byteLength);
|
|
187
72
|
}
|
|
188
|
-
/**
|
|
189
|
-
* Decompress using browser's native DecompressionStream
|
|
190
|
-
*
|
|
191
|
-
* @param data - Compressed data (deflate-raw format)
|
|
192
|
-
* @returns Decompressed data
|
|
193
|
-
*/
|
|
194
|
-
async function decompressWithDecompressionStream(data) {
|
|
195
|
-
const ds = new DecompressionStream("deflate-raw");
|
|
196
|
-
const writer = ds.writable.getWriter();
|
|
197
|
-
const reader = ds.readable.getReader();
|
|
198
|
-
// Write data and close
|
|
199
|
-
writer.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
|
|
200
|
-
writer.close();
|
|
201
|
-
// Read all decompressed chunks
|
|
202
|
-
const chunks = [];
|
|
203
|
-
let totalLength = 0;
|
|
204
|
-
while (true) {
|
|
205
|
-
const { done, value } = await reader.read();
|
|
206
|
-
if (done) {
|
|
207
|
-
break;
|
|
208
|
-
}
|
|
209
|
-
chunks.push(value);
|
|
210
|
-
totalLength += value.length;
|
|
211
|
-
}
|
|
212
|
-
// Combine chunks into single array
|
|
213
|
-
const result = new Uint8Array(totalLength);
|
|
214
|
-
let offset = 0;
|
|
215
|
-
for (const chunk of chunks) {
|
|
216
|
-
result.set(chunk, offset);
|
|
217
|
-
offset += chunk.length;
|
|
218
|
-
}
|
|
219
|
-
return result;
|
|
220
|
-
}
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
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 };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { v4 as uuidv4 } from "uuid";
|
|
2
1
|
import { XmlStream } from "../../../utils/xml-stream.js";
|
|
3
2
|
import { xmlEncode, xmlDecode } from "../../../utils/utils.js";
|
|
4
3
|
import { BaseXform } from "../base-xform.js";
|
|
@@ -57,7 +56,7 @@ class PivotTableXform extends BaseXform {
|
|
|
57
56
|
renderNew(xmlStream, model) {
|
|
58
57
|
const { rows, columns, values, cacheFields, cacheId, applyWidthHeightFormats } = model;
|
|
59
58
|
// Generate unique UID for each pivot table to prevent Excel treating them as identical
|
|
60
|
-
const uniqueUid = `{${
|
|
59
|
+
const uniqueUid = `{${crypto.randomUUID().toUpperCase()}}`;
|
|
61
60
|
xmlStream.openXml(XmlStream.StdDocAttributes);
|
|
62
61
|
xmlStream.openNode(this.tag, {
|
|
63
62
|
...PivotTableXform.PIVOT_TABLE_ATTRIBUTES,
|
|
@@ -138,7 +137,7 @@ class PivotTableXform extends BaseXform {
|
|
|
138
137
|
* Render loaded pivot table (preserving original structure)
|
|
139
138
|
*/
|
|
140
139
|
renderLoaded(xmlStream, model) {
|
|
141
|
-
const uniqueUid = model.uid || `{${
|
|
140
|
+
const uniqueUid = model.uid || `{${crypto.randomUUID().toUpperCase()}}`;
|
|
142
141
|
xmlStream.openXml(XmlStream.StdDocAttributes);
|
|
143
142
|
xmlStream.openNode(this.tag, {
|
|
144
143
|
...PivotTableXform.PIVOT_TABLE_ATTRIBUTES,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { v4 } from "uuid";
|
|
2
1
|
import { BaseXform } from "../../base-xform.js";
|
|
3
2
|
import { CompositeXform } from "../../composite-xform.js";
|
|
4
3
|
import { DatabarExtXform } from "./databar-ext-xform.js";
|
|
@@ -33,7 +32,7 @@ class CfRuleExtXform extends CompositeXform {
|
|
|
33
32
|
}
|
|
34
33
|
prepare(model) {
|
|
35
34
|
if (CfRuleExtXform.isExt(model)) {
|
|
36
|
-
model.x14Id = `{${
|
|
35
|
+
model.x14Id = `{${crypto.randomUUID()}}`.toUpperCase();
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
render(xmlStream, model) {
|
|
@@ -61,7 +60,7 @@ class CfRuleExtXform extends CompositeXform {
|
|
|
61
60
|
xmlStream.openNode(this.tag, {
|
|
62
61
|
type: "iconSet",
|
|
63
62
|
priority: model.priority,
|
|
64
|
-
id: model.x14Id || `{${
|
|
63
|
+
id: model.x14Id || `{${crypto.randomUUID()}}`
|
|
65
64
|
});
|
|
66
65
|
this.iconSetXform.render(xmlStream, model);
|
|
67
66
|
xmlStream.closeNode();
|