@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
|
@@ -13,14 +13,17 @@
|
|
|
13
13
|
* - Detection and extraction of signature metadata
|
|
14
14
|
* - Preservation of signatures through round-trip (via opaqueParts)
|
|
15
15
|
*
|
|
16
|
-
* Note:
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* Note: This module does NOT validate signature integrity (would require
|
|
17
|
+
* full XMLDSig + Canonical XML implementation). Signatures are preserved
|
|
18
|
+
* verbatim but become invalid if the package contents change.
|
|
19
19
|
*
|
|
20
20
|
* References:
|
|
21
|
-
* -
|
|
21
|
+
* - MS-OFFCRYPTO §3.2.6 Digital Signatures
|
|
22
22
|
* - XMLDSig: https://www.w3.org/TR/xmldsig-core/
|
|
23
23
|
*/
|
|
24
|
+
import { xmlDecode } from "../../xml/encode.js";
|
|
25
|
+
import { utf8Decoder } from "../core/internal-utils.js";
|
|
26
|
+
import { getFileName } from "../core/opc-paths.js";
|
|
24
27
|
/**
|
|
25
28
|
* Check if a document has digital signatures.
|
|
26
29
|
*
|
|
@@ -40,33 +43,34 @@ export function hasDigitalSignatures(opaquePaths) {
|
|
|
40
43
|
export function parseSignatureXml(xmlStr, fileName) {
|
|
41
44
|
const info = {
|
|
42
45
|
rawXml: xmlStr,
|
|
43
|
-
fileName
|
|
46
|
+
fileName,
|
|
47
|
+
cryptographicStatus: "not-verified"
|
|
44
48
|
};
|
|
45
49
|
// Extract Office-specific metadata from <SignatureInfoV1>
|
|
46
50
|
const sigTextMatch = /<SignatureText[^>]*>([^<]*)<\/SignatureText>/.exec(xmlStr);
|
|
47
51
|
if (sigTextMatch) {
|
|
48
|
-
info.signer =
|
|
52
|
+
info.signer = xmlDecode(sigTextMatch[1]);
|
|
49
53
|
}
|
|
50
54
|
const sigCommentsMatch = /<SignatureComments[^>]*>([^<]*)<\/SignatureComments>/.exec(xmlStr);
|
|
51
55
|
if (sigCommentsMatch) {
|
|
52
|
-
info.signatureComments =
|
|
56
|
+
info.signatureComments = xmlDecode(sigCommentsMatch[1]);
|
|
53
57
|
}
|
|
54
58
|
const purposeMatch = /<SignaturePurpose[^>]*>([^<]*)<\/SignaturePurpose>/.exec(xmlStr);
|
|
55
59
|
if (purposeMatch) {
|
|
56
|
-
info.purpose =
|
|
60
|
+
info.purpose = xmlDecode(purposeMatch[1]);
|
|
57
61
|
}
|
|
58
62
|
const dateMatch = /<SignatureDate[^>]*>([^<]*)<\/SignatureDate>/.exec(xmlStr);
|
|
59
63
|
if (dateMatch) {
|
|
60
|
-
info.signDate = dateMatch[1];
|
|
64
|
+
info.signDate = xmlDecode(dateMatch[1]);
|
|
61
65
|
}
|
|
62
66
|
const providerMatch = /<SignatureProviderUrl[^>]*>([^<]*)<\/SignatureProviderUrl>/.exec(xmlStr);
|
|
63
67
|
if (providerMatch) {
|
|
64
|
-
info.providerUrl =
|
|
68
|
+
info.providerUrl = xmlDecode(providerMatch[1]);
|
|
65
69
|
}
|
|
66
70
|
// Commitment type
|
|
67
71
|
const commitMatch = /<CommitmentType[^>]*>\s*<CommitmentTypeIndication[^>]*>\s*<CommitmentTypeId>([^<]*)<\/CommitmentTypeId>/.exec(xmlStr);
|
|
68
72
|
if (commitMatch) {
|
|
69
|
-
info.commitmentType = commitMatch[1];
|
|
73
|
+
info.commitmentType = xmlDecode(commitMatch[1]);
|
|
70
74
|
}
|
|
71
75
|
// Extract signature value (base64)
|
|
72
76
|
const sigValMatch = /<SignatureValue[^>]*>([^]*?)<\/SignatureValue>/.exec(xmlStr);
|
|
@@ -76,15 +80,15 @@ export function parseSignatureXml(xmlStr, fileName) {
|
|
|
76
80
|
// Certificate details from <X509Data>
|
|
77
81
|
const certSubjectMatch = /<X509SubjectName[^>]*>([^<]*)<\/X509SubjectName>/.exec(xmlStr);
|
|
78
82
|
if (certSubjectMatch) {
|
|
79
|
-
info.certificateSubject =
|
|
83
|
+
info.certificateSubject = xmlDecode(certSubjectMatch[1]);
|
|
80
84
|
}
|
|
81
85
|
const certIssuerMatch = /<X509IssuerName[^>]*>([^<]*)<\/X509IssuerName>/.exec(xmlStr);
|
|
82
86
|
if (certIssuerMatch) {
|
|
83
|
-
info.certificateIssuer =
|
|
87
|
+
info.certificateIssuer = xmlDecode(certIssuerMatch[1]);
|
|
84
88
|
}
|
|
85
89
|
const certSerialMatch = /<X509SerialNumber[^>]*>([^<]*)<\/X509SerialNumber>/.exec(xmlStr);
|
|
86
90
|
if (certSerialMatch) {
|
|
87
|
-
info.certificateSerialNumber = certSerialMatch[1];
|
|
91
|
+
info.certificateSerialNumber = xmlDecode(certSerialMatch[1]);
|
|
88
92
|
}
|
|
89
93
|
return info;
|
|
90
94
|
}
|
|
@@ -99,36 +103,32 @@ export function extractSignatures(opaqueParts) {
|
|
|
99
103
|
return [];
|
|
100
104
|
}
|
|
101
105
|
const signatures = [];
|
|
102
|
-
const decoder = new TextDecoder("utf-8");
|
|
103
106
|
for (const part of opaqueParts) {
|
|
104
107
|
if (part.path.startsWith("_xmlsignatures/sig") && part.path.endsWith(".xml")) {
|
|
105
|
-
const xmlStr =
|
|
106
|
-
const fileName = part.path
|
|
108
|
+
const xmlStr = utf8Decoder.decode(part.data);
|
|
109
|
+
const fileName = getFileName(part.path);
|
|
107
110
|
signatures.push(parseSignatureXml(xmlStr, fileName));
|
|
108
111
|
}
|
|
109
112
|
}
|
|
110
113
|
return signatures;
|
|
111
114
|
}
|
|
112
115
|
/**
|
|
113
|
-
*
|
|
116
|
+
* Check that a parsed signature has the structural elements XMLDSig
|
|
117
|
+
* requires (`Signature`, `SignedInfo`, `SignatureValue`, `KeyInfo`).
|
|
114
118
|
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
119
|
+
* This is **not** a cryptographic check — see `cryptographicStatus`. It is
|
|
120
|
+
* also tolerant of namespace prefixes (`<ds:Signature>` etc.) which the
|
|
121
|
+
* previous implementation missed.
|
|
118
122
|
*
|
|
119
|
-
* @returns True if the signature
|
|
123
|
+
* @returns True if the signature XML carries the required elements.
|
|
120
124
|
*/
|
|
121
125
|
export function isWellFormedSignature(info) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
.replace(/>/g, ">")
|
|
131
|
-
.replace(/"/g, '"')
|
|
132
|
-
.replace(/'/g, "'")
|
|
133
|
-
.replace(/&/g, "&");
|
|
126
|
+
// Allow optional namespace prefix and either an attribute-bearing or
|
|
127
|
+
// self-closing form — XMLDSig signatures in real DOCX files commonly
|
|
128
|
+
// use `<ds:Signature ...>` rather than the default-namespace form.
|
|
129
|
+
const hasElement = (local) => new RegExp(`<(?:[\\w-]+:)?${local}(?:\\s|>|/>)`).test(info.rawXml);
|
|
130
|
+
return (hasElement("Signature") &&
|
|
131
|
+
hasElement("SignedInfo") &&
|
|
132
|
+
hasElement("SignatureValue") &&
|
|
133
|
+
hasElement("KeyInfo"));
|
|
134
134
|
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX Module - Document Protection
|
|
3
|
+
*
|
|
4
|
+
* Provides APIs for setting document protection passwords and restrictions.
|
|
5
|
+
* Supports all protection types defined in OOXML:
|
|
6
|
+
* - Read-only (no modifications allowed)
|
|
7
|
+
* - Comments only (only add comments)
|
|
8
|
+
* - Forms only (only fill form fields)
|
|
9
|
+
* - Tracked changes (all changes are tracked)
|
|
10
|
+
* - Sections (specific sections editable)
|
|
11
|
+
*
|
|
12
|
+
* Password hashing follows the ECMA-376 specification using
|
|
13
|
+
* iterative SHA-based hashing with salt.
|
|
14
|
+
*/
|
|
15
|
+
import type { DocxDocument } from "../types.js";
|
|
16
|
+
/** Document protection type (edit restriction). */
|
|
17
|
+
export type ProtectionEditType = "none" | "readOnly" | "comments" | "trackedChanges" | "forms";
|
|
18
|
+
/** Hash algorithm for protection password. */
|
|
19
|
+
export type ProtectionHashAlgorithm = "SHA-1" | "SHA-256" | "SHA-384" | "SHA-512";
|
|
20
|
+
/** Options for setting document protection. */
|
|
21
|
+
export interface DocumentProtectionOptions {
|
|
22
|
+
/** Type of edit restriction. */
|
|
23
|
+
readonly edit: ProtectionEditType;
|
|
24
|
+
/** Password to protect the document (will be hashed). */
|
|
25
|
+
readonly password?: string;
|
|
26
|
+
/** Hash algorithm. Default: "SHA-256". */
|
|
27
|
+
readonly hashAlgorithm?: ProtectionHashAlgorithm;
|
|
28
|
+
/** Number of hash iterations (spin count). Default: 100000. */
|
|
29
|
+
readonly spinCount?: number;
|
|
30
|
+
/** Whether protection is enforced. Default: true. */
|
|
31
|
+
readonly enforcement?: boolean;
|
|
32
|
+
/** Formatting restriction (prevent style changes). */
|
|
33
|
+
readonly formatting?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Protection state as stored in settings. */
|
|
36
|
+
export interface ProtectionState {
|
|
37
|
+
/** Edit restriction type. */
|
|
38
|
+
readonly edit: ProtectionEditType;
|
|
39
|
+
/** Whether protection is enforced. */
|
|
40
|
+
readonly enforcement: boolean;
|
|
41
|
+
/** Hash algorithm used. */
|
|
42
|
+
readonly hashAlgorithm?: string;
|
|
43
|
+
/** Computed hash value (base64). */
|
|
44
|
+
readonly hashValue?: string;
|
|
45
|
+
/** Salt (base64). */
|
|
46
|
+
readonly saltValue?: string;
|
|
47
|
+
/** Spin count (iterations). */
|
|
48
|
+
readonly spinCount?: number;
|
|
49
|
+
/** Formatting restriction. */
|
|
50
|
+
readonly formatting?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Set document protection on a DocxDocument.
|
|
54
|
+
* Returns a new document with protection settings applied.
|
|
55
|
+
*
|
|
56
|
+
* @param doc - The document to protect.
|
|
57
|
+
* @param options - Protection options.
|
|
58
|
+
* @returns A new document with protection settings.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* const protected = await protectDocument(doc, {
|
|
63
|
+
* edit: "readOnly",
|
|
64
|
+
* password: "secret123",
|
|
65
|
+
* hashAlgorithm: "SHA-256"
|
|
66
|
+
* });
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function protectDocument(doc: DocxDocument, options: DocumentProtectionOptions): Promise<DocxDocument>;
|
|
70
|
+
/**
|
|
71
|
+
* Remove document protection.
|
|
72
|
+
*
|
|
73
|
+
* @param doc - The protected document.
|
|
74
|
+
* @returns A new document without protection.
|
|
75
|
+
*/
|
|
76
|
+
export declare function unprotectDocument(doc: DocxDocument): DocxDocument;
|
|
77
|
+
/**
|
|
78
|
+
* Check if a document is protected.
|
|
79
|
+
*/
|
|
80
|
+
export declare function isDocumentProtected(doc: DocxDocument): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Get the protection state of a document.
|
|
83
|
+
*/
|
|
84
|
+
export declare function getProtectionState(doc: DocxDocument): ProtectionState | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* Verify a password against the document's protection hash.
|
|
87
|
+
* Returns true if the password matches, false otherwise.
|
|
88
|
+
*
|
|
89
|
+
* @param doc - The protected document.
|
|
90
|
+
* @param password - The password to verify.
|
|
91
|
+
* @returns Whether the password is correct.
|
|
92
|
+
*/
|
|
93
|
+
export declare function verifyProtectionPassword(doc: DocxDocument, password: string): Promise<boolean>;
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX Module - Document Protection
|
|
3
|
+
*
|
|
4
|
+
* Provides APIs for setting document protection passwords and restrictions.
|
|
5
|
+
* Supports all protection types defined in OOXML:
|
|
6
|
+
* - Read-only (no modifications allowed)
|
|
7
|
+
* - Comments only (only add comments)
|
|
8
|
+
* - Forms only (only fill form fields)
|
|
9
|
+
* - Tracked changes (all changes are tracked)
|
|
10
|
+
* - Sections (specific sections editable)
|
|
11
|
+
*
|
|
12
|
+
* Password hashing follows the ECMA-376 specification using
|
|
13
|
+
* iterative SHA-based hashing with salt.
|
|
14
|
+
*/
|
|
15
|
+
import { bytesToBase64, base64ToBytes, stringToUtf16LE, randomBytes } from "../core/internal-utils.js";
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// Protection API
|
|
18
|
+
// =============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Set document protection on a DocxDocument.
|
|
21
|
+
* Returns a new document with protection settings applied.
|
|
22
|
+
*
|
|
23
|
+
* @param doc - The document to protect.
|
|
24
|
+
* @param options - Protection options.
|
|
25
|
+
* @returns A new document with protection settings.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const protected = await protectDocument(doc, {
|
|
30
|
+
* edit: "readOnly",
|
|
31
|
+
* password: "secret123",
|
|
32
|
+
* hashAlgorithm: "SHA-256"
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export async function protectDocument(doc, options) {
|
|
37
|
+
const protection = await buildProtectionSettings(options);
|
|
38
|
+
const existingSettings = doc.settings ?? {};
|
|
39
|
+
const newSettings = {
|
|
40
|
+
...existingSettings,
|
|
41
|
+
documentProtection: protection
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
...doc,
|
|
45
|
+
settings: newSettings
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Remove document protection.
|
|
50
|
+
*
|
|
51
|
+
* @param doc - The protected document.
|
|
52
|
+
* @returns A new document without protection.
|
|
53
|
+
*/
|
|
54
|
+
export function unprotectDocument(doc) {
|
|
55
|
+
if (!doc.settings?.documentProtection) {
|
|
56
|
+
return doc;
|
|
57
|
+
}
|
|
58
|
+
const { documentProtection: _, ...rest } = doc.settings;
|
|
59
|
+
return {
|
|
60
|
+
...doc,
|
|
61
|
+
settings: rest
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if a document is protected.
|
|
66
|
+
*/
|
|
67
|
+
export function isDocumentProtected(doc) {
|
|
68
|
+
const dp = doc.settings?.documentProtection;
|
|
69
|
+
return dp !== undefined && dp.enforcement === true;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get the protection state of a document.
|
|
73
|
+
*/
|
|
74
|
+
export function getProtectionState(doc) {
|
|
75
|
+
const dp = doc.settings?.documentProtection;
|
|
76
|
+
if (!dp) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
edit: dp.edit ?? "none",
|
|
81
|
+
enforcement: dp.enforcement === true,
|
|
82
|
+
hashAlgorithm: dp.hashAlgorithm,
|
|
83
|
+
hashValue: dp.hashValue,
|
|
84
|
+
saltValue: dp.saltValue,
|
|
85
|
+
spinCount: dp.spinCount,
|
|
86
|
+
formatting: dp.formatting
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Verify a password against the document's protection hash.
|
|
91
|
+
* Returns true if the password matches, false otherwise.
|
|
92
|
+
*
|
|
93
|
+
* @param doc - The protected document.
|
|
94
|
+
* @param password - The password to verify.
|
|
95
|
+
* @returns Whether the password is correct.
|
|
96
|
+
*/
|
|
97
|
+
export async function verifyProtectionPassword(doc, password) {
|
|
98
|
+
const dp = doc.settings?.documentProtection;
|
|
99
|
+
if (!dp || !dp.hashValue || !dp.saltValue || !dp.hashAlgorithm) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
// Cap spinCount: a hostile / malformed document could specify a huge
|
|
103
|
+
// value to make every verification call freeze the runtime.
|
|
104
|
+
// documentProtection is editing-restriction metadata, not a serious
|
|
105
|
+
// security boundary, but we still want a predictable upper bound on
|
|
106
|
+
// CPU time. Office UI typically writes 100_000.
|
|
107
|
+
const rawSpin = dp.spinCount ?? 100000;
|
|
108
|
+
if (!Number.isFinite(rawSpin) || rawSpin < 0 || rawSpin > 10000000) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
const spinCount = rawSpin;
|
|
112
|
+
const computedHash = await computePasswordHash(password, dp.saltValue, dp.hashAlgorithm, spinCount);
|
|
113
|
+
// Constant-time string comparison so an attacker cannot recover
|
|
114
|
+
// hashValue byte-by-byte from timing differences. A short-circuit
|
|
115
|
+
// `===` would leak the longest common prefix length.
|
|
116
|
+
return constantTimeEqualString(computedHash, dp.hashValue);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Length-aware constant-time string comparison.
|
|
120
|
+
*
|
|
121
|
+
* Returns false immediately when lengths differ (length itself is not a
|
|
122
|
+
* useful side-channel — it's already known from the stored hashValue
|
|
123
|
+
* and an attacker cannot influence it). For equal-length strings it
|
|
124
|
+
* XORs every char-code into a running accumulator and checks the
|
|
125
|
+
* accumulator only at the end.
|
|
126
|
+
*/
|
|
127
|
+
function constantTimeEqualString(a, b) {
|
|
128
|
+
if (a.length !== b.length) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
let diff = 0;
|
|
132
|
+
for (let i = 0; i < a.length; i++) {
|
|
133
|
+
diff |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
134
|
+
}
|
|
135
|
+
return diff === 0;
|
|
136
|
+
}
|
|
137
|
+
// =============================================================================
|
|
138
|
+
// Internal: Password Hashing
|
|
139
|
+
// =============================================================================
|
|
140
|
+
async function buildProtectionSettings(options) {
|
|
141
|
+
const enforcement = options.enforcement !== false;
|
|
142
|
+
const result = {
|
|
143
|
+
edit: options.edit,
|
|
144
|
+
enforcement
|
|
145
|
+
};
|
|
146
|
+
if (options.formatting !== undefined) {
|
|
147
|
+
result.formatting = options.formatting;
|
|
148
|
+
}
|
|
149
|
+
if (options.password) {
|
|
150
|
+
const algorithm = options.hashAlgorithm ?? "SHA-256";
|
|
151
|
+
const spinCount = options.spinCount ?? 100000;
|
|
152
|
+
const salt = generateSalt();
|
|
153
|
+
const hash = await computePasswordHash(options.password, salt, algorithm, spinCount);
|
|
154
|
+
result.hashAlgorithm = algorithm;
|
|
155
|
+
result.saltValue = salt;
|
|
156
|
+
result.hashValue = hash;
|
|
157
|
+
result.spinCount = spinCount;
|
|
158
|
+
}
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
async function computePasswordHash(password, saltBase64, algorithm, spinCount) {
|
|
162
|
+
const algName = algorithmToSubtle(algorithm);
|
|
163
|
+
const saltBytes = base64ToBytes(saltBase64);
|
|
164
|
+
// ECMA-376 §14.2.1: password must be encoded as UTF-16LE
|
|
165
|
+
const passwordBytes = encodeUtf16LE(password);
|
|
166
|
+
// Initial hash: H0 = Hash(salt + password)
|
|
167
|
+
const initial = new Uint8Array(saltBytes.length + passwordBytes.length);
|
|
168
|
+
initial.set(saltBytes, 0);
|
|
169
|
+
initial.set(passwordBytes, saltBytes.length);
|
|
170
|
+
let hash = new Uint8Array(await crypto.subtle.digest(algName, initial));
|
|
171
|
+
// Iterative hashing: Hi = Hash(LE_int32(i) + Hi-1)
|
|
172
|
+
for (let i = 0; i < spinCount; i++) {
|
|
173
|
+
const iterBytes = new Uint8Array(4);
|
|
174
|
+
iterBytes[0] = i & 0xff;
|
|
175
|
+
iterBytes[1] = (i >> 8) & 0xff;
|
|
176
|
+
iterBytes[2] = (i >> 16) & 0xff;
|
|
177
|
+
iterBytes[3] = (i >> 24) & 0xff;
|
|
178
|
+
const combined = new Uint8Array(4 + hash.length);
|
|
179
|
+
combined.set(iterBytes, 0);
|
|
180
|
+
combined.set(hash, 4);
|
|
181
|
+
hash = new Uint8Array(await crypto.subtle.digest(algName, combined));
|
|
182
|
+
}
|
|
183
|
+
return bytesToBase64(hash);
|
|
184
|
+
}
|
|
185
|
+
/** Alias for UTF-16LE encoding (uses unified implementation). */
|
|
186
|
+
const encodeUtf16LE = stringToUtf16LE;
|
|
187
|
+
function algorithmToSubtle(alg) {
|
|
188
|
+
switch (alg) {
|
|
189
|
+
case "SHA-1":
|
|
190
|
+
return "SHA-1";
|
|
191
|
+
case "SHA-256":
|
|
192
|
+
return "SHA-256";
|
|
193
|
+
case "SHA-384":
|
|
194
|
+
return "SHA-384";
|
|
195
|
+
case "SHA-512":
|
|
196
|
+
return "SHA-512";
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function generateSalt() {
|
|
200
|
+
return bytesToBase64(randomBytes(16));
|
|
201
|
+
}
|
|
@@ -9,9 +9,12 @@
|
|
|
9
9
|
* - Password-based encryption/decryption of DOCX content
|
|
10
10
|
* - EncryptionInfo XML generation/parsing
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* All AES and SHA primitives are delegated to `@utils/crypto`, which uses
|
|
13
|
+
* synchronous `node:crypto` APIs in Node and Web Crypto in the browser.
|
|
14
|
+
* The KDF inner loop runs ~100,000 hashes per derived key; on Node we go
|
|
15
|
+
* through the synchronous fast path so a round-trip completes in well
|
|
16
|
+
* under a second instead of the multi-second microtask churn that the
|
|
17
|
+
* old `await crypto.subtle.digest()` loop produced.
|
|
15
18
|
*
|
|
16
19
|
* References:
|
|
17
20
|
* - MS-OFFCRYPTO: Office Document Cryptography Structure
|
|
@@ -88,9 +91,13 @@ export declare function verifyPassword(password: string, info: AgileEncryptionIn
|
|
|
88
91
|
* @param encryptedPackage - The EncryptedPackage stream from CFB.
|
|
89
92
|
* @param info - Agile encryption parameters.
|
|
90
93
|
* @param password - The user password.
|
|
94
|
+
* @param maxDecryptedSize - Optional upper bound on the decrypted size; if the
|
|
95
|
+
* `totalSize` header claims a larger value, throw rather than allocate.
|
|
96
|
+
* Defaults to 512 MiB so adversarial files cannot trigger arbitrary-size
|
|
97
|
+
* allocations before security policy is applied at the unzip layer.
|
|
91
98
|
* @returns The decrypted (unencrypted) package bytes.
|
|
92
99
|
*/
|
|
93
|
-
export declare function decryptPackage(encryptedPackage: Uint8Array, info: AgileEncryptionInfo, password: string): Promise<Uint8Array>;
|
|
100
|
+
export declare function decryptPackage(encryptedPackage: Uint8Array, info: AgileEncryptionInfo, password: string, maxDecryptedSize?: number): Promise<Uint8Array>;
|
|
94
101
|
/**
|
|
95
102
|
* Parse an EncryptionInfo XML stream from a CFB-wrapped encrypted DOCX.
|
|
96
103
|
*
|
|
@@ -100,3 +107,43 @@ export declare function decryptPackage(encryptedPackage: Uint8Array, info: Agile
|
|
|
100
107
|
* @returns Parsed agile encryption info.
|
|
101
108
|
*/
|
|
102
109
|
export declare function parseEncryptionInfoXml(xmlStr: string): AgileEncryptionInfo;
|
|
110
|
+
/**
|
|
111
|
+
* Read an encrypted DOCX file by providing a password.
|
|
112
|
+
*
|
|
113
|
+
* Handles the full pipeline:
|
|
114
|
+
* 1. Parse CFB container
|
|
115
|
+
* 2. Extract EncryptionInfo and EncryptedPackage streams
|
|
116
|
+
* 3. Verify password and decrypt
|
|
117
|
+
* 4. Return the decrypted DOCX ZIP bytes
|
|
118
|
+
*
|
|
119
|
+
* @param buffer - The encrypted DOCX file (CFB format).
|
|
120
|
+
* @param password - The password to decrypt with.
|
|
121
|
+
* @param maxDecryptedSize - Optional cap on the decrypted size (defaults to 512 MiB).
|
|
122
|
+
* @returns The decrypted DOCX ZIP bytes (can be passed to readDocx).
|
|
123
|
+
* @throws Error if the file is not encrypted, password is wrong, or decryption fails.
|
|
124
|
+
*/
|
|
125
|
+
export declare function decryptDocx(buffer: Uint8Array, password: string, maxDecryptedSize?: number): Promise<Uint8Array>;
|
|
126
|
+
/** Options for DOCX encryption. */
|
|
127
|
+
export interface EncryptOptions {
|
|
128
|
+
/** Key length in bits. Default: 256. */
|
|
129
|
+
readonly keyBits?: 128 | 192 | 256;
|
|
130
|
+
/** Hash algorithm. Default: SHA512. */
|
|
131
|
+
readonly hashAlgorithm?: "SHA1" | "SHA256" | "SHA384" | "SHA512";
|
|
132
|
+
/** Number of KDF iterations (spin count). Default: 100000. */
|
|
133
|
+
readonly spinCount?: number;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Encrypt a DOCX ZIP file with a password using Agile Encryption (MS-OFFCRYPTO).
|
|
137
|
+
*
|
|
138
|
+
* Produces a CFB (OLE2 Compound File) containing:
|
|
139
|
+
* - EncryptionInfo stream (Agile encryption XML)
|
|
140
|
+
* - EncryptedPackage stream (segment-encrypted ZIP data)
|
|
141
|
+
*
|
|
142
|
+
* The output can be opened by Microsoft Word with the given password.
|
|
143
|
+
*
|
|
144
|
+
* @param zipBytes - The unencrypted DOCX content (ZIP format).
|
|
145
|
+
* @param password - The password to encrypt with.
|
|
146
|
+
* @param options - Encryption options (key length, hash algorithm, spin count).
|
|
147
|
+
* @returns The encrypted DOCX as a CFB-formatted Uint8Array.
|
|
148
|
+
*/
|
|
149
|
+
export declare function encryptDocx(zipBytes: Uint8Array, password: string, options?: EncryptOptions): Promise<Uint8Array>;
|