@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,652 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DOCX Module - Embedded Font Writer
|
|
4
|
+
*
|
|
5
|
+
* Provides the ability to embed font files into DOCX documents.
|
|
6
|
+
* Supports TTF, OTF, and WOFF fonts with optional ODTTF obfuscation
|
|
7
|
+
* as required by the OOXML specification for embedded fonts.
|
|
8
|
+
*
|
|
9
|
+
* ECMA-376 Part 1, §17.8.3 describes how fonts are embedded:
|
|
10
|
+
* - Fonts are stored in word/fonts/ directory
|
|
11
|
+
* - Each embedded font has a relationship in fontTable.xml
|
|
12
|
+
* - Obfuscation uses a GUID-based XOR scheme (ODTTF format)
|
|
13
|
+
*
|
|
14
|
+
* Supports font subsetting to reduce file size by only including
|
|
15
|
+
* glyphs that are actually used in the document.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.subsetFont = subsetFont;
|
|
19
|
+
exports.embedFont = embedFont;
|
|
20
|
+
exports.embedFontFamily = embedFontFamily;
|
|
21
|
+
exports.addEmbeddedFonts = addEmbeddedFonts;
|
|
22
|
+
const font_obfuscation_1 = require("./font-obfuscation");
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// Font Subsetting
|
|
25
|
+
// =============================================================================
|
|
26
|
+
/**
|
|
27
|
+
* Subset a TrueType/OpenType font to include only the specified characters.
|
|
28
|
+
*
|
|
29
|
+
* This performs a minimal subset by:
|
|
30
|
+
* 1. Parsing the cmap table to find glyph IDs for requested characters
|
|
31
|
+
* 2. Building a new glyf/loca table with only needed glyphs (+ composite dependencies)
|
|
32
|
+
* 3. Rebuilding the font with minimal tables
|
|
33
|
+
*
|
|
34
|
+
* For CFF (PostScript-outline) fonts, subsetting is more complex and we fall back
|
|
35
|
+
* to embedding the full font.
|
|
36
|
+
*
|
|
37
|
+
* @param fontData - Raw TTF/OTF font bytes
|
|
38
|
+
* @param characters - String of characters to keep
|
|
39
|
+
* @returns Subsetted font bytes, or original if subsetting fails/not applicable
|
|
40
|
+
*/
|
|
41
|
+
function subsetFont(fontData, characters) {
|
|
42
|
+
try {
|
|
43
|
+
return _subsetTtf(fontData, characters);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// If subsetting fails for any reason, return original data
|
|
47
|
+
return fontData;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** Read a uint16 big-endian from buffer. */
|
|
51
|
+
function readU16(data, offset) {
|
|
52
|
+
return (data[offset] << 8) | data[offset + 1];
|
|
53
|
+
}
|
|
54
|
+
/** Read a uint32 big-endian from buffer. */
|
|
55
|
+
function readU32(data, offset) {
|
|
56
|
+
return (((data[offset] << 24) |
|
|
57
|
+
(data[offset + 1] << 16) |
|
|
58
|
+
(data[offset + 2] << 8) |
|
|
59
|
+
data[offset + 3]) >>>
|
|
60
|
+
0);
|
|
61
|
+
}
|
|
62
|
+
/** Read an int16 big-endian from buffer. */
|
|
63
|
+
function readI16(data, offset) {
|
|
64
|
+
const v = readU16(data, offset);
|
|
65
|
+
return v > 0x7fff ? v - 0x10000 : v;
|
|
66
|
+
}
|
|
67
|
+
/** Write uint16 big-endian. */
|
|
68
|
+
function writeU16(data, offset, value) {
|
|
69
|
+
data[offset] = (value >> 8) & 0xff;
|
|
70
|
+
data[offset + 1] = value & 0xff;
|
|
71
|
+
}
|
|
72
|
+
/** Write uint32 big-endian. */
|
|
73
|
+
function writeU32(data, offset, value) {
|
|
74
|
+
data[offset] = (value >>> 24) & 0xff;
|
|
75
|
+
data[offset + 1] = (value >>> 16) & 0xff;
|
|
76
|
+
data[offset + 2] = (value >>> 8) & 0xff;
|
|
77
|
+
data[offset + 3] = value & 0xff;
|
|
78
|
+
}
|
|
79
|
+
function parseTableDirectory(data) {
|
|
80
|
+
const numTables = readU16(data, 4);
|
|
81
|
+
const tables = new Map();
|
|
82
|
+
// numTables comes from a u16 → max 65535. Reject directories that
|
|
83
|
+
// claim more entries than the buffer can possibly hold so we don't
|
|
84
|
+
// walk off the end and accumulate garbage records.
|
|
85
|
+
const maxRecords = Math.floor((data.length - 12) / 16);
|
|
86
|
+
if (numTables > maxRecords) {
|
|
87
|
+
return { numTables: 0, tables };
|
|
88
|
+
}
|
|
89
|
+
for (let i = 0; i < numTables; i++) {
|
|
90
|
+
const recOffset = 12 + i * 16;
|
|
91
|
+
const tag = String.fromCharCode(data[recOffset], data[recOffset + 1], data[recOffset + 2], data[recOffset + 3]);
|
|
92
|
+
tables.set(tag, {
|
|
93
|
+
tag,
|
|
94
|
+
checksum: readU32(data, recOffset + 4),
|
|
95
|
+
offset: readU32(data, recOffset + 8),
|
|
96
|
+
length: readU32(data, recOffset + 12)
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return { numTables, tables };
|
|
100
|
+
}
|
|
101
|
+
// Hard cap on how many codepoints we materialise from a cmap table.
|
|
102
|
+
// Real fonts reach ~150K glyphs at the upper end (CJK pan-Unicode);
|
|
103
|
+
// bigger numbers indicate a malformed or hostile table built to drive
|
|
104
|
+
// the parser into a multi-gigabyte Map allocation.
|
|
105
|
+
const CMAP_MAX_ENTRIES = 200000;
|
|
106
|
+
/**
|
|
107
|
+
* Parse cmap format 4 (BMP characters) to build codepoint → glyph ID map.
|
|
108
|
+
*/
|
|
109
|
+
function parseCmapFormat4(data, offset) {
|
|
110
|
+
const map = new Map();
|
|
111
|
+
const segCountX2 = readU16(data, offset + 6);
|
|
112
|
+
const segCount = segCountX2 / 2;
|
|
113
|
+
const endCodes = offset + 14;
|
|
114
|
+
const startCodes = endCodes + segCountX2 + 2; // +2 for reservedPad
|
|
115
|
+
const idDeltas = startCodes + segCountX2;
|
|
116
|
+
const idRangeOffsets = idDeltas + segCountX2;
|
|
117
|
+
for (let i = 0; i < segCount; i++) {
|
|
118
|
+
const endCode = readU16(data, endCodes + i * 2);
|
|
119
|
+
const startCode = readU16(data, startCodes + i * 2);
|
|
120
|
+
const idDelta = readI16(data, idDeltas + i * 2);
|
|
121
|
+
const idRangeOffset = readU16(data, idRangeOffsets + i * 2);
|
|
122
|
+
if (startCode === 0xffff) {
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
for (let c = startCode; c <= endCode; c++) {
|
|
126
|
+
if (map.size >= CMAP_MAX_ENTRIES) {
|
|
127
|
+
return map;
|
|
128
|
+
}
|
|
129
|
+
let glyphId;
|
|
130
|
+
if (idRangeOffset === 0) {
|
|
131
|
+
glyphId = (c + idDelta) & 0xffff;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
const glyphOffset = idRangeOffsets + i * 2 + idRangeOffset + (c - startCode) * 2;
|
|
135
|
+
glyphId = readU16(data, glyphOffset);
|
|
136
|
+
if (glyphId !== 0) {
|
|
137
|
+
glyphId = (glyphId + idDelta) & 0xffff;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (glyphId !== 0) {
|
|
141
|
+
map.set(c, glyphId);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return map;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Parse cmap format 12 (full Unicode including supplementary planes).
|
|
149
|
+
*/
|
|
150
|
+
function parseCmapFormat12(data, offset) {
|
|
151
|
+
const map = new Map();
|
|
152
|
+
const numGroups = readU32(data, offset + 12);
|
|
153
|
+
// numGroups is a u32 — without bounds it can claim 4×10⁹ groups and
|
|
154
|
+
// each group can claim a 4×10⁹-codepoint range. Reject crazy values
|
|
155
|
+
// up front. The 4-byte multiplier 12 (group record size) plus the
|
|
156
|
+
// 16-byte header puts an absolute ceiling on legitimate groups.
|
|
157
|
+
const maxGroups = Math.max(0, Math.floor((data.length - offset - 16) / 12));
|
|
158
|
+
if (numGroups > maxGroups) {
|
|
159
|
+
return map;
|
|
160
|
+
}
|
|
161
|
+
for (let i = 0; i < numGroups; i++) {
|
|
162
|
+
const groupOffset = offset + 16 + i * 12;
|
|
163
|
+
const startCharCode = readU32(data, groupOffset);
|
|
164
|
+
const endCharCode = readU32(data, groupOffset + 4);
|
|
165
|
+
const startGlyphID = readU32(data, groupOffset + 8);
|
|
166
|
+
if (endCharCode < startCharCode ||
|
|
167
|
+
endCharCode > 0x10ffff /* Unicode max */ ||
|
|
168
|
+
endCharCode - startCharCode > CMAP_MAX_ENTRIES) {
|
|
169
|
+
// Malformed or abusive range — skip rather than expand it.
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
for (let c = startCharCode; c <= endCharCode; c++) {
|
|
173
|
+
if (map.size >= CMAP_MAX_ENTRIES) {
|
|
174
|
+
return map;
|
|
175
|
+
}
|
|
176
|
+
const gid = startGlyphID + (c - startCharCode);
|
|
177
|
+
map.set(c, gid);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return map;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get the glyph IDs for composite glyphs (compound glyphs referencing other glyphs).
|
|
184
|
+
*/
|
|
185
|
+
function getCompositeGlyphDeps(data, glyfOffset, locaEntries, glyphId) {
|
|
186
|
+
const deps = [];
|
|
187
|
+
const glyphStart = glyfOffset + locaEntries[glyphId];
|
|
188
|
+
const glyphEnd = glyfOffset + locaEntries[glyphId + 1];
|
|
189
|
+
if (glyphStart >= glyphEnd) {
|
|
190
|
+
return deps; // empty glyph
|
|
191
|
+
}
|
|
192
|
+
const numContours = readI16(data, glyphStart);
|
|
193
|
+
if (numContours >= 0) {
|
|
194
|
+
return deps; // simple glyph
|
|
195
|
+
}
|
|
196
|
+
// Composite glyph
|
|
197
|
+
let pos = glyphStart + 10; // skip header
|
|
198
|
+
const MORE_COMPONENTS = 0x0020;
|
|
199
|
+
const ARG_1_AND_2_ARE_WORDS = 0x0001;
|
|
200
|
+
const WE_HAVE_A_SCALE = 0x0008;
|
|
201
|
+
const WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;
|
|
202
|
+
const WE_HAVE_A_TWO_BY_TWO = 0x0080;
|
|
203
|
+
let flags;
|
|
204
|
+
do {
|
|
205
|
+
flags = readU16(data, pos);
|
|
206
|
+
const componentGid = readU16(data, pos + 2);
|
|
207
|
+
deps.push(componentGid);
|
|
208
|
+
pos += 4;
|
|
209
|
+
// Skip arguments
|
|
210
|
+
if (flags & ARG_1_AND_2_ARE_WORDS) {
|
|
211
|
+
pos += 4;
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
pos += 2;
|
|
215
|
+
}
|
|
216
|
+
// Skip transform data
|
|
217
|
+
if (flags & WE_HAVE_A_TWO_BY_TWO) {
|
|
218
|
+
pos += 8;
|
|
219
|
+
}
|
|
220
|
+
else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {
|
|
221
|
+
pos += 4;
|
|
222
|
+
}
|
|
223
|
+
else if (flags & WE_HAVE_A_SCALE) {
|
|
224
|
+
pos += 2;
|
|
225
|
+
}
|
|
226
|
+
} while (flags & MORE_COMPONENTS);
|
|
227
|
+
return deps;
|
|
228
|
+
}
|
|
229
|
+
function _subsetTtf(fontData, characters) {
|
|
230
|
+
// Check if it's a TrueType font (not CFF/OTF with PostScript outlines)
|
|
231
|
+
const sfVersion = readU32(fontData, 0);
|
|
232
|
+
const isTtf = sfVersion === 0x00010000 || // TrueType
|
|
233
|
+
sfVersion === 0x74727565; // 'true'
|
|
234
|
+
if (!isTtf) {
|
|
235
|
+
// CFF fonts require a full CFF subsetter which is much more complex.
|
|
236
|
+
// Return original for now.
|
|
237
|
+
return fontData;
|
|
238
|
+
}
|
|
239
|
+
const { tables } = parseTableDirectory(fontData);
|
|
240
|
+
const cmapTable = tables.get("cmap");
|
|
241
|
+
const glyfTable = tables.get("glyf");
|
|
242
|
+
const locaTable = tables.get("loca");
|
|
243
|
+
const headTable = tables.get("head");
|
|
244
|
+
const maxpTable = tables.get("maxp");
|
|
245
|
+
if (!cmapTable || !glyfTable || !locaTable || !headTable || !maxpTable) {
|
|
246
|
+
return fontData; // Missing required tables
|
|
247
|
+
}
|
|
248
|
+
// Determine loca format (0 = short, 1 = long)
|
|
249
|
+
const indexToLocFormat = readI16(fontData, headTable.offset + 50);
|
|
250
|
+
const numGlyphs = readU16(fontData, maxpTable.offset + 4);
|
|
251
|
+
// Parse loca table
|
|
252
|
+
const locaEntries = [];
|
|
253
|
+
for (let i = 0; i <= numGlyphs; i++) {
|
|
254
|
+
if (indexToLocFormat === 0) {
|
|
255
|
+
locaEntries.push(readU16(fontData, locaTable.offset + i * 2) * 2);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
locaEntries.push(readU32(fontData, locaTable.offset + i * 4));
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// Parse cmap to get character → glyph mapping
|
|
262
|
+
const cmapOffset = cmapTable.offset;
|
|
263
|
+
const numSubtables = readU16(fontData, cmapOffset + 2);
|
|
264
|
+
let charToGlyph = new Map();
|
|
265
|
+
// Prefer format 12 (full Unicode), fall back to format 4 (BMP)
|
|
266
|
+
for (let i = 0; i < numSubtables; i++) {
|
|
267
|
+
const subOffset = cmapOffset + 4 + i * 8;
|
|
268
|
+
const platformId = readU16(fontData, subOffset);
|
|
269
|
+
const encodingId = readU16(fontData, subOffset + 2);
|
|
270
|
+
const subtableOffset = cmapOffset + readU32(fontData, subOffset + 4);
|
|
271
|
+
const format = readU16(fontData, subtableOffset);
|
|
272
|
+
// Prefer platform 3 (Windows), encoding 10 (full Unicode) with format 12
|
|
273
|
+
if (format === 12 && platformId === 3 && encodingId === 10) {
|
|
274
|
+
charToGlyph = parseCmapFormat12(fontData, subtableOffset);
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
// Or platform 3, encoding 1 (BMP) with format 4
|
|
278
|
+
if (format === 4 && platformId === 3 && encodingId === 1 && charToGlyph.size === 0) {
|
|
279
|
+
charToGlyph = parseCmapFormat4(fontData, subtableOffset);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (charToGlyph.size === 0) {
|
|
283
|
+
return fontData; // Can't parse cmap
|
|
284
|
+
}
|
|
285
|
+
// Collect glyph IDs we need
|
|
286
|
+
const neededGlyphs = new Set();
|
|
287
|
+
neededGlyphs.add(0); // .notdef is always required
|
|
288
|
+
for (const char of characters) {
|
|
289
|
+
const codePoint = char.codePointAt(0);
|
|
290
|
+
if (codePoint !== undefined) {
|
|
291
|
+
const gid = charToGlyph.get(codePoint);
|
|
292
|
+
if (gid !== undefined) {
|
|
293
|
+
neededGlyphs.add(gid);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// Handle surrogate pairs
|
|
298
|
+
for (let i = 0; i < characters.length; i++) {
|
|
299
|
+
const cp = characters.codePointAt(i);
|
|
300
|
+
if (cp > 0xffff) {
|
|
301
|
+
i++; // skip surrogate pair low
|
|
302
|
+
}
|
|
303
|
+
const gid = charToGlyph.get(cp);
|
|
304
|
+
if (gid !== undefined) {
|
|
305
|
+
neededGlyphs.add(gid);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// Resolve composite glyph dependencies
|
|
309
|
+
const resolved = new Set();
|
|
310
|
+
const queue = [...neededGlyphs];
|
|
311
|
+
while (queue.length > 0) {
|
|
312
|
+
const gid = queue.pop();
|
|
313
|
+
if (resolved.has(gid)) {
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
resolved.add(gid);
|
|
317
|
+
if (gid < numGlyphs) {
|
|
318
|
+
const deps = getCompositeGlyphDeps(fontData, glyfTable.offset, locaEntries, gid);
|
|
319
|
+
for (const dep of deps) {
|
|
320
|
+
if (!resolved.has(dep)) {
|
|
321
|
+
queue.push(dep);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
// If subset is most of the font, not worth subsetting
|
|
327
|
+
if (resolved.size > numGlyphs * 0.7) {
|
|
328
|
+
return fontData;
|
|
329
|
+
}
|
|
330
|
+
// Build new glyf table: keep glyph data for needed glyphs, zero out others
|
|
331
|
+
const glyfData = fontData.slice(glyfTable.offset, glyfTable.offset + glyfTable.length);
|
|
332
|
+
const newGlyfParts = [];
|
|
333
|
+
const newLocaEntries = [];
|
|
334
|
+
let currentOffset = 0;
|
|
335
|
+
for (let gid = 0; gid < numGlyphs; gid++) {
|
|
336
|
+
newLocaEntries.push(currentOffset);
|
|
337
|
+
if (resolved.has(gid)) {
|
|
338
|
+
const start = locaEntries[gid];
|
|
339
|
+
const end = locaEntries[gid + 1];
|
|
340
|
+
const glyphBytes = glyfData.slice(start, end);
|
|
341
|
+
newGlyfParts.push(glyphBytes);
|
|
342
|
+
currentOffset += glyphBytes.length;
|
|
343
|
+
// Pad to 4-byte boundary (required for long loca format)
|
|
344
|
+
const padding = (4 - (glyphBytes.length % 4)) % 4;
|
|
345
|
+
if (padding > 0) {
|
|
346
|
+
newGlyfParts.push(new Uint8Array(padding));
|
|
347
|
+
currentOffset += padding;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
// else: empty glyph (offset stays same)
|
|
351
|
+
}
|
|
352
|
+
newLocaEntries.push(currentOffset); // final sentinel
|
|
353
|
+
// Build new loca table (always use long format for simplicity)
|
|
354
|
+
const newLocaData = new Uint8Array((numGlyphs + 1) * 4);
|
|
355
|
+
for (let i = 0; i <= numGlyphs; i++) {
|
|
356
|
+
writeU32(newLocaData, i * 4, newLocaEntries[i]);
|
|
357
|
+
}
|
|
358
|
+
// Build new glyf table
|
|
359
|
+
const newGlyfData = new Uint8Array(currentOffset);
|
|
360
|
+
let writePos = 0;
|
|
361
|
+
for (const part of newGlyfParts) {
|
|
362
|
+
newGlyfData.set(part, writePos);
|
|
363
|
+
writePos += part.length;
|
|
364
|
+
}
|
|
365
|
+
// Rebuild the font, replacing glyf and loca tables
|
|
366
|
+
// Keep all other tables intact, including OpenType Layout tables
|
|
367
|
+
// for kerning, ligatures, and glyph substitution
|
|
368
|
+
const essentialTags = [
|
|
369
|
+
"head",
|
|
370
|
+
"hhea",
|
|
371
|
+
"maxp",
|
|
372
|
+
"OS/2",
|
|
373
|
+
"name",
|
|
374
|
+
"cmap",
|
|
375
|
+
"post",
|
|
376
|
+
"cvt ",
|
|
377
|
+
"fpgm",
|
|
378
|
+
"prep",
|
|
379
|
+
"hmtx",
|
|
380
|
+
"glyf",
|
|
381
|
+
"loca",
|
|
382
|
+
// OpenType Layout tables — preserved intact for kerning/ligatures
|
|
383
|
+
"GPOS", // Glyph Positioning (kerning, mark attachment)
|
|
384
|
+
"GSUB", // Glyph Substitution (ligatures, contextual alternates)
|
|
385
|
+
"GDEF", // Glyph Definition (glyph classes, mark attachment)
|
|
386
|
+
"kern", // Legacy kerning table
|
|
387
|
+
"DSIG" // Digital Signature (preserve for validation)
|
|
388
|
+
];
|
|
389
|
+
const tablesToInclude = [];
|
|
390
|
+
for (const tag of essentialTags) {
|
|
391
|
+
const tableRec = tables.get(tag);
|
|
392
|
+
if (!tableRec) {
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
if (tag === "glyf") {
|
|
396
|
+
tablesToInclude.push({ tag, data: newGlyfData });
|
|
397
|
+
}
|
|
398
|
+
else if (tag === "loca") {
|
|
399
|
+
tablesToInclude.push({ tag, data: newLocaData });
|
|
400
|
+
}
|
|
401
|
+
else if (tag === "head") {
|
|
402
|
+
// Update indexToLocFormat to long (1)
|
|
403
|
+
const headData = fontData.slice(tableRec.offset, tableRec.offset + tableRec.length);
|
|
404
|
+
const headCopy = new Uint8Array(headData.length);
|
|
405
|
+
headCopy.set(headData);
|
|
406
|
+
writeU16(headCopy, 50, 1); // indexToLocFormat = 1 (long)
|
|
407
|
+
tablesToInclude.push({ tag, data: headCopy });
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
tablesToInclude.push({
|
|
411
|
+
tag,
|
|
412
|
+
data: fontData.slice(tableRec.offset, tableRec.offset + tableRec.length)
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
// Calculate output size
|
|
417
|
+
const numOutputTables = tablesToInclude.length;
|
|
418
|
+
const headerSize = 12 + numOutputTables * 16;
|
|
419
|
+
let totalSize = headerSize;
|
|
420
|
+
for (const t of tablesToInclude) {
|
|
421
|
+
totalSize += (t.data.length + 3) & ~3; // pad each table to 4-byte
|
|
422
|
+
}
|
|
423
|
+
const output = new Uint8Array(totalSize);
|
|
424
|
+
// Write offset table header
|
|
425
|
+
writeU32(output, 0, 0x00010000); // sfVersion
|
|
426
|
+
writeU16(output, 4, numOutputTables);
|
|
427
|
+
// searchRange, entrySelector, rangeShift
|
|
428
|
+
let searchRange = 1;
|
|
429
|
+
let entrySelector = 0;
|
|
430
|
+
while (searchRange * 2 <= numOutputTables) {
|
|
431
|
+
searchRange *= 2;
|
|
432
|
+
entrySelector++;
|
|
433
|
+
}
|
|
434
|
+
searchRange *= 16;
|
|
435
|
+
writeU16(output, 6, searchRange);
|
|
436
|
+
writeU16(output, 8, entrySelector);
|
|
437
|
+
writeU16(output, 10, numOutputTables * 16 - searchRange);
|
|
438
|
+
// Write table records and data
|
|
439
|
+
let dataOffset = headerSize;
|
|
440
|
+
for (let i = 0; i < tablesToInclude.length; i++) {
|
|
441
|
+
const t = tablesToInclude[i];
|
|
442
|
+
const recOffset = 12 + i * 16;
|
|
443
|
+
// Write tag
|
|
444
|
+
for (let j = 0; j < 4; j++) {
|
|
445
|
+
output[recOffset + j] = t.tag.charCodeAt(j);
|
|
446
|
+
}
|
|
447
|
+
// Calculate checksum
|
|
448
|
+
const paddedLen = (t.data.length + 3) & ~3;
|
|
449
|
+
let checksum = 0;
|
|
450
|
+
for (let j = 0; j < paddedLen; j += 4) {
|
|
451
|
+
const b0 = j < t.data.length ? t.data[j] : 0;
|
|
452
|
+
const b1 = j + 1 < t.data.length ? t.data[j + 1] : 0;
|
|
453
|
+
const b2 = j + 2 < t.data.length ? t.data[j + 2] : 0;
|
|
454
|
+
const b3 = j + 3 < t.data.length ? t.data[j + 3] : 0;
|
|
455
|
+
checksum = (checksum + (((b0 << 24) | (b1 << 16) | (b2 << 8) | b3) >>> 0)) >>> 0;
|
|
456
|
+
}
|
|
457
|
+
writeU32(output, recOffset + 4, checksum);
|
|
458
|
+
writeU32(output, recOffset + 8, dataOffset);
|
|
459
|
+
writeU32(output, recOffset + 12, t.data.length);
|
|
460
|
+
// Write table data
|
|
461
|
+
output.set(t.data, dataOffset);
|
|
462
|
+
dataOffset += paddedLen;
|
|
463
|
+
}
|
|
464
|
+
return output;
|
|
465
|
+
}
|
|
466
|
+
// =============================================================================
|
|
467
|
+
// Font Embedding
|
|
468
|
+
// =============================================================================
|
|
469
|
+
/**
|
|
470
|
+
* Prepare a font for embedding into a DOCX document.
|
|
471
|
+
*
|
|
472
|
+
* Returns both the FontDef (for the font table) and the EmbeddedFont
|
|
473
|
+
* (for the embedded binary). The caller should add these to the document model.
|
|
474
|
+
*
|
|
475
|
+
* @param options - Font embedding options.
|
|
476
|
+
* @returns The font definition and embedded font data.
|
|
477
|
+
*
|
|
478
|
+
* @example
|
|
479
|
+
* ```ts
|
|
480
|
+
* const result = embedFont({
|
|
481
|
+
* name: "CustomFont",
|
|
482
|
+
* data: fontFileBytes,
|
|
483
|
+
* style: "regular",
|
|
484
|
+
* obfuscate: true
|
|
485
|
+
* });
|
|
486
|
+
*
|
|
487
|
+
* // Add to document
|
|
488
|
+
* const doc = {
|
|
489
|
+
* ...existingDoc,
|
|
490
|
+
* fonts: [...(existingDoc.fonts ?? []), result.fontDef],
|
|
491
|
+
* embeddedFonts: [...(existingDoc.embeddedFonts ?? []), result.embeddedFont]
|
|
492
|
+
* };
|
|
493
|
+
* ```
|
|
494
|
+
*/
|
|
495
|
+
function embedFont(options) {
|
|
496
|
+
const style = options.style ?? "regular";
|
|
497
|
+
const shouldObfuscate = options.obfuscate !== false;
|
|
498
|
+
// Generate a font key for obfuscation
|
|
499
|
+
const fontKey = (0, font_obfuscation_1.generateFontKey)();
|
|
500
|
+
// Optionally subset the font to only include used glyphs
|
|
501
|
+
let fontData = options.data;
|
|
502
|
+
if (options.usedCharacters && options.usedCharacters.length > 0) {
|
|
503
|
+
fontData = subsetFont(new Uint8Array(fontData), options.usedCharacters);
|
|
504
|
+
}
|
|
505
|
+
// Prepare font data (optionally obfuscated)
|
|
506
|
+
let processedData;
|
|
507
|
+
let fileName;
|
|
508
|
+
if (shouldObfuscate) {
|
|
509
|
+
processedData = (0, font_obfuscation_1.obfuscateFont)(new Uint8Array(fontData), fontKey);
|
|
510
|
+
// ODTTF file naming: {GUID}.odttf (strip braces for filename)
|
|
511
|
+
const keyClean = fontKey.replace(/[{}]/g, "");
|
|
512
|
+
fileName = `${keyClean}.odttf`;
|
|
513
|
+
}
|
|
514
|
+
else {
|
|
515
|
+
processedData = new Uint8Array(fontData);
|
|
516
|
+
// Use the font name with appropriate extension
|
|
517
|
+
const ext = detectFontFormat(options.data);
|
|
518
|
+
fileName = `${sanitizeFileName(options.name)}_${style}.${ext}`;
|
|
519
|
+
}
|
|
520
|
+
// Allocate a unique rId per call. The packager will register this rId
|
|
521
|
+
// verbatim in `word/_rels/fontTable.xml.rels`, so re-using the same
|
|
522
|
+
// string across calls (the previous behaviour, which keyed off the font
|
|
523
|
+
// name + style) caused `Duplicate relationship ID` errors as soon as a
|
|
524
|
+
// caller embedded two distinct files claiming the same name/style.
|
|
525
|
+
const rId = `rIdFont${nextEmbeddedFontSequence()}`;
|
|
526
|
+
// Build the FontDef with embed key info
|
|
527
|
+
const fontDef = {
|
|
528
|
+
name: options.name,
|
|
529
|
+
family: options.family ?? "auto",
|
|
530
|
+
pitch: options.pitch ?? "variable",
|
|
531
|
+
charset: options.charset !== undefined ? String(options.charset) : undefined,
|
|
532
|
+
panose1: options.panose1,
|
|
533
|
+
embedRegular: style === "regular" ? rId : undefined,
|
|
534
|
+
embedRegularKey: style === "regular" ? fontKey : undefined,
|
|
535
|
+
embedBold: style === "bold" ? rId : undefined,
|
|
536
|
+
embedBoldKey: style === "bold" ? fontKey : undefined,
|
|
537
|
+
embedItalic: style === "italic" ? rId : undefined,
|
|
538
|
+
embedItalicKey: style === "italic" ? fontKey : undefined,
|
|
539
|
+
embedBoldItalic: style === "boldItalic" ? rId : undefined,
|
|
540
|
+
embedBoldItalicKey: style === "boldItalic" ? fontKey : undefined
|
|
541
|
+
};
|
|
542
|
+
// Build the EmbeddedFont
|
|
543
|
+
const embeddedFont = {
|
|
544
|
+
rId,
|
|
545
|
+
data: processedData,
|
|
546
|
+
fontKey: shouldObfuscate ? fontKey : undefined,
|
|
547
|
+
fileName
|
|
548
|
+
};
|
|
549
|
+
return { fontDef, embeddedFont };
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* Embed multiple font variants (regular, bold, italic, boldItalic) for a font family.
|
|
553
|
+
*
|
|
554
|
+
* @param name - Font family name.
|
|
555
|
+
* @param variants - Map of style to font data.
|
|
556
|
+
* @param options - Shared options for all variants.
|
|
557
|
+
* @returns Array of embed results.
|
|
558
|
+
*/
|
|
559
|
+
function embedFontFamily(name, variants, options) {
|
|
560
|
+
const results = [];
|
|
561
|
+
for (const [style, data] of Object.entries(variants)) {
|
|
562
|
+
// `data` can legitimately be `undefined` when the caller spreads in
|
|
563
|
+
// a partial map. The previous truthy check let an empty Uint8Array
|
|
564
|
+
// through (which is truthy) but was correct for the undefined case.
|
|
565
|
+
if (data === undefined) {
|
|
566
|
+
continue;
|
|
567
|
+
}
|
|
568
|
+
if (data.byteLength === 0) {
|
|
569
|
+
// An empty buffer is never a real font. Skip rather than embed
|
|
570
|
+
// garbage that Word silently rejects.
|
|
571
|
+
continue;
|
|
572
|
+
}
|
|
573
|
+
results.push(embedFont({
|
|
574
|
+
name,
|
|
575
|
+
data,
|
|
576
|
+
style,
|
|
577
|
+
...options
|
|
578
|
+
}));
|
|
579
|
+
}
|
|
580
|
+
return results;
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Add embedded fonts to an existing document model.
|
|
584
|
+
* Merges new fonts with existing font definitions.
|
|
585
|
+
*
|
|
586
|
+
* @param doc - The existing document.
|
|
587
|
+
* @param results - Embed results from `embedFont` or `embedFontFamily`.
|
|
588
|
+
* @returns A new document with embedded fonts added.
|
|
589
|
+
*/
|
|
590
|
+
function addEmbeddedFonts(doc, results) {
|
|
591
|
+
const existingFonts = doc.fonts ? [...doc.fonts] : [];
|
|
592
|
+
const existingEmbedded = doc.embeddedFonts ? [...doc.embeddedFonts] : [];
|
|
593
|
+
for (const result of results) {
|
|
594
|
+
// Check if font already exists and merge embed info
|
|
595
|
+
const existingIdx = existingFonts.findIndex(f => f.name === result.fontDef.name);
|
|
596
|
+
if (existingIdx >= 0) {
|
|
597
|
+
// Merge embed keys into existing font def
|
|
598
|
+
const existing = existingFonts[existingIdx];
|
|
599
|
+
existingFonts[existingIdx] = {
|
|
600
|
+
...existing,
|
|
601
|
+
embedRegular: result.fontDef.embedRegular ?? existing.embedRegular,
|
|
602
|
+
embedRegularKey: result.fontDef.embedRegularKey ?? existing.embedRegularKey,
|
|
603
|
+
embedBold: result.fontDef.embedBold ?? existing.embedBold,
|
|
604
|
+
embedBoldKey: result.fontDef.embedBoldKey ?? existing.embedBoldKey,
|
|
605
|
+
embedItalic: result.fontDef.embedItalic ?? existing.embedItalic,
|
|
606
|
+
embedItalicKey: result.fontDef.embedItalicKey ?? existing.embedItalicKey,
|
|
607
|
+
embedBoldItalic: result.fontDef.embedBoldItalic ?? existing.embedBoldItalic,
|
|
608
|
+
embedBoldItalicKey: result.fontDef.embedBoldItalicKey ?? existing.embedBoldItalicKey
|
|
609
|
+
};
|
|
610
|
+
}
|
|
611
|
+
else {
|
|
612
|
+
existingFonts.push(result.fontDef);
|
|
613
|
+
}
|
|
614
|
+
existingEmbedded.push(result.embeddedFont);
|
|
615
|
+
}
|
|
616
|
+
return {
|
|
617
|
+
...doc,
|
|
618
|
+
fonts: existingFonts,
|
|
619
|
+
embeddedFonts: existingEmbedded
|
|
620
|
+
};
|
|
621
|
+
}
|
|
622
|
+
// =============================================================================
|
|
623
|
+
// Internal Helpers
|
|
624
|
+
// =============================================================================
|
|
625
|
+
function detectFontFormat(data) {
|
|
626
|
+
// Check magic numbers
|
|
627
|
+
if (data.length >= 4) {
|
|
628
|
+
// OTF: "OTTO"
|
|
629
|
+
if (data[0] === 0x4f && data[1] === 0x54 && data[2] === 0x54 && data[3] === 0x4f) {
|
|
630
|
+
return "otf";
|
|
631
|
+
}
|
|
632
|
+
// TTF: 0x00010000 or "true"
|
|
633
|
+
if ((data[0] === 0x00 && data[1] === 0x01 && data[2] === 0x00 && data[3] === 0x00) ||
|
|
634
|
+
(data[0] === 0x74 && data[1] === 0x72 && data[2] === 0x75 && data[3] === 0x65)) {
|
|
635
|
+
return "ttf";
|
|
636
|
+
}
|
|
637
|
+
// WOFF: "wOFF"
|
|
638
|
+
if (data[0] === 0x77 && data[1] === 0x4f && data[2] === 0x46 && data[3] === 0x46) {
|
|
639
|
+
return "woff";
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
return "ttf"; // Default to TTF
|
|
643
|
+
}
|
|
644
|
+
function sanitizeFileName(name) {
|
|
645
|
+
return name.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
646
|
+
}
|
|
647
|
+
/** Module-level monotonic counter for embedded-font rIds. */
|
|
648
|
+
let _embeddedFontSeq = 0;
|
|
649
|
+
function nextEmbeddedFontSequence() {
|
|
650
|
+
_embeddedFontSeq++;
|
|
651
|
+
return _embeddedFontSeq;
|
|
652
|
+
}
|
|
@@ -12,12 +12,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.deobfuscateFont = deobfuscateFont;
|
|
13
13
|
exports.obfuscateFont = obfuscateFont;
|
|
14
14
|
exports.generateFontKey = generateFontKey;
|
|
15
|
+
const internal_utils_1 = require("../core/internal-utils");
|
|
16
|
+
const errors_1 = require("../errors");
|
|
15
17
|
/** Parse a GUID string "{8-4-4-4-12}" into 16 bytes in obfuscation-apply order. */
|
|
16
18
|
function parseGuid(guid) {
|
|
17
19
|
// Strip braces
|
|
18
20
|
const hex = guid.replace(/[{}]/g, "").replace(/-/g, "");
|
|
19
21
|
if (hex.length !== 32) {
|
|
20
|
-
throw new
|
|
22
|
+
throw new errors_1.DocxError(`Invalid GUID: ${guid}`);
|
|
21
23
|
}
|
|
22
24
|
const bytes = new Uint8Array(16);
|
|
23
25
|
for (let i = 0; i < 16; i++) {
|
|
@@ -77,12 +79,5 @@ function obfuscateFont(data, fontKey) {
|
|
|
77
79
|
* @returns A GUID string in the form "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"
|
|
78
80
|
*/
|
|
79
81
|
function generateFontKey() {
|
|
80
|
-
|
|
81
|
-
const bytes = new Uint8Array(16);
|
|
82
|
-
crypto.getRandomValues(bytes);
|
|
83
|
-
// RFC 4122 v4 UUID: set version and variant bits
|
|
84
|
-
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
85
|
-
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
86
|
-
const hex = Array.from(bytes, b => b.toString(16).padStart(2, "0")).join("");
|
|
87
|
-
return `{${hex.substring(0, 8)}-${hex.substring(8, 12)}-${hex.substring(12, 16)}-${hex.substring(16, 20)}-${hex.substring(20, 32)}}`;
|
|
82
|
+
return (0, internal_utils_1.generateGuid)();
|
|
88
83
|
}
|