@cj-tech-master/excelts 1.6.3 → 2.0.0-canary.20251228013952.4f2c3c6
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 +139 -24
- package/README_zh.md +140 -26
- package/dist/browser/excelts.esm.js +18468 -0
- package/dist/browser/excelts.esm.js.map +1 -0
- package/dist/browser/excelts.esm.min.js +125 -0
- package/dist/browser/excelts.iife.js +13107 -47146
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +24 -106
- 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 +137 -0
- package/dist/cjs/csv/csv.browser.js +68 -0
- package/dist/cjs/csv/csv.js +218 -162
- package/dist/cjs/doc/anchor.js +2 -2
- package/dist/cjs/doc/cell.js +22 -22
- package/dist/cjs/doc/column.js +28 -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 +45 -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 +38 -38
- package/dist/cjs/stream/xlsx/worksheet-reader.js +17 -17
- package/dist/cjs/stream/xlsx/worksheet-writer.js +67 -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/datetime.js +499 -0
- package/dist/cjs/utils/encryptor.browser.js +240 -0
- package/dist/cjs/utils/parse-sax.js +1191 -13
- 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 +14 -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 +88 -0
- package/dist/cjs/utils/zip/compress.browser.js +127 -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/deflate-fallback.js +575 -0
- package/dist/cjs/utils/zip/index.js +17 -17
- package/dist/cjs/utils/zip/streaming-zip.js +264 -0
- 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-breaks-xform.js +38 -0
- 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 +15 -3
- 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 +15 -17
- 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 +75 -70
- 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 +162 -0
- package/dist/cjs/xlsx/xlsx.js +118 -892
- 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 +127 -0
- package/dist/esm/csv/csv.browser.js +65 -0
- package/dist/esm/csv/csv.js +181 -159
- package/dist/esm/doc/column.js +21 -0
- 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/doc/worksheet.js +4 -0
- package/dist/esm/index.browser.js +33 -1
- package/dist/esm/index.js +23 -8
- package/dist/esm/local.js +0 -1
- package/dist/esm/stream/xlsx/workbook-writer.js +1 -1
- package/dist/esm/stream/xlsx/worksheet-writer.js +8 -1
- package/dist/esm/utils/browser-buffer.js +67 -0
- package/dist/esm/utils/datetime.js +493 -0
- package/dist/esm/utils/encryptor.browser.js +237 -0
- package/dist/esm/utils/parse-sax.js +1188 -12
- package/dist/esm/utils/stream-buf.browser.js +352 -0
- package/dist/esm/utils/unzip/zip-parser.js +11 -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 +83 -0
- package/dist/esm/utils/zip/compress.browser.js +121 -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/deflate-fallback.js +570 -0
- package/dist/esm/utils/zip/streaming-zip.js +259 -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/xform/sheet/col-breaks-xform.js +35 -0
- package/dist/esm/xlsx/xform/sheet/page-breaks-xform.js +13 -1
- package/dist/esm/xlsx/xform/sheet/row-breaks-xform.js +11 -13
- package/dist/esm/xlsx/xform/sheet/worksheet-xform.js +7 -2
- package/dist/esm/xlsx/xlsx.base.js +739 -0
- package/dist/esm/xlsx/xlsx.browser.js +159 -0
- package/dist/esm/xlsx/xlsx.js +114 -888
- 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 +62 -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 +9 -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 +12 -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 +7 -7
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +5 -5
- package/dist/types/stream/xlsx/worksheet-writer.d.ts +11 -9
- package/dist/types/types.d.ts +6 -0
- package/dist/types/utils/browser-buffer.d.ts +28 -0
- package/dist/types/utils/col-cache.d.ts +1 -1
- package/dist/types/utils/datetime.d.ts +56 -0
- package/dist/types/utils/encryptor.browser.d.ts +28 -0
- package/dist/types/utils/parse-sax.d.ts +108 -1
- 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/unzip/zip-parser.d.ts +5 -0
- 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 +45 -0
- package/dist/types/utils/zip/compress.browser.d.ts +63 -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/deflate-fallback.d.ts +39 -0
- package/dist/types/utils/zip/index.d.ts +5 -5
- package/dist/types/utils/zip/streaming-zip.d.ts +96 -0
- 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-breaks-xform.d.ts +16 -0
- 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 +5 -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 +5 -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 +16 -39
|
@@ -14,12 +14,12 @@ exports.Parse = void 0;
|
|
|
14
14
|
exports.createParse = createParse;
|
|
15
15
|
const zlib_1 = __importDefault(require("zlib"));
|
|
16
16
|
const stream_1 = require("stream");
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
17
|
+
const pull_stream_1 = require("./pull-stream");
|
|
18
|
+
const noop_stream_1 = require("./noop-stream");
|
|
19
|
+
const buffer_stream_1 = require("./buffer-stream");
|
|
20
|
+
const parse_extra_field_1 = require("./parse-extra-field");
|
|
21
|
+
const parse_datetime_1 = require("./parse-datetime");
|
|
22
|
+
const parse_buffer_1 = require("./parse-buffer");
|
|
23
23
|
// Check if native zlib is available (Node.js environment)
|
|
24
24
|
// In browser with polyfill, createInflateRaw may not exist or may not work properly
|
|
25
25
|
const hasNativeZlib = typeof zlib_1.default?.createInflateRaw === "function" &&
|
|
@@ -103,7 +103,7 @@ function createInflateRaw() {
|
|
|
103
103
|
}
|
|
104
104
|
const endDirectorySignature = Buffer.alloc(4);
|
|
105
105
|
endDirectorySignature.writeUInt32LE(0x06054b50, 0);
|
|
106
|
-
class Parse extends
|
|
106
|
+
class Parse extends pull_stream_1.PullStream {
|
|
107
107
|
constructor(opts = {}) {
|
|
108
108
|
super();
|
|
109
109
|
this._opts = opts;
|
|
@@ -163,7 +163,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
163
163
|
}
|
|
164
164
|
async _readCrxHeader() {
|
|
165
165
|
const data = await this.pull(12);
|
|
166
|
-
this.crxHeader = (0,
|
|
166
|
+
this.crxHeader = (0, parse_buffer_1.parse)(data, [
|
|
167
167
|
["version", 4],
|
|
168
168
|
["pubKeyLength", 4],
|
|
169
169
|
["signatureLength", 4]
|
|
@@ -176,7 +176,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
176
176
|
}
|
|
177
177
|
async _readFile() {
|
|
178
178
|
const data = await this.pull(26);
|
|
179
|
-
const vars = (0,
|
|
179
|
+
const vars = (0, parse_buffer_1.parse)(data, [
|
|
180
180
|
["versionsNeededToExtract", 2],
|
|
181
181
|
["flags", 2],
|
|
182
182
|
["compressionMethod", 2],
|
|
@@ -188,7 +188,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
188
188
|
["fileNameLength", 2],
|
|
189
189
|
["extraFieldLength", 2]
|
|
190
190
|
]);
|
|
191
|
-
vars.lastModifiedDateTime = (0,
|
|
191
|
+
vars.lastModifiedDateTime = (0, parse_datetime_1.parseDateTime)(vars.lastModifiedDate || 0, vars.lastModifiedTime || 0);
|
|
192
192
|
if (this.crxHeader) {
|
|
193
193
|
vars.crxHeader = this.crxHeader;
|
|
194
194
|
}
|
|
@@ -198,7 +198,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
198
198
|
let __autodraining = false;
|
|
199
199
|
entry.autodrain = function () {
|
|
200
200
|
__autodraining = true;
|
|
201
|
-
const draining = entry.pipe(new
|
|
201
|
+
const draining = entry.pipe(new noop_stream_1.NoopStream());
|
|
202
202
|
draining.promise = function () {
|
|
203
203
|
return new Promise((resolve, reject) => {
|
|
204
204
|
draining.on("finish", resolve);
|
|
@@ -208,7 +208,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
208
208
|
return draining;
|
|
209
209
|
};
|
|
210
210
|
entry.buffer = function () {
|
|
211
|
-
return (0,
|
|
211
|
+
return (0, buffer_stream_1.bufferStream)(entry);
|
|
212
212
|
};
|
|
213
213
|
entry.path = fileName;
|
|
214
214
|
entry.props = {
|
|
@@ -233,7 +233,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
const extraFieldData = await this.pull(vars.extraFieldLength || 0);
|
|
236
|
-
const extra = (0,
|
|
236
|
+
const extra = (0, parse_extra_field_1.parseExtraField)(extraFieldData, vars);
|
|
237
237
|
entry.vars = vars;
|
|
238
238
|
entry.extra = extra;
|
|
239
239
|
if (this._opts.forceStream) {
|
|
@@ -278,7 +278,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
278
278
|
}
|
|
279
279
|
async _processDataDescriptor(entry) {
|
|
280
280
|
const data = await this.pull(16);
|
|
281
|
-
const vars = (0,
|
|
281
|
+
const vars = (0, parse_buffer_1.parse)(data, [
|
|
282
282
|
["dataDescriptorSignature", 4],
|
|
283
283
|
["crc32", 4],
|
|
284
284
|
["compressedSize", 4],
|
|
@@ -289,7 +289,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
289
289
|
}
|
|
290
290
|
async _readCentralDirectoryFileHeader() {
|
|
291
291
|
const data = await this.pull(42);
|
|
292
|
-
const vars = (0,
|
|
292
|
+
const vars = (0, parse_buffer_1.parse)(data, [
|
|
293
293
|
["versionMadeBy", 2],
|
|
294
294
|
["versionsNeededToExtract", 2],
|
|
295
295
|
["flags", 2],
|
|
@@ -314,7 +314,7 @@ class Parse extends pull_stream_js_1.PullStream {
|
|
|
314
314
|
}
|
|
315
315
|
async _readEndOfCentralDirectoryRecord() {
|
|
316
316
|
const data = await this.pull(18);
|
|
317
|
-
const vars = (0,
|
|
317
|
+
const vars = (0, parse_buffer_1.parse)(data, [
|
|
318
318
|
["diskNumber", 2],
|
|
319
319
|
["diskStart", 2],
|
|
320
320
|
["numberOfRecordsOnDisk", 2],
|
|
@@ -9,7 +9,7 @@ exports.ZipParser = void 0;
|
|
|
9
9
|
exports.parseZipEntries = parseZipEntries;
|
|
10
10
|
exports.extractEntryData = extractEntryData;
|
|
11
11
|
exports.extractEntryDataSync = extractEntryDataSync;
|
|
12
|
-
const
|
|
12
|
+
const compress_1 = require("../zip/compress");
|
|
13
13
|
// ZIP file signatures
|
|
14
14
|
const LOCAL_FILE_HEADER_SIG = 0x04034b50;
|
|
15
15
|
const CENTRAL_DIR_HEADER_SIG = 0x02014b50;
|
|
@@ -322,7 +322,7 @@ async function extractEntryData(data, entry) {
|
|
|
322
322
|
return compressedData;
|
|
323
323
|
}
|
|
324
324
|
else if (entry.compressionMethod === COMPRESSION_DEFLATE) {
|
|
325
|
-
return (0,
|
|
325
|
+
return (0, compress_1.decompress)(compressedData);
|
|
326
326
|
}
|
|
327
327
|
else {
|
|
328
328
|
throw new Error(`Unsupported compression method: ${entry.compressionMethod}`);
|
|
@@ -363,7 +363,7 @@ function extractEntryDataSync(data, entry) {
|
|
|
363
363
|
return compressedData;
|
|
364
364
|
}
|
|
365
365
|
else if (entry.compressionMethod === COMPRESSION_DEFLATE) {
|
|
366
|
-
return (0,
|
|
366
|
+
return (0, compress_1.decompressSync)(compressedData);
|
|
367
367
|
}
|
|
368
368
|
else {
|
|
369
369
|
throw new Error(`Unsupported compression method: ${entry.compressionMethod}`);
|
|
@@ -433,6 +433,17 @@ class ZipParser {
|
|
|
433
433
|
}
|
|
434
434
|
return result;
|
|
435
435
|
}
|
|
436
|
+
/**
|
|
437
|
+
* Extract all files (sync, Node.js only)
|
|
438
|
+
* Returns object with file paths as keys and Uint8Array content as values
|
|
439
|
+
*/
|
|
440
|
+
extractAllSync() {
|
|
441
|
+
const result = {};
|
|
442
|
+
for (const entry of this.entries) {
|
|
443
|
+
result[entry.path] = extractEntryDataSync(this.data, entry);
|
|
444
|
+
}
|
|
445
|
+
return result;
|
|
446
|
+
}
|
|
436
447
|
/**
|
|
437
448
|
* Iterate over entries with async callback
|
|
438
449
|
*/
|
|
@@ -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) {
|