@cj-tech-master/excelts 4.2.0 → 4.2.1-canary.20260112134913.a3cecdd
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/THIRD_PARTY_NOTICES.md +0 -31
- package/dist/browser/index.browser.d.ts +1 -0
- package/dist/browser/index.browser.js +12 -0
- package/dist/{types/modules/archive → browser/modules/archive/compression}/compress.base.d.ts +1 -0
- package/dist/browser/modules/archive/{compress.base.js → compression/compress.base.js} +2 -1
- package/dist/{types/modules/archive → browser/modules/archive/compression}/compress.browser.d.ts +10 -8
- package/dist/{esm/modules/archive → browser/modules/archive/compression}/compress.browser.js +18 -19
- package/dist/browser/modules/archive/{compress.d.ts → compression/compress.d.ts} +2 -2
- package/dist/browser/modules/archive/{compress.js → compression/compress.js} +1 -1
- package/dist/browser/modules/archive/{crc32.browser.d.ts → compression/crc32.browser.d.ts} +1 -1
- package/dist/browser/modules/archive/{crc32.d.ts → compression/crc32.d.ts} +1 -1
- package/dist/browser/modules/archive/{crc32.js → compression/crc32.js} +1 -1
- package/dist/browser/modules/archive/{deflate-fallback.js → compression/deflate-fallback.js} +1 -1
- package/dist/browser/modules/archive/{streaming-compress.browser.d.ts → compression/streaming-compress.browser.d.ts} +2 -2
- package/dist/browser/modules/archive/{streaming-compress.browser.js → compression/streaming-compress.browser.js} +3 -3
- package/dist/browser/modules/archive/{streaming-compress.d.ts → compression/streaming-compress.d.ts} +2 -2
- package/dist/browser/modules/archive/{streaming-compress.js → compression/streaming-compress.js} +2 -2
- package/dist/browser/modules/archive/defaults.d.ts +1 -0
- package/dist/browser/modules/archive/defaults.js +6 -3
- package/dist/browser/modules/archive/index.base.d.ts +4 -4
- package/dist/browser/modules/archive/index.base.js +3 -6
- package/dist/browser/modules/archive/index.browser.d.ts +3 -4
- package/dist/browser/modules/archive/index.browser.js +3 -7
- package/dist/browser/modules/archive/index.d.ts +3 -4
- package/dist/browser/modules/archive/index.js +3 -5
- package/dist/browser/modules/archive/internal/byte-queue.d.ts +33 -0
- package/dist/browser/modules/archive/internal/byte-queue.js +407 -0
- package/dist/browser/modules/archive/io/archive-sink.d.ts +8 -0
- package/dist/browser/modules/archive/io/archive-sink.js +45 -0
- package/dist/browser/modules/archive/io/archive-source.d.ts +6 -0
- package/dist/browser/modules/archive/io/archive-source.js +100 -0
- package/dist/browser/modules/archive/{extract.d.ts → unzip/extract.d.ts} +2 -2
- package/dist/browser/modules/archive/unzip/index.d.ts +40 -0
- package/dist/browser/modules/archive/unzip/index.js +164 -0
- package/dist/browser/modules/archive/{parse.base.d.ts → unzip/stream.base.d.ts} +58 -3
- package/dist/browser/modules/archive/unzip/stream.base.js +1022 -0
- package/dist/browser/modules/archive/{parse.browser.d.ts → unzip/stream.browser.d.ts} +1 -1
- package/dist/browser/modules/archive/{parse.browser.js → unzip/stream.browser.js} +376 -110
- package/dist/browser/modules/archive/{parse.d.ts → unzip/stream.d.ts} +2 -2
- package/dist/{esm/modules/archive/parse.js → browser/modules/archive/unzip/stream.js} +7 -6
- package/dist/{types/modules/archive → browser/modules/archive/unzip}/zip-parser.d.ts +1 -1
- package/dist/{esm/modules/archive → browser/modules/archive/unzip}/zip-parser.js +38 -24
- package/dist/browser/modules/archive/utils/async-queue.d.ts +7 -0
- package/dist/browser/modules/archive/utils/async-queue.js +103 -0
- package/dist/browser/modules/archive/utils/bytes.js +16 -16
- package/dist/browser/modules/archive/utils/compressibility.d.ts +10 -0
- package/dist/browser/modules/archive/utils/compressibility.js +57 -0
- package/dist/browser/modules/archive/utils/parse-buffer.js +21 -23
- package/dist/browser/modules/archive/utils/pattern-scanner.d.ts +21 -0
- package/dist/browser/modules/archive/utils/pattern-scanner.js +27 -0
- package/dist/browser/modules/archive/utils/timestamps.js +62 -1
- package/dist/browser/modules/archive/utils/zip-extra-fields.d.ts +1 -1
- package/dist/browser/modules/archive/utils/zip-extra-fields.js +26 -14
- package/dist/browser/modules/archive/zip/index.d.ts +42 -0
- package/dist/browser/modules/archive/zip/index.js +157 -0
- package/dist/browser/modules/archive/{streaming-zip.d.ts → zip/stream.d.ts} +28 -5
- package/dist/browser/modules/archive/{streaming-zip.js → zip/stream.js} +192 -48
- package/dist/browser/modules/archive/zip/zip-bytes.d.ts +73 -0
- package/dist/browser/modules/archive/zip/zip-bytes.js +239 -0
- package/dist/{esm/modules/archive → browser/modules/archive/zip}/zip-entry-metadata.js +3 -3
- package/dist/browser/modules/archive/{zip-records.d.ts → zip-spec/zip-records.d.ts} +20 -0
- package/dist/browser/modules/archive/zip-spec/zip-records.js +126 -0
- package/dist/browser/modules/excel/form-control.d.ts +2 -0
- package/dist/browser/modules/excel/form-control.js +54 -16
- package/dist/browser/modules/excel/stream/workbook-reader.browser.js +1 -1
- package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +1 -1
- package/dist/browser/modules/excel/stream/workbook-writer.browser.js +1 -1
- package/dist/browser/modules/excel/utils/ooxml-validator.d.ts +48 -0
- package/dist/browser/modules/excel/utils/ooxml-validator.js +469 -0
- package/dist/browser/modules/excel/worksheet.js +5 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/sp-xform.d.ts +18 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/sp-xform.js +112 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +6 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
- package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +117 -5
- package/dist/browser/modules/excel/xlsx/xlsx.browser.js +3 -6
- package/dist/browser/modules/excel/xlsx/xlsx.js +1 -1
- package/dist/browser/modules/stream/base-transform.d.ts +3 -0
- package/dist/browser/modules/stream/base-transform.js +34 -20
- package/dist/browser/modules/stream/buffered-stream.d.ts +2 -12
- package/dist/browser/modules/stream/chunked-builder.js +4 -4
- package/dist/browser/modules/stream/index.browser.d.ts +13 -19
- package/dist/browser/modules/stream/index.browser.js +10 -22
- package/dist/browser/modules/stream/index.d.ts +18 -41
- package/dist/browser/modules/stream/index.js +15 -44
- package/dist/browser/modules/stream/internal/event-utils.d.ts +17 -0
- package/dist/browser/modules/stream/internal/event-utils.js +40 -0
- package/dist/browser/modules/stream/internal/type-guards.d.ts +9 -0
- package/dist/browser/modules/stream/internal/type-guards.js +24 -0
- package/dist/browser/modules/stream/pull-stream.d.ts +5 -6
- package/dist/browser/modules/stream/pull-stream.js +107 -43
- package/dist/browser/modules/stream/shared.d.ts +1 -1
- package/dist/browser/modules/stream/shared.js +7 -4
- package/dist/browser/modules/stream/streams.browser.d.ts +32 -42
- package/dist/browser/modules/stream/streams.browser.js +941 -823
- package/dist/browser/modules/stream/streams.d.ts +4 -20
- package/dist/browser/modules/stream/streams.js +146 -95
- package/dist/browser/modules/stream/utils.js +5 -38
- package/dist/cjs/modules/archive/{compress.base.js → compression/compress.base.js} +2 -1
- package/dist/cjs/modules/archive/{compress.browser.js → compression/compress.browser.js} +18 -19
- package/dist/cjs/modules/archive/{compress.js → compression/compress.js} +1 -1
- package/dist/cjs/modules/archive/{crc32.js → compression/crc32.js} +1 -1
- package/dist/cjs/modules/archive/{deflate-fallback.js → compression/deflate-fallback.js} +1 -1
- package/dist/cjs/modules/archive/{streaming-compress.browser.js → compression/streaming-compress.browser.js} +3 -3
- package/dist/cjs/modules/archive/{streaming-compress.js → compression/streaming-compress.js} +2 -2
- package/dist/cjs/modules/archive/defaults.js +7 -4
- package/dist/cjs/modules/archive/index.base.js +9 -19
- package/dist/cjs/modules/archive/index.browser.js +4 -10
- package/dist/cjs/modules/archive/index.js +4 -8
- package/dist/cjs/modules/archive/internal/byte-queue.js +411 -0
- package/dist/cjs/modules/archive/io/archive-sink.js +49 -0
- package/dist/cjs/modules/archive/io/archive-source.js +105 -0
- package/dist/cjs/modules/archive/unzip/index.js +170 -0
- package/dist/cjs/modules/archive/unzip/stream.base.js +1044 -0
- package/dist/cjs/modules/archive/{parse.browser.js → unzip/stream.browser.js} +377 -111
- package/dist/cjs/modules/archive/{parse.js → unzip/stream.js} +9 -8
- package/dist/cjs/modules/archive/{zip-parser.js → unzip/zip-parser.js} +47 -33
- package/dist/cjs/modules/archive/utils/async-queue.js +106 -0
- package/dist/cjs/modules/archive/utils/bytes.js +16 -16
- package/dist/cjs/modules/archive/utils/compressibility.js +60 -0
- package/dist/cjs/modules/archive/utils/parse-buffer.js +21 -23
- package/dist/cjs/modules/archive/utils/pattern-scanner.js +31 -0
- package/dist/cjs/modules/archive/utils/timestamps.js +64 -3
- package/dist/cjs/modules/archive/utils/zip-extra-fields.js +26 -14
- package/dist/cjs/modules/archive/zip/index.js +162 -0
- package/dist/cjs/modules/archive/{streaming-zip.js → zip/stream.js} +194 -50
- package/dist/cjs/modules/archive/zip/zip-bytes.js +242 -0
- package/dist/cjs/modules/archive/{zip-entry-metadata.js → zip/zip-entry-metadata.js} +5 -5
- package/dist/cjs/modules/archive/zip-spec/zip-records.js +136 -0
- package/dist/cjs/modules/excel/form-control.js +54 -16
- package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +2 -2
- package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +4 -4
- package/dist/cjs/modules/excel/utils/ooxml-validator.js +475 -0
- package/dist/cjs/modules/excel/worksheet.js +5 -2
- package/dist/cjs/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/sp-xform.js +115 -0
- package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
- package/dist/cjs/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
- package/dist/cjs/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
- package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +117 -5
- package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +6 -9
- package/dist/cjs/modules/excel/xlsx/xlsx.js +2 -2
- package/dist/cjs/modules/stream/base-transform.js +34 -20
- package/dist/cjs/modules/stream/chunked-builder.js +4 -4
- package/dist/cjs/modules/stream/index.browser.js +10 -17
- package/dist/cjs/modules/stream/index.js +15 -39
- package/dist/cjs/modules/stream/internal/event-utils.js +43 -0
- package/dist/cjs/modules/stream/internal/type-guards.js +30 -0
- package/dist/cjs/modules/stream/pull-stream.js +107 -43
- package/dist/cjs/modules/stream/shared.js +7 -4
- package/dist/cjs/modules/stream/streams.browser.js +947 -834
- package/dist/cjs/modules/stream/streams.js +156 -107
- package/dist/cjs/modules/stream/utils.js +3 -36
- package/dist/esm/index.browser.js +12 -0
- package/dist/esm/modules/archive/{compress.base.js → compression/compress.base.js} +2 -1
- package/dist/{browser/modules/archive → esm/modules/archive/compression}/compress.browser.js +18 -19
- package/dist/esm/modules/archive/{compress.js → compression/compress.js} +1 -1
- package/dist/esm/modules/archive/{crc32.js → compression/crc32.js} +1 -1
- package/dist/esm/modules/archive/{deflate-fallback.js → compression/deflate-fallback.js} +1 -1
- package/dist/esm/modules/archive/{streaming-compress.browser.js → compression/streaming-compress.browser.js} +3 -3
- package/dist/esm/modules/archive/{streaming-compress.js → compression/streaming-compress.js} +2 -2
- package/dist/esm/modules/archive/defaults.js +6 -3
- package/dist/esm/modules/archive/index.base.js +3 -6
- package/dist/esm/modules/archive/index.browser.js +3 -7
- package/dist/esm/modules/archive/index.js +3 -5
- package/dist/esm/modules/archive/internal/byte-queue.js +407 -0
- package/dist/esm/modules/archive/io/archive-sink.js +45 -0
- package/dist/esm/modules/archive/io/archive-source.js +100 -0
- package/dist/esm/modules/archive/unzip/index.js +164 -0
- package/dist/esm/modules/archive/unzip/stream.base.js +1022 -0
- package/dist/esm/modules/archive/{parse.browser.js → unzip/stream.browser.js} +376 -110
- package/dist/{browser/modules/archive/parse.js → esm/modules/archive/unzip/stream.js} +7 -6
- package/dist/{browser/modules/archive → esm/modules/archive/unzip}/zip-parser.js +38 -24
- package/dist/esm/modules/archive/utils/async-queue.js +103 -0
- package/dist/esm/modules/archive/utils/bytes.js +16 -16
- package/dist/esm/modules/archive/utils/compressibility.js +57 -0
- package/dist/esm/modules/archive/utils/parse-buffer.js +21 -23
- package/dist/esm/modules/archive/utils/pattern-scanner.js +27 -0
- package/dist/esm/modules/archive/utils/timestamps.js +62 -1
- package/dist/esm/modules/archive/utils/zip-extra-fields.js +26 -14
- package/dist/esm/modules/archive/zip/index.js +157 -0
- package/dist/esm/modules/archive/{streaming-zip.js → zip/stream.js} +192 -48
- package/dist/esm/modules/archive/zip/zip-bytes.js +239 -0
- package/dist/{browser/modules/archive → esm/modules/archive/zip}/zip-entry-metadata.js +3 -3
- package/dist/esm/modules/archive/zip-spec/zip-records.js +126 -0
- package/dist/esm/modules/excel/form-control.js +54 -16
- package/dist/esm/modules/excel/stream/workbook-reader.browser.js +1 -1
- package/dist/esm/modules/excel/stream/workbook-writer.browser.js +1 -1
- package/dist/esm/modules/excel/utils/ooxml-validator.js +469 -0
- package/dist/esm/modules/excel/worksheet.js +5 -2
- package/dist/esm/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/sp-xform.js +112 -0
- package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
- package/dist/esm/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
- package/dist/esm/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
- package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +117 -5
- package/dist/esm/modules/excel/xlsx/xlsx.browser.js +3 -6
- package/dist/esm/modules/excel/xlsx/xlsx.js +1 -1
- package/dist/esm/modules/stream/base-transform.js +34 -20
- package/dist/esm/modules/stream/chunked-builder.js +4 -4
- package/dist/esm/modules/stream/index.browser.js +10 -22
- package/dist/esm/modules/stream/index.js +15 -44
- package/dist/esm/modules/stream/internal/event-utils.js +40 -0
- package/dist/esm/modules/stream/internal/type-guards.js +24 -0
- package/dist/esm/modules/stream/pull-stream.js +107 -43
- package/dist/esm/modules/stream/shared.js +7 -4
- package/dist/esm/modules/stream/streams.browser.js +941 -823
- package/dist/esm/modules/stream/streams.js +146 -95
- package/dist/esm/modules/stream/utils.js +5 -38
- package/dist/iife/THIRD_PARTY_NOTICES.md +81 -0
- package/dist/iife/excelts.iife.js +4979 -2800
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +103 -31
- package/dist/types/index.browser.d.ts +1 -0
- package/dist/{browser/modules/archive → types/modules/archive/compression}/compress.base.d.ts +1 -0
- package/dist/{browser/modules/archive → types/modules/archive/compression}/compress.browser.d.ts +10 -8
- package/dist/types/modules/archive/{streaming-compress.browser.d.ts → compression/streaming-compress.browser.d.ts} +1 -1
- package/dist/types/modules/archive/defaults.d.ts +1 -0
- package/dist/types/modules/archive/index.base.d.ts +4 -4
- package/dist/types/modules/archive/index.browser.d.ts +3 -4
- package/dist/types/modules/archive/index.d.ts +3 -4
- package/dist/types/modules/archive/internal/byte-queue.d.ts +33 -0
- package/dist/types/modules/archive/io/archive-sink.d.ts +8 -0
- package/dist/types/modules/archive/io/archive-source.d.ts +6 -0
- package/dist/types/modules/archive/unzip/index.d.ts +40 -0
- package/dist/types/modules/archive/{parse.base.d.ts → unzip/stream.base.d.ts} +60 -5
- package/dist/types/modules/archive/{parse.browser.d.ts → unzip/stream.browser.d.ts} +2 -2
- package/dist/types/modules/archive/{parse.d.ts → unzip/stream.d.ts} +3 -3
- package/dist/{browser/modules/archive → types/modules/archive/unzip}/zip-parser.d.ts +1 -1
- package/dist/types/modules/archive/utils/async-queue.d.ts +7 -0
- package/dist/types/modules/archive/utils/compressibility.d.ts +10 -0
- package/dist/types/modules/archive/utils/pattern-scanner.d.ts +21 -0
- package/dist/types/modules/archive/utils/zip-extra-fields.d.ts +1 -1
- package/dist/types/modules/archive/zip/index.d.ts +42 -0
- package/dist/types/modules/archive/{streaming-zip.d.ts → zip/stream.d.ts} +29 -6
- package/dist/types/modules/archive/zip/zip-bytes.d.ts +73 -0
- package/dist/types/modules/archive/{zip-entry-metadata.d.ts → zip/zip-entry-metadata.d.ts} +1 -1
- package/dist/types/modules/archive/{zip-records.d.ts → zip-spec/zip-records.d.ts} +20 -0
- package/dist/types/modules/excel/form-control.d.ts +2 -0
- package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +1 -1
- package/dist/types/modules/excel/utils/ooxml-validator.d.ts +48 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/sp-xform.d.ts +18 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +6 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -0
- package/dist/types/modules/stream/base-transform.d.ts +3 -0
- package/dist/types/modules/stream/buffered-stream.d.ts +2 -12
- package/dist/types/modules/stream/index.browser.d.ts +13 -19
- package/dist/types/modules/stream/index.d.ts +18 -41
- package/dist/types/modules/stream/internal/event-utils.d.ts +17 -0
- package/dist/types/modules/stream/internal/type-guards.d.ts +9 -0
- package/dist/types/modules/stream/pull-stream.d.ts +5 -6
- package/dist/types/modules/stream/shared.d.ts +1 -1
- package/dist/types/modules/stream/streams.browser.d.ts +32 -42
- package/dist/types/modules/stream/streams.d.ts +4 -20
- package/package.json +19 -15
- package/dist/browser/modules/archive/byte-queue.d.ts +0 -18
- package/dist/browser/modules/archive/byte-queue.js +0 -125
- package/dist/browser/modules/archive/parse.base.js +0 -610
- package/dist/browser/modules/archive/utils/zip-extra.d.ts +0 -18
- package/dist/browser/modules/archive/utils/zip-extra.js +0 -68
- package/dist/browser/modules/archive/zip-builder.d.ts +0 -117
- package/dist/browser/modules/archive/zip-builder.js +0 -292
- package/dist/browser/modules/archive/zip-constants.d.ts +0 -18
- package/dist/browser/modules/archive/zip-constants.js +0 -23
- package/dist/browser/modules/archive/zip-records.js +0 -84
- package/dist/cjs/modules/archive/byte-queue.js +0 -129
- package/dist/cjs/modules/archive/parse.base.js +0 -632
- package/dist/cjs/modules/archive/utils/zip-extra.js +0 -74
- package/dist/cjs/modules/archive/zip-builder.js +0 -297
- package/dist/cjs/modules/archive/zip-constants.js +0 -26
- package/dist/cjs/modules/archive/zip-records.js +0 -90
- package/dist/esm/modules/archive/byte-queue.js +0 -125
- package/dist/esm/modules/archive/parse.base.js +0 -610
- package/dist/esm/modules/archive/utils/zip-extra.js +0 -68
- package/dist/esm/modules/archive/zip-builder.js +0 -292
- package/dist/esm/modules/archive/zip-constants.js +0 -23
- package/dist/esm/modules/archive/zip-records.js +0 -84
- package/dist/types/modules/archive/byte-queue.d.ts +0 -18
- package/dist/types/modules/archive/utils/zip-extra.d.ts +0 -18
- package/dist/types/modules/archive/zip-builder.d.ts +0 -117
- package/dist/types/modules/archive/zip-constants.d.ts +0 -18
- /package/dist/browser/modules/archive/{crc32.base.d.ts → compression/crc32.base.d.ts} +0 -0
- /package/dist/browser/modules/archive/{crc32.base.js → compression/crc32.base.js} +0 -0
- /package/dist/browser/modules/archive/{crc32.browser.js → compression/crc32.browser.js} +0 -0
- /package/dist/browser/modules/archive/{deflate-fallback.d.ts → compression/deflate-fallback.d.ts} +0 -0
- /package/dist/browser/modules/archive/{streaming-compress.base.d.ts → compression/streaming-compress.base.d.ts} +0 -0
- /package/dist/browser/modules/archive/{streaming-compress.base.js → compression/streaming-compress.base.js} +0 -0
- /package/dist/browser/modules/archive/{extract.js → unzip/extract.js} +0 -0
- /package/dist/browser/modules/archive/{zip-entry-metadata.d.ts → zip/zip-entry-metadata.d.ts} +0 -0
- /package/dist/browser/modules/archive/{zip-entry-info.d.ts → zip-spec/zip-entry-info.d.ts} +0 -0
- /package/dist/browser/modules/archive/{zip-entry-info.js → zip-spec/zip-entry-info.js} +0 -0
- /package/dist/cjs/modules/archive/{crc32.base.js → compression/crc32.base.js} +0 -0
- /package/dist/cjs/modules/archive/{crc32.browser.js → compression/crc32.browser.js} +0 -0
- /package/dist/cjs/modules/archive/{streaming-compress.base.js → compression/streaming-compress.base.js} +0 -0
- /package/dist/cjs/modules/archive/{extract.js → unzip/extract.js} +0 -0
- /package/dist/cjs/modules/archive/{zip-entry-info.js → zip-spec/zip-entry-info.js} +0 -0
- /package/dist/esm/modules/archive/{crc32.base.js → compression/crc32.base.js} +0 -0
- /package/dist/esm/modules/archive/{crc32.browser.js → compression/crc32.browser.js} +0 -0
- /package/dist/esm/modules/archive/{streaming-compress.base.js → compression/streaming-compress.base.js} +0 -0
- /package/dist/esm/modules/archive/{extract.js → unzip/extract.js} +0 -0
- /package/dist/esm/modules/archive/{zip-entry-info.js → zip-spec/zip-entry-info.js} +0 -0
- /package/dist/{LICENSE → iife/LICENSE} +0 -0
- /package/dist/types/modules/archive/{compress.d.ts → compression/compress.d.ts} +0 -0
- /package/dist/types/modules/archive/{crc32.base.d.ts → compression/crc32.base.d.ts} +0 -0
- /package/dist/types/modules/archive/{crc32.browser.d.ts → compression/crc32.browser.d.ts} +0 -0
- /package/dist/types/modules/archive/{crc32.d.ts → compression/crc32.d.ts} +0 -0
- /package/dist/types/modules/archive/{deflate-fallback.d.ts → compression/deflate-fallback.d.ts} +0 -0
- /package/dist/types/modules/archive/{streaming-compress.base.d.ts → compression/streaming-compress.base.d.ts} +0 -0
- /package/dist/types/modules/archive/{streaming-compress.d.ts → compression/streaming-compress.d.ts} +0 -0
- /package/dist/types/modules/archive/{extract.d.ts → unzip/extract.d.ts} +0 -0
- /package/dist/types/modules/archive/{zip-entry-info.d.ts → zip-spec/zip-entry-info.d.ts} +0 -0
|
@@ -5,6 +5,7 @@ const base_cell_anchor_xform_1 = require("./base-cell-anchor-xform.js");
|
|
|
5
5
|
const static_xform_1 = require("../static-xform.js");
|
|
6
6
|
const cell_position_xform_1 = require("./cell-position-xform.js");
|
|
7
7
|
const pic_xform_1 = require("./pic-xform.js");
|
|
8
|
+
const sp_xform_1 = require("./sp-xform.js");
|
|
8
9
|
class TwoCellAnchorXform extends base_cell_anchor_xform_1.BaseCellAnchorXform {
|
|
9
10
|
constructor() {
|
|
10
11
|
super();
|
|
@@ -12,6 +13,7 @@ class TwoCellAnchorXform extends base_cell_anchor_xform_1.BaseCellAnchorXform {
|
|
|
12
13
|
"xdr:from": new cell_position_xform_1.CellPositionXform({ tag: "xdr:from" }),
|
|
13
14
|
"xdr:to": new cell_position_xform_1.CellPositionXform({ tag: "xdr:to" }),
|
|
14
15
|
"xdr:pic": new pic_xform_1.PicXform(),
|
|
16
|
+
"xdr:sp": new sp_xform_1.SpXform(),
|
|
15
17
|
"xdr:clientData": new static_xform_1.StaticXform({ tag: "xdr:clientData" })
|
|
16
18
|
};
|
|
17
19
|
}
|
|
@@ -19,15 +21,41 @@ class TwoCellAnchorXform extends base_cell_anchor_xform_1.BaseCellAnchorXform {
|
|
|
19
21
|
return "xdr:twoCellAnchor";
|
|
20
22
|
}
|
|
21
23
|
prepare(model, options) {
|
|
22
|
-
|
|
24
|
+
if (model.picture) {
|
|
25
|
+
this.map["xdr:pic"].prepare(model.picture, options);
|
|
26
|
+
}
|
|
23
27
|
}
|
|
24
28
|
render(xmlStream, model) {
|
|
29
|
+
const wrapAlternateContent = !!model.alternateContent;
|
|
30
|
+
if (wrapAlternateContent) {
|
|
31
|
+
xmlStream.openNode("mc:AlternateContent", {
|
|
32
|
+
"xmlns:mc": "http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
33
|
+
});
|
|
34
|
+
xmlStream.openNode("mc:Choice", {
|
|
35
|
+
Requires: model.alternateContent?.requires,
|
|
36
|
+
...(model.alternateContent?.requires === "a14"
|
|
37
|
+
? {
|
|
38
|
+
"xmlns:a14": "http://schemas.microsoft.com/office/drawing/2010/main"
|
|
39
|
+
}
|
|
40
|
+
: {})
|
|
41
|
+
});
|
|
42
|
+
}
|
|
25
43
|
xmlStream.openNode(this.tag, { editAs: model.range.editAs || "oneCell" });
|
|
26
44
|
this.map["xdr:from"].render(xmlStream, model.range.tl);
|
|
27
45
|
this.map["xdr:to"].render(xmlStream, model.range.br);
|
|
28
|
-
|
|
46
|
+
if (model.picture) {
|
|
47
|
+
this.map["xdr:pic"].render(xmlStream, model.picture);
|
|
48
|
+
}
|
|
49
|
+
else if (model.shape) {
|
|
50
|
+
this.map["xdr:sp"].render(xmlStream, model.shape);
|
|
51
|
+
}
|
|
29
52
|
this.map["xdr:clientData"].render(xmlStream, {});
|
|
30
53
|
xmlStream.closeNode();
|
|
54
|
+
if (wrapAlternateContent) {
|
|
55
|
+
xmlStream.closeNode(); // mc:Choice
|
|
56
|
+
xmlStream.leafNode("mc:Fallback");
|
|
57
|
+
xmlStream.closeNode(); // mc:AlternateContent
|
|
58
|
+
}
|
|
31
59
|
}
|
|
32
60
|
parseClose(name) {
|
|
33
61
|
if (this.parser) {
|
|
@@ -110,14 +110,22 @@ class VmlDrawingXform extends base_xform_1.BaseXform {
|
|
|
110
110
|
}
|
|
111
111
|
// ClientData - the core of the checkbox control
|
|
112
112
|
xmlStream.openNode("x:ClientData", { ObjectType: "Checkbox" });
|
|
113
|
+
// Match Excel's VML patterns (similar to Note ClientData): include positioning and cell address.
|
|
114
|
+
// Omitting these can cause Excel to repair the sheet by dropping all legacy controls.
|
|
115
|
+
xmlStream.leafNode("x:MoveWithCells");
|
|
116
|
+
xmlStream.leafNode("x:SizeWithCells");
|
|
113
117
|
// Anchor position
|
|
114
118
|
xmlStream.openNode("x:Anchor");
|
|
115
119
|
xmlStream.writeText(form_control_1.FormCheckbox.getVmlAnchor(control));
|
|
116
120
|
xmlStream.closeNode();
|
|
121
|
+
// Protection / text locking
|
|
122
|
+
xmlStream.leafNode("x:Locked", undefined, "False");
|
|
123
|
+
xmlStream.leafNode("x:LockText", undefined, "True");
|
|
117
124
|
// Print settings
|
|
118
125
|
xmlStream.leafNode("x:PrintObject", undefined, control.print ? "True" : "False");
|
|
119
126
|
xmlStream.leafNode("x:AutoFill", undefined, "False");
|
|
120
127
|
xmlStream.leafNode("x:AutoLine", undefined, "False");
|
|
128
|
+
xmlStream.leafNode("x:TextHAlign", undefined, "Left");
|
|
121
129
|
xmlStream.leafNode("x:TextVAlign", undefined, "Center");
|
|
122
130
|
// Linked cell
|
|
123
131
|
if (control.link) {
|
|
@@ -129,6 +137,9 @@ class VmlDrawingXform extends base_xform_1.BaseXform {
|
|
|
129
137
|
}
|
|
130
138
|
// Checked state (0 = unchecked, 1 = checked, 2 = mixed)
|
|
131
139
|
xmlStream.leafNode("x:Checked", undefined, String(form_control_1.FormCheckbox.getVmlCheckedValue(control)));
|
|
140
|
+
// Cell address (0-based row/column)
|
|
141
|
+
xmlStream.leafNode("x:Row", undefined, String(control.tl.row));
|
|
142
|
+
xmlStream.leafNode("x:Column", undefined, String(control.tl.col));
|
|
132
143
|
xmlStream.closeNode(); // x:ClientData
|
|
133
144
|
xmlStream.closeNode(); // v:shape
|
|
134
145
|
}
|
|
@@ -39,13 +39,27 @@ class PageSetupXform extends base_xform_1.BaseXform {
|
|
|
39
39
|
get tag() {
|
|
40
40
|
return "pageSetup";
|
|
41
41
|
}
|
|
42
|
+
_dpiToXml(value) {
|
|
43
|
+
// Excel commonly omits these attributes. 4294967295 is used as a sentinel default
|
|
44
|
+
// when parsing missing values; it should never be serialized back out.
|
|
45
|
+
if (value === undefined) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
if (!Number.isFinite(value)) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
if (value === 4294967295) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
42
56
|
render(xmlStream, model) {
|
|
43
57
|
if (model) {
|
|
44
58
|
const attributes = {
|
|
45
59
|
paperSize: model.paperSize,
|
|
46
60
|
orientation: model.orientation,
|
|
47
|
-
horizontalDpi: model.horizontalDpi,
|
|
48
|
-
verticalDpi: model.verticalDpi,
|
|
61
|
+
horizontalDpi: this._dpiToXml(model.horizontalDpi),
|
|
62
|
+
verticalDpi: this._dpiToXml(model.verticalDpi),
|
|
49
63
|
pageOrder: pageOrderToXml(model.pageOrder),
|
|
50
64
|
blackAndWhite: booleanToXml(model.blackAndWhite),
|
|
51
65
|
draft: booleanToXml(model.draft),
|
|
@@ -140,6 +140,14 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
140
140
|
options.merges = new merges_1.Merges();
|
|
141
141
|
model.hyperlinks = options.hyperlinks = [];
|
|
142
142
|
model.comments = options.comments = [];
|
|
143
|
+
// Some Excel builds are surprisingly strict when legacy form controls exist.
|
|
144
|
+
// Emitting a default sheetView (workbookViewId=0) matches typical Excel output
|
|
145
|
+
// and avoids relying on optional element handling.
|
|
146
|
+
if (model.formControls && model.formControls.length > 0) {
|
|
147
|
+
if (!model.views || model.views.length === 0) {
|
|
148
|
+
model.views = [{ workbookViewId: 0 }];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
143
151
|
options.formulae = {};
|
|
144
152
|
options.siFormulae = 0;
|
|
145
153
|
this.map.cols.prepare(model.cols, options);
|
|
@@ -281,6 +289,23 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
281
289
|
// prepare form controls (legacy checkboxes)
|
|
282
290
|
// Form controls share the VML file with comments, but need separate ctrlProp relationships
|
|
283
291
|
if (model.formControls && model.formControls.length > 0) {
|
|
292
|
+
// Ensure a DrawingML drawing part exists for form controls.
|
|
293
|
+
// Excel often repairs sheets that have legacy controls but no <drawing> part.
|
|
294
|
+
let { drawing } = model;
|
|
295
|
+
if (!drawing) {
|
|
296
|
+
drawing = model.drawing = {
|
|
297
|
+
rId: nextRid(rels),
|
|
298
|
+
name: `drawing${++options.drawingsCount}`,
|
|
299
|
+
anchors: [],
|
|
300
|
+
rels: []
|
|
301
|
+
};
|
|
302
|
+
options.drawings.push(drawing);
|
|
303
|
+
rels.push({
|
|
304
|
+
Id: drawing.rId,
|
|
305
|
+
Type: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",
|
|
306
|
+
Target: (0, ooxml_paths_1.drawingRelTargetFromWorksheet)(drawing.name)
|
|
307
|
+
});
|
|
308
|
+
}
|
|
284
309
|
// If no comments, we need to add the VML drawing relationship for form controls
|
|
285
310
|
if (model.comments.length === 0) {
|
|
286
311
|
rels.push({
|
|
@@ -289,16 +314,42 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
289
314
|
Target: (0, ooxml_paths_1.vmlDrawingRelTargetFromWorksheet)(model.id)
|
|
290
315
|
});
|
|
291
316
|
}
|
|
317
|
+
// Add hidden DrawingML shapes that bridge to the VML shape ids.
|
|
318
|
+
// This mirrors what Excel writes when it "repairs" legacy form controls.
|
|
319
|
+
const toNativePos = (p) => ({
|
|
320
|
+
nativeCol: p.col,
|
|
321
|
+
nativeColOff: p.colOff,
|
|
322
|
+
nativeRow: p.row,
|
|
323
|
+
nativeRowOff: p.rowOff
|
|
324
|
+
});
|
|
292
325
|
// Add ctrlProp relationships for each form control
|
|
293
326
|
for (const control of model.formControls) {
|
|
294
327
|
const globalCtrlPropId = options.formControlRefs.length + 1;
|
|
295
328
|
control.ctrlPropId = globalCtrlPropId;
|
|
329
|
+
const relId = nextRid(rels);
|
|
330
|
+
control.ctrlPropRelId = relId;
|
|
296
331
|
rels.push({
|
|
297
|
-
Id:
|
|
332
|
+
Id: relId,
|
|
298
333
|
Type: rel_type_1.RelType.CtrlProp,
|
|
299
334
|
Target: (0, ooxml_paths_1.ctrlPropRelTargetFromWorksheet)(globalCtrlPropId)
|
|
300
335
|
});
|
|
301
336
|
options.formControlRefs.push(globalCtrlPropId);
|
|
337
|
+
const defaultName = `Check Box ${Math.max(1, control.shapeId - 1024)}`;
|
|
338
|
+
drawing.anchors.push({
|
|
339
|
+
range: {
|
|
340
|
+
editAs: "absolute",
|
|
341
|
+
tl: toNativePos(control.tl),
|
|
342
|
+
br: toNativePos(control.br)
|
|
343
|
+
},
|
|
344
|
+
alternateContent: { requires: "a14" },
|
|
345
|
+
shape: {
|
|
346
|
+
cNvPrId: control.shapeId,
|
|
347
|
+
name: control.name || defaultName,
|
|
348
|
+
hidden: true,
|
|
349
|
+
spid: `_x0000_s${control.shapeId}`,
|
|
350
|
+
text: control.text
|
|
351
|
+
}
|
|
352
|
+
});
|
|
302
353
|
}
|
|
303
354
|
}
|
|
304
355
|
// prepare ext items
|
|
@@ -306,7 +357,14 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
306
357
|
}
|
|
307
358
|
render(xmlStream, model) {
|
|
308
359
|
xmlStream.openXml(xml_stream_1.XmlStream.StdDocAttributes);
|
|
309
|
-
|
|
360
|
+
const worksheetAttrs = { ...WorkSheetXform.WORKSHEET_ATTRIBUTES };
|
|
361
|
+
if (model.formControls && model.formControls.length > 0) {
|
|
362
|
+
worksheetAttrs["xmlns:x14"] = "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main";
|
|
363
|
+
worksheetAttrs["xmlns:xdr"] =
|
|
364
|
+
"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing";
|
|
365
|
+
worksheetAttrs["mc:Ignorable"] = `${worksheetAttrs["mc:Ignorable"]} x14`;
|
|
366
|
+
}
|
|
367
|
+
xmlStream.openNode("worksheet", worksheetAttrs);
|
|
310
368
|
const sheetFormatPropertiesModel = model.properties
|
|
311
369
|
? {
|
|
312
370
|
defaultRowHeight: model.properties.defaultRowHeight,
|
|
@@ -356,16 +414,70 @@ class WorkSheetXform extends base_xform_1.BaseXform {
|
|
|
356
414
|
this.map.colBreaks.render(xmlStream, model.colBreaks);
|
|
357
415
|
this.map.drawing.render(xmlStream, model.drawing); // Note: must be after rowBreaks/colBreaks
|
|
358
416
|
this.map.picture.render(xmlStream, model.background); // Note: must be after drawing
|
|
359
|
-
this.map.tableParts.render(xmlStream, model.tables);
|
|
360
|
-
this.map.extLst.render(xmlStream, model);
|
|
361
417
|
if (model.rels) {
|
|
362
|
-
//
|
|
418
|
+
// Add a <legacyDrawing /> node for each VML drawing relationship (comments and/or form controls).
|
|
419
|
+
// NOTE: Excel is picky about worksheet child element order; legacyDrawing must come before controls.
|
|
363
420
|
model.rels.forEach(rel => {
|
|
364
421
|
if (rel.Type === rel_type_1.RelType.VmlDrawing) {
|
|
365
422
|
xmlStream.leafNode("legacyDrawing", { "r:id": rel.Id });
|
|
366
423
|
}
|
|
367
424
|
});
|
|
368
425
|
}
|
|
426
|
+
// Controls section for legacy form controls (checkboxes, etc.)
|
|
427
|
+
// Excel expects <controls> entries that reference ctrlProp relationships.
|
|
428
|
+
if (model.formControls && model.formControls.length > 0) {
|
|
429
|
+
xmlStream.openNode("mc:AlternateContent");
|
|
430
|
+
xmlStream.openNode("mc:Choice", { Requires: "x14" });
|
|
431
|
+
xmlStream.openNode("controls");
|
|
432
|
+
for (const control of model.formControls) {
|
|
433
|
+
if (!control.ctrlPropRelId) {
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
const defaultName = `Check Box ${Math.max(1, control.shapeId - 1024)}`;
|
|
437
|
+
xmlStream.openNode("mc:AlternateContent");
|
|
438
|
+
xmlStream.openNode("mc:Choice", { Requires: "x14" });
|
|
439
|
+
xmlStream.openNode("control", {
|
|
440
|
+
shapeId: control.shapeId,
|
|
441
|
+
"r:id": control.ctrlPropRelId,
|
|
442
|
+
name: control.name || defaultName
|
|
443
|
+
});
|
|
444
|
+
xmlStream.openNode("controlPr", {
|
|
445
|
+
locked: 0,
|
|
446
|
+
defaultSize: 0,
|
|
447
|
+
print: control.print ? 1 : 0,
|
|
448
|
+
autoFill: 0,
|
|
449
|
+
autoLine: 0,
|
|
450
|
+
autoPict: 0
|
|
451
|
+
});
|
|
452
|
+
xmlStream.openNode("anchor");
|
|
453
|
+
xmlStream.openNode("from");
|
|
454
|
+
xmlStream.leafNode("xdr:col", undefined, control.tl.col);
|
|
455
|
+
xmlStream.leafNode("xdr:colOff", undefined, control.tl.colOff);
|
|
456
|
+
xmlStream.leafNode("xdr:row", undefined, control.tl.row);
|
|
457
|
+
xmlStream.leafNode("xdr:rowOff", undefined, control.tl.rowOff);
|
|
458
|
+
xmlStream.closeNode();
|
|
459
|
+
xmlStream.openNode("to");
|
|
460
|
+
xmlStream.leafNode("xdr:col", undefined, control.br.col);
|
|
461
|
+
xmlStream.leafNode("xdr:colOff", undefined, control.br.colOff);
|
|
462
|
+
xmlStream.leafNode("xdr:row", undefined, control.br.row);
|
|
463
|
+
xmlStream.leafNode("xdr:rowOff", undefined, control.br.rowOff);
|
|
464
|
+
xmlStream.closeNode(); // to
|
|
465
|
+
xmlStream.closeNode(); // anchor
|
|
466
|
+
xmlStream.closeNode(); // controlPr
|
|
467
|
+
xmlStream.closeNode(); // control
|
|
468
|
+
xmlStream.closeNode(); // mc:Choice
|
|
469
|
+
xmlStream.leafNode("mc:Fallback");
|
|
470
|
+
xmlStream.closeNode(); // mc:AlternateContent
|
|
471
|
+
}
|
|
472
|
+
xmlStream.closeNode();
|
|
473
|
+
xmlStream.closeNode();
|
|
474
|
+
xmlStream.leafNode("mc:Fallback");
|
|
475
|
+
xmlStream.closeNode();
|
|
476
|
+
}
|
|
477
|
+
// Table parts must come after <controls> in worksheet element order.
|
|
478
|
+
this.map.tableParts.render(xmlStream, model.tables);
|
|
479
|
+
// extLst should be the last element in the worksheet.
|
|
480
|
+
this.map.extLst.render(xmlStream, model);
|
|
369
481
|
xmlStream.closeNode();
|
|
370
482
|
}
|
|
371
483
|
parseOpen(node) {
|
|
@@ -33,8 +33,8 @@ const theme1_1 = require("./xml/theme1.js");
|
|
|
33
33
|
const rel_type_1 = require("./rel-type.js");
|
|
34
34
|
const stream_buf_1 = require("../utils/stream-buf.js");
|
|
35
35
|
const utils_1 = require("../../../utils/utils.js");
|
|
36
|
-
const
|
|
37
|
-
const
|
|
36
|
+
const stream_1 = require("../../archive/zip/stream.js");
|
|
37
|
+
const zip_parser_1 = require("../../archive/unzip/zip-parser.js");
|
|
38
38
|
const _stream_1 = require("../../stream/index.js");
|
|
39
39
|
const ooxml_paths_1 = require("../utils/ooxml-paths.js");
|
|
40
40
|
class StreamingZipWriterAdapter {
|
|
@@ -45,7 +45,7 @@ class StreamingZipWriterAdapter {
|
|
|
45
45
|
this.level = options?.level ?? 6;
|
|
46
46
|
this.modTime = options?.modTime;
|
|
47
47
|
this.timestamps = options?.timestamps;
|
|
48
|
-
this.zip = new
|
|
48
|
+
this.zip = new stream_1.StreamingZip((err, data, final) => {
|
|
49
49
|
if (err) {
|
|
50
50
|
this._emit("error", err);
|
|
51
51
|
return;
|
|
@@ -123,16 +123,13 @@ class StreamingZipWriterAdapter {
|
|
|
123
123
|
else {
|
|
124
124
|
buffer = data;
|
|
125
125
|
}
|
|
126
|
-
const file = new
|
|
126
|
+
const file = new stream_1.ZipDeflateFile(options.name, {
|
|
127
127
|
level: this.level,
|
|
128
128
|
modTime: this.modTime,
|
|
129
129
|
timestamps: this.timestamps
|
|
130
130
|
});
|
|
131
131
|
this.zip.add(file);
|
|
132
|
-
|
|
133
|
-
if (pushResult && typeof pushResult.catch === "function") {
|
|
134
|
-
pushResult.catch((err) => this._emit("error", err));
|
|
135
|
-
}
|
|
132
|
+
file.push(buffer, true);
|
|
136
133
|
}
|
|
137
134
|
finalize() {
|
|
138
135
|
if (this.finalized) {
|
|
@@ -291,7 +288,7 @@ class XLSX {
|
|
|
291
288
|
* Internal: Load from Uint8Array buffer
|
|
292
289
|
*/
|
|
293
290
|
async loadBuffer(buffer, options) {
|
|
294
|
-
const parser = new
|
|
291
|
+
const parser = new zip_parser_1.ZipParser(buffer);
|
|
295
292
|
const filesMap = await parser.extractAll();
|
|
296
293
|
// Convert Map to Record for loadFromFiles
|
|
297
294
|
const allFiles = {};
|
|
@@ -22,7 +22,7 @@ exports.XLSX = void 0;
|
|
|
22
22
|
const fs_1 = __importDefault(require("fs"));
|
|
23
23
|
const utils_1 = require("../../../utils/utils.js");
|
|
24
24
|
const xlsx_browser_1 = require("./xlsx.browser.js");
|
|
25
|
-
const
|
|
25
|
+
const stream_1 = require("../../archive/unzip/stream.js");
|
|
26
26
|
const _stream_1 = require("../../stream/index.js");
|
|
27
27
|
class XLSX extends xlsx_browser_1.XLSX {
|
|
28
28
|
constructor(workbook) {
|
|
@@ -78,7 +78,7 @@ class XLSX extends xlsx_browser_1.XLSX {
|
|
|
78
78
|
// Node.js specific: TRUE streaming read
|
|
79
79
|
// ==========================================================================
|
|
80
80
|
async read(stream, options) {
|
|
81
|
-
const parser = new
|
|
81
|
+
const parser = new stream_1.Parse();
|
|
82
82
|
const swallowError = () => {
|
|
83
83
|
// Prevent unhandled 'error' events from crashing the process.
|
|
84
84
|
// Errors are surfaced via rejected promises.
|
|
@@ -20,6 +20,8 @@ class BaseTransform extends event_emitter_1.EventEmitter {
|
|
|
20
20
|
this._isDestroyed = false;
|
|
21
21
|
this._isFinished = false;
|
|
22
22
|
this._errorEmitted = false;
|
|
23
|
+
this._ending = false;
|
|
24
|
+
this._flushInProgress = false;
|
|
23
25
|
this._objectMode = options.objectMode ?? false;
|
|
24
26
|
this._highWaterMark = options.highWaterMark ?? 16384;
|
|
25
27
|
}
|
|
@@ -48,26 +50,8 @@ class BaseTransform extends event_emitter_1.EventEmitter {
|
|
|
48
50
|
if (chunk !== undefined) {
|
|
49
51
|
this.write(chunk);
|
|
50
52
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (this._buffer.length === this._bufferIndex && !this._isProcessing) {
|
|
54
|
-
this.processFlush((err, data) => {
|
|
55
|
-
if (err) {
|
|
56
|
-
this._emitError(err);
|
|
57
|
-
}
|
|
58
|
-
else if (data !== undefined) {
|
|
59
|
-
this.emit("data", data);
|
|
60
|
-
}
|
|
61
|
-
this._isFinished = true;
|
|
62
|
-
this.emit("finish");
|
|
63
|
-
this.emit("end");
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
setTimeout(checkAndFlush, 0);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
checkAndFlush();
|
|
53
|
+
this._ending = true;
|
|
54
|
+
this._maybeFlush();
|
|
71
55
|
}
|
|
72
56
|
/**
|
|
73
57
|
* Destroy the stream
|
|
@@ -116,13 +100,43 @@ class BaseTransform extends event_emitter_1.EventEmitter {
|
|
|
116
100
|
}
|
|
117
101
|
// Process next chunk
|
|
118
102
|
this._processNext();
|
|
103
|
+
this._maybeFlush();
|
|
119
104
|
}
|
|
120
105
|
});
|
|
121
106
|
}
|
|
122
107
|
catch (err) {
|
|
123
108
|
this._isProcessing = false;
|
|
124
109
|
this._emitError(err);
|
|
110
|
+
this._maybeFlush();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
_maybeFlush() {
|
|
114
|
+
if (!this._ending || this._isDestroyed || this._isFinished || this._flushInProgress) {
|
|
115
|
+
return;
|
|
125
116
|
}
|
|
117
|
+
// If an error was emitted, stop flushing to avoid hanging end().
|
|
118
|
+
if (this._errorEmitted) {
|
|
119
|
+
this._isFinished = true;
|
|
120
|
+
this.emit("finish");
|
|
121
|
+
this.emit("end");
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (this._isProcessing || this._bufferIndex < this._buffer.length) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
this._flushInProgress = true;
|
|
128
|
+
this.processFlush((err, data) => {
|
|
129
|
+
this._flushInProgress = false;
|
|
130
|
+
if (err) {
|
|
131
|
+
this._emitError(err);
|
|
132
|
+
}
|
|
133
|
+
else if (data !== undefined) {
|
|
134
|
+
this.emit("data", data);
|
|
135
|
+
}
|
|
136
|
+
this._isFinished = true;
|
|
137
|
+
this.emit("finish");
|
|
138
|
+
this.emit("end");
|
|
139
|
+
});
|
|
126
140
|
}
|
|
127
141
|
/**
|
|
128
142
|
* Emit error only once
|
|
@@ -48,7 +48,7 @@ class ChunkedBuilder {
|
|
|
48
48
|
_consolidate() {
|
|
49
49
|
if (this._pieces.length > 0) {
|
|
50
50
|
this._chunks.push(this._pieces.join(""));
|
|
51
|
-
this._pieces =
|
|
51
|
+
this._pieces.length = 0;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
@@ -79,8 +79,8 @@ class ChunkedBuilder {
|
|
|
79
79
|
* Clear all content
|
|
80
80
|
*/
|
|
81
81
|
clear() {
|
|
82
|
-
this._pieces =
|
|
83
|
-
this._chunks =
|
|
82
|
+
this._pieces.length = 0;
|
|
83
|
+
this._chunks.length = 0;
|
|
84
84
|
this._totalLength = 0;
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
@@ -102,7 +102,7 @@ class ChunkedBuilder {
|
|
|
102
102
|
// Has chunks - consolidate and join
|
|
103
103
|
if (piecesLen > 0) {
|
|
104
104
|
this._chunks.push(this._pieces.join(""));
|
|
105
|
-
this._pieces =
|
|
105
|
+
this._pieces.length = 0;
|
|
106
106
|
}
|
|
107
107
|
if (this._chunks.length === 1) {
|
|
108
108
|
return this._chunks[0];
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Stream Module (browser
|
|
3
|
+
* Stream Module (browser entry)
|
|
4
4
|
*
|
|
5
|
-
* Mirrors
|
|
6
|
-
*
|
|
5
|
+
* Mirrors the public surface of `./index.ts`, but exports the browser
|
|
6
|
+
* implementation from `./streams.browser`.
|
|
7
|
+
*
|
|
8
|
+
* This file is intentionally export-only (tree-shaking friendly).
|
|
7
9
|
*/
|
|
8
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
11
|
exports.consumers = exports.Writeable = exports.duplexPair = exports.setDefaultHighWaterMark = exports.getDefaultHighWaterMark = exports.isErrored = exports.isDisturbed = exports.isDestroyed = exports.isStream = exports.isDuplex = exports.isTransform = exports.isWritable = exports.isReadable = exports.promisify = exports.once = exports.finishedAll = exports.compose = exports.addAbortSignal = exports.copyStream = exports.drainStream = exports.streamToString = exports.streamToBuffer = exports.streamToUint8Array = exports.streamToPromise = exports.finished = exports.pipeline = exports.createNullWritable = exports.createEmptyReadable = exports.createDuplex = exports.createReadableFromPromise = exports.createReadableFromGenerator = exports.createReadableFromAsyncIterable = exports.createReadableFromArray = exports.createBufferedStream = exports.createPullStream = exports.createPassThrough = exports.createCollector = exports.createTransform = exports.createWritable = exports.createReadable = exports.BufferChunk = exports.StringChunk = exports.BufferedStream = exports.PullStream = exports.Collector = exports.PassThrough = exports.Duplex = exports.Transform = exports.Writable = exports.Readable = void 0;
|
|
10
12
|
exports.filter = exports.transform = exports.fromBytes = exports.fromJSON = exports.fromString = exports.bytes = exports.json = exports.text = exports.collect = exports.concatUint8Arrays = exports.bufferToString = exports.toUint8Array = exports.uint8ArraySlice = exports.uint8ArrayIndexOf = exports.uint8ArrayEquals = exports.uint8ArrayToString = exports.stringToUint8Array = exports.textDecoder = exports.textEncoder = exports.TransactionalChunkedBuilder = exports.ChunkedBuilder = exports.EventEmitter = exports.promises = void 0;
|
|
11
|
-
|
|
12
|
-
// Native Stream Classes and Functions (browser)
|
|
13
|
-
// =============================================================================
|
|
14
|
-
const streams_browser_1 = require("./streams.browser.js");
|
|
13
|
+
var streams_browser_1 = require("./streams.browser.js");
|
|
15
14
|
Object.defineProperty(exports, "Readable", { enumerable: true, get: function () { return streams_browser_1.Readable; } });
|
|
16
15
|
Object.defineProperty(exports, "Writable", { enumerable: true, get: function () { return streams_browser_1.Writable; } });
|
|
17
16
|
Object.defineProperty(exports, "Transform", { enumerable: true, get: function () { return streams_browser_1.Transform; } });
|
|
@@ -63,18 +62,12 @@ Object.defineProperty(exports, "duplexPair", { enumerable: true, get: function (
|
|
|
63
62
|
Object.defineProperty(exports, "Writeable", { enumerable: true, get: function () { return streams_browser_1.normalizeWritable; } });
|
|
64
63
|
Object.defineProperty(exports, "consumers", { enumerable: true, get: function () { return streams_browser_1.consumers; } });
|
|
65
64
|
Object.defineProperty(exports, "promises", { enumerable: true, get: function () { return streams_browser_1.promises; } });
|
|
66
|
-
|
|
65
|
+
var event_emitter_1 = require("./event-emitter.js");
|
|
67
66
|
Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return event_emitter_1.EventEmitter; } });
|
|
68
|
-
|
|
69
|
-
// ChunkedBuilder (platform-independent)
|
|
70
|
-
// =============================================================================
|
|
71
|
-
const chunked_builder_1 = require("./chunked-builder.js");
|
|
67
|
+
var chunked_builder_1 = require("./chunked-builder.js");
|
|
72
68
|
Object.defineProperty(exports, "ChunkedBuilder", { enumerable: true, get: function () { return chunked_builder_1.ChunkedBuilder; } });
|
|
73
69
|
Object.defineProperty(exports, "TransactionalChunkedBuilder", { enumerable: true, get: function () { return chunked_builder_1.TransactionalChunkedBuilder; } });
|
|
74
|
-
|
|
75
|
-
// Utility Functions (platform-independent)
|
|
76
|
-
// =============================================================================
|
|
77
|
-
const shared_1 = require("./shared.js");
|
|
70
|
+
var shared_1 = require("./shared.js");
|
|
78
71
|
Object.defineProperty(exports, "textEncoder", { enumerable: true, get: function () { return shared_1.textEncoder; } });
|
|
79
72
|
Object.defineProperty(exports, "textDecoder", { enumerable: true, get: function () { return shared_1.textDecoder; } });
|
|
80
73
|
Object.defineProperty(exports, "stringToUint8Array", { enumerable: true, get: function () { return shared_1.stringToUint8Array; } });
|
|
@@ -85,7 +78,7 @@ Object.defineProperty(exports, "uint8ArraySlice", { enumerable: true, get: funct
|
|
|
85
78
|
Object.defineProperty(exports, "toUint8Array", { enumerable: true, get: function () { return shared_1.toUint8Array; } });
|
|
86
79
|
Object.defineProperty(exports, "bufferToString", { enumerable: true, get: function () { return shared_1.bufferToString; } });
|
|
87
80
|
Object.defineProperty(exports, "concatUint8Arrays", { enumerable: true, get: function () { return shared_1.concatUint8Arrays; } });
|
|
88
|
-
|
|
81
|
+
var utils_1 = require("./utils.js");
|
|
89
82
|
Object.defineProperty(exports, "collect", { enumerable: true, get: function () { return utils_1.collect; } });
|
|
90
83
|
Object.defineProperty(exports, "text", { enumerable: true, get: function () { return utils_1.text; } });
|
|
91
84
|
Object.defineProperty(exports, "json", { enumerable: true, get: function () { return utils_1.json; } });
|
|
@@ -1,44 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Stream Module
|
|
3
|
+
* Stream Module (Node.js entry)
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Public entrypoint for stream utilities and classes.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* -
|
|
9
|
-
*
|
|
10
|
-
* Both implementations provide the same API for cross-platform compatibility.
|
|
7
|
+
* Notes:
|
|
8
|
+
* - This file is intentionally export-only (tree-shaking friendly).
|
|
9
|
+
* - Browser builds should import from `@stream/index.browser`.
|
|
11
10
|
*
|
|
12
11
|
* @example
|
|
13
|
-
* ```
|
|
14
|
-
* import {
|
|
15
|
-
* Readable,
|
|
16
|
-
* Writable,
|
|
17
|
-
* Transform,
|
|
18
|
-
* Duplex,
|
|
19
|
-
* PassThrough,
|
|
20
|
-
* pipeline,
|
|
21
|
-
* createTransform,
|
|
22
|
-
* streamToUint8Array
|
|
23
|
-
* } from './modules/stream';
|
|
24
|
-
*
|
|
25
|
-
* // Create a transform stream
|
|
26
|
-
* const uppercase = createTransform<Uint8Array, Uint8Array>(chunk => {
|
|
27
|
-
* const text = new TextDecoder().decode(chunk);
|
|
28
|
-
* return new TextEncoder().encode(text.toUpperCase());
|
|
29
|
-
* });
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { pipeline, createTransform, createCollector } from "@stream";
|
|
30
14
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
15
|
+
* const upper = createTransform<Uint8Array, Uint8Array>(chunk => chunk);
|
|
16
|
+
* const out = createCollector<Uint8Array>();
|
|
17
|
+
* await pipeline(source, upper, out);
|
|
33
18
|
* ```
|
|
34
19
|
*/
|
|
35
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
21
|
exports.consumers = exports.Writeable = exports.duplexPair = exports.setDefaultHighWaterMark = exports.getDefaultHighWaterMark = exports.isErrored = exports.isDisturbed = exports.isDestroyed = exports.isStream = exports.isDuplex = exports.isTransform = exports.isWritable = exports.isReadable = exports.promisify = exports.once = exports.finishedAll = exports.compose = exports.addAbortSignal = exports.copyStream = exports.drainStream = exports.streamToString = exports.streamToBuffer = exports.streamToUint8Array = exports.streamToPromise = exports.finished = exports.pipeline = exports.createNullWritable = exports.createEmptyReadable = exports.createDuplex = exports.createReadableFromPromise = exports.createReadableFromGenerator = exports.createReadableFromAsyncIterable = exports.createReadableFromArray = exports.createBufferedStream = exports.createPullStream = exports.createPassThrough = exports.createCollector = exports.createTransform = exports.createWritable = exports.createReadable = exports.BufferChunk = exports.StringChunk = exports.BufferedStream = exports.PullStream = exports.Collector = exports.PassThrough = exports.Duplex = exports.Transform = exports.Writable = exports.Readable = void 0;
|
|
37
22
|
exports.filter = exports.transform = exports.fromBytes = exports.fromJSON = exports.fromString = exports.bytes = exports.json = exports.text = exports.collect = exports.concatUint8Arrays = exports.bufferToString = exports.toUint8Array = exports.uint8ArraySlice = exports.uint8ArrayIndexOf = exports.uint8ArrayEquals = exports.uint8ArrayToString = exports.stringToUint8Array = exports.textDecoder = exports.textEncoder = exports.TransactionalChunkedBuilder = exports.ChunkedBuilder = exports.EventEmitter = exports.promises = void 0;
|
|
38
|
-
|
|
39
|
-
// Native Stream Classes and Functions (platform-specific)
|
|
40
|
-
// =============================================================================
|
|
41
|
-
const streams_1 = require("./streams.js");
|
|
23
|
+
var streams_1 = require("./streams.js");
|
|
42
24
|
Object.defineProperty(exports, "Readable", { enumerable: true, get: function () { return streams_1.Readable; } });
|
|
43
25
|
Object.defineProperty(exports, "Writable", { enumerable: true, get: function () { return streams_1.Writable; } });
|
|
44
26
|
Object.defineProperty(exports, "Transform", { enumerable: true, get: function () { return streams_1.Transform; } });
|
|
@@ -90,18 +72,12 @@ Object.defineProperty(exports, "duplexPair", { enumerable: true, get: function (
|
|
|
90
72
|
Object.defineProperty(exports, "Writeable", { enumerable: true, get: function () { return streams_1.normalizeWritable; } });
|
|
91
73
|
Object.defineProperty(exports, "consumers", { enumerable: true, get: function () { return streams_1.consumers; } });
|
|
92
74
|
Object.defineProperty(exports, "promises", { enumerable: true, get: function () { return streams_1.promises; } });
|
|
93
|
-
|
|
75
|
+
var event_emitter_1 = require("./event-emitter.js");
|
|
94
76
|
Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return event_emitter_1.EventEmitter; } });
|
|
95
|
-
|
|
96
|
-
// ChunkedBuilder (platform-independent)
|
|
97
|
-
// =============================================================================
|
|
98
|
-
const chunked_builder_1 = require("./chunked-builder.js");
|
|
77
|
+
var chunked_builder_1 = require("./chunked-builder.js");
|
|
99
78
|
Object.defineProperty(exports, "ChunkedBuilder", { enumerable: true, get: function () { return chunked_builder_1.ChunkedBuilder; } });
|
|
100
79
|
Object.defineProperty(exports, "TransactionalChunkedBuilder", { enumerable: true, get: function () { return chunked_builder_1.TransactionalChunkedBuilder; } });
|
|
101
|
-
|
|
102
|
-
// Utility Functions (platform-independent)
|
|
103
|
-
// =============================================================================
|
|
104
|
-
const shared_1 = require("./shared.js");
|
|
80
|
+
var shared_1 = require("./shared.js");
|
|
105
81
|
Object.defineProperty(exports, "textEncoder", { enumerable: true, get: function () { return shared_1.textEncoder; } });
|
|
106
82
|
Object.defineProperty(exports, "textDecoder", { enumerable: true, get: function () { return shared_1.textDecoder; } });
|
|
107
83
|
Object.defineProperty(exports, "stringToUint8Array", { enumerable: true, get: function () { return shared_1.stringToUint8Array; } });
|
|
@@ -112,7 +88,7 @@ Object.defineProperty(exports, "uint8ArraySlice", { enumerable: true, get: funct
|
|
|
112
88
|
Object.defineProperty(exports, "toUint8Array", { enumerable: true, get: function () { return shared_1.toUint8Array; } });
|
|
113
89
|
Object.defineProperty(exports, "bufferToString", { enumerable: true, get: function () { return shared_1.bufferToString; } });
|
|
114
90
|
Object.defineProperty(exports, "concatUint8Arrays", { enumerable: true, get: function () { return shared_1.concatUint8Arrays; } });
|
|
115
|
-
|
|
91
|
+
var utils_1 = require("./utils.js");
|
|
116
92
|
Object.defineProperty(exports, "collect", { enumerable: true, get: function () { return utils_1.collect; } });
|
|
117
93
|
Object.defineProperty(exports, "text", { enumerable: true, get: function () { return utils_1.text; } });
|
|
118
94
|
Object.defineProperty(exports, "json", { enumerable: true, get: function () { return utils_1.json; } });
|