@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,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX Module - Theme Color Utilities
|
|
3
|
+
*
|
|
4
|
+
* Resolves OOXML theme colors with tint/shade transformations.
|
|
5
|
+
* Extracted to a standalone file so that html-renderer and document.ts
|
|
6
|
+
* can both import it without creating circular heavy dependencies.
|
|
7
|
+
*
|
|
8
|
+
* Core tint/shade/resolve logic lives in @utils/theme-colors; this module
|
|
9
|
+
* re-exports and adapts it for Word's ColorSpec / DocumentTheme types.
|
|
10
|
+
*/
|
|
11
|
+
import { applyTint, applyShade, resolveOoxmlThemeColor, THEME_COLOR_ATTRIBUTE_MAP } from "../../../utils/theme-colors.js";
|
|
12
|
+
// Re-export shared utilities so existing consumers that import from here
|
|
13
|
+
// continue to work without changes.
|
|
14
|
+
export { applyTint, applyShade, THEME_COLOR_ATTRIBUTE_MAP };
|
|
15
|
+
/**
|
|
16
|
+
* Resolve a ColorSpec to an actual hex RGB color using the document theme.
|
|
17
|
+
*
|
|
18
|
+
* Applies theme color lookup + tint/shade transformations per OOXML spec.
|
|
19
|
+
*
|
|
20
|
+
* @param color - The color value (HexColor string or ColorSpec).
|
|
21
|
+
* @param theme - The document theme (from `doc.theme`).
|
|
22
|
+
* @returns Resolved hex color string (6 chars, no #), or undefined if unresolvable.
|
|
23
|
+
*/
|
|
24
|
+
export function resolveThemeColor(color, theme) {
|
|
25
|
+
if (color === undefined) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
if (typeof color === "string") {
|
|
29
|
+
return color;
|
|
30
|
+
}
|
|
31
|
+
// ColorSpec with val — use directly
|
|
32
|
+
if (color.val && color.val !== "auto") {
|
|
33
|
+
return color.val;
|
|
34
|
+
}
|
|
35
|
+
// Resolve via theme
|
|
36
|
+
if (!color.themeColor || !theme) {
|
|
37
|
+
return color.val;
|
|
38
|
+
}
|
|
39
|
+
const colors = theme.colorScheme.colors;
|
|
40
|
+
const tint = color.themeTint ? parseInt(color.themeTint, 16) / 255 : undefined;
|
|
41
|
+
const shade = color.themeShade ? parseInt(color.themeShade, 16) / 255 : undefined;
|
|
42
|
+
return resolveOoxmlThemeColor(color.themeColor, colors, tint, shade) ?? color.val;
|
|
43
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX Module - Internal Utilities (unified shared helpers)
|
|
3
|
+
*
|
|
4
|
+
* This is the single source of truth for cross-cutting low-level utilities
|
|
5
|
+
* used throughout the word module. Consolidates previously duplicated
|
|
6
|
+
* implementations of base64, UUID, UTF-16LE encoding, and XML helpers.
|
|
7
|
+
*/
|
|
8
|
+
import { DocxError } from "../errors.js";
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Shared TextEncoder / TextDecoder singletons
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Shared `TextEncoder` instance for UTF-8 encoding. Reusing this avoids the
|
|
14
|
+
* cost of constructing a fresh encoder on every call site (each `new
|
|
15
|
+
* TextEncoder()` allocates a small native object).
|
|
16
|
+
*/
|
|
17
|
+
export const utf8Encoder = /*#__PURE__*/ new TextEncoder();
|
|
18
|
+
/**
|
|
19
|
+
* Shared `TextDecoder` instance for UTF-8 decoding. Stateless — safe to share
|
|
20
|
+
* across modules. Use this instead of `new TextDecoder("utf-8")`.
|
|
21
|
+
*/
|
|
22
|
+
export const utf8Decoder = /*#__PURE__*/ new TextDecoder("utf-8");
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// Base64 Encoding / Decoding
|
|
25
|
+
// =============================================================================
|
|
26
|
+
/**
|
|
27
|
+
* Encode a byte array to base64. Uses native Node `Buffer` if available;
|
|
28
|
+
* otherwise falls back to chunked `btoa()` for browser environments.
|
|
29
|
+
*
|
|
30
|
+
* The chunked approach avoids the O(n²) string concatenation cost that naïve
|
|
31
|
+
* `String.fromCharCode(...data)` implementations exhibit on large buffers.
|
|
32
|
+
*/
|
|
33
|
+
export function bytesToBase64(data) {
|
|
34
|
+
if (typeof Buffer !== "undefined") {
|
|
35
|
+
return Buffer.from(data).toString("base64");
|
|
36
|
+
}
|
|
37
|
+
const CHUNK = 0x8000;
|
|
38
|
+
const parts = [];
|
|
39
|
+
for (let i = 0; i < data.length; i += CHUNK) {
|
|
40
|
+
const slice = data.subarray(i, i + CHUNK);
|
|
41
|
+
// `apply` on Uint8Array works in all modern JS engines
|
|
42
|
+
parts.push(String.fromCharCode.apply(null, slice));
|
|
43
|
+
}
|
|
44
|
+
return btoa(parts.join(""));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Decode a base64 string to a byte array. Uses native Node `Buffer` if available.
|
|
48
|
+
*/
|
|
49
|
+
export function base64ToBytes(s) {
|
|
50
|
+
if (typeof Buffer !== "undefined") {
|
|
51
|
+
return new Uint8Array(Buffer.from(s, "base64"));
|
|
52
|
+
}
|
|
53
|
+
const binary = atob(s);
|
|
54
|
+
const bytes = new Uint8Array(binary.length);
|
|
55
|
+
for (let i = 0; i < binary.length; i++) {
|
|
56
|
+
bytes[i] = binary.charCodeAt(i);
|
|
57
|
+
}
|
|
58
|
+
return bytes;
|
|
59
|
+
}
|
|
60
|
+
// =============================================================================
|
|
61
|
+
// UUID v4 Generation
|
|
62
|
+
// =============================================================================
|
|
63
|
+
/**
|
|
64
|
+
* Generate a random UUID v4 string in the form "XXXXXXXX-XXXX-4XXX-YXXX-XXXXXXXXXXXX".
|
|
65
|
+
* Uses `crypto.getRandomValues` for cryptographic randomness.
|
|
66
|
+
*/
|
|
67
|
+
function generateUuid() {
|
|
68
|
+
const bytes = new Uint8Array(16);
|
|
69
|
+
crypto.getRandomValues(bytes);
|
|
70
|
+
// RFC 4122 v4 UUID: set version (4) and variant (10xx) bits
|
|
71
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
72
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
73
|
+
const hex = Array.from(bytes, b => b.toString(16).padStart(2, "0")).join("");
|
|
74
|
+
return `${hex.substring(0, 8)}-${hex.substring(8, 12)}-${hex.substring(12, 16)}-${hex.substring(16, 20)}-${hex.substring(20, 32)}`;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Generate a GUID in braced format: "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}".
|
|
78
|
+
* Used by font obfuscation (w:fontKey) and building blocks.
|
|
79
|
+
*/
|
|
80
|
+
export function generateGuid() {
|
|
81
|
+
return `{${generateUuid()}}`;
|
|
82
|
+
}
|
|
83
|
+
// =============================================================================
|
|
84
|
+
// UTF-16LE Encoding
|
|
85
|
+
// =============================================================================
|
|
86
|
+
/**
|
|
87
|
+
* Encode a string as UTF-16LE bytes.
|
|
88
|
+
* Required by ECMA-376 password hashing and OLE operations.
|
|
89
|
+
*/
|
|
90
|
+
export function stringToUtf16LE(str) {
|
|
91
|
+
const buf = new Uint8Array(str.length * 2);
|
|
92
|
+
for (let i = 0; i < str.length; i++) {
|
|
93
|
+
const code = str.charCodeAt(i);
|
|
94
|
+
buf[i * 2] = code & 0xff;
|
|
95
|
+
buf[i * 2 + 1] = (code >> 8) & 0xff;
|
|
96
|
+
}
|
|
97
|
+
return buf;
|
|
98
|
+
}
|
|
99
|
+
// =============================================================================
|
|
100
|
+
// Random Bytes
|
|
101
|
+
// =============================================================================
|
|
102
|
+
/**
|
|
103
|
+
* Generate cryptographically secure random bytes.
|
|
104
|
+
* Throws `DocxError` if `crypto.getRandomValues` is unavailable on the host.
|
|
105
|
+
*/
|
|
106
|
+
export function randomBytes(length) {
|
|
107
|
+
const bytes = new Uint8Array(length);
|
|
108
|
+
if (typeof globalThis.crypto !== "undefined" && globalThis.crypto.getRandomValues) {
|
|
109
|
+
globalThis.crypto.getRandomValues(bytes);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
throw new DocxError("crypto.getRandomValues is required. " +
|
|
113
|
+
"This environment does not provide a cryptographically secure random number generator.");
|
|
114
|
+
}
|
|
115
|
+
return bytes;
|
|
116
|
+
}
|
|
117
|
+
// =============================================================================
|
|
118
|
+
// URL safety
|
|
119
|
+
// =============================================================================
|
|
120
|
+
/**
|
|
121
|
+
* Whitelist of URL schemes considered safe to emit verbatim into HTML, DOCX
|
|
122
|
+
* hyperlink relationships, or Markdown link destinations. Anything outside
|
|
123
|
+
* this list is rejected by `sanitizeUrl` to prevent `javascript:`, `vbscript:`,
|
|
124
|
+
* untrusted `data:` URIs, etc. from leaking through user-controlled input.
|
|
125
|
+
*/
|
|
126
|
+
const SAFE_URL_SCHEMES = new Set(["http", "https", "mailto", "tel", "ftp", "ftps", "sms"]);
|
|
127
|
+
/**
|
|
128
|
+
* Validate and normalize a URL for use in a hyperlink. Returns a safe URL
|
|
129
|
+
* string, or `undefined` if the input is unsafe.
|
|
130
|
+
*
|
|
131
|
+
* Rules:
|
|
132
|
+
* - Empty/whitespace input → `undefined`.
|
|
133
|
+
* - Fragment-only (`#anchor`) and protocol-relative (`//host`) URLs → kept.
|
|
134
|
+
* - Relative URLs without a scheme → kept (no host injection possible since
|
|
135
|
+
* they resolve against the document base).
|
|
136
|
+
* - URLs with a scheme are accepted only if the scheme is in
|
|
137
|
+
* {@link SAFE_URL_SCHEMES}.
|
|
138
|
+
* - Surrounding whitespace and control characters that browsers historically
|
|
139
|
+
* strip when parsing URLs are removed before scheme detection so attackers
|
|
140
|
+
* can't bypass the check with `" java\tscript:..."`.
|
|
141
|
+
*/
|
|
142
|
+
export function sanitizeUrl(url) {
|
|
143
|
+
if (url == null) {
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
// Strip control characters (\x00-\x1F and \x7F) and surrounding whitespace.
|
|
147
|
+
// Browsers historically strip these *before* parsing the scheme, so
|
|
148
|
+
// `"java\nscript:..."` would otherwise pass a naive check.
|
|
149
|
+
// oxlint-disable-next-line no-control-regex -- intentional sanitization
|
|
150
|
+
const cleaned = url.replace(/[\u0000-\u001F\u007F]/g, "").trim();
|
|
151
|
+
if (cleaned.length === 0) {
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
// Fragment-only is always safe.
|
|
155
|
+
if (cleaned.startsWith("#")) {
|
|
156
|
+
return cleaned;
|
|
157
|
+
}
|
|
158
|
+
// Protocol-relative ("//host/...") is fine — same-scheme as the host page.
|
|
159
|
+
if (cleaned.startsWith("//")) {
|
|
160
|
+
return cleaned;
|
|
161
|
+
}
|
|
162
|
+
// Detect scheme. RFC 3986: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
|
|
163
|
+
const schemeMatch = /^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(cleaned);
|
|
164
|
+
if (!schemeMatch) {
|
|
165
|
+
// Relative URL — safe.
|
|
166
|
+
return cleaned;
|
|
167
|
+
}
|
|
168
|
+
const scheme = schemeMatch[1].toLowerCase();
|
|
169
|
+
if (SAFE_URL_SCHEMES.has(scheme)) {
|
|
170
|
+
return cleaned;
|
|
171
|
+
}
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Strip path-traversal segments and other unsafe characters from a
|
|
176
|
+
* caller-supplied media file name so it can be used as a leaf entry
|
|
177
|
+
* inside an OPC ZIP package without enabling zipslip.
|
|
178
|
+
*
|
|
179
|
+
* The previous behaviour was to forward `image.fileName` /
|
|
180
|
+
* `font.fileName` straight into `archive.add`, which let a hostile DOCX
|
|
181
|
+
* round-tripped through `readDocx` write entries like
|
|
182
|
+
* `word/media/../../etc/passwd.png` into the output package — a real
|
|
183
|
+
* attack vector when the file is later unpacked by a third-party tool.
|
|
184
|
+
*
|
|
185
|
+
* Returns a single safe leaf name. Falls back to `fallback` (default
|
|
186
|
+
* `"file.bin"`) when the cleaned name would be empty.
|
|
187
|
+
*/
|
|
188
|
+
export function sanitizeMediaFileName(raw, fallback = "file.bin") {
|
|
189
|
+
if (!raw) {
|
|
190
|
+
return fallback;
|
|
191
|
+
}
|
|
192
|
+
// Drop directory components — only the leaf name should ever reach
|
|
193
|
+
// the ZIP path layer.
|
|
194
|
+
const lastSep = Math.max(raw.lastIndexOf("/"), raw.lastIndexOf("\\"));
|
|
195
|
+
let leaf = lastSep >= 0 ? raw.substring(lastSep + 1) : raw;
|
|
196
|
+
// Strip leading dots so attribute-bearing names ("..png", ".htaccess",
|
|
197
|
+
// ".." itself) can't smuggle traversal back in via OS filesystem
|
|
198
|
+
// semantics.
|
|
199
|
+
while (leaf.startsWith(".")) {
|
|
200
|
+
leaf = leaf.substring(1);
|
|
201
|
+
}
|
|
202
|
+
// Whitelist alnum, dash, underscore, dot. Replace everything else
|
|
203
|
+
// with underscore. Empty result triggers fallback.
|
|
204
|
+
leaf = leaf.replace(/[^A-Za-z0-9._-]/g, "_");
|
|
205
|
+
// Collapse runs of dots so "foo..bin" can't be reinterpreted as
|
|
206
|
+
// traversal by a permissive consumer.
|
|
207
|
+
leaf = leaf.replace(/\.{2,}/g, ".");
|
|
208
|
+
return leaf || fallback;
|
|
209
|
+
}
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX Module - Immutable Document Mapper
|
|
3
|
+
*
|
|
4
|
+
* Provides `mapDocument()` and the `DocxTransformer` interface for rebuilding
|
|
5
|
+
* a document tree with transformations applied to specific node types.
|
|
6
|
+
*
|
|
7
|
+
* Unlike the read-only `walkDocument()` (in walker.ts), this mapper produces
|
|
8
|
+
* a new document without mutating the input.
|
|
9
|
+
*/
|
|
10
|
+
import { isRun } from "./text-utils.js";
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Public API
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Immutable document tree transformation.
|
|
16
|
+
* Rebuilds the document tree, allowing callers to replace or filter nodes.
|
|
17
|
+
* Never mutates the input document.
|
|
18
|
+
*
|
|
19
|
+
* @param doc - The document to transform.
|
|
20
|
+
* @param transformer - Callbacks to transform each node type.
|
|
21
|
+
* @param options - Controls which document parts to include.
|
|
22
|
+
* @returns A new DocxDocument with transformations applied.
|
|
23
|
+
*/
|
|
24
|
+
export function mapDocument(doc, transformer, options) {
|
|
25
|
+
const opts = {
|
|
26
|
+
includeHeaders: options?.includeHeaders ?? true,
|
|
27
|
+
includeFooters: options?.includeFooters ?? true,
|
|
28
|
+
includeFootnotes: options?.includeFootnotes ?? true,
|
|
29
|
+
includeEndnotes: options?.includeEndnotes ?? true,
|
|
30
|
+
includeComments: options?.includeComments ?? false
|
|
31
|
+
};
|
|
32
|
+
const basePath = {
|
|
33
|
+
section: 0,
|
|
34
|
+
depth: 0,
|
|
35
|
+
inHeader: false,
|
|
36
|
+
inFooter: false,
|
|
37
|
+
inFootnote: false,
|
|
38
|
+
inEndnote: false,
|
|
39
|
+
inComment: false,
|
|
40
|
+
index: 0
|
|
41
|
+
};
|
|
42
|
+
// Map body
|
|
43
|
+
const body = mapBlocks(doc.body, transformer, basePath);
|
|
44
|
+
// Map headers
|
|
45
|
+
let headers = doc.headers;
|
|
46
|
+
if (opts.includeHeaders && doc.headers) {
|
|
47
|
+
const newHeaders = new Map();
|
|
48
|
+
for (const [key, headerDef] of doc.headers) {
|
|
49
|
+
const headerPath = { ...basePath, inHeader: true };
|
|
50
|
+
const mappedChildren = mapBlocks(headerDef.content.children, transformer, headerPath);
|
|
51
|
+
newHeaders.set(key, {
|
|
52
|
+
...headerDef,
|
|
53
|
+
content: { ...headerDef.content, children: mappedChildren }
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
headers = newHeaders;
|
|
57
|
+
}
|
|
58
|
+
// Map footers
|
|
59
|
+
let footers = doc.footers;
|
|
60
|
+
if (opts.includeFooters && doc.footers) {
|
|
61
|
+
const newFooters = new Map();
|
|
62
|
+
for (const [key, footerDef] of doc.footers) {
|
|
63
|
+
const footerPath = { ...basePath, inFooter: true };
|
|
64
|
+
const mappedChildren = mapBlocks(footerDef.content.children, transformer, footerPath);
|
|
65
|
+
newFooters.set(key, {
|
|
66
|
+
...footerDef,
|
|
67
|
+
content: { ...footerDef.content, children: mappedChildren }
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
footers = newFooters;
|
|
71
|
+
}
|
|
72
|
+
// Map footnotes
|
|
73
|
+
let footnotes = doc.footnotes;
|
|
74
|
+
if (opts.includeFootnotes && doc.footnotes) {
|
|
75
|
+
footnotes = doc.footnotes.map(note => {
|
|
76
|
+
if (note.id <= 0) {
|
|
77
|
+
return note;
|
|
78
|
+
}
|
|
79
|
+
const notePath = { ...basePath, inFootnote: true };
|
|
80
|
+
const mappedContent = mapBlocks(note.content, transformer, notePath);
|
|
81
|
+
return { ...note, content: mappedContent };
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// Map endnotes
|
|
85
|
+
let endnotes = doc.endnotes;
|
|
86
|
+
if (opts.includeEndnotes && doc.endnotes) {
|
|
87
|
+
endnotes = doc.endnotes.map(note => {
|
|
88
|
+
if (note.id <= 0) {
|
|
89
|
+
return note;
|
|
90
|
+
}
|
|
91
|
+
const notePath = { ...basePath, inEndnote: true };
|
|
92
|
+
const mappedContent = mapBlocks(note.content, transformer, notePath);
|
|
93
|
+
return { ...note, content: mappedContent };
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// Map comments
|
|
97
|
+
let comments = doc.comments;
|
|
98
|
+
if (opts.includeComments && doc.comments) {
|
|
99
|
+
comments = doc.comments.map(comment => {
|
|
100
|
+
const commentPath = { ...basePath, inComment: true };
|
|
101
|
+
const mappedContent = mapBlocks(comment.content, transformer, commentPath);
|
|
102
|
+
return { ...comment, content: mappedContent };
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
...doc,
|
|
107
|
+
body,
|
|
108
|
+
headers,
|
|
109
|
+
footers,
|
|
110
|
+
footnotes,
|
|
111
|
+
endnotes,
|
|
112
|
+
comments
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// =============================================================================
|
|
116
|
+
// Internal Mapper Helpers
|
|
117
|
+
// =============================================================================
|
|
118
|
+
function mapBlocks(blocks, transformer, basePath) {
|
|
119
|
+
const result = [];
|
|
120
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
121
|
+
const block = blocks[i];
|
|
122
|
+
const currentPath = { ...basePath, index: i };
|
|
123
|
+
// Call transformBodyContent first (supports null, single, or array return)
|
|
124
|
+
if (transformer.transformBodyContent) {
|
|
125
|
+
const transformed = transformer.transformBodyContent(block, currentPath);
|
|
126
|
+
if (transformed === null) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (Array.isArray(transformed)) {
|
|
130
|
+
// Flat-map: one block becomes multiple blocks
|
|
131
|
+
for (const item of transformed) {
|
|
132
|
+
const mapped = mapBodyContent(item, transformer, currentPath);
|
|
133
|
+
if (mapped !== null) {
|
|
134
|
+
result.push(mapped);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
// Single replacement
|
|
140
|
+
const mapped = mapBodyContent(transformed, transformer, currentPath);
|
|
141
|
+
if (mapped !== null) {
|
|
142
|
+
result.push(mapped);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// No transformBodyContent — just recurse
|
|
147
|
+
const mapped = mapBodyContent(block, transformer, currentPath);
|
|
148
|
+
if (mapped !== null) {
|
|
149
|
+
result.push(mapped);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Maximum nesting depth permitted during transformation. See
|
|
157
|
+
* `core/walker.ts` for the rationale; mirrored here so map and walk
|
|
158
|
+
* share the same abuse-resistance posture.
|
|
159
|
+
*/
|
|
160
|
+
const MAX_MAP_DEPTH = 1000;
|
|
161
|
+
function mapBodyContent(block, transformer, path) {
|
|
162
|
+
if (path.depth > MAX_MAP_DEPTH) {
|
|
163
|
+
// Drop the offending subtree rather than blow the stack. Returning
|
|
164
|
+
// null removes the block from its parent collection in mapBlocks.
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
// Per-type transformer hooks fire only for paragraph / table / sdt.
|
|
168
|
+
// Other BodyContent variants don't have a dedicated hook — callers that
|
|
169
|
+
// want to replace them whole-cloth use `transformBodyContent` in
|
|
170
|
+
// mapBlocks. We still need to recurse into their nested paragraph
|
|
171
|
+
// structures so transformParagraph / transformRun / transformRunContent
|
|
172
|
+
// visit text inside text boxes, drawing shape text, and TOC cached
|
|
173
|
+
// paragraphs. Without that, e.g. replaceText silently misses content in
|
|
174
|
+
// those structures.
|
|
175
|
+
switch (block.type) {
|
|
176
|
+
case "paragraph":
|
|
177
|
+
return mapParagraph(block, transformer, path);
|
|
178
|
+
case "table":
|
|
179
|
+
return mapTable(block, transformer, path);
|
|
180
|
+
case "sdt":
|
|
181
|
+
return mapSdt(block, transformer, path);
|
|
182
|
+
case "textBox": {
|
|
183
|
+
const tb = block;
|
|
184
|
+
if (!tb.content || tb.content.length === 0) {
|
|
185
|
+
return block;
|
|
186
|
+
}
|
|
187
|
+
const innerPath = { ...path, depth: path.depth + 1 };
|
|
188
|
+
const mappedContent = mapBlocks(tb.content, transformer, innerPath);
|
|
189
|
+
if (mappedContent === tb.content) {
|
|
190
|
+
return block;
|
|
191
|
+
}
|
|
192
|
+
// textBox.content is typed as `readonly Paragraph[]`. If a
|
|
193
|
+
// `transformBodyContent` produced anything other than a paragraph
|
|
194
|
+
// (a table, an image, etc.) we'd be silently violating the type
|
|
195
|
+
// invariant — and downstream writers would crash trying to render
|
|
196
|
+
// the unexpected node. Throw loudly instead of dropping the data.
|
|
197
|
+
const filtered = [];
|
|
198
|
+
for (const b of mappedContent) {
|
|
199
|
+
if (b.type === "paragraph") {
|
|
200
|
+
filtered.push(b);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
throw new Error(`mapDocument: textBox.content must remain Paragraph[] but a ` +
|
|
204
|
+
`transform produced "${b.type}". Either rewrite the transform ` +
|
|
205
|
+
`to return only paragraphs here, or restructure the document ` +
|
|
206
|
+
`at the body level instead.`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return { ...block, content: filtered };
|
|
210
|
+
}
|
|
211
|
+
case "drawingShape": {
|
|
212
|
+
const shape = block;
|
|
213
|
+
if (!shape.textContent || shape.textContent.length === 0) {
|
|
214
|
+
return block;
|
|
215
|
+
}
|
|
216
|
+
const innerPath = { ...path, depth: path.depth + 1 };
|
|
217
|
+
const mappedText = mapBlocks(shape.textContent, transformer, innerPath);
|
|
218
|
+
if (mappedText === shape.textContent) {
|
|
219
|
+
return block;
|
|
220
|
+
}
|
|
221
|
+
const filtered = [];
|
|
222
|
+
for (const b of mappedText) {
|
|
223
|
+
if (b.type === "paragraph") {
|
|
224
|
+
filtered.push(b);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
throw new Error(`mapDocument: drawingShape.textContent must remain Paragraph[] ` +
|
|
228
|
+
`but a transform produced "${b.type}".`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return { ...block, textContent: filtered };
|
|
232
|
+
}
|
|
233
|
+
case "tableOfContents": {
|
|
234
|
+
const toc = block;
|
|
235
|
+
if (!toc.cachedParagraphs || toc.cachedParagraphs.length === 0) {
|
|
236
|
+
return block;
|
|
237
|
+
}
|
|
238
|
+
const innerPath = { ...path, depth: path.depth + 1 };
|
|
239
|
+
const mappedCache = mapBlocks(toc.cachedParagraphs, transformer, innerPath);
|
|
240
|
+
if (mappedCache === toc.cachedParagraphs) {
|
|
241
|
+
return block;
|
|
242
|
+
}
|
|
243
|
+
const filtered = [];
|
|
244
|
+
for (const b of mappedCache) {
|
|
245
|
+
if (b.type === "paragraph") {
|
|
246
|
+
filtered.push(b);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
throw new Error(`mapDocument: tableOfContents.cachedParagraphs must remain ` +
|
|
250
|
+
`Paragraph[] but a transform produced "${b.type}".`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return { ...block, cachedParagraphs: filtered };
|
|
254
|
+
}
|
|
255
|
+
default:
|
|
256
|
+
return block;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function mapParagraph(para, transformer, path) {
|
|
260
|
+
// Call transformParagraph
|
|
261
|
+
let current = para;
|
|
262
|
+
if (transformer.transformParagraph) {
|
|
263
|
+
current = transformer.transformParagraph(para, path);
|
|
264
|
+
if (current === null) {
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Map children (runs)
|
|
269
|
+
if (transformer.transformRun || transformer.transformRunContent) {
|
|
270
|
+
const newChildren = [];
|
|
271
|
+
for (let i = 0; i < current.children.length; i++) {
|
|
272
|
+
const child = current.children[i];
|
|
273
|
+
const childPath = { ...path, index: i, depth: path.depth + 1 };
|
|
274
|
+
const mapped = mapParagraphChild(child, transformer, childPath);
|
|
275
|
+
if (mapped !== null) {
|
|
276
|
+
newChildren.push(mapped);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
current = { ...current, children: newChildren };
|
|
280
|
+
}
|
|
281
|
+
return current;
|
|
282
|
+
}
|
|
283
|
+
function mapParagraphChild(child, transformer, path) {
|
|
284
|
+
if (isRun(child)) {
|
|
285
|
+
return mapRun(child, transformer, path);
|
|
286
|
+
}
|
|
287
|
+
if ("type" in child) {
|
|
288
|
+
const typed = child;
|
|
289
|
+
switch (typed.type) {
|
|
290
|
+
case "hyperlink": {
|
|
291
|
+
const hl = child;
|
|
292
|
+
if (transformer.transformRun || transformer.transformRunContent) {
|
|
293
|
+
const newChildren = [];
|
|
294
|
+
for (let i = 0; i < hl.children.length; i++) {
|
|
295
|
+
const run = hl.children[i];
|
|
296
|
+
const runPath = { ...path, index: i, depth: path.depth + 1 };
|
|
297
|
+
const mapped = mapRun(run, transformer, runPath);
|
|
298
|
+
if (mapped !== null) {
|
|
299
|
+
newChildren.push(mapped);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return { ...hl, children: newChildren };
|
|
303
|
+
}
|
|
304
|
+
return child;
|
|
305
|
+
}
|
|
306
|
+
case "insertedRun": {
|
|
307
|
+
const ins = child;
|
|
308
|
+
const mappedRun = mapRun(ins.run, transformer, path);
|
|
309
|
+
if (mappedRun === null) {
|
|
310
|
+
return null;
|
|
311
|
+
}
|
|
312
|
+
return { ...ins, run: mappedRun };
|
|
313
|
+
}
|
|
314
|
+
case "movedToRun": {
|
|
315
|
+
const moved = child;
|
|
316
|
+
const mappedRun = mapRun(moved.run, transformer, path);
|
|
317
|
+
if (mappedRun === null) {
|
|
318
|
+
return null;
|
|
319
|
+
}
|
|
320
|
+
return { ...moved, run: mappedRun };
|
|
321
|
+
}
|
|
322
|
+
default:
|
|
323
|
+
return child;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
// Default: treat as Run if isRun matches.
|
|
327
|
+
if (isRun(child)) {
|
|
328
|
+
return mapRun(child, transformer, path);
|
|
329
|
+
}
|
|
330
|
+
return child;
|
|
331
|
+
}
|
|
332
|
+
function mapRun(run, transformer, path) {
|
|
333
|
+
let current = run;
|
|
334
|
+
// Call transformRun
|
|
335
|
+
if (transformer.transformRun) {
|
|
336
|
+
current = transformer.transformRun(run, path);
|
|
337
|
+
if (current === null) {
|
|
338
|
+
return null;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// Map run content
|
|
342
|
+
if (transformer.transformRunContent) {
|
|
343
|
+
const newContent = [];
|
|
344
|
+
for (const content of current.content) {
|
|
345
|
+
const mapped = transformer.transformRunContent(content, current, path);
|
|
346
|
+
if (mapped !== null) {
|
|
347
|
+
newContent.push(mapped);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
current = { ...current, content: newContent };
|
|
351
|
+
}
|
|
352
|
+
return current;
|
|
353
|
+
}
|
|
354
|
+
function mapTable(table, transformer, path) {
|
|
355
|
+
// Call transformTable
|
|
356
|
+
let current = table;
|
|
357
|
+
if (transformer.transformTable) {
|
|
358
|
+
current = transformer.transformTable(table, path);
|
|
359
|
+
if (current === null) {
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
// Always recurse into cells (even if transformTable returned as-is)
|
|
364
|
+
const newRows = [];
|
|
365
|
+
for (let ri = 0; ri < current.rows.length; ri++) {
|
|
366
|
+
const row = current.rows[ri];
|
|
367
|
+
const rowPath = { ...path, index: ri, depth: path.depth + 1 };
|
|
368
|
+
const newCells = [];
|
|
369
|
+
for (let ci = 0; ci < row.cells.length; ci++) {
|
|
370
|
+
const cell = row.cells[ci];
|
|
371
|
+
const cellPath = { ...rowPath, index: ci, depth: rowPath.depth + 1 };
|
|
372
|
+
const mappedContent = mapBlocks(cell.content, transformer, {
|
|
373
|
+
...cellPath,
|
|
374
|
+
depth: cellPath.depth + 1
|
|
375
|
+
});
|
|
376
|
+
newCells.push({ ...cell, content: mappedContent });
|
|
377
|
+
}
|
|
378
|
+
newRows.push({ ...row, cells: newCells });
|
|
379
|
+
}
|
|
380
|
+
return { ...current, rows: newRows };
|
|
381
|
+
}
|
|
382
|
+
function mapSdt(sdt, transformer, path) {
|
|
383
|
+
// Call transformSdt
|
|
384
|
+
let current = sdt;
|
|
385
|
+
if (transformer.transformSdt) {
|
|
386
|
+
current = transformer.transformSdt(sdt, path);
|
|
387
|
+
if (current === null) {
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
// Recurse into content
|
|
392
|
+
const innerPath = { ...path, depth: path.depth + 1 };
|
|
393
|
+
const newContent = [];
|
|
394
|
+
for (let i = 0; i < current.content.length; i++) {
|
|
395
|
+
const item = current.content[i];
|
|
396
|
+
const itemPath = { ...innerPath, index: i };
|
|
397
|
+
if ("type" in item && item.type === "paragraph") {
|
|
398
|
+
const mapped = mapParagraph(item, transformer, itemPath);
|
|
399
|
+
if (mapped !== null) {
|
|
400
|
+
newContent.push(mapped);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
else if ("type" in item && item.type === "table") {
|
|
404
|
+
const mapped = mapTable(item, transformer, itemPath);
|
|
405
|
+
if (mapped !== null) {
|
|
406
|
+
newContent.push(mapped);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
else if ("type" in item && item.type === "sdt") {
|
|
410
|
+
// Recurse into nested SDTs (e.g. repeating-section item SDTs).
|
|
411
|
+
const mapped = mapSdt(item, transformer, itemPath);
|
|
412
|
+
if (mapped !== null) {
|
|
413
|
+
newContent.push(mapped);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
else if ("content" in item && Array.isArray(item.content)) {
|
|
417
|
+
const mapped = mapRun(item, transformer, innerPath);
|
|
418
|
+
if (mapped !== null) {
|
|
419
|
+
newContent.push(mapped);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
newContent.push(item);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return { ...current, content: newContent };
|
|
427
|
+
}
|