@cj-tech-master/excelts 9.5.4 → 9.5.5
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/dist/browser/modules/archive/compression/streaming-compress.browser.js +29 -0
- package/dist/browser/modules/archive/compression/streaming-compress.js +9 -0
- package/dist/browser/modules/archive/compression/worker-pool/pool.browser.js +26 -1
- package/dist/browser/modules/archive/fs/archive-file.d.ts +8 -5
- package/dist/browser/modules/archive/fs/archive-file.js +78 -16
- package/dist/browser/modules/archive/unzip/stream.browser.js +43 -2
- package/dist/browser/modules/excel/chart/chart-ex-builder.js +7 -2
- package/dist/browser/modules/excel/chart/chart-ex-renderer.js +4 -9
- package/dist/browser/modules/excel/chart/chart-ex-types.d.ts +0 -12
- package/dist/browser/modules/excel/chart/chart.d.ts +1 -5
- package/dist/browser/modules/excel/chart/chart.js +1 -7
- package/dist/browser/modules/excel/chart/types.d.ts +0 -6
- package/dist/browser/modules/excel/stream/workbook-reader.browser.js +25 -1
- package/dist/browser/modules/excel/stream/workbook-reader.js +9 -0
- package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +40 -0
- package/dist/browser/modules/excel/stream/workbook-writer.browser.js +228 -13
- package/dist/browser/modules/excel/utils/string-buf.d.ts +5 -26
- package/dist/browser/modules/excel/utils/string-buf.js +4 -81
- package/dist/browser/modules/excel/workbook.browser.js +135 -25
- package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.js +6 -20
- package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +19 -9
- package/dist/browser/modules/excel/xlsx/xlsx.browser.js +32 -8
- package/dist/browser/modules/excel/xlsx/xlsx.d.ts +10 -2
- package/dist/browser/modules/excel/xlsx/xlsx.js +9 -1
- package/dist/browser/modules/pdf/excel-bridge.d.ts +30 -1
- package/dist/browser/modules/pdf/excel-bridge.js +32 -0
- package/dist/browser/modules/pdf/font/metrics.d.ts +3 -52
- package/dist/browser/modules/pdf/font/metrics.js +3 -237
- package/dist/browser/modules/pdf/index.d.ts +1 -1
- package/dist/browser/modules/pdf/index.js +1 -1
- package/dist/browser/modules/pdf/render-layout-to-pdf.d.ts +66 -0
- package/dist/browser/modules/pdf/render-layout-to-pdf.js +647 -0
- package/dist/browser/modules/pdf/word-bridge.d.ts +80 -12
- package/dist/browser/modules/pdf/word-bridge.js +122 -274
- package/dist/browser/modules/stream/index.base.d.ts +2 -0
- package/dist/browser/modules/stream/index.base.js +2 -1
- package/dist/browser/modules/stream/internal/sink-adapter.d.ts +65 -0
- package/dist/browser/modules/stream/internal/sink-adapter.js +198 -0
- package/dist/browser/modules/stream/pull-stream.d.ts +19 -2
- package/dist/browser/modules/stream/pull-stream.js +51 -5
- package/dist/browser/modules/stream/types.d.ts +13 -1
- package/dist/browser/modules/word/advanced/diff.d.ts +61 -0
- package/dist/browser/modules/word/advanced/diff.js +167 -0
- package/dist/browser/modules/word/advanced/drawing-shapes.d.ts +269 -0
- package/dist/browser/modules/word/advanced/drawing-shapes.js +268 -0
- package/dist/browser/modules/word/advanced/field-engine.d.ts +43 -0
- package/dist/browser/modules/word/advanced/field-engine.js +1225 -0
- package/dist/browser/modules/word/advanced/glossary.d.ts +86 -0
- package/dist/browser/modules/word/advanced/glossary.js +79 -0
- package/dist/browser/modules/word/advanced/math-convert.d.ts +30 -0
- package/dist/browser/modules/word/advanced/math-convert.js +595 -0
- package/dist/browser/modules/word/advanced/ole-objects.d.ts +115 -0
- package/dist/browser/modules/word/advanced/ole-objects.js +271 -0
- package/dist/browser/modules/word/advanced/style-map.d.ts +105 -0
- package/dist/browser/modules/word/advanced/style-map.js +322 -0
- package/dist/browser/modules/word/advanced/validation.d.ts +56 -0
- package/dist/browser/modules/word/advanced/validation.js +1065 -0
- package/dist/browser/modules/word/advanced/vba-project.d.ts +91 -0
- package/dist/browser/modules/word/advanced/vba-project.js +265 -0
- package/dist/browser/modules/word/bridge/excel-bridge.d.ts +127 -0
- package/dist/browser/modules/word/bridge/excel-bridge.js +980 -0
- package/dist/browser/modules/word/builder/document-handle.d.ts +151 -0
- package/dist/browser/modules/word/builder/document-handle.js +664 -0
- package/dist/browser/modules/word/builder/paragraph-builders.d.ts +61 -0
- package/dist/browser/modules/word/builder/paragraph-builders.js +90 -0
- package/dist/browser/modules/word/builder/run-builders.d.ts +374 -0
- package/dist/browser/modules/word/builder/run-builders.js +600 -0
- package/dist/browser/modules/word/builder/table-builders.d.ts +23 -0
- package/dist/browser/modules/word/builder/table-builders.js +45 -0
- package/dist/browser/modules/word/constants.d.ts +39 -1
- package/dist/browser/modules/word/constants.js +109 -1
- package/dist/browser/modules/word/convert/conversion-ir.d.ts +210 -0
- package/dist/browser/modules/word/convert/conversion-ir.js +31 -0
- package/dist/browser/modules/word/convert/docx-to-semantic.d.ts +39 -0
- package/dist/browser/modules/word/convert/docx-to-semantic.js +499 -0
- package/dist/browser/modules/word/convert/flat-opc.d.ts +44 -0
- package/dist/browser/modules/word/convert/flat-opc.js +385 -0
- package/dist/browser/modules/word/convert/html/html-import.d.ts +50 -0
- package/dist/browser/modules/word/convert/html/html-import.js +1907 -0
- package/dist/{types/modules/word → browser/modules/word/convert/html}/html-renderer.d.ts +14 -1
- package/dist/{esm/modules/word → browser/modules/word/convert/html}/html-renderer.js +420 -69
- package/dist/browser/modules/word/convert/html/html.d.ts +15 -0
- package/dist/browser/modules/word/convert/html/html.js +15 -0
- package/dist/browser/modules/word/convert/markdown/markdown-import.d.ts +68 -0
- package/dist/browser/modules/word/convert/markdown/markdown-import.js +1325 -0
- package/dist/browser/modules/word/convert/markdown/markdown-renderer.d.ts +25 -0
- package/dist/browser/modules/word/convert/markdown/markdown-renderer.js +634 -0
- package/dist/browser/modules/word/convert/markdown/markdown.d.ts +15 -0
- package/dist/browser/modules/word/convert/markdown/markdown.js +15 -0
- package/dist/browser/modules/word/convert/odt/odt.d.ts +41 -0
- package/dist/browser/modules/word/convert/odt/odt.js +1932 -0
- package/dist/browser/modules/word/{color-utils.d.ts → core/color-utils.d.ts} +8 -1
- package/dist/browser/modules/word/core/color-utils.js +43 -0
- package/dist/browser/modules/word/core/internal-utils.d.ts +90 -0
- package/dist/browser/modules/word/core/internal-utils.js +209 -0
- package/dist/browser/modules/word/core/mapper.d.ts +44 -0
- package/dist/browser/modules/word/core/mapper.js +427 -0
- package/dist/browser/modules/word/core/opc-paths.d.ts +33 -0
- package/dist/browser/modules/word/core/opc-paths.js +48 -0
- package/dist/browser/modules/word/core/text-utils.d.ts +38 -0
- package/dist/browser/modules/word/core/text-utils.js +202 -0
- package/dist/browser/modules/word/core/walker.d.ts +119 -0
- package/dist/browser/modules/word/core/walker.js +570 -0
- package/dist/browser/modules/word/crypto.d.ts +14 -9
- package/dist/browser/modules/word/crypto.js +13 -7
- package/dist/browser/modules/word/document-io.d.ts +59 -27
- package/dist/browser/modules/word/document-io.js +80 -197
- package/dist/browser/modules/word/errors.d.ts +44 -1
- package/dist/browser/modules/word/errors.js +54 -2
- package/dist/browser/modules/word/excel.d.ts +14 -0
- package/dist/browser/modules/word/excel.js +13 -0
- package/dist/browser/modules/word/font/font-embed.d.ts +112 -0
- package/dist/browser/modules/word/font/font-embed.js +646 -0
- package/dist/{esm/modules/word → browser/modules/word/font}/font-obfuscation.js +4 -9
- package/dist/browser/modules/word/font/hyphenation.d.ts +65 -0
- package/dist/browser/modules/word/font/hyphenation.js +4210 -0
- package/dist/browser/modules/word/font/text-shaping.d.ts +58 -0
- package/dist/browser/modules/word/font/text-shaping.js +635 -0
- package/dist/browser/modules/word/html.d.ts +7 -6
- package/dist/browser/modules/word/html.js +6 -5
- package/dist/browser/modules/word/incremental-edit.d.ts +123 -0
- package/dist/browser/modules/word/incremental-edit.js +361 -0
- package/dist/browser/modules/word/index.base.d.ts +194 -10
- package/dist/browser/modules/word/index.base.js +138 -29
- package/dist/browser/modules/word/layout/layout-constants.d.ts +17 -0
- package/dist/browser/modules/word/layout/layout-constants.js +17 -0
- package/dist/browser/modules/word/layout/layout-full.d.ts +53 -0
- package/dist/browser/modules/word/layout/layout-full.js +1696 -0
- package/dist/browser/modules/word/layout/layout-model.d.ts +344 -0
- package/dist/browser/modules/word/layout/layout-model.js +16 -0
- package/dist/browser/modules/word/layout/layout.d.ts +63 -0
- package/dist/browser/modules/word/layout/layout.js +1167 -0
- package/dist/browser/modules/word/layout/render-page.d.ts +57 -0
- package/dist/browser/modules/word/layout/render-page.js +1238 -0
- package/dist/browser/modules/word/markdown.d.ts +14 -0
- package/dist/browser/modules/word/markdown.js +13 -0
- package/dist/browser/modules/word/patcher.d.ts +62 -0
- package/dist/browser/modules/word/patcher.js +537 -0
- package/dist/browser/modules/word/query/compat.d.ts +25 -0
- package/dist/browser/modules/word/query/compat.js +58 -0
- package/dist/browser/modules/word/query/data-binding.d.ts +22 -0
- package/dist/browser/modules/word/query/data-binding.js +392 -0
- package/dist/browser/modules/word/query/form-fields.d.ts +41 -0
- package/dist/browser/modules/word/query/form-fields.js +268 -0
- package/dist/browser/modules/word/query/format-search.d.ts +99 -0
- package/dist/browser/modules/word/query/format-search.js +329 -0
- package/dist/browser/modules/word/query/mail-merge.d.ts +25 -0
- package/dist/browser/modules/word/query/mail-merge.js +111 -0
- package/dist/browser/modules/word/query/merge.d.ts +50 -0
- package/dist/browser/modules/word/query/merge.js +617 -0
- package/dist/browser/modules/word/query/replace.d.ts +47 -0
- package/dist/browser/modules/word/query/replace.js +301 -0
- package/dist/browser/modules/word/query/revisions.d.ts +67 -0
- package/dist/browser/modules/word/query/revisions.js +879 -0
- package/dist/browser/modules/word/query/search.d.ts +129 -0
- package/dist/browser/modules/word/query/search.js +346 -0
- package/dist/browser/modules/word/query/split.d.ts +44 -0
- package/dist/browser/modules/word/query/split.js +135 -0
- package/dist/browser/modules/word/query/style-resolve.d.ts +104 -0
- package/dist/browser/modules/word/query/style-resolve.js +368 -0
- package/dist/browser/modules/word/reader/chart-parser.d.ts +20 -0
- package/dist/browser/modules/word/reader/chart-parser.js +810 -0
- package/dist/browser/modules/word/reader/comments-parser.d.ts +26 -0
- package/dist/browser/modules/word/reader/comments-parser.js +92 -0
- package/dist/browser/modules/word/reader/doc-props-parsers.d.ts +15 -0
- package/dist/browser/modules/word/reader/doc-props-parsers.js +190 -0
- package/dist/browser/modules/word/reader/docx-reader.d.ts +27 -0
- package/dist/browser/modules/word/reader/docx-reader.js +2557 -0
- package/dist/browser/modules/word/reader/drawing-helpers.d.ts +27 -0
- package/dist/browser/modules/word/reader/drawing-helpers.js +84 -0
- package/dist/browser/modules/word/reader/form-field-parser.d.ts +21 -0
- package/dist/browser/modules/word/reader/form-field-parser.js +82 -0
- package/dist/browser/modules/word/reader/image-parsers.d.ts +11 -0
- package/dist/browser/modules/word/reader/image-parsers.js +291 -0
- package/dist/browser/modules/word/reader/math-parser.d.ts +12 -0
- package/dist/browser/modules/word/reader/math-parser.js +422 -0
- package/dist/browser/modules/word/reader/metadata-parsers.d.ts +17 -0
- package/dist/browser/modules/word/reader/metadata-parsers.js +87 -0
- package/dist/browser/modules/word/reader/numbering-parser.d.ts +13 -0
- package/dist/browser/modules/word/reader/numbering-parser.js +166 -0
- package/dist/browser/modules/word/reader/paragraph-section-parsers.d.ts +12 -0
- package/dist/browser/modules/word/reader/paragraph-section-parsers.js +503 -0
- package/dist/browser/modules/word/reader/parse-utils.d.ts +91 -0
- package/dist/browser/modules/word/reader/parse-utils.js +249 -0
- package/dist/browser/modules/word/reader/properties-parsers.d.ts +21 -0
- package/dist/browser/modules/word/reader/properties-parsers.js +332 -0
- package/dist/browser/modules/word/reader/reader-context.d.ts +69 -0
- package/dist/browser/modules/word/reader/reader-context.js +61 -0
- package/dist/browser/modules/word/reader/sdt-helpers.d.ts +29 -0
- package/dist/browser/modules/word/reader/sdt-helpers.js +111 -0
- package/dist/browser/modules/word/reader/settings-parser.d.ts +8 -0
- package/dist/browser/modules/word/reader/settings-parser.js +263 -0
- package/dist/browser/modules/word/reader/styles-parser.d.ts +12 -0
- package/dist/browser/modules/word/reader/styles-parser.js +147 -0
- package/dist/browser/modules/word/reader/table-properties-parsers.d.ts +12 -0
- package/dist/browser/modules/word/reader/table-properties-parsers.js +234 -0
- package/dist/browser/modules/word/reader/theme-parser.d.ts +8 -0
- package/dist/browser/modules/word/reader/theme-parser.js +167 -0
- package/dist/browser/modules/word/reader/watermark-parser.d.ts +15 -0
- package/dist/browser/modules/word/reader/watermark-parser.js +110 -0
- package/dist/browser/modules/word/security/cfb-reader.d.ts +37 -0
- package/dist/browser/modules/word/security/cfb-reader.js +410 -0
- package/dist/browser/modules/word/{digital-signatures.d.ts → security/digital-signatures.d.ts} +19 -11
- package/dist/browser/modules/word/{digital-signatures.js → security/digital-signatures.js} +34 -34
- package/dist/browser/modules/word/security/document-protection.d.ts +93 -0
- package/dist/browser/modules/word/security/document-protection.js +201 -0
- package/dist/{types/modules/word → browser/modules/word/security}/encryption.d.ts +51 -4
- package/dist/browser/modules/word/security/encryption.js +602 -0
- package/dist/browser/modules/word/security/policy.d.ts +80 -0
- package/dist/browser/modules/word/security/policy.js +102 -0
- package/dist/browser/modules/word/template/template-chart.d.ts +56 -0
- package/dist/browser/modules/word/template/template-chart.js +167 -0
- package/dist/browser/modules/word/template/template-datasource.d.ts +154 -0
- package/dist/browser/modules/word/template/template-datasource.js +541 -0
- package/dist/browser/modules/word/template/template-engine.d.ts +121 -0
- package/dist/browser/modules/word/template/template-engine.js +1435 -0
- package/dist/browser/modules/word/types.d.ts +224 -25
- package/dist/browser/modules/word/units.d.ts +26 -0
- package/dist/browser/modules/word/units.js +43 -14
- package/dist/browser/modules/word/{writers → writer}/chart-writer.js +164 -23
- package/dist/browser/modules/word/writer/checkbox-writer.d.ts +17 -0
- package/dist/browser/modules/word/writer/checkbox-writer.js +79 -0
- package/dist/{types/modules/word/writers → browser/modules/word/writer}/comment-writer.d.ts +2 -1
- package/dist/browser/modules/word/{writers → writer}/comment-writer.js +8 -6
- package/dist/browser/modules/word/writer/common-parts.d.ts +57 -0
- package/dist/browser/modules/word/writer/common-parts.js +101 -0
- package/dist/{types/modules/word → browser/modules/word/writer}/content-types.d.ts +2 -2
- package/dist/{esm/modules/word → browser/modules/word/writer}/content-types.js +14 -6
- package/dist/browser/modules/word/writer/document-writer.d.ts +24 -0
- package/dist/browser/modules/word/writer/document-writer.js +473 -0
- package/dist/browser/modules/word/writer/docx-packager.d.ts +35 -0
- package/dist/browser/modules/word/writer/docx-packager.js +1515 -0
- package/dist/{types/modules/word/writers → browser/modules/word/writer}/footnote-writer.d.ts +3 -2
- package/dist/{esm/modules/word/writers → browser/modules/word/writer}/footnote-writer.js +13 -10
- package/dist/{types/modules/word/writers → browser/modules/word/writer}/header-footer-writer.d.ts +3 -2
- package/dist/{esm/modules/word/writers → browser/modules/word/writer}/header-footer-writer.js +39 -21
- package/dist/{types/modules/word/writers → browser/modules/word/writer}/image-writer.d.ts +1 -1
- package/dist/browser/modules/word/{writers → writer}/image-writer.js +11 -7
- package/dist/browser/modules/word/writer/math-writer.d.ts +20 -0
- package/dist/{esm/modules/word/writers → browser/modules/word/writer}/math-writer.js +21 -1
- package/dist/browser/modules/word/{writers → writer}/numbering-writer.d.ts +1 -1
- package/dist/{esm/modules/word/writers → browser/modules/word/writer}/numbering-writer.js +11 -4
- package/dist/browser/modules/word/{writers → writer}/paragraph-writer.d.ts +2 -1
- package/dist/browser/modules/word/{writers → writer}/paragraph-writer.js +73 -38
- package/dist/browser/modules/word/{writers → writer}/parts-writer.d.ts +3 -3
- package/dist/{esm/modules/word/writers → browser/modules/word/writer}/parts-writer.js +91 -12
- package/dist/browser/modules/word/writer/reference-scanners.d.ts +42 -0
- package/dist/browser/modules/word/writer/reference-scanners.js +111 -0
- package/dist/browser/modules/word/writer/relationships.d.ts +52 -0
- package/dist/browser/modules/word/writer/relationships.js +117 -0
- package/dist/browser/modules/word/writer/render-context.d.ts +124 -0
- package/dist/browser/modules/word/writer/render-context.js +46 -0
- package/dist/browser/modules/word/{writers → writer}/run-writer.d.ts +10 -1
- package/dist/{esm/modules/word/writers → browser/modules/word/writer}/run-writer.js +126 -24
- package/dist/browser/modules/word/writer/sdt-writer.d.ts +25 -0
- package/dist/browser/modules/word/writer/sdt-writer.js +189 -0
- package/dist/browser/modules/word/writer/stream-buf.d.ts +37 -0
- package/dist/browser/modules/word/writer/stream-buf.js +73 -0
- package/dist/browser/modules/word/writer/streaming-writer.d.ts +344 -0
- package/dist/browser/modules/word/writer/streaming-writer.js +1382 -0
- package/dist/browser/modules/word/writer/string-buf.d.ts +8 -0
- package/dist/browser/modules/word/writer/string-buf.js +7 -0
- package/dist/browser/modules/word/{writers → writer}/styles-writer.js +32 -1
- package/dist/browser/modules/word/{writers → writer}/table-writer.d.ts +2 -1
- package/dist/browser/modules/word/{writers → writer}/table-writer.js +94 -11
- package/dist/browser/modules/xml/types.d.ts +22 -0
- package/dist/browser/utils/crypto.browser.d.ts +3 -1
- package/dist/browser/utils/crypto.browser.js +3 -1
- package/dist/browser/utils/crypto.d.ts +4 -1
- package/dist/browser/utils/crypto.js +4 -1
- package/dist/browser/utils/font-metrics.d.ts +63 -0
- package/dist/browser/utils/font-metrics.js +293 -0
- package/dist/browser/utils/string-buf.d.ts +42 -0
- package/dist/browser/utils/string-buf.js +89 -0
- package/dist/browser/utils/theme-colors.d.ts +55 -0
- package/dist/browser/utils/theme-colors.js +120 -0
- package/dist/cjs/modules/archive/compression/streaming-compress.browser.js +29 -0
- package/dist/cjs/modules/archive/compression/streaming-compress.js +9 -0
- package/dist/cjs/modules/archive/compression/worker-pool/pool.browser.js +26 -1
- package/dist/cjs/modules/archive/fs/archive-file.js +78 -16
- package/dist/cjs/modules/archive/unzip/stream.browser.js +43 -2
- package/dist/cjs/modules/excel/chart/chart-ex-builder.js +7 -2
- package/dist/cjs/modules/excel/chart/chart-ex-renderer.js +4 -9
- package/dist/cjs/modules/excel/chart/chart.js +1 -7
- package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +25 -1
- package/dist/cjs/modules/excel/stream/workbook-reader.js +9 -0
- package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +228 -13
- package/dist/cjs/modules/excel/utils/string-buf.js +5 -81
- package/dist/cjs/modules/excel/workbook.browser.js +135 -25
- package/dist/cjs/modules/excel/xlsx/xform/chart/chart-space-xform.js +6 -20
- package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +32 -8
- package/dist/cjs/modules/excel/xlsx/xlsx.js +9 -1
- package/dist/cjs/modules/pdf/excel-bridge.js +33 -0
- package/dist/cjs/modules/pdf/font/metrics.js +11 -244
- package/dist/cjs/modules/pdf/index.js +2 -1
- package/dist/cjs/modules/pdf/render-layout-to-pdf.js +651 -0
- package/dist/cjs/modules/pdf/word-bridge.js +155 -274
- package/dist/cjs/modules/stream/index.base.js +4 -2
- package/dist/cjs/modules/stream/internal/sink-adapter.js +202 -0
- package/dist/cjs/modules/stream/pull-stream.js +51 -5
- package/dist/cjs/modules/word/advanced/diff.js +170 -0
- package/dist/cjs/modules/word/advanced/drawing-shapes.js +279 -0
- package/dist/cjs/modules/word/advanced/field-engine.js +1229 -0
- package/dist/cjs/modules/word/advanced/glossary.js +87 -0
- package/dist/cjs/modules/word/advanced/math-convert.js +599 -0
- package/dist/cjs/modules/word/advanced/ole-objects.js +277 -0
- package/dist/cjs/modules/word/advanced/style-map.js +329 -0
- package/dist/cjs/modules/word/advanced/validation.js +1068 -0
- package/dist/cjs/modules/word/advanced/vba-project.js +274 -0
- package/dist/cjs/modules/word/bridge/excel-bridge.js +1020 -0
- package/dist/cjs/modules/word/builder/document-handle.js +667 -0
- package/dist/cjs/modules/word/builder/paragraph-builders.js +109 -0
- package/dist/cjs/modules/word/builder/run-builders.js +676 -0
- package/dist/cjs/modules/word/builder/table-builders.js +53 -0
- package/dist/cjs/modules/word/constants.js +111 -2
- package/dist/cjs/modules/word/convert/conversion-ir.js +34 -0
- package/dist/cjs/modules/word/convert/docx-to-semantic.js +502 -0
- package/dist/cjs/modules/word/convert/flat-opc.js +390 -0
- package/dist/cjs/modules/word/convert/html/html-import.js +1910 -0
- package/dist/cjs/modules/word/{html-renderer.js → convert/html/html-renderer.js} +420 -69
- package/dist/cjs/modules/word/convert/html/html.js +20 -0
- package/dist/cjs/modules/word/convert/markdown/markdown-import.js +1329 -0
- package/dist/cjs/modules/word/convert/markdown/markdown-renderer.js +637 -0
- package/dist/cjs/modules/word/convert/markdown/markdown.js +21 -0
- package/dist/cjs/modules/word/convert/odt/odt.js +1936 -0
- package/dist/cjs/modules/word/core/color-utils.js +47 -0
- package/dist/cjs/modules/word/core/internal-utils.js +219 -0
- package/dist/cjs/modules/word/core/mapper.js +430 -0
- package/dist/cjs/modules/word/core/opc-paths.js +53 -0
- package/dist/cjs/modules/word/core/text-utils.js +210 -0
- package/dist/cjs/modules/word/core/walker.js +577 -0
- package/dist/cjs/modules/word/crypto.js +19 -8
- package/dist/cjs/modules/word/document-io.js +117 -197
- package/dist/cjs/modules/word/errors.js +59 -13
- package/dist/cjs/modules/word/excel.js +22 -0
- package/dist/cjs/modules/word/font/font-embed.js +652 -0
- package/dist/cjs/modules/word/{font-obfuscation.js → font/font-obfuscation.js} +4 -9
- package/dist/cjs/modules/word/font/hyphenation.js +4216 -0
- package/dist/cjs/modules/word/font/text-shaping.js +640 -0
- package/dist/cjs/modules/word/html.js +9 -7
- package/dist/cjs/modules/word/incremental-edit.js +366 -0
- package/dist/cjs/modules/word/index.base.js +370 -137
- package/dist/cjs/modules/word/layout/layout-constants.js +20 -0
- package/dist/cjs/modules/word/layout/layout-full.js +1699 -0
- package/dist/cjs/modules/word/layout/layout-model.js +17 -0
- package/dist/cjs/modules/word/layout/layout.js +1170 -0
- package/dist/cjs/modules/word/layout/render-page.js +1243 -0
- package/dist/cjs/modules/word/markdown.js +19 -0
- package/dist/cjs/modules/word/patcher.js +539 -0
- package/dist/cjs/modules/word/query/compat.js +61 -0
- package/dist/cjs/modules/word/query/data-binding.js +395 -0
- package/dist/cjs/modules/word/query/form-fields.js +272 -0
- package/dist/cjs/modules/word/query/format-search.js +334 -0
- package/dist/cjs/modules/word/query/mail-merge.js +114 -0
- package/dist/cjs/modules/word/query/merge.js +620 -0
- package/dist/cjs/modules/word/query/replace.js +304 -0
- package/dist/cjs/modules/word/query/revisions.js +885 -0
- package/dist/cjs/modules/word/query/search.js +361 -0
- package/dist/cjs/modules/word/query/split.js +138 -0
- package/dist/cjs/modules/word/query/style-resolve.js +374 -0
- package/dist/cjs/modules/word/reader/chart-parser.js +814 -0
- package/dist/cjs/modules/word/reader/comments-parser.js +96 -0
- package/dist/cjs/modules/word/reader/doc-props-parsers.js +194 -0
- package/dist/cjs/modules/word/reader/docx-reader.js +2560 -0
- package/dist/cjs/modules/word/reader/drawing-helpers.js +90 -0
- package/dist/cjs/modules/word/reader/form-field-parser.js +85 -0
- package/dist/cjs/modules/word/reader/image-parsers.js +293 -0
- package/dist/cjs/modules/word/reader/math-parser.js +424 -0
- package/dist/cjs/modules/word/reader/metadata-parsers.js +93 -0
- package/dist/cjs/modules/word/reader/numbering-parser.js +168 -0
- package/dist/cjs/modules/word/reader/paragraph-section-parsers.js +505 -0
- package/dist/cjs/modules/word/reader/parse-utils.js +271 -0
- package/dist/cjs/modules/word/reader/properties-parsers.js +338 -0
- package/dist/cjs/modules/word/reader/reader-context.js +66 -0
- package/dist/cjs/modules/word/reader/sdt-helpers.js +114 -0
- package/dist/cjs/modules/word/reader/settings-parser.js +265 -0
- package/dist/cjs/modules/word/reader/styles-parser.js +149 -0
- package/dist/cjs/modules/word/reader/table-properties-parsers.js +237 -0
- package/dist/cjs/modules/word/reader/theme-parser.js +169 -0
- package/dist/cjs/modules/word/reader/watermark-parser.js +113 -0
- package/dist/cjs/modules/word/security/cfb-reader.js +414 -0
- package/dist/cjs/modules/word/{digital-signatures.js → security/digital-signatures.js} +34 -34
- package/dist/cjs/modules/word/security/document-protection.js +208 -0
- package/dist/cjs/modules/word/security/encryption.js +612 -0
- package/dist/cjs/modules/word/security/policy.js +106 -0
- package/dist/cjs/modules/word/template/template-chart.js +170 -0
- package/dist/cjs/modules/word/template/template-datasource.js +549 -0
- package/dist/cjs/modules/word/template/template-engine.js +1430 -0
- package/dist/cjs/modules/word/units.js +44 -14
- package/dist/cjs/modules/word/{writers → writer}/chart-writer.js +163 -22
- package/dist/cjs/modules/word/writer/checkbox-writer.js +82 -0
- package/dist/cjs/modules/word/{writers → writer}/comment-writer.js +8 -6
- package/dist/cjs/modules/word/writer/common-parts.js +104 -0
- package/dist/cjs/modules/word/{content-types.js → writer/content-types.js} +14 -6
- package/dist/cjs/modules/word/writer/document-writer.js +478 -0
- package/dist/cjs/modules/word/writer/docx-packager.js +1551 -0
- package/dist/cjs/modules/word/{writers → writer}/footnote-writer.js +13 -10
- package/dist/cjs/modules/word/{writers → writer}/header-footer-writer.js +38 -20
- package/dist/cjs/modules/word/{writers → writer}/image-writer.js +11 -7
- package/dist/cjs/modules/word/{writers → writer}/math-writer.js +21 -1
- package/dist/cjs/modules/word/{writers → writer}/numbering-writer.js +11 -4
- package/dist/cjs/modules/word/{writers → writer}/paragraph-writer.js +72 -37
- package/dist/cjs/modules/word/{writers → writer}/parts-writer.js +91 -12
- package/dist/cjs/modules/word/writer/reference-scanners.js +120 -0
- package/dist/cjs/modules/word/writer/relationships.js +124 -0
- package/dist/cjs/modules/word/writer/render-context.js +51 -0
- package/dist/cjs/modules/word/{writers → writer}/run-writer.js +127 -24
- package/dist/cjs/modules/word/writer/sdt-writer.js +192 -0
- package/dist/cjs/modules/word/writer/stream-buf.js +76 -0
- package/dist/cjs/modules/word/writer/streaming-writer.js +1387 -0
- package/dist/cjs/modules/word/writer/string-buf.js +11 -0
- package/dist/cjs/modules/word/{writers → writer}/styles-writer.js +32 -1
- package/dist/cjs/modules/word/{writers → writer}/table-writer.js +94 -11
- package/dist/cjs/utils/crypto.browser.js +3 -1
- package/dist/cjs/utils/crypto.js +4 -1
- package/dist/cjs/utils/font-metrics.js +303 -0
- package/dist/cjs/utils/string-buf.js +92 -0
- package/dist/cjs/utils/theme-colors.js +126 -0
- package/dist/esm/modules/archive/compression/streaming-compress.browser.js +29 -0
- package/dist/esm/modules/archive/compression/streaming-compress.js +9 -0
- package/dist/esm/modules/archive/compression/worker-pool/pool.browser.js +26 -1
- package/dist/esm/modules/archive/fs/archive-file.js +78 -16
- package/dist/esm/modules/archive/unzip/stream.browser.js +43 -2
- package/dist/esm/modules/excel/chart/chart-ex-builder.js +7 -2
- package/dist/esm/modules/excel/chart/chart-ex-renderer.js +4 -9
- package/dist/esm/modules/excel/chart/chart.js +1 -7
- package/dist/esm/modules/excel/stream/workbook-reader.browser.js +25 -1
- package/dist/esm/modules/excel/stream/workbook-reader.js +9 -0
- package/dist/esm/modules/excel/stream/workbook-writer.browser.js +228 -13
- package/dist/esm/modules/excel/utils/string-buf.js +4 -81
- package/dist/esm/modules/excel/workbook.browser.js +135 -25
- package/dist/esm/modules/excel/xlsx/xform/chart/chart-space-xform.js +6 -20
- package/dist/esm/modules/excel/xlsx/xlsx.browser.js +32 -8
- package/dist/esm/modules/excel/xlsx/xlsx.js +9 -1
- package/dist/esm/modules/pdf/excel-bridge.js +32 -0
- package/dist/esm/modules/pdf/font/metrics.js +3 -237
- package/dist/esm/modules/pdf/index.js +1 -1
- package/dist/esm/modules/pdf/render-layout-to-pdf.js +647 -0
- package/dist/esm/modules/pdf/word-bridge.js +122 -274
- package/dist/esm/modules/stream/index.base.js +2 -1
- package/dist/esm/modules/stream/internal/sink-adapter.js +198 -0
- package/dist/esm/modules/stream/pull-stream.js +51 -5
- package/dist/esm/modules/word/advanced/diff.js +167 -0
- package/dist/esm/modules/word/advanced/drawing-shapes.js +268 -0
- package/dist/esm/modules/word/advanced/field-engine.js +1225 -0
- package/dist/esm/modules/word/advanced/glossary.js +79 -0
- package/dist/esm/modules/word/advanced/math-convert.js +595 -0
- package/dist/esm/modules/word/advanced/ole-objects.js +271 -0
- package/dist/esm/modules/word/advanced/style-map.js +322 -0
- package/dist/esm/modules/word/advanced/validation.js +1065 -0
- package/dist/esm/modules/word/advanced/vba-project.js +265 -0
- package/dist/esm/modules/word/bridge/excel-bridge.js +980 -0
- package/dist/esm/modules/word/builder/document-handle.js +664 -0
- package/dist/esm/modules/word/builder/paragraph-builders.js +90 -0
- package/dist/esm/modules/word/builder/run-builders.js +600 -0
- package/dist/esm/modules/word/builder/table-builders.js +45 -0
- package/dist/esm/modules/word/constants.js +109 -1
- package/dist/esm/modules/word/convert/conversion-ir.js +31 -0
- package/dist/esm/modules/word/convert/docx-to-semantic.js +499 -0
- package/dist/esm/modules/word/convert/flat-opc.js +385 -0
- package/dist/esm/modules/word/convert/html/html-import.js +1907 -0
- package/dist/{browser/modules/word → esm/modules/word/convert/html}/html-renderer.js +420 -69
- package/dist/esm/modules/word/convert/html/html.js +15 -0
- package/dist/esm/modules/word/convert/markdown/markdown-import.js +1325 -0
- package/dist/esm/modules/word/convert/markdown/markdown-renderer.js +634 -0
- package/dist/esm/modules/word/convert/markdown/markdown.js +15 -0
- package/dist/esm/modules/word/convert/odt/odt.js +1932 -0
- package/dist/esm/modules/word/core/color-utils.js +43 -0
- package/dist/esm/modules/word/core/internal-utils.js +209 -0
- package/dist/esm/modules/word/core/mapper.js +427 -0
- package/dist/esm/modules/word/core/opc-paths.js +48 -0
- package/dist/esm/modules/word/core/text-utils.js +202 -0
- package/dist/esm/modules/word/core/walker.js +570 -0
- package/dist/esm/modules/word/crypto.js +13 -7
- package/dist/esm/modules/word/document-io.js +80 -197
- package/dist/esm/modules/word/errors.js +54 -2
- package/dist/esm/modules/word/excel.js +13 -0
- package/dist/esm/modules/word/font/font-embed.js +646 -0
- package/dist/{browser/modules/word → esm/modules/word/font}/font-obfuscation.js +4 -9
- package/dist/esm/modules/word/font/hyphenation.js +4210 -0
- package/dist/esm/modules/word/font/text-shaping.js +635 -0
- package/dist/esm/modules/word/html.js +6 -5
- package/dist/esm/modules/word/incremental-edit.js +361 -0
- package/dist/esm/modules/word/index.base.js +138 -29
- package/dist/esm/modules/word/layout/layout-constants.js +17 -0
- package/dist/esm/modules/word/layout/layout-full.js +1696 -0
- package/dist/esm/modules/word/layout/layout-model.js +16 -0
- package/dist/esm/modules/word/layout/layout.js +1167 -0
- package/dist/esm/modules/word/layout/render-page.js +1238 -0
- package/dist/esm/modules/word/markdown.js +13 -0
- package/dist/esm/modules/word/patcher.js +537 -0
- package/dist/esm/modules/word/query/compat.js +58 -0
- package/dist/esm/modules/word/query/data-binding.js +392 -0
- package/dist/esm/modules/word/query/form-fields.js +268 -0
- package/dist/esm/modules/word/query/format-search.js +329 -0
- package/dist/esm/modules/word/query/mail-merge.js +111 -0
- package/dist/esm/modules/word/query/merge.js +617 -0
- package/dist/esm/modules/word/query/replace.js +301 -0
- package/dist/esm/modules/word/query/revisions.js +879 -0
- package/dist/esm/modules/word/query/search.js +346 -0
- package/dist/esm/modules/word/query/split.js +135 -0
- package/dist/esm/modules/word/query/style-resolve.js +368 -0
- package/dist/esm/modules/word/reader/chart-parser.js +810 -0
- package/dist/esm/modules/word/reader/comments-parser.js +92 -0
- package/dist/esm/modules/word/reader/doc-props-parsers.js +190 -0
- package/dist/esm/modules/word/reader/docx-reader.js +2557 -0
- package/dist/esm/modules/word/reader/drawing-helpers.js +84 -0
- package/dist/esm/modules/word/reader/form-field-parser.js +82 -0
- package/dist/esm/modules/word/reader/image-parsers.js +291 -0
- package/dist/esm/modules/word/reader/math-parser.js +422 -0
- package/dist/esm/modules/word/reader/metadata-parsers.js +87 -0
- package/dist/esm/modules/word/reader/numbering-parser.js +166 -0
- package/dist/esm/modules/word/reader/paragraph-section-parsers.js +503 -0
- package/dist/esm/modules/word/reader/parse-utils.js +249 -0
- package/dist/esm/modules/word/reader/properties-parsers.js +332 -0
- package/dist/esm/modules/word/reader/reader-context.js +61 -0
- package/dist/esm/modules/word/reader/sdt-helpers.js +111 -0
- package/dist/esm/modules/word/reader/settings-parser.js +263 -0
- package/dist/esm/modules/word/reader/styles-parser.js +147 -0
- package/dist/esm/modules/word/reader/table-properties-parsers.js +234 -0
- package/dist/esm/modules/word/reader/theme-parser.js +167 -0
- package/dist/esm/modules/word/reader/watermark-parser.js +110 -0
- package/dist/esm/modules/word/security/cfb-reader.js +410 -0
- package/dist/esm/modules/word/{digital-signatures.js → security/digital-signatures.js} +34 -34
- package/dist/esm/modules/word/security/document-protection.js +201 -0
- package/dist/esm/modules/word/security/encryption.js +602 -0
- package/dist/esm/modules/word/security/policy.js +102 -0
- package/dist/esm/modules/word/template/template-chart.js +167 -0
- package/dist/esm/modules/word/template/template-datasource.js +541 -0
- package/dist/esm/modules/word/template/template-engine.js +1435 -0
- package/dist/esm/modules/word/units.js +43 -14
- package/dist/esm/modules/word/{writers → writer}/chart-writer.js +164 -23
- package/dist/esm/modules/word/writer/checkbox-writer.js +79 -0
- package/dist/esm/modules/word/{writers → writer}/comment-writer.js +8 -6
- package/dist/esm/modules/word/writer/common-parts.js +101 -0
- package/dist/{browser/modules/word → esm/modules/word/writer}/content-types.js +14 -6
- package/dist/esm/modules/word/writer/document-writer.js +473 -0
- package/dist/esm/modules/word/writer/docx-packager.js +1515 -0
- package/dist/{browser/modules/word/writers → esm/modules/word/writer}/footnote-writer.js +13 -10
- package/dist/{browser/modules/word/writers → esm/modules/word/writer}/header-footer-writer.js +39 -21
- package/dist/esm/modules/word/{writers → writer}/image-writer.js +11 -7
- package/dist/{browser/modules/word/writers → esm/modules/word/writer}/math-writer.js +21 -1
- package/dist/{browser/modules/word/writers → esm/modules/word/writer}/numbering-writer.js +11 -4
- package/dist/esm/modules/word/{writers → writer}/paragraph-writer.js +73 -38
- package/dist/{browser/modules/word/writers → esm/modules/word/writer}/parts-writer.js +91 -12
- package/dist/esm/modules/word/writer/reference-scanners.js +111 -0
- package/dist/esm/modules/word/writer/relationships.js +117 -0
- package/dist/esm/modules/word/writer/render-context.js +46 -0
- package/dist/{browser/modules/word/writers → esm/modules/word/writer}/run-writer.js +126 -24
- package/dist/esm/modules/word/writer/sdt-writer.js +189 -0
- package/dist/esm/modules/word/writer/stream-buf.js +73 -0
- package/dist/esm/modules/word/writer/streaming-writer.js +1382 -0
- package/dist/esm/modules/word/writer/string-buf.js +7 -0
- package/dist/esm/modules/word/{writers → writer}/styles-writer.js +32 -1
- package/dist/esm/modules/word/{writers → writer}/table-writer.js +94 -11
- package/dist/esm/utils/crypto.browser.js +3 -1
- package/dist/esm/utils/crypto.js +4 -1
- package/dist/esm/utils/font-metrics.js +293 -0
- package/dist/esm/utils/string-buf.js +89 -0
- package/dist/esm/utils/theme-colors.js +120 -0
- package/dist/iife/excelts.iife.js +70692 -70337
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +57 -57
- package/dist/types/modules/archive/fs/archive-file.d.ts +8 -5
- package/dist/types/modules/excel/chart/chart-ex-types.d.ts +0 -12
- package/dist/types/modules/excel/chart/chart.d.ts +1 -5
- package/dist/types/modules/excel/chart/types.d.ts +0 -6
- package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +40 -0
- package/dist/types/modules/excel/utils/string-buf.d.ts +5 -26
- package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +19 -9
- package/dist/types/modules/excel/xlsx/xlsx.d.ts +10 -2
- package/dist/types/modules/pdf/excel-bridge.d.ts +30 -1
- package/dist/types/modules/pdf/font/metrics.d.ts +3 -52
- package/dist/types/modules/pdf/index.d.ts +1 -1
- package/dist/types/modules/pdf/render-layout-to-pdf.d.ts +66 -0
- package/dist/types/modules/pdf/word-bridge.d.ts +80 -12
- package/dist/types/modules/stream/index.base.d.ts +2 -0
- package/dist/types/modules/stream/internal/sink-adapter.d.ts +65 -0
- package/dist/types/modules/stream/pull-stream.d.ts +19 -2
- package/dist/types/modules/stream/types.d.ts +13 -1
- package/dist/types/modules/word/advanced/diff.d.ts +61 -0
- package/dist/types/modules/word/advanced/drawing-shapes.d.ts +269 -0
- package/dist/types/modules/word/advanced/field-engine.d.ts +43 -0
- package/dist/types/modules/word/advanced/glossary.d.ts +86 -0
- package/dist/types/modules/word/advanced/math-convert.d.ts +30 -0
- package/dist/types/modules/word/advanced/ole-objects.d.ts +115 -0
- package/dist/types/modules/word/advanced/style-map.d.ts +105 -0
- package/dist/types/modules/word/advanced/validation.d.ts +56 -0
- package/dist/types/modules/word/advanced/vba-project.d.ts +91 -0
- package/dist/types/modules/word/bridge/excel-bridge.d.ts +127 -0
- package/dist/types/modules/word/builder/document-handle.d.ts +151 -0
- package/dist/types/modules/word/builder/paragraph-builders.d.ts +61 -0
- package/dist/types/modules/word/builder/run-builders.d.ts +374 -0
- package/dist/types/modules/word/builder/table-builders.d.ts +23 -0
- package/dist/types/modules/word/constants.d.ts +39 -1
- package/dist/types/modules/word/convert/conversion-ir.d.ts +210 -0
- package/dist/types/modules/word/convert/docx-to-semantic.d.ts +39 -0
- package/dist/types/modules/word/convert/flat-opc.d.ts +44 -0
- package/dist/types/modules/word/convert/html/html-import.d.ts +50 -0
- package/dist/{browser/modules/word → types/modules/word/convert/html}/html-renderer.d.ts +14 -1
- package/dist/types/modules/word/convert/html/html.d.ts +15 -0
- package/dist/types/modules/word/convert/markdown/markdown-import.d.ts +68 -0
- package/dist/types/modules/word/convert/markdown/markdown-renderer.d.ts +25 -0
- package/dist/types/modules/word/convert/markdown/markdown.d.ts +15 -0
- package/dist/types/modules/word/convert/odt/odt.d.ts +41 -0
- package/dist/types/modules/word/{color-utils.d.ts → core/color-utils.d.ts} +8 -1
- package/dist/types/modules/word/core/internal-utils.d.ts +90 -0
- package/dist/types/modules/word/core/mapper.d.ts +44 -0
- package/dist/types/modules/word/core/opc-paths.d.ts +33 -0
- package/dist/types/modules/word/core/text-utils.d.ts +38 -0
- package/dist/types/modules/word/core/walker.d.ts +119 -0
- package/dist/types/modules/word/crypto.d.ts +14 -9
- package/dist/types/modules/word/document-io.d.ts +59 -27
- package/dist/types/modules/word/errors.d.ts +44 -1
- package/dist/types/modules/word/excel.d.ts +14 -0
- package/dist/types/modules/word/font/font-embed.d.ts +112 -0
- package/dist/types/modules/word/font/hyphenation.d.ts +65 -0
- package/dist/types/modules/word/font/text-shaping.d.ts +58 -0
- package/dist/types/modules/word/html.d.ts +7 -6
- package/dist/types/modules/word/incremental-edit.d.ts +123 -0
- package/dist/types/modules/word/index.base.d.ts +194 -10
- package/dist/types/modules/word/layout/layout-constants.d.ts +17 -0
- package/dist/types/modules/word/layout/layout-full.d.ts +53 -0
- package/dist/types/modules/word/layout/layout-model.d.ts +344 -0
- package/dist/types/modules/word/layout/layout.d.ts +63 -0
- package/dist/types/modules/word/layout/render-page.d.ts +57 -0
- package/dist/types/modules/word/markdown.d.ts +14 -0
- package/dist/types/modules/word/patcher.d.ts +62 -0
- package/dist/types/modules/word/query/compat.d.ts +25 -0
- package/dist/types/modules/word/query/data-binding.d.ts +22 -0
- package/dist/types/modules/word/query/form-fields.d.ts +41 -0
- package/dist/types/modules/word/query/format-search.d.ts +99 -0
- package/dist/types/modules/word/query/mail-merge.d.ts +25 -0
- package/dist/types/modules/word/query/merge.d.ts +50 -0
- package/dist/types/modules/word/query/replace.d.ts +47 -0
- package/dist/types/modules/word/query/revisions.d.ts +67 -0
- package/dist/types/modules/word/query/search.d.ts +129 -0
- package/dist/types/modules/word/query/split.d.ts +44 -0
- package/dist/types/modules/word/query/style-resolve.d.ts +104 -0
- package/dist/types/modules/word/reader/chart-parser.d.ts +20 -0
- package/dist/types/modules/word/reader/comments-parser.d.ts +26 -0
- package/dist/types/modules/word/reader/doc-props-parsers.d.ts +15 -0
- package/dist/types/modules/word/reader/docx-reader.d.ts +27 -0
- package/dist/types/modules/word/reader/drawing-helpers.d.ts +27 -0
- package/dist/types/modules/word/reader/form-field-parser.d.ts +21 -0
- package/dist/types/modules/word/reader/image-parsers.d.ts +11 -0
- package/dist/types/modules/word/reader/math-parser.d.ts +12 -0
- package/dist/types/modules/word/reader/metadata-parsers.d.ts +17 -0
- package/dist/types/modules/word/reader/numbering-parser.d.ts +13 -0
- package/dist/types/modules/word/reader/paragraph-section-parsers.d.ts +12 -0
- package/dist/types/modules/word/reader/parse-utils.d.ts +91 -0
- package/dist/types/modules/word/reader/properties-parsers.d.ts +21 -0
- package/dist/types/modules/word/reader/reader-context.d.ts +69 -0
- package/dist/types/modules/word/reader/sdt-helpers.d.ts +29 -0
- package/dist/types/modules/word/reader/settings-parser.d.ts +8 -0
- package/dist/types/modules/word/reader/styles-parser.d.ts +12 -0
- package/dist/types/modules/word/reader/table-properties-parsers.d.ts +12 -0
- package/dist/types/modules/word/reader/theme-parser.d.ts +8 -0
- package/dist/types/modules/word/reader/watermark-parser.d.ts +15 -0
- package/dist/types/modules/word/security/cfb-reader.d.ts +37 -0
- package/dist/types/modules/word/{digital-signatures.d.ts → security/digital-signatures.d.ts} +19 -11
- package/dist/types/modules/word/security/document-protection.d.ts +93 -0
- package/dist/{browser/modules/word → types/modules/word/security}/encryption.d.ts +51 -4
- package/dist/types/modules/word/security/policy.d.ts +80 -0
- package/dist/types/modules/word/template/template-chart.d.ts +56 -0
- package/dist/types/modules/word/template/template-datasource.d.ts +154 -0
- package/dist/types/modules/word/template/template-engine.d.ts +121 -0
- package/dist/types/modules/word/types.d.ts +224 -25
- package/dist/types/modules/word/units.d.ts +26 -0
- package/dist/types/modules/word/writer/checkbox-writer.d.ts +17 -0
- package/dist/{browser/modules/word/writers → types/modules/word/writer}/comment-writer.d.ts +2 -1
- package/dist/types/modules/word/writer/common-parts.d.ts +57 -0
- package/dist/{browser/modules/word → types/modules/word/writer}/content-types.d.ts +2 -2
- package/dist/types/modules/word/writer/document-writer.d.ts +24 -0
- package/dist/types/modules/word/writer/docx-packager.d.ts +35 -0
- package/dist/{browser/modules/word/writers → types/modules/word/writer}/footnote-writer.d.ts +3 -2
- package/dist/{browser/modules/word/writers → types/modules/word/writer}/header-footer-writer.d.ts +3 -2
- package/dist/{browser/modules/word/writers → types/modules/word/writer}/image-writer.d.ts +1 -1
- package/dist/types/modules/word/writer/math-writer.d.ts +20 -0
- package/dist/types/modules/word/{writers → writer}/numbering-writer.d.ts +1 -1
- package/dist/types/modules/word/{writers → writer}/paragraph-writer.d.ts +2 -1
- package/dist/types/modules/word/{writers → writer}/parts-writer.d.ts +3 -3
- package/dist/types/modules/word/writer/reference-scanners.d.ts +42 -0
- package/dist/types/modules/word/writer/relationships.d.ts +52 -0
- package/dist/types/modules/word/writer/render-context.d.ts +124 -0
- package/dist/types/modules/word/{writers → writer}/run-writer.d.ts +10 -1
- package/dist/types/modules/word/writer/sdt-writer.d.ts +25 -0
- package/dist/types/modules/word/writer/stream-buf.d.ts +37 -0
- package/dist/types/modules/word/writer/streaming-writer.d.ts +344 -0
- package/dist/types/modules/word/writer/string-buf.d.ts +8 -0
- package/dist/types/modules/word/{writers → writer}/table-writer.d.ts +2 -1
- package/dist/types/modules/xml/types.d.ts +22 -0
- package/dist/types/utils/crypto.browser.d.ts +3 -1
- package/dist/types/utils/crypto.d.ts +4 -1
- package/dist/types/utils/font-metrics.d.ts +63 -0
- package/dist/types/utils/string-buf.d.ts +42 -0
- package/dist/types/utils/theme-colors.d.ts +55 -0
- package/package.json +121 -39
- package/dist/browser/modules/word/color-utils.js +0 -94
- package/dist/browser/modules/word/document.d.ts +0 -657
- package/dist/browser/modules/word/document.js +0 -1533
- package/dist/browser/modules/word/docx-packager.d.ts +0 -14
- package/dist/browser/modules/word/docx-packager.js +0 -822
- package/dist/browser/modules/word/docx-reader.d.ts +0 -11
- package/dist/browser/modules/word/docx-reader.js +0 -4929
- package/dist/browser/modules/word/encryption.js +0 -274
- package/dist/browser/modules/word/internal-utils.d.ts +0 -23
- package/dist/browser/modules/word/internal-utils.js +0 -54
- package/dist/browser/modules/word/namespaces.d.ts +0 -159
- package/dist/browser/modules/word/namespaces.js +0 -189
- package/dist/browser/modules/word/relationships.d.ts +0 -30
- package/dist/browser/modules/word/relationships.js +0 -48
- package/dist/browser/modules/word/writers/checkbox-writer.d.ts +0 -9
- package/dist/browser/modules/word/writers/checkbox-writer.js +0 -42
- package/dist/browser/modules/word/writers/document-writer.d.ts +0 -16
- package/dist/browser/modules/word/writers/document-writer.js +0 -461
- package/dist/browser/modules/word/writers/math-writer.d.ts +0 -9
- package/dist/cjs/modules/word/color-utils.js +0 -97
- package/dist/cjs/modules/word/document.js +0 -1645
- package/dist/cjs/modules/word/docx-packager.js +0 -825
- package/dist/cjs/modules/word/docx-reader.js +0 -4932
- package/dist/cjs/modules/word/encryption.js +0 -282
- package/dist/cjs/modules/word/internal-utils.js +0 -59
- package/dist/cjs/modules/word/namespaces.js +0 -192
- package/dist/cjs/modules/word/relationships.js +0 -55
- package/dist/cjs/modules/word/writers/checkbox-writer.js +0 -45
- package/dist/cjs/modules/word/writers/document-writer.js +0 -465
- package/dist/esm/modules/word/color-utils.js +0 -94
- package/dist/esm/modules/word/document.js +0 -1533
- package/dist/esm/modules/word/docx-packager.js +0 -822
- package/dist/esm/modules/word/docx-reader.js +0 -4929
- package/dist/esm/modules/word/encryption.js +0 -274
- package/dist/esm/modules/word/internal-utils.js +0 -54
- package/dist/esm/modules/word/namespaces.js +0 -189
- package/dist/esm/modules/word/relationships.js +0 -48
- package/dist/esm/modules/word/writers/checkbox-writer.js +0 -42
- package/dist/esm/modules/word/writers/document-writer.js +0 -461
- package/dist/types/modules/word/document.d.ts +0 -657
- package/dist/types/modules/word/docx-packager.d.ts +0 -14
- package/dist/types/modules/word/docx-reader.d.ts +0 -11
- package/dist/types/modules/word/internal-utils.d.ts +0 -23
- package/dist/types/modules/word/namespaces.d.ts +0 -159
- package/dist/types/modules/word/relationships.d.ts +0 -30
- package/dist/types/modules/word/writers/checkbox-writer.d.ts +0 -9
- package/dist/types/modules/word/writers/document-writer.d.ts +0 -16
- package/dist/types/modules/word/writers/math-writer.d.ts +0 -9
- /package/dist/browser/modules/word/{font-obfuscation.d.ts → font/font-obfuscation.d.ts} +0 -0
- /package/dist/browser/modules/word/{writers → writer}/chart-writer.d.ts +0 -0
- /package/dist/browser/modules/word/{writers → writer}/section-writer.d.ts +0 -0
- /package/dist/browser/modules/word/{writers → writer}/section-writer.js +0 -0
- /package/dist/browser/modules/word/{writers → writer}/styles-writer.d.ts +0 -0
- /package/dist/browser/modules/word/{writers → writer}/textbox-writer.d.ts +0 -0
- /package/dist/browser/modules/word/{writers → writer}/textbox-writer.js +0 -0
- /package/dist/browser/modules/word/{writers → writer}/toc-writer.d.ts +0 -0
- /package/dist/browser/modules/word/{writers → writer}/toc-writer.js +0 -0
- /package/dist/cjs/modules/word/{writers → writer}/section-writer.js +0 -0
- /package/dist/cjs/modules/word/{writers → writer}/textbox-writer.js +0 -0
- /package/dist/cjs/modules/word/{writers → writer}/toc-writer.js +0 -0
- /package/dist/esm/modules/word/{writers → writer}/section-writer.js +0 -0
- /package/dist/esm/modules/word/{writers → writer}/textbox-writer.js +0 -0
- /package/dist/esm/modules/word/{writers → writer}/toc-writer.js +0 -0
- /package/dist/types/modules/word/{font-obfuscation.d.ts → font/font-obfuscation.d.ts} +0 -0
- /package/dist/types/modules/word/{writers → writer}/chart-writer.d.ts +0 -0
- /package/dist/types/modules/word/{writers → writer}/section-writer.d.ts +0 -0
- /package/dist/types/modules/word/{writers → writer}/styles-writer.d.ts +0 -0
- /package/dist/types/modules/word/{writers → writer}/textbox-writer.d.ts +0 -0
- /package/dist/types/modules/word/{writers → writer}/toc-writer.d.ts +0 -0
|
@@ -59,7 +59,7 @@ const RAW_TX_CV_RE = /<c:v(?:\s[^>]*)?>([\s\S]*?)<\/c:v>/g;
|
|
|
59
59
|
* `toPNG`, `unknownElements`) work uniformly. ChartTypeGroup-level
|
|
60
60
|
* APIs (`chartTypes`, `axes`, `plotArea`, `getAxis`, `categoryAxis`,
|
|
61
61
|
* `valueAxis`, `addSeries`, `removeSeries`, `getSeries`,
|
|
62
|
-
* `updateSeries`, `addSeriesFromOptions`, `
|
|
62
|
+
* `updateSeries`, `addSeriesFromOptions`, `getSeriesCount`, `mutate`,
|
|
63
63
|
* `setStyle`) are classic-only — ChartEx has its own topology that
|
|
64
64
|
* doesn't map cleanly onto the classic group/series abstraction;
|
|
65
65
|
* use {@link Chart.mutateChartEx} for ChartEx mutations.
|
|
@@ -882,12 +882,6 @@ class Chart {
|
|
|
882
882
|
const ctg = this.chartTypes[groupIndex];
|
|
883
883
|
return ctg?.series?.length ?? 0;
|
|
884
884
|
}
|
|
885
|
-
/**
|
|
886
|
-
* @deprecated Use `getSeriesCount()` instead. Returns the count of series in the first chart type group.
|
|
887
|
-
*/
|
|
888
|
-
get seriesCount() {
|
|
889
|
-
return this.getSeriesCount(0);
|
|
890
|
-
}
|
|
891
885
|
// ===========================================================================
|
|
892
886
|
// Chart cloning and duplication
|
|
893
887
|
// ===========================================================================
|
|
@@ -503,7 +503,31 @@ class WorkbookReaderBase extends event_emitter_1.EventEmitter {
|
|
|
503
503
|
}
|
|
504
504
|
async *_parseEntries(stream) {
|
|
505
505
|
const zip = (0, stream_1.createParse)({ forceStream: true });
|
|
506
|
-
|
|
506
|
+
// Bidirectional error propagation, guarded against re-entry: each side
|
|
507
|
+
// marks itself "settled" before forwarding so the partner's destroy/emit
|
|
508
|
+
// doesn't bounce the error back into an infinite loop.
|
|
509
|
+
let propagating = false;
|
|
510
|
+
stream.on("error", (err) => {
|
|
511
|
+
if (propagating) {
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
propagating = true;
|
|
515
|
+
zip.emit("error", err);
|
|
516
|
+
});
|
|
517
|
+
zip.on("error", (err) => {
|
|
518
|
+
if (propagating) {
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
propagating = true;
|
|
522
|
+
try {
|
|
523
|
+
if (typeof stream.destroy === "function") {
|
|
524
|
+
stream.destroy(err);
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
catch {
|
|
528
|
+
// Best-effort cleanup; original error already on `zip`.
|
|
529
|
+
}
|
|
530
|
+
});
|
|
507
531
|
stream.pipe(zip);
|
|
508
532
|
for await (const entry of (0, iterate_stream_1.iterateStream)(zip)) {
|
|
509
533
|
let sheetNo;
|
|
@@ -52,6 +52,15 @@ class WorkbookReader extends workbook_reader_browser_1.WorkbookReaderBase {
|
|
|
52
52
|
return originalWrite(chunk, ...args);
|
|
53
53
|
};
|
|
54
54
|
tempStream.write = trackWrite;
|
|
55
|
+
// Forward source errors to the temp file stream so:
|
|
56
|
+
// - the file write doesn't silently leak when zip parsing fails
|
|
57
|
+
// - `writePromise` rejects with the original cause instead of hanging
|
|
58
|
+
// Without this, an `error` on `entry` (e.g. zip corruption / decryption
|
|
59
|
+
// failure) becomes an uncaught exception in Node ≥ 16.
|
|
60
|
+
entry.on("error", err => {
|
|
61
|
+
tempStream.destroy(err);
|
|
62
|
+
reject(err);
|
|
63
|
+
});
|
|
55
64
|
entry.pipe(tempStream);
|
|
56
65
|
});
|
|
57
66
|
return { sheetNo, path: filePath, cleanup, writePromise };
|
|
@@ -36,11 +36,77 @@ const binary_1 = require("../../../utils/binary.js");
|
|
|
36
36
|
const utils_1 = require("../../../utils/utils.js");
|
|
37
37
|
const EMPTY_U8 = new Uint8Array(0);
|
|
38
38
|
const TEXT_DECODER = new TextDecoder();
|
|
39
|
+
/**
|
|
40
|
+
* Drain a resolver list, calling each. Mutates the array to empty.
|
|
41
|
+
*
|
|
42
|
+
* Used by the backpressure machinery: when a sink drains or errors, every
|
|
43
|
+
* parked `_waitForUserSinkDrain()` / pending-async waiter must be woken
|
|
44
|
+
* exactly once, and the array reset so the next backpressure cycle starts
|
|
45
|
+
* clean. Hoisted to a free function so it can be re-used across the three
|
|
46
|
+
* wake sites without per-site duplication of the splice/loop pattern.
|
|
47
|
+
*/
|
|
48
|
+
function callAllResolvers(resolvers) {
|
|
49
|
+
if (resolvers.length === 0) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// Snapshot then clear, so a resolver that itself triggers a fresh wait
|
|
53
|
+
// (re-pushing into the same array) doesn't get confused with the current
|
|
54
|
+
// batch.
|
|
55
|
+
const snapshot = resolvers.splice(0);
|
|
56
|
+
for (const r of snapshot) {
|
|
57
|
+
r();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
39
60
|
// ============================================================================
|
|
40
61
|
// Base Class
|
|
41
62
|
// ============================================================================
|
|
42
63
|
class WorkbookWriterBase {
|
|
43
64
|
constructor(options, WorksheetWriterClass) {
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
// Backpressure tracking for the user-supplied output sink.
|
|
67
|
+
//
|
|
68
|
+
// Set by `_trackBackpressure(ok)` whenever `this.stream.write(data)` returns
|
|
69
|
+
// false (or a Promise that resolves to false). Cleared when the sink emits
|
|
70
|
+
// `'drain'`. Awaited by `_waitForUserSinkDrain()` at async boundaries
|
|
71
|
+
// (between worksheets, before `addWorkbook`, etc) so a slow sink throttles
|
|
72
|
+
// the producer instead of letting bytes accumulate unboundedly inside the
|
|
73
|
+
// sink's internal buffer or in the zip pipeline.
|
|
74
|
+
//
|
|
75
|
+
// Important caveat: this **cannot** block a single tight synchronous
|
|
76
|
+
// `for (...) row.commit()` loop inside one worksheet — JavaScript has no
|
|
77
|
+
// sync wait, and `row.commit()` is sync void. During such a loop, every
|
|
78
|
+
// produced compressed chunk is pushed straight into the sink's internal
|
|
79
|
+
// buffer (Node `Writable` accepts writes after returning false; it just
|
|
80
|
+
// hints "drain"). For very-large single-worksheet workloads with a slow
|
|
81
|
+
// sink, the practical bound on how much can pile up is roughly the total
|
|
82
|
+
// compressed size of one worksheet — only the `wb.commit()` boundary
|
|
83
|
+
// (and any `worksheet.commit()` between sheets) gives the event loop a
|
|
84
|
+
// chance to park here on `_waitForUserSinkDrain()`.
|
|
85
|
+
//
|
|
86
|
+
// Multi-sheet workloads benefit fully because each `worksheet.commit()`
|
|
87
|
+
// hands control back to `_commitWorksheets()` which awaits drain before
|
|
88
|
+
// the next sheet starts.
|
|
89
|
+
this._needsDrain = false;
|
|
90
|
+
this._drainResolvers = [];
|
|
91
|
+
this._drainListenerAttached = false;
|
|
92
|
+
// Captured if the user sink fires 'error' before `_finalize()` attaches its
|
|
93
|
+
// own listener. Replayed by `_finalize()` so the original error is what
|
|
94
|
+
// rejects `commit()`, not a generic timeout.
|
|
95
|
+
this._sinkError = null;
|
|
96
|
+
/**
|
|
97
|
+
* Attach error/close listeners on the user sink so any parked backpressure
|
|
98
|
+
* waiters are released the moment the sink fails. Without this, a
|
|
99
|
+
* `commit()` parked on `_waitForUserSinkDrain()` would hang forever if
|
|
100
|
+
* the sink errored before emitting 'drain'. Idempotent and a no-op for
|
|
101
|
+
* sinks that don't expose `.on` (e.g. internal `StreamBuf`).
|
|
102
|
+
*
|
|
103
|
+
* Uses a non-consuming listener: if the user has their own 'error' handler
|
|
104
|
+
* it still fires (EventEmitter broadcasts to all listeners). The error is
|
|
105
|
+
* also captured into `_sinkError` so `_finalize()` can replay it — `_finalize`
|
|
106
|
+
* registers its own listener with `once()`, which would miss errors that
|
|
107
|
+
* arrived earlier in the commit pipeline.
|
|
108
|
+
*/
|
|
109
|
+
this._lifecycleListenersAttached = false;
|
|
44
110
|
this.WorksheetWriterClass = WorksheetWriterClass;
|
|
45
111
|
this.created = options.created || new Date();
|
|
46
112
|
this.modified = options.modified || this.created;
|
|
@@ -60,14 +126,26 @@ class WorkbookWriterBase {
|
|
|
60
126
|
this.commentRefs = [];
|
|
61
127
|
this.dynamicArrayCount = 0;
|
|
62
128
|
this._trueStreaming = options.trueStreaming ?? false;
|
|
63
|
-
// Create Zip instance
|
|
129
|
+
// Create Zip instance.
|
|
130
|
+
//
|
|
131
|
+
// Backpressure note: when `this.stream.write(data)` returns false (the
|
|
132
|
+
// user-supplied sink — e.g. fs.WriteStream, PassThrough, HTTP response
|
|
133
|
+
// — has reached its highWaterMark), we cannot synchronously block the
|
|
134
|
+
// zip callback (it's invoked from inside `row.commit()`'s sync chain).
|
|
135
|
+
// Instead we record a `_needsDrain` flag and a Promise that resolves
|
|
136
|
+
// when the sink emits `'drain'`. `commit()` and `_commitWorksheets()`
|
|
137
|
+
// await this promise at their natural async boundaries, so the producer
|
|
138
|
+
// stops generating new zip data until the sink has caught up. This
|
|
139
|
+
// makes `WorkbookWriter` safe against slow sinks (network responses,
|
|
140
|
+
// throttled fs, etc) without changing the public API.
|
|
64
141
|
this.zip = new stream_1.Zip((err, data, final) => {
|
|
65
142
|
if (err) {
|
|
66
143
|
this.stream.emit("error", err);
|
|
67
144
|
}
|
|
68
145
|
else {
|
|
69
146
|
// `streaming-zip` already emits `Uint8Array`; avoid copying per chunk.
|
|
70
|
-
this.stream.write(data);
|
|
147
|
+
const ok = this.stream.write(data);
|
|
148
|
+
this._trackBackpressure(ok);
|
|
71
149
|
if (final) {
|
|
72
150
|
this.stream.end();
|
|
73
151
|
}
|
|
@@ -75,6 +153,11 @@ class WorkbookWriterBase {
|
|
|
75
153
|
});
|
|
76
154
|
// Setup output stream
|
|
77
155
|
this.stream = this._createOutputStream(options);
|
|
156
|
+
// Eagerly attach error/close listeners on the sink so any backpressure
|
|
157
|
+
// waiters are released the moment the sink fails — without this, a
|
|
158
|
+
// `commit()` parked on `_waitForUserSinkDrain()` would hang forever if
|
|
159
|
+
// the sink errored before emitting 'drain'.
|
|
160
|
+
this._attachSinkLifecycleListeners();
|
|
78
161
|
// Theme and office rels are deferred to commit() so that worksheet files
|
|
79
162
|
// are added to the ZIP first. This ensures StreamingZip sets ondata on
|
|
80
163
|
// the worksheet immediately, allowing pushSync to flow data through
|
|
@@ -90,6 +173,106 @@ class WorkbookWriterBase {
|
|
|
90
173
|
}
|
|
91
174
|
return new stream_buf_1.StreamBuf();
|
|
92
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Internal: record whether the sink accepted the last write. The
|
|
178
|
+
* `OutputStreamLike.write` type advertises `boolean | Promise<boolean>`
|
|
179
|
+
* for forward compatibility, but in practice every concrete sink we
|
|
180
|
+
* accept (Node `Writable`, browser `Writable` from `@stream`, internal
|
|
181
|
+
* `StreamBuf`, fs.WriteStream, etc) returns a sync `boolean`. We
|
|
182
|
+
* defensively handle the Promise shape but it's never exercised.
|
|
183
|
+
*/
|
|
184
|
+
_trackBackpressure(ok) {
|
|
185
|
+
if (ok instanceof Promise) {
|
|
186
|
+
// Defensive path: a hypothetical sink whose `write()` returns a
|
|
187
|
+
// Promise. Await its resolution and treat false as backpressure.
|
|
188
|
+
ok.then(result => {
|
|
189
|
+
if (!result) {
|
|
190
|
+
this._needsDrain = true;
|
|
191
|
+
}
|
|
192
|
+
}, () => {
|
|
193
|
+
// Errors surface via the sink's 'error' event; ignore here.
|
|
194
|
+
});
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (ok === false) {
|
|
198
|
+
this._needsDrain = true;
|
|
199
|
+
}
|
|
200
|
+
this._ensureDrainListener();
|
|
201
|
+
}
|
|
202
|
+
_ensureDrainListener() {
|
|
203
|
+
if (this._drainListenerAttached) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
if (typeof this.stream.on !== "function") {
|
|
207
|
+
// StreamBuf and similar sinks that don't follow the Writable contract
|
|
208
|
+
// never emit 'drain'; they also never return false from write(), so
|
|
209
|
+
// they reach this branch only spuriously. Skip listener attach.
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
this._drainListenerAttached = true;
|
|
213
|
+
this.stream.on("drain", () => {
|
|
214
|
+
this._needsDrain = false;
|
|
215
|
+
callAllResolvers(this._drainResolvers);
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
_attachSinkLifecycleListeners() {
|
|
219
|
+
if (this._lifecycleListenersAttached) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (typeof this.stream.on !== "function") {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
this._lifecycleListenersAttached = true;
|
|
226
|
+
// Use `.once()` for both events: we only care about the first error
|
|
227
|
+
// (subsequent errors are captured in `_sinkError` only if we haven't
|
|
228
|
+
// recorded one yet). Using `.once()` also avoids leaking the listener
|
|
229
|
+
// if the sink lives longer than the WorkbookWriter — the EventEmitter
|
|
230
|
+
// releases the closure as soon as the event fires.
|
|
231
|
+
if (typeof this.stream.once === "function") {
|
|
232
|
+
this.stream.once("error", (err) => {
|
|
233
|
+
if (!this._sinkError) {
|
|
234
|
+
this._sinkError = err;
|
|
235
|
+
}
|
|
236
|
+
this._wakeAllBackpressureWaiters();
|
|
237
|
+
});
|
|
238
|
+
this.stream.once("close", () => {
|
|
239
|
+
this._wakeAllBackpressureWaiters();
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
// Fallback: sink only has .on, attach normally.
|
|
244
|
+
this.stream.on("error", (err) => {
|
|
245
|
+
if (!this._sinkError) {
|
|
246
|
+
this._sinkError = err;
|
|
247
|
+
}
|
|
248
|
+
this._wakeAllBackpressureWaiters();
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
_wakeAllBackpressureWaiters() {
|
|
253
|
+
this._needsDrain = false;
|
|
254
|
+
callAllResolvers(this._drainResolvers);
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Park here until any async writes have settled and the user sink has
|
|
258
|
+
* drained below its high-water mark. Resolves immediately when no
|
|
259
|
+
* backpressure is in flight.
|
|
260
|
+
*
|
|
261
|
+
* Called at async boundaries inside `commit()` so a slow sink throttles
|
|
262
|
+
* the producer instead of letting bytes accumulate unboundedly.
|
|
263
|
+
*/
|
|
264
|
+
async _waitForUserSinkDrain() {
|
|
265
|
+
// Short-circuit if the sink already errored — no point waiting for a
|
|
266
|
+
// drain that will never come. The error itself surfaces from
|
|
267
|
+
// `_finalize()` later.
|
|
268
|
+
if (this._sinkError) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
if (!this._needsDrain) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
return new Promise(resolve => this._drainResolvers.push(resolve));
|
|
275
|
+
}
|
|
93
276
|
get definedNames() {
|
|
94
277
|
return this._definedNames;
|
|
95
278
|
}
|
|
@@ -138,24 +321,32 @@ class WorkbookWriterBase {
|
|
|
138
321
|
}
|
|
139
322
|
zipFile.push(buffer, true);
|
|
140
323
|
}
|
|
141
|
-
_commitWorksheets() {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
324
|
+
async _commitWorksheets() {
|
|
325
|
+
// Commit worksheets sequentially (not in parallel) so we can park on
|
|
326
|
+
// user-sink backpressure between them. Parallel commit was the old
|
|
327
|
+
// behavior; for a single-worksheet workbook the difference is nil, and
|
|
328
|
+
// for multi-sheet workbooks honoring backpressure between them keeps
|
|
329
|
+
// memory bounded against slow sinks. ZIP itself is inherently serial
|
|
330
|
+
// (StreamingZip processes one entry at a time via `activeFile`), so
|
|
331
|
+
// sequential commit imposes no real CPU cost — measured throughput is
|
|
332
|
+
// identical to parallel commit on multi-sheet workbooks.
|
|
333
|
+
for (const worksheet of this._worksheets) {
|
|
334
|
+
if (!worksheet || worksheet.committed) {
|
|
335
|
+
continue;
|
|
148
336
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
337
|
+
await new Promise(resolve => {
|
|
338
|
+
worksheet.stream.once("zipped", () => resolve());
|
|
339
|
+
worksheet.commit();
|
|
340
|
+
});
|
|
341
|
+
await this._waitForUserSinkDrain();
|
|
342
|
+
}
|
|
153
343
|
}
|
|
154
344
|
async commit() {
|
|
155
345
|
await this.promise;
|
|
156
346
|
await this._commitWorksheets();
|
|
157
347
|
await this.addMedia();
|
|
158
348
|
this.addDrawings();
|
|
349
|
+
await this._waitForUserSinkDrain();
|
|
159
350
|
await Promise.all([
|
|
160
351
|
this.addThemes(),
|
|
161
352
|
this.addOfficeRels(),
|
|
@@ -168,7 +359,9 @@ class WorkbookWriterBase {
|
|
|
168
359
|
this.addMetadata(),
|
|
169
360
|
this.addWorkbookRels()
|
|
170
361
|
]);
|
|
362
|
+
await this._waitForUserSinkDrain();
|
|
171
363
|
await this.addWorkbook();
|
|
364
|
+
await this._waitForUserSinkDrain();
|
|
172
365
|
await this._finalize();
|
|
173
366
|
}
|
|
174
367
|
get nextId() {
|
|
@@ -439,6 +632,22 @@ class WorkbookWriterBase {
|
|
|
439
632
|
});
|
|
440
633
|
}
|
|
441
634
|
_finalize() {
|
|
635
|
+
// If the user sink errored earlier in the commit pipeline (captured by
|
|
636
|
+
// `_attachSinkLifecycleListeners`), surface that error now — `commit()`
|
|
637
|
+
// would otherwise reach `_finalize` and hang waiting for `'close'` from
|
|
638
|
+
// a sink that's already destroyed.
|
|
639
|
+
if (this._sinkError) {
|
|
640
|
+
// End the zip pipeline cleanly so its internal callbacks don't keep
|
|
641
|
+
// firing into a torn-down sink. Best-effort: ignore any error from
|
|
642
|
+
// end() since the original `_sinkError` is what we care about.
|
|
643
|
+
try {
|
|
644
|
+
this.zip.end();
|
|
645
|
+
}
|
|
646
|
+
catch {
|
|
647
|
+
// Best-effort cleanup.
|
|
648
|
+
}
|
|
649
|
+
return Promise.reject(this._sinkError);
|
|
650
|
+
}
|
|
442
651
|
// Wait for "close" — emitted by all supported output streams (Node Writable,
|
|
443
652
|
// browser Writable, and StreamBuf) after "finish". For file streams this
|
|
444
653
|
// guarantees the fd is released, which is critical on Windows where reading
|
|
@@ -454,6 +663,12 @@ class WorkbookWriterBase {
|
|
|
454
663
|
};
|
|
455
664
|
const onDone = () => {
|
|
456
665
|
cleanup();
|
|
666
|
+
// If an error fired between us checking `_sinkError` and reaching
|
|
667
|
+
// 'close' (rare but possible with concurrent emit), surface it.
|
|
668
|
+
if (this._sinkError) {
|
|
669
|
+
reject(this._sinkError);
|
|
670
|
+
return;
|
|
671
|
+
}
|
|
457
672
|
resolve(this);
|
|
458
673
|
};
|
|
459
674
|
this.stream.once("error", onError);
|
|
@@ -1,87 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* StringBuf
|
|
3
|
+
* Re-export of the shared {@link StringBuf} from `@utils/string-buf`.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Kept as a thin alias so existing imports (`@excel/utils/string-buf`)
|
|
6
|
+
* continue to work without churn.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.StringBuf = void 0;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* StringBuf - efficient string builder using Uint8Array
|
|
13
|
-
* Works identically in Node.js and Browser environments.
|
|
14
|
-
*/
|
|
15
|
-
class StringBuf {
|
|
16
|
-
constructor(options) {
|
|
17
|
-
this._buf = new Uint8Array((options && options.size) || 16384);
|
|
18
|
-
// TextEncoder only supports UTF-8, so encoding option is ignored
|
|
19
|
-
this._inPos = 0;
|
|
20
|
-
this._buffer = undefined;
|
|
21
|
-
}
|
|
22
|
-
get length() {
|
|
23
|
-
return this._inPos;
|
|
24
|
-
}
|
|
25
|
-
get capacity() {
|
|
26
|
-
return this._buf.length;
|
|
27
|
-
}
|
|
28
|
-
get buffer() {
|
|
29
|
-
return this._buf;
|
|
30
|
-
}
|
|
31
|
-
toBuffer() {
|
|
32
|
-
// Return the current data as a single enclosing buffer
|
|
33
|
-
if (!this._buffer) {
|
|
34
|
-
this._buffer = this._buf.slice(0, this._inPos);
|
|
35
|
-
}
|
|
36
|
-
return this._buffer;
|
|
37
|
-
}
|
|
38
|
-
reset(position) {
|
|
39
|
-
position = position ?? 0;
|
|
40
|
-
this._buffer = undefined;
|
|
41
|
-
this._inPos = position;
|
|
42
|
-
}
|
|
43
|
-
_grow(min) {
|
|
44
|
-
let size = this._buf.length * 2;
|
|
45
|
-
while (size < min) {
|
|
46
|
-
size *= 2;
|
|
47
|
-
}
|
|
48
|
-
const buf = new Uint8Array(size);
|
|
49
|
-
buf.set(this._buf);
|
|
50
|
-
this._buf = buf;
|
|
51
|
-
}
|
|
52
|
-
addText(text) {
|
|
53
|
-
this._buffer = undefined;
|
|
54
|
-
// Ensure there's room for at least the string length (optimistic: 1 byte per char).
|
|
55
|
-
const optimistic = this._inPos + text.length;
|
|
56
|
-
if (optimistic > this._buf.length - 4) {
|
|
57
|
-
this._grow(optimistic);
|
|
58
|
-
}
|
|
59
|
-
// Use encodeInto to write directly into the buffer, avoiding the
|
|
60
|
-
// intermediate Uint8Array allocation that encoder.encode() creates.
|
|
61
|
-
const target = this._buf.subarray(this._inPos);
|
|
62
|
-
const result = encoder.encodeInto(text, target);
|
|
63
|
-
if (result.read < text.length) {
|
|
64
|
-
// Didn't fit — text has multi-byte UTF-8 chars that exceed the optimistic estimate.
|
|
65
|
-
// Grow to accommodate the remainder (worst case: 3 bytes per remaining char).
|
|
66
|
-
const remaining = text.length - result.read;
|
|
67
|
-
this._grow(this._inPos + result.written + remaining * 3);
|
|
68
|
-
const result2 = encoder.encodeInto(text.substring(result.read), this._buf.subarray(this._inPos + result.written));
|
|
69
|
-
this._inPos += result.written + result2.written;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
this._inPos += result.written;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
addStringBuf(inBuf) {
|
|
76
|
-
if (inBuf.length) {
|
|
77
|
-
this._buffer = undefined;
|
|
78
|
-
if (this.length + inBuf.length > this.capacity) {
|
|
79
|
-
this._grow(this.length + inBuf.length);
|
|
80
|
-
}
|
|
81
|
-
// Copy bytes from input buffer
|
|
82
|
-
this._buf.set(inBuf._buf.subarray(0, inBuf.length), this._inPos);
|
|
83
|
-
this._inPos += inBuf.length;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
exports.StringBuf = StringBuf;
|
|
10
|
+
var string_buf_1 = require("../../../utils/string-buf.js");
|
|
11
|
+
Object.defineProperty(exports, "StringBuf", { enumerable: true, get: function () { return string_buf_1.StringBuf; } });
|
|
@@ -234,6 +234,59 @@ function isReadableStream(input) {
|
|
|
234
234
|
// =============================================================================
|
|
235
235
|
// CSV Helper Functions (Internal)
|
|
236
236
|
// =============================================================================
|
|
237
|
+
/**
|
|
238
|
+
* Iterate worksheet rows lazily — yields `{row, rowNumber}` for every row
|
|
239
|
+
* with values, in sheet order. Reaches into the worksheet's internal
|
|
240
|
+
* `_rows` array directly so we don't have to materialise the whole row
|
|
241
|
+
* set up front (matters for very large worksheets piped to slow sinks).
|
|
242
|
+
*
|
|
243
|
+
* Note: `_rows` is 0-based but XLSX row numbers are 1-based. Row N lives
|
|
244
|
+
* at `_rows[N - 1]`, so the yielded `rowNumber` is `i + 1`.
|
|
245
|
+
*/
|
|
246
|
+
function* iterateWorksheetRows(worksheet) {
|
|
247
|
+
const rows = worksheet._rows;
|
|
248
|
+
if (!rows || rows.length === 0) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
for (let i = 0; i < rows.length; i++) {
|
|
252
|
+
const row = rows[i];
|
|
253
|
+
if (row && row.hasValues) {
|
|
254
|
+
yield { row, rowNumber: i + 1 };
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Build a `() => Promise<void>` that resolves on the next `'drain'` event
|
|
260
|
+
* of `emitter`, but rejects promptly if `'error'` or `'close'` fires first.
|
|
261
|
+
*
|
|
262
|
+
* Without the error/close races, a producer parked on `once('drain')`
|
|
263
|
+
* would hang forever after the downstream sink errors mid-write — the
|
|
264
|
+
* Transform is destroyed and never emits drain again.
|
|
265
|
+
*/
|
|
266
|
+
function createDrainRacer(emitter) {
|
|
267
|
+
return () => new Promise((resolve, reject) => {
|
|
268
|
+
const cleanup = () => {
|
|
269
|
+
emitter.off("drain", onDrain);
|
|
270
|
+
emitter.off("error", onError);
|
|
271
|
+
emitter.off("close", onClose);
|
|
272
|
+
};
|
|
273
|
+
const onDrain = () => {
|
|
274
|
+
cleanup();
|
|
275
|
+
resolve();
|
|
276
|
+
};
|
|
277
|
+
const onError = (err) => {
|
|
278
|
+
cleanup();
|
|
279
|
+
reject(err);
|
|
280
|
+
};
|
|
281
|
+
const onClose = () => {
|
|
282
|
+
cleanup();
|
|
283
|
+
reject(new Error("stream closed before drain"));
|
|
284
|
+
};
|
|
285
|
+
emitter.once("drain", onDrain);
|
|
286
|
+
emitter.once("error", onError);
|
|
287
|
+
emitter.once("close", onClose);
|
|
288
|
+
});
|
|
289
|
+
}
|
|
237
290
|
function buildParserOptions(options) {
|
|
238
291
|
return {
|
|
239
292
|
delimiter: options?.delimiter ?? ",",
|
|
@@ -599,26 +652,56 @@ class Workbook {
|
|
|
599
652
|
const map = options?.map || createDefaultWriteMapper(options?.dateFormat, options?.dateUTC);
|
|
600
653
|
const includeEmptyRows = options?.includeEmptyRows !== false;
|
|
601
654
|
const formatter = new stream_1.CsvFormatterStream(buildFormatterOptions(options));
|
|
602
|
-
if (worksheet) {
|
|
603
|
-
setTimeout(() =>
|
|
655
|
+
if (!worksheet) {
|
|
656
|
+
setTimeout(() => formatter.end(), 0);
|
|
657
|
+
return formatter;
|
|
658
|
+
}
|
|
659
|
+
// Drive rows asynchronously so the formatter's backpressure signal can
|
|
660
|
+
// throttle production. The drain wait races against `'error'` / `'close'`
|
|
661
|
+
// so a downstream sink failure unwinds the producer instead of hanging.
|
|
662
|
+
const awaitFormatterDrain = createDrainRacer(formatter);
|
|
663
|
+
const writeAndDrain = (values) => {
|
|
664
|
+
if (formatter.write(values)) {
|
|
665
|
+
return;
|
|
666
|
+
}
|
|
667
|
+
return awaitFormatterDrain();
|
|
668
|
+
};
|
|
669
|
+
(async () => {
|
|
670
|
+
try {
|
|
604
671
|
let lastRow = 1;
|
|
605
|
-
worksheet.
|
|
672
|
+
// Iterate worksheet rows lazily — no snapshot. Each row's `values`
|
|
673
|
+
// are mapped at iteration time, so already-yielded data is GC-able
|
|
674
|
+
// as the consumer drains the formatter.
|
|
675
|
+
for (const { row, rowNumber } of iterateWorksheetRows(worksheet)) {
|
|
676
|
+
if (formatter.destroyed) {
|
|
677
|
+
return;
|
|
678
|
+
}
|
|
679
|
+
// First slot is the 1-based padding cell — skip without mutating
|
|
680
|
+
// the row (mutating would corrupt subsequent reads / writes).
|
|
681
|
+
const dataValues = row.values.slice(1).map(map);
|
|
606
682
|
if (includeEmptyRows) {
|
|
607
683
|
while (lastRow++ < rowNumber - 1) {
|
|
608
|
-
|
|
684
|
+
const p = writeAndDrain([]);
|
|
685
|
+
if (p) {
|
|
686
|
+
await p;
|
|
687
|
+
}
|
|
688
|
+
if (formatter.destroyed) {
|
|
689
|
+
return;
|
|
690
|
+
}
|
|
609
691
|
}
|
|
610
692
|
}
|
|
611
|
-
const
|
|
612
|
-
|
|
613
|
-
|
|
693
|
+
const p = writeAndDrain(dataValues);
|
|
694
|
+
if (p) {
|
|
695
|
+
await p;
|
|
696
|
+
}
|
|
614
697
|
lastRow = rowNumber;
|
|
615
|
-
}
|
|
698
|
+
}
|
|
616
699
|
formatter.end();
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
}
|
|
700
|
+
}
|
|
701
|
+
catch (err) {
|
|
702
|
+
formatter.destroy(err instanceof Error ? err : new Error(String(err)));
|
|
703
|
+
}
|
|
704
|
+
})();
|
|
622
705
|
return formatter;
|
|
623
706
|
}
|
|
624
707
|
/**
|
|
@@ -817,20 +900,47 @@ class Workbook {
|
|
|
817
900
|
const includeEmptyRows = options?.includeEmptyRows !== false;
|
|
818
901
|
const formatter = new stream_1.CsvFormatterStream(buildFormatterOptions(options));
|
|
819
902
|
const pipelinePromise = (0, _stream_1.pipeline)(formatter, stream);
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
903
|
+
// Race drain against error / close so a mid-stream sink failure makes
|
|
904
|
+
// `writeAndDrain` reject (and the for-loop unwind) instead of hanging
|
|
905
|
+
// on a 'drain' the destroyed formatter will never emit.
|
|
906
|
+
const awaitFormatterDrain = createDrainRacer(formatter);
|
|
907
|
+
const writeAndDrain = async (values) => {
|
|
908
|
+
if (!formatter.write(values)) {
|
|
909
|
+
await awaitFormatterDrain();
|
|
910
|
+
}
|
|
911
|
+
};
|
|
912
|
+
try {
|
|
913
|
+
let lastRow = 1;
|
|
914
|
+
// Iterate worksheet rows directly without pre-collecting them. The
|
|
915
|
+
// Workbook model is already in memory, so reaching into `_rows` here
|
|
916
|
+
// adds no per-row allocation — just a Row reference per iteration,
|
|
917
|
+
// immediately reassigned. The async loop honours formatter
|
|
918
|
+
// backpressure between rows so the formatter's internal buffer can't
|
|
919
|
+
// grow unbounded against a slow sink.
|
|
920
|
+
for (const { row, rowNumber } of iterateWorksheetRows(worksheet)) {
|
|
921
|
+
// First slot is the 1-based padding cell — skip without mutating
|
|
922
|
+
// the row (mutating would corrupt subsequent reads / writes).
|
|
923
|
+
const dataValues = row.values.slice(1).map(map);
|
|
924
|
+
if (includeEmptyRows) {
|
|
925
|
+
while (lastRow++ < rowNumber - 1) {
|
|
926
|
+
await writeAndDrain([]);
|
|
927
|
+
}
|
|
825
928
|
}
|
|
929
|
+
await writeAndDrain(dataValues);
|
|
930
|
+
lastRow = rowNumber;
|
|
826
931
|
}
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
932
|
+
formatter.end();
|
|
933
|
+
await pipelinePromise;
|
|
934
|
+
}
|
|
935
|
+
catch (err) {
|
|
936
|
+
// Sink errored mid-write (or pipeline tore down for any reason).
|
|
937
|
+
// Destroy the formatter so the pipeline unwinds, swallow the
|
|
938
|
+
// pipeline rejection (the original error is what we want to surface),
|
|
939
|
+
// and rethrow.
|
|
940
|
+
formatter.destroy(err instanceof Error ? err : new Error(String(err)));
|
|
941
|
+
await pipelinePromise.catch(() => { });
|
|
942
|
+
throw err;
|
|
943
|
+
}
|
|
834
944
|
}
|
|
835
945
|
/**
|
|
836
946
|
* Populate a worksheet from a parsed Markdown table result.
|