@cj-tech-master/excelts 1.6.2-canary.20251224015244.0b06ae9 → 1.6.3-canary.20251224124621.73c5d94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -18
- package/README_zh.md +31 -19
- package/dist/browser/excelts.esm.js +19115 -0
- package/dist/browser/excelts.esm.js.map +1 -0
- package/dist/browser/excelts.esm.min.js +127 -0
- package/dist/browser/excelts.iife.js +13576 -46968
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +25 -105
- package/dist/cjs/csv/csv-core.js +701 -0
- package/dist/cjs/csv/csv-stream.js +646 -0
- package/dist/cjs/csv/csv.base.js +154 -0
- package/dist/cjs/csv/csv.browser.js +68 -0
- package/dist/cjs/csv/csv.js +226 -162
- package/dist/cjs/doc/anchor.js +2 -2
- package/dist/cjs/doc/cell.js +22 -22
- package/dist/cjs/doc/column.js +7 -7
- package/dist/cjs/doc/data-validations.js +3 -3
- package/dist/cjs/doc/defined-names.js +13 -13
- package/dist/cjs/doc/image.js +7 -7
- package/dist/cjs/doc/modelcontainer.js +2 -2
- package/dist/cjs/doc/note.js +2 -2
- package/dist/cjs/doc/pivot-table.js +5 -5
- package/dist/cjs/doc/range.js +11 -11
- package/dist/cjs/doc/row.js +16 -16
- package/dist/cjs/doc/table.js +5 -5
- package/dist/cjs/doc/workbook.base.js +211 -0
- package/dist/cjs/doc/workbook.browser.js +62 -0
- package/dist/cjs/doc/workbook.js +68 -179
- package/dist/cjs/doc/worksheet.js +41 -41
- package/dist/cjs/index.js +49 -32
- package/dist/cjs/stream/xlsx/hyperlink-reader.js +6 -6
- package/dist/cjs/stream/xlsx/sheet-comments-writer.js +12 -12
- package/dist/cjs/stream/xlsx/sheet-rels-writer.js +4 -4
- package/dist/cjs/stream/xlsx/workbook-reader.js +22 -22
- package/dist/cjs/stream/xlsx/workbook-writer.js +34 -34
- package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
- package/dist/cjs/stream/xlsx/worksheet-writer.js +60 -60
- package/dist/cjs/utils/browser-buffer.js +75 -0
- package/dist/cjs/utils/cell-format.js +2 -2
- package/dist/cjs/utils/cell-matrix.js +5 -5
- package/dist/cjs/utils/encryptor.browser.js +240 -0
- package/dist/cjs/utils/parse-sax.js +2 -2
- package/dist/cjs/utils/shared-formula.js +5 -5
- package/dist/cjs/utils/sheet-utils.js +13 -13
- package/dist/cjs/utils/stream-buf.browser.js +355 -0
- package/dist/cjs/utils/stream-buf.js +5 -5
- package/dist/cjs/utils/unzip/extract.js +11 -11
- package/dist/cjs/utils/unzip/index.js +21 -21
- package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
- package/dist/cjs/utils/unzip/parse.js +16 -16
- package/dist/cjs/utils/unzip/zip-parser.js +3 -3
- package/dist/cjs/utils/utils.base.js +161 -0
- package/dist/cjs/utils/utils.browser.js +89 -0
- package/dist/cjs/utils/utils.js +46 -154
- package/dist/cjs/utils/xml-stream.js +3 -3
- package/dist/cjs/utils/zip/compress.base.js +85 -0
- package/dist/cjs/utils/zip/compress.browser.js +83 -0
- package/dist/cjs/utils/zip/compress.js +18 -198
- package/dist/cjs/utils/zip/crc32.browser.js +88 -0
- package/dist/cjs/utils/zip/index.js +17 -17
- package/dist/cjs/utils/zip/zip-builder.js +10 -10
- package/dist/cjs/utils/zip-stream.browser.js +135 -0
- package/dist/cjs/utils/zip-stream.js +4 -4
- package/dist/cjs/xlsx/xform/base-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
- package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
- package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
- package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
- package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
- package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
- package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
- package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
- package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
- package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
- package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
- package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
- package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
- package/dist/cjs/xlsx/xform/list-xform.js +2 -2
- package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
- package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
- package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
- package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
- package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +10 -11
- package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
- package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
- package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
- package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +11 -12
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
- package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
- package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
- package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +68 -68
- package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
- package/dist/cjs/xlsx/xform/static-xform.js +4 -4
- package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
- package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
- package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
- package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
- package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
- package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
- package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
- package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
- package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
- package/dist/cjs/xlsx/xlsx.base.js +742 -0
- package/dist/cjs/xlsx/xlsx.browser.js +205 -0
- package/dist/cjs/xlsx/xlsx.js +91 -833
- package/dist/esm/csv/csv-core.js +694 -0
- package/dist/esm/csv/csv-stream.js +638 -0
- package/dist/esm/csv/csv.base.js +141 -0
- package/dist/esm/csv/csv.browser.js +65 -0
- package/dist/esm/csv/csv.js +189 -159
- package/dist/esm/doc/workbook.base.js +207 -0
- package/dist/esm/doc/workbook.browser.js +59 -0
- package/dist/esm/doc/workbook.js +64 -175
- package/dist/esm/index.browser.js +33 -1
- package/dist/esm/index.js +23 -8
- package/dist/esm/local.js +0 -1
- package/dist/esm/utils/browser-buffer.js +67 -0
- package/dist/esm/utils/encryptor.browser.js +237 -0
- package/dist/esm/utils/stream-buf.browser.js +352 -0
- package/dist/esm/utils/utils.base.js +142 -0
- package/dist/esm/utils/utils.browser.js +68 -0
- package/dist/esm/utils/utils.js +15 -123
- package/dist/esm/utils/zip/compress.base.js +80 -0
- package/dist/esm/utils/zip/compress.browser.js +76 -0
- package/dist/esm/utils/zip/compress.js +16 -164
- package/dist/esm/utils/zip/crc32.browser.js +82 -0
- package/dist/esm/utils/zip-stream.browser.js +132 -0
- package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
- package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
- package/dist/esm/xlsx/xlsx.base.js +739 -0
- package/dist/esm/xlsx/xlsx.browser.js +202 -0
- package/dist/esm/xlsx/xlsx.js +87 -829
- package/dist/types/csv/csv-core.d.ts +207 -0
- package/dist/types/csv/csv-stream.d.ts +114 -0
- package/dist/types/csv/csv.base.d.ts +61 -0
- package/dist/types/csv/csv.browser.d.ts +33 -0
- package/dist/types/csv/csv.d.ts +97 -71
- package/dist/types/doc/anchor.d.ts +1 -1
- package/dist/types/doc/cell.d.ts +7 -7
- package/dist/types/doc/column.d.ts +3 -3
- package/dist/types/doc/defined-names.d.ts +4 -4
- package/dist/types/doc/image.d.ts +2 -2
- package/dist/types/doc/modelcontainer.d.ts +1 -1
- package/dist/types/doc/pivot-table.d.ts +1 -1
- package/dist/types/doc/range.d.ts +1 -1
- package/dist/types/doc/row.d.ts +3 -3
- package/dist/types/doc/table.d.ts +2 -2
- package/dist/types/doc/workbook.base.d.ts +111 -0
- package/dist/types/doc/workbook.browser.d.ts +38 -0
- package/dist/types/doc/workbook.d.ts +62 -92
- package/dist/types/doc/worksheet.d.ts +10 -10
- package/dist/types/index.browser.d.ts +19 -5
- package/dist/types/index.d.ts +24 -23
- package/dist/types/local.d.ts +0 -1
- package/dist/types/stream/xlsx/hyperlink-reader.d.ts +1 -1
- package/dist/types/stream/xlsx/workbook-reader.d.ts +4 -4
- package/dist/types/stream/xlsx/workbook-writer.d.ts +6 -6
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
- package/dist/types/stream/xlsx/worksheet-writer.d.ts +9 -9
- package/dist/types/utils/browser-buffer.d.ts +28 -0
- package/dist/types/utils/col-cache.d.ts +1 -1
- package/dist/types/utils/encryptor.browser.d.ts +28 -0
- package/dist/types/utils/sheet-utils.d.ts +3 -3
- package/dist/types/utils/stream-buf.browser.d.ts +41 -0
- package/dist/types/utils/unzip/extract.d.ts +6 -6
- package/dist/types/utils/unzip/index.d.ts +8 -8
- package/dist/types/utils/unzip/parse.d.ts +3 -3
- package/dist/types/utils/utils.base.d.ts +29 -0
- package/dist/types/utils/utils.browser.d.ts +29 -0
- package/dist/types/utils/utils.d.ts +6 -25
- package/dist/types/utils/zip/compress.base.d.ts +42 -0
- package/dist/types/utils/zip/compress.browser.d.ts +54 -0
- package/dist/types/utils/zip/compress.d.ts +13 -45
- package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
- package/dist/types/utils/zip/index.d.ts +5 -5
- package/dist/types/utils/zip/zip-builder.d.ts +1 -1
- package/dist/types/utils/zip-stream.browser.d.ts +39 -0
- package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
- package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
- package/dist/types/xlsx/xlsx.base.d.ts +134 -0
- package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
- package/dist/types/xlsx/xlsx.d.ts +20 -80
- package/package.json +13 -15
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base utility functions shared between Node.js and Browser
|
|
4
|
+
* Platform-independent implementations only
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.inherits = void 0;
|
|
8
|
+
exports.delay = delay;
|
|
9
|
+
exports.nop = nop;
|
|
10
|
+
exports.dateToExcel = dateToExcel;
|
|
11
|
+
exports.excelToDate = excelToDate;
|
|
12
|
+
exports.toIsoDateString = toIsoDateString;
|
|
13
|
+
exports.parsePath = parsePath;
|
|
14
|
+
exports.getRelsPath = getRelsPath;
|
|
15
|
+
exports.xmlDecode = xmlDecode;
|
|
16
|
+
exports.validInt = validInt;
|
|
17
|
+
exports.isDateFmt = isDateFmt;
|
|
18
|
+
exports.parseBoolean = parseBoolean;
|
|
19
|
+
exports.range = range;
|
|
20
|
+
exports.toSortedArray = toSortedArray;
|
|
21
|
+
exports.objectFromProps = objectFromProps;
|
|
22
|
+
exports.bufferToString = bufferToString;
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// Basic utilities
|
|
25
|
+
// =============================================================================
|
|
26
|
+
function delay(ms) {
|
|
27
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
28
|
+
}
|
|
29
|
+
function nop() { }
|
|
30
|
+
const inherits = function (cls, superCtor, statics, prototype) {
|
|
31
|
+
cls.super_ = superCtor;
|
|
32
|
+
if (!prototype) {
|
|
33
|
+
prototype = statics;
|
|
34
|
+
statics = null;
|
|
35
|
+
}
|
|
36
|
+
if (statics) {
|
|
37
|
+
Object.keys(statics).forEach(i => {
|
|
38
|
+
Object.defineProperty(cls, i, Object.getOwnPropertyDescriptor(statics, i));
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const properties = {
|
|
42
|
+
constructor: {
|
|
43
|
+
value: cls,
|
|
44
|
+
enumerable: false,
|
|
45
|
+
writable: false,
|
|
46
|
+
configurable: true
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
if (prototype) {
|
|
50
|
+
Object.keys(prototype).forEach(i => {
|
|
51
|
+
properties[i] = Object.getOwnPropertyDescriptor(prototype, i);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
cls.prototype = Object.create(superCtor.prototype, properties);
|
|
55
|
+
};
|
|
56
|
+
exports.inherits = inherits;
|
|
57
|
+
// =============================================================================
|
|
58
|
+
// Date utilities
|
|
59
|
+
// =============================================================================
|
|
60
|
+
function dateToExcel(d, date1904) {
|
|
61
|
+
return 25569 + d.getTime() / (24 * 3600 * 1000) - (date1904 ? 1462 : 0);
|
|
62
|
+
}
|
|
63
|
+
function excelToDate(v, date1904) {
|
|
64
|
+
const millisecondSinceEpoch = Math.round((v - 25569 + (date1904 ? 1462 : 0)) * 24 * 3600 * 1000);
|
|
65
|
+
return new Date(millisecondSinceEpoch);
|
|
66
|
+
}
|
|
67
|
+
function toIsoDateString(dt) {
|
|
68
|
+
return dt.toISOString().substr(0, 10);
|
|
69
|
+
}
|
|
70
|
+
function parsePath(filepath) {
|
|
71
|
+
const last = filepath.lastIndexOf("/");
|
|
72
|
+
return {
|
|
73
|
+
path: filepath.substring(0, last),
|
|
74
|
+
name: filepath.substring(last + 1)
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function getRelsPath(filepath) {
|
|
78
|
+
const path = parsePath(filepath);
|
|
79
|
+
return `${path.path}/_rels/${path.name}.rels`;
|
|
80
|
+
}
|
|
81
|
+
// =============================================================================
|
|
82
|
+
// XML utilities
|
|
83
|
+
// =============================================================================
|
|
84
|
+
const xmlDecodingMap = {
|
|
85
|
+
lt: "<",
|
|
86
|
+
gt: ">",
|
|
87
|
+
amp: "&",
|
|
88
|
+
quot: '"',
|
|
89
|
+
apos: "'"
|
|
90
|
+
};
|
|
91
|
+
function xmlDecode(text) {
|
|
92
|
+
return text.replace(/&(#\d+|#x[0-9A-Fa-f]+|\w+);/g, (match, entity) => {
|
|
93
|
+
if (entity[0] === "#") {
|
|
94
|
+
// Numeric character reference
|
|
95
|
+
const code = entity[1] === "x" ? parseInt(entity.slice(2), 16) : parseInt(entity.slice(1));
|
|
96
|
+
return String.fromCodePoint(code);
|
|
97
|
+
}
|
|
98
|
+
return xmlDecodingMap[entity] || match;
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
// =============================================================================
|
|
102
|
+
// Parsing utilities
|
|
103
|
+
// =============================================================================
|
|
104
|
+
function validInt(value) {
|
|
105
|
+
const i = typeof value === "number" ? value : parseInt(value, 10);
|
|
106
|
+
return Number.isNaN(i) ? 0 : i;
|
|
107
|
+
}
|
|
108
|
+
function isDateFmt(fmt) {
|
|
109
|
+
if (!fmt) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
// must not be a string fmt
|
|
113
|
+
if (fmt.indexOf("@") > -1) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
// must remove all chars inside quotes and []
|
|
117
|
+
let cleanFmt = fmt.replace(/\[[^\]]*]/g, "");
|
|
118
|
+
cleanFmt = cleanFmt.replace(/"[^"]*"/g, "");
|
|
119
|
+
// then check for date formatting chars
|
|
120
|
+
return cleanFmt.match(/[ymdhMsb]+/) !== null;
|
|
121
|
+
}
|
|
122
|
+
function parseBoolean(value) {
|
|
123
|
+
return value === true || value === "true" || value === 1 || value === "1";
|
|
124
|
+
}
|
|
125
|
+
// =============================================================================
|
|
126
|
+
// Collection utilities
|
|
127
|
+
// =============================================================================
|
|
128
|
+
function* range(start, stop, step = 1) {
|
|
129
|
+
const compareOrder = step > 0 ? (a, b) => a < b : (a, b) => a > b;
|
|
130
|
+
for (let value = start; compareOrder(value, stop); value += step) {
|
|
131
|
+
yield value;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function toSortedArray(values) {
|
|
135
|
+
const result = Array.from(values);
|
|
136
|
+
// If all numbers, use numeric sort
|
|
137
|
+
if (result.every(item => Number.isFinite(item))) {
|
|
138
|
+
return result.sort((a, b) => a - b);
|
|
139
|
+
}
|
|
140
|
+
return result.sort();
|
|
141
|
+
}
|
|
142
|
+
function objectFromProps(props, value = null) {
|
|
143
|
+
return props.reduce((result, property) => {
|
|
144
|
+
result[property] = value;
|
|
145
|
+
return result;
|
|
146
|
+
}, {});
|
|
147
|
+
}
|
|
148
|
+
// =============================================================================
|
|
149
|
+
// Buffer utilities (cross-platform)
|
|
150
|
+
// =============================================================================
|
|
151
|
+
const textDecoder = new TextDecoder("utf-8");
|
|
152
|
+
/**
|
|
153
|
+
* Convert a Buffer, ArrayBuffer, or Uint8Array to a UTF-8 string
|
|
154
|
+
* Works in both Node.js and browser environments
|
|
155
|
+
*/
|
|
156
|
+
function bufferToString(chunk) {
|
|
157
|
+
if (typeof chunk === "string") {
|
|
158
|
+
return chunk;
|
|
159
|
+
}
|
|
160
|
+
return textDecoder.decode(chunk);
|
|
161
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser utility functions
|
|
4
|
+
* Re-exports shared utilities and adds browser-specific implementations
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.utils = exports.bufferToString = exports.objectFromProps = exports.toSortedArray = exports.range = exports.parseBoolean = exports.isDateFmt = exports.validInt = exports.xmlDecode = exports.getRelsPath = exports.parsePath = exports.toIsoDateString = exports.excelToDate = exports.dateToExcel = exports.inherits = exports.nop = exports.delay = void 0;
|
|
8
|
+
exports.xmlEncode = xmlEncode;
|
|
9
|
+
exports.fileExists = fileExists;
|
|
10
|
+
// Re-export all shared utilities
|
|
11
|
+
var utils_base_1 = require("./utils.base");
|
|
12
|
+
Object.defineProperty(exports, "delay", { enumerable: true, get: function () { return utils_base_1.delay; } });
|
|
13
|
+
Object.defineProperty(exports, "nop", { enumerable: true, get: function () { return utils_base_1.nop; } });
|
|
14
|
+
Object.defineProperty(exports, "inherits", { enumerable: true, get: function () { return utils_base_1.inherits; } });
|
|
15
|
+
Object.defineProperty(exports, "dateToExcel", { enumerable: true, get: function () { return utils_base_1.dateToExcel; } });
|
|
16
|
+
Object.defineProperty(exports, "excelToDate", { enumerable: true, get: function () { return utils_base_1.excelToDate; } });
|
|
17
|
+
Object.defineProperty(exports, "toIsoDateString", { enumerable: true, get: function () { return utils_base_1.toIsoDateString; } });
|
|
18
|
+
Object.defineProperty(exports, "parsePath", { enumerable: true, get: function () { return utils_base_1.parsePath; } });
|
|
19
|
+
Object.defineProperty(exports, "getRelsPath", { enumerable: true, get: function () { return utils_base_1.getRelsPath; } });
|
|
20
|
+
Object.defineProperty(exports, "xmlDecode", { enumerable: true, get: function () { return utils_base_1.xmlDecode; } });
|
|
21
|
+
Object.defineProperty(exports, "validInt", { enumerable: true, get: function () { return utils_base_1.validInt; } });
|
|
22
|
+
Object.defineProperty(exports, "isDateFmt", { enumerable: true, get: function () { return utils_base_1.isDateFmt; } });
|
|
23
|
+
Object.defineProperty(exports, "parseBoolean", { enumerable: true, get: function () { return utils_base_1.parseBoolean; } });
|
|
24
|
+
Object.defineProperty(exports, "range", { enumerable: true, get: function () { return utils_base_1.range; } });
|
|
25
|
+
Object.defineProperty(exports, "toSortedArray", { enumerable: true, get: function () { return utils_base_1.toSortedArray; } });
|
|
26
|
+
Object.defineProperty(exports, "objectFromProps", { enumerable: true, get: function () { return utils_base_1.objectFromProps; } });
|
|
27
|
+
Object.defineProperty(exports, "bufferToString", { enumerable: true, get: function () { return utils_base_1.bufferToString; } });
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// XML encoding (Browser version with full Unicode support)
|
|
30
|
+
// =============================================================================
|
|
31
|
+
const xmlEncodingMap = {
|
|
32
|
+
"<": "<",
|
|
33
|
+
">": ">",
|
|
34
|
+
"&": "&",
|
|
35
|
+
'"': """,
|
|
36
|
+
"'": "'"
|
|
37
|
+
};
|
|
38
|
+
function xmlEncode(text) {
|
|
39
|
+
// Handles special characters:
|
|
40
|
+
// 1. XML entities: < > & " '
|
|
41
|
+
// 2. Control characters (0x00-0x1F except tab, newline, carriage return)
|
|
42
|
+
// 3. Invalid XML characters: 0xFFFE, 0xFFFF
|
|
43
|
+
// 4. Characters that need escaping in attributes
|
|
44
|
+
// First pass: escape XML entities
|
|
45
|
+
let result = text.replace(/[<>&"']/g, char => xmlEncodingMap[char] || char);
|
|
46
|
+
// Second pass: handle control characters and invalid XML characters
|
|
47
|
+
// Valid XML chars: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
|
|
48
|
+
// oxlint-disable-next-line no-control-regex
|
|
49
|
+
result = result.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\uFFFE\uFFFF]/g, char => {
|
|
50
|
+
const code = char.charCodeAt(0);
|
|
51
|
+
// For control characters, use numeric character reference
|
|
52
|
+
return `&#x${code.toString(16).toUpperCase()};`;
|
|
53
|
+
});
|
|
54
|
+
// Third pass: handle invalid surrogate pairs
|
|
55
|
+
result = result.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g, () => "\uFFFD" // replacement character
|
|
56
|
+
);
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
// =============================================================================
|
|
60
|
+
// File system utilities (Browser stub - always returns false)
|
|
61
|
+
// =============================================================================
|
|
62
|
+
function fileExists(_path) {
|
|
63
|
+
return Promise.resolve(false);
|
|
64
|
+
}
|
|
65
|
+
// =============================================================================
|
|
66
|
+
// Legacy export for backward compatibility
|
|
67
|
+
// =============================================================================
|
|
68
|
+
const utils_base_2 = require("./utils.base");
|
|
69
|
+
/** @deprecated Import functions directly instead of using the utils object */
|
|
70
|
+
exports.utils = {
|
|
71
|
+
nop: utils_base_2.nop,
|
|
72
|
+
inherits: utils_base_2.inherits,
|
|
73
|
+
dateToExcel: utils_base_2.dateToExcel,
|
|
74
|
+
excelToDate: utils_base_2.excelToDate,
|
|
75
|
+
parsePath: utils_base_2.parsePath,
|
|
76
|
+
getRelsPath: utils_base_2.getRelsPath,
|
|
77
|
+
xmlEncode,
|
|
78
|
+
xmlDecode: utils_base_2.xmlDecode,
|
|
79
|
+
validInt: utils_base_2.validInt,
|
|
80
|
+
isDateFmt: utils_base_2.isDateFmt,
|
|
81
|
+
fs: {
|
|
82
|
+
exists: fileExists
|
|
83
|
+
},
|
|
84
|
+
toIsoDateString: utils_base_2.toIsoDateString,
|
|
85
|
+
parseBoolean: utils_base_2.parseBoolean,
|
|
86
|
+
range: utils_base_2.range,
|
|
87
|
+
toSortedArray: utils_base_2.toSortedArray,
|
|
88
|
+
objectFromProps: utils_base_2.objectFromProps
|
|
89
|
+
};
|
package/dist/cjs/utils/utils.js
CHANGED
|
@@ -1,77 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Node.js utility functions
|
|
4
|
+
* Re-exports shared utilities and adds Node.js-specific implementations
|
|
5
|
+
*/
|
|
2
6
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
7
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
8
|
};
|
|
5
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.utils = exports.inherits = void 0;
|
|
7
|
-
exports.delay = delay;
|
|
8
|
-
exports.nop = nop;
|
|
9
|
-
exports.dateToExcel = dateToExcel;
|
|
10
|
-
exports.excelToDate = excelToDate;
|
|
11
|
-
exports.parsePath = parsePath;
|
|
12
|
-
exports.getRelsPath = getRelsPath;
|
|
10
|
+
exports.utils = exports.bufferToString = exports.objectFromProps = exports.toSortedArray = exports.range = exports.parseBoolean = exports.isDateFmt = exports.validInt = exports.xmlDecode = exports.getRelsPath = exports.parsePath = exports.toIsoDateString = exports.excelToDate = exports.dateToExcel = exports.inherits = exports.nop = exports.delay = void 0;
|
|
13
11
|
exports.xmlEncode = xmlEncode;
|
|
14
|
-
exports.xmlDecode = xmlDecode;
|
|
15
|
-
exports.validInt = validInt;
|
|
16
|
-
exports.isDateFmt = isDateFmt;
|
|
17
12
|
exports.fileExists = fileExists;
|
|
18
|
-
exports.toIsoDateString = toIsoDateString;
|
|
19
|
-
exports.parseBoolean = parseBoolean;
|
|
20
|
-
exports.range = range;
|
|
21
|
-
exports.toSortedArray = toSortedArray;
|
|
22
|
-
exports.objectFromProps = objectFromProps;
|
|
23
|
-
exports.bufferToString = bufferToString;
|
|
24
13
|
const fs_1 = __importDefault(require("fs"));
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
function
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
configurable: true
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
if (prototype) {
|
|
50
|
-
Object.keys(prototype).forEach(i => {
|
|
51
|
-
properties[i] = Object.getOwnPropertyDescriptor(prototype, i);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
cls.prototype = Object.create(superCtor.prototype, properties);
|
|
55
|
-
};
|
|
56
|
-
exports.inherits = inherits;
|
|
57
|
-
function dateToExcel(d, date1904) {
|
|
58
|
-
return 25569 + d.getTime() / (24 * 3600 * 1000) - (date1904 ? 1462 : 0);
|
|
59
|
-
}
|
|
60
|
-
function excelToDate(v, date1904) {
|
|
61
|
-
const millisecondSinceEpoch = Math.round((v - 25569 + (date1904 ? 1462 : 0)) * 24 * 3600 * 1000);
|
|
62
|
-
return new Date(millisecondSinceEpoch);
|
|
63
|
-
}
|
|
64
|
-
function parsePath(filepath) {
|
|
65
|
-
const last = filepath.lastIndexOf("/");
|
|
66
|
-
return {
|
|
67
|
-
path: filepath.substring(0, last),
|
|
68
|
-
name: filepath.substring(last + 1)
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
function getRelsPath(filepath) {
|
|
72
|
-
const path = parsePath(filepath);
|
|
73
|
-
return `${path.path}/_rels/${path.name}.rels`;
|
|
74
|
-
}
|
|
14
|
+
// Re-export all shared utilities
|
|
15
|
+
var utils_base_1 = require("./utils.base");
|
|
16
|
+
Object.defineProperty(exports, "delay", { enumerable: true, get: function () { return utils_base_1.delay; } });
|
|
17
|
+
Object.defineProperty(exports, "nop", { enumerable: true, get: function () { return utils_base_1.nop; } });
|
|
18
|
+
Object.defineProperty(exports, "inherits", { enumerable: true, get: function () { return utils_base_1.inherits; } });
|
|
19
|
+
Object.defineProperty(exports, "dateToExcel", { enumerable: true, get: function () { return utils_base_1.dateToExcel; } });
|
|
20
|
+
Object.defineProperty(exports, "excelToDate", { enumerable: true, get: function () { return utils_base_1.excelToDate; } });
|
|
21
|
+
Object.defineProperty(exports, "toIsoDateString", { enumerable: true, get: function () { return utils_base_1.toIsoDateString; } });
|
|
22
|
+
Object.defineProperty(exports, "parsePath", { enumerable: true, get: function () { return utils_base_1.parsePath; } });
|
|
23
|
+
Object.defineProperty(exports, "getRelsPath", { enumerable: true, get: function () { return utils_base_1.getRelsPath; } });
|
|
24
|
+
Object.defineProperty(exports, "xmlDecode", { enumerable: true, get: function () { return utils_base_1.xmlDecode; } });
|
|
25
|
+
Object.defineProperty(exports, "validInt", { enumerable: true, get: function () { return utils_base_1.validInt; } });
|
|
26
|
+
Object.defineProperty(exports, "isDateFmt", { enumerable: true, get: function () { return utils_base_1.isDateFmt; } });
|
|
27
|
+
Object.defineProperty(exports, "parseBoolean", { enumerable: true, get: function () { return utils_base_1.parseBoolean; } });
|
|
28
|
+
Object.defineProperty(exports, "range", { enumerable: true, get: function () { return utils_base_1.range; } });
|
|
29
|
+
Object.defineProperty(exports, "toSortedArray", { enumerable: true, get: function () { return utils_base_1.toSortedArray; } });
|
|
30
|
+
Object.defineProperty(exports, "objectFromProps", { enumerable: true, get: function () { return utils_base_1.objectFromProps; } });
|
|
31
|
+
Object.defineProperty(exports, "bufferToString", { enumerable: true, get: function () { return utils_base_1.bufferToString; } });
|
|
32
|
+
// =============================================================================
|
|
33
|
+
// XML encoding (Node.js optimized version)
|
|
34
|
+
// =============================================================================
|
|
75
35
|
// oxlint-disable-next-line no-control-regex -- Control characters are intentionally matched for XML encoding
|
|
76
36
|
const xmlDecodeRegex = /[<>&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/;
|
|
77
37
|
function xmlEncode(text) {
|
|
@@ -125,39 +85,9 @@ function xmlEncode(text) {
|
|
|
125
85
|
}
|
|
126
86
|
return result;
|
|
127
87
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
case "<":
|
|
132
|
-
return "<";
|
|
133
|
-
case ">":
|
|
134
|
-
return ">";
|
|
135
|
-
case "&":
|
|
136
|
-
return "&";
|
|
137
|
-
case "'":
|
|
138
|
-
return "'";
|
|
139
|
-
case """:
|
|
140
|
-
return '"';
|
|
141
|
-
default:
|
|
142
|
-
return c;
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
function validInt(value) {
|
|
147
|
-
const i = parseInt(value, 10);
|
|
148
|
-
return !Number.isNaN(i) ? i : 0;
|
|
149
|
-
}
|
|
150
|
-
function isDateFmt(fmt) {
|
|
151
|
-
if (!fmt) {
|
|
152
|
-
return false;
|
|
153
|
-
}
|
|
154
|
-
// must remove all chars inside quotes and []
|
|
155
|
-
fmt = fmt.replace(/\[[^\]]*]/g, "");
|
|
156
|
-
fmt = fmt.replace(/"[^"]*"/g, "");
|
|
157
|
-
// then check for date formatting chars
|
|
158
|
-
const result = fmt.match(/[ymdhMsb]+/) !== null;
|
|
159
|
-
return result;
|
|
160
|
-
}
|
|
88
|
+
// =============================================================================
|
|
89
|
+
// File system utilities (Node.js only)
|
|
90
|
+
// =============================================================================
|
|
161
91
|
function fileExists(path) {
|
|
162
92
|
return new Promise(resolve => {
|
|
163
93
|
fs_1.default.access(path, fs_1.default.constants.F_OK, err => {
|
|
@@ -165,66 +95,28 @@ function fileExists(path) {
|
|
|
165
95
|
});
|
|
166
96
|
});
|
|
167
97
|
}
|
|
168
|
-
|
|
169
|
-
return dt.toISOString().substr(0, 10);
|
|
170
|
-
}
|
|
171
|
-
function parseBoolean(value) {
|
|
172
|
-
return value === true || value === "true" || value === 1 || value === "1";
|
|
173
|
-
}
|
|
174
|
-
function* range(start, stop, step = 1) {
|
|
175
|
-
const compareOrder = step > 0 ? (a, b) => a < b : (a, b) => a > b;
|
|
176
|
-
for (let value = start; compareOrder(value, stop); value += step) {
|
|
177
|
-
yield value;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
function toSortedArray(values) {
|
|
181
|
-
const result = Array.from(values);
|
|
182
|
-
// Note: per default, `Array.prototype.sort()` converts values
|
|
183
|
-
// to strings when comparing. Here, if we have numbers, we use
|
|
184
|
-
// numeric sort.
|
|
185
|
-
if (result.every(item => Number.isFinite(item))) {
|
|
186
|
-
const compareNumbers = (a, b) => a - b;
|
|
187
|
-
return result.sort(compareNumbers);
|
|
188
|
-
}
|
|
189
|
-
return result.sort();
|
|
190
|
-
}
|
|
191
|
-
function objectFromProps(props, value = null) {
|
|
192
|
-
return props.reduce((result, property) => {
|
|
193
|
-
result[property] = value;
|
|
194
|
-
return result;
|
|
195
|
-
}, {});
|
|
196
|
-
}
|
|
98
|
+
// =============================================================================
|
|
197
99
|
// Legacy export for backward compatibility
|
|
100
|
+
// =============================================================================
|
|
101
|
+
const utils_base_2 = require("./utils.base");
|
|
198
102
|
/** @deprecated Import functions directly instead of using the utils object */
|
|
199
103
|
exports.utils = {
|
|
200
|
-
nop,
|
|
201
|
-
inherits:
|
|
202
|
-
dateToExcel,
|
|
203
|
-
excelToDate,
|
|
204
|
-
parsePath,
|
|
205
|
-
getRelsPath,
|
|
104
|
+
nop: utils_base_2.nop,
|
|
105
|
+
inherits: utils_base_2.inherits,
|
|
106
|
+
dateToExcel: utils_base_2.dateToExcel,
|
|
107
|
+
excelToDate: utils_base_2.excelToDate,
|
|
108
|
+
parsePath: utils_base_2.parsePath,
|
|
109
|
+
getRelsPath: utils_base_2.getRelsPath,
|
|
206
110
|
xmlEncode,
|
|
207
|
-
xmlDecode,
|
|
208
|
-
validInt,
|
|
209
|
-
isDateFmt,
|
|
111
|
+
xmlDecode: utils_base_2.xmlDecode,
|
|
112
|
+
validInt: utils_base_2.validInt,
|
|
113
|
+
isDateFmt: utils_base_2.isDateFmt,
|
|
210
114
|
fs: {
|
|
211
115
|
exists: fileExists
|
|
212
116
|
},
|
|
213
|
-
toIsoDateString,
|
|
214
|
-
parseBoolean,
|
|
215
|
-
range,
|
|
216
|
-
toSortedArray,
|
|
217
|
-
objectFromProps
|
|
117
|
+
toIsoDateString: utils_base_2.toIsoDateString,
|
|
118
|
+
parseBoolean: utils_base_2.parseBoolean,
|
|
119
|
+
range: utils_base_2.range,
|
|
120
|
+
toSortedArray: utils_base_2.toSortedArray,
|
|
121
|
+
objectFromProps: utils_base_2.objectFromProps
|
|
218
122
|
};
|
|
219
|
-
// TextDecoder is available in ES2020+ and all modern browsers/Node.js
|
|
220
|
-
const textDecoder = new TextDecoder("utf-8");
|
|
221
|
-
/**
|
|
222
|
-
* Convert a Buffer or ArrayBuffer to a UTF-8 string
|
|
223
|
-
* Works in both Node.js and browser environments
|
|
224
|
-
*/
|
|
225
|
-
function bufferToString(chunk) {
|
|
226
|
-
if (typeof chunk === "string") {
|
|
227
|
-
return chunk;
|
|
228
|
-
}
|
|
229
|
-
return textDecoder.decode(chunk);
|
|
230
|
-
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.XmlStream = void 0;
|
|
4
|
-
const
|
|
4
|
+
const utils_1 = require("./utils");
|
|
5
5
|
// constants
|
|
6
6
|
const OPEN_ANGLE = "<";
|
|
7
7
|
const CLOSE_ANGLE = ">";
|
|
@@ -10,7 +10,7 @@ const CLOSE_SLASH_ANGLE = "/>";
|
|
|
10
10
|
// Chunk size for periodic consolidation (reduces final join overhead)
|
|
11
11
|
const CHUNK_SIZE = 10000;
|
|
12
12
|
function pushAttribute(xml, name, value) {
|
|
13
|
-
xml.push(` ${name}="${(0,
|
|
13
|
+
xml.push(` ${name}="${(0, utils_1.xmlEncode)(value.toString())}"`);
|
|
14
14
|
}
|
|
15
15
|
function pushAttributes(xml, attributes) {
|
|
16
16
|
if (attributes) {
|
|
@@ -86,7 +86,7 @@ class XmlStream {
|
|
|
86
86
|
this.open = false;
|
|
87
87
|
}
|
|
88
88
|
this.leaf = false;
|
|
89
|
-
xml.push((0,
|
|
89
|
+
xml.push((0, utils_1.xmlEncode)(text.toString()));
|
|
90
90
|
}
|
|
91
91
|
writeXml(xml) {
|
|
92
92
|
if (this.open) {
|
|
@@ -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
|
+
}
|