@cj-tech-master/excelts 4.0.0 → 4.0.1
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 +2 -2
- package/README_zh.md +2 -2
- package/dist/browser/index.browser.d.ts +25 -0
- package/dist/browser/index.browser.js +40 -0
- package/dist/browser/index.d.ts +23 -0
- package/dist/browser/index.js +35 -0
- package/dist/browser/modules/archive/byte-queue.d.ts +18 -0
- package/dist/browser/modules/archive/byte-queue.js +125 -0
- package/dist/browser/modules/archive/compress.base.d.ts +98 -0
- package/dist/browser/modules/archive/compress.base.js +173 -0
- package/dist/browser/modules/archive/compress.browser.d.ts +57 -0
- package/dist/browser/modules/archive/compress.browser.js +93 -0
- package/dist/browser/modules/archive/compress.d.ts +44 -0
- package/dist/browser/modules/archive/compress.js +86 -0
- package/dist/browser/modules/archive/crc32.base.d.ts +25 -0
- package/dist/browser/modules/archive/crc32.base.js +51 -0
- package/dist/browser/modules/archive/crc32.browser.d.ts +30 -0
- package/dist/browser/modules/archive/crc32.browser.js +32 -0
- package/dist/browser/modules/archive/crc32.d.ts +59 -0
- package/dist/browser/modules/archive/crc32.js +97 -0
- package/dist/browser/modules/archive/defaults.d.ts +4 -0
- package/dist/browser/modules/archive/defaults.js +3 -0
- package/dist/browser/modules/archive/deflate-fallback.d.ts +39 -0
- package/dist/browser/modules/archive/deflate-fallback.js +564 -0
- package/dist/browser/modules/archive/extract.d.ts +94 -0
- package/dist/browser/modules/archive/extract.js +106 -0
- package/dist/browser/modules/archive/index.base.d.ts +11 -0
- package/dist/browser/modules/archive/index.base.js +13 -0
- package/dist/browser/modules/archive/index.browser.d.ts +11 -0
- package/dist/browser/modules/archive/index.browser.js +17 -0
- package/dist/browser/modules/archive/index.d.ts +11 -0
- package/dist/browser/modules/archive/index.js +15 -0
- package/dist/browser/modules/archive/parse.base.d.ts +198 -0
- package/dist/browser/modules/archive/parse.base.js +610 -0
- package/dist/browser/modules/archive/parse.browser.d.ts +22 -0
- package/dist/browser/modules/archive/parse.browser.js +564 -0
- package/dist/browser/modules/archive/parse.d.ts +16 -0
- package/dist/browser/modules/archive/parse.js +94 -0
- package/dist/browser/modules/archive/streaming-compress.base.d.ts +36 -0
- package/dist/browser/modules/archive/streaming-compress.base.js +9 -0
- package/dist/browser/modules/archive/streaming-compress.browser.d.ts +26 -0
- package/dist/browser/modules/archive/streaming-compress.browser.js +296 -0
- package/dist/browser/modules/archive/streaming-compress.d.ts +22 -0
- package/dist/browser/modules/archive/streaming-compress.js +68 -0
- package/dist/browser/modules/archive/streaming-zip.d.ts +120 -0
- package/dist/browser/modules/archive/streaming-zip.js +407 -0
- package/dist/browser/modules/archive/utils/binary.d.ts +24 -0
- package/dist/browser/modules/archive/utils/binary.js +69 -0
- package/dist/browser/modules/archive/utils/bytes.d.ts +7 -0
- package/dist/browser/modules/archive/utils/bytes.js +101 -0
- package/dist/browser/modules/archive/utils/parse-buffer.d.ts +18 -0
- package/dist/browser/modules/archive/utils/parse-buffer.js +55 -0
- package/dist/browser/modules/archive/utils/text.d.ts +20 -0
- package/dist/browser/modules/archive/utils/text.js +33 -0
- package/dist/browser/modules/archive/utils/timestamps.d.ts +28 -0
- package/dist/browser/modules/archive/utils/timestamps.js +48 -0
- package/dist/browser/modules/archive/utils/zip-extra-fields.d.ts +19 -0
- package/dist/browser/modules/archive/utils/zip-extra-fields.js +72 -0
- package/dist/browser/modules/archive/utils/zip-extra.d.ts +18 -0
- package/dist/browser/modules/archive/utils/zip-extra.js +68 -0
- package/dist/browser/modules/archive/zip-builder.d.ts +117 -0
- package/dist/browser/modules/archive/zip-builder.js +292 -0
- package/dist/browser/modules/archive/zip-constants.d.ts +18 -0
- package/dist/browser/modules/archive/zip-constants.js +23 -0
- package/dist/browser/modules/archive/zip-entry-info.d.ts +29 -0
- package/dist/browser/modules/archive/zip-entry-info.js +6 -0
- package/dist/browser/modules/archive/zip-entry-metadata.d.ts +23 -0
- package/dist/browser/modules/archive/zip-entry-metadata.js +24 -0
- package/dist/browser/modules/archive/zip-parser.d.ts +62 -0
- package/dist/browser/modules/archive/zip-parser.js +332 -0
- package/dist/browser/modules/archive/zip-records.d.ts +43 -0
- package/dist/browser/modules/archive/zip-records.js +84 -0
- package/dist/browser/modules/csv/csv-core.d.ts +215 -0
- package/dist/browser/modules/csv/csv-core.js +723 -0
- package/dist/browser/modules/csv/csv-number.d.ts +3 -0
- package/dist/browser/modules/csv/csv-number.js +20 -0
- package/dist/browser/modules/csv/csv-stream.d.ts +121 -0
- package/dist/browser/modules/csv/csv-stream.js +703 -0
- package/dist/browser/modules/csv/csv.browser.d.ts +60 -0
- package/dist/browser/modules/csv/csv.browser.js +265 -0
- package/dist/browser/modules/csv/csv.d.ts +14 -0
- package/dist/browser/modules/csv/csv.js +29 -0
- package/dist/browser/modules/excel/anchor.d.ts +33 -0
- package/dist/browser/modules/excel/anchor.js +97 -0
- package/dist/browser/modules/excel/cell.d.ts +138 -0
- package/dist/browser/modules/excel/cell.js +946 -0
- package/dist/browser/modules/excel/column.d.ts +122 -0
- package/dist/browser/modules/excel/column.js +358 -0
- package/dist/browser/modules/excel/data-validations.d.ts +11 -0
- package/dist/browser/modules/excel/data-validations.js +43 -0
- package/dist/browser/modules/excel/defined-names.d.ts +37 -0
- package/dist/browser/modules/excel/defined-names.js +214 -0
- package/dist/browser/modules/excel/enums.d.ts +62 -0
- package/dist/browser/modules/excel/enums.js +58 -0
- package/dist/browser/modules/excel/image.d.ts +64 -0
- package/dist/browser/modules/excel/image.js +60 -0
- package/dist/browser/modules/excel/note.d.ts +29 -0
- package/dist/browser/modules/excel/note.js +61 -0
- package/dist/browser/modules/excel/pivot-table.d.ts +152 -0
- package/dist/browser/modules/excel/pivot-table.js +237 -0
- package/dist/browser/modules/excel/range.d.ts +62 -0
- package/dist/browser/modules/excel/range.js +280 -0
- package/dist/browser/modules/excel/row.d.ts +127 -0
- package/dist/browser/modules/excel/row.js +441 -0
- package/dist/browser/modules/excel/stream/hyperlink-reader.d.ts +33 -0
- package/dist/browser/modules/excel/stream/hyperlink-reader.js +84 -0
- package/dist/browser/modules/excel/stream/sheet-comments-writer.d.ts +26 -0
- package/dist/browser/modules/excel/stream/sheet-comments-writer.js +101 -0
- package/dist/browser/modules/excel/stream/sheet-rels-writer.d.ts +45 -0
- package/dist/browser/modules/excel/stream/sheet-rels-writer.js +91 -0
- package/dist/browser/modules/excel/stream/workbook-reader.browser.d.ts +169 -0
- package/dist/browser/modules/excel/stream/workbook-reader.browser.js +443 -0
- package/dist/browser/modules/excel/stream/workbook-reader.d.ts +24 -0
- package/dist/browser/modules/excel/stream/workbook-reader.js +50 -0
- package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +147 -0
- package/dist/browser/modules/excel/stream/workbook-writer.browser.js +356 -0
- package/dist/browser/modules/excel/stream/workbook-writer.d.ts +31 -0
- package/dist/browser/modules/excel/stream/workbook-writer.js +52 -0
- package/dist/browser/modules/excel/stream/worksheet-reader.d.ts +61 -0
- package/dist/browser/modules/excel/stream/worksheet-reader.js +367 -0
- package/dist/browser/modules/excel/stream/worksheet-writer.d.ts +140 -0
- package/dist/browser/modules/excel/stream/worksheet-writer.js +613 -0
- package/dist/browser/modules/excel/table.d.ts +81 -0
- package/dist/browser/modules/excel/table.js +405 -0
- package/dist/browser/modules/excel/types.d.ts +518 -0
- package/dist/browser/modules/excel/types.js +22 -0
- package/dist/browser/modules/excel/utils/cell-format.d.ts +32 -0
- package/dist/browser/modules/excel/utils/cell-format.js +814 -0
- package/dist/browser/modules/excel/utils/cell-matrix.d.ts +37 -0
- package/dist/browser/modules/excel/utils/cell-matrix.js +180 -0
- package/dist/browser/modules/excel/utils/col-cache.d.ts +36 -0
- package/dist/browser/modules/excel/utils/col-cache.js +278 -0
- package/dist/browser/modules/excel/utils/copy-style.d.ts +5 -0
- package/dist/browser/modules/excel/utils/copy-style.js +43 -0
- package/dist/browser/modules/excel/utils/encryptor.browser.d.ts +19 -0
- package/dist/browser/modules/excel/utils/encryptor.browser.js +46 -0
- package/dist/browser/modules/excel/utils/encryptor.d.ts +9 -0
- package/dist/browser/modules/excel/utils/encryptor.js +35 -0
- package/dist/browser/modules/excel/utils/iterate-stream.d.ts +14 -0
- package/dist/browser/modules/excel/utils/iterate-stream.js +55 -0
- package/dist/browser/modules/excel/utils/ooxml-paths.d.ts +64 -0
- package/dist/browser/modules/excel/utils/ooxml-paths.js +209 -0
- package/dist/browser/modules/excel/utils/parse-sax.d.ts +113 -0
- package/dist/browser/modules/excel/utils/parse-sax.js +1206 -0
- package/dist/browser/modules/excel/utils/shared-formula.d.ts +2 -0
- package/dist/browser/modules/excel/utils/shared-formula.js +36 -0
- package/dist/browser/modules/excel/utils/shared-strings.d.ts +12 -0
- package/dist/browser/modules/excel/utils/shared-strings.js +29 -0
- package/dist/browser/modules/excel/utils/sheet-utils.d.ts +190 -0
- package/dist/browser/modules/excel/utils/sheet-utils.js +674 -0
- package/dist/browser/modules/excel/utils/stream-buf.d.ts +126 -0
- package/dist/browser/modules/excel/utils/stream-buf.js +452 -0
- package/dist/browser/modules/excel/utils/string-buf.d.ts +29 -0
- package/dist/browser/modules/excel/utils/string-buf.js +75 -0
- package/dist/browser/modules/excel/utils/under-dash.d.ts +7 -0
- package/dist/browser/modules/excel/utils/under-dash.js +166 -0
- package/dist/browser/modules/excel/utils/xml-stream.d.ts +34 -0
- package/dist/browser/modules/excel/utils/xml-stream.js +179 -0
- package/dist/browser/modules/excel/workbook.d.ts +195 -0
- package/dist/browser/modules/excel/workbook.js +314 -0
- package/dist/browser/modules/excel/worksheet.d.ts +333 -0
- package/dist/browser/modules/excel/worksheet.js +924 -0
- package/dist/browser/modules/excel/xlsx/defaultnumformats.d.ts +12 -0
- package/dist/browser/modules/excel/xlsx/defaultnumformats.js +149 -0
- package/dist/browser/modules/excel/xlsx/rel-type.d.ts +19 -0
- package/dist/browser/modules/excel/xlsx/rel-type.js +19 -0
- package/dist/browser/modules/excel/xlsx/xform/base-xform.d.ts +33 -0
- package/dist/browser/modules/excel/xlsx/xform/base-xform.js +135 -0
- package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +17 -0
- package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +124 -0
- package/dist/browser/modules/excel/xlsx/xform/book/sheet-xform.d.ts +14 -0
- package/dist/browser/modules/excel/xlsx/xform/book/sheet-xform.js +30 -0
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.d.ts +11 -0
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.js +21 -0
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +12 -0
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-pivot-cache-xform.js +24 -0
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-properties-xform.d.ts +11 -0
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-properties-xform.js +24 -0
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-view-xform.d.ts +17 -0
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-view-xform.js +46 -0
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.d.ts +23 -0
- package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +234 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/comment-xform.d.ts +28 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/comment-xform.js +76 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/comments-xform.d.ts +21 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/comments-xform.js +72 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +16 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +34 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-protection-xform.d.ts +14 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +30 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-anchor-xform.d.ts +27 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-anchor-xform.js +55 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +35 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-client-data-xform.js +82 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +24 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-notes-xform.js +96 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-shape-xform.d.ts +25 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-shape-xform.js +83 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +23 -0
- package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +60 -0
- package/dist/browser/modules/excel/xlsx/xform/composite-xform.d.ts +11 -0
- package/dist/browser/modules/excel/xlsx/xform/composite-xform.js +48 -0
- package/dist/browser/modules/excel/xlsx/xform/core/app-heading-pairs-xform.d.ts +8 -0
- package/dist/browser/modules/excel/xlsx/xform/core/app-heading-pairs-xform.js +24 -0
- package/dist/browser/modules/excel/xlsx/xform/core/app-titles-of-parts-xform.d.ts +8 -0
- package/dist/browser/modules/excel/xlsx/xform/core/app-titles-of-parts-xform.js +21 -0
- package/dist/browser/modules/excel/xlsx/xform/core/app-xform.d.ts +26 -0
- package/dist/browser/modules/excel/xlsx/xform/core/app-xform.js +83 -0
- package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.d.ts +11 -0
- package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +122 -0
- package/dist/browser/modules/excel/xlsx/xform/core/core-xform.d.ts +42 -0
- package/dist/browser/modules/excel/xlsx/xform/core/core-xform.js +124 -0
- package/dist/browser/modules/excel/xlsx/xform/core/relationship-xform.d.ts +14 -0
- package/dist/browser/modules/excel/xlsx/xform/core/relationship-xform.js +20 -0
- package/dist/browser/modules/excel/xlsx/xform/core/relationships-xform.d.ts +14 -0
- package/dist/browser/modules/excel/xlsx/xform/core/relationships-xform.js +62 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +13 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +44 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/blip-fill-xform.d.ts +16 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/blip-fill-xform.js +57 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +14 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.js +40 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +9 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pic-pr-xform.js +32 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pr-xform.d.ts +18 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/c-nv-pr-xform.js +59 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +24 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/cell-position-xform.js +68 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +24 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.js +96 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/ext-lst-xform.d.ts +9 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/ext-lst-xform.js +37 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +20 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.js +34 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/hlink-click-xform.d.ts +11 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/hlink-click-xform.js +39 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +15 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/nv-pic-pr-xform.js +56 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +20 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +52 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/pic-xform.d.ts +22 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/pic-xform.js +64 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/sp-pr.d.ts +32 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/sp-pr.js +17 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +20 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +51 -0
- package/dist/browser/modules/excel/xlsx/xform/list-xform.d.ts +32 -0
- package/dist/browser/modules/excel/xlsx/xform/list-xform.js +89 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +42 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +128 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +15 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.js +78 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +60 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +179 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +73 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +234 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +119 -0
- package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +624 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/auto-filter-xform.d.ts +8 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/auto-filter-xform.js +34 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.d.ts +17 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.js +460 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +41 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +259 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cfvo-xform.d.ts +8 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cfvo-xform.js +22 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/color-scale-xform.d.ts +13 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/color-scale-xform.js +35 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +9 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formatting-xform.js +37 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +16 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +74 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/databar-xform.d.ts +13 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/databar-xform.js +39 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +9 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/ext-lst-ref-xform.js +67 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/formula-xform.d.ts +9 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/formula-xform.js +19 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/icon-set-xform.d.ts +11 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf/icon-set-xform.js +37 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +10 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.js +22 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +23 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +80 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +13 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.js +35 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +16 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.js +48 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +13 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.js +40 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +29 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/databar-ext-xform.js +69 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +9 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/f-ext-xform.js +19 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +20 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.js +60 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +9 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/sqref-ext-xform.js +19 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/col-breaks-xform.d.ts +16 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/col-breaks-xform.js +35 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/col-xform.d.ts +22 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/col-xform.js +75 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.d.ts +12 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.js +269 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/dimension-xform.d.ts +10 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/dimension-xform.js +23 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/drawing-xform.d.ts +12 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/drawing-xform.js +27 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +16 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +66 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/header-footer-xform.d.ts +20 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/header-footer-xform.js +124 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/hyperlink-xform.d.ts +16 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/hyperlink-xform.js +47 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/merge-cell-xform.d.ts +9 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/merge-cell-xform.js +21 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/merges.d.ts +14 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/merges.js +50 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/outline-properties-xform.d.ts +13 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/outline-properties-xform.js +36 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-breaks-xform.d.ts +14 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-breaks-xform.js +33 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-margins-xform.d.ts +17 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-margins-xform.js +42 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-properties-xform.d.ts +12 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-properties-xform.js +29 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +27 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +96 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/picture-xform.d.ts +12 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/picture-xform.js +27 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/print-options-xform.d.ts +15 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/print-options-xform.js +41 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/row-breaks-xform.d.ts +10 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/row-breaks-xform.js +29 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/row-xform.d.ts +37 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/row-xform.js +152 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +16 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +49 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-properties-xform.d.ts +19 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-properties-xform.js +82 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-protection-xform.d.ts +31 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-protection-xform.js +80 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +32 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +193 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/table-part-xform.d.ts +12 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/table-part-xform.js +27 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.d.ts +21 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +518 -0
- package/dist/browser/modules/excel/xlsx/xform/simple/boolean-xform.d.ts +15 -0
- package/dist/browser/modules/excel/xlsx/xform/simple/boolean-xform.js +24 -0
- package/dist/browser/modules/excel/xlsx/xform/simple/date-xform.d.ts +22 -0
- package/dist/browser/modules/excel/xlsx/xform/simple/date-xform.js +65 -0
- package/dist/browser/modules/excel/xlsx/xform/simple/float-xform.d.ts +18 -0
- package/dist/browser/modules/excel/xlsx/xform/simple/float-xform.js +47 -0
- package/dist/browser/modules/excel/xlsx/xform/simple/integer-xform.d.ts +20 -0
- package/dist/browser/modules/excel/xlsx/xform/simple/integer-xform.js +52 -0
- package/dist/browser/modules/excel/xlsx/xform/simple/string-xform.d.ts +18 -0
- package/dist/browser/modules/excel/xlsx/xform/simple/string-xform.js +47 -0
- package/dist/browser/modules/excel/xlsx/xform/static-xform.d.ts +17 -0
- package/dist/browser/modules/excel/xlsx/xform/static-xform.js +55 -0
- package/dist/browser/modules/excel/xlsx/xform/strings/phonetic-text-xform.d.ts +20 -0
- package/dist/browser/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +86 -0
- package/dist/browser/modules/excel/xlsx/xform/strings/rich-text-xform.d.ts +25 -0
- package/dist/browser/modules/excel/xlsx/xform/strings/rich-text-xform.js +77 -0
- package/dist/browser/modules/excel/xlsx/xform/strings/shared-string-xform.d.ts +17 -0
- package/dist/browser/modules/excel/xlsx/xform/strings/shared-string-xform.js +90 -0
- package/dist/browser/modules/excel/xlsx/xform/strings/shared-strings-xform.d.ts +27 -0
- package/dist/browser/modules/excel/xlsx/xform/strings/shared-strings-xform.js +109 -0
- package/dist/browser/modules/excel/xlsx/xform/strings/text-xform.d.ts +10 -0
- package/dist/browser/modules/excel/xlsx/xform/strings/text-xform.js +36 -0
- package/dist/browser/modules/excel/xlsx/xform/style/alignment-xform.d.ts +18 -0
- package/dist/browser/modules/excel/xlsx/xform/style/alignment-xform.js +152 -0
- package/dist/browser/modules/excel/xlsx/xform/style/border-xform.d.ts +49 -0
- package/dist/browser/modules/excel/xlsx/xform/style/border-xform.js +188 -0
- package/dist/browser/modules/excel/xlsx/xform/style/color-xform.d.ts +17 -0
- package/dist/browser/modules/excel/xlsx/xform/style/color-xform.js +61 -0
- package/dist/browser/modules/excel/xlsx/xform/style/dxf-xform.d.ts +23 -0
- package/dist/browser/modules/excel/xlsx/xform/style/dxf-xform.js +92 -0
- package/dist/browser/modules/excel/xlsx/xform/style/fill-xform.d.ts +85 -0
- package/dist/browser/modules/excel/xlsx/xform/style/fill-xform.js +312 -0
- package/dist/browser/modules/excel/xlsx/xform/style/font-xform.d.ts +35 -0
- package/dist/browser/modules/excel/xlsx/xform/style/font-xform.js +100 -0
- package/dist/browser/modules/excel/xlsx/xform/style/numfmt-xform.d.ts +18 -0
- package/dist/browser/modules/excel/xlsx/xform/style/numfmt-xform.js +50 -0
- package/dist/browser/modules/excel/xlsx/xform/style/protection-xform.d.ts +13 -0
- package/dist/browser/modules/excel/xlsx/xform/style/protection-xform.js +49 -0
- package/dist/browser/modules/excel/xlsx/xform/style/style-xform.d.ts +30 -0
- package/dist/browser/modules/excel/xlsx/xform/style/style-xform.js +108 -0
- package/dist/browser/modules/excel/xlsx/xform/style/styles-xform.d.ts +46 -0
- package/dist/browser/modules/excel/xlsx/xform/style/styles-xform.js +484 -0
- package/dist/browser/modules/excel/xlsx/xform/style/underline-xform.d.ts +14 -0
- package/dist/browser/modules/excel/xlsx/xform/style/underline-xform.js +38 -0
- package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +21 -0
- package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.js +70 -0
- package/dist/browser/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +15 -0
- package/dist/browser/modules/excel/xlsx/xform/table/custom-filter-xform.js +31 -0
- package/dist/browser/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +24 -0
- package/dist/browser/modules/excel/xlsx/xform/table/filter-column-xform.js +87 -0
- package/dist/browser/modules/excel/xlsx/xform/table/filter-xform.d.ts +14 -0
- package/dist/browser/modules/excel/xlsx/xform/table/filter-xform.js +29 -0
- package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.d.ts +21 -0
- package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.js +41 -0
- package/dist/browser/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +18 -0
- package/dist/browser/modules/excel/xlsx/xform/table/table-style-info-xform.js +44 -0
- package/dist/browser/modules/excel/xlsx/xform/table/table-xform.d.ts +33 -0
- package/dist/browser/modules/excel/xlsx/xform/table/table-xform.js +126 -0
- package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +208 -0
- package/dist/browser/modules/excel/xlsx/xlsx.browser.js +1152 -0
- package/dist/browser/modules/excel/xlsx/xlsx.d.ts +24 -0
- package/dist/browser/modules/excel/xlsx/xlsx.js +239 -0
- package/dist/browser/modules/excel/xlsx/xml/theme1.d.ts +1 -0
- package/dist/browser/modules/excel/xlsx/xml/theme1.js +1 -0
- package/dist/browser/modules/stream/base-transform.d.ts +68 -0
- package/dist/browser/modules/stream/base-transform.js +160 -0
- package/dist/browser/modules/stream/buffered-stream.d.ts +94 -0
- package/dist/browser/modules/stream/buffered-stream.js +277 -0
- package/dist/browser/modules/stream/chunked-builder.d.ts +97 -0
- package/dist/browser/modules/stream/chunked-builder.js +165 -0
- package/dist/browser/modules/stream/event-emitter.d.ts +30 -0
- package/dist/browser/modules/stream/event-emitter.js +239 -0
- package/dist/browser/modules/stream/index.browser.d.ts +22 -0
- package/dist/browser/modules/stream/index.browser.js +25 -0
- package/dist/browser/modules/stream/index.d.ts +49 -0
- package/dist/browser/modules/stream/index.js +52 -0
- package/dist/browser/modules/stream/pull-stream.d.ts +67 -0
- package/dist/browser/modules/stream/pull-stream.js +204 -0
- package/dist/browser/modules/stream/shared.d.ts +54 -0
- package/dist/browser/modules/stream/shared.js +156 -0
- package/dist/browser/modules/stream/streams.browser.d.ts +936 -0
- package/dist/browser/modules/stream/streams.browser.js +3297 -0
- package/dist/browser/modules/stream/streams.d.ts +282 -0
- package/dist/browser/modules/stream/streams.js +940 -0
- package/dist/browser/modules/stream/types.d.ts +238 -0
- package/dist/browser/modules/stream/types.js +7 -0
- package/dist/browser/modules/stream/utils.d.ts +24 -0
- package/dist/browser/modules/stream/utils.js +85 -0
- package/dist/browser/utils/browser.d.ts +9 -0
- package/dist/browser/utils/browser.js +49 -0
- package/dist/browser/utils/datetime.d.ts +56 -0
- package/dist/browser/utils/datetime.js +493 -0
- package/dist/browser/utils/env.d.ts +14 -0
- package/dist/browser/utils/env.js +18 -0
- package/dist/browser/utils/utils.base.d.ts +49 -0
- package/dist/browser/utils/utils.base.js +275 -0
- package/dist/browser/utils/utils.browser.d.ts +6 -0
- package/dist/browser/utils/utils.browser.js +12 -0
- package/dist/browser/utils/utils.d.ts +6 -0
- package/dist/browser/utils/utils.js +19 -0
- package/dist/browser/utils/uuid.d.ts +11 -0
- package/dist/browser/utils/uuid.js +55 -0
- package/dist/{browser → iife}/excelts.iife.js +1 -1
- package/dist/{browser → iife}/excelts.iife.min.js +1 -1
- package/dist/types/index.browser.d.ts +20 -20
- package/dist/types/index.d.ts +23 -23
- package/dist/types/modules/archive/compress.browser.d.ts +1 -1
- package/dist/types/modules/archive/compress.d.ts +2 -2
- package/dist/types/modules/archive/crc32.browser.d.ts +1 -1
- package/dist/types/modules/archive/crc32.d.ts +1 -1
- package/dist/types/modules/archive/defaults.d.ts +1 -1
- package/dist/types/modules/archive/extract.d.ts +2 -2
- package/dist/types/modules/archive/index.base.d.ts +4 -4
- package/dist/types/modules/archive/index.browser.d.ts +5 -5
- package/dist/types/modules/archive/index.d.ts +5 -5
- package/dist/types/modules/archive/parse.base.d.ts +3 -3
- package/dist/types/modules/archive/parse.browser.d.ts +2 -2
- package/dist/types/modules/archive/parse.d.ts +3 -3
- package/dist/types/modules/archive/streaming-compress.browser.d.ts +2 -2
- package/dist/types/modules/archive/streaming-compress.d.ts +2 -2
- package/dist/types/modules/archive/streaming-zip.d.ts +2 -2
- package/dist/types/modules/archive/zip-builder.d.ts +2 -2
- package/dist/types/modules/archive/zip-entry-metadata.d.ts +1 -1
- package/dist/types/modules/archive/zip-parser.d.ts +1 -1
- package/dist/types/modules/csv/csv-stream.d.ts +3 -3
- package/dist/types/modules/csv/csv.browser.d.ts +9 -9
- package/dist/types/modules/csv/csv.d.ts +4 -4
- package/dist/types/modules/excel/anchor.d.ts +1 -1
- package/dist/types/modules/excel/cell.d.ts +7 -7
- package/dist/types/modules/excel/column.d.ts +3 -3
- package/dist/types/modules/excel/defined-names.d.ts +4 -4
- package/dist/types/modules/excel/image.d.ts +2 -2
- package/dist/types/modules/excel/pivot-table.d.ts +1 -1
- package/dist/types/modules/excel/range.d.ts +1 -1
- package/dist/types/modules/excel/row.d.ts +3 -3
- package/dist/types/modules/excel/stream/hyperlink-reader.d.ts +2 -2
- package/dist/types/modules/excel/stream/workbook-reader.browser.d.ts +6 -6
- package/dist/types/modules/excel/stream/workbook-reader.d.ts +5 -5
- package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +8 -8
- package/dist/types/modules/excel/stream/workbook-writer.d.ts +2 -2
- package/dist/types/modules/excel/stream/worksheet-reader.d.ts +6 -6
- package/dist/types/modules/excel/stream/worksheet-writer.d.ts +9 -9
- package/dist/types/modules/excel/table.d.ts +2 -2
- package/dist/types/modules/excel/utils/col-cache.d.ts +1 -1
- package/dist/types/modules/excel/utils/sheet-utils.d.ts +3 -3
- package/dist/types/modules/excel/utils/stream-buf.d.ts +2 -2
- package/dist/types/modules/excel/workbook.d.ts +9 -9
- package/dist/types/modules/excel/worksheet.d.ts +10 -10
- package/dist/types/modules/excel/xlsx/xform/base-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/book/sheet-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/book/workbook-calc-properties-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/book/workbook-pivot-cache-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/book/workbook-properties-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/book/workbook-view-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/book/workbook-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/comment/comment-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/comment/comments-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/comment/style/vml-protection-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/comment/vml-anchor-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/comment/vml-shape-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/core/app-heading-pairs-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/core/app-titles-of-parts-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/core/app-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/core/content-types-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/core/core-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/core/relationship-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/core/relationships-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/c-nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/c-nv-pr-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/ext-lst-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/hlink-click-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/nv-pic-pr-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/pic-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/list-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +3 -3
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/auto-filter-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/cell-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.d.ts +6 -6
- package/dist/types/modules/excel/xlsx/xform/sheet/cf/cfvo-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/cf/color-scale-xform.d.ts +3 -3
- package/dist/types/modules/excel/xlsx/xform/sheet/cf/conditional-formatting-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/sheet/cf/databar-xform.d.ts +3 -3
- package/dist/types/modules/excel/xlsx/xform/sheet/cf/ext-lst-ref-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/cf/formula-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/cf/icon-set-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/cf-icon-ext-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.d.ts +3 -3
- package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/cfvo-ext-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formatting-ext-xform.d.ts +3 -3
- package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/conditional-formattings-ext-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/databar-ext-xform.d.ts +3 -3
- package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/f-ext-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/icon-set-ext-xform.d.ts +3 -3
- package/dist/types/modules/excel/xlsx/xform/sheet/cf-ext/sqref-ext-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/col-breaks-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/col-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/data-validations-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/dimension-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/drawing-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/header-footer-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/hyperlink-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/merge-cell-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/outline-properties-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/page-breaks-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/page-margins-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/page-setup-properties-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/picture-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/print-options-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/row-breaks-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/sheet-properties-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/sheet-protection-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/table-part-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/worksheet-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/simple/boolean-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/simple/date-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/simple/float-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/simple/integer-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/simple/string-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/static-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/strings/phonetic-text-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/strings/rich-text-xform.d.ts +3 -3
- package/dist/types/modules/excel/xlsx/xform/strings/shared-string-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/strings/shared-strings-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/strings/text-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/style/alignment-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/style/border-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/style/color-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/style/dxf-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/style/fill-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/style/font-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/style/numfmt-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/style/protection-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/style/style-xform.d.ts +3 -3
- package/dist/types/modules/excel/xlsx/xform/style/styles-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/style/underline-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +2 -2
- package/dist/types/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -1
- package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +3 -3
- package/dist/types/modules/excel/xlsx/xlsx.d.ts +1 -1
- package/dist/types/modules/stream/base-transform.d.ts +1 -1
- package/dist/types/modules/stream/buffered-stream.d.ts +1 -1
- package/dist/types/modules/stream/index.browser.d.ts +8 -8
- package/dist/types/modules/stream/index.d.ts +8 -8
- package/dist/types/modules/stream/pull-stream.d.ts +1 -1
- package/dist/types/modules/stream/streams.browser.d.ts +4 -4
- package/dist/types/modules/stream/streams.d.ts +3 -3
- package/dist/types/modules/stream/utils.d.ts +1 -1
- package/dist/types/utils/utils.browser.d.ts +1 -1
- package/dist/types/utils/utils.d.ts +1 -1
- package/package.json +10 -6
- package/dist/browser/excelts.esm.js +0 -24621
- package/dist/browser/excelts.esm.js.map +0 -1
- package/dist/browser/excelts.esm.min.js +0 -148
- /package/dist/{browser → iife}/excelts.iife.js.map +0 -0
|
@@ -0,0 +1,940 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native Stream Implementation - Node.js
|
|
3
|
+
*
|
|
4
|
+
* Uses Node.js native stream module for maximum performance.
|
|
5
|
+
* Provides Readable, Writable, Transform, Duplex, and PassThrough streams.
|
|
6
|
+
*/
|
|
7
|
+
import { Readable, Writable as NodeWritable, Transform, Duplex, PassThrough, pipeline as nodePipeline, finished as nodeFinished } from "stream";
|
|
8
|
+
import { BufferedStream as StandaloneBufferedStream, StringChunk as StandaloneStringChunk, BufferChunk as StandaloneBufferChunk } from "./buffered-stream.js";
|
|
9
|
+
import { PullStream as StandalonePullStream } from "./pull-stream.js";
|
|
10
|
+
/**
|
|
11
|
+
* Unified Writable class - wraps Node.js Writable with browser-compatible API
|
|
12
|
+
*
|
|
13
|
+
* Supports the same `{ stream }` option as browser version for wrapping existing streams.
|
|
14
|
+
*/
|
|
15
|
+
export class Writable extends NodeWritable {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
// If wrapping an existing stream, proxy to it
|
|
18
|
+
if (options?.stream) {
|
|
19
|
+
// Create a pass-through wrapper that proxies to the underlying stream
|
|
20
|
+
super({
|
|
21
|
+
highWaterMark: options?.highWaterMark,
|
|
22
|
+
objectMode: options?.objectMode,
|
|
23
|
+
write(chunk, encoding, callback) {
|
|
24
|
+
options.stream.write(chunk, encoding, callback);
|
|
25
|
+
},
|
|
26
|
+
final(callback) {
|
|
27
|
+
options.stream.end(callback);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
// Proxy events from underlying stream
|
|
31
|
+
options.stream.on("error", err => this.emit("error", err));
|
|
32
|
+
options.stream.on("close", () => this.emit("close"));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
super({
|
|
36
|
+
highWaterMark: options?.highWaterMark,
|
|
37
|
+
objectMode: options?.objectMode,
|
|
38
|
+
write: options?.write,
|
|
39
|
+
final: options?.final
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// =============================================================================
|
|
45
|
+
// Re-export native classes with our interfaces
|
|
46
|
+
// =============================================================================
|
|
47
|
+
export { Readable, Transform, Duplex, PassThrough };
|
|
48
|
+
// =============================================================================
|
|
49
|
+
// Cross-environment stream normalization
|
|
50
|
+
// =============================================================================
|
|
51
|
+
/**
|
|
52
|
+
* Normalize a user-provided writable into a Node.js-compatible Writable.
|
|
53
|
+
*
|
|
54
|
+
* This keeps Web/Node branching at the stream-module boundary.
|
|
55
|
+
*/
|
|
56
|
+
export function normalizeWritable(stream) {
|
|
57
|
+
if (stream instanceof Writable) {
|
|
58
|
+
return stream;
|
|
59
|
+
}
|
|
60
|
+
// Node.js Writable: accept structurally even if typed as unknown.
|
|
61
|
+
if (stream instanceof NodeWritable) {
|
|
62
|
+
return new Writable({ stream: stream });
|
|
63
|
+
}
|
|
64
|
+
// Web WritableStream: detect by getWriter() (avoid relying on global WritableStream).
|
|
65
|
+
if (stream?.getWriter) {
|
|
66
|
+
const nodeWritable = NodeWritable.fromWeb(stream);
|
|
67
|
+
return new Writable({ stream: nodeWritable });
|
|
68
|
+
}
|
|
69
|
+
// Assume it structurally matches Node's Writable; wrap for consistent API.
|
|
70
|
+
return new Writable({ stream: stream });
|
|
71
|
+
}
|
|
72
|
+
// Import for internal use
|
|
73
|
+
import { textDecoder } from "./shared.js";
|
|
74
|
+
const isReadableStream = (value) => !!value && typeof value === "object" && typeof value.getReader === "function";
|
|
75
|
+
const isAsyncIterable = (value) => {
|
|
76
|
+
if (!value || (typeof value !== "object" && typeof value !== "function")) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return typeof value[Symbol.asyncIterator] === "function";
|
|
80
|
+
};
|
|
81
|
+
const isWritableStream = (value) => !!value && typeof value === "object" && typeof value.getWriter === "function";
|
|
82
|
+
const isTransformStream = (value) => !!value &&
|
|
83
|
+
typeof value === "object" &&
|
|
84
|
+
!!value.readable &&
|
|
85
|
+
!!value.writable &&
|
|
86
|
+
isReadableStream(value.readable) &&
|
|
87
|
+
isWritableStream(value.writable);
|
|
88
|
+
const isPipelineOptions = (value) => {
|
|
89
|
+
if (!value || typeof value !== "object") {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
// IMPORTANT:
|
|
93
|
+
// Do NOT use `"end" in obj` here because streams have `.end()` and would be
|
|
94
|
+
// misclassified as options, breaking argument parsing and potentially hanging.
|
|
95
|
+
if (typeof value.pipe === "function" ||
|
|
96
|
+
typeof value.write === "function" ||
|
|
97
|
+
typeof value.end === "function" ||
|
|
98
|
+
typeof value.getReader === "function" ||
|
|
99
|
+
typeof value.getWriter === "function") {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return (Object.prototype.hasOwnProperty.call(value, "signal") ||
|
|
103
|
+
Object.prototype.hasOwnProperty.call(value, "end"));
|
|
104
|
+
};
|
|
105
|
+
const toNodePipelineStream = (stream) => {
|
|
106
|
+
// Node native streams (Readable/Transform/Duplex/Writable) are already compatible.
|
|
107
|
+
if (stream instanceof Readable ||
|
|
108
|
+
stream instanceof Transform ||
|
|
109
|
+
stream instanceof Duplex ||
|
|
110
|
+
stream instanceof NodeWritable) {
|
|
111
|
+
return stream;
|
|
112
|
+
}
|
|
113
|
+
if (isTransformStream(stream)) {
|
|
114
|
+
return Transform.fromWeb(stream);
|
|
115
|
+
}
|
|
116
|
+
if (isReadableStream(stream)) {
|
|
117
|
+
return Readable.fromWeb(stream);
|
|
118
|
+
}
|
|
119
|
+
if (isWritableStream(stream)) {
|
|
120
|
+
return NodeWritable.fromWeb(stream);
|
|
121
|
+
}
|
|
122
|
+
return stream;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Pipeline streams together with proper error handling and cleanup.
|
|
126
|
+
* Node.js compatible with support for options and callbacks.
|
|
127
|
+
*/
|
|
128
|
+
export function pipeline(...args) {
|
|
129
|
+
let streams;
|
|
130
|
+
let options;
|
|
131
|
+
let callback;
|
|
132
|
+
const lastArg = args[args.length - 1];
|
|
133
|
+
if (typeof lastArg === "function") {
|
|
134
|
+
callback = lastArg;
|
|
135
|
+
streams = args.slice(0, -1);
|
|
136
|
+
}
|
|
137
|
+
else if (isPipelineOptions(lastArg)) {
|
|
138
|
+
options = lastArg;
|
|
139
|
+
streams = args.slice(0, -1);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
streams = args;
|
|
143
|
+
}
|
|
144
|
+
const normalizedStreams = streams.map(toNodePipelineStream);
|
|
145
|
+
const promise = new Promise((resolve, reject) => {
|
|
146
|
+
const done = (err) => {
|
|
147
|
+
if (err) {
|
|
148
|
+
reject(err);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
resolve();
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
if (options) {
|
|
155
|
+
nodePipeline(...normalizedStreams, options, done);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
nodePipeline(...normalizedStreams, done);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
if (callback) {
|
|
162
|
+
promise.then(() => callback()).catch(err => callback(err));
|
|
163
|
+
}
|
|
164
|
+
return promise;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Wait for a stream to finish, close, or error.
|
|
168
|
+
* Node.js compatible with support for options and callbacks.
|
|
169
|
+
*/
|
|
170
|
+
export function finished(stream, optionsOrCallback, callback) {
|
|
171
|
+
let options;
|
|
172
|
+
let cb;
|
|
173
|
+
if (typeof optionsOrCallback === "function") {
|
|
174
|
+
cb = optionsOrCallback;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
options = optionsOrCallback;
|
|
178
|
+
cb = callback;
|
|
179
|
+
}
|
|
180
|
+
const promise = new Promise((resolve, reject) => {
|
|
181
|
+
const normalizedStream = toNodePipelineStream(stream);
|
|
182
|
+
nodeFinished(normalizedStream, options, (err) => {
|
|
183
|
+
if (err && !(options && options.error)) {
|
|
184
|
+
reject(err);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
resolve();
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
if (cb) {
|
|
192
|
+
promise.then(() => cb()).catch(err => cb(err));
|
|
193
|
+
}
|
|
194
|
+
return promise;
|
|
195
|
+
}
|
|
196
|
+
// =============================================================================
|
|
197
|
+
// Stream Creation Functions
|
|
198
|
+
// =============================================================================
|
|
199
|
+
/**
|
|
200
|
+
* Create a readable stream from various sources
|
|
201
|
+
*/
|
|
202
|
+
export function createReadable(options) {
|
|
203
|
+
return new Readable({
|
|
204
|
+
highWaterMark: options?.highWaterMark,
|
|
205
|
+
objectMode: options?.objectMode,
|
|
206
|
+
read: options?.read,
|
|
207
|
+
destroy: options?.destroy
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Create a readable stream from an async iterable
|
|
212
|
+
*/
|
|
213
|
+
export function createReadableFromAsyncIterable(iterable, options) {
|
|
214
|
+
return Readable.from(iterable, {
|
|
215
|
+
highWaterMark: options?.highWaterMark,
|
|
216
|
+
objectMode: options?.objectMode ?? true
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Create a readable stream from an array
|
|
221
|
+
*/
|
|
222
|
+
export function createReadableFromArray(data, options) {
|
|
223
|
+
let index = 0;
|
|
224
|
+
return new Readable({
|
|
225
|
+
highWaterMark: options?.highWaterMark,
|
|
226
|
+
objectMode: options?.objectMode ?? true,
|
|
227
|
+
read() {
|
|
228
|
+
if (index < data.length) {
|
|
229
|
+
this.push(data[index++]);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
this.push(null);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Create a writable stream
|
|
239
|
+
*/
|
|
240
|
+
export function createWritable(options) {
|
|
241
|
+
return new Writable({
|
|
242
|
+
highWaterMark: options?.highWaterMark,
|
|
243
|
+
objectMode: options?.objectMode,
|
|
244
|
+
write: options?.write,
|
|
245
|
+
final: options?.final
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Create a transform stream from a transform function
|
|
250
|
+
*/
|
|
251
|
+
export function createTransform(transformFn, options) {
|
|
252
|
+
return new Transform({
|
|
253
|
+
highWaterMark: options?.highWaterMark,
|
|
254
|
+
objectMode: options?.objectMode,
|
|
255
|
+
transform(chunk, encoding, callback) {
|
|
256
|
+
try {
|
|
257
|
+
const result = transformFn(chunk, encoding);
|
|
258
|
+
if (result instanceof Promise) {
|
|
259
|
+
result
|
|
260
|
+
.then(data => {
|
|
261
|
+
if (data !== undefined) {
|
|
262
|
+
callback(null, data);
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
callback();
|
|
266
|
+
}
|
|
267
|
+
})
|
|
268
|
+
.catch(callback);
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
if (result !== undefined) {
|
|
272
|
+
callback(null, result);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
callback();
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
catch (err) {
|
|
280
|
+
callback(err);
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
flush: options?.flush
|
|
284
|
+
? function (callback) {
|
|
285
|
+
try {
|
|
286
|
+
const result = options.flush();
|
|
287
|
+
if (result instanceof Promise) {
|
|
288
|
+
result.then(data => callback(null, data)).catch(callback);
|
|
289
|
+
}
|
|
290
|
+
else if (result !== undefined) {
|
|
291
|
+
callback(null, result);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
callback();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
catch (err) {
|
|
298
|
+
callback(err);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
: undefined
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Create a duplex stream
|
|
306
|
+
*/
|
|
307
|
+
export function createDuplex(options) {
|
|
308
|
+
return new Duplex({
|
|
309
|
+
allowHalfOpen: options?.allowHalfOpen,
|
|
310
|
+
readableHighWaterMark: options?.readableHighWaterMark,
|
|
311
|
+
writableHighWaterMark: options?.writableHighWaterMark,
|
|
312
|
+
readableObjectMode: options?.readableObjectMode,
|
|
313
|
+
writableObjectMode: options?.writableObjectMode,
|
|
314
|
+
read: options?.read,
|
|
315
|
+
write: options?.write,
|
|
316
|
+
final: options?.final,
|
|
317
|
+
destroy: options?.destroy
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Create a passthrough stream
|
|
322
|
+
*/
|
|
323
|
+
export function createPassThrough(options) {
|
|
324
|
+
return new PassThrough({
|
|
325
|
+
highWaterMark: options?.highWaterMark,
|
|
326
|
+
objectMode: options?.objectMode
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
// =============================================================================
|
|
330
|
+
// Collector Stream - Collects all chunks into an array
|
|
331
|
+
// =============================================================================
|
|
332
|
+
/**
|
|
333
|
+
* A writable stream that collects all chunks
|
|
334
|
+
*/
|
|
335
|
+
export class Collector extends Writable {
|
|
336
|
+
constructor(options) {
|
|
337
|
+
super({
|
|
338
|
+
highWaterMark: options?.highWaterMark,
|
|
339
|
+
objectMode: options?.objectMode ?? true,
|
|
340
|
+
write: ((chunk, _encoding, callback) => {
|
|
341
|
+
this.chunks.push(chunk);
|
|
342
|
+
callback();
|
|
343
|
+
})
|
|
344
|
+
});
|
|
345
|
+
this.chunks = [];
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Get all collected data as a single Uint8Array (for binary mode)
|
|
349
|
+
*/
|
|
350
|
+
toUint8Array() {
|
|
351
|
+
const chunks = this.chunks;
|
|
352
|
+
const len = chunks.length;
|
|
353
|
+
if (len === 0) {
|
|
354
|
+
return new Uint8Array(0);
|
|
355
|
+
}
|
|
356
|
+
if (len === 1) {
|
|
357
|
+
const first = chunks[0];
|
|
358
|
+
if (first instanceof Uint8Array) {
|
|
359
|
+
return first;
|
|
360
|
+
}
|
|
361
|
+
if (Buffer.isBuffer(first)) {
|
|
362
|
+
return new Uint8Array(first.buffer, first.byteOffset, first.byteLength);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// Fast path: check first chunk type once
|
|
366
|
+
const first = chunks[0];
|
|
367
|
+
if (first instanceof Uint8Array || Buffer.isBuffer(first)) {
|
|
368
|
+
// Calculate total length with simple loop (faster than reduce)
|
|
369
|
+
let totalLength = 0;
|
|
370
|
+
for (let i = 0; i < len; i++) {
|
|
371
|
+
totalLength += chunks[i].length;
|
|
372
|
+
}
|
|
373
|
+
const result = new Uint8Array(totalLength);
|
|
374
|
+
let offset = 0;
|
|
375
|
+
for (let i = 0; i < len; i++) {
|
|
376
|
+
const arr = chunks[i];
|
|
377
|
+
result.set(arr, offset);
|
|
378
|
+
offset += arr.length;
|
|
379
|
+
}
|
|
380
|
+
return result;
|
|
381
|
+
}
|
|
382
|
+
throw new Error("Collector contains non-binary data");
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Get all collected data as a string
|
|
386
|
+
*/
|
|
387
|
+
toString() {
|
|
388
|
+
const chunks = this.chunks;
|
|
389
|
+
const len = chunks.length;
|
|
390
|
+
if (len === 0) {
|
|
391
|
+
return "";
|
|
392
|
+
}
|
|
393
|
+
const first = chunks[0];
|
|
394
|
+
if (typeof first === "string") {
|
|
395
|
+
// Fast path for string chunks
|
|
396
|
+
if (len === 1) {
|
|
397
|
+
return first;
|
|
398
|
+
}
|
|
399
|
+
return chunks.join("");
|
|
400
|
+
}
|
|
401
|
+
// Binary data - decode to string
|
|
402
|
+
return textDecoder.decode(this.toUint8Array());
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Create a collector stream
|
|
407
|
+
*/
|
|
408
|
+
export function createCollector(options) {
|
|
409
|
+
return new Collector(options);
|
|
410
|
+
}
|
|
411
|
+
// =============================================================================
|
|
412
|
+
// Pull Stream - Read data on demand with pattern matching
|
|
413
|
+
// =============================================================================
|
|
414
|
+
export class PullStream extends StandalonePullStream {
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Create a pull stream
|
|
418
|
+
*/
|
|
419
|
+
export function createPullStream(options) {
|
|
420
|
+
return new PullStream(options);
|
|
421
|
+
}
|
|
422
|
+
// =============================================================================
|
|
423
|
+
// Buffered Stream - Efficient chunk management
|
|
424
|
+
// =============================================================================
|
|
425
|
+
/**
|
|
426
|
+
* String chunk implementation
|
|
427
|
+
*/
|
|
428
|
+
export class StringChunk extends StandaloneStringChunk {
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Buffer chunk implementation
|
|
432
|
+
*/
|
|
433
|
+
export class BufferChunk extends StandaloneBufferChunk {
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Buffered stream with efficient chunk management
|
|
437
|
+
*/
|
|
438
|
+
export class BufferedStream extends StandaloneBufferedStream {
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Create a buffered stream
|
|
442
|
+
*/
|
|
443
|
+
export function createBufferedStream(options) {
|
|
444
|
+
return new BufferedStream(options);
|
|
445
|
+
}
|
|
446
|
+
// =============================================================================
|
|
447
|
+
// Utility Functions
|
|
448
|
+
// =============================================================================
|
|
449
|
+
/**
|
|
450
|
+
* Convert a stream to a promise that resolves when finished
|
|
451
|
+
*/
|
|
452
|
+
export async function streamToPromise(stream) {
|
|
453
|
+
return finished(stream);
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Collect all data from a readable stream into a Uint8Array
|
|
457
|
+
* (Node.js equivalent of browser streamToBuffer)
|
|
458
|
+
*/
|
|
459
|
+
export async function streamToBuffer(stream) {
|
|
460
|
+
let iterable;
|
|
461
|
+
if (isReadableStream(stream)) {
|
|
462
|
+
iterable = Readable.fromWeb(stream);
|
|
463
|
+
}
|
|
464
|
+
else if (isAsyncIterable(stream)) {
|
|
465
|
+
iterable = stream;
|
|
466
|
+
}
|
|
467
|
+
else {
|
|
468
|
+
throw new Error("streamToBuffer: unsupported stream type");
|
|
469
|
+
}
|
|
470
|
+
const chunks = [];
|
|
471
|
+
let totalLength = 0;
|
|
472
|
+
for await (const chunk of iterable) {
|
|
473
|
+
const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
474
|
+
chunks.push(buf);
|
|
475
|
+
totalLength += buf.length;
|
|
476
|
+
}
|
|
477
|
+
if (chunks.length === 0) {
|
|
478
|
+
return new Uint8Array(0);
|
|
479
|
+
}
|
|
480
|
+
if (chunks.length === 1) {
|
|
481
|
+
const b = chunks[0];
|
|
482
|
+
return new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
|
|
483
|
+
}
|
|
484
|
+
// Use pre-calculated length for faster concat
|
|
485
|
+
const buffer = Buffer.concat(chunks, totalLength);
|
|
486
|
+
return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Collect all data from a readable stream into a Uint8Array
|
|
490
|
+
*/
|
|
491
|
+
export async function streamToUint8Array(stream) {
|
|
492
|
+
return streamToBuffer(stream);
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Collect all data from a readable stream into a string
|
|
496
|
+
*/
|
|
497
|
+
export async function streamToString(stream, encoding) {
|
|
498
|
+
const bytes = await streamToUint8Array(stream);
|
|
499
|
+
return Buffer.from(bytes).toString((encoding ?? "utf8"));
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Drain a stream (consume all data without processing)
|
|
503
|
+
*/
|
|
504
|
+
export async function drainStream(stream) {
|
|
505
|
+
let iterable;
|
|
506
|
+
if (isReadableStream(stream)) {
|
|
507
|
+
iterable = Readable.fromWeb(stream);
|
|
508
|
+
}
|
|
509
|
+
else if (isAsyncIterable(stream)) {
|
|
510
|
+
iterable = stream;
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
throw new Error("drainStream: unsupported stream type");
|
|
514
|
+
}
|
|
515
|
+
for await (const _chunk of iterable) {
|
|
516
|
+
// Consume data
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Copy from a readable stream to a writable stream
|
|
521
|
+
*/
|
|
522
|
+
export async function copyStream(source, destination) {
|
|
523
|
+
return pipeline(source, destination);
|
|
524
|
+
}
|
|
525
|
+
// =============================================================================
|
|
526
|
+
// Additional Utility Functions
|
|
527
|
+
// =============================================================================
|
|
528
|
+
/**
|
|
529
|
+
* Add abort signal handling to any stream
|
|
530
|
+
*/
|
|
531
|
+
export function addAbortSignal(signal, stream) {
|
|
532
|
+
if (signal.aborted) {
|
|
533
|
+
stream.destroy(new Error("Aborted"));
|
|
534
|
+
return stream;
|
|
535
|
+
}
|
|
536
|
+
const onAbort = () => {
|
|
537
|
+
stream.destroy(new Error("Aborted"));
|
|
538
|
+
};
|
|
539
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
540
|
+
stream.on("close", () => {
|
|
541
|
+
signal.removeEventListener("abort", onAbort);
|
|
542
|
+
});
|
|
543
|
+
return stream;
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Create a readable stream from a generator function
|
|
547
|
+
*/
|
|
548
|
+
export function createReadableFromGenerator(generator, options) {
|
|
549
|
+
return Readable.from(generator(), {
|
|
550
|
+
highWaterMark: options?.highWaterMark,
|
|
551
|
+
objectMode: options?.objectMode ?? true
|
|
552
|
+
});
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Create a readable stream from a Promise
|
|
556
|
+
*/
|
|
557
|
+
export function createReadableFromPromise(promise, options) {
|
|
558
|
+
const readable = new Readable({
|
|
559
|
+
highWaterMark: options?.highWaterMark,
|
|
560
|
+
objectMode: options?.objectMode ?? true,
|
|
561
|
+
read() { }
|
|
562
|
+
});
|
|
563
|
+
promise
|
|
564
|
+
.then(value => {
|
|
565
|
+
readable.push(value);
|
|
566
|
+
readable.push(null);
|
|
567
|
+
})
|
|
568
|
+
.catch(err => {
|
|
569
|
+
readable.destroy(err);
|
|
570
|
+
});
|
|
571
|
+
return readable;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Compose multiple transform streams into one
|
|
575
|
+
*/
|
|
576
|
+
export function compose(...transforms) {
|
|
577
|
+
const len = transforms.length;
|
|
578
|
+
if (len === 0) {
|
|
579
|
+
return new PassThrough();
|
|
580
|
+
}
|
|
581
|
+
const isNativeTransform = (stream) => stream instanceof Transform;
|
|
582
|
+
if (len === 1 && isNativeTransform(transforms[0])) {
|
|
583
|
+
return transforms[0];
|
|
584
|
+
}
|
|
585
|
+
// Chain all transforms together
|
|
586
|
+
for (let i = 0; i < len - 1; i++) {
|
|
587
|
+
transforms[i].pipe(transforms[i + 1]);
|
|
588
|
+
}
|
|
589
|
+
// Create a Duplex that writes to first and reads from last
|
|
590
|
+
const first = transforms[0];
|
|
591
|
+
const last = transforms[len - 1];
|
|
592
|
+
// Create a PassThrough as the composed stream
|
|
593
|
+
const composed = new PassThrough({ objectMode: first.readableObjectMode });
|
|
594
|
+
// Store original methods for forwarding
|
|
595
|
+
const passthroughWrite = composed.write.bind(composed);
|
|
596
|
+
const passthroughEnd = composed.end.bind(composed);
|
|
597
|
+
// Override write to write to first transform
|
|
598
|
+
composed.write = function (chunk, encodingOrCallback, callback) {
|
|
599
|
+
if (typeof encodingOrCallback === "function") {
|
|
600
|
+
return first.write(chunk, encodingOrCallback);
|
|
601
|
+
}
|
|
602
|
+
return first.write(chunk, encodingOrCallback, callback);
|
|
603
|
+
};
|
|
604
|
+
// Override end to end first transform
|
|
605
|
+
composed.end = function (chunkOrCallback, encodingOrCallback, callback) {
|
|
606
|
+
if (typeof chunkOrCallback === "function") {
|
|
607
|
+
first.end(chunkOrCallback);
|
|
608
|
+
}
|
|
609
|
+
else if (typeof encodingOrCallback === "function") {
|
|
610
|
+
first.end(chunkOrCallback, encodingOrCallback);
|
|
611
|
+
}
|
|
612
|
+
else {
|
|
613
|
+
first.end(chunkOrCallback, encodingOrCallback, callback);
|
|
614
|
+
}
|
|
615
|
+
return composed;
|
|
616
|
+
};
|
|
617
|
+
// Override pipe to pipe from last transform
|
|
618
|
+
composed.pipe = function (dest) {
|
|
619
|
+
return last.pipe(dest);
|
|
620
|
+
};
|
|
621
|
+
// Forward data from last to composed
|
|
622
|
+
last.on("data", (chunk) => {
|
|
623
|
+
passthroughWrite(chunk);
|
|
624
|
+
});
|
|
625
|
+
// Forward end from last
|
|
626
|
+
last.on("end", () => {
|
|
627
|
+
passthroughEnd();
|
|
628
|
+
});
|
|
629
|
+
// Forward errors from any transform
|
|
630
|
+
for (const transform of transforms) {
|
|
631
|
+
transform.on("error", (err) => {
|
|
632
|
+
composed.emit("error", err);
|
|
633
|
+
});
|
|
634
|
+
}
|
|
635
|
+
return composed;
|
|
636
|
+
}
|
|
637
|
+
/**
|
|
638
|
+
* Wait for multiple streams to finish
|
|
639
|
+
*/
|
|
640
|
+
export async function finishedAll(streams) {
|
|
641
|
+
const len = streams.length;
|
|
642
|
+
if (len === 0) {
|
|
643
|
+
return;
|
|
644
|
+
}
|
|
645
|
+
if (len === 1) {
|
|
646
|
+
await finished(streams[0]);
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
// Create promise array in-place without intermediate allocation
|
|
650
|
+
const promises = new Array(len);
|
|
651
|
+
for (let i = 0; i < len; i++) {
|
|
652
|
+
promises[i] = finished(streams[i]);
|
|
653
|
+
}
|
|
654
|
+
await Promise.all(promises);
|
|
655
|
+
}
|
|
656
|
+
// Reusable empty read function
|
|
657
|
+
const emptyRead = function () {
|
|
658
|
+
this.push(null);
|
|
659
|
+
};
|
|
660
|
+
/**
|
|
661
|
+
* Create a readable stream that emits nothing and immediately ends
|
|
662
|
+
*/
|
|
663
|
+
export function createEmptyReadable(options) {
|
|
664
|
+
return new Readable({
|
|
665
|
+
highWaterMark: options?.highWaterMark,
|
|
666
|
+
objectMode: options?.objectMode,
|
|
667
|
+
read: emptyRead
|
|
668
|
+
});
|
|
669
|
+
}
|
|
670
|
+
// Reusable null write function
|
|
671
|
+
const nullWrite = (_chunk, _encoding, callback) => {
|
|
672
|
+
callback();
|
|
673
|
+
};
|
|
674
|
+
/**
|
|
675
|
+
* Create a writable stream that discards all data (like /dev/null)
|
|
676
|
+
*/
|
|
677
|
+
export function createNullWritable(options) {
|
|
678
|
+
return new Writable({
|
|
679
|
+
highWaterMark: options?.highWaterMark,
|
|
680
|
+
objectMode: options?.objectMode,
|
|
681
|
+
write: nullWrite
|
|
682
|
+
});
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Promisified version of once for events
|
|
686
|
+
*/
|
|
687
|
+
export function once(emitter, event, options) {
|
|
688
|
+
return new Promise((resolve, reject) => {
|
|
689
|
+
const cleanup = () => {
|
|
690
|
+
emitter.off(event, onEvent);
|
|
691
|
+
emitter.off("error", onError);
|
|
692
|
+
if (options?.signal) {
|
|
693
|
+
options.signal.removeEventListener("abort", onAbort);
|
|
694
|
+
}
|
|
695
|
+
};
|
|
696
|
+
const onEvent = (...args) => {
|
|
697
|
+
cleanup();
|
|
698
|
+
resolve(args);
|
|
699
|
+
};
|
|
700
|
+
const onError = (err) => {
|
|
701
|
+
cleanup();
|
|
702
|
+
reject(err);
|
|
703
|
+
};
|
|
704
|
+
const onAbort = () => {
|
|
705
|
+
cleanup();
|
|
706
|
+
reject(new Error("Aborted"));
|
|
707
|
+
};
|
|
708
|
+
emitter.once(event, onEvent);
|
|
709
|
+
emitter.once("error", onError);
|
|
710
|
+
if (options?.signal) {
|
|
711
|
+
if (options.signal.aborted) {
|
|
712
|
+
onAbort();
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
715
|
+
options.signal.addEventListener("abort", onAbort);
|
|
716
|
+
}
|
|
717
|
+
});
|
|
718
|
+
}
|
|
719
|
+
/**
|
|
720
|
+
* Convert a callback-based operation to a promise
|
|
721
|
+
*/
|
|
722
|
+
export function promisify(fn) {
|
|
723
|
+
return new Promise((resolve, reject) => {
|
|
724
|
+
fn((error, result) => {
|
|
725
|
+
if (error) {
|
|
726
|
+
reject(error);
|
|
727
|
+
}
|
|
728
|
+
else {
|
|
729
|
+
resolve(result);
|
|
730
|
+
}
|
|
731
|
+
});
|
|
732
|
+
});
|
|
733
|
+
}
|
|
734
|
+
// =============================================================================
|
|
735
|
+
// Type Guards
|
|
736
|
+
// =============================================================================
|
|
737
|
+
/**
|
|
738
|
+
* Check if an object is a readable stream
|
|
739
|
+
*/
|
|
740
|
+
export function isReadable(obj) {
|
|
741
|
+
if (obj == null) {
|
|
742
|
+
return false;
|
|
743
|
+
}
|
|
744
|
+
if (obj instanceof Readable) {
|
|
745
|
+
return true;
|
|
746
|
+
}
|
|
747
|
+
const o = obj;
|
|
748
|
+
return typeof o.read === "function" && typeof o.pipe === "function";
|
|
749
|
+
}
|
|
750
|
+
/**
|
|
751
|
+
* Check if an object is a writable stream
|
|
752
|
+
*/
|
|
753
|
+
export function isWritable(obj) {
|
|
754
|
+
if (obj == null) {
|
|
755
|
+
return false;
|
|
756
|
+
}
|
|
757
|
+
if (obj instanceof Writable) {
|
|
758
|
+
return true;
|
|
759
|
+
}
|
|
760
|
+
const o = obj;
|
|
761
|
+
return typeof o.write === "function" && typeof o.end === "function";
|
|
762
|
+
}
|
|
763
|
+
/**
|
|
764
|
+
* Check if an object is a transform stream
|
|
765
|
+
*/
|
|
766
|
+
export function isTransform(obj) {
|
|
767
|
+
if (obj == null) {
|
|
768
|
+
return false;
|
|
769
|
+
}
|
|
770
|
+
if (obj instanceof Transform) {
|
|
771
|
+
return true;
|
|
772
|
+
}
|
|
773
|
+
const o = obj;
|
|
774
|
+
return (typeof o.read === "function" &&
|
|
775
|
+
typeof o.pipe === "function" &&
|
|
776
|
+
typeof o.write === "function" &&
|
|
777
|
+
typeof o._transform === "function");
|
|
778
|
+
}
|
|
779
|
+
/**
|
|
780
|
+
* Check if an object is a duplex stream
|
|
781
|
+
*/
|
|
782
|
+
export function isDuplex(obj) {
|
|
783
|
+
if (obj == null) {
|
|
784
|
+
return false;
|
|
785
|
+
}
|
|
786
|
+
if (obj instanceof Duplex) {
|
|
787
|
+
return true;
|
|
788
|
+
}
|
|
789
|
+
const o = obj;
|
|
790
|
+
return (typeof o.read === "function" &&
|
|
791
|
+
typeof o.pipe === "function" &&
|
|
792
|
+
typeof o.write === "function" &&
|
|
793
|
+
typeof o.end === "function");
|
|
794
|
+
}
|
|
795
|
+
/**
|
|
796
|
+
* Check if an object is any kind of stream
|
|
797
|
+
*/
|
|
798
|
+
export function isStream(obj) {
|
|
799
|
+
if (obj == null) {
|
|
800
|
+
return false;
|
|
801
|
+
}
|
|
802
|
+
if (obj instanceof Readable || obj instanceof Writable) {
|
|
803
|
+
return true;
|
|
804
|
+
}
|
|
805
|
+
const o = obj;
|
|
806
|
+
return ((typeof o.read === "function" && typeof o.pipe === "function") ||
|
|
807
|
+
(typeof o.write === "function" && typeof o.end === "function"));
|
|
808
|
+
}
|
|
809
|
+
// =============================================================================
|
|
810
|
+
// Stream State Inspection Functions
|
|
811
|
+
// =============================================================================
|
|
812
|
+
/**
|
|
813
|
+
* Check if a stream has been destroyed
|
|
814
|
+
*/
|
|
815
|
+
export function isDestroyed(stream) {
|
|
816
|
+
return !!stream?.destroyed;
|
|
817
|
+
}
|
|
818
|
+
/**
|
|
819
|
+
* Check if a readable stream has been disturbed (read from)
|
|
820
|
+
*/
|
|
821
|
+
export function isDisturbed(stream) {
|
|
822
|
+
if (stream?.locked !== undefined) {
|
|
823
|
+
return !!stream.locked;
|
|
824
|
+
}
|
|
825
|
+
const s = stream;
|
|
826
|
+
return !!(s?.readableDidRead ||
|
|
827
|
+
s?._didRead ||
|
|
828
|
+
s?.readableEnded ||
|
|
829
|
+
s?.destroyed ||
|
|
830
|
+
s?._ended ||
|
|
831
|
+
s?._destroyed);
|
|
832
|
+
}
|
|
833
|
+
/**
|
|
834
|
+
* Check if a stream has an error
|
|
835
|
+
*/
|
|
836
|
+
export function isErrored(stream) {
|
|
837
|
+
return !!stream?.errored;
|
|
838
|
+
}
|
|
839
|
+
// =============================================================================
|
|
840
|
+
// Default High Water Mark Management
|
|
841
|
+
// =============================================================================
|
|
842
|
+
/**
|
|
843
|
+
* Get the default high water mark for streams
|
|
844
|
+
*/
|
|
845
|
+
export function getDefaultHighWaterMark(objectMode) {
|
|
846
|
+
// Default values from Node.js stream module
|
|
847
|
+
return objectMode ? 16 : 16 * 1024;
|
|
848
|
+
}
|
|
849
|
+
/**
|
|
850
|
+
* Set the default high water mark for streams
|
|
851
|
+
* Note: This is a no-op in this implementation as we use fixed defaults
|
|
852
|
+
*/
|
|
853
|
+
export function setDefaultHighWaterMark(_objectMode, _value) {
|
|
854
|
+
// No-op - Node.js internal state cannot be modified safely
|
|
855
|
+
}
|
|
856
|
+
// =============================================================================
|
|
857
|
+
// Duplex Pair
|
|
858
|
+
// =============================================================================
|
|
859
|
+
/**
|
|
860
|
+
* Create a pair of connected Duplex streams
|
|
861
|
+
*/
|
|
862
|
+
export function duplexPair(options) {
|
|
863
|
+
// Use PassThrough as the simplest implementation
|
|
864
|
+
const objectMode = options?.readableObjectMode ?? options?.writableObjectMode ?? options?.objectMode ?? false;
|
|
865
|
+
const highWaterMark = options?.readableHighWaterMark ?? options?.writableHighWaterMark ?? options?.highWaterMark;
|
|
866
|
+
const nodeOpts = {
|
|
867
|
+
objectMode,
|
|
868
|
+
highWaterMark
|
|
869
|
+
};
|
|
870
|
+
const passthrough1 = new PassThrough(nodeOpts);
|
|
871
|
+
const passthrough2 = new PassThrough(nodeOpts);
|
|
872
|
+
const duplex1 = new Duplex({
|
|
873
|
+
allowHalfOpen: options?.allowHalfOpen,
|
|
874
|
+
readableHighWaterMark: options?.readableHighWaterMark ?? highWaterMark,
|
|
875
|
+
writableHighWaterMark: options?.writableHighWaterMark ?? highWaterMark,
|
|
876
|
+
readableObjectMode: options?.readableObjectMode ?? objectMode,
|
|
877
|
+
writableObjectMode: options?.writableObjectMode ?? objectMode,
|
|
878
|
+
read() {
|
|
879
|
+
// Will be pushed from duplex2
|
|
880
|
+
},
|
|
881
|
+
write(chunk, encoding, callback) {
|
|
882
|
+
passthrough1.write(chunk, encoding, callback);
|
|
883
|
+
},
|
|
884
|
+
final(callback) {
|
|
885
|
+
passthrough1.end(callback);
|
|
886
|
+
}
|
|
887
|
+
});
|
|
888
|
+
const duplex2 = new Duplex({
|
|
889
|
+
allowHalfOpen: options?.allowHalfOpen,
|
|
890
|
+
readableHighWaterMark: options?.readableHighWaterMark ?? highWaterMark,
|
|
891
|
+
writableHighWaterMark: options?.writableHighWaterMark ?? highWaterMark,
|
|
892
|
+
readableObjectMode: options?.readableObjectMode ?? objectMode,
|
|
893
|
+
writableObjectMode: options?.writableObjectMode ?? objectMode,
|
|
894
|
+
read() {
|
|
895
|
+
// Will be pushed from duplex1
|
|
896
|
+
},
|
|
897
|
+
write(chunk, encoding, callback) {
|
|
898
|
+
passthrough2.write(chunk, encoding, callback);
|
|
899
|
+
},
|
|
900
|
+
final(callback) {
|
|
901
|
+
passthrough2.end(callback);
|
|
902
|
+
}
|
|
903
|
+
});
|
|
904
|
+
// Connect them
|
|
905
|
+
passthrough1.on("data", chunk => duplex2.push(chunk));
|
|
906
|
+
passthrough1.on("end", () => duplex2.push(null));
|
|
907
|
+
passthrough2.on("data", chunk => duplex1.push(chunk));
|
|
908
|
+
passthrough2.on("end", () => duplex1.push(null));
|
|
909
|
+
return [duplex1, duplex2];
|
|
910
|
+
}
|
|
911
|
+
// =============================================================================
|
|
912
|
+
// Stream Consumers (like stream/consumers in Node.js)
|
|
913
|
+
// =============================================================================
|
|
914
|
+
export const consumers = {
|
|
915
|
+
async arrayBuffer(stream) {
|
|
916
|
+
const bytes = await streamToUint8Array(stream);
|
|
917
|
+
return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
|
|
918
|
+
},
|
|
919
|
+
async blob(stream, options) {
|
|
920
|
+
const bytes = await streamToUint8Array(stream);
|
|
921
|
+
return new Blob([bytes], options);
|
|
922
|
+
},
|
|
923
|
+
async buffer(stream) {
|
|
924
|
+
return streamToUint8Array(stream);
|
|
925
|
+
},
|
|
926
|
+
async json(stream) {
|
|
927
|
+
const text = await consumers.text(stream);
|
|
928
|
+
return JSON.parse(text);
|
|
929
|
+
},
|
|
930
|
+
async text(stream, encoding) {
|
|
931
|
+
return streamToString(stream, encoding);
|
|
932
|
+
}
|
|
933
|
+
};
|
|
934
|
+
// =============================================================================
|
|
935
|
+
// Promises API (like stream/promises in Node.js)
|
|
936
|
+
// =============================================================================
|
|
937
|
+
export const promises = {
|
|
938
|
+
pipeline,
|
|
939
|
+
finished
|
|
940
|
+
};
|