@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
|
@@ -0,0 +1,541 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX Module - Template Data Source
|
|
3
|
+
*
|
|
4
|
+
* An abstraction layer for providing data to the template engine from
|
|
5
|
+
* various sources (JSON, XML, CSV) with composition support.
|
|
6
|
+
*
|
|
7
|
+
* @stability experimental
|
|
8
|
+
*/
|
|
9
|
+
import { parseXml } from "../../xml/dom.js";
|
|
10
|
+
import { DocxError } from "../errors.js";
|
|
11
|
+
import { fillTemplate } from "./template-engine.js";
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// JsonDataSource
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Data source that reads from a JSON string or object.
|
|
17
|
+
*
|
|
18
|
+
* @stability experimental
|
|
19
|
+
*/
|
|
20
|
+
export class JsonDataSource {
|
|
21
|
+
/**
|
|
22
|
+
* @param input - A JSON string or an existing object.
|
|
23
|
+
*/
|
|
24
|
+
constructor(input) {
|
|
25
|
+
if (typeof input === "string") {
|
|
26
|
+
let parsed;
|
|
27
|
+
try {
|
|
28
|
+
parsed = JSON.parse(input);
|
|
29
|
+
}
|
|
30
|
+
catch (cause) {
|
|
31
|
+
throw new DocxError(`JsonDataSource: failed to parse input as JSON (${cause.message})`, { cause });
|
|
32
|
+
}
|
|
33
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
34
|
+
throw new DocxError("JsonDataSource: input must parse to a JSON object (not array or null)");
|
|
35
|
+
}
|
|
36
|
+
this.data = parsed;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.data = input;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
getData() {
|
|
43
|
+
return this.data;
|
|
44
|
+
}
|
|
45
|
+
getArray(key) {
|
|
46
|
+
const value = this.resolvePath(key);
|
|
47
|
+
if (Array.isArray(value)) {
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
getValue(path) {
|
|
53
|
+
return this.resolvePath(path);
|
|
54
|
+
}
|
|
55
|
+
resolvePath(path) {
|
|
56
|
+
const parts = path.split(".");
|
|
57
|
+
let current = this.data;
|
|
58
|
+
for (const part of parts) {
|
|
59
|
+
if (current === null || current === undefined || typeof current !== "object") {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
current = current[part];
|
|
63
|
+
}
|
|
64
|
+
return current;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// =============================================================================
|
|
68
|
+
// XmlDataSource
|
|
69
|
+
// =============================================================================
|
|
70
|
+
/**
|
|
71
|
+
* Data source that reads from an XML string.
|
|
72
|
+
*
|
|
73
|
+
* Flattens the XML structure into dot-separated key-value pairs.
|
|
74
|
+
* Repeated elements with the same tag are collected into arrays.
|
|
75
|
+
*
|
|
76
|
+
* Example XML:
|
|
77
|
+
* ```xml
|
|
78
|
+
* <root>
|
|
79
|
+
* <name>John</name>
|
|
80
|
+
* <address><city>NY</city></address>
|
|
81
|
+
* <item>A</item>
|
|
82
|
+
* <item>B</item>
|
|
83
|
+
* </root>
|
|
84
|
+
* ```
|
|
85
|
+
* Produces: `{ name: "John", "address.city": "NY", address: { city: "NY" }, item: ["A", "B"] }`
|
|
86
|
+
*
|
|
87
|
+
* @stability experimental
|
|
88
|
+
*/
|
|
89
|
+
export class XmlDataSource {
|
|
90
|
+
/**
|
|
91
|
+
* @param xml - An XML string to parse.
|
|
92
|
+
* @param rootTag - Optional root element name to skip. If not provided, the first element is used.
|
|
93
|
+
*/
|
|
94
|
+
constructor(xml, rootTag) {
|
|
95
|
+
this.data = parseXmlToRecord(xml, rootTag);
|
|
96
|
+
}
|
|
97
|
+
getData() {
|
|
98
|
+
return this.data;
|
|
99
|
+
}
|
|
100
|
+
getArray(key) {
|
|
101
|
+
const value = this.resolvePath(key);
|
|
102
|
+
if (Array.isArray(value)) {
|
|
103
|
+
return value;
|
|
104
|
+
}
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
getValue(path) {
|
|
108
|
+
return this.resolvePath(path);
|
|
109
|
+
}
|
|
110
|
+
resolvePath(path) {
|
|
111
|
+
const parts = path.split(".");
|
|
112
|
+
let current = this.data;
|
|
113
|
+
for (const part of parts) {
|
|
114
|
+
if (current === null || current === undefined || typeof current !== "object") {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
current = current[part];
|
|
118
|
+
}
|
|
119
|
+
return current;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// =============================================================================
|
|
123
|
+
// CsvDataSource
|
|
124
|
+
// =============================================================================
|
|
125
|
+
/**
|
|
126
|
+
* Data source that reads from a CSV string.
|
|
127
|
+
*
|
|
128
|
+
* The first row is treated as headers (column names become keys).
|
|
129
|
+
* Each subsequent row becomes an object. The entire dataset is available
|
|
130
|
+
* as an array under the `rows` key (or a custom key).
|
|
131
|
+
*
|
|
132
|
+
* Individual columns are also available as arrays under their header name.
|
|
133
|
+
*
|
|
134
|
+
* Example CSV:
|
|
135
|
+
* ```
|
|
136
|
+
* name,age
|
|
137
|
+
* Alice,30
|
|
138
|
+
* Bob,25
|
|
139
|
+
* ```
|
|
140
|
+
* Produces:
|
|
141
|
+
* ```
|
|
142
|
+
* {
|
|
143
|
+
* rows: [{ name: "Alice", age: "30" }, { name: "Bob", age: "25" }],
|
|
144
|
+
* name: ["Alice", "Bob"],
|
|
145
|
+
* age: ["30", "25"]
|
|
146
|
+
* }
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @stability experimental
|
|
150
|
+
*/
|
|
151
|
+
export class CsvDataSource {
|
|
152
|
+
/**
|
|
153
|
+
* @param csv - A CSV string.
|
|
154
|
+
* @param options - Optional parsing configuration.
|
|
155
|
+
*/
|
|
156
|
+
constructor(csv, options) {
|
|
157
|
+
const delimiter = options?.delimiter ?? ",";
|
|
158
|
+
const rowsKey = options?.rowsKey ?? "rows";
|
|
159
|
+
this.data = parseCsvToRecord(csv, delimiter, rowsKey);
|
|
160
|
+
}
|
|
161
|
+
getData() {
|
|
162
|
+
return this.data;
|
|
163
|
+
}
|
|
164
|
+
getArray(key) {
|
|
165
|
+
const value = this.data[key];
|
|
166
|
+
if (Array.isArray(value)) {
|
|
167
|
+
return value;
|
|
168
|
+
}
|
|
169
|
+
return [];
|
|
170
|
+
}
|
|
171
|
+
getValue(path) {
|
|
172
|
+
const parts = path.split(".");
|
|
173
|
+
let current = this.data;
|
|
174
|
+
for (const part of parts) {
|
|
175
|
+
if (current === null || current === undefined || typeof current !== "object") {
|
|
176
|
+
return undefined;
|
|
177
|
+
}
|
|
178
|
+
current = current[part];
|
|
179
|
+
}
|
|
180
|
+
return current;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// =============================================================================
|
|
184
|
+
// CompositeDataSource
|
|
185
|
+
// =============================================================================
|
|
186
|
+
/**
|
|
187
|
+
* Combines multiple data sources into one.
|
|
188
|
+
*
|
|
189
|
+
* Sources added later take precedence over earlier ones for conflicting keys.
|
|
190
|
+
* Arrays can optionally be merged instead of overwritten.
|
|
191
|
+
*
|
|
192
|
+
* @stability experimental
|
|
193
|
+
*/
|
|
194
|
+
export class CompositeDataSource {
|
|
195
|
+
/**
|
|
196
|
+
* @param sources - Data sources to combine (later sources take precedence).
|
|
197
|
+
* @param options - Configuration options.
|
|
198
|
+
*/
|
|
199
|
+
constructor(sources, options) {
|
|
200
|
+
this.sources = sources;
|
|
201
|
+
this.mergeArrays = options?.mergeArrays ?? false;
|
|
202
|
+
}
|
|
203
|
+
getData() {
|
|
204
|
+
const result = {};
|
|
205
|
+
for (const source of this.sources) {
|
|
206
|
+
const data = source.getData();
|
|
207
|
+
for (const key of Object.keys(data)) {
|
|
208
|
+
if (this.mergeArrays && Array.isArray(result[key]) && Array.isArray(data[key])) {
|
|
209
|
+
result[key] = [...result[key], ...data[key]];
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
result[key] = data[key];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
getArray(key) {
|
|
219
|
+
if (this.mergeArrays) {
|
|
220
|
+
const merged = [];
|
|
221
|
+
for (const source of this.sources) {
|
|
222
|
+
const arr = source.getArray(key);
|
|
223
|
+
merged.push(...arr);
|
|
224
|
+
}
|
|
225
|
+
return merged;
|
|
226
|
+
}
|
|
227
|
+
// Last source with a non-empty array wins
|
|
228
|
+
for (let i = this.sources.length - 1; i >= 0; i--) {
|
|
229
|
+
const arr = this.sources[i].getArray(key);
|
|
230
|
+
if (arr.length > 0) {
|
|
231
|
+
return arr;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return [];
|
|
235
|
+
}
|
|
236
|
+
getValue(path) {
|
|
237
|
+
// Last source with a defined value wins
|
|
238
|
+
for (let i = this.sources.length - 1; i >= 0; i--) {
|
|
239
|
+
const value = this.sources[i].getValue(path);
|
|
240
|
+
if (value !== undefined) {
|
|
241
|
+
return value;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return undefined;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// =============================================================================
|
|
248
|
+
// fillTemplateFromSource
|
|
249
|
+
// =============================================================================
|
|
250
|
+
/**
|
|
251
|
+
* Fill a DOCX template using a DataSource instead of a raw data record.
|
|
252
|
+
*
|
|
253
|
+
* This is a convenience function that extracts data from the source and
|
|
254
|
+
* delegates to the core `fillTemplate` function.
|
|
255
|
+
*
|
|
256
|
+
* @param doc - The parsed DocxDocument model.
|
|
257
|
+
* @param source - A DataSource implementation.
|
|
258
|
+
* @param options - Optional template settings.
|
|
259
|
+
* @returns The same DocxDocument with placeholders resolved.
|
|
260
|
+
*
|
|
261
|
+
* @stability experimental
|
|
262
|
+
*/
|
|
263
|
+
export function fillTemplateFromSource(doc, source, options) {
|
|
264
|
+
const data = source.getData();
|
|
265
|
+
return fillTemplate(doc, data, options);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Parse an XML string into a flat Record using the project's hardened
|
|
269
|
+
* SAX-backed DOM parser. The parser enforces the standard `maxDepth` and
|
|
270
|
+
* `maxEntityExpansions` limits, so this helper is safe to call on
|
|
271
|
+
* untrusted input — earlier versions used a hand-rolled regex parser
|
|
272
|
+
* with no depth limit and no protection against billion-laughs / nested
|
|
273
|
+
* element bombs.
|
|
274
|
+
*/
|
|
275
|
+
function parseXmlToRecord(xml, rootTag) {
|
|
276
|
+
let parsed;
|
|
277
|
+
try {
|
|
278
|
+
parsed = parseXml(xml);
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
return {};
|
|
282
|
+
}
|
|
283
|
+
const root = parsed.root;
|
|
284
|
+
if (!root) {
|
|
285
|
+
return {};
|
|
286
|
+
}
|
|
287
|
+
// The previous regex parser ignored rootTag too; we keep that behaviour
|
|
288
|
+
// for compatibility — converting from `root` directly works regardless
|
|
289
|
+
// of whether the caller named the expected root.
|
|
290
|
+
void rootTag;
|
|
291
|
+
return xmlElementToRecord(root);
|
|
292
|
+
}
|
|
293
|
+
/** Adapter from XmlElement (DOM) to the legacy XmlNode shape. */
|
|
294
|
+
function elementToXmlNode(el) {
|
|
295
|
+
const children = [];
|
|
296
|
+
let text = "";
|
|
297
|
+
for (const child of el.children) {
|
|
298
|
+
if (child.type === "element") {
|
|
299
|
+
children.push(elementToXmlNode(child));
|
|
300
|
+
}
|
|
301
|
+
else if (child.type === "text" || child.type === "cdata") {
|
|
302
|
+
text += child.value;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return {
|
|
306
|
+
tag: el.local ?? el.name.replace(/^.*:/, ""),
|
|
307
|
+
attributes: { ...el.attributes },
|
|
308
|
+
children,
|
|
309
|
+
text
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
function xmlElementToRecord(el) {
|
|
313
|
+
return xmlNodeToRecord(elementToXmlNode(el));
|
|
314
|
+
}
|
|
315
|
+
/** Stub for the legacy entrypoint kept for tests / external callers. */
|
|
316
|
+
function parseXmlElement(xml) {
|
|
317
|
+
try {
|
|
318
|
+
return elementToXmlNode(parseXml(xml).root);
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
return null;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
// Suppress no-unused-vars lint — kept for binary compat with prior internal API.
|
|
325
|
+
void parseXmlElement;
|
|
326
|
+
/** Convert an XmlNode tree into a flat Record. */
|
|
327
|
+
function xmlNodeToRecord(node) {
|
|
328
|
+
const result = {};
|
|
329
|
+
// Add attributes with @ prefix
|
|
330
|
+
for (const key of Object.keys(node.attributes)) {
|
|
331
|
+
result[`@${key}`] = node.attributes[key];
|
|
332
|
+
}
|
|
333
|
+
// Group children by tag name
|
|
334
|
+
const childGroups = new Map();
|
|
335
|
+
for (const child of node.children) {
|
|
336
|
+
const existing = childGroups.get(child.tag);
|
|
337
|
+
if (existing) {
|
|
338
|
+
existing.push(child);
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
childGroups.set(child.tag, [child]);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
// Convert child groups
|
|
345
|
+
for (const [tag, group] of childGroups) {
|
|
346
|
+
if (group.length === 1) {
|
|
347
|
+
const child = group[0];
|
|
348
|
+
if (child.children.length === 0) {
|
|
349
|
+
// Leaf node — use text value
|
|
350
|
+
result[tag] = child.text || "";
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
// Nested object
|
|
354
|
+
result[tag] = xmlNodeToRecord(child);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
// Multiple elements with same tag — array
|
|
359
|
+
result[tag] = group.map(child => {
|
|
360
|
+
if (child.children.length === 0) {
|
|
361
|
+
return child.text || "";
|
|
362
|
+
}
|
|
363
|
+
return xmlNodeToRecord(child);
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
// If node has text and no children, include it
|
|
368
|
+
if (node.children.length === 0 && node.text) {
|
|
369
|
+
result["#text"] = node.text;
|
|
370
|
+
}
|
|
371
|
+
return result;
|
|
372
|
+
}
|
|
373
|
+
// =============================================================================
|
|
374
|
+
// Internal: CSV Parser (minimal, zero-dependency)
|
|
375
|
+
// =============================================================================
|
|
376
|
+
/**
|
|
377
|
+
* Parse a CSV string into a Record with column arrays and a rows array.
|
|
378
|
+
* Handles quoted fields (RFC 4180 style).
|
|
379
|
+
*/
|
|
380
|
+
function parseCsvToRecord(csv, delimiter, rowsKey) {
|
|
381
|
+
const lines = parseCsvLines(csv, delimiter);
|
|
382
|
+
if (lines.length === 0) {
|
|
383
|
+
return { [rowsKey]: [] };
|
|
384
|
+
}
|
|
385
|
+
const headers = lines[0];
|
|
386
|
+
const rows = [];
|
|
387
|
+
const columns = {};
|
|
388
|
+
// Initialize column arrays
|
|
389
|
+
for (const header of headers) {
|
|
390
|
+
columns[header] = [];
|
|
391
|
+
}
|
|
392
|
+
// Parse data rows
|
|
393
|
+
for (let i = 1; i < lines.length; i++) {
|
|
394
|
+
const fields = lines[i];
|
|
395
|
+
const row = {};
|
|
396
|
+
for (let j = 0; j < headers.length; j++) {
|
|
397
|
+
const value = j < fields.length ? fields[j] : "";
|
|
398
|
+
row[headers[j]] = value;
|
|
399
|
+
columns[headers[j]].push(value);
|
|
400
|
+
}
|
|
401
|
+
rows.push(row);
|
|
402
|
+
}
|
|
403
|
+
const result = { [rowsKey]: rows };
|
|
404
|
+
for (const header of headers) {
|
|
405
|
+
result[header] = columns[header];
|
|
406
|
+
}
|
|
407
|
+
return result;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Parse CSV text into an array of rows, where each row is an array of fields.
|
|
411
|
+
* Supports quoted fields with embedded delimiters, newlines, and escaped quotes.
|
|
412
|
+
*/
|
|
413
|
+
function parseCsvLines(csv, delimiter) {
|
|
414
|
+
const rows = [];
|
|
415
|
+
const len = csv.length;
|
|
416
|
+
let pos = 0;
|
|
417
|
+
while (pos < len) {
|
|
418
|
+
const { fields, nextPos } = parseCsvRow(csv, pos, delimiter);
|
|
419
|
+
// Skip completely empty trailing lines
|
|
420
|
+
if (nextPos >= len && fields.length === 1 && fields[0] === "") {
|
|
421
|
+
break;
|
|
422
|
+
}
|
|
423
|
+
rows.push(fields);
|
|
424
|
+
pos = nextPos;
|
|
425
|
+
}
|
|
426
|
+
return rows;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Parse a single CSV row starting at the given position.
|
|
430
|
+
* Returns the parsed fields and the position after the row terminator.
|
|
431
|
+
*/
|
|
432
|
+
function parseCsvRow(csv, startPos, delimiter) {
|
|
433
|
+
const fields = [];
|
|
434
|
+
const len = csv.length;
|
|
435
|
+
let pos = startPos;
|
|
436
|
+
while (pos <= len) {
|
|
437
|
+
if (pos === len) {
|
|
438
|
+
// End of input — add empty field only if we just saw a delimiter
|
|
439
|
+
if (fields.length > 0 && pos > startPos && csv[pos - 1] === delimiter) {
|
|
440
|
+
fields.push("");
|
|
441
|
+
}
|
|
442
|
+
else if (fields.length === 0) {
|
|
443
|
+
fields.push("");
|
|
444
|
+
}
|
|
445
|
+
break;
|
|
446
|
+
}
|
|
447
|
+
const char = csv[pos];
|
|
448
|
+
// Check for line terminator at start of field (empty row remainder)
|
|
449
|
+
if (char === "\r" || char === "\n") {
|
|
450
|
+
if (fields.length === 0) {
|
|
451
|
+
// Empty line
|
|
452
|
+
fields.push("");
|
|
453
|
+
}
|
|
454
|
+
// Skip line terminator
|
|
455
|
+
if (char === "\r" && pos + 1 < len && csv[pos + 1] === "\n") {
|
|
456
|
+
pos += 2;
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
pos += 1;
|
|
460
|
+
}
|
|
461
|
+
return { fields, nextPos: pos };
|
|
462
|
+
}
|
|
463
|
+
if (char === '"') {
|
|
464
|
+
// Quoted field
|
|
465
|
+
const { value, nextPos: fieldEnd } = parseQuotedField(csv, pos);
|
|
466
|
+
fields.push(value);
|
|
467
|
+
pos = fieldEnd;
|
|
468
|
+
// After quoted field, expect delimiter or line end
|
|
469
|
+
if (pos < len && csv[pos] === delimiter) {
|
|
470
|
+
pos++; // skip delimiter
|
|
471
|
+
}
|
|
472
|
+
else if (pos < len && (csv[pos] === "\r" || csv[pos] === "\n")) {
|
|
473
|
+
if (csv[pos] === "\r" && pos + 1 < len && csv[pos + 1] === "\n") {
|
|
474
|
+
pos += 2;
|
|
475
|
+
}
|
|
476
|
+
else {
|
|
477
|
+
pos += 1;
|
|
478
|
+
}
|
|
479
|
+
return { fields, nextPos: pos };
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
// Unquoted field
|
|
484
|
+
let fieldEnd = pos;
|
|
485
|
+
while (fieldEnd < len &&
|
|
486
|
+
csv[fieldEnd] !== delimiter &&
|
|
487
|
+
csv[fieldEnd] !== "\r" &&
|
|
488
|
+
csv[fieldEnd] !== "\n") {
|
|
489
|
+
fieldEnd++;
|
|
490
|
+
}
|
|
491
|
+
fields.push(csv.slice(pos, fieldEnd));
|
|
492
|
+
pos = fieldEnd;
|
|
493
|
+
if (pos < len && csv[pos] === delimiter) {
|
|
494
|
+
pos++; // skip delimiter
|
|
495
|
+
// If delimiter is at end of input, add empty trailing field
|
|
496
|
+
if (pos >= len) {
|
|
497
|
+
fields.push("");
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
else if (pos < len && (csv[pos] === "\r" || csv[pos] === "\n")) {
|
|
501
|
+
if (csv[pos] === "\r" && pos + 1 < len && csv[pos + 1] === "\n") {
|
|
502
|
+
pos += 2;
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
pos += 1;
|
|
506
|
+
}
|
|
507
|
+
return { fields, nextPos: pos };
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
return { fields, nextPos: pos };
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Parse a quoted CSV field starting at the given position (which must be a `"`).
|
|
515
|
+
* Handles escaped quotes (`""`) inside the field.
|
|
516
|
+
*/
|
|
517
|
+
function parseQuotedField(csv, startPos) {
|
|
518
|
+
const len = csv.length;
|
|
519
|
+
let pos = startPos + 1; // skip opening quote
|
|
520
|
+
let value = "";
|
|
521
|
+
while (pos < len) {
|
|
522
|
+
if (csv[pos] === '"') {
|
|
523
|
+
if (pos + 1 < len && csv[pos + 1] === '"') {
|
|
524
|
+
// Escaped quote
|
|
525
|
+
value += '"';
|
|
526
|
+
pos += 2;
|
|
527
|
+
}
|
|
528
|
+
else {
|
|
529
|
+
// End of quoted field
|
|
530
|
+
pos++; // skip closing quote
|
|
531
|
+
return { value, nextPos: pos };
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
else {
|
|
535
|
+
value += csv[pos];
|
|
536
|
+
pos++;
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
// Unterminated quote — return what we have
|
|
540
|
+
return { value, nextPos: pos };
|
|
541
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX Module - Template Engine
|
|
3
|
+
*
|
|
4
|
+
* A template engine for DOCX documents supporting:
|
|
5
|
+
* - Variable interpolation: {{name}}, {{user.name}}
|
|
6
|
+
* - Conditionals: {{#if cond}}...{{/if}}, {{#if cond}}...{{else}}...{{/if}}
|
|
7
|
+
* - Loops: {{#each items}}...{{/each}} with {{.}}, {{.prop}}, {{@index}}
|
|
8
|
+
* - Table row loops: auto-duplicates table rows when {{#each}} is in a row
|
|
9
|
+
* - Table column loops: {{#cols items}}...{{/cols}} duplicates columns
|
|
10
|
+
* - Image placeholders: {{%image}} resolves to an inline image
|
|
11
|
+
* - RichText placeholders: {{&richText}} resolves to paragraph children
|
|
12
|
+
* - Sub-document insertion: {{>subDoc}} resolves to body content blocks
|
|
13
|
+
* - Chart placeholders: {{^chart}} resolves to chart content
|
|
14
|
+
*
|
|
15
|
+
* Handles cross-run placeholders (Word often splits {{name}} across runs).
|
|
16
|
+
*/
|
|
17
|
+
import type { BaseErrorOptions } from "../../../utils/errors.js";
|
|
18
|
+
import { DocxError } from "../errors.js";
|
|
19
|
+
import type { DocxDocument, BodyContent, Run, ImageDef, Chart } from "../types.js";
|
|
20
|
+
/** Options for the template engine. */
|
|
21
|
+
export interface TemplateOptions {
|
|
22
|
+
/** Custom delimiters (default: ["{{", "}}"]). */
|
|
23
|
+
readonly delimiters?: readonly [string, string];
|
|
24
|
+
/**
|
|
25
|
+
* If true (default), throw `TemplateError` when a placeholder cannot be
|
|
26
|
+
* resolved. If false, unresolved variables render as the empty string and
|
|
27
|
+
* unresolved control directives are skipped silently.
|
|
28
|
+
*/
|
|
29
|
+
readonly strict?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/** An image value to be inserted by the template engine. */
|
|
32
|
+
export interface TemplateImage {
|
|
33
|
+
/** Image definition (data, fileName, mediaType). */
|
|
34
|
+
readonly image: ImageDef;
|
|
35
|
+
/** Width in EMU. */
|
|
36
|
+
readonly width: number;
|
|
37
|
+
/** Height in EMU. */
|
|
38
|
+
readonly height: number;
|
|
39
|
+
/** Optional alt text. */
|
|
40
|
+
readonly altText?: string;
|
|
41
|
+
}
|
|
42
|
+
/** Rich text value: an array of runs to insert. */
|
|
43
|
+
export type TemplateRichText = readonly Run[];
|
|
44
|
+
/** Sub-document content: body blocks to insert. */
|
|
45
|
+
export type TemplateSubDocument = readonly BodyContent[];
|
|
46
|
+
/** Chart value to be inserted by the template engine. */
|
|
47
|
+
export interface TemplateChart {
|
|
48
|
+
readonly chart: Chart;
|
|
49
|
+
readonly altText?: string;
|
|
50
|
+
readonly name?: string;
|
|
51
|
+
}
|
|
52
|
+
/** HTML chunk value to be inserted as an altChunk body content. */
|
|
53
|
+
export interface TemplateHtmlChunk {
|
|
54
|
+
/** HTML content string. */
|
|
55
|
+
readonly html: string;
|
|
56
|
+
/** Optional content type (default: "text/html"). */
|
|
57
|
+
readonly contentType?: string;
|
|
58
|
+
}
|
|
59
|
+
/** Information about a template tag found in the document. */
|
|
60
|
+
export interface TemplateTag {
|
|
61
|
+
/** The raw tag expression (e.g. "name", "#each items", "%image"). */
|
|
62
|
+
readonly expression: string;
|
|
63
|
+
/** Tag type. */
|
|
64
|
+
readonly type: "variable" | "image" | "richText" | "subDocument" | "chart" | "htmlChunk" | "ifOpen" | "ifClose" | "else" | "eachOpen" | "eachClose" | "colsOpen" | "colsClose";
|
|
65
|
+
/** Location hint (e.g. "body paragraph 3", "header"). */
|
|
66
|
+
readonly location: string;
|
|
67
|
+
}
|
|
68
|
+
/** Error thrown when template processing fails. */
|
|
69
|
+
export declare class TemplateError extends DocxError {
|
|
70
|
+
readonly name = "TemplateError";
|
|
71
|
+
/** The placeholder that caused the error. */
|
|
72
|
+
readonly placeholder: string;
|
|
73
|
+
/** Location hint (e.g. "body paragraph 3", "header"). */
|
|
74
|
+
readonly location: string;
|
|
75
|
+
/** The tag name/expression that caused the error. */
|
|
76
|
+
readonly tagName?: string;
|
|
77
|
+
/** The paragraph index within the current block where the error occurred. */
|
|
78
|
+
readonly paragraphIndex?: number;
|
|
79
|
+
/** The section path (e.g. "body", "header:default", "footer:first"). */
|
|
80
|
+
readonly sectionPath?: string;
|
|
81
|
+
constructor(message: string, placeholder: string, location: string, options?: BaseErrorOptions & {
|
|
82
|
+
tagName?: string;
|
|
83
|
+
paragraphIndex?: number;
|
|
84
|
+
sectionPath?: string;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Fill a DOCX template document with data.
|
|
89
|
+
*
|
|
90
|
+
* Processes all body content, headers, footers, footnotes, and endnotes.
|
|
91
|
+
* Operates on the document model in-place and returns it.
|
|
92
|
+
*
|
|
93
|
+
* @param doc - The parsed DocxDocument model.
|
|
94
|
+
* @param data - Data to fill into the template.
|
|
95
|
+
* @param options - Optional template settings.
|
|
96
|
+
* @returns The same DocxDocument with placeholders resolved.
|
|
97
|
+
*/
|
|
98
|
+
export declare function fillTemplate(doc: DocxDocument, data: Record<string, unknown>, options?: TemplateOptions): DocxDocument;
|
|
99
|
+
/**
|
|
100
|
+
* List all template tags found in a document.
|
|
101
|
+
*
|
|
102
|
+
* Scans body, headers, footers, footnotes, and endnotes for template
|
|
103
|
+
* placeholders. Useful for validating data objects against templates.
|
|
104
|
+
*
|
|
105
|
+
* @param doc - The parsed DocxDocument model.
|
|
106
|
+
* @param options - Optional settings (custom delimiters).
|
|
107
|
+
* @returns Array of all discovered template tags.
|
|
108
|
+
*/
|
|
109
|
+
export declare function listTemplateTags(doc: DocxDocument, options?: Pick<TemplateOptions, "delimiters">): TemplateTag[];
|
|
110
|
+
export declare function isTemplateChart(v: unknown): v is TemplateChart;
|
|
111
|
+
/**
|
|
112
|
+
* Enhanced fillTemplate that supports image (%img), richText (&rt),
|
|
113
|
+
* subDocument (>sub), and chart (^chart) placeholders in addition to the
|
|
114
|
+
* standard variable, conditional, and loop directives.
|
|
115
|
+
*
|
|
116
|
+
* Image placeholder: {{%imagePath}} — value must be a TemplateImage object.
|
|
117
|
+
* RichText placeholder: {{&richPath}} — value must be TemplateRichText (Run[]).
|
|
118
|
+
* SubDocument placeholder: {{>subPath}} — value must be TemplateSubDocument (BodyContent[]).
|
|
119
|
+
* Chart placeholder: {{^chartPath}} — value must be a TemplateChart object.
|
|
120
|
+
*/
|
|
121
|
+
export declare function fillTemplateEnhanced(doc: DocxDocument, data: Record<string, unknown>, options?: TemplateOptions): DocxDocument;
|