@cj-tech-master/excelts 1.6.2 → 1.6.3-canary.20251224125850.7da664f
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 +141 -8
- package/README_zh.md +142 -10
- package/dist/browser/excelts.esm.js +19115 -0
- package/dist/browser/excelts.esm.js.map +1 -0
- package/dist/browser/excelts.esm.min.js +127 -0
- package/dist/browser/excelts.iife.js +13576 -46968
- package/dist/browser/excelts.iife.js.map +1 -1
- package/dist/browser/excelts.iife.min.js +25 -105
- package/dist/cjs/csv/csv-core.js +701 -0
- package/dist/cjs/csv/csv-stream.js +646 -0
- package/dist/cjs/csv/csv.base.js +154 -0
- package/dist/cjs/csv/csv.browser.js +68 -0
- package/dist/cjs/csv/csv.js +226 -162
- package/dist/cjs/doc/anchor.js +2 -2
- package/dist/cjs/doc/cell.js +22 -22
- package/dist/cjs/doc/column.js +7 -7
- package/dist/cjs/doc/data-validations.js +3 -3
- package/dist/cjs/doc/defined-names.js +13 -13
- package/dist/cjs/doc/image.js +7 -7
- package/dist/cjs/doc/modelcontainer.js +2 -2
- package/dist/cjs/doc/note.js +2 -2
- package/dist/cjs/doc/pivot-table.js +5 -5
- package/dist/cjs/doc/range.js +11 -11
- package/dist/cjs/doc/row.js +16 -16
- package/dist/cjs/doc/table.js +5 -5
- package/dist/cjs/doc/workbook.base.js +211 -0
- package/dist/cjs/doc/workbook.browser.js +62 -0
- package/dist/cjs/doc/workbook.js +68 -179
- package/dist/cjs/doc/worksheet.js +41 -41
- package/dist/cjs/index.js +49 -32
- package/dist/cjs/stream/xlsx/hyperlink-reader.js +6 -6
- package/dist/cjs/stream/xlsx/sheet-comments-writer.js +12 -12
- package/dist/cjs/stream/xlsx/sheet-rels-writer.js +4 -4
- package/dist/cjs/stream/xlsx/workbook-reader.js +29 -26
- package/dist/cjs/stream/xlsx/workbook-writer.js +71 -57
- package/dist/cjs/stream/xlsx/worksheet-reader.js +27 -23
- package/dist/cjs/stream/xlsx/worksheet-writer.js +72 -66
- package/dist/cjs/utils/browser-buffer.js +75 -0
- package/dist/cjs/utils/cell-format.js +2 -2
- package/dist/cjs/utils/cell-matrix.js +5 -5
- package/dist/cjs/utils/encryptor.browser.js +240 -0
- package/dist/cjs/utils/parse-sax.js +2 -2
- package/dist/cjs/utils/shared-formula.js +5 -5
- package/dist/cjs/utils/sheet-utils.js +13 -13
- package/dist/cjs/utils/stream-buf.browser.js +355 -0
- package/dist/cjs/utils/stream-buf.js +5 -5
- package/dist/cjs/utils/unzip/extract.js +11 -11
- package/dist/cjs/utils/unzip/index.js +21 -21
- package/dist/cjs/utils/unzip/parse-extra-field.js +3 -3
- package/dist/cjs/utils/unzip/parse.js +16 -16
- package/dist/cjs/utils/unzip/zip-parser.js +3 -3
- package/dist/cjs/utils/utils.base.js +161 -0
- package/dist/cjs/utils/utils.browser.js +89 -0
- package/dist/cjs/utils/utils.js +46 -154
- package/dist/cjs/utils/xml-stream.js +3 -3
- package/dist/cjs/utils/zip/compress.base.js +85 -0
- package/dist/cjs/utils/zip/compress.browser.js +83 -0
- package/dist/cjs/utils/zip/compress.js +18 -198
- package/dist/cjs/utils/zip/crc32.browser.js +88 -0
- package/dist/cjs/utils/zip/index.js +17 -17
- package/dist/cjs/utils/zip/zip-builder.js +10 -10
- package/dist/cjs/utils/zip-stream.browser.js +135 -0
- package/dist/cjs/utils/zip-stream.js +4 -4
- package/dist/cjs/xlsx/xform/base-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/defined-name-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/sheet-xform.js +4 -4
- package/dist/cjs/xlsx/xform/book/workbook-calc-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-pivot-cache-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-view-xform.js +2 -2
- package/dist/cjs/xlsx/xform/book/workbook-xform.js +24 -24
- package/dist/cjs/xlsx/xform/comment/comment-xform.js +4 -4
- package/dist/cjs/xlsx/xform/comment/comments-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/style/vml-position-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/style/vml-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/vml-anchor-xform.js +2 -2
- package/dist/cjs/xlsx/xform/comment/vml-client-data-xform.js +10 -10
- package/dist/cjs/xlsx/xform/comment/vml-notes-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/vml-shape-xform.js +6 -6
- package/dist/cjs/xlsx/xform/comment/vml-textbox-xform.js +2 -2
- package/dist/cjs/xlsx/xform/composite-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-heading-pairs-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-titles-of-parts-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/app-xform.js +11 -11
- package/dist/cjs/xlsx/xform/core/content-types-xform.js +4 -4
- package/dist/cjs/xlsx/xform/core/core-xform.js +23 -23
- package/dist/cjs/xlsx/xform/core/relationship-xform.js +2 -2
- package/dist/cjs/xlsx/xform/core/relationships-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/base-cell-anchor-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/blip-fill-xform.js +4 -4
- package/dist/cjs/xlsx/xform/drawing/blip-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/c-nv-pic-pr-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/c-nv-pr-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/cell-position-xform.js +7 -7
- package/dist/cjs/xlsx/xform/drawing/drawing-xform.js +10 -10
- package/dist/cjs/xlsx/xform/drawing/ext-lst-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/hlink-click-xform.js +2 -2
- package/dist/cjs/xlsx/xform/drawing/nv-pic-pr-xform.js +6 -6
- package/dist/cjs/xlsx/xform/drawing/one-cell-anchor-xform.js +10 -10
- package/dist/cjs/xlsx/xform/drawing/pic-xform.js +9 -9
- package/dist/cjs/xlsx/xform/drawing/two-cell-anchor-xform.js +9 -9
- package/dist/cjs/xlsx/xform/list-xform.js +2 -2
- package/dist/cjs/xlsx/xform/pivot-table/cache-field-xform.js +5 -5
- package/dist/cjs/xlsx/xform/pivot-table/cache-field.js +3 -3
- package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +10 -10
- package/dist/cjs/xlsx/xform/pivot-table/pivot-cache-records-xform.js +9 -9
- package/dist/cjs/xlsx/xform/pivot-table/pivot-table-xform.js +10 -11
- package/dist/cjs/xlsx/xform/sheet/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cell-xform.js +65 -65
- package/dist/cjs/xlsx/xform/sheet/cf/cf-rule-xform.js +27 -27
- package/dist/cjs/xlsx/xform/sheet/cf/cfvo-xform.js +3 -3
- package/dist/cjs/xlsx/xform/sheet/cf/color-scale-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/conditional-formatting-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/conditional-formattings-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf/databar-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/cf/formula-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf/icon-set-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +3 -3
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +11 -12
- package/dist/cjs/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +26 -26
- package/dist/cjs/xlsx/xform/sheet/cf-ext/f-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +14 -14
- package/dist/cjs/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/col-xform.js +6 -6
- package/dist/cjs/xlsx/xform/sheet/data-validations-xform.js +18 -18
- package/dist/cjs/xlsx/xform/sheet/dimension-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/drawing-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/ext-lst-xform.js +5 -5
- package/dist/cjs/xlsx/xform/sheet/header-footer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/hyperlink-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merge-cell-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/merges.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/outline-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-breaks-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-margins-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/page-setup-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/picture-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/print-options-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/row-breaks-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/row-xform.js +11 -11
- package/dist/cjs/xlsx/xform/sheet/sheet-format-properties-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-properties-xform.js +8 -8
- package/dist/cjs/xlsx/xform/sheet/sheet-protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/sheet-view-xform.js +4 -4
- package/dist/cjs/xlsx/xform/sheet/table-part-xform.js +2 -2
- package/dist/cjs/xlsx/xform/sheet/worksheet-xform.js +68 -68
- package/dist/cjs/xlsx/xform/simple/boolean-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/date-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/float-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/integer-xform.js +2 -2
- package/dist/cjs/xlsx/xform/simple/string-xform.js +2 -2
- package/dist/cjs/xlsx/xform/static-xform.js +4 -4
- package/dist/cjs/xlsx/xform/strings/phonetic-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/rich-text-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/shared-string-xform.js +8 -8
- package/dist/cjs/xlsx/xform/strings/shared-strings-xform.js +6 -6
- package/dist/cjs/xlsx/xform/strings/text-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/alignment-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/border-xform.js +8 -8
- package/dist/cjs/xlsx/xform/style/color-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/dxf-xform.js +14 -14
- package/dist/cjs/xlsx/xform/style/fill-xform.js +9 -9
- package/dist/cjs/xlsx/xform/style/font-xform.js +22 -22
- package/dist/cjs/xlsx/xform/style/numfmt-xform.js +5 -5
- package/dist/cjs/xlsx/xform/style/protection-xform.js +2 -2
- package/dist/cjs/xlsx/xform/style/style-xform.js +6 -6
- package/dist/cjs/xlsx/xform/style/styles-xform.js +39 -39
- package/dist/cjs/xlsx/xform/style/underline-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/auto-filter-xform.js +4 -4
- package/dist/cjs/xlsx/xform/table/custom-filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/filter-column-xform.js +9 -9
- package/dist/cjs/xlsx/xform/table/filter-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-column-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-style-info-xform.js +2 -2
- package/dist/cjs/xlsx/xform/table/table-xform.js +12 -12
- package/dist/cjs/xlsx/xlsx.base.js +742 -0
- package/dist/cjs/xlsx/xlsx.browser.js +205 -0
- package/dist/cjs/xlsx/xlsx.js +91 -833
- package/dist/esm/csv/csv-core.js +694 -0
- package/dist/esm/csv/csv-stream.js +638 -0
- package/dist/esm/csv/csv.base.js +141 -0
- package/dist/esm/csv/csv.browser.js +65 -0
- package/dist/esm/csv/csv.js +189 -159
- package/dist/esm/doc/workbook.base.js +207 -0
- package/dist/esm/doc/workbook.browser.js +59 -0
- package/dist/esm/doc/workbook.js +64 -175
- package/dist/esm/index.browser.js +33 -1
- package/dist/esm/index.js +23 -8
- package/dist/esm/local.js +0 -1
- package/dist/esm/stream/xlsx/hyperlink-reader.js +1 -1
- package/dist/esm/stream/xlsx/workbook-reader.js +7 -4
- package/dist/esm/stream/xlsx/workbook-writer.js +37 -23
- package/dist/esm/stream/xlsx/worksheet-reader.js +12 -8
- package/dist/esm/stream/xlsx/worksheet-writer.js +12 -6
- package/dist/esm/utils/browser-buffer.js +67 -0
- package/dist/esm/utils/encryptor.browser.js +237 -0
- package/dist/esm/utils/stream-buf.browser.js +352 -0
- package/dist/esm/utils/utils.base.js +142 -0
- package/dist/esm/utils/utils.browser.js +68 -0
- package/dist/esm/utils/utils.js +15 -123
- package/dist/esm/utils/zip/compress.base.js +80 -0
- package/dist/esm/utils/zip/compress.browser.js +76 -0
- package/dist/esm/utils/zip/compress.js +16 -164
- package/dist/esm/utils/zip/crc32.browser.js +82 -0
- package/dist/esm/utils/zip-stream.browser.js +132 -0
- package/dist/esm/xlsx/xform/pivot-table/pivot-table-xform.js +2 -3
- package/dist/esm/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -3
- package/dist/esm/xlsx/xlsx.base.js +739 -0
- package/dist/esm/xlsx/xlsx.browser.js +202 -0
- package/dist/esm/xlsx/xlsx.js +87 -829
- package/dist/types/csv/csv-core.d.ts +207 -0
- package/dist/types/csv/csv-stream.d.ts +114 -0
- package/dist/types/csv/csv.base.d.ts +61 -0
- package/dist/types/csv/csv.browser.d.ts +33 -0
- package/dist/types/csv/csv.d.ts +97 -71
- package/dist/types/doc/anchor.d.ts +1 -1
- package/dist/types/doc/cell.d.ts +7 -7
- package/dist/types/doc/column.d.ts +3 -3
- package/dist/types/doc/defined-names.d.ts +4 -4
- package/dist/types/doc/image.d.ts +2 -2
- package/dist/types/doc/modelcontainer.d.ts +1 -1
- package/dist/types/doc/pivot-table.d.ts +1 -1
- package/dist/types/doc/range.d.ts +1 -1
- package/dist/types/doc/row.d.ts +3 -3
- package/dist/types/doc/table.d.ts +4 -4
- package/dist/types/doc/workbook.base.d.ts +111 -0
- package/dist/types/doc/workbook.browser.d.ts +38 -0
- package/dist/types/doc/workbook.d.ts +62 -92
- package/dist/types/doc/worksheet.d.ts +10 -10
- package/dist/types/index.browser.d.ts +19 -5
- package/dist/types/index.d.ts +24 -20
- package/dist/types/local.d.ts +0 -1
- package/dist/types/stream/xlsx/hyperlink-reader.d.ts +11 -11
- package/dist/types/stream/xlsx/workbook-reader.d.ts +125 -36
- package/dist/types/stream/xlsx/workbook-writer.d.ts +105 -22
- package/dist/types/stream/xlsx/worksheet-reader.d.ts +40 -22
- package/dist/types/stream/xlsx/worksheet-writer.d.ts +83 -49
- package/dist/types/types.d.ts +4 -16
- package/dist/types/utils/browser-buffer.d.ts +28 -0
- package/dist/types/utils/col-cache.d.ts +1 -1
- package/dist/types/utils/encryptor.browser.d.ts +28 -0
- package/dist/types/utils/sheet-utils.d.ts +3 -3
- package/dist/types/utils/stream-buf.browser.d.ts +41 -0
- package/dist/types/utils/unzip/extract.d.ts +6 -6
- package/dist/types/utils/unzip/index.d.ts +8 -8
- package/dist/types/utils/unzip/parse.d.ts +3 -3
- package/dist/types/utils/utils.base.d.ts +29 -0
- package/dist/types/utils/utils.browser.d.ts +29 -0
- package/dist/types/utils/utils.d.ts +6 -25
- package/dist/types/utils/zip/compress.base.d.ts +42 -0
- package/dist/types/utils/zip/compress.browser.d.ts +54 -0
- package/dist/types/utils/zip/compress.d.ts +13 -45
- package/dist/types/utils/zip/crc32.browser.d.ts +52 -0
- package/dist/types/utils/zip/index.d.ts +5 -5
- package/dist/types/utils/zip/zip-builder.d.ts +1 -1
- package/dist/types/utils/zip-stream.browser.d.ts +39 -0
- package/dist/types/xlsx/xform/base-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/defined-name-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/sheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/book/workbook-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comment-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/comments-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/app-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/content-types-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/core-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationship-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/core/relationships-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/blip-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/pic-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/list-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
- package/dist/types/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/col-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/picture-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/row-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/boolean-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/date-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/float-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/integer-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/simple/string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/static-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/strings/text-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/alignment-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/border-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/color-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/dxf-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/fill-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/font-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/numfmt-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/protection-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/style/style-xform.d.ts +3 -3
- package/dist/types/xlsx/xform/style/styles-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/style/underline-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/filter-column-xform.d.ts +2 -2
- package/dist/types/xlsx/xform/table/filter-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-column-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
- package/dist/types/xlsx/xform/table/table-xform.d.ts +1 -1
- package/dist/types/xlsx/xlsx.base.d.ts +134 -0
- package/dist/types/xlsx/xlsx.browser.d.ts +31 -0
- package/dist/types/xlsx/xlsx.d.ts +20 -80
- package/package.json +14 -16
|
@@ -1,60 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WorksheetWriter = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const xmlBuffer = new
|
|
4
|
+
const rel_type_1 = require("../../xlsx/rel-type");
|
|
5
|
+
const col_cache_1 = require("../../utils/col-cache");
|
|
6
|
+
const encryptor_1 = require("../../utils/encryptor");
|
|
7
|
+
const range_1 = require("../../doc/range");
|
|
8
|
+
const string_buf_1 = require("../../utils/string-buf");
|
|
9
|
+
const row_1 = require("../../doc/row");
|
|
10
|
+
const column_1 = require("../../doc/column");
|
|
11
|
+
const sheet_rels_writer_1 = require("./sheet-rels-writer");
|
|
12
|
+
const sheet_comments_writer_1 = require("./sheet-comments-writer");
|
|
13
|
+
const data_validations_1 = require("../../doc/data-validations");
|
|
14
|
+
const xmlBuffer = new string_buf_1.StringBuf();
|
|
15
15
|
// ============================================================================================
|
|
16
16
|
// Xforms
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
17
|
+
const list_xform_1 = require("../../xlsx/xform/list-xform");
|
|
18
|
+
const data_validations_xform_1 = require("../../xlsx/xform/sheet/data-validations-xform");
|
|
19
|
+
const sheet_properties_xform_1 = require("../../xlsx/xform/sheet/sheet-properties-xform");
|
|
20
|
+
const sheet_format_properties_xform_1 = require("../../xlsx/xform/sheet/sheet-format-properties-xform");
|
|
21
|
+
const col_xform_1 = require("../../xlsx/xform/sheet/col-xform");
|
|
22
|
+
const row_xform_1 = require("../../xlsx/xform/sheet/row-xform");
|
|
23
|
+
const hyperlink_xform_1 = require("../../xlsx/xform/sheet/hyperlink-xform");
|
|
24
|
+
const sheet_view_xform_1 = require("../../xlsx/xform/sheet/sheet-view-xform");
|
|
25
|
+
const sheet_protection_xform_1 = require("../../xlsx/xform/sheet/sheet-protection-xform");
|
|
26
|
+
const page_margins_xform_1 = require("../../xlsx/xform/sheet/page-margins-xform");
|
|
27
|
+
const page_setup_xform_1 = require("../../xlsx/xform/sheet/page-setup-xform");
|
|
28
|
+
const auto_filter_xform_1 = require("../../xlsx/xform/sheet/auto-filter-xform");
|
|
29
|
+
const picture_xform_1 = require("../../xlsx/xform/sheet/picture-xform");
|
|
30
|
+
const conditional_formattings_xform_1 = require("../../xlsx/xform/sheet/cf/conditional-formattings-xform");
|
|
31
|
+
const header_footer_xform_1 = require("../../xlsx/xform/sheet/header-footer-xform");
|
|
32
|
+
const row_breaks_xform_1 = require("../../xlsx/xform/sheet/row-breaks-xform");
|
|
33
33
|
// since prepare and render are functional, we can use singletons
|
|
34
34
|
const xform = {
|
|
35
|
-
dataValidations: new
|
|
36
|
-
sheetProperties: new
|
|
37
|
-
sheetFormatProperties: new
|
|
38
|
-
columns: new
|
|
39
|
-
row: new
|
|
40
|
-
hyperlinks: new
|
|
35
|
+
dataValidations: new data_validations_xform_1.DataValidationsXform(),
|
|
36
|
+
sheetProperties: new sheet_properties_xform_1.SheetPropertiesXform(),
|
|
37
|
+
sheetFormatProperties: new sheet_format_properties_xform_1.SheetFormatPropertiesXform(),
|
|
38
|
+
columns: new list_xform_1.ListXform({ tag: "cols", count: false, childXform: new col_xform_1.ColXform() }),
|
|
39
|
+
row: new row_xform_1.RowXform(),
|
|
40
|
+
hyperlinks: new list_xform_1.ListXform({
|
|
41
41
|
tag: "hyperlinks",
|
|
42
42
|
count: false,
|
|
43
|
-
childXform: new
|
|
43
|
+
childXform: new hyperlink_xform_1.HyperlinkXform()
|
|
44
44
|
}),
|
|
45
|
-
sheetViews: new
|
|
45
|
+
sheetViews: new list_xform_1.ListXform({
|
|
46
46
|
tag: "sheetViews",
|
|
47
47
|
count: false,
|
|
48
|
-
childXform: new
|
|
48
|
+
childXform: new sheet_view_xform_1.SheetViewXform()
|
|
49
49
|
}),
|
|
50
|
-
sheetProtection: new
|
|
51
|
-
pageMargins: new
|
|
52
|
-
pageSeteup: new
|
|
53
|
-
autoFilter: new
|
|
54
|
-
picture: new
|
|
55
|
-
conditionalFormattings: new
|
|
56
|
-
headerFooter: new
|
|
57
|
-
rowBreaks: new
|
|
50
|
+
sheetProtection: new sheet_protection_xform_1.SheetProtectionXform(),
|
|
51
|
+
pageMargins: new page_margins_xform_1.PageMarginsXform(),
|
|
52
|
+
pageSeteup: new page_setup_xform_1.PageSetupXform(),
|
|
53
|
+
autoFilter: new auto_filter_xform_1.AutoFilterXform(),
|
|
54
|
+
picture: new picture_xform_1.PictureXform(),
|
|
55
|
+
conditionalFormattings: new conditional_formattings_xform_1.ConditionalFormattingsXform(),
|
|
56
|
+
headerFooter: new header_footer_xform_1.HeaderFooterXform(),
|
|
57
|
+
rowBreaks: new row_breaks_xform_1.RowBreaksXform()
|
|
58
58
|
};
|
|
59
59
|
class WorksheetWriter {
|
|
60
60
|
constructor(options) {
|
|
@@ -75,16 +75,16 @@ class WorksheetWriter {
|
|
|
75
75
|
this._merges = [];
|
|
76
76
|
this._merges.add = function () { }; // ignore cell instruction
|
|
77
77
|
// keep record of all hyperlinks
|
|
78
|
-
this._sheetRelsWriter = new
|
|
79
|
-
this._sheetCommentsWriter = new
|
|
78
|
+
this._sheetRelsWriter = new sheet_rels_writer_1.SheetRelsWriter(options);
|
|
79
|
+
this._sheetCommentsWriter = new sheet_comments_writer_1.SheetCommentsWriter(this, this._sheetRelsWriter, options);
|
|
80
80
|
// keep a record of dimensions
|
|
81
|
-
this._dimensions = new
|
|
81
|
+
this._dimensions = new range_1.Dimensions();
|
|
82
82
|
// first uncommitted row
|
|
83
83
|
this._rowZero = 1;
|
|
84
84
|
// committed flag
|
|
85
85
|
this.committed = false;
|
|
86
86
|
// for data validations
|
|
87
|
-
this.dataValidations = new
|
|
87
|
+
this.dataValidations = new data_validations_1.DataValidations();
|
|
88
88
|
// for sharing formulae
|
|
89
89
|
this._formulae = {};
|
|
90
90
|
this._siFormulae = 0;
|
|
@@ -231,7 +231,7 @@ class WorksheetWriter {
|
|
|
231
231
|
let count = 1;
|
|
232
232
|
const columns = (this._columns = []);
|
|
233
233
|
value.forEach(defn => {
|
|
234
|
-
const column = new
|
|
234
|
+
const column = new column_1.Column(this, count++, false);
|
|
235
235
|
columns.push(column);
|
|
236
236
|
column.defn = defn;
|
|
237
237
|
});
|
|
@@ -258,7 +258,7 @@ class WorksheetWriter {
|
|
|
258
258
|
return col;
|
|
259
259
|
}
|
|
260
260
|
// otherwise, assume letter
|
|
261
|
-
c =
|
|
261
|
+
c = col_cache_1.colCache.l2n(c);
|
|
262
262
|
}
|
|
263
263
|
if (!this._columns) {
|
|
264
264
|
this._columns = [];
|
|
@@ -266,7 +266,7 @@ class WorksheetWriter {
|
|
|
266
266
|
if (c > this._columns.length) {
|
|
267
267
|
let n = this._columns.length + 1;
|
|
268
268
|
while (n <= c) {
|
|
269
|
-
this._columns.push(new
|
|
269
|
+
this._columns.push(new column_1.Column(this, n++));
|
|
270
270
|
}
|
|
271
271
|
}
|
|
272
272
|
return this._columns[c - 1];
|
|
@@ -278,20 +278,26 @@ class WorksheetWriter {
|
|
|
278
278
|
}
|
|
279
279
|
// iterate over every uncommitted row in the worksheet, including maybe empty rows
|
|
280
280
|
eachRow(options, iteratee) {
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
281
|
+
let callback;
|
|
282
|
+
let opts;
|
|
283
|
+
if (typeof options === "function") {
|
|
284
|
+
callback = options;
|
|
285
|
+
opts = undefined;
|
|
284
286
|
}
|
|
285
|
-
|
|
287
|
+
else {
|
|
288
|
+
callback = iteratee;
|
|
289
|
+
opts = options;
|
|
290
|
+
}
|
|
291
|
+
if (opts && opts.includeEmpty) {
|
|
286
292
|
const n = this._nextRow;
|
|
287
293
|
for (let i = this._rowZero; i < n; i++) {
|
|
288
|
-
|
|
294
|
+
callback(this.getRow(i), i);
|
|
289
295
|
}
|
|
290
296
|
}
|
|
291
297
|
else {
|
|
292
298
|
this._rows.forEach(row => {
|
|
293
299
|
if (row.hasValues) {
|
|
294
|
-
|
|
300
|
+
callback(row, row.number);
|
|
295
301
|
}
|
|
296
302
|
});
|
|
297
303
|
}
|
|
@@ -329,12 +335,12 @@ class WorksheetWriter {
|
|
|
329
335
|
}
|
|
330
336
|
let row = this._rows[index];
|
|
331
337
|
if (!row) {
|
|
332
|
-
this._rows[index] = row = new
|
|
338
|
+
this._rows[index] = row = new row_1.Row(this, rowNumber);
|
|
333
339
|
}
|
|
334
340
|
return row;
|
|
335
341
|
}
|
|
336
342
|
addRow(value) {
|
|
337
|
-
const row = new
|
|
343
|
+
const row = new row_1.Row(this, this._nextRow);
|
|
338
344
|
this._rows[row.number - this._rowZero] = row;
|
|
339
345
|
row.values = value;
|
|
340
346
|
return row;
|
|
@@ -343,19 +349,19 @@ class WorksheetWriter {
|
|
|
343
349
|
// Cells
|
|
344
350
|
// returns the cell at [r,c] or address given by r. If not found, return undefined
|
|
345
351
|
findCell(r, c) {
|
|
346
|
-
const address =
|
|
352
|
+
const address = col_cache_1.colCache.getAddress(r, c);
|
|
347
353
|
const row = this.findRow(address.row);
|
|
348
354
|
return row ? row.findCell(address.column) : undefined;
|
|
349
355
|
}
|
|
350
356
|
// return the cell at [r,c] or address given by r. If not found, create a new one.
|
|
351
357
|
getCell(r, c) {
|
|
352
|
-
const address =
|
|
358
|
+
const address = col_cache_1.colCache.getAddress(r, c);
|
|
353
359
|
const row = this.getRow(address.row);
|
|
354
360
|
return row.getCellEx(address);
|
|
355
361
|
}
|
|
356
362
|
mergeCells(...cells) {
|
|
357
363
|
// may fail if rows have been comitted
|
|
358
|
-
const dimensions = new
|
|
364
|
+
const dimensions = new range_1.Dimensions(cells);
|
|
359
365
|
// check cells aren't already merged
|
|
360
366
|
this._merges.forEach(merge => {
|
|
361
367
|
if (merge.intersects(dimensions)) {
|
|
@@ -416,10 +422,10 @@ class WorksheetWriter {
|
|
|
416
422
|
}
|
|
417
423
|
if (password) {
|
|
418
424
|
this.sheetProtection.algorithmName = "SHA-512";
|
|
419
|
-
this.sheetProtection.saltValue =
|
|
425
|
+
this.sheetProtection.saltValue = encryptor_1.Encryptor.randomBytes(16).toString("base64");
|
|
420
426
|
this.sheetProtection.spinCount =
|
|
421
427
|
options && "spinCount" in options ? options.spinCount : 100000; // allow user specified spinCount
|
|
422
|
-
this.sheetProtection.hashValue =
|
|
428
|
+
this.sheetProtection.hashValue = encryptor_1.Encryptor.convertPasswordToHash(password, "SHA512", this.sheetProtection.saltValue, this.sheetProtection.spinCount);
|
|
423
429
|
}
|
|
424
430
|
if (options) {
|
|
425
431
|
this.sheetProtection = Object.assign(this.sheetProtection, options);
|
|
@@ -479,7 +485,7 @@ class WorksheetWriter {
|
|
|
479
485
|
this.stream.write(xmlBuffer);
|
|
480
486
|
}
|
|
481
487
|
_writeColumns() {
|
|
482
|
-
const cols =
|
|
488
|
+
const cols = column_1.Column.toModel(this.columns);
|
|
483
489
|
if (cols) {
|
|
484
490
|
xform.columns.prepare(cols, { styles: this._workbook.styles });
|
|
485
491
|
this.stream.write(xform.columns.toXml(cols));
|
|
@@ -564,7 +570,7 @@ class WorksheetWriter {
|
|
|
564
570
|
const image = this._workbook.getImage(this._background.imageId);
|
|
565
571
|
const pictureId = this._sheetRelsWriter.addMedia({
|
|
566
572
|
Target: `../media/${image.name}`,
|
|
567
|
-
Type:
|
|
573
|
+
Type: rel_type_1.RelType.Image
|
|
568
574
|
});
|
|
569
575
|
this._background = {
|
|
570
576
|
...this._background,
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser-compatible Buffer utilities
|
|
4
|
+
* Provides base64 encoding/decoding and a Buffer-like wrapper for Uint8Array
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BrowserBuffer = void 0;
|
|
8
|
+
exports.uint8ArrayToBase64 = uint8ArrayToBase64;
|
|
9
|
+
exports.base64ToUint8Array = base64ToUint8Array;
|
|
10
|
+
exports.stringToUtf16Le = stringToUtf16Le;
|
|
11
|
+
exports.concatUint8Arrays = concatUint8Arrays;
|
|
12
|
+
/**
|
|
13
|
+
* Convert Uint8Array to base64 string
|
|
14
|
+
*/
|
|
15
|
+
function uint8ArrayToBase64(bytes) {
|
|
16
|
+
let binary = "";
|
|
17
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
18
|
+
binary += String.fromCharCode(bytes[i]);
|
|
19
|
+
}
|
|
20
|
+
return btoa(binary);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Convert base64 string to Uint8Array
|
|
24
|
+
*/
|
|
25
|
+
function base64ToUint8Array(base64) {
|
|
26
|
+
const binaryString = atob(base64);
|
|
27
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
28
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
29
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
30
|
+
}
|
|
31
|
+
return bytes;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Buffer-like wrapper for Uint8Array with toString("base64") support
|
|
35
|
+
* This provides Node.js Buffer-like API for browser environments
|
|
36
|
+
*/
|
|
37
|
+
class BrowserBuffer extends Uint8Array {
|
|
38
|
+
toString(encoding) {
|
|
39
|
+
if (encoding === "base64") {
|
|
40
|
+
return uint8ArrayToBase64(this);
|
|
41
|
+
}
|
|
42
|
+
return new TextDecoder().decode(this);
|
|
43
|
+
}
|
|
44
|
+
static from(data) {
|
|
45
|
+
const buffer = new BrowserBuffer(data.length);
|
|
46
|
+
buffer.set(data);
|
|
47
|
+
return buffer;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.BrowserBuffer = BrowserBuffer;
|
|
51
|
+
/**
|
|
52
|
+
* Convert string to UTF-16LE Uint8Array (used for Excel password hashing)
|
|
53
|
+
*/
|
|
54
|
+
function stringToUtf16Le(str) {
|
|
55
|
+
const bytes = new Uint8Array(str.length * 2);
|
|
56
|
+
for (let i = 0; i < str.length; i++) {
|
|
57
|
+
const code = str.charCodeAt(i);
|
|
58
|
+
bytes[i * 2] = code & 0xff;
|
|
59
|
+
bytes[i * 2 + 1] = (code >> 8) & 0xff;
|
|
60
|
+
}
|
|
61
|
+
return bytes;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Concatenate multiple Uint8Arrays into one
|
|
65
|
+
*/
|
|
66
|
+
function concatUint8Arrays(...arrays) {
|
|
67
|
+
const totalLength = arrays.reduce((acc, arr) => acc + arr.length, 0);
|
|
68
|
+
const result = new Uint8Array(totalLength);
|
|
69
|
+
let offset = 0;
|
|
70
|
+
for (const arr of arrays) {
|
|
71
|
+
result.set(arr, offset);
|
|
72
|
+
offset += arr.length;
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
exports.cellFormat = void 0;
|
|
11
11
|
exports.getFormat = getFormat;
|
|
12
12
|
exports.format = format;
|
|
13
|
-
const
|
|
13
|
+
const utils_1 = require("./utils");
|
|
14
14
|
// =============================================================================
|
|
15
15
|
// Built-in Format Table (Excel numFmtId to format string mapping)
|
|
16
16
|
// =============================================================================
|
|
@@ -228,7 +228,7 @@ function formatDate(serial, fmt) {
|
|
|
228
228
|
const minutes = Math.floor((timeOfDay % 3600) / 60);
|
|
229
229
|
const seconds = timeOfDay % 60;
|
|
230
230
|
// For date components, use excelToDate but only for date parts
|
|
231
|
-
const date = (0,
|
|
231
|
+
const date = (0, utils_1.excelToDate)(serial, false);
|
|
232
232
|
const year = date.getUTCFullYear();
|
|
233
233
|
const month = date.getUTCMonth(); // 0-indexed
|
|
234
234
|
const day = date.getUTCDate();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CellMatrix = void 0;
|
|
4
|
-
const
|
|
4
|
+
const col_cache_1 = require("./col-cache");
|
|
5
5
|
// Helper to check for prototype pollution
|
|
6
6
|
function isSafeKey(key) {
|
|
7
7
|
if (typeof key === "number") {
|
|
@@ -31,13 +31,13 @@ class CellMatrix {
|
|
|
31
31
|
this.sheets = {};
|
|
32
32
|
}
|
|
33
33
|
addCell(addressStr) {
|
|
34
|
-
this.addCellEx(
|
|
34
|
+
this.addCellEx(col_cache_1.colCache.decodeEx(addressStr));
|
|
35
35
|
}
|
|
36
36
|
getCell(addressStr) {
|
|
37
|
-
return this.findCellEx(
|
|
37
|
+
return this.findCellEx(col_cache_1.colCache.decodeEx(addressStr), true);
|
|
38
38
|
}
|
|
39
39
|
findCell(addressStr) {
|
|
40
|
-
return this.findCellEx(
|
|
40
|
+
return this.findCellEx(col_cache_1.colCache.decodeEx(addressStr), false);
|
|
41
41
|
}
|
|
42
42
|
findCellAt(sheetName, rowNumber, colNumber) {
|
|
43
43
|
const sheet = this.sheets[sheetName];
|
|
@@ -73,7 +73,7 @@ class CellMatrix {
|
|
|
73
73
|
const cell = row[colNumber] ||
|
|
74
74
|
(row[colNumber] = {
|
|
75
75
|
sheetName,
|
|
76
|
-
address:
|
|
76
|
+
address: col_cache_1.colCache.n2l(colNumber) + rowNumber,
|
|
77
77
|
row: rowNumber,
|
|
78
78
|
col: colNumber
|
|
79
79
|
});
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser-compatible Encryptor with pure JS SHA implementations
|
|
4
|
+
* This provides synchronous hash functions for browser compatibility
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Encryptor = void 0;
|
|
8
|
+
const browser_buffer_1 = require("./browser-buffer");
|
|
9
|
+
// Helper to convert number to little-endian Uint8Array
|
|
10
|
+
function uint32ToLe(num) {
|
|
11
|
+
const bytes = new Uint8Array(4);
|
|
12
|
+
bytes[0] = num & 0xff;
|
|
13
|
+
bytes[1] = (num >> 8) & 0xff;
|
|
14
|
+
bytes[2] = (num >> 16) & 0xff;
|
|
15
|
+
bytes[3] = (num >> 24) & 0xff;
|
|
16
|
+
return bytes;
|
|
17
|
+
}
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Pure JavaScript SHA-512 implementation
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// SHA-512 constants (first 80 primes 2..409)
|
|
22
|
+
const K = new BigUint64Array([
|
|
23
|
+
0x428a2f98d728ae22n,
|
|
24
|
+
0x7137449123ef65cdn,
|
|
25
|
+
0xb5c0fbcfec4d3b2fn,
|
|
26
|
+
0xe9b5dba58189dbb4n,
|
|
27
|
+
0x3956c25bf348b538n,
|
|
28
|
+
0x59f111f1b605d019n,
|
|
29
|
+
0x923f82a4af194f9bn,
|
|
30
|
+
0xab1c5ed5da6d8118n,
|
|
31
|
+
0xd807aa98a3030242n,
|
|
32
|
+
0x12835b0145706fben,
|
|
33
|
+
0x243185be4ee4b28cn,
|
|
34
|
+
0x550c7dc3d5ffb4e2n,
|
|
35
|
+
0x72be5d74f27b896fn,
|
|
36
|
+
0x80deb1fe3b1696b1n,
|
|
37
|
+
0x9bdc06a725c71235n,
|
|
38
|
+
0xc19bf174cf692694n,
|
|
39
|
+
0xe49b69c19ef14ad2n,
|
|
40
|
+
0xefbe4786384f25e3n,
|
|
41
|
+
0x0fc19dc68b8cd5b5n,
|
|
42
|
+
0x240ca1cc77ac9c65n,
|
|
43
|
+
0x2de92c6f592b0275n,
|
|
44
|
+
0x4a7484aa6ea6e483n,
|
|
45
|
+
0x5cb0a9dcbd41fbd4n,
|
|
46
|
+
0x76f988da831153b5n,
|
|
47
|
+
0x983e5152ee66dfabn,
|
|
48
|
+
0xa831c66d2db43210n,
|
|
49
|
+
0xb00327c898fb213fn,
|
|
50
|
+
0xbf597fc7beef0ee4n,
|
|
51
|
+
0xc6e00bf33da88fc2n,
|
|
52
|
+
0xd5a79147930aa725n,
|
|
53
|
+
0x06ca6351e003826fn,
|
|
54
|
+
0x142929670a0e6e70n,
|
|
55
|
+
0x27b70a8546d22ffcn,
|
|
56
|
+
0x2e1b21385c26c926n,
|
|
57
|
+
0x4d2c6dfc5ac42aedn,
|
|
58
|
+
0x53380d139d95b3dfn,
|
|
59
|
+
0x650a73548baf63den,
|
|
60
|
+
0x766a0abb3c77b2a8n,
|
|
61
|
+
0x81c2c92e47edaee6n,
|
|
62
|
+
0x92722c851482353bn,
|
|
63
|
+
0xa2bfe8a14cf10364n,
|
|
64
|
+
0xa81a664bbc423001n,
|
|
65
|
+
0xc24b8b70d0f89791n,
|
|
66
|
+
0xc76c51a30654be30n,
|
|
67
|
+
0xd192e819d6ef5218n,
|
|
68
|
+
0xd69906245565a910n,
|
|
69
|
+
0xf40e35855771202an,
|
|
70
|
+
0x106aa07032bbd1b8n,
|
|
71
|
+
0x19a4c116b8d2d0c8n,
|
|
72
|
+
0x1e376c085141ab53n,
|
|
73
|
+
0x2748774cdf8eeb99n,
|
|
74
|
+
0x34b0bcb5e19b48a8n,
|
|
75
|
+
0x391c0cb3c5c95a63n,
|
|
76
|
+
0x4ed8aa4ae3418acbn,
|
|
77
|
+
0x5b9cca4f7763e373n,
|
|
78
|
+
0x682e6ff3d6b2b8a3n,
|
|
79
|
+
0x748f82ee5defb2fcn,
|
|
80
|
+
0x78a5636f43172f60n,
|
|
81
|
+
0x84c87814a1f0ab72n,
|
|
82
|
+
0x8cc702081a6439ecn,
|
|
83
|
+
0x90befffa23631e28n,
|
|
84
|
+
0xa4506cebde82bde9n,
|
|
85
|
+
0xbef9a3f7b2c67915n,
|
|
86
|
+
0xc67178f2e372532bn,
|
|
87
|
+
0xca273eceea26619cn,
|
|
88
|
+
0xd186b8c721c0c207n,
|
|
89
|
+
0xeada7dd6cde0eb1en,
|
|
90
|
+
0xf57d4f7fee6ed178n,
|
|
91
|
+
0x06f067aa72176fban,
|
|
92
|
+
0x0a637dc5a2c898a6n,
|
|
93
|
+
0x113f9804bef90daen,
|
|
94
|
+
0x1b710b35131c471bn,
|
|
95
|
+
0x28db77f523047d84n,
|
|
96
|
+
0x32caab7b40c72493n,
|
|
97
|
+
0x3c9ebe0a15c9bebcn,
|
|
98
|
+
0x431d67c49c100d4cn,
|
|
99
|
+
0x4cc5d4becb3e42b6n,
|
|
100
|
+
0x597f299cfc657e2an,
|
|
101
|
+
0x5fcb6fab3ad6faecn,
|
|
102
|
+
0x6c44198c4a475817n
|
|
103
|
+
]);
|
|
104
|
+
// Initial hash values for SHA-512
|
|
105
|
+
const H0 = new BigUint64Array([
|
|
106
|
+
0x6a09e667f3bcc908n,
|
|
107
|
+
0xbb67ae8584caa73bn,
|
|
108
|
+
0x3c6ef372fe94f82bn,
|
|
109
|
+
0xa54ff53a5f1d36f1n,
|
|
110
|
+
0x510e527fade682d1n,
|
|
111
|
+
0x9b05688c2b3e6c1fn,
|
|
112
|
+
0x1f83d9abfb41bd6bn,
|
|
113
|
+
0x5be0cd19137e2179n
|
|
114
|
+
]);
|
|
115
|
+
function rotr64(x, n) {
|
|
116
|
+
return ((x >> BigInt(n)) | (x << BigInt(64 - n))) & 0xffffffffffffffffn;
|
|
117
|
+
}
|
|
118
|
+
function sha512(message) {
|
|
119
|
+
// Pre-processing: adding padding bits
|
|
120
|
+
const msgLen = message.length;
|
|
121
|
+
const msgBitLen = BigInt(msgLen * 8);
|
|
122
|
+
// Calculate padding length (message + 1 + padding + 16 bytes for length) should be multiple of 128
|
|
123
|
+
const padLen = (128 - ((msgLen + 17) % 128)) % 128;
|
|
124
|
+
const paddedLen = msgLen + 1 + padLen + 16;
|
|
125
|
+
const padded = new Uint8Array(paddedLen);
|
|
126
|
+
padded.set(message);
|
|
127
|
+
padded[msgLen] = 0x80;
|
|
128
|
+
// Append original length in bits as 128-bit big-endian (we only use lower 64 bits)
|
|
129
|
+
const view = new DataView(padded.buffer);
|
|
130
|
+
// Upper 64 bits (always 0 for messages < 2^64 bits)
|
|
131
|
+
view.setBigUint64(paddedLen - 16, 0n, false);
|
|
132
|
+
// Lower 64 bits
|
|
133
|
+
view.setBigUint64(paddedLen - 8, msgBitLen, false);
|
|
134
|
+
// Initialize hash values
|
|
135
|
+
const H = new BigUint64Array(H0);
|
|
136
|
+
// Process message in 1024-bit (128-byte) chunks
|
|
137
|
+
const W = new BigUint64Array(80);
|
|
138
|
+
for (let chunkStart = 0; chunkStart < paddedLen; chunkStart += 128) {
|
|
139
|
+
const chunkView = new DataView(padded.buffer, chunkStart, 128);
|
|
140
|
+
// Copy chunk into first 16 words W[0..15]
|
|
141
|
+
for (let i = 0; i < 16; i++) {
|
|
142
|
+
W[i] = chunkView.getBigUint64(i * 8, false);
|
|
143
|
+
}
|
|
144
|
+
// Extend the first 16 words into the remaining 64 words W[16..79]
|
|
145
|
+
for (let i = 16; i < 80; i++) {
|
|
146
|
+
const s0 = rotr64(W[i - 15], 1) ^ rotr64(W[i - 15], 8) ^ (W[i - 15] >> 7n);
|
|
147
|
+
const s1 = rotr64(W[i - 2], 19) ^ rotr64(W[i - 2], 61) ^ (W[i - 2] >> 6n);
|
|
148
|
+
W[i] = (W[i - 16] + s0 + W[i - 7] + s1) & 0xffffffffffffffffn;
|
|
149
|
+
}
|
|
150
|
+
// Initialize working variables
|
|
151
|
+
let a = H[0], b = H[1], c = H[2], d = H[3];
|
|
152
|
+
let e = H[4], f = H[5], g = H[6], h = H[7];
|
|
153
|
+
// Main loop
|
|
154
|
+
for (let i = 0; i < 80; i++) {
|
|
155
|
+
const S1 = rotr64(e, 14) ^ rotr64(e, 18) ^ rotr64(e, 41);
|
|
156
|
+
const ch = (e & f) ^ (~e & g);
|
|
157
|
+
const temp1 = (h + S1 + ch + K[i] + W[i]) & 0xffffffffffffffffn;
|
|
158
|
+
const S0 = rotr64(a, 28) ^ rotr64(a, 34) ^ rotr64(a, 39);
|
|
159
|
+
const maj = (a & b) ^ (a & c) ^ (b & c);
|
|
160
|
+
const temp2 = (S0 + maj) & 0xffffffffffffffffn;
|
|
161
|
+
h = g;
|
|
162
|
+
g = f;
|
|
163
|
+
f = e;
|
|
164
|
+
e = (d + temp1) & 0xffffffffffffffffn;
|
|
165
|
+
d = c;
|
|
166
|
+
c = b;
|
|
167
|
+
b = a;
|
|
168
|
+
a = (temp1 + temp2) & 0xffffffffffffffffn;
|
|
169
|
+
}
|
|
170
|
+
// Add compressed chunk to current hash value
|
|
171
|
+
H[0] = (H[0] + a) & 0xffffffffffffffffn;
|
|
172
|
+
H[1] = (H[1] + b) & 0xffffffffffffffffn;
|
|
173
|
+
H[2] = (H[2] + c) & 0xffffffffffffffffn;
|
|
174
|
+
H[3] = (H[3] + d) & 0xffffffffffffffffn;
|
|
175
|
+
H[4] = (H[4] + e) & 0xffffffffffffffffn;
|
|
176
|
+
H[5] = (H[5] + f) & 0xffffffffffffffffn;
|
|
177
|
+
H[6] = (H[6] + g) & 0xffffffffffffffffn;
|
|
178
|
+
H[7] = (H[7] + h) & 0xffffffffffffffffn;
|
|
179
|
+
}
|
|
180
|
+
// Produce the final hash value (big-endian)
|
|
181
|
+
const result = new Uint8Array(64);
|
|
182
|
+
const resultView = new DataView(result.buffer);
|
|
183
|
+
for (let i = 0; i < 8; i++) {
|
|
184
|
+
resultView.setBigUint64(i * 8, H[i], false);
|
|
185
|
+
}
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
// ============================================================================
|
|
189
|
+
// Encryptor implementation
|
|
190
|
+
// ============================================================================
|
|
191
|
+
const Encryptor = {
|
|
192
|
+
/**
|
|
193
|
+
* Calculate a hash of the concatenated buffers with the given algorithm.
|
|
194
|
+
* @param algorithm - The hash algorithm.
|
|
195
|
+
* @returns The hash as Uint8Array
|
|
196
|
+
*/
|
|
197
|
+
hash(algorithm, ...buffers) {
|
|
198
|
+
const data = (0, browser_buffer_1.concatUint8Arrays)(...buffers);
|
|
199
|
+
const algo = algorithm.toLowerCase().replace("-", "");
|
|
200
|
+
if (algo === "sha512") {
|
|
201
|
+
return sha512(data);
|
|
202
|
+
}
|
|
203
|
+
throw new Error(`Hash algorithm '${algorithm}' not supported in browser sync mode!`);
|
|
204
|
+
},
|
|
205
|
+
/**
|
|
206
|
+
* Convert a password into an encryption key
|
|
207
|
+
* @param password - The password
|
|
208
|
+
* @param hashAlgorithm - The hash algorithm
|
|
209
|
+
* @param saltValue - The salt value (base64 encoded)
|
|
210
|
+
* @param spinCount - The spin count
|
|
211
|
+
* @returns The encryption key (base64 encoded)
|
|
212
|
+
*/
|
|
213
|
+
convertPasswordToHash(password, hashAlgorithm, saltValue, spinCount) {
|
|
214
|
+
const algo = hashAlgorithm.toLowerCase().replace("-", "");
|
|
215
|
+
if (algo !== "sha512") {
|
|
216
|
+
throw new Error(`Hash algorithm '${hashAlgorithm}' not supported in browser!`);
|
|
217
|
+
}
|
|
218
|
+
// Password must be in unicode buffer (UTF-16LE)
|
|
219
|
+
const passwordBuffer = (0, browser_buffer_1.stringToUtf16Le)(password);
|
|
220
|
+
// Generate the initial hash
|
|
221
|
+
const saltBuffer = (0, browser_buffer_1.base64ToUint8Array)(saltValue);
|
|
222
|
+
let key = this.hash(hashAlgorithm, saltBuffer, passwordBuffer);
|
|
223
|
+
// Now regenerate until spin count
|
|
224
|
+
for (let i = 0; i < spinCount; i++) {
|
|
225
|
+
const iterator = uint32ToLe(i);
|
|
226
|
+
key = this.hash(hashAlgorithm, key, iterator);
|
|
227
|
+
}
|
|
228
|
+
return (0, browser_buffer_1.uint8ArrayToBase64)(key);
|
|
229
|
+
},
|
|
230
|
+
/**
|
|
231
|
+
* Generates cryptographically strong pseudo-random data.
|
|
232
|
+
* @param size The size argument is a number indicating the number of bytes to generate.
|
|
233
|
+
*/
|
|
234
|
+
randomBytes(size) {
|
|
235
|
+
const bytes = new browser_buffer_1.BrowserBuffer(size);
|
|
236
|
+
crypto.getRandomValues(bytes);
|
|
237
|
+
return bytes;
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
exports.Encryptor = Encryptor;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseSax = parseSax;
|
|
4
4
|
const saxes_1 = require("saxes");
|
|
5
|
-
const
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
6
|
async function* parseSax(iterable) {
|
|
7
7
|
const saxesParser = new saxes_1.SaxesParser({
|
|
8
8
|
xmlns: false,
|
|
@@ -17,7 +17,7 @@ async function* parseSax(iterable) {
|
|
|
17
17
|
saxesParser.on("text", (value) => events.push({ eventType: "text", value }));
|
|
18
18
|
saxesParser.on("closetag", (value) => events.push({ eventType: "closetag", value }));
|
|
19
19
|
for await (const chunk of iterable) {
|
|
20
|
-
saxesParser.write((0,
|
|
20
|
+
saxesParser.write((0, utils_1.bufferToString)(chunk));
|
|
21
21
|
// saxesParser.write and saxesParser.on() are synchronous,
|
|
22
22
|
// so we can only reach the below line once all events have been emitted
|
|
23
23
|
if (error) {
|